Autor Wątek: Moje STARTy / menu dyskowe.  (Przeczytany 141 razy)

Phonex

  • *****
  • Wiadomości: 995
  • Miejsce pobytu:
    Warszawa
  • Pomógł: 10
Moje STARTy / menu dyskowe.
« dnia: 2018.08.10, 19:10:06 »
Już kilka razy obiecywałem, że wyślę moje starty (menu dyskowe). W końcu postanowiłem wysyłać je po jednym co jakiś czas, w miarę poprawiania. Jest ich kilkanaście, mając na początku kilka/kilkanaście dyskietek miałem chyba  ambicję by na każdej był inny ;) Niektóre mogą się spodobać, ale nie wiem czy komuś się przydadzą - na ogół nie są automatyczne. Czyli tytuły trzeba wpisać.
Powstały głównie na na stację OPUS Discovery, więc przewidują 10-znakowe nazwy, powstały dla standardowego napędu (178K), więc jest miejsce tylko na cztery lub pięć tytułów gier. Można to oczywiście zmienić: zmienić długość ładowanej nazwy i ilość tytułów - trzeba by zmienić rozmiary tablic, parametry PLOT, DRAW i pętle. Zmiana długości tablic nie jest konieczna, jest tylko zabiegiem estetycznym. Ja na początku po przejściu z Opusa na FDD3000 dopisywałem "TO 8" - LOAD a$(TO 8 ), ale niepotrzebnie - TOS ignoruje spacje za nazwą. Wpisując do startu prawdziwe nazwy z dyskietki nie spowodujemy błędu, o ile nazwy są bez rozszerzeń. Z rozszerzeniami mogą się nie zmieścić.
W części startów, żeby zmienić rozmiary okienka będzie potrzebna ingerencja w asembler. Jak będzie potrzeba, podam pod jakim adresem dokonać zmian.

Starty nie są automatyczne, bo tak jest szybciej, odczyt z dysku zabiera dodatkowy czas. Poza tym na początku założenie było takie, że raz nagrane na dysk gry zostną tam już na zawsze. Trzecim argumentem jest to, że można wpisać tylko część nazw i w wybranej kolejności.
Miejsca na dysku było mało, stąd kompresor obrazków, potem filecompressor, stąd też optymalizacja startów pod względem długości: liczby są zapisywane jako VAL "n", lub CODE "x", zero jako NOT PI, itd. W Opusie jednostka alokacji=sektor, a sektor ma 256 bajtów. Często udało się zmieścić start w 3 sektorach, a parę razy nawet w dwóch.
Ponieważ od czasów któregoś-tam-Apple jestem fanatykiem okienek, w każdym możliwym miejscu je stosuję :D
Napisałem nawet kiedyś "Windows Designer" - programik pod Beta Basic, który po podaniu rozmiaru i treści sam generował linie BASICa rysujące okienka.
Dlatego każdy mój start to okienko plus coś ;)
Teraz pewnie dopisałbym wybór klawiszami 1-4.

Starty będę prezentował w kolejności w miarę chronologicznej, widać w nich rosnący udział asemblera :D
Obsługa joystickiem Kempston (góra/dół/fire) lub klawiszami kursora (na gumiaku również same "5" i "6" bez shifta) i ENTER/"0". Obsługa joystickiem jest, bo Opus ma wbudowany interfejs Kempston ;)
Wysyłam je w trybie taśmowym, żeby wszyscy mogli obejrzeć bez komunikatu o błędzie. Przed nagraniem na dysk należy dopisać rozszerzenie dyskowe po LOAD (na ogół w przedostatniej linii). Dla FDD3000 ma być: "LOAD *", dla Opusa: "LOAD *1;".
Nagrywać na dysk SAVE *"START" LINE 1 dla FDD3000, lub SAVE *1;"RUN" LINE 1 dla Opusa.
W czasach gdy powstawały mało kto je widział, bo stację dysków miałem tylko ja, potem doszedł Bill Gilbert, następnie Kicia, itd. Oczywiście chwaliłem się stałym bywalcom giełdy ;) Mogło to mieć wpływ na wygląd starta, którego napisał Bzyk (i zdaje się jest dołączony do TOS A.4).
« Ostatnia zmiana: 2018.08.10, 19:23:19 wysłana przez Phonex »

Phonex

  • *****
  • Wiadomości: 995
  • Miejsce pobytu:
    Warszawa
  • Pomógł: 10
Odp: Moje STARTy / menu dyskowe.
« Odpowiedź #1 dnia: 2018.08.10, 19:12:17 »
1. Gry s1

Cztery gry. Długość 752 bajty.
W asemblerze jest tu tylko odczyt klawiszy/joysticka i efekt. Cała reszta, łącznie z przesuwaniem paska, jest w BASICu. Oglądając teraz program w asemblerze zauważyłem, że program sprawdza więcej klawiszy: również Q, A, i M. Możliwe, że był przed tym jakiś inny start (bez efektu), a potem został zastąpiony. Możliwe że nie i od razu chciałem żeby wygląd był bardziej atrakcyjny, godny nowej stacji dysków ;)
Jeżeli chodzi o efekt, to tylko pomysł jest mój: przesuwać w lewo, potem w prawo. Sama procedura przesuwania nie jest moja, pochodzi prawdopodobnie z programu "Supercode" - skroll poziomy o 1 pixel.
Wtedy nic na ten temat nie wiedziałem, teraz prawdopodobnie dorobiłbym synchronizację z ramką. Spróbowałem - wygląda ładniej (drugi plik).
Ponieważ prawie cały jest w BASICu, nie ma problemu z przerobieniem np. na większą ilość gier. Z asemblera wychodzi jak naciśnie się istotny klawisz, może zwrócić trzy wartości: 1-naciśniety ENTER/fire, 0-w górę, 2-w dół. Widać że miałem wtedy szacunek dla programów w Asemblerze, bo potem z tych liczb obliczam przesunięcie d=2*(USR adr-1), zamiast zmienić wartości wyjściowe na 2, 0, 4 i uprościć obliczenie na d=USR adr-2.
« Ostatnia zmiana: 2018.08.10, 19:23:35 wysłana przez Phonex »

ZX Freeq

  • *****
  • Wiadomości: 1436
  • Miejsce pobytu:
    Warszawa
  • Pomógł: 27
Odp: Moje STARTy / menu dyskowe.
« Odpowiedź #2 dnia: 2018.08.11, 19:40:14 »
Miejsca na dysku było mało, stąd kompresor obrazków, potem filecompressor, stąd też optymalizacja startów pod względem długości:

Normalka. Jak przenosiłem gry z taśm na FDD3000 też tak robiłem. A jak wmontowałem napęd 3.5 cala, nawyk i tak pozostał :)
Dzięki za starty, fajnie jest zobaczyć jak to robili inni ;)
ZX80|ZX81+16kB+PandAY|ZX 48k/+/128k+/+2/+2A/+3/Vega|QL+QIDE|JS128|Timex 2048+2040 Printer|UK2086|FDD3000+3.5''|AY|ZX HD|Divide2k11/2k14|DivMMC/PicoDivSD|BetaDisk 128|Opus|Masakrator FM|If 1/2/Microdrv|Multiface 1|+2A\B SDI-1|SJS 1/2|ZX Printer|TZXDuino|+3 HxC USB|ZXUno|Omni
Z88|A500/600|PC200|Ent128