summaryrefslogtreecommitdiff
path: root/v2.0/bin/FILBP.PAS
blob: 71decc88c6e2f3dc05b7fa80a79e62510bb2528e (plain) (blame)
ofshex dumpascii
0000 7b 24 74 69 74 6c 65 3a 20 27 43 6f 6d 6d 61 6e 64 20 4c 69 6e 65 20 46 69 6c 65 6e 61 6d 65 20 {$title:.'Command.Line.Filename.
0020 50 61 72 73 65 72 27 20 24 6c 69 6e 65 73 69 7a 65 3a 37 39 7d 0d 0a 4d 4f 44 55 4c 45 20 70 61 Parser'.$linesize:79}..MODULE.pa
0040 72 73 65 3b 20 20 20 7b 24 64 65 62 75 67 2d 20 24 73 74 61 63 6b 63 6b 2b 7d 0d 0a 7b 20 63 6f rse;...{$debug-.$stackck+}..{.co
0060 6d 6d 61 6e 64 20 6c 69 6e 65 20 66 69 6c 65 6e 61 6d 65 20 70 61 72 73 69 6e 67 3b 20 20 42 6f mmand.line.filename.parsing;..Bo
0080 62 20 57 61 6c 6c 61 63 65 20 4d 69 63 72 6f 73 6f 66 74 20 37 2f 38 31 20 7d 0d 0a 43 4f 4e 53 b.Wallace.Microsoft.7/81.}..CONS
00a0 54 20 6d 61 78 66 69 6c 65 20 3d 20 33 32 3b 20 20 20 7b 4e 4f 54 45 3a 20 6d 75 73 74 20 62 65 T.maxfile.=.32;...{NOTE:.must.be
00c0 20 73 65 74 20 73 61 6d 65 20 61 73 20 63 61 6c 6c 65 72 7d 20 20 0d 0a 0d 0a 0d 0a 20 20 20 20 .set.same.as.caller}............
00e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 66 70 72 66 20 3d 20 27 50 52 46 27 3b 20 0d 0a 20 ..............dfprf.=.'PRF';....
0100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 73 70 72 66 20 3d 20 27 50 72 6f 66 69 6c .................msprf.=.'Profil
0120 65 20 66 69 6c 65 6e 61 6d 65 20 5b 27 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e.filename.[';..................
0140 20 20 64 66 68 73 74 20 3d 20 27 48 53 54 27 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..dfhst.=.'HST';................
0160 20 20 20 20 6d 73 68 73 74 20 3d 20 27 48 69 73 74 6f 67 72 61 6d 20 66 69 6c 65 6e 61 6d 65 20 ....mshst.=.'Histogram.filename.
0180 5b 27 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 66 6d 61 70 20 3d 20 27 [';....................dfmap.=.'
01a0 4d 41 50 27 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 73 6d 61 70 20 3d MAP';....................msmap.=
01c0 20 27 4d 61 70 20 66 69 6c 65 20 20 5b 27 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .'Map.file..[';.................
01e0 20 20 20 6e 75 6c 6e 20 3d 20 27 4e 55 4c 20 20 20 20 20 27 3b 0d 0a 0d 0a 54 59 50 45 0d 0a 20 ...nuln.=.'NUL.....';....TYPE...
0200 20 66 69 6c 65 6e 61 6d 20 3d 20 6c 73 74 72 69 6e 67 20 28 6d 61 78 66 69 6c 65 29 3b 20 20 20 .filenam.=.lstring.(maxfile);...
0220 20 20 20 20 7b 66 69 6c 65 6e 61 6d 65 20 70 61 72 61 6d 65 74 65 72 20 74 79 70 65 7d 0d 0a 20 ....{filename.parameter.type}...
0240 20 73 65 74 73 77 20 3d 20 41 52 52 41 59 20 5b 77 72 64 28 30 29 2e 2e 33 5d 20 4f 46 20 62 79 .setsw.=.ARRAY.[wrd(0)..3].OF.by
0260 74 65 3b 20 7b 73 77 69 74 63 68 65 73 20 70 61 72 61 6d 65 74 65 72 20 74 79 70 65 7d 0d 0a 20 te;.{switches.parameter.type}...
0280 20 73 65 74 73 20 3d 20 73 65 74 20 6f 66 20 30 2e 2e 33 31 3b 20 20 20 20 20 20 20 20 20 20 20 .sets.=.set.of.0..31;...........
02a0 20 20 20 20 7b 63 61 6c 6c 65 72 27 73 20 70 61 72 61 6d 65 74 65 72 20 74 79 70 65 7d 0d 0a 20 ....{caller's.parameter.type}...
02c0 20 73 65 74 63 20 3d 20 73 65 74 20 6f 66 20 63 68 72 28 30 29 2e 2e 63 68 72 28 31 32 37 29 3b .setc.=.set.of.chr(0)..chr(127);
02e0 20 20 20 20 7b 73 65 74 20 6f 66 20 63 68 61 72 61 63 74 65 72 73 7d 0d 0a 20 20 63 70 6d 65 78 ....{set.of.characters}....cpmex
0300 20 3d 20 73 74 72 69 6e 67 20 28 33 29 3b 20 20 63 70 6d 6e 6d 20 3d 20 73 74 72 69 6e 67 20 28 .=.string.(3);..cpmnm.=.string.(
0320 38 29 3b 0d 0a 20 20 63 70 6d 66 6e 20 3d 20 52 45 43 4f 52 44 0d 0a 20 20 20 20 20 20 20 20 20 8);....cpmfn.=.RECORD...........
0340 20 20 20 63 66 64 20 5b 30 5d 3a 20 73 74 72 69 6e 67 20 28 32 29 3b 0d 0a 20 20 20 20 20 20 20 ...cfd.[0]:.string.(2);.........
0360 20 20 20 20 20 63 66 6e 20 5b 32 5d 3a 20 63 70 6d 6e 6d 3b 20 20 63 66 70 20 5b 31 30 5d 3a 20 .....cfn.[2]:.cpmnm;..cfp.[10]:.
0380 63 68 61 72 3b 20 20 63 66 65 20 5b 31 31 5d 3a 20 63 70 6d 65 78 3b 0d 0a 20 20 20 20 20 20 20 char;..cfe.[11]:.cpmex;.........
03a0 20 20 20 45 4e 44 3b 0d 0a 20 20 73 65 74 62 69 74 74 20 3d 20 41 52 52 41 59 20 5b 77 72 64 28 ...END;....setbitt.=.ARRAY.[wrd(
03c0 30 29 2e 2e 37 5d 20 4f 46 20 62 79 74 65 3b 0d 0a 43 4f 4e 53 54 20 73 65 74 62 69 74 20 3d 20 0)..7].OF.byte;..CONST.setbit.=.
03e0 73 65 74 62 69 74 74 20 28 31 32 38 2c 20 36 34 2c 20 33 32 2c 20 31 36 2c 20 38 2c 20 34 2c 20 setbitt.(128,.64,.32,.16,.8,.4,.
0400 32 2c 20 31 29 3b 0d 0a 0d 0a 56 41 52 20 69 64 73 65 74 3a 73 65 74 63 3b 20 56 41 4c 55 45 20 2,.1);....VAR.idset:setc;.VALUE.
0420 69 64 73 65 74 3a 3d 73 65 74 63 20 5b 27 41 27 2e 2e 27 5a 27 2c 27 61 27 2e 2e 27 7a 27 2c 27 idset:=setc.['A'..'Z','a'..'z','
0440 30 27 2e 2e 27 39 27 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 27 24 27 2c 20 27 26 27 2c 20 0'..'9',..............'$',.'&',.
0460 27 23 27 2c 20 27 40 27 2c 20 27 21 27 2c 20 27 25 27 2c 20 27 2d 27 2c 20 27 5f 27 2c 20 27 60 '#',.'@',.'!',.'%',.'-',.'_',.'`
0480 27 2c 20 27 27 27 27 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 27 28 27 2c 20 27 29 27 2c 20 ',.'''',..............'(',.')',.
04a0 27 3c 27 2c 20 27 3e 27 2c 20 27 7b 27 2c 20 27 7d 27 2c 20 27 5c 27 2c 20 27 5e 27 2c 20 27 7e '<',.'>',.'{',.'}',.'\',.'^',.'~
04c0 27 2c 20 27 7c 27 5d 3b 0d 0a 56 41 52 20 64 72 73 65 74 3a 73 65 74 63 3b 20 56 41 4c 55 45 20 ',.'|'];..VAR.drset:setc;.VALUE.
04e0 64 72 73 65 74 3a 3d 73 65 74 63 20 5b 27 41 27 2e 2e 27 4f 27 2c 27 61 27 2e 2e 27 6f 27 5d 3b drset:=setc.['A'..'O','a'..'o'];
0500 0d 0a 0d 0a 50 52 4f 43 45 44 55 52 45 20 66 69 6c 6c 63 20 28 64 73 74 3a 20 61 64 72 6d 65 6d ....PROCEDURE.fillc.(dst:.adrmem
0520 3b 20 6c 65 6e 3a 20 77 6f 72 64 3b 20 20 63 68 63 3a 20 63 68 61 72 29 3b 20 20 65 78 74 65 72 ;.len:.word;..chc:.char);..exter
0540 6e 3b 0d 0a 50 52 4f 43 45 44 55 52 45 20 6d 6f 76 65 6c 20 28 70 72 66 3a 20 61 64 72 6d 65 6d n;..PROCEDURE.movel.(prf:.adrmem
0560 3b 20 64 73 74 3a 20 61 64 72 6d 65 6d 3b 20 6c 65 6e 3a 20 77 6f 72 64 29 3b 20 65 78 74 65 72 ;.dst:.adrmem;.len:.word);.exter
0580 6e 3b 0d 0a 50 52 4f 43 45 44 55 52 45 20 70 74 79 75 71 71 20 28 6c 65 6e 3a 20 77 6f 72 64 3b n;..PROCEDURE.ptyuqq.(len:.word;
05a0 20 70 72 66 3a 20 61 64 73 6d 65 6d 29 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 74 65 72 .prf:.adsmem);.............exter
05c0 6e 3b 0d 0a 50 52 4f 43 45 44 55 52 45 20 70 6c 79 75 71 71 3b 20 20 20 20 20 20 20 20 20 20 20 n;..PROCEDURE.plyuqq;...........
05e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 74 65 72 ...........................exter
0600 6e 3b 0d 0a 46 55 4e 43 54 49 4f 4e 20 67 74 79 75 71 71 20 28 6c 65 6e 3a 20 77 6f 72 64 3b 20 n;..FUNCTION.gtyuqq.(len:.word;.
0620 64 73 74 3a 20 61 64 73 6d 65 6d 29 3a 20 77 6f 72 64 3b 20 20 20 20 20 20 20 20 65 78 74 65 72 dst:.adsmem):.word;........exter
0640 6e 3b 0d 0a 0d 0a 50 52 4f 43 45 44 55 52 45 20 66 69 6c 62 6d 20 0d 0a 28 56 41 52 20 70 72 66 n;....PROCEDURE.filbm...(VAR.prf
0660 66 69 6c 2c 68 73 74 66 69 6c 2c 6d 61 70 66 69 6c 3a 20 66 69 6c 65 6e 61 6d 3b 20 20 56 41 52 fil,hstfil,mapfil:.filenam;..VAR
0680 20 6f 6c 64 73 77 3a 20 73 65 74 73 77 29 3b 0d 0a 28 2a 20 73 65 74 73 20 74 68 65 20 66 69 6c .oldsw:.setsw);..(*.sets.the.fil
06a0 65 6e 61 6d 65 73 20 66 6f 72 20 73 6f 75 72 63 65 2c 20 68 73 74 65 63 74 2c 20 6c 69 73 74 69 enames.for.source,.hstect,.listi
06c0 6e 67 2c 20 61 6e 64 20 73 65 63 6f 6e 64 0d 0a 20 6c 69 73 74 69 6e 67 20 28 68 73 74 65 63 74 ng,.and.second...listing.(hstect
06e0 20 6c 69 73 74 20 6f 72 20 63 72 6f 73 73 20 72 65 66 29 3b 20 20 61 6c 73 6f 20 73 65 74 73 20 .list.or.cross.ref);..also.sets.
0700 61 6e 79 20 73 77 69 74 63 68 65 73 2c 0d 0a 20 61 6c 6c 6f 77 69 6e 67 20 74 68 6f 73 65 20 69 any.switches,...allowing.those.i
0720 6e 20 74 68 65 20 6f 6c 64 73 77 20 73 65 74 20 61 6e 64 20 72 65 74 75 72 6e 69 6e 67 20 74 68 n.the.oldsw.set.and.returning.th
0740 65 6d 20 69 6e 20 6f 6c 64 73 77 20 2a 29 0d 0a 56 41 52 20 70 72 66 2c 20 68 73 74 2c 20 6d 61 em.in.oldsw.*)..VAR.prf,.hst,.ma
0760 70 3a 20 63 70 6d 66 6e 3b 20 7b 74 61 72 67 65 74 20 66 69 6c 65 6e 61 6d 65 73 20 69 6e 20 43 p:.cpmfn;.{target.filenames.in.C
0780 50 4d 20 66 6f 72 6d 61 74 7d 0d 0a 20 20 6e 65 77 73 77 3a 20 73 65 74 73 77 3b 20 20 20 20 20 PM.format}....newsw:.setsw;.....
07a0 20 20 20 20 20 20 20 20 20 20 20 7b 6e 65 77 20 73 77 69 74 63 68 65 73 2c 20 72 65 74 75 72 6e ...........{new.switches,.return
07c0 20 69 6e 20 6f 6c 64 73 77 7d 0d 0a 20 20 71 71 3a 20 6c 73 74 72 69 6e 67 20 28 31 32 38 29 3b .in.oldsw}....qq:.lstring.(128);
07e0 20 69 71 3a 20 77 6f 72 64 3b 20 7b 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2c 20 63 75 72 72 65 6e .iq:.word;.{command.line,.curren
0800 74 20 69 6e 64 65 78 7d 0d 0a 20 20 70 71 71 3a 20 61 64 73 20 6f 66 20 6c 73 74 72 69 6e 67 20 t.index}....pqq:.ads.of.lstring.
0820 28 31 32 38 29 3b 20 20 20 20 7b 61 64 64 72 65 73 73 20 43 50 4d 2d 74 79 70 65 20 63 6f 6d 6d (128);....{address.CPM-type.comm
0840 61 6e 64 20 6c 69 6e 65 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 65 73 78 71 71 20 and.line}................cesxqq.
0860 5b 65 78 74 65 72 6e 5d 3a 20 77 6f 72 64 3b 20 20 20 7b 73 65 67 6d 65 6e 74 20 76 61 6c 7d 0d [extern]:.word;...{segment.val}.
0880 0a 20 20 63 3a 20 63 68 61 72 3b 20 20 6c 3a 20 77 6f 72 64 3b 20 20 69 73 63 6f 6d 6d 61 3a 20 ...c:.char;..l:.word;..iscomma:.
08a0 62 6f 6f 6c 65 61 6e 3b 20 20 69 3a 20 77 6f 72 64 3b 20 7b 6f 74 68 65 72 20 73 74 75 66 66 7d boolean;..i:.word;.{other.stuff}
08c0 0d 0a 0d 0a 20 20 46 55 4e 43 54 49 4f 4e 20 70 61 72 63 68 72 20 28 63 68 3a 20 63 68 61 72 29 ......FUNCTION.parchr.(ch:.char)
08e0 3a 20 62 6f 6f 6c 65 61 6e 3b 20 20 7b 74 72 75 65 20 69 66 66 20 43 48 20 66 6f 75 6e 64 7d 0d :.boolean;..{true.iff.CH.found}.
0900 0a 20 20 42 45 47 49 4e 20 0d 0a 20 20 20 20 70 61 72 63 68 72 20 3a 3d 20 28 69 71 20 3c 3d 20 ...BEGIN.......parchr.:=.(iq.<=.
0920 71 71 2e 6c 65 6e 29 20 41 4e 44 20 28 71 71 20 5b 69 71 5d 20 3d 20 63 68 29 3b 0d 0a 20 20 20 qq.len).AND.(qq.[iq].=.ch);.....
0940 20 49 46 20 72 65 73 75 6c 74 20 28 70 61 72 63 68 72 29 20 54 48 45 4e 20 69 71 20 3a 3d 20 69 .IF.result.(parchr).THEN.iq.:=.i
0960 71 2b 31 3b 0d 0a 20 20 45 4e 44 3b 0d 0a 20 20 0d 0a 20 20 46 55 4e 43 54 49 4f 4e 20 75 70 70 q+1;....END;........FUNCTION.upp
0980 65 72 63 3a 20 63 68 61 72 3b 20 20 7b 72 65 74 75 72 6e 20 63 75 72 72 65 6e 74 20 63 68 61 72 erc:.char;..{return.current.char
09a0 2c 20 69 6e 20 75 70 70 65 72 20 63 61 73 65 7d 0d 0a 20 20 42 45 47 49 4e 0d 0a 20 20 20 20 75 ,.in.upper.case}....BEGIN......u
09c0 70 70 65 72 63 20 3a 3d 20 71 71 5b 69 71 5d 3b 0d 0a 20 20 20 20 49 46 20 72 65 73 75 6c 74 20 pperc.:=.qq[iq];......IF.result.
09e0 28 75 70 70 65 72 63 29 20 3e 3d 20 27 61 27 0d 0a 20 20 20 20 20 20 54 48 45 4e 20 75 70 70 65 (upperc).>=.'a'........THEN.uppe
0a00 72 63 20 3a 3d 20 63 68 72 20 28 6f 72 64 20 28 72 65 73 75 6c 74 20 28 75 70 70 65 72 63 29 29 rc.:=.chr.(ord.(result.(upperc))
0a20 20 2d 20 33 32 29 3b 0d 0a 20 20 45 4e 44 3b 0d 0a 0d 0a 20 20 50 52 4f 43 45 44 55 52 45 20 62 .-.32);....END;......PROCEDURE.b
0a40 6c 61 6e 6b 73 3b 20 20 7b 73 6b 69 70 20 62 6c 61 6e 6b 73 20 61 6e 64 20 73 65 74 20 61 6e 79 lanks;..{skip.blanks.and.set.any
0a60 20 73 77 69 74 63 68 65 73 7d 0d 0a 20 20 42 45 47 49 4e 0d 0a 20 20 20 20 57 48 49 4c 45 20 70 .switches}....BEGIN......WHILE.p
0a80 61 72 63 68 72 20 28 27 20 27 29 20 44 4f 20 7b 6e 6f 74 68 69 6e 67 7d 3b 0d 0a 20 20 20 20 49 archr.('.').DO.{nothing};......I
0aa0 46 20 70 61 72 63 68 72 20 28 27 2f 27 29 20 54 48 45 4e 0d 0a 20 20 20 20 42 45 47 49 4e 0d 0a F.parchr.('/').THEN......BEGIN..
0ac0 20 20 20 20 20 20 49 46 20 28 69 71 20 3c 3d 20 71 71 2e 6c 65 6e 29 0d 0a 20 20 20 20 20 20 41 ......IF.(iq.<=.qq.len)........A
0ae0 4e 44 20 54 48 45 4e 20 28 6f 72 64 20 28 75 70 70 65 72 63 29 20 2d 20 36 34 29 20 49 4e 20 72 ND.THEN.(ord.(upperc).-.64).IN.r
0b00 65 74 79 70 65 20 28 73 65 74 73 2c 20 6f 6c 64 73 77 29 20 0d 0a 20 20 20 20 20 20 54 48 45 4e etype.(sets,.oldsw).........THEN
0b20 0d 0a 20 20 20 20 20 20 20 20 42 45 47 49 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 69 20 3a 3d 20 ..........BEGIN............i.:=.
0b40 77 72 64 20 28 75 70 70 65 72 63 29 20 2d 20 36 34 3b 20 20 69 71 20 3a 3d 20 69 71 20 2b 20 31 wrd.(upperc).-.64;..iq.:=.iq.+.1
0b60 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 6e 65 77 73 77 5b 69 20 44 49 56 20 38 5d 20 3a 3d 20 6e ;............newsw[i.DIV.8].:=.n
0b80 65 77 73 77 5b 69 20 44 49 56 20 38 5d 20 4f 52 20 73 65 74 62 69 74 5b 69 20 4d 4f 44 20 38 5d ewsw[i.DIV.8].OR.setbit[i.MOD.8]
0ba0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 62 6c 61 6e 6b 73 3b 20 20 20 7b 72 65 63 75 72 73 65 20 ;............blanks;...{recurse.
0bc0 66 6f 72 20 6d 6f 72 65 7d 0d 0a 20 20 20 20 20 20 20 20 45 4e 44 0d 0a 20 20 20 20 20 20 45 4c for.more}..........END........EL
0be0 53 45 20 69 71 20 3a 3d 20 69 71 20 2d 20 31 3b 20 20 20 7b 70 75 74 20 22 2f 22 20 62 61 63 6b SE.iq.:=.iq.-.1;...{put."/".back
0c00 20 6f 6e 20 6c 69 6e 65 20 74 6f 20 67 65 74 20 65 72 72 6f 72 7d 0d 0a 20 20 20 20 45 4e 44 3b .on.line.to.get.error}......END;
0c20 0d 0a 20 20 45 4e 44 3b 0d 0a 0d 0a 20 20 46 55 4e 43 54 49 4f 4e 20 70 61 72 73 65 74 20 28 56 ....END;......FUNCTION.parset.(V
0c40 41 52 20 64 73 74 3a 20 73 74 72 69 6e 67 3b 20 20 43 4f 4e 53 54 20 63 68 73 3a 20 73 65 74 63 AR.dst:.string;..CONST.chs:.setc
0c60 29 3a 20 62 6f 6f 6c 65 61 6e 3b 0d 0a 20 20 28 2a 20 4d 6f 76 65 20 63 68 61 72 61 63 74 65 72 ):.boolean;....(*.Move.character
0c80 73 20 66 72 6f 6d 20 71 71 20 74 6f 20 44 53 54 20 61 73 20 6c 6f 6e 67 20 61 73 20 74 68 65 79 s.from.qq.to.DST.as.long.as.they
0ca0 20 61 72 65 20 69 6e 20 43 48 53 0d 0a 20 20 20 20 20 44 65 6c 65 74 65 73 20 66 72 6f 6d 20 71 .are.in.CHS.......Deletes.from.q
0cc0 71 2c 20 62 6c 61 6e 6b 73 20 44 53 54 2c 20 72 65 74 75 72 6e 73 20 74 72 75 65 20 69 66 20 61 q,.blanks.DST,.returns.true.if.a
0ce0 6e 79 20 6d 6f 76 65 64 20 2a 29 0d 0a 20 20 56 41 52 20 69 3a 20 77 6f 72 64 3b 20 20 20 0d 0a ny.moved.*)....VAR.i:.word;.....
0d00 20 20 42 45 47 49 4e 0d 0a 20 20 20 20 66 69 6c 6c 63 20 28 61 64 72 20 64 73 74 2c 20 77 72 64 ..BEGIN......fillc.(adr.dst,.wrd
0d20 20 28 75 70 70 65 72 20 28 64 73 74 29 29 2c 20 27 20 27 29 3b 20 20 70 61 72 73 65 74 20 3a 3d .(upper.(dst)),.'.');..parset.:=
0d40 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 46 4f 52 20 69 20 3a 3d 20 31 20 54 4f 20 77 72 64 20 28 .false;......FOR.i.:=.1.TO.wrd.(
0d60 75 70 70 65 72 20 28 64 73 74 29 29 20 44 4f 0d 0a 20 20 20 20 20 20 49 46 20 28 69 71 20 3e 20 upper.(dst)).DO........IF.(iq.>.
0d80 71 71 2e 6c 65 6e 29 20 4f 52 20 45 4c 53 45 20 4e 4f 54 20 28 71 71 20 5b 69 71 5d 20 49 4e 20 qq.len).OR.ELSE.NOT.(qq.[iq].IN.
0da0 63 68 73 29 20 0d 0a 20 20 20 20 20 20 54 48 45 4e 20 42 52 45 41 4b 0d 0a 20 20 20 20 20 20 45 chs).........THEN.BREAK........E
0dc0 4c 53 45 20 0d 0a 20 20 20 20 20 20 42 45 47 49 4e 0d 0a 20 20 20 20 20 20 20 20 64 73 74 20 5b LSE.........BEGIN..........dst.[
0de0 69 5d 20 3a 3d 20 75 70 70 65 72 63 3b 20 20 70 61 72 73 65 74 20 3a 3d 20 74 72 75 65 3b 20 20 i].:=.upperc;..parset.:=.true;..
0e00 69 71 20 3a 3d 20 69 71 20 2b 20 31 3b 0d 0a 20 20 20 20 20 20 45 4e 44 3b 0d 0a 20 20 45 4e 44 iq.:=.iq.+.1;........END;....END
0e20 3b 0d 0a 20 20 0d 0a 20 20 46 55 4e 43 54 49 4f 4e 20 66 69 6c 65 6e 6d 20 28 43 4f 4e 53 54 20 ;........FUNCTION.filenm.(CONST.
0e40 70 72 6f 6d 70 74 3a 20 73 74 72 69 6e 67 3b 20 56 41 52 20 6e 61 6d 3a 20 66 69 6c 65 6e 61 6d prompt:.string;.VAR.nam:.filenam
0e60 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 41 52 20 66 63 62 3a 20 63 ;.....................VAR.fcb:.c
0e80 70 6d 66 6e 3b 20 64 65 66 65 78 74 3a 20 63 70 6d 65 78 29 3a 20 62 6f 6f 6c 65 61 6e 3b 0d 0a pmfn;.defext:.cpmex):.boolean;..
0ea0 20 20 28 2a 20 47 65 74 20 61 20 66 69 6c 65 6e 61 6d 65 20 69 6e 74 6f 20 74 68 65 20 46 43 42 ..(*.Get.a.filename.into.the.FCB
0ec0 2c 20 73 65 74 74 69 6e 67 20 64 65 66 61 75 6c 74 73 20 61 73 20 0d 0a 20 20 20 20 20 61 70 70 ,.setting.defaults.as........app
0ee0 72 6f 70 72 69 61 74 65 3b 20 20 72 65 74 75 72 6e 20 74 72 75 65 20 69 66 66 20 61 20 66 69 6c ropriate;..return.true.iff.a.fil
0f00 65 6e 61 6d 65 20 66 6f 75 6e 64 20 2a 29 0d 0a 20 20 56 41 52 20 69 3a 20 77 6f 72 64 3b 20 20 ename.found.*)....VAR.i:.word;..
0f20 70 3a 20 61 64 72 6d 65 6d 3b 20 20 64 65 66 69 6c 65 3a 20 63 70 6d 6e 6d 3b 0d 0a 20 20 42 45 p:.adrmem;..defile:.cpmnm;....BE
0f40 47 49 4e 0d 0a 20 20 20 20 62 6c 61 6e 6b 73 3b 0d 0a 20 20 20 20 49 46 20 69 73 63 6f 6d 6d 61 GIN......blanks;......IF.iscomma
0f60 20 54 48 45 4e 20 64 65 66 69 6c 65 20 3a 3d 20 70 72 66 2e 63 66 6e 20 45 4c 53 45 20 64 65 66 .THEN.defile.:=.prf.cfn.ELSE.def
0f80 69 6c 65 20 3a 3d 20 6e 75 6c 6e 3b 0d 0a 20 20 20 20 49 46 20 69 71 20 3e 20 71 71 2e 6c 65 6e ile.:=.nuln;......IF.iq.>.qq.len
0fa0 20 54 48 45 4e 0d 0a 20 20 20 20 42 45 47 49 4e 0d 0a 20 20 20 20 20 20 70 74 79 75 71 71 20 28 .THEN......BEGIN........ptyuqq.(
0fc0 77 72 64 20 28 75 70 70 65 72 20 28 70 72 6f 6d 70 74 29 29 2c 20 61 64 73 20 70 72 6f 6d 70 74 wrd.(upper.(prompt)),.ads.prompt
0fe0 29 3b 0d 0a 20 20 20 20 20 20 46 4f 52 20 69 20 3a 3d 20 31 20 54 4f 20 38 20 44 4f 20 0d 0a 20 );........FOR.i.:=.1.TO.8.DO....
1000 20 20 20 20 20 20 20 49 46 20 64 65 66 69 6c 65 20 5b 69 5d 20 3c 3e 20 27 20 27 20 54 48 45 4e .......IF.defile.[i].<>.'.'.THEN
1020 20 70 74 79 75 71 71 20 28 31 2c 20 61 64 73 20 64 65 66 69 6c 65 20 5b 69 5d 29 3b 0d 0a 20 20 .ptyuqq.(1,.ads.defile.[i]);....
1040 20 20 20 20 70 74 79 75 71 71 20 28 31 2c 20 61 64 73 20 27 2e 27 29 3b 20 20 70 74 79 75 71 71 ....ptyuqq.(1,.ads.'.');..ptyuqq
1060 20 28 33 2c 20 61 64 73 20 64 65 66 65 78 74 29 3b 0d 0a 20 20 20 20 20 20 70 74 79 75 71 71 20 .(3,.ads.defext);........ptyuqq.
1080 28 33 2c 20 61 64 73 20 27 5d 3a 20 27 29 3b 0d 0a 20 20 20 20 20 20 71 71 2e 6c 65 6e 20 3a 3d (3,.ads.']:.');........qq.len.:=
10a0 20 67 74 79 75 71 71 20 28 75 70 70 65 72 20 28 71 71 29 2c 20 61 64 73 20 71 71 20 5b 31 5d 29 .gtyuqq.(upper.(qq),.ads.qq.[1])
10c0 3b 20 20 69 71 20 3a 3d 20 31 3b 0d 0a 20 20 20 20 45 4e 44 3b 0d 0a 20 20 20 20 66 63 62 2e 63 ;..iq.:=.1;......END;......fcb.c
10e0 66 70 20 3a 3d 20 27 2e 27 3b 20 20 0d 0a 20 20 20 20 49 46 20 28 69 71 20 3c 20 71 71 2e 6c 65 fp.:=.'.';........IF.(iq.<.qq.le
1100 6e 29 20 41 4e 44 20 28 71 71 20 5b 69 71 2b 31 5d 20 3d 20 27 3a 27 29 20 0d 0a 20 20 20 20 20 n).AND.(qq.[iq+1].=.':')........
1120 20 41 4e 44 20 54 48 45 4e 20 70 61 72 73 65 74 20 28 63 2c 20 64 72 73 65 74 29 0d 0a 20 20 20 .AND.THEN.parset.(c,.drset).....
1140 20 20 20 54 48 45 4e 20 0d 0a 20 20 20 20 20 20 20 20 42 45 47 49 4e 0d 0a 20 20 20 20 20 20 20 ...THEN...........BEGIN.........
1160 20 20 20 66 63 62 2e 63 66 64 5b 31 5d 20 3a 3d 20 63 3b 20 20 66 63 62 2e 63 66 64 5b 32 5d 20 ...fcb.cfd[1].:=.c;..fcb.cfd[2].
1180 3a 3d 20 27 3a 27 3b 20 20 69 71 20 3a 3d 20 69 71 2b 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 :=.':';..iq.:=.iq+1;............
11a0 64 65 66 69 6c 65 20 3a 3d 20 70 72 66 2e 63 66 6e 3b 20 20 20 7b 64 65 66 61 75 6c 74 20 74 6f defile.:=.prf.cfn;...{default.to
11c0 20 73 6f 75 72 63 65 20 6e 61 6d 65 20 6e 6f 77 7d 0d 0a 20 20 20 20 20 20 20 20 45 4e 44 0d 0a .source.name.now}..........END..
11e0 20 20 20 20 20 20 45 4c 53 45 20 66 63 62 2e 63 66 64 20 3a 3d 20 27 20 20 27 3b 0d 0a 20 20 20 ......ELSE.fcb.cfd.:=.'..';.....
1200 20 66 69 6c 65 6e 6d 20 3a 3d 20 70 61 72 73 65 74 20 28 66 63 62 2e 63 66 6e 2c 20 69 64 73 65 .filenm.:=.parset.(fcb.cfn,.idse
1220 74 29 3b 0d 0a 20 20 20 20 49 46 20 70 61 72 63 68 72 20 28 27 3a 27 29 20 0d 0a 20 20 20 20 54 t);......IF.parchr.(':').......T
1240 48 45 4e 20 42 45 47 49 4e 20 20 66 63 62 2e 63 66 65 20 3a 3d 20 27 3a 20 20 27 3b 20 20 66 63 HEN.BEGIN..fcb.cfe.:=.':..';..fc
1260 62 2e 63 66 70 20 3a 3d 20 27 20 27 3b 20 20 45 4e 44 0d 0a 20 20 20 20 45 4c 53 45 0d 0a 20 20 b.cfp.:=.'.';..END......ELSE....
1280 20 20 49 46 20 70 61 72 63 68 72 20 28 27 2e 27 29 0d 0a 20 20 20 20 20 20 54 48 45 4e 20 5b 65 ..IF.parchr.('.')........THEN.[e
12a0 76 61 6c 20 28 70 61 72 73 65 74 20 28 66 63 62 2e 63 66 65 2c 20 69 64 73 65 74 29 29 3b 20 20 val.(parset.(fcb.cfe,.idset));..
12c0 64 65 66 69 6c 65 20 3a 3d 20 70 72 66 2e 63 66 6e 5d 0d 0a 20 20 20 20 20 20 45 4c 53 45 20 66 defile.:=.prf.cfn]........ELSE.f
12e0 63 62 2e 63 66 65 20 3a 3d 20 64 65 66 65 78 74 3b 0d 0a 20 20 20 20 49 46 20 4e 4f 54 20 72 65 cb.cfe.:=.defext;......IF.NOT.re
1300 73 75 6c 74 20 28 66 69 6c 65 6e 6d 29 20 54 48 45 4e 20 66 63 62 2e 63 66 6e 20 3a 3d 20 64 65 sult.(filenm).THEN.fcb.cfn.:=.de
1320 66 69 6c 65 3b 0d 0a 20 20 20 20 62 6c 61 6e 6b 73 3b 0d 0a 20 20 20 20 6e 61 6d 2e 6c 65 6e 20 file;......blanks;......nam.len.
1340 3a 3d 20 30 3b 20 20 70 20 3a 3d 20 61 64 72 20 66 63 62 3b 0d 0a 20 20 20 20 46 4f 52 20 69 20 :=.0;..p.:=.adr.fcb;......FOR.i.
1360 3a 3d 20 30 20 54 4f 20 31 33 20 44 4f 20 49 46 20 70 5e 5b 69 5d 20 3c 3e 20 77 72 64 20 28 27 :=.0.TO.13.DO.IF.p^[i].<>.wrd.('
1380 20 27 29 0d 0a 20 20 20 20 54 48 45 4e 20 5b 6e 61 6d 2e 6c 65 6e 20 3a 3d 20 6e 61 6d 2e 6c 65 .')......THEN.[nam.len.:=.nam.le
13a0 6e 2b 31 3b 20 6e 61 6d 5b 6e 61 6d 2e 6c 65 6e 5d 20 3a 3d 20 63 68 72 20 28 70 5e 5b 69 5d 29 n+1;.nam[nam.len].:=.chr.(p^[i])
13c0 5d 3b 0d 0a 20 20 45 4e 44 3b 0d 0a 0d 0a 20 20 46 55 4e 43 54 49 4f 4e 20 63 6f 6e 73 6f 20 28 ];....END;......FUNCTION.conso.(
13e0 43 4f 4e 53 54 20 66 6e 3a 20 63 70 6d 6e 6d 29 3a 20 62 6f 6f 6c 65 61 6e 3b 0d 0a 20 20 42 45 CONST.fn:.cpmnm):.boolean;....BE
1400 47 49 4e 0d 0a 20 20 20 20 63 6f 6e 73 6f 20 3a 3d 20 28 66 6e 20 3d 20 27 43 4f 4e 20 20 20 20 GIN......conso.:=.(fn.=.'CON....
1420 20 27 29 20 4f 52 20 28 66 6e 20 3d 20 27 55 53 45 52 20 20 20 20 27 29 3b 0d 0a 20 20 45 4e 44 .').OR.(fn.=.'USER....');....END
1440 3b 0d 0a 0d 0a 0d 0a 42 45 47 49 4e 0d 0a 20 20 6e 65 77 73 77 20 3a 3d 20 73 65 74 73 77 20 28 ;......BEGIN....newsw.:=.setsw.(
1460 64 6f 20 34 20 6f 66 20 30 29 3b 0d 0a 20 20 70 71 71 2e 72 20 3a 3d 20 31 32 38 3b 20 20 20 70 do.4.of.0);....pqq.r.:=.128;...p
1480 71 71 2e 73 20 3a 3d 20 63 65 73 78 71 71 3b 20 0d 0a 20 20 46 4f 52 20 69 20 3a 3d 20 30 20 54 qq.s.:=.cesxqq;.....FOR.i.:=.0.T
14a0 4f 20 70 71 71 5e 2e 6c 65 6e 2b 31 20 44 4f 20 71 71 5b 69 5d 20 3a 3d 20 70 71 71 5e 5b 69 5d O.pqq^.len+1.DO.qq[i].:=.pqq^[i]
14c0 3b 20 20 69 71 20 3a 3d 20 31 3b 0d 0a 20 20 52 45 50 45 41 54 0d 0a 20 20 20 20 69 73 63 6f 6d ;..iq.:=.1;....REPEAT......iscom
14e0 6d 61 20 3a 3d 20 74 72 75 65 3b 20 20 70 72 66 2e 63 66 6e 20 3a 3d 20 27 20 20 20 20 20 20 20 ma.:=.true;..prf.cfn.:=.'.......
1500 20 27 3b 0d 0a 20 20 20 20 49 46 20 66 69 6c 65 6e 6d 20 28 6d 73 70 72 66 2c 20 70 72 66 66 69 .';......IF.filenm.(msprf,.prffi
1520 6c 2c 20 70 72 66 2c 20 64 66 70 72 66 29 0d 0a 20 20 20 20 54 48 45 4e 0d 0a 20 20 20 20 42 45 l,.prf,.dfprf)......THEN......BE
1540 47 49 4e 0d 0a 20 20 20 20 20 20 65 76 61 6c 20 28 70 61 72 63 68 72 20 28 27 2c 27 29 29 3b 0d GIN........eval.(parchr.(','));.
1560 0a 20 20 20 20 20 20 65 76 61 6c 20 28 66 69 6c 65 6e 6d 20 28 6d 73 68 73 74 2c 20 68 73 74 66 .......eval.(filenm.(mshst,.hstf
1580 69 6c 2c 20 68 73 74 2c 20 64 66 68 73 74 29 29 3b 0d 0a 20 20 20 20 20 20 69 73 63 6f 6d 6d 61 il,.hst,.dfhst));........iscomma
15a0 20 3a 3d 20 70 61 72 63 68 72 20 28 27 2c 27 29 3b 0d 0a 20 20 20 20 20 20 65 76 61 6c 20 28 66 .:=.parchr.(',');........eval.(f
15c0 69 6c 65 6e 6d 20 28 6d 73 6d 61 70 2c 20 6d 61 70 66 69 6c 2c 20 6d 61 70 2c 20 27 6d 61 70 27 ilenm.(msmap,.mapfil,.map,.'map'
15e0 29 29 3b 0d 0a 20 20 20 20 20 20 62 6c 61 6e 6b 73 3b 20 20 65 76 61 6c 20 28 70 61 72 63 68 72 ));........blanks;..eval.(parchr
1600 20 28 27 3b 27 29 29 3b 20 20 62 6c 61 6e 6b 73 3b 0d 0a 20 20 20 20 20 20 49 46 20 68 73 74 2e .(';'));..blanks;........IF.hst.
1620 63 66 6e 20 3c 3e 20 6e 75 6c 6e 20 54 48 45 4e 20 6e 65 77 73 77 5b 33 5d 20 3a 3d 20 6e 65 77 cfn.<>.nuln.THEN.newsw[3].:=.new
1640 73 77 5b 33 5d 20 4f 52 20 38 3b 0d 0a 20 20 20 20 20 20 49 46 20 6d 61 70 2e 63 66 6e 20 3c 3e sw[3].OR.8;........IF.map.cfn.<>
1660 20 6e 75 6c 6e 20 54 48 45 4e 20 6e 65 77 73 77 5b 33 5d 20 3a 3d 20 6e 65 77 73 77 5b 33 5d 20 .nuln.THEN.newsw[3].:=.newsw[3].
1680 4f 52 20 30 34 3b 0d 0a 20 20 20 20 20 20 49 46 20 63 6f 6e 73 6f 20 28 6d 61 70 2e 63 66 6e 29 OR.04;........IF.conso.(map.cfn)
16a0 20 54 48 45 4e 20 6e 65 77 73 77 5b 33 5d 20 3a 3d 20 6e 65 77 73 77 5b 33 5d 20 4f 52 20 30 31 .THEN.newsw[3].:=.newsw[3].OR.01
16c0 3b 0d 0a 20 20 20 20 20 20 49 46 20 69 71 20 3e 20 71 71 2e 6c 65 6e 20 54 48 45 4e 20 5b 6f 6c ;........IF.iq.>.qq.len.THEN.[ol
16e0 64 73 77 20 3a 3d 20 6e 65 77 73 77 3b 20 20 72 65 74 75 72 6e 5d 3b 0d 0a 20 20 20 20 45 4e 44 dsw.:=.newsw;..return];......END
1700 3b 0d 0a 20 20 20 20 70 74 79 75 71 71 20 28 31 35 2c 20 61 64 73 20 27 4c 69 6e 65 20 69 6e 76 ;......ptyuqq.(15,.ads.'Line.inv
1720 61 6c 69 64 3a 20 27 27 27 29 3b 20 20 69 20 3a 3d 20 71 71 2e 6c 65 6e 20 2d 20 69 71 20 2b 20 alid:.''');..i.:=.qq.len.-.iq.+.
1740 31 3b 0d 0a 20 20 20 20 49 46 20 69 20 3e 20 30 20 54 48 45 4e 20 70 74 79 75 71 71 20 28 69 2c 1;......IF.i.>.0.THEN.ptyuqq.(i,
1760 20 61 64 73 20 71 71 20 5b 69 71 5d 29 3b 0d 0a 20 20 20 20 70 74 79 75 71 71 20 28 31 35 2c 20 .ads.qq.[iq]);......ptyuqq.(15,.
1780 61 64 73 20 27 27 27 2c 20 73 74 61 72 74 20 61 67 61 69 6e 2e 27 29 3b 20 20 70 6c 79 75 71 71 ads.''',.start.again.');..plyuqq
17a0 3b 20 20 69 71 20 3a 3d 20 32 35 36 3b 0d 0a 20 20 55 4e 54 49 4c 20 46 41 4c 53 45 3b 0d 0a 45 ;..iq.:=.256;....UNTIL.FALSE;..E
17c0 4e 44 3b 0d 0a 45 4e 44 2e 0d 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ND;..END........................
17e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................