Kolega Mat wyczerpał totalnie temat, ale ja bym proponował coś bardziej łopatologicznie ze wsparciem software'owym,
nie chodzi mi o to aby się wymądrzać i wchodzić w kompetencje Mata, lecz raczej aby spróbować "zarazić" tematem
osoby zupełnie zielone :-)
Moja propozycja:
Ściągnij sobie kombajn do edycji / podglądania / manipulacji na plikach taśmowych, dyskowych itd ZX Spectrum
http://www.zx-modules.de/Programem ZX-Blockeditor otwórz sobie przedmiotowy plik split_border.tap
Zobaczysz takie cosik:
Pozycje 0001 oraz 0002 olewasz bo nie są do niczego nam potrzebne.
Nas interesują pozycje które zaznaczyłem na żółto.
Pozycja 0003 to nagłówek "loadera' w BASIC-u - jak każdy nagłówek taśmowy - ma on długość 17 bajtów
Pozycja 0004 to sam program w języku BASIC - możesz go sobie podejrzeć / edytować.
Najedź myszką na tą pozycję i kliknij prawy przycisk myszki, wybierz:
Edit datablock with ZX-Editor...Otworzy Ci się okienko ZX Editora
Widzisz programik (loader) który uruchamia się automatycznie od linii nr 10 i następnie wykonuje instrukcję
POKE 23610,255 która odnosi się do zmiennych systemowych (pod tym adresem przechowywany jest numer ostatniego błędu)
Pomińmy to - nie wiem po co ta instrukcja POKE jest tutaj używana (zwykle kiedy nie ma błędu to mamy pod tym adresem liczbę 255,
zatem być może"narzuca" się komputerowi, że nie ma błędu?)
Później instrukcja LOAD"" CODE i wczytywany jest nagłówek (pozycja 0005) nadający kolejnemu blokowi maszynowemu (pozycja 0006)
nazwę "split_bord" i wiemy (z rysunku pierwszego) że ten blok kodu maszynowego ma długość 118 bajtów i jest wczytywany pod adres 32768
Stąd w kolejnej linii nr 40 naszego BASIC-owego loadera mamy instrukcję RANDOMIZE USR 32768 która uruchamia ten programik.
Najedź myszką na pozycję 0006 czyli blok programu w kodzie maszynowym i kliknij prawym przyciskiem myszki.
Wybierz:
Send to... Send to ZX-Assembler Bedziesz mógł sobie podejrzeć jak wygląda kod tego programiku
Powodzenia w rozgryzaniu tajników ZX Spectrum
Pozdrawiam