Ready/Run

Takie sobie archiwum listingów ze starych magazynów komputerowych


Licznik
  • Język programu: Basic
  • Platforma: ZX Spectrum
  • Kod zamieszczono w Bajtek 7/1989
  • Autor listingu: Jacek Marczewski
  • Listing nadesłał: Faust

Stan listingu:

4
Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku

Myślę, że wiele osób widziało program, który ładuje się z tzw. licznikiem.

Mam na myśli gry EXOLON, KANE itp. Podczas ładowania wartość licznika zmniejsza się aż do zera, gdy program jest już cały w pamięci. Jest to o wiele bardziej eleganckie od zwykłych „pasków“, gdyż licznik jest nie tylko efektowny graficznie, ale także dobry „na nerwy“, ponieważ w każdej chwili wiemy, ile czekania nam jeszcze zostało.
Przedstawiony program LICZNIK umożliwia ładowania programów w ten właśnie sposób.
Główna część kodu maszynowego pochodzi z loadera do programu BOULDER DASH IV, reszta to przystosowanie do ładowania według danych z nagłówka, tak, by użytkownik mógł korzystać z programu bez znajomości assemblera. LICZNIK znajduje się przy końcu pamięci, od adresu 64500 do 69252. Uruchamia się go komendą RANDOMIZE USR 65100 Program wczytuje wtedy nagłówek (pierwszy napotkany) pod adres 65082 i ładuje tylko bloki typu PROGRAM i BYTES, nie akceptuje tablic.
LICZNIK, jak już wyżej wspomniałem, umiejscawia dany program w pamięci na podstawie danych w nagłówku. Jeżeli podczas ładowania wystąpił błąd, LICZNIK wraca do BASIC-a (konkretnie do miejsca wywołania, może więc również wrócić i kontynuować wykonywanie kodu maszynowego). Nie przerywa działania programu, tylko umieszcza w komórce 65099 wartość 0 (normalnie 255).
Jeżeli nie odpowiadają nam atrybuty licznika (standardowo czarne litery na białym tle), to dzięki POKE 64910, (wartość negatywu atrybutu) możemy je zmienić.
Od adresu 64562 począwszy znajdują się kształty cyfr 6 w negatywie) od zera dcrdziewiątki kolejno. Kształty można przedefiniować według własnego upodobania, podobnie jak tworzymy znaki graficzne (UDG).
Jeżeli chcemy korzystać z programu LICZNIK z poziomu assemblera, to podajemy parametry takie same, jak dla systemowej procedury ładowania, tj.

LD IX, adres początku
LD DE, długość
LD A, FFF
SCF
CALL 64500

LICZNIK nie jest programem krótkim, ale myślę, że warto zdobyć się na odrobinę cierpliwości i wpisać go.