1 REM TEST PROGRAM
2 REMARK OTHER FORM OF REM
4 PRINT "TEST GOS"
5 LET A=0
0006GO TO0008
7 PRINT "GO ERROR"
8 DEF FNV=3
9 GOTO 14
12 GO      TO17
14 DIM V(3)
15 GOTO 12
17 LET A=A+1
18 IF A<4 THEN 6
20 GO SUB 24
21 GOTO 30
24 REM SUBROUTINE
25 RETURN
30 PRINT "TEST CONSTANTS"
32 PRINT  0.0; 1; 2.0; 03.0;  4E0; " SB 0 THRU 4"
00033 PRINT .5E+1;600E-2;0.07E2;-(-8),.0000000009E10; " SB 5 THRU 9"
34 PRINT 25.678900000000000000000000000000000234; " SB 25.6789"
35 PRINT-1.1*(-1.2);" SB 1.32"
36 PRINT 26070000000000000000123E-21;" SB 26.07"
37 PRINT -  36  ^ .5;  -7; - ( + 8 );  " IS -6 THRU -8"
38 PRINT 1E-38;1E+38; " ARE 1E-38 AND 1E+38"
39 PRINT  100E322,.001E-322; " ARE TOO LARGE AND TOO SMALL"

40 REM TEST PRINT FORMATS
41  PRINT"A "; "B";         "C";       "D "; "E SB A BCD E"
42 PRINT "1 TAB";TAB(.6);"3 TABS";TAB(3);"ENDTABS"
43 PRINT "1 TAB","3 TABS",;,,;;;
44 PRINT "ENDTABS"
45 PRINT "A";
46 PRINT;;;
47 PRINT;;"B SB AB"
48 PRINT;;,
49 PRINT"SB IDENTED ONE TAB"
50PRINT"LONGESTPOSSIBLE................................................"
51 PRINT "20 TABS";TAB(4*5)
52 LET X=1/3
53 PRINT "TOOLONG",X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
54 PRINT "Y" ; "" ; "E" ;
55PRINT"";"S"; " SB YES (WITH NO SPACES IN IT)"
60 PRINT "TEST DEF"
61 GOTO 63
62 DEF FNA=1
63DEFFNB  (  X  )  =  X  +  1
64 DEF FNZ(Z9) =Z9*2+FNA+FNB(1+1)
65 DEF FNK(X)=X+FNB(X)+X
68 LET X=3
70PRINTFNA,FNB  (1),FNB(-(-1-1)),  FNB(FNB(2)),
71 PRINT FNZ(1/2),X+FNB(1)*FNB(1)-1,X+4
72IFFNA<>FNATHEN 78
73 PRINT 8;" SB 1 THRU 8"
74   IF  FNK(FNK   (10) + FNK(20) -1) =274 THEN 78
75 PRINT "FUNCTION ERROR 1 WITH:",FNK(FNK(10)+FNK(20)-1)
78 PRINT "TEST ON"
81 LET X3=3
82 ON 1 GOTO 85
83 PRINT "ON ERROR 1"
85 ON X3+6-6 GOTO 86,86,87,86
86 PRINT "ON ERROR 2"
87ON(SGN(RND))GOTO   88,89
88 ON 2*X3/X3+X3 GOTO 89,89,89,89,90
89 PRINT "ON ERROR 3"
90 PRINT "END ON TESTS"
100 REM IF TESTS (FIRST NON-JUMPS)
101 IF 1<>1 THEN 103
102 PRINT 1
103 IF 1=1+1 THEN 105
104 PRINT 2
105 IF1>1 THEN 107
106 PRINT 3
107 IF 1<=6*0 THEN 109
108 PRINT 4
109 IF 6<6 THEN 111
110 PRINT 5
111 IF 1>2 THEN 113
112 PRINT 6
113 IF 1<0 THEN 115
114 PRINT 7
115 IF 1 + 1 >=  1 + 2  THEN  117
116 PRINT 8
117 REM END NON-JUMPS NOW TRY JUMPS
120 PRINT " SB 1 THRU 8"
121 IF 1+1=2 THEN 123
122 PRINT -1
123 IF1<>2 THEN 125
124 PRINT-2
125 IF1>0THEN127
126 PRINT-3
127IF1>=1E0THEN129
128 PRINT-4
129 IF-1*1 >=-1-1 THEN 131
130 PRINT-5
131 IF -2<-1 THEN 133
132 PRINT-6
133 IF 0<=0 THEN 135
134 PRINT-7
135 IF 1<3/1 THEN 139
136 PRINT-8
139 GOTO 200
150 REM USE ALL VARIABLE NAMES
151 PRINT A,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9
152 PRINT B,B1,B2,B3,B4,B5,B6,B7,B8,B9
153 PRINT C,C1,C2,C3,C4,C5,C6,C7,C8,C9
154 PRINT D,D0,D1,D2,D3,D4,D5,D6,D7,D8,D9
155 PRINT E9,E8,E7,E6,E5,E4,E3,E2,E1,E
156 PRINT F,F1,F2,F3,F4,F5,F6,F7,F8,F9
157 PRINT G,G1,G2,G3,G4,G5,G6,G7,G8,G9
158 PRINT H,H1,H2,H3,H4,H5,H6,H7,H8,H9
159 PRINT I,I1,I2,I3,I4,I5,I6,I7,I8,I9
160 PRINT J,J1,J2,J3,J4,J5,J6,J7,J8,J9
161 PRINT K1,K2,K3,K4,K5,K6,K7,K8,K9
162 PRINT L,L1,L2,L3,L4,L5,L6,L7,L8,L9
163 PRINT N,N1,N2,N3,N4,N5,N6,N7,N8,N9
164 PRINT M,M1,M2,M3,M4,M5,M6,M7,M8,M9
165 PRINT O,O1,O2,O3,O4,O5,O6,O7,O8,O9
166 PRINT P,P1,P2,P3,P4,P5,P6,P7,P8,P9
167 PRINT Q,Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9
168 PRINT S,S1,S2,S3,S4,S5,S6,S7,S8,S9
169 PRINT T,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9
170 PRINT U,U1,U2,U3,U4,U5,U6,U7,U8,U9,U0
171 PRINT V,V0,V1,V2,V3,V4,V5,V6,V7,V8,V9
172 PRINT W1,W,W0,W2,W3,W4,W5,W6,W7,W8,W9
174 PRINT X,X0,X1,X2,X3,X4,X5,X6,X7,X8,X9
175 PRINT Y,Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8,Y9
176 PRINT Z,Z1,Z0,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9
180 PRINT A$,B$,C$,D$,E$,F$,G$
181 PRINT H$,I$,J$,K$,L$,M$,N$
182 PRINT O$,P$,Q$,R$,S$,T$
184 PRINT    V$,W$,X$,Y$,Z$
185 PRINT R,R0,R1,R2,R3,R4,R5,R6,R7,R8,R9
186 PRINT B0,C0,E0,F0,G0,H0,I0,J0,K0,K,L0
187 PRINT M0,N0,O0,P0,U$,Q0,S0,Y0
200 PRINT "GOSUB TESTS"
202 GOSUB 500
204 GOSUB 210
206 REM THIS SUBROUTINE NEVER RETURNS
210 GOSUB 500
212 PRINT" SB XX"
214 LET X1=9
216 LET X2=5*2
218 GOSUB 600
220 PRINT " SB 987654321"
222 PRINT F;" SB 90"
240 PRINT "TEST FORS"
242 FOR I=1 TO 3
244 PRINT I,
246 NEXT I
248 PRINT " SB 1 THRU 3"
252 LET E=2
254 FOR A=0 TO E
255 DEF FNY=-1
256 FOR Z9=-FNY-2 TO 3*(-1) STEP -(-FNY)
258 PRINT 3*A-Z9
260 NEXT Z9
261 LET E=0
262 NEXT A
264 PRINT " SB 123456789"
266 PRINT A," SB 3",Z9;" SB -4"
268 LET P=0
270 FORA=1TO3-PSTEPP
272  LET P=P+1
274 PRINT A+P;
276 IF P>4 THEN 280
278 NEXT A
280 PRINT " SB 23456"
286 FOR V=20 TO 16  STEP -1
288 IF V=18 THEN 300
290 REM RETURN HERE ON GOSUB MUCH LATER
291 IF V>18 THEN 294
292 PRINT V;
294 NEXT V
296 PRINT V;" SB 18 THRU 15"
298 RETURN
300 FOR I=1 TO 7 STEP 3
302 GO SUB 330
304 GOTO 320
306 PRINT I,X1,FNY*FNY*X2;
308 FOR J=4 TO 2 STEP-9
310   GOTO 314
312 NEXT J
314 NEXT I
316 PRINT " SB 123456789"
318 GO TO 350
320 LET X1=I+1
322 GOTO 306
330 LET X2=I+2
332 RETURN
350 FOR I=1 TO 0
352 PRINT "FOR ERROR 1"
354 NEXT I
356 FOR I=1 TO 2 STEP-1
358 PRINT "FOR ERROR 2"
360 NEXT I
362 FOR K=0 TO 0
364 PRINT K;
366 NEXT K
368 FOR I=0 TO 0 STEP -(-FNY)
370 PRINT I+1;
372 NEXT I
374 PRINT" SB 01"
376 LET P=0
378 FOR I=1 TO 2
380 LET P=P+1
382 IF P<5000 THEN 378
384 NEXT I
386 PRINT I,P," SB 3,5001"
388 LET P=10
389 LET Q=1
390 FOR I=1 TO P STEP Q
392 PRINT I;
394 LET P=3
396 LET I=I+P
398 LET Q=0
399 NEXT I
400 PRINT I; "SB 1,5,9,13"
410 FOR I=1 TO 3
412 FOR I=6 TO 9
414 PRINT I;
416 NEXT I
418 GOTO 422
420 NEXT I
422 PRINT I;" SB 6 THRU 10"
430 PRINT "10 NESTED FORS -- NB V IS STILL ACTIVE AT 286"
432 FOR A=1 TO 1
434 FOR B=2 TO 2
436 FOR C=-3 TO -3
438 FOR D=4 TO 4 STEP -1
440 FOR E=5 TO 5 STEP-1
444 PRINT A;B; -C;D;E;
446 FOR F=-6 TO -6 STEP -1
448 FOR G=7 TO 7
450 FOR H=8 TO 8
452 FOR I=9 TO 9
454 PRINT -F; G; H; I; " SB 1 THRU 9"
456 NEXT I
458 NEXT H
460 NEXT G
462 NEXT F
464 NEXT E
466 NEXT D
468 NEXT C
470 NEXT B
472 NEXT A
480 GOSUB 290
498 PRINT "END FOR TESTS"
499 GOTO 640
500 REM SUBROUTINE 1
502 PRINT  "X" ;
504 RETURN
600 REM RECURSIVE MULTIPLY SUBROUTINE : X1*X2
605 DEF FNO=1
610 PRINT X1;
615 IF X1=FNO THEN 630
618 LET X1=X1-FNO
620 GOSUB 605
622 LET F=F+X2
624 RETURN
630 LET F=X2
632 RETURN
640 PRINT "TEST RANDOM NUMBERS"
641 PRINT RND,RND," SHOULD BE THE SAME 2 VALUES EVERY RUN"
642 RANDOMIZE
643 PRINT RND,RND," SHOULD BOTH CHANGE (ALMOST) EVERY RUN"
644 RANDOMIZE
645 PRINT RND,RND," SHOULD BOTH CHANGE (ALMOST) EVERY RUN"
646 LET E=9
647 LET A=9
650 LET E$="EIGHTEEN CHAR STRI"
652 LET N$=""
654 LET F$=E$
655 IF A<>E THEN 658
656 LET G$="NG"
658 PRINT F$;""; N$; G$; " SB EIGHTEEN CHAR STRING"
670 PRINT "COMPARISON OF STRINGS"
672 IF E$<>E$ THEN 674
673 PRINT "A";
674 IF N$<>"" THEN 676
675 PRINT "B";
676 IF "PIG"<>"PIG" THEN 678
677 PRINT "C";
678 IF"" = " " THEN 680
679 PRINT "D";
680 IF "PIG"="PIT" THEN 682
681 PRINT "E";
682 IF G$="EIGHTEEN CHAR PTRI" THEN 684
683 PRINT "F";
684 IF E$ > E$ THEN 686
685 PRINT "G";
686 IF E$<E$THEN 688
687 PRINT "H";
688 IF"A">"B" THEN 690
689 PRINT "I";
690 PRINT " SB ABCDEFGHI"
691 PRINT "J";
692 IF"A">="A:" THEN 694
693 PRINT "K";
694 IF "A:"<="A" THEN 696
695 PRINT "L";
696 IF E$<="EIGHTEEN CHAR STRG" THEN 698
697 PRINT "M";
698 IF":"<""THEN 700
699 PRINT "N";
700 IF "2"<"1" THEN 710
701 PRINT "O";
710IFE$=F$THEN712
711 PRINT " STRING ERROR  1"
712 IF  ""  ="" THEN 714
713 PRINT " STRING ERROR  2"
714 IF E$<>"EIGHTEEN CHAR STRG" THEN 716
715 PRINT " STRING ERROR  3"
716 IF E$ >"EIGHTEEN CHAR STRG" THEN 718
717 PRINT " STRING ERROR  4"
718 IF":">  "" THEN 720
719 PRINT " STRING ERROR  5"
720 IF "EIGHTEEN CHAR STRG" <E$ THEN 722
721 PRINT " STRING ERROR  6"
722 IF N$ < " " THEN 724
723 PRINT " STRING ERROR  7"
724 IF E$>=E$ THEN 726
725 PRINT " STRING ERROR   8"
726 IF E$<=E$ THEN 728
727 PRINT " STRING ERROR   9"
728 IF "012345678901"<="012345678911" THEN 730
729 PRINT " STRING ERROR 10"
730 IF ":">="" THEN 732
731 PRINT " STRING ERROR 11"
732 PRINT "P SB JKLMNOP"
750 PRINT "EXPRESSION EVALUATION TESTS"
752 PRINT 3-1-1; 1+2*.5; 15-4*3; 56/7/2; " SB 1 THRU 4"
754 DEF FNU(X)=X+1*1
756 LET U(3,4)=2
758 PRINT (2+8)/2; (((4))+(-(-(2))));FNU(4+6/3); U(6/3+1,3*2-2)^4-8;
760 PRINT " SB 5 THRU 8"
762 PRINT3-(2+U(-5+4*2,6 +   FNU(3^2+6)-18) ) +6; " SB 5", 2^3^4; " SB 4
764 PRINT-2^2,-(+1+2^2);-2*9^.5;-56/2^3; " SB -4 THRU -7"
766 PRINT(1E38+1E-38)-(1E38-1E-38)+5.7; " SB 5.7"
768 IF 1+2*3^4=168-125/5^2 THEN 770
769 PRINT "EXPRESSION EVALUATION ERROR"
770 PRINT 6*10/4; 2^2*4; 3/3*17; 1*3*1*3*2*1/1; " SB 15 THRU 18"
772 PRINT-3^2; -4*2,-8+1; -(+(-(+(-5))))-1; " SB -9 THRU -6"
800 PRINT "ARRAY TESTS"
802 DIM A(1),B(1,2),C(3,4), D(5,11)
804 LET A(0)=1
806 LET A(1)=2
808 LET B(0,0)=3
810 LET B(A(0),2)=4
812 LET X(0)=5
814 LET X(10)=6
816 LET Y(0,0)=7
818 LET Y(10,10)=Y(0,0)+A(0)
820 PRINT A(0);A(A(A(0))-1);B(0,0);B(1,3-1);  " SB 1 THRU 4"
822 PRINT X(0); X(10); Y(2*0,0);Y(10,10);  " SB 5 THRU 8"
824 DEF FNC=M(N+M+N(0,A(0)-1)-2)
826 LET N(0,0)=10
828 LET M(10)=9
829 LET M=5
830 LET N=-M+2
832 LET M(0)=N(0,0)-2
834 PRINT FNC;M(.49); M(10.49)-2;
836 LET X(9)=10.4
838 PRINT M(X(M(X( FNC+1-1)-.3))+1-SGN(N(0,0)))^.5*2;  " SB 9 THRU 6"
850 FOR I=1 TO 3
852 FOR J=0 TO 4
854 GOTO 856
856 DIM Q(3,4)
858 DEF FNF=2
859 LET Q(I,J)=FNF^(I-1)
860 IF I=1 THEN 862
861 LET Q(I,J)=Q(I,J)+Q(I-1,J)
862 FOR K=1 TO J
864 LET Q(I,K)=Q(I,K)+Q(I,K-1)
866 NEXT K
868 NEXT J
870 NEXT I
872 PRINT 2^Q(1,2); Q(1,4); Q(2,4); Q(3,4);  " SB 8192,23,156,642 "
874 LET X(FNC+X(3*3)-INT(11.9)-RND*.4)= 11
876 PRINT X(N(0,0)^A(0)-2)^A(1);  " SB 121"
900 PRINT "TEST DATA AND INPUT"
902 GOTO 904
904 DATA 3 , "EIGHTEEN CHAR STRI", EIGHTEEN CHAR STRI
906 LET E$="EIGHTEEN CHAR STRI"
908 READ X
910 GO SUB 1050
918DATA""
926 DATA 3.0,4.0 ,  .05E2  ,600E-02,.007E+3,8.00000001
928 FOR I=1 TO 6
930 READ J
932 PRINT J;
934 NEXT I
936 PRINT " SB 3 THRU 8"
938DATA                                      -4,+5,-60E-1,2,10,4
940 READ A,B,C
942 PRINT A,-B,C," SB -4 THRU -6"
944 LET I=3
946 READ I,X(I),X ( X ( I ) )
948 PRINT I,X(2),X(10)," SB 2,10,4"
950 READ I,J,I,J,X(2),X(J)
952 DATA 20,200,1,2
953 DATA 2000,.30
954 PRINT I,J,X(2)*10, " IS 1 THRU 3"
956 DEF FNH(I)=X(I+1)-14
958 LET X(6)=20
960 READ  J,X(FNH(J))
962 DATA 5,10
964 PRINT J,X(6)," SB 5,10"
966 DATA"   ",  .  ,",..."
968 READ A$,B$,C$
970 PRINT "+.+" ; A$ ; "+";B$;"+";C$; " SB +.+   +.+,..."
972 DATA AZ09* ):$  ,  =<>-(..+E;/.
974 DATA"AZ09* ):$" , "=<>-(..+E;/."
976 READ  A$,B$,Y$,Z$
978 PRINT A$;B$;Y$;Z$
979 PRINT " SB AZ09* ):$=<>-(..+E;/.  (REPEATED TWICE)"
980 RESTORE
982 READ Y
984 PRINT X,Y," SB 3,3"
985 GOSUB 1050
986 FOR I=1 TO 20
988 RESTORE
990 NEXT I
992 FOR J=1 TO 9
994 READ C$
996 NEXT J
998 PRINT C$," SB .007E+3"
1000 GO TO 1100
1050 REM SUBROUTINE TO CHECK STRING INPUT
1052  READ F$,G$
1053 READ N$
1054 GO TO 1058
1056 INPUT F$,G$
1057 INPUT N$
1058 IF F$<>G$ THEN 1066
1060 IF F$=E$ THEN 1068
1066 PRINT " DATA ERROR 1 WITH:";F$,G$
1068 IF N$="" THEN 1072
1070 PRINT " DATA ERROR 2 WITH:";N$
1072 LET F$="RUBBISH1"
1074 LET G$="RUBBISH2"
1076 LET N$="RUBBISH3"
1078 RETURN
1100 PRINT "NOW REPEAT USING INPUT FOR READ"
1108 INPUT X0
1110 GOSUB 1056
1128 INPUT J1,J2,J3,J4,J5,J6
1130 PRINT J1,J2,J3
1134 PRINT J4,J5,J6
1136 PRINT " IS 3 THRU 8"
1140 INPUT A,B,C
1142 PRINT A,-B,C," IS -4 THRU -6"
1146 INPUT  I,X(I),X(X(I))
1148 PRINT I,X(2),X(10)," IS 2,10,4"
1150 INPUT I,J0,I,J0,R(2),R(J0)
1154 PRINT I,J0,R(2)*10, " IS 1 THRU 3"
1158 LET X(6)=20
1160 INPUT J0,X(FNH(J0))
1164 PRINT J0,X(6)," IS 5,10"
1166 LET C$="1234567890123456"
1168 INPUT A$,B$,C$
1170PRINT "+.+" ; A$ ; "+";B$;"+";C$; " SB +.+   +.+,..."
1176 INPUT A$,B$
1177 INPUT P$,Q$
1178 PRINT A$ ; B$;P$;Q$
1179PRINT " SB AZ09* ):$=<>-(..+E;/.  (REPEATED TWICE)"
1184 PRINT X0,X,Y," IS 3,3,3"
1190 REM NOW INTERMIX READ WITH INPUT
1192 RESTORE
1194 READ X
1196 INPUT X0
1198 READ F$
1200 INPUT S$,T$
1201 INPUT G$
1202 READ G$,N$
1204 GOSUB 1058
1206 PRINT X,X0,S$,T$," IS 3 THRU 6"
 5000 REM TEST SPACING ERRORS
5001 DEF FN L=1
5002 DEF F ND=1
5003 RANDOMIZ E
5004 PRINT A $
5005 LET A 1=3
5006 PRINT SI N(X)
5007 DEF FNJ=RN D
5008 G O TO 5009
5009 IF A> =3 THEN 5010
5010 IF S< > S THEN 5011
5011 FOR A1=1 TO 3 STE P 6
5013 NEXT A 1
5014 PRINT FN J
5015 PRINT 23 45
5016 PRINT 2. 1
5017 PRINT 5.6E 9
5018 PRINT 1.2E- 9
31000 STOP
31001 PRINT "ERROR IN STOP"
31999 END
.
.
