; 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