Kapitel 15

Minnesadresser

Överblick

AdressområdeInnehåll
 
0-30719ROM
0-24575BASIC
24576-28671DOS
28672-30719Options-PROM
 
30720-32767Bildminne, dynamiskt RAM
(30720-32639 används)
 
32768-65535RAM
62720-62975DOSBUF 0DOSBUFfertarna används bara om en diskdrive
62976-63231DOSBUF 1eller hårdisk finns ansluten. CASBUFfertarna
63232-63487DOSBUF 2används bara om en kassettbandspelare finns
63488-63743DOSBUF 3ansluten. Finns inget anslutet är de
63744-63999DOSBUF 4respektive minnena fria.
64000-64255DOSBUF 5
64256-64511DOSBUF 6 CASBUF 7
64512-64767DOSBUF 7 CASBUF 2MEMBUF
64768-65279Systemvariabler
65280-65535Enkla variabler

MinnesadressInnehåll
 
0-24575 Här ligger BASIC
 
Subrutiner i BASIC (II)
0HD.STARTInitiera datorsystemet (reset)
2CONSILäser tecken från CON: utan eko.
IN: IX=0FF4CH
UT: A=inläst tecken
Utnyttjade REGister: AF
5CONREADLäser en rad från tangentbordet tills return. (INPUT LINE)
IN:HL=Buffertpekare
BC=Max. buffertlängd
UT:strängen hamnar i bufferten
REG:DE, AF
8BRKPNTReserverad för assembler-TRACE
Utför endast JP 0FF9AH
11CONWRITESkriver en rad på bildskärmen.
IN:HL=Pekare till text
BC=Längd
16RST.ERRSkriver ut BASIC-felmeddelande.
Anropas med RST 10H
DEFB errornr
18SOFTNOCOSamma som RST.ERR fast errornr fås från register A.
IN: A=felkod
24SKIPSPLäser förbi blanktecken.
IN:HL=pekare i text
UT:HL=pekare till 1:a tecken skilt från blanktecken.
REG:AF
27STRCOMPStränguttrycksscanning. Används vid syntaxkontroll av instruktioner.
IN:DE=internkodsbuffert
HL=textbuffert
UT:i internkodsbufferten
REG:AF, HL
30TYPCOMPSom ovanstående men B=typ.
IN:B=typ0=flyttal
1=heltal
2=sträng
DE=internkodsbuffert
HL=textbuffert
UT:i internkodsbufferten
REG:AF, HL
32EVALUSom RST28 men utan POP.
35LEXSCANSöker efter text i DE. Texten skall separeras med en byte >=80H. 0FFH markerar slutet på listan.
40RST28Efter varje funktion görs RST 28H varefter återhoppsadress elimineras och stacken justeras.
43CHKLUTestar om en fil är öppen.
IN: A=filnr
UT: IX=filens "Ix-map" eller felmeddelande 32
48RST30Gör ett JP 0FF9DH
51SOFTCONTAnropar RESUME-rutin. Vid exekvering av RESUME görs återhopp till anropande rutin.
54NOTYET
56RST38Gör ett 0FFA0H
59HLBOFAGör ett LD HL,BOFA
63XBOFAGör ett LD IX,BOFA
68HLPROGGör ett LD HL,BOFA+20
81HLBUF1Laddar HL med adressen till inmatningsbuffert.
90IOAnropar drivrutin som är knuten till IX-map.
IN:A=rutin
IX=IX-map för fil (LU-block)
93OPNCMDÖppnar fil. Gjord för kommandomode.
IN:A=opentyp0=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
96OPNXSamma som OPNCMD men namnet förutsätts vara formaterat.
99UNPFDKontroll och formatering av filnamn.
IN:HL=pekare till oformaterat filnamn.
DE=Buffert för formaterat filnamn
102NMIAdress för NMI (non-maskable-interrupt) från BUS. Gör ett JP 0FF8AH.
105USEUTLUStänger fil (temporärt LU-block på adress FF63H).
108ALLOZMEMAllokerar minne från HEAP och DE byte (Endast RUN TIME)
UT:TC=Carry satt=fick ej plats
HL pekar på minnesarean
DE=storlek
24576-28671Här ligger DOS
Subrutiner i DOS
Förklaringar: DOSBUFnr kan vara 0 - 7
Fysiskt filnummerbit 0 - 3 Bibliotekssektor
bit 4 - 7 Offset i bibliotekssektor
Selectkod: normalt är0 = DR0:
1 = DR1:
.
255 = sök på alla enheter
24576DOSINITInitierar DOS
24579RUNXExekverar ABS-fil
IN:A=fysiskt filnr
C=fysiskt drivenr, 255=alla drivar
24582LOADXLaddning av ABS-fil
IN:A=fysiskt filnr
C=fysiskt drivenr,255=alla drivar
UT:om Carry=0 -> HL=startadressen annars (Carry=1) A=felkod
24585SELROUTAnropar en av fyra rutiner.
IN: A=rutinnr1=PREPARE
2=CLOSE
3=OPEN
4=RESIZE
24588GETNCHämta nästa byte i DOSBUF0. Ökar buffertpekaren.
24591DRLäs fysisk sektor till DOSBUF B/10H
IN:B=DOSBUFnr * 10H
DE=sektornt
UT:Carry=1 -> Drive off line
Carry=0 -> Paritetsfel
24594DRSkriv fysisk sektor till DOSBUF B/10H
IN:B=DOSBUFnr * 10H
DE=sektornt
UT:Carry=1 -> Drive off line
Carry=0 -> Paritetsfel
24597PREPPreparera fil
IN:DE=pekare till formaterat filnamn utan filpunkt ex. BASICINISYS
B=DOSBUFnr * 10H
C=selectkod
24600OPENÖppna fil
IN:DE=pekare till formaterat filnamn utan filpunkt.
B=DOSBUFnr * 10H
C=selectkod
24603LOADLaddar en ABS-fil
IN:DE=pekare till formaterat filnamn utan filpunkt.
B=DOSBUFnr * 10H
C=selectkod
UT:HL=startadress
24606RUNLaddar och anropar en ABS-fil
IN:DE=pekare till formaterat filnamn utan filpunkt.
B=DOSBUFnr * 10H
C=select
24609CLOSEStänger en fil
B=DOSBUFnr * 10H
24612CHOPTar bort utrymme på en fil
24615PROTEGör ett RET
24618POSITRandom Access initiering
IN:DE=logiskt sektornr
B=DOSBUFnr * 10H
24621READRandom Access, läs logisk sektor
IN:DE=logisk sektornr
B=DOSBUFnr * 10H
24624WRITERandom Access, skriv logisk sektor
IN:DE=logiskt sektornr
B=DOSBUFnr * 10H
24627GETLäs nästa tecken ur buffert
IN:B=DOSBUFnr * 10H
UT:A=tecken
Carry=1 -> slut på block
24630GETRLäs ett tecken med offset C ur buffert
IN:B=DOSBUFnr * 10H
C=offset i buffert
UT:A=tecken
Carry=1 -> slut på block
24633PUTSkriv ett tecken sekvensiellt till buffert
IN:A=tecken
B=DOSBUFnr * 10H
UT:Carry=1 -> slut på block
24636PUTRSkriv 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
24639BSPSätt offsetposition i buffert till 0 (3)
IN: B=DOSBUFnr * 10H
24642BLKTFFlytta ett block med data
IN:C=antal byte
HL=källblockets startadress
DE=destinationsblockets startadress
24645TRAPInitierar DOS ON ERROR
IN:C=felnummer
DE=hoppadress till felhanterare
24648RENAMByter namn på en öppen fil
IN:B=DOSBUFnr * 10H
DE=adress till filnamnet (11 b)
24651Ger oändlig loop
24654Ger oändlig loop
24657Ger oändlig loop
24660Ger oändlig loop
24663Ger oändlig loop
24666Ger oändlig loop
24669EXITStänger alla filer och anropar CMDINT
24672DCWAISätt drive, väntar till drive är klar
Läs error/status
24675DW.0Skriv sektor från DOSBUF0
IN: DE=fysiskt sektornr
24678DR.0Läs sektor till DOSBUF0
IN: DE=fysiskt sektornr
24678Om 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".
24681Om 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.

Fixa variabler i DOS
24681WDEVDESPPekare till intern enhetslista i PROM
24683WDEVDESPekare till intern enhetslista i RAM
24685WUFDENTPekare till UFD-entry på diskett
24687DOSVERDOS version nummer
24688TYPEDOS typ
24689WDRDWRETPekare till brytmöjlighet för läs/skrivrutin.
24691WCSSPekare till clustersize
24693WCHANNPekare till aktuell kortval byte

28672-30719Här ligger Terminal och printer-rutinerna
Subrutiner i options-PROM
28672OPTINITinitiering av options-PROM
 
32765HRLDIR(HL) > (DE)

HL=minne
BC=antal bytes
Flyttning kan ske till och från HR-minnet.

 
30720-32639Här ligger bildminnet
 
32640-32767Ledigt resetsäkert
32768-Här börjar riktiga RAM. Nya program läggs härifrån och uppåt.
 
64768-65279Systemvariabler