mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-27 10:24:19 +00:00
1043 lines
49 KiB
Plaintext
1043 lines
49 KiB
Plaintext
PL/M-86 COMPILER CONCURRENT CP/M 86 --- DIR 1.0 PAGE 1
|
||
|
||
|
||
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE DIR
|
||
OBJECT MODULE PLACED IN DIRRSP.OBJ
|
||
COMPILER INVOKED BY: :F0: DIRRSP.PLM XREF OPTIMIZE(3) DEBUG
|
||
|
||
|
||
|
||
$TITLE('CONCURRENT CP/M 86 --- DIR 1.0 ')
|
||
$compact
|
||
|
||
|
||
/* Conditional compile:
|
||
rsp=0ffh produce a DIR.RSP type of file
|
||
rsp=0 produce a DIR.CMD file
|
||
*/
|
||
$set(rsp=0ffh)
|
||
|
||
$include(dirm.plm)
|
||
= /* dirm:
|
||
= This is the module included by DIRRSP or DIRCMD.
|
||
=
|
||
= Revised:
|
||
= Jan 80 by Thomas Rolander
|
||
= July 81 by Doug Huskey
|
||
= June 82 by Bill Fitler
|
||
= July 82 by Danny Horovitz (made an RSP)
|
||
= Dec 82 by Fran Borda (conditional comp)
|
||
= Mar 83 by Bill Fitler ( " " )
|
||
= Mar 83 by Danny Horovitz (control C fixes)
|
||
=
|
||
= Conditional compile:
|
||
= rsp=0ffh produce a DIR.RSP type of file
|
||
= rsp=0 produce a DIR.CMD file
|
||
= */
|
||
=
|
||
= /**** Vax commands to compile DIR.RSP and DIR.CMD:
|
||
=
|
||
= $ ccpmsetup
|
||
= $ plm86 dircmd.plm 'p1' 'p2' 'p3' 'p4' optimize(3) debug
|
||
= $ link86 f1:scd.obj, dircmd.obj to dircmd.lnk
|
||
= $ loc86 dircmd.lnk od(sm(code,dats,data,stack,const))-
|
||
= ad(sm(code(0), dats(10000h))) ss(stack(+32)) to dircmd.
|
||
= $ h86 dircmd
|
||
= $ ! DIR.RSP
|
||
= $ ! Note: separate code and data
|
||
= $ asm86 rhdir.a86 !Rsp Header DIR
|
||
= $ plm86 dirrsp.plm 'p1' 'p2' 'p3' 'p4' optimize(3) debug
|
||
= $ link86 rhdir.obj, dirrsp.obj to dirrsp.lnk
|
||
= $ loc86 dirrsp.lnk od(sm(code,dats,data,stack,const))-
|
||
= ad(sm(code(0), dats(10000h))) ss(stack(0)) to dirrsp.
|
||
= $ h86 dirrsp
|
||
=
|
||
= **** Then, on a micro:
|
||
= A>vax dircmd.h86 $fans
|
||
= A>vax dirrsp.h86 $fans
|
||
= A>gencmd dircmd data[b1000]
|
||
= A>ren dir.cmd=dircmd.cmd
|
||
= A>gencmd dirrsp data[b1000]
|
||
PL/M-86 COMPILER CONCURRENT CP/M 86 --- DIR 1.0 PAGE 2
|
||
|
||
|
||
= A>ren dir.rsp=dirrsp.cmd
|
||
=
|
||
= **** Notes: Both DIRCMD.PLM and DIRRSP.PLM include DIRM.PLM, after setting
|
||
= RSP flag appropriately.
|
||
=
|
||
= ****/
|
||
=
|
||
=
|
||
1 = dir:
|
||
= do;
|
||
=
|
||
= $include (:f1:copyrt.lit)
|
||
=1
|
||
=1 /*
|
||
=1 Copyright (C) 1983
|
||
=1 Digital Research
|
||
=1 P.O. Box 579
|
||
=1 Pacific Grove, CA 93950
|
||
=1 */
|
||
=1
|
||
=
|
||
= $include (:f1:comlit.lit)
|
||
=1
|
||
2 1 =1 declare
|
||
=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 cr lit '13',
|
||
=1 lf lit '10',
|
||
=1 tab lit '9',
|
||
=1 ctrlc lit '3',
|
||
=1 ff lit '12',
|
||
=1 page$len$offset lit '1ch',
|
||
=1 nopage$mode$offset lit '2Ch',
|
||
=1 sectorlen lit '128';
|
||
=
|
||
= $include (:f1:mfunc.lit)
|
||
=1
|
||
=1 /* Concurrent CP/M function numbers */
|
||
=1
|
||
3 1 =1 dcl m$prtbuf lit '9',
|
||
=1 m$select lit '14',
|
||
=1 m$openf lit '15',
|
||
=1 m$closef lit '16',
|
||
=1 m$deletef lit '19',
|
||
=1 m$readf lit '20',
|
||
=1 m$writef lit '21',
|
||
=1 m$makef lit '22',
|
||
=1 m$getlogin lit '24',
|
||
=1 m$curdsk lit '25',
|
||
=1 m$setdma lit '26',
|
||
=1 m$setatt lit '30',
|
||
=1 m$setusr lit '32',
|
||
PL/M-86 COMPILER CONCURRENT CP/M 86 --- DIR 1.0 PAGE 3
|
||
|
||
|
||
=1 m$readrf lit '33',
|
||
=1 m$writerf lit '34',
|
||
=1 m$resetdrv lit '37',
|
||
=1 m$errmode lit '45',
|
||
=1 m$dirbios lit '50',
|
||
=1 m$makeq lit '134',
|
||
=1 m$openq lit '135',
|
||
=1 m$deleteq lit '136',
|
||
=1 m$readq lit '137',
|
||
=1 m$creadq lit '138',
|
||
=1 m$writeq lit '139',
|
||
=1 m$cwriteq lit '140',
|
||
=1 m$delay lit '141',
|
||
=1 m$dispatch lit '142',
|
||
=1 m$setprior lit '145',
|
||
=1 m$attach lit '146',
|
||
=1 m$detach lit '147',
|
||
=1 m$setcns lit '148',
|
||
=1 m$parse lit '152',
|
||
=1 m$getcns lit '153',
|
||
=1 m$sysdat lit '154',
|
||
=1 m$getpd lit '156',
|
||
=1 m$abort lit '157';
|
||
=1
|
||
=1 /* Internal calls */
|
||
=1
|
||
4 1 =1 dcl mi$sleep lit '0212H',
|
||
=1 mi$wakeup lit '0213H';
|
||
=1
|
||
=
|
||
= $include (:f1:proces.lit)
|
||
=1
|
||
=1 /*
|
||
=1 Proces Literals MP/M-8086 II
|
||
=1 */
|
||
=1
|
||
5 1 =1 declare pnamsiz literally '8';
|
||
=1
|
||
6 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
|
||
7 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
|
||
8 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',
|
||
PL/M-86 COMPILER CONCURRENT CP/M 86 --- DIR 1.0 PAGE 4
|
||
|
||
|
||
=1 psciowait lit '09';
|
||
=1
|
||
9 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
|
||
10 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 (:f1:qd.lit)
|
||
=1
|
||
=1 /* Queue Descriptor */
|
||
=1
|
||
11 1 =1 dcl qnamsiz lit '8';
|
||
=1
|
||
12 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,
|
||
=1 nmsgs word,
|
||
=1 dq word,
|
||
=1 nq word,
|
||
=1 msgcnt word,
|
||
=1 msgout word,
|
||
=1 buffer word)';
|
||
=1
|
||
=1 /* queue flag values */
|
||
=1
|
||
13 1 =1 dcl qf$mx lit '001h'; /* Mutual Exclusion */
|
||
14 1 =1 dcl qf$keep lit '002h'; /* NO DELETE */
|
||
15 1 =1 dcl qf$hide lit '004h'; /* Not User writable */
|
||
16 1 =1 dcl qf$rsp lit '008h'; /* rsp queue */
|
||
17 1 =1 dcl qf$table lit '010h'; /* from qd table */
|
||
18 1 =1 dcl qf$rpl lit '020h'; /* rpl queue */
|
||
19 1 =1 dcl qf$dev lit '040h'; /* device queue */
|
||
=1
|
||
=1 /* Queue Parameter Block */
|
||
=1
|
||
20 1 =1 dcl qpb$structure lit 'structure(
|
||
=1 flgs byte,
|
||
PL/M-86 COMPILER CONCURRENT CP/M 86 --- DIR 1.0 PAGE 5
|
||
|
||
|
||
=1 net byte,
|
||
=1 qaddr word,
|
||
=1 nmsgs word,
|
||
=1 buffptr word,
|
||
=1 name (qnamsiz) byte )';
|
||
=1
|
||
=
|
||
= /**************************************
|
||
= * *
|
||
= * B D O S INTERFACE *
|
||
= * *
|
||
= **************************************/
|
||
=
|
||
=
|
||
21 1 = mon1:
|
||
= procedure (func,info) external;
|
||
22 2 = declare func byte;
|
||
23 2 = declare info address;
|
||
24 2 = end mon1;
|
||
=
|
||
25 1 = mon2:
|
||
= procedure (func,info) byte external;
|
||
26 2 = declare func byte;
|
||
27 2 = declare info address;
|
||
28 2 = end mon2;
|
||
=
|
||
29 1 = mon3:
|
||
= procedure (func,info) address external;
|
||
30 2 = declare func byte;
|
||
31 2 = declare info address;
|
||
32 2 = end mon3;
|
||
=
|
||
33 1 = mon4:
|
||
= procedure (func,info) pointer external;
|
||
34 2 = declare func byte;
|
||
35 2 = declare info address;
|
||
36 2 = end mon4;
|
||
=
|
||
=
|
||
=
|
||
37 1 = patch: procedure public; /* dummy area for patching code segments */
|
||
38 2 = declare i address;
|
||
= /* first statement = 9 bytes, rest are 5 bytes */
|
||
39 2 = i=i+5; i=i+5; i=i+5; i=i+5; i=i+5;
|
||
44 2 = i=i+5; i=i+5; i=i+5; i=i+5; i=i+5;
|
||
49 2 = i=i+5; i=i+5; i=i+5; i=i+5; i=i+5; /* about 79 bytes */
|
||
54 2 = end patch;
|
||
=
|
||
=
|
||
= $if rsp
|
||
55 1 = declare fcb (36) byte; /* 1st default fcb */
|
||
56 1 = declare fcb16 (1) byte at (@fcb(16)); /* 2nd default fcb */
|
||
= $else
|
||
= declare fcb (1) byte external; /* 1st default fcb */
|
||
= declare fcb16 (1) byte external; /* 2nd default fcb */
|
||
= $endif
|
||
=
|
||
PL/M-86 COMPILER CONCURRENT CP/M 86 --- DIR 1.0 PAGE 6
|
||
|
||
|
||
57 1 = write$console:
|
||
= procedure (char);
|
||
58 2 = declare char byte;
|
||
59 2 = call mon1 (2,char);
|
||
60 2 = end write$console;
|
||
=
|
||
61 1 = print$buf:
|
||
= procedure (buffer$address);
|
||
62 2 = declare buffer$address address;
|
||
63 2 = call mon1 (9,buffer$address);
|
||
64 2 = end print$buf;
|
||
=
|
||
65 1 = check$ctrl$c:
|
||
= procedure byte;
|
||
= $if rsp
|
||
66 2 = if (dir$pd.flag and pf$ctlC) <> 0 then
|
||
67 2 = do;
|
||
68 3 = dir$pd.flag = dir$pd.flag and not double(pf$ctlC);
|
||
69 3 = return(true);
|
||
70 3 = end;
|
||
= $endif
|
||
71 2 = return (false);
|
||
72 2 = end check$ctrl$c;
|
||
=
|
||
73 1 = search$first:
|
||
= procedure (fcb$address) byte;
|
||
74 2 = declare fcb$address address;
|
||
75 2 = return mon2 (17,fcb$address);
|
||
76 2 = end search$first;
|
||
=
|
||
77 1 = search$next:
|
||
= procedure (fcb$address) byte;
|
||
78 2 = declare fcb$address address;
|
||
79 2 = return mon2 (18,fcb$address);
|
||
80 2 = end search$next;
|
||
=
|
||
81 1 = setdma: procedure(dma);
|
||
82 2 = declare dma address;
|
||
83 2 = call mon1(26,dma);
|
||
84 2 = end setdma;
|
||
=
|
||
=
|
||
85 1 = get$user$code:
|
||
= procedure byte;
|
||
86 2 = return mon2 (32,0ffh);
|
||
87 2 = end get$user$code;
|
||
=
|
||
88 1 = set$user$code:
|
||
= procedure(user);
|
||
89 2 = declare user byte;
|
||
90 2 = call mon1 (32,user);
|
||
91 2 = end set$user$code;
|
||
=
|
||
92 1 = terminate:
|
||
= procedure;
|
||
93 2 = call mon1 (0,0);
|
||
94 2 = end terminate;
|
||
PL/M-86 COMPILER CONCURRENT CP/M 86 --- DIR 1.0 PAGE 7
|
||
|
||
|
||
=
|
||
95 1 = declare
|
||
= parse$fn structure (
|
||
= buff$adr address,
|
||
= fcb$adr address),
|
||
= delimiter based parse$fn.buff$adr byte;
|
||
96 1 = declare tail$len address;
|
||
=
|
||
97 1 = parse: procedure address;
|
||
98 2 = return mon3(152,.parse$fn);
|
||
99 2 = end parse;
|
||
=
|
||
=
|
||
100 1 = crlf:
|
||
= procedure;
|
||
101 2 = call write$console (0dh);
|
||
102 2 = call write$console (0ah);
|
||
103 2 = end crlf;
|
||
=
|
||
=
|
||
= /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||
=
|
||
=
|
||
= * * * GLOBAL VARIABLES * * *
|
||
=
|
||
=
|
||
= * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||
=
|
||
=
|
||
=
|
||
104 1 = declare dir$title (*) byte initial
|
||
= ('Directory for User x:','$');
|
||
=
|
||
105 1 = declare (sys,temp,dcnt,cnt,user) byte;
|
||
106 1 = declare
|
||
= i byte,
|
||
= new$user byte,
|
||
= sys$exists byte,
|
||
= incl$sys byte,
|
||
= option byte;
|
||
=
|
||
107 1 = declare
|
||
= dirbuf (128) byte;
|
||
=
|
||
=
|
||
= /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||
=
|
||
=
|
||
= * * * DIRECTORY DISPLAY * * *
|
||
=
|
||
=
|
||
= * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||
=
|
||
=
|
||
= /* display directory heading */
|
||
108 1 = heading: procedure;
|
||
=
|
||
PL/M-86 COMPILER CONCURRENT CP/M 86 --- DIR 1.0 PAGE 8
|
||
|
||
|
||
109 2 = if user > 9 then
|
||
110 2 = do;
|
||
111 3 = dir$title(19) = '1';
|
||
112 3 = dir$title(20) = user - 10 + '0';
|
||
113 3 = end;
|
||
= else
|
||
114 2 = do;
|
||
115 3 = dir$title(19) = ' ';
|
||
116 3 = dir$title(20) = user + '0';
|
||
117 3 = end;
|
||
118 2 = call print$buf (.dir$title);
|
||
119 2 = end heading;
|
||
=
|
||
= /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
||
=
|
||
= /*
|
||
= help: procedure;
|
||
= call mon1(m$prt$buf, .(cr, lf, tab, tab, tab ,'DIR EXAMPLES$'));
|
||
= call mon1(m$prt$buf, .(cr, lf, lf, 'dir', tab, tab,
|
||
= '(show all directory files on current drive and user)
|
||
= call mon1(m$prt$buf, .(cr, lf, 'dir [g3]', tab, tab, tab, tab,
|
||
= '(show non system files under user 3)$'));
|
||
= call mon1(m$prt$buf, .(cr, lf, 'dir a: b: [s]', tab, tab, tab,
|
||
= tab, '(show all files under current user on a: and b:)$'));
|
||
= call terminate;
|
||
= end help;
|
||
= */
|
||
=
|
||
= /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
||
=
|
||
= /* do next directory display */
|
||
120 1 = directory: procedure boolean;
|
||
=
|
||
121 2 = shown$nothing = false;
|
||
122 2 = if new$user then do;
|
||
124 3 = call heading;
|
||
125 3 = new$user = false;
|
||
126 3 = end;
|
||
127 2 = sys$exists = false;
|
||
128 2 = cnt = -1;
|
||
= /* if drive is 0 (default)
|
||
= then set to current disk */
|
||
129 2 = if fcb(0) = 0
|
||
= then fcb(0) = mon2 (m$curdsk,0) + 1;
|
||
131 2 = if fcb(1) = ' ' then
|
||
= /* check for blank filename => wildcard */
|
||
132 2 = do i = 1 to 11;
|
||
133 3 = fcb(i) = '?';
|
||
134 3 = end;
|
||
= /* get first file */
|
||
135 2 = if (dcnt := search$first (.fcb)) <> 0ffh then
|
||
136 2 = do while dcnt <> 0ffh;
|
||
137 3 = temp = shl(dcnt,5);
|
||
138 3 = sys = ((dirbuf(temp+10) and 80h) = 80h);
|
||
139 3 = if (dirbuf(temp) = user) and
|
||
= (incl$sys or not sys) then
|
||
140 3 = do;
|
||
PL/M-86 COMPILER CONCURRENT CP/M 86 --- DIR 1.0 PAGE 9
|
||
|
||
|
||
141 4 = if ((cnt:=cnt+1) mod 4) = 0 then
|
||
142 4 = do;
|
||
143 5 = call crlf;
|
||
144 5 = call write$console ('A'+fcb(0)-1);
|
||
145 5 = end;
|
||
= else
|
||
146 4 = do;
|
||
147 5 = call write$console (' ');
|
||
148 5 = end;
|
||
149 4 = call write$console (':');
|
||
150 4 = call write$console (' ');
|
||
151 4 = do i = 1 to 11;
|
||
152 5 = if i = 9 then call write$console (' ');
|
||
154 5 = call write$console
|
||
= (dirbuf(temp+i) and 7fh);
|
||
155 5 = if check$ctrl$c then
|
||
156 5 = return(false);
|
||
157 5 = end;
|
||
158 4 = end;
|
||
159 3 = else if sys then
|
||
160 3 = sys$exists = true;
|
||
= dcnt = search$next (.fcb);
|
||
162 3 = end;
|
||
163 2 = if cnt = -1 then
|
||
164 2 = do;
|
||
165 3 = call print$buf (.(0dh,0ah,
|
||
= 'File not found.','$'));
|
||
166 3 = end;
|
||
167 2 = if sys$exists then
|
||
168 2 = call print$buf (.(0dh,0ah,
|
||
= 'System Files Exist','$'));
|
||
169 2 = return(true);
|
||
170 2 = end directory;
|
||
=
|
||
= /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||
=
|
||
=
|
||
= * * * PARSING * * *
|
||
=
|
||
=
|
||
= * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||
=
|
||
=
|
||
= /* parse one file name, return true if got one */
|
||
171 1 = parse$file: procedure boolean;
|
||
172 2 = dcl i address;
|
||
173 2 = dcl buf based parse$fn.buff$adr (1) byte;
|
||
174 2 = dcl parse$ret address;
|
||
=
|
||
175 2 = if (parse$ret := parse$fn.buff$adr) = 0 then
|
||
176 2 = return(false);
|
||
177 2 = fcb(0), i = 0;
|
||
178 2 = parse$ret = parse; /* kludge around */
|
||
179 2 = do while parse$ret = 0 and buf(i) = '['; /* parse file name bugs */
|
||
180 3 = if (i := findb(@buf(i), ']', tail$len - i)) <> 0ffffh then
|
||
181 3 = do;
|
||
182 4 = parse$fn.buff$adr = .buf(i) + 1; /* skip right bracket */
|
||
PL/M-86 COMPILER CONCURRENT CP/M 86 --- DIR 1.0 PAGE 10
|
||
|
||
|
||
183 4 = i = 0;
|
||
184 4 = parse$ret = parse;
|
||
185 4 = end;
|
||
= else
|
||
186 3 = buf(i) = 0;
|
||
187 3 = end;
|
||
188 2 = parse$fn.buff$adr = parse$ret;
|
||
=
|
||
=
|
||
189 2 = if parse$fn.buff$adr <> 0ffffh then
|
||
190 2 = do;
|
||
191 3 = if fcb(1) <> ' ' then
|
||
192 3 = do;
|
||
193 4 = if parse$fn.buff$adr <> 0 and delimiter <> '[' and delimiter <> 0 then
|
||
194 4 = parse$fn.buff$adr = parse$fn.buff$adr + 1;
|
||
195 4 = return(true); /* parse$fn.buff$adr could = 0 */
|
||
196 4 = end;
|
||
197 3 = else if fcb(0) <> 0 and fcb(1) = ' ' then /* drive spec */
|
||
198 3 = do;
|
||
199 4 = call setb('?', @fcb(1), 11);
|
||
200 4 = return(true);
|
||
201 4 = end;
|
||
= end;
|
||
= else /* if parse$fn.buff$adr = 0ffffh then */
|
||
203 2 = do;
|
||
204 3 = call print$buf(.(cr, lf, 'Invalid filespec.$'));
|
||
205 3 = shown$nothing = false; /* don't show directory */
|
||
206 3 = return(false); /* also if parse$fn.buf$adr = 0 and fcb(0) = ' ' */
|
||
207 3 = end;
|
||
208 2 = end parse$file;
|
||
=
|
||
=
|
||
= /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
||
=
|
||
=
|
||
= /* parse & interpret all options - assume global */
|
||
209 1 = parse$options: procedure boolean;
|
||
210 2 = dcl (n,i) word;
|
||
211 2 = dcl (options, in$brackets, error) boolean;
|
||
212 2 = i = 0; /* parse file name doesn't work with delimiters */
|
||
213 2 = parse$fn.fcb$adr = .dirbuf;
|
||
214 2 = error = false;
|
||
215 2 = options = true;
|
||
216 2 = do while options and not error;
|
||
217 3 = if (n := findb(@tbuff(i), '[', tail$len - i)) = 0ffffh then
|
||
218 3 = options = false;
|
||
= else
|
||
219 3 = do;
|
||
220 4 = i = i + n + 1;
|
||
221 4 = parse$fn.buff$adr = .tbuff(i);
|
||
222 4 = in$brackets = true;
|
||
223 4 = do while in$brackets and not error;
|
||
224 5 = if (parse$fn.buff$adr := parse) <> 0ffffh then
|
||
225 5 = do;
|
||
226 6 = if dirbuf(1) = 'S' then
|
||
227 6 = incl$sys = true;
|
||
228 6 = else if dirbuf(1) = 'G' then
|
||
PL/M-86 COMPILER CONCURRENT CP/M 86 --- DIR 1.0 PAGE 11
|
||
|
||
|
||
229 6 = do;
|
||
230 7 = if dirbuf(3) <> ' ' then
|
||
231 7 = temp = dirbuf(3) - '0' + 10;
|
||
232 7 = else if dirbuf(2) <> ' ' then
|
||
233 7 = temp = dirbuf(2) - '0';
|
||
= if temp < 16 then
|
||
235 7 = do;
|
||
236 8 = call mon1(m$setusr, (user:=temp));
|
||
237 8 = new$user = true;
|
||
238 8 = end;
|
||
239 7 = end;
|
||
= else
|
||
240 6 = error = true;
|
||
241 6 = end; /* if parse */
|
||
242 5 = if delimiter = ']' or parse$fn.buff$adr = 0 or
|
||
= parse$fn.buff$adr = 0ffffh then
|
||
243 5 = in$brackets = false;
|
||
244 5 = end; /* while in$brackets */
|
||
245 4 = end; /* else */
|
||
246 3 = end; /* while options */
|
||
=
|
||
247 2 = if error then
|
||
248 2 = do;
|
||
249 3 = call print$buf(.(cr, lf, 'Invalid Command Option$'));
|
||
250 3 = return(false);
|
||
= /* call help; */
|
||
251 3 = end;
|
||
252 2 = return(true);
|
||
253 2 = end parse$options;
|
||
=
|
||
=
|
||
=
|
||
= /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||
=
|
||
=
|
||
= * * * M A I N P R O G R A M * * *
|
||
=
|
||
=
|
||
= * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||
=
|
||
= $if rsp
|
||
254 1 = declare cpd$pointer pointer; /* Calling PD pointer stuff */
|
||
255 1 = declare cpd$ptr structure (
|
||
= offset address, segment address) at (@cpd$pointer);
|
||
256 1 = declare calling$pd based cpd$pointer pd$structure;
|
||
257 1 = declare dpd$pointer pointer; /* DIR RSP PD pointer stuff */
|
||
258 1 = declare dpd$ptr structure (
|
||
= offset address, segment address) at (@dpd$pointer);
|
||
259 1 = declare dir$pd based dpd$pointer pd$structure;
|
||
260 1 = declare qdbuf (131) byte;
|
||
261 1 = declare dirqd qd$structure initial
|
||
= (0, 0, 0, qf$keep + qf$rsp, 'DIR ', 131, 1, 0, 0, 0, 0, .qdbuf);
|
||
262 1 = declare qpbbuf (131) byte;
|
||
263 1 = declare cpd$offset address at (@qpbbuf(0));
|
||
264 1 = declare tbuff (128) byte at (@qpbbuf(2));
|
||
265 1 = declare dirqpb qpb$structure initial
|
||
= (0, 0, 0, 0, .qpbbuf, 'DIR ');
|
||
PL/M-86 COMPILER CONCURRENT CP/M 86 --- DIR 1.0 PAGE 12
|
||
|
||
|
||
= $else
|
||
= declare tbuff (128) byte external;
|
||
= $endif
|
||
=
|
||
266 1 = declare shown$nothing boolean;
|
||
=
|
||
267 1 = plmstart: procedure public;
|
||
=
|
||
= /* initialization */
|
||
=
|
||
= $if rsp
|
||
268 2 = call mon1(m$make$q, .dirqd);
|
||
269 2 = call mon1(m$open$q, .dirqpb);
|
||
270 2 = call mon1(m$set$prior, 200); /* Set priority same as other transients*/
|
||
= $else
|
||
= user = get$user$code; /* ????? whf */
|
||
= incl$sys = (fcb(1) = 'S'); /* ????? why exclude if rsp? whf */
|
||
= $endif
|
||
=
|
||
271 2 = call setdma(.dirbuf);
|
||
= $if rsp
|
||
272 2 = cpd$pointer,dpd$pointer = mon4(m$sysdat, 0);
|
||
273 2 = dpd$ptr.offset = mon3(m$getpd,0);
|
||
= /* Don't allow control S, turn on tempkeep for control C checking */
|
||
274 2 = dir$pd.flag = dir$pd.flag or pf$noctls or pf$tempkeep;
|
||
= /* Read RSP Queue forever */
|
||
275 2 = do forever;
|
||
276 3 = call mon1(m$readq, .dirqpb);
|
||
277 3 = dir$pd.flag = dir$pd.flag and not double(pf$ctlC);
|
||
= /* Could be on from last DIR */
|
||
= /* set defaults same as calling process's, have both PDs so will poke */
|
||
= /* and not call O.S. */
|
||
278 3 = cpd$ptr.offset = cpd$offset;
|
||
279 3 = call mon1(m$setcns, calling$pd.cns);
|
||
280 3 = call mon1(m$setusr, (user := calling$pd.user));
|
||
281 3 = call mon1(m$select, calling$pd.dsk);
|
||
= $endif
|
||
282 3 = new$user = true;
|
||
283 3 = sys$exists, incl$sys = false;
|
||
284 3 = tail$len = findb(@tbuff, 0, 128);
|
||
=
|
||
= /* scan for options - all are global */
|
||
=
|
||
285 3 = if not parse$options then
|
||
286 3 = goto done; /* option error */
|
||
=
|
||
= /* do command line */
|
||
=
|
||
287 3 = shown$nothing = true;
|
||
= $if rsp
|
||
288 3 = parse$fn.buff$adr = .tbuff;
|
||
= $else
|
||
= parse$fn.buff$adr = (.tbuff) + 1;/* Skip # of bytes in buffer */
|
||
= $endif
|
||
289 3 = parse$fn.fcb$adr = .fcb;
|
||
290 3 = do while parse$file; /* false when no more files, sets */
|
||
291 4 = if not directory then /* shown$nothing=false if parsing error */
|
||
PL/M-86 COMPILER CONCURRENT CP/M 86 --- DIR 1.0 PAGE 13
|
||
|
||
|
||
292 4 = goto done; /* directory = false if console inpute */
|
||
293 4 = end;
|
||
=
|
||
294 3 = if shown$nothing then /* no files specified on command line */
|
||
295 3 = do;
|
||
296 4 = call setb('?', @fcb(1), 11);
|
||
297 4 = if not directory then
|
||
298 4 = goto done; /* false on console input */
|
||
299 4 = end;
|
||
300 3 = done:
|
||
= $if rsp
|
||
= call mon1(m$detach, 0);
|
||
301 3 = end; /* do forever */
|
||
= $else
|
||
= call terminate;
|
||
= $endif
|
||
=
|
||
302 2 = end plmstart;
|
||
=
|
||
303 1 = end dir;
|
||
|
||
PL/M-86 COMPILER CONCURRENT CP/M 86 --- DIR 1.0 PAGE 14
|
||
|
||
|
||
CROSS-REFERENCE LISTING
|
||
-----------------------
|
||
|
||
|
||
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
|
||
----- ------ ----- --------------------------------
|
||
|
||
|
||
259 0021H 1 ABORT. . . . . . . BYTE MEMBER(DIRPD)
|
||
256 0021H 1 ABORT. . . . . . . BYTE MEMBER(CALLINGPD)
|
||
2 BOOLEAN. . . . . . LITERALLY 120 171 209 211 266
|
||
173 0000H 1 BUF. . . . . . . . BYTE BASED(PARSEFN.BUFFADR) ARRAY(1) 179 180 182 186
|
||
95 0000H 2 BUFFADR. . . . . . WORD MEMBER(PARSEFN) 95 173 175 179 180 182 186 188 189
|
||
193 194 221 224 242 288
|
||
261 001AH 2 BUFFER . . . . . . WORD MEMBER(DIRQD)
|
||
61 0004H 2 BUFFERADDRESS. . . WORD PARAMETER AUTOMATIC 62 63
|
||
265 0006H 2 BUFFPTR. . . . . . WORD MEMBER(DIRQPB)
|
||
256 0000H 48 CALLINGPD. . . . . STRUCTURE BASED(CPDPOINTER) 279 280 281
|
||
57 0004H 1 CHAR . . . . . . . BYTE PARAMETER AUTOMATIC 58 59
|
||
65 007AH 29 CHECKCTRLC . . . . PROCEDURE BYTE STACK=0002H 155
|
||
259 0020H 1 CNS. . . . . . . . BYTE MEMBER(DIRPD)
|
||
256 0020H 1 CNS. . . . . . . . BYTE MEMBER(CALLINGPD) 279
|
||
105 0082H 1 CNT. . . . . . . . BYTE 128 141 163
|
||
259 0022H 2 CONMODE. . . . . . WORD MEMBER(DIRPD)
|
||
256 0022H 2 CONMODE. . . . . . WORD MEMBER(CALLINGPD)
|
||
263 018FH 2 CPDOFFSET. . . . . WORD AT 278
|
||
254 0010H 4 CPDPOINTER . . . . POINTER 255 256 272 279 280 281
|
||
255 0010H 4 CPDPTR . . . . . . STRUCTURE AT 278
|
||
2 CR . . . . . . . . LITERALLY 204 249
|
||
100 0106H 17 CRLF . . . . . . . PROCEDURE STACK=000EH 143
|
||
2 CTRLC. . . . . . . LITERALLY
|
||
2 DCL. . . . . . . . LITERALLY
|
||
105 0081H 1 DCNT . . . . . . . BYTE 135 136 137 161
|
||
95 0000H 1 DELIMITER. . . . . BYTE BASED(PARSEFN.BUFFADR) 193 242
|
||
1 0002H DIR. . . . . . . . PROCEDURE STACK=0000H
|
||
107 0089H 128 DIRBUF . . . . . . BYTE ARRAY(128) 138 139 154 213 226 228 230 231 232 233
|
||
271
|
||
120 0143H 339 DIRECTORY. . . . . PROCEDURE BYTE STACK=0012H 291 297
|
||
259 0000H 48 DIRPD. . . . . . . STRUCTURE BASED(DPDPOINTER) 66 68 274 277
|
||
261 0018H 28 DIRQD. . . . . . . STRUCTURE INITIAL 268
|
||
265 0034H 16 DIRQPB . . . . . . STRUCTURE INITIAL 269 276
|
||
104 0068H 23 DIRTITLE . . . . . BYTE ARRAY(23) INITIAL 111 112 115 116 118
|
||
81 0004H 2 DMA. . . . . . . . WORD PARAMETER AUTOMATIC 82 83
|
||
300 0593H DONE . . . . . . . LABEL 286 292 298
|
||
DOUBLE . . . . . . BUILTIN 68 277
|
||
257 0014H 4 DPDPOINTER . . . . POINTER 66 68 258 259 272 274 277
|
||
258 0014H 4 DPDPTR . . . . . . STRUCTURE AT 273
|
||
261 0012H 2 DQ . . . . . . . . WORD MEMBER(DIRQD)
|
||
256 0012H 1 DSK. . . . . . . . BYTE MEMBER(CALLINGPD) 281
|
||
259 0012H 1 DSK. . . . . . . . BYTE MEMBER(DIRPD)
|
||
256 0018H 2 DVRACT . . . . . . WORD MEMBER(CALLINGPD)
|
||
259 0018H 2 DVRACT . . . . . . WORD MEMBER(DIRPD)
|
||
211 010BH 1 ERROR. . . . . . . BYTE 214 216 223 240 247
|
||
2 FALSE. . . . . . . LITERALLY 71 121 125 127 156 176 205 206 214 218 243
|
||
250 283
|
||
55 0044H 36 FCB. . . . . . . . BYTE ARRAY(36) 56 129 130 131 133 135 144 161 177 191
|
||
197 199 289 296
|
||
PL/M-86 COMPILER CONCURRENT CP/M 86 --- DIR 1.0 PAGE 15
|
||
|
||
|
||
56 0054H 1 FCB16. . . . . . . BYTE ARRAY(1) AT
|
||
77 0004H 2 FCBADDRESS . . . . WORD PARAMETER AUTOMATIC 78 79
|
||
73 0004H 2 FCBADDRESS . . . . WORD PARAMETER AUTOMATIC 74 75
|
||
95 0002H 2 FCBADR . . . . . . WORD MEMBER(PARSEFN) 213 289
|
||
2 FF . . . . . . . . LITERALLY
|
||
FINDB. . . . . . . BUILTIN 180 217 284
|
||
256 0006H 2 FLAG . . . . . . . WORD MEMBER(CALLINGPD)
|
||
259 0006H 2 FLAG . . . . . . . WORD MEMBER(DIRPD) 66 68 274 277
|
||
261 0004H 2 FLAGS. . . . . . . WORD MEMBER(DIRQD)
|
||
265 0000H 1 FLGS . . . . . . . BYTE MEMBER(DIRQPB)
|
||
2 FOREVER. . . . . . LITERALLY 275
|
||
33 0000H 1 FUNC . . . . . . . BYTE PARAMETER 34
|
||
21 0000H 1 FUNC . . . . . . . BYTE PARAMETER 22
|
||
25 0000H 1 FUNC . . . . . . . BYTE PARAMETER 26
|
||
29 0000H 1 FUNC . . . . . . . BYTE PARAMETER 30
|
||
85 00C7H 15 GETUSERCODE. . . . PROCEDURE BYTE STACK=0008H
|
||
108 0117H 44 HEADING. . . . . . PROCEDURE STACK=000EH 124
|
||
106 0084H 1 I. . . . . . . . . BYTE 132 133 151 152 154
|
||
210 000EH 2 I. . . . . . . . . WORD 212 217 220 221
|
||
172 0008H 2 I. . . . . . . . . WORD 177 179 180 182 183 186
|
||
38 0000H 2 I. . . . . . . . . WORD 39 40 41 42 43 44 45 46 47 48 49 50
|
||
51 52 53
|
||
211 010AH 1 INBRACKETS . . . . BYTE 222 223 243
|
||
106 0087H 1 INCLSYS. . . . . . BYTE 139 227 283
|
||
25 0000H 2 INFO . . . . . . . WORD PARAMETER 27
|
||
29 0000H 2 INFO . . . . . . . WORD PARAMETER 31
|
||
21 0000H 2 INFO . . . . . . . WORD PARAMETER 23
|
||
33 0000H 2 INFO . . . . . . . WORD PARAMETER 35
|
||
259 0014H 1 LDSK . . . . . . . BYTE MEMBER(DIRPD)
|
||
256 0014H 1 LDSK . . . . . . . BYTE MEMBER(CALLINGPD)
|
||
2 LF . . . . . . . . LITERALLY 204 249
|
||
256 0000H 2 LINK . . . . . . . WORD MEMBER(CALLINGPD)
|
||
261 0000H 2 LINK . . . . . . . WORD MEMBER(DIRQD)
|
||
259 0000H 2 LINK . . . . . . . WORD MEMBER(DIRPD)
|
||
2 LIT. . . . . . . . LITERALLY 2 3 4 8 9 10 11 12 13 14 15
|
||
16 17 18 19 20
|
||
256 0024H 1 LST. . . . . . . . BYTE MEMBER(CALLINGPD)
|
||
259 0024H 1 LST. . . . . . . . BYTE MEMBER(DIRPD)
|
||
259 0015H 1 LUSER. . . . . . . BYTE MEMBER(DIRPD)
|
||
256 0015H 1 LUSER. . . . . . . BYTE MEMBER(CALLINGPD)
|
||
3 MABORT . . . . . . LITERALLY
|
||
3 MATTACH. . . . . . LITERALLY
|
||
3 MCLOSEF. . . . . . LITERALLY
|
||
3 MCREADQ. . . . . . LITERALLY
|
||
3 MCURDSK. . . . . . LITERALLY 130
|
||
3 MCWRITEQ . . . . . LITERALLY
|
||
3 MDELAY . . . . . . LITERALLY
|
||
3 MDELETEF . . . . . LITERALLY
|
||
3 MDELETEQ . . . . . LITERALLY
|
||
3 MDETACH. . . . . . LITERALLY 300
|
||
3 MDIRBIOS . . . . . LITERALLY
|
||
3 MDISPATCH. . . . . LITERALLY
|
||
256 0016H 2 MEM. . . . . . . . WORD MEMBER(CALLINGPD)
|
||
259 0016H 2 MEM. . . . . . . . WORD MEMBER(DIRPD)
|
||
3 MERRMODE . . . . . LITERALLY
|
||
3 MGETCNS. . . . . . LITERALLY
|
||
3 MGETLOGIN. . . . . LITERALLY
|
||
PL/M-86 COMPILER CONCURRENT CP/M 86 --- DIR 1.0 PAGE 16
|
||
|
||
|
||
3 MGETPD . . . . . . LITERALLY 273
|
||
4 MISLEEP. . . . . . LITERALLY
|
||
4 MIWAKEUP . . . . . LITERALLY
|
||
3 MMAKEF . . . . . . LITERALLY
|
||
3 MMAKEQ . . . . . . LITERALLY 268
|
||
21 0000H MON1 . . . . . . . PROCEDURE EXTERNAL(0) STACK=0000H 59 63 83 90 93 236
|
||
268 269 270 276 279 280 281 300
|
||
25 0000H MON2 . . . . . . . PROCEDURE BYTE EXTERNAL(1) STACK=0000H 75 79 86 130
|
||
29 0000H MON3 . . . . . . . PROCEDURE WORD EXTERNAL(2) STACK=0000H 98 273
|
||
33 0000H MON4 . . . . . . . PROCEDURE POINTER EXTERNAL(3) STACK=0000H 272
|
||
3 MOPENF . . . . . . LITERALLY
|
||
3 MOPENQ . . . . . . LITERALLY 269
|
||
3 MPARSE . . . . . . LITERALLY
|
||
3 MPRTBUF. . . . . . LITERALLY
|
||
3 MREADF . . . . . . LITERALLY
|
||
3 MREADQ . . . . . . LITERALLY 276
|
||
3 MREADRF. . . . . . LITERALLY
|
||
3 MRESETDRV. . . . . LITERALLY
|
||
3 MSELECT. . . . . . LITERALLY 281
|
||
3 MSETATT. . . . . . LITERALLY
|
||
3 MSETCNS. . . . . . LITERALLY 279
|
||
3 MSETDMA. . . . . . LITERALLY
|
||
3 MSETPRIOR. . . . . LITERALLY 270
|
||
3 MSETUSR. . . . . . LITERALLY 236 280
|
||
261 0016H 2 MSGCNT . . . . . . WORD MEMBER(DIRQD)
|
||
261 000EH 2 MSGLEN . . . . . . WORD MEMBER(DIRQD)
|
||
261 0018H 2 MSGOUT . . . . . . WORD MEMBER(DIRQD)
|
||
3 MSYSDAT. . . . . . LITERALLY 272
|
||
3 MWRITEF. . . . . . LITERALLY
|
||
3 MWRITEQ. . . . . . LITERALLY
|
||
3 MWRITERF . . . . . LITERALLY
|
||
210 000CH 2 N. . . . . . . . . WORD 217 220
|
||
256 0008H 8 NAME . . . . . . . BYTE ARRAY(8) MEMBER(CALLINGPD)
|
||
265 0008H 8 NAME . . . . . . . BYTE ARRAY(8) MEMBER(DIRQPB)
|
||
261 0006H 8 NAME . . . . . . . BYTE ARRAY(8) MEMBER(DIRQD)
|
||
259 0008H 8 NAME . . . . . . . BYTE ARRAY(8) MEMBER(DIRPD)
|
||
256 001DH 1 NET. . . . . . . . BYTE MEMBER(CALLINGPD)
|
||
265 0001H 1 NET. . . . . . . . BYTE MEMBER(DIRQPB)
|
||
261 0002H 1 NET. . . . . . . . BYTE MEMBER(DIRQD)
|
||
259 001DH 1 NET. . . . . . . . BYTE MEMBER(DIRPD)
|
||
106 0085H 1 NEWUSER. . . . . . BYTE 122 125 237 282
|
||
261 0010H 2 NMSGS. . . . . . . WORD MEMBER(DIRQD)
|
||
265 0004H 2 NMSGS. . . . . . . WORD MEMBER(DIRQPB)
|
||
2 NO . . . . . . . . LITERALLY
|
||
2 NOPAGEMODEOFFSET . LITERALLY
|
||
261 0014H 2 NQ . . . . . . . . WORD MEMBER(DIRQD)
|
||
258 0000H 2 OFFSET . . . . . . WORD MEMBER(DPDPTR) 273
|
||
255 0000H 2 OFFSET . . . . . . WORD MEMBER(CPDPTR) 278
|
||
106 0088H 1 OPTION . . . . . . BYTE
|
||
211 0109H 1 OPTIONS. . . . . . BYTE 215 216 218
|
||
259 001CH 1 ORG. . . . . . . . BYTE MEMBER(DIRPD)
|
||
256 001CH 1 ORG. . . . . . . . BYTE MEMBER(CALLINGPD)
|
||
261 0003H 1 ORG. . . . . . . . BYTE MEMBER(DIRQD)
|
||
2 PAGELENOFFSET. . . LITERALLY
|
||
256 001EH 2 PARENT . . . . . . WORD MEMBER(CALLINGPD)
|
||
259 001EH 2 PARENT . . . . . . WORD MEMBER(DIRPD)
|
||
97 00F7H 15 PARSE. . . . . . . PROCEDURE WORD STACK=0008H 178 184 224
|
||
PL/M-86 COMPILER CONCURRENT CP/M 86 --- DIR 1.0 PAGE 17
|
||
|
||
|
||
171 0296H 213 PARSEFILE. . . . . PROCEDURE BYTE STACK=000EH 290
|
||
95 0002H 4 PARSEFN. . . . . . STRUCTURE 95 98 173 175 179 180 182 186 188 189 193
|
||
194 213 221 224 242 288 289
|
||
209 036BH 269 PARSEOPTIONS . . . PROCEDURE BYTE STACK=000EH 285
|
||
174 000AH 2 PARSERET . . . . . WORD 175 178 179 184 188
|
||
37 0002H 85 PATCH. . . . . . . PROCEDURE PUBLIC STACK=0002H
|
||
10 PCM11. . . . . . . LITERALLY
|
||
10 PCMCTLC. . . . . . LITERALLY
|
||
10 PCMCTLO. . . . . . LITERALLY
|
||
10 PCMCTLS. . . . . . LITERALLY
|
||
10 PCMROUT. . . . . . LITERALLY
|
||
10 PCMRSX . . . . . . LITERALLY
|
||
6 PDHDR. . . . . . . LITERALLY 256 259
|
||
7 PDSTRUCTURE. . . . LITERALLY 256 259
|
||
9 PFACTIVE . . . . . LITERALLY
|
||
9 PFCHILDABORT . . . LITERALLY
|
||
9 PFCTLC . . . . . . LITERALLY 66 68 277
|
||
9 PFCTLD . . . . . . LITERALLY
|
||
9 PFKEEP . . . . . . LITERALLY
|
||
9 PFKERNAL . . . . . LITERALLY
|
||
9 PFNOCTLS . . . . . LITERALLY 274
|
||
9 PFPURE . . . . . . LITERALLY
|
||
9 PFRAW. . . . . . . LITERALLY
|
||
9 PFRESOURCE . . . . LITERALLY
|
||
9 PFSYS. . . . . . . LITERALLY
|
||
9 PFTABLE. . . . . . LITERALLY
|
||
9 PFTEMPKEEP . . . . LITERALLY 274
|
||
267 0478H 298 PLMSTART . . . . . PROCEDURE PUBLIC STACK=0016H
|
||
5 PNAMSIZ. . . . . . LITERALLY
|
||
256 002CH 2 PRET . . . . . . . WORD MEMBER(CALLINGPD)
|
||
259 002CH 2 PRET . . . . . . . WORD MEMBER(DIRPD)
|
||
61 006AH 16 PRINTBUF . . . . . PROCEDURE STACK=000AH 118 165 168 204 249
|
||
256 0005H 1 PRIOR. . . . . . . BYTE MEMBER(CALLINGPD)
|
||
259 0005H 1 PRIOR. . . . . . . BYTE MEMBER(DIRPD)
|
||
8 PSCIOWAIT. . . . . LITERALLY
|
||
8 PSDELAY. . . . . . LITERALLY
|
||
8 PSDQ . . . . . . . LITERALLY
|
||
8 PSFLAGWAIT . . . . LITERALLY
|
||
8 PSNQ . . . . . . . LITERALLY
|
||
8 PSPOLL . . . . . . LITERALLY
|
||
8 PSRUN. . . . . . . LITERALLY
|
||
8 PSSLEEP. . . . . . LITERALLY
|
||
8 PSSWAP . . . . . . LITERALLY
|
||
8 PSTERM . . . . . . LITERALLY
|
||
265 0002H 2 QADDR. . . . . . . WORD MEMBER(DIRQPB)
|
||
260 010CH 131 QDBUF. . . . . . . BYTE ARRAY(131) 261
|
||
12 QDSTRUCTURE. . . . LITERALLY 261
|
||
19 QFDEV. . . . . . . LITERALLY
|
||
15 QFHIDE . . . . . . LITERALLY
|
||
14 QFKEEP . . . . . . LITERALLY 261
|
||
13 QFMX . . . . . . . LITERALLY
|
||
18 QFRPL. . . . . . . LITERALLY
|
||
16 QFRSP. . . . . . . LITERALLY 261
|
||
17 QFTABLE. . . . . . LITERALLY
|
||
11 QNAMSIZ. . . . . . LITERALLY 261 265
|
||
262 018FH 131 QPBBUF . . . . . . BYTE ARRAY(131) 263 264 265
|
||
20 QPBSTRUCTURE . . . LITERALLY 265
|
||
PL/M-86 COMPILER CONCURRENT CP/M 86 --- DIR 1.0 PAGE 18
|
||
|
||
|
||
256 0028H 4 RESERVD. . . . . . BYTE ARRAY(4) MEMBER(CALLINGPD)
|
||
259 0028H 4 RESERVD. . . . . . BYTE ARRAY(4) MEMBER(DIRPD)
|
||
256 002EH 2 SCRATCH. . . . . . WORD MEMBER(CALLINGPD)
|
||
259 002EH 2 SCRATCH. . . . . . WORD MEMBER(DIRPD)
|
||
73 0097H 16 SEARCHFIRST. . . . PROCEDURE BYTE STACK=000AH 135
|
||
77 00A7H 16 SEARCHNEXT . . . . PROCEDURE BYTE STACK=000AH 161
|
||
2 SECTORLEN. . . . . LITERALLY
|
||
258 0002H 2 SEGMENT. . . . . . WORD MEMBER(DPDPTR)
|
||
255 0002H 2 SEGMENT. . . . . . WORD MEMBER(CPDPTR)
|
||
SETB . . . . . . . BUILTIN 199 296
|
||
81 00B7H 16 SETDMA . . . . . . PROCEDURE STACK=000AH 271
|
||
88 00D6H 19 SETUSERCODE. . . . PROCEDURE STACK=000AH
|
||
256 0025H 1 SF3. . . . . . . . BYTE MEMBER(CALLINGPD)
|
||
259 0025H 1 SF3. . . . . . . . BYTE MEMBER(DIRPD)
|
||
256 0026H 1 SF4. . . . . . . . BYTE MEMBER(CALLINGPD)
|
||
259 0026H 1 SF4. . . . . . . . BYTE MEMBER(DIRPD)
|
||
256 0027H 1 SF5. . . . . . . . BYTE MEMBER(CALLINGPD)
|
||
259 0027H 1 SF5. . . . . . . . BYTE MEMBER(DIRPD)
|
||
SHL. . . . . . . . BUILTIN 137
|
||
266 0212H 1 SHOWNNOTHING . . . BYTE 121 205 287 294
|
||
256 0004H 1 STAT . . . . . . . BYTE MEMBER(CALLINGPD)
|
||
259 0004H 1 STAT . . . . . . . BYTE MEMBER(DIRPD)
|
||
105 007FH 1 SYS. . . . . . . . BYTE 138 139 159
|
||
106 0086H 1 SYSEXISTS. . . . . BYTE 127 160 167 283
|
||
2 TAB. . . . . . . . LITERALLY
|
||
96 0006H 2 TAILLEN. . . . . . WORD 180 217 284
|
||
264 0191H 128 TBUFF. . . . . . . BYTE ARRAY(128) AT 217 221 284 288
|
||
105 0080H 1 TEMP . . . . . . . BYTE 137 138 139 154 231 233 234 236
|
||
92 00E9H 14 TERMINATE. . . . . PROCEDURE STACK=0008H
|
||
256 0002H 2 THREAD . . . . . . WORD MEMBER(CALLINGPD)
|
||
259 0002H 2 THREAD . . . . . . WORD MEMBER(DIRPD)
|
||
2 TRUE . . . . . . . LITERALLY 69 160 169 195 200 215 222 227 237 240 252
|
||
275 282 287
|
||
256 0010H 2 UDA. . . . . . . . WORD MEMBER(CALLINGPD)
|
||
259 0010H 2 UDA. . . . . . . . WORD MEMBER(DIRPD)
|
||
256 0013H 1 USER . . . . . . . BYTE MEMBER(CALLINGPD) 280
|
||
105 0083H 1 USER . . . . . . . BYTE 109 112 116 139 236 280
|
||
88 0004H 1 USER . . . . . . . BYTE PARAMETER AUTOMATIC 89 90
|
||
259 0013H 1 USER . . . . . . . BYTE MEMBER(DIRPD)
|
||
256 001AH 2 WAIT . . . . . . . WORD MEMBER(CALLINGPD)
|
||
259 001AH 2 WAIT . . . . . . . WORD MEMBER(DIRPD)
|
||
57 0057H 19 WRITECONSOLE . . . PROCEDURE STACK=000AH 101 102 144 147 149 150 153 154
|
||
|
||
|
||
|
||
MODULE INFORMATION:
|
||
|
||
CODE AREA SIZE = 05A2H 1442D
|
||
CONSTANT AREA SIZE = 0054H 84D
|
||
VARIABLE AREA SIZE = 0213H 531D
|
||
MAXIMUM STACK SIZE = 0016H 22D
|
||
699 LINES READ
|
||
0 PROGRAM ERROR(S)
|
||
|
||
END OF PL/M-86 COMPILATION
|