PCMODE.EQU
上传用户:xiaogehua
上传日期:2007-01-08
资源大小:1183k
文件大小:6k
源码类别:

操作系统开发

开发平台:

Asm

  1. ;    File              : $PCMODE.EQU$
  2. ;
  3. ;    Description       :
  4. ;
  5. ;    Original Author   : DIGITAL RESEARCH
  6. ;
  7. ;    Last Edited By    : $CALDERA$
  8. ;
  9. ;-----------------------------------------------------------------------;
  10. ;    Copyright Work of Caldera, Inc. All Rights Reserved.
  11. ;      
  12. ;    THIS WORK IS A COPYRIGHT WORK AND CONTAINS CONFIDENTIAL,
  13. ;    PROPRIETARY AND TRADE SECRET INFORMATION OF CALDERA, INC.
  14. ;    ACCESS TO THIS WORK IS RESTRICTED TO (I) CALDERA, INC. EMPLOYEES
  15. ;    WHO HAVE A NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF
  16. ;    THEIR ASSIGNMENTS AND (II) ENTITIES OTHER THAN CALDERA, INC. WHO
  17. ;    HAVE ACCEPTED THE CALDERA OPENDOS SOURCE LICENSE OR OTHER CALDERA LICENSE
  18. ;    AGREEMENTS. EXCEPT UNDER THE EXPRESS TERMS OF THE CALDERA LICENSE
  19. ;    AGREEMENT NO PART OF THIS WORK MAY BE USED, PRACTICED, PERFORMED,
  20. ;    COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED, ABRIDGED,
  21. ;    CONDENSED, EXPANDED, COLLECTED, COMPILED, LINKED, RECAST,
  22. ;    TRANSFORMED OR ADAPTED WITHOUT THE PRIOR WRITTEN CONSENT OF
  23. ;    CALDERA, INC. ANY USE OR EXPLOITATION OF THIS WORK WITHOUT
  24. ;    AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO CRIMINAL AND
  25. ;    CIVIL LIABILITY.
  26. ;-----------------------------------------------------------------------;
  27. ;
  28. ;    *** Current Edit History ***
  29. ;    *** End of Current Edit History ***
  30. ;
  31. ;    $Log$
  32. ;
  33. ;    ENDLOG
  34. ; This file contains all the general purpose definitions
  35. ; and equates used by the PCMODE Module.
  36. ;
  37. TRUE     equ 0FFFFh ; value of TRUE
  38. FALSE     equ 0 ; value of FALSE
  39. TRUE_VERSION equ 6
  40. IDLE_DETECT equ TRUE ; Check for IDLE Process's
  41. if IDLE_DETECT
  42. IDLE_COMMAND equ 0001h ; Command Processor Active
  43. IDLE_DOSFUNC equ 0002h ; DOS Function Called
  44. IDLE_INT28 equ 0004h ; INT 28 Called
  45. IDLE_ON equ 4000h ; ReSet when Idle Checking Enabled
  46. IDLE_INIT equ 8000h ; ReSet when $IDLE$ Loaded and Active
  47. IDLE_DISABLE equ IDLE_INIT + IDLE_ON 
  48. PROC_IDLE equ 0001 ; Process is IDLE
  49. PROC_INT28 equ 0002 ; INT28 Polling Loop
  50. PROC_KEYIN equ 0003 ; Keyboard Input
  51. PROC_DEVIN equ 0004 ; Device Input Routine
  52. endif
  53. STACK_SIZE equ 192 ; Local Stack Size (Levels)
  54. MAX_PATHLEN equ 80 ; Maximum Path length
  55. MAX_FILELEN equ 13
  56. ;
  57. ; DOS process termination Codes
  58. ;
  59. TERM_NORMAL equ 0 ; Normal Termination
  60. TERM_BREAK equ 1 ; Termination by Control Break
  61. TERM_ERROR equ 2 ; Termination by Critical Error
  62. TERM_RESIDENT equ 3 ; Terminate and Stay Resident
  63. ;
  64. ; Critical Error responses from the default INT 24 handler and
  65. ; the DO_INT24 routine.
  66. ;
  67. ERR_IGNORE equ 0 ; Ignore Error
  68. ERR_RETRY equ 1 ; Retry the Operation
  69. ERR_ABORT equ 2 ; Terminate the Process
  70. ERR_FAIL equ 3 ; Fail Function
  71. ;
  72. OK_FAIL equ 0000$1000b ; Fail is a Valid Response
  73. OK_RETRY equ 0001$0000b ; Retry is a Valid Response
  74. OK_IGNORE equ 0010$0000b ; Ignore is a valid Response
  75. OK_RIF equ 0011$1000b ; All Responsese are Valid
  76. OK_RI equ 0011$0000b ; Retry and Ignore are Valid
  77. OK_RF equ 0001$1000b ; Retry and Fail are Valid
  78. ;
  79. NO_CRIT_ERRORS equ 0100$0000b ; critical error shouldn't be generated
  80. ; warning - must match FDOS.A86
  81. ;
  82. eject
  83. ; The following equates define the format in which the users registers
  84. ; are saved on the stack. This format is also seen by an application
  85. ; when a critical error occurs.
  86. ;
  87. CodeMacro POP$DOS ; Pop User Registers a la MS-DOS
  88. db 058h ! db 05Bh ; pop AX ! pop BX
  89. db 059h ! db 05Ah ; pop BX ! pop CX
  90. db 05Eh ! db 05Fh ; pop SI ! pop DI
  91. db 05Dh ; pop BP
  92. db 01Fh ! db 007h ; pop DS ! pop ES
  93. EndM
  94. CodeMacro   PUSH$DOS    ; Push User Registers
  95. db 006h ! db 01Eh ; push ES ! push DS
  96. db 055h ; push BP
  97. db 057h ! db 056h ; push DI ! push SI
  98. db 052h ! db 051h ; push DX ! push CX
  99. db 053h ! db 050h ; push BX ! push AX
  100. EndM
  101. reg_AX equ word ptr .00
  102. reg_AL equ byte ptr .00
  103. reg_AH equ byte ptr .01
  104. reg_BX equ word ptr .02
  105. reg_BL equ byte ptr .02
  106. reg_BH equ byte ptr .03
  107. reg_CX equ word ptr .04
  108. reg_CL equ byte ptr .04
  109. reg_CH equ byte ptr .05
  110. reg_DX equ word ptr .06
  111. reg_DL equ byte ptr .06
  112. reg_DH equ byte ptr .07
  113. reg_SI equ word ptr .08
  114. reg_DI equ word ptr .10
  115. reg_BP equ word ptr .12
  116. reg_DS equ word ptr .14
  117. reg_ES equ word ptr .16
  118. reg_IP equ word ptr .18
  119. reg_CS equ word ptr .20
  120. reg_FLAGS equ word ptr .22
  121. ; Processor Flags
  122. CARRY_FLAG equ 0001h ; Carry Flag
  123. ZERO_FLAG equ 0040h ; Zero Flag
  124. SIGN_FLAG equ 0080h ; Sign Flag
  125. INT_FLAG equ 0200h ; Interrupt Flag
  126. DIR_FLAG equ 0400h ; Direction Flag
  127. OFLW_FLAG equ 0800h ; OverFlow Flag
  128. DMD_ID          equ     es:byte ptr .0 ; id code ('M' or 'Z')
  129. DMD_PSP         equ     es:word ptr .1 ; owner of memory block
  130. DMD_LEN         equ     es:word ptr .3 ; length of memory block
  131. DMD_IDLE_FLAGS  equ es:word ptr .6  ; idle flags live here
  132. DMD_NAME equ es:byte ptr .8 ; ASCIIZ name field
  133. DMD_NAME_LEN equ 8 ;  8 Bytes long
  134. IDM             equ     'M' ; not last id code
  135. IDZ             equ     'Z' ; last id code
  136. PCMCODE GROUP PCM_HEADER, PCM_CODE, BDOS_CODE, PCM_RODATA
  137. PCMCODE GROUP PCM_HISTORY, PCM_ICODE, PCM_CODEND
  138. PCM_HEADER CSEG PARA
  139. PCM_CODE CSEG BYTE
  140. PCM_RODATA CSEG WORD
  141. BDOS_CODE CSEG WORD
  142. PCM_HISTORY CSEG BYTE
  143. PCM_ICODE CSEG BYTE
  144. PCM_CODEND CSEG PARA
  145. PCMDATA GROUP PCMODE_DATA, FDOS_DSEG, FIXED_DOS_DATA
  146. PCMDATA GROUP PCMODE_CODE, GLOBAL_DATA, BDOS_DATA, PCMODE_DSIZE
  147. PCMODE_DATA DSEG WORD ; DOS Data
  148. FDOS_DSEG DSEG WORD COMMON ; FDOS Parameter Block
  149. fdos_data rw 7
  150. FIXED_DOS_DATA CSEG WORD 'DATA' ; Fixed DOS Data Area
  151. PCMODE_CODE CSEG WORD 'DATA' ; DATA relative CODE
  152. GLOBAL_DATA DSEG WORD ; GLOBAL DOS DATA (Process Independant)
  153. BDOS_DATA DSEG WORD ; BDOS Data Area
  154. PCMODE_DSIZE DSEG PARA ; End of DOS Data Area