LD HL,BOFA+20
| 81 | HLBUF1 | Laddar HL med adressen till inmatningsbuffert.
|
| 90 | IO | Anropar drivrutin som är knuten till IX-map.
|
| | | IN: | | A=rutin
| | | IX=IX-map för fil (LU-block) |
|
| 93 | OPNCMD | Öppnar fil. Gjord för kommandomode.
|
| | | IN: | | A=opentyp | | 0=Normalt OPEN
| | | 1=Normalt PREPARE
| | | 2=OPEN sök först .BAC sedan .BAS
| | | | 3=PREPARE Default .BAS
| | | | 3<A<128 PREPARE Default .BAC
| | | | A>127 ISAM OPEN
| | | IX=pekare till IX-map
| | | HL=pekare till filnamn | | |
|
| 96 | OPNX | Samma som OPNCMD men namnet förutsätts vara formaterat.
|
| 99 | UNPFD | Kontroll och formatering av filnamn.
|
| | | IN: | | HL=pekare till oformaterat filnamn.
| | | DE=Buffert för formaterat filnamn |
|
| 102 | NMI | Adress för NMI (non-maskable-interrupt) från BUS. Gör ett JP 0FF8AH.
|
| 105 | USEUTLU | Stänger fil (temporärt LU-block på adress FF63H).
|
| 108 | ALLOZMEM | Allokerar minne från HEAP och DE byte (Endast RUN TIME)
|
| | | UT: | | TC=Carry satt=fick ej plats
| | | HL pekar på minnesarean
| | | DE=storlek |
|
| 24576-28671 | Här ligger DOS
|
|
Subrutiner i DOS
Förklaringar: DOSBUFnr kan vara 0 - 7
| Fysiskt filnummer | | bit 0 - 3 Bibliotekssektor
| | | bit 4 - 7 Offset i bibliotekssektor |
| Selectkod: normalt är | | 0 = DR0:
1 = DR1: . 255 = sök på alla enheter |
|
| 24576 | DOSINIT | Initierar DOS
|
| 24579 | RUNX | Exekverar ABS-fil
|
| | | IN: | | A=fysiskt filnr
| | | C=fysiskt drivenr, 255=alla drivar |
|
| 24582 | LOADX | Laddning av ABS-fil
|
| | | IN: | | A=fysiskt filnr
| | | C=fysiskt drivenr,255=alla drivar
| | UT: | | om Carry=0 -> HL=startadressen annars (Carry=1) A=felkod |
|
| 24585 | SELROUT | Anropar en av fyra rutiner.
|
| | | IN: A=rutinnr | | 1=PREPARE
| | 2=CLOSE
| | 3=OPEN
| | 4=RESIZE | | | |
|
| 24588 | GETNC | Hämta nästa byte i DOSBUF0. Ökar buffertpekaren.
|
| 24591 | DR | Läs fysisk sektor till DOSBUF B/10H
|
| | | IN: | | B=DOSBUFnr * 10H
| | | DE=sektornt
| | UT: | | Carry=1 -> Drive off line
| | | Carry=0 -> Paritetsfel |
|
| 24594 | DR | Skriv fysisk sektor till DOSBUF B/10H
|
| | | IN: | | B=DOSBUFnr * 10H
| | | DE=sektornt
| | UT: | | Carry=1 -> Drive off line
| | | Carry=0 -> Paritetsfel |
|
| 24597 | PREP | Preparera fil
|
| | | IN: | | DE=pekare till formaterat filnamn utan filpunkt ex. BASICINISYS
| | B=DOSBUFnr * 10H
| | | C=selectkod | |
|
| 24600 | OPEN | Öppna fil
|
| | | IN: | | DE=pekare till formaterat filnamn utan filpunkt.
| | | B=DOSBUFnr * 10H
| | | C=selectkod |
|
| 24603 | LOAD | Laddar en ABS-fil
|
| | | IN: | | DE=pekare till formaterat filnamn utan filpunkt.
| | | B=DOSBUFnr * 10H
| | | C=selectkod
| | UT: | | HL=startadress |
|
| 24606 | RUN | Laddar och anropar en ABS-fil
|
| | | IN: | | DE=pekare till formaterat filnamn utan filpunkt.
| | | B=DOSBUFnr * 10H
| | | C=select |
|
| 24609 | CLOSE | Stänger en fil
|
| | B=DOSBUFnr * 10H
|
| 24612 | CHOP | Tar bort utrymme på en fil
|
| 24615 | PROTE | Gör ett RET
| 24618 | POSIT | Random Access initiering
| | | | IN: | | DE=logiskt sektornr
| | | B=DOSBUFnr * 10H |
| | 24621 | READ | Random Access, läs logisk sektor
| | | | IN: | | DE=logisk sektornr
| | | B=DOSBUFnr * 10H |
| | 24624 | WRITE | Random Access, skriv logisk sektor
| | | | IN: | | DE=logiskt sektornr
| | | B=DOSBUFnr * 10H |
| | 24627 | GET | Läs nästa tecken ur buffert
| | | | IN: | | B=DOSBUFnr * 10H
| | UT: | | A=tecken
| | | Carry=1 -> slut på block |
| | 24630 | GETR | Läs ett tecken med offset C ur buffert
| | | | IN: | | B=DOSBUFnr * 10H
| | | C=offset i buffert
| | UT: | | A=tecken
| | | Carry=1 -> slut på block |
| | 24633 | PUT | Skriv ett tecken sekvensiellt till buffert
| | | | IN: | | A=tecken
| | | B=DOSBUFnr * 10H
| | UT: | | Carry=1 -> slut på block |
| | 24636 | PUTR | Skriv ett tecken till buffert med offset C
| | | | IN: | | A=tecken
| | | B=DOSBUFnr * 10H
| | | C=offset i buffert
| | UT: | | C=C+1
| | | Carry=1 -> slut på block |
| | 24639 | BSP | Sätt offsetposition i buffert till 0 (3)
| | | IN: B=DOSBUFnr * 10H
| | 24642 | BLKTF | Flytta ett block med data
| | | | IN: | | C=antal byte
| | | HL=källblockets startadress
| | | DE=destinationsblockets startadress |
| | 24645 | TRAP | Initierar DOS ON ERROR
| | | | IN: | | C=felnummer
| | | DE=hoppadress till felhanterare |
| | 24648 | RENAM | Byter namn på en öppen fil
| | | | IN: | | B=DOSBUFnr * 10H
| | | DE=adress till filnamnet (11 b) |
| | 24651 | | Ger oändlig loop
| | 24654 | | Ger oändlig loop
| | 24657 | | Ger oändlig loop
| | 24660 | | Ger oändlig loop
| | 24663 | | Ger oändlig loop
| | 24666 | | Ger oändlig loop
| | 24669 | EXIT | Stänger alla filer och anropar CMDINT
| 24672 | DCWAI | Sätt drive, väntar till drive är klar
| | | Läs error/status
| | 24675 | DW.0 | Skriv sektor från DOSBUF0
| | | IN: DE=fysiskt sektornr
| | 24678 | DR.0 | Läs sektor till DOSBUF0
| | | IN: DE=fysiskt sektornr
| | 24678 | Om värdet på denna adress är 195 är det ABC DOS 6-2X eller högre. Om värdet är skilt från 195 är det ABC DOS 6-1X eller 800 8".
| | 24681 | Om värdet på 24678 är 195 och värdet på denna adress är 195 så är det ABC DOS 6-2X annars är det ABC DOS 6-3X eller UFD 6.XX.
| | |