home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 13 / 13.iso / s / s001 / 1.ddi / TS / INCLUDE / TS.INC < prev    next >
Encoding:
Text File  |  1990-03-16  |  4.3 KB  |  163 lines

  1. ;                   **********
  2. ;                   * TS.INC *
  3. ;               *******************************************
  4. ;               * Copyright TimeSlice, Inc. 1985, 86, 87. *
  5. ;               *******************************************
  6. ;
  7. include tshdr.mac
  8. ;
  9. ;***
  10. ;* PROCESS
  11. ;***
  12. start_struct
  13. mbr    nxt    d_ptr    ?    ;address of next process' ps
  14. mbr    crnxt    d_ptr    ?    ;address of next critical process waiting
  15. mbr    chnxt    d_ptr    ?    ;address of next process waiting for a channel
  16. mbr    pname    d_ptr    ?    ;name of process
  17. mbr    usrptr    d_ptr    ?    ;reserved for your application
  18. mbr    crwait    d_int    ?    ;critical class being waited for
  19. mbr    crlev    d_int    ?    ;nesting level of crit blocks
  20. mbr    chlev    d_int    ?    ;nesting level of chan request
  21. mbr    tunits    d_int    ?    ;units of time to run (said sal...)
  22. mbr    status    d_int    ?    ;if non-zero do not execute
  23. mbr    event    d_int    ?    ;value set by asynchronous interrupt
  24. mbr    psp    d_int    ?    ;process stack pointer
  25. mbr    pss    d_int    ?    ;process stack segment
  26.                 ;***This must always be last***
  27. mbr    regsfpc    d_int    ?    ;beginning of FPC save/restore area
  28. end_struct process
  29. ;
  30. ;        ***STATUS VALUES***
  31. ASLEEP       equ    0001h        ;regular suspended
  32. CRITWAIT   equ    0002h        ;waiting to be critical
  33. CHANWAIT   equ    0004h        ;waiting for channel to be available
  34. BLOCKED       equ  (ASLEEP+CRITWAIT+CHANWAIT)  ;bit map tested by slicer
  35.  
  36. KILL       equ    0008h        ;If this bit is set then the process is to be killed by critend()
  37. SAVEFPC       equ    0010h        ;if FPC should be saved & restored
  38. DOSCRIT    equ    0100h        ;Main Task is critical
  39. INDOS       equ    0200h        ;Main Task is in DOS
  40. ;
  41. ;        *** system parameters ***
  42. callfar    equ    9ah        ;value of call far opcode
  43. jmpfar    equ    0eah        ;value of jmpfar opcode
  44. eoi    equ    20h        ;End of Interrupt command
  45. ;
  46. ;        *** status flags : why a process is asleep ***
  47. ready    equ    0        ;standard ready process
  48. asleep    equ    1        ;standard asleep process
  49. critwait equ    2        ;waiting to become critical
  50. ;
  51. ;        *** predefined critical classes ***
  52. DOS_CRCLASS    equ    0
  53. ;
  54. ;***
  55. ;* MACROS and STRUCTURES
  56. ;* used with INTATT()
  57. ;***
  58. BEFORE    equ    1        ;execute ISR to attach BEFORE original ISR
  59. REPLACE    equ    0        ;replace original ISR with the one to attach
  60. ;
  61. ;***
  62. ;* INTLST
  63. ;***
  64. start_struct
  65. mbr    next    d_ptr    ?    ;ptr to next intlst node
  66. mbr    inxt    d_ptr    ?    ;ptr to next intlst node with w/same intno
  67. mbr    stksiz    d_int    ?    ;stack size required by func
  68. mbr    argp    d_ptr    ?    ;argument passed by user
  69. mbr    iid    d_long    ?    ;interrupt func's id
  70. mbr    intno    d_int    ?    ;interupt processed
  71. mbr    func    f_ptr    ?    ;function attached to the interrupt
  72. mbr    dummy1    d_char    ?    ;for word alignment
  73. mbr    opcall    d_char    ?    ;'call far' opcode 9EH
  74. mbr    imaddr    d_long    ?    ;interupt manager's offset/segment
  75. mbr    dummy2    d_char    ?    ;for word alignment
  76. mbr    opjmp    d_char    ?    ;'jmp far' opcode EAH (or IRET)
  77. mbr    oisrip    d_int    ?    ;original value of interrupt vector's IP
  78. mbr    oisrcs    d_int    ?    ;original value of interrupt vector's CS
  79. end_struct intlst
  80. ;
  81. ;***
  82. ;* INTSTATE
  83. ;***
  84. start_struct
  85. mbr    ises    d_int    ?    ;iAPX 86/88 registers
  86. mbr    isds    d_int    ?
  87. mbr      isdi    d_int    ?
  88. mbr    issi    d_int    ?
  89. mbr    issp    d_int    ?
  90. mbr    isbp    d_int    ?
  91. mbr    isbx    d_int    ?
  92. mbr    isdx    d_int    ?
  93. mbr    iscx    d_int    ?
  94. mbr    isax    d_int    ?
  95. mbr    isimrip    d_int    ?    ;return ip value of intmgr
  96. mbr    isimrcs    d_int    ?    ;return cs value of intmgr
  97. mbr    isintip    d_int    ?    ;return ip value of interrupted code
  98. mbr    isintcs    d_int    ?    ;return cs value of interrupted code
  99. mbr    isflags    d_int    ?    ;cpu flags of interrupted code
  100. end_struct intstate
  101. ;
  102. ;
  103. ;***
  104. ;* Macros used for iAPX86 operations
  105. ;***
  106. PUSHA    MACRO                ;PUSHES ALL ON STACK 
  107.     PUSH    AX
  108.     PUSH    CX
  109.     PUSH    DX
  110.     PUSH    BX
  111.     PUSH    BP
  112.     PUSH    BP
  113.     PUSH    SI;PUSH ALL REGISTERS IN 8088
  114.     PUSH    DI
  115.     PUSH    DS
  116.     PUSH    ES
  117.     ENDM
  118. ;
  119. POPA    MACRO                ;POPS ALL FROM STACK
  120.     POP    ES
  121.     POP    DS
  122.     POP    DI;POP ALL REGISTERS IN 8088
  123.     POP    SI
  124.     POP    BP
  125.     POP    BP
  126.     POP    BX
  127.     POP    DX
  128.     POP    CX
  129.     POP    AX
  130.     ENDM
  131. ;
  132. ;
  133. ;***
  134. ;* IBM and COMPATIBLES hardware addresses and values
  135. ;***
  136. VIDADDR        EQU    0B000H        ;MONOCHROME VIDEO ADDRESS
  137. COLORVID    EQU    0B800H        ;COLOR VIDEO ADDRESS
  138. REVVID        EQU    070H        ;REVERSE VIDEO ATTRIBUTE
  139. NORMVID        EQU    07H        ;NORMAL VIDEO ATTRIBUTE
  140. BLDVID        EQU    018H        ;BOLD VIDEO ATTRIBUTE
  141. ULNVID        EQU    01H        ;UNDERLINE VIDEO ATTRIBUTE 
  142. ;
  143. ;
  144. ;***
  145. ;* LPTR used for 4byte pointers
  146. ;***
  147. lptr    struc
  148.     off    dw    ?
  149.     sgt    dw    ?
  150. lptr    ends
  151. ;
  152.  
  153. extern_data    _codseg,word
  154. extern_ptr    curproc,d
  155. extern_data    _datseg,word
  156. extern_ptr    _istop,d
  157. extern_data    _slint,word
  158. extern_data    _sslev,word
  159. extern_data    _stkseg,word
  160. extern_data    _timcnt, word
  161. extern_data    _vidseg,word
  162. extern_data    _volguc,byte
  163.