summaryrefslogtreecommitdiff
path: root/v4.0/src/BIOS/MSBDATA.INC
diff options
context:
space:
mode:
Diffstat (limited to 'v4.0/src/BIOS/MSBDATA.INC')
-rw-r--r--v4.0/src/BIOS/MSBDATA.INC722
1 files changed, 722 insertions, 0 deletions
diff --git a/v4.0/src/BIOS/MSBDATA.INC b/v4.0/src/BIOS/MSBDATA.INC
new file mode 100644
index 0000000..d0be320
--- /dev/null
+++ b/v4.0/src/BIOS/MSBDATA.INC
@@ -0,0 +1,722 @@
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$
14START$:
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
35DSKTBL 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
52TABLE_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
67CONTBL 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
92AUXTBL 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
107TIMTBL 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
121PRNTBL 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)
151OLD13 label DWORD
152 db '5986' ;J.K. 11/7/86 Secrete Code for DOS 3.30 IBMBIO.
153 PUBLIC ORIG13
154ORIG13 label DWORD
155 db '21',0,0 ;J.K. 11/8/86 This is my employee serial # !!!
156
157 EVENB
158 PUBLIC PTRSAV
159PTRSAV DD 0
160 PUBLIC AUXBUF
161AUXBUF 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
165PREVOPER DW ? ; HOLDS INT 13 REQUEST (I.E. REGISTER AX).
166NUMBER_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
174VDISK_AREA DB 108 DUP(0) ;FOR USE BY VDISK
175
176 EVENB
177; WARNING!!! THESE ARE ADDRESSED TOGETHER IN GETDX
178AUXNUM DB 0 ;WHICH AUX DEVICE WAS REQUESTED
179 DB 0
180
181 EVENB
182 PUBLIC CONHEADER
183CONHEADER 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
192AUXDEV2 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
201PRNDEV2 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
210TIMDEV LABEL WORD
211 DD DSKDEV
212 DW 1000000000001000B
213 DW STRATEGY
214 DW TIM$IN
215 DB 'CLOCK$ '
216
217 EVENB
218 PUBLIC DSKDEV
219DSKDEV LABEL WORD
220 DD COM1DEV
221 DW 0000100001000010B ;J.K.I1. 32 bit sector calculation
222 DW STRATEGY
223 DW DSK$IN
224DRVMAX DB 4
225 PUBLIC DRVMAX
226
227 PUBLIC STEP_DRV
228STEP_DRV DB -2 ; ARR 2.20 LAST DRIVE ACCESSED
229
230 PUBLIC PHYS_DRV
231PHYS_DRV DB 0 ; USED BY SETDRIVE FOR GETTING BDS FOR
232 ; LOGICAL DRIVE, OR PHYSICAL DRIVE.
233 PUBLIC FHAVE96
234FHAVE96 DB 0 ; FLAG TO INDICATE PRESENCE OF
235 ; 96TPI SUPPORT
236 PUBLIC SINGLE
237SINGLE DB 0 ; USED TO DETECT SINGLE DRIVE SYSTEMS
238
239 PUBLIC FHAVEK09
240FHAVEK09 DB 0 ;INDICATES IF THIS IS A K09 OR NOT
241 ; USED BY CONSOLE DRIVER.
242 PUBLIC NEW_ROM
243NEW_ROM DB 0 ;SET TO 1 IF WE HAVE A ROM THAT CAN
244 ; HANDLE STRANGE MEDIA LAYOUTS.
245
246 PUBLIC FSETOWNER
247FSETOWNER DB ? ;=1 IF WE ARE SETTING THE OWNER OF A
248 ;DRIVE. (EXAMINED BY CHECKSINGLE).
249 public Secrete_Code
250Secrete_Code dw 'jk' ;J.K. 11/7/86 Secrete code for DOS 3.30 IBMBIO.
251
252 EVENB
253 PUBLIC COM1DEV
254COM1DEV LABEL WORD
255 DD LPT1DEV
256 DW 1000000000000000B
257 DW STRATEGY
258 DW AUX0$IN
259 DB 'COM1 '
260
261 EVENB
262 PUBLIC LPT1DEV
263LPT1DEV 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
272LPT2DEV 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
281LPT3DEV 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
290COM2DEV LABEL WORD
291 DD COM3DEV
292 DW 1000000000000000B
293 DW STRATEGY
294 DW AUX1$IN
295 DB 'COM2 '
296
297 EVENB
298 PUBLIC COM3DEV
299COM3DEV 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
308COM4DEV 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
318NEXT2F_13 LABEL WORD
319 EXTRN INT2F_DISK:FAR ;IBMBIO2
320 DD INT2F_DISK
321
322 EVENB
323 PUBLIC START_BDS
324START_BDS LABEL WORD
325 DD BDS1 ;START OF BDS LINKED LIST.
326 PUBLIC ACCESSCOUNT
327ACCESSCOUNT DB 0 ; NUMBER OF TIMES MEDIA CHECK CALLED
328 PUBLIC TIM_DRV
329TIM_DRV DB -1 ; TIME WHEN LAST DISK I/O PERFORMED
330 PUBLIC FLAGBITS
331FLAGBITS DW 0 ; BITS TO SET IN FLAG FIELD WHEN DOING
332 ; A SET_CHANGED_DL
333 PUBLIC MEDBYT
334MEDBYT DB ?
335
336 EVENB
337 PUBLIC WRTVERIFY
338WRTVERIFY LABEL WORD
339 PUBLIC RFLAG
340RFLAG DB ROMREAD ;2 FOR READ, 3 FOR WRITE
341VERIFY DB 0 ;1 IF VERIFY AFTER WRITE
342 PUBLIC SECCNT
343SECCNT DW 0
344 PUBLIC HARDNUM
345HARDNUM DB 99 ;LOGICAL DRIVE NUMBER OF FIRST HARDFILE
346 PUBLIC MOTORSTARTUP,SETTLECURRENT,SETTLESLOW
347MOTORSTARTUP DB ? ; VALUE FROM TABLE
348SETTLECURRENT DB ? ; VALUE FROM TABLE
349SETTLESLOW DB ? ; SLOW SETTLE VALUE
350
351NEXTSPEED DB ? ; VALUE OF SPEED TO BE USED
352 public save_head_sttl
353Save_head_sttl db ? ;used by READ_SECTOR routine
354
355 PUBLIC EOT
356EOT DB 9
357
358 EVENB
359 PUBLIC DPT
360DPT DD ?
361
362;KEEP THE NEXT TWO ITEMS CONTIGUOUS - SEE IOCTL_BLOCK FOR REASON
363 PUBLIC CURSEC,CURHD,CURTRK,SPSAV
364CURSEC DB 0 ;CURRENT SECTOR
365CURHD DB 0 ;CURRENT HEAD
366CURTRK DW 0 ;CURRENT TRACK
367SPSAV DW 0 ;SAVE THE STACK POINTER
368
369; THE FOLLOWING ARE USED FOR IOCTL FUNCTION CALLS
370 PUBLIC FORMT_EOT,HDNUM,TRKNUM,GAP_PATCH
371FORMT_EOT DB 8 ; EOT USED FOR FORMAT
372HDNUM DB 0 ; HEAD NUMBER
373TRKNUM DW 0 ; TRACK BEING MANIPULATED
374GAP_PATCH DB 50H ; FORMAT GAP PATCHED INTO DPT
375
376;DISK ERRORS RETURNED FROM THE IBM ROM
377 PUBLIC ERRIN
378ERRIN 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
388LSTERR DB 0 ;ALL OTHER ERRORS
389
390;RETURNED ERROR CODES CORRESPONDING TO ABOVE
391 PUBLIC ERROUT
392ERROUT 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
403NUMERR = 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
418DiskSector DB 11 DUP(?) ; TAKE CARE OF 3 JUMP BYTES PLUS OEM NAME.
419 PUBLIC BPB_IN_SECTOR
420Bpb_In_Sector DW ?
421 PUBLIC SECPERCLUSINSECTOR
422SecPerClusInSector DB ?
423 DW ?
424 public NumberOfFats
425NumberOfFats DB ?
426 DW ?
427 DW ?
428 PUBLIC MEDIABYTE
429MediaByte 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
440Ext_Boot_Sig DB ? ;AN000; Extended Boot record sig. (=90h)
441 public Boot_Serial_L
442Boot_Serial_L DW ? ;AN000; Boot volume serial number (Low)
443 public Boot_Serial_H
444Boot_Serial_H DW ? ;AN000; Boot volume serial number (High)
445 public Boot_Volume_Label
446Boot_Volume_Label DB 11 dup (' ') ;AN000; Volume label
447 public Boot_System_ID
448Boot_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
460BDS1 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
465FDRIVE1 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
480OPCNT1 DW 0 ;OPEN REF. COUNT
481
482 DB 3 ;FORM FACTOR
483FLAGS1 DW 0020H ;VARIOUS FLAGS
484; DB 9 DUP (0) ;RESERVED FOR FUTURE USE
485 DW 40 ; NUMBER OF CYLINDERS
486; RECOMMENDED BPB FOR DRIVE.
487RECBPB1 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 (?)
502TRACK1 DB -1 ;LAST TRACK ACCESSED ON THIS DRIVE
503TIM_LO1 DW -1 ;KEEP THESE TWO CONTIGUOUS (?)
504TIM_HI1 DW -1
505VOLID1 DB "NO NAME ",0 ;VOLUME ID FOR THIS DISK
506VOLSER1 dd 0 ;Current volume serial number from Boot record
507SYSID1 db "FAT12 ",0 ;Current file system id from Boot record
508
509 EVENB
510BDS2 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
515FDRIVE2 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
530OPCNT2 DW 0 ;OPEN REF. COUNT
531 DB 3 ;FORM FACTOR
532FLAGS2 DW 0020H ;VARIOUS FLAGS
533; DB 9 DUP (0) ;RESERVED FOR FUTURE USE
534 DW 40 ; NUMBER OF CYLINDERS
535; RECOMMENDED BPB FOR DRIVE.
536RECBPB2 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 (?)
551TRACK2 DB -1 ;LAST TRACK ACCESSED ON THIS DRIVE
552TIM_LO2 DW -1 ;KEEP THESE TWO CONTIGUOUS (?)
553TIM_HI2 DW -1
554VOLID2 DB "NO NAME ",0 ;VOLUME ID FOR THIS DISK
555VOLSER2 dd 0 ;Current volume serial number from Boot record
556SYSID2 db "FAT12 ",0 ;Current file system id from Boot record
557
558 EVENB
559BDS3 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
564FDRIVE3 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
579OPCNT3 DW 0 ;OPEN REF. COUNT
580 DB 3 ;FORM FACTOR
581FLAGS3 DW 0020H ;VARIOUS FLAGS
582; DB 9 DUP (0) ;RESERVED FOR FUTURE USE
583 DW 40 ; NUMBER OF CYLINDERS
584; RECOMMENDED BPB FOR DRIVE.
585RECBPB3 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 (?)
600TRACK3 DB -1 ;LAST TRACK ACCESSED ON THIS DRIVE
601TIM_LO3 DW -1 ;KEEP THESE TWO CONTIGUOUS (?)
602TIM_HI3 DW -1
603VOLID3 DB "NO NAME ",0 ;VOLUME ID FOR THIS DISK
604VOLSER3 dd 0 ;Current volume serial number from Boot record
605SYSID3 db "FAT12 ",0 ;Current file system id from Boot record
606
607 EVENB
608BDS4 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
614FDRIVE4 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
629OPCNT4 DW 0 ;OPEN REF. COUNT
630 DB 3 ;FORM FACTOR
631FLAGS4 DW 0020H ;VARIOUS FLAGS
632; DB 9 DUP (0) ;RESERVED FOR FUTURE USE
633 DW 40 ; NUMBER OF CYLINDERS
634; RECOMMENDED BPB FOR DRIVE.
635RECBPB4 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 (?)
650TRACK4 DB -1 ;LAST TRACK ACCESSED ON THIS DRIVE
651TIM_LO4 DW -1 ;KEEP THESE TWO CONTIGUOUS (?)
652TIM_HI4 DW -1
653VOLID4 DB "NO NAME ",0 ;VOLUME ID FOR THIS DISK
654VOLSER4 dd 0 ;Current volume serial number from Boot record
655SYSID4 db "FAT12 ",0 ;Current file system id from Boot record
656
657BPBTYPE STRUC
658SPF DB ?
659SPT DB ?
660CDIRE DB ?
661CSEC DW ?
662SPA DB ?
663CHEAD DB ?
664BPBTYPE ENDS
665 PUBLIC SM92
666SM92 BPBTYPE <3,9,70H,2*9*80,2,2>
667
668;-----------------------------------------------
669;
670; C O N - CONSOLE DEVICE DRIVER
671;
672 PUBLIC ALTAH
673ALTAH DB 0 ;SPECIAL KEY HANDLING
674 public KEYRD_Func
675KEYRD_Func DB 0 ;AN000; Default is conventional keyboard read
676 public KEYSTS_Func
677KEYSTS_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
695PRINTDEV 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
703WAIT_COUNT DW 4 DUP (50H) ; ARRAY OF RETRY COUNTS FOR PRINTER
704
705 EVENB
706 PUBLIC DAYCNT
707DAYCNT DW 0
708
709
710 IF iTEST ;Testing Mode for IBMBIO.
711 PUBLIC NUMBUF
712NUMBUF DB 5 DUP (?)
713 PUBLIC DIGITS
714DIGITS DB "0123456789ABCDEF"
715 PUBLIC FTESTBITS
716;FTESTBITS DW FTESTDISK+FTESTINIT
717FTESTBITS DW fTestDISK
718;ftestbits dw ftestclock
719 ENDIF
720
721 PATHEND 001,BIO
722 \ No newline at end of file