Megtaláltam WORD$() a változó.
Olyasmit kipróbáltam, hogy
CODE RAM00... bc
CODE RAM02... de
CODE RAM04... hl
CALL USR(WR0,nnnn) ~ LD (RAM00),nnnn
CALL USR(WR2,nnnn) ~ LD (RAM02),nnnn
CALL USR(WR4,nnnn) ~ LD (RAM04),nnnn
A=USR(RD16,RAM00) ~ LD nnnn,(RAM00)
A=USR(RD16,RAM02) ~ LD nnnn,(RAM02)
A=USR(RD16,RAM04) ~ LD nnnn,(RAM04)
igaz A=-3276x-3276x
A WORD$ függvény arra való (Gépi kódú programozás könyv szerit), hogy ha vann egy CODE-dal deklarált string a basic kódban:
CODE A=CHR$(17)&"THIS IS A STRING." ! itt CHR utáni "17" a string hosszát adja meg
Akkor ennek a CODE-dal készített "String füzérnek" a kezdőcímét be tudjuk tenni a gépi kódba:
CODE ROUTINE1=HEX$("00",... assembly code...,WORD$(A), ... assembly code....)
Mert ugye alapvetően a CODE egyébként is azt mondja meg, hogy hol tárolta el a HEX után deklarált kódot a memóriában (2Byte-os integer).
Mivel a basic dinamukusan fordít, arra is jó lehet, hogy egy vagy több integer számot szétbontson két byte-ra, és elhelyezze a CODE-ban, viszont többszöri meghívásra ez nem alkalmas mert a CODE csak egyszer helyez el memórában adatot.
Amit még el tudok képzelni, hogy van egy integer, amit WORD-del szétbontuk, majd ORD-vel leszedjük az elemeket.
100 ALLOCATE 100
110 CODE MEMO=HEX$("00","00","00","00") ! Helyfoglaló
120 A=12345
130 B=3425
140 D$=WORD$(A) ! A értéke szétbontva D$-ba kerül
150 E$=WORD$(B)
160 POKE (MEMO+0),ORD(D$(1:1)) ! copy lo-BYTE to MEMORY
170 POKE (MEMO+1),ORD(D$(2:2)) ! hi-BYTE
180 POKE (MEMO+2),ORD(E$(1:1)) ! lo-BYTE
190 POKE (MEMO+3),ORD(E$(2:2)) ! hi-BYTE
Már csak Benchmarkot kell lefuttatni, hogy a fenti kód gyorsabb-e, vagy a lenti osztás.
POKE (MEMO+0)=MOD(A,256)
POKE (MEMO+1)=A/256