;*****************************************************
;*
;*	Process Descriptor - with the UDA associated
;*		with the PD, describes the current
;*		state of a Process under MP/M-86
;*
;*   +-----+-----+-----+-----+-----+-----+-----+-----+
;* 00|   link    |  thread   |stat |prior|   flag    |
;*   +-----+-----+-----+-----+-----+-----+-----+-----+
;* 08|                     Name                      |
;*   +-----+-----+-----+-----+-----+-----+-----+-----+
;* 10|    uda    | dsk | user| ldsk|luser|    mem    |
;*   +-----+-----+-----+-----+-----+-----+-----+-----+
;* 18|  dvract   |   wait    | org | net |  parent   |
;*   +-----+-----+-----+-----+-----+-----+-----+-----+
;* 20| cns |abort| cin |cout | lst | sf3 | sf4 | sf5 |
;*   +-----+-----+-----+-----+-----+-----+-----+-----+
;* 28|        reserved       |   pret    |  scratch  |
;*   +-----+-----+-----+-----+-----+-----+-----+-----+
;*
;*	link	- Used for placement into System Lists
;*	thread	- link field for Thread List
;*	stat	- Current Process activity
;*	prior	- priority
;*	flag	- process state flags
;*	name	- name of process
;*	uda	- Segment Adress of User Data Area
;*	dsk	- Current default disk
;*	user	- Current default user number
;*	ldsk	- Disk program loaded from
;*	luser	- User number loaded from
;*	mem	- pointer to MD list of memory owned
;*		  by this process
;*	dvract	- bit map of currently active drives
;*	wait	- parameter field while on System Lists
;*	org 	- Network node that originated this process
;*	net	- Network node running this process
;*	parent  - process that created this process
;*	cns	- controlling console
;*	abort	- abort code
;*	cin	- standard file #0 (console input)
;*	cout	- standard file #1 (console output)
;*	lst	- standard file #2 (list output)
;*	sf3	- standard file #3
;*	sf4	- standard file #4
;*	sf5	- standard file #5
;*	reserved- not currently used
;*	pret	- return code at termination
;*	scratch - scratch word
;*
;*****************************************************

p_link		equ	word ptr 0
p_thread	equ	word ptr p_link + word
p_stat		equ	byte ptr p_thread + word
p_prior		equ	byte ptr p_stat + byte
p_flag		equ	word ptr p_prior + byte
p_name		equ	byte ptr p_flag + word    
p_uda		equ	word ptr p_name + pnamsiz
p_dsk		equ	byte ptr p_uda + word
p_user		equ	byte ptr p_dsk + byte
p_ldsk		equ	byte ptr p_user + byte
p_luser		equ	byte ptr p_ldsk + byte
p_mem		equ	word ptr p_luser + byte
p_dvract	equ	word ptr p_mem + word
p_wait		equ	word ptr p_dvract + word
p_org		equ	byte ptr p_wait + word
p_net		equ	byte ptr p_org + byte
p_parent	equ	word ptr p_net + byte
p_cns		equ	byte ptr p_parent + word
p_abort		equ	byte ptr p_cns + byte
p_cin		equ	byte ptr p_abort + byte
p_cout		equ	byte ptr p_cin + byte
p_lst		equ	byte ptr p_cout + byte
p_sf3		equ	byte ptr p_lst + byte
p_sf4		equ	byte ptr p_sf3 + byte
p_sf5		equ	byte ptr p_sf4 + byte
p_reserved	equ	word ptr p_sf5 + byte
p_pret		equ	word ptr p_reserved + (2*word)
p_scratch	equ	byte ptr p_pret + word
p_wscrtch	equ	word ptr p_scratch

;
;	Process descriptor pd_status values
;

ps_run		equ	00	; in ready list root
ps_poll		equ	01	; in poll list
ps_delay	equ	02	; in delay list
ps_swap		equ	03	; in swap list
ps_term		equ	04	; terminating
ps_sleep	equ	05	; sleep processing
ps_dq		equ	06	; in dq list
ps_nq		equ	07	; in nq list
ps_flagwait	equ	08	; in flag table
ps_ciowait	equ	09	; in c_queue list
;
;	Process descriptor pd_flag bit values
;
pf_sys		equ	00001h	; system process
pf_keep		equ	00002h	; do not terminate
pf_kernal	equ	00004h	; resident in kernal
pf_pure		equ	00008h	; pure memory descibed
pf_table	equ	00010h	; from pd table
pf_resource	equ	00020h	; waiting for resource
pf_raw		equ	00040h	; raw console i/o
pf_ctlc		equ	00080h	; abort pending
pf_active	equ	00100h	; active tty
pf_tempkeep	equ	00200h	; don't terminate yet...
pf_ctld		equ	00400h	; explicit detach occured
