Patric Ljung
<5455>
· Text 2430 · w8 · kommentar
1986-01-01 01:59
Ärende: Lagring av maskinspråksrutin
'
'
Om maskinkoden är bestämd till att ligga på ett bestämt ställe så är
fäljande rutin MYCKET snabb och lätt.
OPEN 'MFIL.ASM' AS FILE 1
DIM Maskinkod¤=0
GET #1,Q¤ COUNT 2 : Storlek=CVT¤%(Q¤)
POKE VAROOT(Maskinkod¤),Storlek,SWAP%(Storlek),Adress,SWAP%(Adress),0,0
GET #1,Maskinkod¤ COUNT Storlek
CLOSE 1
Då kanske man skulle förklara alla stegen.
Först öppnas filen. Filen är uppbyggd som så att först ligger två bytes
som anger längden (storleken) på maskinkoden. Men först DIMar vi variabel
till noll så den inte tar upp onödig plats i minnet. Därefter läses
storleken in i Q¤ och konverteras till Storlek. Följande steg är att
Ändra på variabel roten så att DATA arean börjar där maskinkoden skall
börja och längden på variabel är den längs (storlek) som maskinkoden
har. Sedan läses maskinkoden in och filen stängs.
Notera en sak! Allra först måste pekarna ändras så att datorn inte lägger
in BASIC-program på minnes arean som maskinkoden skall ligga på.
Man går nästan tillväga på samma sätt när du skall spara maskinkodebn
om den ligger i minnet.
Storlek=(storlek på maskinkoden)
DIM Maskinkod¤=0
POKE VAROOT(Maskinkod¤),Storlek,SWAP%(Storlek),Adress,SWAP%(Adress),
Storlek,SWAP%(Storlek)
PREPARE 'MFIL.ASM' AS FILE 1
PUT #1,CVT%¤(Storlek)
PUT #1,Maskinkod¤
CLOSE 1
Vidare kanske en del då förstår andra smarta lösningar på andra problem.
DIM Screen¤=0
POKE VAROOT(Screen¤),2000,SWAP%(2000),0,120,2000,SWAP%(2000)
Variabeln Screen¤ 'innehåller' således skärmen. Ex: Gör ovanstående tryck
CTRL+L (rensa skärmen) hoppa ner ett par rader och skriv Screen¤='Hej'.
Hej skrivs ut överst på skärmen.
MID(Screen¤,Rad*80+Kolumn,Längd)=Text¤
Alternativt PRINT.
Moss / Patric