ZX Spectrum > SOFTWARE

Moje STARTy / menu dyskowe.

<< < (3/16) > >>

Maryjan:
Pamiętam, ze był taki zestaw procedur w skompilowanych już do kodu wykonawczego.
Min. była tam procedura przesuwania ekranu w prawo.
Podawało się parametry przekazywane z BASIC-a i to działało.
Program zajmował niezbyt dużo i był relokowalny.
Można było go nawet wstawić w lini za REM.

Ja mając FDD 3000 pisałem minimalistyczne starty.
Ot, żeby mieściły się w jednej jednostce alokacji dyskietki.

Phonex:
To i moje się mieszczą w jednej jednostce alokacji FDD3000 :)
Zawsze najważniejsza była mała długość. Tylko z raz się nie udało (Gry s7).
Większość jest nawet poniżej 768 - jednostka alokacji na Opusie jest 4 razy mniejsza.

Phonex:
5. Gry 10

5 gier. 757 bajtów.
Bez efektów specjalnych, za to powiększony.
Sposób na wyświetlanie powiększonych napisów jest bardzo prosty: procedurka w asemblerze kopiuje generator znaków w dwa obszary - w jednym podwojone górne połówki znaków, w drugim podwojone dolne połówki. Teraz w BASICu trzeba zrobić dwa razy PRINT tego samego w kolejnych wierszach, raz z pierwszym generatorem, raz z drugim. Sposób prosty, choć trochę niewygodny ;)
W związku z powiększeniem, liczba zwracana przez asembler zmienia się co 3. Widać że nie miałem pojęcia jak w asemblerze podzielić przez 3 i zepchnąłem ten problem do BASICa ;)
Oszczędzając jeden bajt dzielę wynik nie przez INT PI, a przez PI - interpreter zaokrągla sobie sam. W zasadzie trzeba by przed dzieleniem najpierw odjąć jeden, bo pozycje to: 4, 7, 10, itd, ale zaokrąglanie radzi sobie i z tym.
Tu definitywnie nie da się zwiększyć ilości gier, bo nie ma już miejsca na ekranie, nawet jakby się jakąś sztuczką wykorzystało dwie dolne linie (sztuczką - bo nie da się tam rysować).

Phonex:
6. Gry 03

8 gier(!) 683 bajty.
Tyle programów weszło, bo część z nich to muzyczki wyciągnięte z gier. Moje ZERO MUSIC miało mieć kiedyś częściowo inną listę, tylko ktoś mnie ubiegł.
To jest start s5 z innym efektem. Nie podobał mi się tamten, bo był za wolny, więc postanowiłem przepisać go w asemblerze. Wyszło nie całkiem to samo, ale byłem zadowolony. Fajny efekt z multicolorem tylko w 63 bajtach :D I to pomimo tego że - jak teraz widzę - w wolnej pamięci, włączone przerwania i w ogóle bez żadnej optymalizacji.
Mam jeszcze jeden start z podobnym efektem, ale tylko dwoma kolorami zamiast tęczy: Gry 06. Nie będę go wysyłał, wystarczy wpisać POKE 23812,79 i POKE 23798,0

Ten efekt jest źle wyświetlany przez ZX Spin v0.666 - zła szybkość. Użyłem ZX Spin 0.7

Phonex:
7. Gry 01

5 gier. 1007 bajtów.
Tym razem pomniejszone literki w minimalistycznym jednokolorowym okienku.
Ale BASIC jakiś taki krótki,... i nie ma CLS,... Oczywiście już nie pamiętam jak to jest napisane. Wszystko się wyjaśnia, jak się zajrzy do kodu - okienko nie jest rysowane, to jest skompresowany obrazek :o Wygląda na mój Fast Compressor 8) Ale żeby wsadzić skompresowany obrazek do REMa... Miałem kiedyś dużo entuzjazmu. Dodatkowe korzyści to bardzo szybkie wyświetlenie tego starta i możliwość wpisania dłuższych tytułów niż są na dysku.
Narysowany jest chyba Artistem. Po skompresowaniu długość to tylko 682 bajty. Kompresor się spisał, do 1024 zostało w zapasie tylko 17 bajtów.
Do tego standardowy moduł odczytu klawiszy/joysticka i wyświetlania paska, tym razem w kolejnych wierszach, a nie  w co drugim. Więc teoretycznie powinno się zmieścić 21 gier. Ping Pong w linii DATA nie jest wpisany wielkimi literami, bo jak już wspominałem te programy powstały na Opusa, a tam są rozróżniane małe i wielkie litery.
Ciekawostka: program nie działa bez rozkazu RESTORE 999. Nawet samo RESTORE bez argumentu powoduje błąd. Widocznie w tej długiej linii z obrazkiem interpreter widzi rozkaz DATA.
A jak wpisać linię dłuższą niż ekran? Ręcznie nie będzie łatwo. Pewnie w "Supercode" jest odpowiedni programik, ja jednak mam własny: nazywa się REMER, ma 76 bajtów i ładuje się do bufora drukarki. Tworzy na początku programu linię 1 REM #####... o żądanej długości. Obsługa: PRINT USR 23300,długość.

Nawigacja

[0] Indeks wiadomości

[#] Następna strona

[*] Poprzednia strona

Idź do wersji pełnej