Files
Sepp J Morris 31738079c4 Upload
Digital Research
2020-11-06 18:50:37 +01:00

2488 lines
130 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 1
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE STATUS
OBJECT MODULE PLACED IN SYSTAT.OBJ
COMPILER INVOKED BY: :F0: SYSTAT.PLM XREF OPTIMIZE(3) DEBUG
$title('CCP/M-86 1.0 Systat Process - Transient')
$compact
/* want 32 bit pointers */
1 status:
do;
$include (:f2:copyrt.lit)
=
= /*
= Copyright (C) 1983
= Digital Research
= P.O. Box 579
= Pacific Grove, CA 93950
= */
=
$include (:f2:vaxcmd.lit)
=
= /**** VAX commands for generation - read the name of this program
= for PROGNAME below.
=
= $ util := PROGNAME
= $ ccpmsetup ! set up environment
= $ assign 'f$directory()' f1: ! use local dir for temp files
= $ plm86 'util'.plm xref 'p1' optimize(3) debug
= $ link86 f2:scd.obj, 'util'.obj to 'util'.lnk
= $ loc86 'util'.lnk od(sm(code,dats,data,stack,const)) -
= ad(sm(code(0),dats(10000h))) ss(stack(+32)) to 'util'.
= $ h86 'util'
=
= ***** Then, on a micro:
= A>vax progname.h86 $fans
= A>gencmd progname data[b1000]
=
= ***** Notes: Stack is increased for interrupts. Const(ants) are last
= to force hex generation.
= ****/
$include (scomon.plm)
=
=
=
=
=
=
= /* Common Include Module for RSP and Transient CCPMSTAT */
=
=
= $include(:f2:newcom.lit)
=1
2 1 =1 declare
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 2
=1 lit literally 'literally',
=1 dcl lit 'declare',
=1 true lit '0ffh',
=1 false lit '0',
=1 no lit 'not',
=1 boolean lit 'byte',
=1 forever lit 'while true',
=1 tab lit '9';
=1
3 1 = dcl buff (128) byte external;
=
=
4 1 = mon1:
= procedure (func,info) external;
5 2 = dcl func byte;
6 2 = dcl info address;
7 2 = end mon1;
=
8 1 = mon2:
= procedure (func,info) byte external;
9 2 = dcl func byte;
10 2 = dcl info address;
11 2 = end mon2;
=
12 1 = mon3:
= procedure (func,info) address external;
13 2 = dcl func byte;
14 2 = dcl info address;
15 2 = end mon3;
=
16 1 = mon4:
= procedure (func,info) pointer external;
17 2 = dcl func byte;
18 2 = dcl info address;
19 2 = end mon4;
=
=
20 1 = patch: procedure; /* dummy area for patching code segments */
21 2 = declare i address;
22 2 = i=i+5; i=i+5; i=i+5; i=i+5; i=i+5;
27 2 = i=i+5; i=i+5; i=i+5; i=i+5; i=i+5;
32 2 = i=i+5; i=i+5; i=i+5; i=i+5; i=i+5;
37 2 = i=i+5; i=i+5; i=i+5; i=i+5; i=i+5;
42 2 = i=i+5; i=i+5; i=i+5; i=i+5; i=i+5;
47 2 = i=i+5; i=i+5; i=i+5; i=i+5; i=i+5;
52 2 = i=i+5; i=i+5; i=i+5; i=i+5; i=i+5;
57 2 = i=i+5; i=i+5; i=i+5; i=i+5; i=i+5;
62 2 = i=i+5; i=i+5; i=i+5; i=i+5; i=i+5;
67 2 = i=i+5; i=i+5; i=i+5; i=i+5; i=i+5;
72 2 = i=i+5; i=i+5; i=i+5; i=i+5; i=i+5;
77 2 = end patch;
=
=
78 1 = dcl maxpd byte initial (63); /* Maximum # process descript's*/
79 1 = dcl maxmd byte initial (80); /* Maximum # memory descriptors*/
80 1 = dcl maxqflags byte initial (40h); /* Max Value for a queue flag */
81 1 = dcl freename (*)byte initial ('* FREE *'); /* For free memory partitions */
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 3
82 1 = dcl maxqueues byte initial (64); /* Maximum # of system queues */
83 1 = dcl lbracket byte initial ('[');
84 1 = dcl rbracket byte initial (']');
85 1 = dcl repeat byte; /* Controls continuous display */
86 1 = dcl intrval word; /* Controls update timing */
87 1 = dcl specified byte; /* Command Line argument flag */
88 1 = dcl flaglen byte initial (3);
=
= /***************************************************************************/
= /* */
= /* Terminal-dependent Control Characters */
= /* */
= /***************************************************************************/
=
89 1 = dcl clearseq (6) byte initial (2,01bh,'E',0,0,0); /* ESC E = clear screen*/
90 1 = dcl homeseq (6) byte initial (2,01bh,'H',0,0,0); /* ESC H = home cursor */
91 1 = dcl CR lit '13'; /* CR = carriage return*/
92 1 = dcl LF lit '10'; /* LF = line feed */
=
=
= $include (:f2:mdsat.lit)
=1
93 1 =1 declare md$structure literally
=1 'structure(
=1 link word,
=1 start word,
=1 length word,
=1 plist word,
=1 unused word)';
=1
94 1 =1 declare ms$structure literally
=1 'structure(
=1 link word,
=1 start word,
=1 length word,
=1 flags word,
=1 mau word)';
=1
95 1 =1 declare sat$structure literally
=1 'structure(
=1 start word,
=1 len word,
=1 num$allocs byte)';
=1
= $include (:f2:proces.lit)
=1
=1 /*
=1 Proces Literals MP/M-8086 II
=1 */
=1
96 1 =1 declare pnamsiz literally '8';
=1
97 1 =1 declare pd$hdr literally 'structure
=1 (link word,thread word,stat byte,prior byte,flag word,
=1 name (8) byte,uda word,dsk byte,user byte,ldsk byte,luser byte,
=1 mem word';
=1
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 4
98 1 =1 declare pd$structure literally 'pd$hdr,
=1 dvract word,wait word,org byte,net byte,parent word,
=1 cns byte,abort byte,conmode word,lst byte,sf3 byte,sf4 byte,sf5 byte,
=1 reservd (4) byte,pret word,scratch word)';
=1
99 1 =1 declare psrun lit '00',
=1 pspoll lit '01',
=1 psdelay lit '02',
=1 psswap lit '03',
=1 psterm lit '04',
=1 pssleep lit '05',
=1 psdq lit '06',
=1 psnq lit '07',
=1 psflagwait lit '08',
=1 psciowait lit '09';
=1
100 1 =1 declare pf$sys lit '00001h',
=1 pf$keep lit '00002h',
=1 pf$kernal lit '00004h',
=1 pf$pure lit '00008h',
=1 pf$table lit '00010h',
=1 pf$resource lit '00020h',
=1 pf$raw lit '00040h',
=1 pf$ctlc lit '00080h',
=1 pf$active lit '00100h',
=1 pf$tempkeep lit '00200h',
=1 pf$ctld lit '00400h',
=1 pf$childabort lit '00800h',
=1 pf$noctls lit '01000h';
=1
101 1 =1 declare pcm$11 lit '00001h',
=1 pcm$ctls lit '00002h',
=1 pcm$rout lit '00004h',
=1 pcm$ctlc lit '00008h',
=1 pcm$ctlo lit '00080h',
=1 pcm$rsx lit '00300h';
= $include (:f2:sd.lit)
=1
=1 /* System Data Page */
=1
102 1 =1 dcl sysdat$pointer pointer;
103 1 =1 dcl sysdat$ptr structure(
=1 offset word,
=1 segment word) at (@sysdat$pointer);
104 1 =1 declare sd based sysdat$pointer structure (
=1 supmod (4) word,
=1 /* rtmmod (4) word,
=1 memmod (4) word,
=1 ciomod (4) word,
=1 bdosmod (4) word,
=1 xiosmod (4) word,
=1 netmod (4) word,
=1 reservd (4) word */
=1 space(28) word,
=1 mpmseg word,
=1 rspseg word,
=1 endseg word,
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 5
=1 module$map byte,
=1 ncns byte,
=1 nlst byte,
=1 nccb byte,
=1 nflags byte,
=1 srchdisk byte,
=1 mmp word,
=1 nslaves byte,
=1 dayfile byte,
=1 tempdisk byte,
=1 tickspersec byte,
=1 lul word,
=1 ccb word,
=1 flags word,
=1 mdul word,
=1 mfl word,
=1 pul word,
=1 qul word,
=1 qmau (4) word,
=1 rlr word,
=1 dlr word,
=1 drl word,
=1 plr word,
=1 slr word,
=1 thrdrt word,
=1 qlr word,
=1 mal word,
=1 version word,
=1 vernum word,
=1 mpmvernum word,
=1 tod (2) word,
=1 tod_sec byte,
=1 ncondev byte,
=1 nlstdev byte,
=1 nciodev byte,
=1 lcb (2) word,
=1 lckmax byte,
=1 opmax byte,
=1 sysltot (2) word,
=1 cmod byte );
=1
=1
105 1 =1 declare sd$byte based sysdat$pointer (1) byte;
=1
= $include (:f2:qd.lit)
=1
=1 /* Queue Descriptor */
=1
106 1 =1 dcl qnamsiz lit '8';
=1
107 1 =1 dcl qd$structure lit 'structure(
=1 link word,
=1 net byte,
=1 org byte,
=1 flags word,
=1 name(qnamsiz) byte,
=1 msglen word,
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 6
=1 nmsgs word,
=1 dq word,
=1 nq word,
=1 msgcnt word,
=1 msgout word,
=1 buffer word)';
=1
=1 /* queue flag values */
=1
108 1 =1 dcl qf$mx lit '001h'; /* Mutual Exclusion */
109 1 =1 dcl qf$keep lit '002h'; /* NO DELETE */
110 1 =1 dcl qf$hide lit '004h'; /* Not User writable */
111 1 =1 dcl qf$rsp lit '008h'; /* rsp queue */
112 1 =1 dcl qf$table lit '010h'; /* from qd table */
113 1 =1 dcl qf$rpl lit '020h'; /* rpl queue */
114 1 =1 dcl qf$dev lit '040h'; /* device queue */
=1
=1 /* Queue Parameter Block */
=1
115 1 =1 dcl qpb$structure lit 'structure(
=1 flgs byte,
=1 net byte,
=1 qaddr word,
=1 nmsgs word,
=1 buffptr word,
=1 name (qnamsiz) byte )';
=1
= $include (:f2:flag.lit)
=1
=1 /* Flag Format */
=1
116 1 =1 dcl flag$structure lit 'structure(
=1 pd word,
=1 ignore byte)';
=1
= $include (:f2:uda.lit)
=1
=1 /* MP/M-86 II User Data Area format - August 8, 1981 */
=1
117 1 =1 declare uda$structure lit 'structure (
=1 dparam word,
=1 dma$ofst word,
=1 dma$seg word,
=1 func byte,
=1 searchl byte,
=1 searcha word,
=1 searchabase word,
=1 dcnt word,
=1 dblk word,
=1 error$mode byte,
=1 mult$cnt byte,
=1 df$password (8) byte,
=1 pd$cnt byte)';
=1
= $include (:f2:vccb.lit)
=1 /* Concurrent CP/M Character Control Block Structure */
=1
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 7
=1 /* +---------+---------+---------+---------+
=1 00 | attach | queue |
=1 +---------+---------+---------+---------+
=1 04 | flag | startcol| column | nchar |
=1 +---------+---------+---------+---------+
=1 08 | mimic | msource | pc | vc |
=1 +---------+---------+---------+---------+
=1 0C | btmp | resrvd | state |
=1 +---------+---------+---------+---------+
=1 10 | maxbufsiz | vinq |
=1 +---------+---------+---------+---------+
=1 14 | voutq | vcmxq |
=1 +---------+---------+---------+---------+
=1 18 | qpbflgs | qpbfill | qpbqaddr |
=1 +---------+---------+---------+---------+
=1 1C | qpbnmsgs | qpbbuffptr |
=1 +---------+---------+---------+---------+
=1 20 | qbuff | cosleep |
=1 +---------+---------+---------+---------+
=1 24 | usleep | vsleep |
=1 +---------+---------+---------+---------+
=1 28 | ... reserved ... |
=1 +---------+---------+---------+---------+
=1
=1
=1
=1
=1 */
=1
118 1 =1 dcl ccb$structure lit 'structure (attach address, queue address,
=1 flag byte, startcol byte, column byte, nchar byte, mimic byte, msource byte,
=1 ccb$tail1';
119 1 =1 dcl ccb$tail1 lit
=1 'pc byte, vc byte, btmp byte, reservd byte, state word, maxbufsiz word,
=1 ccb$tail2';
120 1 =1 dcl ccb$tail2 lit
=1 'vinq address, voutq address, vcmxq address,
=1 qpbflags byte, qpbresrvd byte, qpbqaddr address,
=1 qpbnmsgs address, qpbbuffptr address, qbuff address, cosleep word,
=1 usleep word, vsleep word, r1 word, r2 word)';
=1
121 1 =1 declare /* flag values */
=1 cf$listcp lit '001h', /* control P toggle */
=1 cf$compc lit '002h', /* suppress output */
=1 cf$switchs lit '004h', /* XIOS supports switch screening */
=1 cf$conout lit '008h', /* XIOS console output ownership */
=1 cf$vout lit '010h', /* process writing to VOUTQ */
=1 cf$bufp lit '020h'; /* toggle to control printer echo */
=1 /* on control P when background */
=1 /* and buffered */
=1 /* values of state byte */
=1 /* conout goes to XIOS */
=1
=1 /* state word flags */
=1
122 1 =1 dcl
=1 csm$buffered lit '0001h',
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 8
=1 csm$background lit '0002h',
=1 csm$purging lit '0004h',
=1 csm$noswitch lit '0008h',
=1 csm$suspend lit '0010h',
=1 csm$abort lit '0020h',
=1 csm$filefull lit '0040h',
=1 csm$ctrlS lit '0080h',
=1 csm$ctrlO lit '0100h',
=1 csm$ctrlP lit '0200h';
=1
123 1 =1 dcl x$init$offset lit '0Ch',
=1 x$init$pointer pointer,
=1 x$init$ptr structure (offset word, segment word) at (@x$init$pointer),
=1 x$init based x$init$pointer structure
=1 (tick byte, ticks$sec byte, door byte, resrvd1 (2) byte,
=1 nvcns byte, nccb byte, nlst byte, ccb word, lcb word);
=1
=1
124 1 =1 dcl lcb$structure lit 'structure (attach address, queue address,
=1 flag byte, startcol byte, column byte, nchar byte,
=1 mimic byte, msource byte)';
=1
= /*$include (:f2:ccb.lit)*/
=
125 1 = dcl pd$pointer pointer; /* double word bases for MP/M-86 data structures */
126 1 = dcl pd$ptr structure(
= offset word,
= segment word) at (@pd$pointer);
127 1 = dcl pd based pd$pointer pd$structure;
=
128 1 = dcl qd$pointer pointer;
129 1 = dcl qd$ptr structure(
= offset word,
= segment word) at (@qd$pointer);
130 1 = dcl qd based qd$pointer qd$structure;
=
131 1 = dcl md$pointer pointer;
132 1 = dcl md$ptr structure(
= offset word,
= segment word) at (@md$pointer);
133 1 = dcl md based md$pointer md$structure;
=
134 1 = dcl ms$pointer pointer;
135 1 = dcl ms$ptr structure(
= offset word,
= segment word) at (@ms$pointer);
136 1 = dcl ms based ms$pointer ms$structure;
=
137 1 = dcl sat$pointer pointer;
138 1 = dcl sat$ptr structure(
= offset word,
= segment word) at (@sat$pointer);
139 1 = dcl sat based sat$pointer sat$structure;
=
140 1 = dcl flag$pointer pointer;
141 1 = dcl flag$ptr structure(
= offset word,
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 9
= segment word) at (@flag$pointer);
142 1 = dcl flag based flag$pointer flag$structure;
=
143 1 = dcl vccb$pointer pointer;
144 1 = dcl vccb$ptr structure (
= offset word,
= segment word) at (@vccb$pointer);
145 1 = dcl vccb based vccb$pointer ccb$structure;
=
146 1 = dcl uda$pointer pointer;
147 1 = dcl uda$ptr structure (
= offset word,
= segment word) at (@uda$pointer);
148 1 = dcl uda based uda$pointer uda$structure;
=
=
= /* BDOS Calls */
=
149 1 = reboot:
= procedure;
150 2 = call mon1(0,0);
151 2 = end reboot;
=
152 1 = conin:
= procedure byte;
153 2 = return(mon2(1,0));
154 2 = end conin;
=
155 1 = co:
= procedure (char);
156 2 = dcl char byte;
157 2 = call mon1 (2,char);
158 2 = end co;
=
159 1 = rawconin:
= procedure byte;
160 2 = return mon2(6,0fdh);
161 2 = end rawconin;
=
162 1 = constat:
= procedure byte;
163 2 = return(mon2(11,0));
164 2 = end constat;
=
165 1 = rawco:
= procedure (char);
166 2 = dcl char byte;
167 2 = call mon1(6,char);
168 2 = end rawco;
=
169 1 = delay:
= procedure (num);
170 2 = dcl num address;
171 2 = call mon1(141,num);
172 2 = end delay;
=
173 1 = print$buffer:
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 10
= procedure (bufferadr);
174 2 = dcl bufferadr address;
175 2 = call mon1 (9,bufferadr);
176 2 = end print$buffer;
=
177 1 = get$version:
= procedure word;
178 2 = return mon3(12,0);
179 2 = end get$version;
=
180 1 = terminate:
= procedure;
181 2 = call mon1(143,0);
182 2 = end terminate;
=
183 1 = get$sysdat:
= procedure pointer;
184 2 = return mon4(154,0);
185 2 = end get$sysdat;
=
186 1 = get$currpd:
= procedure pointer;
187 2 = return mon4(156,0);
188 2 = end get$currpd;
=
=
= /* utility functions */
=
189 1 = crlf:
= procedure;
190 2 = call co (CR);
191 2 = call co (LF);
192 2 = end crlf;
=
193 1 = print$infield: /* Prints 'len' # of bytes in a */
= /* left- or right-justified field*/
= /* of 'width' dimension. */
= procedure (width,justify,len,dataddr);
=
194 2 = dcl dataddr pointer;
195 2 = dcl (width,len) byte,
= (i,justify) byte;
196 2 = dcl char based dataddr byte;
197 2 = dcl dat$ptr structure(
= offset word,
= segment word) at (@dataddr);
=
198 2 = if len <= width then do; /* Error Check */
200 3 = if justify = 'r' then /* Right Justify */
201 3 = do i=1 to (width-len) ; /* Pad on the left */
202 4 = call co(' ');
203 4 = end;
204 3 = do i=1 to len ;
205 4 = call co (char and 7fh); /* Print the data */
206 4 = dat$ptr.offset = dat$ptr.offset + 1;
207 4 = end;
208 3 = if justify = 'l' then /* Left-justified*/
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 11
209 3 = do i = 1 to (width-len); /* Pad on the right*/
210 4 = call co(' ');
211 4 = end;
212 3 = end;
=
213 2 = end print$infield;
=
=
=
214 1 = dcl hex$digit (*) byte data ('0123456789ABCDEF');
=
215 1 = display$hex$byte:
= procedure (value);
216 2 = dcl value byte;
217 2 = call co (hex$digit(shr(value,4)));
218 2 = call co (hex$digit(value mod 16));
219 2 = end display$hex$byte;
=
220 1 = display$hex$word:
= procedure (value);
221 2 = dcl value word;
222 2 = call display$hex$byte (high(value));
223 2 = call display$hex$byte (low (value));
224 2 = end display$hex$word;
=
=
225 1 = print$hex$byte: /* Prints hex byte in a right- or */
= /* left-justified field of 'width'*/
= /* dimension. */
= procedure (width,justify,val);
226 2 = dcl (val,width) byte,
= (i,justify) byte;
=
227 2 = if width < 2 then return; /* Must be at least 2 for hex byte */
229 2 = else do;
230 3 = if justify = 'r' then /* Right Justify */
231 3 = do i=1 to (width - 2) ;
232 4 = call co(' '); /* Pad on the left */
233 4 = end;
234 3 = call display$hex$byte(val); /* Print the digits */
235 3 = if justify = 'l' then
236 3 = do i=1 to (width-2) ;
237 4 = call co(' '); /* Pad on the right */
238 4 = end;
239 3 = end;
240 2 = end print$hex$byte;
=
=
241 1 = print$hex$word: /* Prints hex word in a right- */
= /* or left-justified field of */
= /* 'width' dimension. */
= procedure(width,justify,val);
242 2 = dcl val word,
= (justify,width) byte;
243 2 = dcl i byte;
=
244 2 = if width < 4 then return; /* Error check */
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 12
246 2 = else do;
247 3 = if justify = 'r' then /* Field is right-justified */
248 3 = do i=1 to (width-4) ;
249 4 = call co(' '); /* Pad on the left */
250 4 = end;
251 3 = call display$hex$word(val); /* Print the digits */
252 3 = if justify = 'l' then
253 3 = do i=1 to (width-4) ;
254 4 = call co(' '); /* Pad on the right */
255 4 = end;
256 3 = end;
=
257 2 = end print$hex$word;
=
258 1 = clear: procedure;
259 2 = dcl i byte;
=
260 2 = do i = 1 to clearseq(0); /* 1st element = counter */
261 3 = call rawco(clearseq(i)); /* Direct clear_screen sequence */
262 3 = end; /* to terminal. */
263 2 = end clear;
=
264 1 = home: procedure;
265 2 = dcl i byte;
=
266 2 = do i = 1 to homeseq(0); /* 1st element = counter */
267 3 = call rawco(homeseq(i)); /* direct home cursor sequence */
268 3 = end; /* to terminal. */
=
269 2 = end home;
=
270 1 = skip$lines: procedure(numlines);
271 2 = dcl (numlines,i) byte;
=
272 2 = do i = 1 to numlines;
273 3 = call co(LF);
274 3 = end;
275 2 = end skip$lines;
=
276 1 = cons$wait: procedure;
277 2 = dcl chr byte;
=
278 2 = call print$buffer(.(CR,LF,
= ' Type any key to leave and return to main menu.$'));
279 2 = chr = conin;
=
280 2 = end cons$wait;
=
281 1 = aschex: /* Convert ascii to hex*/
= procedure(num) byte;
282 2 = dcl num byte;
=
283 2 = if (num > 47) and (num < 58) then do; /* 0 - 9 range */
285 3 = num = num - '0';
286 3 = end;
287 2 = else do;
288 3 = if (num > 64) and (num < 71) then do; /* A - F range */
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 13
290 4 = num = num - 55;
291 4 = end;
292 3 = else do;
293 4 = if (num > 96) and (num < 103) then do; /* a - f range */
295 5 = num = num - 87;
296 5 = end;
= else
297 4 = num = 015h; /* Error -> Default */
298 4 = end;
299 3 = end;
300 2 = return (num);
=
301 2 = end aschex;
=
302 1 = get$intrval: procedure word;
303 2 = dcl (chr,chr1) byte,
= ticdelay word;
=
304 2 = chr = conin;
305 2 = if (chr <> LF) and (chr <> CR) then do; /* It's not a default */
307 3 = chr = aschex(chr); /* Get true hex version */
308 3 = chr1 = conin; /* wait for CR or LF */
309 3 = if (chr1 <> LF) and (chr1 <> CR) then do; /* 2nd hex digit */
311 4 = chr = shl(chr,4) + aschex(chr1);
312 4 = chr1 = conin; /* Get this CR LF */
313 4 = end;
314 3 = end;
= else
315 2 = chr = 01h; /* Default value */
316 2 = ticdelay = chr * (sd.tickspersec); /* Convert to system ticks */
317 2 = return (ticdelay);
=
318 2 = end get$intrval;
=
=
319 1 = disp$mainhdr: procedure; /* Main Menu Display */
=
320 2 = call home; call clear;
322 2 = call crlf; call crlf;
324 2 = call print$infield(34,'r',14,@('Which Option ?'));
325 2 = call crlf; call crlf;
327 2 = call print$infield(33,'r',7,@('H (elp)'));
328 2 = call crlf;
329 2 = call print$infield(35,'r',9,@('M (emory)'));
330 2 = call crlf; call print$infield(37,'r',11,@('O (verview)'));
332 2 = call crlf; call print$infield(44,'r',18,@('P (rocesses - all)'));
334 2 = call crlf; call print$infield(35,'r',9,@('Q (ueues)'));
336 2 = call crlf; call print$infield(43,'r',17,@('U (ser processes)'));
338 2 = call crlf; call print$infield(33,'r',7,@('E (xit)'));
340 2 = call crlf; call crlf; call print$infield(26,'r',2,@('->'));
=
343 2 = end disp$mainhdr;
=
344 1 = print$opt$err: procedure;
345 2 = call print$buffer(.(CR,LF,' Illegal command tail.$'));
346 2 = call crlf;
347 2 = call terminate;
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 14
348 2 = end print$opt$err;
=
349 1 = display$help: procedure;
=
350 2 = call home; call clear;
352 2 = call crlf; call crlf;
354 2 = call crlf; call print$infield(42,'r',23,@('VALID SYSTAT COMMANDS :'));
356 2 = call crlf; call crlf; call print$infield(25,'r',6,@('SYSTAT'));
359 2 = call crlf; call print$infield(34,'r',15,@('SYSTAT [OPTION]'));
361 2 = call crlf; call print$infield(36,'r',17,@('SYSTAT [OPTION C]'));
363 2 = call crlf; call print$infield(39,'r',20,@('SYSTAT [OPTION C ##]'));
365 2 = call crlf; call crlf; call print$infield(28,'r',9,@('- where -'));
368 2 = call crlf; call crlf;
370 2 = call print$infield(44,'r',25,@('-> C = continuous display'));
371 2 = call crlf; call print$infield(47,'r',28,@('-> ## = 1-2 digit hex timer.'));
373 2 = call crlf; call crlf; call print$infield(30,'r',11,@('-> OPTION ='));
376 2 = call crlf; call print$infield(56,'r',33,@('M(emory) P(rocesses) O(verview)'));
378 2 = call crlf; call print$infield(56,'r',33,@('U(ser Processes) Q(ueues) H(elp)'));
380 2 = call crlf;
=
381 2 = if not(specified) then
382 2 = call cons$wait;
= else
383 2 = call terminate;
=
384 2 = end display$help;
=
=
=
385 1 = prntheader: procedure; /* Used in Process Data Display */
=
386 2 = call home; call clear;
388 2 = call print$infield(20,'r',18,@('Virtual Process'));
389 2 = call crlf;
390 2 = call print$infield(20,'r',18,@('Console Name '));
391 2 = call print$infield(37,'r',35,@('Flag Prior Status Resource'));
392 2 = call crlf;
393 2 = call print$infield(20,'r',18,@('------- -------'));
394 2 = call print$infield(37,'r',35,@('---- ----- ------ --------'));
=
395 2 = end prntheader;
=
=
=
396 1 = disp$status: procedure(stat); /* Prints formatted status field */
397 2 = dcl stat byte; /* of Process display. */
=
398 2 = if (stat >=0) and (stat < 11) then do;
400 3 = do case stat;
401 4 = call print$infield(13,'l',5,@('READY'));
402 4 = call print$infield(13,'l',4,@('POLL'));
403 4 = call print$infield(13,'l',5,@('DELAY'));
404 4 = call print$infield(13,'l',4,@('SWAP'));
405 4 = call print$infield(13,'l',9,@('TERMINATE'));
406 4 = call print$infield(13,'l',5,@('SLEEP'));
407 4 = call print$infield(13,'l',7,@('READING'));
408 4 = call print$infield(13,'l',7,@('WRITING'));
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 15
409 4 = call print$infield(13,'l',9,@('FLAG WAIT'));
410 4 = call print$infield(13,'l',8,@('CIO WAIT'));
411 4 = call print$infield(13,'l',8,@('SYNCHING'));
412 4 = end;
413 3 = end;
= else
414 2 = call print$infield(13,'l',5,@('ERROR'));
=
415 2 = end disp$status;
=
=
=
416 1 = disp$resource: procedure(stats,rsrce);/* Prints formatted resource field */
417 2 = dcl stats byte; /* of Process display. */
418 2 = dcl (rsrce,offs) word;
419 2 = dcl (count,notfound) byte; /* For flag table traversal */
=
420 2 = if (stats >=0) and (stats < 11) then do;
422 3 = do case stats;
423 4 = call print$infield(13,'l',3,@('CPU ')); /* Case 0 */
424 4 = do; /* Case 1 */
425 5 = call print$infield(8,'l',8,@('DEVICE #'));
426 5 = call print$hex$byte(4,'l',low(rsrce));
427 5 = end;
428 4 = do; /* Case 2 */
429 5 = call print$infield(8,'l',8,@('TICKS = '));
430 5 = call print$hex$word(4,'l',rsrce);
431 5 = end;
432 4 = call print$infield(13,'l',7,@('SWAPERR ')); /* Case 3 */
433 4 = call print$infield(13,'l',3,@('CPU ')); /* Case 4 */
434 4 = do;
435 5 = if rsrce = sd.rlr then /* Case 5 */
436 5 = call print$infield(13,'l',10,@('READY LIST'));
437 5 = else if rsrce = sd.dlr then
438 5 = call print$infield(13,'l',10,@('DELAY LIST'));
439 5 = else if rsrce = sd.drl then
440 5 = call print$infield(13,'l',10,@('DISPATCHER'));
441 5 = else if rsrce = sd.plr then
442 5 = call print$infield(13,'l',9,@('POLL LIST'));
= else
443 5 = call print$infield(13,'l',5,@('OTHER'));
444 5 = end;
445 4 = do; /* Case 6 */
446 5 = qd$ptr.offset = rsrce;
447 5 = call print$in$field(12,'l',pnamsiz,@qd.name);
448 5 = end;
449 4 = do; /* Case 7 */
450 5 = qd$ptr.offset = rsrce;
451 5 = call print$infield(12,'l',pnamsiz,@qd.name);
452 5 = end;
453 4 = do; /* Case 8 */
454 5 = call co(023h); /* A '#' sign */
455 5 = if rsrce <> 0ffffh then
456 5 = call print$hex$byte(12,'l',low(rsrce));
= else
457 5 = call print$in$field(12,'l',1,@('?'));
458 5 = end;
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 16
459 4 = do; /* Case 9 */
460 5 = call print$infield(10,'l',9,@('CONSOLE #'));
461 5 = call display$hex$byte(low(rsrce));
462 5 = end;
463 4 = call print$infield(13,'l',13,@(' ')); /* Case 10*/
464 4 = end; /* case */
465 3 = end;
= else /* Invalid Status Value */
466 2 = call print$infield(12,'l',5,@('ERROR'));
467 2 = end disp$resource;
=
468 1 = dcl pd$list (64) structure ( /* Stores fields of successive pd's.*/
= cns byte,
= name (8) byte,
= flag word,
= prior byte,
= stat byte ,
= resource word);
=
469 1 = dcl link$list (64) word;
=
470 1 = display$proc: procedure(lnkfield);
471 2 = dcl lnkfield byte; /* True = user proc's only,False = all proc's*/
472 2 = dcl (char,temp) byte; /* Temp controls continuous printout */
473 2 = dcl (k,n) byte,
= (notfound,i) byte;
=
474 2 = if not(specified) then do;
476 3 = call crlf;
477 3 = call print$buffer(.(CR,LF,' Continuous Display?$'));
478 3 = char = conin;
479 3 = if (char = 'y') or ( char = 'Y') then do;
481 4 = repeat = true;
482 4 = call print$buffer(.(CR,LF,'Time Interval (in hex) :$'));
483 4 = intrval = get$intrval;
=
484 4 = end;
485 3 = end;
=
486 2 = temp = true;
487 2 = call prntheader;
=
488 2 = do while (temp or repeat); /* Display until user hits any key */
489 3 = disable; /* critical section required to obtain list*/
490 3 = temp = false;
491 3 = n = -1;
492 3 = pd$ptr.offset = sd.thrdrt; /* Start at Thread List root. */
493 3 = getpds: /* Put all pd's on the list */
= do while (pd$ptr.offset <> 0) and (n <> maxpd);
494 4 = n = n + 1;
495 4 = if not(lnkfield) or (pd.mem <> 0) then /* Is it user processes only ? */
496 4 = do; /* Either display all processes anyway or */
= /* or this is a valid user process. */
497 5 = pd$list(n).cns = pd.cns;
498 5 = do i= 0 to pnamsiz-1;
499 6 = pd$list(n).name(i) = pd.name(i);
500 6 = end;
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 17
501 5 = pd$list(n).flag = pd.flag;
502 5 = pd$list(n).prior = pd.prior;
503 5 = pd$list(n).stat = pd.stat;
= /* Use sysdat info to determine what each*/
= /* process is waiting for or using. Get */
= /* Queue names,flag #'s,system ticks,list*/
= /* names and device or console #'s. Must */
= /* be done in critical region. */
504 5 = i = pd.stat; /* Save this to determine resource . */
505 5 = if (i = 1) or (i = 2 )then
506 5 = pd$list(n).resource = pd.wait; /* Device # or # of ticks delayed */
= else
507 5 = if i = 5 then /* Process is sleeping - find out which list*/
508 5 = do;
509 6 = uda$ptr.segment = pd.uda;
510 6 = uda$ptr.offset = 0;
511 6 = pd$list(n).resource = uda.dparam;
512 6 = end;
= else
513 5 = if (i = 6) or (i = 7) then /* Process is reading from or writing to */
514 5 = do; /* a queue. Get address of queue name. */
515 6 = uda$ptr.segment = pd.uda;
516 6 = uda$ptr.offset = 0;
517 6 = if i = 6 then
518 6 = pd$list(n).resource = (uda.dparam) - 12h;
= else
519 6 = pd$list(n).resource = (uda.dparam) - 14h;
520 6 = end;
= else
521 5 = if i = 8 then /* Process is waiting on a flag, get the #*/
522 5 = do;
523 6 = pd$list(n).resource = 0ffffh; /* Remains if no flag found .*/
524 6 = flag$ptr.offset = sd.flags;
525 6 = notfound = true;
526 6 = k = 0; /* Flag counter */
527 6 = do while notfound;
528 7 = if (flag.pd <> pd$ptr.offset) then do;
530 8 = k = k+ 1;
531 8 = flag$ptr.offset = flag$ptr.offset + flaglen;
532 8 = if k > sd.nflags then /* End of table */
533 8 = notfound = false;
534 8 = end;
= else /* This is the flag*/
535 7 = do;
536 8 = pd$list(n).resource = k;
537 8 = notfound = false;
538 8 = end;
539 7 = end;
540 6 = end;
= else
541 5 = if i = 9 then do;
543 6 = pd$list(n).resource = pd.cns;
544 6 = end;
= end; /* Valid processes*/
= else
546 4 = n = n-1; /* Ignore system processes */
547 4 = pd$ptr.offset = pd.thread; /* Get the next process*/
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 18
548 4 = end getpds;
=
549 3 = if n = -1 then return; /* stop here if no pds */
=
551 3 = enable;
552 3 = call home; call skip$lines(3); /* enables interrupts */
554 3 = printpds:
= do k = 0 to n;
555 4 = if k <> 0 then call crlf;
557 4 = call print$hex$byte(7,'r',pd$list(k).cns);/* print virtual console #*/
558 4 = call print$buffer(.(' $'));
559 4 = call print$infield(9,'l',pnamsiz,@pd$list(k).name); /* print name */
560 4 = call print$hex$word(8,'l',pd$list(k).flag);
561 4 = call print$hex$byte(7,'l',pd$list(k).prior); /* print its priority */
562 4 = call disp$status(pd$list(k).stat); /* print process status */
563 4 = call disp$resource(pd$list(k).stat,pd$list(k).resource);
= /* print resource */
=
564 4 = end printpds;
=
565 3 = if n < 21 then do;
567 4 = do k = n to 18;
568 5 = call print$buffer(.(CR,LF,
= ' $'));
569 5 = end;
570 4 = end;
=
=
571 3 = if constat then do; /* Check for User Interrupt*/
573 4 = repeat = false;
574 4 = char = conin; /* Swallow stop char */
575 4 = end;
576 3 = if repeat then do; /* If still going,delay it */
578 4 = call delay(intrval); /* and go back to loop top */
579 4 = if (n >= 20) then
580 4 = call prntheader;
581 4 = end;
582 3 = else do;
583 4 = if not(specified) then /* If not comline args then */
584 4 = call cons$wait; /* let them get to main menu*/
= else
585 4 = call terminate;
586 4 = end;
=
587 3 = end;/*while loop*/
=
588 2 = end display$proc;
=
=
589 1 = dcl sortrecd structure ( name (8) byte, /* Stores data when sorting*/
= start word,
= pd word,
= len word,
= cns byte );
=
590 1 = dcl sortarray (80) structure ( /* For sorting and printing*/
= name (8) byte,
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 19
= start word,
= pd word,
= len word,
= cns byte );
=
591 1 = dcl sharearray (80) structure ( /* For Shared Code List */
= name (8) byte,
= start word,
= disk byte,
= user byte,
= len word,
= cns byte );
=
592 1 = disp$memhdr : procedure;
=
593 2 = call home; call clear;
595 2 = call print$buffer(.('Process Virtual | $'));
596 2 = call print$buffer(.('Process Virtual $'));
597 2 = call print$buffer(.(CR,LF,' Name Console PD# Start Len | $'));
598 2 = call print$buffer(.(' Name Console PD# Start Len $'));
599 2 = call print$buffer(.(CR,LF,'________ _______ ____ _____ ____ | $'));
600 2 = call print$buffer(.(' _______ _______ ____ _____ ____ $'));
=
=
601 2 = end disp$memhdr;
=
602 1 = print$sorted: /* Prints two columns of memory data */
= procedure(cnt,scnt); /* Uses sorted array of structures. */
603 2 = dcl (cnt,scnt) byte, /* cnt: regular mem,scnt: shared mem */
= (m,q,k) byte;
=
=
604 2 = call home;
605 2 = call skip$lines(3);
=
606 2 = if (cnt > 1) then do; /* Must have two per line here */
608 3 = do m = 0 to ((cnt/2)-1) ; /* If odd #, hold last one */
609 4 = call crlf; /* Print 2 columns,ascending values*/
610 4 = k = m;
611 4 = do q = 1 to 2 ;
612 5 = call print$infield(12,'l',pnamsiz,@sortarray(k).name);
613 5 = if sortarray(k).cns = 030h then
614 5 = call print$buffer(.(' $'));
615 5 = else call print$hex$byte(7,'l',sortarray(k).cns);
616 5 = call print$hex$word(6,'l',sortarray(k).pd);
617 5 = call print$hex$word(7,'l',sortarray(k).start);
618 5 = call print$hex$word(5,'l',sortarray(k).len);
619 5 = if (q mod 2) <> 0 then
620 5 = call print$buffer(.('| $'));
621 5 = k = k + (cnt/2); /* Go to other half of the array */
622 5 = end;
623 4 = end;
624 3 = end;
=
625 2 = if (cnt mod 2) <> 0 then do; /* Only put one on last line */
= /* Print blanks on left */
627 3 = call print$buffer(.(CR,LF,
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 20
= ' | $'));
628 3 = call print$infield(12,'l',pnamsiz,@sortarray(cnt-1).name);
629 3 = if sortarray(cnt-1).cns = 030h then
630 3 = call print$buffer(.(' $'));
= else
631 3 = call print$hex$byte(7,'l',sortarray(cnt-1).cns);
632 3 = call print$hex$word(6,'l',sortarray(cnt-1).pd);
633 3 = call print$hex$word(7,'l',sortarray(cnt-1).start);
634 3 = call print$hex$word(5,'l',sortarray(cnt-1).len);
635 3 = end;
= /* Print Shared Code,if any */
636 2 = if (scnt > 0) then do;
638 3 = call print$buffer(.(CR,LF,
= ' Shared Code List $'));
639 3 = call print$buffer(.(' $'));
640 3 = end;
=
641 2 = if (scnt > 1) then do;
643 3 = do m = 0 to ((scnt/2) - 1);
644 4 = call crlf;
645 4 = k = m;
646 4 = do q = 1 to 2;
647 5 = call print$infield(12,'l',pnamsiz,@sharearray(k).name);
648 5 = call print$hex$byte(7,'l',sharearray(k).cns);
649 5 = call print$hex$byte(2,'l',sharearray(k).disk);
650 5 = call print$hex$byte(4,'l',sharearray(k).user);
651 5 = call print$hex$word(7,'l',sharearray(k).start);
652 5 = call print$hex$word(5,'l',sharearray(k).len);
653 5 = if (q mod 2) <> 0 then
654 5 = call print$buffer(.('| $'));
655 5 = k = k + (scnt/2);
656 5 = end;
657 4 = end;
658 3 = end;
=
659 2 = if (scnt > 0) then do;
=
661 3 = if (scnt mod 2) <> 0 then do; /* Odd # of md's. */
= /* Put just 1 on last line*/
663 4 = call print$buffer(.(CR,LF,
= ' | $'));
664 4 = call print$infield(12,'l',pnamsiz,@sharearray(scnt-1).name);
665 4 = call print$hex$byte(7,'l',sharearray(scnt-1).cns);
666 4 = call print$hex$byte(2,'l',sharearray(scnt-1).disk);
667 4 = call print$hex$byte(4,'l',sharearray(scnt-1).user);
668 4 = call print$hex$word(7,'l',sharearray(scnt-1).start);
669 4 = call print$hex$word(5,'l',sharearray(scnt-1).len);
670 4 = end;
=
671 3 = scnt = scnt + 1; /* Count its heading */
672 3 = end;
=
673 2 = if ((cnt+scnt)/2) < 21 then do; /* Clear rest of screen */
675 3 = do k = ((cnt+scnt)/2) to 18;
676 4 = call print$buffer(.(CR,LF,
= ' $'));
677 4 = call print$buffer(.(' $'));
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 21
678 4 = end;
679 3 = end;
=
=
680 2 = end print$sorted;
=
=
681 1 = display$mem:
= procedure;
682 2 = dcl (i,mdcnt,pdcnt) byte; /* Mdcnt = memory descriptor count*/
683 2 = dcl (x,y) byte, /* Pdcnt = process descr. count */
= (cont,scdcnt) byte, /* cont = Boolean 'continue' */
= n integer,
= (temp,chr) byte,
= savmau word;
=
684 2 = if not(specified) then do;
= /* Does User want continuous display?*/
686 3 = call print$buffer(.(CR,LF,' Continuous Display? $'));
687 3 = chr = conin;
688 3 = if (chr = 'y') or ( chr = 'Y') then do;
690 4 = repeat = true;
691 4 = call print$buffer(.(CR,LF,' Time Interval (in hex): $'));
692 4 = intrval = get$intrval; /* Get hex value from terminal */
693 4 = end;
694 3 = end;
695 2 = temp = true;
=
696 2 = call home; call clear;
698 2 = call disp$memhdr;
699 2 = do while (temp or repeat); /* Display at least once */
700 3 = temp = false;
701 3 = do pdcnt = 0 to maxpd;
702 4 = link$list(pdcnt) = 0;
703 4 = end;
704 3 = n = -1;
705 3 = pdcnt = 0;
=
=
706 3 = disable; /* Critical section required to obtain list */
=
707 3 = getmemowners:
= pd$ptr.offset = sd.thrdrt; /* Start at Thread Root */
708 3 = do while (pd$ptr.offset <> 0) and (pdcnt <> maxpd);
709 4 = if pd.mem <> 0 then do; /* If it owns memory, */
711 5 = link$list(n:=n+1) = pd$ptr.offset; /* put it on the list. */
712 5 = pdcnt = pdcnt + 1;
713 5 = end;
714 4 = pd$ptr.offset = pd.thread; /* Go to next process */
715 4 = end;
716 3 = if pdcnt = 0 then return;
=
718 3 = getmds:
= mdcnt = 0;
719 3 = do i = 0 to (pdcnt-1);
720 4 = pd$ptr.offset = link$list(i); /* Reset Proc Descriptor */
721 4 = ms$ptr.offset = pd.mem;
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 22
722 4 = cont = true;
723 4 = do while (cont and (mdcnt <= maxmd));
724 5 = sortarray(mdcnt).pd = pd$ptr.offset; /* Get proc descriptor */
725 5 = cont = false;
726 5 = md$ptr.offset = ms.mau; /* Md is on MAL */
727 5 = sortarray(mdcnt).start = md.start;
728 5 = sortarray(mdcnt).len = md.length;
729 5 = sortarray(mdcnt).cns = pd.cns;
730 5 = do x = 0 to 7; /* Get owner's name */
731 6 = sortarray(mdcnt).name(x) = pd.name(x); /* A byte at a time */
732 6 = end;
733 5 = if ms.link <> 0 then do; /* More md's for this */
= /* process ? */
735 6 = savmau = ms.mau;
736 6 = ms$ptr.offset = ms.link;
737 6 = do while (ms.mau = savmau) and (ms.link <> 0);
738 7 = savmau = ms.mau; /* Look for a different */
739 7 = ms$ptr.offset = ms.link; /* partition,same pd. */
740 7 = end;
741 6 = if (savmau <> ms.mau) then /* Check if same mau */
742 6 = cont = true; /* If not, go get another md*/
743 6 = end;
744 5 = mdcnt = mdcnt + 1;
=
745 5 = end; /* while cont : a single pd's memory*/
=
746 4 = end; /* All pd's memory*/
=
= /* That's all the used memory. Now go */
= /* to the Memory Free List. */
747 3 = md$ptr.offset = sd.mfl;
748 3 = do while md$ptr.offset <> 0 and (mdcnt < maxmd);
749 4 = do x = 0 to 7;
750 5 = sortarray(mdcnt).name(x) = freename(x); /*Use 'FREE' as name*/
751 5 = end;
752 4 = sortarray(mdcnt).start = md.start;
753 4 = sortarray(mdcnt).pd = 0;
754 4 = sortarray(mdcnt).len = md.length;
755 4 = sortarray(mdcnt).cns = 030h;
756 4 = mdcnt = mdcnt+1;
757 4 = md$ptr.offset = md.link;
758 4 = end;
= /* Get shared code */
759 3 = getshared: /* Free and used */
= n = -1;
760 3 = pdcnt = 0;
761 3 = scdcnt = 0;
762 3 = pd$ptr.offset = sd.slr; /* Top of shared list*/
763 3 = do while (pd$ptr.offset <> 0) and (pdcnt < maxpd);
764 4 = link$list(n:=n + 1) = pd$ptr.offset;
765 4 = pdcnt = pdcnt + 1;
766 4 = pd$ptr.offset = pd.thread;
767 4 = end;
768 3 = if (pdcnt > 0) then do;
770 4 = do i = 0 to (pdcnt-1);
771 5 = pd$ptr.offset = link$list(i);
772 5 = ms$ptr.offset = pd.mem;
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 23
773 5 = cont = true;
774 5 = do while (cont and (scdcnt < maxmd));
775 6 = cont = false;
776 6 = sharearray(scdcnt).cns = pd.cns;
777 6 = sharearray(scdcnt).disk = pd.ldsk;
778 6 = sharearray(scdcnt).user = pd.luser;
779 6 = md$ptr.offset = ms.mau;
780 6 = sharearray(scdcnt).start = md.start;
781 6 = sharearray(scdcnt).len = md.length;
782 6 = do x = 0 to (pnamsiz - 1);
783 7 = sharearray(scdcnt).name(x) = pd.name(x);
784 7 = end;
785 6 = if (ms.link <> 0) then do;
787 7 = savmau = ms.mau;
788 7 = ms$ptr.offset = ms.link;
789 7 = do while (ms.mau = savmau) and (ms.link <> 0);
790 8 = savmau = ms.mau;
791 8 = ms$ptr.offset = ms.link;
792 8 = end;
793 7 = if (ms.mau <> savmau) then
794 7 = cont = true;
795 7 = end;
796 6 = scdcnt = scdcnt + 1;
797 6 = end;
798 5 = end;
799 4 = end;
=
800 3 = enable; /* End critical section */
=
= /* Now sort the list of partitions */
801 3 = sortmds :
= do x = 0 to (mdcnt-1);
802 4 = sortrecd.start = sortarray(x).start;
803 4 = do i = 0 to 7;
804 5 = sortrecd.name(i) = sortarray(x).name(i);
805 5 = end;
806 4 = sortrecd.len = sortarray(x).len;
807 4 = sortrecd.pd = sortarray(x).pd;
808 4 = sortrecd.cns = sortarray(x).cns;
809 4 = y = x;
810 4 = find : do while (y > 0) and ( sortarray(y-1).start > sortrecd.start);
811 5 = sortarray(y).start = sortarray(y-1).start;
812 5 = do i = 0 to 7;
813 6 = sortarray(y).name(i) = sortarray(y-1).name(i);
814 6 = end;
815 5 = sortarray(y).len = sortarray(y-1).len;
816 5 = sortarray(y).pd = sortarray(y-1).pd;
817 5 = sortarray(y).cns = sortarray(y-1).cns;
818 5 = y = y-1;
819 5 = end find;
=
820 4 = sortarray(y).start = sortrecd.start;
821 4 = do i = 0 to 7;
822 5 = sortarray(y).name(i) = sortrecd.name(i);
823 5 = end;
824 4 = sortarray(y).len = sortrecd.len;
825 4 = sortarray(y).pd = sortrecd.pd;
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 24
826 4 = sortarray(y).cns = sortrecd.cns;
827 4 = end sortmds;
=
=
=
828 3 = call print$sorted(mdcnt,scdcnt); /* Print the sorted list */
829 3 = if constat then do; /* Want to loop again ? */
831 4 = repeat = false;
832 4 = chr = conin; /* Swallow stop char */
833 4 = end;
834 3 = if repeat then do; /* Keep looping,delay first */
836 4 = if ((mdcnt / 2) >= 20) then
837 4 = call disp$memhdr;
838 4 = call delay(intrval);
839 4 = end;
840 3 = else do;
841 4 = if not(specified) then /* Get back to main menu*/
842 4 = call cons$wait;
= else /* Skip menu, -> system */
843 4 = call terminate;
844 4 = end;
845 3 = end;/*while*/
=
846 2 = end display$mem;
=
=
847 1 = dcl qlist (64) structure (
= name (8) byte,
= nmsgs word,
= msglen word,
= msgcnt word,
= nq word,
= dq word,
= owner (8) byte,
= flags byte);
=
848 1 = print$qhdr: procedure; /* Print Queue Heading */
=
849 2 = call home; call clear;
851 2 = call print$buffer(.(' NAME NMSGS MSGLEN MSGCNT $'));
852 2 = call print$buffer(.('READER WRITER MX-OWNER FLAGS $'));
853 2 = call crlf;
854 2 = call print$buffer(.(' ________ ______ ______ ______ $'));
855 2 = call print$buffer(.('______ ______ ________ _____ $'));
856 2 = call crlf;
=
857 2 = end print$qhdr;
=
=
858 1 = display$flag$status: /* Print Queue Flag Status*/
= procedure(flag);
859 2 = dcl prev boolean;
860 2 = dcl (i,flag,cnt) byte;
=
861 2 = prev = false;
862 2 = i = 1;
863 2 = cnt = 0;
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 25
=
864 2 = do while (i <= maxqflags) ;
865 3 = if (flag and i) <> 0 then do;
867 4 = if prev then do; /* Take care of formatting */
869 5 = call co(',');
870 5 = cnt = cnt + 1; /* Count all chars */
871 5 = end;
872 4 = call display$hex$byte(i);
873 4 = cnt = cnt + 2;
874 4 = prev = true;
875 4 = end;
876 3 = i = i*2; /* Flags are 1 bit each */
877 3 = end;
878 2 = do i = cnt to 14; /* Clear previous line's flags */
879 3 = call co(' ');
880 3 = end;
=
881 2 = end display$flag$status;
=
=
882 1 = display$queue:
= procedure;
883 2 = dcl temp byte,
= n integer,
= (qdcnt,cont) byte,
= (chr,i) byte;
=
884 2 = if not(specified) then do;
886 3 = call crlf;
887 3 = call print$buffer(.(CR,LF,' Continuous Display? $'));
888 3 = chr = conin;
889 3 = if (chr = 'y') or (chr = 'Y') then do;
891 4 = repeat = true;
892 4 = call print$buffer(.(CR,LF,'Time Interval (in hex) : $'));
893 4 = intrval = get$intrval;
894 4 = end;
895 3 = end;
=
896 2 = temp = true;
897 2 = call print$qhdr;
=
898 2 = do while ( temp or repeat);
899 3 = temp = false;
900 3 = qdcnt = 0;
901 3 = call home; call skip$lines(2);
=
903 3 = getqueues:
= disable; /* Begin Critical Section */
904 3 = qd$ptr.offset = sd.qlr;
905 3 = do while ((qdcnt < maxqueues) and (qd$ptr.offset <> 0)) ;
906 4 = do i = 0 to pnamsiz-1;
907 5 = qlist(qdcnt).name(i)= qd.name(i);
908 5 = end;
909 4 = qlist(qdcnt).nmsgs = qd.nmsgs;
910 4 = qlist(qdcnt).msglen = qd.msglen;
911 4 = qlist(qdcnt).msgcnt = qd.msgcnt;
912 4 = qlist(qdcnt).nq = qd.nq;
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 26
913 4 = qlist(qdcnt).dq = qd.dq;
914 4 = if ((qd.flags mod 2) <> 0) then do; /* It's an MX queue */
916 5 = pd$ptr.offset = qd.buffer;
917 5 = if pd$ptr.offset <> 0 then /* It has an owner */
918 5 = do i = 0 to pnamsiz -1;
919 6 = qlist(qdcnt).owner(i) = pd.name(i);
920 6 = end;
= else /* No one owns it now */
921 5 = do i = 0 to pnamsiz-1; /* Print blanks */
922 6 = qlist(qdcnt).owner(i) = ' ';
923 6 = end;
924 5 = end;
= else /* It's not an MX queue*/
925 4 = do i = 0 to pnamsiz-1;
926 5 = qlist(qdcnt).owner(i) = ' ';
927 5 = end;
928 4 = qlist(qdcnt).flags = qd.flags;
929 4 = qdcnt = qdcnt + 1;
930 4 = qd$ptr.offset = qd.link;
931 4 = end;
932 3 = enable; /* End critical section */
=
933 3 = print$qds: /* Print the Queue info */
= do i = 0 to qdcnt-1;
934 4 = call print$buffer(.(' $'));
935 4 = call print$infield(11,'l',pnamsiz,@qlist(i).name);/* Queue Name */
936 4 = call print$hex$word(8,'l',qlist(i).nmsgs); /* Number of Msgs*/
937 4 = call print$hex$word(8,'l',qlist(i).msglen); /* Message Length*/
938 4 = call print$hex$word(7,'l',qlist(i).msgcnt); /* Message Count */
939 4 = pd$ptr.offset = qlist(i).dq;
940 4 = if pd$ptr.offset <> 0 then
941 4 = call print$infield(9,'l',pnamsiz,@pd.name);
= else
942 4 = call print$buffer(.(' $'));
943 4 = pd$ptr.offset = qlist(i).nq;
944 4 = if pd$ptr.offset <> 0 then
945 4 = call print$infield(9,'l',pnamsiz,@pd.name);
= else
946 4 = call print$buffer(.(' $'));
947 4 = call print$infield(10,'l',pnamsiz,@qlist(i).owner); /* Print it */
948 4 = call display$flag$status(qlist(i).flags); /* Print Flag Value*/
949 4 = call crlf;
950 4 = end;
=
= /* Print the Flag Key */
951 3 = call print$buffer(.(' Flag Values : 1 = MX, 2 = NO DELETE, $'));
952 3 = call print$buffer(.('4 = NOT USER WRITEABLE, $'));
953 3 = call crlf;
954 3 = call print$buffer(.(' 8 = RSP, 10 = FROM QD TABLE, 20 = RPL QUEUE, $'));
955 3 = call print$buffer(.('40 = DEVICE QUEUE.$'));
956 3 = qdcnt = qdcnt - 1; /* To normalize */
=
957 3 = if (qdcnt < 22) then do;
959 4 = do i = qdcnt to 17;
960 5 = call print$buffer(.(CR,LF,
= ' $'));
961 5 = end;
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 27
962 4 = end;
=
963 3 = if constat then do; /* Check for continue */
965 4 = repeat = false;
966 4 = chr = conin;
967 4 = end;
968 3 = if repeat then do; /* Keep going,delay first */
970 4 = call delay(intrval);
971 4 = if (qdcnt >= 19) then do;
973 5 = call print$qhdr;
974 5 = end;
975 4 = end;
976 3 = else do; /* Stop display */
977 4 = if not(specified) then /* Go to main menu */
978 4 = call cons$wait;
= else /* Go back to system */
979 4 = call terminate;
980 4 = end;
981 3 = end; /* while loop */
=
982 2 = end display$queue;
=
=
=
983 1 = dcl driv$letter (*) byte data ('ABCDEFGHIJKLMNOP');
=
984 1 = display$gen: procedure(vers); /* Overview Display Routine*/
985 2 = dcl vers byte;
986 2 = dcl (count,qsize) word;
987 2 = dcl mode word;
=
=
988 2 = call home; call clear;
990 2 = pd$pointer = get$currpd; /* Get PD for Current Process*/
991 2 = vccb$ptr.offset = sd.ccb + (pd.cns * size(vccb));
=
992 2 = call crlf; call print$infield(42,'r',17,@('Default Disk = '));
994 2 = call co(driv$letter(pd.dsk));
995 2 = call co(':');
=
996 2 = call crlf; call print$infield(42,'r',24,@('Default User Number = '));
998 2 = call display$hex$byte(pd.user);
=
999 2 = call crlf; call print$infield(42,'r',20,@('Default Printer = '));
1001 2 = if (vers) then /* It's MPM-86 */
1002 2 = call display$hex$byte(pd.lst - sd.ncondev);
= else /* It's Concurrent */
1003 2 = call display$hex$byte(pd.lst);
=
1004 2 = call crlf; call print$infield(42,'r',28,@('Current Virtual Console = '));
1006 2 = call display$hex$byte(pd.cns);
=
1007 2 = if (not vers) then do;
1009 3 = call crlf;call print$infield(42,'r',20,@('Background Mode = '));
1011 3 = mode = (vccb.state);
1012 3 = if (mode >= 0) and (mode <= 0200h ) then do;
1014 4 = if (mode mod 2) = 0 then
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 28
1015 4 = call print$buffer(.('DYNAMIC $'));
= else
1016 4 = call print$buffer(.('BUFFERED$'));
1017 4 = end;
1018 3 = else call print$buffer(.('OTHER $'));
1019 3 = end;
=
1020 2 = if (not vers) then do;
1022 3 = call crlf; call print$infield(42,'r',17,@('Buffer Space = '));
1024 3 = call display$hex$word(vccb.maxbufsiz);
1025 3 = call co('K');
1026 3 = end;
=
1027 2 = call crlf;
1028 2 = call print$infield(42,'r',31,@('Maximum Memory Per Process = '));
1029 2 = call display$hex$word(sd.mmp);
1030 2 = call print$buffer(.(' PARA$'));
=
1031 2 = call crlf; call print$infield(42,'r',31,@('Number of Virtual Consoles = '));
1033 2 = call display$hex$byte(sd.ncns);
=
1034 2 = call crlf; call print$infield(42,'r',23,@('Number of Printers = '));
1036 2 = call display$hex$byte(sd.nlst);
=
1037 2 = call crlf; call print$infield(42,'r',20,@('Temporary Drive = '));
1039 2 = call co(driv$letter(sd.tempdisk));
1040 2 = call co(':');
=
1041 2 = call crlf; call print$infield(42,'r',17,@('System Drive = '));
1043 2 = call co(driv$letter(sd.srchdisk));
1044 2 = call co(':');
=
1045 2 = call crlf; call print$infield(42,'r',21,@('Ticks Per Second = '));
1047 2 = call display$hex$byte(sd.tickspersec);
=
1048 2 = call crlf; call print$infield(42,'r',20,@('Day File Option = '));
1050 2 = if sd.dayfile = 0 then
1051 2 = call print$buffer(.('NO $'));
= else
1052 2 = call print$buffer(.('YES$'));
=
=
1053 2 = call crlf; call print$infield(42,'r',23,@('BDOS Compatability = '));
1055 2 = if sd.cmod <> 0 then
1056 2 = call print$buffer(.('YES$'));
= else
1057 2 = call print$buffer(.('NO $'));
=
1058 2 = call crlf; call print$infield(42,'r',20,@('Number of Flags = '));
1060 2 = call display$hex$byte(sd.nflags);
=
1061 2 = call crlf; call print$infield(42,'r',27,@('Free Queue Descriptors = '));
1063 2 = pd$ptr.offset = sd.qul;
1064 2 = count = 0;
1065 2 = do while pd$ptr.offset <> 0;
1066 3 = count = count + 1;
1067 3 = pd$ptr.offset = pd.link;
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 29
1068 3 = end;
1069 2 = call display$hex$byte(count);
=
1070 2 = call crlf; call print$infield(42,'r',22,@('Free Queue Buffer = '));
1072 2 = md$ptr.offset = .sd.qmau(0);
1073 2 = sat$ptr.segment = md.start; /* start of qbuffer SAT */
1074 2 = sat$ptr.offset = size(sat); /* skip 1st 5 bytes bookeeping*/
1075 2 = qsize = 0;
1076 2 = do while sat.start <> 0; /* byte offset for queue buffer*/
1077 3 = if sat.num$allocs = 0 then /* dooes anyone own this piece?*/
1078 3 = qsize = qsize + sat.len;
1079 3 = sat$ptr.offset = size(sat) + sat$ptr.offset; /* Get next entry */
1080 3 = end;
1081 2 = call display$hex$word(qsize);
1082 2 = call print$buffer(.(' BYTES$'));
=
1083 2 = call crlf; call print$infield(42,'r',29,@('Free Process Descriptors = '));
1085 2 = pd$ptr.offset = sd.pul;
1086 2 = count = 0;
1087 2 = do while pd$ptr.offset <> 0;
1088 3 = count = count + 1;
1089 3 = pd$ptr.offset = pd.link;
1090 3 = end;
1091 2 = call display$hex$byte(count);
=
1092 2 = call crlf; call print$infield(42,'r',28,@('Free Memory Descriptors = '));
1094 2 = pd$ptr.offset = sd.mdul;
1095 2 = count = 0;
1096 2 = do while pd$ptr.offset <> 0;
1097 3 = count = count + 1;
1098 3 = pd$ptr.offset = pd.link;
1099 3 = end;
1100 2 = call display$hex$byte(count);
=
1101 2 = call crlf;
1102 2 = if not(specified) then
1103 2 = call cons$wait;
= else
1104 2 = call terminate;
=
1105 2 = end displaygen;
=
=
=
/**************************************************************************
MAIN PROGRAM
**************************************************************************/
1106 1 plmstart: procedure public;
1107 2 dcl (i,version) byte,
ver address,
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 30
validchar byte;
1108 2 dcl bdosversion lit '30h'; /* BDOS 3.o or later */
1109 2 dcl osproduct lit '14h'; /* CCP/M-86 */
1110 2 dcl mpmproduct lit '11h'; /* MP/M-86 */
1111 2 dcl vers$str$pointer pointer;
1112 2 dcl vers$str$ptr structure (
offset word,
segment word) at (@vers$str$pointer);
1113 2 dcl (doscan,chr) byte;
1114 2 ver = get$version;
1115 2 if low(ver) < bdosversion or
( (high(ver) <> osproduct) and (high(ver) <> mpmproduct) ) then
1116 2 do;
1117 3 call print$buffer (.('Requires Concurrent CP/M-86 or MP/M-86$'));
1118 3 call reboot; /* use CP/M exit */
1119 3 end;
else
1120 2 do;
1121 3 version = high(ver) mod 2; /* 0 = CCP/M-86, 1 = MP/M-86 */
1122 3 sysdat$pointer = get$sysdat;
1123 3 flag$ptr.segment,md$ptr.segment,ms$ptr.segment,
sat$ptr.segment,qd$ptr.segment,pd$ptr.segment,vccb$ptr.segment
= sysdat$ptr.segment;
1124 3 doscan = true;
1125 3 repeat = false;
1126 3 specified = false; /* Default */
1127 3 intrval = 01h; /* Default */
/* Scan for option */
1128 3 do while doscan ; /* Loop until Q(uit)*/
1129 4 if buff(0) <> 0 then do; /* Command line arg */
1131 5 i = 1; /* was used. Get it.*/
1132 5 do while buff(i) = ' ' ; /* Skip intervening blanks */
1133 6 i = i + 1;
1134 6 end;
1135 5 if buff(i) = lbracket then
1136 5 i = i + 1;
else
1137 5 call print$opt$err;
1138 5 chr = buff(i); /* 1st arg */
1139 5 i = i + 1;
1140 5 if (buff(i) = ',') or (buff(i) = ' ') or (buff(i) = ']') then
1141 5 i = i + 1; /* Skip blank or comma */
else
1142 5 call print$opt$err;
1143 5 if (buff(i-1) <> rbracket) then do; /* Keep going,more args*/
1145 6 if (buff(i) = 'c') or (buff(i) = 'C') then do;
1147 7 repeat = true;
1148 7 i = i + 1;
1149 7 end;
else
1150 6 call print$opt$err;
1151 6 if (buff(i) <> rbracket) then do; /* Still more ?*/
1153 7 if (buff(i) = ' ') or (buff(i) = ',') then do;
1155 8 i = i + 1;
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 31
1156 8 end;
else
1157 7 call print$opt$err;
/* Get ascii hex interval data */
1158 7 intrval = aschex(buff(i));
1159 7 i = i + 1;
1160 7 if (buff(i) <> rbracket) then do;
1162 8 intrval = shl(intrval,4);
1163 8 intrval = intrval + aschex(buff(i));
1164 8 end; /* Now convert to system ticks */
1165 7 intrval = intrval * sd.tickspersec;
1166 7 end;
1167 6 end;
1168 5 buff(0) = 0; /* Go back to menu*/
1169 5 specified = true; /* next time. */
1170 5 end;
1171 4 else do; /* No args's given*/
1172 5 call disp$mainhdr; /* Show the menu */
1173 5 chr = conin;
1174 5 end;
1175 4 validchar = false;
1176 4 do while not(validchar); /* Select action */
1177 5 validchar = true;
1178 5 if (chr = 'h') or (chr = 'H') then do;
1180 6 call display$help;
1181 6 end;
1182 5 else if (chr = 'm') or (chr = 'M') then do;
1184 6 call display$mem;
1185 6 end;
1186 5 else if (chr = 'o') or (chr = 'O') then do;
1188 6 call display$gen(version);
1189 6 end;
1190 5 else if (chr = 'e') or (chr = 'E') then do;
1192 6 call terminate; /* The Exit */
1193 6 end;
1194 5 else if (chr = 'p') or (chr = 'P') then do;
1196 6 call display$proc(0);
1197 6 end;
1198 5 else if (chr = 'q') or (chr = 'Q') then do;
1200 6 call display$queue;
1201 6 end;
1202 5 else if (chr = 'u') or (chr = 'U') then do;
1204 6 call display$proc(1);
1205 6 end;
1206 5 else do; /* Incorrect character was used */
1207 6 validchar = false;
1208 6 if not(specified) then do; /* Invalid char was from menu */
1210 7 if (chr = CR) then
1211 7 call print$buffer(.(' ->$'));
1212 7 call print$buffer(.(' Invalid Option.$'));
1213 7 call co(CR); /* Move left to beginning of line */
1214 7 call print$buffer(.(' ->$'));
1215 7 chr = conin; /* Get another char, hopefully a good one */
1216 7 end;
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 32
else /* Invalid char was from the command line */
1217 6 call print$opt$err;
1218 6 end; /* Incorrect char case */
1219 5 end; /* inner while loop - validchar */
1220 4 end; /* outer while loop - doscan */
1221 3 end;
1222 2 end plmstart;
1223 1 end status;
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 33
CROSS-REFERENCE LISTING
-----------------------
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
----- ------ ----- --------------------------------
127 0021H 1 ABORT. . . . . . . BYTE MEMBER(PD)
281 03CFH 68 ASCHEX . . . . . . PROCEDURE BYTE STACK=0004H 307 311 1158 1163
145 0000H 2 ATTACH . . . . . . WORD MEMBER(VCCB)
1108 BDOSVERSION. . . . LITERALLY 1115
2 BOOLEAN. . . . . . LITERALLY 859
145 000CH 1 BTMP . . . . . . . BYTE MEMBER(VCCB)
3 0000H 128 BUFF . . . . . . . BYTE ARRAY(128) EXTERNAL(0) 1129 1132 1135 1138 1140 1143 1145
1151 1153 1158 1160 1163 1168
130 001AH 2 BUFFER . . . . . . WORD MEMBER(QD) 916
173 0004H 2 BUFFERADR. . . . . WORD PARAMETER AUTOMATIC 174 175
123 0008H 2 CCB. . . . . . . . WORD MEMBER(XINIT)
104 0054H 2 CCB. . . . . . . . WORD MEMBER(SD) 991
118 CCBSTRUCTURE . . . LITERALLY 145
119 CCBTAIL1 . . . . . LITERALLY 145
120 CCBTAIL2 . . . . . LITERALLY 145
121 CFBUFP . . . . . . LITERALLY
121 CFCOMPC. . . . . . LITERALLY
121 CFCONOUT . . . . . LITERALLY
121 CFLISTCP . . . . . LITERALLY
121 CFSWITCHS. . . . . LITERALLY
121 CFVOUT . . . . . . LITERALLY
472 04AAH 1 CHAR . . . . . . . BYTE 478 479 574
196 0000H 1 CHAR . . . . . . . BYTE BASED(DATADDR) 205
165 0004H 1 CHAR . . . . . . . BYTE PARAMETER AUTOMATIC 166 167
155 0004H 1 CHAR . . . . . . . BYTE PARAMETER AUTOMATIC 156 157
683 0E2AH 1 CHR. . . . . . . . BYTE 687 688 832
277 00E5H 1 CHR. . . . . . . . BYTE 279
303 00E6H 1 CHR. . . . . . . . BYTE 304 305 307 311 315 316
883 14F1H 1 CHR. . . . . . . . BYTE 888 889 966
1113 14F7H 1 CHR. . . . . . . . BYTE 1138 1173 1178 1182 1186 1190 1194 1198 1202 1210 1215
303 00E7H 1 CHR1 . . . . . . . BYTE 308 309 311 312
258 0355H 36 CLEAR. . . . . . . PROCEDURE STACK=000EH 321 351 387 594 697 850 989
89 00D3H 6 CLEARSEQ . . . . . BYTE ARRAY(6) INITIAL 260 261
104 0090H 1 CMOD . . . . . . . BYTE MEMBER(SD) 1055
127 0020H 1 CNS. . . . . . . . BYTE MEMBER(PD) 497 543 729 776 991 1006
589 000EH 1 CNS. . . . . . . . BYTE MEMBER(SORTRECD) 808 826
468 0000H 1 CNS. . . . . . . . BYTE MEMBER(PDLIST) 497 557
591 000EH 1 CNS. . . . . . . . BYTE MEMBER(SHAREARRAY) 648 665 776
590 000EH 1 CNS. . . . . . . . BYTE MEMBER(SORTARRAY) 613 615 629 631 729 755 808 817
826
860 14EDH 1 CNT. . . . . . . . BYTE 863 870 873 878
602 0006H 1 CNT. . . . . . . . BYTE PARAMETER AUTOMATIC 603 606 608 621 625 628 629 631
632 633 634 673 675
155 013CH 19 CO . . . . . . . . PROCEDURE STACK=000AH 190 191 202 205 210 217 218 232
237 249 254 273 454 869 879 994 995 1025 1039 1040 1043 1044
1213
145 0006H 1 COLUMN . . . . . . BYTE MEMBER(VCCB)
152 012DH 15 CONIN. . . . . . . PROCEDURE BYTE STACK=0008H 279 304 308 312 478 574 687
832 888 966 1173 1215
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 34
127 0022H 2 CONMODE. . . . . . WORD MEMBER(PD)
162 015EH 15 CONSTAT. . . . . . PROCEDURE BYTE STACK=0008H 571 829 963
276 03BDH 18 CONSWAIT . . . . . PROCEDURE STACK=000EH 382 584 842 978 1103
683 0E27H 1 CONT . . . . . . . BYTE 722 723 725 742 773 774 775 794
883 14F0H 1 CONT . . . . . . . BYTE
145 0022H 2 COSLEEP. . . . . . WORD MEMBER(VCCB)
986 00B6H 2 COUNT. . . . . . . WORD 1064 1066 1069 1086 1088 1091 1095 1097 1100
419 00E8H 1 COUNT. . . . . . . BYTE
91 CR . . . . . . . . LITERALLY 190 278 305 309 345 477 482 568 597 599 627
638 663 676 686 691 887 892 960 1210 1213
189 01DCH 17 CRLF . . . . . . . PROCEDURE STACK=000EH 322 323 325 326 328 330 332 334
336 338 340 341 346 352 353 354 356 357 359 361 363 365
366 368 369 371 373 374 376 378 380 389 392 476 556 609
644 853 856 886 949 953 992 996 999 1004 1009 1022 1027 1031
1034 1037 1041 1045 1048 1053 1058 1061 1070 1083 1092 1101
122 CSMABORT . . . . . LITERALLY
122 CSMBACKGROUND. . . LITERALLY
122 CSMBUFFERED. . . . LITERALLY
122 CSMCTRLO . . . . . LITERALLY
122 CSMCTRLP . . . . . LITERALLY
122 CSMCTRLS . . . . . LITERALLY
122 CSMFILEFULL. . . . LITERALLY
122 CSMNOSWITCH. . . . LITERALLY
122 CSMPURGING . . . . LITERALLY
122 CSMSUSPEND . . . . LITERALLY
193 0004H 4 DATADDR. . . . . . POINTER PARAMETER AUTOMATIC 194 196 197 205
197 0004H 4 DATPTR . . . . . . STRUCTURE AT AUTOMATIC 206
104 004FH 1 DAYFILE. . . . . . BYTE MEMBER(SD) 1050
148 000EH 2 DBLK . . . . . . . WORD MEMBER(UDA)
2 DCL. . . . . . . . LITERALLY
148 000CH 2 DCNT . . . . . . . WORD MEMBER(UDA)
169 0180H 16 DELAY. . . . . . . PROCEDURE STACK=000AH 578 838 970
148 0012H 8 DFPASSWORD . . . . BYTE ARRAY(8) MEMBER(UDA)
591 000AH 1 DISK . . . . . . . BYTE MEMBER(SHAREARRAY) 649 666 777
858 16D6H 107 DISPLAYFLAGSTATUS. PROCEDURE STACK=0016H 948
984 1A91H 1006 DISPLAYGEN . . . . PROCEDURE STACK=001EH 1188
349 0552H 280 DISPLAYHELP. . . . PROCEDURE STACK=001CH 1180
215 0264H 44 DISPLAYHEXBYTE . . PROCEDURE STACK=0010H 222 223 234 461 872 998 1002 1003
1006 1033 1036 1047 1060 1069 1091 1100
220 0290H 23 DISPLAYHEXWORD . . PROCEDURE STACK=0016H 251 1024 1029 1081
681 10CEH 1499 DISPLAYMEM . . . . PROCEDURE STACK=002CH 1184
470 094DH 872 DISPLAYPROC. . . . PROCEDURE STACK=002EH 1196 1204
882 1741H 848 DISPLAYQUEUE . . . PROCEDURE STACK=0024H 1200
319 046FH 209 DISPMAINHDR. . . . PROCEDURE STACK=001CH 1172
592 0CB5H 53 DISPMEMHDR . . . . PROCEDURE STACK=0012H 698 837
416 07BEH 399 DISPRESOURCE . . . PROCEDURE STACK=0028H 563
396 06D5H 233 DISPSTATUS . . . . PROCEDURE STACK=001EH 562
104 006AH 2 DLR. . . . . . . . WORD MEMBER(SD) 437
148 0002H 2 DMAOFST. . . . . . WORD MEMBER(UDA)
148 0004H 2 DMASEG . . . . . . WORD MEMBER(UDA)
123 0002H 1 DOOR . . . . . . . BYTE MEMBER(XINIT)
1113 14F6H 1 DOSCAN . . . . . . BYTE 1124 1128
148 0000H 2 DPARAM . . . . . . WORD MEMBER(UDA) 511 518 519
847 0010H 2 DQ . . . . . . . . WORD MEMBER(QLIST) 913 939
130 0012H 2 DQ . . . . . . . . WORD MEMBER(QD) 913
983 0010H 16 DRIVLETTER . . . . BYTE ARRAY(16) DATA 994 1039 1043
104 006CH 2 DRL. . . . . . . . WORD MEMBER(SD) 439
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 35
127 0012H 1 DSK. . . . . . . . BYTE MEMBER(PD) 994
127 0018H 2 DVRACT . . . . . . WORD MEMBER(PD)
104 0044H 2 ENDSEG . . . . . . WORD MEMBER(SD)
148 0010H 1 ERRORMODE. . . . . BYTE MEMBER(UDA)
2 FALSE. . . . . . . LITERALLY 490 533 537 573 700 725 775 831 861 899 965
1125 1126 1175 1207
810 154CH FIND . . . . . . . LABEL
145 0004H 1 FLAG . . . . . . . BYTE MEMBER(VCCB)
858 0004H 1 FLAG . . . . . . . BYTE PARAMETER AUTOMATIC 860 865
127 0006H 2 FLAG . . . . . . . WORD MEMBER(PD) 501
142 0000H 3 FLAG . . . . . . . STRUCTURE BASED(FLAGPOINTER) 528
468 0009H 2 FLAG . . . . . . . WORD MEMBER(PDLIST) 501 560
88 00D2H 1 FLAGLEN. . . . . . BYTE INITIAL 531
140 0020H 4 FLAGPOINTER. . . . POINTER 141 142 528
141 0020H 4 FLAGPTR. . . . . . STRUCTURE AT 524 531 1123
847 001AH 1 FLAGS. . . . . . . BYTE MEMBER(QLIST) 928 948
130 0004H 2 FLAGS. . . . . . . WORD MEMBER(QD) 914 928
136 0006H 2 FLAGS. . . . . . . WORD MEMBER(MS)
104 0056H 2 FLAGS. . . . . . . WORD MEMBER(SD) 524
116 FLAGSTRUCTURE. . . LITERALLY 142
2 FOREVER. . . . . . LITERALLY
81 00C5H 8 FREENAME . . . . . BYTE ARRAY(8) INITIAL 750
12 0000H 1 FUNC . . . . . . . BYTE PARAMETER 13
8 0000H 1 FUNC . . . . . . . BYTE PARAMETER 9
148 0006H 1 FUNC . . . . . . . BYTE MEMBER(UDA)
16 0000H 1 FUNC . . . . . . . BYTE PARAMETER 17
4 0000H 1 FUNC . . . . . . . BYTE PARAMETER 5
186 01CDH 15 GETCURRPD. . . . . PROCEDURE POINTER STACK=0008H 990
302 0413H 92 GETINTRVAL . . . . PROCEDURE WORD STACK=000CH 483 692 893
718 11B3H GETMDS . . . . . . LABEL
707 1154H GETMEMOWNERS . . . LABEL
493 09B5H GETPDS . . . . . . LABEL
903 17A6H GETQUEUES. . . . . LABEL
759 1354H GETSHARED. . . . . LABEL
183 01BEH 15 GETSYSDAT. . . . . PROCEDURE POINTER STACK=0008H 1122
177 01A0H 15 GETVERSION . . . . PROCEDURE WORD STACK=0008H 1114
214 0000H 16 HEXDIGIT . . . . . BYTE ARRAY(16) DATA 217 218
HIGH . . . . . . . BUILTIN 222 1115 1121
264 0379H 36 HOME . . . . . . . PROCEDURE STACK=000EH 320 350 386 552 593 604 696 849
901 988
90 00D9H 6 HOMESEQ. . . . . . BYTE ARRAY(6) INITIAL 266 267
682 0E22H 1 I. . . . . . . . . BYTE 719 720 770 771 803 804 812 813 821 822
473 04AFH 1 I. . . . . . . . . BYTE 498 499 504 505 507 513 517 521 541
271 00E4H 1 I. . . . . . . . . BYTE 272
265 00E3H 1 I. . . . . . . . . BYTE 266 267
259 00E2H 1 I. . . . . . . . . BYTE 260 261
243 00E1H 1 I. . . . . . . . . BYTE 248 253
195 00DFH 1 I. . . . . . . . . BYTE 201 204 209
860 14ECH 1 I. . . . . . . . . BYTE 862 864 865 872 876 878
226 00E0H 1 I. . . . . . . . . BYTE 231 236
1107 14F3H 1 I. . . . . . . . . BYTE 1131 1132 1133 1135 1136 1138 1139 1140 1141 1143 1145 1148
1151 1153 1155 1158 1159 1160 1163
21 0000H 2 I. . . . . . . . . WORD 22 23 24 25 26 27 28 29 30 31 32 33
34 35 36 37 38 39 40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55 56 57 58 59 60 61
62 63 64 65 66 67 68 69 70 71 72 73 74 75
76
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 36
883 14F2H 1 I. . . . . . . . . BYTE 906 907 918 919 921 922 925 926 933 935 936 937
938 939 943 947 948 959
142 0002H 1 IGNORE . . . . . . BYTE MEMBER(FLAG)
8 0000H 2 INFO . . . . . . . WORD PARAMETER 10
16 0000H 2 INFO . . . . . . . WORD PARAMETER 18
4 0000H 2 INFO . . . . . . . WORD PARAMETER 6
12 0000H 2 INFO . . . . . . . WORD PARAMETER 14
86 0002H 2 INTRVAL. . . . . . WORD 483 578 692 838 893 970 1127 1158 1162 1163 1165
241 0006H 1 JUSTIFY. . . . . . BYTE PARAMETER AUTOMATIC 242 247 252
225 0006H 1 JUSTIFY. . . . . . BYTE PARAMETER AUTOMATIC 226 230 235
193 000AH 1 JUSTIFY. . . . . . BYTE PARAMETER AUTOMATIC 195 200 208
603 0E21H 1 K. . . . . . . . . BYTE 610 612 613 615 616 617 618 621 645 647 648 649
650 651 652 655 675
473 04ACH 1 K. . . . . . . . . BYTE 526 530 532 536 554 555 557 559 560 561 562 563
567
83 00CEH 1 LBRACKET . . . . . BYTE INITIAL 1135
123 000AH 2 LCB. . . . . . . . WORD MEMBER(XINIT)
104 0086H 4 LCB. . . . . . . . WORD ARRAY(2) MEMBER(SD)
124 LCBSTRUCTURE . . . LITERALLY
104 008AH 1 LCKMAX . . . . . . BYTE MEMBER(SD)
127 0014H 1 LDSK . . . . . . . BYTE MEMBER(PD) 777
589 000CH 2 LEN. . . . . . . . WORD MEMBER(SORTRECD) 806 824
591 000CH 2 LEN. . . . . . . . WORD MEMBER(SHAREARRAY) 652 669 781
193 0008H 1 LEN. . . . . . . . BYTE PARAMETER AUTOMATIC 195 198 201 204 209
590 000CH 2 LEN. . . . . . . . WORD MEMBER(SORTARRAY) 618 634 728 754 806 815 824
139 0002H 2 LEN. . . . . . . . WORD MEMBER(SAT) 1078
136 0004H 2 LENGTH . . . . . . WORD MEMBER(MS)
133 0004H 2 LENGTH . . . . . . WORD MEMBER(MD) 728 754 781
92 LF . . . . . . . . LITERALLY 191 273 278 305 309 345 477 482 568 597 599
627 638 663 676 686 691 887 892 960
133 0000H 2 LINK . . . . . . . WORD MEMBER(MD) 757
127 0000H 2 LINK . . . . . . . WORD MEMBER(PD) 1067 1089 1098
136 0000H 2 LINK . . . . . . . WORD MEMBER(MS) 733 736 737 739 785 788 789 791
130 0000H 2 LINK . . . . . . . WORD MEMBER(QD) 930
469 0030H 128 LINKLIST . . . . . WORD ARRAY(64) 702 711 720 764 771
2 LIT. . . . . . . . LITERALLY 2 91 92 99 100 101 106 107 108 109 110
111 112 113 114 115 116 117 118 119 120 121 122 123 124
1108 1109 1110
470 0004H 1 LNKFIELD . . . . . BYTE PARAMETER AUTOMATIC 471 495
LOW. . . . . . . . BUILTIN 223 426 456 461 1115
127 0024H 1 LST. . . . . . . . BYTE MEMBER(PD) 1002 1003
104 0052H 2 LUL. . . . . . . . WORD MEMBER(SD)
127 0015H 1 LUSER. . . . . . . BYTE MEMBER(PD) 778
603 0E1FH 1 M. . . . . . . . . BYTE 608 610 643 645
104 0076H 2 MAL. . . . . . . . WORD MEMBER(SD)
136 0008H 2 MAU. . . . . . . . WORD MEMBER(MS) 726 735 737 738 741 779 787 789 790 793
145 0010H 2 MAXBUFSIZ. . . . . WORD MEMBER(VCCB) 1024
79 00C3H 1 MAXMD. . . . . . . BYTE INITIAL 723 748 774
78 00C2H 1 MAXPD. . . . . . . BYTE INITIAL 493 701 708 763
80 00C4H 1 MAXQFLAGS. . . . . BYTE INITIAL 864
82 00CDH 1 MAXQUEUES. . . . . BYTE INITIAL 905
133 0000H 10 MD . . . . . . . . STRUCTURE BASED(MDPOINTER) 727 728 752 754 757 780 781
1073
682 0E23H 1 MDCNT. . . . . . . BYTE 718 723 724 727 728 729 731 744 748 750 752 753
754 755 756 801 828 836
131 0014H 4 MDPOINTER. . . . . POINTER 132 133 727 728 752 754 757 780 781 1073
132 0014H 4 MDPTR. . . . . . . STRUCTURE AT 726 747 748 757 779 1072 1123
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 37
93 MDSTRUCTURE. . . . LITERALLY 133
104 0058H 2 MDUL . . . . . . . WORD MEMBER(SD) 1094
127 0016H 2 MEM. . . . . . . . WORD MEMBER(PD) 495 709 721 772
104 005AH 2 MFL. . . . . . . . WORD MEMBER(SD) 747
145 0008H 1 MIMIC. . . . . . . BYTE MEMBER(VCCB)
104 004CH 2 MMP. . . . . . . . WORD MEMBER(SD) 1029
987 00BAH 2 MODE . . . . . . . WORD 1011 1012 1014
104 0046H 1 MODULEMAP. . . . . BYTE MEMBER(SD)
4 0000H MON1 . . . . . . . PROCEDURE EXTERNAL(1) STACK=0000H 150 157 167 171 175 181
8 0000H MON2 . . . . . . . PROCEDURE BYTE EXTERNAL(2) STACK=0000H 153 160 163
12 0000H MON3 . . . . . . . PROCEDURE WORD EXTERNAL(3) STACK=0000H 178
16 0000H MON4 . . . . . . . PROCEDURE POINTER EXTERNAL(4) STACK=0000H 184 187
1110 MPMPRODUCT . . . . LITERALLY 1115
104 0040H 2 MPMSEG . . . . . . WORD MEMBER(SD)
104 007CH 2 MPMVERNUM. . . . . WORD MEMBER(SD)
136 0000H 10 MS . . . . . . . . STRUCTURE BASED(MSPOINTER) 726 733 735 736 737 738 739
741 779 785 787 788 789 790 791 793
847 000CH 2 MSGCNT . . . . . . WORD MEMBER(QLIST) 911 938
130 0016H 2 MSGCNT . . . . . . WORD MEMBER(QD) 911
847 000AH 2 MSGLEN . . . . . . WORD MEMBER(QLIST) 910 937
130 000EH 2 MSGLEN . . . . . . WORD MEMBER(QD) 910
130 0018H 2 MSGOUT . . . . . . WORD MEMBER(QD)
145 0009H 1 MSOURCE. . . . . . BYTE MEMBER(VCCB)
134 0018H 4 MSPOINTER. . . . . POINTER 135 136 726 733 735 736 737 738 739 741 779
785 787 788 789 790 791 793
135 0018H 4 MSPTR. . . . . . . STRUCTURE AT 721 736 739 772 788 791 1123
94 MSSTRUCTURE. . . . LITERALLY 136
148 0011H 1 MULTCNT. . . . . . BYTE MEMBER(UDA)
473 04ADH 1 N. . . . . . . . . BYTE 491 493 494 497 499 501 502 503 506 511 518 519
523 536 543 546 549 554 565 567 579
683 00B0H 2 N. . . . . . . . . INTEGER 704 711 759 764
883 00B4H 2 N. . . . . . . . . INTEGER
127 0008H 8 NAME . . . . . . . BYTE ARRAY(8) MEMBER(PD) 499 731 783 919 941 945
847 0000H 8 NAME . . . . . . . BYTE ARRAY(8) MEMBER(QLIST) 907 935
590 0000H 8 NAME . . . . . . . BYTE ARRAY(8) MEMBER(SORTARRAY) 612 628 731 750 804 813
822
468 0001H 8 NAME . . . . . . . BYTE ARRAY(8) MEMBER(PDLIST) 499 559
591 0000H 8 NAME . . . . . . . BYTE ARRAY(8) MEMBER(SHAREARRAY) 647 664 783
589 0000H 8 NAME . . . . . . . BYTE ARRAY(8) MEMBER(SORTRECD) 804 822
130 0006H 8 NAME . . . . . . . BYTE ARRAY(8) MEMBER(QD) 447 451 907
123 0006H 1 NCCB . . . . . . . BYTE MEMBER(XINIT)
104 0049H 1 NCCB . . . . . . . BYTE MEMBER(SD)
145 0007H 1 NCHAR. . . . . . . BYTE MEMBER(VCCB)
104 0085H 1 NCIODEV. . . . . . BYTE MEMBER(SD)
104 0047H 1 NCNS . . . . . . . BYTE MEMBER(SD) 1033
104 0083H 1 NCONDEV. . . . . . BYTE MEMBER(SD) 1002
127 001DH 1 NET. . . . . . . . BYTE MEMBER(PD)
130 0002H 1 NET. . . . . . . . BYTE MEMBER(QD)
104 004AH 1 NFLAGS . . . . . . BYTE MEMBER(SD) 532 1060
123 0007H 1 NLST . . . . . . . BYTE MEMBER(XINIT)
104 0048H 1 NLST . . . . . . . BYTE MEMBER(SD) 1036
104 0084H 1 NLSTDEV. . . . . . BYTE MEMBER(SD)
847 0008H 2 NMSGS. . . . . . . WORD MEMBER(QLIST) 909 936
130 0010H 2 NMSGS. . . . . . . WORD MEMBER(QD) 909
2 NO . . . . . . . . LITERALLY
473 04AEH 1 NOTFOUND . . . . . BYTE 525 527 533 537
419 00E9H 1 NOTFOUND . . . . . BYTE
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 38
847 000EH 2 NQ . . . . . . . . WORD MEMBER(QLIST) 912 943
130 0014H 2 NQ . . . . . . . . WORD MEMBER(QD) 912
104 004EH 1 NSLAVES. . . . . . BYTE MEMBER(SD)
281 0004H 1 NUM. . . . . . . . BYTE PARAMETER AUTOMATIC 282 283 285 288 290 293 295 297
300
169 0004H 2 NUM. . . . . . . . WORD PARAMETER AUTOMATIC 170 171
139 0004H 1 NUMALLOCS. . . . . BYTE MEMBER(SAT) 1077
270 0004H 1 NUMLINES . . . . . BYTE PARAMETER AUTOMATIC 271 272
123 0005H 1 NVCNS. . . . . . . BYTE MEMBER(XINIT)
418 002EH 2 OFFS . . . . . . . WORD
126 0000H 2 OFFSET . . . . . . WORD MEMBER(PDPTR) 492 493 528 547 707 708 711 714 720
724 762 763 764 766 771 916 917 939 940 943 944 1063 1065
1067 1085 1087 1089 1094 1096 1098
129 0000H 2 OFFSET . . . . . . WORD MEMBER(QDPTR) 446 450 904 905 930
197 0000H 2 OFFSET . . . . . . WORD MEMBER(DATPTR) 206
147 0000H 2 OFFSET . . . . . . WORD MEMBER(UDAPTR) 510 516
1112 0000H 2 OFFSET . . . . . . WORD MEMBER(VERSSTRPTR)
144 0000H 2 OFFSET . . . . . . WORD MEMBER(VCCBPTR) 991
141 0000H 2 OFFSET . . . . . . WORD MEMBER(FLAGPTR) 524 531
138 0000H 2 OFFSET . . . . . . WORD MEMBER(SATPTR) 1074 1079
135 0000H 2 OFFSET . . . . . . WORD MEMBER(MSPTR) 721 736 739 772 788 791
132 0000H 2 OFFSET . . . . . . WORD MEMBER(MDPTR) 726 747 748 757 779 1072
123 0000H 2 OFFSET . . . . . . WORD MEMBER(XINITPTR)
103 0000H 2 OFFSET . . . . . . WORD MEMBER(SYSDATPTR)
104 008BH 1 OPMAX. . . . . . . BYTE MEMBER(SD)
127 001CH 1 ORG. . . . . . . . BYTE MEMBER(PD)
130 0003H 1 ORG. . . . . . . . BYTE MEMBER(QD)
1109 OSPRODUCT. . . . . LITERALLY 1115
847 0012H 8 OWNER. . . . . . . BYTE ARRAY(8) MEMBER(QLIST) 919 922 926 947
127 001EH 2 PARENT . . . . . . WORD MEMBER(PD)
20 0002H 285 PATCH. . . . . . . PROCEDURE STACK=0002H
145 000AH 1 PC . . . . . . . . BYTE MEMBER(VCCB)
101 PCM11. . . . . . . LITERALLY
101 PCMCTLC. . . . . . LITERALLY
101 PCMCTLO. . . . . . LITERALLY
101 PCMCTLS. . . . . . LITERALLY
101 PCMROUT. . . . . . LITERALLY
101 PCMRSX . . . . . . LITERALLY
127 0000H 48 PD . . . . . . . . STRUCTURE BASED(PDPOINTER) 495 497 499 501 502 503 504
506 509 515 543 547 709 714 721 729 731 766 772 776 777
778 783 919 941 945 991 994 998 1002 1003 1006 1067 1089 1098
590 000AH 2 PD . . . . . . . . WORD MEMBER(SORTARRAY) 616 632 724 753 807 816 825
589 000AH 2 PD . . . . . . . . WORD MEMBER(SORTRECD) 807 825
142 0000H 2 PD . . . . . . . . WORD MEMBER(FLAG) 528
682 0E24H 1 PDCNT. . . . . . . BYTE 701 702 705 708 712 716 719 760 763 765 768 770
148 001AH 1 PDCNT. . . . . . . BYTE MEMBER(UDA)
97 PDHDR. . . . . . . LITERALLY 127
468 00EAH 960 PDLIST . . . . . . STRUCTURE ARRAY(64) 497 499 501 502 503 506 511 518 519
523 536 543 557 559 560 561 562 563
125 000CH 4 PDPOINTER. . . . . POINTER 126 127 495 497 499 501 502 503 504 506 509
515 543 547 709 714 721 729 731 766 772 776 777 778 783
919 941 945 990 991 994 998 1002 1003 1006 1067 1089 1098
126 000CH 4 PDPTR. . . . . . . STRUCTURE AT 492 493 528 547 707 708 711 714 720 724
762 763 764 766 771 916 917 939 940 943 944 1063 1065 1067
1085 1087 1089 1094 1096 1098 1123
98 PDSTRUCTURE. . . . LITERALLY 127
100 PFACTIVE . . . . . LITERALLY
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 39
100 PFCHILDABORT . . . LITERALLY
100 PFCTLC . . . . . . LITERALLY
100 PFCTLD . . . . . . LITERALLY
100 PFKEEP . . . . . . LITERALLY
100 PFKERNAL . . . . . LITERALLY
100 PFNOCTLS . . . . . LITERALLY
100 PFPURE . . . . . . LITERALLY
100 PFRAW. . . . . . . LITERALLY
100 PFRESOURCE . . . . LITERALLY
100 PFSYS. . . . . . . LITERALLY
100 PFTABLE. . . . . . LITERALLY
100 PFTEMPKEEP . . . . LITERALLY
133 0006H 2 PLIST. . . . . . . WORD MEMBER(MD)
1106 1E7FH 659 PLMSTART . . . . . PROCEDURE PUBLIC STACK=0032H
104 006EH 2 PLR. . . . . . . . WORD MEMBER(SD) 441
96 PNAMSIZ. . . . . . LITERALLY 447 451 498 559 612 628 647 664 782 906 918
921 925 935 941 945 947
127 002CH 2 PRET . . . . . . . WORD MEMBER(PD)
859 14EBH 1 PREV . . . . . . . BYTE 861 867 874
173 0190H 16 PRINTBUFFER. . . . PROCEDURE STACK=000AH 278 345 477 482 558 568 595 596
597 598 599 600 614 620 627 630 638 639 654 663 676 677
686 691 851 852 854 855 887 892 934 942 946 951 952 954
955 960 1015 1016 1018 1030 1051 1052 1056 1057 1082 1117 1211 1212
1214
225 02A7H 87 PRINTHEXBYTE . . . PROCEDURE STACK=001AH 426 456 557 561 615 631 648 649
650 665 666 667
241 02FEH 87 PRINTHEXWORD . . . PROCEDURE STACK=0020H 430 560 616 617 618 632 633 634
651 652 668 669 936 937 938
193 01EDH 119 PRINTINFIELD . . . PROCEDURE STACK=0018H 324 327 329 331 333 335 337 339
342 355 358 360 362 364 367 370 372 375 377 379 388 390
391 393 394 401 402 403 404 405 406 407 408 409 410 411
414 423 425 429 432 433 436 438 440 442 443 447 451 457
460 463 466 559 612 628 647 664 935 941 945 947 993 997
1000 1005 1010 1023 1028 1032 1035 1038 1042 1046 1049 1054 1059 1062
1071 1084 1093
344 0540H 18 PRINTOPTERR. . . . PROCEDURE STACK=0012H 1137 1142 1150 1157 1217
554 0BA9H PRINTPDS . . . . . LABEL
933 18F7H PRINTQDS . . . . . LABEL
848 16A9H 45 PRINTQHDR. . . . . PROCEDURE STACK=0012H 897 973
602 0CEAH 996 PRINTSORTED. . . . PROCEDURE STACK=0028H 828
127 0005H 1 PRIOR. . . . . . . BYTE MEMBER(PD) 502
468 000BH 1 PRIOR. . . . . . . BYTE MEMBER(PDLIST) 502 561
385 066AH 107 PRNTHEADER . . . . PROCEDURE STACK=001CH 487 580
99 PSCIOWAIT. . . . . LITERALLY
99 PSDELAY. . . . . . LITERALLY
99 PSDQ . . . . . . . LITERALLY
99 PSFLAGWAIT . . . . LITERALLY
99 PSNQ . . . . . . . LITERALLY
99 PSPOLL . . . . . . LITERALLY
99 PSRUN. . . . . . . LITERALLY
99 PSSLEEP. . . . . . LITERALLY
99 PSSWAP . . . . . . LITERALLY
99 PSTERM . . . . . . LITERALLY
104 005CH 2 PUL. . . . . . . . WORD MEMBER(SD) 1085
603 0E20H 1 Q. . . . . . . . . BYTE 611 619 646 653
145 0020H 2 QBUFF. . . . . . . WORD MEMBER(VCCB)
130 0000H 28 QD . . . . . . . . STRUCTURE BASED(QDPOINTER) 447 451 907 909 910 911 912
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 40
913 914 916 928 930
883 14EFH 1 QDCNT. . . . . . . BYTE 900 905 907 909 910 911 912 913 919 922 926 928
929 933 956 957 959 971
128 0010H 4 QDPOINTER. . . . . POINTER 129 130 447 451 907 909 910 911 912 913 914
916 928 930
129 0010H 4 QDPTR. . . . . . . STRUCTURE AT 446 450 904 905 930 1123
107 QDSTRUCTURE. . . . LITERALLY 130
114 QFDEV. . . . . . . LITERALLY
110 QFHIDE . . . . . . LITERALLY
109 QFKEEP . . . . . . LITERALLY
108 QFMX . . . . . . . LITERALLY
113 QFRPL. . . . . . . LITERALLY
111 QFRSP. . . . . . . LITERALLY
112 QFTABLE. . . . . . LITERALLY
847 0E2BH 1728 QLIST. . . . . . . STRUCTURE ARRAY(64) 907 909 910 911 912 913 919 922 926
928 935 936 937 938 939 943 947 948
104 0074H 2 QLR. . . . . . . . WORD MEMBER(SD) 904
104 0060H 8 QMAU . . . . . . . WORD ARRAY(4) MEMBER(SD) 1072
106 QNAMSIZ. . . . . . LITERALLY 130
145 001EH 2 QPBBUFFPTR . . . . WORD MEMBER(VCCB)
145 0018H 1 QPBFLAGS . . . . . BYTE MEMBER(VCCB)
145 001CH 2 QPBNMSGS . . . . . WORD MEMBER(VCCB)
145 001AH 2 QPBQADDR . . . . . WORD MEMBER(VCCB)
145 0019H 1 QPBRESRVD. . . . . BYTE MEMBER(VCCB)
115 QPBSTRUCTURE . . . LITERALLY
986 00B8H 2 QSIZE. . . . . . . WORD 1075 1078 1081
145 0002H 2 QUEUE. . . . . . . WORD MEMBER(VCCB)
104 005EH 2 QUL. . . . . . . . WORD MEMBER(SD) 1063
145 0028H 2 R1 . . . . . . . . WORD MEMBER(VCCB)
145 002AH 2 R2 . . . . . . . . WORD MEMBER(VCCB)
165 016DH 19 RAWCO. . . . . . . PROCEDURE STACK=000AH 261 267
159 014FH 15 RAWCONIN . . . . . PROCEDURE BYTE STACK=0008H
84 00CFH 1 RBRACKET . . . . . BYTE INITIAL 1143 1151 1160
149 011FH 14 REBOOT . . . . . . PROCEDURE STACK=0008H 1118
85 00D0H 1 REPEAT . . . . . . BYTE 481 488 573 576 690 699 831 834 891 898 965 968
1125 1147
145 000DH 1 RESERVD. . . . . . BYTE MEMBER(VCCB)
127 0028H 4 RESERVD. . . . . . BYTE ARRAY(4) MEMBER(PD)
468 000DH 2 RESOURCE . . . . . WORD MEMBER(PDLIST) 506 511 518 519 523 536 543 563
123 0003H 2 RESRVD1. . . . . . BYTE ARRAY(2) MEMBER(XINIT)
104 0068H 2 RLR. . . . . . . . WORD MEMBER(SD) 435
104 0042H 2 RSPSEG . . . . . . WORD MEMBER(SD)
416 0004H 2 RSRCE. . . . . . . WORD PARAMETER AUTOMATIC 418 426 430 435 437 439 441 446
450 455 456 461
139 0000H 5 SAT. . . . . . . . STRUCTURE BASED(SATPOINTER) 1074 1076 1077 1078 1079
137 001CH 4 SATPOINTER . . . . POINTER 138 139 1076 1077 1078
138 001CH 4 SATPTR . . . . . . STRUCTURE AT 1073 1074 1079 1123
95 SATSTRUCTURE . . . LITERALLY 139
683 00B2H 2 SAVMAU . . . . . . WORD 735 737 738 741 787 789 790 793
683 0E28H 1 SCDCNT . . . . . . BYTE 761 774 776 777 778 780 781 783 796 828
602 0004H 1 SCNT . . . . . . . BYTE PARAMETER AUTOMATIC 603 636 641 643 655 659 661 664
665 666 667 668 669 671 673 675
127 002EH 2 SCRATCH. . . . . . WORD MEMBER(PD)
104 0000H 145 SD . . . . . . . . STRUCTURE BASED(SYSDATPOINTER) 316 435 437 439 441 492 524
532 707 747 762 904 991 1002 1029 1033 1036 1039 1043 1047 1050
1055 1060 1063 1072 1085 1094 1165
105 0000H 1 SDBYTE . . . . . . BYTE BASED(SYSDATPOINTER) ARRAY(1)
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 41
148 0008H 2 SEARCHA. . . . . . WORD MEMBER(UDA)
148 000AH 2 SEARCHABASE. . . . WORD MEMBER(UDA)
148 0007H 1 SEARCHL. . . . . . BYTE MEMBER(UDA)
126 0002H 2 SEGMENT. . . . . . WORD MEMBER(PDPTR) 1123
123 0002H 2 SEGMENT. . . . . . WORD MEMBER(XINITPTR)
197 0002H 2 SEGMENT. . . . . . WORD MEMBER(DATPTR)
147 0002H 2 SEGMENT. . . . . . WORD MEMBER(UDAPTR) 509 515
144 0002H 2 SEGMENT. . . . . . WORD MEMBER(VCCBPTR) 1123
141 0002H 2 SEGMENT. . . . . . WORD MEMBER(FLAGPTR) 1123
138 0002H 2 SEGMENT. . . . . . WORD MEMBER(SATPTR) 1073 1123
135 0002H 2 SEGMENT. . . . . . WORD MEMBER(MSPTR) 1123
132 0002H 2 SEGMENT. . . . . . WORD MEMBER(MDPTR) 1123
103 0002H 2 SEGMENT. . . . . . WORD MEMBER(SYSDATPTR) 1123
1112 0002H 2 SEGMENT. . . . . . WORD MEMBER(VERSSTRPTR)
129 0002H 2 SEGMENT. . . . . . WORD MEMBER(QDPTR) 1123
127 0025H 1 SF3. . . . . . . . BYTE MEMBER(PD)
127 0026H 1 SF4. . . . . . . . BYTE MEMBER(PD)
127 0027H 1 SF5. . . . . . . . BYTE MEMBER(PD)
591 096FH 1200 SHAREARRAY . . . . STRUCTURE ARRAY(80) 647 648 649 650 651 652 664 665 666
667 668 669 776 777 778 780 781 783
SHL. . . . . . . . BUILTIN 311 1162
SHR. . . . . . . . BUILTIN 217
SIZE . . . . . . . BUILTIN 991 1074 1079
270 039DH 32 SKIPLINES. . . . . PROCEDURE STACK=0010H 553 605 902
104 0070H 2 SLR. . . . . . . . WORD MEMBER(SD) 762
590 04BFH 1200 SORTARRAY. . . . . STRUCTURE ARRAY(80) 612 613 615 616 617 618 628 629 631
632 633 634 724 727 728 729 731 750 752 753 754 755 802
804 806 807 808 810 811 813 815 816 817 820 822 824 825
826
801 14D8H SORTMDS. . . . . . LABEL
589 04B0H 15 SORTRECD . . . . . STRUCTURE 802 804 806 807 808 810 820 822 824 825 826
104 0008H 56 SPACE. . . . . . . WORD ARRAY(28) MEMBER(SD)
87 00D1H 1 SPECIFIED. . . . . BYTE 381 474 583 684 841 884 977 1102 1126 1169 1208
104 004BH 1 SRCHDISK . . . . . BYTE MEMBER(SD) 1043
591 0008H 2 START. . . . . . . WORD MEMBER(SHAREARRAY) 651 668 780
590 0008H 2 START. . . . . . . WORD MEMBER(SORTARRAY) 617 633 727 752 802 810 811 820
589 0008H 2 START. . . . . . . WORD MEMBER(SORTRECD) 802 810 820
139 0000H 2 START. . . . . . . WORD MEMBER(SAT) 1076
136 0002H 2 START. . . . . . . WORD MEMBER(MS)
133 0002H 2 START. . . . . . . WORD MEMBER(MD) 727 752 780 1073
145 0005H 1 STARTCOL . . . . . BYTE MEMBER(VCCB)
127 0004H 1 STAT . . . . . . . BYTE MEMBER(PD) 503 504
468 000CH 1 STAT . . . . . . . BYTE MEMBER(PDLIST) 503 562 563
396 0004H 1 STAT . . . . . . . BYTE PARAMETER AUTOMATIC 397 398 400
145 000EH 2 STATE. . . . . . . WORD MEMBER(VCCB) 1011
416 0006H 1 STATS. . . . . . . BYTE PARAMETER AUTOMATIC 417 420 422
1 0002H STATUS . . . . . . PROCEDURE STACK=0000H
104 0000H 8 SUPMOD . . . . . . WORD ARRAY(4) MEMBER(SD)
102 0004H 4 SYSDATPOINTER. . . POINTER 103 104 105 316 435 437 439 441 492 524 532
707 747 762 904 991 1002 1029 1033 1036 1039 1043 1047 1050 1055
1060 1063 1072 1085 1094 1122 1165
103 0004H 4 SYSDATPTR. . . . . STRUCTURE AT 1123
104 008CH 4 SYSLTOT. . . . . . WORD ARRAY(2) MEMBER(SD)
2 TAB. . . . . . . . LITERALLY
683 0E29H 1 TEMP . . . . . . . BYTE 695 699 700
472 04ABH 1 TEMP . . . . . . . BYTE 486 488 490
883 14EEH 1 TEMP . . . . . . . BYTE 896 898 899
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 42
104 0050H 1 TEMPDISK . . . . . BYTE MEMBER(SD) 1039
180 01AFH 15 TERMINATE. . . . . PROCEDURE STACK=0008H 347 383 585 843 979 1104 1192
104 0072H 2 THRDRT . . . . . . WORD MEMBER(SD) 492 707
127 0002H 2 THREAD . . . . . . WORD MEMBER(PD) 547 714 766
303 002CH 2 TICDELAY . . . . . WORD 316 317
123 0000H 1 TICK . . . . . . . BYTE MEMBER(XINIT)
104 0051H 1 TICKSPERSEC. . . . BYTE MEMBER(SD) 316 1047 1165
123 0001H 1 TICKSSEC . . . . . BYTE MEMBER(XINIT)
104 007EH 4 TOD. . . . . . . . WORD ARRAY(2) MEMBER(SD)
104 0082H 1 TOD_SEC. . . . . . BYTE MEMBER(SD)
2 TRUE . . . . . . . LITERALLY 481 486 525 690 695 722 742 773 794 874 891
896 1124 1147 1169 1177
127 0010H 2 UDA. . . . . . . . WORD MEMBER(PD) 509 515
148 0000H 27 UDA. . . . . . . . STRUCTURE BASED(UDAPOINTER) 511 518 519
146 0028H 4 UDAPOINTER . . . . POINTER 147 148 511 518 519
147 0028H 4 UDAPTR . . . . . . STRUCTURE AT 509 510 515 516
117 UDASTRUCTURE . . . LITERALLY 148
133 0008H 2 UNUSED . . . . . . WORD MEMBER(MD)
127 0013H 1 USER . . . . . . . BYTE MEMBER(PD) 998
591 000BH 1 USER . . . . . . . BYTE MEMBER(SHAREARRAY) 650 667 778
145 0024H 2 USLEEP . . . . . . WORD MEMBER(VCCB)
241 0004H 2 VAL. . . . . . . . WORD PARAMETER AUTOMATIC 242 251
225 0004H 1 VAL. . . . . . . . BYTE PARAMETER AUTOMATIC 226 234
1107 14F5H 1 VALIDCHAR. . . . . BYTE 1175 1176 1177 1207
220 0004H 2 VALUE. . . . . . . WORD PARAMETER AUTOMATIC 221 222 223
215 0004H 1 VALUE. . . . . . . BYTE PARAMETER AUTOMATIC 216 217 218
145 000BH 1 VC . . . . . . . . BYTE MEMBER(VCCB)
145 0000H 44 VCCB . . . . . . . STRUCTURE BASED(VCCBPOINTER) 991 1011 1024
143 0024H 4 VCCBPOINTER. . . . POINTER 144 145 1011 1024
144 0024H 4 VCCBPTR. . . . . . STRUCTURE AT 991 1123
145 0016H 2 VCMXQ. . . . . . . WORD MEMBER(VCCB)
1107 00BCH 2 VER. . . . . . . . WORD 1114 1115 1121
104 007AH 2 VERNUM . . . . . . WORD MEMBER(SD)
984 0004H 1 VERS . . . . . . . BYTE PARAMETER AUTOMATIC 985 1001 1007 1020
104 0078H 2 VERSION. . . . . . WORD MEMBER(SD)
1107 14F4H 1 VERSION. . . . . . BYTE 1121 1188
1111 00BEH 4 VERSSTRPOINTER . . POINTER 1112
1112 00BEH 4 VERSSTRPTR . . . . STRUCTURE AT
145 0012H 2 VINQ . . . . . . . WORD MEMBER(VCCB)
145 0014H 2 VOUTQ. . . . . . . WORD MEMBER(VCCB)
145 0026H 2 VSLEEP . . . . . . WORD MEMBER(VCCB)
127 001AH 2 WAIT . . . . . . . WORD MEMBER(PD) 506
241 0008H 1 WIDTH. . . . . . . BYTE PARAMETER AUTOMATIC 242 244 248 253
225 0008H 1 WIDTH. . . . . . . BYTE PARAMETER AUTOMATIC 226 227 231 236
193 000CH 1 WIDTH. . . . . . . BYTE PARAMETER AUTOMATIC 195 198 201 209
683 0E25H 1 X. . . . . . . . . BYTE 730 731 749 750 782 783 801 802 804 806 807 808
809
123 0000H 12 XINIT. . . . . . . STRUCTURE BASED(XINITPOINTER)
123 XINITOFFSET. . . . LITERALLY
123 0008H 4 XINITPOINTER . . . POINTER 123
123 0008H 4 XINITPTR . . . . . STRUCTURE AT
683 0E26H 1 Y. . . . . . . . . BYTE 809 810 811 813 815 816 817 818 820 822 824 825
826
MODULE INFORMATION:
PL/M-86 COMPILER CCP/M-86 1.0 SYSTAT PROCESS - TRANSIENT PAGE 43
CODE AREA SIZE = 2112H 8466D
CONSTANT AREA SIZE = 09B5H 2485D
VARIABLE AREA SIZE = 14F8H 5368D
MAXIMUM STACK SIZE = 0032H 50D
1774 LINES READ
0 PROGRAM ERROR(S)
END OF PL/M-86 COMPILATION