Ready/Run

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


Śledzenie Pracy Programu
  • Język programu: Basic
  • Platforma: ZX Spectrum
  • Kod zamieszczono w Bajtek 11/1987
  • Autor listingu: Marcin Przasnyski
  • Listing nadesłał: Faust

Stan listingu:

0
Listing niesprawdzony - świeżo po OCR lub przepisaniu

Pomysł na napisanie tego programu zaczerpnąłem z pakietu procedur maszynowych pod nazwa SUPERCODE.

Krótki program w języku wewnętrznym mikroprocesora Z80 informuje, która instrukcja i w której linii jest aktualnie wykonywana. Informacja ta znajduje się na ekranie w drugiej linii od dołu. W trybie bezpośrednim znajduje się tam numer ostatniej wykonanej instrukcji, lub po CLS, napis postaci „q534:1 „. Wynika to z pewnej niedokładności programu. Zaburzenia mogą wystąpić także podczas wpisywania linii zajmujących więcej, niż jeden wiersz. Program wykorzystuje system przerwań maskowalnych mikroprocesora. Początek procedury obsługują cej przerwania jest pod adresem 56797 (221 +256+221 =56979) i wartość 221 wpisana jest w pamięć zapełniając całą stronicę o numerze 222. Numer stronicy wpisany jest do wektora przerwań za pośrednictwem akumulatora, po czym ustawiany jest wektoryzowany tryb obsługi przerwań. Czynności te wykonuje procedura zawarta od adresu 56640. W pamięć znajduje się także procedura przełączająca tryb przerwań na normalny — jest ona umieszczona od adresu 56812.
Z uwagi na dość dużą szybkość wykonywania programu w BASIC—u i idące za tym trudności z odczytaniem bieżącej linii, instrukcją POKE 56777,n można zmniejszyć szybkość wykonywania programu. Zmienna n może przyjmować wartości 1+255, lecz nie zalecam podawania jej jako większej od 100. Początkowo jest ona równa jeden.
Na koniec jeszcze ciekawostka. Skąd komputer wie, która instrukcja jest właśnie wykonywana? Odczytuje to ze zmiennych systemowych PPC (23621) i SUBPPC (23623). PPC to numer wykonywanej linii programu, a SUBPPC — numer instrukcji w wierszu o numerze zawartym w PPC.