mirror of
https://github.com/microsoft/MS-DOS.git
synced 2025-03-29 04:57:59 +00:00
722 lines
18 KiB
Plaintext
722 lines
18 KiB
Plaintext
;==============================================================================
|
||
;REVISION HISTORY:
|
||
;AN000 - New for DOS Version 3.4 - J.K.
|
||
;AC000 - Changed for DOS Version 3.4 - J.K.
|
||
;ANxxx - PTR, DCRs
|
||
;==============================================================================
|
||
;AN001 - d9 Double word MOV instruction for 80386 based machine. 7/1/87 J.K.
|
||
;AN002 - d25 Change DASD ERP to that recommended by Storage Systems. 7/29/87 J.K.
|
||
;AN003; d304 Boot record structure change for OS2 11/9/87 J.K.
|
||
;==============================================================================
|
||
EXTRN INIT:NEAR
|
||
|
||
PUBLIC START$
|
||
START$:
|
||
JMP INIT ;START$ PATCH BY INIT TO POINT TO
|
||
;HDRIVE BPB
|
||
; PUBLIC FORMAT_PATCH
|
||
;FORMAT_PATCH: ;ARR 2.42
|
||
; JMP FMTSET ;MJB001 DISPATCH FOR CALL FROM FORMAT UTILITY
|
||
|
||
|
||
PATHSTART 001,BIO
|
||
|
||
; DB 20 DUP (0) ;IBM WANTS SOME ZEROED AREA (DELETED)
|
||
|
||
|
||
;HEADER DB "Ver 2.45"
|
||
;--------------------------------------------------------------
|
||
;
|
||
; COMMAND JUMP TABLES
|
||
;
|
||
; BEWARE - THESE TABLES OVERLAP SOMEWHAT! -C.P.
|
||
;
|
||
ODD
|
||
DSKTBL LABEL BYTE
|
||
DB 24 ; THIS IS THE SIZE OF THE TABLE YUK!!!!
|
||
DW DSK$INIT
|
||
DW MEDIA$CHK
|
||
DW GET$BPB
|
||
DW CMDERR ;RS
|
||
DW DSK$READ
|
||
DW BUS$EXIT
|
||
DW EXIT
|
||
DW EXIT
|
||
DW DSK$WRIT
|
||
DW DSK$WRITV
|
||
DW EXIT ;ARR 2.41
|
||
DW EXIT ;ARR 2.41
|
||
DW CMDERR ;RS
|
||
|
||
PUBLIC TABLE_PATCH
|
||
TABLE_PATCH LABEL WORD ;ARR 2.42
|
||
DW DSK$OPEN ;ARR 2.41
|
||
DW DSK$CLOSE ;ARR 2.41
|
||
DW DSK$REM ;ARR 2.41
|
||
DW EXIT
|
||
DW EXIT
|
||
DW EXIT
|
||
DW GENERIC$IOCTL ; KGS 3.20
|
||
DW EXIT
|
||
DW EXIT
|
||
DW EXIT
|
||
DW IOCTL$GETOWN ; RS 3.20
|
||
DW IOCTL$SETOWN ; RE 3.20
|
||
|
||
ODD
|
||
CONTBL LABEL BYTE
|
||
DB 10
|
||
DW EXIT
|
||
DW EXIT
|
||
DW EXIT
|
||
DW CMDERR
|
||
DW CON$READ
|
||
DW CON$RDND
|
||
DW EXIT
|
||
DW CON$FLSH
|
||
DW CON$WRIT
|
||
DW CON$WRIT
|
||
DW EXIT ;ARR 2.41
|
||
|
||
; DW CMDERR ;J.K. 4/29/86 for CON$GENIOCTL support
|
||
; DW CMDERR ;J.K. 4/29/86
|
||
; DW CMDERR ;J.K. 4/29/86
|
||
; DW CMDERR ;J.K. 4/29/86
|
||
; DW CMDERR ;J.K. 4/29/86
|
||
; DW CMDERR ;J.K. 4/29/86
|
||
; DW CMDERR ;J.K. 4/29/86
|
||
; DW CMDERR ;J.K. 4/29/86
|
||
; DW CON$GENIOCTL ;J.K. 4/29/86
|
||
|
||
ODD
|
||
AUXTBL LABEL BYTE
|
||
DB 10
|
||
DW EXIT
|
||
DW EXIT
|
||
DW EXIT
|
||
DW CMDERR
|
||
DW AUX$READ
|
||
DW AUX$RDND
|
||
DW EXIT
|
||
DW AUX$FLSH
|
||
DW AUX$WRIT
|
||
DW AUX$WRIT
|
||
DW AUX$WRST
|
||
|
||
ODD
|
||
TIMTBL LABEL BYTE
|
||
DB 9
|
||
DW EXIT
|
||
DW EXIT
|
||
DW EXIT
|
||
DW CMDERR
|
||
DW TIM$READ
|
||
DW BUS$EXIT
|
||
DW EXIT
|
||
DW EXIT
|
||
DW TIM$WRIT
|
||
DW TIM$WRIT
|
||
|
||
ODD
|
||
PRNTBL LABEL BYTE
|
||
DB 24
|
||
DW EXIT ;INIT
|
||
DW EXIT
|
||
DW EXIT
|
||
DW CMDERR
|
||
DW EXIT$ZER ;INDICATE ZERO CHARS READ
|
||
DW BUS$EXIT
|
||
DW EXIT
|
||
DW EXIT
|
||
DW PRN$WRIT
|
||
DW PRN$WRIT
|
||
DW PRN$STAT
|
||
DW EXIT
|
||
DW EXIT ;ARR 2.41
|
||
DW EXIT ;ARR 2.41
|
||
DW EXIT ;ARR 2.41
|
||
DW EXIT ;ARR 2.41
|
||
DW PRN$TILBUSY
|
||
DW EXIT ;RS 3.20
|
||
DW EXIT ;RS 3.20
|
||
DW PRN$GENIOCTL ;RS 3.20
|
||
DW EXIT ;RS 3.20
|
||
DW EXIT ;RS 3.20
|
||
DW EXIT ;RS 3.20
|
||
DW CMDERR ;RS 3.20
|
||
DW CMDERR ;RS 3.20
|
||
|
||
EVENB
|
||
PUBLIC OLD13 ;(MOVED HERE FROM IBMBIO2)
|
||
OLD13 label DWORD
|
||
db '5986' ;J.K. 11/7/86 Secrete Code for DOS 3.30 IBMBIO.
|
||
PUBLIC ORIG13
|
||
ORIG13 label DWORD
|
||
db '21',0,0 ;J.K. 11/8/86 This is my employee serial # !!!
|
||
|
||
EVENB
|
||
PUBLIC PTRSAV
|
||
PTRSAV DD 0
|
||
PUBLIC AUXBUF
|
||
AUXBUF DB 0,0,0,0 ;SET OF 1 BYTE BUFFERS FOR COM 1,2,3, AND 4
|
||
|
||
EVENB
|
||
PUBLIC PREVOPER,NUMBER_OF_SEC
|
||
PREVOPER DW ? ; HOLDS INT 13 REQUEST (I.E. REGISTER AX).
|
||
NUMBER_OF_SEC DB ? ; HOLDS NUMBER OF SECTORS TO READ ON AN ECC ERROR
|
||
|
||
IF ($-CODE) GT 100H
|
||
%OUT VDISK BUFFER NOT CORRECTLY LOCATED
|
||
ELSE
|
||
ORG 100H
|
||
ENDIF
|
||
PUBLIC VDISK_AREA
|
||
VDISK_AREA DB 108 DUP(0) ;FOR USE BY VDISK
|
||
|
||
EVENB
|
||
; WARNING!!! THESE ARE ADDRESSED TOGETHER IN GETDX
|
||
AUXNUM DB 0 ;WHICH AUX DEVICE WAS REQUESTED
|
||
DB 0
|
||
|
||
EVENB
|
||
PUBLIC CONHEADER
|
||
CONHEADER LABEL WORD ;HEADER FOR DEVICE "CON"
|
||
DD AUXDEV2
|
||
DW 1000000000010011B ;CON IN AND CON OUT + SPECIAL
|
||
DW STRATEGY
|
||
DW CON$IN
|
||
DB 'CON '
|
||
|
||
EVENB
|
||
PUBLIC AUXDEV2
|
||
AUXDEV2 LABEL WORD ;HEADER FOR DEVICE "AUX"
|
||
DD PRNDEV2
|
||
DW 1000000000000000B
|
||
DW STRATEGY
|
||
DW AUX0$IN
|
||
DB 'AUX '
|
||
|
||
EVENB
|
||
PUBLIC PRNDEV2
|
||
PRNDEV2 LABEL WORD ;HEADER FOR DEVICE "PRN"
|
||
DD TIMDEV
|
||
DW CHARDEV + OUTTILBUSY + DEV320
|
||
DW STRATEGY
|
||
DW PRN0$IN
|
||
DB 'PRN '
|
||
|
||
EVENB
|
||
PUBLIC TIMDEV
|
||
TIMDEV LABEL WORD
|
||
DD DSKDEV
|
||
DW 1000000000001000B
|
||
DW STRATEGY
|
||
DW TIM$IN
|
||
DB 'CLOCK$ '
|
||
|
||
EVENB
|
||
PUBLIC DSKDEV
|
||
DSKDEV LABEL WORD
|
||
DD COM1DEV
|
||
DW 0000100001000010B ;J.K.I1. 32 bit sector calculation
|
||
DW STRATEGY
|
||
DW DSK$IN
|
||
DRVMAX DB 4
|
||
PUBLIC DRVMAX
|
||
|
||
PUBLIC STEP_DRV
|
||
STEP_DRV DB -2 ; ARR 2.20 LAST DRIVE ACCESSED
|
||
|
||
PUBLIC PHYS_DRV
|
||
PHYS_DRV DB 0 ; USED BY SETDRIVE FOR GETTING BDS FOR
|
||
; LOGICAL DRIVE, OR PHYSICAL DRIVE.
|
||
PUBLIC FHAVE96
|
||
FHAVE96 DB 0 ; FLAG TO INDICATE PRESENCE OF
|
||
; 96TPI SUPPORT
|
||
PUBLIC SINGLE
|
||
SINGLE DB 0 ; USED TO DETECT SINGLE DRIVE SYSTEMS
|
||
|
||
PUBLIC FHAVEK09
|
||
FHAVEK09 DB 0 ;INDICATES IF THIS IS A K09 OR NOT
|
||
; USED BY CONSOLE DRIVER.
|
||
PUBLIC NEW_ROM
|
||
NEW_ROM DB 0 ;SET TO 1 IF WE HAVE A ROM THAT CAN
|
||
; HANDLE STRANGE MEDIA LAYOUTS.
|
||
|
||
PUBLIC FSETOWNER
|
||
FSETOWNER DB ? ;=1 IF WE ARE SETTING THE OWNER OF A
|
||
;DRIVE. (EXAMINED BY CHECKSINGLE).
|
||
public Secrete_Code
|
||
Secrete_Code dw 'jk' ;J.K. 11/7/86 Secrete code for DOS 3.30 IBMBIO.
|
||
|
||
EVENB
|
||
PUBLIC COM1DEV
|
||
COM1DEV LABEL WORD
|
||
DD LPT1DEV
|
||
DW 1000000000000000B
|
||
DW STRATEGY
|
||
DW AUX0$IN
|
||
DB 'COM1 '
|
||
|
||
EVENB
|
||
PUBLIC LPT1DEV
|
||
LPT1DEV LABEL WORD
|
||
DD LPT2DEV
|
||
DW CHARDEV + OUTTILBUSY + DEV320
|
||
DW STRATEGY
|
||
DW PRN1$IN
|
||
DB 'LPT1 '
|
||
|
||
EVENB
|
||
PUBLIC LPT2DEV
|
||
LPT2DEV LABEL WORD
|
||
DD LPT3DEV
|
||
DW CHARDEV + OUTTILBUSY + DEV320
|
||
DW STRATEGY
|
||
DW PRN2$IN
|
||
DB 'LPT2 '
|
||
|
||
EVENB
|
||
PUBLIC LPT3DEV
|
||
LPT3DEV LABEL WORD
|
||
DD COM2DEV
|
||
DW CHARDEV + OUTTILBUSY + DEV320
|
||
DW STRATEGY
|
||
DW PRN3$IN
|
||
DB 'LPT3 '
|
||
|
||
EVENB
|
||
PUBLIC COM2DEV
|
||
COM2DEV LABEL WORD
|
||
DD COM3DEV
|
||
DW 1000000000000000B
|
||
DW STRATEGY
|
||
DW AUX1$IN
|
||
DB 'COM2 '
|
||
|
||
EVENB
|
||
PUBLIC COM3DEV
|
||
COM3DEV LABEL WORD ;EDK
|
||
DD COM4DEV
|
||
DW 1000000000000000B
|
||
DW STRATEGY
|
||
DW AUX2$IN
|
||
DB 'COM3 '
|
||
|
||
EVENB
|
||
PUBLIC COM4DEV
|
||
COM4DEV LABEL WORD ;EDK
|
||
DW -1,CODE
|
||
DW 1000000000000000B
|
||
DW STRATEGY
|
||
DW AUX3$IN
|
||
DB 'COM4 '
|
||
|
||
; HARD-WIRE THE LINK TO THE NEXT INT2F HANDLER.
|
||
EVENB
|
||
PUBLIC NEXT2F_13
|
||
NEXT2F_13 LABEL WORD
|
||
EXTRN INT2F_DISK:FAR ;IBMBIO2
|
||
DD INT2F_DISK
|
||
|
||
EVENB
|
||
PUBLIC START_BDS
|
||
START_BDS LABEL WORD
|
||
DD BDS1 ;START OF BDS LINKED LIST.
|
||
PUBLIC ACCESSCOUNT
|
||
ACCESSCOUNT DB 0 ; NUMBER OF TIMES MEDIA CHECK CALLED
|
||
PUBLIC TIM_DRV
|
||
TIM_DRV DB -1 ; TIME WHEN LAST DISK I/O PERFORMED
|
||
PUBLIC FLAGBITS
|
||
FLAGBITS DW 0 ; BITS TO SET IN FLAG FIELD WHEN DOING
|
||
; A SET_CHANGED_DL
|
||
PUBLIC MEDBYT
|
||
MEDBYT DB ?
|
||
|
||
EVENB
|
||
PUBLIC WRTVERIFY
|
||
WRTVERIFY LABEL WORD
|
||
PUBLIC RFLAG
|
||
RFLAG DB ROMREAD ;2 FOR READ, 3 FOR WRITE
|
||
VERIFY DB 0 ;1 IF VERIFY AFTER WRITE
|
||
PUBLIC SECCNT
|
||
SECCNT DW 0
|
||
PUBLIC HARDNUM
|
||
HARDNUM DB 99 ;LOGICAL DRIVE NUMBER OF FIRST HARDFILE
|
||
PUBLIC MOTORSTARTUP,SETTLECURRENT,SETTLESLOW
|
||
MOTORSTARTUP DB ? ; VALUE FROM TABLE
|
||
SETTLECURRENT DB ? ; VALUE FROM TABLE
|
||
SETTLESLOW DB ? ; SLOW SETTLE VALUE
|
||
|
||
NEXTSPEED DB ? ; VALUE OF SPEED TO BE USED
|
||
public save_head_sttl
|
||
Save_head_sttl db ? ;used by READ_SECTOR routine
|
||
|
||
PUBLIC EOT
|
||
EOT DB 9
|
||
|
||
EVENB
|
||
PUBLIC DPT
|
||
DPT DD ?
|
||
|
||
;KEEP THE NEXT TWO ITEMS CONTIGUOUS - SEE IOCTL_BLOCK FOR REASON
|
||
PUBLIC CURSEC,CURHD,CURTRK,SPSAV
|
||
CURSEC DB 0 ;CURRENT SECTOR
|
||
CURHD DB 0 ;CURRENT HEAD
|
||
CURTRK DW 0 ;CURRENT TRACK
|
||
SPSAV DW 0 ;SAVE THE STACK POINTER
|
||
|
||
; THE FOLLOWING ARE USED FOR IOCTL FUNCTION CALLS
|
||
PUBLIC FORMT_EOT,HDNUM,TRKNUM,GAP_PATCH
|
||
FORMT_EOT DB 8 ; EOT USED FOR FORMAT
|
||
HDNUM DB 0 ; HEAD NUMBER
|
||
TRKNUM DW 0 ; TRACK BEING MANIPULATED
|
||
GAP_PATCH DB 50H ; FORMAT GAP PATCHED INTO DPT
|
||
|
||
;DISK ERRORS RETURNED FROM THE IBM ROM
|
||
PUBLIC ERRIN
|
||
ERRIN LABEL BYTE
|
||
db 0cch ;AN002; Write Fault error
|
||
DB 80H ;NO RESPONSE
|
||
DB 40H ;SEEK FAILURE
|
||
DB 10H ;BAD CRC
|
||
DB 8 ;DMA OVERRUN
|
||
DB 6 ; MEDIA CHANGE
|
||
DB 4 ;SECTOR NOT FOUND
|
||
DB 3 ;WRITE ATTEMPT TO WRITE-PROTECT DISK
|
||
PUBLIC LSTERR
|
||
LSTERR DB 0 ;ALL OTHER ERRORS
|
||
|
||
;RETURNED ERROR CODES CORRESPONDING TO ABOVE
|
||
PUBLIC ERROUT
|
||
ERROUT LABEL BYTE
|
||
db 10 ;AN002; Write Fault error
|
||
DB 2 ;NO RESPONSE
|
||
DB 6 ;SEEK FAILURE
|
||
DB 4 ;BAD CRC
|
||
DB 4 ;DMA OVERRUN
|
||
DB 15 ; INVALID MEDIA CHANGE
|
||
DB 8 ;SECTOR NOT FOUND
|
||
DB 0 ;WRITE ATTEMPT ON WRITE-PROTECT DISK
|
||
DB 12 ;GENERAL ERROR
|
||
PUBLIC NUMERR
|
||
NUMERR = ERROUT-ERRIN
|
||
|
||
;-------------------------------------------------------------
|
||
|
||
; READ IN BOOT SECTOR HERE, READ DONE IN READBOOT.
|
||
; ALSO READ SECTOR FOR DMA CHECK FOR HARD DISK.
|
||
|
||
;J.K. The buffer for a disk sector is going to be at a double word boundary
|
||
; for 80386 machine.
|
||
|
||
IF ($-CODE) Mod 4 ;AN001;
|
||
Org ($-CODE)+4-(($-CODE) Mod 4) ;AN001;
|
||
ENDIF ;AN001;
|
||
|
||
PUBLIC DISKSECTOR
|
||
DiskSector DB 11 DUP(?) ; TAKE CARE OF 3 JUMP BYTES PLUS OEM NAME.
|
||
PUBLIC BPB_IN_SECTOR
|
||
Bpb_In_Sector DW ?
|
||
PUBLIC SECPERCLUSINSECTOR
|
||
SecPerClusInSector DB ?
|
||
DW ?
|
||
public NumberOfFats
|
||
NumberOfFats DB ?
|
||
DW ?
|
||
DW ?
|
||
PUBLIC MEDIABYTE
|
||
MediaByte DB ?
|
||
DW ?
|
||
DW ?
|
||
DW ?
|
||
DW ?
|
||
DW ? ;AN000; Extended Hidden sector (high)
|
||
DW ? ;AN000; Extended Total sector (low)
|
||
DW ? ;AN000; Extended Total sector (high)
|
||
db ? ;AN003; PHYDRV in boot record.
|
||
db ? ;AN003; CURRENT HEAD in boot record.
|
||
public Ext_Boot_Sig
|
||
Ext_Boot_Sig DB ? ;AN000; Extended Boot record sig. (=90h)
|
||
public Boot_Serial_L
|
||
Boot_Serial_L DW ? ;AN000; Boot volume serial number (Low)
|
||
public Boot_Serial_H
|
||
Boot_Serial_H DW ? ;AN000; Boot volume serial number (High)
|
||
public Boot_Volume_Label
|
||
Boot_Volume_Label DB 11 dup (' ') ;AN000; Volume label
|
||
public Boot_System_ID
|
||
Boot_System_ID DB 8 dup (' ') ;AN000; File system Id.
|
||
DB 512-($-DISKSECTOR) DUP (?)
|
||
|
||
;*********************************************************************
|
||
; "BDS" CONTAINS INFORMATION FOR EACH DRIVE IN THE SYSTEM.
|
||
; VARIOUS VALUES ARE PATCHED WHENEVER ACTIONS ARE PERFORMED.
|
||
; SECTORS/ALLOC. UNIT IN BPB INITIALLY SET TO -1 TO SIGNIFY THAT
|
||
; THE BPB HAS NOT BEEN FILLED. LINK ALSO SET TO -1 TO SIGNIFY END
|
||
; OF LIST. # OF CYLINDERS IN MAXPARMS INITIALIZED TO -1 TO INDICATE
|
||
; THAT THE PARAMETERS HAVE NOT BEEN SET.
|
||
;
|
||
EVENB
|
||
BDS1 LABEL WORD
|
||
DD BDS2 ;LINK TO NEXT STRUCTURE
|
||
DB 0 ;INT 13 DRIVE NUMBER
|
||
DB 0 ;LOGICAL DRIVE LETTER
|
||
PUBLIC FDRIVE1
|
||
FDRIVE1 DW 512 ;PHYSICAL SECTOR SIZE IN BYTES
|
||
DB -1 ;SECTORS/ALLOCATION UNIT
|
||
DW 1 ;RESERVED SECTORS FOR DOS
|
||
DB 2 ;NO. ALLOCATION TABLES
|
||
DW 64 ;NUMBER DIRECTORY ENTRIES
|
||
DW 9*40 ;NUMBER SECTORS (AT 512 BYTES EA.)
|
||
DB 00000000B ;MEDIA DESCRIPTOR, INITIALLY 00H.
|
||
DW 2 ;NUMBER OF FAT SECTORS
|
||
DW 9 ;SECTOR LIMIT
|
||
DW 1 ;HEAD LIMIT
|
||
DW 0 ;HIDDEN SECTOR COUNT (low word)
|
||
dw 0 ;J.K. Hidden sector (high)
|
||
dw 0 ;J.K. Number sectors (low)
|
||
dw 0 ;J.K. Number sectors (high)
|
||
DB 0 ; TRUE => LARGE FATS
|
||
OPCNT1 DW 0 ;OPEN REF. COUNT
|
||
|
||
DB 3 ;FORM FACTOR
|
||
FLAGS1 DW 0020H ;VARIOUS FLAGS
|
||
; DB 9 DUP (0) ;RESERVED FOR FUTURE USE
|
||
DW 40 ; NUMBER OF CYLINDERS
|
||
; RECOMMENDED BPB FOR DRIVE.
|
||
RECBPB1 DW 512 ;BYTES PER SECTOR
|
||
DB 1 ;SECTORS/ALLOCATION UNIT
|
||
DW 1 ;RESERVED SECTORS FOR DOS
|
||
DB 2 ;NO. ALLOCATION TABLES
|
||
DW 0E0H ;NUMBER DIRECTORY ENTRIES
|
||
DW 9*40 ;NUMBER SECTORS (AT 512 BYTES EA.)
|
||
DB 0F0H ;MEDIA DESCRIPTOR, INITIALLY F0H.
|
||
DW 2 ;NUMBER OF FAT SECTORS
|
||
DW 9 ;SECTOR LIMIT
|
||
DW 2 ;HEAD LIMIT
|
||
DW 0 ;HIDDEN SECTOR COUNT(low)
|
||
dw 0 ;J.K. Hidden sector count (high)
|
||
dw 0 ;J.K. Number sectors (low)
|
||
dw 0 ;J.K. Number sectors (high)
|
||
DB 6 DUP (?)
|
||
TRACK1 DB -1 ;LAST TRACK ACCESSED ON THIS DRIVE
|
||
TIM_LO1 DW -1 ;KEEP THESE TWO CONTIGUOUS (?)
|
||
TIM_HI1 DW -1
|
||
VOLID1 DB "NO NAME ",0 ;VOLUME ID FOR THIS DISK
|
||
VOLSER1 dd 0 ;Current volume serial number from Boot record
|
||
SYSID1 db "FAT12 ",0 ;Current file system id from Boot record
|
||
|
||
EVENB
|
||
BDS2 LABEL WORD
|
||
DD BDS3 ;LINK TO NEXT STRUCTURE
|
||
DB 0 ;INT 13 DRIVE NUMBER
|
||
DB 0 ;LOGICAL DRIVE LETTER
|
||
PUBLIC FDRIVE2
|
||
FDRIVE2 DW 512 ;PHYSICAL SECTOR SIZE IN BYTES
|
||
DB -1 ;SECTORS/ALLOCATION UNIT
|
||
DW 1 ;RESERVED SECTORS FOR DOS
|
||
DB 2 ;NO. ALLOCATION TABLES
|
||
DW 64 ;NUMBER DIRECTORY ENTRIES
|
||
DW 9*40 ;NUMBER SECTORS (AT 512 BYTES EA.)
|
||
DB 00000000B ;MEDIA DESCRIPTOR, INITIALLY 00H.
|
||
DW 2 ;NUMBER OF FAT SECTORS
|
||
DW 9 ;SECTOR LIMIT
|
||
DW 1 ;HEAD LIMIT
|
||
DW 0 ;HIDDEN SECTOR COUNT (low word)
|
||
dw 0 ;J.K. Hidden sector (high)
|
||
dw 0 ;J.K. Number sectors (low)
|
||
dw 0 ;J.K. Number sectors (high)
|
||
DB 0 ; TRUE => LARGE FATS
|
||
OPCNT2 DW 0 ;OPEN REF. COUNT
|
||
DB 3 ;FORM FACTOR
|
||
FLAGS2 DW 0020H ;VARIOUS FLAGS
|
||
; DB 9 DUP (0) ;RESERVED FOR FUTURE USE
|
||
DW 40 ; NUMBER OF CYLINDERS
|
||
; RECOMMENDED BPB FOR DRIVE.
|
||
RECBPB2 DW 512 ;BYTES PER SECTOR
|
||
DB 1 ;SECTORS/ALLOCATION UNIT
|
||
DW 1 ;RESERVED SECTORS FOR DOS
|
||
DB 2 ;NO. ALLOCATION TABLES
|
||
DW 0E0H ;NUMBER DIRECTORY ENTRIES
|
||
DW 9*40 ;NUMBER SECTORS (AT 512 BYTES EA.)
|
||
DB 0F0H ;MEDIA DESCRIPTOR, INITIALLY F0H.
|
||
DW 2 ;NUMBER OF FAT SECTORS
|
||
DW 9 ;SECTOR LIMIT
|
||
DW 2 ;HEAD LIMIT
|
||
DW 0 ;HIDDEN SECTOR COUNT(low)
|
||
dw 0 ;J.K. Hidden sector count (high)
|
||
dw 0 ;J.K. Number sectors (low)
|
||
dw 0 ;J.K. Number sectors (high)
|
||
DB 6 DUP (?)
|
||
TRACK2 DB -1 ;LAST TRACK ACCESSED ON THIS DRIVE
|
||
TIM_LO2 DW -1 ;KEEP THESE TWO CONTIGUOUS (?)
|
||
TIM_HI2 DW -1
|
||
VOLID2 DB "NO NAME ",0 ;VOLUME ID FOR THIS DISK
|
||
VOLSER2 dd 0 ;Current volume serial number from Boot record
|
||
SYSID2 db "FAT12 ",0 ;Current file system id from Boot record
|
||
|
||
EVENB
|
||
BDS3 LABEL WORD
|
||
DD BDS4 ;LINK TO NEXT STRUCTURE
|
||
DB 0 ;INT 13 DRIVE NUMBER
|
||
DB 0 ;LOGICAL DRIVE LETTER
|
||
PUBLIC FDRIVE3
|
||
FDRIVE3 DW 512 ;PHYSICAL SECTOR SIZE IN BYTES
|
||
DB -1 ;SECTORS/ALLOCATION UNIT
|
||
DW 1 ;RESERVED SECTORS FOR DOS
|
||
DB 2 ;NO. ALLOCATION TABLES
|
||
DW 64 ;NUMBER DIRECTORY ENTRIES
|
||
DW 9*40 ;NUMBER SECTORS (AT 512 BYTES EA.)
|
||
DB 00000000B ;MEDIA DESCRIPTOR, INITIALLY 00H.
|
||
DW 2 ;NUMBER OF FAT SECTORS
|
||
DW 9 ;SECTOR LIMIT
|
||
DW 1 ;HEAD LIMIT
|
||
DW 0 ;HIDDEN SECTOR COUNT (low word)
|
||
dw 0 ;J.K. Hidden sector (high)
|
||
dw 0 ;J.K. Number sectors (low)
|
||
dw 0 ;J.K. Number sectors (high)
|
||
DB 0 ; TRUE => LARGE FATS
|
||
OPCNT3 DW 0 ;OPEN REF. COUNT
|
||
DB 3 ;FORM FACTOR
|
||
FLAGS3 DW 0020H ;VARIOUS FLAGS
|
||
; DB 9 DUP (0) ;RESERVED FOR FUTURE USE
|
||
DW 40 ; NUMBER OF CYLINDERS
|
||
; RECOMMENDED BPB FOR DRIVE.
|
||
RECBPB3 DW 512 ;BYTES PER SECTOR
|
||
DB 1 ;SECTORS/ALLOCATION UNIT
|
||
DW 1 ;RESERVED SECTORS FOR DOS
|
||
DB 2 ;NO. ALLOCATION TABLES
|
||
DW 0E0H ;NUMBER DIRECTORY ENTRIES
|
||
DW 9*40 ;NUMBER SECTORS (AT 512 BYTES EA.)
|
||
DB 0F0H ;MEDIA DESCRIPTOR, INITIALLY F0H.
|
||
DW 2 ;NUMBER OF FAT SECTORS
|
||
DW 9 ;SECTOR LIMIT
|
||
DW 2 ;HEAD LIMIT
|
||
DW 0 ;HIDDEN SECTOR COUNT(low)
|
||
dw 0 ;J.K. Hidden sector count (high)
|
||
dw 0 ;J.K. Number sectors (low)
|
||
dw 0 ;J.K. Number sectors (high)
|
||
DB 6 DUP (?)
|
||
TRACK3 DB -1 ;LAST TRACK ACCESSED ON THIS DRIVE
|
||
TIM_LO3 DW -1 ;KEEP THESE TWO CONTIGUOUS (?)
|
||
TIM_HI3 DW -1
|
||
VOLID3 DB "NO NAME ",0 ;VOLUME ID FOR THIS DISK
|
||
VOLSER3 dd 0 ;Current volume serial number from Boot record
|
||
SYSID3 db "FAT12 ",0 ;Current file system id from Boot record
|
||
|
||
EVENB
|
||
BDS4 LABEL WORD
|
||
DW -1 ;LINK TO NEXT STRUCTURE
|
||
DW CODE
|
||
DB 0 ;INT 13 DRIVE NUMBER
|
||
DB 0 ;LOGICAL DRIVE LETTER
|
||
PUBLIC FDRIVE4
|
||
FDRIVE4 DW 512 ;PHYSICAL SECTOR SIZE IN BYTES
|
||
DB -1 ;SECTORS/ALLOCATION UNIT
|
||
DW 1 ;RESERVED SECTORS FOR DOS
|
||
DB 2 ;NO. ALLOCATION TABLES
|
||
DW 64 ;NUMBER DIRECTORY ENTRIES
|
||
DW 9*40 ;NUMBER SECTORS (AT 512 BYTES EA.)
|
||
DB 00000000B ;MEDIA DESCRIPTOR, INITIALLY 00H.
|
||
DW 2 ;NUMBER OF FAT SECTORS
|
||
DW 9 ;SECTOR LIMIT
|
||
DW 1 ;HEAD LIMIT
|
||
DW 0 ;HIDDEN SECTOR COUNT (low word)
|
||
dw 0 ;J.K. Hidden sector (high)
|
||
dw 0 ;J.K. Number sectors (low)
|
||
dw 0 ;J.K. Number sectors (high)
|
||
DB 0 ; TRUE => LARGE FATS
|
||
OPCNT4 DW 0 ;OPEN REF. COUNT
|
||
DB 3 ;FORM FACTOR
|
||
FLAGS4 DW 0020H ;VARIOUS FLAGS
|
||
; DB 9 DUP (0) ;RESERVED FOR FUTURE USE
|
||
DW 40 ; NUMBER OF CYLINDERS
|
||
; RECOMMENDED BPB FOR DRIVE.
|
||
RECBPB4 DW 512 ;BYTES PER SECTOR
|
||
DB 1 ;SECTORS/ALLOCATION UNIT
|
||
DW 1 ;RESERVED SECTORS FOR DOS
|
||
DB 2 ;NO. ALLOCATION TABLES
|
||
DW 0E0H ;NUMBER DIRECTORY ENTRIES
|
||
DW 9*40 ;NUMBER SECTORS (AT 512 BYTES EA.)
|
||
DB 0F0H ;MEDIA DESCRIPTOR, INITIALLY F0H.
|
||
DW 2 ;NUMBER OF FAT SECTORS
|
||
DW 9 ;SECTOR LIMIT
|
||
DW 2 ;HEAD LIMIT
|
||
DW 0 ;HIDDEN SECTOR COUNT(low)
|
||
dw 0 ;J.K. Hidden sector count (high)
|
||
dw 0 ;J.K. Number sectors (low)
|
||
dw 0 ;J.K. Number sectors (high)
|
||
DB 6 DUP (?)
|
||
TRACK4 DB -1 ;LAST TRACK ACCESSED ON THIS DRIVE
|
||
TIM_LO4 DW -1 ;KEEP THESE TWO CONTIGUOUS (?)
|
||
TIM_HI4 DW -1
|
||
VOLID4 DB "NO NAME ",0 ;VOLUME ID FOR THIS DISK
|
||
VOLSER4 dd 0 ;Current volume serial number from Boot record
|
||
SYSID4 db "FAT12 ",0 ;Current file system id from Boot record
|
||
|
||
BPBTYPE STRUC
|
||
SPF DB ?
|
||
SPT DB ?
|
||
CDIRE DB ?
|
||
CSEC DW ?
|
||
SPA DB ?
|
||
CHEAD DB ?
|
||
BPBTYPE ENDS
|
||
PUBLIC SM92
|
||
SM92 BPBTYPE <3,9,70H,2*9*80,2,2>
|
||
|
||
;-----------------------------------------------
|
||
;
|
||
; C O N - CONSOLE DEVICE DRIVER
|
||
;
|
||
PUBLIC ALTAH
|
||
ALTAH DB 0 ;SPECIAL KEY HANDLING
|
||
public KEYRD_Func
|
||
KEYRD_Func DB 0 ;AN000; Default is conventional keyboard read
|
||
public KEYSTS_Func
|
||
KEYSTS_Func DB 1 ;AN000; Defualt if conventional keyboard status check.
|
||
|
||
; PUBLIC SAV_SC_INFO ;J.K. 4/29/86 FOR CON$GENIOCTL
|
||
; PUBLIC SAV_SC_MODE
|
||
; PUBLIC SAV_SC_COLORS
|
||
; PUBLIC SAV_SC_WIDTH
|
||
; PUBLIC SAV_SC_LENGTH
|
||
;SAV_SC_INFO LABEL BYTE
|
||
;SAV_SC_MODE DB 0
|
||
;SAV_SC_COLORS DW 0
|
||
;SAV_SC_WIDTH DW 0
|
||
;SAV_SC_LENGTH DW 0 ;J.K. 4/29/86 FOR CON$GENIOCTL
|
||
|
||
;-------------------------------------------------------------
|
||
;
|
||
; P R N - PRINTER DEVICE
|
||
;
|
||
PUBLIC PRINTDEV
|
||
PRINTDEV DB 0 ; INDEX INTO ABOVE ARRAY
|
||
|
||
; THE FOLLOWING VARIABLE CAN BE MODIFIED VIA IOCTL SUB-FUNCTION 16. IN THIS
|
||
; WAY, THE WAIT CAN BE SET TO SUIT THE SPEED OF THE PARTICULAR PRINTER BEING
|
||
; USED. ONE FOR EACH PRINTER DEVICE.
|
||
|
||
EVENB
|
||
PUBLIC WAIT_COUNT
|
||
WAIT_COUNT DW 4 DUP (50H) ; ARRAY OF RETRY COUNTS FOR PRINTER
|
||
|
||
EVENB
|
||
PUBLIC DAYCNT
|
||
DAYCNT DW 0
|
||
|
||
|
||
IF iTEST ;Testing Mode for IBMBIO.
|
||
PUBLIC NUMBUF
|
||
NUMBUF DB 5 DUP (?)
|
||
PUBLIC DIGITS
|
||
DIGITS DB "0123456789ABCDEF"
|
||
PUBLIC FTESTBITS
|
||
;FTESTBITS DW FTESTDISK+FTESTINIT
|
||
FTESTBITS DW fTestDISK
|
||
;ftestbits dw ftestclock
|
||
ENDIF
|
||
|
||
PATHEND 001,BIO
|
||
|