perm filename FLOW[1,PMP] blob
sn#008029 filedate 1971-08-14 generic text, type T, neo UTF8
00100 TITLE FLOW CHART EDITOR
00200 A←1 B←2 C←3 D←4
00300 E←5 F←6 G←7 H←10 T1←15 T2←T1+1
00400 Q←11
00500 M1←12 M2←13
00600 BP←14
00700 P←17
00800 STRT: MOVE P,[XWD -200,PDL-1]
00900 CALLI
00950 MOVEI A,MAIN
00975 MOVEM A,124
01000 DPYSIZ 2002
01100 DPYPOS -500
01200
01300 OUTSTR [ASCIZ +TYPE FILENUMBER = +]
01400 INCHRW A
01700 OUTSTR [BYTE (7)15,12]
01750 CAIN A," "
01775 JRST AGAIN
01800 EOW: TRZ A,40
01900 DPB A,[POINT 6,LUP,17]
02000 DPB A,[POINT 7,ENT,17]
02100
02200 AGAIN: FOR I IN (LUP+1,LUP+2,LUP+3,ENT+1,ENT+2,ENT+3,FLINE#,<FCHR#>
02300 ,ELINE#,ECHR#,ECSAV#,TOPEL#,TOPEC#,BOTEL#,BOTEC#)
02400 < SETZM I
02500 >
02600
02700 INIT 1,1
02800 SIXBIT /DSK/
02900 DIB
03000 JRST 4,.
03100 LOOKUP 1,LUP
03200 JRST NOFND
03300 INIT 2,1
03400 SIXBIT /DSK/
03500 XWD DOB,0
03600 JRST 4,.
03700 ENTER 2,ENT
03800 JRST 4,.
03900 INBUF 1,2
04000 OUTBUF 2,2
04100 MOVE A,[POINT 7,BUF]
04200 MOVEM A,BEPNT
04300 SETOM CURLP#
04400 MOVEI D,=20
04500 PUSHJ P,GETLN
04600 SOJG D,.-1
04700 PUSHJ P,DISP
04800 PUSHJ P,DISCUR
04900
05000 MAIN: PUSHJ P,GETCHR
05100 LDB C,[POINT 2,A,28]
05200 MOVEI D,1000
05300 LSH D,(C)
05400 ANDI A,177
05500 MOVEI B,COMLN
05600 MLOP1: XOR A,COMTAB-1(B)
05700 TRNN A,177
05800 JRST FND
05900 CONC: XOR A,COMTAB-1(B)
06000 SOJG B,MLOP1
06100 JRST NOFK
06200 FND: TDNN A,D
06300 JRST CONC
06400 FOK: MOVSS A
06500 LSH D,-11
06600 PUSHJ P,(A)
06700 JRST MAIN
06800 NOFK: CAIN D,1000
06900 PUSHJ P,PUTIN
07000 JRST MAIN
07100
07200 DEFINE T (A,B,C)
07300 < XWD A,"B"+C*1000>
07400 COMTAB: T(MUP,↑,2)
07500 XWD MRT,"→"+2000
07600 T(MLFT,←,2)
07700 T(STPR, ,2)
07800 XWD STLFT,17177
07900 XWD STDN,17012
08000 XWD STUP,17175
08100 T(STPR,<)>,16)
08200 T(STLFTS,<(>,16)
08300 T(STUP,/,16)
08400 XWD STDN,16134
08500 T(ENDIT,E,2)
08600 T(INS,I,2)
08700 T(MOVB,M,2)
08800 T(DEL,D,2)
08900 XWD MAIN,16015
09000 XWD DOCR,1015
09100 T(MRKT,P,2)
09200 T(MRKB,P,4)
09300 T(MOVP,M,4)
09400 T(INSL, ,4)
09500 T(SDEL, ,10)
09600 COMLN←.-COMTAB
09700
09800 GETCHR: JRST @.+1
09900 GTST
10000 POPJ P,
10100 JSR GETCHR+1
10200 GTST: INCHRW A
10300 CAIL A,260
10400 CAIL A,272
10500 JRST GTST-1
10600 ANDI A,17
10700 MOVEM A,SVN#
10800 GTLP1: INCHRW A
10900 CAIL A,260
11000 CAIL A,272
11100 JRST GFN
11200 ANDI A,17
11300 EXCH A,SVN
11400 IMULI A,12
11500 ADDM A,SVN
11600 JRST GTLP1
11700 GFN: MOVEM A,CSV#
11800 GTLP2: SOSG SVN
11900 JRST GTST-1
12000 JSR GETCHR+1
12100 MOVE A,CSV
12200 JRST GTLP2
12300
12400
12500 MRT: MOVNI A,10
12600 ADDB A,FCHR
12700 JUMPGE A,.+2
12800 SETZM FCHR
12900 PUSHJ P,DISP
13000 JRST DISCUR
13100 MLFT: MOVEI A,10
13200 ADDB A,FCHR
13300 CAMLE A,ECHR
13400 MOVEM A,ECHR
13500 PUSHJ P,DISP
13600 JRST DISCUR
13700 STPR: LSH D,-1
13800 ADDB D,ECHR
13900 CAIGE D,=119
14000 JRST DISCUQ
14100 MOVEI C,=119
14200 MOVEM C,ECHR
14300 JRST DISCUQ
14400 STLFTS: LSH D,-1
14500 MOVNS D
14600 ADDB D,ECHR
14700 CAML D,FCHR
14800 JRST DISCUQ
14900 MOVE D,FCHR
15000 MOVEM D,ECHR
15100 JRST DISCUQ
15200 STLFT: MOVNS D
15300 ADDB D,ECHR
15400 CAML D,FCHR
15500 JRST DISCUR
15600 MOVE D,FCHR
15700 MOVEM D,ECHR
15800 JRST DISCUR
15900 STDN: LSH D,-1
16000 ADDB D,ELINE
16100 CAIGE D,=20
16200 JRST DISCUQ
16300 MOVEI D,=19
16400 MOVEM D,ELINE
16500 JRST DISCUQ
16600 STUP: LSH D,-1
16700 MOVNS D
16800 ADDB D,ELINE
16900 JUMPGE D,DISCUQ
17000 SETZM ELINE
17100 JRST DISCUQ
17200 DOCR: MOVE B,ECSAV
17300 CAMGE B,FCHR
17400 POPJ P,
17500 MOVEM B,ECHR
17600 MOVEI D,2
17700 JRST STDN
17800
17900 MSDOWN: MOVEI B,=20
18000 HRRZ T1,BEPNT
18100 MOVE T2,T1
18200 ADD T2,D
18300 HRRZ G,LTAB+1(A)
18400 MSLP1: MOVE C,(T1)
18500 MOVEM C,(T2)
18600 SUBI T2,1
18700 CAME T1,G
18800 SOJA T1,MSLP1
18900 SETZM (T2)
19000 ADDM D,LTAB(B)
19100 CAIE A,-1(B)
19200 SOJA B,.-2
19300 POPJ P,
19400 PUTIN: PUSH P,A
19500 PUSHJ P,FNDPLC
19600 MOVE A,(P)
19700 DPB A,BP
19800 PUSHJ P,DISP
19900 POP P,A
20000 CAIN A,"|"
20100 JRST SPCLP
20200 AOS D,ECHR
20300 CAILE D,=119
20400 SOS ECHR
20500 JRST DISCUR
20600 SPCLP: AOS D,ELINE
20700 CAIL D,=20
20800 SOS ELINE
20900 JRST DISCUR
21000 MUPR: PUSHJ P,PUTLN
21100 HRRZ A,LTAB+1
21200 SUB A,LTAB
21300 HRRZS A
21400 JUMPE A,MUPL1
21500 HRRZI B,BUF
21600 HRLI B,BUF(A)
21700 HRRZI C,BUF+777
21800 SUB C,A
21900 BLT B,(C)
22000 MOVNS A
22100 MOVEI B,=20
22200 ADDM A,LTAB(B)
22300 SOJG B,.-1
22400 MUPL1: MOVE B,[XWD LTAB+1,LTAB]
22500 BLT B,BEPNT-1
22600 JRST GETLN
22700 MUP: PUSHJ P,MUPR
22800 PUSHJ P,DISP
22900 MOVEI D,2
23000 JRST STUP
23100 ;BPCALC: E←WORD F←CHR POS. BP←BP
23200
23300 BPCALC: MOVE E,ECHR
23400 MOVE A,ELINE
23500 IDIVI E,5
23600 MOVE BP,LTAB(A)
23700 ADD BP,E
23800 SKIPE Q,F
23900 IBP BP
24000 SOJG Q,.-1
24100 IBP BP
24200 POPJ P,
24300 FNDPLC: PUSHJ P,BPCALC
24400 HRRZ C,LTAB+1(A)
24500 JUMPE A,NOBL
24600 HRRZ B,LTAB(A)
24700 CAME B,C
24800 JRST NOBL
24900 MOVEI B,
25000 MOVE D,LTAB(B)
25100 CAME D,BEPNT
25200 AOJA B,.-2
25300 MOVE D,[BYTE (7)15,12]
25400 MOVEM D,@BEPNT
25500 AOS G,BEPNT
25600 MOVEM G,LTAB+1(B)
25700 CAME B,A
25800 AOJA B,.-4
25900 MOVEM G,LTAB+1(B)
26000 CAIG B,=18
26100 AOJA B,.-2
26200 JRST FNDPLC
26300 NOBL:
26400 CAIG C,(BP)
26500 JRST MOVDNF
26600 LDB B,BP
26700 JUMPE B,MOVDNF
26800 CAIE B,15
26900 CAIN B,12
27000 JRST MOVDNF
27100 POPJ P,
27200 MOVDNF: HRRZ D,BP
27300 SUBI D,-1(C)
27400 CAILE F,2
27500 ADDI D,1
27600 JUMPE D,.+2
27700 PUSHJ P,MSDOWN
27800 MOVE G,LTAB(A)
27900 ILDB B,G
28000 CAIE B,15
28100 JRST .-2
28200 MOVEI B,40
28300 DPB B,G
28400 CAMN G,BP
28500 JRST .+3
28600 IDPB B,G
28700 JRST .-3
28800 MOVEI B,15
28900 IDPB B,G
29000 MOVEI B,12
29100 IDPB B,G
29200 POPJ P,
29300
29400 ENDIT: PUSHJ P,MUPR
29500 JUMPN A,.-1
29600 RELEAS 1,
29700 RELEAS 2,
29800 CALLI 12
29900
30000 DEFINE MMMM 3(ARG)
30100 < MOVE A,ELINE
30200 MOVE B,ECHR
30300 MOVEM A,ARG3EL
30400 MOVEM B,ARG3EC
30500 POPJ P,>
30600 MRKT: MMMM (TOP)
30700 MRKB: MMMM (BOT)
30800 INSL: MOVE A,ELINE
30900 MOVE B,ECHR
31000 MOVEI H,-1
31100 PUSHJ P,INSR
31200 JRST DISP
31300 INSR: MOVE E,B
31400 ADDI H,1
31500 PUSHJ P,BPCALC+2
31600 MOVEI C,40
31700 LDB D,BP
31800 ILP1: DPB C,BP
31900 MOVE C,D
32000 SOJE H,DONERI
32100 ILP2: ILDB D,BP
32200 CAIE C,12
32300 JRST ILP1
32400 TLNE BP,200000
32500 TLNN BP,100000
32600 JRST .+6
32700 MOVEI D,1
32800 PUSH P,B
32900 PUSHJ P,MSDOWN
33000 POP P,B
33100 MOVEI C,12
33200 DPB C,BP
33300 POPJ P,
33400 DONERI: CAIE C,15
33500 CAIN C,12
33600 JRST ILP2
33700 CPOPJ: POPJ P,
33800 SDEL: MOVE A,ELINE
33900 MOVE B,ECHR
34000 MOVEI H,-1
34100 PUSHJ P,SDELS
34200 JRST DISP
34300 SDELS: MOVEI E,(B)
34400 JUMPL E,CPOPJ
34500 PUSHJ P,BPCALC+2
34600 MOVE G,BP
34700 ILDB C,G
34800 DPB C,BP
34900 DLP1: SOJL H,DLP2
35000 CAIN C,15
35100 JRST DLP2
35200 ILDB C,G
35300 IDPB C,BP
35400 JRST DLP1
35500 DLP2: MOVEI C,40
35600 DPB C,BP
35700 POPJ P,
35800
35900 MOVP: MOVE M1,BOTEL
36000 MOVEM M1,ELINE
36100 SUB M1,TOPEL
36200 ADDI M1,1
36300 MOVE M2,BOTEC
36400 MOVEM M2,ECHR
36500 SUB M2,TOPEC
36600 ADDI M2,1
36700 MOVEM M1,MPCNT#
36800 JUMPLE M1,CPOPJ
36900 JUMPLE M2,CPOPJ
37000 MPLP1: PUSHJ P,FNDPLC
37100 SOS ELINE
37200 SOSLE MPCNT
37300 JRST MPLP1
37400 AOS ELINE
37500 MOVE B,TOPEC
37600 MOVEM B,ECHR
37700 MPLP2: PUSHJ P,DISP
37800 PUSHJ P,DISCUR
37900 PUSHJ P,GETCHR
38000 ANDI A,177
38100 MOVEI B,5
38200 CAMN A,MPTB1-1(B)
38300 JRST @MPTB2-1(B)
38400 SOJG B,.-2
38500 JRST MPLP2
38600 MPTB1: "("
38700 ")"
38800 "\"
38900 "/"
39000 " "
39100 MPTB2: MPLFT
39200 MPRT
39300 MPDN
39400 MPUP
39500 CPOPJ
39600
39700 DEFINE RTLFT $ (A1,A2,A3,A4,A5,A6,A7,A8,A9)
39800 < MOVE A,TOPEL
39900 MOVE B,TOPEC
40000 A1
40100 JRST NO$A2
40200 MOVEM M1,MPCNT
40300 MPLP$A3: MOVE H,M2
40400 MOVE B,TOPEC
40500 PUSHJ P,A5
40600 SOSLE MPCNT
40700 AOJA A,MPLP$A3
40800 A6 ECHR
40900 A6$A A8$EC
41000 NO$A2: A7 A9$EC
41100 JRST MPLP2>
41200 MPRT: RTLFT (<AOS C,BOTEC
41300 CAILE C,=119>,RT,3,QRN,INSR,AOS,SOS,TOP,BOT)
41400 MPLFT: RTLFT (SOSGE TOPEC,LFT,4,QRN,SDELS,SOS,AOS,BOT,TOP)
41500
41600 DEFINE UPDN $ (A1,A2,A3,A4,A5,A6,A7,A8)
41700 < A2
41800 JRST NO$A1
41900 MOVE B,BOTEC
42000 MOVEM A,ELINE
42100 MOVEM B,ECHR
42200 PUSHJ P,FNDPLC
42300 MOVE A,A3$EL
42400 MOVE H,M1
42500 MPLP$A6: MOVE E,TOPEC
42600 PUSHJ P,BPCALC+2
42700 MOVE E,TOPEC
42800 A5$I A,1
42900 MOVE G,BP
43000 PUSHJ P,BPCALC+2
43100 MOVE C,M2
43200 LDB B,BP
43300 DPB B,G
43400 SOJLE C,.+4
43500 ILDB B,BP
43600 IDPB B,G
43700 SOJG C,.-2
43800 SOJG H,MPLP$A6
43900 MOVE E,TOPEC
44000 PUSHJ P,BPCALC+2
44100 MOVE C,M2
44200 MOVEI B,40
44300 DPB B,BP
44400 SOJLE C,.+3
44500 IDPB B,BP
44600 SOJG C,.-1
44700 A7 ELINE
44800 A7$A A4$EL
44900 NO$A1: A8 A3$EL
45000 JRST MPLP2>
45100
45200 MPUP: UPDN (UP,<SOSGE A,TOPEL>,TOP,BOT,ADD,5,SOS,AOS)
45300 MPDN: UPDN (DN,<AOS A,BOTEL
45400 CAIL A,=20>,BOT,TOP,SUB,6,AOS,SOS)
45500
45600 INS: PUSHJ P,PUTLN
45700 AOS CURLP
45800 HRRZ C,LTAB+1
45900 SUB C,LTAB
46000 HRRZS C
46100 JUMPLE C,CPOPJ
46200 MOVE A,ELINE
46300 MOVE D,LTAB
46400 HRL D,LTAB+1
46500 HRRZ E,LTAB+1(A)
46600 SUBI E,1(C)
46700 BLT D,(E)
46800 MOVE D,[XWD LTAB+1,LTAB]
46900 BLT D,LTAB(A)
47000 MOVN B,C
47100 MOVE D,A
47200 ADDM B,LTAB(D)
47300 SOJGE D,.-1
47400 MOVE D,[BYTE (7)15,12]
47500 MOVE E,LTAB(A)
47600 MOVEM D,(E)
47700 AOS D,E
47800 SUB E,LTAB+1(A)
47900 HRRES E
48000 JUMPE E,CPOPJ
48100 HRL D,LTAB+1(A)
48200 BLT D,@BEPNT
48300 MOVEI D,=20
48400 ADDM E,LTAB(D)
48500 CAILE D,1(A)
48600 SOJA D,.-2
48700 JRST DISP
48800 DEL: MOVE A,ELINE
48900 MOVE E,LTAB(A)
49000 CAML E,LTAB+1(A)
49100 POPJ P,
49200 SOS CURLP
49300 HRRZ D,LTAB(A)
49400 HRL D,LTAB+1(A)
49500 BLT D,@BEPNT
49600 HRRZ C,LTAB(A)
49700 SUB C,LTAB+1(A)
49800 HRRES C
49900 MOVEI D,=20
50000 ADDM C,LTAB(D)
50100 CAILE D,1(A)
50200 SOJA D,.-2
50300 HRRI D,LTAB(A)
50400 HRLI D,1(D)
50500 BLT D,LTAB+=19
50600 PUSHJ P,GETLN
50700 JRST DISP
50800
50900 MOVB: MOVE A,ELINE
51000 MOVE B,ECHR
51100 MBLP1: SKIPN E,B
51200 POPJ P,
51300 PUSHJ P,BPCALC+2
51400 LDB C,BP
51500 CAIE C,"|"
51600 SOJA B,MBLP1
51700 MBLP3: MOVE E,B
51800 PUSHJ P,BPCALC+2
51900 LDB C,BP
52000 CAIN C,"_"
52100 JRST MBLP2
52200 CAIN C,"|"
52300 SOJGE A,MBLP3
52400 POPJ P,
52500 MBLP2: MOVEM A,TOPEL
52600 MOVEM B,TOPEC
52700 ADDI A,1
52800 MOVE G,BP
52900 MOVE E,B
53000 PUSHJ P,BPCALC+2
53100 MBLP4: ADDI B,1
53200 ILDB C,G
53300 CAIE C,"_"
53400 POPJ P,
53500 ILDB C,BP
53600 CAIE C,"|"
53700 JRST MBLP4
53800 MBLP6: MOVE E,B
53900 PUSHJ P,BPCALC+2
54000 LDB C,BP
54100 CAIN C,"_"
54200 JRST MBLP5
54300 CAIE C,"|"
54400 POPJ P,
54500 CAIG A,=18
54600 AOJA A,MBLP6
54700 POPJ P,
54800 MBLP5: MOVEM A,BOTEL
54900 MOVEM B,BOTEC
55000 MOVE B,TOPEC
55100 SUBI A,1
55200 MBLP7: MOVE E,B
55300 PUSHJ P,BPCALC+2
55400 LDB C,BP
55500 CAIE C,"|"
55600 POPJ P,
55700 SUBI A,1
55800 CAME A,TOPEL
55900 JRST MBLP7
56000 MOVE A,BOTEL
56100 MOVE E,B
56200 PUSHJ P,BPCALC+2
56300 LDB C,BP
56400 CAIE C,"_"
56500 POPJ P,
56600 ADDI B,1
56700 MBLP8: ILDB C,BP
56800 CAIE C,"_"
56900 POPJ P,
57000 CAME B,BOTEC
57100 AOJA B,MBLP8
57200 JRST MOVP
57300
00100 ENT: SIXBIT /FL/
00200 BLOCK 3
00300 LUP: SIXBIT /FL/
00400 BLOCK 3
00500 DIB: BLOCK 3
00600 DOB: BLOCK 3
00700 GET: 0
00800 SOSLE DIB+2
00900 JRST .+4
01000 INPUT 1,
01100 STATZ 1,20000
01200 JRST @GET
01300 ILDB C,DIB+1
01400 AOS GET
01500 JRST @GET
01600 PUT: 0
01700 SOSG DOB+2
01800 OUTPUT 2,
01900 IDPB C,DOB+1
02000 JRST @PUT
02100 LTAB: BLOCK =20
02200 BEPNT: 0
02300 BUF: BLOCK 1000
02400 CURADR: CURBUF
02500 4
02600 CURBUF: 0
02700 0
02800 ASCID /_/
02900 0
03000
03100 GETLN: AOS B,CURLP
03200 MOVE C,BEPNT
03300 MOVEM C,LTAB(B)
03400 GETLNL: JSR GET
03500 POPJ P,
03600 JUMPE C,GETLNL
03700 IDPB C,BEPNT
03800 CAIE C,12
03900 JRST GETLNL
04000 MOVSI C,440700
04100 REPEAT 5,<IDPB C,BEPNT>
04200 HLLM C,BEPNT
04300 POPJ P,
04400 PUTLN: MOVE A,LTAB
04500 SOS CURLP
04600 CAMN A,LTAB+1
04700 POPJ P,
04800 PUTLNL: ILDB C,A
04900 JSR PUT
05000 CAIE C,12
05100 JRST PUTLNL
05200 POPJ P,
05300 DISP: MOVEI A,1
05400 MOVEM A,DBUF
05500 MOVE A,[XWD DBUF,DBUF+1]
05600 BLT A,DBUF+1001
05700 MOVEI A,
05800 MOVEI B,=20
05900 MOVE T1,FCHR
06000 IDIVI T1,5
06100 MOVE E,[POINT 7,DBUF]
06200 DLOP1: MOVE C,LTAB(A)
06300 HRRZ D,LTAB+1(A)
06400 ADD C,T1
06500 CAIG D,(C)
06600 JRST NOLN
06700 SKIPE F,T2
06800 IBP C
06900 SOJG F,.-1
07000 MOVEI F,=90
07100 MOVEM F,DCNT#
07200 DLOP2: ILDB D,C
07300 JUMPE D,NOLN
07400 CAIN D,12
07500 JRST ATEND
07600 CAIE D,15
07700 SOSLE DCNT
07800 IDPB D,E
07900 JRST DLOP2
08000 NOLN: MOVEI D,15
08100 IDPB D,E
08200 MOVEI D,12
08300 ATEND: IDPB D,E
08400 ADDI A,1
08500 SOJG B,DLOP1
08600 MOVEI A,0
08700 REPEAT 5,<IDPB A,E>
08800 SETZM (E)
08900 SUBI E,DBUF-3
09000 HRRZM E,UPADR+1
09100 UPGIOT 2,UPADR
09200 POPJ P,
09300 UPADR: DBUF-2
09400 0
09500 0
09600 POSWRD: BYTE (11) 3000,700(7)0(3)6,3
09700 DBUF: BLOCK 1002
09800 DISCUQ: MOVE B,ECHR
09900 MOVEM B,ECSAV
10000
10100 DISCUR: MOVE B,POSWRD
10200 MOVE A,ECHR
10300 SUB A,FCHR
10400 IMULI A,=12
10500 LDB C,[POINT 11,B,10]
10600 ADD C,A
10700 DPB C,[POINT 11,B,10]
10800 MOVE A,ELINE
10900 IMULI A,=24
11000 LDB C,[POINT 11,B,21]
11100 SUB C,A
11200 DPB C,[POINT 11,B,21]
11300 MOVEM B,CURBUF+1
11400 UPGIOT 1,CURADR
11500 POPJ P,
11600
11700 NOFND: OUTSTR [ASCIZ QCAN'T FIND FILE, TRY AGAIN
11800 Q]
11900 JRST STRT
12000 PDL: BLOCK 200
12100
12200 END STRT