10 CLEAR 200:DIM V$(71) 20 FOR I=1 TO 15:PRINT :NEXT 30 PRINT "THIS IS A TEST PROGRAM TO TEST THE FUNCTIONS AND COMMANDS OF" 40 PRINT "THIS INTERPRETER. SOME OF THE LIBRARY CAN NOT BE TESTED BY A PROGRAM," 50 PRINT "SINCE THEY CANNOT BE EXECUTED WHILE IN THE PROGRAM MODE." 60 PRINT "THIS PROGRAM WILL NOT TEST THE FOLLOWING FUNCTIONS OR COMMANDS:" 70 PRINT :PRINT "END,RUN,STOP,CONT,CLEAR,FILEND,SETEOF" 80 PRINT "CLOAD,LOAD,TLOAD,DADD,NEW,BYE,EDIT" 90 PRINT :PRINT "FIRST, THE FUNCTION LIBRARY WILL BE TESTED, THEN THE VERB LIBRARY." 100 PRINT :PRINT "EACH TEST WILL LIST THE FUNCTION, A VARIABLE, THE COMPUTED RESULT," 110 PRINT "AND THE CORRECT ANSWER." 120 PRINT 130 PRINT "FIRST, PLEASE PROVIDE SOME SYSTEM INFORMATION.":PRINT 140 LL=PEEK(&108) 150 WW=PEEK(&107) 160 AA=PEEK(&106)*256+PEEK(&105) 170 PRINT "TO INITIALIZE THE VIDEO BOARD, DO YOU NEED TO:" 180 PRINT " (1) OUTPUT A VALUE TO AN I/O PORT" 190 PRINT " (2) WRITE A VALUE TO AN ADDRESS IN RAM" 200 PRINT " (3) NO SPECIAL INITIALIZATION REQUIRED":PRINT 210 INPUT "INITIALIZATION PROCEDURE (1,2,3)";II 220 ON II GOTO 240,280,310 230 GOTO 170 240 INPUT "PORT NUMBER";P 250 INPUT "VALUE";V 260 OUT P,V 270 GOTO 310 280 INPUT "CONTROL BYTE ADDRESS";A 290 INPUT "CONTROL BYTE VALUE";V 300 POKE A,V 310 PRINT :PRINT "TO MAKE THE TESTS MORE CLEAR, IT IS ADVISABLE TO ERASE THE" 320 PRINT "CONSOLE DISPLAY AFTER EACH ONE. SINCE SCREEN CLEAR FUNCTIONS" 330 PRINT "VARY WIDELY FROM SYSTEM TO SYSTEM, PLEASE ENTER THE CONTROL" 340 PRINT "CHARACTER SEQUENCE REQUIRED TO CLEAR YOUR SCREEN. IF YOUR" 350 PRINT "CONSOLE HAS NO SCREEN CLEAR FUNCTION, ENTER A NUMBER OF LINE" 360 PRINT "FEED CHARACTERS (LINE FEED IS NORMALLY A 10) EQUAL TO THE" 370 PRINT "NUMBER OF LINES ON YOUR CONSOLE.":PRINT 380 INPUT "NUMBER OF CHARACTERS IN SCREEN CLEAR SEQUENCE";A 390 FOR I=1 TO A:INPUT "DECIMAL EQUIVALENT OF CHARACTER";B 400 SC$=SC$+CHR$(B) 410 NEXT 420 PRINT :PRINT :PRINT "THE ERASE SEQUENCE WILL NOW BE TESTED." 430 PRINT :INPUT "PRESS 'RETURN' TO ERASE THE SCREEN";, LINE A$ 440 PRINT SC$ 450 INPUT "IS THE SCREEN CLEAR SEQUENCE OPERATING SATISFACTORILY (Y/N)";A$ 460 IF A$="Y" THEN 480 ELSE IF A$="N" THEN 380 ELSE 450 470 REM END OF INITIALIZATION 480 C=3:GOSUB 10000 490 FOR I=1 TO C:PRINT "SGN",A(I),SGN(A(I)),B(I):NEXT 500 DATA "ALGEBRAIC SIGN",-1,-1,0,0,1,1 510 C=3:GOSUB 10000 520 FOR I=1 TO C:PRINT "INT",A(I),INT(A(I)),B(I):NEXT 530 DATA "HIGHEST INTEGER WITHIN",1.25,1,.25,0,-3.6,-4 540 C=3:GOSUB 10000 550 FOR I=1 TO C:PRINT "ABS",A(I),ABS(A(I)),B(I):NEXT 560 DATA "ABSOLUTE VALUE",3,3,0,0,-5,5 570 C=2:GOSUB 10000 580 FOR I=1 TO C:PRINT "SQR",A(I),SQR(A(I)),B(I):NEXT 590 DATA "SQUARE ROOT",49,7,1.024E+11,320000 600 C=2:GOSUB 10000 610 FOR I=1 TO C:PRINT "LOG",A(I),LOG(A(I)),B(I):NEXT 620 DATA "NATURAL LOGARITHM",123456,11.7236,.987654,-1.24228E-02 630 C=2:GOSUB 10000 640 FOR I=1 TO C:PRINT "EXP",A(I),EXP(A(I)),B(I):NEXT 650 DATA "NATURAL EXPONENTIATION",11,59874.1,2.3,9.97418 660 C=2:GOSUB 10000 670 FOR I=1 TO C:PRINT "COS",A(I),COS(A(I)),B(I):NEXT 680 DATA "COSINE",18,.660317,23.75,.18695 690 C=2:GOSUB 10000 700 FOR I=1 TO C:PRINT "SIN",A(I),SIN(A(I)),B(I):NEXT 710 DATA "SINE",12,-.536573,3,.14112 720 C=2:GOSUB 10000 730 FOR I=1 TO C:PRINT "TAN",A(I),TAN(A(I)),B(I):NEXT 740 DATA "TANGENT",.254,.259607,.886,1.22455 750 C=2:GOSUB 10000 760 FOR I=1 TO C:PRINT "ATN",A(I),ATN(A(I)),B(I):NEXT 770 DATA "ARCTANGENT",.5874,.531103,1.258,.899165 780 C=1:GOSUB 10000 790 FOR I=1 TO C:PRINT "POS",A(I),POS(0),B(I):NEXT 800 DATA "OUTPUT CURSOR POSITION",0,28 810 C=1:GOSUB 11000 820 FOR I=1 TO C:PRINT "LEN",S$(I),LEN(S$(I)),B(I):NEXT 830 DATA "LENGTH OF STRING","ABCDEFGHIJKL",12 840 C=1:GOSUB 10000 850 FOR I=1 TO C:PRINT "STR$",A(I),STR$(A(I)),B(I):NEXT 860 DATA "CONVERT NUMBER TO STRING",12345,12345 870 C=2:GOSUB 11000 880 FOR I=1 TO C:PRINT "VAL",B(I),VAL(S$(I)),S$(I):NEXT 890 DATA "CONVERT STRING TO NUMBER","54321",54321,"123.45",123.45 900 C=2:GOSUB 11000 910 FOR I=1 TO C:PRINT "ASC",S$(I),ASC(S$(I)),B(I):NEXT 920 DATA "NUMERIC ASCII EQUIVALENT OF STRING CHARACTER","ABC",65,"!",33 930 C=2:GOSUB 11000 940 FOR I=1 TO C:PRINT "CHR$",B(I),CHR$(B(I)),S$(I):NEXT 950 DATA "ONE BYTE ASCII EQUIVALENT OF NUMBER","*",42,"A",65 960 C=2:GOSUB 12000 970 FOR I=1 TO C:PRINT "LEFT$",S$(I),LEFT$(S$(I),5),T$(I):NEXT 980 DATA "LEFT (N) BYTES OF STRING","ABCDEFGH","ABCDE","XYZ","XYZ" 990 C=2:GOSUB 12000 1000 FOR I=1 TO C:PRINT "RIGHT$",S$(I),RIGHT$(S$(I),5),T$(I):NEXT 1010 DATA "RIGHT (N) BYTES OF STRING","ABCDEFGH","DEFGH","XYZ","XYZ" 1020 C=2:GOSUB 12000 1030 FOR I=1 TO C:PRINT "MID$",S$(I),MID$(S$(I),3,5),T$(I):NEXT 1040 DATA "MIDDLE SECTION OF STRING","AABBBBBCC","BBBBB","XXYZ","YZ" 1050 C=3:GOSUB 10000 1060 FOR I=1 TO C:PRINT "AND (7)",A(I),(A(I) AND 7),B(I):NEXT 1070 DATA "BOOLEAN AND",63,7,5,5,128,0 1080 C=2:GOSUB 10000 1090 FOR I=1 TO C:PRINT "OR (7)",A(I),(A(I) OR 7),B(I):NEXT 1100 DATA "BOOLEAN OR",5,7,9,15 1110 C=3:GOSUB 10000 1120 FOR I=1 TO C:PRINT "(X>3)",A(I),(A(I)>3),B(I):NEXT 1130 DATA "LOGICAL COMPARE, GREATER",2,0,3,0,4,-1 1140 C=3:GOSUB 10000 1150 FOR I=1 TO C:PRINT "(X=3)",A(I),(A(I)=3),B(I):NEXT 1160 DATA "LOGICAL COMPARE, EQUAL",2,0,3,-1,4,0 1170 C=3:GOSUB 10000 1180 FOR I=1 TO C:PRINT "(X<3)",A(I),(A(I)<3),B(I):NEXT 1190 DATA "LOGICAL COMPARE, LESS",2,-1,3,0,4,0 1200 C=3:GOSUB 10000 1210 FOR I=1 TO C:PRINT "(X<>3)",A(I),(A(I)<>3),B(I):NEXT 1220 DATA "LOGICAL COMPARE, UNEQUAL",2,-1,3,0,4,-1 1230 C=4:GOSUB 10000 1240 FOR I=1 TO C:PRINT "VARPTR",A(I),PEEK(VARPTR(C)+I-1),B(I):NEXT 1250 DATA "VARIABLE POINTER",0,0,1,0,2,0,3,131 1260 C=4:GOSUB 10000 1270 FOR I=1 TO C:PRINT "CINP",A(I),CINP(A(I)),B(I):NEXT 1280 DATA "CONSOLE INPUT (PLEASE PRESS 'A' TWICE)",0,0,1,0,2,1,3,65 1290 C=5:GOSUB 10000 1300 PRINT "X*5",A(1),A(1)*5,B(1) 1310 PRINT "X/5",A(2),A(2)/5,B(2) 1320 PRINT "X+5",A(3),A(3)+5,B(3) 1330 PRINT "X-5",A(4),A(4)-5,B(4) 1340 PRINT "X^5",A(5),A(5)^5,B(5) 1350 DATA "MATHEMATICAL OPERATIONS",7,35,7,1.4,7,12,7,2,7,16807 1360 C=3:GOSUB 10000 1370 FOR I=1 TO C:PRINT "RND",A(I),RND(A(I)),B(I):NEXT 1380 DATA "RANDOM NUMBER GENERATOR",-1,7.65943E-06,0,7.65943E-6,1,.163989 1390 C=2:GOSUB 12000 1400 PRINT "FRE (NUMERIC)",S$(1),FRE(0),T$(1) 1410 PRINT "FRE (STRING)",S$(2),FRE("A"),T$(2) 1420 DATA "FREE SPACE","0","VARIABLE SPACE",("A"),"STRING SPACE" 1430 C=2:GOSUB 10000 1440 FOR I=1 TO C:PRINT "PEEK",A(I),PEEK(A(I)),B(I):NEXT 1450 DATA "MEMORY PEEK",0,195,1,3 1460 GOSUB 13000 1470 PRINT "THE NEXT IS FOR THE 'INP' FUNCTION." 1480 INPUT "WHAT I/O PORT IS YOUR KEYBOARD (IN DECIMAL)";P 1490 PRINT "THE LAST VALUE INPUT WAS A RETURN, SO THE PORT SHOULD READ A 13." 1500 PRINT :PRINT "AN INP FROM PORT"P"RETURNS"INP(P)"." 1510 GOSUB 13000 1520 TRAP ; GOTO 1540 1530 GARBAGE 1540 PRINT "THE ERROR LINE NUMBER AND ERROR CODE TEST SHOULD REPORT" 1550 PRINT "THE LAST ERROR WAS SYNTAX (2) ON LINE 1530" 1560 PRINT :PRINT "IT READS ERROR CODE"ERRC(0)"ON LINE"ERRL(0)"." 1570 PRINT :INPUT "PRESS 'RETURN' FOR THE NEXT TEST";, LINE AA$ 1580 FOR I=1 TO 30:PRINT :NEXT 1590 SS$="SUCCESSFUL":PP$="THE NEXT LINE SHOULD READ" 1600 PRINT "THIS PROGRAM WILL NOW ATTEMPT TO TEST THE COMMANDS." 1610 PRINT "IN MOST TESTS, THE CONTINUATION OF THE PROGRAM INDICATES THE" 1620 PRINT "VERB OPERATES PROPERLY. FAILURE SHOULD CAUSE UNPREDICTABLE RESULTS." 1630 PRINT "EACH TEST WILL IDENTIFY THE TEST TO FOLLOW, SO THAT IT MAY BE" 1640 PRINT "DETERMINED IF THE PROGRAM HAS CONTINUED IMPROPERLY." 1650 PRINT :INPUT "PRESS 'RETURN' TO BEGIN COMMAND TESTS.";, LINE A$ 1660 REM FIRST, LOAD THE TABLES FOR THE VERB TEST. 1670 DATA END,FOR/NEXT,DATA,INPUT,DIM,READ,LET,GOTO,CGOTO,RUN,FAST,IF,RESTORE 1680 DATA GOSUB,CGOSUB,RETURN,REM,STOP,OUT,ON,NULL,WAIT,POKE,PRINT,DEF,CONT 1690 DATA LIST,CLEAR,CLOAD,CSAVE,CINPUT,CPRINT,LOAD,SAVE,TLOAD,TSAVE,DIR,RESET 1700 DATA DELETE,OPEN,CREATE,CLOSE,DPRINT,DINPUT,REWIND,DADD,GET,PUT,FILEND 1710 DATA RENAME,SETEOF,SCROLL,VPRINT,VINPUT,WIDTH,LLIST,LPRINT,NEW,CALL 1720 DATA PLOT,DRAW,FILL,BYE,DDT,TRAP,TRACE,RANDOMIZE,MOVE,EDIT,FINISHED 1730 TRAP ; GOTO 18190 1740 FOR I=1 TO 70:READ V$(I):NEXT 1750 X=1 1760 REM END 1770 GOSUB 14010:IF AA$<>"Y" THEN 1800 1780 GOSUB 15000 1790 REM FOR/NEXT 1800 GOSUB 14000:IF AA$<>"Y" THEN 1840 1810 PRINT PP$:PRINT "* 0 * 2 * 4 * 6 * 8":PRINT 1820 FOR I=0 TO 8 STEP 2:PRINT "*";I;:NEXT 1830 REM DATA 1840 GOSUB 14000:IF AA$<>"Y" THEN 1910 1850 PRINT PP$:PRINT " 1 2 3 4 5" 1860 RESTORE 1880 1870 FOR I=1 TO 5:READ A(I):NEXT 1880 DATA 1,2,3,4,5 1890 FOR I=1 TO 5:PRINT A(I);:NEXT 1900 REM INPUT 1910 GOSUB 14000:IF AA$<>"Y" THEN 1970 1920 PRINT "ENTER A LINE OF DATA, THEN COMPARE WHAT YOU KEYED WITH THE SECOND LINE." 1930 INPUT LINE A$ 1940 PRINT " ";A$ 1950 PRINT :PRINT "IF THE LINES MATCH, THE STATEMENT IS WORKING PROPERLY." 1960 REM DIM 1970 GOSUB 14000:IF AA$<>"Y" THEN 2040 1980 DIM T(12) 1990 PRINT PP$ 2000 PRINT " 1 2 3 4 5 6 7 8 9 10 11 12" 2010 FOR I=1 TO 12:T(I)=I:NEXT 2020 FOR I=1 TO 12:PRINT T(I);:NEXT 2030 REM READ 2040 GOSUB 14000:IF AA$<>"Y" THEN 2110 2050 PRINT PP$ 2060 PRINT " 1 2 3 4 5" 2070 RESTORE 2090 2080 FOR I=1 TO 5:READ A:PRINT A;:NEXT 2090 DATA 1,2,3,4,5 2100 REM LET 2110 GOSUB 14000:IF AA$<>"Y" THEN 2160 2120 PRINT PP$ 2130 PRINT "A= 12 " 2140 A=12:PRINT "A="A 2150 REM GOTO 2160 GOSUB 14000:IF AA$<>"Y" THEN 2220 2170 PRINT PP$ 2180 PRINT SS$ 2190 GOTO 2200 2200 PRINT SS$ 2210 REM CGOTO 2220 GOSUB 14000:IF AA$<>"Y" THEN 2280 2230 PRINT PP$ 2240 PRINT SS$ 2250 CGOTO 1000+1260 2260 PRINT SS$ 2270 REM RUN 2280 GOSUB 14000:IF AA$<>"Y" THEN 2310 2290 GOSUB 15000 2300 REM FAST 2310 GOSUB 14000:IF AA$<>"Y" THEN 2410 2320 PRINT "TIME THE DELAY BETWEEN 'START' AND 'STOP'." 2330 PRINT "FIRST, BEFORE THE 'FAST' OPTION." 2340 INPUT "PRESS 'RETURN' TO START";, LINE Z$ 2350 GOSUB 16000:PRINT "EXECUTING 'FAST' CONVERSION. PLEASE WAIT." 2360 FAST :PRINT "NOW, AFTER THE 'FAST' OPTION." 2370 INPUT "PRESS 'RETURN' TO CONTINUE";, LINE Z$ 2380 GOSUB 16000 2390 PRINT "IF THERE WAS AN IMPROVEMENT OF OVER 50%,":PRINT " THE 'FAST' OPTION IS PERFORMING PROPERLY." 2400 REM IF 2410 GOSUB 14000:IF AA$<>"Y" THEN 2440 2420 PRINT PP$:PRINT SS$:IF (7-5)=(1+1) AND NOT (3<2) THEN PRINT SS$ 2430 REM RESTORE 2440 GOSUB 14000:IF AA$<>"Y" THEN 2480 2450 PRINT PP$:RESTORE 2460:READ A:RESTORE 2460:PRINT A:READ A:PRINT A 2460 DATA 12345 2470 REM GOSUB 2480 GOSUB 14000:IF AA$<>"Y" THEN 2510 2490 PRINT PP$:PRINT SS$:GOSUB 16060:PRINT SS$ 2500 REM CGOSUB 2510 GOSUB 14000:IF AA$<>"Y" THEN 2540 2520 PRINT PP$:PRINT SS$:CGOSUB 15000+10:PRINT SS$ 2530 REM RETURN 2540 GOSUB 14000:IF AA$<>"Y" THEN 2570 2550 PRINT PP$:PRINT SS$:GOSUB 16060:PRINT SS$ 2560 REM REM 2570 GOSUB 14000:IF AA$<>"Y" THEN 2610 2580 PRINT PP$:PRINT SS$:REM PRINT "ERROR" 2590 PRINT SS$ 2600 REM STOP 2610 GOSUB 14000:IF AA$<>"Y" THEN 2640 2620 GOSUB 15000 2630 REM OUT 2640 GOSUB 14000:IF AA$<>"Y" THEN 2690 2650 INPUT "TO WHAT PORT WOULD YOU LIKE TO OUTPUT A VALUE";P 2660 INPUT "WHAT VALUE WOULD YOU LIKE TO OUTPUT";V 2670 OUT P,V:PRINT "DONE" 2680 REM ON 2690 GOSUB 14000:IF AA$<>"Y" THEN 2740 2700 PRINT PP$:PRINT SS$:P=2:ON P GOTO 2710,2720,2710 2710 PRINT "ERROR" 2720 PRINT SS$ 2730 REM NULL 2740 GOSUB 14000:IF AA$<>"Y" THEN 2800 2750 PRINT "WHAT IS THE LOWEST NUMBER OF NULLS AFTER A RETURN YOUR SYSTEM" 2760 INPUT "CAN OPERATE PROPERLY WITH";N 2770 NULL N:PRINT "THESE":PRINT "SHOULD":PRINT "BE":PRINT "FAST":NULL 255 2780 PRINT :PRINT :PRINT "THESE":PRINT "SHOULD":PRINT "BE":PRINT "SLOW":NULL N 2790 REM WAIT 2800 GOSUB 14000:IF AA$<>"Y" THEN 2860 2810 INPUT "WHAT PORT WOULD YOU LIKE TO USE";P 2820 INPUT "WHAT VALUE WILL YOU EXCLUSIVE OR TO THE PORT DATA";O 2830 INPUT "WHAT VALUE WILL YOU AND TO THE PORT DATA";A 2840 PRINT PP$:PRINT SS$:WAIT P,A,O:PRINT SS$ 2850 REM POKE 2860 GOSUB 14000:IF AA$<>"Y" THEN 2900 2870 PRINT PP$:PRINT SS$:A=PEEK(0):POKE 0,255-A:IF PEEK(0)=255-A THEN PRINT SS$ ELSE PRINT "ERROR" 2880 POKE 0,A 2890 REM PRINT 2900 GOSUB 14000:IF AA$<>"Y" THEN 2940 2910 PRINT PP$:PRINT "LEFT 12345 RIGHT" 2920 A$="LEFT":B=12345:PRINT A$;SPC(7);B;TAB(27);"RIGHT" 2930 REM DEF 2940 GOSUB 14000:IF AA$<>"Y" THEN 2990 2950 PRINT PP$:PRINT SS$ 2960 DEF FNA8(F)=F*F 2970 N=7:IF FNA8(N)=49 THEN PRINT SS$ ELSE PRINT "ERROR" 2980 REM CONT 2990 GOSUB 14000:IF AA$<>"Y" THEN 3020 3000 GOSUB 15000 3010 REM LIST 3020 GOSUB 14000:IF AA$<>"Y" THEN 3060 3030 PRINT "THE LAST FEW LINES OF THE PROGRAM WILL NOW BE LISTED" 3040 LIST 18000 3050 REM CLEAR 3060 GOSUB 14000:IF AA$<>"Y" THEN 3090 3070 GOSUB 15000 3080 REM CLOAD 3090 GOSUB 14000:IF AA$<>"Y" THEN 3120 3100 GOSUB 15000 3110 REM CSAVE 3120 GOSUB 14000:IF AA$<>"Y" THEN 3190 3130 PRINT :INPUT "PRESS 'RETURN' WHEN THE CASSETTE IS READY";, LINE Z$ 3140 PRINT "(THIS NORMALLY REQUIRES SLIGHTLY OVER 1 MINUTE)" 3150 CSAVE F 3160 PRINT "THE PROGRAM HAS NOW SAVED ITSELF." 3170 PRINT "TO TEST IT, IT IS NECESSARY TO RELOAD AND RESTART THE PROGRAM." 3180 REM CINPUT 3190 GOSUB 14000:IF AA$<>"Y" THEN 3220 3200 GOSUB 17000 3210 REM CPRINT 3220 GOSUB 14000:IF AA$<>"Y" THEN 3250 3230 GOSUB 17000 3240 REM LOAD 3250 GOSUB 14000:IF AA$<>"Y" THEN 3280 3260 GOSUB 15000 3270 REM SAVE 3280 GOSUB 14000:IF AA$<>"Y" THEN 3330 3290 INPUT "PLACE A SCRATCH DISK IN DRIVE A AND PRESS 'RETURN'";, LINE Z$ 3300 RESET :SAVE "A:FUNCTEST" 3310 PRINT "THE PROGRAM HAS NOW SAVED ITSELF ON DISK" 3320 REM TLOAD 3330 GOSUB 14000:IF AA$<>"Y" THEN 3360 3340 GOSUB 15000 3350 REM TSAVE 3360 GOSUB 14000:IF AA$<>"Y" THEN 3410 3370 INPUT "WHEN THE PUNCH IS READY, PRESS 'RETURN'";, LINE A$ 3380 TSAVE 3390 PRINT "THEN PROGRAM HAS NOW BEEN PUNCHED" 3400 REM DIR 3410 GOSUB 14000:IF AA$<>"Y" THEN 3450 3420 INPUT "WHEN A DISK CONTAINING A VALID DIRECTORY IS IN DRIVE A, PRESS 'RETURN'";, LINE Z$ 3430 PRINT "LISTING THE DIRECTORY OF DRIVE A":DIR A 3440 REM RESET 3450 GOSUB 14000:IF AA$<>"Y" THEN 3480 3460 GOSUB 18000 3470 REM DELETE 3480 GOSUB 14000:IF AA$<>"Y" THEN 3510 3490 GOSUB 18000 3500 REM OPEN 3510 GOSUB 14000:IF AA$<>"Y" THEN 3540 3520 GOSUB 18000 3530 REM CREATE 3540 GOSUB 14000:IF AA$<>"Y" THEN 3570 3550 GOSUB 18000 3560 REM CLOSE 3570 GOSUB 14000:IF AA$<>"Y" THEN 3600 3580 GOSUB 18000 3590 REM DPRINT 3600 GOSUB 14000:IF AA$<>"Y" THEN 3630 3610 GOSUB 18000 3620 REM DINPUT 3630 GOSUB 14000:IF AA$<>"Y" THEN 3660 3640 GOSUB 18000 3650 REM REWIND 3660 GOSUB 14000:IF AA$<>"Y" THEN 3690 3670 GOSUB 18000 3680 REM DADD 3690 GOSUB 14000:IF AA$<>"Y" THEN 3720 3700 GOSUB 15000 3710 REM GET 3720 GOSUB 14000:IF AA$<>"Y" THEN 3750 3730 GOSUB 18000 3740 REM PUT 3750 GOSUB 14000:IF AA$<>"Y" THEN 3780 3760 GOSUB 18000 3770 REM FILEND 3780 GOSUB 14000:IF AA$<>"Y" THEN 3810 3790 GOSUB 15000 3800 REM RENAME 3810 GOSUB 14000:IF AA$<>"Y" THEN 3840 3820 GOSUB 18000 3830 REM SETEOF 3840 GOSUB 14000:IF AA$<>"Y" THEN 3870 3850 GOSUB 15000 3860 REM SCROLL 3870 GOSUB 14000:IF AA$<>"Y" THEN 4080 3880 PRINT "YOU SHOULD SEE THE VIDEO DISPLAY FILLED WITH PERIODS, THEN A" 3890 PRINT "WINDOW DEFINED. TEN LINES OF DATA SHOULD SCROLL THROUGH THE WINDOW." 3900 INPUT "PRESS 'RETURN' TO START THE TEST.";, LINE A$ 3910 FILL ASC(".") 3920 I=WW*5+25 3930 J=(LL-5)*3 3940 FOR K=-1 TO 6 3950 VPRINT I+K*WW,SPC(32) 3960 NEXT K 3970 DRAW 50,J+2,113,J+2,1 3980 DRAW 113,J+2,113,J-21,1 3990 DRAW 113,J-21,50,J-21,1 4000 DRAW 50,J-21,50,J+2,1 4010 SCROLL I+1,6,30 4020 FOR I=1 TO 10 4030 VPRINT -1,"" 4040 VPRINT -1,"SCROLLING LINE";I; 4050 FOR J=1 TO 1500:NEXT 4060 NEXT I 4070 REM VPRINT 4080 GOSUB 14000:IF AA$<>"Y" THEN 4150 4090 S$="TESTING, LINE NUMBER" 4100 PRINT "YOU SHOULD SEE THE LINE: " 4110 PRINT S$;" 0" 4120 PRINT "APPEAR 10 TIMES, STEPPING DOWN AND RIGHT, WITH 0 INCREMENTING TO 9." 4130 FILL 32:FOR I=0 TO 9:VPRINT I*WW+I,S$;I:NEXT 4140 REM VINPUT 4150 GOSUB 14000:IF AA$<>"Y" THEN 4220 4160 FILL 32 4170 PRINT "INPUT A LINE OF DATA ON THE VIDEO SCREEN. IT SHOULD BE" 4180 PRINT "REPRODUCED BELOW." 4190 VINPUT WW,"INPUT DATA HERE ---->";, LINE A$ 4200 PRINT A$ 4210 REM WIDTH 4220 GOSUB 14000:IF AA$<>"Y" THEN 4300 4230 INPUT "WHAT IS YOUR CONSOLE WIDTH";W 4240 PRINT "THE FIRST LINE SHOULD BE COMPLETE." 4250 PRINT "THE SECOND AND THIRD SHOULD BE THE SAME LINE, WITH A BREAK AFTER 'THAN'." 4260 S$="TESTING, WIDTH GREATER THAN 28 COLUMNS." 4270 PRINT :PRINT S$ 4280 WIDTH 28:PRINT S$:WIDTH W 4290 REM LLIST 4300 GOSUB 14000:IF AA$<>"Y" THEN 4360 4310 INPUT "WHEN THE PRINTER IS READY, PRESS 'RETURN'";, LINE Z$ 4320 PRINT "THE LAST FEW LINES OF THE PROGRAM WILL NOW" 4330 PRINT "BE LISTED ON THE PRINTER" 4340 LLIST 18000 4350 REM LPRINT 4360 GOSUB 14000:IF AA$<>"Y" THEN 4410 4370 INPUT "PRESS 'RETURN' WHEN THE PRINTER IS READY";, LINE Z$ 4380 PRINT "YOU SHOULD SEE THIS ON THE PRINTER:":PRINT 4390 S$="TESTING, LINE":FOR I=0 TO 9:PRINT S$;I:LPRINT S$;I:NEXT 4400 REM NEW 4410 GOSUB 14000:IF AA$<>"Y" THEN 4440 4420 GOSUB 15000 4430 REM CALL 4440 GOSUB 14000:IF AA$<>"Y" THEN 4480 4450 PRINT PP$:PRINT SS$:A=PEEK(0):B=PEEK(1) 4460 POKE 0,&C1:POKE 1,&C9:CALL 0:POKE 0,A:POKE 1,B:PRINT SS$ 4470 REM PLOT 4480 GOSUB 14000:IF AA$<>"Y" THEN 4520 4490 PRINT "YOU SHOULD SEE A DIAGONAL LINE ON THE DISPLAY" 4500 FILL 128:FOR I=0 TO WW*2-1:PLOT I,(LL*3/(WW*2))*I,1:NEXT 4510 REM DRAW 4520 GOSUB 14000:IF AA$<>"Y" THEN 4560 4530 PRINT "YOU SHOULD SEE A DIAGONAL LINE ON THE DISPLAY" 4540 FILL 128:DRAW 0,LL*3-1,WW*2-1,0,1 4550 REM FILL 4560 GOSUB 14000:IF AA$<>"Y" THEN 4590 4570 PRINT "YOUR VIDEO SHOULD BE FILLED WITH THE NUMBER '1'":FILL &31 4580 REM BYE 4590 GOSUB 14000:IF AA$<>"Y" THEN 4620 4600 GOSUB 15000 4610 REM DDT 4620 GOSUB 14000:IF AA$<>"Y" THEN 4650 4630 INPUT "IS 'DDT' OR 'SID' LOADED AND READY"; LINE Z$:IF LEFT$(Z$,1)="Y" THEN DDT 4640 REM TRAP 4650 GOSUB 14000:IF AA$<>"Y" THEN 4700 4660 PRINT PP$:PRINT "ERROR CODE 2 IN LINE 4670":TRAP ; GOTO 4680 4670 GARBAGE 4680 PRINT "ERROR CODE"ERRC(0)"IN LINE"ERRL(0):TRAP ; GOTO 18190 4690 REM TRACE 4700 GOSUB 14000:IF AA$<>"Y" THEN 4790 4710 PRINT PP$ 4720 PRINT "<4750><4760><4770>" 4730 I=PEEK(&103)+256*PEEK(&104)+8 4740 POKE I,255 4750 REM 4760 REM 4770 POKE I,0 4780 REM RANDOMIZE 4790 GOSUB 14000:IF AA$<>"Y" THEN 4830 4800 PRINT "THE NEXT TWO NUMBERS SHOULD BE DIFFERENT" 4810 PRINT RND(0):RANDOMIZE :PRINT RND(0) 4820 REM MOVE 4830 GOSUB 14000:IF AA$<>"Y" THEN 4910 4840 PRINT "YOU SHOULD SEE AN ASTERISK DANCE IN, THEN FILL THE CENTER OF THE DSIPLAY" 4850 INPUT "PRESS 'RETURN' WHEN YOU ARE READY";, LINE Z$:R=(INT(LL/2))*WW+WW/2-10 4860 FILL ASC("."):VPRINT R," * ":A=AA+R 4870 J=-1:FOR I=1 TO 18:J=J*-1:FOR K=1 TO I 4880 IF (J>0) THEN MOVE A,A-1,19 ELSE MOVE A,A+1,-19 4890 NEXT K,I 4900 REM EDIT 4910 GOSUB 14000:IF AA$<>"Y" THEN 4930 4920 GOSUB 15000 4930 PRINT :PRINT "END OF HAWKEYE GRAFIX VBASIC FUNCTIONAL TEST.":END 10000 PRINT :INPUT "PRESS 'RETURN' FOR THE NEXT TEST";, LINE AA$:PRINT SC$ 10010 READ AA$:PRINT "OPERATION: ";AA$:PRINT 10020 FOR I=1 TO C:READ A(I),B(I):NEXT 10030 PRINT "FUNCTION INPUT RESULT ANSWER" 10040 RETURN 11000 PRINT :INPUT "PRESS 'RETURN' FOR THE NEXT TEST";, LINE AA$:PRINT SC$ 11010 READ AA$:PRINT "OPERATION: ";AA$:PRINT 11020 FOR I=1 TO C:READ S$(I),B(I):NEXT 11030 PRINT "FUNCTION INPUT RESULT ANSWER" 11040 RETURN 12000 PRINT :INPUT "PRESS 'RETURN' FOR THE NEXT TEST";, LINE AA$:PRINT SC$ 12010 READ AA$:PRINT "OPERATION: ";AA$:PRINT 12020 FOR I=1 TO C:READ S$(I),T$(I):NEXT 12030 PRINT "FUNCTION INPUT RESULT ANSWER" 12040 RETURN 13000 PRINT :INPUT "PRESS 'RETURN' FOR THE NEXT TEST";, LINE AA$:PRINT SC$:RETURN 14000 IF AA$<>"Y" THEN 14010 ELSE PRINT :PRINT :INPUT "PRESS 'RETURN' FOR THE NEXT TEST";, LINE AA$ 14010 PRINT SC$ 14020 PRINT :PRINT "THE CURRENT TEST IS FOR: ";V$(X) 14030 X=X+1 14040 PRINT :PRINT "THE NEXT TEST WILL BE FOR: ";V$(X) 14050 PRINT :PRINT "DO YOU WISH TO TEST THE '"V$(X-1);:INPUT "' COMMAND"; LINE AA$ 14060 PRINT :RETURN 15000 PRINT :PRINT "THE '"V$(X-1)"' COMMAND IS NOT TESTABLE WHILE THE PROGRAM IS RUNNING." 15010 RETURN 16000 C=125:PRINT "START" 16010 GOSUB 16040 16020 C=C-1:IF C=INT(C/25)*25 THEN PRINT C; 16030 IF C=0 THEN PRINT "STOP":RETURN ELSE GOTO 16010 16040 GOTO 16080 16050 GOTO 16070 16060 RETURN 16070 GOTO 16060 16080 GOTO 16050 17000 INPUT "WHEN THE CASSETTE IS READY FOR OUTPUT, PRESS 'RETURN'";, LINE Z$ 17010 CPRINT "1,2,3,4,5" 17020 INPUT "WHEN THE CASSETTE IS REWOUND AND READY FOR INPUT, PRESS 'RETURN'";, LINE Z$ 17030 PRINT PP$:PRINT " 1 2 3 4 5" 17040 CINPUT A(1),A(2),A(3),A(4),A(5) 17050 FOR I=1 TO 5:PRINT A(I);:NEXT 17060 RETURN 18000 TRAP ; GOTO 18190 18010 PRINT "NOTE: ALL DISK FUNCTIONS ARE TESTED IN THIS ROUTINE." 18020 INPUT "PLACE A SCRATCH DISK IN DRIVE A AND PRESS 'RETURN'";, LINE Z$ 18030 PRINT PP$:PRINT SS$ 18040 RESET 18050 F$="A:Q#Q#Q#Q#.$$$":S$="TESTING RECORD NUMBER" 18060 DELETE F$ 18070 CREATE 0;F$ 18080 FOR I=0 TO 9:DPRINT 0;S$;I:NEXT 18090 CLOSE 0 18100 OPEN 0;F$,26 18110 DINPUT 0;A$:IF A$<>(S$+" 0") THEN PRINT "ERROR IN DINPUT" 18120 GET 0;4;A$:IF A$<>(S$+" 4") THEN PRINT "ERROR IN GET" 18130 PUT 0;6;"UPDATE 6":GET 0;6;A$:IF A$<>"UPDATE 6" THEN PRINT "ERROR IN PUT" 18140 REWIND 0 18150 DINPUT 0;A$:IF A$<>(S$+" 0") THEN PRINT "ERROR IN REWIND" 18160 RENAME "QZ###.ABC",F$ 18170 DELETE "QZ###.ABC" 18180 PRINT SS$:RETURN 18190 PRINT "ERROR"ERRC(0)"IN LINE"ERRL(0)