home *** CD-ROM | disk | FTP | other *** search
- ; **********
- ; * TS.INC *
- ; *******************************************
- ; * Copyright TimeSlice, Inc. 1985, 86, 87. *
- ; *******************************************
- ;
- include tshdr.mac
- ;
- ;***
- ;* PROCESS
- ;***
- start_struct
- mbr nxt d_ptr ? ;address of next process' ps
- mbr crnxt d_ptr ? ;address of next critical process waiting
- mbr chnxt d_ptr ? ;address of next process waiting for a channel
- mbr pname d_ptr ? ;name of process
- mbr usrptr d_ptr ? ;reserved for your application
- mbr crwait d_int ? ;critical class being waited for
- mbr crlev d_int ? ;nesting level of crit blocks
- mbr chlev d_int ? ;nesting level of chan request
- mbr tunits d_int ? ;units of time to run (said sal...)
- mbr status d_int ? ;if non-zero do not execute
- mbr event d_int ? ;value set by asynchronous interrupt
- mbr psp d_int ? ;process stack pointer
- mbr pss d_int ? ;process stack segment
- ;***This must always be last***
- mbr regsfpc d_int ? ;beginning of FPC save/restore area
- end_struct process
- ;
- ; ***STATUS VALUES***
- ASLEEP equ 0001h ;regular suspended
- CRITWAIT equ 0002h ;waiting to be critical
- CHANWAIT equ 0004h ;waiting for channel to be available
- BLOCKED equ (ASLEEP+CRITWAIT+CHANWAIT) ;bit map tested by slicer
-
- KILL equ 0008h ;If this bit is set then the process is to be killed by critend()
- SAVEFPC equ 0010h ;if FPC should be saved & restored
- DOSCRIT equ 0100h ;Main Task is critical
- INDOS equ 0200h ;Main Task is in DOS
- ;
- ; *** system parameters ***
- callfar equ 9ah ;value of call far opcode
- jmpfar equ 0eah ;value of jmpfar opcode
- eoi equ 20h ;End of Interrupt command
- ;
- ; *** status flags : why a process is asleep ***
- ready equ 0 ;standard ready process
- asleep equ 1 ;standard asleep process
- critwait equ 2 ;waiting to become critical
- ;
- ; *** predefined critical classes ***
- DOS_CRCLASS equ 0
- ;
- ;***
- ;* MACROS and STRUCTURES
- ;* used with INTATT()
- ;***
- BEFORE equ 1 ;execute ISR to attach BEFORE original ISR
- REPLACE equ 0 ;replace original ISR with the one to attach
- ;
- ;***
- ;* INTLST
- ;***
- start_struct
- mbr next d_ptr ? ;ptr to next intlst node
- mbr inxt d_ptr ? ;ptr to next intlst node with w/same intno
- mbr stksiz d_int ? ;stack size required by func
- mbr argp d_ptr ? ;argument passed by user
- mbr iid d_long ? ;interrupt func's id
- mbr intno d_int ? ;interupt processed
- mbr func f_ptr ? ;function attached to the interrupt
- mbr dummy1 d_char ? ;for word alignment
- mbr opcall d_char ? ;'call far' opcode 9EH
- mbr imaddr d_long ? ;interupt manager's offset/segment
- mbr dummy2 d_char ? ;for word alignment
- mbr opjmp d_char ? ;'jmp far' opcode EAH (or IRET)
- mbr oisrip d_int ? ;original value of interrupt vector's IP
- mbr oisrcs d_int ? ;original value of interrupt vector's CS
- end_struct intlst
- ;
- ;***
- ;* INTSTATE
- ;***
- start_struct
- mbr ises d_int ? ;iAPX 86/88 registers
- mbr isds d_int ?
- mbr isdi d_int ?
- mbr issi d_int ?
- mbr issp d_int ?
- mbr isbp d_int ?
- mbr isbx d_int ?
- mbr isdx d_int ?
- mbr iscx d_int ?
- mbr isax d_int ?
- mbr isimrip d_int ? ;return ip value of intmgr
- mbr isimrcs d_int ? ;return cs value of intmgr
- mbr isintip d_int ? ;return ip value of interrupted code
- mbr isintcs d_int ? ;return cs value of interrupted code
- mbr isflags d_int ? ;cpu flags of interrupted code
- end_struct intstate
- ;
- ;
- ;***
- ;* Macros used for iAPX86 operations
- ;***
- PUSHA MACRO ;PUSHES ALL ON STACK
- PUSH AX
- PUSH CX
- PUSH DX
- PUSH BX
- PUSH BP
- PUSH BP
- PUSH SI;PUSH ALL REGISTERS IN 8088
- PUSH DI
- PUSH DS
- PUSH ES
- ENDM
- ;
- POPA MACRO ;POPS ALL FROM STACK
- POP ES
- POP DS
- POP DI;POP ALL REGISTERS IN 8088
- POP SI
- POP BP
- POP BP
- POP BX
- POP DX
- POP CX
- POP AX
- ENDM
- ;
- ;
- ;***
- ;* IBM and COMPATIBLES hardware addresses and values
- ;***
- VIDADDR EQU 0B000H ;MONOCHROME VIDEO ADDRESS
- COLORVID EQU 0B800H ;COLOR VIDEO ADDRESS
- REVVID EQU 070H ;REVERSE VIDEO ATTRIBUTE
- NORMVID EQU 07H ;NORMAL VIDEO ATTRIBUTE
- BLDVID EQU 018H ;BOLD VIDEO ATTRIBUTE
- ULNVID EQU 01H ;UNDERLINE VIDEO ATTRIBUTE
- ;
- ;
- ;***
- ;* LPTR used for 4byte pointers
- ;***
- lptr struc
- off dw ?
- sgt dw ?
- lptr ends
- ;
-
- extern_data _codseg,word
- extern_ptr curproc,d
- extern_data _datseg,word
- extern_ptr _istop,d
- extern_data _slint,word
- extern_data _sslev,word
- extern_data _stkseg,word
- extern_data _timcnt, word
- extern_data _vidseg,word
- extern_data _volguc,byte
-