Also: der Trick ist die Speicherbelegung bei CCBASIC:
byte[1] liegt auf Adresse &HA1, byte[2] auf &HA2 usw.
Im Unterprogramm #LOAD_GETBYTE werden diese Variablen mit einem (noch unvollständigen) Assemblerprogramm belegt:
byte[2] = &HA2 = &HC6 -- der opcode des Befehls LDA
word[2] = HhA3/4 ist noch nicht berschreiben; aber da liegt ja "adr", und das kriegt nachher in der FOR-Schleife die Werte &H000 bis &H1FFF -- das ist dann die Adresse für den LDA - Befehl
word[3] = &HA5/6 = &HB7A1 -- der Befehl STA $A1: speichert das Resultat nach &HA1 = byte[1] = "wert".
word[4] = &HA7/8 = &H8100 -- 81 ist der Befehlt RTS; die 00 wird nicht mehr durchlaufen.
In der FOR-Schleife wird mit der Änderung von "adr" also die Adresse des LDA - Befehls des Assemblerprogramms gesetzt.
SYS GETBYTE ruft das Assemblerprogramm auf (GETBYTE ist ja &HA2);
der LDA - Befehl liest jetzt das Byte an Adresse "adr", der STA - Befehl speichert's nach $A1 = "wert", und das Assembler-Programm kehrt mit RTS zurück.
Jetzt kann "wert" (liegt ja auf Adresse &HA1 !) mit PRINT ausgegeben werden.
Lesezeichen