6428 lines
275 KiB
NASM
6428 lines
275 KiB
NASM
PAGE 109,132
|
||
|
||
TITLE MS-DOS 5.0 BIO2.ASM
|
||
|
||
;************************************************************************
|
||
;* *
|
||
;* *
|
||
;* MODULE NAME: BIO2.ASM *
|
||
;* *
|
||
;* *
|
||
;* COPYRIGHT (C) NEC CORPORATION 1990 *
|
||
;* *
|
||
;* NEC CONFIDENTIAL AND PROPRIETARY *
|
||
;* *
|
||
;* All rights reserved by NEC Corporation. *
|
||
;* this program must be used solely for *
|
||
;* the purpose for which it was furnished *
|
||
;* by NEC Corporation. No past of this program *
|
||
;* may be reproduced or disclosed to others, *
|
||
;* in any form, without the prior written *
|
||
;* permission of NEC Corporation. *
|
||
;* Use of copyright notice does not evidence *
|
||
;* publication of this program. *
|
||
;* *
|
||
;************************************************************************
|
||
|
||
;
|
||
; CORRECTION HISTORY
|
||
; 84/11/14
|
||
; 84/11/18 MAKE PRINTER-I/O DEVICE-DRIVER
|
||
; 84/11/19 CORRECT INDIRECT CALLING
|
||
; 85/02/01 CORRECT FOR X2ROM(1/31)
|
||
; 85/02/27 MAKE KANJI DEVICE-DRIVER
|
||
; 85/03/05 BI-MEDIA DEVICE
|
||
; 85/03/28 ADDING B4670-CODE & STUDYING BUFFER FOR BUNSETSU DRIVER
|
||
; 85/04/11 2D MODE SUPPORT
|
||
; 85/05/15 B4670 BPB & VHD INFO. (DATA)
|
||
; 85/05/18 LINMOD ADDR FOR BUNSETSU
|
||
; 85/10/03 ENHANCE FOR DOS 3.XX
|
||
; 85/10/22 UPDATE REVISION
|
||
; 86/09/23
|
||
; 88/3 - 88/5 -- MS-DOS 3.30 --
|
||
;
|
||
; 90/11,12 MS-DOS 5.0
|
||
|
||
BRANCH=0
|
||
|
||
;
|
||
; This file defines the segment structure of the BIOS.
|
||
; It should be included at the beginning of each source file.
|
||
; All further segment declarations in the file can then be done by just
|
||
; by specifying the segment name, with no attribute, class, or align type.
|
||
|
||
datagrp group Bios_Data,Bios_Data_Init
|
||
|
||
Bios_Data segment word public 'Bios_Data'
|
||
Bios_Data ends
|
||
|
||
Bios_Data_Init segment word public 'Bios_Data_Init'
|
||
Bios_Data_Init ends
|
||
|
||
Filler segment para public 'Filler'
|
||
Filler ends
|
||
|
||
Bios_Code segment word public 'Bios_Code'
|
||
Bios_Code ends
|
||
|
||
Filler2 segment para public 'Filler2'
|
||
Filler2 ends
|
||
|
||
SysInitSeg segment word public 'system_init'
|
||
SysInitSeg ends
|
||
|
||
Bios_Data_Init segment word public 'Bios_Data_Init'
|
||
ASSUME CS:DATAGRP,DS:datagrp
|
||
EXTRN INIT:NEAR
|
||
Bios_Data_Init ends
|
||
|
||
Bios_Code segment word public 'Bios_Code'
|
||
ASSUME CS:BIOS_CODE,DS:datagrp
|
||
|
||
EXTRN KBIN:NEAR,KBSTAT:NEAR,KBFLUSH:NEAR,CRTOUT:NEAR,CRTRDY:NEAR
|
||
EXTRN SETDATE:near,SETTIME:near,GETDATE:near
|
||
EXTRN STOP_CHK:NEAR
|
||
EXTRN STOP_CHK_FAR:NEAR
|
||
|
||
|
||
EXTRN DSK_INIT_CODE:NEAR,MEDIA_CHK_CODE:NEAR,GET_BPB_CODE:NEAR
|
||
EXTRN DSK_READ_CODE:NEAR,DSK_WRIT_CODE:NEAR,DSK_WRTV_CODE:NEAR
|
||
;
|
||
EXTRN REINIT_CODE_RTN:NEAR
|
||
;
|
||
; ENHANCE DOS 3.XX
|
||
;
|
||
EXTRN DSK_OPEN_CODE:NEAR,DSK_CLOSE_CODE:NEAR,DSK_REMOVABLE_CODE:NEAR
|
||
;
|
||
EXTRN BELRTN:NEAR,D_MCONV:NEAR,HEXCHK:NEAR
|
||
|
||
EXTRN Generic$IOCTL_CODE:NEAR
|
||
EXTRN IOCTL$GetOwn_CODE:NEAR
|
||
EXTRN IOCTL$SetOwn_CODE:NEAR
|
||
EXTRN IOCTL_SUPPORT_QUERY_CODE:NEAR
|
||
|
||
EXTRN KBIN_FAR:NEAR,KBSTAT_FAR:NEAR,KBFLUSH_FAR:NEAR
|
||
EXTRN CRTOUT_FAR:NEAR,CRTRDY_FAR:NEAR
|
||
EXTRN HEXCHK_FAR:NEAR
|
||
EXTRN D_MCONV_FAR:NEAR
|
||
EXTRN BELRTN_FAR:NEAR
|
||
|
||
EXTRN COPY_INT_CODE:NEAR
|
||
EXTRN INT_TRAP_CODE:NEAR
|
||
EXTRN STOP_INT_CODE:NEAR
|
||
EXTRN INT_29_CODE:NEAR
|
||
EXTRN EXTBIOS_CODE:NEAR
|
||
|
||
EXTRN HD_ENTI_CODE:NEAR
|
||
EXTRN EXFNC_START_CODE:NEAR
|
||
EXTRN CRTBIOS_START_CODE:NEAR
|
||
EXTRN NEW_1A_ENT_CODE:NEAR
|
||
EXTRN INT_1CH_CODE:NEAR
|
||
EXTRN TIM_INT_CODE:NEAR
|
||
EXTRN NEW_1B_INT_CODE:NEAR
|
||
|
||
Bios_Code ends
|
||
|
||
SysInitSeg segment word public 'system_init'
|
||
assume cs:sysinitseg
|
||
extrn FTryToMovDOSHi:far
|
||
public SI_start
|
||
SI_start:
|
||
SysInitSeg ends
|
||
|
||
Bios_data segment word public 'Bios_data'
|
||
ASSUME CS:DATAGRP,DS:DATAGRP
|
||
|
||
PUBLIC BIOS_SEG ;90/12/25
|
||
|
||
PUBLIC REVISION
|
||
PUBLIC VRAMSEG
|
||
PUBLIC EXMM_SIZE ;88/03/31
|
||
|
||
PUBLIC STRATEGY,DSK_INT
|
||
PUBLIC EXIT,BUS_EXIT,ERR_EXIT,EXITRF
|
||
PUBLIC EXITRTN
|
||
PUBLIC DRV_NUM,DEV_TBL,PTRSAV
|
||
|
||
PUBLIC BIOS_FLAG
|
||
|
||
PUBLIC MEM_SW1,MEM_SW2,MEM_SW3,MEM_SW4,MEM_SW5,MEM_SW6,MEM_SW7
|
||
|
||
PUBLIC LPTABLE,DSK5_TYP,CBIOS_FLAG
|
||
PUBLIC HD_CAP,INT1B_OFST,INT1B_SGMT
|
||
|
||
PUBLIC N8FD,N5FD,N5HD,N5,HD_NO,D_TYP
|
||
PUBLIC INT1E_OFST,INT1E_SGMT,INT1F_OFST,INT1F_SGMT
|
||
|
||
PUBLIC EXT_ROM,LD_ULD_PTR,PRN_INF
|
||
|
||
PUBLIC IDXR_FLG,SEG_DOS,TRG_DRV,DIC_NAME
|
||
|
||
PUBLIC SFTJISMOD,MODMARK1,MODMARK2
|
||
|
||
PUBLIC HDIO_FLG
|
||
|
||
PUBLIC CONOUT,LISTOUT,S_R8
|
||
PUBLIC CONOUT_FAR
|
||
|
||
PUBLIC SNG_DRV,SNGDRV_FLG
|
||
|
||
PUBLIC SYS_500,SYS_501
|
||
|
||
|
||
PUBLIC P_FLAG,FKYCNT,FKYPTR,LINMOD,CRTMOD,HEXMOD,HEXWRK,KBH_ADR
|
||
|
||
PUBLIC ESCBUF,ESCPTR,ESCSUBRTN,ESCPOSSAVE,ESCCNT,ESCPRM
|
||
|
||
PUBLIC SRMFLG,ESCATRSAVE,ESCCPRBUF,ESCCPRLIN,ESCCPRCOL
|
||
|
||
PUBLIC KANJICNT,K1STSAV,WRAPMOD,ROLSW,NULCHR,ENDLINE,CSRSW
|
||
|
||
PUBLIC FKYSW,CURLIN,CURCOL,DEFATTR,CURATTR,ROLTOP,WAITCNT
|
||
|
||
PUBLIC FKYD_KCNT,FKYD_K1SAV
|
||
|
||
PUBLIC X_PAGE_FLAG,KANJI_MODE,FKY_BUFFER,KBGLIN
|
||
|
||
PUBLIC DSK_BUF,KBKNJ_FLG,TEMPB1_CNT,KBINP_CNT
|
||
|
||
PUBLIC BIDTBL,BIDTBL5,PREDNST,PREDENS5
|
||
|
||
PUBLIC PUA,PWINF,FSW5,FSW8
|
||
|
||
PUBLIC KDRV_FLG,AIRST,OPMOD
|
||
|
||
PUBLIC SNRST1,SAVEAL,OPMOD5
|
||
|
||
PUBLIC VT_OFFSET,VT_LAST,VBPB
|
||
;--------------------------------------------------------- 88/05/19 --
|
||
; PUBLIC VOLTABLE
|
||
;---------------------------------------------------------------------
|
||
PUBLIC BUSY ;DOS 3.XX
|
||
|
||
PUBLIC REFCNT,MEDIABYT,BYTPSEC ;DOS 3.XX
|
||
|
||
PUBLIC XPORT_FLAG ;DOS 3.XX
|
||
PUBLIC VSYS_FLAG
|
||
|
||
PUBLIC SVBPS,VOLWORK
|
||
|
||
PUBLIC CTRLCMD,PR_RATIO ;86-08-21(PR)
|
||
|
||
PUBLIC COPY_FLAG,COPYSTOP,STOP_FLAG
|
||
|
||
PUBLIC STACK_TOP
|
||
PUBLIC DSK_BUF2
|
||
PUBLIC CMD_ERR
|
||
PUBLIC FBIGFAT
|
||
PUBLIC FBIGFATS
|
||
PUBLIC CURATTR2,DEFATTR2,ATRSAVE2
|
||
|
||
PUBLIC SEG_DOS,CONSOLE_TABLE,AUXILIARY_TABLE,JAPAN_TABLE
|
||
PUBLIC PRINTER_TABLE,OUT_NXT_PTR
|
||
|
||
PUBLIC COPY_INT,INT_TRAP,STOP_INT
|
||
PUBLIC INT_29,EXTBIOS,HD_ENTI,EXFNC_START
|
||
PUBLIC CRTBIOS_START,NEW_1A_ENT
|
||
PUBLIC INT_1CH,TIM_INT,NEW_1B_INT
|
||
|
||
PUBLIC RE_INIT
|
||
|
||
ESCBUFSIZ EQU 20
|
||
|
||
BIOSSEG EQU 0060H ;BIOS SEGMENT
|
||
|
||
IODAT STRUC
|
||
CMDLEN DB ? ;LENGTH OF COMMAND
|
||
UNIT DB ? ;SUB UNIT SPECIFIER
|
||
CMD DB ? ;COMMAND CODE
|
||
STATUS DW ? ;STATUS
|
||
DB 8 DUP(?)
|
||
MEDIA DB ? ;MEDIA DESCRIPTOR
|
||
TRANS DD ? ;TRANSFER ADDRESS
|
||
COUNT DW ? ;COUNT OF BLOCKS OR CHARACTERS
|
||
START DW ? ;FIRST BLOCK TO TRANSFER
|
||
;------------------------------------------------DOS5 90/12/14-----------
|
||
VOLID DD ?
|
||
START_L DW ? ;FIRST BLOCK TO TRANSFER
|
||
START_H DW ? ;FIRST BLOCK TO TRANSFER
|
||
;------------------------------------------------------------------------
|
||
IODAT ENDS
|
||
|
||
;------------------------------------------------DOS5 90/12/14-----------
|
||
BPB_SIZE EQU 17
|
||
HDDSK_SIZE EQU BPB_SIZE*4
|
||
;------------------------------------------------------------------------
|
||
|
||
;------------------------------------------------DOS5 91/01/18-----------
|
||
;** BIOS PARAMETER BLOCK DEFINITION
|
||
;
|
||
; The BPB contains information about the disk structure. It dates
|
||
; back to the earliest FAT systems and so FAT information is
|
||
; intermingled with physical driver information.
|
||
;
|
||
; A boot sector contains a BPB for its device; for other disks
|
||
; the driver creates a BPB. DOS keeps copies of some of this
|
||
; information in the DPB.
|
||
;
|
||
; The BDS structure contains a BPB within it.
|
||
;
|
||
|
||
A_BPB STRUC
|
||
BPB_BYTESPERSECTOR DW ?
|
||
BPB_SECTORSPERCLUSTER DB ?
|
||
BPB_RESERVEDSECTORS DW ?
|
||
BPB_NUMBEROFFATS DB ?
|
||
BPB_ROOTENTRIES DW ?
|
||
BPB_TOTALSECTORS DW ?
|
||
BPB_MEDIADESCRIPTOR DB ?
|
||
BPB_SECTORSPERFAT DW ?
|
||
BPB_SECTORSPERTRACK DW ?
|
||
BPB_HEADS DW ?
|
||
BPB_HIDDENSECTORS DW ?
|
||
DW ?
|
||
BPB_BIGTOTALSECTORS DW ?
|
||
DW ?
|
||
DB 6 DUP(?) ; NOTE: many times these
|
||
; ; 6 bytes are omitted
|
||
; ; when BPB manipulations
|
||
; ; are performed!
|
||
A_BPB ENDS
|
||
|
||
|
||
|
||
|
||
bds_struc struc
|
||
bds_link dd 0ffffh ; link to next bds
|
||
bds_drivenum db 80 ; int 13 drive number
|
||
bds_drivelet db 3 ; dos drive number
|
||
|
||
; We want to embed a BPB declaration here, but we can't initialize
|
||
; it properly if we do, so we duplicate the byte/word/dword architecture
|
||
; of the BPB declaration.
|
||
|
||
;BDS_BPB db size BPBSTRUC dup (?) ; actual BPB
|
||
BDS_BPB dw 512 ; BPB_BYTESPERSECTOR
|
||
db 1 ; BPB_SECTORSPERCLUSTER
|
||
dw 1 ; BPB_RESERVEDSECTORS
|
||
db 2 ; BPB_NUMBEROFFATS
|
||
dw 16 ; BPB_ROOTENTRIES
|
||
dw 0 ; BPB_TOTALSECTORS
|
||
db 0f8h ; BPB_MEDIADESCRIPTOR
|
||
dw 1 ; BPB_SECTORSPERFAT
|
||
dw 0 ; BPB_SECTORSPERTRACK
|
||
dw 0 ; BPB_HEADS
|
||
dd 0 ; BPB_HIDDENSECTORS
|
||
dd 0 ; BPB_BIGTOTALSECTORS
|
||
|
||
bds_fatsiz db 0 ; flags...
|
||
bds_opcnt dw 0 ; open ref. count
|
||
bds_formfactor db 3 ; form factor index
|
||
bds_flags dw 0020h ; various flags
|
||
bds_ccyln dw 40 ; max number of cylinders
|
||
|
||
BDS_RBPB db size A_BPB dup (0) ; recommended BPB
|
||
|
||
bds_track db -1 ; last track accessed on drive
|
||
bds_tim_lo dw 1 ; time of last access. keep
|
||
bds_tim_hi dw 0 ; these contiguous.
|
||
bds_volid db "NO NAME ",0 ; volume id of medium
|
||
bds_vol_serial dd 0 ;current volume serial number from boot record
|
||
bds_filesys_id db "FAT12 ",0 ; current file system id from boot record
|
||
bds_struc ends
|
||
|
||
|
||
; values for various flags in bds_flags.
|
||
|
||
fnon_removable equ 01h ;for non-removable media
|
||
fchangeline equ 02h ;if changeline supported on drive
|
||
return_fake_bpb equ 04h ; when set, don't do a build bpb
|
||
; just return the fake one
|
||
good_tracklayout equ 08h ; the track layout has no funny sectors
|
||
fi_am_mult equ 10h ;if more than one logical for this physical
|
||
fi_own_physical equ 20h ;signify logical owner of this physical
|
||
fchanged equ 40h ;indicates media changed
|
||
set_dasd_true equ 80h ; set dasd before next format
|
||
fchanged_by_format equ 100h ;media changed by format
|
||
unformatted_media equ 200h ;an001; fixed disk only
|
||
;------------------------------------------------------------------------
|
||
|
||
|
||
PAGE
|
||
;************************************************************************
|
||
;* *
|
||
;* *
|
||
;* START OF IO.SYS VARIABLE *
|
||
;* *
|
||
;* *
|
||
;************************************************************************
|
||
BIO2_START:
|
||
|
||
ORG 0
|
||
|
||
JMP INIT ;INITIALIZE
|
||
|
||
;
|
||
;NIPPON GO NYURYOKU ENTRANCE AND EXIT FOR AP
|
||
;
|
||
JMP KB_KANJI_ENT
|
||
JMP KB_KANJI_EXT
|
||
|
||
;
|
||
; RESERVED 0009H --> 0019H
|
||
;
|
||
FREE_0 EQU 20H-($-BIO2_START)
|
||
DB FREE_0 DUP(0)
|
||
ORG 14h
|
||
public ntvdmstate
|
||
ntvdmstate dd 0
|
||
ORG 20h
|
||
public IOSYS_REV, MINOR_REV
|
||
;IOSYS_REV dw 0004h ;3.3C IO.SYS revision
|
||
;<patch BIOS50-P01>
|
||
;IOSYS_REV dw 0101h ;5.0 IO.SYS revision
|
||
;<patch BIOS50-P12>
|
||
;IOSYS_REV dw 0102h ;5.0A IO.SYS revision DOS5A 92/04/07
|
||
;<patch BIOS50-P33>
|
||
IOSYS_REV dw 0104h ;5.0A IO.SYS revision DOS5A 93/02/02
|
||
;----------------------------------------------- DOS5 92/02/04 -------
|
||
;<patch BIOS50-P12>
|
||
;MINOR_REV db 01h ;IO.SYS minor revision
|
||
;<patch BIOS50-P09>
|
||
;<patch BIOS50-P30>
|
||
;MINOR_REV db 02h ;IO.SYS minor revision
|
||
;<patch BIOS50-P11>
|
||
;<patch BIOS50-P31>
|
||
;MINOR_REV db 03h ;IO.SYS minor revision
|
||
;<patch BIOS50-P33>
|
||
MINOR_REV db 04h ;IO.SYS minor revision
|
||
;---------------------------------------------------------------------
|
||
|
||
;------------------------------------------------------ DOS5 91/05/08 -
|
||
|
||
public dosdatasg
|
||
dosdatasg dw 0
|
||
bios_i2f proc far
|
||
db 0eah
|
||
dd int_2f
|
||
bios_i2f endp
|
||
romstartaddr dw 0
|
||
altah db 0 ;special key handling
|
||
|
||
ORG 2EH
|
||
BIOS_SEG DW BIOS_CODE
|
||
|
||
ORG 30H
|
||
AUTO_FLAG DB ? ;Interface area for EMS maintainance
|
||
;------------------------------------------------------ 88/03/31 DOS3.3
|
||
ORG 31H
|
||
EXMM_SIZE DB 0 ;EXTENDED MEMORY SIZE SAVE
|
||
;------------------------------------------------------- 011 ---------
|
||
; ORG 32H ;88/03/31
|
||
VRAMSEG DW 0A000H ;VIDEO RAM SEGMENT
|
||
DEB_FLG DB 0 ;FOR DEBUG (IO.SYS)
|
||
DRVFLG DB 0 ;ASSIGN COMMAND USE
|
||
;---------------------------------------------------------------------
|
||
ORG 36H
|
||
|
||
SYS_500 DB 0 ;COPY OF 0000:0500
|
||
SYS_501 DB 0 ;COPY OF 0000:0501
|
||
|
||
SNGDRV_FLG DB 0
|
||
SNG_DRV DB 0 ;LAST I/O ON SNGLE DRIVE 0:A 1:B
|
||
|
||
DIC_NAME DB 'KNJDIC SYS' ;DICTIONARY NAME
|
||
TRG_DRV DB 0 ;DEFAULT DRIVE
|
||
|
||
INT1E_OFST DW 0
|
||
INT1E_SGMT DW 0
|
||
INT1F_OFST DW 0
|
||
INT1F_SGMT DW 0
|
||
|
||
SEG_DOS DW 0 ;MSDOS.SYS SEGMENT ADDRESS
|
||
|
||
LD_ULD_PTR DW 0,0 ;POINTER FOR ADDDRV/DELDRV WORK
|
||
;FOR DYNAMIC INSTALL/DEINSTALL
|
||
|
||
;************************************************
|
||
;* *
|
||
;* DEVICE ASSIGN TABLE *
|
||
;* *
|
||
;************************************************
|
||
;
|
||
ASS_CONIN DB 0 ;DEFAULT KEYBOARD
|
||
ASS_READER DB 1 ; RS232C
|
||
ASS_CONOUT DB 1,0,0,0,0,0 ; CRT
|
||
ASS_LISTOUT DB 1,1,0,0,0,0 ; PRINTER
|
||
ASS_PUNCH DB 1,2,0,0,0,0 ; RS232C
|
||
|
||
;************************************************
|
||
;* *
|
||
;* COPY OF MEMORY SWITCH 1-4 *
|
||
;* *
|
||
;************************************************
|
||
;
|
||
MEM_SW1 DB 0
|
||
MEM_SW2 DB 0
|
||
MEM_SW3 DB 0
|
||
MEM_SW4 DB 0
|
||
|
||
;************************************************
|
||
;* *
|
||
;* LOGICAL DRIVE --> DA/UA TABLE *
|
||
;* *
|
||
;************************************************
|
||
;
|
||
LPTABLE LABEL BYTE ;LOGICAL/PHYSICAL DRIVE CONVERT
|
||
DB 0,0,0,0,0,0,0,0 ;DRIVE "A:" - "P:"
|
||
DB 0,0,0,0,0,0,0,0 ;
|
||
|
||
DSK5_TYP DB 4,4,4,4 ;5"2DD DISK TYPE
|
||
; 0:1D(8)
|
||
; 1:1D(9)
|
||
; 2:2D(8)
|
||
; 3:2D(9)
|
||
; 4:2DD(8)
|
||
; 5:2DD(9)
|
||
|
||
CBIOS_FLAG DB 00011100B ;DISK ACCESS FLAG
|
||
; IIII+-------- 5"FD(8031) ACCESS NOT USED
|
||
; III+--------- 5"FD(8031) SEC/TRK READ
|
||
; II+---------- 5"HD ACCESS
|
||
; I+----------- 8"FD ACCESS
|
||
; +------------ 5"FD(9831) ACCESS
|
||
|
||
;************************************************
|
||
;* *
|
||
;* REVISION CODE *
|
||
;* *
|
||
;************************************************
|
||
;
|
||
REVISION DB 11110000B ;9800 3.10=0B0H
|
||
; IIII +-------- HARD MODE
|
||
; IIII 1:HIRESOLUTION /0:NORMAL
|
||
; III+------------ DRIVER INSTALLABLE
|
||
; III 1:INSTALLABLE /0:NOT
|
||
; II+------------- OS VERSION(2)
|
||
; II 1:3.10 /0:1.25,2.11
|
||
; I+-------------- CTRL+F<>KEY
|
||
; I 1:USE /0:NOT
|
||
; +--------------- OS VERSION
|
||
; 1:VER.2.11 /0:VER.1.25
|
||
|
||
|
||
HD_CAP DB 0,0 ;5"HD CAPACITY (MS-DOS PART)
|
||
|
||
HD_INT_OFFSET DW OFFSET HD_ENTI ;INT B1H (HD BIOS) ENTRY
|
||
TRP_OFFSET DW OFFSET INT_TRAP ;INTERRUPT TRAP ENTRY
|
||
|
||
PRN_INF DB 0,66H ;PRINTER INFO. (NOT USED)
|
||
|
||
;************************************************
|
||
;* *
|
||
;* CONSOLE CONTROL *
|
||
;* ( TOP OF CONSOLE TABLE ) *
|
||
;* *
|
||
;************************************************
|
||
|
||
CONSOLE_TABLE LABEL FAR
|
||
|
||
SFTJISMOD DB 1 ;CHARACTER MODE
|
||
; 0:GRAPH /1:KANJI
|
||
MODMARK1 DB ' ' ;' ':KANJI /'g':GRAPH
|
||
MODMARK2 DB ' ' ;' ':FUNC /'*':SFT-FUNC
|
||
|
||
;************************************************
|
||
;* *
|
||
;* COPY OF MEMORY SWITCH 5-7 *
|
||
;* *
|
||
;************************************************
|
||
;
|
||
MEM_SW5 DB 0
|
||
MEM_SW6 DB 0
|
||
MEM_SW7 DB 0
|
||
|
||
;************************************************
|
||
;* *
|
||
;* DISK INFO. *
|
||
;* ( TOP OF DISK TABLE ) *
|
||
;* *
|
||
;************************************************
|
||
|
||
PUBLIC COMP_HDOFST_N,ALC_TYP
|
||
|
||
DISK_TABLE LABEL FAR
|
||
|
||
INT1B_OFST DW 0 ;INT 1BH ADDRESS
|
||
INT1B_SGMT DW 0 ; ( FOR N10 ONLY )
|
||
;
|
||
COMP_HDOFST_N DW 0,0 ;HD PARTITION START
|
||
DW 0,0 ; ( FOR COMPATIBLE )
|
||
LAST_SEC DW 0,0 ;
|
||
|
||
DW 0,0 ;RESERVED
|
||
;--------------------------------------------------------------------
|
||
STOP_FLAG DB 0 ;STOP KEY INDICATE
|
||
COPY_FLAG DB 0 ;HARD COPY INDICATE
|
||
COPYSTOP DB 0 ;HARD COPY STOP FLAG
|
||
DB 0 ;RESERVED
|
||
;--------------------------------------------------------------------
|
||
EXT_ROM DW 0,0 ;EXTENDED ROM CALL
|
||
; ( FOR N10 ONLY )
|
||
|
||
N8FD DB 0 ;NUMBER OF 1MB DISK
|
||
N5FD DB 0 ;NUMBER OF 640KB DISK
|
||
N5HD DB 0 ;NUMBER OF HARD DISK
|
||
N5 DB 0 ;NUMBER OF 160/320KB DISK
|
||
|
||
IDXR_FLG DB 00000000B ;DICTIONARY I/O CONTROL FLAGS
|
||
; I II
|
||
; I I+-------- FORCE TO READ INDEX
|
||
; I +--------- FORCE TO READ PAGE
|
||
; +--------------- WRITE PAGE CONTROL
|
||
|
||
D_TYP DB 0 ;BOOT DISK TYPE
|
||
;0:8"FD 1:5"2DD 2:5"HD
|
||
|
||
HDIO_FLG DB 0 ;HD ACCESS FLAG
|
||
HD_NO DB 0 ;?
|
||
BIOS_FLAG DB 0 ;
|
||
|
||
ALC_TYP DB 0 ;DRIVE ALLOCATION TYPE(always 0)
|
||
|
||
;************************************************
|
||
;* *
|
||
;* [KANJI] WORKING FIELD *
|
||
;* (TOP OF KANJI TABLE ) *
|
||
;* *
|
||
;************************************************
|
||
|
||
ORG 0B6H
|
||
|
||
JAPAN_TABLE LABEL FAR
|
||
|
||
KBKNJ_FLG DB 00000000B ;KANJI INPUT MODE FLAG
|
||
; IIIIIII+-------- 0:ZENKAKU /1:HANKAKU
|
||
; IIIIII+--------- 0:KATAKANA /1:HIRAGANA
|
||
; IIIII+---------- RFU
|
||
; IIII+----------- 0: /1:XFER MODE
|
||
; III+------------ RFU
|
||
; II+------------- RFU
|
||
; I+-------------- 0:DIRECT MODE /1:INDIRECT MODE
|
||
; +--------------- 0:ANK MODE /1:NIPPONGO MODE
|
||
|
||
KANJI_MODE DB 0 ;0B7H
|
||
KBINP_CNT DB 0 ;0B8H
|
||
KBGLIN DB 0 ;0B9H
|
||
|
||
X_PAGE_FLAG DB 00000000B ;PAGE CONRTOL
|
||
; III
|
||
; II+-------- NEXT PAGE NOT FOUND
|
||
; I+--------- PREVIOUS PAGE NOT FOUND
|
||
; +---------- WORD NOT FOUND
|
||
|
||
TEMPB1_CNT DB 0 ;0BBH
|
||
|
||
FREE_1 EQU 0C0H-($-BIO2_START) ;mustn't use
|
||
DB FREE_1 DUP(0) ;
|
||
|
||
ORG 0C0H
|
||
FKY_BUFFER DB 62 DUP(?) ;STRING BUFF (SHORT)
|
||
; DEFINE BYTES
|
||
ORG 0C0H
|
||
WFKY_BUFFER DW 31 DUP(?) ;STRING BUFF (SHORT)
|
||
; DEFINE WORD
|
||
|
||
FKY_BUF_ADR EQU OFFSET FKY_BUFFER
|
||
|
||
ORG 0FEH
|
||
KNJ_FNC_NO DW 0
|
||
KNJ_KBH_NO DW 0
|
||
|
||
;************************************************
|
||
;* *
|
||
; [KEYBOARD] WORKING FIELD *
|
||
;* *
|
||
;************************************************
|
||
FREE_2 EQU 103H-($-BIO2_START) ;mustn't use
|
||
DB FREE_2 DUP(0) ;
|
||
|
||
ORG 103H
|
||
FKYCNT DB 0 ;FNC KEY COUNTER
|
||
FKYPTR DW FKYTBL ;FNC KEY POINTER
|
||
HEXMOD DB 0 ;HEX MODE
|
||
P_FLAG DB 0 ;^P FLAG
|
||
CRTMOD DB 0 ;CRT TYPE
|
||
HEXWRK DB 0 ;HEX ROUTINE USE
|
||
KBH_ADR DW 0 ;ADDR
|
||
|
||
ORG 10CH
|
||
CTRLCMD DB 00000000B ;CTRL-FUNC FLAG
|
||
; I+-------- 1:CTRL-F.01-F.10 IS SOFT KEY
|
||
; +--------- 1:CTRL-XFER IS SOFT KEY
|
||
|
||
;************************************************
|
||
;* *
|
||
; [CONSOLE] WORKING FIELD *
|
||
;* *
|
||
;************************************************
|
||
;
|
||
FREE_3 EQU 110H-($-BIO2_START)
|
||
DB FREE_3 DUP(0)
|
||
ORG 110H
|
||
CURLIN DB 0 ;CURRENT LINE
|
||
FKYSW DB 1 ;FUNC_KEY SWITCH
|
||
; 0:NOT DISP /1:FUNC /2:SHIFT+FUNC
|
||
ENDLINE DB 23 ;END LINE NUMBER (DEF=23)
|
||
LINMOD DB 1 ;DISPLAY LINE MODE
|
||
; (H) 0:25LINE /1:31LINE
|
||
; (N) 0:20LINE /1:25LINE
|
||
DEFATTR DB 81H ;DEFAULT ATTRIBUTE
|
||
|
||
KANJICNT DB 0 ;1: 0: 115H
|
||
K1STSAV DB 0 ;KANJI FIRST DATA DAVE
|
||
WRAPMOD DB 0 ;END OF LINE MODE
|
||
; 1:DISCARD /0:WRAP
|
||
ROLSW DB 0 ;ROLL UP SPEED,
|
||
NULCHR DW 0020H ;NULL CHARACER (SPACE)
|
||
CSRSW DB 1 ;CURSOR SWITCH
|
||
; 0:OFF /1:ON
|
||
CURCOL DB 0 ;CURRENT COLUMN
|
||
CURATTR DB 81H ;CURRENT ATRIBUTE
|
||
ROLTOP DB 0 ;TOP OF SCROLL LINE
|
||
WAITCNT DW 1 ;WAIT COUNT FOR SCROLLUP
|
||
|
||
FKYD_KCNT DB 0
|
||
FKYD_K1SAV DB 0
|
||
DB 0 ;FREE
|
||
|
||
ORG 124H
|
||
ESCSUBRTN DW 0 ;ESC SUBROUTINE ADDRESS
|
||
ESCPOSSAVE DW 0
|
||
ESCCNT DB 0 ;COUNTER
|
||
ESCPRM DB 1 ;PARAMETER COUNT AREA
|
||
SRMFLG DB 0 ;SET/RESET MODE FLAG (IN ESCVT)
|
||
ESCATRSAVE DB 81H
|
||
ESCCPRBUF DB 1BH,'[' ;CSI
|
||
ESCCPRLIN DW 0 ;12EH
|
||
DB ';'
|
||
ESCCPRCOL DW 0 ;COLUMN
|
||
DB 'R'
|
||
|
||
ORG 134H
|
||
ESCPTR DW ESCBUF ;POINTER
|
||
;---------------------------------------------------------------------------
|
||
;************************************************
|
||
;* *
|
||
;* COMPATIBILITY AREA *
|
||
;* *
|
||
;************************************************
|
||
|
||
PUBLIC CURDRV,EXTSW
|
||
PUBLIC ERROR_FLG,AUT_LEX
|
||
|
||
CURDRV DB 0 ;CURRENT DRIVE (FOR COMPATIBLITY)
|
||
DB 0,0 ;RFU
|
||
ERROR_FLG DB 0 ;?
|
||
AUT_LEX DB -1 ;SWITCH TO INDICATE AUTO LOG-EXTENT
|
||
EXTSW DB 0 ;LOGICAL EXTENT FLAG (COMPATIBLITY)
|
||
;---------------------------------------------------------------------------
|
||
|
||
CURATTR2 DW 0081H
|
||
DEFATTR2 DW 0081H
|
||
ATRSAVE2 DW 0081H
|
||
|
||
;------------------------------------------------------ DOS5 90/ / -
|
||
public MULTRK_FLAG,EC35_FLAG
|
||
public KEYSTS_FUNC,KEYRD_FUNC
|
||
MULTRK_FLAG DW 0H
|
||
KEYSTS_FUNC DB 0H
|
||
KEYRD_FUNC DB 0H
|
||
EC35_FLAG DB 0H
|
||
|
||
public FreeHMAPtr
|
||
public MoveDOSIntoHMA
|
||
FreeHMAPtr dw -1
|
||
MoveDOSIntoHMA dd sysinitseg:FTryToMovDOSHi
|
||
|
||
|
||
;SR;
|
||
; A communication block has been setup between the DOS and the BIOS. All
|
||
;the data starting from SysinitPresent will be part of the data block.
|
||
;Right now, this is the only data being communicated. It can be expanded
|
||
;later to add more stuff
|
||
;
|
||
public SysinitPresent
|
||
public DemInfoFlag
|
||
SysinitPresent db 0
|
||
DemInfoFlag db 0
|
||
|
||
public inHMA,xms
|
||
inHMA db 0 ; flag indicates we're running from HMA
|
||
xms dd 0 ; entry point to xms if above is true
|
||
|
||
|
||
;A20WasOff db 0 ; M041
|
||
;HMAinprogress db 0
|
||
;----------------------------------------------------------------------
|
||
|
||
;----------------------------------------------- DOS5 92/06/22 -------
|
||
;<patch BIOS50-P22>
|
||
public samedrv
|
||
|
||
samedrv db 0
|
||
;---------------------------------------------------------------------
|
||
|
||
|
||
FREE_4 EQU 160H-($-BIO2_START)
|
||
DB FREE_4 DUP(0)
|
||
|
||
;************************************************
|
||
;* *
|
||
;* [KNJLIO] WORKING FIELD *
|
||
;* *
|
||
;************************************************
|
||
|
||
|
||
ORG 160H
|
||
;--------------------------------------------------------- 90/03/20 --
|
||
; PUBLIC FAT_INF
|
||
;FAT_INF DW 686 DUP(0) ;FAT INFORMATION
|
||
|
||
;************************************************
|
||
; MS-DOS 5.0 *
|
||
; FAR CALL/FAR JUMP TABLE *
|
||
;************************************************
|
||
cdev:
|
||
KBIN_CODERTN DW OFFSET KBIN_FAR
|
||
DW BIOS_CODE
|
||
S0IN_CODERTN DW OFFSET S0IN_FAR
|
||
DW BIOS_CODE
|
||
S1IN_CODERTN DW OFFSET S1IN_FAR
|
||
DW BIOS_CODE
|
||
S2IN_CODERTN DW OFFSET S2IN_FAR
|
||
DW BIOS_CODE
|
||
|
||
KBSTAT_CODERTN DW OFFSET KBSTAT_FAR
|
||
DW BIOS_CODE
|
||
S0STAT_CODERTN DW OFFSET S0STAT_FAR
|
||
DW BIOS_CODE
|
||
S1STAT_CODERTN DW OFFSET S1STAT_FAR
|
||
DW BIOS_CODE
|
||
S2STAT_CODERTN DW OFFSET S2STAT_FAR
|
||
DW BIOS_CODE
|
||
|
||
KBFLUSH_CODERTN DW OFFSET KBFLUSH_FAR
|
||
DW BIOS_CODE
|
||
S0FLUSH_CODERTN DW OFFSET S0FLUSH_FAR
|
||
DW BIOS_CODE
|
||
S1FLUSH_CODERTN DW OFFSET S1FLUSH_FAR
|
||
DW BIOS_CODE
|
||
S2FLUSH_CODERTN DW OFFSET S2FLUSH_FAR
|
||
DW BIOS_CODE
|
||
|
||
CRTOUT_CODERTN DW OFFSET CRTOUT_FAR
|
||
DW BIOS_CODE
|
||
PRNOUT_CODERTN DW OFFSET PRNOUT_FAR
|
||
DW BIOS_CODE
|
||
S0OUT_CODERTN DW OFFSET S0OUT_FAR
|
||
DW BIOS_CODE
|
||
S1OUT_CODERTN DW OFFSET S1OUT_FAR
|
||
DW BIOS_CODE
|
||
S2OUT_CODERTN DW OFFSET S2OUT_FAR
|
||
DW BIOS_CODE
|
||
|
||
CRTRDY_CODERTN DW OFFSET CRTRDY_FAR
|
||
DW BIOS_CODE
|
||
PRNRDY_CODERTN DW OFFSET PRNRDY_FAR
|
||
DW BIOS_CODE
|
||
S0RDY_CODERTN DW OFFSET S0RDY_FAR
|
||
DW BIOS_CODE
|
||
S1RDY_CODERTN DW OFFSET S1RDY_FAR
|
||
DW BIOS_CODE
|
||
S2RDY_CODERTN DW OFFSET S2RDY_FAR
|
||
DW BIOS_CODE
|
||
|
||
CLK_READ_RTN DW OFFSET CLK_READ_CODERTN
|
||
DW BIOS_CODE
|
||
CLK_WRIT_RTN DW OFFSET CLK_WRIT_CODERTN
|
||
DW BIOS_CODE
|
||
|
||
STOP_CHK_RTN DW OFFSET STOP_CHK_FAR
|
||
DW BIOS_CODE
|
||
|
||
HEXCHK_RTN DW OFFSET HEXCHK_FAR
|
||
DW BIOS_CODE
|
||
|
||
D_MCONV_RTN DW OFFSET D_MCONV_FAR
|
||
DW BIOS_CODE
|
||
|
||
BELRTN_RTN DW OFFSET BELRTN_FAR
|
||
DW BIOS_CODE
|
||
|
||
DSK_INIT_DATARTN DW OFFSET DSK_INIT_CODE
|
||
DW BIOS_CODE
|
||
|
||
MEDIA_CHK_DATARTN DW OFFSET MEDIA_CHK_CODE
|
||
DW BIOS_CODE
|
||
|
||
GET_BPB_DATARTN DW OFFSET GET_BPB_CODE
|
||
DW BIOS_CODE
|
||
|
||
DSK_READ_DATARTN DW OFFSET DSK_READ_CODE
|
||
DW BIOS_CODE
|
||
|
||
DSK_WRIT_DATARTN DW OFFSET DSK_WRIT_CODE
|
||
DW BIOS_CODE
|
||
|
||
DSK_WRTV_DATARTN DW OFFSET DSK_WRTV_CODE
|
||
DW BIOS_CODE
|
||
|
||
DSK_OPEN_DATARTN DW OFFSET DSK_OPEN_CODE
|
||
DW BIOS_CODE
|
||
|
||
DSK_CLOSE_DATARTN DW OFFSET DSK_CLOSE_CODE
|
||
DW BIOS_CODE
|
||
|
||
DSK_REMOVABLE_DATARTN DW OFFSET DSK_REMOVABLE_CODE
|
||
DW BIOS_CODE
|
||
|
||
Generic$IOCTL_DATARTN DW OFFSET Generic$IOCTL_CODE
|
||
DW BIOS_CODE
|
||
|
||
IOCTL$GetOwn_DATARTN DW OFFSET IOCTL$GetOwn_CODE
|
||
DW BIOS_CODE
|
||
|
||
IOCTL$SetOwn_DATARTN DW OFFSET IOCTL$SetOwn_CODE
|
||
DW BIOS_CODE
|
||
|
||
IOCTL_SUPPORT_QUERY_DATARTN DW OFFSET IOCTL_SUPPORT_QUERY_CODE
|
||
DW BIOS_CODE
|
||
|
||
INT_TRAP_DATA DW offset INT_TRAP_CODE
|
||
DW BIOS_CODE
|
||
|
||
COPY_INT_DATA DW offset COPY_INT_CODE
|
||
DW BIOS_CODE
|
||
|
||
STOP_INT_DATA DW offset STOP_INT_CODE
|
||
DW BIOS_CODE
|
||
|
||
INT_29_DATA DW offset INT_29_CODE
|
||
DW BIOS_CODE
|
||
|
||
EXTBIOS_DATA DW offset EXTBIOS_CODE
|
||
DW BIOS_CODE
|
||
|
||
HD_ENTI_DATA DW offset HD_ENTI_CODE
|
||
DW BIOS_CODE
|
||
|
||
EXFNC_START_DATA DW offset EXFNC_START_CODE
|
||
DW BIOS_CODE
|
||
|
||
CRTBIOS_START_DATA DW offset CRTBIOS_START_CODE
|
||
DW BIOS_CODE
|
||
|
||
NEW_1A_ENT_DATA DW offset NEW_1A_ENT_CODE
|
||
DW BIOS_CODE
|
||
|
||
INT_1CH_DATA DW offset INT_1CH_CODE
|
||
DW BIOS_CODE
|
||
|
||
TIM_INT_DATA DW offset TIM_INT_CODE
|
||
DW BIOS_CODE
|
||
|
||
NEW_1B_INT_DATA DW offset NEW_1B_INT_CODE
|
||
DW BIOS_CODE
|
||
|
||
REINIT_DATA_RTN DW OFFSET REINIT_CODE_RTN
|
||
DW BIOS_CODE
|
||
|
||
end_BC_entries:
|
||
|
||
;----------------------------------------------- DOS5 91/01/09 -------
|
||
;
|
||
; Data form MODISK.ASM
|
||
;
|
||
PUBLIC MO_HEAD, MO_SECTOR, MAX_PART, VOL_INF_LENGTH
|
||
PUBLIC B_COMMAND, B_FLAG, B_SCSIID, B_LUN, B_LBAVH, B_LBAH
|
||
PUBLIC B_LBAM, B_LBAL, B_DOFFSET, B_DSEGMENT, B_DLENGTH
|
||
PUBLIC B_ODC_STATUS, B_SCSI_STATUS, B_SENSE_KEY, B_SENSE_CODE
|
||
PUBLIC YUKO_UNIT, MO_LPFLG, SUB_UNIT, SUB_ID, MO_DEV_OFFSET
|
||
PUBLIC MO_SUB_OFFSET, READ_V_FLG, READ_LABEL, ERR_STATUS
|
||
PUBLIC LNG_TRNSMO, LNG_PTRNS, BLOCK_TRNS, SEC_PBLOCK, SCSI_FLG
|
||
PUBLIC NSMO, CALLADDR, MO_DEV_LENGTH, MO_DEVICE_TBL
|
||
PUBLIC MO_ADDR_LENGTH, MO_ADDR_TBL, ERR_CODE_TBL
|
||
|
||
PUBLIC PARAMETER, CDB, REMAIN_ADDR, REMAIN_LNG, BUFFER
|
||
|
||
|
||
;****************************************
|
||
;* VOLUM INFORMATION *
|
||
;****************************************
|
||
|
||
;MO_CYLINDER DW 4656 ; <20><><EFBFBD>f<EFBFBD>B<EFBFBD>X<EFBFBD>N<EFBFBD><4E><EFBFBD>u
|
||
MO_HEAD DB 1 ; <20><><EFBFBD>z<EFBFBD>A<EFBFBD>h<EFBFBD><68><EFBFBD>X<EFBFBD>l
|
||
MO_SECTOR DB 64 ;
|
||
|
||
MAX_PART DB 16 ; <20>p<EFBFBD>[<5B>e<EFBFBD>B<EFBFBD>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<5C><>
|
||
VOL_INF_LENGTH DW 32 ; <20>{<7B><><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD>Ǘ<EFBFBD><C797><EFBFBD><EFBFBD><EFBFBD><EFBFBD>P<EFBFBD>e<EFBFBD>[<5B>u<EFBFBD><75><EFBFBD><EFBFBD>
|
||
|
||
;****************************************
|
||
;* COMMAND PACKET FOR MO-BIOS *
|
||
;****************************************
|
||
EVEN
|
||
B_COMMAND DB 00H ; COMMAND
|
||
B_FLAG DB 00H ; COMMAND FLAG
|
||
B_SCSIID DB 00H ; SCSI ID
|
||
B_LUN DB 00H ; SCSI LUN
|
||
B_LBAVH DB 00H ; Logical Block Address Very Hight
|
||
B_LBAH DB 00H ; Logical Block Address Hight
|
||
B_LBAM DB 00H ; Logical Block Address Middle
|
||
B_LBAL DB 00H ; Logical Block Address Low
|
||
B_DOFFSET DW 0000H ; Data Area Pointer Offset
|
||
B_DSEGMENT DW 0000H ; Data Area Pointer Segment
|
||
B_DLENGTH DW 0000H ; Data Area Length
|
||
B_ODC_STATUS DB 00H ; ODC 141 Status
|
||
B_SCSI_STATUS DB 00H ; SCSI Status
|
||
B_SENSE_KEY DB 00H ;
|
||
B_SENSE_CODE DB 00H ;
|
||
B_RESERVE DW 0000H ; RESERVE
|
||
|
||
;****************************************
|
||
;* WORK DATA *
|
||
;****************************************
|
||
YUKO_UNIT DB 04H ; <20>P<EFBFBD><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>u<EFBFBD><75><EFBFBD><EFBFBD><EFBFBD>̗L<CC97><4C><EFBFBD>p<EFBFBD>[<5B>e<EFBFBD>B<EFBFBD>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
MO_LPFLG DB 00H ; <20>f<EFBFBD>o<EFBFBD>C<EFBFBD>X<EFBFBD>ڑ<EFBFBD><DA91><EFBFBD><EFBFBD><EFBFBD>
|
||
SUB_UNIT DB 00H ; <20>T<EFBFBD>u<EFBFBD><75><EFBFBD>j<EFBFBD>b<EFBFBD>g<EFBFBD>ԍ<EFBFBD><D48D>Z<EFBFBD>[<5B>u<EFBFBD>G<EFBFBD><47><EFBFBD>A
|
||
SUB_ID DB 00H ; <20>T<EFBFBD>u<EFBFBD><75><EFBFBD>j<EFBFBD>b<EFBFBD>g<EFBFBD>r<EFBFBD>b<EFBFBD>r<EFBFBD>h-<2D>h<EFBFBD>c<EFBFBD>Z<EFBFBD>[<5B>u<EFBFBD>G<EFBFBD><47><EFBFBD>A
|
||
MO_DEV_OFFSET DW 0000H ; <20><><EFBFBD>Y<EFBFBD><59><EFBFBD>u<EFBFBD>f<EFBFBD>o<EFBFBD>C<EFBFBD>X<EFBFBD>e<EFBFBD>[<5B>u<EFBFBD><75><EFBFBD>g<EFBFBD>d<EFBFBD>`<60>c<EFBFBD>|<7C>C<EFBFBD><43><EFBFBD>^
|
||
MO_SUB_OFFSET DB 00H ; <20><><EFBFBD>Y<EFBFBD><59><EFBFBD>u<EFBFBD><75><EFBFBD><EFBFBD><EFBFBD>h<CE83><68><EFBFBD>C<EFBFBD>u<EFBFBD>ԍ<EFBFBD>
|
||
READ_V_FLG DB 00H ; VOLUM LABEL READ FLG
|
||
READ_LABEL DB 00H ; VOLUM LABEL READ END FLG
|
||
ERR_STATUS DB 00H ; ERR STATUS FOR MS-DOS
|
||
|
||
;****************************************
|
||
;* read write process use data *
|
||
;****************************************
|
||
LNG_TRNSMO DW 0000H ; <20>]<5D><><EFBFBD>v<EFBFBD><76><EFBFBD>_<EFBFBD><5F><EFBFBD>Z<EFBFBD>N<EFBFBD>^<5E><><EFBFBD>@
|
||
LNG_PTRNS DW 0000H ; <20>]<5D><><EFBFBD>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Z<EFBFBD>N<EFBFBD>^<5E><>
|
||
BLOCK_TRNS DW 0000H ; <20>]<5D><><EFBFBD>J<EFBFBD>n<EFBFBD>_<EFBFBD><5F><EFBFBD>Z<EFBFBD>N<EFBFBD>^<5E>ԍ<EFBFBD>
|
||
SEC_PBLOCK DW 0000H ; <20>_<EFBFBD><5F><EFBFBD>Z<EFBFBD>N<EFBFBD>^<5E><><EFBFBD><EFBFBD><EFBFBD>̕<EFBFBD><CC95><EFBFBD><EFBFBD>Z<EFBFBD>N<EFBFBD>^<5E><>
|
||
SCSI_FLG DB 00H ;
|
||
NSMO DB 00H ;
|
||
CALLADDR DW 0000H
|
||
|
||
PAGE
|
||
;****************************************
|
||
;* DEVICE DRIVER SYSTEM INFORMATION *
|
||
;****************************************
|
||
|
||
EVEN
|
||
MO_DEV_LENGTH DW 4 ; <20>P<EFBFBD>f<EFBFBD>o<EFBFBD>C<EFBFBD>X<EFBFBD>Ǘ<EFBFBD><C797>e<EFBFBD>[<5B>u<EFBFBD><75><EFBFBD><EFBFBD>
|
||
MO_DEVICE_TBL DB 32 DUP(00H) ; <20>f<EFBFBD>o<EFBFBD>C<EFBFBD>X<EFBFBD>Ǘ<EFBFBD><C797>e<EFBFBD>[<5B>u<EFBFBD><75> (4Byte*4Pt*2Drv)
|
||
DB 32 DUP(00H) ; RFU(4Byte*4Pt*2Drv)
|
||
|
||
; +-------+-------+-------+-------+
|
||
; | SUB | FLAG | SCSI | RFU |
|
||
; | UNIT# | (AI) | ID | |
|
||
; +-------+-------+-------+-------+
|
||
; 01 - <20>a<EFBFBD>o<EFBFBD>a<EFBFBD>X<EFBFBD>V<EFBFBD>ς<EFBFBD>
|
||
; 02 - <20>a<EFBFBD>o<EFBFBD>a<EFBFBD><61><EFBFBD>X<EFBFBD>V
|
||
;
|
||
;
|
||
EVEN
|
||
MO_ADDR_LENGTH DW 12 ; <20>P<EFBFBD>{<7B><><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD>A<EFBFBD>h<EFBFBD><68><EFBFBD>X<EFBFBD>Ǘ<EFBFBD><C797>e<EFBFBD>[<5B>u<EFBFBD><75><EFBFBD><EFBFBD>
|
||
|
||
MO_ADDR_TBL DB 96 DUP(00H) ; 12Byte*4Pt*2Drv
|
||
DB 96 DUP(00H) ; 12Byte*4Pt*2Drv(RFU)
|
||
; +-------+-------+-------+-------+-------+-------+-------+-------+
|
||
; | IPL SECTOR | <20>_<EFBFBD><5F><EFBFBD>{<7B><><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD>J<EFBFBD>n SECTOR |
|
||
; | L M H VH | L M H VH |
|
||
; +-------+-------+-------+-------+-------+-------+-------+-------+
|
||
; +-------+-------+-------+-------+
|
||
; | <20>_<EFBFBD><5F><EFBFBD>{<7B><><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD>I<EFBFBD><49> SECTOR | <20><><EFBFBD><EFBFBD><EFBFBD>Z<EFBFBD>N<EFBFBD>^<5E>Őݒ肳<DD92><E882B3><EFBFBD><EFBFBD>
|
||
; | L M H VH |
|
||
; +-------+-------+-------+-------+
|
||
;
|
||
|
||
;****************************************
|
||
;* ERR CODE TBL (16 DATA / 1LINE) *
|
||
;****************************************
|
||
|
||
ERR_CODE_TBL:
|
||
;-----------------------------------------------------------------------+---
|
||
; low 0 1 2 3 4 5 6 7 8 9 A B C D E F +
|
||
;-------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---
|
||
DB 0CH,0CH,0CH,0AH,02H,0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH ; 0
|
||
DB 04H,0BH,0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH ; 1
|
||
DB 0CH,08H,0CH,0CH,0CH,01H,05H,00H,0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH ; 2
|
||
DB 0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH ; 3
|
||
DB 0CH,0CH,0CH,0CH,0CH,0CH,0CH,04H,0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH ; 4
|
||
|
||
;****************************************
|
||
;* For SCSI Parameter area *
|
||
;****************************************
|
||
|
||
PARAMETER DB 00H ; Target LUN
|
||
DB 00H ; Data send vector
|
||
DB 00H ; CDB Length
|
||
DB 00H ; Reserve
|
||
CDB DB 00H ; Command code 0
|
||
DB 00H ; Bit7-5 LUN 1
|
||
DB 00H ; 2
|
||
DB 00H ; 3
|
||
DB 00H ; 4
|
||
DB 00H ; 5
|
||
DB 00H ; 6
|
||
DB 00H ; 7
|
||
DB 00H ; 8
|
||
DB 00H ; 9
|
||
|
||
;****************************************
|
||
;* Work data area *
|
||
;****************************************
|
||
|
||
REMAIN_ADDR DW 0000H ; Next buffer address (offset)
|
||
DW 0000H ; " (segment)
|
||
REMAIN_LNG DW 0000H ; Remain length
|
||
|
||
BUFFER DB 23 DUP (0CCH)
|
||
|
||
;---------------------------------------------------------------------
|
||
;----------------------------------------------- DOS5 91/08/00 -------
|
||
public MO_LPFLG2, MOSW2, Lockcnt, time_buf, time_to_retry
|
||
MO_LPFLG2 DB 0 ; 3.5" MO disk equip flag
|
||
MOSW2 DB 0 ;
|
||
Lockcnt db 8 dup (0) ; Lock/Unlock cnt * 2+2 unit
|
||
time_buf db 6 dup (0) ; bufer for timer bios
|
||
time_to_retry dw 4 ; wait time
|
||
;---------------------------------------------------------------------
|
||
;----------------------------------------------- DOS5 91/01/10 -------
|
||
;
|
||
; Data form DSKIO.ASM
|
||
;
|
||
PUBLIC MYATN, MYFAT, FIRST, RETCODE, NO_NAME, MOSW
|
||
PUBLIC SNGDRV1_MSG, SNGDRV2_MSG, SNGDRV_CMN, SNG_MSG1
|
||
PUBLIC MASKB, F_SW, DB_TRNS, NBYTETBL, NBYTETBL5
|
||
|
||
PUBLIC CURSEC, CURHD, CURTRK, HDNUM
|
||
PUBLIC PATCH0, PATCH1, PATCH3, TrackTable
|
||
PUBLIC sectorsPerTrack, mediaType
|
||
PUBLIC fSetOwner, PART_NUM
|
||
|
||
|
||
MYATN DW ?
|
||
MYFAT DB ?
|
||
FIRST DB 0
|
||
RETCODE DB 0
|
||
NO_NAME DB 'NO NAME ',00H
|
||
MOSW DB 0
|
||
;
|
||
;
|
||
; MESSAGE DATA
|
||
;
|
||
SNGDRV1_MSG DB 13,10,'<27>h<EFBFBD><68><EFBFBD>C<EFBFBD>u<EFBFBD>@'
|
||
SNGDRV1_FLD DB 'A<>@<40>Ƀf<C983>B<EFBFBD>X<EFBFBD>N<EFBFBD><4E><EFBFBD>}<7D><><EFBFBD><EFBFBD><EFBFBD>ĉ<EFBFBD><C489><EFBFBD><EFBFBD><EFBFBD>',0
|
||
SNGDRV2_MSG DB 13,10,'<27>h<EFBFBD><68><EFBFBD>C<EFBFBD>u<EFBFBD>@'
|
||
SNGDRV2_FR DB 'B<>@<40>ɑ}<7D><><EFBFBD><EFBFBD><EFBFBD>悤<EFBFBD>Ƃ<EFBFBD><C682><EFBFBD><EFBFBD>f<EFBFBD>B<EFBFBD>X<EFBFBD>N<EFBFBD><4E><EFBFBD>h<EFBFBD><68><EFBFBD>C<EFBFBD>u<EFBFBD>@'
|
||
SNGDRV2_LT DB 'A <20>ɑ}<7D><><EFBFBD><EFBFBD><EFBFBD>ĉ<EFBFBD><C489><EFBFBD><EFBFBD><EFBFBD>',0
|
||
SNGDRV_CMN DB 13,10,'<27>}<7D><><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>K<EFBFBD><4B><EFBFBD>ȃL<C883>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĉ<EFBFBD><C489><EFBFBD><EFBFBD><EFBFBD>'
|
||
SNG_MSG1 DB 0
|
||
;
|
||
MASKB DB 1,2,4,8
|
||
F_SW DB 0
|
||
DB_TRNS DW 0
|
||
;----------------------------------------------- DOS5A 92/12/01 ------
|
||
;<patch BIOS50-P30> ;1.44MB support
|
||
NBYTETBL DB 0,3,2,2,0,0,0,0,0 ;1MB FD DENSITY 871003
|
||
;---------------
|
||
;NBYTETBL DB 0,3,0,2,0,0,0,0,0 ;1MB FD DENSITY 871003
|
||
;---------------------------------------------------------------------
|
||
NBYTETBL5 DB 0,0,0,0,0,0,3,2,0 ;640KFD DENSITY 871003
|
||
|
||
|
||
;
|
||
; The following two sets of variables are used to hold values for
|
||
; disk I/O operations
|
||
|
||
CURSEC DB 0 ; current sector
|
||
CURHD DB 0 ; current head
|
||
CURTRK DW 0 ; current track
|
||
|
||
;
|
||
; The following are used for IOCTL function calls
|
||
;
|
||
|
||
HDNUM DB 0 ; Head number
|
||
|
||
;--------------------------------------------------------- 89/08/08 --
|
||
PATCH0 DW 0
|
||
PATCH1 DW 0
|
||
PATCH3 DB 0
|
||
;---------------------------------------------------------------------
|
||
|
||
MAX_SECTORS_CURR_SUP equ 40 ; current maximum sec/trk that
|
||
; we support
|
||
;
|
||
; TrackTable is an area for saving information passwd by the set device
|
||
; parameter function for laster use my Read/Write/Format/Verify.
|
||
;
|
||
|
||
TrackTable db 160 DUP (?)
|
||
;MAX_SECTORS_CURR_SUP * size a_SectorTable
|
||
|
||
|
||
sectorsPerTrack dw 15
|
||
|
||
mediaType db 0
|
||
|
||
fSetOwner db 0
|
||
|
||
PART_NUM DB 0
|
||
|
||
;
|
||
; Data from INIT.ASM
|
||
;
|
||
|
||
PUBLIC INFVT, BOOT_PART, WSINGLE, READ_BUF
|
||
PUBLIC BOOT_DRIVE
|
||
|
||
INFVT DB 00000000B ;VIRTUAL DRIVE MUST BE 4
|
||
|
||
;---------------------------------------------------- 871001 ---------
|
||
BOOT_PART DW 0 ;BOOT PARTITION ENTRY
|
||
BOOT_DRIVE DB 0 ;BOOT DRIVE NUMBER
|
||
;---------------------------------------------------------------------
|
||
WSINGLE DB 0
|
||
|
||
READ_BUF DB 24H DUP (0)
|
||
|
||
;---------------------------------------------------------------------
|
||
|
||
;----------------------------------------------- DOS5 91/01/11 -------
|
||
;
|
||
; Data from READDOS.ASM
|
||
;
|
||
PUBLIC REQUEST, REQ_LEN, REQ_UNT, REQ_CMD
|
||
PUBLIC REQ_STS, REQ_RFU, REQ_MDA, REQ_TRNS
|
||
PUBLIC REQ_CNT, REQ_STRT, RD_UNIT, MDA_DSC
|
||
PUBLIC FATSEC, DIRSEC, DATASEC, FATLEN
|
||
PUBLIC FATLOC, FAT1ST, BPBPTR, DOSCNT
|
||
PUBLIC DOSLOC, RD_FBIGFAT, DIRLEN, FAT1CONF
|
||
PUBLIC CONFSIZE, SW_RCONF
|
||
;----------------------------------------------- DOS5 91/05/30 -------
|
||
PUBLIC REQ_STRTL, REQ_STRTH, MAXSEC
|
||
;---------------------------------------------------------------------
|
||
|
||
;
|
||
; REQUEST PACKET
|
||
;
|
||
REQUEST LABEL BYTE
|
||
REQ_LEN DB ? ;LENGTH OF REQUEST
|
||
REQ_UNT DB ? ;UNIT NUMBER
|
||
REQ_CMD DB ? ;COMMAND CODE
|
||
REQ_STS DW ? ;STATUS
|
||
REQ_RFU DB 8 DUP(?) ;RESERVE
|
||
|
||
REQ_MDA DB ? ;MEDIA DESCRIPTOR
|
||
REQ_TRNS DD ? ;TRANSFER ADDRESS
|
||
REQ_CNT DW ? ;COUNT OF BLOCK
|
||
REQ_STRT DW ? ;1ST BLOCK FOR TRANSFER
|
||
|
||
;----------------------------------------------- DOS5 91/05/30 -------
|
||
REQ_VOLID DD ?
|
||
REQ_STRTL DW ? ;LOW WORD OF START SECTOR
|
||
REQ_STRTH DW ? ;HIGH WORD OF START SECTOR
|
||
;---------------------------------------------------------------------
|
||
|
||
|
||
|
||
; VARIABLES
|
||
;
|
||
RD_UNIT DB 0 ;UNIT NUMBER
|
||
MDA_DSC DB 0 ;MEDIA DESCRIPTOR SAVE
|
||
FATSEC DW 0 ;FAT SECTOR
|
||
DIRSEC DW 0 ;DIRECTORY SECTOR
|
||
DATASEC DW 0 ;TOP OF DATA AREA
|
||
FATLEN DW 0 ;FAT LENGTH (# OF SECTOR)
|
||
FATLOC DW 0 ;PARAGRAPH OF FAT-BUFFER
|
||
FAT1ST DW 0 ;1ST FAT NO.
|
||
BPBPTR DW 0 ;BPB POINTER
|
||
DOSCNT DW 0 ;READ SECTOR COUNT
|
||
DOSLOC DW 0 ;PARAGRAPH OF MSDOS SEG
|
||
;--------------------------------------------------------- 88/04/07 --
|
||
RD_FBIGFAT DB 0 ;12Bit FAT:0, 16Bit FAT:FFH
|
||
;-------------------------------------------------------------- 880520
|
||
DIRLEN DW 0 ;SECTOR SIZE OF DIRECTORY
|
||
FAT1CONF DW 0 ;1ST FAT OF 'CONFIG.SYS'
|
||
CONFSIZE DW 0 ;SIZE 'CONFIG.SYS' (LOW WORD)
|
||
;---------------------------------------------------------------------
|
||
SW_RCONF DB 0 ;0 :CONFIG.SYS NOT READ
|
||
;-1:CONFIG.SYS READ & CHECK LIM
|
||
;---------------------------------------------------------------------
|
||
MAXSEC DW 0 ;SECTORS WITHIN 64Kb
|
||
|
||
|
||
PUBLIC ATTRF,CRTDOTF,BIOSF_3
|
||
|
||
ATTRF DW 0001H ;2BYTE ATTR FLAG
|
||
CRTDOTF DW 0001H ;480DOT MODE FLAG
|
||
BIOSF_3 DB 00H ;BIOS_FLG(3) 89/08/21
|
||
|
||
;****************************************
|
||
;* *
|
||
;* SAVE AREA & LOCAL STACK *
|
||
;* *
|
||
;****************************************
|
||
|
||
PUBLIC EXT_SAVAX,EXT_SAVSS,EXT_SAVSP,EXT_SAVDS,EXT_SAVDX,EXT_SAVBX
|
||
PUBLIC EXT_STACK
|
||
|
||
EXT_SAVAX DW ? ;AX SAVE
|
||
EXT_SAVSS DW ? ;SS SAVE
|
||
EXT_SAVSP DW ? ;SP SAVE
|
||
EXT_SAVDS DW ? ;DS SAVE
|
||
EXT_SAVDX DW ? ;DX SAVE 87/8/14
|
||
EXT_SAVBX DW ? ;BX SAVE 88/03/31
|
||
;
|
||
DW 192 DUP(0CCCCH) ;EXT_BIOS LOCAL STACK
|
||
;SIZE 192 WORD 91/01/20
|
||
EXT_STACK EQU $
|
||
|
||
PUBLIC STP_SAVAX,STP_SAVSS,STP_SAVSP
|
||
PUBLIC STOP_STACK
|
||
|
||
STP_SAVAX DW ? ;AX SAVE
|
||
STP_SAVSS DW ? ;SS SAVE
|
||
STP_SAVSP DW ? ;SP SAVE
|
||
|
||
DW 192 DUP(0CCCCH) ;STOP KEY LOCAL STACK
|
||
;SIZE 192 LEVEL 91/01/20
|
||
STOP_STACK EQU $
|
||
|
||
;
|
||
; Data from HDSASI.ASM
|
||
;
|
||
PUBLIC save_ss, save_sp, save_ax, stack
|
||
|
||
save_ss dw 0
|
||
save_sp dw 0
|
||
save_ax dw 0
|
||
dw 192 dup (0cccch)
|
||
stack equ $
|
||
|
||
FREE_5 EQU 0ABCH-($-BIO2_START)
|
||
DB FREE_5 DUP(0)
|
||
|
||
;--------------------------------------------------------- 88/05/18 --
|
||
;DIC_BUG DB 1024 DUP(0) ;BUFFER FOR PAGE READ
|
||
;INDEX_BUFF DB 2048 DUP(?) ;BUFFER FOR PAGE INDEX
|
||
;---------------------------------------------------------------------
|
||
ORG 0ABCH
|
||
;----------------------------------------------- DOS5A 92/05/21 --------
|
||
;<patch BIOS50-P19>
|
||
DSK_BUF2 DB 1024 DUP(?)
|
||
DSK_BUF DB 2048 DUP(?) ;2KB DISK BUFFER (DSK_BUF2+DSK_BUF)
|
||
;---------------
|
||
;DSK_BUF_RFU DB 1024 DUP(?) ;DISK BUFFER RESERVE
|
||
; ORG 6BCH
|
||
;DSK_BUF_RFU DB 2048 DUP(?) ;DISK BUFFER RESERVE
|
||
STACK_TOP LABEL WORD
|
||
;DSK_BUF2 DB 1024 DUP(?) ;2KB DISK BUFFER (DSK_BUF2+DSK_BUF)
|
||
;DSK_BUF DB 1024 DUP(?) ;1KB DISK BUFFER
|
||
;-----------------------------------------------------------------------
|
||
FREE_6 EQU 16C0H-($-BIO2_START)
|
||
DB FREE_6 DUP(0)
|
||
|
||
ORG 16C0H
|
||
FKYTBLADR DW FKYTBL ;FOR BUNSETSU
|
||
|
||
;************************************************
|
||
;* *
|
||
;* DISK BIOS PARAMETER BLOCK *
|
||
;* *
|
||
;************************************************
|
||
|
||
PUBLIC DSK8_SNG,DSK8_DBL,DSK_AT
|
||
PUBLIC DSK5_SNG8,DSK5_SNG9,DSK5_DBL8,DSK5_DBL9
|
||
PUBLIC DSK5_DBL8D,DSK5_DBL9D
|
||
PUBLIC COMP_HDDSK5_1,COMP_HDDSK5_2
|
||
|
||
;256BFD (8"1S MEDIA ONLY)
|
||
DSK8_SNG DW 128 ;SECTOR LENGTH
|
||
DB 4 ;SECTOR/ALLOC UNIT
|
||
DW 1 ;RESERVED SECTOR
|
||
DB 2 ;FATS
|
||
DW 68 ;DIRECTORY ENTRY
|
||
DW 77*26 ;VOLUME SIZE
|
||
DB 0 ;MEDIA TYPE
|
||
DW 6 ;SECTOR/FAT
|
||
|
||
;1MBFD (8"2D/5"(3.5")2HD MEDIA)
|
||
DSK8_DBL DW 1024 ;SECTOR LENGTH
|
||
DB 1 ;SECTOR/ALLOC UNIT
|
||
DW 1 ;RESERVED SECTOR
|
||
DB 2 ;FATS
|
||
DW 192 ;DIRECTORY ENTRY
|
||
DW 77*8*2 ;VOLUME SIZE
|
||
DB 1 ;MEDIA TYPE
|
||
DW 2 ;SECTOR/FAT
|
||
|
||
;1MBFD (IBM AT FORMAT (15SECTOR/TRACK))
|
||
DSK_AT DW 512 ;SECTOR LENGTH
|
||
DB 1 ;SECTOR/ALLOC UNIT
|
||
DW 1 ;RESERVED SECTOR
|
||
DB 2 ;FATS
|
||
DW 224 ;DIRECTORY ENTRY
|
||
DW 15*2*80 ;VOLUME SIZE
|
||
DB 2 ;MEDIA TYPE
|
||
DW 7 ;SECTOR/FAT
|
||
|
||
;DSK8_SNG4 DW 128 ;16DCH
|
||
; DB 4
|
||
; DW 4
|
||
; DB 2
|
||
; DW 68
|
||
; DW 77*26
|
||
; DB 2
|
||
; DW 6
|
||
|
||
DSK5_SNG8 DW 512 ;SECTOR LENGTH
|
||
DB 1 ;SECTOR/ALLOC UNIT
|
||
DW 1 ;RESERVED SECTOR
|
||
DB 2 ;FATS
|
||
DW 64 ;DIRECTORY ENTRY
|
||
DW 40*8 ;VOLUME SIZE
|
||
DB -2 ;MEDIA TYPE
|
||
DW 1 ;SECTOR/FAT
|
||
|
||
DSK5_SNG9 DW 512 ;SECTOR LENGTH
|
||
DB 1 ;SECTOR/ALLOC UNIT
|
||
DW 1 ;RESERVED SECTOR
|
||
DB 2 ;FATS
|
||
DW 64 ;DIRECTORY ENTRY
|
||
DW 40*9 ;VOLUME SIZE
|
||
DB -4 ;MEDIA TYPE
|
||
DW 2 ;SECTOR/FAT
|
||
|
||
DSK5_DBL8 DW 512 ;SECTOR LENGTH
|
||
DB 2 ;SECTOR/ALLOC UNIT
|
||
DW 1 ;RESERVED SECTOR
|
||
DB 2 ;FATS
|
||
DW 112 ;DIRECTORY ENTRY
|
||
DW 40*8*2 ;VOLUME SIZE
|
||
DB -1 ;MEDIA TYPE
|
||
DW 1 ;SECTOR/FAT
|
||
|
||
DSK5_DBL9 DW 512 ;SECTOR LENGTH
|
||
DB 2 ;SECTOR/ALLOC UNIT
|
||
DW 1 ;RESERVED SECTOR
|
||
DB 2 ;FATS
|
||
DW 112 ;DIRECTORY ENTRY
|
||
DW 40*9*2 ;VOLUME SIZE
|
||
DB -3 ;MEDIA TYPE
|
||
DW 2 ;SECTOR/FAT
|
||
|
||
DSK5_DBL8D DW 512 ;SECTOR LENGTH
|
||
DB 2 ;SECTOR/ALLOC UNIT
|
||
DW 1 ;RESERVED SECTOR
|
||
DB 2 ;FATS
|
||
DW 112 ;DIRECTORY ENTRY
|
||
DW 80*8*2 ;VOLUME SIZE
|
||
DB -5 ;MEDIA TYPE
|
||
DW 2 ;SECTOR/FAT
|
||
|
||
DSK5_DBL9D DW 512 ;SECTOR LENGTH
|
||
DB 2 ;SECTOR/ALLOC UNIT
|
||
DW 1 ;RESERVED SECTOR
|
||
DB 2 ;FATS
|
||
DW 112 ;DIRECTCORY ENTRY
|
||
DW 80*9*2 ;VOLUME SIZE
|
||
DB -7 ;MEDIA TYPE
|
||
DW 3 ;SECTOR/FAT
|
||
|
||
COMP_HDDSK5_1 DB 13 DUP(0) ;1737H
|
||
|
||
COMP_HDDSK5_2 DB 13 DUP(0) ;1744H
|
||
|
||
FREE_7 EQU 1760H-($-BIO2_START)
|
||
DB FREE_7 DUP(0)
|
||
|
||
ORG 1760H
|
||
BIDTBL5 DB 70H,71H,72H,73H
|
||
BIDTBL DB 90H,91H,92H,93H
|
||
PREDNST DB 1,1,1,1
|
||
PREDENS5 DB 4,4,4,4
|
||
PUA DB 0
|
||
PWINF DB 0
|
||
FSW5 DB 0
|
||
FSW8 DB 0
|
||
AIRST DB 0
|
||
OPMOD DB 01FH
|
||
OPMOD5 DB 07FH
|
||
SAVEAL DB 0
|
||
|
||
;************************************************
|
||
;* *
|
||
;* B4670 SOFT USE AREA *
|
||
;* *
|
||
;************************************************
|
||
|
||
PUBLIC VT_OFFSET,VT_LAST
|
||
PUBLIC VBPB,VCPV,VBPS,VTPC,VSPT
|
||
PUBLIC X2_SW_VT
|
||
FREE_8 EQU 177EH-($-BIO2_START)
|
||
DB FREE_8 DUP(0)
|
||
|
||
ORG 177EH
|
||
B4670_TABLE LABEL FAR
|
||
DW VSYS_FLAG ;POINTER TO [VSYS_FLAG]
|
||
|
||
ORG 1780H
|
||
VT_OFFSET DW 0,0 ;1780H
|
||
DW 0,0
|
||
DW 0,0
|
||
DW 0,0
|
||
;OFFSET OF VIRTUAL DISK START
|
||
;85/05/19
|
||
VT_LAST DW 0,0 ;1790H
|
||
DW 0,0
|
||
DW 0,0
|
||
DW 0,0
|
||
;LIMIT ADDR OF VIRTUAL DISK
|
||
;85/05/19
|
||
;17A0H
|
||
VBPB DB 13 DUP (0) ;VIRTUAL BPB ADDR OF #1
|
||
DB 13 DUP (0) ; " #2
|
||
DB 13 DUP (0) ; " #3
|
||
DB 13 DUP (0) ; " #4
|
||
|
||
VCPV DW 0,0,0,0 ;85/05/15
|
||
VBPS DW 0,0,0,0 ;85/05/15
|
||
VTPC DB 0,0,0,0 ;85/05/15
|
||
VSPT DB 0,0,0,0 ;85/05/15
|
||
|
||
X2_SW_VT DB 0 ;??
|
||
|
||
DB 0 ;FREE
|
||
|
||
;************************************************
|
||
;* *
|
||
; AUX I/O WORKING FIELD *
|
||
;* *
|
||
;************************************************
|
||
|
||
PUBLIC AUX_HEADER,AUX1_HEADER,AUX2_HEADER
|
||
;------------------------------------------------------ 88/03/31 -----
|
||
PUBLIC CH1MSW1,CH1MSW2,CH2MSW1,CH2MSW2,CH3MSW1,CH3MSW2
|
||
PUBLIC AUX3_HEADER
|
||
|
||
ORG 17EEH
|
||
CH1MSW1 DB 0 ;INIT INFO. FOR RS232C-1
|
||
CH1MSW2 DB 0
|
||
CH2MSW1 DB 0 ;INIT INFO. FOR RS232C-2
|
||
CH2MSW2 DB 0
|
||
CH3MSW1 DB 0 ;INIT INFO. FOR RS232C-3
|
||
CH3MSW2 DB 0
|
||
|
||
AUX3_HEADER DW 0,0 ;AUX3 DRIVER ADDRESS
|
||
;---------------------------------------------------------------------
|
||
ORG 17F8H ;870923
|
||
AUXILIARY_TABLE LABEL FAR
|
||
|
||
AUX1_HEADER DW 0,0 ;870923 AUX2 DRIVER ADDRESS
|
||
AUX2_HEADER DW 0,0 ;870923 AUX3 DRIVER ADDRESS
|
||
|
||
ORG 1800H
|
||
AUX_HEADER DW 0,0 ;AUX DEVICE DRIVER ADDRESS
|
||
BIO2_AUX_READ:
|
||
JMP AUX_READ ;READ COMMAND
|
||
BIO2_AUX_RDND:
|
||
JMP AUX_RDND ;NON DESTRUCTIVE READ COMMAND
|
||
BIO2_AUX_FLSH:
|
||
JMP AUX_FLSH ;FLUSH COMMAND
|
||
BIO2_AUX_WRIT:
|
||
JMP AUX_WRIT ;WRITE COMMAND
|
||
BIO2_AUX_WRST:
|
||
JMP AUX_WRST ;WRITE STATUS COMMAND
|
||
;--------------------------------------------------------- 90/03/20 --
|
||
DB 0
|
||
ORG 1814H
|
||
|
||
PUBLIC LINETBL
|
||
;************************************************
|
||
;* LINE CONTROL TABLE *
|
||
;************************************************
|
||
EVEN
|
||
LINETBL DW 0 ;LINE 0
|
||
DW 0A0H ; 1
|
||
DW 140H ; 2
|
||
DW 1E0H ; 3
|
||
DW 280H ; 4
|
||
DW 320H ; 5
|
||
DW 3C0H ; 6
|
||
DW 460H ; 7
|
||
DW 500H ; 8
|
||
DW 5A0H ; 9
|
||
DW 640H ; 10
|
||
DW 6E0H ; 11
|
||
DW 780H ; 12
|
||
DW 820H ; 13
|
||
DW 8C0H ; 14
|
||
DW 960H ; 15
|
||
DW 0A00H ; 16
|
||
DW 0AA0H ; 17
|
||
DW 0B40H ; 18
|
||
DW 0BE0H ; 19
|
||
DW 0C80H ; 20
|
||
DW 0D20H ; 21
|
||
DW 0DC0H ; 22
|
||
DW 0E60H ; 23
|
||
DW 0F00H ; 24
|
||
DW 0FA0H ; 25
|
||
DW 1040H ; 26
|
||
DW 10E0H ; 27
|
||
DW 1180H ; 28
|
||
DW 1220H ; 29
|
||
DW 12C0H ; 30
|
||
DW 0 ;RFU
|
||
|
||
PUBLIC ESCATTRTBL,SGRFLG,ATTRTBL2
|
||
;************************************************
|
||
;* ATTRIBUTE TABLE FOR (ESCVT_SGR) *
|
||
;************************************************
|
||
ESCATTRTBL EQU $
|
||
DB 0 ;0 DEFAULT
|
||
DB 0E0H ;1 HIGH INTENSITY (WHITE)
|
||
DB 10H ;2 VL
|
||
DB 0 ;3 DEFAULT (RFU)
|
||
DB 08H ;4 UL
|
||
DB 02H ;5 BLINK
|
||
DB 0 ;6 DEFAULT (RFU)
|
||
DB 04H ;7 REVERSE
|
||
DB 0 ;8 SECRET
|
||
DB 0,0,0,0,0,0,0 ;9-15 RFU
|
||
DB 0 ;16 SECRET
|
||
DB 40H ;17 COLOR : RED
|
||
DB 20H ;18 : BLUE
|
||
DB 60H ;19 : MASENDA
|
||
DB 80H ;20 : GREEN(DEFAULT)
|
||
DB 0C0H ;21 : YELLOW
|
||
DB 0A0H ;22 : LIGHT BLUE
|
||
DB 0E0H ;23 : WHITE
|
||
DB 0,0,0,0,0,0 ;24-29 RFU
|
||
DB 0 ;30 COLOR : BLACK
|
||
DB 40H ;31 : RED
|
||
DB 80H ;32 : GREEN
|
||
DB 0C0H ;33 : YELLOW
|
||
DB 20H ;34 : BLUE
|
||
DB 60H ;35 : MAGENDA
|
||
DB 0A0H ;36 : CYAN
|
||
DB 0E0H ;37 : WHITE
|
||
DB 0,0 ;38,39 RFU
|
||
DB 04H ;40 REVERSE BLACK
|
||
DB 44H ;41 RED
|
||
DB 84H ;42 YELLOW
|
||
DB 0C4H ;43 GREEN
|
||
DB 24H ;44 BLUE
|
||
DB 64H ;45 MAGENDA
|
||
DB 0A4H ;46 CYAN
|
||
DB 0E4H ;47 WHITE
|
||
;
|
||
SGRFLG DB 0 ;INDICATE FOR BLACK COLOR
|
||
;----------------------------------------------------- 89/08/16 ---
|
||
|
||
ATTRTBL2 EQU $
|
||
DB 40 DUP (0)
|
||
DB 0H ; 40 BACK BLACK
|
||
DB 40H ; 41 RED
|
||
DB 20H ; 42 GREEN
|
||
DB 60H ; 43 YELLOW
|
||
DB 10H ; 44 BLUE
|
||
DB 50H ; 45 MAGENDA
|
||
DB 30H ; 46 CYAN
|
||
DB 70H ; 47 WHITE
|
||
;--------------------------------------------------------------------
|
||
PUBLIC WAKU_TABLE,JPN_SCRD1H,JPN_SCRD1N,ROME_1STSAV
|
||
;************************************************
|
||
;* *
|
||
;* VIDEO CONTROL SUBROUTINES *
|
||
;* *
|
||
;************************************************
|
||
; SHIFT STATE (GUIDE LINE) DATA
|
||
|
||
WAKU_TABLE DW 0020H,0020H
|
||
DW 4C01H,4C81H,3109H,3609H,4A1FH,4A9FH,4D01H,4D81H
|
||
|
||
; DATAT FOR SCROLL_COMMAND (GDC)
|
||
|
||
JPN_SCRD1H DW 0000H,0018H,1F00H,0001H ;SAD1=0 SL=25
|
||
DW 0000H,001EH,1F00H,0001H ;SAD1=0 SL=31
|
||
DW 00A0H,0018H,1F00H,0001H ;SAD1=50H SL=25
|
||
DW 00A0H,001EH,1F00H,0001H ;SAD1=50H SL=31
|
||
DW 0000H,0018H,0F00H,0001H ;ERASE G-LINE SL=25
|
||
DW 0000H,001EH,12C0H,0001H ;ERASE G-LINE SL=31
|
||
|
||
JPN_SCRD1N DW 0000H,0013H,1F00H,0001H ;SAD1=0 SL=25
|
||
DW 0000H,0018H,1F00H,0001H ;SAD1=0 SL=31
|
||
DW 00A0H,0013H,1F00H,0001H ;SAD1=50H SL=25
|
||
DW 00A0H,0018H,1F00H,0001H ;SAD1=50H SL=31
|
||
DW 0000H,0019H,0F00H,0001H ;ERASE G-LINE SL=25
|
||
DW 0000H,0019H,12C0H,0001H ;ERASE G-LINE SL=31
|
||
|
||
ROME_1STSAV DB 0
|
||
;----------------------------------------------------------------------
|
||
;************************************************
|
||
;* *
|
||
;* TABLE WHICH DEFINE BPB'S(26 ENTRY) *
|
||
;* *
|
||
;************************************************
|
||
INIT_TBL DW 0 ; A
|
||
DW 0 ; B
|
||
DW 0 ; C
|
||
DW 0 ; D
|
||
DW 0 ; E
|
||
DW 0 ; F
|
||
DW 0 ; G
|
||
DW 0 ; H
|
||
DW 0 ; I
|
||
DW 0 ; J
|
||
DW 0 ; K
|
||
DW 0 ; L
|
||
DW 0 ; M
|
||
DW 0 ; N
|
||
DW 0 ; O
|
||
DW 0 ; P
|
||
DW 0 ; Q
|
||
DW 0 ; R
|
||
DW 0 ; S
|
||
DW 0 ; T
|
||
DW 0 ; U
|
||
DW 0 ; V
|
||
DW 0 ; W
|
||
DW 0 ; X
|
||
DW 0 ; Y
|
||
DW 0 ; Z
|
||
|
||
IF BRANCH ;----------------------------------------------- 90/03/16 --
|
||
;
|
||
; VIRTUAL DISK BPB
|
||
;
|
||
VT_BPB DW 1024 ;BYTES / SECTOR
|
||
DB 8 ;# OF ALLOC UNITS
|
||
DW 1 ;RESERVED SECTOR
|
||
DB 2 ;# OF FATS
|
||
DW 1504 ;# OF DIRECTORIES
|
||
DW 990*20 ;TOTAL SECTORS
|
||
DB 23H ;MEDIA DISCRIPTOR
|
||
DW 4 ;SECTORS / FAT
|
||
ENDIF ;----------------------------------------------------------------
|
||
;
|
||
; CONSTANT DATA
|
||
;
|
||
;--------------------------------------------------------- 88/03/23 --
|
||
IF BRANCH ;----------------------------------------------- 90/03/16 --
|
||
PUBLIC VT_BPB
|
||
ENDIF ;---------------------------------------------------------------
|
||
PUBLIC INIT_TBL
|
||
PUBLIC CHR_VOL1,CHR_X2,HD_LBL,X2_SW_00,X2_SW_01
|
||
PUBLIC X2_SW_02,X2_SW_03
|
||
PUBLIC DD_FLG,SV_SELECT,SV_RDRV,SVHD1,SVHD2
|
||
;------------------------------------------------------ 870827 -------------
|
||
PUBLIC EXFNC_FLG
|
||
PUBLIC SVHD3,SVHD4
|
||
PUBLIC SVHDS1,SVHDS2
|
||
PUBLIC SVHDS3,SVHDS4
|
||
PUBLIC SVHDS5,SVHDS6
|
||
PUBLIC SVHDS7,SVHDS8
|
||
|
||
;---------------------------------------------------------------------
|
||
CHR_VOL1 DB 'VOL1'
|
||
CHR_X2 DB 55H,0AAH
|
||
HD_LBL DB 'MS-DOS INF AREA'
|
||
X2_SW_00 DB 0
|
||
X2_SW_01 DB 0
|
||
X2_SW_02 DB 0
|
||
X2_SW_03 DB 0
|
||
DD_FLG DB 0
|
||
SV_SELECT DB 0 ; 84/11/12
|
||
SV_RDRV DB 0 ; 84/11/12
|
||
EXFNC_FLG DB 0 ; 88/02/25
|
||
SVHD1 DW 0 ; 84/11/19
|
||
SVHD2 DW 0 ; 84/11/19
|
||
SVHD3 DW 0 ; 88/03/23
|
||
SVHD4 DW 0 ; 88/03/23
|
||
SVHDS1 DW 0 ; 88/03/23
|
||
SVHDS2 DW 0 ; 88/03/23
|
||
SVHDS3 DW 0 ; 88/03/23
|
||
SVHDS4 DW 0 ; 88/03/23
|
||
SVHDS5 DW 0 ; 88/06/25
|
||
SVHDS6 DW 0 ; 88/06/25
|
||
SVHDS7 DW 0 ; 88/06/25
|
||
SVHDS8 DW 0 ; 88/06/25
|
||
|
||
;------------------------------------------------DOS5 91/01/20-----------
|
||
PUBLIC FAT12, FAT16
|
||
FAT12 DB "FAT12 ",0
|
||
FAT16 DB "FAT16 ",0
|
||
;------------------------------------------------------------------------
|
||
|
||
FREE_9 EQU 19FBH-($-BIO2_START)
|
||
DB FREE_9 DUP(0)
|
||
|
||
ORG 19FBH ;85/09/24
|
||
VSYS_FLAG DB 0 ;85/09/24
|
||
B4670_UCW_ADR DD 0 ;85/09/24
|
||
|
||
;************************************************
|
||
;* *
|
||
;* KANJI DRIVER WORKING AREA *
|
||
;* *
|
||
;************************************************
|
||
|
||
PUBLIC KNJ_HEADER
|
||
|
||
ORG 1A00H
|
||
KNJ_HEADER DW 0,0 ;WITHOUT KEY-CODE ENTRY
|
||
DW 0,0 ;WITH KEY-CODE ENTRY
|
||
DW 0,0 ;KB_KANJ1
|
||
DW 0,0 ;TRANSFER
|
||
DW 0,0 ;KBCODE_NIP
|
||
DW 0,0 ;KANJI_HOME
|
||
DW 0,0 ;KANJI_MOD_TABLE
|
||
DW 0,0 ;RESERVED
|
||
DW 0,0 ;RESERVED
|
||
DW 0,0 ;RESERVED
|
||
|
||
ORG 1A28H
|
||
JPN_BELL: ;BELL ENTRY
|
||
CALL BELRTN_DATARTN
|
||
JBELL PROC FAR
|
||
RET
|
||
JBELL ENDP
|
||
|
||
JPN_MCONV: ;CODE CONVERT ENTRY
|
||
CALL D_MCONV_DATARTN
|
||
JMCNV PROC FAR
|
||
RET
|
||
JMCNV ENDP
|
||
|
||
JPN_HEX: ;HEX INPUT ENTRY
|
||
CALL HEXCHK_DATARTN
|
||
JHEX PROC FAR
|
||
RET
|
||
JHEX ENDP
|
||
|
||
KB_KANJI_ENT: ;JAPAN MODE ENTRY
|
||
DB 09AH
|
||
DD KNJENTP
|
||
KNJENTP PROC FAR
|
||
RET
|
||
KNJENTP ENDP
|
||
|
||
KB_KANJI_EXT: ;JAPAN MODE EXIT
|
||
DB 09AH
|
||
DD KNJEXTP
|
||
KNJEXTP PROC FAR
|
||
RET
|
||
KNJEXTP ENDP
|
||
|
||
FREE_10 EQU 1A50H-($-BIO2_START)
|
||
DB FREE_10 DUP(0)
|
||
|
||
ORG 1A50H
|
||
;--------------------------------------------------------- 88/05/18 --
|
||
;STUDY_BUFF DB 1024 DUP(?) ;GAKUSHU PAGE BUFFER
|
||
;---------------------------------------------------------------------
|
||
|
||
;************************************************
|
||
;* *
|
||
;* SCSI HD INFOMATION *
|
||
;* *
|
||
;************************************************
|
||
|
||
PUBLIC HDS_OFFSET,HDS1_OFFSET
|
||
PUBLIC HDS2_OFFSET,HDS3_OFFSET
|
||
PUBLIC HDS4_OFFSET,HDS5_OFFSET
|
||
PUBLIC HDS6_OFFSET,HDS7_OFFSET
|
||
PUBLIC HDS_LAST,HDS1_LAST
|
||
PUBLIC HDS2_LAST,HDS3_LAST
|
||
PUBLIC HDS4_LAST,HDS5_LAST
|
||
PUBLIC HDS6_LAST,HDS7_LAST
|
||
PUBLIC HDS_NUM,HDS1_NUM
|
||
PUBLIC HDS2_NUM,HDS3_NUM
|
||
PUBLIC HDS4_NUM,HDS5_NUM
|
||
PUBLIC HDS6_NUM,HDS7_NUM
|
||
PUBLIC HDDSKS_1,HDDSKS_2
|
||
PUBLIC HDDSKS_3,HDDSKS_4
|
||
PUBLIC HDDSKS_5,HDDSKS_6
|
||
PUBLIC HDDSKS_7,HDDSKS_8
|
||
PUBLIC CPVS,CPVS1,BPSS,BPSS1,TPCS,TPCS1,SPTS,SPTS1
|
||
PUBLIC CPVS2,CPVS3,BPSS2,BPSS3,TPCS2,TPCS3,SPTS2,SPTS3
|
||
PUBLIC CPVS4,CPVS5,BPSS4,BPSS5,TPCS4,TPCS5,SPTS4,SPTS5
|
||
PUBLIC CPVS6,CPVS7,BPSS6,BPSS7,TPCS6,TPCS7,SPTS6,SPTS7
|
||
|
||
|
||
HDS_OFFSET DW 0,0,0,0 ;SCSI #0
|
||
DW 0,0,0,0
|
||
HDS1_OFFSET DW 0,0,0,0 ;SCSI #1
|
||
DW 0,0,0,0
|
||
HDS2_OFFSET DW 0,0,0,0 ;SCSI #2
|
||
DW 0,0,0,0
|
||
HDS3_OFFSET DW 0,0,0,0 ;SCSI #3
|
||
DW 0,0,0,0
|
||
HDS4_OFFSET DW 0,0,0,0 ;SCSI #4
|
||
DW 0,0,0,0
|
||
HDS5_OFFSET DW 0,0,0,0 ;SCSI #5
|
||
DW 0,0,0,0
|
||
HDS6_OFFSET DW 0,0,0,0 ;SCSI #6
|
||
DW 0,0,0,0
|
||
HDS7_OFFSET DW 0,0,0,0 ;SCSI #7
|
||
DW 0,0,0,0
|
||
|
||
;LAST SECTOR OF EACH DOS PART
|
||
HDS_LAST DW 0,0,0,0 ;SCSI #0
|
||
DW 0,0,0,0
|
||
HDS1_LAST DW 0,0,0,0 ;SCSI #1
|
||
DW 0,0,0,0
|
||
HDS2_LAST DW 0,0,0,0 ;SCSI #2
|
||
DW 0,0,0,0
|
||
HDS3_LAST DW 0,0,0,0 ;SCSI #3
|
||
DW 0,0,0,0
|
||
HDS4_LAST DW 0,0,0,0 ;SCSI #4
|
||
DW 0,0,0,0
|
||
HDS5_LAST DW 0,0,0,0 ;SCSI #5
|
||
DW 0,0,0,0
|
||
HDS6_LAST DW 0,0,0,0 ;SCSI #6
|
||
DW 0,0,0,0
|
||
HDS7_LAST DW 0,0,0,0 ;SCSI #7
|
||
DW 0,0,0,0
|
||
|
||
HDS_NUM DB 0 ;NUMBER OF MS-DOS AREA IN SCSI #0
|
||
HDS1_NUM DB 0 ;NUMBER OF MS-DOS AREA IN SCSI #1
|
||
HDS2_NUM DB 0 ;NUMBER OF MS-DOS AREA IN SCSI #2
|
||
HDS3_NUM DB 0 ;NUMBER OF MS-DOS AREA IN SCSI #3
|
||
HDS4_NUM DB 0 ;NUMBER OF MS-DOS AREA IN SCSI #4
|
||
HDS5_NUM DB 0 ;NUMBER OF MS-DOS AREA IN SCSI #5
|
||
HDS6_NUM DB 0 ;NUMBER OF MS-DOS AREA IN SCSI #6
|
||
HDS7_NUM DB 0 ;NUMBER OF MS-DOS AREA IN SCSI #7
|
||
|
||
HDDSKS_1 DB HDDSK_SIZE DUP (0) ;SCSI #0
|
||
HDDSKS_2 DB HDDSK_SIZE DUP (0) ;SCSI #1
|
||
HDDSKS_3 DB HDDSK_SIZE DUP (0) ;SCSI #2
|
||
HDDSKS_4 DB HDDSK_SIZE DUP (0) ;SCSI #3
|
||
HDDSKS_5 DB HDDSK_SIZE DUP (0) ;SCSI #4
|
||
HDDSKS_6 DB HDDSK_SIZE DUP (0) ;SCSI #5
|
||
HDDSKS_7 DB HDDSK_SIZE DUP (0) ;SCSI #6
|
||
HDDSKS_8 DB HDDSK_SIZE DUP (0) ;SCSI #7
|
||
|
||
CPVS DW 0 ;CYLINDER PER VOLUME IN DEV SCSI #0
|
||
CPVS1 DW 0 ;CYLINDER PER VOLUME IN DEV SCSI #1
|
||
CPVS2 DW 0 ;CYLINDER PER VOLUME IN DEV SCSI #2
|
||
CPVS3 DW 0 ;CYLINDER PER VOLUME IN DEV SCSI #3
|
||
CPVS4 DW 0 ;CYLINDER PER VOLUME IN DEV SCSI #4
|
||
CPVS5 DW 0 ;CYLINDER PER VOLUME IN DEV SCSI #5
|
||
CPVS6 DW 0 ;CYLINDER PER VOLUME IN DEV SCSI #6
|
||
CPVS7 DW 0 ;CYLINDER PER VOLUME IN DEV SCSI #7
|
||
|
||
BPSS DW 0 ;BYTE PER SECTOR IN DEV SCSI #0
|
||
BPSS1 DW 0 ;BYTE PER SECTOR IN DEV SCSI #1
|
||
BPSS2 DW 0 ;BYTE PER SECTOR IN DEV SCSI #2
|
||
BPSS3 DW 0 ;BYTE PER SECTOR IN DEV SCSI #3
|
||
BPSS4 DW 0 ;BYTE PER SECTOR IN DEV SCSI #4
|
||
BPSS5 DW 0 ;BYTE PER SECTOR IN DEV SCSI #5
|
||
BPSS6 DW 0 ;BYTE PER SECTOR IN DEV SCSI #6
|
||
BPSS7 DW 0 ;BYTE PER SECTOR IN DEV SCSI #7
|
||
|
||
TPCS DB 0 ;TRACK PER CYLINDER IN DEV SCSI #0
|
||
TPCS1 DB 0 ;TRACK PER CYLINDER IN DEV SCSI #1
|
||
TPCS2 DB 0 ;TRACK PER CYLINDER IN DEV SCSI #2
|
||
TPCS3 DB 0 ;TRACK PER CYLINDER IN DEV SCSI #3
|
||
TPCS4 DB 0 ;TRACK PER CYLINDER IN DEV SCSI #4
|
||
TPCS5 DB 0 ;TRACK PER CYLINDER IN DEV SCSI #5
|
||
TPCS6 DB 0 ;TRACK PER CYLINDER IN DEV SCSI #6
|
||
TPCS7 DB 0 ;TRACK PER CYLINDER IN DEV SCSI #7
|
||
|
||
SPTS DB 0 ;SECTOR PER TRACK IN DEV SCSI #0
|
||
SPTS1 DB 0 ;SECTOR PER TRACK IN DEV SCSI #1
|
||
SPTS2 DB 0 ;SECTOR PER TRACK IN DEV SCSI #2
|
||
SPTS3 DB 0 ;SECTOR PER TRACK IN DEV SCSI #3
|
||
SPTS4 DB 0 ;SECTOR PER TRACK IN DEV SCSI #4
|
||
SPTS5 DB 0 ;SECTOR PER TRACK IN DEV SCSI #5
|
||
SPTS6 DB 0 ;SECTOR PER TRACK IN DEV SCSI #6
|
||
SPTS7 DB 0 ;SECTOR PER TRACK IN DEV SCSI #7
|
||
|
||
|
||
PUBLIC INFSH
|
||
PUBLIC NSHD
|
||
PUBLIC DA
|
||
PUBLIC HD_CNT
|
||
PUBLIC SCSI_CNT
|
||
PUBLIC SCSI_EQUIP
|
||
PUBLIC MO_COUNT
|
||
PUBLIC SCSI55_FLG
|
||
|
||
INFSH DB 0 ;EQUIP INF OF SCSI
|
||
NSHD DB 0 ;SCSI HD UNIT
|
||
DA DB 0
|
||
HD_CNT DB 0
|
||
SCSI_CNT DB 0
|
||
FBIGFAT DB 0,0,0,0,0,0
|
||
FBIGFATS DB 0,0,0,0,0,0,0,0
|
||
|
||
SCSI_EQUIP DB 8 DUP(0FFH) ; MO DISK EQUIP DATA AREA (SET 84H)
|
||
DB 00H
|
||
MO_COUNT DB 00H ; <20>f<EFBFBD>o<EFBFBD>C<EFBFBD>X<EFBFBD>ڑ<EFBFBD><DA91>䐔 (max 2 device)
|
||
SCSI55_FLG DB 01H
|
||
;---------------------------------------------------------------------
|
||
|
||
;----------------------------------------------- DOS5 90/12/14 -------
|
||
PUBLIC START_SEC_H,BLOCK_TRNS_H
|
||
PUBLIC OLD_AX,OLD_DX
|
||
PUBLIC BPBCOPY
|
||
PUBLIC SVPTR3
|
||
|
||
START_SEC_H DW 0 ;HIGH WORD OF STARTIN' SECTOR
|
||
BLOCK_TRNS_H DW 0 ;HIGH WORD OF STARTIN' SEC (MO)
|
||
OLD_AX DW 0 ;WORK AREA FOR 32 BIT CALCULATION
|
||
OLD_DX DW 0 ;WORK AREA FOR 32 BIT CALCULATION
|
||
BPBCOPY DB 25 DUP (0) ;BPB IS COPIED HERE FROM HDDSKx_x
|
||
;BUILD BPB RETURNS ADDRESS HERE
|
||
SVPTR3 DW 0 ;POINTER SAVE AREA FOR MEDIA IDS
|
||
;---------------------------------------------------------------------
|
||
|
||
FREE_11 EQU 1E50H-($-BIO2_START)
|
||
DB FREE_11 DUP(0)
|
||
|
||
ORG 1E50H
|
||
KDRV_FLG DB 0 ;NIPPONGO DRIVER FLAG
|
||
;0:NONE
|
||
;1:NECDIC/NECREN/NECTIK
|
||
;2:KNJDIC
|
||
|
||
DB 00001010B ;NO DELETE
|
||
DB 00001010B ;NO DELETE
|
||
SNRST1 DB 02H,02H,02H,02H ;85-04-23
|
||
|
||
PR_RATIO DB 00000000B ;PRINTER OUTPUT MODE
|
||
; I II
|
||
; I I+-------- RATIO OF ANK/KANJI
|
||
; I I 0:(2:1) /1:(1.5:1)
|
||
; I +--------- KANJI-IN CODE
|
||
; I 0:(ESC K) /1:(ESC T)
|
||
; I
|
||
; +--------------- ^P CONTROL FLAG
|
||
; 0:(ECHO) /1:(NOT)
|
||
|
||
FREE_12 EQU 1E60H-($-BIO2_START)
|
||
DB FREE_12 DUP(0)
|
||
|
||
ORG 1E60H
|
||
NEC_WORK0 LABEL BYTE
|
||
;--------------------------------------------------------- 88/05/18 --
|
||
;DIC_BUFF01 DB 1024 DUP(?) ;NECDIC.DRV WORKING
|
||
;DIC_BUFF02 DB 1024 DUP(?) ;
|
||
;---------------------------------------------------------------------
|
||
Public Start_BDS
|
||
Start_BDS LABEL DWORD
|
||
dw BDS1 ;Start of BDS linked list.
|
||
dw DATAGRP
|
||
|
||
BDS1 DW BDS2 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE1:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT1 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID1 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS1 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB1 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
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
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
BDS2 DW BDS3 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE2:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT2 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID2 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS2 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB2 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
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
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
BDS3 DW BDS4 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE3:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT3 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID3 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS3 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB3 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
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
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
BDS4 DW BDS5 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE4:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT4 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID4 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS4 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB4 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
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
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
BDS5 DW BDS6 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE5:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT5 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID5 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS5 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB5 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
TRACK5 DB -1 ;Last track accessed on this drive
|
||
TIM_LO5 DW -1 ;Keep these two contiguous (?)
|
||
TIM_HI5 DW -1
|
||
;------------------------------------------------------------------------------
|
||
VOLID5 db "NO NAME ",0 ; volume id for this disk
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
BDS6 DW BDS7 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE6:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT6 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID6 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS6 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB6 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
TRACK6 DB -1 ;Last track accessed on this drive
|
||
TIM_LO6 DW -1 ;Keep these two contiguous (?)
|
||
TIM_HI6 DW -1
|
||
;------------------------------------------------------------------------------
|
||
VOLID6 db "NO NAME ",0 ; volume id for this disk
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
BDS7 DW BDS8 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE7:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT7 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID7 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS7 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB7 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
TRACK7 DB -1 ;Last track accessed on this drive
|
||
TIM_LO7 DW -1 ;Keep these two contiguous (?)
|
||
TIM_HI7 DW -1
|
||
;------------------------------------------------------------------------------
|
||
VOLID7 db "NO NAME ",0 ; volume id for this disk
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
BDS8 DW BDS9 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE8:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT8 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID8 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS8 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB8 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
TRACK8 DB -1 ;Last track accessed on this drive
|
||
TIM_LO8 DW -1 ;Keep these two contiguous (?)
|
||
TIM_HI8 DW -1
|
||
;------------------------------------------------------------------------------
|
||
VOLID8 db "NO NAME ",0 ; volume id for this disk
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
BDS9 DW BDS10 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE9:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT9 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID9 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS9 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB9 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
TRACK9 DB -1 ;Last track accessed on this drive
|
||
TIM_LO9 DW -1 ;Keep these two contiguous (?)
|
||
TIM_HI9 DW -1
|
||
;------------------------------------------------------------------------------
|
||
VOLID9 db "NO NAME ",0 ; volume id for this disk
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
BDS10 DW BDS11 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE10:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT10 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID10 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS10 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB10 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
TRACK10 DB -1 ;Last track accessed on this drive
|
||
TIM_LO10 DW -1 ;Keep these two contiguous (?)
|
||
TIM_HI10 DW -1
|
||
;------------------------------------------------------------------------------
|
||
VOLID10 db "NO NAME ",0 ; volume id for this disk
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
BDS11 DW BDS12 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE11:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT11 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID11 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS11 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB11 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
TRACK11 DB -1 ;Last track accessed on this drive
|
||
TIM_LO11 DW -1 ;Keep these two contiguous (?)
|
||
TIM_HI11 DW -1
|
||
;------------------------------------------------------------------------------
|
||
VOLID11 db "NO NAME ",0 ; volume id for this disk
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
BDS12 DW BDS13 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE12:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT12 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID12 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS12 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB12 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
TRACK12 DB -1 ;Last track accessed on this drive
|
||
TIM_LO12 DW -1 ;Keep these two contiguous (?)
|
||
TIM_HI12 DW -1
|
||
;------------------------------------------------------------------------------
|
||
VOLID12 db "NO NAME ",0 ; volume id for this disk
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
BDS13 DW BDS14 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE13:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT13 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID13 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS13 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB13 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
TRACK13 DB -1 ;Last track accessed on this drive
|
||
TIM_LO13 DW -1 ;Keep these two contiguous (?)
|
||
TIM_HI13 DW -1
|
||
;------------------------------------------------------------------------------
|
||
VOLID13 db "NO NAME ",0 ; volume id for this disk
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
BDS14 DW BDS15 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE14:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT14 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID14 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS14 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB14 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
TRACK14 DB -1 ;Last track accessed on this drive
|
||
TIM_LO14 DW -1 ;Keep these two contiguous (?)
|
||
TIM_HI14 DW -1
|
||
;------------------------------------------------------------------------------
|
||
VOLID14 db "NO NAME ",0 ; volume id for this disk
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
BDS15 DW BDS16 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE15:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT15 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID15 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS15 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB15 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
TRACK15 DB -1 ;Last track accessed on this drive
|
||
TIM_LO15 DW -1 ;Keep these two contiguous (?)
|
||
TIM_HI15 DW -1
|
||
;------------------------------------------------------------------------------
|
||
VOLID15 db "NO NAME ",0 ; volume id for this disk
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
BDS16 DW BDS17 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE16:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT16 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID16 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS16 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB16 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
TRACK16 DB -1 ;Last track accessed on this drive
|
||
TIM_LO16 DW -1 ;Keep these two contiguous (?)
|
||
TIM_HI16 DW -1
|
||
;------------------------------------------------------------------------------
|
||
VOLID16 db "NO NAME ",0 ; volume id for this disk
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
BDS17 DW BDS18 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE17:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT17 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID17 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS17 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB17 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
TRACK17 DB -1 ;Last track accessed on this drive
|
||
TIM_LO17 DW -1 ;Keep these two contiguous (?)
|
||
TIM_HI17 DW -1
|
||
;------------------------------------------------------------------------------
|
||
VOLID17 db "NO NAME ",0 ; volume id for this disk
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
BDS18 DW BDS19 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE18:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT18 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID18 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS18 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB18 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
TRACK18 DB -1 ;Last track accessed on this drive
|
||
TIM_LO18 DW -1 ;Keep these two contiguous (?)
|
||
TIM_HI18 DW -1
|
||
;------------------------------------------------------------------------------
|
||
VOLID18 db "NO NAME ",0 ; volume id for this disk
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
BDS19 DW BDS20 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE19:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT19 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID19 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS19 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB19 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
TRACK19 DB -1 ;Last track accessed on this drive
|
||
TIM_LO19 DW -1 ;Keep these two contiguous (?)
|
||
TIM_HI19 DW -1
|
||
;------------------------------------------------------------------------------
|
||
VOLID19 db "NO NAME ",0 ; volume id for this disk
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
Public bds20
|
||
BDS20 DW BDS21 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE20:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT20 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID20 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS20 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB20 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
TRACK20 DB -1 ;Last track accessed on this drive
|
||
TIM_LO20 DW -1 ;Keep these two contiguous (?)
|
||
TIM_HI20 DW -1
|
||
;------------------------------------------------------------------------------
|
||
VOLID20 db "NO NAME ",0 ; volume id for this disk
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
FREE_16 EQU 2660H-($-BIO2_START)
|
||
DB FREE_16 DUP(0)
|
||
|
||
ORG 2660H
|
||
NETRFU DB 0 ;10-07-85
|
||
|
||
;--------------------------------------------------------- 88/05/19 --
|
||
;************************************************
|
||
;* *
|
||
;* VOLUME NAME TABLE *
|
||
;* *
|
||
;************************************************
|
||
;
|
||
; EVEN
|
||
;VOLTABLE DB 'NO NAME ',0 ;0
|
||
; DB 'NO NAME ',0 ;1
|
||
; DB 'NO NAME ',0 ;2
|
||
; DB 'NO NAME ',0 ;3
|
||
; DB 'NO NAME ',0 ;4
|
||
; DB 'NO NAME ',0 ;5
|
||
; DB 'NO NAME ',0 ;6
|
||
; DB 'NO NAME ',0 ;7
|
||
; DB 'NO NAME ',0 ;8
|
||
; DB 'NO NAME ',0 ;9
|
||
; DB 'NO NAME ',0 ;10
|
||
; DB 'NO NAME ',0 ;11
|
||
; DB 'NO NAME ',0 ;12
|
||
; DB 'NO NAME ',0 ;13
|
||
; DB 'NO NAME ',0 ;14
|
||
; DB 'NO NAME ',0 ;15
|
||
; DB 'NO NAME ',0 ;16
|
||
; DB 'NO NAME ',0 ;17
|
||
; DB 'NO NAME ',0 ;18
|
||
; DB 'NO NAME ',0 ;19
|
||
; DB 'NO NAME ',0 ;20
|
||
; DB 'NO NAME ',0 ;21
|
||
; DB 'NO NAME ',0 ;22
|
||
; DB 'NO NAME ',0 ;23
|
||
; DB 'NO NAME ',0 ;24
|
||
; DB 'NO NAME ',0 ;25
|
||
; DB 'NO NAME ',0 ;26
|
||
;---------------------------------------------------------------------
|
||
INP_DEV_TBL DW KBIN_DATARTN ;KEYBOARD INPUT
|
||
DW S0IN_DATARTN ;SERIAL-0 INPUT
|
||
DW S1IN_DATARTN ;SERIAL-1 INPUT
|
||
DW S2IN_DATARTN ;SERIAL-2 INPUT
|
||
|
||
INP_STS_TBL DW KBSTAT_DATARTN ;KEYBOARD STATUS
|
||
DW S0STAT_DATARTN ;SERIAL-0 STATUS
|
||
DW S1STAT_DATARTN ;SERIAL-1 STATUS
|
||
DW S2STAT_DATARTN ;SERIAL-2 STATUS
|
||
|
||
INP_FLS_TBL DW KBFLUSH_DATARTN ;KEYBOARD FLUSH
|
||
DW S0FLUSH_DATARTN ;SERIAL-0 FLUSH
|
||
DW S1FLUSH_DATARTN ;SERIAL-1 FLUSH
|
||
DW S2FLUSH_DATARTN ;SERIAL-2 FLUSH
|
||
|
||
OUT_DEV_TBL DW CRTOUT_DATARTN ;CRT OUTPUT
|
||
DW PRNOUT_DATARTN ;PRINTER OUTPUT
|
||
DW S0OUT_DATARTN ;SERIAL-0 OUTPUT
|
||
DW DUMMOUT ;DUMMY DEVICE OUTPUT
|
||
DW S1OUT_DATARTN ;SERIAL-1 OUTPUT
|
||
DW S2OUT_DATARTN ;SERIAL-2 OUTPUT
|
||
|
||
OUT_STS_TBL DW CRTRDY_DATARTN ;CRT STATUS
|
||
DW PRNRDY_DATARTN ;PRINTER STATUS
|
||
DW S0RDY_DATARTN ;SERIAL-0 STATUS
|
||
DW DUMMRDY ;DUMMY DEVICE STATUS
|
||
DW S1RDY_DATARTN ;SERIAL-1 STATUS
|
||
DW S2RDY_DATARTN ;SERIAL-2 STATUS
|
||
|
||
OUT_NXT_PTR DW 0
|
||
OUT_RTN_CNT DB 0 ;DEVICE COUNTER
|
||
STS_SAVE DW 0 ;STATUS SAVE AREA
|
||
S_R8 DB 0 ;SAVE REGISTER8
|
||
|
||
;----------------------------------------------- DOS5 91/09/09 -------
|
||
;SR; WIN386 support
|
||
; WIN386 instance data structure
|
||
;
|
||
;
|
||
; Here is a Win386 startup info structure which we set up and to which
|
||
; we return a pointer when Win386 initializes.
|
||
;
|
||
|
||
Win386_SI label byte ; Startup Info for Win386
|
||
SI_Version db 3, 0 ; for Win386 3.0
|
||
SI_Next dd ? ; pointer to next info structure
|
||
dd 0 ; a field we don't need
|
||
dd 0 ; another field we don't need
|
||
SI_Instance dw Instance_Table, Bios_Data ; far pointer to instance table
|
||
|
||
;
|
||
; This table gives Win386 the instance data in the BIOS data areas.
|
||
;
|
||
Instance_Table label dword
|
||
dw 00H,DATAGRP ; IO.SYS work
|
||
dw 0142h ; ...142h bytes
|
||
dw B4670_TABLE,DATAGRP ; B4670_TABLE, AUXIRIARY_TBL
|
||
dw 95h ; ...95H bytes
|
||
dw KNJ_HEADER,DATAGRP ; FEP work...
|
||
dw 50h ; ... 50h byte
|
||
dw OUT_NXT_PTR,DATAGRP ; CON work...
|
||
dw 04h ; ... 4 byte
|
||
dw ESCBUF,DATAGRP ; ESCBUFFER, FKYBUFFER2
|
||
dw 214h ; ... 214h byte
|
||
dw PRINTER_TABLE,DATAGRP ; PRN work...
|
||
dw 0Bh ; ... 0Bh byte
|
||
dw FKYTBL,DATAGRP ; FUNKTION KEY TBL...
|
||
;<patch BIOS50-P23>
|
||
dw 54ch ; ... 54ch byte DOS5A 92/07/21
|
||
;; dw 348h ; ... 348h byte DOS5A 92/07/21
|
||
dw DSK_DEV,DATAGRP ; BLOCK DEVICE HEADDFR...
|
||
dw 04h ; ... 4 byte
|
||
;----------------------------------------------- DOS5 91/09/09 -------
|
||
;<patch BIOS50-P04>
|
||
dw EXT_SAVAX,DATAGRP
|
||
dw 18ch
|
||
;----------------------------------------------- DOS5A 92/04/28 ------
|
||
;<patch BIOS50-P17>
|
||
dw KDRV_FLG,DATAGRP ; NIPPONGO DRIVER FLAG
|
||
dw 1
|
||
dd 0 ; terminate the instance table
|
||
dw 3*3 dup (0) ; patch area for instance table
|
||
;---------------
|
||
; dd 0 ; terminate the instance table
|
||
; dw 4*3 dup (0) ; patch area for instance table
|
||
;---------------
|
||
; dd 0 ; terminate the instance table
|
||
; dw 5*3 dup (0) ; patch area for instance table
|
||
;----------------------------------------------------------------------
|
||
;SR;
|
||
; Flag to indicate whether Win386 is running or not
|
||
;
|
||
public IsWin386
|
||
IsWin386 db 0
|
||
|
||
|
||
instance struc
|
||
instancetype db 0
|
||
reserve db 0
|
||
instanceoff dw ?
|
||
instanceseg dw ?
|
||
instancelength dw ?
|
||
instance ends
|
||
|
||
fix struc
|
||
fix_datalength dw ?
|
||
fix_dataptr_l dw ?
|
||
fix_dataptr_h dw ?
|
||
fix ends
|
||
|
||
vector struc
|
||
vector_num dw ?
|
||
vector ends
|
||
|
||
system struc
|
||
system_addr dw ?
|
||
system_datalength dw ?
|
||
system ends
|
||
|
||
memsw struc
|
||
memsw_addr dw ?
|
||
memsw_datalength dw ?
|
||
memsw ends
|
||
|
||
|
||
extrn OLD_1A_OFFSET:word, OLD_1B_OFFSET:word, SAVE_INT1B:word
|
||
|
||
Instance_tbl label word
|
||
prev_data_off dw ?
|
||
prev_data_seg dw ?
|
||
version db 3,0
|
||
Ins_VRAMSEG instance <0,0,offset VRAMSEG,DATAGRP,2>
|
||
fix <2,offset Normal_VRAMSEG,DATAGRP>
|
||
Ins_SYS_500 instance <2,0,offset SYS_500,DATAGRP,2>
|
||
system <100h,1>
|
||
Ins_SYS_501 system <101h,1>
|
||
Ins_INT1E instance <1,0,offset INT1E_OFST,DATAGRP,4>
|
||
vector <1eh>
|
||
Ins_MEM_SW3 instance <3,0,offset MEM_SW3,DATAGRP,1>
|
||
memsw <2,1>
|
||
Ins_REVISION instance <0,0,offset REVISION,DATAGRP,1>
|
||
fix <1,offset Normal_REVISION,DATAGRP>
|
||
Ins_MEM_SW5 instance <3,0,offset MEM_SW5,DATAGRP,3>
|
||
memsw <4,3>
|
||
Ins_LINMOD instance <0,0,offset LINMOD,DATAGRP,1>
|
||
fix <1,offset Normal_LINMOD,DATAGRP>
|
||
Ins_OLD_1A instance <1,0,offset BIOS_CODE:OLD_1A_OFFSET,BIOS_CODE,4>
|
||
vector <1ah>
|
||
Ins_OLD_1B instance <1,0,offset BIOS_CODE:OLD_1B_OFFSET,BIOS_CODE,4>
|
||
vector <1bh>
|
||
end_tbl dd -1
|
||
|
||
dw 15 dup (0) ;patch area for instance_tbl
|
||
|
||
|
||
Normal_VRAMSEG dw 0a000h
|
||
Normal_REVISION db 0f0h
|
||
Normal_LINMOD db 01h
|
||
;---------------------------------------------------------------------
|
||
FREE_13 EQU 27A6H-($-BIO2_START)
|
||
DB FREE_13 DUP(0)
|
||
|
||
ORG 27A6H
|
||
REFCNT DB 26 DUP (00H) ;NOT USED 3.3-
|
||
|
||
MEDIABYT DB 0
|
||
BUSY DB 0
|
||
BYTPSEC DW 0
|
||
SVBPS DW 0
|
||
;
|
||
;----------------------------------------------- DOS5 91/01/11 -------
|
||
VOLWORK DB 11 DUP (20H)
|
||
DB 00
|
||
;---------------
|
||
;VOLWORK DB 12 DUP (00H)
|
||
;---------------------------------------------------------------------
|
||
XPORT_FLAG DB 00000000B ;60:27D2H
|
||
; II
|
||
; I+-------- xport loaded
|
||
; +--------- printer information
|
||
;--------------------------------------------------------- 89/08/08 --
|
||
db 0
|
||
;for win/386 pointer table
|
||
dw 0 ;reserve
|
||
dw 0 ;reserve
|
||
dw 0 ;reserve
|
||
dw out_dev_tbl
|
||
dw out_sts_tbl
|
||
dw out_nxt_ptr
|
||
;---------------------------------------------------------------------
|
||
;************************************************
|
||
;* *
|
||
;* POINTER FOR TABLES *
|
||
;* *
|
||
;************************************************
|
||
|
||
FREE_14 EQU 2800H-($-BIO2_START)
|
||
DB FREE_14 DUP(0)
|
||
|
||
ORG 2800H
|
||
|
||
PTR_CON DD CONSOLE_TABLE
|
||
PTR_DSK DD DISK_TABLE
|
||
PTR_CLK DD CLOCK_TABLE
|
||
PTR_PRN DD PRINTER_TABLE
|
||
PTR_AUX DD AUXILIARY_TABLE
|
||
PTR_JPN DD JAPAN_TABLE
|
||
PTR_BR DD B4670_TABLE
|
||
PTR_NET DD MSNET_TABLE
|
||
PTR_TBL DD EXLPTBL
|
||
DD 0 ;RESERVED
|
||
DD 0 ;RESERVED
|
||
DD 0 ;RESERVED
|
||
DD 0 ;RESERVED
|
||
DD 0 ;RESERVED
|
||
DD 0 ;RESERVED
|
||
DD 0 ;RESERVED
|
||
DD 0 ;RESERVED
|
||
DD 0 ;RESERVED
|
||
DD 0 ;RESERVED
|
||
DD 0 ;RESERVED
|
||
|
||
;************************************************
|
||
;* *
|
||
;* MS-NET TABLE *
|
||
;* *
|
||
;************************************************
|
||
|
||
MSNET_TABLE LABEL FAR
|
||
DW XPORT_FLAG ;POINTER TO [XPORT_FLAG]
|
||
|
||
;************************************************
|
||
;* *
|
||
;* BUFFERS *
|
||
;* *
|
||
;************************************************
|
||
|
||
PUBLIC FKY_BUFFER2
|
||
|
||
ESCBUF DW ESCBUFSIZ DUP(?) ;ESC PARAMETER BUFFER
|
||
|
||
FKY_BUFFER2 DB 512 DUP(0) ;FUNC KEY BUFFER (BIG)
|
||
|
||
;************************************************
|
||
;* *
|
||
;* PRINTER DRIVER WORKING AREA *
|
||
;* *
|
||
;************************************************
|
||
|
||
PUBLIC PR_HEADER,PR_KNJCNT
|
||
|
||
EVEN
|
||
PRINTER_TABLE LABEL FAR
|
||
|
||
PR_HEADER DW 0,0 ;PRINTER DRIVER ADDRESS
|
||
BIO2_PRN_WRIT:
|
||
JMP PRN_WRIT ;
|
||
BIO2_PRN_WRST:
|
||
JMP PRN_WRST ;
|
||
|
||
PR_KNJCNT DB 0 ;SHIFT JIS COUNT
|
||
|
||
DB 0,0,0 ;RESERVED
|
||
|
||
;************************************************
|
||
;* *
|
||
;* HARD DISK INFOMATION *
|
||
;* *
|
||
;************************************************
|
||
|
||
PUBLIC HD_OFFSET,HD1_OFFSET
|
||
PUBLIC HD_LAST,HD1_LAST
|
||
PUBLIC HD_NUM,HD1_NUM
|
||
PUBLIC HDDSK5_1,HDDSK5_2
|
||
;--------------------------------------------------------- 88/03/23 --
|
||
PUBLIC HD2_OFFSET,HD3_OFFSET
|
||
PUBLIC HD2_LAST,HD3_LAST
|
||
PUBLIC HD2_NUM,HD3_NUM
|
||
PUBLIC HDDSK5_3,HDDSK5_4
|
||
;---------------------------------------------------------------------
|
||
|
||
HD_OFFSET DW 0,0,0,0 ;SASI #0
|
||
DW 0,0,0,0
|
||
HD1_OFFSET DW 0,0,0,0 ;SASI #1
|
||
DW 0,0,0,0
|
||
HD2_OFFSET DW 0,0,0,0 ;SASI #2 88/03/23
|
||
DW 0,0,0,0
|
||
HD3_OFFSET DW 0,0,0,0 ;SASI #3 88/03/23
|
||
DW 0,0,0,0
|
||
HD_OF_RFU DW 0,0,0,0 ;RFU 88/03/23
|
||
DW 0,0,0,0
|
||
DW 0,0,0,0 ;RFU
|
||
DW 0,0,0,0
|
||
;LAST SECTOR OF EACH DOS PART
|
||
HD_LAST DW 0,0,0,0 ;SASI #0
|
||
DW 0,0,0,0
|
||
HD1_LAST DW 0,0,0,0 ;SASI #1
|
||
DW 0,0,0,0
|
||
HD2_LAST DW 0,0,0,0 ;SASI #2 88/03/23
|
||
DW 0,0,0,0
|
||
HD3_LAST DW 0,0,0,0 ;SASI #3 88/03/23
|
||
DW 0,0,0,0
|
||
HD_LS_RFU DW 0,0,0,0 ;RFU 88/03/23
|
||
DW 0,0,0,0
|
||
DW 0,0,0,0 ;RFU
|
||
DW 0,0,0,0
|
||
|
||
HD_NUM DB 0 ;NUMBER OF MS-DOS AREA IN SASI #0
|
||
HD1_NUM DB 0 ;NUMBER OF MS-DOS AREA IN SASI #1
|
||
HD2_NUM DB 0 ;NUMBER OF MS-DOS AREA IN SASI #2 88/03/23
|
||
HD3_NUM DB 0 ;NUMBER OF MS-DOS AREA IN SASI #3 88/03/23
|
||
HD_NUM_RFU DB 0 ;RFU 88/03/23
|
||
DB 0 ;RFU
|
||
|
||
HDDSK5_1 DB HDDSK_SIZE DUP (0) ;SASI #0
|
||
HDDSK5_2 DB HDDSK_SIZE DUP (0) ;SASI #1
|
||
HDDSK5_3 DB HDDSK_SIZE DUP (0) ;SASI #2
|
||
HDDSK5_4 DB HDDSK_SIZE DUP (0) ;SASI #3
|
||
HDDSK5_RFU DB 52*2-(HDDSK_SIZE-52)*4 DUP (0) ;RFU
|
||
|
||
;************************************************
|
||
;* *
|
||
;* DISK DRIVER WORKING AREA *
|
||
;* *
|
||
;************************************************
|
||
|
||
PUBLIC EXLPTBL
|
||
PUBLIC CURUA,CURDA
|
||
PUBLIC CPV,CPV1,BPS,BPS1,TPC,TPC1,SPT,SPT1
|
||
PUBLIC DSK_TYP,COM,COM1,LNG_TRNS,CUR_TRNS
|
||
PUBLIC NO_TRNS,MAX_TRNS,PREFAT,PREFAT8
|
||
PUBLIC PRVDRV,S_SEC,LNG_SEC,VRFY_FLG
|
||
PUBLIC RTRY_CNT,RW_SW,SW_HD,SW_5,VOLNUM,CURDA2
|
||
|
||
;--------------------------------------------------------- 88/03/23 --
|
||
PUBLIC CPV2,CPV3,BPS2,BPS3,TPC2,TPC3,SPT2,SPT3
|
||
;---------------------------------------------------------------------
|
||
|
||
|
||
EXLPTBL LABEL FAR
|
||
DW 26 DUP (0) ;EXTEND LPTABLE
|
||
|
||
CURUA DB 0 ;SAVING FIELD OF CURR. UNIT ADDR
|
||
CURDA DB 0 ;SAVING FIELD OF CURR. DEV. ADDR
|
||
|
||
CPV DW 0 ;CYLINDER PER VOLUME IN DEV SASI #0
|
||
CPV1 DW 0 ;CYLINDER PER VOLUME IN DEV SASI #1
|
||
CPV2 DW 0 ;CYLINDER PER VOLUME IN DEV SASI #2 88/03/23
|
||
CPV3 DW 0 ;CYLINDER PER VOLUME IN DEV SASI #3 88/03/23
|
||
DW 0,0 ;RFU 88/03/23
|
||
BPS DW 0 ;BYTE PER SECTOR IN DEV SASI #0
|
||
BPS1 DW 0 ;BYTE PER SECTOR IN DEV SASI #1
|
||
BPS2 DW 0 ;BYTE PER SECTOR IN DEV SASI #2 88/03/23
|
||
BPS3 DW 0 ;BYTE PER SECTOR IN DEV SASI #3 88/03/23
|
||
DW 0,0 ;RFU 88/03/23
|
||
TPC DB 0 ;TRACK PER CYLINDER IN DEV SASI #0
|
||
TPC1 DB 0 ;TRACK PER CYLINDER IN DEV SASI #1
|
||
TPC2 DB 0 ;TRACK PER CYLINDER IN DEV SASI #2 88/03/23
|
||
TPC3 DB 0 ;TRACK PER CYLINDER IN DEV SASI #3 88/03/23
|
||
DB 0,0 ;RFU 88/03/23
|
||
SPT DB 0 ;SECTOR PER TRACK IN DEV SASI #0
|
||
SPT1 DB 0 ;SECTOR PER TRACK IN DEV SASI #1
|
||
SPT2 DB 0 ;SECTOR PER TRACK IN DEV SASI #2 88/03/23
|
||
SPT3 DB 0 ;SECTOR PER TRACK IN DEV SASI #3 88/03/23
|
||
DB 0,0 ;RFU 88/03/23
|
||
|
||
DSK_TYP DB 0 ;0 :SINGLE SIDE/1:DOUBLE SIDE
|
||
COM DB 0 ;COMMAND HIGH 4 BITS
|
||
COM1 DB 0 ;COMMAND LOW 4 BITS
|
||
LNG_TRNS DW 0 ;NUMBER OF DEMANDING SECTOR FROM UP
|
||
CUR_TRNS DW 0 ;NUMBER OF SECTOR WHICH JUST READ
|
||
;/WRITE.
|
||
|
||
NO_TRNS DW 0 ;NUMBER OF NO TRANSFERD SECTOR
|
||
MAX_TRNS DW 0 ;NUMBER OF MAX SECTOR ON TRACK
|
||
PREFAT DB -5,-5,-5,-5 ;SAVING FIELD OF PREVIOUS FAT ID OF 5"2DD
|
||
;DEF=5"2DD.(8)
|
||
PREFAT8 DB -5,-5,-5,-5 ;SAVING FIELD OF PREVIOUS FAT ID?
|
||
|
||
PRVDRV DB 0 ;SAVING FIELD OF PREVIOUS I/O DRIVE NUM
|
||
S_SEC DW 0 ;SAVING FIELD OF SECTOR PER TRAK
|
||
;8"I-128 8"IID-1024 5"FD-512
|
||
;5"FD-8/9
|
||
LNG_SEC DW 0 ;SAVING FIELD OF BYTE PRT SECTOR
|
||
;8"I-128 8"IID-1024
|
||
;5"FD-512
|
||
VRFY_FLG DB 0 ;VERIFY FLAG
|
||
RTRY_CNT DB 0 ;NUMER OF RETRY TIMES
|
||
RW_SW DB 0 ;FLAG TO INDICATE READ/WRITE
|
||
SW_HD DB 0 ;HARD INDICATE FLAG
|
||
SW_5 DB 0 ;5"FD INDICATE FLAG
|
||
VOLNUM DB 0 ;SAVING FIELD OF ACCESS AOL NUMBER
|
||
CURDA2 DB 0 ;85/03/05
|
||
|
||
;************************************************
|
||
;* *
|
||
;* INIT MODULE WORK *
|
||
;* *
|
||
;************************************************
|
||
|
||
PUBLIC BT_TYP,INF8F,INF5F,INF5H
|
||
PUBLIC UA,SVPTR,SVPTR1,SVPTR2
|
||
PUBLIC HD_SPT,HD_LNG,HD_HED
|
||
|
||
BT_TYP DB 0 ;BOOT DRIVE SAVING FIELD
|
||
INF8F DB 0 ;EQUIP INF OF 8"FD
|
||
INF5F DB 0 ;EQUIP INF OF 5"FD
|
||
INF5H DB 0 ;EQUIP INF OF 5"HD
|
||
UA DB 0 ;UNIT ADDR SAVING FIELD
|
||
SVPTR DW 0 ;POINTER SAVING FIELD
|
||
SVPTR1 DW 0 ;"
|
||
SVPTR2 DW 0 ;"
|
||
HD_SPT DB 0 ;NUMBER OF SECTOR PER TRACK ON HD DISK
|
||
HD_LNG DW 0 ;BYTE PER SECTOR ON HD DISK
|
||
HD_HED DB 0 ;NUMBER OF HEAD PER CYLINDER
|
||
|
||
;************************************************
|
||
;* *
|
||
;* TIMER WORK AREA *
|
||
;* *
|
||
;************************************************
|
||
|
||
PUBLIC CAL_TBL
|
||
PUBLIC T_YEAR,T_MONTH,T_DAY,T_HOUR,T_MIN,T_SEC
|
||
PUBLIC MONTH_TBL,YEAR,MONTH,DAY
|
||
|
||
CLOCK_TABLE LABEL FAR
|
||
|
||
CAL_TBL EQU $
|
||
T_YEAR DB 0
|
||
T_MONTH DB 0
|
||
T_DAY DB 0
|
||
T_HOUR DB 0
|
||
T_MIN DB 0
|
||
T_SEC DB 0
|
||
MONTH_TBL DB 31,28,31,30,31,30
|
||
DB 31,31,30,31,30,31
|
||
YEAR DW 0
|
||
MONTH DW 0
|
||
DAY DW 0
|
||
DW 0,0,0,0 ;RFU
|
||
|
||
|
||
|
||
PUBLIC FKYTBL,FKYTBL2,KBCODTBL
|
||
PUBLIC CTRLNFER,CTRLXFER,CTRLFKY
|
||
PUBLIC BUFSIZE,CHRTBL
|
||
;
|
||
;************************************************
|
||
;* FUNCTION KEY TABLE *
|
||
;* ( DEFAULT VALUE ) *
|
||
;************************************************
|
||
;
|
||
FKYTBL DB 8,0FEH,' C1 ',1BH,'S',0,0,0,0,0,0,0 ;FNC 1
|
||
DB 8,0FEH,' CU ',1BH,'T',0,0,0,0,0,0,0 ;FNC 2
|
||
DB 8,0FEH,' CA ',1BH,'U',0,0,0,0,0,0,0 ;FNC 3
|
||
DB 8,0FEH,' S1 ',1BH,'V',0,0,0,0,0,0,0 ;FNC 4
|
||
DB 8,0FEH,' SU ',1BH,'W',0,0,0,0,0,0,0 ;FNC 5
|
||
DB 8,0FEH,'VOID ',1BH,'E',0,0,0,0,0,0,0 ;FNC 6
|
||
DB 8,0FEH,'NWL ',1BH,'J',0,0,0,0,0,0,0 ;FNC 7
|
||
DB 8,0FEH,'INS ',1BH,'P',0,0,0,0,0,0,0 ;FNC 8
|
||
DB 8,0FEH,'REP ',1BH,'Q',0,0,0,0,0,0,0 ;FNC 9
|
||
DB 8,0FEH,' ^Z ',1BH,'Z',0,0,0,0,0,0,0 ;FNC 10
|
||
;
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;FNC 11
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;FNC 12
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;FNC 13
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;FNC 14
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;FNC 15
|
||
;
|
||
FKYTBL2 DB 7,'dir a:',13,0,0,0,0,0,0,0,0 ;SHFT F.1
|
||
DB 7,'dir b:',13,0,0,0,0,0,0,0,0 ;SHFT F.2
|
||
DB 5,'copy ',0,0,0,0,0,0,0,0,0,0 ;SHFT F.3
|
||
DB 4,'del ',0,0,0,0,0,0,0,0,0,0,0 ;SHFT F.4
|
||
DB 4,'ren ',0,0,0,0,0,0,0,0,0,0,0 ;SHFT F.5
|
||
DB 10,'chkdsk a:',13,0,0,0,0,0 ;SHFT F.6
|
||
DB 10,'chkdsk b:',13,0,0,0,0,0 ;SHFT F.7
|
||
DB 5,'type ',0,0,0,0,0,0,0,0,0,0 ;SHFT F.8
|
||
DB 5,'date',13,0,0,0,0,0,0,0,0,0,0 ;SHFT F.9
|
||
DB 5,'time',13,0,0,0,0,0,0,0,0,0,0 ;SHFT F.10
|
||
;
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;SHFT F.11
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;SHFT F.12
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;SHFT F.13
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;SHFT F.14
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;SHFT F.15
|
||
|
||
KBCODTBL EQU $
|
||
DB 0,0,0,0,0,0,0,0 ;ROLL UP
|
||
DB 0,0,0,0,0,0,0,0 ;ROLL DOWN
|
||
DB 2,1BH,'P',0,0,0,0,0 ;INS
|
||
DB 2,1BH,'D',0,0,0,0,0 ;DEL
|
||
DB 1,0BH,0,0,0,0,0,0 ;^
|
||
DB 1,08H,0,0,0,0,0,0 ;<-
|
||
DB 1,0CH,0,0,0,0,0,0 ;->
|
||
DB 1,0AH,0,0,0,0,0,0 ;V
|
||
DB 1,1AH,0,0,0,0,0,0 ;CLEAR
|
||
DB 0,0,0,0,0,0,0,0 ;HELP
|
||
DB 1,1EH,0,0,0,0,0,0 ;HOME
|
||
;
|
||
CTRLNFER DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||
CTRLXFER DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||
;
|
||
; CONTROL + FUNCTION KEY TABLE
|
||
;
|
||
;
|
||
CTRLFKY DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;CTRL + F.1
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;CTRL + F.2
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;CTRL + F.3
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;CTRL + F.4
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;CTRL + F.5
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;CTRL + F.6
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;CTRL + F.7
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;CTRL + F.8
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;CTRL + F.9
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;CTRL + F.10
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;CTRL + F.11
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;CTRL + F.12
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;CTRL + F.13
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;CTRL + F.14
|
||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;CTRL + F.15
|
||
|
||
;************************************************
|
||
;* KEYBOARD REASSIGNMENT TABLE NEW
|
||
;************************************************
|
||
BUFSIZE DW 0 ;BUFFER ENTRY SIZE FOR INT220
|
||
CHRTBL DW 0 ;ENTRY COUNTER
|
||
DB 512 DUP (0) ;DATA KEY REASSIGN TABLE
|
||
|
||
;************************************************ 871015 NEW
|
||
;* *
|
||
;* SIGNON MESSAGE & COPYRIGHT *
|
||
;* *
|
||
;************************************************
|
||
|
||
PUBLIC TITLE_M
|
||
|
||
;----------------------------------------------- DOS5A 92/04/15 -------
|
||
;TITLE_M DB 'NEC PC-9800 <20>ذ<EFBFBD><D8B0> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD>߭<EFBFBD><DFAD>',13,10,10
|
||
; DB 'ϲ<>ۿ<EFBFBD><DBBF> MS-DOS <20>ް<EFBFBD>ޮ<EFBFBD> 5.00 ',13,10
|
||
; DB 'Copyright (C) 1981,1991 Microsoft Corp. '
|
||
; DB '/ NEC Corporation ',13,10
|
||
;---------------
|
||
;<patch BIOS50-P13>
|
||
;TITLE_M DB 'NEC PC-9800 <20>ذ<EFBFBD><D8B0> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD>߭<EFBFBD><DFAD>',13,10,10
|
||
; DB 'ϲ<>ۿ<EFBFBD><DBBF> MS-DOS <20>ް<EFBFBD>ޮ<EFBFBD> 5.00A ',13,10
|
||
; DB 'Copyright (C) 1981,1991 Microsoft Corp. '
|
||
; DB '/ NEC Corporation ',13,10
|
||
;---------------
|
||
;<patch BIOS50-P28>
|
||
TITLE_M DB 'NEC PC-9800 <20>ذ<EFBFBD><D8B0> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD>߭<EFBFBD><DFAD>',13,10,10
|
||
DB 'ϲ<>ۿ<EFBFBD><DBBF> MS-DOS <20>ް<EFBFBD>ޮ<EFBFBD> 5.00A ',13,10
|
||
DB 'Copyright (C) 1981,1992 Microsoft Corp. '
|
||
DB '/ NEC Corporation ',13,10
|
||
;----------------------------------------------------------------------
|
||
|
||
DATA_END LABEL NEAR
|
||
|
||
PAGE
|
||
;****************************************************************
|
||
;* *
|
||
;* DISPATCH TABLE FOR DEVICE *
|
||
;* *
|
||
;****************************************************************
|
||
ORG 3300h
|
||
DB 0
|
||
|
||
CON_TBL:
|
||
DB 16
|
||
DW EXIT ;0-INIT(NOT USED)
|
||
DW EXIT ;1-MEDIA CHECK(NOT USED)
|
||
DW EXIT ;2-GET BPB(NOT USED)
|
||
DW CMD_ERR ;3-IO CTRL INPUT
|
||
DW CON_READ ;4-DESTRUCTIVE READ
|
||
DW CON_RDND ;5-NON DESTRUCTIVE READ
|
||
DW EXIT ;6-INPUT STATUS
|
||
DW CON_FLSH ;7-FLUSH INPUT BUFFER
|
||
DW CON_WRIT ;8-WRITE
|
||
DW CON_WRIT ;9-WRITE & VERIFY
|
||
DW CON_WRST ;10-WRITE STATUS
|
||
DW EXIT ;11-OUTPUT STATUS
|
||
DW EXIT ;12-IO CTRL OUTPUT
|
||
|
||
DW EXIT ;13-DEVICE OPEN(NOT USED)
|
||
DW EXIT ;14-DEVICE CLOSE(NOT USED)
|
||
DW EXIT ;15-REMOVABLE MEDIA(NOT USED)
|
||
DW EXIT ;16-OUT TIL BUSY(NOT USED)
|
||
|
||
;----------------------------------------------------------870826----------
|
||
PRN_TBL:
|
||
DB 16
|
||
DW EXIT ;0-INIT(NOT USED)
|
||
DW EXIT ;1-MEDIA CHECK(NOT USED)
|
||
DW EXIT ;2-GET BPB(NOT USED)
|
||
DW CMD_ERR ;3-IO CTRL INPUT
|
||
DW EXIT ;4-DESTRUCTIVE READ
|
||
DW BUS_EXIT ;5-NON DESTRUCTIVE READ
|
||
DW EXIT ;6-INPUT STATUS
|
||
DW EXIT ;7-FLUSH INPUT BUFFER
|
||
DW PRN_WRIT_DUM ;8-WRITE
|
||
DW PRN_WRIT_DUM ;9-WRITE & VERIFY
|
||
DW PRN_WRST_DUM ;10-WRITE STATUS
|
||
DW EXIT ;11-OUTPUT STATUS
|
||
DW EXIT ;12-IO CTRL OUTPUT
|
||
|
||
DW EXIT ;13-DEVICE OPEN(NOT USED)
|
||
DW EXIT ;14-DEVICE CLOSE(NOT USED)
|
||
DW EXIT ;15-REMOVABLE MEDIA(NOT USED)
|
||
DW EXIT ;16-OUT TIL BUSY(NOT USED)
|
||
|
||
AUX_TBL:
|
||
DB 16
|
||
DW EXIT ;0-INIT(NOT USED)
|
||
DW EXIT ;1-MEDIA CHECK(NOT USED)
|
||
DW EXIT ;2-GET BPB(NOT USED)
|
||
DW CMD_ERR ;3-IO CTRL INPUT
|
||
DW AUX_READ_DUM ;4-DESTRUCTIVE READ
|
||
DW AUX_RDND_DUM ;5-NON DESTRUCTIVE READ
|
||
DW EXIT ;6-INPUT STATUS
|
||
DW AUX_FLSH_DUM ;7-FLUSH INPUT BUFFER
|
||
DW AUX_WRIT_DUM ;8-WRITE
|
||
DW AUX_WRIT_DUM ;9-WRITE & VERIFY
|
||
DW AUX_WRST_DUM ;10-WRITE STATUS
|
||
DW EXIT ;11-OUTPUT STATUS
|
||
DW EXIT ;12-IO CTRL OUTPUT
|
||
|
||
DW EXIT ;13-DEVICE OPEN(NOT USED)
|
||
DW EXIT ;14-DEVICE CLOSE(NOT USED)
|
||
DW EXIT ;15-REMOVABLE MEDIA(NOT USED)
|
||
DW EXIT ;16-OUT TIL BUSY(NOT USED)
|
||
;-------------------------------------------------------------------------
|
||
|
||
CLK_TBL:
|
||
DB 16
|
||
DW EXIT
|
||
DW EXIT
|
||
DW EXIT
|
||
DW CMD_ERR
|
||
DW CLK_READ
|
||
DW BUS_EXIT
|
||
DW EXIT
|
||
DW EXIT
|
||
DW CLK_WRIT
|
||
DW CLK_WRIT
|
||
DW EXIT
|
||
DW EXIT
|
||
DW EXIT
|
||
|
||
DW EXIT
|
||
DW EXIT
|
||
DW EXIT
|
||
DW EXIT
|
||
|
||
DSK_TBL:
|
||
DB 25
|
||
DW DSK_INIT
|
||
DW MEDIA_CHK
|
||
DW GET_BPB
|
||
DW CMD_ERR
|
||
DW DSK_READ
|
||
DW BUS_EXIT
|
||
DW EXIT
|
||
DW EXIT
|
||
DW DSK_WRIT
|
||
DW DSK_WRTV
|
||
DW EXIT
|
||
DW EXIT
|
||
DW EXIT
|
||
DW DSK_OPEN ;DEVICE OPEN
|
||
DW DSK_CLOSE ;DEVICE CLOSE
|
||
DW DSK_REMOVABLE ;REMOVABLE CHECK
|
||
DW EXIT
|
||
|
||
DW EXIT
|
||
DW EXIT
|
||
DW Generic$IOCTL
|
||
DW EXIT
|
||
DW EXIT
|
||
DW EXIT
|
||
DW IOCTL$GetOwn
|
||
DW IOCTL$SetOwn
|
||
DW IOCTL_SUPPORT_QUERY
|
||
|
||
FREE_15 EQU 3400H-($-BIO2_START)
|
||
DB FREE_15 DUP(0)
|
||
|
||
PAGE
|
||
;****************************************************************
|
||
;* *
|
||
;* DEVICE TABLES *
|
||
;* *
|
||
;****************************************************************
|
||
|
||
ORG 3400H
|
||
DEV_TBL LABEL WORD
|
||
|
||
CON_DEV:
|
||
DW PRN_DEV,BIOSSEG ;LINK TO NEXT DEVICE
|
||
DW 8013H ;ATTRIBUTE (CHR.I/O)
|
||
; +-------------------------------INT 29H SUPPORT
|
||
DW STRATEGY ;STRATEGY ENTRY POINT
|
||
DW CON_INT ;INTERRUPT ENTRY POINT
|
||
DB 'CON ' ;DEVICE NAME
|
||
|
||
;------------------------------------------------ 870826 DUMMY DEV ---------
|
||
PRN_DEV:
|
||
DW AUX_DEV,BIOSSEG ;LINK TO NEXT DEVICE
|
||
DW 8000H ;ATTRIBUTE (CHR.I/O)
|
||
DW STRATEGY ;STRATEGY ENTRY POINT
|
||
DW PRN_INT ;INTERRUPT ENTRY POINT
|
||
DB 'PRN ' ;DEVICE NAME
|
||
|
||
AUX_DEV:
|
||
DW CLK_DEV,BIOSSEG ;LINK TO NEXT DEVICE
|
||
DW 8000H ;ATTRIBUTE (CHR.I/O)
|
||
DW STRATEGY ;STRATEGY ENTRY POINT
|
||
DW AUX_INT ;INTERRUPT ENTRY POINT
|
||
DB 'AUX ' ;DEVICE NAME
|
||
;-----------------------------------------------------------------------
|
||
|
||
CLK_DEV:
|
||
DW DSK_DEV,BIOSSEG
|
||
DW 8008H
|
||
DW STRATEGY
|
||
DW CLK_INT
|
||
DB 'CLOCK$ '
|
||
|
||
DSK_DEV:
|
||
DD -1
|
||
;-------------------------------------------------------DOS5 90/12/14----
|
||
; DW 4840H ;OPEN/CLOSE/RM BIT ON
|
||
;13-NON IBM, 11-OPEN/CLOSE/RM
|
||
;14-IOCTL
|
||
;6 -VER3.3
|
||
;------------------
|
||
DW 48C2H ;1 32 BIT SECTOR SUPPORT
|
||
;7 IOCTL SUPPORT QUERY
|
||
;------------------------------------------------------------------------
|
||
DW STRATEGY
|
||
DW DSK_INT
|
||
DRV_NUM DB 1
|
||
|
||
PAGE
|
||
;************************************************
|
||
;* *
|
||
;* VARIABLE & DEVICE ASSIGN TABLE *
|
||
;* *
|
||
;************************************************
|
||
EVEN
|
||
|
||
PTRSAV DD 0 ;STRATEGY POINTER SAVE AREA
|
||
|
||
;****************************************************************
|
||
;* *
|
||
;* STRATEGY ROUTINE *
|
||
;* *
|
||
;****************************************************************
|
||
;
|
||
STRTUP PROC FAR
|
||
STRATEGY:
|
||
MOV WORD PTR CS:[PTRSAV],BX
|
||
MOV WORD PTR CS:[PTRSAV+2],ES
|
||
RET
|
||
STRTUP ENDP
|
||
|
||
;
|
||
; OUTER DRIVER PROCESS
|
||
;
|
||
PRNOUT_DATARTN PROC NEAR
|
||
CALL DWORD PTR CS:[PRNOUT_CODERTN]
|
||
RET
|
||
PRNOUT_DATARTN ENDP
|
||
|
||
PRNRDY_DATARTN PROC NEAR
|
||
CALL DWORD PTR CS:[PRNRDY_CODERTN]
|
||
RET
|
||
PRNRDY_DATARTN ENDP
|
||
|
||
;
|
||
; INTERRUPT ROUTINE
|
||
;
|
||
CON_INT:
|
||
PUSH SI
|
||
MOV SI,OFFSET CON_TBL
|
||
JMP SHORT ENTRY
|
||
|
||
;---------------------------------------------------------870826----------
|
||
PRN_INT:
|
||
PUSH SI
|
||
MOV SI,OFFSET PRN_TBL ;SET DISPATCH TABLE ADDR.
|
||
JMP SHORT ENTRY ;JUMP TO COMMON ROUTINE
|
||
|
||
AUX_INT:
|
||
PUSH SI
|
||
MOV SI,OFFSET AUX_TBL ;SET DISPATCH TABLE ADDR.
|
||
JMP SHORT ENTRY
|
||
;-------------------------------------------------------------------------
|
||
|
||
CLK_INT:
|
||
PUSH SI
|
||
MOV SI,OFFSET CLK_TBL
|
||
JMP SHORT ENTRY
|
||
|
||
DSK_INT:
|
||
PUSH SI
|
||
MOV SI,OFFSET DSK_TBL
|
||
|
||
;************************************************
|
||
;* *
|
||
;* COMMON ROUTINE FOR INTERRUPT *
|
||
;* *
|
||
;************************************************
|
||
|
||
ENTRY:
|
||
PUSH AX
|
||
PUSH CX
|
||
PUSH DX
|
||
PUSH DI
|
||
PUSH BP
|
||
PUSH DS
|
||
PUSH ES
|
||
PUSH BX ;SAVE ALL REGISTER
|
||
LDS BX,CS:[PTRSAV] ;RETRIEVE POINTER(DS:BX)
|
||
MOV AL,[BX.UNIT] ;GET UNIT
|
||
MOV AH,[BX.MEDIA] ;GET MEDIA
|
||
MOV CX,[BX.COUNT] ;GET BYTE/SECTOR COUNT
|
||
MOV DX,[BX.START] ;GET LOGICAL SECTOR
|
||
;----------------------------------------------- DOS5 90/12/14 -------
|
||
CMP SI,OFFSET DSK_TBL ;COMMAND TO DISK?
|
||
JNE NOT_LARGE_SECTOR
|
||
MOV CS:START_SEC_H,0
|
||
CMP [BX.START],-1 ;LARGE PARTITION?
|
||
JNE NOT_LARGE_SECTOR
|
||
MOV DX,[BX.START_H]
|
||
MOV CS:START_SEC_H,DX
|
||
MOV DX,[BX.START_L]
|
||
NOT_LARGE_SECTOR:
|
||
;---------------------------------------------------------------------
|
||
XCHG AX,DI ;SAVE AX
|
||
MOV AL,[BX.CMD] ;GET COMMAND
|
||
;--------------------------------------------------------- 88/05/31 --
|
||
CMP AL,CS:[SI]
|
||
JA CMD_ERR
|
||
;---------------------------------------------------------------------
|
||
XOR AH,AH
|
||
ADD SI,AX
|
||
ADD SI,AX
|
||
;--------------------------------------------------------- 88/05/31 --
|
||
; CMP AL,16 ;DOS 3.XX (0-16)
|
||
; JA CMD_ERR
|
||
;---------------------------------------------------------------------
|
||
|
||
XCHG AX,DI ;RESTORE AX
|
||
LES DI,[BX.TRANS] ;GET I/O BUFFER ADDR(ES:DI)
|
||
PUSH CS
|
||
POP DS
|
||
JMP [SI+1] ;PERFORM I/O PACKET COMMAND
|
||
|
||
PAGE
|
||
|
||
;
|
||
; BUSY EXIT
|
||
;
|
||
BUS_EXIT:
|
||
MOV AH,00000011B ;SET BUSY& DONE BITS
|
||
JMP SHORT EXIT1
|
||
|
||
;
|
||
; COMMAND ERROR
|
||
;
|
||
CMD_ERR:
|
||
MOV AL,3 ;SET UNKNOWM COMMAND ERROR
|
||
;
|
||
; EREROR EXIT
|
||
;
|
||
ERR_EXIT:
|
||
MOV AH,10000001B ;SET ERROR & DONE BITS
|
||
JMP SHORT EXIT1
|
||
|
||
;
|
||
; NORMAL EXIT
|
||
;
|
||
EXITRTN PROC FAR
|
||
EXIT:
|
||
MOV AH,00000001B ;SET DONE BIT
|
||
EXIT1:
|
||
EXITRF:
|
||
LDS BX,CS:[PTRSAV]
|
||
MOV [BX.STATUS],AX
|
||
POP BX
|
||
POP ES
|
||
POP DS
|
||
POP BP
|
||
POP DI
|
||
POP DX
|
||
POP CX
|
||
POP AX
|
||
POP SI
|
||
RET ;FAR RETURN
|
||
|
||
EXITRTN ENDP
|
||
|
||
|
||
PAGE
|
||
|
||
;********************************************************
|
||
; MS-DOS 5.0 *
|
||
; CODE SEGMENT JUMP ROUTINE *
|
||
;********************************************************
|
||
;
|
||
; KEYBOARD ROUTINE
|
||
;
|
||
KBIN_DATARTN PROC NEAR
|
||
CALL DWORD PTR CS:[KBIN_CODERTN]
|
||
RET
|
||
KBIN_DATARTN ENDP
|
||
|
||
KBSTAT_DATARTN PROC NEAR
|
||
CALL DWORD PTR CS:[KBSTAT_CODERTN]
|
||
RET
|
||
KBSTAT_DATARTN ENDP
|
||
|
||
KBFLUSH_DATARTN PROC NEAR
|
||
CALL DWORD PTR CS:[KBFLUSH_CODERTN]
|
||
RET
|
||
KBFLUSH_DATARTN ENDP
|
||
|
||
;
|
||
; CONSOLE ROUTINE
|
||
;
|
||
|
||
CRTOUT_DATARTN PROC NEAR
|
||
CALL DWORD PTR CS:[CRTOUT_CODERTN]
|
||
RET
|
||
CRTOUT_DATARTN ENDP
|
||
|
||
CRTRDY_DATARTN PROC NEAR
|
||
CALL DWORD PTR CS:[CRTRDY_CODERTN]
|
||
RET
|
||
CRTRDY_DATARTN ENDP
|
||
|
||
;
|
||
; S0 ROUTINE
|
||
;
|
||
|
||
S0IN_DATARTN PROC NEAR
|
||
CALL DWORD PTR CS:[S0IN_CODERTN]
|
||
RET
|
||
S0IN_DATARTN ENDP
|
||
|
||
S0STAT_DATARTN PROC NEAR
|
||
CALL DWORD PTR CS:[S0STAT_CODERTN]
|
||
RET
|
||
S0STAT_DATARTN ENDP
|
||
|
||
S0FLUSH_DATARTN PROC NEAR
|
||
CALL DWORD PTR CS:[S0FLUSH_CODERTN]
|
||
RET
|
||
S0FLUSH_DATARTN ENDP
|
||
|
||
S0OUT_DATARTN PROC NEAR
|
||
CALL DWORD PTR CS:[S0OUT_CODERTN]
|
||
RET
|
||
S0OUT_DATARTN ENDP
|
||
|
||
S0RDY_DATARTN PROC NEAR
|
||
CALL DWORD PTR CS:[S0RDY_CODERTN]
|
||
RET
|
||
S0RDY_DATARTN ENDP
|
||
|
||
;
|
||
; S1 ROUTINE
|
||
;
|
||
|
||
S1IN_DATARTN PROC NEAR
|
||
CALL DWORD PTR CS:[S1IN_CODERTN]
|
||
RET
|
||
S1IN_DATARTN ENDP
|
||
|
||
S1STAT_DATARTN PROC NEAR
|
||
CALL DWORD PTR CS:[S1STAT_CODERTN]
|
||
RET
|
||
S1STAT_DATARTN ENDP
|
||
|
||
S1FLUSH_DATARTN PROC NEAR
|
||
CALL DWORD PTR CS:[S1FLUSH_CODERTN]
|
||
RET
|
||
S1FLUSH_DATARTN ENDP
|
||
|
||
S1OUT_DATARTN PROC NEAR
|
||
CALL DWORD PTR CS:[S1OUT_CODERTN]
|
||
RET
|
||
S1OUT_DATARTN ENDP
|
||
|
||
S1RDY_DATARTN PROC NEAR
|
||
CALL DWORD PTR CS:[S1RDY_CODERTN]
|
||
RET
|
||
S1RDY_DATARTN ENDP
|
||
|
||
;
|
||
; S2 ROUTINE
|
||
;
|
||
|
||
S2IN_DATARTN PROC NEAR
|
||
CALL DWORD PTR CS:[S2IN_CODERTN]
|
||
RET
|
||
S2IN_DATARTN ENDP
|
||
|
||
S2STAT_DATARTN PROC NEAR
|
||
CALL DWORD PTR CS:[S2STAT_CODERTN]
|
||
RET
|
||
S2STAT_DATARTN ENDP
|
||
|
||
S2FLUSH_DATARTN PROC NEAR
|
||
CALL DWORD PTR CS:[S2FLUSH_CODERTN]
|
||
RET
|
||
S2FLUSH_DATARTN ENDP
|
||
|
||
S2OUT_DATARTN PROC NEAR
|
||
CALL DWORD PTR CS:[S2OUT_CODERTN]
|
||
RET
|
||
S2OUT_DATARTN ENDP
|
||
|
||
S2RDY_DATARTN PROC NEAR
|
||
CALL DWORD PTR CS:[S2RDY_CODERTN]
|
||
RET
|
||
S2RDY_DATARTN ENDP
|
||
|
||
HEXCHK_DATARTN PROC NEAR
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
CALL DWORD PTR CS:[HEXCHK_RTN]
|
||
RET
|
||
HEXCHK_DATARTN ENDP
|
||
|
||
D_MCONV_DATARTN PROC NEAR
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
CALL DWORD PTR CS:[D_MCONV_RTN]
|
||
RET
|
||
D_MCONV_DATARTN ENDP
|
||
|
||
BELRTN_DATARTN PROC NEAR
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
CALL DWORD PTR CS:[BELRTN_RTN]
|
||
RET
|
||
BELRTN_DATARTN ENDP
|
||
|
||
DSK_INIT:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[DSK_INIT_DATARTN]
|
||
|
||
MEDIA_CHK:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[MEDIA_CHK_DATARTN]
|
||
|
||
GET_BPB:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[GET_BPB_DATARTN]
|
||
|
||
DSK_READ:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[DSK_READ_DATARTN]
|
||
|
||
DSK_WRIT:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[DSK_WRIT_DATARTN]
|
||
|
||
DSK_WRTV:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[DSK_WRTV_DATARTN]
|
||
|
||
DSK_OPEN:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[DSK_OPEN_DATARTN]
|
||
|
||
DSK_CLOSE:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[DSK_CLOSE_DATARTN]
|
||
|
||
DSK_REMOVABLE:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[DSK_REMOVABLE_DATARTN]
|
||
|
||
Generic$IOCTL:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[Generic$IOCTL_DATARTN]
|
||
|
||
IOCTL$GetOwn:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[IOCTL$GetOwn_DATARTN]
|
||
|
||
IOCTL$SetOwn:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[IOCTL$SetOwn_DATARTN]
|
||
|
||
;--------------------------------------------------------- DOS5 91/02/22 --
|
||
IOCTL_SUPPORT_QUERY:
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
JMP DWORD PTR CS:[IOCTL_SUPPORT_QUERY_DATARTN]
|
||
;--------------------------------------------------------------------------
|
||
|
||
INT_TRAP:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[INT_TRAP_DATA]
|
||
|
||
COPY_INT:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[COPY_INT_DATA]
|
||
|
||
STOP_INT:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[STOP_INT_DATA]
|
||
|
||
INT_29:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[INT_29_DATA]
|
||
|
||
EXTBIOS:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[EXTBIOS_DATA]
|
||
|
||
HD_ENTI:
|
||
TEST AL,10H ;TARGET 5"HD ?
|
||
JNZ SKIP_FD ; 89/07/28
|
||
TEST AL,60H ; 89/07/28
|
||
JZ TRG_5HD ;JUMP IF 5"HD
|
||
SKIP_FD: ; 89/07/28
|
||
JMP DWORD PTR CS:[INT1B_OFST]
|
||
TRG_5HD:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[HD_ENTI_DATA]
|
||
|
||
EXFNC_START:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[EXFNC_START_DATA]
|
||
|
||
CRTBIOS_START:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[CRTBIOS_START_DATA]
|
||
|
||
NEW_1A_ENT:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[NEW_1A_ENT_DATA]
|
||
|
||
INT_1CH:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[INT_1CH_DATA]
|
||
|
||
TIM_INT:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[TIM_INT_DATA]
|
||
|
||
NEW_1B_INT:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR CS:[NEW_1B_INT_DATA]
|
||
|
||
RE_INIT PROC FAR
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp CS:inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
CALL DWORD PTR CS:[REINIT_DATA_RTN]
|
||
RETF
|
||
RE_INIT ENDP
|
||
|
||
;
|
||
;This routine was originally in BIOS_CODE but this causes a lot of problems
|
||
;when we call it including checking of A20. The code being only about
|
||
;30 bytes, we might as well put it in BIOS_DATA
|
||
;
|
||
PUBLIC V86_Crit_SetFocus
|
||
|
||
V86_Crit_SetFocus PROC FAR
|
||
|
||
push di
|
||
push es
|
||
push bx
|
||
push ax
|
||
|
||
xor di,di
|
||
mov es,di
|
||
mov bx,0015h ;Device ID of DOSMGR device
|
||
mov ax,1684h ;Get API entry point
|
||
int 2fh
|
||
mov ax,es
|
||
or ax,di
|
||
jz Skip
|
||
;
|
||
;Here, es:di is address of API routine. Set up stack frame to simulate a call
|
||
;
|
||
push cs ;push return segment
|
||
mov ax,OFFSET Skip
|
||
push ax ;push return offset
|
||
push es
|
||
push di ;API far call address
|
||
mov ax,1 ;SetFocus function number
|
||
retf ;do the call
|
||
Skip:
|
||
pop ax
|
||
pop bx
|
||
pop es
|
||
pop di
|
||
ret
|
||
V86_Crit_SetFocus ENDP
|
||
|
||
;
|
||
;End WIN386 support
|
||
;
|
||
|
||
;
|
||
; int 2f handler for external block drivers to communicate with the internal
|
||
; block driver in msdisk. the multiplex number chosen is 8. the handler
|
||
; sets up the pointer to the request packet in [ptrsav] and then jumps to
|
||
; dsk_entry, the entry point for all disk requests.
|
||
;
|
||
; on exit from this driver, we will return to the external driver
|
||
; that issued this int 2f, and can then remove the flags from the stack.
|
||
; this scheme allows us to have a small external device driver, and makes
|
||
; the maintainance of the various drivers (driver and msbio) much easier,
|
||
; since we only need to make changes in one place (most of the time).
|
||
;
|
||
; ax=800h - check for installed handler - reserved
|
||
; ax=801h - install the bds into the linked list
|
||
; ax=802h - dos request
|
||
; ax=803h - return bds table starting pointer in ds:di
|
||
; (ems device driver hooks int 13h to handle 16kb dma overrun
|
||
; problem. bds table is going to be used to get head/sector
|
||
; informations without calling generic ioctl get device parm call.)
|
||
|
||
;
|
||
; ax=167fh - win3.0a support
|
||
;
|
||
; ax=4b05h - DOSSHELL support
|
||
;
|
||
|
||
MULTWIN386 equ 16h
|
||
Win386_Init equ 05h
|
||
Win386_Exit equ 06h
|
||
Win386_NH equ 7fh
|
||
multMULT equ 4ah
|
||
multMULTGETHMAPTR equ 1
|
||
multMULTALLOCHMA equ 2
|
||
|
||
i2f_handler PROC FAR
|
||
|
||
int_2f:
|
||
cmp ah,8
|
||
;93/03/25 MVDM DOS5.0A---------------------------
|
||
jz i2f_iret
|
||
;------------------------------------------------
|
||
|
||
;
|
||
;Check for WIN386 startup and return the BIOS instance data
|
||
;
|
||
cmp ah,MULTWIN386
|
||
jz win386call
|
||
|
||
cmp ah, multMULT
|
||
;----------------------------------------------- DOS5A 92/04/08 ------
|
||
;<patch BIOS50-P15>
|
||
jmp i2f_patch
|
||
db 90h,90h
|
||
;---------------
|
||
; jne i2f_iret
|
||
; jmp handle_multmult
|
||
;---------------------------------------------------------------------
|
||
i2f_iret:
|
||
iret
|
||
|
||
|
||
mine:
|
||
assume ds:nothing
|
||
cmp al,0f8h ; iret on reserved functions
|
||
jae i2f_iret
|
||
or al,al ; a get installed state request?
|
||
jnz disp_func
|
||
mov al,0ffh
|
||
jmp i2f_iret
|
||
|
||
disp_func:
|
||
cmp al,1 ; request for installing bds?
|
||
jz do_subfun_01
|
||
cmp al,3 ; get bds vector?
|
||
jz do_get_bds_vector
|
||
|
||
; set up pointer to request packet
|
||
|
||
push ds
|
||
PUSH CS
|
||
POP DS ; ds: -> Bios_Data
|
||
assume ds:Bios_Data
|
||
|
||
mov word ptr [ptrsav],bx ;otherwise dos function.
|
||
mov word ptr [ptrsav+2],es
|
||
pop ds
|
||
assume ds:nothing
|
||
jmp DSK_INT ; NOTE: jump to a function, not an
|
||
; ; IRET type function. Callers of
|
||
; ; this int2f subfunction will have
|
||
; ; to be careful to do a popf
|
||
|
||
do_subfun_01:
|
||
assume ds:nothing
|
||
push es ; save caller's ds, es
|
||
push ds
|
||
|
||
push ds ; put his argument into es
|
||
pop es
|
||
|
||
PUSH CS
|
||
POP DS ; point ds: -> Bios_Data
|
||
assume ds:Bios_Data
|
||
|
||
call install_bds
|
||
|
||
pop ds ; restore caller's registers
|
||
assume ds:nothing
|
||
pop es
|
||
jmp i2f_iret
|
||
|
||
|
||
do_get_bds_vector: ; al=3
|
||
assume ds:nothing
|
||
PUSH CS
|
||
POP DS ;we are in bios_data
|
||
assume ds:Bios_Data
|
||
|
||
lds di,[start_bds]
|
||
assume ds:nothing
|
||
ii2f_iret:
|
||
jmp i2f_iret
|
||
|
||
;------------------------------------------------------ DOS5 91/09/09 -
|
||
;
|
||
;WIN386 startup stuff is done here. If starting up we set our WIN386 present
|
||
;flag and return instance data. If exiting, we reset the WIN386 present flag
|
||
;NOTE: We assume that the BIOS int 2fh is at the bottom of the chain.
|
||
|
||
win386call:
|
||
push ds
|
||
push cs
|
||
pop ds
|
||
assume ds:Bios_Data
|
||
|
||
cmp al, Win386_Init ; is it win386 initializing?
|
||
je Win386Init
|
||
cmp al, Win386_Exit ; is it win386 exiting?
|
||
je win386Exit ; if not, continue int2f chain
|
||
|
||
cmp al,Win386_NH ;NEC
|
||
jne win_iret ;NEC
|
||
cmp dx,0 ;NEC
|
||
jne win_iret ;NEC
|
||
jmp short set_instance ;NEC
|
||
|
||
Win386Exit:
|
||
test dx, 1 ; is it win386 or win286 dos extender?
|
||
jnz win_iret ; if not win386, then continue
|
||
and [IsWin386], 0 ; indicate that win386 is not present
|
||
jmp short win_iret
|
||
|
||
Win386Init:
|
||
test dx, 1 ; is it win386 or win286 dos extender?
|
||
jnz win_iret ; if not win386, then continue
|
||
|
||
or [IsWin386], 1 ; Indicate WIN386 present
|
||
mov word ptr [SI_Next], bx ; Hook our structure into chain
|
||
mov word ptr [SI_Next + 2], es
|
||
mov bx, offset Win386_SI ; point ES:BX to Win386_SI
|
||
push ds
|
||
pop es
|
||
|
||
win_iret:
|
||
pop ds
|
||
assume ds:nothing
|
||
jmp short i2f_iret ;return back up the chain
|
||
;
|
||
; NEC Win386 suppurt
|
||
;
|
||
assume ds:Bios_Data
|
||
set_instance:
|
||
mov prev_data_off,bx
|
||
mov bx,es
|
||
mov prev_data_seg,bx
|
||
;----------------------------------------------- DOS5 92/02/04 -------
|
||
;<patch BIOS50-P07>
|
||
jmp short not_27board
|
||
db 3 dup (90h)
|
||
;---------------
|
||
; test EXFNC_FLG,02h
|
||
;---------------------------------------------------------------------
|
||
jz not_27board
|
||
mov word ptr Ins_OLD_1B.instanceoff,offset BIOS_CODE:SAVE_INT1B
|
||
not_27board:
|
||
mov bx,BIOS_SEG
|
||
mov word ptr Ins_OLD_1B.instanceseg,bx
|
||
mov word ptr Ins_OLD_1A.instanceseg,bx
|
||
push cs
|
||
pop es
|
||
mov bx,offset instance_tbl
|
||
;------------------------------------------------------------------------------
|
||
;<patch BIOS50-P03>
|
||
jmp win_iret
|
||
db 90h
|
||
; jmp i2f_iret
|
||
;------------------------------------------------------------------------------
|
||
|
||
handle_multmult:
|
||
cmp al, multMULTGETHMAPTR
|
||
jne try_2
|
||
|
||
push ds
|
||
call HMAPtr ; get offset of free HMA
|
||
mov bx, 0ffffh
|
||
mov es, bx ; seg of HMA
|
||
mov bx, di
|
||
not bx
|
||
or bx, bx
|
||
jz @f
|
||
inc bx
|
||
@@:
|
||
pop ds
|
||
jmp ii2f_iret
|
||
try_2:
|
||
cmp al, multMULTALLOCHMA
|
||
jne try_3
|
||
|
||
push ds
|
||
mov di, 0ffffh ; assume not enough space
|
||
mov es, di
|
||
call HMAPtr ; get offset of free HMA
|
||
assume ds:Bios_Data
|
||
cmp di, 0ffffh
|
||
je InsuffHMA
|
||
neg di ; free space in HMA
|
||
cmp bx, di
|
||
jbe @f
|
||
mov di, 0ffffh
|
||
jmp short InsuffHMA
|
||
@@:
|
||
mov di, FreeHMAPtr
|
||
add bx, 15
|
||
and bx, 0fff0h
|
||
add FreeHMAPtr, bx ; update the free pointer
|
||
jnz InsuffHMA
|
||
mov FreeHMAPtr, 0ffffh ; no more HMA if we have wrapped
|
||
InsuffHMA:
|
||
pop ds
|
||
assume ds:nothing
|
||
jmp ii2f_iret
|
||
try_3:
|
||
jmp ii2f_iret
|
||
|
||
|
||
i2f_handler endp
|
||
|
||
|
||
; install_bes installs a bds at location ds:di into the current linked list of
|
||
; bds maintained by this device driver. it places the bds at the end of the
|
||
; list. Trashes (at least) ax, bx, di, si
|
||
|
||
install_bds proc near
|
||
assume ds:Bios_Data,es:nothing
|
||
|
||
push ds ; save Bios_Data segment
|
||
mov si,offset start_bds ; beginning of chain
|
||
|
||
; ds:si now points to link to first bds
|
||
; assume bds list is non-empty
|
||
|
||
loop_next_bds:
|
||
lds si,[si].bds_link ; fetch next bds
|
||
mov al,es:[di].bds_drivenum ; does this one share a physical
|
||
cmp [si].bds_drivenum,al ; drive with new one?
|
||
jnz next_bds
|
||
|
||
mov bl,fi_am_mult ; set both of them to i_am_mult if so
|
||
or byte ptr es:[di].bds_flags,bl
|
||
or byte ptr [si].bds_flags,bl
|
||
and byte ptr es:[di].bds_flags,not fi_own_physical ; we don't own it
|
||
|
||
mov bl,byte ptr [si].bds_flags ; determine if changeline available
|
||
and bl,fchangeline
|
||
or byte ptr es:[di].bds_flags,bl
|
||
|
||
next_bds:
|
||
cmp word ptr [si].bds_link,-1 ; are we at end of list?
|
||
jnz loop_next_bds
|
||
|
||
mov word ptr [si].bds_link+2,es ; install bds
|
||
mov word ptr [si].bds_link,di
|
||
mov word ptr es:[di].bds_link,-1 ; set next pointer to null
|
||
pop ds ; restore Bios_Data
|
||
ret
|
||
|
||
install_bds endp
|
||
|
||
;
|
||
;--------------------------------------------------------------------------
|
||
;
|
||
; procedure : HMAPtr
|
||
;
|
||
; Gets the offset of the free HMA area ( with respect to
|
||
; seg ffff )
|
||
; If DOS has not moved high, tries to move DOS high.
|
||
; In the course of doing this, it will allocate all the HMA
|
||
; and set the FreeHMAPtr to past the end of the BIOS and
|
||
; DOS code. The call to MoveDOSIntoHMA (which is a pointer)
|
||
; enters the routine in sysinit1 called FTryToMoveDOSHi.
|
||
;
|
||
; RETURNS : offset of free HMA in DI
|
||
; BIOS_DATA, seg in DS
|
||
;
|
||
;--------------------------------------------------------------------------
|
||
;
|
||
HMAPtr proc near
|
||
push cs
|
||
pop ds
|
||
assume ds:Bios_Data
|
||
mov di, FreeHMAPtr
|
||
cmp di, 0ffffh
|
||
jne @f
|
||
cmp SysinitPresent, 0
|
||
je @f
|
||
call dword ptr MoveDOSIntoHMA
|
||
mov di, FreeHMAPtr
|
||
@@:
|
||
ret
|
||
HMAPtr endp
|
||
|
||
|
||
;********************************************************
|
||
;* *
|
||
;* CONSOLE ROUTINE *
|
||
;* *
|
||
;********************************************************
|
||
CON_READ:
|
||
PUSH CS
|
||
POP DS
|
||
PUSH CX
|
||
PUSH DI
|
||
CLD
|
||
MOV BIOS_FLAG,1
|
||
MOV BL,ASS_CONIN ;GET DEV-NO
|
||
XOR BH,BH
|
||
SHL BX,1 ;WORD POINTER
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
CALL INP_DEV_TBL[BX] ;CALL FLUSH SUBROUTINE
|
||
POP DI
|
||
POP CX
|
||
STOSB
|
||
LOOP CON_READ
|
||
JMP EXIT
|
||
|
||
;
|
||
; NON-DESTRUCTIVE READ
|
||
;
|
||
CON_RDND:
|
||
PUSH CS
|
||
POP DS
|
||
CLD
|
||
MOV BIOS_FLAG,1
|
||
MOV BL,ASS_CONIN ;GET DEV_NO
|
||
XOR BH,BH
|
||
SHL BX,1
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
CALL INP_STS_TBL[BX] ;CALL I/O SUBROUTINE
|
||
JZ CON_RDND_BUS
|
||
LDS DI,[PTRSAV]
|
||
MOV [DI.MEDIA],AL
|
||
JMP EXIT
|
||
CON_RDND_BUS:
|
||
JMP BUS_EXIT
|
||
|
||
;
|
||
; FLUSH INPUT BUFFER
|
||
;
|
||
CON_FLSH:
|
||
PUSH CS
|
||
POP DS
|
||
CLD
|
||
MOV BIOS_FLAG,1
|
||
MOV BL,ASS_CONIN
|
||
XOR BH,BH
|
||
SHL BX,1 ;WORD POINTER
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
CALL INP_FLS_TBL[BX] ;CALL FLUSH SUBROUTINE
|
||
JMP EXIT
|
||
|
||
;
|
||
; WRITRE
|
||
;
|
||
CON_WRIT:
|
||
PUSH CS
|
||
POP DS
|
||
MOV SI,DI
|
||
CON_WRIT1:
|
||
LODS BYTE PTR ES:[SI]
|
||
CALL CONOUT
|
||
LOOP CON_WRIT1
|
||
JMP EXIT
|
||
|
||
CONOUT_FAR PROC FAR
|
||
CALL CONOUT
|
||
RET
|
||
CONOUT_FAR ENDP
|
||
|
||
|
||
CONOUT:
|
||
PUSH CS
|
||
POP DS
|
||
PUSH CX
|
||
PUSH SI
|
||
CLD
|
||
MOV BIOS_FLAG,1
|
||
XCHG AL,CL
|
||
MOV BL,ASS_CONOUT ;GET DEV_NO
|
||
MOV OUT_RTN_CNT,BL
|
||
MOV BX,OFFSET ASS_CONOUT+1
|
||
MOV OUT_NXT_PTR,BX ;SAVE POINTER
|
||
CALL OUT_ASSIGN
|
||
CALL DWORD PTR CS:[STOP_CHK_RTN]
|
||
POP SI
|
||
POP CX
|
||
RET
|
||
|
||
;
|
||
; WRITE STATUS
|
||
;
|
||
CON_WRST:
|
||
PUSH CS
|
||
POP DS
|
||
CLD
|
||
MOV BIOS_FLAG,1
|
||
MOV BL,ASS_CONOUT
|
||
MOV OUT_RTN_CNT,BL ;GET DEV_NO
|
||
MOV BX,OFFSET ASS_CONOUT+1
|
||
MOV OUT_NXT_PTR,BX ;SAVE POINTER
|
||
MOV STS_SAVE,0
|
||
CALL STS_ASSIGN
|
||
CALL DWORD PTR CS:[STOP_CHK_RTN]
|
||
MOV AX,STS_SAVE
|
||
JMP EXIT1
|
||
|
||
PAGE
|
||
|
||
;********************************************************
|
||
;* *
|
||
;* AUXILIARY ROUTINE *
|
||
;* *
|
||
;********************************************************
|
||
;
|
||
; DESTRUCTIVE READ
|
||
;
|
||
AUX_READ_P PROC FAR
|
||
AUX_READ:
|
||
PUSH CS
|
||
POP DS
|
||
PUSH CX
|
||
PUSH DI
|
||
CLD
|
||
MOV BIOS_FLAG,1
|
||
MOV BL,ASS_READER ;GET DEV_NO
|
||
XOR BH,BH
|
||
SHL BX,1 ;WORD POINTER
|
||
CALL INP_DEV_TBL[BX] ;CALL FLUSH SUBROUTINE
|
||
POP DI
|
||
POP CX
|
||
STOSB
|
||
LOOP AUX_READ
|
||
RET
|
||
AUX_READ_P ENDP
|
||
|
||
;
|
||
; NON-DESTRUCTIVE READ
|
||
;
|
||
AUX_RDND_P PROC FAR
|
||
AUX_RDND:
|
||
PUSH CS
|
||
POP DS
|
||
CLD
|
||
MOV BIOS_FLAG,1
|
||
MOV BL,ASS_READER
|
||
XOR BH,BH
|
||
SHL BX,1
|
||
CALL INP_STS_TBL[BX] ;CALL I/O SUBROUTINE
|
||
RET
|
||
AUX_RDND_P ENDP
|
||
|
||
;
|
||
; FLUSH INPUT BUFFER
|
||
;
|
||
AUX_FLSH_P PROC FAR
|
||
AUX_FLSH:
|
||
PUSH CS
|
||
POP DS
|
||
CLD
|
||
MOV BIOS_FLAG,1
|
||
MOV BL,ASS_READER ;GET DEV-NO
|
||
XOR BH,BH
|
||
SHL BX,1
|
||
CALL INP_FLS_TBL[BX] ;CALL FLUSH SUBROUTINE
|
||
RET
|
||
AUX_FLSH_P ENDP
|
||
|
||
;
|
||
; WRITE
|
||
;
|
||
;----------------------------------------------- DUMMY DEVICE 870826 ------
|
||
AUX_WRIT_DUM:
|
||
AUX_WRST_DUM:
|
||
AUX_FLSH_DUM:
|
||
AUX_READ_DUM:
|
||
AUX_RDND_DUM:
|
||
MOV AL,02H ;NOT READY
|
||
JMP ERR_EXIT ;ERROR RETURN
|
||
;--------------------------------------------------------------------------
|
||
|
||
AUX_WRIT_P PROC FAR
|
||
AUX_WRIT:
|
||
PUSH CS
|
||
POP DS
|
||
MOV SI,DI
|
||
AUX_WRIT1:
|
||
LODS BYTE PTR ES:[SI]
|
||
CALL AUXOUT
|
||
LOOP AUX_WRIT1
|
||
RET
|
||
AUX_WRIT_P ENDP
|
||
|
||
AUXOUT:
|
||
PUSH CS
|
||
POP DS
|
||
PUSH CX
|
||
PUSH SI
|
||
MOV BIOS_FLAG,1
|
||
XCHG AL,CL
|
||
MOV BL,ASS_PUNCH ;GET DEV-NO
|
||
MOV OUT_RTN_CNT,BL
|
||
MOV BX,OFFSET ASS_PUNCH+1
|
||
MOV OUT_NXT_PTR,BX
|
||
CALL OUT_ASSIGN
|
||
CALL DWORD PTR CS:[STOP_CHK_RTN]
|
||
POP SI
|
||
POP CX
|
||
RET
|
||
|
||
;
|
||
; WRITE STATUS
|
||
;
|
||
AUX_WRST_P PROC FAR
|
||
AUX_WRST:
|
||
CLD
|
||
PUSH CS
|
||
POP DS
|
||
MOV BIOS_FLAG,1
|
||
MOV BL,ASS_PUNCH ;GET DEV-NO
|
||
MOV OUT_RTN_CNT,BL
|
||
MOV BX,OFFSET ASS_PUNCH+1
|
||
MOV OUT_NXT_PTR,BX
|
||
MOV STS_SAVE,0
|
||
CALL STS_ASSIGN
|
||
CALL DWORD PTR CS:[STOP_CHK_RTN]
|
||
MOV AX,STS_SAVE
|
||
RET
|
||
AUX_WRST_P ENDP
|
||
|
||
PAGE
|
||
;********************************************************
|
||
;* *
|
||
;* PRINTER ROUTINE *
|
||
;* *
|
||
;********************************************************
|
||
|
||
;
|
||
; WRITE
|
||
;
|
||
;-------------------------------------------------- DUMMY DEVICE 870826 --
|
||
PRN_WRIT_DUM:
|
||
PRN_WRST_DUM:
|
||
MOV AL,02H ;NOT READY
|
||
JMP ERR_EXIT ;ERROR RETURN
|
||
;-------------------------------------------------------------------------
|
||
|
||
PRNWRITP PROC FAR
|
||
PRN_WRIT:
|
||
PUSH CS
|
||
POP DS
|
||
MOV SI,DI
|
||
PRN_WRIT1:
|
||
LODS BYTE PTR ES:[SI]
|
||
CALL NEAR PTR LISTOUT
|
||
LOOP PRN_WRIT1
|
||
RET
|
||
PRNWRITP ENDP
|
||
|
||
LISTOUTP PROC NEAR
|
||
LISTOUT:
|
||
PUSH CS
|
||
POP DS
|
||
PUSH CX
|
||
PUSH SI
|
||
CLD
|
||
MOV BIOS_FLAG,1
|
||
XCHG AL,CL
|
||
MOV BL,ASS_LISTOUT ;GET DEV-NO
|
||
MOV OUT_RTN_CNT,BL
|
||
MOV BX,OFFSET ASS_LISTOUT+1
|
||
MOV OUT_NXT_PTR,BX ;SAVE POINTER
|
||
CALL OUT_ASSIGN
|
||
CALL dword ptr CS:[STOP_CHK_rtn]
|
||
POP SI
|
||
POP CX
|
||
RET
|
||
LISTOUTP ENDP
|
||
|
||
; WRITE STATUS
|
||
;
|
||
PRNWRSTP PROC FAR
|
||
PRN_WRST:
|
||
CLD
|
||
PUSH CS
|
||
POP DS
|
||
|
||
MOV BIOS_FLAG,1
|
||
MOV BL,ASS_LISTOUT ;GET DEV-NO.
|
||
MOV OUT_RTN_CNT,BL
|
||
MOV BX,OFFSET ASS_LISTOUT +1
|
||
MOV OUT_NXT_PTR,BX ;SAVE POINTER
|
||
MOV STS_SAVE,0
|
||
CALL NEAR PTR STS_ASSIGN
|
||
CALL DWORD PTR CS:[STOP_CHK_RTN]
|
||
MOV AX,STS_SAVE
|
||
RET
|
||
PRNWRSTP ENDP
|
||
|
||
PAGE
|
||
|
||
;********************************************************
|
||
;* *
|
||
;* CLOCK ROUTINE *
|
||
;* *
|
||
;********************************************************
|
||
;
|
||
CLK_READ:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR cs:[CLK_READ_RTN]
|
||
|
||
CLK_WRIT:
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
JMP DWORD PTR cs:[CLK_WRIT_RTN]
|
||
|
||
PAGE
|
||
;********************************************************
|
||
;* *
|
||
;* SUBROUTINES *
|
||
;* *
|
||
;********************************************************
|
||
;
|
||
OUT_ASSIGN:
|
||
PUSH CS
|
||
POP DS
|
||
MOV BL,[BX]
|
||
XOR BH,BH
|
||
SHL BX,1
|
||
PUSH CX
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
CALL OUT_DEV_TBL[BX]
|
||
POP CX
|
||
SUB OUT_RTN_CNT,1
|
||
JZ OUT_ASS_DONE
|
||
INC OUT_NXT_PTR
|
||
MOV BX,OUT_NXT_PTR
|
||
JMP SHORT OUT_ASSIGN
|
||
OUT_ASS_DONE:
|
||
RET
|
||
|
||
|
||
STS_ASSIGN:
|
||
PUSH CS
|
||
POP DS
|
||
MOV BL,[BX]
|
||
XOR BH,BH
|
||
SHL BX,1
|
||
;--------------------------------------------------------- DOS5 90/12/17 --
|
||
cmp inHMA,0
|
||
jz @f
|
||
call EnsureA20On ; assure a20 enabled ;M001
|
||
@@:
|
||
;--------------------------------------------------------------------------
|
||
CALL OUT_STS_TBL[BX]
|
||
OR STS_SAVE,AX
|
||
SUB OUT_RTN_CNT,1
|
||
JZ STS_ASS_DONE
|
||
INC OUT_NXT_PTR
|
||
MOV BX,OUT_NXT_PTR
|
||
JMP SHORT STS_ASSIGN
|
||
STS_ASS_DONE:
|
||
RET
|
||
|
||
;********************************************************
|
||
;* *
|
||
;* DUMMY DEVICE *
|
||
;* *
|
||
;********************************************************
|
||
;
|
||
DUMMRDY:
|
||
MOV AX,0100H
|
||
DUMMOUT:
|
||
RET
|
||
|
||
; M001 - BEGIN
|
||
|
||
;************************************************************************
|
||
;* *
|
||
;* EnsureA20On - ensure that a20 is enabled if we're running *
|
||
;* in the HMA before interrupt entry points into Bios_Code *
|
||
;* *
|
||
;************************************************************************
|
||
|
||
HiMem label dword
|
||
dw 90h
|
||
dw 0ffffh
|
||
|
||
LoMem label dword
|
||
dw 80h
|
||
dw 0h
|
||
|
||
EnsureA20On proc near
|
||
assume ds:nothing,es:nothing
|
||
;----------------------------------------------- DOS5 91/02/22 -------
|
||
push ds
|
||
push es
|
||
push cx
|
||
push si
|
||
push di
|
||
lds si, HiMem
|
||
les di, LoMem
|
||
mov cx, 8
|
||
rep cmpsw
|
||
pop di
|
||
pop si
|
||
pop cx
|
||
pop es
|
||
pop ds
|
||
jz ea_enable
|
||
ret
|
||
;---------------------------------------------------------------------
|
||
; call IsA20Off
|
||
; jz ea_enable
|
||
; ret
|
||
;
|
||
;EnableA20 proc near ; M041
|
||
;---------------------------------------------------------------------
|
||
ea_enable:
|
||
push ax
|
||
push bx
|
||
mov ah,5 ; localenablea20
|
||
call xms
|
||
pop bx
|
||
pop ax
|
||
bie_done:
|
||
ret
|
||
|
||
EnsureA20On endp
|
||
;
|
||
; M001 - END
|
||
;----------------------------------------------- DOS5 91/02/22 ------
|
||
;; M041 : BEGIN
|
||
;;
|
||
;
|
||
;BEFORE_HMA proc near
|
||
; cmp inHMA, 0 ; M041
|
||
; jz skipa20 ; M041
|
||
; cmp HMAinprogress,0
|
||
; jne @f
|
||
; mov A20WasOff, 0 ; M041 Assume A20 ON
|
||
; call IsA20off ; M041 A20 Off?
|
||
; jnz @f ; M041
|
||
; mov A20WasOff, 0ffh ; M041 Yes
|
||
; call EnableA20 ; assure a20 enabled ;M001
|
||
;@@:
|
||
; inc HMAinprogress
|
||
;skipa20:
|
||
; ret
|
||
;BEFORE_HMA endp
|
||
;
|
||
;
|
||
;AFTER_HMA proc near
|
||
; pushf ; M041
|
||
; cmp inHMA, 0
|
||
; jz @f
|
||
; dec HMAinprogress
|
||
; jnz @f
|
||
; cmp A20WasOff, 0 ; M041
|
||
; jz @f ; M041
|
||
; call DisableA20 ; M041
|
||
;@@: ; M041
|
||
; popf ; M041
|
||
; ret
|
||
;AFTER_HMA endp
|
||
;
|
||
;;----------------------------------------------------------------------------
|
||
;;
|
||
;; procedure : IsA20Off
|
||
;;
|
||
;;----------------------------------------------------------------------------
|
||
;;
|
||
;IsA20Off proc near
|
||
; push ds
|
||
; push es
|
||
; push cx
|
||
; push si
|
||
; push di
|
||
; lds si, HiMem
|
||
; les di, LoMem
|
||
; mov cx, 8
|
||
; rep cmpsw
|
||
; pop di
|
||
; pop si
|
||
; pop cx
|
||
; pop es
|
||
; pop ds
|
||
; ret
|
||
;IsA20Off endp
|
||
;
|
||
;;
|
||
;;----------------------------------------------------------------------------
|
||
;;
|
||
;; procedure : DisableA20
|
||
;;
|
||
;;----------------------------------------------------------------------------
|
||
;;
|
||
;DisableA20 proc near
|
||
; push ax
|
||
; push bx
|
||
; mov ah,6 ; localdisable a20
|
||
; call xms
|
||
; pop bx
|
||
; pop ax
|
||
; ret
|
||
;DisableA20 endp
|
||
;
|
||
;; M041 : END
|
||
;-----------------------------------------------------------------------
|
||
|
||
;*********************************************************************
|
||
;*
|
||
;* PATCH AREA
|
||
;*
|
||
;*********************************************************************
|
||
PATCH_AREA_START:
|
||
|
||
;----------------------------------------------- DOS5 92/02/04 -------
|
||
;<patch BIOS50-P08>
|
||
extrn FILESEMM386EXE:byte
|
||
public patch03
|
||
|
||
remchar db "REM "
|
||
noems db "NOEMS"
|
||
noems_flg db 0
|
||
|
||
patch03: ;called from readdos
|
||
push di
|
||
rep cmpsb
|
||
jnz reduce_mm
|
||
|
||
pop di
|
||
push di
|
||
mov cx,di
|
||
mov al,0dh
|
||
std
|
||
repnz scasb
|
||
cld
|
||
jcxz xxx
|
||
inc di
|
||
@@: inc di
|
||
xxx: cmp byte ptr es:[di],0ah
|
||
je @b
|
||
cmp byte ptr es:[di]," "
|
||
je @b
|
||
push si
|
||
mov si,offset remchar
|
||
mov cx,4
|
||
repz cmpsb
|
||
pop si
|
||
jz dont_reduce_mm ;it's a REM
|
||
|
||
cmp si,offset FILESEMM386EXE
|
||
db 90h,90h
|
||
; jae @f
|
||
xor cx,cx
|
||
jmp short reduce_mm
|
||
|
||
@@: pop di
|
||
push di
|
||
@@: cmp byte ptr es:[di],"/"
|
||
je chk_noems
|
||
cmp byte ptr es:[di],0dh
|
||
je reduce_mm
|
||
cmp byte ptr es:[di],1ah
|
||
je reduce_mm
|
||
inc di
|
||
jmp @b
|
||
chk_noems:
|
||
mov [noems_flg],1 ;assume /NOEMS
|
||
inc di
|
||
mov si,offset noems
|
||
mov cx,5
|
||
repz cmpsb
|
||
jz dont_reduce_mm ;has a /NOEMS option
|
||
mov [noems_flg],0 ;clear /NOEMS
|
||
jmp @b
|
||
|
||
|
||
dont_reduce_mm:
|
||
add cx,1 ;nonzero
|
||
|
||
reduce_mm:
|
||
pop di
|
||
ret
|
||
|
||
;patch04: ; called from sysconf
|
||
; jb got_mm
|
||
; cmp byte ptr cs:[noems_flg],1
|
||
; je got_mm
|
||
; sub ax,64
|
||
;got_mm:
|
||
; retf
|
||
;---------------------------------------------------------------------
|
||
|
||
;----------------------------------------------- DOS5A 92/04/08 ------
|
||
;<patch BIOS50-P15>
|
||
Win386_Info equ 0fe2h ;addr of MSDOS.SYS Win386_Info
|
||
|
||
i2f_patch:
|
||
jne @f
|
||
jmp handle_multmult
|
||
@@:
|
||
cmp ax,4b05h
|
||
je switcher_func
|
||
jmp i2f_iret
|
||
|
||
switcher_func:
|
||
push ds
|
||
push cs
|
||
pop ds
|
||
assume ds:Bios_Data
|
||
|
||
mov word ptr [SI_Next], bx ; Hook our structure into chain
|
||
mov word ptr [SI_Next + 2], es
|
||
mov bx, offset Win386_SI ; point ES:BX to Win386_SI
|
||
push ds ;
|
||
pop es ;
|
||
|
||
mov word ptr [Sw_Next], bx ; Hook our structure into chain
|
||
mov word ptr [Sw_Next + 2], es
|
||
mov bx, offset Switcher_SI ; point ES:BX to Switcher_SI
|
||
|
||
mov es,[SEG_DOS] ;MSDOS.SYS data segment
|
||
mov word ptr es:[Win386_Info+2],bx
|
||
mov word ptr es:[Win386_Info+4],ds
|
||
mov bx,Win386_Info
|
||
|
||
pop ds
|
||
jmp i2f_iret
|
||
assume ds:nothing
|
||
|
||
Switcher_SI label byte ; Startup Info for Switcher
|
||
Sw_Version db 3, 0 ; for Win386 3.0
|
||
Sw_Next dd ? ; pointer to next info structure
|
||
dd 0 ; a field we don't need
|
||
dd 0 ; another field we don't need
|
||
Sw_Instance dw Instance_Table2, Bios_Data ; far pointer to instance table
|
||
|
||
;
|
||
; This table gives Switcher the instance data
|
||
;
|
||
Instance_Table2 label dword
|
||
dw 00H,00H ; INTERRUPT VECTOR
|
||
dw 0400h ; ...400h bytes
|
||
dd 0 ; terminate the instance table
|
||
dw 9*3 dup (0) ; patch area for instance table
|
||
;---------------------------------------------------------------------
|
||
|
||
;----------------------------------------------- DOS5A 92/04/17 ------
|
||
;<patch BIOS50-P16>
|
||
public patch2k_2
|
||
|
||
patch2k_2:
|
||
mov cx,[HD_LNG]
|
||
@@: cmp cx,256
|
||
je @f
|
||
shl ax,1
|
||
rcl dx,1
|
||
shr cx,1
|
||
jmp @b
|
||
@@:
|
||
ret
|
||
;---------------------------------------------------------------------
|
||
|
||
;----------------------------------------------- DOS5 92/07/08 -------
|
||
;<patch BIOS50-P21>
|
||
assume ds:Bios_Data
|
||
public patch05
|
||
|
||
patch05 proc far
|
||
mov ds,word ptr [PR_HEADER+2]
|
||
call dword ptr cs:[PR_HEADER]
|
||
ret
|
||
patch05 endp
|
||
;---------------------------------------------------------------------
|
||
|
||
public DSK_144, mode3_fd, thisdrv_3mode
|
||
|
||
;1.44MBFD (IBM PS/2 FORMAT (18SECTOR/TRACK))
|
||
DSK_144 dw 512 ;SECTOR LENGTH
|
||
db 1 ;SECTOR/ALLOC UNIT
|
||
dw 1 ;RESERVED SECTOR
|
||
db 2 ;FATS
|
||
dw 0e0h ;DIRECTORY ENTRY
|
||
dw 0b40h ;total sec
|
||
db 0f0h ;MEDIA TYPE
|
||
dw 9 ;SECTOR/FAT
|
||
dw 12h ;sec/trk
|
||
dw 2 ;heads
|
||
dd 0 ;hidden sec
|
||
dd 0 ;large total sec
|
||
|
||
mode3_fd db 0
|
||
thisdrv_3mode db 0
|
||
|
||
;---------------
|
||
extrn patch144_d2_ret:near, SKIP_SBT:near
|
||
|
||
public patch144_d2
|
||
|
||
patch144_d2:
|
||
jne @f ;not 640kb media on 1MB I/F
|
||
pop ax
|
||
jmp patch144_d2_ret
|
||
@@:
|
||
cmp al,30h ;1.44MB media on 1MB I/F?
|
||
pop ax
|
||
jne @f
|
||
xor al,0a0h ;yes, treat as 9xh
|
||
@@:
|
||
jmp SKIP_SBT
|
||
;---------------------------------------------------------------------
|
||
|
||
PATCH_AREA:
|
||
DB 512 - (PATCH_AREA - PATCH_AREA_START ) DUP (0)
|
||
;*********************************************************************
|
||
;*
|
||
;* DISPOSABLE BDS AREA
|
||
;*
|
||
;*********************************************************************
|
||
PUBLIC BDS21
|
||
BDS21 DW BDS22 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE21:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT21 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID21 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS21 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB21 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
TRACK21 DB -1 ;Last track accessed on this drive
|
||
TIM_LO21 DW -1 ;Keep these two contiguous (?)
|
||
TIM_HI21 DW -1
|
||
;------------------------------------------------------------------------------
|
||
VOLID21 db "NO NAME ",0 ; volume id for this disk
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
BDS22 DW BDS23 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE22:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT22 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID22 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS22 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB22 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
TRACK22 DB -1 ;Last track accessed on this drive
|
||
TIM_LO22 DW -1 ;Keep these two contiguous (?)
|
||
TIM_HI22 DW -1
|
||
;------------------------------------------------------------------------------
|
||
VOLID22 db "NO NAME ",0 ; volume id for this disk
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
BDS23 DW BDS24 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE23:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT23 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID23 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS23 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB23 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
TRACK23 DB -1 ;Last track accessed on this drive
|
||
TIM_LO23 DW -1 ;Keep these two contiguous (?)
|
||
TIM_HI23 DW -1
|
||
;------------------------------------------------------------------------------
|
||
VOLID23 db "NO NAME ",0 ; volume id for this disk
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
BDS24 DW BDS25 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE24:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT24 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID24 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS24 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB24 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
TRACK24 DB -1 ;Last track accessed on this drive
|
||
TIM_LO24 DW -1 ;Keep these two contiguous (?)
|
||
TIM_HI24 DW -1
|
||
;------------------------------------------------------------------------------
|
||
VOLID24 db "NO NAME ",0 ; volume id for this disk
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
BDS25 DW BDS26 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE25:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT25 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID25 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS25 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB25 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
TRACK25 DB -1 ;Last track accessed on this drive
|
||
TIM_LO25 DW -1 ;Keep these two contiguous (?)
|
||
TIM_HI25 DW -1
|
||
;------------------------------------------------------------------------------
|
||
VOLID25 db "NO NAME ",0 ; volume id for this disk
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
BDS26 DW -1 ;Link to next structure
|
||
DW DATAGRP
|
||
DB 25 ;ROM DISK INT Drive Number
|
||
DB 0 ;Logical Drive Letter
|
||
FDRIVE26:
|
||
DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors
|
||
DB 0FEH ;Media descriptor 89/07/24
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
DB 0 ; TRUE => Large fats
|
||
OPCNT26 DW 0 ;Open Ref. Count
|
||
;;;;;VOLID26 DB "NO NAME ",0 ;Volume ID for this disk
|
||
DB 4 ;Form Factor 89/07/24
|
||
FLAGS26 DW 0022H ;Various Flags 89/07/24
|
||
; DB 9 dup (0) ;Reserved for future use
|
||
dw 77 ; number of cylinders
|
||
RecBPB26 DW 1024 ;Physical sector size in bytes
|
||
DB 1 ;Sectors/allocation unit
|
||
DW 1 ;Reserved sectors for DOS
|
||
DB 2 ;No. allocation tables
|
||
DW 192 ;Number directory entries
|
||
DW 77*8*2 ;Number sectors (at 512 bytes ea.)
|
||
DB 0FEh ;Media descriptor, initially 00H.
|
||
DW 2 ;Number of FAT sectors
|
||
DW 8 ;Sector limit
|
||
DW 2 ;Head limit 89/07/24
|
||
DW 0 ;Hidden sector count
|
||
;------------------------------------------------------------------------------
|
||
dw 0 ; hidden sector (high)
|
||
dw 0 ; number sectors (low)
|
||
dw 0 ; number sectors (high)
|
||
;------------------------------------------------------------------------------
|
||
;;;;; DB 0 ; TRUE => Large fats
|
||
;;;;; db 11 dup (?) ; filler for balance
|
||
db 6 dup (?) ; filler for balance
|
||
TRACK26 DB -1 ;Last track accessed on this drive
|
||
TIM_LO26 DW -1 ;Keep these two contiguous (?)
|
||
TIM_HI26 DW -1
|
||
;------------------------------------------------------------------------------
|
||
VOLID26 db "NO NAME ",0 ; volume id for this disk
|
||
dd 0 ; current volume serial from boot record
|
||
db "FAT12 ",0 ; current file system id from boot record
|
||
;------------------------------------------------------------------------------
|
||
|
||
;----------------------------------------------- DOS5 91/02/20 -------
|
||
;*
|
||
;* These are disposable data used only in initial time
|
||
;*
|
||
public B_DATA_END, HD_MEDIA, HDS_MEDIA
|
||
|
||
B_DATA_END LABEL WORD
|
||
HD_MEDIA DB (4+11+8)*4 DUP (0) ; room for serial num
|
||
; volume label, file sys id
|
||
HD_MEDIA1 DB (4+11+8)*4 DUP (0) ; room for serial num
|
||
; volume label, file sys id
|
||
HD_MEDIA2 DB (4+11+8)*4 DUP (0) ; room for serial num
|
||
; volume label, file sys id
|
||
HD_MEDIA3 DB (4+11+8)*4 DUP (0) ; room for serial num
|
||
; volume label, file sys id
|
||
HDS_MEDIA DB (4+11+8)*4 DUP (0) ; room for serial num
|
||
; volume label, file sys id
|
||
HDS_MEDIA1 DB (4+11+8)*4 DUP (0) ; room for serial num
|
||
; volume label, file sys id
|
||
HDS_MEDIA2 DB (4+11+8)*4 DUP (0) ; room for serial num
|
||
; volume label, file sys id
|
||
HDS_MEDIA3 DB (4+11+8)*4 DUP (0) ; room for serial num
|
||
; volume label, file sys id
|
||
HDS_MEDIA4 DB (4+11+8)*4 DUP (0) ; room for serial num
|
||
; volume label, file sys id
|
||
HDS_MEDIA5 DB (4+11+8)*4 DUP (0) ; room for serial num
|
||
; volume label, file sys id
|
||
HDS_MEDIA6 DB (4+11+8)*4 DUP (0) ; room for serial num
|
||
; volume label, file sys id
|
||
HDS_MEDIA7 DB (4+11+8)*4 DUP (0) ; room for serial num
|
||
; volume label, file sys id
|
||
;---------------------------------------------------------------------
|
||
;************************************************************************
|
||
;* *
|
||
;* END OF BIO2 MODULE *
|
||
;* *
|
||
;************************************************************************
|
||
Bios_data ends
|
||
|
||
Bios_Code segment word public 'Bios_Code'
|
||
ASSUME CS:BIOS_CODE,DS:datagrp
|
||
|
||
|
||
PUBLIC BCode_start
|
||
PUBLIC BDATA_SEG
|
||
|
||
org 30h ;dos5 vdisk header dummy
|
||
BCode_start :
|
||
|
||
BDATA_SEG DW 0060H
|
||
|
||
|
||
;************************************************************************
|
||
;* *
|
||
;* seg_reinit is called with ax = our new code segment value, *
|
||
;* trashes di, cx, es *
|
||
;* *
|
||
;* cas -- should be made disposable! *
|
||
;* *
|
||
;************************************************************************
|
||
|
||
public seg_reinit
|
||
seg_reinit proc far
|
||
assume ds:nothing,es:nothing
|
||
|
||
;----------------------------------------------- DOS5 90/02/19 -------
|
||
PUSH DS
|
||
MOV DS,BDATA_SEG
|
||
assume ds:Bios_Data
|
||
TEST DS:[EXFNC_FLG],03H
|
||
JZ NOT_SUPPORT_ROM
|
||
XOR CX,CX
|
||
MOV ES,CX
|
||
MOV CX,WORD PTR ES:[05EAH]
|
||
CMP WORD PTR DS:[BIOS_SEG],CX
|
||
JNE SEG_REINIT10
|
||
MOV DI,05EAH
|
||
STOSW ;OUR SEGMENT -> DISK_PRM0+2
|
||
SEG_REINIT10:
|
||
MOV CX,WORD PTR ES:[05EEH]
|
||
CMP WORD PTR DS:[BIOS_SEG],CX
|
||
JNE NOT_SUPPORT_ROM
|
||
MOV DI,05EEH
|
||
STOSW ;OUR SEGMENT -> DISK_PRM1+2
|
||
NOT_SUPPORT_ROM:
|
||
POP DS
|
||
assume ds:nothing
|
||
;---------------------------------------------------------------------
|
||
mov es,bdata_seg
|
||
assume es:Bios_Data
|
||
;----------------------------------------------- DOS5 90/12/25 -------
|
||
MOV ES:[BIOS_SEG],AX
|
||
;---------------------------------------------------------------------
|
||
mov di,2+offset cdev
|
||
mov cx,((offset end_BC_entries) - (offset cdev))/4
|
||
|
||
seg_reinit_1:
|
||
stosw ; modify Bios_Code entry points
|
||
inc di
|
||
inc di
|
||
loop seg_reinit_1
|
||
ret
|
||
seg_reinit endp
|
||
|
||
|
||
;
|
||
; OUTER DRIVER PROCESS
|
||
;
|
||
PRNOUT_FAR PROC FAR
|
||
PUSH DS
|
||
PUSH ES
|
||
MOV ES,CS:[BDATA_SEG]
|
||
MOV AX,0065H ;DUMMY STATE
|
||
CMP ES:PR_HEADER+2,0
|
||
JE PRNOUT10
|
||
MOV DS,ES:PR_HEADER+2
|
||
MOV ES:WORD PTR PR_HEADER,15H ;SET OFFSET TO PROUT
|
||
CALL ES:DWORD PTR PR_HEADER
|
||
PRNOUT10:
|
||
POP ES
|
||
POP DS
|
||
RET
|
||
PRNOUT_FAR ENDP
|
||
|
||
PRNRDY_FAR PROC FAR
|
||
PUSH DS
|
||
PUSH ES
|
||
MOV ES,CS:[BDATA_SEG]
|
||
MOV AX,6500H ;DUMMY STATE
|
||
CMP ES:PR_HEADER+2,0
|
||
JE PRNRDY10
|
||
MOV DS,ES:PR_HEADER+2
|
||
MOV ES:WORD PTR PR_HEADER,12H ;SET OFFSET TO PRRDY
|
||
CALL ES:DWORD PTR PR_HEADER
|
||
PRNRDY10:
|
||
POP ES
|
||
POP DS
|
||
RET
|
||
PRNRDY_FAR ENDP
|
||
|
||
;*******86/09/23********
|
||
;
|
||
; DRIVER CALL ROUTINE
|
||
;
|
||
|
||
;
|
||
; AUX (CH NO.0) DEVICE DRIVER ENTRY TABLE
|
||
;
|
||
|
||
;----------------------------------------------------- 871019 --------
|
||
;S0IN_ADDR EQU 50H
|
||
S0IN_ADDR EQU 12H
|
||
;---------------------------------------------------------------------
|
||
S0STAT_ADDR EQU S0IN_ADDR + 3
|
||
S0FLUSH_ADDR EQU S0STAT_ADDR + 3
|
||
S0OUT_ADDR EQU S0FLUSH_ADDR + 3
|
||
S0RDY_ADDR EQU S0OUT_ADDR + 3
|
||
|
||
S0IN_FAR PROC FAR
|
||
CALL CHK_AUX_DRV ;CHECK AUX DEVICE DRIVER
|
||
JZ S0IN_10 ;NO DRIVER
|
||
PUSH DS
|
||
PUSH ES
|
||
MOV ES,CS:[BDATA_SEG]
|
||
MOV DS,ES:AUX_HEADER+2 ;SET SEGMENT ADDRESS
|
||
MOV ES:WORD PTR AUX_HEADER,S0IN_ADDR ;SET ENTRY OFFSET ADDRESS
|
||
CALL ES:DWORD PTR AUX_HEADER ;CALL AUX DEVICE DRIVER
|
||
POP ES
|
||
POP DS
|
||
MOV AH,01H ;SET DON
|
||
S0IN_10:
|
||
RET
|
||
S0IN_FAR ENDP
|
||
|
||
|
||
S0STAT_FAR PROC FAR
|
||
CALL CHK_AUX_DRV ;CHECK AUX DEVICE DRIVER
|
||
JZ S0STAT_20 ;NO DRIVER
|
||
PUSH DS
|
||
PUSH ES
|
||
MOV ES,CS:[BDATA_SEG]
|
||
MOV DS,ES:AUX_HEADER+2 ;SET SEGMENT ADDRESS
|
||
MOV ES:WORD PTR AUX_HEADER,S0STAT_ADDR ;SET ENTRY OFFSET ADDRESS
|
||
CALL ES:DWORD PTR AUX_HEADER ;CALL AUX DEVICE DRIVER
|
||
POP ES
|
||
POP DS
|
||
JZ S0STAT_10 ;BUSY ?
|
||
MOV AH,01H ;NO , SET DON
|
||
JMP SHORT S0STAT_20
|
||
S0STAT_10:
|
||
MOV AH,03H ;SET BUSY
|
||
S0STAT_20:
|
||
RET
|
||
S0STAT_FAR ENDP
|
||
|
||
S0FLUSH_FAR PROC FAR
|
||
CALL CHK_AUX_DRV ;CHECK AUX DEVICE DRIVER
|
||
JZ S0FLUSH_10 ;NO DRIVER
|
||
PUSH DS
|
||
PUSH ES
|
||
MOV ES,CS:[BDATA_SEG]
|
||
MOV DS,ES:AUX_HEADER+2 ;SET SEGMENT ADDRESS
|
||
MOV ES:WORD PTR AUX_HEADER,S0FLUSH_ADDR ;SET ENTRY OFFSET ADDRESS
|
||
CALL ES:DWORD PTR AUX_HEADER ;CALL AUX DEVICE DRIVER
|
||
POP ES
|
||
POP DS
|
||
MOV AH,01H ;SET DON
|
||
S0FLUSH_10:
|
||
RET
|
||
S0FLUSH_FAR ENDP
|
||
|
||
S0OUT_FAR PROC FAR
|
||
CALL CHK_AUX_DRV ;CHECK AUX DEVICE DRIVER
|
||
JZ S0OUT_10 ;NO DRIVER
|
||
PUSH DS
|
||
PUSH ES
|
||
MOV ES,CS:[BDATA_SEG]
|
||
MOV DS,ES:AUX_HEADER+2 ;SET SEGMENT ADDRESS
|
||
MOV ES:WORD PTR AUX_HEADER,S0OUT_ADDR ;SET ENTRY OFFSET ADDRESS
|
||
CALL ES:DWORD PTR AUX_HEADER ;CALL AUX DEVICE DRIVER
|
||
POP ES
|
||
POP DS
|
||
MOV AH,01H ;SET DON
|
||
S0OUT_10:
|
||
RET
|
||
S0OUT_FAR ENDP
|
||
|
||
S0RDY_FAR PROC FAR
|
||
PUSH DS
|
||
PUSH ES
|
||
MOV ES,CS:[BDATA_SEG]
|
||
MOV AX,0300H ;SET DUMMY STATUS (BUSY)
|
||
CMP ES:WORD PTR AUX_HEADER+2,0 ;DOES AUX DEVICE DRIVER EXIST ?
|
||
JE S0RDY_10 ;NO
|
||
MOV DS,ES:AUX_HEADER+2 ;RDYT SEGMENT ADDRESS
|
||
MOV ES:WORD PTR AUX_HEADER,S0RDY_ADDR ;SET ENTRY OFFSET ADDRESS
|
||
CALL ES:DWORD PTR AUX_HEADER ;CALL AUX DEVICE DRIVER
|
||
S0RDY_10:
|
||
POP ES
|
||
POP DS
|
||
RET
|
||
S0RDY_FAR ENDP
|
||
|
||
;
|
||
;AUX (CH NO.1) DEVICE DRIVER ENTRY TABLE
|
||
;
|
||
|
||
S1IN_ADDR EQU 60H
|
||
S1STAT_ADDR EQU S1IN_ADDR + 3
|
||
S1FLUSH_ADDR EQU S1STAT_ADDR + 3
|
||
S1OUT_ADDR EQU S1FLUSH_ADDR + 3
|
||
S1RDY_ADDR EQU S1OUT_ADDR + 3
|
||
|
||
S1IN_FAR PROC FAR
|
||
CALL CHK_AUX_DRV ;CHECK AUX DEVICE DRIVER
|
||
JZ S1IN_10 ;NO DRIVER
|
||
PUSH DS
|
||
PUSH ES
|
||
MOV ES,CS:[BDATA_SEG]
|
||
MOV DS,ES:AUX1_HEADER+2 ;SET SEGMENT ADDRESS
|
||
MOV ES:WORD PTR AUX1_HEADER,S1IN_ADDR ;SET ENTRY OFFSET ADDRESS
|
||
CALL ES:DWORD PTR AUX1_HEADER ;CALL AUX DEVICE DRIVER
|
||
POP ES
|
||
POP DS
|
||
MOV AH,01H ;SET DON
|
||
S1IN_10:
|
||
RET
|
||
S1IN_FAR ENDP
|
||
|
||
S1STAT_FAR PROC FAR
|
||
CALL CHK_AUX_DRV ;CHECK AUX DEVICE DRIVER
|
||
JZ S1STAT_20 ;NO DRIVER
|
||
PUSH DS
|
||
PUSH ES
|
||
MOV ES,CS:[BDATA_SEG]
|
||
MOV DS,ES:AUX1_HEADER+2 ;SET SEGMENT ADDRESS
|
||
MOV ES:WORD PTR AUX1_HEADER,S1STAT_ADDR ;SET ENTRY OFFSET ADDRESS
|
||
CALL ES:DWORD PTR AUX1_HEADER ;CALL AUX DEVICE DRIVER
|
||
POP ES
|
||
POP DS
|
||
JZ S1STAT_10 ;BUSY ?
|
||
MOV AH,01H ;NO , SET DON
|
||
JMP SHORT S1STAT_20
|
||
S1STAT_10:
|
||
MOV AH,03H ;SET BUSY
|
||
S1STAT_20:
|
||
RET
|
||
S1STAT_FAR ENDP
|
||
|
||
S1FLUSH_FAR PROC FAR
|
||
CALL CHK_AUX_DRV ;CHECK AUX DEVICE DRIVER
|
||
JZ S1FLUSH_10 ;NO DRIVER
|
||
PUSH DS
|
||
PUSH ES
|
||
MOV ES,CS:[BDATA_SEG]
|
||
MOV DS,ES:AUX1_HEADER+2 ;SET SEGMENT ADDRESS
|
||
MOV ES:WORD PTR AUX1_HEADER,S1FLUSH_ADDR ;SET ENTRY OFFSET ADDRESS
|
||
CALL ES:DWORD PTR AUX1_HEADER ;CALL AUX DEVICE DRIVER
|
||
POP ES
|
||
POP DS
|
||
MOV AH,01H ;SET DON
|
||
S1FLUSH_10:
|
||
RET
|
||
S1FLUSH_FAR ENDP
|
||
|
||
S1OUT_FAR PROC FAR
|
||
CALL CHK_AUX_DRV ;CHECK AUX DEVICE DRIVER
|
||
JZ S1OUT_10 ;NO DRIVER
|
||
PUSH DS
|
||
PUSH ES
|
||
MOV ES,CS:[BDATA_SEG]
|
||
MOV DS,ES:AUX1_HEADER+2 ;SET SEGMENT ADDRESS
|
||
MOV ES:WORD PTR AUX1_HEADER,S1OUT_ADDR ;SET ENTRY OFFSET ADDRESS
|
||
CALL ES:DWORD PTR AUX1_HEADER ;CALL AUX DEVICE DRIVER
|
||
POP ES
|
||
POP DS
|
||
MOV AH,01H ;SET DON
|
||
S1OUT_10:
|
||
RET
|
||
S1OUT_FAR ENDP
|
||
|
||
S1RDY_FAR PROC FAR
|
||
PUSH DS
|
||
PUSH ES
|
||
MOV ES,cs:[bdata_seg]
|
||
MOV AX,0300H ;SET DUMMY STATUS (BUSY)
|
||
CMP ES:WORD PTR AUX1_HEADER+2,0 ;DOES AUX DEVICE DRIVER EXIST ?
|
||
JE S1RDY_10 ;NO
|
||
MOV DS,ES:AUX1_HEADER+2 ;RDYT SEGMENT ADDRESS
|
||
MOV ES:WORD PTR AUX1_HEADER,S1RDY_ADDR ;SET ENTRY OFFSET ADDRESS
|
||
CALL ES:DWORD PTR AUX1_HEADER ;CALL AUX DEVICE DRIVER
|
||
S1RDY_10:
|
||
POP ES
|
||
POP DS
|
||
RET
|
||
S1RDY_FAR ENDP
|
||
|
||
;AUX (CH NO.2) DEVICE DRIVER ENTRY TABLE
|
||
|
||
S2IN_ADDR EQU 70H
|
||
S2STAT_ADDR EQU S2IN_ADDR + 3
|
||
S2FLUSH_ADDR EQU S2STAT_ADDR + 3
|
||
S2OUT_ADDR EQU S2FLUSH_ADDR + 3
|
||
S2RDY_ADDR EQU S2OUT_ADDR + 3
|
||
|
||
S2IN_FAR PROC FAR
|
||
CALL CHK_AUX_DRV ;CHECK AUX DEVICE DRIVER
|
||
JZ S2IN_10 ;NO DRIVER
|
||
PUSH DS
|
||
PUSH ES
|
||
MOV ES,CS:[BDATA_SEG]
|
||
MOV DS,ES:AUX2_HEADER+2 ;SET SEGMENT ADDRESS
|
||
MOV ES:WORD PTR AUX2_HEADER,S2IN_ADDR ;SET ENTRY OFFSET ADDRESS
|
||
CALL ES:DWORD PTR AUX2_HEADER ;CALL AUX DEVICE DRIVER
|
||
POP ES
|
||
POP DS
|
||
MOV AH,01H ;SET DON
|
||
S2IN_10:
|
||
RET
|
||
S2IN_FAR ENDP
|
||
|
||
S2STAT_FAR PROC FAR
|
||
CALL CHK_AUX_DRV ;CHECK AUX DEVICE DRIVER
|
||
JZ S2STAT_20 ;NO DRIVER
|
||
PUSH DS
|
||
PUSH ES
|
||
MOV ES,CS:[BDATA_SEG]
|
||
MOV DS,ES:AUX2_HEADER+2 ;SET SEGMENT ADDRESS
|
||
MOV ES:WORD PTR AUX2_HEADER,S2STAT_ADDR ;SET ENTRY OFFSET ADDRESS
|
||
CALL ES:DWORD PTR AUX2_HEADER ;CALL AUX DEVICE DRIVER
|
||
POP ES
|
||
POP DS
|
||
JZ S2STAT_10 ;BUSY ?
|
||
MOV AH,01H ;NO , SET DON
|
||
JMP SHORT S2STAT_20
|
||
S2STAT_10:
|
||
MOV AH,03H ;SET BUSY
|
||
S2STAT_20:
|
||
RET
|
||
S2STAT_FAR ENDP
|
||
|
||
S2FLUSH_FAR PROC FAR
|
||
CALL CHK_AUX_DRV ;CHECK AUX DEVICE DRIVER
|
||
JZ S2FLUSH_10 ;NO DRIVER
|
||
PUSH DS
|
||
PUSH ES
|
||
MOV ES,CS:[BDATA_SEG]
|
||
MOV DS,ES:AUX2_HEADER+2 ;SET SEGMENT ADDRESS
|
||
MOV ES:WORD PTR AUX2_HEADER,S2FLUSH_ADDR ;SET ENTRY OFFSET ADDRESS
|
||
CALL ES:DWORD PTR AUX2_HEADER ;CALL AUX DEVICE DRIVER
|
||
POP ES
|
||
POP DS
|
||
MOV AH,01H ;SET DON
|
||
S2FLUSH_10:
|
||
RET
|
||
S2FLUSH_FAR ENDP
|
||
|
||
S2OUT_FAR PROC FAR
|
||
CALL CHK_AUX_DRV ;CHECK AUX DEVICE DRIVER
|
||
JZ S2OUT_10 ;NO DRIVER
|
||
PUSH DS
|
||
PUSH ES
|
||
MOV ES,CS:[BDATA_SEG]
|
||
MOV DS,ES:AUX2_HEADER+2 ;SET SEGMENT ADDRESS
|
||
MOV ES:WORD PTR AUX2_HEADER,S2OUT_ADDR ;SET ENTRY OFFSET ADDRESS
|
||
CALL ES:DWORD PTR AUX2_HEADER ;CALL AUX DEVICE DRIVER
|
||
POP ES
|
||
POP DS
|
||
MOV AH,01H ;SET DON
|
||
S2OUT_10:
|
||
RET
|
||
S2OUT_FAR ENDP
|
||
|
||
S2RDY_FAR PROC FAR
|
||
PUSH DS
|
||
PUSH ES
|
||
MOV ES,CS:[BDATA_SEG]
|
||
MOV AX,0300H ;SET DUMMY STATUS (BUSY)
|
||
CMP ES:WORD PTR AUX2_HEADER+2,0 ;DOES AUX DEVICE DRIVER EXIST ?
|
||
JE S2RDY_10 ;NO
|
||
MOV DS,ES:AUX2_HEADER+2 ;RDYT SEGMENT ADDRESS
|
||
MOV ES:WORD PTR AUX2_HEADER,S2RDY_ADDR ;SET ENTRY OFFSET ADDRESS
|
||
CALL ES:DWORD PTR AUX2_HEADER ;CALL AUX DEVICE DRIVER
|
||
S2RDY_10:
|
||
POP ES
|
||
POP DS
|
||
RET
|
||
S2RDY_FAR ENDP
|
||
|
||
CHK_AUX_DRV:
|
||
PUSH ES
|
||
MOV ES,CS:[BDATA_SEG]
|
||
CMP ES:WORD PTR AUX_HEADER+2,0 ;DOES AUX DEVICE DRIVER EXIST ?
|
||
POP ES
|
||
JE CHK_AUX_DRV_10 ;NO
|
||
RET ;EXIT CONDITION ZF = 0
|
||
CHK_AUX_DRV_10:
|
||
MOV AX,8103H ;SET DUMMY STATUS (NOT READY)
|
||
RET ;EXIT CONDITION ZF = 1
|
||
;*******86/09/23********
|
||
|
||
;********************************************************
|
||
;* *
|
||
;* CLOCK ROUTINE *
|
||
;* *
|
||
;********************************************************
|
||
;
|
||
CLK_READ_CODERTN:
|
||
CALL GETDATE
|
||
STOSW
|
||
MOV AX,CX
|
||
STOSW
|
||
MOV AX,DX
|
||
STOSW
|
||
JMP EXITRTN
|
||
|
||
CLK_WRIT_CODERTN:
|
||
MOV SI,DI
|
||
LODS WORD PTR ES:[SI]
|
||
CALL SETDATE
|
||
LODS WORD PTR ES:[SI]
|
||
MOV CX,AX
|
||
LODS WORD PTR ES:[SI]
|
||
MOV DX,AX
|
||
CALL SETTIME
|
||
JMP EXITRTN
|
||
|
||
Bios_Code ends
|
||
|
||
END
|
||
|