Kristoffer Eriksson
<5357>
· Text 1130 · w6 · kommentar
1985-08-03 00:12
Ärende: ASM-pgm för ABC80 (& ABC800?)
Det ska förresten vara 23 bytes i IX-arean ("LU-blocket").
Rutinnr (register A):
0 open. HL=pekare formaterat namn (11 tecken).
ger C=radbredd, D=buffertadress (High byte).
1 prepare. Samma data som open.
2 close
3 input. HL=pekare inputbuffert.
4 print. HL=pekre text. BC=längd.
5 get. HL=pekare inarea. BC=antal tecken.
6 put. HL=text. BC=längd.
7 block in. Läs in buffert från disk.
8 block ut.
9 kill. radera filen.
10 rename. HL=pekare nytt namn.
Rutinerna 3-6 returnerar A=255 och sann carry på blockorienterade enheter.
Vill man använda dem där får man joxatill det själv, eller anropa en
rutin i BASIC-prommen som simulerar det. Den är ganska besvärlig att
lokalisera.
Filnamn har samma format som på '80. Öppnar man via IO ska filnamnet
vara 11 tecken utan punkt, och man måste själv leta rätt på enhetens
drivrutiner. OPNCMD är enklare. Till OPNCMD gäller:
A=0 Normal open
1 Normal prepare
2 Open, försök först BAC sedan BAS
3 Prepare, default BAS
4-127 Prepare default BAC
127-255 ISAM OPEN.
Detta kan man läsa om i Bit för Bit med ABC800.
OPNCMD har adress 93. IX ska peka på 23 lediga bytes, HL på filnamnet,
som - om jag inte mistar mig - avslutas med CR. På adress 96 finns
rutinen OPNX, som är samma som OPNCMD, men BC ska ange filnamnets länd.
DOSBUF-nr ligger på IX+22 (har jag för mig), Buffertadress high byte
på IX+20.