ZX Spectrum > PROGRAMOWANIE

Pytania od bardzo początkującego

<< < (2/11) > >>

Gryzor:
Na poczatek warto zajrzec do polskiego Przewodnika po ZX Spectrum.

mad1:
Dzięki chłopaki za liczny odzew, śpieszy mi się jednak do "szybkich" efektów mojej pracy więc na razie przystanę przy Basicu bo widzę, że długo musiałbym się wgłębiać w assemblera, niemniej jednak linki wyżej podane na pewno wielu się przydadzą.
Zgodnie z waszymi sugestiami pobrałem ZX Paintbrush oraz BASin(świetny programik). Trochę się nimi pobawiłem i mam do was następne pytania.
Napisałem sobie najprostszy program jaki był możliwy(w BASin), ale chciałbym by został on wczytany po wcześniejszym załadowaniu się obrazka (loading screen) jak ma to miejsce w większości gier. BASin posiada także swój własny edytor screenów, jednak nie potrafię takiego screena dołączyć(testuje programik na innym emulatorze w czasie rzeczywistym). Ponadto w ZX Painbrushu zapisałem niby mój screen w formacie .scr a nawet .tap, ale nie wiem co dalej zrobić by załączyć takiego screena do programu.
Czy ktoś się bawił tymi programami i dogrywaniem screenów do swoich spectrumowych programów i mógłby mi przybliżyć jak to zrobić?

RafalM:
Jeśli program składa się z kilku części wczytywanych jako osobne bloki danych, to zwykle pierwszy blok to loader czyli krótki programik którego jedynym zadaniem jest wczytać wszystko do pamięci i uruchomić właściwy kod jak już wszystko się wczyta.

U ciebie taki loader mógłby mięc postać:

1 load "" screen$
2 load ""

Pierwsza linia wczytuje obrazek.
Druga doczytuje właściwy program w Basicu i go uruchamia

Zarówno loader jak i właściwy program warto zapisać przez:

save "nazwa" line 1

gdzie line 1 znaczy że program ma wykonać autostart od linii o podanym numerze. Inaczej program się wczyta ale nie uruchomi.

Czyli na taśmie będzies miał po kolei 3 bloki danych:

-loader
-obrazek
-właściwy program

Teraz jak połączyć dwa .tapy - z programem i obrazkiem... Niestety, sam nie wiem czemu, większość emulatorów nie pozwala na taką operację i z niby prostej rzeczy robi się rzecz wcale nie taka prosta. Są różne narzędzia pozwalające to robić i pewnie każdy ma jakieś swoje ulubione:

Ja używam programu Tapir, możesz zobaczyć czy ci się spodoba:
ftp://ftp.worldofspectrum.org/pub/sinclair/tools/pc/tapir1.0.zip



mad1:
@RafalM

Dzięki. Niezmiernie mi pomogłeś. Dzisiejsze popołudnie przyniosło dzięki Tobie postęp, umiem już poprzedzić program screenem. Ale zatrzymałem się na pewnej rzeczy. Mam też kilka pytań. Ogólnie sprawdziłem tapir, ale widziałem, że Basin też ma "tape creator'a" z którego skorzystałem.

Otóż na pierwszy rzut stworzyłem .tap typu:

1 LOAD ""SCREEN$
2 PRINT "Wlasciwy program"

Czyli loader, który wczytuje w jednym bloku SCREENA oraz jednocześnie po nim program.

Teraz odniosę się do Twojej koncepcji. Czyli wczytywania się "właściwego" programu w nowym bloku, po wcześniejszym wczytaniu się SCREENA. Czyli poprzez:

1 LOAD ""SCREEN$
2 LOAD ""

Następnie chciałem stworzyć nowy blok(bytes) z "właściwym programem" jako

3 PRINT "Właściwy program"

jednak zarówno Basinie i Tapirze wyskoczyło mi okienko żebym podał "Start adress" oraz "lenght", o co chodzi w tej adresacji? jakie prawidłowe wartości muszę tam podać aby było dobrze?

Jakie zalety ma tworzenie nowego bloku w stosunku do metody, którą zastosowałem trochę wyżej? Czy kolejność  instrukcji w nowym bloku można numerować z powrotem od 1 czy kolejność musi być zachowana?

Tygrys:
Kolejnym blokiem powinienm być jednak program w BASIC, a nie blok danych.
Obecna sytuacja ma się tak:
1 - ładujesz program w BASICu
2 - ładujesz obrazek (blok binarny)
edit: LOAD ""SCREEN$ odpowiada poleceniu LOAD""CODE 16384

3 - ładujesz ponownie program w BASICu (LOAD "")

Nowo załadowany program w BASIC nadpisze w pamięci ten, z którego uruchomiłeś LOAD ""

A co do pytania to start address i length w bloku binarnym, to start address to adres pamięci RAM w ZX Spectrum, do którego blok ma być domyślnie załadowany. lenght zaś to jego długość.  Adres startowy ma znaczenie jeżeli ładujesz blok za pomocą LOAD""CODE. Aby zmienić adres ładowania bloku binarnego, po prostu podajesz jego nowy adres docelowy: LOAD ""CODE nowy_adres.

Nawigacja

[0] Indeks wiadomości

[#] Następna strona

[*] Poprzednia strona

Idź do wersji pełnej