forum speccy.pl

ZX Spectrum => SOFTWARE => Wątek zaczęty przez: Phonex w 2018.08.10, 19:10:06

Tytuł: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: Phonex w 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).
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: Phonex w 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.
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: ZX Freeq w 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 ;)
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: Phonex w 2018.08.17, 09:22:20
2. Gry s5

Cztery gry. Długość 759 bajtów.
W asemblerze jest tu... nic. Może to był pierwszy start, pomimo nazwy?
Inna jest obsługa: dowolnym klawiszem zmiana na następną grę, ENTER - wybór. Nie ma możliwości cofania, trzeba przelecieć całą listę. Uruchomienie też wyjątkowo jest od linii 100 (SAVE "start" LINE 100), żeby kluczowa dla szybkości działania linia (linia 4) była blisko początku programu.
Zmiana kolorów napisu zrobiona jest jedną instrukcją PRINT z wpisanymi kodami kontrolnymi pozycji zamiast PRINT AT, tylko w celu oszczędności miejsca. Szybkości działania to nie zmienia. Dla wiersza 13 i 14 nie da się tak zrobić, bo powoduje błąd. Za to spowalniają wykonanie te wszystkie VAL "nn", więc w kluczowych miejscach ich nie ma.
Efekt powiększonego PRINTa jest zrobiony dzięki sztuczce - przestawienie adresu wydruku dla instrukcji LPRINT na ekran ;) A że linie na ekranie nie są kolejno - napis wychodzi rozstrzelony w pionie. Wystarczy teraz wykonać to 8 razy, z kolejnymi liniami.
Najłatwiej tu powiększyć ilość gier, wystarczy w ostatniej linii dopisać nowe, nie ma potrzeby zmieniania żadnych innych parametrów.
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: Phonex w 2018.08.24, 10:56:02
3. Gry s2

Pięć gier. 699 bajtów.
W końcu pasek wyboru jest w asemblerze!
Działa szybko, jest krótszy, a po wyjściu do BASICa zwraca wybrany numer, bez konieczności dzielenia czy dodawania :) Cały łącznie z efektem jest napisany przeze mnie. I chyba już dowiedziałem się że część pamięci jest wolna, bo procedura od efektu jest przerzucana pod 50000. Albo pisałem pod ZEUSem.
Jak zwykle kod jest w REM, ale tu są dwie linie z kodem: w pierwszej jest odczyt klawiszy/joysticka i wyświetlanie paska, a w drugiej efekt. Dzięki temu łatwo zmienić efekt.
Oczywiście obecność kodu w REM, przez to że są niedrukowalne znaki, powoduje zawieszanie BASICa 128. Ponieważ nie miałem ZX 128K, widzę teraz, że dopiero w jednym z ostatnich startów - przypadkiem - wpadłem na rozwiązanie tego problemu. Można na 128 używać, ale edytować - tylko w BASIC 48.
Jeżeli nawet już wiedziałem o szybkiej i wolnej pamięci, to nie do końca: w linii 10 jest CLEAR 29000, więc obszar stosu znajduje się jednak w wolnej pamięci, a w programie jest kilka CALLi. Można łatwo zobaczyć wpływ tego na szybkość zmieniając na CLEAR 35000. Także na stodwudziestceósemce efekt chodzi szybciej.
Ponieważ nie dało się skrócić poniżej 512 bajtów (2 sektory na Opusie), nie było potrzeby optymalizacji długości. Wszystkie liczby są więc wpisane  normalnie, bez VAL.
Zdaje się, że byłem optymistą jeśli chodzi o powiększanie liczby gier. Tu też efekt obejmuje konkretną liczbę wierszy, dla innej liczby trzeba będzie dobierać opóźnienie, bo nie jest zsynchronizowany z ramką.
Przy okazji przyjrzałem się efektowi i doszedłem do wniosku że przypadkiem wyszedł mi multicolor :D
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: Phonex w 2018.08.31, 12:18:52
4. Gry s3

Cztery gry. Długość 763 bajty.
Ten start jest rozwinięciem pomysłu z "Gry s1". Skoro już jest ładna procedura skrolująca co pixel, to może ją wykorzystać w pełni ;)
Okienko nie jest zamknięte z boków (tak samo jak w starcie s1), bo ramka wyjechałaby razem z tekstem. Jakbym sam pisał procedurę skrolującą, to bym napisał tak, żeby nie wysuwała ramki, ale wtedy jeszcze nie umiałem. Znowu jest procedura z "Supercode". A że to bliźniacza konstrukcja, to też reaguje na klawisze "Q", "A", "M". Inne jest pykanie paska, nie takie głuche jak w start s1, tylko typowo "klawiaturowe". I takie już będzie we wszystkich następnych.
Ciekawa jest konstrukcja w lini 9000, PLOT NOT PI, CODE"@~x/"(i). Indeksowanie zmiennej jest oczywiste, ale podanego na żywca łańcucha? Już zapomniałem że tak można. Musiałem się ucieszyć kiedy to pisałem, bo pewnie dzięki temu zmieściłem się poniżej 768 bajtów ;) A w linii 20 siedem spacji to miejsce po usuniętej przez kopiera Turbo Phantom instrukcji FORMAT "j";SGN PI - włączającej interfejs joysticka w Opusie.
Oczywiście uruchamianie tych wszystkich startów na komputerze (lub emulatorze) bez interfejsu Kempston spowoduje pewnie że pasek/kursor będzie szalał i gry "same się będą wybierały". Chcąc używać w takim przypadku, trzeba by zamienić IN A,(31) na np. LD A,31 (w tym starcie: POKE 23802,62).
Ciężko będzie zwiększyć ilość gier, bo chociaż tak samo jak w start s1, BASIC nie jest problemem, to procedura przesuwa tylko środkową tercję ekranu.

Zmniejszyłem dołączany obrazek, teraz powinien się ruszać bez konieczności powiększania (jak poprzednie).
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: ZbyniuR w 2018.08.31, 13:10:36
Pierwszy raz widzę tekst przewijany od lewej do prawej. :)
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: Tygrys w 2018.08.31, 16:03:55
Fajne te STARTy ;)
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: trojacek w 2018.08.31, 17:32:29
Fiu, fiu, jakie bajery :)
Z innych tego typu atrakcji widziałem starta z dźwiękami na AY, które towarzyszyły każdemu ruchowi kursora.

A moje starty były bez żadnych tricków, tylko maksymalnie użyteczne. Taki PRL-owski, szary smutek ;)
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: Phonex w 2018.09.01, 21:37:28
Nie pisałem scrolli, za to pisałem starty ;)
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: mariansss w 2018.09.01, 22:11:09
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.
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: Phonex w 2018.09.02, 14:55:52
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.
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: Phonex w 2018.09.07, 12:29:30
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ć).
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: Phonex w 2018.09.14, 13:57:06
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
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: Phonex w 2018.09.21, 10:00:10
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ść.
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: Phonex w 2018.09.28, 12:11:06
8. Gry 05

4 gry. 438 bajtów.
Udana próba napisania najkrótszego starta. Mieści się w dwóch sektorach Opusa.
Jeszcze więcej asemblera - przeniesione "otwierania okienka" czyli ustawianie koloru.
Tylko cztery gry, bo pewnie tyle weszło na dysk, ale zostało jeszcze trochę miejsca do 512, więc nawet po dopisaniu jeszcze kilku gier też się zmieści.
Jest spokojny, bez efektów, więc nadaje się też do dysku z użytkami.
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: Phonex w 2018.10.05, 13:53:07
9. rafamiga 1 

5 gier. 1061 bajtów
NIE MOJE! Rafamiga postanowił zająć się tematem, chociaż nie miał stacji dysków ;)
No i widać na pierwszy rzut oka, że jest napisany dla mnie.
Ładny efekt gwiazd, z trzema planami. Można by potraktować to jako napisany awansem (40-letnim!) program na "Wyzwanie dla programistów #5" ;D Gwiazdki płyną w lewo lub w prawo, zależnie od ostatnio użytego kursora.
Gry wpisane są w linii 1 po REM. Muszą zostać w linii 1, bo asembler lokalizuje ją na podstawie numeru. Bez problemu można dopisać więcej gier - na początku linii jest podana ilość (jednocyfrowa - ale można wpisywać litery).
W zasadzie cały start jest w asemblerze, w BASICu poza LOAD są tylko tytuły i przekazywanie wybranej gry. A czemu reset po wybraniu "[-]" jest w BASICu? Początkowo w ogóle go nie było, z tego co pamiętam, i Raf dopisał go potem od ręki. W zasadzie zamykanie (jako reset) jest potrzebne na Opusa, a na FDD3000 jest przecież reset w interfejsie - można by we wszystkich przerobić to na wyjście do Basica bez resetu stacji.
Nie ma obsługi joysticka. Do zatwierdzania wyboru służy tylko "0", ENTER nie działa. Centralny napis pewnie można by zmienić, ale nigdy nie miałem cierpliwości, żeby dojść jak jest zrobiony.
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: Klaud w 2018.10.05, 14:11:34
Fajna animacja tych 3 planów :)
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: tdu w 2018.10.05, 15:35:15
Fajne starty, mi jednak marzy się taki co sam wyświetli zawartość dyskietki i uwzględni stronicowanie,
przy dużej liczbie tytułów (wyświetli np. po 10 pozycji).
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: ZbyniuR w 2018.10.05, 16:11:52
Ponad 10 gier na stronie?   To chyba formatowanych na DD.
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: tdu w 2018.10.05, 16:18:11
FDD3000 formatuje dyskietki na 720kB, więc gier moze być ponad 10 spokojnie.
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: trojacek w 2018.10.05, 16:41:39
640KB (16 + 4 + 620).
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: Phonex w 2018.10.05, 16:59:21
Fajne starty, mi jednak marzy się taki co sam wyświetli zawartość dyskietki i uwzględni stronicowanie,
przy dużej liczbie tytułów (wyświetli np. po 10 pozycji).

Jest ten napisany przez Bzyka, co brzęczy AYkiem.
Mam jeden automatyczny, napisany na szybko, kiedyś był mi potrzebny. Tylko jest mało praktyczny: nie tylko nie ma stronicowania, ani zmiany napędu, ale nie czyta dyskietek DD, a na dodatek nie ma żadnych zabezpieczeń i wywala błąd przy ilości programów większej niż potrafi wyświetlić :(

W zasadzie przy znajomości TOSa, nawet bez znajomości procedur dyskowych, czy w ogóle asemblera można napisać automatyczny start w BASICu. Jest ten kanał/strumień którym można po znaku czytać katalog, o którym pisał chyba steev.
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: steev w 2018.10.05, 23:52:52
Kanał #0. Automatycznie i zawsze otwarty.
Można też i bez niego.
Start poniżej to czysty basic, korzystający z polecenia CAT*.
Tutaj specjalnie jest widoczny, bo zawsze mu ustawiałem flagę 'hidden'.
Wady - ilość plików na dyskietce nie mogła spowodować skrollowania ekranu.
Zalety - rozpoznawał pliki typu 'code' i pytał czy ma je załadować, pozwalał chodzić po katalogach.
Rozmiar - duuuuużo :)
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: tdu w 2018.10.06, 09:46:32
Mozesz udostępnić,  proszę
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: Phonex w 2018.10.06, 09:48:29
Wady - ilość plików na dyskietce nie mogła spowodować skrollowania ekranu.

Aaaa, czyta z ekranu? Jak start Bzyka czyta z którego napędu się uruchomił, czy ABBA Copy nazwy napędów.
Nie doceniałem tej funkcji... Raz w ogóle użyłem SCREEN$ do czytania z ekranu w starcie s4.
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: steev w 2018.10.06, 23:41:20
Cytat: Phonex
Aaaa, czyta z ekranu? Jak start Bzyka czyta z którego napędu się uruchomił, czy ABBA Copy nazwy napędów.
Nie doceniałem tej funkcji... Raz w ogóle użyłem SCREEN$ do czytania z ekranu w starcie s4.
Ano czyta z ekranu.
Na tyle skutecznie, że nigdy nie miałem cienia ochoty by coś zmienić.

Cytat: tdu
Mozesz udostępnić,  proszę
Yyy, w sensie to paskudztwo do odpalania gierek?
Prosz... :)
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: Phonex w 2018.10.12, 10:52:17
10. Gry s7

5 gier. 1124/1220 bajtów.
Udana próba napisania największego okienka ;D
Już były litery podwójnej wysokości 2x1, a teraz wersja maksymalna 2x3. Okienko na cały ekran! Jedyny (czy jeden z dwóch) mój start dłuższy niż 1k.
Nie ma ramki z boków, bo nie da się fizycznie narysować jej poza okienkiem, a jak jest wewnątrz, to pasek wyboru, który jest w INVERSE, "inwertuje" też ramkę, co nieładnie wygląda. To znaczy tak myślałem wtedy. Teraz wpadłem na pomysł jak to zrobić - na końcach zamiast spacji jest znak UDG z pionową kreską. Efekt na drugim obrazku. Feler pozostał tylko po dokonaniu wyboru, jak jest FLASH. Ale wtedy jest widoczny tylko przez 50% czasu, a poza tym po wybraniu już przecież nikt nie patrzy ;)
Procedura do powiększania liter jest dość długa (535 bajtów), potrafi też wyświetlać litery 3 na 3 (tytuł), możliwe że i inne rozmiary. Nie pamiętam skąd ją wziąłem, ale teraz oglądając znalazłem w niej polskie znaki.
Wykorzystana jest jedna dolna linia, więc trzeba było coś wymyśleć, żeby narysować tam ramkę. Pozioma linia to nie problem - składa się ze znaków podkreślenia, a boczne (dla wersji 2018) są zdefiniowane w UDG.
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: Phonex w 2018.10.26, 23:43:03
11. Gry s4  

5 gier. 509 bajtów.
Start typu "system crash". Na ekranie jest listing przesunięty w pierwszej linii, w ostatniej linii bzdury: dziwny numer linii, znaki zapytania, niedkokończony rozkaz na samym końcu z migającym znakiem zapytania, na dole komunikat o błędzie. Na dokładkę stos w ekranie.
A jednak wszystko działa ;D
Stos naprawdę jest w ekranie (oczywiście tylko do momentu wybrania), nawet jest specjalnie dobrane opóźnienie w pętli sprawdzającej klawisze, żeby nie migało za szybko. Zabawny komunikat o błędzie jest istniejącym komunikatem z Opusa, łącznie z "numerem" błędu i chyba nawet raz go widziałem naprawdę. Jeżeli chodzi o długość - ledwo się udało zmieścić w 512 bajtów (dwa sektory Opusa) - zoptymalizowany BASIC, zoptymalizowany asembler, a z linii 0 nawet REM wyleciał, więc wpisanie RUN powoduje błąd, musi być RUN 1.
Gry wpisane są nie w DATA, a w REM, wyświetlanie jest przez LIST, w związku z tym ciekawy jest sposób odczytu wybranej gry - z ekranu za pomocą SCREEN$.
To że wyświetlanie jest przez LIST, zamiast pętli z READ/PRINT wcale nie skróciło programu, bo z kolei kolory muszą być ustalone (kodami) dla każdej gry osobno.
Można by oczywiście wyróżnić bardziej okienko, na przykład robiąc w nim jednolite tło, albo zmieniając kolor listingu poza okienkiem na ciemniejszy, ale to właśnie ma tak wyglądać - za pierwszym razem ma być z trudem widoczne ;)
Znowu się nie da zwiększyć liczby gier, bo zmienił by się wygląd i na dodatek listing nie zmieścił by się na ekranie.
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: Phonex w 2018.11.02, 13:00:56
12. Gry s6  

4 gry. 725 bajtów
Okienko przewróciło się ;) Ale sterowanie normalne - góra-dół.
Patrzę na procedurę do przekręcania liter i jej nie rozpoznaję. Czyżby znów Supercode?
Trochę długo wyświetlają się nazwy gier - nie da się wyświetlić całej na raz, trzeba to robić po literce. Procedura jest lekko przyspieszona, program przeskakuje do następnej gry po wykryciu spacji w nazwie. Można by zastosować dodatkową tablicę w do której były by kopiowane nazwy, tak żeby wyświetlać cały wiersz naraz, ale start byłby dłuższy o sektor.  Najlepszym rozwiązaniem jest oczywiście zastosowanie asemblera, ale trzeba by pokonać odwieczny problem przekazywania danych z BASICa, co nastąpiło trochę później.
Można zwiększyć ilość gier, nawet bardziej niż w normalnym ustawieniu - wejdzie 12 gier, a przy wyświetlaniu co 1 wiersz nawet 26.
Właściwy adres generatora znaków jest przywracany na końcu, można zatem komuś zrobić psikusa - wpisać linię 400 STOP, czy nawet lepiej 400 BORDER 7: RANDOMIZE USR 4700 - efekt na drugim obrazku :D
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: Phonex w 2018.11.09, 10:10:05
13. Gry s8  

5 gier. 493 bajty.
Jak stodwudziestkaósemka! Czy też mówiąc elegancko - skoordynowany graficznie z menu ZX Spectrum 128 ;)
Standardowy moduł klawiszy/paska, tu w kolorze cyan i rozszerzony o przewijanie w kółko.
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: andy w 2018.11.12, 19:26:23
Dobre. Kiedyś to jeszcze były wyścigi na rameczki do loadera :)
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: Phonex w 2018.11.12, 21:37:45
Eeee tam, wyścigi. Były tylko moje ramki i... kopie moich ramek ::)
Pierwszą zrobiłem do Artista II. Kopie za to były bardziej rozpowszechnione.
A kto wymyślił w loaderach tytuł podwójną czcionką niestety nie pamiętam...
Tytuł: Odp: Moje STARTy / menu dyskowe.
Wiadomość wysłana przez: Phonex w 2018.11.16, 09:59:22
14. rafamiga 2   

4 gry. 843 bajty
NIE MOJE! Rafamiga po raz drugi.
Rasowe efekty: multicolor plus kapitalny ruchomy efekt na borderze. Zawsze chciałem napisać taką "kurtynę" - równocześnie ekran z borderem - jak tylko zobaczyłem taki efekt w Rocky Horror Show ;) Ale jakoś nigdy się nie zebrałem. Mógłbym zajrzeć do tego starta, ale nie - jeszcze kiedyś spróbuję :P
Gry wpisane są w ostatniej linii po REM. I tu też cały start jest w asemblerze, w BASICu poza LOAD są tylko tytuły i przekazywanie wybranej gry. Efekt jest dopasowany do Spectrum 48, na 128 jest lekko przesunięty. I wreszcie jest start używający przerwań w trybie IM2!
Nie ma obsługi joysticka. Do zatwierdzania wyboru służy tylko "0", ENTER nie działa.
Można wpisać do 11 gier, przed listą jest ilość, można wpisywać znaki które są po cyfrach.
Znowu emulator ZX Spin 0.666 nie spisał się - zła szybkość, musiałem użyć ZX Spin 0.7, którego nie lubię, bo zawiesza się (np. po zapisaniu animowanego gifa).