mirror of
https://github.com/SEPPDROID/DR-DOS-OpenDOS.git
synced 2025-10-22 07:54:28 +00:00
180 lines
5.5 KiB
Plaintext
180 lines
5.5 KiB
Plaintext
; File : $PCMODE.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
|
|
; This file contains all the general purpose definitions
|
|
; and equates used by the PCMODE Module.
|
|
;
|
|
|
|
TRUE equ 0FFFFh ; value of TRUE
|
|
FALSE equ 0 ; value of FALSE
|
|
|
|
TRUE_VERSION equ 6
|
|
|
|
IDLE_DETECT equ TRUE ; Check for IDLE Process's
|
|
|
|
if IDLE_DETECT
|
|
IDLE_COMMAND equ 0001h ; Command Processor Active
|
|
IDLE_DOSFUNC equ 0002h ; DOS Function Called
|
|
IDLE_INT28 equ 0004h ; INT 28 Called
|
|
|
|
IDLE_ON equ 4000h ; ReSet when Idle Checking Enabled
|
|
IDLE_INIT equ 8000h ; ReSet when $IDLE$ Loaded and Active
|
|
IDLE_DISABLE equ IDLE_INIT + IDLE_ON
|
|
|
|
PROC_IDLE equ 0001 ; Process is IDLE
|
|
PROC_INT28 equ 0002 ; INT28 Polling Loop
|
|
PROC_KEYIN equ 0003 ; Keyboard Input
|
|
PROC_DEVIN equ 0004 ; Device Input Routine
|
|
endif
|
|
|
|
|
|
STACK_SIZE equ 192 ; Local Stack Size (Levels)
|
|
MAX_PATHLEN equ 80 ; Maximum Path length
|
|
MAX_FILELEN equ 13
|
|
|
|
;
|
|
; DOS process termination Codes
|
|
;
|
|
TERM_NORMAL equ 0 ; Normal Termination
|
|
TERM_BREAK equ 1 ; Termination by Control Break
|
|
TERM_ERROR equ 2 ; Termination by Critical Error
|
|
TERM_RESIDENT equ 3 ; Terminate and Stay Resident
|
|
|
|
;
|
|
; Critical Error responses from the default INT 24 handler and
|
|
; the DO_INT24 routine.
|
|
;
|
|
ERR_IGNORE equ 0 ; Ignore Error
|
|
ERR_RETRY equ 1 ; Retry the Operation
|
|
ERR_ABORT equ 2 ; Terminate the Process
|
|
ERR_FAIL equ 3 ; Fail Function
|
|
;
|
|
OK_FAIL equ 0000$1000b ; Fail is a Valid Response
|
|
OK_RETRY equ 0001$0000b ; Retry is a Valid Response
|
|
OK_IGNORE equ 0010$0000b ; Ignore is a valid Response
|
|
OK_RIF equ 0011$1000b ; All Responsese are Valid
|
|
OK_RI equ 0011$0000b ; Retry and Ignore are Valid
|
|
OK_RF equ 0001$1000b ; Retry and Fail are Valid
|
|
;
|
|
NO_CRIT_ERRORS equ 0100$0000b ; critical error shouldn't be generated
|
|
; warning - must match FDOS.A86
|
|
;
|
|
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
|
|
|
|
reg_AX equ word ptr .00
|
|
reg_AL equ byte ptr .00
|
|
reg_AH equ byte ptr .01
|
|
|
|
reg_BX equ word ptr .02
|
|
reg_BL equ byte ptr .02
|
|
reg_BH equ byte ptr .03
|
|
|
|
reg_CX equ word ptr .04
|
|
reg_CL equ byte ptr .04
|
|
reg_CH equ byte ptr .05
|
|
|
|
reg_DX equ word ptr .06
|
|
reg_DL equ byte ptr .06
|
|
reg_DH equ byte ptr .07
|
|
|
|
reg_SI equ word ptr .08
|
|
reg_DI equ word ptr .10
|
|
reg_BP equ word ptr .12
|
|
|
|
reg_DS equ word ptr .14
|
|
reg_ES equ word ptr .16
|
|
|
|
reg_IP equ word ptr .18
|
|
reg_CS equ word ptr .20
|
|
reg_FLAGS equ word ptr .22
|
|
|
|
; Processor Flags
|
|
CARRY_FLAG equ 0001h ; Carry Flag
|
|
ZERO_FLAG equ 0040h ; Zero Flag
|
|
SIGN_FLAG equ 0080h ; Sign Flag
|
|
INT_FLAG equ 0200h ; Interrupt Flag
|
|
DIR_FLAG equ 0400h ; Direction Flag
|
|
OFLW_FLAG equ 0800h ; OverFlow Flag
|
|
|
|
DMD_ID equ es:byte ptr .0 ; id code ('M' or 'Z')
|
|
DMD_PSP equ es:word ptr .1 ; owner of memory block
|
|
DMD_LEN equ es:word ptr .3 ; length of memory block
|
|
DMD_IDLE_FLAGS equ es:word ptr .6 ; idle flags live here
|
|
DMD_NAME equ es:byte ptr .8 ; ASCIIZ name field
|
|
DMD_NAME_LEN equ 8 ; 8 Bytes long
|
|
IDM equ 'M' ; not last id code
|
|
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
|
|
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
|