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

1396 lines
75 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 PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 1
VAX/VMS PL/M-86 V1.0 COMPILATION OF MODULE PIN
OBJECT MODULE PLACED IN PIN.OBJ
COMPILER INVOKED BY: PLM86 PIN.PLM OPTIMIZE(3) DEBUG XREF
$title ('PIN RSP - reads characters from keyboard')
$set (debug=0)
$compact
1 pin:
do;
/* PIN performs physical input from for each physical console
and places the characters into the input queue associated
with each virtual console. Switch screen commands are
received from the XIOS and acted on by PIN.
Control S/Q, Control O and Control C are intercepted and
processed by PIN. The input queues are created by VOUT.
*/
$include (:f1:comlit.lit)
2 1 = declare
= lit literally 'literally',
= dcl lit 'declare',
= true lit '0ffh',
= false lit '0',
= no lit 'not',
= boolean lit 'byte',
= forever lit 'while true',
= cr lit '13',
= lf lit '10',
= tab lit '9';
3 1 dcl rsp$link word external; /* segment of SYSDAT */
$include (:f1:mfunc.lit)
= /* Concurrent CP/M function numbers */
4 1 = dcl m$prtbuf lit '9',
= m$select lit '14',
= m$openf lit '15',
= m$closef lit '16',
= m$deletef lit '19',
= m$readf lit '20',
= m$writef lit '21',
= m$makef lit '22',
= m$getlogin lit '24',
= m$curdsk lit '25',
= m$setdma lit '26',
= m$setatt lit '30',
= m$setusr lit '32',
= m$readrf lit '33',
= m$writerf lit '34',
PL/M-86 COMPILER PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 2
= m$resetdrv lit '37',
= m$errmode lit '45',
= m$dirbios lit '50',
= m$makeq lit '134',
= m$openq lit '135',
= m$deleteq lit '136',
= m$readq lit '137',
= m$creadq lit '138',
= m$writeq lit '139',
= m$cwriteq lit '140',
= m$delay lit '141',
= m$dispatch lit '142',
= m$setprior lit '145',
= m$detach lit '147',
= m$setcns lit '148',
= m$parse lit '152',
= m$getcns lit '153',
= m$sysdat lit '154',
= m$getpd lit '156',
= m$abort lit '157';
= /* Internal calls */
5 1 = dcl mi$sleep lit '0212H',
= mi$wakeup lit '0213H';
=
$include (:f1:mxfunc.lit)
= /* MP/M-86 XIOS function numbers */
6 1 = dcl mx$conin lit '1',
= mx$conout lit '2',
= mx$lstout lit '4',
= mx$switch lit '7',
= mx$upstatus lit '8';
$include (:f1:sdpin.lit)
= /* System Data Page */
7 1 = dcl sysdat$pointer pointer;
8 1 = dcl sysdat$ptr structure(
= offset word,
= segment word) at (@sysdat$pointer);
9 1 = declare sd based sysdat$pointer structure (
= supmod (4) word,
= /* rtmmod (4) word,
= memmod (4) word,
= ciomod (4) word,
= bdosmod (4) word,
= xiosmod (4) word,
= netmod (4) word,
= reservd (4) word */
= space1(28) word,
= mpmseg word,
= rspseg word,
= endseg word,
PL/M-86 COMPILER PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 3
= module$map byte,
= ncns byte,
= nlst byte,
= nccb byte,
= nflags byte,
= srchdisk byte,
= mmp word,
= nslaves byte,
= dayfile byte,
= tempdisk byte,
= tickspersec byte,
= lul word,
= ccb word,
= flags word,
= mdul word,
= mfl word,
= pul word,
= qul word,
= qmau (4) word,
= rlr word,
= dlr word,
= drl word,
= plr word,
= slr word,
= thrdrt word,
= qlr word,
= mal word,
= version word,
= vernum word,
= mpmvernum word,
= tod_day word,
= tod (3) byte,
= ncondev byte,
= nlstdev byte,
= nciodev byte,
= lcb word,
= openvec word,
= lockmax byte,
= openmax byte,
= space2 (2) word,
= cmod byte );
=
=
10 1 = declare sd$byte based sysdat$pointer (1) byte;
11 1 = dcl ncondev lit '83h',
= nlstdev lit '84h',
= nciodev lit '85h';
$include (:f1:proces.lit)
= /*
= Proces Literals MP/M-8086 II
= */
12 1 = declare pnamsiz literally '8';
13 1 = declare pd$hdr literally 'structure
PL/M-86 COMPILER PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 4
= (link word,thread word,stat byte,prior byte,flag word,
= name (8) byte,uda word,dsk byte,user byte,ldsk byte,luser byte,
= mem word';
14 1 = declare pd$structure literally 'pd$hdr,
= dvract word,wait word,org byte,net byte,parent word,
= cns byte,abort byte,conmode word,lst byte,sf3 byte,sf4 byte,sf5 byte,
= reservd (4) byte,pret word,scratch word)';
15 1 = declare psrun lit '00',
= pspoll lit '01',
= psdelay lit '02',
= psswap lit '03',
= psterm lit '04',
= pssleep lit '05',
= psdq lit '06',
= psnq lit '07',
= psflagwait lit '08',
= psciowait lit '09';
16 1 = declare pf$sys lit '00001h',
= pf$keep lit '00002h',
= pf$kernal lit '00004h',
= pf$pure lit '00008h',
= pf$table lit '00010h',
= pf$resource lit '00020h',
= pf$raw lit '00040h',
= pf$ctlc lit '00080h',
= pf$active lit '00100h',
= pf$tempkeep lit '00200h',
= pf$ctld lit '00400h',
= pf$childabort lit '00800h',
= pf$noctls lit '01000h';
17 1 = declare pcm$11 lit '00001h',
= pcm$ctls lit '00002h',
= pcm$rout lit '00004h',
= pcm$ctlc lit '00008h',
= pcm$ctlo lit '00080h',
= pcm$rsx lit '00300h';
18 1 declare pd$pointer pointer;
19 1 declare pd$ptr structure (offset word, segment word) at (@pd$pointer);
20 1 declare pd based pd$pointer pd$structure;
21 1 declare ncopies byte external, /* copy number of this process, corresponds */
cnsnum byte at(@ncopies);/* with physical console number */
22 1 declare ctrlC lit '3'; /* some ASCII codes */
23 1 declare ctrlD lit '4';
24 1 declare bell lit '7';
25 1 declare ctrlO lit '15';
26 1 declare ctrlP lit '16';
27 1 declare ctrlQ lit '17';
28 1 declare ctrlS lit '19';
29 1 declare esc lit '27';
PL/M-86 COMPILER PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 5
/* - global variables - */
$include (:f1:vccb.lit)
= /* Concurrent CP/M Character Control Block Structure */
= /* +---------+---------+---------+---------+
= 00 | attach | queue |
= +---------+---------+---------+---------+
= 04 | flag | startcol| column | nchar |
= +---------+---------+---------+---------+
= 08 | mimic | msource | pc | vc |
= +---------+---------+---------+---------+
= 0C | btmp | resrvd | state |
= +---------+---------+---------+---------+
= 10 | maxbufsiz | vinq |
= +---------+---------+---------+---------+
= 14 | voutq | vcmxq |
= +---------+---------+---------+---------+
= 18 | qpbflgs | qpbfill | qpbqaddr |
= +---------+---------+---------+---------+
= 1C | qpbnmsgs | qpbbuffptr |
= +---------+---------+---------+---------+
= 20 | qbuff | cosleep |
= +---------+---------+---------+---------+
= 24 | usleep | vsleep |
= +---------+---------+---------+---------+
= 28 | ... reserved ... |
= +---------+---------+---------+---------+
= */
30 1 = dcl ccb$structure lit 'structure (attach address, queue address,
= flag byte, startcol byte, column byte, nchar byte, mimic byte, msource byte,
= ccb$tail1';
31 1 = dcl ccb$tail1 lit
= 'pc byte, vc byte, btmp byte, reservd byte, state word, maxbufsiz word,
= ccb$tail2';
32 1 = dcl ccb$tail2 lit
= 'vinq address, voutq address, vcmxq address,
= qpbflags byte, qpbresrvd byte, qpbqaddr address,
= qpbnmsgs address, qpbbuffptr address, qbuff address, cosleep word,
= usleep word, vsleep word, r1 word, r2 word)';
33 1 = declare /* flag values */
= cf$listcp lit '001h', /* control P toggle */
= cf$compc lit '002h', /* suppress output */
= cf$switchs lit '004h', /* XIOS supports switch screening */
= cf$conout lit '008h', /* XIOS console output ownership */
= cf$vout lit '010h', /* process writing to VOUTQ */
= cf$bufp lit '020h'; /* toggle to control printer echo */
= /* on control P when background */
= /* and buffered */
= /* values of state byte */
PL/M-86 COMPILER PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 6
= /* conout goes to XIOS */
= /* state word flags */
34 1 = dcl
= csm$buffered lit '0001h',
= csm$background lit '0002h',
= csm$purging lit '0004h',
= csm$noswitch lit '0008h',
= csm$suspend lit '0010h',
= csm$abort lit '0020h',
= csm$filefull lit '0040h',
= csm$ctrlS lit '0080h',
= csm$ctrlO lit '0100h',
= csm$ctrlP lit '0200h';
35 1 = dcl x$init$offset lit '0Ch',
= x$init$pointer pointer,
= x$init$ptr structure (offset word, segment word) at (@x$init$pointer),
= x$init based x$init$pointer structure
= (tick byte, ticks$sec byte, door byte, resrvd1 (2) byte,
= nvcns byte, nccb byte, nlst byte, ccb word, lcb word);
36 1 = dcl lcb$structure lit 'structure (attach address, queue address,
= flag byte, startcol byte, column byte, nchar byte,
= mimic byte, msource byte)';
37 1 declare ccb$pointer pointer;
38 1 declare ccb$ptr structure(offset word,segment word) at (@ccb$pointer);
39 1 declare ccb based ccb$pointer ccb$structure;
40 1 declare old$ccb$pointer pointer;
41 1 declare old$ccb based old$ccb$pointer ccb$structure;
42 1 declare lcb$pointer pointer;
43 1 declare lcb$ptr structure(offset word,segment word) at (@lcb$pointer);
44 1 declare lcb based lcb$pointer lcb$structure;
45 1 declare screen byte; /* current foreground screen number */
$include (:f1:qd.lit)
= /* Queue Descriptor */
46 1 = dcl qnamsiz lit '8';
47 1 = dcl qd$structure lit 'structure(
= link word,
= net byte,
= org byte,
= flags word,
= name(qnamsiz) byte,
= msglen word,
= nmsgs word,
= dq word,
= nq word,
PL/M-86 COMPILER PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 7
= msgcnt word,
= msgout word,
= buffer word)';
= /* queue flag values */
48 1 = dcl qf$mx lit '001h'; /* Mutual Exclusion */
49 1 = dcl qf$keep lit '002h'; /* NO DELETE */
50 1 = dcl qf$hide lit '004h'; /* Not User writable */
51 1 = dcl qf$rsp lit '008h'; /* rsp queue */
52 1 = dcl qf$table lit '010h'; /* from qd table */
53 1 = dcl qf$rpl lit '020h'; /* rpl queue */
54 1 = dcl qf$dev lit '040h'; /* device queue */
= /* Queue Parameter Block */
55 1 = dcl qpb$structure lit 'structure(
= flgs byte,
= net byte,
= qaddr word,
= nmsgs word,
= buffptr word,
= name (qnamsiz) byte )';
56 1 declare qpb qpb$structure;
57 1 dcl null word data (0ffffh); /* sent to VOUTQ to wake up VOUT */
/* Note: this forces a 2 byte constant section and thus hex generation */
58 1 dcl apb structure ( /* abort parameter block */
pd word, term word, cns byte, rsrvd byte) initial (0,0,0,0);
59 1 dcl cword word, /* format of console input from XIOS */
chars (2) byte at (@cword),
char byte at (@chars(0)),
char$type byte at(@chars(1)),
ct$switch lit '0ffh',
ct$data lit '0';
60 1 mon1: procedure(func,a) external;
61 2 dcl func byte, a address;
62 2 end mon1;
63 1 mon2: procedure(func,a) byte external;
64 2 dcl func byte, a address;
65 2 end mon2;
66 1 mon3: procedure(func,a) address external;
67 2 dcl func byte, a address;
68 2 end mon3;
69 1 mon4: procedure(func,a) pointer external;
70 2 dcl func byte, a address;
71 2 end mon4;
72 1 intsys: procedure (cx, dx, bx) external; /* internal O.S. functions */
73 2 dcl (cx, dx, bx) word;
PL/M-86 COMPILER PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 8
74 2 end intsys;
/* the following 4 procedures call the XIOS directly, the PXIOS.A86 */
/* sets the registers to make this legal. DS = system data segment, */
/* ES = UDA. The parameters are passed AX=FUNC, CX=P1, DX=P2 */
75 1 pxios1: procedure(func,p1,p2) external;
76 2 dcl (func,p1,p2) address;
77 2 end pxios1;
/*pxios2: procedure(func,p1,p2) byte external;
dcl (func,p1,p2) address;
end pxios2;*/
78 1 pxios3: procedure(func,p1,p2) word external;
79 2 dcl (func,p1,p2) address;
80 2 end pxios3;
/*pxios4: procedure(func,p1,p2) pointer external;
dcl (func,p1,p2) address;
end pxios4;*/
81 1 conin: procedure;
82 2 cword = pxios3(mx$conin, 0, 0); /* get console input from XIOS */
83 2 end; /* AX=func, CX=0, DX(device#)=0 */
84 1 print$msg: procedure(len, endchar, sptr); /* print string to delimiter */
85 2 dcl (len, i, endchar) byte, sptr pointer, /* or len number of chars */
string based sptr (1) byte;
86 2 i = 0;
87 2 do while string(i) <> endchar and i < len;
88 3 call pxios1(mx$conout, string(i), screen);
89 3 i = i + 1;
90 3 end;
91 2 end print$msg;
$if debug=1
error: procedure (msg$ptr);
dcl msg$ptr pointer;
call print$msg(0ffh, 0, @(cr, lf, '**** PIN ERROR ****', cr, lf, 0));
call print$msg(0ffh, '$', msg$ptr);
halt;
end error;
$endif
92 1 read$change$mxq: procedure (qaddr);
93 2 dcl qaddr address;
94 2 qpb.qaddr = qaddr;
95 2 call mon1 (m$readq, .qpb);
96 2 end read$change$mxq;
97 1 write$change$mxq: procedure (qaddr);
98 2 dcl qaddr address;
99 2 qpb.qaddr = qaddr;
100 2 call mon1 (m$writeq, .qpb);
101 2 end write$change$mxq;
PL/M-86 COMPILER PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 9
102 1 sleep: procedure (list$root);
103 2 dcl list$root word;
104 2 call intsys(mi$sleep, list$root, ps$ciowait);
105 2 end sleep;
106 1 wake$up: procedure (list$root);
107 2 dcl list$root word;
108 2 call intsys(mi$wakeup, list$root, 0);
109 2 end wake$up;
/* The conout flag is set and "owned" before any process calls the XIOS
console output routine for a particular screen. PIN sets this flag
to insure there is no process in the XIOS console output code. The
ccb.cosleep is a temporary location for processes waiting to own the
the XIOS conout bit. */
110 1 set$conout$flag: procedure(ccb$ptr);
111 2 dcl ccb$ptr pointer;
112 2 dcl ccb based ccb$ptr ccb$structure;
113 2 disable;
114 2 do while (ccb.flag and cf$conout) <> 0; /* Another process is in XIOS */
115 3 call sleep (.ccb.cosleep); /* PIN gets awakened 1st: */
116 3 end; /* better priority */
117 2 ccb.flag = ccb.flag or cf$conout;
118 2 enable;
119 2 end set$conout$flag;
120 1 reset$conout$flag: procedure (ccb$ptr);
121 2 dcl ccb$ptr pointer;
122 2 dcl ccb based ccb$ptr ccb$structure;
123 2 ccb.flag = ccb.flag and not cf$conout; /* wake sleeping process */
124 2 call wakeup(.ccb.cosleep);
125 2 end reset$conout$flag;
126 1 wake$vout: procedure(ccb$ptr);
127 2 dcl ccb$ptr pointer;
128 2 dcl ccb based ccb$ptr ccb$structure;
129 2 if (ccb.state and csm$buffered) = 0 then
130 2 return; /* dynamic mode */
131 2 qpb.qaddr = ccb.voutq;
132 2 qpb.buffptr = .null; /* VOUT message is 2 byte format */
133 2 call mon1(m$cwriteq, .qpb); /* null message if first byte = 0ffh */
134 2 qpb.qaddr = ccb.voutq;
135 2 qpb.buffptr = .null; /* VOUT needs two wake-ups in some */
136 2 call mon1(m$cwriteq, .qpb); /* situations */
137 2 call wake$up(.ccb.vsleep);
138 2 end wake$vout;
139 1 write$vinq: procedure(c);
140 2 dcl c byte;
141 2 qpb.qaddr = ccb.vinq;
142 2 qpb.buffptr = .c;
143 2 if mon3(m$cwriteq, .qpb) = 0ffffh then /* ring console bell if type */
144 2 do;
145 3 call set$conout$flag(@ccb); /* XIOS is not reentrant on same console */
146 3 call pxios1(mx$conout, bell, screen); /* ahead buffer if full */
PL/M-86 COMPILER PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 10
147 3 call reset$conout$flag(@ccb);
148 3 end;
149 2 end write$vinq;
150 1 set$ccb: procedure (vc); /* base VCCB structure */
151 2 dcl vc byte;
152 2 old$ccb$pointer = ccb$pointer;
153 2 ccb$ptr.offset = sd.ccb + size(ccb) * vc;
154 2 end set$ccb;
/* the functions below act on special keys received from the keyboard */
155 1 dcl controlS$has$been$pressed boolean initial (false);
156 1 switch: procedure; /* switch virtual consoles */
157 2 if char >= sd.ncns then
158 2 return; /* check for legal range */
159 2 if (ccb.state and csm$noswitch) <> 0 then /* no switch state */
160 2 return;
161 2 if char = ccb.vc then /* request is for currently selected screen */
162 2 return;
163 2 call set$ccb(screen := char); /* switch old$ccb and ccb structures */
/* - Switch Out Action - */
164 2 call read$change$mxq(oldccb.vcmxq); /* read the MX 1st THEN */
165 2 call set$conout$flag(@oldccb); /* the conout flag */
166 2 oldccb.state = oldccb.state or csm$background;
167 2 if (oldccb.state and csm$purging) <> 0 then
168 2 oldccb.state = oldccb.state and not double(csm$purging);
/* turn off purge */
/* Ensure the two affected screens are not currently being updated */
/* by the XIOS console output routines. */
169 2 call read$change$mxq(ccb.vcmxq);
170 2 call set$conout$flag$(@ccb);
171 2 call pxios1(mx$switch, 0, screen);
172 2 call reset$conout$flag(oldccb$pointer);
173 2 call write$change$mxq(oldccb.vcmxq); /* allow VOUT to change state */
174 2 if (oldccb.state and csm$buffered) <> 0 then /* background buffered */
175 2 call wake$vout(@oldccb); /* send chars to VOUT if buffer, */
/* else user process hangs on USLEEP */
/* - Switch In Action - */
176 2 ccb.state = ccb.state and not double(csm$background);
177 2 if (ccb.state and csm$buffered) <> 0 then
178 2 do; /* buffer or buffer error states */
/* turn on purge */
179 3 ccb.state = (ccb.state or csm$purging) and not double(csm$filefull);
/* turn off error could print msg */
PL/M-86 COMPILER PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 11
180 3 call wake$vout(@ccb); /* here eventually */
181 3 end;
182 2 call reset$conout$flag(ccb$pointer);
183 2 call write$change$mxq(ccb.vcmxq);
184 2 if (ccb.state and csm$ctrlS) <> 0 then /* we "own" the XIOS console */
185 2 controlS$has$been$pressed = true; /* output flag */
else
186 2 controlS$has$been$pressed = false;
187 2 call pxios1(mx$upstatus, 0, 0);
188 2 end switch;
189 1 dcl drive$letters (17) byte initial ('ABCDEFGHIJKLMNOP ');
190 1 controlC: procedure;
191 2 dcl (junk,cur$drive,logged$in$drives) word;
192 2 dcl letter$index byte;
193 2 if (pd.conmode and pcm$ctlc) <> 0 then
194 2 do;
195 3 call write$vinq(char);
196 3 return;
197 3 end;
198 2 call read$change$mxq(ccb.vcmxq); /* keep CCB state from changing */
/* while we test and change it */
199 2 ccb.state = ccb.state and not double(csm$ctrlS or csm$ctrlO);
200 2 controlS$has$been$pressed = false;
/* control C turns off control S and */
/* control O, doesn't change control P */
201 2 if (ccb.state and csm$purging) <> 0 then /* stop purge */
202 2 ccb.state = ccb.state and not double (csm$purging) or csm$abort;
203 2 qpb.qaddr = ccb.vinq; /* drain input queue, we have better */
204 2 qpb.buffptr = .junk; /* priority than user process or TMP */
205 2 do while mon2(m$creadq, .qpb) <> 0ffh; /* drain type-ahead q */
206 3 end;
207 2 ccb.nchar = 0; /* zero console status look ahead */
208 2 call write$change$mxq(ccb.vcmxq);
209 2 call wake$vout(@ccb); /* let VOUT clean up if buffering */
210 2 call wake$up(.ccb.usleep); /* user process could have gone to sleep */
/* during this rigamarole */
211 2 apb.pd = ccb.attach; /* CIO keeps aborts from happening */
212 2 call mon1(m$abort, .apb); /* while in the XIOS, do abort after */
/* VOUT has cleaned up, otherwise the TMP*/
/* with a better priority can print its */
/* prompt, and then VOUT prints one last */
/* purge character */
/* reset drives and print which fail */
213 2 logged$in$drives = mon3(m$getlogin,0);
214 2 cur$drive = 1; /* drive to reset */
215 2 letter$index = 0;
216 2 do junk = 0 to 15;
217 3 if (logged$in$drives and cur$drive) <> 0 then
218 3 if mon2(m$resetdrv, cur$drive) <> 0 then
219 3 do;
220 4 drive$letters(letter$index) = 'A' + junk;
221 4 letter$index = letter$index + 1;
222 4 end;
PL/M-86 COMPILER PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 12
223 3 cur$drive = shl(cur$drive,1);
224 3 end;
225 2 if letter$index > 0 then
226 2 do;
227 3 call set$conout$flag(@ccb);
228 3 call print$msg(0ffh,0,@(cr,lf,'Open file on drive(s) ',0));
229 3 call print$msg(1,0,@drive$letters(0));
230 3 do junk = 1 to letter$index - 1;
231 4 call print$msg(1,0,@(','));
232 4 call print$msg(1,0,@drive$letters(junk));
233 4 end;
234 3 call print$msg(2,0,@(cr,lf));
235 3 ccb.startcol, ccb.column = 0; /* for function 10 - line redraw */
236 3 call reset$conout$flag(@ccb);
237 3 end;
238 2 end controlC;
239 1 controlO: procedure; /* toggle console output byte bucket */
240 2 if (pd.conmode and pcm$ctlo) <> 0 then /* ignore if control P or if func */
241 2 do;
242 3 call write$vinq(char);
243 3 return;
244 3 end;
245 2 call read$change$mxq(ccb.vcmxq);
246 2 ccb.state = ccb.state xor csm$ctrlO;
247 2 call write$change$mxq(ccb.vcmxq);
248 2 call wake$vout(@ccb);
249 2 call pxios1(mx$upstatus, 0, 0);
250 2 end controlO;
251 1 turn$off$ctrlO: procedure;
252 2 call read$change$mxq(ccb.vcmxq);
253 2 ccb.state = ccb.state and not double(csm$ctrlO);
254 2 call write$change$mxq(ccb.vcmxq);
255 2 call wake$vout(@ccb);
256 2 call pxios1(mx$upstatus, 0, 0);
257 2 end turn$off$ctrlO;
258 1 controlS: procedure;
259 2 if (pd.flag and pf$noctls) <> 0 then /* special condition for CLI day */
260 2 return; /* file logging */
261 2 if (pd.conmode and pcm$ctlS) <> 0 then
262 2 do;
263 3 call write$vinq(char);
264 3 return;
265 3 end;
266 2 call read$change$mxq(ccb.vcmxq);
267 2 ccb.state = ccb.state and not double(csm$ctrlO) or csm$ctrlS;
/* control S turns off control O */
268 2 call pxios1(mx$upstatus, 0, 0);
269 2 call write$change$mxq(ccb.vcmxq);
270 2 controlS$has$been$pressed = true;
271 2 end controlS;
272 1 controlQ: procedure;
273 2 call read$change$mxq(ccb.vcmxq);
274 2 ccb.state = ccb.state and not double(csm$ctrlS);
PL/M-86 COMPILER PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 13
275 2 call write$change$mxq(ccb.vcmxq);
276 2 call wake$vout(@ccb);
277 2 call wakeup(.ccb.usleep);
278 2 call pxios1(mx$upstatus, 0, 0);
279 2 controlS$has$been$pressed = false;
280 2 end controlQ;
281 1 controlP: procedure;
282 2 if (pd.conmode and pcm$rout) <> 0 then /* control P is ignored if console */
283 2 do;
284 3 call write$vinq(char);
285 3 return; /* mode is raw output */
286 3 end;
287 2 call turn$off$ctrlO;
288 2 call read$change$mxq(ccb.vcmxq);
289 2 if (ccb.state and csm$ctrlP) = 0 then /* turn control P on */
290 2 do;
291 3 lcb$ptr.offset = sd.lcb + pd.lst * size(lcb);
292 3 disable;
293 3 if lcb.attach = 0 then
294 3 do;
295 4 lcb.attach = 0ffffh;
296 4 lcb.msource = screen;
297 4 ccb.mimic = pd.lst;
298 4 ccb.state = ccb.state or csm$ctrlP;
299 4 enable;
300 4 end;
else
301 3 do;
302 4 enable;
303 4 call set$conout$flag(@ccb);
304 4 call print$msg(0ffh,0,@(cr,lf,'Printer Busy',cr,lf,0));
305 4 ccb.column,ccb.startcol = 0; /* for function 10 */
306 4 call reset$conout$flag(@ccb);
307 4 end;
308 3 end;
else /* turn off control P */
309 2 do;
310 3 disable;
311 3 lcb$ptr.offset = sd.lcb + ccb.mimic * size(lcb);
312 3 lcb.attach = 0;
313 3 lcb.msource,ccb.mimic = 0ffh;
314 3 ccb.state = ccb.state and not double(csm$ctrlP);
315 3 ccb.flag = ccb.flag and not cf$bufp;
316 3 call wakeup(.lcb.queue);
317 3 enable;
318 3 end;
319 2 call write$change$mxq(ccb.vcmxq);
320 2 call pxios1(mx$upstatus, 0, 0);
321 2 end controlP;
322 1 raw: procedure boolean;
323 2 if (pd$ptr.offset := ccb.attach) = 0 then /* 0 during initialization */
324 2 return(true);
325 2 if (pd.flag and pf$raw) = 0 then /* set by function 6 only */
326 2 return(false);
327 2 call controlQ; /* avoid deadlock if user is mixing func 6 */
PL/M-86 COMPILER PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 14
328 2 return(true); /* other console I/O calls */
329 2 end raw;
330 1 plmstart: procedure public;
331 2 sysdat$ptr.segment, lcb$ptr.segment, ccb$ptr.segment = rsp$link;
/* init pointers */
332 2 ccb$ptr.offset = sd.ccb; /* CCB 0 is first in the table */
333 2 pd$pointer = mon4(m$getpd, 0);
334 2 screen = 0; /* initial foreground console is 0 */
335 2 do forever;
336 3 call conin;
337 3 if char$type = ct$switch then
338 3 call switch;
339 3 else if char$type = ct$data then
340 3 do;
341 4 if raw then
342 4 call write$vinq(char);
else
343 4 do;
344 5 if controlS$has$been$pressed then
345 5 do;
346 6 if char = ctrlC then
347 6 call controlC;
348 6 else if char = ctrlQ then
349 6 call controlQ;
350 6 else if char = ctrlP then
351 6 call controlP;
else
352 6 do;
353 7 call set$conout$flag(ccb$pointer); /* guard against unlikely */
354 7 call pxios1(mx$conout,bell,screen); /* race condition */
355 7 call reset$conout$flag(ccb$pointer);
356 7 end;
357 6 end;
else
358 5 do; /* controlS has not been pressed */
359 6 if char = ctrlC then
360 6 call controlC;
361 6 else if char = ctrlS then
362 6 call controlS;
363 6 else if char = ctrlO then
364 6 call controlO;
365 6 else if char = ctrlP then
366 6 call controlP;
else
367 6 do;
368 7 if (ccb.state and csm$ctrlO) <> 0 then
369 7 call turn$off$ctrlO;
370 7 call write$vinq(char);
371 7 end;
372 6 end;
373 5 end;/* else (if not raw) */
374 4 end; /* if char$type <> ct$data and char$type <> ct$switch then */
/* XIOS console input is ignored */
end; /* do forever */
PL/M-86 COMPILER PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 15
376 2 end plmstart;
377 1 end pin;
PL/M-86 COMPILER PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 16
CROSS-REFERENCE LISTING
-----------------------
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
----- ------ ----- --------------------------------
63 0000H 2 A. . . . . . . . . . . WORD PARAMETER 64
60 0000H 2 A. . . . . . . . . . . WORD PARAMETER 61
69 0000H 2 A. . . . . . . . . . . WORD PARAMETER 70
66 0000H 2 A. . . . . . . . . . . WORD PARAMETER 67
20 0021H 1 ABORT. . . . . . . . . BYTE MEMBER(PD)
58 0028H 6 APB. . . . . . . . . . STRUCTURE INITIAL 211 212
112 0000H 2 ATTACH . . . . . . . . WORD MEMBER(CCB)
122 0000H 2 ATTACH . . . . . . . . WORD MEMBER(CCB)
128 0000H 2 ATTACH . . . . . . . . WORD MEMBER(CCB)
44 0000H 2 ATTACH . . . . . . . . WORD MEMBER(LCB) 293 295 312
39 0000H 2 ATTACH . . . . . . . . WORD MEMBER(CCB) 211 323
41 0000H 2 ATTACH . . . . . . . . WORD MEMBER(OLDCCB)
24 BELL . . . . . . . . . LITERALLY 146 354
2 BOOLEAN. . . . . . . . LITERALLY 155 322
122 000CH 1 BTMP . . . . . . . . . BYTE MEMBER(CCB)
39 000CH 1 BTMP . . . . . . . . . BYTE MEMBER(CCB)
112 000CH 1 BTMP . . . . . . . . . BYTE MEMBER(CCB)
128 000CH 1 BTMP . . . . . . . . . BYTE MEMBER(CCB)
41 000CH 1 BTMP . . . . . . . . . BYTE MEMBER(OLDCCB)
56 0006H 2 BUFFPTR. . . . . . . . WORD MEMBER(QPB) 132 135 142 204
72 0000H 2 BX . . . . . . . . . . WORD PARAMETER 73
139 0004H 1 C. . . . . . . . . . . BYTE PARAMETER AUTOMATIC 140 142
122 0000H 44 CCB. . . . . . . . . . STRUCTURE BASED(CCBPTR) 123 124
39 0000H 44 CCB. . . . . . . . . . STRUCTURE BASED(CCBPOINTER) 141 145 147 153 159 161
169 170 176 177 179 180 183 184 198 199 201 202 203
207 208 209 210 211 227 235 236 245 246 247 248 252
253 254 255 266 267 269 273 274 275 276 277 288 289
297 298 303 305 306 311 313 314 315 319 323 368
9 0054H 2 CCB. . . . . . . . . . WORD MEMBER(SD) 153 332
128 0000H 44 CCB. . . . . . . . . . STRUCTURE BASED(CCBPTR) 129 131 134 137
112 0000H 44 CCB. . . . . . . . . . STRUCTURE BASED(CCBPTR) 114 115 117
35 0008H 2 CCB. . . . . . . . . . WORD MEMBER(XINIT)
37 000CH 4 CCBPOINTER . . . . . . POINTER 38 39 141 145 147 152 159 161 169 170
176 177 179 180 182 183 184 198 199 201 202 203 207
208 209 210 211 227 235 236 245 246 247 248 252 253
254 255 266 267 269 273 274 275 276 277 288 289 297
298 303 305 306 311 313 314 315 319 323 353 355 368
126 0004H 4 CCBPTR . . . . . . . . POINTER PARAMETER AUTOMATIC 127 128 129 131 134 137
110 0004H 4 CCBPTR . . . . . . . . POINTER PARAMETER AUTOMATIC 111 112 114 115 117
38 000CH 4 CCBPTR . . . . . . . . STRUCTURE AT 153 331 332
120 0004H 4 CCBPTR . . . . . . . . POINTER PARAMETER AUTOMATIC 121 122 123 124
30 CCBSTRUCTURE . . . . . LITERALLY 39 41 112 122 128
31 CCBTAIL1 . . . . . . . LITERALLY 39 41 112 122 128
32 CCBTAIL2 . . . . . . . LITERALLY 39 41 112 122 128
33 CFBUFP . . . . . . . . LITERALLY 315
33 CFCOMPC. . . . . . . . LITERALLY
33 CFCONOUT . . . . . . . LITERALLY 114 117 123
33 CFLISTCP . . . . . . . LITERALLY
33 CFSWITCHS. . . . . . . LITERALLY
PL/M-86 COMPILER PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 17
33 CFVOUT . . . . . . . . LITERALLY
59 002EH 1 CHAR . . . . . . . . . BYTE AT 157 161 163 195 242 263 284 342 346 348
350 359 361 363 365 370
59 002EH 2 CHARS. . . . . . . . . BYTE ARRAY(2) AT 59
59 002FH 1 CHARTYPE . . . . . . . BYTE AT 337 339
9 0090H 1 CMOD . . . . . . . . . BYTE MEMBER(SD)
20 0020H 1 CNS. . . . . . . . . . BYTE MEMBER(PD)
58 0004H 1 CNS. . . . . . . . . . BYTE MEMBER(APB)
21 0000H 1 CNSNUM . . . . . . . . BYTE EXTERNAL(1) AT
39 0006H 1 COLUMN . . . . . . . . BYTE MEMBER(CCB) 235 305
112 0006H 1 COLUMN . . . . . . . . BYTE MEMBER(CCB)
122 0006H 1 COLUMN . . . . . . . . BYTE MEMBER(CCB)
44 0006H 1 COLUMN . . . . . . . . BYTE MEMBER(LCB)
41 0006H 1 COLUMN . . . . . . . . BYTE MEMBER(OLDCCB)
128 0006H 1 COLUMN . . . . . . . . BYTE MEMBER(CCB)
81 0000H 20 CONIN. . . . . . . . . PROCEDURE STACK=000AH 336
20 0022H 2 CONMODE. . . . . . . . WORD MEMBER(PD) 193 240 261 282
190 02E1H 407 CONTROLC . . . . . . . PROCEDURE STACK=001EH 347 360
239 0478H 79 CONTROLO . . . . . . . PROCEDURE STACK=001EH 364
281 05ACH 277 CONTROLP . . . . . . . PROCEDURE STACK=001EH 351 366
272 0566H 70 CONTROLQ . . . . . . . PROCEDURE STACK=0018H 327 349
258 04FDH 105 CONTROLS . . . . . . . PROCEDURE STACK=001EH 362
155 0038H 1 CONTROLSHASBEENPRESSED BYTE INITIAL 185 186 200 270 279 344
128 0022H 2 COSLEEP. . . . . . . . WORD MEMBER(CCB)
39 0022H 2 COSLEEP. . . . . . . . WORD MEMBER(CCB)
41 0022H 2 COSLEEP. . . . . . . . WORD MEMBER(OLDCCB)
112 0022H 2 COSLEEP. . . . . . . . WORD MEMBER(CCB) 115
122 0022H 2 COSLEEP. . . . . . . . WORD MEMBER(CCB) 124
2 CR . . . . . . . . . . LITERALLY 228 234 304
34 CSMABORT . . . . . . . LITERALLY 202
34 CSMBACKGROUND. . . . . LITERALLY 166 176
34 CSMBUFFERED. . . . . . LITERALLY 129 174 177
34 CSMCTRLO . . . . . . . LITERALLY 199 246 253 267 368
34 CSMCTRLP . . . . . . . LITERALLY 289 298 314
34 CSMCTRLS . . . . . . . LITERALLY 184 199 267 274
34 CSMFILEFULL. . . . . . LITERALLY 179
34 CSMNOSWITCH. . . . . . LITERALLY 159
34 CSMPURGING . . . . . . LITERALLY 167 168 179 201 202
34 CSMSUSPEND . . . . . . LITERALLY
59 CTDATA . . . . . . . . LITERALLY 339
22 CTRLC. . . . . . . . . LITERALLY 346 359
23 CTRLD. . . . . . . . . LITERALLY
25 CTRLO. . . . . . . . . LITERALLY 363
26 CTRLP. . . . . . . . . LITERALLY 350 365
27 CTRLQ. . . . . . . . . LITERALLY 348
28 CTRLS. . . . . . . . . LITERALLY 361
59 CTSWITCH . . . . . . . LITERALLY 337
191 0032H 2 CURDRIVE . . . . . . . WORD 214 217 218 223
59 002EH 2 CWORD. . . . . . . . . WORD 59 82
72 0000H 2 CX . . . . . . . . . . WORD PARAMETER 73
9 004FH 1 DAYFILE. . . . . . . . BYTE MEMBER(SD)
2 DCL. . . . . . . . . . LITERALLY
9 006AH 2 DLR. . . . . . . . . . WORD MEMBER(SD)
35 0002H 1 DOOR . . . . . . . . . BYTE MEMBER(XINIT)
DOUBLE . . . . . . . . BUILTIN 168 176 179 199 202 253 267 274 314
189 0039H 17 DRIVELETTERS . . . . . BYTE ARRAY(17) INITIAL 220 229 232
9 006CH 2 DRL. . . . . . . . . . WORD MEMBER(SD)
PL/M-86 COMPILER PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 18
20 0012H 1 DSK. . . . . . . . . . BYTE MEMBER(PD)
20 0018H 2 DVRACT . . . . . . . . WORD MEMBER(PD)
72 0000H 2 DX . . . . . . . . . . WORD PARAMETER 73
84 0008H 1 ENDCHAR. . . . . . . . BYTE PARAMETER AUTOMATIC 85 87
9 0044H 2 ENDSEG . . . . . . . . WORD MEMBER(SD)
29 ESC. . . . . . . . . . LITERALLY
2 FALSE. . . . . . . . . LITERALLY 155 186 200 279 326
44 0004H 1 FLAG . . . . . . . . . BYTE MEMBER(LCB)
39 0004H 1 FLAG . . . . . . . . . BYTE MEMBER(CCB) 315
112 0004H 1 FLAG . . . . . . . . . BYTE MEMBER(CCB) 114 117
122 0004H 1 FLAG . . . . . . . . . BYTE MEMBER(CCB) 123
41 0004H 1 FLAG . . . . . . . . . BYTE MEMBER(OLDCCB)
20 0006H 2 FLAG . . . . . . . . . WORD MEMBER(PD) 259 325
128 0004H 1 FLAG . . . . . . . . . BYTE MEMBER(CCB)
9 0056H 2 FLAGS. . . . . . . . . WORD MEMBER(SD)
56 0000H 1 FLGS . . . . . . . . . BYTE MEMBER(QPB)
2 FOREVER. . . . . . . . LITERALLY 335
78 0000H 2 FUNC . . . . . . . . . WORD PARAMETER 79
66 0000H 1 FUNC . . . . . . . . . BYTE PARAMETER 67
63 0000H 1 FUNC . . . . . . . . . BYTE PARAMETER 64
60 0000H 1 FUNC . . . . . . . . . BYTE PARAMETER 61
75 0000H 2 FUNC . . . . . . . . . WORD PARAMETER 76
69 0000H 1 FUNC . . . . . . . . . BYTE PARAMETER 70
85 0037H 1 I. . . . . . . . . . . BYTE 86 87 88 89
72 0000H INTSYS . . . . . . . . PROCEDURE EXTERNAL(6) STACK=0000H 104 108
191 0030H 2 JUNK . . . . . . . . . WORD 204 216 220 230 232
44 0000H 10 LCB. . . . . . . . . . STRUCTURE BASED(LCBPOINTER) 291 293 295 296 311 312
313 316
9 0086H 2 LCB. . . . . . . . . . WORD MEMBER(SD) 291 311
35 000AH 2 LCB. . . . . . . . . . WORD MEMBER(XINIT)
42 0014H 4 LCBPOINTER . . . . . . POINTER 43 44 293 295 296 312 313 316
43 0014H 4 LCBPTR . . . . . . . . STRUCTURE AT 291 311 331
36 LCBSTRUCTURE . . . . . LITERALLY 44
20 0014H 1 LDSK . . . . . . . . . BYTE MEMBER(PD)
84 000AH 1 LEN. . . . . . . . . . BYTE PARAMETER AUTOMATIC 85 87
192 004AH 1 LETTERINDEX. . . . . . BYTE 215 220 221 225 230
2 LF . . . . . . . . . . LITERALLY 228 234 304
20 0000H 2 LINK . . . . . . . . . WORD MEMBER(PD)
106 0004H 2 LISTROOT . . . . . . . WORD PARAMETER AUTOMATIC 107 108
102 0004H 2 LISTROOT . . . . . . . WORD PARAMETER AUTOMATIC 103 104
2 LIT. . . . . . . . . . LITERALLY 2 4 5 6 11 15 16 17 22 23
24 25 26 27 28 29 30 31 32 33 34 35 36
46 47 48 49 50 51 52 53 54 55 59
9 008AH 1 LOCKMAX. . . . . . . . BYTE MEMBER(SD)
191 0034H 2 LOGGEDINDRIVES . . . . WORD 213 217
20 0024H 1 LST. . . . . . . . . . BYTE MEMBER(PD) 291 297
9 0052H 2 LUL. . . . . . . . . . WORD MEMBER(SD)
20 0015H 1 LUSER. . . . . . . . . BYTE MEMBER(PD)
4 MABORT . . . . . . . . LITERALLY 212
9 0076H 2 MAL. . . . . . . . . . WORD MEMBER(SD)
128 0010H 2 MAXBUFSIZ. . . . . . . WORD MEMBER(CCB)
112 0010H 2 MAXBUFSIZ. . . . . . . WORD MEMBER(CCB)
39 0010H 2 MAXBUFSIZ. . . . . . . WORD MEMBER(CCB)
122 0010H 2 MAXBUFSIZ. . . . . . . WORD MEMBER(CCB)
41 0010H 2 MAXBUFSIZ. . . . . . . WORD MEMBER(OLDCCB)
4 MCLOSEF. . . . . . . . LITERALLY
4 MCREADQ. . . . . . . . LITERALLY 205
PL/M-86 COMPILER PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 19
4 MCURDSK. . . . . . . . LITERALLY
4 MCWRITEQ . . . . . . . LITERALLY 133 136 143
4 MDELAY . . . . . . . . LITERALLY
4 MDELETEF . . . . . . . LITERALLY
4 MDELETEQ . . . . . . . LITERALLY
4 MDETACH. . . . . . . . LITERALLY
4 MDIRBIOS . . . . . . . LITERALLY
4 MDISPATCH. . . . . . . LITERALLY
9 0058H 2 MDUL . . . . . . . . . WORD MEMBER(SD)
20 0016H 2 MEM. . . . . . . . . . WORD MEMBER(PD)
4 MERRMODE . . . . . . . LITERALLY
9 005AH 2 MFL. . . . . . . . . . WORD MEMBER(SD)
4 MGETCNS. . . . . . . . LITERALLY
4 MGETLOGIN. . . . . . . LITERALLY 213
4 MGETPD . . . . . . . . LITERALLY 333
122 0008H 1 MIMIC. . . . . . . . . BYTE MEMBER(CCB)
41 0008H 1 MIMIC. . . . . . . . . BYTE MEMBER(OLDCCB)
44 0008H 1 MIMIC. . . . . . . . . BYTE MEMBER(LCB)
39 0008H 1 MIMIC. . . . . . . . . BYTE MEMBER(CCB) 297 311 313
112 0008H 1 MIMIC. . . . . . . . . BYTE MEMBER(CCB)
128 0008H 1 MIMIC. . . . . . . . . BYTE MEMBER(CCB)
5 MISLEEP. . . . . . . . LITERALLY 104
5 MIWAKEUP . . . . . . . LITERALLY 108
4 MMAKEF . . . . . . . . LITERALLY
4 MMAKEQ . . . . . . . . LITERALLY
9 004CH 2 MMP. . . . . . . . . . WORD MEMBER(SD)
9 0046H 1 MODULEMAP. . . . . . . BYTE MEMBER(SD)
60 0000H MON1 . . . . . . . . . PROCEDURE EXTERNAL(2) STACK=0000H 95 100 133 136 212
63 0000H MON2 . . . . . . . . . PROCEDURE BYTE EXTERNAL(3) STACK=0000H 205 218
66 0000H MON3 . . . . . . . . . PROCEDURE WORD EXTERNAL(4) STACK=0000H 143 213
69 0000H MON4 . . . . . . . . . PROCEDURE POINTER EXTERNAL(5) STACK=0000H 333
4 MOPENF . . . . . . . . LITERALLY
4 MOPENQ . . . . . . . . LITERALLY
4 MPARSE . . . . . . . . LITERALLY
9 0040H 2 MPMSEG . . . . . . . . WORD MEMBER(SD)
9 007CH 2 MPMVERNUM. . . . . . . WORD MEMBER(SD)
4 MPRTBUF. . . . . . . . LITERALLY
4 MREADF . . . . . . . . LITERALLY
4 MREADQ . . . . . . . . LITERALLY 95
4 MREADRF. . . . . . . . LITERALLY
4 MRESETDRV. . . . . . . LITERALLY 218
4 MSELECT. . . . . . . . LITERALLY
4 MSETATT. . . . . . . . LITERALLY
4 MSETCNS. . . . . . . . LITERALLY
4 MSETDMA. . . . . . . . LITERALLY
4 MSETPRIOR. . . . . . . LITERALLY
4 MSETUSR. . . . . . . . LITERALLY
128 0009H 1 MSOURCE. . . . . . . . BYTE MEMBER(CCB)
112 0009H 1 MSOURCE. . . . . . . . BYTE MEMBER(CCB)
41 0009H 1 MSOURCE. . . . . . . . BYTE MEMBER(OLDCCB)
44 0009H 1 MSOURCE. . . . . . . . BYTE MEMBER(LCB) 296 313
39 0009H 1 MSOURCE. . . . . . . . BYTE MEMBER(CCB)
122 0009H 1 MSOURCE. . . . . . . . BYTE MEMBER(CCB)
4 MSYSDAT. . . . . . . . LITERALLY
4 MWRITEF. . . . . . . . LITERALLY
4 MWRITEQ. . . . . . . . LITERALLY 100
4 MWRITERF . . . . . . . LITERALLY
PL/M-86 COMPILER PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 20
6 MXCONIN. . . . . . . . LITERALLY 82
6 MXCONOUT . . . . . . . LITERALLY 88 146 354
6 MXLSTOUT . . . . . . . LITERALLY
6 MXSWITCH . . . . . . . LITERALLY 171
6 MXUPSTATUS . . . . . . LITERALLY 187 249 256 268 278 320
56 0008H 8 NAME . . . . . . . . . BYTE ARRAY(8) MEMBER(QPB)
20 0008H 8 NAME . . . . . . . . . BYTE ARRAY(8) MEMBER(PD)
35 0006H 1 NCCB . . . . . . . . . BYTE MEMBER(XINIT)
9 0049H 1 NCCB . . . . . . . . . BYTE MEMBER(SD)
128 0007H 1 NCHAR. . . . . . . . . BYTE MEMBER(CCB)
122 0007H 1 NCHAR. . . . . . . . . BYTE MEMBER(CCB)
112 0007H 1 NCHAR. . . . . . . . . BYTE MEMBER(CCB)
44 0007H 1 NCHAR. . . . . . . . . BYTE MEMBER(LCB)
41 0007H 1 NCHAR. . . . . . . . . BYTE MEMBER(OLDCCB)
39 0007H 1 NCHAR. . . . . . . . . BYTE MEMBER(CCB) 207
11 NCIODEV. . . . . . . . LITERALLY
9 0085H 1 NCIODEV. . . . . . . . BYTE MEMBER(SD)
9 0047H 1 NCNS . . . . . . . . . BYTE MEMBER(SD) 157
11 NCONDEV. . . . . . . . LITERALLY
9 0083H 1 NCONDEV. . . . . . . . BYTE MEMBER(SD)
21 0000H 1 NCOPIES. . . . . . . . BYTE EXTERNAL(1) 21
20 001DH 1 NET. . . . . . . . . . BYTE MEMBER(PD)
56 0001H 1 NET. . . . . . . . . . BYTE MEMBER(QPB)
9 004AH 1 NFLAGS . . . . . . . . BYTE MEMBER(SD)
35 0007H 1 NLST . . . . . . . . . BYTE MEMBER(XINIT)
9 0048H 1 NLST . . . . . . . . . BYTE MEMBER(SD)
11 NLSTDEV. . . . . . . . LITERALLY
9 0084H 1 NLSTDEV. . . . . . . . BYTE MEMBER(SD)
56 0004H 2 NMSGS. . . . . . . . . WORD MEMBER(QPB)
2 NO . . . . . . . . . . LITERALLY
9 004EH 1 NSLAVES. . . . . . . . BYTE MEMBER(SD)
57 0000H 2 NULL . . . . . . . . . WORD DATA 132 135
35 0005H 1 NVCNS. . . . . . . . . BYTE MEMBER(XINIT)
8 0000H 2 OFFSET . . . . . . . . WORD MEMBER(SYSDATPTR)
19 0000H 2 OFFSET . . . . . . . . WORD MEMBER(PDPTR) 323
43 0000H 2 OFFSET . . . . . . . . WORD MEMBER(LCBPTR) 291 311
38 0000H 2 OFFSET . . . . . . . . WORD MEMBER(CCBPTR) 153 332
35 0000H 2 OFFSET . . . . . . . . WORD MEMBER(XINITPTR)
41 0000H 44 OLDCCB . . . . . . . . STRUCTURE BASED(OLDCCBPOINTER) 164 165 166 167 168 173
174 175
40 0010H 4 OLDCCBPOINTER. . . . . POINTER 41 152 164 165 166 167 168 172 173 174
175
9 008BH 1 OPENMAX. . . . . . . . BYTE MEMBER(SD)
9 0088H 2 OPENVEC. . . . . . . . WORD MEMBER(SD)
20 001CH 1 ORG. . . . . . . . . . BYTE MEMBER(PD)
78 0000H 2 P1 . . . . . . . . . . WORD PARAMETER 79
75 0000H 2 P1 . . . . . . . . . . WORD PARAMETER 76
78 0000H 2 P2 . . . . . . . . . . WORD PARAMETER 79
75 0000H 2 P2 . . . . . . . . . . WORD PARAMETER 76
20 001EH 2 PARENT . . . . . . . . WORD MEMBER(PD)
128 000AH 1 PC . . . . . . . . . . BYTE MEMBER(CCB)
112 000AH 1 PC . . . . . . . . . . BYTE MEMBER(CCB)
122 000AH 1 PC . . . . . . . . . . BYTE MEMBER(CCB)
41 000AH 1 PC . . . . . . . . . . BYTE MEMBER(OLDCCB)
39 000AH 1 PC . . . . . . . . . . BYTE MEMBER(CCB)
17 PCM11. . . . . . . . . LITERALLY
17 PCMCTLC. . . . . . . . LITERALLY 193
PL/M-86 COMPILER PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 21
17 PCMCTLO. . . . . . . . LITERALLY 240
17 PCMCTLS. . . . . . . . LITERALLY 261
17 PCMROUT. . . . . . . . LITERALLY 282
17 PCMRSX . . . . . . . . LITERALLY
20 0000H 48 PD . . . . . . . . . . STRUCTURE BASED(PDPOINTER) 193 240 259 261 282 291
297 325
58 0000H 2 PD . . . . . . . . . . WORD MEMBER(APB) 211
13 PDHDR. . . . . . . . . LITERALLY 20
18 0004H 4 PDPOINTER. . . . . . . POINTER 19 20 193 240 259 261 282 291 297 325
333
19 0004H 4 PDPTR. . . . . . . . . STRUCTURE AT 323
14 PDSTRUCTURE. . . . . . LITERALLY 20
16 PFACTIVE . . . . . . . LITERALLY
16 PFCHILDABORT . . . . . LITERALLY
16 PFCTLC . . . . . . . . LITERALLY
16 PFCTLD . . . . . . . . LITERALLY
16 PFKEEP . . . . . . . . LITERALLY
16 PFKERNAL . . . . . . . LITERALLY
16 PFNOCTLS . . . . . . . LITERALLY 259
16 PFPURE . . . . . . . . LITERALLY
16 PFRAW. . . . . . . . . LITERALLY 325
16 PFRESOURCE . . . . . . LITERALLY
16 PFSYS. . . . . . . . . LITERALLY
16 PFTABLE. . . . . . . . LITERALLY
16 PFTEMPKEEP . . . . . . LITERALLY
1 0000H PIN. . . . . . . . . . PROCEDURE STACK=0000H
330 06EEH 229 PLMSTART . . . . . . . PROCEDURE PUBLIC STACK=0022H
9 006EH 2 PLR. . . . . . . . . . WORD MEMBER(SD)
12 PNAMSIZ. . . . . . . . LITERALLY
20 002CH 2 PRET . . . . . . . . . WORD MEMBER(PD)
84 0014H 76 PRINTMSG . . . . . . . PROCEDURE STACK=0012H 228 229 231 232 234 304
20 0005H 1 PRIOR. . . . . . . . . BYTE MEMBER(PD)
15 PSCIOWAIT. . . . . . . LITERALLY 104
15 PSDELAY. . . . . . . . LITERALLY
15 PSDQ . . . . . . . . . LITERALLY
15 PSFLAGWAIT . . . . . . LITERALLY
15 PSNQ . . . . . . . . . LITERALLY
15 PSPOLL . . . . . . . . LITERALLY
15 PSRUN. . . . . . . . . LITERALLY
15 PSSLEEP. . . . . . . . LITERALLY
15 PSSWAP . . . . . . . . LITERALLY
15 PSTERM . . . . . . . . LITERALLY
9 005CH 2 PUL. . . . . . . . . . WORD MEMBER(SD)
75 0000H PXIOS1 . . . . . . . . PROCEDURE EXTERNAL(7) STACK=0000H 88 146 171 187 249
256 268 278 320 354
78 0000H PXIOS3 . . . . . . . . PROCEDURE WORD EXTERNAL(8) STACK=0000H 82
97 0004H 2 QADDR. . . . . . . . . WORD PARAMETER AUTOMATIC 98 99
92 0004H 2 QADDR. . . . . . . . . WORD PARAMETER AUTOMATIC 93 94
56 0002H 2 QADDR. . . . . . . . . WORD MEMBER(QPB) 94 99 131 134 141 203
122 0020H 2 QBUFF. . . . . . . . . WORD MEMBER(CCB)
112 0020H 2 QBUFF. . . . . . . . . WORD MEMBER(CCB)
41 0020H 2 QBUFF. . . . . . . . . WORD MEMBER(OLDCCB)
39 0020H 2 QBUFF. . . . . . . . . WORD MEMBER(CCB)
128 0020H 2 QBUFF. . . . . . . . . WORD MEMBER(CCB)
47 QDSTRUCTURE. . . . . . LITERALLY
54 QFDEV. . . . . . . . . LITERALLY
50 QFHIDE . . . . . . . . LITERALLY
PL/M-86 COMPILER PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 22
49 QFKEEP . . . . . . . . LITERALLY
48 QFMX . . . . . . . . . LITERALLY
53 QFRPL. . . . . . . . . LITERALLY
51 QFRSP. . . . . . . . . LITERALLY
52 QFTABLE. . . . . . . . LITERALLY
9 0074H 2 QLR. . . . . . . . . . WORD MEMBER(SD)
9 0060H 8 QMAU . . . . . . . . . WORD ARRAY(4) MEMBER(SD)
46 QNAMSIZ. . . . . . . . LITERALLY 56
56 0018H 16 QPB. . . . . . . . . . STRUCTURE 94 95 99 100 131 132 133 134 135 136
141 142 143 203 204 205
122 001EH 2 QPBBUFFPTR . . . . . . WORD MEMBER(CCB)
112 001EH 2 QPBBUFFPTR . . . . . . WORD MEMBER(CCB)
41 001EH 2 QPBBUFFPTR . . . . . . WORD MEMBER(OLDCCB)
39 001EH 2 QPBBUFFPTR . . . . . . WORD MEMBER(CCB)
128 001EH 2 QPBBUFFPTR . . . . . . WORD MEMBER(CCB)
128 0018H 1 QPBFLAGS . . . . . . . BYTE MEMBER(CCB)
122 0018H 1 QPBFLAGS . . . . . . . BYTE MEMBER(CCB)
112 0018H 1 QPBFLAGS . . . . . . . BYTE MEMBER(CCB)
41 0018H 1 QPBFLAGS . . . . . . . BYTE MEMBER(OLDCCB)
39 0018H 1 QPBFLAGS . . . . . . . BYTE MEMBER(CCB)
128 001CH 2 QPBNMSGS . . . . . . . WORD MEMBER(CCB)
122 001CH 2 QPBNMSGS . . . . . . . WORD MEMBER(CCB)
112 001CH 2 QPBNMSGS . . . . . . . WORD MEMBER(CCB)
41 001CH 2 QPBNMSGS . . . . . . . WORD MEMBER(OLDCCB)
39 001CH 2 QPBNMSGS . . . . . . . WORD MEMBER(CCB)
128 001AH 2 QPBQADDR . . . . . . . WORD MEMBER(CCB)
122 001AH 2 QPBQADDR . . . . . . . WORD MEMBER(CCB)
112 001AH 2 QPBQADDR . . . . . . . WORD MEMBER(CCB)
41 001AH 2 QPBQADDR . . . . . . . WORD MEMBER(OLDCCB)
39 001AH 2 QPBQADDR . . . . . . . WORD MEMBER(CCB)
128 0019H 1 QPBRESRVD. . . . . . . BYTE MEMBER(CCB)
122 0019H 1 QPBRESRVD. . . . . . . BYTE MEMBER(CCB)
112 0019H 1 QPBRESRVD. . . . . . . BYTE MEMBER(CCB)
41 0019H 1 QPBRESRVD. . . . . . . BYTE MEMBER(OLDCCB)
39 0019H 1 QPBRESRVD. . . . . . . BYTE MEMBER(CCB)
55 QPBSTRUCTURE . . . . . LITERALLY 56
128 0002H 2 QUEUE. . . . . . . . . WORD MEMBER(CCB)
122 0002H 2 QUEUE. . . . . . . . . WORD MEMBER(CCB)
112 0002H 2 QUEUE. . . . . . . . . WORD MEMBER(CCB)
44 0002H 2 QUEUE. . . . . . . . . WORD MEMBER(LCB) 316
41 0002H 2 QUEUE. . . . . . . . . WORD MEMBER(OLDCCB)
39 0002H 2 QUEUE. . . . . . . . . WORD MEMBER(CCB)
9 005EH 2 QUL. . . . . . . . . . WORD MEMBER(SD)
122 0028H 2 R1 . . . . . . . . . . WORD MEMBER(CCB)
112 0028H 2 R1 . . . . . . . . . . WORD MEMBER(CCB)
41 0028H 2 R1 . . . . . . . . . . WORD MEMBER(OLDCCB)
39 0028H 2 R1 . . . . . . . . . . WORD MEMBER(CCB)
128 0028H 2 R1 . . . . . . . . . . WORD MEMBER(CCB)
122 002AH 2 R2 . . . . . . . . . . WORD MEMBER(CCB)
112 002AH 2 R2 . . . . . . . . . . WORD MEMBER(CCB)
41 002AH 2 R2 . . . . . . . . . . WORD MEMBER(OLDCCB)
39 002AH 2 R2 . . . . . . . . . . WORD MEMBER(CCB)
128 002AH 2 R2 . . . . . . . . . . WORD MEMBER(CCB)
322 06C1H 45 RAW. . . . . . . . . . PROCEDURE BYTE STACK=001CH 341
92 0060H 23 READCHANGEMXQ. . . . . PROCEDURE STACK=000AH 164 169 198 245 252 266 273
288
128 000DH 1 RESERVD. . . . . . . . BYTE MEMBER(CCB)
PL/M-86 COMPILER PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 23
122 000DH 1 RESERVD. . . . . . . . BYTE MEMBER(CCB)
20 0028H 4 RESERVD. . . . . . . . BYTE ARRAY(4) MEMBER(PD)
112 000DH 1 RESERVD. . . . . . . . BYTE MEMBER(CCB)
41 000DH 1 RESERVD. . . . . . . . BYTE MEMBER(OLDCCB)
39 000DH 1 RESERVD. . . . . . . . BYTE MEMBER(CCB)
120 00DFH 22 RESETCONOUTFLAG. . . . PROCEDURE STACK=0014H 147 172 182 236 306 355
35 0003H 2 RESRVD1. . . . . . . . BYTE ARRAY(2) MEMBER(XINIT)
9 0068H 2 RLR. . . . . . . . . . WORD MEMBER(SD)
3 0000H 2 RSPLINK. . . . . . . . WORD EXTERNAL(0) 331
9 0042H 2 RSPSEG . . . . . . . . WORD MEMBER(SD)
58 0005H 1 RSRVD. . . . . . . . . BYTE MEMBER(APB)
20 002EH 2 SCRATCH. . . . . . . . WORD MEMBER(PD)
45 0036H 1 SCREEN . . . . . . . . BYTE 88 146 163 171 296 334 354
9 0000H 145 SD . . . . . . . . . . STRUCTURE BASED(SYSDATPOINTER) 153 157 291 311 332
10 0000H 1 SDBYTE . . . . . . . . BYTE BASED(SYSDATPOINTER) ARRAY(1)
8 0002H 2 SEGMENT. . . . . . . . WORD MEMBER(SYSDATPTR) 331
19 0002H 2 SEGMENT. . . . . . . . WORD MEMBER(PDPTR)
43 0002H 2 SEGMENT. . . . . . . . WORD MEMBER(LCBPTR) 331
38 0002H 2 SEGMENT. . . . . . . . WORD MEMBER(CCBPTR) 331
35 0002H 2 SEGMENT. . . . . . . . WORD MEMBER(XINITPTR)
150 0193H 39 SETCCB . . . . . . . . PROCEDURE STACK=0004H 163
110 00B8H 39 SETCONOUTFLAG. . . . . PROCEDURE STACK=0014H 145 165 170 227 303 353
20 0025H 1 SF3. . . . . . . . . . BYTE MEMBER(PD)
20 0026H 1 SF4. . . . . . . . . . BYTE MEMBER(PD)
20 0027H 1 SF5. . . . . . . . . . BYTE MEMBER(PD)
SHL. . . . . . . . . . BUILTIN 223
SIZE . . . . . . . . . BUILTIN 153 291 311
102 008EH 21 SLEEP. . . . . . . . . PROCEDURE STACK=000CH 115
9 0070H 2 SLR. . . . . . . . . . WORD MEMBER(SD)
9 0008H 56 SPACE1 . . . . . . . . WORD ARRAY(28) MEMBER(SD)
9 008CH 4 SPACE2 . . . . . . . . WORD ARRAY(2) MEMBER(SD)
84 0004H 4 SPTR . . . . . . . . . POINTER PARAMETER AUTOMATIC 85 87 88
9 004BH 1 SRCHDISK . . . . . . . BYTE MEMBER(SD)
128 0005H 1 STARTCOL . . . . . . . BYTE MEMBER(CCB)
122 0005H 1 STARTCOL . . . . . . . BYTE MEMBER(CCB)
112 0005H 1 STARTCOL . . . . . . . BYTE MEMBER(CCB)
44 0005H 1 STARTCOL . . . . . . . BYTE MEMBER(LCB)
41 0005H 1 STARTCOL . . . . . . . BYTE MEMBER(OLDCCB)
39 0005H 1 STARTCOL . . . . . . . BYTE MEMBER(CCB) 235 305
20 0004H 1 STAT . . . . . . . . . BYTE MEMBER(PD)
128 000EH 2 STATE. . . . . . . . . WORD MEMBER(CCB) 129
122 000EH 2 STATE. . . . . . . . . WORD MEMBER(CCB)
112 000EH 2 STATE. . . . . . . . . WORD MEMBER(CCB)
41 000EH 2 STATE. . . . . . . . . WORD MEMBER(OLDCCB) 166 167 168 174
39 000EH 2 STATE. . . . . . . . . WORD MEMBER(CCB) 159 176 177 179 184 199 201 202
246 253 267 274 289 298 314 368
85 0000H 1 STRING . . . . . . . . BYTE BASED(SPTR) ARRAY(1) 87 88
9 0000H 8 SUPMOD . . . . . . . . WORD ARRAY(4) MEMBER(SD)
156 01BAH 295 SWITCH . . . . . . . . PROCEDURE STACK=0018H 338
7 0000H 4 SYSDATPOINTER. . . . . POINTER 8 9 10 153 157 291 311 332
8 0000H 4 SYSDATPTR. . . . . . . STRUCTURE AT 331
2 TAB. . . . . . . . . . LITERALLY
9 0050H 1 TEMPDISK . . . . . . . BYTE MEMBER(SD)
58 0002H 2 TERM . . . . . . . . . WORD MEMBER(APB)
9 0072H 2 THRDRT . . . . . . . . WORD MEMBER(SD)
20 0002H 2 THREAD . . . . . . . . WORD MEMBER(PD)
35 0000H 1 TICK . . . . . . . . . BYTE MEMBER(XINIT)
PL/M-86 COMPILER PIN RSP - reads characters from keyboard 04/22/83 17:10:47 PAGE 24
9 0051H 1 TICKSPERSEC. . . . . . BYTE MEMBER(SD)
35 0001H 1 TICKSSEC . . . . . . . BYTE MEMBER(XINIT)
9 0080H 3 TOD. . . . . . . . . . BYTE ARRAY(3) MEMBER(SD)
9 007EH 2 TOD_DAY. . . . . . . . WORD MEMBER(SD)
2 TRUE . . . . . . . . . LITERALLY 185 270 324 328 335
251 04C7H 54 TURNOFFCTRLO . . . . . PROCEDURE STACK=0018H 287 369
20 0010H 2 UDA. . . . . . . . . . WORD MEMBER(PD)
20 0013H 1 USER . . . . . . . . . BYTE MEMBER(PD)
122 0024H 2 USLEEP . . . . . . . . WORD MEMBER(CCB)
112 0024H 2 USLEEP . . . . . . . . WORD MEMBER(CCB)
41 0024H 2 USLEEP . . . . . . . . WORD MEMBER(OLDCCB)
39 0024H 2 USLEEP . . . . . . . . WORD MEMBER(CCB) 210 277
128 0024H 2 USLEEP . . . . . . . . WORD MEMBER(CCB)
128 000BH 1 VC . . . . . . . . . . BYTE MEMBER(CCB)
122 000BH 1 VC . . . . . . . . . . BYTE MEMBER(CCB)
112 000BH 1 VC . . . . . . . . . . BYTE MEMBER(CCB)
41 000BH 1 VC . . . . . . . . . . BYTE MEMBER(OLDCCB)
39 000BH 1 VC . . . . . . . . . . BYTE MEMBER(CCB) 161
150 0004H 1 VC . . . . . . . . . . BYTE PARAMETER AUTOMATIC 151 153
128 0016H 2 VCMXQ. . . . . . . . . WORD MEMBER(CCB)
122 0016H 2 VCMXQ. . . . . . . . . WORD MEMBER(CCB)
112 0016H 2 VCMXQ. . . . . . . . . WORD MEMBER(CCB)
41 0016H 2 VCMXQ. . . . . . . . . WORD MEMBER(OLDCCB) 164 173
39 0016H 2 VCMXQ. . . . . . . . . WORD MEMBER(CCB) 169 183 198 208 245 247 252 254
266 269 273 275 288 319
9 007AH 2 VERNUM . . . . . . . . WORD MEMBER(SD)
9 0078H 2 VERSION. . . . . . . . WORD MEMBER(SD)
128 0012H 2 VINQ . . . . . . . . . WORD MEMBER(CCB)
122 0012H 2 VINQ . . . . . . . . . WORD MEMBER(CCB)
112 0012H 2 VINQ . . . . . . . . . WORD MEMBER(CCB)
41 0012H 2 VINQ . . . . . . . . . WORD MEMBER(OLDCCB)
39 0012H 2 VINQ . . . . . . . . . WORD MEMBER(CCB) 141 203
128 0014H 2 VOUTQ. . . . . . . . . WORD MEMBER(CCB) 131 134
122 0014H 2 VOUTQ. . . . . . . . . WORD MEMBER(CCB)
112 0014H 2 VOUTQ. . . . . . . . . WORD MEMBER(CCB)
41 0014H 2 VOUTQ. . . . . . . . . WORD MEMBER(OLDCCB)
39 0014H 2 VOUTQ. . . . . . . . . WORD MEMBER(CCB)
122 0026H 2 VSLEEP . . . . . . . . WORD MEMBER(CCB)
112 0026H 2 VSLEEP . . . . . . . . WORD MEMBER(CCB)
41 0026H 2 VSLEEP . . . . . . . . WORD MEMBER(OLDCCB)
39 0026H 2 VSLEEP . . . . . . . . WORD MEMBER(CCB)
128 0026H 2 VSLEEP . . . . . . . . WORD MEMBER(CCB) 137
20 001AH 2 WAIT . . . . . . . . . WORD MEMBER(PD)
106 00A3H 21 WAKEUP . . . . . . . . PROCEDURE STACK=000CH 124 137 210 277 316
126 00F5H 84 WAKEVOUT . . . . . . . PROCEDURE STACK=0014H 175 180 209 248 255 276
97 0077H 23 WRITECHANGEMXQ . . . . PROCEDURE STACK=000AH 173 183 208 247 254 269 275
319
139 0149H 74 WRITEVINQ. . . . . . . PROCEDURE STACK=001AH 195 242 263 284 342 370
35 0000H 12 XINIT. . . . . . . . . STRUCTURE BASED(XINITPOINTER)
35 XINITOFFSET. . . . . . LITERALLY
35 0008H 4 XINITPOINTER . . . . . POINTER 35
35 0008H 4 XINITPTR . . . . . . . STRUCTURE AT
MODULE INFORMATION:
CODE AREA SIZE = 07D3H 2003D
CONSTANT AREA SIZE = 002FH 47D
VARIABLE AREA SIZE = 004BH 75D
MAXIMUM STACK SIZE = 0022H 34D
795 LINES READ
0 PROGRAM WARNINGS
0 PROGRAM ERRORS
END OF PL/M-86 COMPILATION