image of READY prompt

Wang2200.org

Listing of file='PROGVERB' on disk='vmedia/tbo_81.wvd.zip'

# Sector 780, program filename = 'PROGVERB'
0010 REM "PROGVERB" T.OLSEN 11/15/79 PROGRAM ANALYZER
0020 REM %REQUIREMENTS
   : REM %0 /215 PRINTER, #0 (CASSETTE)
0030 DIM T1$(255)2,T2$(255)2, P$(30)8, R$(255)3, Q0$1
   : INIT(FF)R$()
0040 REM %0 #1 PROG DISK,  OP5 SORT ROM, '11 SUMMARY
0050 DIM K$1,A(128), W$(128)12
0060 DIM A1$(4)64, B1$(255)1,  F7$2
   : F7$=HEX(7F)
0070 L,L1,L2,M=0
   : DIM D$64,D0$1,H$1,P$16,C$11,C$(124)10,M$(1)2,L$2,B$(255)1,T$1,V$1,Q$4,B$1
   : C,J,Z=0
   : GOTO 1590
   : REM %LIST LOGIC VARIABLES
0080 REM %0 A( ATOMS USED, F1 MODE,  W$( WANG NEEDS, W NEEDS FLAG
0090 REM %0 R REF PTR, R$( REF TABLE, T1$( SORT TBL, T2$( SORT TBL
0100 REM %0 B$ B$1, B$( LINE TEXT, C COLUMN CTR, C$ PRT. WORD
0110 REM %0 C$( ATOM TABLE, D$ DATE, H$ HEADER BYTE, J PTR
0120 REM %0 L LINES/PAGE, L$ STMT LINE, L1 L1, L2 L2, M MARGIN
0130 REM %0 H HARD COPY, P$ PROGRAM NAME, P$( PROGRAM NAMES
0140 REM %0 P6 CUR. FILE #, P7 # FILES
0150 REM %0 V$ VERB ATOM, Z Z
   : REM %K.B.WAIT
0152 KEYIN K$,154,154
0153 RETURN
0154 KEYIN K$,153,153
   : GOTO 154
   : REM %LIST LOGIC
0160 Z=LEN(C$)
   : C=C+Z
   : IF C<78THEN 170
   : PRINT
   : PRINT TAB(M);
   : C=M+Z
0170 PRINT C$;
   : RETURN
   : REM %GET 4 NON SPACE CHARS
0180 B=X
   : FOR Z=1TO 4
0190 IF B1$(B)<>"="THEN 200
   : B=B+1
   : GOTO 190
0200 STR(Q$,Z)=B1$(B)
   : B=B+1
   : NEXT Z
   : RETURN
0210 GOSUB 410
   : PRINT "LINE--";
   : J=2
   : STR(L$,1,1)=B$(J)
   : STR(L$,2,1)=B$(J+1)
   : J=J+2
0220 GOSUB 390
   : C=M+6
   : PRINT TAB(M);
   : HEXPRINT L$;
   : IF V$=HEX(D8)THEN 370
   : PRINT TAB(M+6);
   : GOTO 240
0230 J=J+3
0240 B$=B$(J)
   : IF B$>=HEX(80)THEN 270
   : IF B$=HEX(0D)THEN 340
0250 IF B$=HEX(22)THEN 350
   : C$=B$
   : GOSUB 160
0260 J=J+1
   : GOTO 240
0270 IF B$<>HEX(FF)THEN 290
   : UNPACK(##)B$(J+1)TO L1
   : UNPACK(##)B$(J+2)TO L2
   : CONVERT L2+L1*100TO Q$,(####)
   : Q$=STR(Q$,POS(Q$<>"0"))
   : IF Q$<>" "THEN 280
   : Q$="0"
0280 C$=Q$
   : GOSUB 160
   : GOTO 230
0290 IF B$<>HEX(A2)THEN 320
0300 B$=B$(J)
   : AND (B$,7F)
   : C$=C$(VAL(B$)+1)
   : GOSUB 160
   : PRINT " ";
   : C=C+1
0310 J=J+1
   : B$=B$(J)
   : IF B$>HEX(7F)THEN 300
   : IF B$=HEX(0D)THEN 340
   : IF B$=":"THEN 240
   : C$=B$
   : GOSUB 160
   : GOTO 310
0320 AND (B$,7F)
   : C$=C$(VAL(B$)+1)
   : GOSUB 160
0330 IF Z=1THEN 260
   : IF STR(C$,Z,1)="("THEN 260
   : PRINT " ";
   : C=C+1
   : GOTO 260
0340 PRINT
   : GOSUB 152
   : RETURN
0350 PRINT HEX(22);
0360 J=J+1
   : PRINT B$(J);
   : IF B$(J)<>HEX(22)THEN 360
   : GOTO 260
0370 PRINT " %";
0380 J=J+1
   : IF B$(J)=HEX(0D)THEN 340
   : PRINT B$(J);
   : IF B$(J)<>":"THEN 380
   : RETURN
0390 IF B$(J)<>" "THEN 400
   : J=J+1
   : GOTO 390
0400 V$=B$(J)
   : PRINT
   : RETURN
0410 IF H=0THEN 420
   : SELECT PRINT 215(79)
0420 RETURN
0430 REM %^BUFFER LOGIC
   : REM %BUFFER VARIABLES
0440 REM %0 D DEVICE, D0$ HEX(0D), M$( SEARCH RESULT
0450 REM %0 A1$( #1 READ AREA
0460 REM %0 A1 #1 SECTOR
0470 REM %0 B1$( #1 TEXT, B1 #1 PTR
0480 IF B1=2THEN 490
   : IF B1$(B1)=HEX(FD)THEN 490
   : IF B1$(B1)=HEX(FE)THEN 660
   : MAT COPY B1$()<B1,256-B1>TO B1$()
   : B1=2
   : RETURN
0490 B1=2
   : IF D=0THEN 500
   : DATA LOAD BA T#1,(A1,A1)A1$()
   : GOTO 510
0500 DATA LOAD BTA1$()
0510 MAT COPY A1$()<2,255>TO B1$()
   : H$=A1$(1)
   : AND (H$,F0)
   : RETURN
   : REM %^SEARCH LOOP
0520 MAT COPY B1$()TO B$()
0530 SELECT PRINT 005
   : STR(L$,1)=B$(2)
   : STR(L$,2)=B$(3)
0540 PRINT " ON LINE=";
   : HEXPRINT L$
0550 MAT SEARCHB1$()<1,255>,=D0$TO M$()
   : B2=256*VAL(M$(1))+VAL(STR(M$(1),2))
   : IF B2=0THEN 1420
   : X=4
0555 IF Q0$=" "THEN 560
   : MAT SEARCHB1$()<X,B2-X>,=Q0$TO M$()
   : A=256*VAL(M$(1))+VAL(STR(M$(1),2))
   : IF A<3THEN 560
   : IF B1$(X+A-2)=HEX(FF)THEN 560
   : IF B1$(X+A-1)<HEX(FF)THEN 640
0560 MAT SEARCH B1$()<X,B2-X>,>F7$ TO M$()
   : A=256*VAL(M$(1))+VAL(STR(M$(1),2))
   : IF A=0THEN 630
0570 X=X+A
   : T$=B1$(X-1)
   : IF T$<>HEX(FF)THEN 580
   : X=X+2
   : GOTO 560
0580 A=VAL(T$)-127
   : IF W$(A)=" "THEN 560
   : IF C$(A)="ON"THEN 670
   : IF C$(A)="MAT"THEN 680
   : IF C$(A)="DEFFN"THEN 700
0590 A(A)=A(A)+1
   : IF W$(A)="B"THEN 600
   : IF W$(A)="DISK"THEN 600
0600 W=1
   : PRINT TAB(20);"ATOM=";
   : HEXPRINT T$;
   : PRINT "  ";C$(VAL(T$)-127)
0610 IF R>254THEN 560
   : R=R+1
   : R$(R)=T$
   : STR(R$(R),2,2)=L$
0620 GOTO 560
0630 IF W=0THEN 650
   : W=0
0640 MAT COPY B1$() TO B$()
   : GOSUB 210
   : B1=J+3
   : GOSUB 480
   : GOTO 520
0650 B1=B1+B2+1
   : GOSUB 480
   : GOTO 520
0660 PRINT "PROGRAM READ"
   : GOTO 1440
0670 GOSUB 180
   : REM /ON
   : IF Q$<>"ERRO"THEN 560
   : GOTO 590
0680 GOSUB 180
   : REM /MAT
   : B$=Q$
   : IF B$=HEX(87)THEN 690
   : IF B$=HEX(AE)THEN 690
   : IF Q$="MERG"THEN 690
   : IF Q$="SEAR"THEN 690
   : IF Q$="MOVE"THEN 690
   : IF Q$="SORT"THEN 690
   : GOTO 720
0690 T$=HEX(FA)
   : GOTO 720
0700 GOSUB 180
   : REM /DEFFN
   : B$=Q$
   : IF B$=HEX(39)THEN 560
   : IF B$<"A"THEN 710
   : IF B$>"Z"THEN 710
   : GOTO 560
0710 T$=HEX(EC)
   : GOTO 720
0720 A=VAL(T$)-127
   : GOTO 590
0730 REM %^SET-UP
0740 C$="DEFAULT="
   : INIT(20)W$()
   : ON F1 GOSUB 1100,1520
0750 PRINT "SOURCE PROGRAM-"
0760 D=1
   : J=0
   : PRINT "0=TAPE  OR DISKS 1=(F)310  2=(R)B10  3=(F)320  4=(R)B20",C$;D;
   : INPUT D
   : ON D+1GOTO 850,770,780,790,800
   : GOTO 760
0770 SELECT #1 310
   : GOTO 805
0780 SELECT #1 B10
   : GOTO 805
0790 SELECT #1 320
   : GOTO 805
0800 SELECT #1 B20
0805 P7=0
0810 DEFFN'5
   : P$=" "
   : D=1
   : INPUT "PROGRAM NAME",P$
   : IF P$=" "THEN 840
   : IF P$="DATA"THEN 835
0820 LIMITS T #1,P$,A,B,Z
   : REM ^ERR 80 KEY S.F. '5 FOR NEW NAME
0830 J=J+1
   : P$(J)=P$
   : IF P7=0THEN 810
0835 P7=1
   : READ P$
   : STR(P$,9)=" "
   : PRINT P$
   : IF P$<>" "THEN 820
   : GOTO 805
0840 ON P7GOTO 805
   : IF J=0THEN 810
   : P7=J
   : GOTO 860
0850 P7=1
   : PRINT "HOW MANY FILES (DEFAULT)=";P7
   : INPUT P7
0860 H=0
   : INPUT "KEY 1(EXEC) FOR HARD COPY",H
0870 D$=" "
   : INPUT "DATE",D$
0880 L=55
   : REM /LINES/PAGE
   : M=5
   : REM /MARGIN
0890 IF P6=P7THEN 1510
   : GOSUB 1430
   : P6=P6+1
   : IF D=0THEN 900
   : P$=P$(P6)
   : LIMITS T#1,P$,A1,B,Z
   : GOTO 910
0900 GOSUB 500
   : P$=STR(A1$(1),2,8)
0910 GOSUB 410
   : PRINT HEX(0C0E);TAB(M/2);P$,D$
   : PRINT TAB(M);"SELECTED STATEMENT LINES"
   : SELECT PRINT 005
0920 D0$=HEX(0D)
   : B1=2
   : GOSUB 480
   : B1=2
   : GOSUB 480
0930 GOTO 520
0940 DATA "LIST","CLEAR","RUN","RENUMBER","CONTINUE","SAVE"
0950 DATA "LIMITS","COPY","KEYIN","DSKIP","AND","OR","XOR"
0960 DATA "TEMP","DISK","TAPE","TRACE","LET","DRAM","DIM","ON"
0970 DATA "STOP","END","DATA","READ","INPUT","GOSUB","RETURN"
0980 DATA "GOTO","NEXT","FOR","IF","PRINT","LOAD","REM","RESTORE"
0990 DATA "PLOT","SELECT","COM","PRINTUSING","MAT","REWIND","SKIP"
1000 DATA "BACKSPACE","SCRATCH","MOVE","CONVERT","PLOT"," STEP"
1010 DATA " THEN"," TO","BEG","OPEN","CI","R","D","CO"," ","OFF"
1020 DATA "DBACKSPACE","VERIFY","DA","BA","DC","FN","ABS(","SQR("
1030 DATA "COS(","EXP(","INT(","LOG(","SIN(","SGN(","RND(","TAN("
1040 DATA "ARC","#PI","TAB(","DEFFN","TAN(","SIN(","COS(","HEX("
1050 DATA "STR(","ATN(","LEN(","RE","#","%","P","BT","G","VAL(","NUM("
1060 DATA "BIN(","POS(","LS=","ALL","PACK","CLOSE","INIT","HEX"
1070 DATA "UNPACK","BOOL","ADD","ROTATE","$","ERROR","ERR","DAC"
1075 DATA "DSC","SUB","LINPUT","VER(","ELSE","SPACE","ROUND","AT(","HEXOF(","M
     AX(","MIN(","MOD("
1080 REM DUMMY ATOMS
1090 DATA "MAT","ON ERROR"
1100 Z=-127
1110 REM W$(Z+\DC\D288)))="B/S"
   : REM /KEYIN
1120 REM W$(Z+\DC\D2DC)))="B/S"
   : REM /VAL
1130 W$(Z+VAL(HEX(A5)))="SELECT"
   : REM /SELECT
1140 W$(Z+VAL(HEX(E8)))="B"
   : REM /ADD(
1150 W$(Z+VAL(HEX(8A)))="B"
   : REM /AND
1160 W$(Z+VAL(HEX(DE)))="B"
   : REM /BIN(
1170 W$(Z+VAL(HEX(E7)))="B"
   : REM /BOOL
1180 W$(Z+VAL(HEX(E4)))="B"
   : REM /INIT
1190 W$(Z+VAL(HEX(DD)))="B"
   : REM /NUM(
1200 W$(Z+VAL(HEX(8B)))="B"
   : REM /OR
1210 W$(Z+VAL(HEX(DF)))="B"
   : REM /POS(
1220 W$(Z+VAL(HEX(E9)))="B"
   : REM /ROTATE
1230 W$(Z+VAL(HEX(8C)))="B"
   : REM /XOR
1240 W$(Z+VAL(HEX(AE)))="B"
   : REM /CONVERT
1250 W$(Z+VAL(HEX(E6)))="B"
   : REM /UNPACK
1260 W$(Z+VAL(HEX(E2)))="B"
   : REM /PACK
1270 W$(Z+VAL(HEX(A4)))="B/PLOT"
   : REM /PLOT
1280 W$(Z+VAL(HEX(AF)))="B/PLOT"
   : REM /PLOT SEL.
1290 W$(Z+VAL(HEX(81)))="C/T"
   : REM /CLEAR
1300 W$(Z+VAL(HEX(86)))="DISK"
   : REM /LIMITS
1310 W$(Z+VAL(HEX(BB)))="DISK"
   : REM /DBACKSPACE
1320 W$(Z+VAL(HEX(89)))="DISK"
   : REM /DSKIP
1330 W$(Z+VAL(HEX(BE)))="DISK"
   : REM /BA
1340 W$(Z+VAL(HEX(BD)))="DISK"
   : REM /DA
1350 W$(Z+VAL(HEX(BF)))="DISK"
   : REM /DC
1360 W$(Z+VAL(HEX(A8)))="OP 1"
   : REM /MAT ALSO SEE HEX(EB)
1370 W$(Z+VAL(HEX(EA)))="OP 2"
   : REM /$
1380 W$(Z+VAL(HEX(94)))="C"
   : REM /ON ERROR
1390 W$(Z+VAL(HEX(FA)))="OP 5"
   : REM /DUMMY ATOM FOR MAT VERBS
1400 W$(Z+VAL(HEX(FB)))="C"
   : REM /DEFFN' HEX
1410 RETURN
1420 STOP "1420--ILLOGICAL NO CR ON RECORD"
1430 FOR Z=1 TO 128
   : A(Z)=0
   : NEXT Z
   : INIT(FF)R$()
   : R=0
   : RETURN
1440 DEFFN'11
   : GOSUB 410
   : PRINT
   : PRINT
   : PRINT HEX(0E);" ATOMS USED",P$,D$
1450 R,Z=0
   : MAT SORT R$() TO T1$(),T2$()
1460 Z=Z+1
   : IF Z>128THEN 890
1470 IF A(Z)=0THEN 1460
   : IF W$(Z)=" "THEN 1460
   : PRINT "VERB=";C$(Z),"IS USED ";A(Z);"TIMES";
   : IF F1=2THEN 1480
   : PRINT "**REQUIRES--";W$(Z);
1480 PRINT
1490 BIN(T$)=Z+127
   : R=R+1
   : IF RND(0)<>.89459771698THEN 1495
   : X=VAL(T2$(R))
   : IF T$=STR(R$(X),1,1)THEN 1500
   : R=R-1
   : PRINT
   : GOTO 1460
1495 X=VAL(STR(T2$(R),2))
   : IF T$=STR(R$(X),1,1)THEN 1500
   : R=R-1
   : PRINT
   : GOTO 1460
1500 PRINT "--";
   : HEXPRINT STR(R$(X),2,2);
   : GOTO 1490
1510 STOP "END OF JOB"
1520 D$=" "
   : INPUT "LOOK FOR VERB or QUOTE",D$
   : Z=1
   : IF D$<>" "THEN 1525
   : RETURN
1525 IF D$<>"QUOTE"THEN 1530
   : Q0$=HEX(22)
   : GOTO 1520
1530 IF C$(Z)=D$THEN 1540
   : Z=Z+1
   : IF Z<108THEN 1530
   : PRINT "ATOM NOT IN TABLE"
   : GOTO 1520
1540 W$(Z)="FOUND AT"
   : L1=1
   : PRINT "LOOKING FOR--";C$(Z)
   : GOTO 1520
1550 Z=-127
   : IF L1=0THEN 1110
   : RETURN
1560 DEFFN'0
   : PRINT "ANALYZE CONFIGURATION"
   : F1=1
   : GOTO 1580
1570 DEFFN'1
   : PRINT "LOOK FOR SPECIFIC VERBS"
   : F1=2
1580 GOSUB 1430
   : GOTO 740
1590 SELECT PRINT 005(64),INPUT 001
   : PRINT HEX(03);"PROGRAM ANALYZER"
   : RESTORE
   : Z=1
1600 READ C$
   : C$(Z)=C$
   : Z=Z+1
   : IF Z<123+2 THEN 1600
1610 DEFFN'15
   : SELECT PRINT 005
   : PRINT HEX(03),,"PROGRAM ANALYZER"
1620 PRINT "S.F. '0 DETERMINE CONFIGURATION FOR PROGRAM FILES"
1630 PRINT "S.F. '1 LOOK FOR VERB ATOMS IN PROGRAM FILES"
1640 PRINT "S.F. '11 SUMMARY"
1650 PRINT "S.F. '15 MENU"
1660 STOP "KEY APPROPRIATE SPECIAL FUNCTION"