Már csak arra kellene rájönni, hogy egy kétbájtos integert hogyan hozok és viszek át gépi kódból basic-be. Mármint hogy nem 1 byte-ként kezelem, hanem 2 byte módon.
Ha a fenti megoldást használom több adat áthozására és átvitelére, akkor a 8 bites (1 byteos) számokkal kell dolgoznom, amiket aztán át kell alakítani 2 byte integerré.
let a=peek(variables+0) tartalmazza az alsó byte-ot
let b=peek(variables+1) tartalmazza a felső byte-ot
csinálhatnám, hogy
let c=a+(256*b), de attól félek, hogy a basic tényleg elvégzi a szorzást, és sokáig tart, nem pedig csak 8 bittel eltol.
A másik dolog visszafelé BASIC->ASSEMBLY még nagyobb a probléma, mert 256-tal kell osztanom, és maradékos osztás kell. Ha csupa drága idő elmegy feleslegesen.
Nem úszom meg, deklarálni kell egy-két globális basic változót, amik integer számok, és dirketben férek hozzájuk:
100 ALLOCATE 100
110 LET A=256 ! azért 256. hogy a basic 2byte integerként kezelje
120 LET B=256
130 LET C=256
140 CODE P1=HEX$("....... kódom
150 = itt kiszámolom A címét valahogy =
160 CALL USR(p1,A-címe)
170 PRINT A