]> wirehaze git hosting - MS-DOS.git/blob - v4.0/src/BIOS/MSBDATA.INC

wirehaze git hosting

MZ is back!
[MS-DOS.git] / v4.0 / src / BIOS / MSBDATA.INC
1 ;==============================================================================
2 ;REVISION HISTORY:
3 ;AN000 - New for DOS Version 3.4 - J.K.
4 ;AC000 - Changed for DOS Version 3.4 - J.K.
5 ;ANxxx - PTR, DCRs
6 ;==============================================================================
7 ;AN001 - d9 Double word MOV instruction for 80386 based machine. 7/1/87 J.K.
8 ;AN002 - d25 Change DASD ERP to that recommended by Storage Systems. 7/29/87 J.K.
9 ;AN003; d304 Boot record structure change for OS2 11/9/87 J.K.
10 ;==============================================================================
11 EXTRN INIT:NEAR
12
13 PUBLIC START$
14 START$:
15 JMP INIT ;START$ PATCH BY INIT TO POINT TO
16 ;HDRIVE BPB
17 ; PUBLIC FORMAT_PATCH
18 ;FORMAT_PATCH: ;ARR 2.42
19 ; JMP FMTSET ;MJB001 DISPATCH FOR CALL FROM FORMAT UTILITY
20
21
22 PATHSTART 001,BIO
23
24 ; DB 20 DUP (0) ;IBM WANTS SOME ZEROED AREA (DELETED)
25
26
27 ;HEADER DB "Ver 2.45"
28 ;--------------------------------------------------------------
29 ;
30 ; COMMAND JUMP TABLES
31 ;
32 ; BEWARE - THESE TABLES OVERLAP SOMEWHAT! -C.P.
33 ;
34 ODD
35 DSKTBL LABEL BYTE
36 DB 24 ; THIS IS THE SIZE OF THE TABLE YUK!!!!
37 DW DSK$INIT
38 DW MEDIA$CHK
39 DW GET$BPB
40 DW CMDERR ;RS
41 DW DSK$READ
42 DW BUS$EXIT
43 DW EXIT
44 DW EXIT
45 DW DSK$WRIT
46 DW DSK$WRITV
47 DW EXIT ;ARR 2.41
48 DW EXIT ;ARR 2.41
49 DW CMDERR ;RS
50
51 PUBLIC TABLE_PATCH
52 TABLE_PATCH LABEL WORD ;ARR 2.42
53 DW DSK$OPEN ;ARR 2.41
54 DW DSK$CLOSE ;ARR 2.41
55 DW DSK$REM ;ARR 2.41
56 DW EXIT
57 DW EXIT
58 DW EXIT
59 DW GENERIC$IOCTL ; KGS 3.20
60 DW EXIT
61 DW EXIT
62 DW EXIT
63 DW IOCTL$GETOWN ; RS 3.20
64 DW IOCTL$SETOWN ; RE 3.20
65
66 ODD
67 CONTBL LABEL BYTE
68 DB 10
69 DW EXIT
70 DW EXIT
71 DW EXIT
72 DW CMDERR
73 DW CON$READ
74 DW CON$RDND
75 DW EXIT
76 DW CON$FLSH
77 DW CON$WRIT
78 DW CON$WRIT
79 DW EXIT ;ARR 2.41
80
81 ; DW CMDERR ;J.K. 4/29/86 for CON$GENIOCTL support
82 ; DW CMDERR ;J.K. 4/29/86
83 ; DW CMDERR ;J.K. 4/29/86
84 ; DW CMDERR ;J.K. 4/29/86
85 ; DW CMDERR ;J.K. 4/29/86
86 ; DW CMDERR ;J.K. 4/29/86
87 ; DW CMDERR ;J.K. 4/29/86
88 ; DW CMDERR ;J.K. 4/29/86
89 ; DW CON$GENIOCTL ;J.K. 4/29/86
90
91 ODD
92 AUXTBL LABEL BYTE
93 DB 10
94 DW EXIT
95 DW EXIT
96 DW EXIT
97 DW CMDERR
98 DW AUX$READ
99 DW AUX$RDND
100 DW EXIT
101 DW AUX$FLSH
102 DW AUX$WRIT
103 DW AUX$WRIT
104 DW AUX$WRST
105
106 ODD
107 TIMTBL LABEL BYTE
108 DB 9
109 DW EXIT
110 DW EXIT
111 DW EXIT
112 DW CMDERR
113 DW TIM$READ
114 DW BUS$EXIT
115 DW EXIT
116 DW EXIT
117 DW TIM$WRIT
118 DW TIM$WRIT
119
120 ODD
121 PRNTBL LABEL BYTE
122 DB 24
123 DW EXIT ;INIT
124 DW EXIT
125 DW EXIT
126 DW CMDERR
127 DW EXIT$ZER ;INDICATE ZERO CHARS READ
128 DW BUS$EXIT
129 DW EXIT
130 DW EXIT
131 DW PRN$WRIT
132 DW PRN$WRIT
133 DW PRN$STAT
134 DW EXIT
135 DW EXIT ;ARR 2.41
136 DW EXIT ;ARR 2.41
137 DW EXIT ;ARR 2.41
138 DW EXIT ;ARR 2.41
139 DW PRN$TILBUSY
140 DW EXIT ;RS 3.20
141 DW EXIT ;RS 3.20
142 DW PRN$GENIOCTL ;RS 3.20
143 DW EXIT ;RS 3.20
144 DW EXIT ;RS 3.20
145 DW EXIT ;RS 3.20
146 DW CMDERR ;RS 3.20
147 DW CMDERR ;RS 3.20
148
149 EVENB
150 PUBLIC OLD13 ;(MOVED HERE FROM IBMBIO2)
151 OLD13 label DWORD
152 db '5986' ;J.K. 11/7/86 Secrete Code for DOS 3.30 IBMBIO.
153 PUBLIC ORIG13
154 ORIG13 label DWORD
155 db '21',0,0 ;J.K. 11/8/86 This is my employee serial # !!!
156
157 EVENB
158 PUBLIC PTRSAV
159 PTRSAV DD 0
160 PUBLIC AUXBUF
161 AUXBUF DB 0,0,0,0 ;SET OF 1 BYTE BUFFERS FOR COM 1,2,3, AND 4
162
163 EVENB
164 PUBLIC PREVOPER,NUMBER_OF_SEC
165 PREVOPER DW ? ; HOLDS INT 13 REQUEST (I.E. REGISTER AX).
166 NUMBER_OF_SEC DB ? ; HOLDS NUMBER OF SECTORS TO READ ON AN ECC ERROR
167
168 IF ($-CODE) GT 100H
169 %OUT VDISK BUFFER NOT CORRECTLY LOCATED
170 ELSE
171 ORG 100H
172 ENDIF
173 PUBLIC VDISK_AREA
174 VDISK_AREA DB 108 DUP(0) ;FOR USE BY VDISK
175
176 EVENB
177 ; WARNING!!! THESE ARE ADDRESSED TOGETHER IN GETDX
178 AUXNUM DB 0 ;WHICH AUX DEVICE WAS REQUESTED
179 DB 0
180
181 EVENB
182 PUBLIC CONHEADER
183 CONHEADER LABEL WORD ;HEADER FOR DEVICE "CON"
184 DD AUXDEV2
185 DW 1000000000010011B ;CON IN AND CON OUT + SPECIAL
186 DW STRATEGY
187 DW CON$IN
188 DB 'CON '
189
190 EVENB
191 PUBLIC AUXDEV2
192 AUXDEV2 LABEL WORD ;HEADER FOR DEVICE "AUX"
193 DD PRNDEV2
194 DW 1000000000000000B
195 DW STRATEGY
196 DW AUX0$IN
197 DB 'AUX '
198
199 EVENB
200 PUBLIC PRNDEV2
201 PRNDEV2 LABEL WORD ;HEADER FOR DEVICE "PRN"
202 DD TIMDEV
203 DW CHARDEV + OUTTILBUSY + DEV320
204 DW STRATEGY
205 DW PRN0$IN
206 DB 'PRN '
207
208 EVENB
209 PUBLIC TIMDEV
210 TIMDEV LABEL WORD
211 DD DSKDEV
212 DW 1000000000001000B
213 DW STRATEGY
214 DW TIM$IN
215 DB 'CLOCK$ '
216
217 EVENB
218 PUBLIC DSKDEV
219 DSKDEV LABEL WORD
220 DD COM1DEV
221 DW 0000100001000010B ;J.K.I1. 32 bit sector calculation
222 DW STRATEGY
223 DW DSK$IN
224 DRVMAX DB 4
225 PUBLIC DRVMAX
226
227 PUBLIC STEP_DRV
228 STEP_DRV DB -2 ; ARR 2.20 LAST DRIVE ACCESSED
229
230 PUBLIC PHYS_DRV
231 PHYS_DRV DB 0 ; USED BY SETDRIVE FOR GETTING BDS FOR
232 ; LOGICAL DRIVE, OR PHYSICAL DRIVE.
233 PUBLIC FHAVE96
234 FHAVE96 DB 0 ; FLAG TO INDICATE PRESENCE OF
235 ; 96TPI SUPPORT
236 PUBLIC SINGLE
237 SINGLE DB 0 ; USED TO DETECT SINGLE DRIVE SYSTEMS
238
239 PUBLIC FHAVEK09
240 FHAVEK09 DB 0 ;INDICATES IF THIS IS A K09 OR NOT
241 ; USED BY CONSOLE DRIVER.
242 PUBLIC NEW_ROM
243 NEW_ROM DB 0 ;SET TO 1 IF WE HAVE A ROM THAT CAN
244 ; HANDLE STRANGE MEDIA LAYOUTS.
245
246 PUBLIC FSETOWNER
247 FSETOWNER DB ? ;=1 IF WE ARE SETTING THE OWNER OF A
248 ;DRIVE. (EXAMINED BY CHECKSINGLE).
249 public Secrete_Code
250 Secrete_Code dw 'jk' ;J.K. 11/7/86 Secrete code for DOS 3.30 IBMBIO.
251
252 EVENB
253 PUBLIC COM1DEV
254 COM1DEV LABEL WORD
255 DD LPT1DEV
256 DW 1000000000000000B
257 DW STRATEGY
258 DW AUX0$IN
259 DB 'COM1 '
260
261 EVENB
262 PUBLIC LPT1DEV
263 LPT1DEV LABEL WORD
264 DD LPT2DEV
265 DW CHARDEV + OUTTILBUSY + DEV320
266 DW STRATEGY
267 DW PRN1$IN
268 DB 'LPT1 '
269
270 EVENB
271 PUBLIC LPT2DEV
272 LPT2DEV LABEL WORD
273 DD LPT3DEV
274 DW CHARDEV + OUTTILBUSY + DEV320
275 DW STRATEGY
276 DW PRN2$IN
277 DB 'LPT2 '
278
279 EVENB
280 PUBLIC LPT3DEV
281 LPT3DEV LABEL WORD
282 DD COM2DEV
283 DW CHARDEV + OUTTILBUSY + DEV320
284 DW STRATEGY
285 DW PRN3$IN
286 DB 'LPT3 '
287
288 EVENB
289 PUBLIC COM2DEV
290 COM2DEV LABEL WORD
291 DD COM3DEV
292 DW 1000000000000000B
293 DW STRATEGY
294 DW AUX1$IN
295 DB 'COM2 '
296
297 EVENB
298 PUBLIC COM3DEV
299 COM3DEV LABEL WORD ;EDK
300 DD COM4DEV
301 DW 1000000000000000B
302 DW STRATEGY
303 DW AUX2$IN
304 DB 'COM3 '
305
306 EVENB
307 PUBLIC COM4DEV
308 COM4DEV LABEL WORD ;EDK
309 DW -1,CODE
310 DW 1000000000000000B
311 DW STRATEGY
312 DW AUX3$IN
313 DB 'COM4 '
314
315 ; HARD-WIRE THE LINK TO THE NEXT INT2F HANDLER.
316 EVENB
317 PUBLIC NEXT2F_13
318 NEXT2F_13 LABEL WORD
319 EXTRN INT2F_DISK:FAR ;IBMBIO2
320 DD INT2F_DISK
321
322 EVENB
323 PUBLIC START_BDS
324 START_BDS LABEL WORD
325 DD BDS1 ;START OF BDS LINKED LIST.
326 PUBLIC ACCESSCOUNT
327 ACCESSCOUNT DB 0 ; NUMBER OF TIMES MEDIA CHECK CALLED
328 PUBLIC TIM_DRV
329 TIM_DRV DB -1 ; TIME WHEN LAST DISK I/O PERFORMED
330 PUBLIC FLAGBITS
331 FLAGBITS DW 0 ; BITS TO SET IN FLAG FIELD WHEN DOING
332 ; A SET_CHANGED_DL
333 PUBLIC MEDBYT
334 MEDBYT DB ?
335
336 EVENB
337 PUBLIC WRTVERIFY
338 WRTVERIFY LABEL WORD
339 PUBLIC RFLAG
340 RFLAG DB ROMREAD ;2 FOR READ, 3 FOR WRITE
341 VERIFY DB 0 ;1 IF VERIFY AFTER WRITE
342 PUBLIC SECCNT
343 SECCNT DW 0
344 PUBLIC HARDNUM
345 HARDNUM DB 99 ;LOGICAL DRIVE NUMBER OF FIRST HARDFILE
346 PUBLIC MOTORSTARTUP,SETTLECURRENT,SETTLESLOW
347 MOTORSTARTUP DB ? ; VALUE FROM TABLE
348 SETTLECURRENT DB ? ; VALUE FROM TABLE
349 SETTLESLOW DB ? ; SLOW SETTLE VALUE
350
351 NEXTSPEED DB ? ; VALUE OF SPEED TO BE USED
352 public save_head_sttl
353 Save_head_sttl db ? ;used by READ_SECTOR routine
354
355 PUBLIC EOT
356 EOT DB 9
357
358 EVENB
359 PUBLIC DPT
360 DPT DD ?
361
362 ;KEEP THE NEXT TWO ITEMS CONTIGUOUS - SEE IOCTL_BLOCK FOR REASON
363 PUBLIC CURSEC,CURHD,CURTRK,SPSAV
364 CURSEC DB 0 ;CURRENT SECTOR
365 CURHD DB 0 ;CURRENT HEAD
366 CURTRK DW 0 ;CURRENT TRACK
367 SPSAV DW 0 ;SAVE THE STACK POINTER
368
369 ; THE FOLLOWING ARE USED FOR IOCTL FUNCTION CALLS
370 PUBLIC FORMT_EOT,HDNUM,TRKNUM,GAP_PATCH
371 FORMT_EOT DB 8 ; EOT USED FOR FORMAT
372 HDNUM DB 0 ; HEAD NUMBER
373 TRKNUM DW 0 ; TRACK BEING MANIPULATED
374 GAP_PATCH DB 50H ; FORMAT GAP PATCHED INTO DPT
375
376 ;DISK ERRORS RETURNED FROM THE IBM ROM
377 PUBLIC ERRIN
378 ERRIN LABEL BYTE
379 db 0cch ;AN002; Write Fault error
380 DB 80H ;NO RESPONSE
381 DB 40H ;SEEK FAILURE
382 DB 10H ;BAD CRC
383 DB 8 ;DMA OVERRUN
384 DB 6 ; MEDIA CHANGE
385 DB 4 ;SECTOR NOT FOUND
386 DB 3 ;WRITE ATTEMPT TO WRITE-PROTECT DISK
387 PUBLIC LSTERR
388 LSTERR DB 0 ;ALL OTHER ERRORS
389
390 ;RETURNED ERROR CODES CORRESPONDING TO ABOVE
391 PUBLIC ERROUT
392 ERROUT LABEL BYTE
393 db 10 ;AN002; Write Fault error
394 DB 2 ;NO RESPONSE
395 DB 6 ;SEEK FAILURE
396 DB 4 ;BAD CRC
397 DB 4 ;DMA OVERRUN
398 DB 15 ; INVALID MEDIA CHANGE
399 DB 8 ;SECTOR NOT FOUND
400 DB 0 ;WRITE ATTEMPT ON WRITE-PROTECT DISK
401 DB 12 ;GENERAL ERROR
402 PUBLIC NUMERR
403 NUMERR = ERROUT-ERRIN
404
405 ;-------------------------------------------------------------
406
407 ; READ IN BOOT SECTOR HERE, READ DONE IN READBOOT.
408 ; ALSO READ SECTOR FOR DMA CHECK FOR HARD DISK.
409
410 ;J.K. The buffer for a disk sector is going to be at a double word boundary
411 ; for 80386 machine.
412
413 IF ($-CODE) Mod 4 ;AN001;
414 Org ($-CODE)+4-(($-CODE) Mod 4) ;AN001;
415 ENDIF ;AN001;
416
417 PUBLIC DISKSECTOR
418 DiskSector DB 11 DUP(?) ; TAKE CARE OF 3 JUMP BYTES PLUS OEM NAME.
419 PUBLIC BPB_IN_SECTOR
420 Bpb_In_Sector DW ?
421 PUBLIC SECPERCLUSINSECTOR
422 SecPerClusInSector DB ?
423 DW ?
424 public NumberOfFats
425 NumberOfFats DB ?
426 DW ?
427 DW ?
428 PUBLIC MEDIABYTE
429 MediaByte DB ?
430 DW ?
431 DW ?
432 DW ?
433 DW ?
434 DW ? ;AN000; Extended Hidden sector (high)
435 DW ? ;AN000; Extended Total sector (low)
436 DW ? ;AN000; Extended Total sector (high)
437 db ? ;AN003; PHYDRV in boot record.
438 db ? ;AN003; CURRENT HEAD in boot record.
439 public Ext_Boot_Sig
440 Ext_Boot_Sig DB ? ;AN000; Extended Boot record sig. (=90h)
441 public Boot_Serial_L
442 Boot_Serial_L DW ? ;AN000; Boot volume serial number (Low)
443 public Boot_Serial_H
444 Boot_Serial_H DW ? ;AN000; Boot volume serial number (High)
445 public Boot_Volume_Label
446 Boot_Volume_Label DB 11 dup (' ') ;AN000; Volume label
447 public Boot_System_ID
448 Boot_System_ID DB 8 dup (' ') ;AN000; File system Id.
449 DB 512-($-DISKSECTOR) DUP (?)
450
451 ;*********************************************************************
452 ; "BDS" CONTAINS INFORMATION FOR EACH DRIVE IN THE SYSTEM.
453 ; VARIOUS VALUES ARE PATCHED WHENEVER ACTIONS ARE PERFORMED.
454 ; SECTORS/ALLOC. UNIT IN BPB INITIALLY SET TO -1 TO SIGNIFY THAT
455 ; THE BPB HAS NOT BEEN FILLED. LINK ALSO SET TO -1 TO SIGNIFY END
456 ; OF LIST. # OF CYLINDERS IN MAXPARMS INITIALIZED TO -1 TO INDICATE
457 ; THAT THE PARAMETERS HAVE NOT BEEN SET.
458 ;
459 EVENB
460 BDS1 LABEL WORD
461 DD BDS2 ;LINK TO NEXT STRUCTURE
462 DB 0 ;INT 13 DRIVE NUMBER
463 DB 0 ;LOGICAL DRIVE LETTER
464 PUBLIC FDRIVE1
465 FDRIVE1 DW 512 ;PHYSICAL SECTOR SIZE IN BYTES
466 DB -1 ;SECTORS/ALLOCATION UNIT
467 DW 1 ;RESERVED SECTORS FOR DOS
468 DB 2 ;NO. ALLOCATION TABLES
469 DW 64 ;NUMBER DIRECTORY ENTRIES
470 DW 9*40 ;NUMBER SECTORS (AT 512 BYTES EA.)
471 DB 00000000B ;MEDIA DESCRIPTOR, INITIALLY 00H.
472 DW 2 ;NUMBER OF FAT SECTORS
473 DW 9 ;SECTOR LIMIT
474 DW 1 ;HEAD LIMIT
475 DW 0 ;HIDDEN SECTOR COUNT (low word)
476 dw 0 ;J.K. Hidden sector (high)
477 dw 0 ;J.K. Number sectors (low)
478 dw 0 ;J.K. Number sectors (high)
479 DB 0 ; TRUE => LARGE FATS
480 OPCNT1 DW 0 ;OPEN REF. COUNT
481
482 DB 3 ;FORM FACTOR
483 FLAGS1 DW 0020H ;VARIOUS FLAGS
484 ; DB 9 DUP (0) ;RESERVED FOR FUTURE USE
485 DW 40 ; NUMBER OF CYLINDERS
486 ; RECOMMENDED BPB FOR DRIVE.
487 RECBPB1 DW 512 ;BYTES PER SECTOR
488 DB 1 ;SECTORS/ALLOCATION UNIT
489 DW 1 ;RESERVED SECTORS FOR DOS
490 DB 2 ;NO. ALLOCATION TABLES
491 DW 0E0H ;NUMBER DIRECTORY ENTRIES
492 DW 9*40 ;NUMBER SECTORS (AT 512 BYTES EA.)
493 DB 0F0H ;MEDIA DESCRIPTOR, INITIALLY F0H.
494 DW 2 ;NUMBER OF FAT SECTORS
495 DW 9 ;SECTOR LIMIT
496 DW 2 ;HEAD LIMIT
497 DW 0 ;HIDDEN SECTOR COUNT(low)
498 dw 0 ;J.K. Hidden sector count (high)
499 dw 0 ;J.K. Number sectors (low)
500 dw 0 ;J.K. Number sectors (high)
501 DB 6 DUP (?)
502 TRACK1 DB -1 ;LAST TRACK ACCESSED ON THIS DRIVE
503 TIM_LO1 DW -1 ;KEEP THESE TWO CONTIGUOUS (?)
504 TIM_HI1 DW -1
505 VOLID1 DB "NO NAME ",0 ;VOLUME ID FOR THIS DISK
506 VOLSER1 dd 0 ;Current volume serial number from Boot record
507 SYSID1 db "FAT12 ",0 ;Current file system id from Boot record
508
509 EVENB
510 BDS2 LABEL WORD
511 DD BDS3 ;LINK TO NEXT STRUCTURE
512 DB 0 ;INT 13 DRIVE NUMBER
513 DB 0 ;LOGICAL DRIVE LETTER
514 PUBLIC FDRIVE2
515 FDRIVE2 DW 512 ;PHYSICAL SECTOR SIZE IN BYTES
516 DB -1 ;SECTORS/ALLOCATION UNIT
517 DW 1 ;RESERVED SECTORS FOR DOS
518 DB 2 ;NO. ALLOCATION TABLES
519 DW 64 ;NUMBER DIRECTORY ENTRIES
520 DW 9*40 ;NUMBER SECTORS (AT 512 BYTES EA.)
521 DB 00000000B ;MEDIA DESCRIPTOR, INITIALLY 00H.
522 DW 2 ;NUMBER OF FAT SECTORS
523 DW 9 ;SECTOR LIMIT
524 DW 1 ;HEAD LIMIT
525 DW 0 ;HIDDEN SECTOR COUNT (low word)
526 dw 0 ;J.K. Hidden sector (high)
527 dw 0 ;J.K. Number sectors (low)
528 dw 0 ;J.K. Number sectors (high)
529 DB 0 ; TRUE => LARGE FATS
530 OPCNT2 DW 0 ;OPEN REF. COUNT
531 DB 3 ;FORM FACTOR
532 FLAGS2 DW 0020H ;VARIOUS FLAGS
533 ; DB 9 DUP (0) ;RESERVED FOR FUTURE USE
534 DW 40 ; NUMBER OF CYLINDERS
535 ; RECOMMENDED BPB FOR DRIVE.
536 RECBPB2 DW 512 ;BYTES PER SECTOR
537 DB 1 ;SECTORS/ALLOCATION UNIT
538 DW 1 ;RESERVED SECTORS FOR DOS
539 DB 2 ;NO. ALLOCATION TABLES
540 DW 0E0H ;NUMBER DIRECTORY ENTRIES
541 DW 9*40 ;NUMBER SECTORS (AT 512 BYTES EA.)
542 DB 0F0H ;MEDIA DESCRIPTOR, INITIALLY F0H.
543 DW 2 ;NUMBER OF FAT SECTORS
544 DW 9 ;SECTOR LIMIT
545 DW 2 ;HEAD LIMIT
546 DW 0 ;HIDDEN SECTOR COUNT(low)
547 dw 0 ;J.K. Hidden sector count (high)
548 dw 0 ;J.K. Number sectors (low)
549 dw 0 ;J.K. Number sectors (high)
550 DB 6 DUP (?)
551 TRACK2 DB -1 ;LAST TRACK ACCESSED ON THIS DRIVE
552 TIM_LO2 DW -1 ;KEEP THESE TWO CONTIGUOUS (?)
553 TIM_HI2 DW -1
554 VOLID2 DB "NO NAME ",0 ;VOLUME ID FOR THIS DISK
555 VOLSER2 dd 0 ;Current volume serial number from Boot record
556 SYSID2 db "FAT12 ",0 ;Current file system id from Boot record
557
558 EVENB
559 BDS3 LABEL WORD
560 DD BDS4 ;LINK TO NEXT STRUCTURE
561 DB 0 ;INT 13 DRIVE NUMBER
562 DB 0 ;LOGICAL DRIVE LETTER
563 PUBLIC FDRIVE3
564 FDRIVE3 DW 512 ;PHYSICAL SECTOR SIZE IN BYTES
565 DB -1 ;SECTORS/ALLOCATION UNIT
566 DW 1 ;RESERVED SECTORS FOR DOS
567 DB 2 ;NO. ALLOCATION TABLES
568 DW 64 ;NUMBER DIRECTORY ENTRIES
569 DW 9*40 ;NUMBER SECTORS (AT 512 BYTES EA.)
570 DB 00000000B ;MEDIA DESCRIPTOR, INITIALLY 00H.
571 DW 2 ;NUMBER OF FAT SECTORS
572 DW 9 ;SECTOR LIMIT
573 DW 1 ;HEAD LIMIT
574 DW 0 ;HIDDEN SECTOR COUNT (low word)
575 dw 0 ;J.K. Hidden sector (high)
576 dw 0 ;J.K. Number sectors (low)
577 dw 0 ;J.K. Number sectors (high)
578 DB 0 ; TRUE => LARGE FATS
579 OPCNT3 DW 0 ;OPEN REF. COUNT
580 DB 3 ;FORM FACTOR
581 FLAGS3 DW 0020H ;VARIOUS FLAGS
582 ; DB 9 DUP (0) ;RESERVED FOR FUTURE USE
583 DW 40 ; NUMBER OF CYLINDERS
584 ; RECOMMENDED BPB FOR DRIVE.
585 RECBPB3 DW 512 ;BYTES PER SECTOR
586 DB 1 ;SECTORS/ALLOCATION UNIT
587 DW 1 ;RESERVED SECTORS FOR DOS
588 DB 2 ;NO. ALLOCATION TABLES
589 DW 0E0H ;NUMBER DIRECTORY ENTRIES
590 DW 9*40 ;NUMBER SECTORS (AT 512 BYTES EA.)
591 DB 0F0H ;MEDIA DESCRIPTOR, INITIALLY F0H.
592 DW 2 ;NUMBER OF FAT SECTORS
593 DW 9 ;SECTOR LIMIT
594 DW 2 ;HEAD LIMIT
595 DW 0 ;HIDDEN SECTOR COUNT(low)
596 dw 0 ;J.K. Hidden sector count (high)
597 dw 0 ;J.K. Number sectors (low)
598 dw 0 ;J.K. Number sectors (high)
599 DB 6 DUP (?)
600 TRACK3 DB -1 ;LAST TRACK ACCESSED ON THIS DRIVE
601 TIM_LO3 DW -1 ;KEEP THESE TWO CONTIGUOUS (?)
602 TIM_HI3 DW -1
603 VOLID3 DB "NO NAME ",0 ;VOLUME ID FOR THIS DISK
604 VOLSER3 dd 0 ;Current volume serial number from Boot record
605 SYSID3 db "FAT12 ",0 ;Current file system id from Boot record
606
607 EVENB
608 BDS4 LABEL WORD
609 DW -1 ;LINK TO NEXT STRUCTURE
610 DW CODE
611 DB 0 ;INT 13 DRIVE NUMBER
612 DB 0 ;LOGICAL DRIVE LETTER
613 PUBLIC FDRIVE4
614 FDRIVE4 DW 512 ;PHYSICAL SECTOR SIZE IN BYTES
615 DB -1 ;SECTORS/ALLOCATION UNIT
616 DW 1 ;RESERVED SECTORS FOR DOS
617 DB 2 ;NO. ALLOCATION TABLES
618 DW 64 ;NUMBER DIRECTORY ENTRIES
619 DW 9*40 ;NUMBER SECTORS (AT 512 BYTES EA.)
620 DB 00000000B ;MEDIA DESCRIPTOR, INITIALLY 00H.
621 DW 2 ;NUMBER OF FAT SECTORS
622 DW 9 ;SECTOR LIMIT
623 DW 1 ;HEAD LIMIT
624 DW 0 ;HIDDEN SECTOR COUNT (low word)
625 dw 0 ;J.K. Hidden sector (high)
626 dw 0 ;J.K. Number sectors (low)
627 dw 0 ;J.K. Number sectors (high)
628 DB 0 ; TRUE => LARGE FATS
629 OPCNT4 DW 0 ;OPEN REF. COUNT
630 DB 3 ;FORM FACTOR
631 FLAGS4 DW 0020H ;VARIOUS FLAGS
632 ; DB 9 DUP (0) ;RESERVED FOR FUTURE USE
633 DW 40 ; NUMBER OF CYLINDERS
634 ; RECOMMENDED BPB FOR DRIVE.
635 RECBPB4 DW 512 ;BYTES PER SECTOR
636 DB 1 ;SECTORS/ALLOCATION UNIT
637 DW 1 ;RESERVED SECTORS FOR DOS
638 DB 2 ;NO. ALLOCATION TABLES
639 DW 0E0H ;NUMBER DIRECTORY ENTRIES
640 DW 9*40 ;NUMBER SECTORS (AT 512 BYTES EA.)
641 DB 0F0H ;MEDIA DESCRIPTOR, INITIALLY F0H.
642 DW 2 ;NUMBER OF FAT SECTORS
643 DW 9 ;SECTOR LIMIT
644 DW 2 ;HEAD LIMIT
645 DW 0 ;HIDDEN SECTOR COUNT(low)
646 dw 0 ;J.K. Hidden sector count (high)
647 dw 0 ;J.K. Number sectors (low)
648 dw 0 ;J.K. Number sectors (high)
649 DB 6 DUP (?)
650 TRACK4 DB -1 ;LAST TRACK ACCESSED ON THIS DRIVE
651 TIM_LO4 DW -1 ;KEEP THESE TWO CONTIGUOUS (?)
652 TIM_HI4 DW -1
653 VOLID4 DB "NO NAME ",0 ;VOLUME ID FOR THIS DISK
654 VOLSER4 dd 0 ;Current volume serial number from Boot record
655 SYSID4 db "FAT12 ",0 ;Current file system id from Boot record
656
657 BPBTYPE STRUC
658 SPF DB ?
659 SPT DB ?
660 CDIRE DB ?
661 CSEC DW ?
662 SPA DB ?
663 CHEAD DB ?
664 BPBTYPE ENDS
665 PUBLIC SM92
666 SM92 BPBTYPE <3,9,70H,2*9*80,2,2>
667
668 ;-----------------------------------------------
669 ;
670 ; C O N - CONSOLE DEVICE DRIVER
671 ;
672 PUBLIC ALTAH
673 ALTAH DB 0 ;SPECIAL KEY HANDLING
674 public KEYRD_Func
675 KEYRD_Func DB 0 ;AN000; Default is conventional keyboard read
676 public KEYSTS_Func
677 KEYSTS_Func DB 1 ;AN000; Defualt if conventional keyboard status check.
678
679 ; PUBLIC SAV_SC_INFO ;J.K. 4/29/86 FOR CON$GENIOCTL
680 ; PUBLIC SAV_SC_MODE
681 ; PUBLIC SAV_SC_COLORS
682 ; PUBLIC SAV_SC_WIDTH
683 ; PUBLIC SAV_SC_LENGTH
684 ;SAV_SC_INFO LABEL BYTE
685 ;SAV_SC_MODE DB 0
686 ;SAV_SC_COLORS DW 0
687 ;SAV_SC_WIDTH DW 0
688 ;SAV_SC_LENGTH DW 0 ;J.K. 4/29/86 FOR CON$GENIOCTL
689
690 ;-------------------------------------------------------------
691 ;
692 ; P R N - PRINTER DEVICE
693 ;
694 PUBLIC PRINTDEV
695 PRINTDEV DB 0 ; INDEX INTO ABOVE ARRAY
696
697 ; THE FOLLOWING VARIABLE CAN BE MODIFIED VIA IOCTL SUB-FUNCTION 16. IN THIS
698 ; WAY, THE WAIT CAN BE SET TO SUIT THE SPEED OF THE PARTICULAR PRINTER BEING
699 ; USED. ONE FOR EACH PRINTER DEVICE.
700
701 EVENB
702 PUBLIC WAIT_COUNT
703 WAIT_COUNT DW 4 DUP (50H) ; ARRAY OF RETRY COUNTS FOR PRINTER
704
705 EVENB
706 PUBLIC DAYCNT
707 DAYCNT DW 0
708
709
710 IF iTEST ;Testing Mode for IBMBIO.
711 PUBLIC NUMBUF
712 NUMBUF DB 5 DUP (?)
713 PUBLIC DIGITS
714 DIGITS DB "0123456789ABCDEF"
715 PUBLIC FTESTBITS
716 ;FTESTBITS DW FTESTDISK+FTESTINIT
717 FTESTBITS DW fTestDISK
718 ;ftestbits dw ftestclock
719 ENDIF
720
721 PATHEND 001,BIO
722 \1a