+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+  Zuidoostbeemster         versie 1.0                 (c) 3 December 1989  +
+                                                                           +
+ Deze tekstfile bevat een overzicht van alle (bij mij nu bekende)          +
+ diskrom varibalen.                                                        +
+                                                                           +
+ Ze zijn gevonden op een nms8250 computer, maar waarschijnlijk zijn ze     +
+ hetzelfde op alle andere msx2 computers. Dit moet haast wel, want MSXDOS  +
+ gebruik ipv de BDOS calls ook directe calls in de diskrom en MSXDOS       +
+ werkt ook op alle computers.                                              +
+                                                                           +
+ Heeft u aanvullingen op deze lijst, dan zou ik ze graag zelf willen       +
+ verwerken in de lijst en een nieuwe lijst uitbrengen. Dit om te voorkomen +
+ dat deze lijst fouten gaat bevatten.                                      +
+                                                                           +
+ Ramon van der Winkel                                                      +
+ Wouter Sluislaan 12                                                       +
+ 1461 AC Zuidoostbeemster                                                  +
+                                                                           +
+ of:Via BBS Waterland : RAMON VAN DER WINKEL   Tel. 02990-40202 (24 uur)   +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


F197 00 DRIVE           DPB drive A:+00 Drive bij het dpb (0=A, 1=B, etc)
F198 F9 ID                          +01 Media ID byte (0F8h/0F9h)
F199 00 SECSIZ (L)                  +02 Sector size (200h = 512 byte)
F19A 02 SECSIZ (H)                  +03 Idem
F19B 0F DIRMSK (SECSIZ/32)-1        +04 (Directory registraties in 1 sector)-1 
F19C 04 DIRSHFT                     +05 Het aantal 1-bits in DIRMSK
F19D 01 CLUSMSK                     +06 (Aantal sectoren per cluster)-1
F19E 02 CLUSSHFT                    +07 (Aantal 1-bits in CLUSMSK)+1
F19F 01 FIRFAT (L)                  +08 Eerste sector van de FAT
F1A0 00 FIRFAT (H)                  +09 Idem
F1A1 02 FATCNT                      +0A Aantal FATs
F1A2 70 MAXENT                      +0B Het max. aantal directory registraties
F1A3 0E FIRREC (L)                  +0C Eerste sector van het DATA gebied
F1A4 00 FIRREC (H)                  +0D Idem
F1A5 CA MAXCLUS (L)                 +0E Het maximum aantal cluster
F1A6 02 MAXCLUS (H)                 +0F Idem
F1A7 03 FATSIZ                      +10 Aantal sectoren per FAT
F1A8 07 FIRDIR (L)                  +11 Eerste sector van de DIRectory
F1A9 00 FIRDIR (H)                  +12 Idem
F1AA 97 FATADR (L)                  +13 Adres van de FAT opslag in het RAM
F1AB E5 FATADR (H)                  +14 Idem

F1AC 00 DRIVE           DPB drive B +00 Drive bij het dpb (0=A, 1=B, etc)
F1AD F9 ID                          +01 Media ID byte (0F8h/0F9h)
F1AE 00 SECSIZ (L)                  +02 Sector size (200h = 512 byte)
F1AF 02 SECSIZ (H)                  +03 Idem
F1B0 0F DIRMSK (SECSIZ/32)-1        +04 (Directory registraties in 1 sector)-1 
F1B1 04 DIRSHFT                     +05 Het aantal 1-bits in DIRMSK
F1B2 01 CLUSMSK                     +06 (Aantal sectoren per cluster)-1
F1B3 02 CLUSSHFT                    +07 (Aantal 1-bits in CLUSMSK)+1
F1B4 01 FIRFAT (L)                  +08 Eerste sector van de FAT
F1B5 00 FIRFAT (H)                  +09 Idem
F1B6 02 FATCNT                      +0A Aantal FATs
F1B7 70 MAXENT                      +0B Het max. aantal directory registraties
F1B8 0E FIRREC (L)                  +0C Eerste sector van het DATA gebied
F1B9 00 FIRREC (H)                  +0D Idem
F1BA CA MAXCLUS (L)                 +0E Het maximum aantal cluster
F1BB 02 MAXCLUS (H)                 +0F Idem
F1BC 03 FATSIZ                      +10 Aantal sectoren per FAT
F1BD 07 FIRDIR (L)                  +11 Eerste sector van de DIRectory
F1BE 00 FIRDIR (H)                  +12 Idem
F1BF 97 FATADR (L)                  +13 Adres van de FAT opslag in het RAM
F1C0 E5 FATADR (H)                  +14 Idem

F1C1 00 Diskdrive afslag teller (00=Uit. Door deze op 01 te zetten en de hook
                                 0FD9Fh aan te roepen, wordt de diskdrive uit
                                 gezet, omdat de teller dan 00 wordt)

F1C2 00
F1C3 00
F1C4 00
F1C5 00                        
F1C6 00
F1C7 00
F1C8 02 Aantal drives aanwezig (hardwarematig)

F1C9 CD,6B,F3      CALL 0F36Bh          Print tekst in [DE]
F1CC 1A            LD A,(DE)                 
F1CD CD,68,F3      CALL 0F368h          Rom aan
F1D0 13            INC DE
F1D1 FE,24         CP "$"
F1D3 C8            RET Z   
F1D4 CD,A8,53      CALL 053A8h          (in de diskrom)
F1D7 18,F0         JR 0F1C9h

F1D9 CD,6B,F3      CALL 0F36Bh          Verplaats naar RAM onder de ROM
F1DC ED,B0         LDIR   
F1DE CD,68,F3      CALL 0F368H          Rom aan
F1E1 C9            RET
   
F1E2 CD,6B,F3      CALL 0F36Bh          Execute in RAM
F1E5 C3,00,00      JP Abortadres        Adres voor Abort (van Retry Ignore)                 

F1E8 11,DE,F1      LD DE,0F1DEh         JP (HL) naar een routine in het RAM
F1EB D5            PUSH DE              Returnadres op de STACK op de ROM 
F1EC 5E            LD E,(HL)             weer aan te zetten
F1ED 23            INC HL
F1EE 56            LD D,(HL)            Adres ophalen    
F1EF EB            EX DE,HL
F1F0 CD,6B,F3      CALL 0F36Bh          RAM aan
F1F3 E9            JP (HL)
   
F1F4 C3,04,56      JP 5604              Check filename (HL=pointer) Wordt
                                        opgeslagen op [DE,->) 
                                        Niet in page 1 !! (onder de diskrom)

F1F7 50,52,4E,20   "PRN "               Device names
F1FB 4C,53,54,20   "LST "
F1FF 4E,55,4C,20   "NUL "
F203 41,55,58,20   "AUX "
F207 43,4F,4E,20   "CON "

F20B 20,20,20,20   Opslag van de filename die gevonden is zoals AUX,CON etc

F20F 20
F210 20
F211 20
F212 20
F213 20
F214 20
F215 20
F216 80
F217 00
F218 00
F219 00
F21A 00
F21B 00
F21C 00
F21D 00
F21E 00
F21F 00
F220 00
F221 00
F222 00
F223 00
F224 00
F225 00
F226 00
F227 00
F228 00
F229 00
F22A 00

F22B 1F Aantal dagen in de maand Januari in dit jaar
F22C 1C                          Februari
F22D 1F                          Maart
F22E 1E                          April
F22F 1F                          Mei
F230 1E                          Juni
F231 1F                          Juli
F232 1F                          Augustus
F233 1E                          September
F234 1F                          Oktober
F235 1E                          November
F236 1F                          December

F237 00
F238 00
F239 00
F23A 00

F23B 00 Printer aan (Dos : ^P) NZ=aan 

F23C 00

F23D 79 Current DMA adres 
F23E DD

F23F FE
F240 01
F241 00
F242 01

F243 97 DPB adres van de current drive
F244 F1

F245 00 Current sector inside directory (0-based)   Deze variabelen worden
F246 00 Drive van de current directory              gebruikt door de Search 
                                                    first en next routines
F247 00

F248 10 Dag
F249 0B Maand
F24A 09 Jaar (L)
F24B 00 Jaar (H)
F24C 17
F24D 0E
F24E 04 Dag van de week

F24F C9 (625A) Komt van "Insert disk for drive" routine
F250 C9        [AF] heeft de drive in CHAR vorm (41h = "A")
F251 C9

F252 C9 (41FA)
F253 C9
F254 C9

F255 C9 (425A)
F256 C9
F257 C9

F258 C9 (42BC) Wordt door een aantal routines aangeroepen.
F259 C9        Hiermee kan F2DC aangepast worden om bijvoorbeeld onder basic 
F25A C9        sub-dirs te zien in FILES en om ze te kunnen OPENen (altijd)

F25B C9 (4317) Wordt door de DIRENT increase routine aangeroepen. Vlak hierna 
F25C C9        wordt de nieuwe DIRENT opgeslagen (nu in [AF]).
F25D C9

F25E C9 (4348) Wordt aangeroepen door de routine die de volgende directory
F25F C9        sector gaat inladen.
F260 C9

F261 C9 (440E) Van Fix filename routine
F262 C9
F263 C9

F264 C9 (4471) Van de OPEN routine
F265 C9
F266 C9

F267 C9 (    )
F268 C9
F269 C9

F26A C9 (4553) GETDPB
F26B C9
F26C C9

F26D C9 (    )
F26E C9
F26F C9

F270 C9 (46C5) DISKREAD        [HL]=DMA
F271 C9        Lees sector     [DE]=Sector
F272 C9        BDOS:2Fh        [B] =Aantal sectoren

F273 C9 (470A)
F274 C9
F275 C9

F276 C9 (4748)
F277 C9
F278 C9

F279 C9 (4755) DISKWRT         [HL]=DMA
F27A C9        Schrijf sector  [DE]=Sector
F27B C9        BDOS:30h        [B] =Aantal sectoren

F27C C9 (4916) Van de HL=DE*BC routine
F27D C9
F27E C9

F27F C9 (492F) Van de BC=BC/DE; HL=rest routine
F280 C9
F281 C9

F282 C9 (    )
F283 C9
F284 C9

F285 C9 (    )
F286 C9
F287 C9

F288 C9 (4A36)
F289 C9
F28A C9

F28B C9 (4A46)
F28C C9
F28D C9

F28E C9 (    )
F28F C9
F290 C9

F291 C9 (4BE2)
F292 C9
F293 C9

F294 C9 (4C22)
F295 C9
F296 C9

F297 C9 (4C97)
F298 C9
F299 C9

F29A C9 (4D05)
F29B C9
F29C C9

F29D C9 (    )
F29E C9
F29F C9

F2A0 C9 (4E48)
F2A1 C9
F2A2 C9

F2A3 C9 (4EDB)
F2A4 C9
F2A5 C9

F2A6 C9 (4F12)
F2A7 C9
F2A8 C9

F2A9 C9 (    )
F2AA C9
F2AB C9

F2AC C9 (5104) Van Buffered input routine, vlak voor de CHGET call
F2AD C9
F2AE C9

F2AF C9 (    )
F2B0 C9
F2B1 C9

F2B2 C9 (5496)
F2B3 C9
F2B4 C9

F2B5 C9 (5523) Van de februari = 28/29 dagen bereken routine
F2B6 C9
F2B7 C9

F2B8 2A DIRENT Current entry in de directory

F2B9 44 Filename opslag
F2BA 49
F2BB 53
F2BC 4B
F2BD 52
F2BE 4F
F2BF 4D
F2C0 20
F2C1 56
F2C2 41
F2C3 52
F2C4 00 Drive bij de filename. Als bit 7 hiervan geSET is, kunnen ook de
                               files met een niet-normal attribuut worden
                               geopend. Deze kan geset worden door bij de 
                               BDOS open routine al bit 7 te SETten van 
                               het drive byte. (=FCB+0)

F2C5 00
F2C6 00
F2C7 00
F2C8 00
F2C9 00
F2CA 00
F2CB 00
F2CC 00
F2CD 00
F2CE 00
F2CF 00
F2D0 00
F2D1 00
F2D2 00
F2D3 00
F2D4 00
F2D5 00
F2D6 00
F2D7 00
F2D8 00
F2D9 00
F2DA 00
F2DB 00

F2DC 00 If NZ dan worden files met een niet-0 attribuut ook geaccepteerd
        (F2C4 bit 7 gaat voor !)

F2DD 01 
F2DE 00
F2DF 01
F2E0 80
F2E1 00 Current drive
F2E2 79
F2E3 DE
F2E4 00
F2E5 0A
F2E6 00
F2E7 00
F2E8 00
F2E9 01
F2EA 02
F2EB 00
F2EC FC
F2ED 00
F2EE 06
F2EF 00
F2F0 06
F2F1 00
F2F2 00
F2F3 00
F2F4 00
F2F5 0C
F2F6 00
F2F7 00
F2F8 00
F2F9 00
F2FA 00
F2FB 00
F2FC 00
F2FD 00
F2FE 2A Net zoals F2B8
F2FF 01
F300 00
F301 00
F302 CA
F303 02

F304 00 Store Stack Pointer (SP)
F305 00

F306 00

F307 00 Opslag van DE als [C]>11 bij de BDOS call (0F37Dh)
F308 00

F309 00 Opslag van het DPB adres door Search first en next
F30A 00 Idem
F30B FF Current Directory entry bij Search.
F30C 00

F30D 00 Verify flag (NZ=on)

F30E 01 Datum opbouw (0 = YYMMDD, 1 = DDMMYY, 2 = DDMMYY)

F30F 00
F310 00
F311 00
F312 00
F313 00
F314 00
F315 00
F316 00
F317 00
F318 00
F319 00
F31A 00
F31B 00
F31C 00
F31D 00
F31E 00
F31F 00
F320 00
F321 00
F322 00

F323 AE ERRADR Op dit adres wordt een adres opgehaalt, waarnaar dan wordt
F324 72        gespromgen als er een error optreed

F325 6C CTRLCAD Net zoals bij ERRADR, maar nu als er op ^C wordt gedrukt
F326 5C

F327 3E Cursor positie  Wordt samen met F329 door de AUXINP gebruikt.
F328 1A Idem            Er staat dan LD A,^Z  
F329 C9                              RET

F32A C9
F32B C9
F32C C9
F32D C9
F32E C9
F32F C9
F330 C9

F331 F7 RST 30h                         Uitvoer van BDOS
F332 8F Slot ID (hier:3-3)
F333 D3 Adres   (hier:56D3)
F334 56 Idem
F335 C9 RET

F336 00 Ingegeven toetsen, voor het onthouden van combinaties oid
F337 00

F338 FF Clockchip indicator (NZ->Clockchip, Z->Geen clockchip)

F339 00
F33A 00
F33B B5
F33C 05
F33D 01
F33E 00
F33F 00

F340 F3 REBOOT (Bij een 0 wordt door DOS alles opnieuw geinitialiseerd

F341 8B Slot ID RAM, Page 0 (hier:3-2)
F342 8B Idem         Page 1
F343 8B Idem         Page 2
F344 8B Idem         Page 3

F345 07 Wordt gebruikt voor de bepaling van het aantal vrije buffers (* 025h)

F346 00 Met DOS doorgestart? (=mag CALL SYSTEM ? NZ->Ja, Z->Nee)

F347 02 Totaal aantal drives aangesloten (wordt o.a. door CALL FORMAT gebruikt)

F348 8F Slot ID van de DISKROM (hier:3-3)

F349 95 HIGHMEM
F34A DF

F34B 00 CLEAR grens voor onder DOS. Als MSXDOS.SYS wordt ingeladen, wordt hier
F34C 00                             de teller verlaagd. Als er terug naar
                                    BASIC wordt gegaan, wordt deze weer 
                                    vervangen door 0F349h.
                                    LET OP:Onder DOS kan NIET F349h worden 
                                           gebruikt, de diskrom zet namelijk
                                           eerste de routines hier neer die
                                           de BIOSCALLs 0Ch, 01Ch en 024h etc
                                           vervangen. Hierbij wordt dan ook
                                           F34B als HIGHMEM gebruikt. 
                                           Bij het gebruik van 0F349 wordt  
                                           over deze routine heen geschreven.
                                           Gevolg:System crash !!

F34D 97 Voor tijdelijke sector opslag
F34E EF

F34F 97 
F350 ED

F351 97 Als F34Dh
F352 EB

F353 92 
F354 DE

F355 97 Adres van het DPB van drive A:
F356 F1

F357 AC Idem                  drive B:
F358 F1

F359 00 Idem                  drive C:
F35A 00

F35B 00 Idem                  drive D:
F35C 00

F35D 00 Idem                  drive E:
F35E 00

F35F 00 Idem                  drive F:
F360 00

F361 00 Idem                  drive G:
F362 00

F363 00 Idem                  drive H:
F364 00

F365 DB IN A,(0A8H)
F366 A8
F367 C9 RET

F368 C9 ROMUSE Schakelt de DISKROM aan onder page 1. Werkt alleen tijdens DOS
F369 00
F36A 00

F36B C9 RAMUSE Schakelt de RAM aan onder page 1. Werkt alleen tijdens DOS
F36C 00
F36D 00

F36E C9 Verplaats ROM naar RAM HL=source, DE=dest, BC=len.
F36F 00
F370 00

F371 C3 AUXINP Aux device input. Wordt hier afgebogen naar een routine de
F372 27                          ^Z terug geeft in [AF]
F373 F3

F374 C3 AUXOUT Aux device output. Wordt hier afgebogen naar een RET.
F375 2C
F376 F3

F377 C3
F378 79
F379 DE

F37A C3 
F37B 87
F37C DE

F37D C3 BDOS
F37E 31
F37F F3

Verklarende woordenlijst:

DPB  Disk Parameter Block. Bevat alle gegevens over de manier waarop de 
                           DRIVE op dit moment moet werken. (er wordt wel
                           verschil gemaakt tussen SS en DS).
                           Bovenaan deze file staat de inhoud van een DPB
                           uiteengezet.

FCB  File Control Block.   Bevat de gegevens over een FILE die op dit moment
                           is geopent. Het FCB is als volgt opgebouwt

FCB+00 Drive nummer (0=Default, 1=A, 2=B,...)
   +01 Filename
   +02 Idem
   +03 Idem
   +04 Idem
   +05 Idem
   +06 Idem
   +07 Idem
   +08 Idem
   +09 Extensie
   +0A Idem
   +0B Idem
   +0C Current block  Hier staat het nummer van het eerst volgende blok dat
   +0D Idem           uit de file zal worden gelezen
   +0E Record size    De groote van het block in bytes
   +0F Idem
   +10 File size      De groote van de file in bytes.
   +11 Idem
   +12 Idem
   +13 Idem
   +14 Datum 
   +15 Idem
   +16 Tijd 
   +17 Idem
   +18 Device ID 
   +19 Dirpos         Positie van de file in de directory
   +1A Firclus        Eerste cluster van de file
   +1B Idem
   +1C Last cluster   Laatste cluster dat gebruikt is
   +1D Idem
   +1E Last cluster2  Laatste cluster, ten opzichte van de eerste
   +1F Idem
   +20 Current record
   +21 Random record
   +22 Idem
   +23 Idem
   +24 Idem

DMA  Direct Memory Access address. Het adres waar vanaf de data die van
                                   disk wordt gelezen in het geheugen zal
                                   worden geplaatst. Wordt automatisch mee
                                   verhoogt. Is te zetten met BDOS 01Ah

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
