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