mirror of
https://github.com/SEPPDROID/DR-DOS-OpenDOS.git
synced 2025-10-22 16:04:20 +00:00
1475 lines
90 KiB
Plaintext
1475 lines
90 KiB
Plaintext
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 1
|
||
|
||
|
||
= 0001 __RASM__ EQU 1
|
||
|
||
; File : $ERROR.A86$
|
||
;
|
||
; 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$
|
||
; ERROR.A86 1.17 94/12/02 11:01:03
|
||
; added logical error entry
|
||
; ERROR.A86 1.16 93/11/26 15:51:29
|
||
; Update char_error so ES:SI -> device driver header itself
|
||
; ERROR.A86 1.14 93/09/09 22:36:26
|
||
; Int 21/59 uses error stack (for benefit of Lantastic)
|
||
; ERROR.A86 1.13 93/09/03 20:28:11
|
||
; Add "no critical errors" support (int 21/6C)
|
||
; ENDLOG
|
||
;
|
||
; This file contains the Error handling routines for PCMODE
|
||
; When a function encounters an error it jumps to the ERROR_EXIT
|
||
; function which will process the error consistantly. FCB_ERROR_EXIT
|
||
; is a special case of ERROR_EXIT where the error code is not returned
|
||
; directly to the user but is still saved for func59
|
||
;
|
||
|
||
= include pcmode.equ
|
||
= ; File : $PCMODE.EQU$
|
||
= ;
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 2
|
||
|
||
|
||
= ; 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$
|
||
= ;
|
||
= ; ENDLOG
|
||
= ; This file contains all the general purpose definitions
|
||
= ; and equates used by the PCMODE Module.
|
||
= ;
|
||
=
|
||
= FFFF TRUE equ 0FFFFh ; value of TRUE
|
||
= 0000 FALSE equ 0 ; value of FALSE
|
||
=
|
||
= 0006 TRUE_VERSION equ 6
|
||
=
|
||
= FFFF IDLE_DETECT equ TRUE ; Check for IDLE Process's
|
||
=
|
||
= if IDLE_DETECT
|
||
= 0001 IDLE_COMMAND equ 0001h ; Command Processor Active
|
||
= 0002 IDLE_DOSFUNC equ 0002h ; DOS Function Called
|
||
= 0004 IDLE_INT28 equ 0004h ; INT 28 Called
|
||
=
|
||
= 4000 IDLE_ON equ 4000h ; ReSet when Idle Checking Enabled
|
||
= 8000 IDLE_INIT equ 8000h ; ReSet when $IDLE$ Loaded and Active
|
||
= C000 IDLE_DISABLE equ IDLE_INIT + IDLE_ON
|
||
=
|
||
= 0001 PROC_IDLE equ 0001 ; Process is IDLE
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 3
|
||
|
||
|
||
= 0002 PROC_INT28 equ 0002 ; INT28 Polling Loop
|
||
= 0003 PROC_KEYIN equ 0003 ; Keyboard Input
|
||
= 0004 PROC_DEVIN equ 0004 ; Device Input Routine
|
||
= endif
|
||
=
|
||
=
|
||
= 00C0 STACK_SIZE equ 192 ; Local Stack Size (Levels)
|
||
= 0050 MAX_PATHLEN equ 80 ; Maximum Path length
|
||
= 000D MAX_FILELEN equ 13
|
||
=
|
||
= ;
|
||
= ; DOS process termination Codes
|
||
= ;
|
||
= 0000 TERM_NORMAL equ 0 ; Normal Termination
|
||
= 0001 TERM_BREAK equ 1 ; Termination by Control Break
|
||
= 0002 TERM_ERROR equ 2 ; Termination by Critical Error
|
||
= 0003 TERM_RESIDENT equ 3 ; Terminate and Stay Resident
|
||
=
|
||
= ;
|
||
= ; Critical Error responses from the default INT 24 handler and
|
||
= ; the DO_INT24 routine.
|
||
= ;
|
||
= 0000 ERR_IGNORE equ 0 ; Ignore Error
|
||
= 0001 ERR_RETRY equ 1 ; Retry the Operation
|
||
= 0002 ERR_ABORT equ 2 ; Terminate the Process
|
||
= 0003 ERR_FAIL equ 3 ; Fail Function
|
||
= ;
|
||
= 0008 OK_FAIL equ 0000$1000b ; Fail is a Valid Response
|
||
= 0010 OK_RETRY equ 0001$0000b ; Retry is a Valid Response
|
||
= 0020 OK_IGNORE equ 0010$0000b ; Ignore is a valid Response
|
||
= 0038 OK_RIF equ 0011$1000b ; All Responsese are Valid
|
||
= 0030 OK_RI equ 0011$0000b ; Retry and Ignore are Valid
|
||
= 0018 OK_RF equ 0001$1000b ; Retry and Fail are Valid
|
||
= ;
|
||
= 0040 NO_CRIT_ERRORS equ 0100$0000b ; critical error shouldn't be generated
|
||
= ; warning - must match FDOS.A86
|
||
= ;
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 4
|
||
|
||
|
||
= eject
|
||
= ; The following equates define the format in which the users registers
|
||
= ; are saved on the stack. This format is also seen by an application
|
||
= ; when a critical error occurs.
|
||
= ;
|
||
= CodeMacro POP$DOS ; Pop User Registers a la MS-DOS
|
||
= db 058h ! db 05Bh ; pop AX ! pop BX
|
||
= db 059h ! db 05Ah ; pop BX ! pop CX
|
||
= db 05Eh ! db 05Fh ; pop SI ! pop DI
|
||
= db 05Dh ; pop BP
|
||
= db 01Fh ! db 007h ; pop DS ! pop ES
|
||
= EndM
|
||
=
|
||
= CodeMacro PUSH$DOS ; Push User Registers
|
||
= db 006h ! db 01Eh ; push ES ! push DS
|
||
= db 055h ; push BP
|
||
= db 057h ! db 056h ; push DI ! push SI
|
||
= db 052h ! db 051h ; push DX ! push CX
|
||
= db 053h ! db 050h ; push BX ! push AX
|
||
= EndM
|
||
=
|
||
= 0000 reg_AX equ word ptr .00
|
||
= 0000 reg_AL equ byte ptr .00
|
||
= 0001 reg_AH equ byte ptr .01
|
||
=
|
||
= 0002 reg_BX equ word ptr .02
|
||
= 0002 reg_BL equ byte ptr .02
|
||
= 0003 reg_BH equ byte ptr .03
|
||
=
|
||
= 0004 reg_CX equ word ptr .04
|
||
= 0004 reg_CL equ byte ptr .04
|
||
= 0005 reg_CH equ byte ptr .05
|
||
=
|
||
= 0006 reg_DX equ word ptr .06
|
||
= 0006 reg_DL equ byte ptr .06
|
||
= 0007 reg_DH equ byte ptr .07
|
||
=
|
||
= 0008 reg_SI equ word ptr .08
|
||
= 000A reg_DI equ word ptr .10
|
||
= 000C reg_BP equ word ptr .12
|
||
=
|
||
= 000E reg_DS equ word ptr .14
|
||
= 0010 reg_ES equ word ptr .16
|
||
=
|
||
= 0012 reg_IP equ word ptr .18
|
||
= 0014 reg_CS equ word ptr .20
|
||
= 0016 reg_FLAGS equ word ptr .22
|
||
=
|
||
= ; Processor Flags
|
||
= 0001 CARRY_FLAG equ 0001h ; Carry Flag
|
||
= 0040 ZERO_FLAG equ 0040h ; Zero Flag
|
||
= 0080 SIGN_FLAG equ 0080h ; Sign Flag
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 5
|
||
|
||
|
||
= 0200 INT_FLAG equ 0200h ; Interrupt Flag
|
||
= 0400 DIR_FLAG equ 0400h ; Direction Flag
|
||
= 0800 OFLW_FLAG equ 0800h ; OverFlow Flag
|
||
=
|
||
= 0000 DMD_ID equ es:byte ptr .0 ; id code ('M' or 'Z')
|
||
= 0001 DMD_PSP equ es:word ptr .1 ; owner of memory block
|
||
= 0003 DMD_LEN equ es:word ptr .3 ; length of memory block
|
||
= 0006 DMD_IDLE_FLAGS equ es:word ptr .6 ; idle flags live here
|
||
= 0008 DMD_NAME equ es:byte ptr .8 ; ASCIIZ name field
|
||
= 0008 DMD_NAME_LEN equ 8 ; 8 Bytes long
|
||
= 004D IDM equ 'M' ; not last id code
|
||
= 005A IDZ equ 'Z' ; last id code
|
||
=
|
||
= PCMCODE GROUP PCM_HEADER, PCM_CODE, BDOS_CODE, PCM_RODATA
|
||
= PCMCODE GROUP PCM_HISTORY, PCM_ICODE, PCM_CODEND
|
||
=
|
||
= PCM_HEADER CSEG PARA
|
||
= PCM_CODE CSEG BYTE
|
||
= PCM_RODATA CSEG WORD
|
||
= BDOS_CODE CSEG WORD
|
||
= PCM_HISTORY CSEG BYTE
|
||
= PCM_ICODE CSEG BYTE
|
||
= PCM_CODEND CSEG PARA
|
||
=
|
||
=
|
||
= PCMDATA GROUP PCMODE_DATA, FDOS_DSEG, FIXED_DOS_DATA
|
||
= PCMDATA GROUP PCMODE_CODE, GLOBAL_DATA, BDOS_DATA, PCMODE_DSIZE
|
||
=
|
||
= PCMODE_DATA DSEG WORD ; DOS Data
|
||
= FDOS_DSEG DSEG WORD COMMON ; FDOS Parameter Block
|
||
=0000 fdos_data rw 7
|
||
= FIXED_DOS_DATA CSEG WORD 'DATA' ; Fixed DOS Data Area
|
||
= PCMODE_CODE CSEG WORD 'DATA' ; DATA relative CODE
|
||
= GLOBAL_DATA DSEG WORD ; GLOBAL DOS DATA (Process Independant)
|
||
= BDOS_DATA DSEG WORD ; BDOS Data Area
|
||
= PCMODE_DSIZE DSEG PARA ; End of DOS Data Area
|
||
|
||
= include fdos.def
|
||
= ; File : $FDOS.DEF$
|
||
= ;
|
||
= ; 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
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 6
|
||
|
||
|
||
= ; 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$
|
||
= ;
|
||
= ; ENDLOG
|
||
=
|
||
= 0048 FD_DISKINFO equ 48h
|
||
= 0049 FD_FLUSH equ 49h
|
||
= 004A FD_SELECT equ 4Ah
|
||
= 004B FD_EXEC equ 4Bh
|
||
= 004C FD_EXIT equ 4Ch
|
||
= 004D FD_FCB equ 4Dh
|
||
= 0050 FD_COMMIT equ 50H
|
||
= 0051 FD_NEW equ 51h
|
||
= 0052 FD_LOCK equ 52h
|
||
= 0054 FD_DDIO equ 54h
|
||
= 0055 FD_EXPAND equ 55h
|
||
= 0058 FD_REOPEN equ 58h
|
||
=
|
||
= 0007 FDOS_MAXPARM equ 7 ; Maximum FDOS Parameter Length (WORDS)
|
||
=
|
||
= 0000 FD_FUNC equ fdos_data
|
||
=
|
||
= 0002 FD_DRIVE equ fdos_data + 2
|
||
= 0004 FD_DPB equ dword ptr fdos_data + 4
|
||
= 0004 FD_DPBOFF equ fdos_data + 4
|
||
= 0006 FD_DPBSEG equ fdos_data + 6
|
||
= 0008 FD_ADJUST equ fdos_data + 8
|
||
=
|
||
= 0002 FD_NAME equ dword ptr fdos_data + 2
|
||
= 0002 FD_NAMEOFF equ fdos_data + 2
|
||
= 0004 FD_NAMESEG equ fdos_data + 4
|
||
=
|
||
= 0006 FD_MODE equ fdos_data + 6
|
||
=
|
||
= 0002 FD_HANDLE equ fdos_data + 2
|
||
=
|
||
= 0004 FD_BUF equ dword ptr fdos_data + 4
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 7
|
||
|
||
|
||
= 0004 FD_BUFOFF equ fdos_data + 4
|
||
= 0006 FD_BUFSEG equ fdos_data + 6
|
||
=
|
||
= 0008 FD_COUNT equ fdos_data + 8
|
||
=
|
||
= 0004 FD_OFFSET equ dword ptr fdos_data + 4
|
||
=
|
||
= 0008 FD_METHOD equ fdos_data + 8
|
||
=
|
||
= 0006 FD_FLAG equ fdos_data + 6
|
||
=
|
||
= 0008 FD_ATTRIB equ fdos_data + 8
|
||
=
|
||
= 0004 FD_PATH equ dword ptr fdos_data + 4
|
||
= 0004 FD_PATHOFF equ fdos_data + 4
|
||
= 0006 FD_PATHSEG equ fdos_data + 6
|
||
=
|
||
= 0002 FD_ONAME equ dword ptr fdos_data + 2
|
||
= 0002 FD_ONAMEOFF equ fdos_data + 2
|
||
= 0004 FD_ONAMESEG equ fdos_data + 4
|
||
=
|
||
= 000A FD_NNAME equ dword ptr fdos_data + 10
|
||
= 000A FD_NNAMEOFF equ fdos_data + 10
|
||
= 000C FD_NNAMESEG equ fdos_data + 12
|
||
=
|
||
= 0004 FD_SFLAG equ fdos_data + 4
|
||
= 0006 FD_DATE equ fdos_data + 6
|
||
= 0008 FD_TIME equ fdos_data + 8
|
||
=
|
||
= 0008 FD_LENGTH equ dword ptr fdos_data + 8
|
||
= 000C FD_LFLAG equ word ptr fdos_data + 12
|
||
=
|
||
= 0004 FD_NEWHND equ fdos_data + 4
|
||
=
|
||
= 0002 FD_FCBADR equ dword ptr fdos_data + 2
|
||
= 0002 FD_FCBOFF equ fdos_data + 2
|
||
= 0004 FD_FCBSEG equ fdos_data + 4
|
||
=
|
||
= 0006 FD_FCBCNT equ fdos_data + 6
|
||
= 0008 FD_FCBFUNC equ fdos_data + 8
|
||
=
|
||
= 0002 FD_PSPSEG equ fdos_data + 2
|
||
=
|
||
= 0002 FD_BPBOFF equ fdos_data + 2
|
||
= 0004 FD_BPBSEG equ fdos_data + 4
|
||
= 0006 FD_DDSCOFF equ fdos_data + 6
|
||
= 0008 FD_DDSCSEG equ fdos_data + 8
|
||
=
|
||
= 0004 FD_IOCTLFUNC equ fdos_data + 4
|
||
= 0006 FD_IOCTLSTAT equ fdos_data + 6
|
||
=
|
||
= 0002 FD_NUMOPEN equ fdos_data + 2
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 8
|
||
|
||
|
||
=
|
||
= 0002 FD_DDIO_DRV_OP equ fdos_data + 2
|
||
= 0004 FD_DDIO_NSECTORS equ fdos_data + 4
|
||
= 0006 FD_DDIO_STARTLOW equ fdos_data + 6
|
||
= 0008 FD_DDIO_STARTHIGH equ fdos_data + 8
|
||
= 000A FD_DDIO_DMAOFF equ fdos_data + 10
|
||
= 000C FD_DDIO_DMASEG equ fdos_data + 12
|
||
=
|
||
|
||
= include i:msdos.equ
|
||
= ; File : $MSDOS.EQU$
|
||
= ;
|
||
= ; 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$
|
||
= ;
|
||
= ; ENDLOG
|
||
=
|
||
=
|
||
= 0000 MS_P_TERMCPM equ 00H
|
||
= 0001 MS_C_READ equ 01H
|
||
= 0002 MS_C_WRITE equ 02H
|
||
= 0003 MS_A_READ equ 03H
|
||
= 0004 MS_A_WRITE equ 04H
|
||
= 0005 MS_L_WRITE equ 05H
|
||
= 0006 MS_C_RAWIO equ 06H
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 9
|
||
|
||
|
||
= 0007 MS_C_RAWIN equ 07H
|
||
= 0008 MS_C_NOECHO equ 08H
|
||
= 0009 MS_C_WRITESTR equ 09H
|
||
= 000A MS_C_READSTR equ 0aH
|
||
= 000B MS_C_STAT equ 0bH
|
||
= 000C MS_C_FLUSH equ 0cH
|
||
= 000D MS_DRV_ALLRESET equ 0dH
|
||
= 000E MS_DRV_SET equ 0eH
|
||
= 000F MS_F_OPEN equ 0fH
|
||
= 0010 MS_F_CLOSE equ 10H
|
||
= 0011 MS_F_SFIRST equ 11H
|
||
= 0012 MS_F_SNEXT equ 12H
|
||
= 0013 MS_F_DELETE equ 13H
|
||
= 0014 MS_F_READ equ 14H
|
||
= 0015 MS_F_WRITE equ 15H
|
||
= 0016 MS_F_MAKE equ 16H
|
||
= 0017 MS_F_RENAME equ 17H
|
||
= 0019 MS_DRV_GET equ 19H
|
||
= 001A MS_F_DMAOFF equ 1aH
|
||
= 001B MS_DRV_ALLOC equ 1bH
|
||
= 001C MS_DRV_ALLOCSPEC equ 1cH
|
||
= 0021 MS_F_READRAND equ 21H
|
||
= 0022 MS_F_WRITERAND equ 22H
|
||
= 0023 MS_F_SIZE equ 23H
|
||
= 0024 MS_F_RANDREC equ 24H
|
||
= 0025 MS_S_SETINT equ 25H
|
||
= 0026 MS_P_MKPSP equ 26H
|
||
= 0027 MS_F_READBLK equ 27H
|
||
= 0028 MS_F_WRITEBLK equ 28H
|
||
= 0029 MS_F_PARSE equ 29H
|
||
= 002A MS_T_GETDATE equ 2aH
|
||
= 002B MS_T_SETDATE equ 2bH
|
||
= 002C MS_T_GETTIME equ 2cH
|
||
= 002D MS_T_SETTIME equ 2dH
|
||
= 002E MS_F_VERIFY equ 2eH
|
||
= 002F MS_F_DMAGET equ 2fH
|
||
= 0030 MS_S_BDOSVER equ 30H
|
||
= 0031 MS_P_TERMKEEP equ 31H
|
||
= 0033 MS_S_BREAK equ 33H
|
||
= 0035 MS_S_GETINT equ 35H
|
||
= 0036 MS_DRV_SPACE equ 36H
|
||
= 0038 MS_S_COUNTRY equ 38H
|
||
= 0039 MS_X_MKDIR equ 39H
|
||
= 003A MS_X_RMDIR equ 3aH
|
||
= 003B MS_X_CHDIR equ 3bH
|
||
= 003C MS_X_CREAT equ 3cH
|
||
= 003D MS_X_OPEN equ 3dH
|
||
= 003E MS_X_CLOSE equ 3eH
|
||
= 003F MS_X_READ equ 3fH
|
||
= 0040 MS_X_WRITE equ 40H
|
||
= 0041 MS_X_UNLINK equ 41H
|
||
= 0042 MS_X_LSEEK equ 42H
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 10
|
||
|
||
|
||
= 0043 MS_X_CHMOD equ 43H
|
||
= 0044 MS_X_IOCTL equ 44H
|
||
= 0045 MS_X_DUP equ 45H
|
||
= 0046 MS_X_DUP2 equ 46H
|
||
= 0047 MS_X_CURDIR equ 47H
|
||
= 0048 MS_M_ALLOC equ 48H
|
||
= 0049 MS_M_FREE equ 49H
|
||
= 004A MS_M_SETBLOCK equ 4aH
|
||
= 004B MS_X_EXEC equ 4bH
|
||
= 004C MS_X_EXIT equ 4cH
|
||
= 004D MS_X_WAIT equ 4dH
|
||
= 004E MS_X_FIRST equ 4eH
|
||
= 004F MS_X_NEXT equ 4fH
|
||
= 0050 MS_P_SETPSP equ 50H
|
||
= 0054 MS_F_GETVERIFY equ 54H
|
||
= 0056 MS_X_RENAME equ 56H
|
||
= 0057 MS_X_DATETIME equ 57H
|
||
= 0058 MS_M_STRATEGY equ 58h
|
||
= 0059 MS_F_ERROR equ 59H
|
||
= 005A MS_X_MKTEMP equ 5aH
|
||
= 005B MS_X_MKNEW equ 5bH
|
||
= 005C MS_F_LOCK equ 5cH
|
||
= 0060 MS_X_EXPAND equ 60H
|
||
= 0062 MS_P_GETPSP equ 62H
|
||
= 6601 MS_X_GETCP equ 6601h
|
||
= 6602 MS_X_SETCP equ 6602h
|
||
= 0067 MS_X_SETHC equ 67h
|
||
= 0068 MS_X_COMMIT equ 68h
|
||
=
|
||
= 0021 DOS_INT equ 21h ; DOS Entry Point
|
||
= ;
|
||
= 0000 STDIN equ 0 ; Standard Console Input Handle
|
||
= 0001 STDOUT equ 1 ; Standard Console Output Handle
|
||
= 0002 STDERR equ 2 ; Standard Error Output
|
||
= 0003 STDAUX equ 3 ; Auxilary Device Handle
|
||
= 0004 STDPRN equ 4 ; Printer Device Handle
|
||
|
||
= include i:mserror.equ
|
||
= ; File : $MSERROR.EQU$
|
||
= ;
|
||
= ; 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
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 11
|
||
|
||
|
||
= ; 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$
|
||
= ;
|
||
= ; ENDLOG
|
||
=
|
||
= FFFF ED_FUNCTION equ -01 ; invalid function number
|
||
= FFFE ED_FILE equ -02 ; file not found
|
||
= FFFD ED_PATH equ -03 ; path not found
|
||
= FFFC ED_HANDLE equ -04 ; too many open files
|
||
= FFFB ED_ACCESS equ -05 ; file access denied
|
||
= FFFA ED_H_MATCH equ -06 ; invalid handle number
|
||
= FFF9 ED_DMD equ -07 ; memory descriptor destroyed
|
||
= FFF8 ED_MEMORY equ -08 ; insufficient memory
|
||
= FFF7 ED_BLOCK equ -09 ; invalid memory block addr
|
||
= FFF6 ED_ENVIRON equ -10 ; invalid environment
|
||
= FFF5 ED_FORMAT equ -11 ; invalid format
|
||
= FFF4 ED_ACC_CODE equ -12 ; invalid access code
|
||
= FFF3 ED_DATA equ -13 ; invalid data
|
||
= FFF1 ED_DRIVE equ -15 ; invalid drive specified
|
||
= FFF0 ED_DIR equ -16 ; can't remove current dir
|
||
= FFEF ED_DEVICE equ -17 ; not same device
|
||
= FFEE ED_ROOM equ -18 ; no more files
|
||
=
|
||
= FFED ED_PROTECT equ -19 ; disk write protected
|
||
= FFEC ED_BADUNIT equ -20 ; invalid drive specified
|
||
= FFEB ED_NOTREADY equ -21 ; drive doesn't respond
|
||
= FFEA ED_BADCMD equ -22 ; invalid command to driver
|
||
= FFE9 ED_BADDATA equ -23 ; data CRC error
|
||
= FFE8 ED_BADRHLEN equ -24 ; (shouldn't happen)
|
||
= FFE7 ED_BADSEEK equ -25 ; can't seek to track
|
||
= FFE6 ED_BADMEDIA equ -26 ; unrecognizable medium
|
||
= FFE5 ED_RNF equ -27 ; record/sector not found
|
||
= FFE4 ED_NOPAPER equ -28 ; printer error
|
||
= FFE3 ED_WRFAIL equ -29 ; write failed
|
||
= FFE2 ED_RDFAIL equ -30 ; read failed
|
||
= FFE1 ED_GENFAIL equ -31 ; anything failed
|
||
= FFE0 ED_SHAREFAIL equ -32 ; sharing conflict
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 12
|
||
|
||
|
||
= FFDF ED_LOCKFAIL equ -33 ; locking conflict
|
||
= FFDE ED_DISKCHG equ -34 ; invalid disk change
|
||
= FFDD ED_NOFCBS equ -35 ; FCB table exhausted
|
||
= FFDC ED_NOLOCKS equ -36 ; lock list items exhausted
|
||
= FFCE ED_NET equ -50 ; Network Request Not Supported
|
||
=
|
||
= FFBF ED_NETACCESS equ -65 ; file access denied
|
||
=
|
||
= FFB7 ED_NETPWD equ -73 ; Server Password Error
|
||
= FFB6 ED_NETVER equ -74 ; Incorrect Server version
|
||
= FFB5 ED_NETREQ equ -75 ; No Local Network Resources
|
||
= FFB4 ED_NETTIME equ -76 ; Network Time Out Error
|
||
= FFB3 ED_NETCOMM equ -77 ; Network Communications Error
|
||
= FFB2 ED_NETSRVR equ -78 ; No Server Network Resources
|
||
= FFB1 ED_NETLOG equ -79 ; Server Not Logged In
|
||
=
|
||
= FFB0 ED_EXISTS equ -80 ; file already exists
|
||
= FFAE ED_MAKE equ -82 ; Cannot Make (Files ??)
|
||
= FFAD ED_FAIL equ -83 ; FAIL code returned from INT 24
|
||
= FFAC ED_STRUCT equ -84 ; Out of Structures
|
||
= FFAB ED_ASSIGN equ -85 ; Already Assigned
|
||
= FFAA ED_PASSWORD equ -86 ; Invalid Password
|
||
= FFA9 ED_PARAM equ -87 ; Invalid Parameter
|
||
= FFA8 ED_NETWRITE equ -88 ; Network write fault
|
||
= FFA7 ED_NETFUNC equ -89 ; Function not supported on network
|
||
= FFA6 ED_COMPONENT equ -90 ; system component not installed
|
||
= FFA6 ED_LASTERROR equ -90 ; Last Error Number Used
|
||
=
|
||
=
|
||
= 0001 CLASS_RESOURCE equ 1 ; Out of Resource
|
||
= 0002 CLASS_TEMP equ 2 ; Temporary Situation
|
||
= 0003 CLASS_AUTHOR equ 3 ; Authorization Error
|
||
= 0004 CLASS_INTERNAL equ 4 ; Internal System Software Error
|
||
= 0005 CLASS_HARDWARE equ 5 ; Hardware Failure
|
||
= 0006 CLASS_SYSTEM equ 6 ; Serious System Failure
|
||
= 0007 CLASS_APPLIC equ 7 ; Application Program Error
|
||
= 0008 CLASS_LOST equ 8 ; File/Item Not Found
|
||
= 0009 CLASS_FORMAT equ 9 ; File/Item Illegal Format
|
||
= 000A CLASS_LOCKED equ 10 ; File/Item Locked
|
||
= 000B CLASS_MEDIA equ 11 ; Media Failure
|
||
= 000C CLASS_EXISTS equ 12 ; Item Already Exists
|
||
= 000D CLASS_UNKNOWN equ 13 ; Unknown Classification
|
||
=
|
||
= 0001 ACT_RETRY equ 1 ; Retry a few times then prompt user
|
||
= 0002 ACT_DELAY equ 2 ; Delay then as ACT_RETRY
|
||
= 0003 ACT_USER equ 3 ; Prompt user to re-enter data
|
||
= 0004 ACT_ABORT equ 4 ; Clean Up then ABORT the process
|
||
= 0005 ACT_TERM equ 5 ; Terminate immeadiately NO CLEAN UP
|
||
= 0006 ACT_IGNORE equ 6 ; Ignore the Error
|
||
= 0007 ACT_URETRY equ 7 ; Retry the error after user intervention
|
||
=
|
||
= 0001 LOC_UNKNOWN equ 1 ; Unknown error location
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 13
|
||
|
||
|
||
= 0002 LOC_BLOCK equ 2 ; Block Device Failure
|
||
= 0003 LOC_NET equ 3 ; Network Failure
|
||
= 0004 LOC_CHAR equ 4 ; Related to Serial/Character devices
|
||
= 0005 LOC_MEMORY equ 5 ; Failure related to Memory
|
||
|
||
= include i:psp.def
|
||
= ; File : $PSP.DEF$
|
||
= ;
|
||
= ; 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$
|
||
= ;
|
||
= ; ENDLOG
|
||
= ;
|
||
= ; Program Segment Prefix
|
||
= ; ----------------------
|
||
= ; This structure holds vital information for DOS programs
|
||
= ;
|
||
= ;******************************************************************************
|
||
= ;*
|
||
= ;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||
= ;* 00 | int 20 | memory | *** | jmpf|longjmp off|
|
||
= ;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||
= ;* 08 |longjmp seg| int22 Off | int22 Seg | int22 Off |
|
||
= ;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||
= ;* 10 | int22 Seg | int24 Off | int24 Seg | Parent |
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 14
|
||
|
||
|
||
= ;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||
= ;* 18 | Default Handle Table |
|
||
= ;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||
= ;* 20 | XFT (20 entries) |
|
||
= ;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||
= ;* 28 | XFT contd. | Environ | User SP |
|
||
= ;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||
= ;* 30 | User SS | xfnmax | xftoff | xftseg |
|
||
= ;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||
= ;* 38 | res1 | res2 | ric | *** | ********* |
|
||
= ;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||
= ;* 40 | version | ********* | ********* | ********* |
|
||
= ;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||
= ;* 48 | ********* | ********* | ********* | ********* |
|
||
= ;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||
= ;* 50 | int 21 | retf| *** | ********* | ********* |
|
||
= ;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||
= ;* 58 | ********* | ********* | PSP fcb 1 |
|
||
= ;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||
=
|
||
= 0000 PSP_INT20 equ es:word ptr .0000h
|
||
= 0002 PSP_MEMORY equ es:word ptr .0002h
|
||
= ;PSP_??? equ es:byte ptr .0004h
|
||
= 0005 PSP_LONGCALL equ es:byte ptr .0005h
|
||
= 0006 PSP_LONGOFF equ es:word ptr .0006h
|
||
= 0008 PSP_LONGSEG equ es:word ptr .0008h
|
||
= 000A PSP_TERM_IP equ es:word ptr .000Ah
|
||
= 000C PSP_TERM_CS equ es:word ptr .000Ch
|
||
= 000E PSP_BREAK_IP equ es:word ptr .000Eh
|
||
= 0010 PSP_BREAK_CS equ es:word ptr .0010h
|
||
= 0012 PSP_ERROR_IP equ es:word ptr .0012h
|
||
= 0014 PSP_ERROR_CS equ es:word ptr .0014h
|
||
= 0016 PSP_PARENT equ es:word ptr .0016h
|
||
= 0018 PSP_XFT equ es:byte ptr .0018h
|
||
= ;
|
||
= ; The Default Handle Table is HERE !!
|
||
= ;
|
||
= 002C PSP_ENVIRON equ es:word ptr .002ch
|
||
= 002E PSP_USERSP equ es:word ptr .002eh
|
||
= 0030 PSP_USERSS equ es:word ptr .0030h
|
||
= 0032 PSP_XFNMAX equ es:word ptr .0032h
|
||
= 0034 PSP_XFTPTR equ es:dword ptr .0034h
|
||
= 0034 PSP_XFTOFF equ es:word ptr .0034h
|
||
= 0036 PSP_XFTSEG equ es:word ptr .0036h
|
||
= 0038 PSP_RES1 equ es:word ptr .0038h ; DOS Reserved 0FFFFh
|
||
= 003A PSP_RES2 equ es:word ptr .003Ah ; DOS Reserved 0FFFFh
|
||
= 003C PSP_RIC equ es:byte ptr .003Ch ; Return Interim Character flag
|
||
= 0040 PSP_VERSION equ es:word ptr .0040h ; DOS version number
|
||
=
|
||
=
|
||
= 0050 PSP_DOSCALL equ es:word ptr .0050h
|
||
= 0052 PSP_DOSRETF equ es:byte ptr .0052h
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 15
|
||
|
||
|
||
=
|
||
= 005C PSP_FCB1 equ es:byte ptr .005Ch
|
||
= 006C PSP_FCB2 equ es:byte ptr .006Ch
|
||
= 0080 PSP_COMLEN equ es:byte ptr .0080h
|
||
= 0081 PSP_COMLINE equ es:byte ptr .0081h
|
||
=
|
||
= 0014 XFNMAX equ 20
|
||
=
|
||
= 0100 PSPLEN equ 100h
|
||
= 0060 PSPILEN equ 60h
|
||
|
||
= include i:char.def
|
||
= ; File : $CHAR.DEF$
|
||
= ;
|
||
= ; 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$
|
||
= ;
|
||
= ; ENDLOG
|
||
= ;************************************************;
|
||
= ;* *;
|
||
= ;* Character Definitions *;
|
||
= ;* *;
|
||
= ;************************************************;
|
||
=
|
||
= 0001 CTLA equ 'A' - '@'
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 16
|
||
|
||
|
||
= 0002 CTLB equ 'B' - '@'
|
||
= 0003 CTLC equ 'C' - '@'
|
||
= 0004 CTLD equ 'D' - '@'
|
||
= 0005 CTLE equ 'E' - '@'
|
||
= 0006 CTLF equ 'F' - '@'
|
||
= 0007 CTLG equ 'G' - '@'
|
||
= 0007 BELL equ 'G' - '@'
|
||
= 0008 CTLH equ 'H' - '@'
|
||
= 0009 CTLI equ 'I' - '@'
|
||
= 0009 TAB equ 'I' - '@'
|
||
= 000A CTLJ equ 'J' - '@'
|
||
= 000A LF equ 'J' - '@'
|
||
= 000B CTLK equ 'K' - '@'
|
||
= 000D CTLM equ 'M' - '@'
|
||
= 000D CR equ 'M' - '@'
|
||
= 0010 CTLP equ 'P' - '@'
|
||
= 0011 CTLQ equ 'Q' - '@'
|
||
= 0012 CTLR equ 'R' - '@'
|
||
= 0013 CTLS equ 'S' - '@'
|
||
= 0014 CTLT equ 'T' - '@'
|
||
= 0015 CTLU equ 'U' - '@'
|
||
= 0016 CTLV equ 'V' - '@'
|
||
= 0017 CTLW equ 'W' - '@'
|
||
= 0018 CTLX equ 'X' - '@'
|
||
= 0019 CTLY equ 'Y' - '@'
|
||
= 001A CTLZ equ 'Z' - '@'
|
||
= 001B ESC equ '[' - '@'
|
||
= 001C CTLBS equ '\' - '@'
|
||
= 001F CTLUB equ '_' - '@'
|
||
= 001E CTLUP equ '^' - '@'
|
||
= 007F DEL equ 07Fh
|
||
= 007F RUBOUT equ DEL
|
||
=
|
||
= 005E CTL equ '^'
|
||
|
||
= include i:reqhdr.equ
|
||
= ; File : $REQHDR.EQU$
|
||
= ;
|
||
= ; 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
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 17
|
||
|
||
|
||
= ; 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$
|
||
= ;
|
||
= ; ENDLOG
|
||
=
|
||
= 0000 CMD_INIT equ 0 ; Initialize the Device Driver
|
||
= 0001 CMD_MEDIA_CHECK equ 1 ; Request Media Check
|
||
= 0002 CMD_BUILD_BPB equ 2 ; Build Drive BPB
|
||
= 0003 CMD_INPUT_IOCTL equ 3 ; IOCTL input
|
||
= 0004 CMD_INPUT equ 4 ; Input
|
||
= 0005 CMD_INPUT_NOWAIT equ 5 ; Non destructive input no wait
|
||
= 0006 CMD_INPUT_STATUS equ 6 ; Input status
|
||
= 0007 CMD_INPUT_FLUSH equ 7 ; Input flush
|
||
= 0008 CMD_OUTPUT equ 8 ; Output
|
||
= 0009 CMD_OUTPUT_VERIFY equ 9 ; Output with verify
|
||
= 000A CMD_OUTPUT_STATUS equ 10 ; Output status
|
||
= 000B CMD_OUTPUT_FLUSH equ 11 ; Output flush
|
||
= 000C CMD_OUTPUT_IOCTL equ 12 ; IOCTL output
|
||
= 000D CMD_DEVICE_OPEN equ 13 ; Device OPEN
|
||
= 000E CMD_DEVICE_CLOSE equ 14 ; Device CLOSE
|
||
= 000F CMD_FIXED_MEDIA equ 15 ; Removeable Media Check
|
||
= 0013 CMD_GENERIC_IOCTL equ 19 ; Generic IOCTL
|
||
= 0017 CMD_GET_DEVICE equ 23 ; Get the Logical Device
|
||
= 0018 CMD_SET_DEVICE equ 24 ; Set the Logical Device
|
||
= 0019 CMD_QUERY_IOCTL equ 25 ; query ioctl support
|
||
=
|
||
= ; Generic Request Header Format
|
||
=
|
||
= 0000 RH_LEN equ es:byte ptr 0[bx]
|
||
= 0001 RH_UNIT equ es:byte ptr 1[bx]
|
||
= 0002 RH_CMD equ es:byte ptr 2[bx]
|
||
= 0003 RH_STATUS equ es:word ptr 3[bx]
|
||
= 0100 RHS_DONE equ 0100h
|
||
= 0200 RHS_BUSY equ 0200h
|
||
= 0400 RHS_IC equ 0400h ; Interim Character
|
||
= 0800 RHS_RM equ 0800h
|
||
= 8000 RHS_ERROR equ 8000h
|
||
=
|
||
= ;******
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 18
|
||
|
||
|
||
= ;* No longer safe to use - some device drivers trample on them....
|
||
= ;*
|
||
= ;* RH_STRATEGY equ es:dword ptr 5[bx] ; Device Strategy Routine
|
||
= ;* RH_STRATOFF equ es:word ptr 5[bx] ; Strategy Offset
|
||
= ;* RH_STRATSEG equ es:word ptr 7[bx] ; Strategy Segment
|
||
= ;* RH_INTERRUPT equ es:dword ptr 9[bx] ; Device Interrupt Routine
|
||
= ;* RH_INTOFF equ es:word ptr 9[bx] ; Intterupt Offset
|
||
= ;* RH_INTSEG equ es:word ptr 11[bx] ; Interrupt Segment
|
||
= ;*****
|
||
=
|
||
= ; Request header for initialization
|
||
=
|
||
= 000D RH0_NUNITS equ es:byte ptr 13[bx]
|
||
= 000E RH0_RESIDENT equ es:word ptr 14[bx]
|
||
= 0012 RH0_BPBOFF equ es:word ptr 18[bx]
|
||
= 0014 RH0_BPBSEG equ es:word ptr 20[bx]
|
||
= 0016 RH0_DRIVE equ es:byte ptr 22[bx]
|
||
= 0016 RH0_LEN equ 22
|
||
=
|
||
= ; Request header for media check
|
||
=
|
||
= 000D RH1_MEDIA equ es:byte ptr 13[bx] ; BDOS: current media byte
|
||
= 000E RH1_RETURN equ es:byte ptr 14[bx] ; driver: return code (00, 01, FF)
|
||
= 000F RH1_VOLID equ es:dword ptr 15[bx] ; driver: volume label address
|
||
= 000F RH1_LEN equ 15
|
||
=
|
||
= ; Request header for "build BPB"
|
||
=
|
||
= 000D RH2_MEDIA equ es:byte ptr 13[bx] ; BDOS or driver?
|
||
= 000E RH2_BUFFER equ es:dword ptr 14[bx] ; BDOS: scratch buffer for driver use
|
||
= 0012 RH2_BPB equ es:dword ptr 18[bx] ; same as the following:
|
||
= 0012 RH2_BPBOFF equ es:word ptr 18[bx] ; driver: address of new BPB
|
||
= 0014 RH2_BPBSEG equ es:word ptr 20[bx]
|
||
= 0018 RH2_LEN equ 24
|
||
=
|
||
= ; Request header for input/output
|
||
=
|
||
= 000D RH4_MEDIA equ es:byte ptr 13[bx] ; BDOS: current media byte
|
||
= 000D RH4_RIC equ es:byte ptr 13[bx] ; BDOS: Return Interim Char flg
|
||
= 000E RH4_BUFFER equ es:dword ptr 14[bx] ; BDOS: disk transfer address
|
||
= 000E RH4_BUFOFF equ es:word ptr 14[bx] ; BDOS: Buffer Offset
|
||
= 0010 RH4_BUFSEG equ es:word ptr 16[bx] ; BDOS: Buffer Segment
|
||
= 0012 RH4_COUNT equ es:word ptr 18[bx] ; BDOS: sector count
|
||
= 0014 RH4_SECTOR equ es:word ptr 20[bx] ; BDOS: starting sector
|
||
= 0016 RH4_VOLID equ es:dword ptr 22[bx] ; driver: volume if illegal disk change
|
||
= 001A RH4_BIGSECTOR equ es:dword ptr 26[bx]
|
||
= 001A RH4_BIGSECTORLO equ es:word ptr 26[bx]
|
||
= 001C RH4_BIGSECTORHI equ es:word ptr 28[bx]
|
||
=
|
||
= 001E RH4_LEN equ 30
|
||
=
|
||
= ; Request Header for Non-Destructive Input
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 19
|
||
|
||
|
||
=
|
||
= 000D RH5_CHAR equ es:byte ptr 13[bx] ; Character Read from Device
|
||
= 000D RH5_RIC equ es:byte ptr 13[bx] ; BDOS: Return Interim Char flg
|
||
= 000E RH5_LEN equ 14
|
||
=
|
||
= ; Request Header for Device Open
|
||
=
|
||
= 000D RH13_LEN equ 13
|
||
=
|
||
= ; Request Header for Device Close
|
||
=
|
||
= 000D RH14_LEN equ 13
|
||
=
|
||
= ; Request header for generic IOCTL
|
||
=
|
||
= 000D RH19_CATEGORY equ es:word ptr 13[bx] ; BDOS: major/minor function number
|
||
= 000D RH19_MAJOR equ es:byte ptr 13[bx] ; BDOS: Major Function Number
|
||
= 000E RH19_MINOR equ es:byte ptr 14[bx] ; BDOS: Minor Function Number
|
||
= 000F RH19_SI equ es:word ptr 15[bx] ; BDOS: User SI
|
||
= 0011 RH19_DI equ es:word ptr 17[bx] ; BDOS: User DI
|
||
= 0013 RH19_GENPB equ es:dword ptr 19[bx] ; BDOS: extra parameters
|
||
= 0017 RH19_LEN equ 23
|
||
=
|
||
= 0040 RQ19_SET equ 40h ; set device parameters
|
||
= 0060 RQ19_GET equ 60h ; get device parameters
|
||
= 0041 RQ19_WRITE equ 41h ; write tracks
|
||
= 0061 RQ19_READ equ 61h ; read tracks
|
||
= 0042 RQ19_FORMAT equ 42h ; format tracks
|
||
= 0062 RQ19_VERIFY equ 62h ; verify tracks
|
||
=
|
||
= 004C RQ19_PRP_START equ 4Ch ; start of codepage prepare
|
||
= 004D RQ19_PRP_END equ 4Dh ; end of codepage prepare
|
||
= 004A RQ19_SELECT equ 4Ah ; select code page
|
||
= 006A RQ19_QRY_SEL equ 6Ah ; query selected code page
|
||
= 006B RQ19_QRY_PRP equ 6Bh ; query prepared code page(s)
|
||
= 005F RQ19_DSP_SET equ 5Fh ; set display information
|
||
= 007F RQ19_DSP_GET equ 7Fh ; get display information
|
||
=
|
||
= ; Request header for get/set drive
|
||
=
|
||
= 000E RH24_CMD equ es:byte ptr 14[bx] ; BDOS: Command Code
|
||
= 000F RH24_STATUS equ es:word ptr 15[bx] ; BDOS: Status
|
||
= 0011 RH24_RESVD equ es:dword ptr 17[bx] ; BDOS: Reserved
|
||
= 0015 RH24_LEN equ 21
|
||
=
|
||
= 001E RH_SIZE equ 30 ; maximum size of request header
|
||
|
||
|
||
;
|
||
0000 ERR_TBL_CODE equ byte ptr 0 ; Error Code in Table
|
||
0001 ERR_TBL_CLASS equ byte ptr 1 ; Error Class entry in Table
|
||
0002 ERR_TBL_ACTION equ byte ptr 2 ; Error Action entry in Table
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 20
|
||
|
||
|
||
0003 ERR_TBL_LOCUS equ byte ptr 3 ; Locus entry in table
|
||
0004 ERR_TBL_LEN equ 4 ; 4 bytes per entry
|
||
;
|
||
PCM_CODE CSEG BYTE
|
||
extrn get_dseg:near
|
||
extrn do_int24:near
|
||
extrn reload_registers:near
|
||
extrn return_AX_CLC:near
|
||
;
|
||
; *****************************
|
||
; *** DOS Function 59 ***
|
||
; *** Get Extended Error ***
|
||
; *****************************
|
||
;
|
||
Public func59
|
||
|
||
func59:
|
||
0000 C43E0000 E les di,error_dev ; Return device driver address
|
||
0004 8A3E0000 E mov bh,error_class ; return the Error Class
|
||
0008 8A1E0000 E mov bl,error_action ; the Action Code
|
||
000C 8A2E0000 E mov ch,error_locus ; the Locus Code
|
||
0010 A10000 E mov ax,error_code ; the Error Code
|
||
|
||
0013 C5360000 E lds si,int21regs_ptr ; point to user stack
|
||
0017 8C4410 mov reg_ES[si],es
|
||
001A 897C0A mov reg_DI[si],di
|
||
001D 895C02 mov reg_BX[si],bx
|
||
0020 894C04 mov reg_CX[si],cx
|
||
0023 161F push ss ! pop ds
|
||
0025 E90000 E jmp return_AX_CLC
|
||
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 21
|
||
|
||
|
||
eject
|
||
; On Entry:- AX == Internal Error Number
|
||
;
|
||
; On Exit:- None
|
||
; CY set if error should be returned
|
||
; CY clear if it should be ignored
|
||
;
|
||
Public error_exit
|
||
error_exit:
|
||
0028 803E000000 E cmp internal_flag,0 ; If this is an internal
|
||
002D 7506 0035 jnz error_ret ; do not generate a critical
|
||
002F E86800 009A call disk_error ; error
|
||
0032 7504 0038 jnz error_r10 ; No Error Occured or Ignored
|
||
0034 C3 ret ; in critcal error handler
|
||
|
||
;
|
||
; Return the error code to the user and DO NOT generate any
|
||
; critical errors.
|
||
;
|
||
; On Entry:- AX == Internal Error Number
|
||
;
|
||
; On Exit:- None
|
||
;
|
||
Public error_ret
|
||
error_ret:
|
||
0035 E8D600 010E call set_error ; the internal error code
|
||
error_r10: ; otherwise negate
|
||
0038 C43E0000 E les di,int21regs_ptr
|
||
003C 26814D160100 or es:reg_FLAGS[di],CARRY_FLAG ; set the "users" carry Flag
|
||
0042 F9 stc ; also set real one
|
||
if offset reg_AX EQ 0
|
||
0043 AB stosw ; save return code
|
||
else
|
||
mov es:reg_AX[di],ax
|
||
endif
|
||
0044 C3 ret
|
||
|
||
;
|
||
; On Entry:- AX == Internal Error Number
|
||
;
|
||
; On Exit:- None
|
||
;
|
||
Public fcberror_exit
|
||
fcberror_exit:
|
||
0045 E85200 009A call disk_error ; Process the error code generating
|
||
0048 7402 004C jz fe_e10 ; a critical error is required
|
||
004A B0FF mov al,0FFh ; on FCB error return AL = FF
|
||
fe_e10:
|
||
004C C3 ret
|
||
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 22
|
||
|
||
|
||
eject
|
||
; WARNING - may be called from FDOS with DS = SYSDAT
|
||
;
|
||
; CHAR_ERROR is called when any character device function generates
|
||
; an error. First CHAR_ERROR sets the correct parameters for Get
|
||
; Extended Error. Then it generates a Critical Error by calling
|
||
; DO_INT24.
|
||
;
|
||
; Entry:- ES:SI -> device driver header
|
||
; SS:BX -> RH_
|
||
; AX = RH_STATUS
|
||
;
|
||
; Exit AL Error Action
|
||
;
|
||
Public char_error
|
||
char_error:
|
||
004D 36F606000040 E test ss:valid_flg,NO_CRIT_ERRORS
|
||
0053 7403 0058 jz char_e10
|
||
0055 B003 mov al,ERR_FAIL ; no critical errors allowed
|
||
0057 C3 ret ; so just fail things
|
||
char_e10:
|
||
0058 1E push ds
|
||
0059 06 push es
|
||
005A 53 push bx
|
||
005B 51 push cx
|
||
005C 52 push dx
|
||
005D 56 push si
|
||
005E 57 push di
|
||
005F 161F push ss ! pop ds ; DS -> our data now
|
||
0061 89360000 E mov word ptr error_dev+0,si ; save the device driver address
|
||
0065 8C060200 E mov word ptr error_dev+2,es ; and then initialise the FUNC59
|
||
0069 06 push es ; data areas
|
||
006A 257F00 and ax,007Fh ; Mask the Unused Bits
|
||
006D 80CCB8 or ah,80h+OK_RIF ; Retry/Ignore/Abort/Fail allowable
|
||
0070 36807F0208 cmp ss:RH_CMD,CMD_OUTPUT ; is this a read or write failure ?
|
||
0075 7502 0079 jne char_e20
|
||
0077 FEC4 inc ah ; 01 is a Write Failure
|
||
char_e20:
|
||
0079 88260000 E mov rwmode,ah ;
|
||
007D 50 push ax ; save for int 24
|
||
007E 98 cbw ; zero AH again
|
||
007F F7D8 neg ax ; convert to an internal error
|
||
0081 05EDFF add ax,ED_PROTECT ; code for set_error
|
||
0084 B104 mov cl,LOC_CHAR
|
||
0086 E88500 010E call set_error
|
||
0089 05EDFF add ax,ED_PROTECT ; convert to hardware error
|
||
008C 97 xchg ax,di ; DI == hardware error
|
||
008D 58 pop ax
|
||
008E 07 pop es
|
||
008F E80000 E call do_int24 ; execute INT 24
|
||
0092 5F pop di
|
||
0093 5E pop si
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 23
|
||
|
||
|
||
0094 5A pop dx
|
||
0095 59 pop cx
|
||
0096 5B pop bx
|
||
0097 07 pop es
|
||
0098 1F pop ds
|
||
0099 C3 ret
|
||
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 24
|
||
|
||
|
||
eject
|
||
;
|
||
; DISK_ERROR gains control after any DOS disk based function
|
||
; has been executed which generates an error. First ERROR set the
|
||
; correct parameters for Get Extended Error. Then it determines if
|
||
; the current error should generate a Critical Error and calls
|
||
; DO_INT24 if TRUE.
|
||
;
|
||
;
|
||
; On Entry:
|
||
; AX Internal Error Code
|
||
;
|
||
; On Exit:
|
||
; AX 0 if no error to return (Ignore)
|
||
; AX DOS Error Code
|
||
; ZF reflects AX
|
||
;
|
||
disk_error:
|
||
009A B104 mov cl,LOC_CHAR ; assume character device
|
||
; determine if the error is
|
||
009C F606000080 E test rwmode,80h ; caused by a character or
|
||
00A1 7502 00A5 jnz disk_e10 ; block device and set the
|
||
00A3 B102 mov cl,LOC_BLOCK ; the critical error locus
|
||
disk_e10:
|
||
00A5 E86600 010E call set_error ; record error information
|
||
00A8 7461 010B jz disk_e50 ; just return a logical error.
|
||
|
||
00AA 05EDFF add ax,ED_PROTECT ; Convert to HardWare Error
|
||
00AD 8BF8 mov di,ax ; DI == HardWare Error
|
||
; Now get the information
|
||
00AF 8A260000 E mov ah,rwmode ; about the error location
|
||
|
||
00B3 80E4C7 and ah,not OK_RIF ; mask the all responses
|
||
; mov al,valid_flg ; valid flag contains no crit
|
||
; and al,not NO_CRITICAL_ERRORS ; errors bit, but if that was
|
||
; or ah,al ; set we wouldn't be here
|
||
00B6 0A260000 E or ah,valid_flg ; or in valid responses
|
||
|
||
00BA 83FBE1 cmp bx,ED_GENFAIL ; if it's general failure
|
||
00BD 7503 00C2 jne disk_e20 ; we cannot Ignore the error
|
||
00BF 80E4DF and ah,not OK_IGNORE ; but must Abort/Fail/Retry
|
||
disk_e20: ; as appropriate
|
||
|
||
00C2 A00000 E mov al,err_drv ; get the failing drive
|
||
00C5 A20000 E mov error_drive,al ; and save locally
|
||
|
||
00C8 C4360000 E les si,error_dev ; get device driver header
|
||
|
||
; are we are a character device
|
||
00CC F6C480 test ah,80h ; as these have handled at a
|
||
00CF 7529 00FA jnz disk_e40 ; lower level and just need
|
||
; to be FAILed back to caller
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 25
|
||
|
||
|
||
|
||
00D1 E80000 E call do_int24 ; Execute INT 24
|
||
|
||
00D4 8AD8 mov bl,al ; Copy reponse into BL
|
||
|
||
00D6 33C0 xor ax,ax ; Assume Ignore Error
|
||
00D8 80FB00742E 010B cmp bl,ERR_IGNORE ! jz disk_e50 ; Ignore the Error
|
||
|
||
00DD 80FB037418 00FA cmp bl,ERR_FAIL ! jz disk_e40 ; If not FAIL then RETRY
|
||
00E2 E80000 E call reload_registers ; get back entry registers
|
||
00E5 A30000 R mov FD_FUNC,ax ; save AX for a moment
|
||
00E8 8AC4 mov al,ah ; set up function number
|
||
00EA 32E4 xor ah,ah ; in AX
|
||
00EC 87060000 R xchg ax,FD_FUNC ; save for use by FDOS
|
||
00F0 32E4 xor ah,ah ; zero AH 'cause it's handy
|
||
00F2 8B260000 E mov sp,retry_sp ; Must be RETRY so reset the
|
||
00F6 FF260000 E jmp retry_off ; STACK and IP
|
||
|
||
disk_e40:
|
||
;
|
||
; When a Critical Error is FAILED then we do the following
|
||
; if (extended error_code <= ED_SHAREFAIL) then
|
||
; ret = ED_ACCESS;
|
||
; else
|
||
; ret = ED_FAIL;
|
||
; extended error_code = ED_FAIL;
|
||
; return(ret);
|
||
;
|
||
; nb. above proto-code is at the request of ant
|
||
;
|
||
00FA B85300 mov ax,-(ED_FAIL) ; always return ED_FAIL in the
|
||
00FD 87060000 E xchg ax,error_code ; extended error_code
|
||
0101 3D2000 cmp ax,-(ED_SHAREFAIL) ; did we FAIL on sharing conflict ?
|
||
0104 B80500 mov ax,-(ED_ACCESS) ; assume we did and prepare to return
|
||
0107 7302 010B jae disk_e50 ; ED_ACCESS
|
||
0109 B053 mov al,-(ED_FAIL) ; woops, return ED_FAIL after all
|
||
disk_e50:
|
||
010B 0BC0 or ax,ax ; NZ if error return required
|
||
010D C3 ret
|
||
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 26
|
||
|
||
|
||
eject
|
||
;
|
||
; On Entry:- AX Internal Error Code
|
||
; CL Critical Error Locus
|
||
;
|
||
; On Exit:- AX DOS Error Code
|
||
; BX Internal Error Code
|
||
; ZF set on logical error
|
||
set_error:
|
||
010E 8BD8 mov bx,ax ; by default we return the raw error
|
||
0110 BF7400 R mov di,offset critical_error; Scan for critical Errors First
|
||
0113 E88600 019C call scan_error_table ; look for a matching error
|
||
0116 723B 0153 jc set_logical_error
|
||
0118 880E0000 E mov locus,cl ; Save the critical error LOCUS
|
||
011C 3DE0FF cmp ax,ED_SHAREFAIL ; watch out for SHAREFAIL - the action
|
||
011F 7514 0135 jne set_e10 ; depends on the caller
|
||
;
|
||
; ED_SHAREFAIL will return ED_ACCESS if the result of an attempt to open
|
||
; a file in shared mode, otherwise (FCB's and compatibility) it will
|
||
; generate a critical error.
|
||
;
|
||
0121 BBE1FF mov bx,ED_GENFAIL ; assume we want a critical error
|
||
0124 833E00003D R cmp FD_FUNC,MS_X_OPEN ; is it a shared open ?
|
||
0129 7540 016B jnz set_error_data
|
||
012B F70606007000 R test FD_MODE,0$111$0$000b ; mode
|
||
0131 7438 016B jz set_error_data
|
||
0133 EB1B 0150 jmps set_e30 ; return a logical "access denied"
|
||
|
||
set_e10:
|
||
0135 3DDFFF cmp ax,ED_LOCKFAIL ; have we a lockfail error ?
|
||
0138 750C 0146 jne set_e20
|
||
;
|
||
; ED_LOCKFAIL returns ED_ACCESS if a lock attempt fails, but a critical error
|
||
; on an attempt to read/write a locked region.
|
||
;
|
||
013A 833E000052 R cmp FD_FUNC,FD_LOCK ; was it a result of specific lock
|
||
013F 7412 0153 je set_logical_error ; call ? yes, it's a logical error
|
||
0141 BBE1FF mov bx,ED_GENFAIL ; no, generate a critical error
|
||
0144 EB25 016B jmps set_error_data
|
||
|
||
set_e20:
|
||
0146 F606000040 E test valid_flg,NO_CRIT_ERRORS
|
||
014B 741E 016B jz set_error_data ; do we allow critical errors ?
|
||
014D B8FBFF mov ax,ED_ACCESS ; extended error code is Access Denied
|
||
set_e30:
|
||
0150 BBFBFF mov bx,ED_ACCESS ; return access denied to caller
|
||
; jmps set_logical_error
|
||
|
||
set_logical_error:
|
||
0153 33FF xor di,di
|
||
0155 893E0000 E mov word ptr error_dev+0,di ; must be a logical error so force
|
||
0159 893E0200 E mov word ptr error_dev+2,di ; the ERROR_DEV to 0000:0000
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 27
|
||
|
||
|
||
015D BF0000 R mov di,offset logical_error ; scan the Logical error table
|
||
0160 E83900 019C call scan_error_table
|
||
0163 3DBFFF cmp ax,ED_NETACCESS ; if it's a networked access denied
|
||
0166 7503 016B jne set_error_data ; turn it into ordinary one
|
||
0168 BBFBFF mov bx,ED_ACCESS ; return a logical "access denied"
|
||
; jmps set_error_data
|
||
|
||
set_error_data:
|
||
; On Entry:
|
||
; AX = Internal Error Code for extended error
|
||
; BX = Internal Error Code for returned error
|
||
; CS:DI -> error table entry
|
||
; On Exit:
|
||
; AX = DOS Error Code
|
||
; BX = Internal Error Code
|
||
; ZF set on logical error
|
||
;
|
||
016B F7D8 neg ax
|
||
016D A30000 E mov error_code,ax ; Save the Error Code
|
||
0170 2E8A4501 mov al,cs:ERR_TBL_CLASS[di]
|
||
0174 A20000 E mov error_class,al ; Save the Class
|
||
0177 2E8A4502 mov al,cs:ERR_TBL_ACTION[di]
|
||
017B A20000 E mov error_action,al ; Save the Action
|
||
017E 2E8A4503 mov al,cs:ERR_TBL_LOCUS[di] ; Get the Locus
|
||
0182 A20000 E mov error_locus,al ; Save the Locus and then check
|
||
0185 84C0 test al,al ; if the function overrides
|
||
0187 7506 018F jnz set_d10 ; this value
|
||
0189 A00000 E mov al,locus ; Get the Global Locus value
|
||
018C A20000 E mov error_locus,al ; set by the calling function
|
||
set_d10: ; and save for FUNC 59
|
||
018F 8BC3 mov ax,bx ; Return to the caller with
|
||
0191 F7D8 neg ax ; the DOS error code.
|
||
0193 8B3E0000 E mov di,word ptr error_dev ; set ZF if logical error
|
||
0197 0B3E0200 E or di,word ptr error_dev+2 ; error_dev = 0:0
|
||
019B C3 ret
|
||
|
||
scan_error_table:
|
||
019C 2E803D00 cmp cs:ERR_TBL_CODE[di],0
|
||
01A0 740A 01AC je scan_et10 ; Check for the end of the list
|
||
01A2 2E3A05 cmp al,cs:ERR_TBL_CODE[di]
|
||
01A5 7406 01AD je scan_et20
|
||
01A7 83C704 add di,ERR_TBL_LEN
|
||
01AA EBF0 019C jmps scan_error_table
|
||
scan_et10:
|
||
01AC F9 stc
|
||
scan_et20:
|
||
01AD C3 ret
|
||
|
||
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 28
|
||
|
||
|
||
eject
|
||
PCM_RODATA CSEG WORD
|
||
0000 logical_error rb 0
|
||
;
|
||
; Internal Code Error Class Error Action Error Locus
|
||
; ============= =========== ============ ===========
|
||
0000 FF070400 db ED_FUNCTION, CLASS_APPLIC, ACT_ABORT, 00
|
||
0004 FE080302 db ED_FILE, CLASS_LOST, ACT_USER, LOC_BLOCK
|
||
0008 FD080302 db ED_PATH, CLASS_LOST, ACT_USER, LOC_BLOCK
|
||
000C FC010401 db ED_HANDLE, CLASS_RESOURCE, ACT_ABORT, LOC_UNKNOWN
|
||
0010 FB030300 db ED_ACCESS, CLASS_AUTHOR, ACT_USER, 00
|
||
0014 BF030300 db ED_NETACCESS, CLASS_AUTHOR, ACT_USER, 00
|
||
0018 FA070401 db ED_H_MATCH, CLASS_APPLIC, ACT_ABORT, LOC_UNKNOWN
|
||
001C F9070505 db ED_DMD, CLASS_APPLIC, ACT_TERM, LOC_MEMORY
|
||
0020 F8010405 db ED_MEMORY, CLASS_RESOURCE, ACT_ABORT, LOC_MEMORY
|
||
0024 F7070405 db ED_BLOCK, CLASS_APPLIC, ACT_ABORT, LOC_MEMORY
|
||
0028 F6070405 db ED_ENVIRON, CLASS_APPLIC, ACT_ABORT, LOC_MEMORY
|
||
002C F5090301 db ED_FORMAT, CLASS_FORMAT, ACT_USER, LOC_UNKNOWN
|
||
0030 F4070401 db ED_ACC_CODE, CLASS_APPLIC, ACT_ABORT, LOC_UNKNOWN
|
||
0034 F3090401 db ED_DATA, CLASS_FORMAT, ACT_ABORT, LOC_UNKNOWN
|
||
0038 F1080302 db ED_DRIVE, CLASS_LOST, ACT_USER, LOC_BLOCK
|
||
003C F0030302 db ED_DIR, CLASS_AUTHOR, ACT_USER, LOC_BLOCK
|
||
0040 EF0D0302 db ED_DEVICE, CLASS_UNKNOWN, ACT_USER, LOC_BLOCK
|
||
0044 EE080302 db ED_ROOM, CLASS_LOST, ACT_USER, LOC_BLOCK
|
||
0048 B00C0302 db ED_EXISTS, CLASS_EXISTS, ACT_USER, LOC_BLOCK
|
||
004C AC010400 db ED_STRUCT, CLASS_RESOURCE, ACT_ABORT, 00
|
||
0050 AA030301 db ED_PASSWORD, CLASS_AUTHOR, ACT_USER, LOC_UNKNOWN
|
||
0054 AE010402 db ED_MAKE, CLASS_RESOURCE, ACT_ABORT, LOC_BLOCK
|
||
;; db ED_NET, CLASS_FORMAT, ACT_USER, LOC_NET
|
||
0058 AB0C0303 db ED_ASSIGN, CLASS_EXISTS, ACT_USER, LOC_NET
|
||
005C A9090301 db ED_PARAM, CLASS_FORMAT, ACT_USER, LOC_UNKNOWN
|
||
0060 AD0D0401 db ED_FAIL, CLASS_UNKNOWN, ACT_ABORT, LOC_UNKNOWN
|
||
0064 E00A0202 db ED_SHAREFAIL, CLASS_LOCKED, ACT_DELAY, LOC_BLOCK
|
||
0068 DF0A0202 db ED_LOCKFAIL, CLASS_LOCKED, ACT_DELAY, LOC_BLOCK
|
||
006C DC010405 db ED_NOLOCKS, CLASS_RESOURCE, ACT_ABORT, LOC_MEMORY
|
||
0070 00060501 db 00, CLASS_SYSTEM, ACT_TERM, LOC_UNKNOWN
|
||
|
||
0074 critical_error rb 0
|
||
;
|
||
; Internal Code Error Class Error Action Error Locus
|
||
; ============= =========== ============ ===========
|
||
0074 ED0B0702 db ED_PROTECT, CLASS_MEDIA, ACT_URETRY, LOC_BLOCK
|
||
0078 EC040501 db ED_BADUNIT, CLASS_INTERNAL, ACT_TERM, LOC_UNKNOWN
|
||
007C EB050700 db ED_NOTREADY, CLASS_HARDWARE, ACT_URETRY, 00
|
||
0080 EA040501 db ED_BADCMD, CLASS_INTERNAL, ACT_TERM, LOC_UNKNOWN
|
||
0084 E90B0402 db ED_BADDATA, CLASS_MEDIA, ACT_ABORT, LOC_BLOCK
|
||
0088 E7050102 db ED_BADSEEK, CLASS_HARDWARE, ACT_RETRY, LOC_BLOCK
|
||
008C E60B0702 db ED_BADMEDIA, CLASS_MEDIA, ACT_URETRY, LOC_BLOCK
|
||
0090 E50B0402 db ED_RNF, CLASS_MEDIA, ACT_ABORT, LOC_BLOCK
|
||
0094 E4020704 db ED_NOPAPER, CLASS_TEMP, ACT_URETRY, LOC_CHAR
|
||
0098 E3050400 db ED_WRFAIL, CLASS_HARDWARE, ACT_ABORT, 00
|
||
009C E2050400 db ED_RDFAIL, CLASS_HARDWARE, ACT_ABORT, 00
|
||
PC-DOS RASM-86 1.4a Source: ERROR.A86 Page 29
|
||
|
||
|
||
00A0 E10D0400 db ED_GENFAIL, CLASS_UNKNOWN, ACT_ABORT, 00
|
||
00A4 E00A0202 db ED_SHAREFAIL, CLASS_LOCKED, ACT_DELAY, LOC_BLOCK
|
||
00A8 DF0A0202 db ED_LOCKFAIL, CLASS_LOCKED, ACT_DELAY, LOC_BLOCK
|
||
00AC DD070401 db ED_NOFCBS, CLASS_APPLIC, ACT_ABORT, LOC_UNKNOWN
|
||
|
||
00B0 default_error rb 0
|
||
00B0 00060501 db 00, CLASS_SYSTEM, ACT_TERM, LOC_UNKNOWN
|
||
|
||
PCMODE_DATA DSEG WORD
|
||
extrn indos_flag:byte
|
||
extrn internal_flag:byte
|
||
extrn int21regs_ptr:dword
|
||
extrn current_psp:word
|
||
extrn retry_off:word, retry_sp:word
|
||
extrn valid_flg:byte
|
||
extrn error_locus:byte ; Error Locus
|
||
extrn error_code:word ; DOS format error Code
|
||
extrn error_action:byte ; Error Action Code
|
||
extrn error_class:byte ; Error Class
|
||
extrn error_dev:dword ; Failing Device Header
|
||
extrn error_drive:byte ; Failing Disk Drive
|
||
extrn err_drv:byte
|
||
extrn locus:byte
|
||
extrn rwmode:byte
|
||
end
|
||
|
||
|
||
End of assembly. Number of errors: 0. Use factor: 25%
|
||
extrn error_class:byte ; Error Class
|
||
|