JWasm v2.18, Aug 14 2023 init.asm ; File : $Workfile$ ; ; Description : ; ; Original Author : DIGITAL RESEARCH ; ; Last Edited By : $CALDERA$ ; ;-----------------------------------------------------------------------; ; Copyright Work of Caldera, Inc. All Rights Reserved. ; ; THIS WORK IS A COPYRIGHT WORK AND CONTAINS CONFIDENTIAL, ; PROPRIETARY AND TRADE SECRET INFORMATION OF CALDERA, INC. ; ACCESS TO THIS WORK IS RESTRICTED TO (I) CALDERA, INC. EMPLOYEES ; WHO HAVE A NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF ; THEIR ASSIGNMENTS AND (II) ENTITIES OTHER THAN CALDERA, INC. WHO ; HAVE ACCEPTED THE CALDERA OPENDOS SOURCE LICENSE OR OTHER CALDERA LICENSE ; AGREEMENTS. EXCEPT UNDER THE EXPRESS TERMS OF THE CALDERA LICENSE ; AGREEMENT NO PART OF THIS WORK MAY BE USED, PRACTICED, PERFORMED, ; COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED, ABRIDGED, ; CONDENSED, EXPANDED, COLLECTED, COMPILED, LINKED, RECAST, ; TRANSFORMED OR ADAPTED WITHOUT THE PRIOR WRITTEN CONSENT OF ; CALDERA, INC. ANY USE OR EXPLOITATION OF THIS WORK WITHOUT ; AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO CRIMINAL AND ; CIVIL LIABILITY. ;-----------------------------------------------------------------------; ; ; *** Current Edit History *** ; *** End of Current Edit History *** ; ; $Log$ ; INIT.ASM 1.25 93/12/07 15:51:27 ; Move int13pointer to offset 0B4h as some app expects it there ; INIT.ASM 1.24 93/11/18 18:57:20 ; Increase amount reserved for COMMAND.COM by 256 bytes ; INIT.ASM 1.23 93/11/17 19:29:26 ; Change default DEBLOCK seg to FFFF for performance reasons ; INIT.ASM 1.19 93/07/22 19:43:59 ; switch over to REQUEST.EQU ; ENDLOG include biosgrps.equ C ; File : $BIOSGRPS.EQU$ C ; C ; Description : C ; C ; Original Author : DIGITAL RESEARCH C ; C ; Last Edited By : $CALDERA$ C ; C ;-----------------------------------------------------------------------; C ; Copyright Work of Caldera, Inc. All Rights Reserved. C ; C ; THIS WORK IS A COPYRIGHT WORK AND CONTAINS CONFIDENTIAL, C ; PROPRIETARY AND TRADE SECRET INFORMATION OF CALDERA, INC. C ; ACCESS TO THIS WORK IS RESTRICTED TO (I) CALDERA, INC. EMPLOYEES C ; WHO HAVE A NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF C ; THEIR ASSIGNMENTS AND (II) ENTITIES OTHER THAN CALDERA, INC. WHO C ; HAVE ACCEPTED THE CALDERA OPENDOS SOURCE LICENSE OR OTHER CALDERA LICENSE C ; AGREEMENTS. EXCEPT UNDER THE EXPRESS TERMS OF THE CALDERA LICENSE C ; AGREEMENT NO PART OF THIS WORK MAY BE USED, PRACTICED, PERFORMED, C ; COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED, ABRIDGED, C ; CONDENSED, EXPANDED, COLLECTED, COMPILED, LINKED, RECAST, C ; TRANSFORMED OR ADAPTED WITHOUT THE PRIOR WRITTEN CONSENT OF C ; CALDERA, INC. ANY USE OR EXPLOITATION OF THIS WORK WITHOUT C ; AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO CRIMINAL AND C ; CIVIL LIABILITY. C ;-----------------------------------------------------------------------; C ; C ; *** Current Edit History *** C ; *** End of Current Edit History *** C ; C ; $Log$ C ; C ; ENDLOG 0000 C CODE segment public byte 'CODE' C CODE ends C 0000 C ENDCODE segment public byte 'ENDCODE' C ENDCODE ends C 0000 C RCODE_ALIGN segment public para 'RCODE' C RCODE_ALIGN ends C 0000 C RCODE segment public word 'RCODE' C RCODE ends C 0000 C RESUMECODE segment public para 'RESUMECODE' C RESUMECODE ends C 0000 C RESBIOS segment public para 'RESBIOS' C RESBIOS ends C 0000 C ICODE segment public word 'ICODE' C ICODE ends C 0000 C IDATA segment public para 'IDATA' C IDATA ends C 0000 C INITCODE segment public para 'INITCODE' C INITCODE ends C 0000 C STACKS segment public para 'STACKS' C STACKS ends C 0000 C INITDATA segment public para 'INITDATA' C INITDATA ends C 0000 C INITPSP segment public para 'INITDATA' C INITPSP ends C 0000 C INITENV segment public para 'INITDATA' C INITENV ends C 0000 C DATAEND segment public para 'INITDATA' C DATAEND ends C include drmacros.equ C ; File : $DRMACROS.EQU$ C ; C ; Description : C ; C ; Original Author : DIGITAL RESEARCH C ; C ; Last Edited By : $CALDERA$ C ; C ;-----------------------------------------------------------------------; C ; Copyright Work of Caldera, Inc. All Rights Reserved. C ; C ; THIS WORK IS A COPYRIGHT WORK AND CONTAINS CONFIDENTIAL, C ; PROPRIETARY AND TRADE SECRET INFORMATION OF CALDERA, INC. C ; ACCESS TO THIS WORK IS RESTRICTED TO (I) CALDERA, INC. EMPLOYEES C ; WHO HAVE A NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF C ; THEIR ASSIGNMENTS AND (II) ENTITIES OTHER THAN CALDERA, INC. WHO C ; HAVE ACCEPTED THE CALDERA OPENDOS SOURCE LICENSE OR OTHER CALDERA LICENSE C ; AGREEMENTS. EXCEPT UNDER THE EXPRESS TERMS OF THE CALDERA LICENSE C ; AGREEMENT NO PART OF THIS WORK MAY BE USED, PRACTICED, PERFORMED, C ; COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED, ABRIDGED, C ; CONDENSED, EXPANDED, COLLECTED, COMPILED, LINKED, RECAST, C ; TRANSFORMED OR ADAPTED WITHOUT THE PRIOR WRITTEN CONSENT OF C ; CALDERA, INC. ANY USE OR EXPLOITATION OF THIS WORK WITHOUT C ; AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO CRIMINAL AND C ; CIVIL LIABILITY. C ;-----------------------------------------------------------------------; C ; C ; *** Current Edit History *** C ; *** End of Current Edit History *** C ; C ; $Log$ C ; C ; ENDLOG C ; 09-Nov-88 made RETF conditional for MASM 5.1/TASM 1.0 C = 0 C FALSE equ 0 = FFFFFFFF C TRUE equ (not FALSE) C C ifndef @filename ;; Turbo Assembler always knows RETF C endif C C jmps macro l > C jmp short l > C endm C C pushx macro regs > C irp r, > C push r > C endm > C endm C C popx macro regs > C irp r, > C pop r > C endm > C endm C C incx macro regs > C irp r, > C inc r > C endm > C endm C C decx macro regs > C irp r, > C dec r > C endm > C endm C C rb macro count > C db count dup (?) > C endm C C rw macro count > C dw count dup (?) > C endm C C rd macro count > C dd count dup (?) > C endm C include ibmros.equ C ; File : $IBMROS.EQU$ C ; C ; Description : C ; C ; Original Author : DIGITAL RESEARCH C ; C ; Last Edited By : $CALDERA$ C ; C ;-----------------------------------------------------------------------; C ; Copyright Work of Caldera, Inc. All Rights Reserved. C ; C ; THIS WORK IS A COPYRIGHT WORK AND CONTAINS CONFIDENTIAL, C ; PROPRIETARY AND TRADE SECRET INFORMATION OF CALDERA, INC. C ; ACCESS TO THIS WORK IS RESTRICTED TO (I) CALDERA, INC. EMPLOYEES C ; WHO HAVE A NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF C ; THEIR ASSIGNMENTS AND (II) ENTITIES OTHER THAN CALDERA, INC. WHO C ; HAVE ACCEPTED THE CALDERA OPENDOS SOURCE LICENSE OR OTHER CALDERA LICENSE C ; AGREEMENTS. EXCEPT UNDER THE EXPRESS TERMS OF THE CALDERA LICENSE C ; AGREEMENT NO PART OF THIS WORK MAY BE USED, PRACTICED, PERFORMED, C ; COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED, ABRIDGED, C ; CONDENSED, EXPANDED, COLLECTED, COMPILED, LINKED, RECAST, C ; TRANSFORMED OR ADAPTED WITHOUT THE PRIOR WRITTEN CONSENT OF C ; CALDERA, INC. ANY USE OR EXPLOITATION OF THIS WORK WITHOUT C ; AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO CRIMINAL AND C ; CIVIL LIABILITY. C ;-----------------------------------------------------------------------; C ; C ; *** Current Edit History *** C ; *** End of Current Edit History *** C ; C ; $Log$ C ; C ; ENDLOG C = 10 C VIDEO_INT equ 10h = 11 C EQUIPMENT_INT equ 11h = 12 C MEMORY_INT equ 12h = 13 C DISK_INT equ 13h = 14 C ASYNC_INT equ 14h = 15 C SYSTEM_INT equ 15h = 16 C KEYBOARD_INT equ 16h = 17 C PRINTER_INT equ 17h = 1A C RTC_INT equ 1Ah = 1B C CTRLBRK_INT equ 1Bh C C ; Int 10 subfunctions C = 1 C SET_CURSOR_TYPE equ 01h = 2 C WRITE_CURSOR equ 02h ; Set cursor position = 3 C READ_CURSOR equ 03h ; Read cursor position = 6 C SCROLL_UP equ 06h ; Scroll active page up = 7 C SCROLL_DOWN equ 07h ; Scroll active page down = 8 C READ_CHAR equ 08h ; Read attribute/char at cur position = 9 C WRITE_CHAR equ 09h ; Write attribute/char at cur position = E C WRITE_TTY equ 0eh ; Write teletype at current position = F C GET_STATE equ 0fh ; Return current video mode C C ; Int 13 subfunctions C = 0 C ROS_RESET equ 00h ; reset disk system = 2 C ROS_READ equ 02h ; read from disk = 3 C ROS_WRITE equ 03h ; write to disk = 4 C ROS_VERIFY equ 04h ; verify data on disk = 5 C ROS_FORMAT equ 05h ; format track on disk = 8 C ROS_PARAM equ 08h ; get drive parameters = 15 C ROS_GETTYPE equ 15h ; get drive type = 16 C ROS_DSKCHG equ 16h ; check disk change status = 17 C ROS_SETTYPE equ 17h ; set disk type for format = 18 C ROS_SETMEDIA equ 18h ; set media type for format = 41 C ROS_LBACHK equ 41h ; int 13 extensions install check = 42 C ROS_LBAREAD equ 42h ; extended read = 43 C ROS_LBAWRITE equ 43h ; extended write = 44 C ROS_LBAVERIFY equ 44h ; extended verify = 48 C ROS_LBAPARAM equ 48h ; get extended drive parameters C = 29 C PRN_ERROR equ 00101001b ; printer error bits = 80 C PRN_NOTBUSY equ 10000000b = 40 C PRN_ACK equ 01000000b = 20 C PRN_PAPER equ 00100000b = 10 C PRN_SELECT equ 00010000b = 8 C PRN_IOERR equ 00001000b = 1 C PRN_TIMEOUT equ 00000001b C = 80 C AUX_ERROR equ 10000000b ; auxiliary error bits C C ; Int 15 subfunctions C = 88 C EXT_MEMORY equ 88h ; Return extended memory size in KB include msdos.equ C ; File : $Workfile: MSDOS.EQU$ C ; C ; Description : C ; C ; Original Author : DIGITAL RESEARCH C ; C ; Last Edited By : $CALDERA$ C ; C ;-----------------------------------------------------------------------; C ; Copyright Work of Caldera, Inc. All Rights Reserved. C ; C ; THIS WORK IS A COPYRIGHT WORK AND CONTAINS CONFIDENTIAL, C ; PROPRIETARY AND TRADE SECRET INFORMATION OF CALDERA, INC. C ; ACCESS TO THIS WORK IS RESTRICTED TO (I) CALDERA, INC. EMPLOYEES C ; WHO HAVE A NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF C ; THEIR ASSIGNMENTS AND (II) ENTITIES OTHER THAN CALDERA, INC. WHO C ; HAVE ACCEPTED THE CALDERA OPENDOS SOURCE LICENSE OR OTHER CALDERA LICENSE C ; AGREEMENTS. EXCEPT UNDER THE EXPRESS TERMS OF THE CALDERA LICENSE C ; AGREEMENT NO PART OF THIS WORK MAY BE USED, PRACTICED, PERFORMED, C ; COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED, ABRIDGED, C ; CONDENSED, EXPANDED, COLLECTED, COMPILED, LINKED, RECAST, C ; TRANSFORMED OR ADAPTED WITHOUT THE PRIOR WRITTEN CONSENT OF C ; CALDERA, INC. ANY USE OR EXPLOITATION OF THIS WORK WITHOUT C ; AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO CRIMINAL AND C ; CIVIL LIABILITY. C ;-----------------------------------------------------------------------; C ; C ; *** Current Edit History *** C ; *** End of Current Edit History *** C ; C ; $Log$ C ; C ; MSDOS.EQU 1.1 92/11/10 10:48:56 C ; Added to appslib source directory. C ; ENDLOG C = 0 C MS_P_TERMCPM equ 00H = 1 C MS_C_READ equ 01H = 2 C MS_C_WRITE equ 02H = 3 C MS_A_READ equ 03H = 4 C MS_A_WRITE equ 04H = 5 C MS_L_WRITE equ 05H = 6 C MS_C_RAWIO equ 06H = 7 C MS_C_RAWIN equ 07H = 8 C MS_C_NOECHO equ 08H = 9 C MS_C_WRITESTR equ 09H = A C MS_C_READSTR equ 0aH = B C MS_C_STAT equ 0bH = C C MS_C_FLUSH equ 0cH = D C MS_DRV_ALLRESET equ 0dH = E C MS_DRV_SET equ 0eH = F C MS_F_OPEN equ 0fH = 10 C MS_F_CLOSE equ 10H = 11 C MS_F_SFIRST equ 11H = 12 C MS_F_SNEXT equ 12H = 13 C MS_F_DELETE equ 13H = 14 C MS_F_READ equ 14H = 15 C MS_F_WRITE equ 15H = 16 C MS_F_MAKE equ 16H = 17 C MS_F_RENAME equ 17H = 19 C MS_DRV_GET equ 19H = 1A C MS_F_DMAOFF equ 1aH = 1B C MS_DRV_ALLOC equ 1bH = 1C C MS_DRV_ALLOCSPEC equ 1cH = 21 C MS_F_READRAND equ 21H = 22 C MS_F_WRITERAND equ 22H = 23 C MS_F_SIZE equ 23H = 24 C MS_F_RANDREC equ 24H = 25 C MS_S_SETINT equ 25H = 26 C MS_P_MKPSP equ 26H = 27 C MS_F_READBLK equ 27H = 28 C MS_F_WRITEBLK equ 28H = 29 C MS_F_PARSE equ 29H = 2A C MS_T_GETDATE equ 2aH = 2B C MS_T_SETDATE equ 2bH = 2C C MS_T_GETTIME equ 2cH = 2D C MS_T_SETTIME equ 2dH = 2E C MS_F_VERIFY equ 2eH = 2F C MS_F_DMAGET equ 2fH = 30 C MS_S_BDOSVER equ 30H = 31 C MS_P_TERMKEEP equ 31H = 33 C MS_S_BREAK equ 33H = 35 C MS_S_GETINT equ 35H = 36 C MS_DRV_SPACE equ 36H = 38 C MS_S_COUNTRY equ 38H = 39 C MS_X_MKDIR equ 39H = 3A C MS_X_RMDIR equ 3aH = 3B C MS_X_CHDIR equ 3bH = 3C C MS_X_CREAT equ 3cH = 3D C MS_X_OPEN equ 3dH = 3E C MS_X_CLOSE equ 3eH = 3F C MS_X_READ equ 3fH = 40 C MS_X_WRITE equ 40H = 41 C MS_X_UNLINK equ 41H = 42 C MS_X_LSEEK equ 42H = 43 C MS_X_CHMOD equ 43H = 44 C MS_X_IOCTL equ 44H = 45 C MS_X_DUP equ 45H = 46 C MS_X_DUP2 equ 46H = 47 C MS_X_CURDIR equ 47H = 48 C MS_M_ALLOC equ 48H = 49 C MS_M_FREE equ 49H = 4A C MS_M_SETBLOCK equ 4aH = 4B C MS_X_EXEC equ 4bH = 4C C MS_X_EXIT equ 4cH = 4D C MS_X_WAIT equ 4dH = 4E C MS_X_FIRST equ 4eH = 4F C MS_X_NEXT equ 4fH = 50 C MS_P_SETPSP equ 50H = 54 C MS_F_GETVERIFY equ 54H = 56 C MS_X_RENAME equ 56H = 57 C MS_X_DATETIME equ 57H = 58 C MS_M_STRATEGY equ 58h = 59 C MS_F_ERROR equ 59H = 5A C MS_X_MKTEMP equ 5aH = 5B C MS_X_MKNEW equ 5bH = 5C C MS_F_LOCK equ 5cH = 60 C MS_X_EXPAND equ 60H = 62 C MS_P_GETPSP equ 62H = 6601 C MS_X_GETCP equ 6601h = 6602 C MS_X_SETCP equ 6602h = 67 C MS_X_SETHC equ 67h = 68 C MS_X_COMMIT equ 68h C = 21 C DOS_INT equ 21h ; DOS Entry Point C ; = 0 C STDIN equ 0 ; Standard Console Input Handle = 1 C STDOUT equ 1 ; Standard Console Output Handle = 2 C STDERR equ 2 ; Standard Error Output = 3 C STDAUX equ 3 ; Auxilary Device Handle = 4 C STDPRN equ 4 ; Printer Device Handle include request.equ ; request header equates C ; File : $REQUEST.EQU$ C ; C ; Description : C ; C ; Original Author : DIGITAL RESEARCH C ; C ; Last Edited By : $CALDERA$ C ; C ;-----------------------------------------------------------------------; C ; Copyright Work of Caldera, Inc. All Rights Reserved. C ; C ; THIS WORK IS A COPYRIGHT WORK AND CONTAINS CONFIDENTIAL, C ; PROPRIETARY AND TRADE SECRET INFORMATION OF CALDERA, INC. C ; ACCESS TO THIS WORK IS RESTRICTED TO (I) CALDERA, INC. EMPLOYEES C ; WHO HAVE A NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF C ; THEIR ASSIGNMENTS AND (II) ENTITIES OTHER THAN CALDERA, INC. WHO C ; HAVE ACCEPTED THE CALDERA OPENDOS SOURCE LICENSE OR OTHER CALDERA LICENSE C ; AGREEMENTS. EXCEPT UNDER THE EXPRESS TERMS OF THE CALDERA LICENSE C ; AGREEMENT NO PART OF THIS WORK MAY BE USED, PRACTICED, PERFORMED, C ; COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED, ABRIDGED, C ; CONDENSED, EXPANDED, COLLECTED, COMPILED, LINKED, RECAST, C ; TRANSFORMED OR ADAPTED WITHOUT THE PRIOR WRITTEN CONSENT OF C ; CALDERA, INC. ANY USE OR EXPLOITATION OF THIS WORK WITHOUT C ; AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO CRIMINAL AND C ; CIVIL LIABILITY. C ;-----------------------------------------------------------------------; C ; C ; *** Current Edit History *** C ; *** End of Current Edit History *** C ; C ; $Log$ C ; ENDLOG C C 00000000 C P_DSTRUC struc 00000000 C dw ? 00000002 C REQUEST dd ? 00000006 C P_DMA dd ? 0000000A C P_DSTRUC ends C 00000000 C P_STRUC struc 00000000 C dw ? ; saved BP 00000002 C REQUEST_OFF dw ? ; request header offset 00000004 C REQUEST_SEG dw ? ; request header segment 00000006 C P_DMAOFF dw ? ; transfer offset 00000008 C P_DMASEG dw ? ; transfer segment 0000000A C P_RETRY db ? ; retry count for disk errors 0000000B C P_DIRECT db ? ; 0 if DMA deblocking required 0000000C C P_ROSCMD db ? ; 2 = read, 3 = write, 4 = verify 0000000D C P_SETTLE db ? ; for fast settle on reads 0000000E C P_SECTOR db ? ; sector # (0..BPB_SPT-1) 0000000F C P_HEAD db ? ; head # (0..BPB_HEADS-1) 00000010 C P_CYL dw ? ; cylinder # (0..1023) 00000012 C P_COUNT dw ? ; requested sector count 00000014 C P_MCNT dw ? ; physical sector count 00000016 C P_LBABLOCK dd ? ; Logical Block Address of start sector 0000001A C P_STRUC ends C C C = 0 C CMD_INIT equ 0 ; Initialize the Device Driver = 1 C CMD_MEDIA_CHECK equ 1 ; Request Media Check = 2 C CMD_BUILD_BPB equ 2 ; Build Drive BPB = 3 C CMD_INPUT_IOCTL equ 3 ; IOCTL input = 4 C CMD_INPUT equ 4 ; Input = 5 C CMD_INPUT_NOWAIT equ 5 ; Non destructive input no wait = 6 C CMD_INPUT_STATUS equ 6 ; Input status = 7 C CMD_INPUT_FLUSH equ 7 ; Input flush = 8 C CMD_OUTPUT equ 8 ; Output = 9 C CMD_OUTPUT_VERIFY equ 9 ; Output with verify = A C CMD_OUTPUT_STATUS equ 10 ; Output status = B C CMD_OUTPUT_FLUSH equ 11 ; Output flush = C C CMD_OUTPUT_IOCTL equ 12 ; IOCTL output = D C CMD_DEVICE_OPEN equ 13 ; Device OPEN = E C CMD_DEVICE_CLOSE equ 14 ; Device CLOSE = F C CMD_FIXED_MEDIA equ 15 ; Removeable Media Check = 13 C CMD_GENERIC_IOCTL equ 19 ; Generic IOCTL = 17 C CMD_GET_DEVICE equ 23 ; Get the Logical Device = 18 C CMD_SET_DEVICE equ 24 ; Set the Logical Device = 19 C CMD_QUERY_IOCTL equ 25 ; query ioctl support C C ; Generic Request Header Format C = 0 C RH_LEN equ byte ptr 0 = 1 C RH_UNIT equ byte ptr 1 = 2 C RH_CMD equ byte ptr 2 = 3 C RH_STATUS equ word ptr 3 = 100 C RHS_DONE equ 0100h = 200 C RHS_BUSY equ 0200h = 400 C RHS_IC equ 0400h ; Interim Character = 800 C RHS_RM equ 0800h = 8000 C RHS_ERROR equ 8000h C C ;****** C ;* No longer safe to use - some device drivers trample on them.... C ;* C ;* RH_STRATEGY equ dword ptr 5 ; Device Strategy Routine C ;* RH_STRATOFF equ word ptr 5 ; Strategy Offset C ;* RH_STRATSEG equ word ptr 7 ; Strategy Segment C ;* RH_INTERRUPT equ dword ptr 9 ; Device Interrupt Routine C ;* RH_INTOFF equ word ptr 9 ; Intterupt Offset C ;* RH_INTSEG equ word ptr 11 ; Interrupt Segment C ;***** C C ; Request header for initialization C = D C RH0_NUNITS equ byte ptr 13 = E C RH0_RESIDENT equ word ptr 14 = 12 C RH0_BPBOFF equ word ptr 18 = 14 C RH0_BPBSEG equ word ptr 20 = 16 C RH0_DRIVE equ byte ptr 22 = 16 C RH0_LEN equ 22 C C ; Request header for media check C = D C RH1_MEDIA equ byte ptr 13 ; BDOS: current media byte = E C RH1_RETURN equ byte ptr 14 ; driver: return code (00, 01, FF) = F C RH1_VOLID equ dword ptr 15 ; driver: volume label address = F C RH1_LEN equ 15 C C ; Request header for "build BPB" C = D C RH2_MEDIA equ byte ptr 13 ; BDOS or driver? = E C RH2_BUFFER equ dword ptr 14 ; BDOS: scratch buffer for driver use = 12 C RH2_BPB equ dword ptr 18 ; same as the following: = 12 C RH2_BPBOFF equ word ptr 18 ; driver: address of new BPB = 14 C RH2_BPBSEG equ word ptr 20 = 18 C RH2_LEN equ 24 C C ; Request header for input/output C = D C RH4_MEDIA equ byte ptr 13 ; BDOS: current media byte = D C RH4_RIC equ byte ptr 13 ; BDOS: Return Interim Char flg = E C RH4_BUFFER equ dword ptr 14 ; BDOS: disk transfer address = E C RH4_BUFOFF equ word ptr 14 ; BDOS: Buffer Offset = 10 C RH4_BUFSEG equ word ptr 16 ; BDOS: Buffer Segment = 12 C RH4_COUNT equ word ptr 18 ; BDOS: sector count = 14 C RH4_SECTOR equ word ptr 20 ; BDOS: starting sector = 16 C RH4_VOLID equ dword ptr 22 ; driver: volume if illegal disk change = 1A C RH4_BIGSECTOR equ dword ptr 26 = 1A C RH4_BIGSECTORLO equ word ptr 26 = 1C C RH4_BIGSECTORHI equ word ptr 28 C = 1E C RH4_LEN equ 30 C C ; Request Header for Non-Destructive Input C = D C RH5_CHAR equ byte ptr 13 ; Character Read from Device = D C RH5_RIC equ byte ptr 13 ; BDOS: Return Interim Char flg = E C RH5_LEN equ 14 C C ; Request Header for Device Open C = D C RH13_LEN equ 13 C C ; Request Header for Device Close C = D C RH14_LEN equ 13 C C ; Request header for generic IOCTL C = D C RH19_CATEGORY equ word ptr 13 ; BDOS: major/minor function number = D C RH19_MAJOR equ byte ptr 13 ; BDOS: Major Function Number = E C RH19_MINOR equ byte ptr 14 ; BDOS: Minor Function Number = F C RH19_SI equ word ptr 15 ; BDOS: User SI = 11 C RH19_DI equ word ptr 17 ; BDOS: User DI = 13 C RH19_GENPB equ dword ptr 19 ; BDOS: extra parameters = 17 C RH19_LEN equ 23 C = 40 C RQ19_SET equ 40h ; set device parameters = 60 C RQ19_GET equ 60h ; get device parameters = 41 C RQ19_WRITE equ 41h ; write tracks = 61 C RQ19_READ equ 61h ; read tracks = 42 C RQ19_FORMAT equ 42h ; format tracks = 62 C RQ19_VERIFY equ 62h ; verify tracks = 46 C RQ19_SETMEDIA equ 46h ; set media ID = 66 C RQ19_GETMEDIA equ 66h ; get media ID = 4A C RQ19_LOCKLOG equ 4ah = 4B C RQ19_LOCKPHYS equ 4bh = 6A C RQ19_UNLOCKLOG equ 6ah = 6B C RQ19_UNLOCKPHYS equ 6bh C = 4C C RQ19_PRP_START equ 4Ch ; start of codepage prepare = 4D C RQ19_PRP_END equ 4Dh ; end of codepage prepare = 4A C RQ19_SELECT equ 4Ah ; select code page = 6A C RQ19_QRY_SEL equ 6Ah ; query selected code page = 6B C RQ19_QRY_PRP equ 6Bh ; query prepared code page(s) = 5F C RQ19_DSP_SET equ 5Fh ; set display information = 7F C RQ19_DSP_GET equ 7Fh ; get display information C C ; Request header for get/set drive C = E C RH24_CMD equ byte ptr 14 ; BDOS: Command Code = F C RH24_STATUS equ word ptr 15 ; BDOS: Status = 11 C RH24_RESVD equ dword ptr 17 ; BDOS: Reserved = 15 C RH24_LEN equ 21 C = 1E C RH_SIZE equ 30 ; maximum size of request header include bpb.equ C ; File : $BPB.EQU$ C ; C ; Description : C ; C ; Original Author : DIGITAL RESEARCH C ; C ; Last Edited By : $CALDERA$ C ; C ;-----------------------------------------------------------------------; C ; Copyright Work of Caldera, Inc. All Rights Reserved. C ; C ; THIS WORK IS A COPYRIGHT WORK AND CONTAINS CONFIDENTIAL, C ; PROPRIETARY AND TRADE SECRET INFORMATION OF CALDERA, INC. C ; ACCESS TO THIS WORK IS RESTRICTED TO (I) CALDERA, INC. EMPLOYEES C ; WHO HAVE A NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF C ; THEIR ASSIGNMENTS AND (II) ENTITIES OTHER THAN CALDERA, INC. WHO C ; HAVE ACCEPTED THE CALDERA OPENDOS SOURCE LICENSE OR OTHER CALDERA LICENSE C ; AGREEMENTS. EXCEPT UNDER THE EXPRESS TERMS OF THE CALDERA LICENSE C ; AGREEMENT NO PART OF THIS WORK MAY BE USED, PRACTICED, PERFORMED, C ; COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED, ABRIDGED, C ; CONDENSED, EXPANDED, COLLECTED, COMPILED, LINKED, RECAST, C ; TRANSFORMED OR ADAPTED WITHOUT THE PRIOR WRITTEN CONSENT OF C ; CALDERA, INC. ANY USE OR EXPLOITATION OF THIS WORK WITHOUT C ; AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO CRIMINAL AND C ; CIVIL LIABILITY. C ;-----------------------------------------------------------------------; C ; C ; *** Current Edit History *** C ; *** End of Current Edit History *** C ; C ; $Log$ C ; ENDLOG C 00000000 C BPB struc 00000000 C BPB_SECSIZ dw ? ; # of bytes per sector 00000002 C BPB_ALLOCSIZ db ? ; # of sectors per allocation unit 00000003 C BPB_FATADD dw ? ; # of reserved sectors (1) 00000005 C BPB_NFATS db ? ; # of fats 00000006 C BPB_DIRMAX dw ? ; # of directory entries 00000008 C BPB_TOTSEC dw ? ; # of sectors total in image 0000000A C BPB_FATID db ? ; holds a copy of the fat id byte 0000000B C BPB_FATSEC dw ? ; # of sectors in a fat 0000000D C BPB_SPT dw ? ; # of sectors per track 0000000F C BPB_HEADS dw ? ; # of heads 00000011 C BPB_HIDDEN dd ? ; disk offset (32 bit) 00000015 C BPB_SIZE dd ? ; disk size (32 bit) 00000019 C BPB_BFATSEC dd ? ; # of sectors per FAT 0000001D C BPB_FATFLAG dw ? ; flags for FAT mirroring 0000001F C BPB_FSVER dw ? ; version of file system 00000021 C BPB_FSROOT dd ? ; starting cluster of root directory 00000025 C BPB_FSINFO dw ? ; sector number of file system info block 00000027 C BPB_BOOTBAK dw ? ; sector number of backup boot block 00000029 C BPB_RESRVD2 dw 6 dup (?) 00000035 C BPB ends C = 35 C BPB_LENGTH equ size BPB C 00000000 C OLDBPB struc 00000000 C OLDBPB_SECSIZ dw ? ; # of bytes per sector 00000002 C OLDBPB_ALLOCSIZ db ? ; # of sectors per allocation unit 00000003 C OLDBPB_FATADD dw ? ; # of reserved sectors (1) 00000005 C OLDBPB_NFATS db ? ; # of fats 00000006 C OLDBPB_DIRMAX dw ? ; # of directory entries 00000008 C OLDBPB_TOTSEC dw ? ; # of sectors total in image 0000000A C OLDBPB_FATID db ? ; holds a copy of the fat id byte 0000000B C OLDBPB_FATSEC dw ? ; # of sectors in a fat 0000000D C OLDBPB_SPT dw ? ; # of sectors per track 0000000F C OLDBPB_HEADS dw ? ; # of heads 00000011 C OLDBPB_HIDDEN dd ? ; disk offset (32 bit) 00000015 C OLDBPB_SIZE dd ? ; disk size (32 bit) 00000019 C OLDBPB_RESRVD2 db 6 dup (?) 0000001F C OLDBPB ends C = 1F C OLDBPB_LENGTH equ size OLDBPB include udsc.equ C ; File : $UDSC.EQU$ C ; C ; Description : C ; C ; Original Author : DIGITAL RESEARCH C ; C ; Last Edited By : $CALDERA$ C ; C ;-----------------------------------------------------------------------; C ; Copyright Work of Caldera, Inc. All Rights Reserved. C ; C ; THIS WORK IS A COPYRIGHT WORK AND CONTAINS CONFIDENTIAL, C ; PROPRIETARY AND TRADE SECRET INFORMATION OF CALDERA, INC. C ; ACCESS TO THIS WORK IS RESTRICTED TO (I) CALDERA, INC. EMPLOYEES C ; WHO HAVE A NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF C ; THEIR ASSIGNMENTS AND (II) ENTITIES OTHER THAN CALDERA, INC. WHO C ; HAVE ACCEPTED THE CALDERA OPENDOS SOURCE LICENSE OR OTHER CALDERA LICENSE C ; AGREEMENTS. EXCEPT UNDER THE EXPRESS TERMS OF THE CALDERA LICENSE C ; AGREEMENT NO PART OF THIS WORK MAY BE USED, PRACTICED, PERFORMED, C ; COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED, ABRIDGED, C ; CONDENSED, EXPANDED, COLLECTED, COMPILED, LINKED, RECAST, C ; TRANSFORMED OR ADAPTED WITHOUT THE PRIOR WRITTEN CONSENT OF C ; CALDERA, INC. ANY USE OR EXPLOITATION OF THIS WORK WITHOUT C ; AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO CRIMINAL AND C ; CIVIL LIABILITY. C ;-----------------------------------------------------------------------; C ; C ; *** Current Edit History *** C ; *** End of Current Edit History *** C ; C ; $Log$ C ; ENDLOG C C = 19 C OLD_UDSC_BPB_LENGTH equ 25 = 29 C UDSC_BPB_LENGTH equ 41 C 00000000 C UDSC struc 00000000 C UDSC_NEXT dd ? ; link to next UDSC_ 00000004 C UDSC_RUNIT db ? ; ROS drive number (0/1/80/81) 00000005 C UDSC_DRIVE db ? ; logical drive 00000006 C UDSC_BPB db UDSC_BPB_LENGTH dup (?) ; current BPB 0000002F C UDSC_FATFLAG db ? 00000030 C UDSC_OPNCNT dw ? ; # of files open on drive 00000032 C UDSC_TYPE db ? ; floppy drive type (0/1/2/7) 00000033 C UDSC_FLAGS dw ? ; various flags for drive 00000035 C UDSC_NCYL dw ? ; # of cylinders per drive 00000037 C UDSC_DEVBPB db UDSC_BPB_LENGTH dup (?) ; device BPB 00000060 C db 7 dup (?) 00000067 C UDSC_TIMER dw 2 dup (?) ; tick count for MEDCHK 0000006B C UDSC_LABEL db 12 dup (?) ; ASCIIZ volume label 00000077 C UDSC_SERIAL dd ? ; serial number 0000007B C UDSC_FSTYPE db 9 dup (?) ; ASCIIZ "FAT12"/"FAT16" type 00000084 C UDSC_INT13EXT dw 0 ; version of int 13 extensions 00000086 C UDSC_INT13BITS dw 0 ; int 13 API support bitmap 00000088 C UDSC ends C = 88 C UDSC_LENGTH equ size UDSC C = 1 C UDF_HARD equ 0001h ; drive is a hard disk = 2 C UDF_CHGLINE equ 0002h ; drive support disk change line = 4 C UDF_UNSURE equ 0004h ; drive has just been formatted = 10 C UDF_VFLOPPY equ 0010h ; drive shares physical drive = 20 C UDF_OWNER equ 0020h ; logical drive "owns" physical drive = 100 C UDF_MEDIA equ 0100h ; media id is from bootsec, not default C = 1A C MAXPART equ 26 ; support up 26 drives include driver.equ C ; File : $DRIVER.EQU$ C ; C ; Description : C ; C ; Original Author : DIGITAL RESEARCH C ; C ; Last Edited By : $CALDERA$ C ; C ;-----------------------------------------------------------------------; C ; Copyright Work of Caldera, Inc. All Rights Reserved. C ; C ; THIS WORK IS A COPYRIGHT WORK AND CONTAINS CONFIDENTIAL, C ; PROPRIETARY AND TRADE SECRET INFORMATION OF CALDERA, INC. C ; ACCESS TO THIS WORK IS RESTRICTED TO (I) CALDERA, INC. EMPLOYEES C ; WHO HAVE A NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF C ; THEIR ASSIGNMENTS AND (II) ENTITIES OTHER THAN CALDERA, INC. WHO C ; HAVE ACCEPTED THE CALDERA OPENDOS SOURCE LICENSE OR OTHER CALDERA LICENSE C ; AGREEMENTS. EXCEPT UNDER THE EXPRESS TERMS OF THE CALDERA LICENSE C ; AGREEMENT NO PART OF THIS WORK MAY BE USED, PRACTICED, PERFORMED, C ; COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED, ABRIDGED, C ; CONDENSED, EXPANDED, COLLECTED, COMPILED, LINKED, RECAST, C ; TRANSFORMED OR ADAPTED WITHOUT THE PRIOR WRITTEN CONSENT OF C ; CALDERA, INC. ANY USE OR EXPLOITATION OF THIS WORK WITHOUT C ; AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO CRIMINAL AND C ; CIVIL LIABILITY. C ;-----------------------------------------------------------------------; C ; C ; *** Current Edit History *** C ; *** End of Current Edit History *** C ; C ; $Log$ C ; ENDLOG C ; Device driver header offsets. C C = es:dword ptr 0 C DH_NEXT equ es:dword ptr 0 ; Dword Pointer to Next DEV = es:word ptr 0 C DH_NEXTOFF equ es:word ptr 0 ; Offset of next device = es:word ptr 2 C DH_NEXTSEG equ es:word ptr 2 ; Segment of next device = es:word ptr 4 C DH_ATTRIB equ es:word ptr 4 ; device attribute bits = es:word ptr 6 C DH_STRATEGY equ es:word ptr 6 ; offset of strategy entry = es:word ptr 8 C DH_INTERRUPT equ es:word ptr 8 ; offset of interupt entry = es:byte ptr 10 C DH_NAME equ es:byte ptr 10 ; 8-BYTE device name C = 8000 C DA_CHARDEV equ 8000h ; 1=character device, 0=block device = 4000 C DA_IOCTL equ 4000h ; device supports IOCTL string I/O = 2000 C DA_NONIBM equ 2000h ; dosen't require FAT for login = 2000 C DA_OTILBSY equ 2000h ; supports "output until busy" = 800 C DA_REMOVE equ 0800h ; supports "removable media" check = 80 C DA_QUERY equ 0080h ; supports query ioctl = 40 C DA_GETSET equ 0040h ; supports 3.2 level functionality = 10 C DA_SPECIAL equ 0010h ; fast console ouput via INT 29h = 8 C DA_ISCLK equ 0008h ; device is current clock device = 4 C DA_ISNUL equ 0004h ; device is NUL device (reserved) = 2 C DA_BIGDRV equ 0002h ; supports > 65535 sector per drive = 2 C DA_ISCOT equ 0002h ; device is standard output device = 1 C DA_ISCIN equ 0001h ; device is standard input device C = 29 C FASTCON_INT equ 29h ; fast console output interrupt C include keys.equ ; common key definitions = 0 C NUL equ 0 = 8 C BS equ 8 = 9 C TAB equ 9 = A C LF equ 10 = D C CR equ 13 ; IBM AT Hardware equates = FFFFFFFF COMPRESSED equ TRUE ; enables compressed changes. ; a little macro to help locate things ; it warns us when the ORG get trampled on orgabs MACRO address > local was,is > was = offset $ > org address > is = offset $ > if was GT is > ; if2 > ; %OUT ERROR - absolute data overwritten !! moving it > ; endif > org was > endif > ENDM jmpfar MACRO address, fixup > db 0EAh ; jmpf opcode > dw CG:address ; offset of destination > fixup dw 0EDCh ; segment of destination > ENDM callfar MACRO address, fixup > db 09Ah ; callf opcode > dw CG:address ; offset of destination > fixup dw 0EDCh ; segment of destination > ENDM = 3F00 F5KEY equ 3F00h = 4200 F8KEY equ 4200h = 1 SWITCH_F equ 01h 0000 IVECT segment at 0000h org 0000h*4 0000 0000 i0off dw ? 0002 0000 i0seg dw ? org 0001h*4 0004 0000 i1off dw ? 0006 0000 i1seg dw ? org 0003h*4 000C 0000 i3off dw ? 000E 0000 i3seg dw ? org 0004h*4 0010 0000 i4off dw ? 0012 0000 i4seg dw ? org 0015h*4 0054 0000 i15off dw ? 0056 0000 i15seg dw ? org 0019h*4 0064 0000 i19off dw ? 0066 0000 i19seg dw ? org 001Eh*4 0078 i1Eptr label dword 0078 0000 i1Eoff dw ? 007A 0000 i1Eseg dw ? org 002Fh*4 00BC i2Fptr label dword 00BC 0000 i2Foff dw ? 00BE 0000 i2Fseg dw ? org 006Ch*4 01B0 i6Cptr label dword 01B0 0000 i6Coff dw ? 01B2 0000 i6Cseg dw ? 01B4 IVECT ends CGROUP group CODE, RCODE, ICODE = offset CGROUP CG equ offset CGROUP 0000 CODE segment 'CODE' Assume CS:CGROUP, DS:Nothing, ES:Nothing, SS:Nothing public strat extrn ConsoleTable:word extrn ClockTable:word extrn SerParCommonTable:word extrn DiskTable:near extrn Int13Deblock:near extrn Int13Unsure:near extrn Int2FHandler:near extrn ResumeHandler:near extrn biosinit_end:byte ; End of the BIOS Init Code and Data extrn biosinit:near extrn boot_options:word extrn rcode_fixups:word extrn rcode_seg:word extrn rcode_offset:word extrn rcode_len:word extrn icode_len:word extrn current_dos:word extrn device_root:dword extrn mem_size:word extrn ext_mem_size:word extrn init_buf:byte extrn init_drv:byte extrn init_runit:byte extrn comspec_drv:byte extrn init_flags:word extrn boot_switches:byte include biosmsgs.def ; Include TFT Header File C extrn _disk_msgA : byte C extrn disk_msgA : byte C extrn _disk_msgB : byte C extrn disk_msgB : byte C extrn _div_by_zero_msg : byte C extrn div_by_zero_msg : byte C extrn _drdosprojects_msg : byte C extrn drdosprojects_msg : byte C extrn _starting_dos_msg : byte C extrn starting_dos_msg : byte C extrn _lba_supp_msg : byte C extrn lba_supp_msg : byte Public A20Enable 0000 A20Enable proc near ;======== ; This location is fixed up at run time to be a RET ; If the BIOS is relocated to the HMA then it is fixed up again to be ; CALLF IBMDOS:A20Enable; RET ; Calling this location at run time will ensure that the HMA is mapped ; in so we can access the HMA code. ; 0000 A20Enable endp 0000 init proc near ; this is at BIOSCODE:0000h ifndef COPYPROT 0000 010203 db 1,2,3 ; jump to reusable init space endif ; INIT0 on completion 0003 init endp 0003 compflg label word ifdef COPYPROT else 0003 0000 dw offset CGROUP:INITDATA ; compresses from INITDATA onwards endif ; this word set to 0 when compressed org 06h 0006 434F4D504151436F6D db 'COMPAQCompatible' 0016 0000 dw offset CGROUP:RCODE ; lets find offset of RCODE 0018 0000 MemFixup dw 0 ; and its relocated segment Public cleanup 001A cleanup PROC far ; BIOSINIT will call here later 001A CB ret 001B cleanup endp ; Local single character buffer for Ctrl-Break handling public serparFlag, serparChar 001B 00000000 serparFlag db 4 dup (FALSE) ; we haven't got any yet 001F 00000000 serparChar db 4 dup (?) ; will store one character ; Device driver headers for serial/parallel devices 0023 3E000000 con_drvr dw offset CGROUP:aux_drvr, 0 ; link to next device driver 0027 13C0 dw DA_CHARDEV+DA_SPECIAL+DA_ISCOT+DA_ISCIN+DA_IOCTL 0029 C4000000 dw offset CGROUP:strat, 0 002D 434F4E2020202020 db 'CON ' 0035 434F4C4F5552 db 'COLOUR' 003B 000700 col_mode db 0,7,0 003E 50000000 aux_drvr dw offset CGROUP:prn_drvr, 0 ; link to next device driver 0042 0080 dw DA_CHARDEV 0044 C4000000 dw offset CGROUP:strat, 0 0048 4155582020202020 db 'AUX ' 0050 62000000 prn_drvr dw offset CGROUP:clock_drvr, 0 ; link to next device driver 0054 0080 dw DA_CHARDEV 0056 C4000000 dw offset CGROUP:strat, 0 005A 50524E2020202020 db 'PRN ' 0062 00000000 clock_drvr dw 0, 0 ; link to next device driver 0066 0880 dw DA_CHARDEV+DA_ISCLK 0068 C4000000 dw offset CGROUP:strat, 0 006C 434C4F434B242020 db 'CLOCK$ ' 0074 CF000000 com1_drvr dw offset CGROUP:lpt1_drvr, 0 ; link to next device driver 0078 0080 dw DA_CHARDEV 007A C4000000 dw offset CGROUP:strat, 0 007E 434F4D3120202020 db 'COM1 ' 0086 98000000 com2_drvr dw offset CGROUP:com3_drvr, 0 ; link to next device driver 008A 0080 dw DA_CHARDEV 008C C4000000 dw offset CGROUP:strat, 0 0090 434F4D3220202020 db 'COM2 ' 0098 AA000000 com3_drvr dw offset CGROUP:com4_drvr, 0 ; link to next device driver 009C 0080 dw DA_CHARDEV 009E C4000000 dw offset CGROUP:strat, 0 00A2 434F4D3320202020 db 'COM3 ' IFDEF EMBEDDED ELSE 00AA FFFFFFFF com4_drvr dw -1, -1 ; link to next device driver ENDIF 00AE 0080 dw DA_CHARDEV 00B0 C4000000 dw offset CGROUP:strat, 0 00B4 434F4D3420202020 db 'COM4 ' orgabs 0b4h ; save address at fixed location 000000BC = BC 1 ??0000 = offset $ 1 org 0b4h 000000B4 = B4 1 ??0001 = offset $ 1 org ??0000 ; for dirty apps Public i13pointer, i13off_save, i13seg_save 00BC i13pointer label dword ; address of ROS Int 13h entry 00BC 0000 i13off_save dw ? 00BE 0000 i13seg_save dw ? orgabs 0b8h ; REQ_HDR 000000C0 = C0 1 ??0002 = offset $ 1 org 0b8h 000000B8 = B8 1 ??0003 = offset $ 1 org ??0002 public req_ptr, req_off, req_seg 00C0 req_ptr label dword 00C0 0000 req_off dw 0 ;** fixed location ** 00C2 0000 req_seg dw 0 ;** fixed location ** 00C4 strat proc far 00C4 2E891EC000 mov cs:req_off,bx 00C9 2E8C06C200 mov cs:req_seg,es 00CE CB ret 00CF strat endp 00CF E1000000 lpt1_drvr dw offset CGROUP:lpt2_drvr, 0 ; link to next device driver 00D3 0080 dw DA_CHARDEV 00D5 C4000000 dw offset CGROUP:strat, 0 00D9 4C50543120202020 db 'LPT1 ' 00E1 F3000000 lpt2_drvr dw offset CGROUP:lpt3_drvr, 0 ; link to next device driver 00E5 0080 dw DA_CHARDEV 00E7 C4000000 dw offset CGROUP:strat, 0 00EB 4C50543220202020 db 'LPT2 ' 00F3 86000000 lpt3_drvr dw offset CGROUP:com2_drvr, 0 ; link to next device driver 00F7 0080 dw DA_CHARDEV 00F9 C4000000 dw offset CGROUP:strat, 0 00FD 4C50543320202020 db 'LPT3 ' orgabs 100h ; save vectors at fixed location 00000105 = 105 1 ??0004 = offset $ 1 org 100h 00000100 = 100 1 ??0005 = offset $ 1 org ??0004 ; for dirty apps Public orgInt13 = 5 NUM_SAVED_VECS equ 5 0105 10 vecSave db 10h 0106 00000000 dw 0,0 010A 13 db 13h 010B 00000000 orgInt13 dw 0,0 010F 15 db 15h 0110 00000000 dw 0,0 0114 19 db 19h 0115 00000000 dw 0,0 0119 1B db 1Bh 011A 00000000 dw 0,0 011E Int19Trap: 011E FC cld 011F FA cli ; be sure... 0120 0E push cs 0121 1F pop ds 0122 8D360501 lea si,vecSave 0126 B90500 mov cx,NUM_SAVED_VECS ; restore this many vectors 0129 Int19Trap10: 0129 33C0 xor ax,ax ; zero AH for lodsb 012B 8EC0 mov es,ax ; ES -> interrupt vectors 012D AC lodsb ; AX = vector to restore 012E D1E0 shl ax,1 0130 D1E0 shl ax,1 ; point at address 0132 97 xchg ax,di ; ES:DI -> location to restore 0133 A5 movsw 0134 A5 movsw ; restore this vector 0135 E2F2 loop Int19Trap10 ; go and do another 0137 2E833E690100 cmp oldxbda,0 ; has the XBDA been moved? 013D 7428 je Int19Trap20 ; no 013F 2E8E066901 mov es,oldxbda ; yes, move it back 0144 2E8B0E6D01 mov cx,xbdalen 0149 2E8E1E6B01 mov ds,newxbda 014E 33F6 xor si,si 0150 33FF xor di,di 0152 F3A5 rep movsw 0154 B84000 mov ax,40h ; update BIOS data 0157 8ED8 mov ds,ax 0159 33FF xor di,di 015B 8CC0 mov ax,es 015D 89450E mov 0eh[di],ax 0160 2EA16F01 mov ax,oldmemtop ; also restore old conventional ; memory top 0164 894513 mov 13h[di],ax 0167 Int19Trap20: 0167 CD19 int 19h ; and go to original int 19... Public oldxbda,newxbda,xbdalen,oldmemtop 0169 0000 oldxbda dw 0 ; old XBDA segment address 016B 0000 newxbda dw 0 ; new XBDA segment address 016D 0000 xbdalen dw 0 ; length of XBDA in words 016F 0000 oldmemtop dw 0 ; old conventional mem limit orgabs 16ch ; PRN:/AUX: the device number 00000171 = 171 1 ??0006 = offset $ 1 org 16ch 0000016C = 16C 1 ??0007 = offset $ 016C 0000 devno db 0,0 ;** fixed location ** 016E CODE ends end init Macros: N a m e Type @CatStr . . . . . . . . . . . . Func @Environ . . . . . . . . . . . . Func @InStr . . . . . . . . . . . . . Func @SizeStr . . . . . . . . . . . . Func @SubStr . . . . . . . . . . . . Func callfar . . . . . . . . . . . . Proc decx . . . . . . . . . . . . . . Proc incx . . . . . . . . . . . . . . Proc jmpfar . . . . . . . . . . . . . Proc jmps . . . . . . . . . . . . . . Proc orgabs . . . . . . . . . . . . . Proc popx . . . . . . . . . . . . . . Proc pushx . . . . . . . . . . . . . Proc rb . . . . . . . . . . . . . . . Proc rd . . . . . . . . . . . . . . . Proc rw . . . . . . . . . . . . . . . Proc Structures and Unions: N a m e Size/Ofs Type BPB . . . . . . . . . . . . . . 35 BPB_SECSIZ . . . . . . . . . . 0 Word BPB_ALLOCSIZ . . . . . . . . . 2 Byte BPB_FATADD . . . . . . . . . . 3 Word BPB_NFATS . . . . . . . . . . 5 Byte BPB_DIRMAX . . . . . . . . . . 6 Word BPB_TOTSEC . . . . . . . . . . 8 Word BPB_FATID . . . . . . . . . . A Byte BPB_FATSEC . . . . . . . . . . B Word BPB_SPT . . . . . . . . . . . D Word BPB_HEADS . . . . . . . . . . F Word BPB_HIDDEN . . . . . . . . . . 11 DWord BPB_SIZE . . . . . . . . . . . 15 DWord BPB_BFATSEC . . . . . . . . . 19 DWord BPB_FATFLAG . . . . . . . . . 1D Word BPB_FSVER . . . . . . . . . . 1F Word BPB_FSROOT . . . . . . . . . . 21 DWord BPB_FSINFO . . . . . . . . . . 25 Word BPB_BOOTBAK . . . . . . . . . 27 Word BPB_RESRVD2 . . . . . . . . . 29 Word[6] OLDBPB . . . . . . . . . . . . . 1F OLDBPB_SECSIZ . . . . . . . . 0 Word OLDBPB_ALLOCSIZ . . . . . . . 2 Byte OLDBPB_FATADD . . . . . . . . 3 Word OLDBPB_NFATS . . . . . . . . . 5 Byte OLDBPB_DIRMAX . . . . . . . . 6 Word OLDBPB_TOTSEC . . . . . . . . 8 Word OLDBPB_FATID . . . . . . . . . A Byte OLDBPB_FATSEC . . . . . . . . B Word OLDBPB_SPT . . . . . . . . . . D Word OLDBPB_HEADS . . . . . . . . . F Word OLDBPB_HIDDEN . . . . . . . . 11 DWord OLDBPB_SIZE . . . . . . . . . 15 DWord OLDBPB_RESRVD2 . . . . . . . . 19 Byte[6] P_DSTRUC . . . . . . . . . . . . A REQUEST . . . . . . . . . . . 2 DWord P_DMA . . . . . . . . . . . . 6 DWord P_STRUC . . . . . . . . . . . . 1A REQUEST_OFF . . . . . . . . . 2 Word REQUEST_SEG . . . . . . . . . 4 Word P_DMAOFF . . . . . . . . . . . 6 Word P_DMASEG . . . . . . . . . . . 8 Word P_RETRY . . . . . . . . . . . A Byte P_DIRECT . . . . . . . . . . . B Byte P_ROSCMD . . . . . . . . . . . C Byte P_SETTLE . . . . . . . . . . . D Byte P_SECTOR . . . . . . . . . . . E Byte P_HEAD . . . . . . . . . . . . F Byte P_CYL . . . . . . . . . . . . 10 Word P_COUNT . . . . . . . . . . . 12 Word P_MCNT . . . . . . . . . . . . 14 Word P_LBABLOCK . . . . . . . . . . 16 DWord UDSC . . . . . . . . . . . . . . 88 UDSC_NEXT . . . . . . . . . . 0 DWord UDSC_RUNIT . . . . . . . . . . 4 Byte UDSC_DRIVE . . . . . . . . . . 5 Byte UDSC_BPB . . . . . . . . . . . 6 Byte[41] UDSC_FATFLAG . . . . . . . . . 2F Byte UDSC_OPNCNT . . . . . . . . . 30 Word UDSC_TYPE . . . . . . . . . . 32 Byte UDSC_FLAGS . . . . . . . . . . 33 Word UDSC_NCYL . . . . . . . . . . 35 Word UDSC_DEVBPB . . . . . . . . . 37 Byte[41] UDSC_TIMER . . . . . . . . . . 67 Word[2] UDSC_LABEL . . . . . . . . . . 6B Byte[12] UDSC_SERIAL . . . . . . . . . 77 DWord UDSC_FSTYPE . . . . . . . . . 7B Byte[9] UDSC_INT13EXT . . . . . . . . 84 Word UDSC_INT13BITS . . . . . . . . 86 Word Segments and Groups: N a m e Size Length Align Combine Class DATAEND . . . . . . . . . . . . 16 Bit 0000 Para Public 'INITDATA' ENDCODE . . . . . . . . . . . . 16 Bit 0000 Byte Public 'ENDCODE' IDATA . . . . . . . . . . . . . 16 Bit 0000 Para Public 'IDATA' INITCODE . . . . . . . . . . . . 16 Bit 0000 Para Public 'INITCODE' INITDATA . . . . . . . . . . . . 16 Bit 0000 Para Public 'INITDATA' INITENV . . . . . . . . . . . . 16 Bit 0000 Para Public 'INITDATA' INITPSP . . . . . . . . . . . . 16 Bit 0000 Para Public 'INITDATA' IVECT . . . . . . . . . . . . . 16 Bit 01B4 Abs Private '' RCODE_ALIGN . . . . . . . . . . 16 Bit 0000 Para Public 'RCODE' RESBIOS . . . . . . . . . . . . 16 Bit 0000 Para Public 'RESBIOS' RESUMECODE . . . . . . . . . . . 16 Bit 0000 Para Public 'RESUMECODE' STACKS . . . . . . . . . . . . . 16 Bit 0000 Para Public 'STACKS' CGROUP . . . . . . . . . . . . . GROUP CODE . . . . . . . . . . . . . . 16 Bit 0171 Byte Public 'CODE' RCODE . . . . . . . . . . . . . 16 Bit 0000 Word Public 'RCODE' ICODE . . . . . . . . . . . . . 16 Bit 0000 Word Public 'ICODE' Procedures, parameters and locals: N a m e Type Value Segment Length A20Enable . . . . . . . . . . . P Near 0000 CODE 0000 Public cleanup . . . . . . . . . . . . P Far 001A CODE 0001 Public init . . . . . . . . . . . . . . P Near 0000 CODE 0003 Private strat . . . . . . . . . . . . . P Far 00C4 CODE 000B Public Symbols: N a m e Type Value Attr ??0000 . . . . . . . . . . . . . Number BCh CODE ??0001 . . . . . . . . . . . . . Number B4h CODE ??0002 . . . . . . . . . . . . . Number C0h CODE ??0003 . . . . . . . . . . . . . Number B8h CODE ??0004 . . . . . . . . . . . . . Number 105h CODE ??0005 . . . . . . . . . . . . . Number 100h CODE ??0006 . . . . . . . . . . . . . Number 171h CODE ??0007 . . . . . . . . . . . . . Number 16Ch CODE ASYNC_INT . . . . . . . . . . . Number 14h AUX_ERROR . . . . . . . . . . . Number 80h BPB_LENGTH . . . . . . . . . . . Number 35h BS . . . . . . . . . . . . . . . Number 8h CG . . . . . . . . . . . . . . . Text offset CGROUP CMD_BUILD_BPB . . . . . . . . . Number 2h CMD_DEVICE_CLOSE . . . . . . . . Number Eh CMD_DEVICE_OPEN . . . . . . . . Number Dh CMD_FIXED_MEDIA . . . . . . . . Number Fh CMD_GENERIC_IOCTL . . . . . . . Number 13h CMD_GET_DEVICE . . . . . . . . . Number 17h CMD_INIT . . . . . . . . . . . . Number 0h CMD_INPUT . . . . . . . . . . . Number 4h CMD_INPUT_FLUSH . . . . . . . . Number 7h CMD_INPUT_IOCTL . . . . . . . . Number 3h CMD_INPUT_NOWAIT . . . . . . . . Number 5h CMD_INPUT_STATUS . . . . . . . . Number 6h CMD_MEDIA_CHECK . . . . . . . . Number 1h CMD_OUTPUT . . . . . . . . . . . Number 8h CMD_OUTPUT_FLUSH . . . . . . . . Number Bh CMD_OUTPUT_IOCTL . . . . . . . . Number Ch CMD_OUTPUT_STATUS . . . . . . . Number Ah CMD_OUTPUT_VERIFY . . . . . . . Number 9h CMD_QUERY_IOCTL . . . . . . . . Number 19h CMD_SET_DEVICE . . . . . . . . . Number 18h COMPRESSED . . . . . . . . . . . Number -00000001h CR . . . . . . . . . . . . . . . Number Dh CTRLBRK_INT . . . . . . . . . . Number 1Bh ClockTable . . . . . . . . . . . Word 0h CODE External ConsoleTable . . . . . . . . . . Word 0h CODE External DA_BIGDRV . . . . . . . . . . . Number 2h DA_CHARDEV . . . . . . . . . . . Number 8000h DA_GETSET . . . . . . . . . . . Number 40h DA_IOCTL . . . . . . . . . . . . Number 4000h DA_ISCIN . . . . . . . . . . . . Number 1h DA_ISCLK . . . . . . . . . . . . Number 8h DA_ISCOT . . . . . . . . . . . . Number 2h DA_ISNUL . . . . . . . . . . . . Number 4h DA_NONIBM . . . . . . . . . . . Number 2000h DA_OTILBSY . . . . . . . . . . . Number 2000h DA_QUERY . . . . . . . . . . . . Number 80h DA_REMOVE . . . . . . . . . . . Number 800h DA_SPECIAL . . . . . . . . . . . Number 10h DH_ATTRIB . . . . . . . . . . . Text es:word ptr 4 DH_INTERRUPT . . . . . . . . . . Text es:word ptr 8 DH_NAME . . . . . . . . . . . . Text es:byte ptr 10 DH_NEXT . . . . . . . . . . . . Text es:dword ptr 0 DH_NEXTOFF . . . . . . . . . . . Text es:word ptr 0 DH_NEXTSEG . . . . . . . . . . . Text es:word ptr 2 DH_STRATEGY . . . . . . . . . . Text es:word ptr 6 DISK_INT . . . . . . . . . . . . Number 13h DOS_INT . . . . . . . . . . . . Number 21h DiskTable . . . . . . . . . . . L Near 0h CODE External EQUIPMENT_INT . . . . . . . . . Number 11h EXT_MEMORY . . . . . . . . . . . Number 88h F5KEY . . . . . . . . . . . . . Number 3F00h F8KEY . . . . . . . . . . . . . Number 4200h FALSE . . . . . . . . . . . . . Number 0h FASTCON_INT . . . . . . . . . . Number 29h GET_STATE . . . . . . . . . . . Number Fh Int13Deblock . . . . . . . . . . L Near 0h CODE External Int13Unsure . . . . . . . . . . L Near 0h CODE External Int19Trap . . . . . . . . . . . L Near 11Eh CODE Int19Trap10 . . . . . . . . . . L Near 129h CODE Int19Trap20 . . . . . . . . . . L Near 167h CODE Int2FHandler . . . . . . . . . . L Near 0h CODE External KEYBOARD_INT . . . . . . . . . . Number 16h LF . . . . . . . . . . . . . . . Number Ah MAXPART . . . . . . . . . . . . Number 1Ah MEMORY_INT . . . . . . . . . . . Number 12h MS_A_READ . . . . . . . . . . . Number 3h MS_A_WRITE . . . . . . . . . . . Number 4h MS_C_FLUSH . . . . . . . . . . . Number Ch MS_C_NOECHO . . . . . . . . . . Number 8h MS_C_RAWIN . . . . . . . . . . . Number 7h MS_C_RAWIO . . . . . . . . . . . Number 6h MS_C_READ . . . . . . . . . . . Number 1h MS_C_READSTR . . . . . . . . . . Number Ah MS_C_STAT . . . . . . . . . . . Number Bh MS_C_WRITE . . . . . . . . . . . Number 2h MS_C_WRITESTR . . . . . . . . . Number 9h MS_DRV_ALLOC . . . . . . . . . . Number 1Bh MS_DRV_ALLOCSPEC . . . . . . . . Number 1Ch MS_DRV_ALLRESET . . . . . . . . Number Dh MS_DRV_GET . . . . . . . . . . . Number 19h MS_DRV_SET . . . . . . . . . . . Number Eh MS_DRV_SPACE . . . . . . . . . . Number 36h MS_F_CLOSE . . . . . . . . . . . Number 10h MS_F_DELETE . . . . . . . . . . Number 13h MS_F_DMAGET . . . . . . . . . . Number 2Fh MS_F_DMAOFF . . . . . . . . . . Number 1Ah MS_F_ERROR . . . . . . . . . . . Number 59h MS_F_GETVERIFY . . . . . . . . . Number 54h MS_F_LOCK . . . . . . . . . . . Number 5Ch MS_F_MAKE . . . . . . . . . . . Number 16h MS_F_OPEN . . . . . . . . . . . Number Fh MS_F_PARSE . . . . . . . . . . . Number 29h MS_F_RANDREC . . . . . . . . . . Number 24h MS_F_READ . . . . . . . . . . . Number 14h MS_F_READBLK . . . . . . . . . . Number 27h MS_F_READRAND . . . . . . . . . Number 21h MS_F_RENAME . . . . . . . . . . Number 17h MS_F_SFIRST . . . . . . . . . . Number 11h MS_F_SIZE . . . . . . . . . . . Number 23h MS_F_SNEXT . . . . . . . . . . . Number 12h MS_F_VERIFY . . . . . . . . . . Number 2Eh MS_F_WRITE . . . . . . . . . . . Number 15h MS_F_WRITEBLK . . . . . . . . . Number 28h MS_F_WRITERAND . . . . . . . . . Number 22h MS_L_WRITE . . . . . . . . . . . Number 5h MS_M_ALLOC . . . . . . . . . . . Number 48h MS_M_FREE . . . . . . . . . . . Number 49h MS_M_SETBLOCK . . . . . . . . . Number 4Ah MS_M_STRATEGY . . . . . . . . . Number 58h MS_P_GETPSP . . . . . . . . . . Number 62h MS_P_MKPSP . . . . . . . . . . . Number 26h MS_P_SETPSP . . . . . . . . . . Number 50h MS_P_TERMCPM . . . . . . . . . . Number 0h MS_P_TERMKEEP . . . . . . . . . Number 31h MS_S_BDOSVER . . . . . . . . . . Number 30h MS_S_BREAK . . . . . . . . . . . Number 33h MS_S_COUNTRY . . . . . . . . . . Number 38h MS_S_GETINT . . . . . . . . . . Number 35h MS_S_SETINT . . . . . . . . . . Number 25h MS_T_GETDATE . . . . . . . . . . Number 2Ah MS_T_GETTIME . . . . . . . . . . Number 2Ch MS_T_SETDATE . . . . . . . . . . Number 2Bh MS_T_SETTIME . . . . . . . . . . Number 2Dh MS_X_CHDIR . . . . . . . . . . . Number 3Bh MS_X_CHMOD . . . . . . . . . . . Number 43h MS_X_CLOSE . . . . . . . . . . . Number 3Eh MS_X_COMMIT . . . . . . . . . . Number 68h MS_X_CREAT . . . . . . . . . . . Number 3Ch MS_X_CURDIR . . . . . . . . . . Number 47h MS_X_DATETIME . . . . . . . . . Number 57h MS_X_DUP . . . . . . . . . . . . Number 45h MS_X_DUP2 . . . . . . . . . . . Number 46h MS_X_EXEC . . . . . . . . . . . Number 4Bh MS_X_EXIT . . . . . . . . . . . Number 4Ch MS_X_EXPAND . . . . . . . . . . Number 60h MS_X_FIRST . . . . . . . . . . . Number 4Eh MS_X_GETCP . . . . . . . . . . . Number 6601h MS_X_IOCTL . . . . . . . . . . . Number 44h MS_X_LSEEK . . . . . . . . . . . Number 42h MS_X_MKDIR . . . . . . . . . . . Number 39h MS_X_MKNEW . . . . . . . . . . . Number 5Bh MS_X_MKTEMP . . . . . . . . . . Number 5Ah MS_X_NEXT . . . . . . . . . . . Number 4Fh MS_X_OPEN . . . . . . . . . . . Number 3Dh MS_X_READ . . . . . . . . . . . Number 3Fh MS_X_RENAME . . . . . . . . . . Number 56h MS_X_RMDIR . . . . . . . . . . . Number 3Ah MS_X_SETCP . . . . . . . . . . . Number 6602h MS_X_SETHC . . . . . . . . . . . Number 67h MS_X_UNLINK . . . . . . . . . . Number 41h MS_X_WAIT . . . . . . . . . . . Number 4Dh MS_X_WRITE . . . . . . . . . . . Number 40h MemFixup . . . . . . . . . . . . Word 18h CODE NUL . . . . . . . . . . . . . . Number 0h NUM_SAVED_VECS . . . . . . . . . Number 5h OLDBPB_LENGTH . . . . . . . . . Number 1Fh OLD_UDSC_BPB_LENGTH . . . . . . Number 19h PRINTER_INT . . . . . . . . . . Number 17h PRN_ACK . . . . . . . . . . . . Number 40h PRN_ERROR . . . . . . . . . . . Number 29h PRN_IOERR . . . . . . . . . . . Number 8h PRN_NOTBUSY . . . . . . . . . . Number 80h PRN_PAPER . . . . . . . . . . . Number 20h PRN_SELECT . . . . . . . . . . . Number 10h PRN_TIMEOUT . . . . . . . . . . Number 1h READ_CHAR . . . . . . . . . . . Number 8h READ_CURSOR . . . . . . . . . . Number 3h RH0_BPBOFF . . . . . . . . . . . Word 12h RH0_BPBSEG . . . . . . . . . . . Word 14h RH0_DRIVE . . . . . . . . . . . Byte 16h RH0_LEN . . . . . . . . . . . . Number 16h RH0_NUNITS . . . . . . . . . . . Byte Dh RH0_RESIDENT . . . . . . . . . . Word Eh RH13_LEN . . . . . . . . . . . . Number Dh RH14_LEN . . . . . . . . . . . . Number Dh RH19_CATEGORY . . . . . . . . . Word Dh RH19_DI . . . . . . . . . . . . Word 11h RH19_GENPB . . . . . . . . . . . DWord 13h RH19_LEN . . . . . . . . . . . . Number 17h RH19_MAJOR . . . . . . . . . . . Byte Dh RH19_MINOR . . . . . . . . . . . Byte Eh RH19_SI . . . . . . . . . . . . Word Fh RH1_LEN . . . . . . . . . . . . Number Fh RH1_MEDIA . . . . . . . . . . . Byte Dh RH1_RETURN . . . . . . . . . . . Byte Eh RH1_VOLID . . . . . . . . . . . DWord Fh RH24_CMD . . . . . . . . . . . . Byte Eh RH24_LEN . . . . . . . . . . . . Number 15h RH24_RESVD . . . . . . . . . . . DWord 11h RH24_STATUS . . . . . . . . . . Word Fh RH2_BPB . . . . . . . . . . . . DWord 12h RH2_BPBOFF . . . . . . . . . . . Word 12h RH2_BPBSEG . . . . . . . . . . . Word 14h RH2_BUFFER . . . . . . . . . . . DWord Eh RH2_LEN . . . . . . . . . . . . Number 18h RH2_MEDIA . . . . . . . . . . . Byte Dh RH4_BIGSECTOR . . . . . . . . . DWord 1Ah RH4_BIGSECTORHI . . . . . . . . Word 1Ch RH4_BIGSECTORLO . . . . . . . . Word 1Ah RH4_BUFFER . . . . . . . . . . . DWord Eh RH4_BUFOFF . . . . . . . . . . . Word Eh RH4_BUFSEG . . . . . . . . . . . Word 10h RH4_COUNT . . . . . . . . . . . Word 12h RH4_LEN . . . . . . . . . . . . Number 1Eh RH4_MEDIA . . . . . . . . . . . Byte Dh RH4_RIC . . . . . . . . . . . . Byte Dh RH4_SECTOR . . . . . . . . . . . Word 14h RH4_VOLID . . . . . . . . . . . DWord 16h RH5_CHAR . . . . . . . . . . . . Byte Dh RH5_LEN . . . . . . . . . . . . Number Eh RH5_RIC . . . . . . . . . . . . Byte Dh RHS_BUSY . . . . . . . . . . . . Number 200h RHS_DONE . . . . . . . . . . . . Number 100h RHS_ERROR . . . . . . . . . . . Number 8000h RHS_IC . . . . . . . . . . . . . Number 400h RHS_RM . . . . . . . . . . . . . Number 800h RH_CMD . . . . . . . . . . . . . Byte 2h RH_LEN . . . . . . . . . . . . . Byte 0h RH_SIZE . . . . . . . . . . . . Number 1Eh RH_STATUS . . . . . . . . . . . Word 3h RH_UNIT . . . . . . . . . . . . Byte 1h ROS_DSKCHG . . . . . . . . . . . Number 16h ROS_FORMAT . . . . . . . . . . . Number 5h ROS_GETTYPE . . . . . . . . . . Number 15h ROS_LBACHK . . . . . . . . . . . Number 41h ROS_LBAPARAM . . . . . . . . . . Number 48h ROS_LBAREAD . . . . . . . . . . Number 42h ROS_LBAVERIFY . . . . . . . . . Number 44h ROS_LBAWRITE . . . . . . . . . . Number 43h ROS_PARAM . . . . . . . . . . . Number 8h ROS_READ . . . . . . . . . . . . Number 2h ROS_RESET . . . . . . . . . . . Number 0h ROS_SETMEDIA . . . . . . . . . . Number 18h ROS_SETTYPE . . . . . . . . . . Number 17h ROS_VERIFY . . . . . . . . . . . Number 4h ROS_WRITE . . . . . . . . . . . Number 3h RQ19_DSP_GET . . . . . . . . . . Number 7Fh RQ19_DSP_SET . . . . . . . . . . Number 5Fh RQ19_FORMAT . . . . . . . . . . Number 42h RQ19_GET . . . . . . . . . . . . Number 60h RQ19_GETMEDIA . . . . . . . . . Number 66h RQ19_LOCKLOG . . . . . . . . . . Number 4Ah RQ19_LOCKPHYS . . . . . . . . . Number 4Bh RQ19_PRP_END . . . . . . . . . . Number 4Dh RQ19_PRP_START . . . . . . . . . Number 4Ch RQ19_QRY_PRP . . . . . . . . . . Number 6Bh RQ19_QRY_SEL . . . . . . . . . . Number 6Ah RQ19_READ . . . . . . . . . . . Number 61h RQ19_SELECT . . . . . . . . . . Number 4Ah RQ19_SET . . . . . . . . . . . . Number 40h RQ19_SETMEDIA . . . . . . . . . Number 46h RQ19_UNLOCKLOG . . . . . . . . . Number 6Ah RQ19_UNLOCKPHYS . . . . . . . . Number 6Bh RQ19_VERIFY . . . . . . . . . . Number 62h RQ19_WRITE . . . . . . . . . . . Number 41h RTC_INT . . . . . . . . . . . . Number 1Ah ResumeHandler . . . . . . . . . L Near 0h CODE External SCROLL_DOWN . . . . . . . . . . Number 7h SCROLL_UP . . . . . . . . . . . Number 6h SET_CURSOR_TYPE . . . . . . . . Number 1h STDAUX . . . . . . . . . . . . . Number 3h STDERR . . . . . . . . . . . . . Number 2h STDIN . . . . . . . . . . . . . Number 0h STDOUT . . . . . . . . . . . . . Number 1h STDPRN . . . . . . . . . . . . . Number 4h SWITCH_F . . . . . . . . . . . . Number 1h SYSTEM_INT . . . . . . . . . . . Number 15h SerParCommonTable . . . . . . . Word 0h CODE External TAB . . . . . . . . . . . . . . Number 9h TRUE . . . . . . . . . . . . . . Number -00000001h UDF_CHGLINE . . . . . . . . . . Number 2h UDF_HARD . . . . . . . . . . . . Number 1h UDF_MEDIA . . . . . . . . . . . Number 100h UDF_OWNER . . . . . . . . . . . Number 20h UDF_UNSURE . . . . . . . . . . . Number 4h UDF_VFLOPPY . . . . . . . . . . Number 10h UDSC_BPB_LENGTH . . . . . . . . Number 29h UDSC_LENGTH . . . . . . . . . . Number 88h VIDEO_INT . . . . . . . . . . . Number 10h WRITE_CHAR . . . . . . . . . . . Number 9h WRITE_CURSOR . . . . . . . . . . Number 2h WRITE_TTY . . . . . . . . . . . Number Eh _disk_msgA . . . . . . . . . . . Byte 0h CODE External _disk_msgB . . . . . . . . . . . Byte 0h CODE External _div_by_zero_msg . . . . . . . . Byte 0h CODE External _drdosprojects_msg . . . . . . . Byte 0h CODE External _lba_supp_msg . . . . . . . . . Byte 0h CODE External _starting_dos_msg . . . . . . . Byte 0h CODE External aux_drvr . . . . . . . . . . . . Word[2] 3Eh CODE biosinit . . . . . . . . . . . . L Near 0h CODE External biosinit_end . . . . . . . . . . Byte 0h CODE External boot_options . . . . . . . . . . Word 0h CODE External boot_switches . . . . . . . . . Byte 0h CODE External clock_drvr . . . . . . . . . . . Word[2] 62h CODE col_mode . . . . . . . . . . . . Byte[3] 3Bh CODE com1_drvr . . . . . . . . . . . Word[2] 74h CODE com2_drvr . . . . . . . . . . . Word[2] 86h CODE com3_drvr . . . . . . . . . . . Word[2] 98h CODE com4_drvr . . . . . . . . . . . Word[2] AAh CODE compflg . . . . . . . . . . . . Word 3h CODE comspec_drv . . . . . . . . . . Byte 0h CODE External con_drvr . . . . . . . . . . . . Word[2] 23h CODE current_dos . . . . . . . . . . Word 0h CODE External device_root . . . . . . . . . . DWord 0h CODE External devno . . . . . . . . . . . . . Byte[2] 16Ch CODE disk_msgA . . . . . . . . . . . Byte 0h CODE External disk_msgB . . . . . . . . . . . Byte 0h CODE External div_by_zero_msg . . . . . . . . Byte 0h CODE External drdosprojects_msg . . . . . . . Byte 0h CODE External ext_mem_size . . . . . . . . . . Word 0h CODE External i0off . . . . . . . . . . . . . Word 0h IVECT i0seg . . . . . . . . . . . . . Word 2h IVECT i13off_save . . . . . . . . . . Word BCh CODE Public i13pointer . . . . . . . . . . . DWord BCh CODE Public i13seg_save . . . . . . . . . . Word BEh CODE Public i15off . . . . . . . . . . . . . Word 54h IVECT i15seg . . . . . . . . . . . . . Word 56h IVECT i19off . . . . . . . . . . . . . Word 64h IVECT i19seg . . . . . . . . . . . . . Word 66h IVECT i1Eoff . . . . . . . . . . . . . Word 78h IVECT i1Eptr . . . . . . . . . . . . . DWord 78h IVECT i1Eseg . . . . . . . . . . . . . Word 7Ah IVECT i1off . . . . . . . . . . . . . Word 4h IVECT i1seg . . . . . . . . . . . . . Word 6h IVECT i2Foff . . . . . . . . . . . . . Word BCh IVECT i2Fptr . . . . . . . . . . . . . DWord BCh IVECT i2Fseg . . . . . . . . . . . . . Word BEh IVECT i3off . . . . . . . . . . . . . Word Ch IVECT i3seg . . . . . . . . . . . . . Word Eh IVECT i4off . . . . . . . . . . . . . Word 10h IVECT i4seg . . . . . . . . . . . . . Word 12h IVECT i6Coff . . . . . . . . . . . . . Word 1B0h IVECT i6Cptr . . . . . . . . . . . . . DWord 1B0h IVECT i6Cseg . . . . . . . . . . . . . Word 1B2h IVECT icode_len . . . . . . . . . . . Word 0h CODE External init_buf . . . . . . . . . . . . Byte 0h CODE External init_drv . . . . . . . . . . . . Byte 0h CODE External init_flags . . . . . . . . . . . Word 0h CODE External init_runit . . . . . . . . . . . Byte 0h CODE External lba_supp_msg . . . . . . . . . . Byte 0h CODE External lpt1_drvr . . . . . . . . . . . Word[2] CFh CODE lpt2_drvr . . . . . . . . . . . Word[2] E1h CODE lpt3_drvr . . . . . . . . . . . Word[2] F3h CODE mem_size . . . . . . . . . . . . Word 0h CODE External newxbda . . . . . . . . . . . . Word 16Bh CODE Public oldmemtop . . . . . . . . . . . Word 16Fh CODE Public oldxbda . . . . . . . . . . . . Word 169h CODE Public orgInt13 . . . . . . . . . . . . Word[2] 10Bh CODE Public prn_drvr . . . . . . . . . . . . Word[2] 50h CODE rcode_fixups . . . . . . . . . . Word 0h CODE External rcode_len . . . . . . . . . . . Word 0h CODE External rcode_offset . . . . . . . . . . Word 0h CODE External rcode_seg . . . . . . . . . . . Word 0h CODE External req_off . . . . . . . . . . . . Word C0h CODE Public req_ptr . . . . . . . . . . . . DWord C0h CODE Public req_seg . . . . . . . . . . . . Word C2h CODE Public serparChar . . . . . . . . . . . Byte[4] 1Fh CODE Public serparFlag . . . . . . . . . . . Byte[4] 1Bh CODE Public starting_dos_msg . . . . . . . . Byte 0h CODE External vecSave . . . . . . . . . . . . Byte 105h CODE xbdalen . . . . . . . . . . . . Word 16Dh CODE Public init.asm: 378 lines, 3 passes, 2 ms, 0 warnings, 0 errors