Demonstration of programming techniques and ROM check routine.
Content
Image Gallery
Source Code
5 GO TO 2500
10 LET p=PEEK 23635+256*PEEK 23636: REM reader 1
20 LET v=PEEK 23627+256*PEEK 23628
30 LET c=PEEK p
40 PRINT p;TAB 8;c;: IF c<16 OR c>23 THEN PRINT ,CHR$ c: GO TO 60
50 PRINT ,"(unprintable)"
60 LET p=p+1: IF p<v THEN GO TO 30
70 PAUSE 200: RUN
99 REM -----------------------
100 LET p=PEEK 23635+256*PEEK 23636: REM reader 2
110 LET v=PEEK 23627+256*PEEK 23628
120 LET n=256*PEEK p+PEEK (p+1)
130 GO SUB 240: PRINT n;TAB 21;"( LINE ": LET p=p+1: GO SUB 240: PRINT TAB 21;"( NUMBER": LET p=p+1
140 LET le=PEEK p+256*PEEK (p+1)
150 GO SUB 240: PRINT le;TAB 21;"( LINE ": LET p=p+1: GO SUB 240: PRINT TAB 21;"( LENGTH": LET p=p+1
160 LET le=p+le
170 LET c=PEEK p
180 GO SUB 240: IF c=14 THEN RESTORE : PRINT TAB 21;"NUMBER:": FOR j=1 TO 5: LET p=p+1: GO SUB 240: READ n$: PRINT TAB 21;n$: NEXT j: GO TO 210
190 IF c<16 OR c>23 THEN PRINT TAB 16;CHR$ c: GO TO 210
200 PRINT ,"(unprintable)"
210 LET p=p+1: IF p=v THEN PAUSE 200: GO TO 2500
220 IF p=le THEN GO TO 120
230 GO TO 170
240 PRINT p;TAB 8;PEEK p,: RETURN
250 DATA "FIVE","BYTE","EQUIV.","OF","NUMBER"
499 REM -----------------------
500 LET x=10: LET y=0: LET t$="Name": REM INPUT 1
510 PRINT AT x,y;t$
520 LET y=y+2+LEN t$
530 LET t$=""
540 IF y>31 OR y=-1 THEN LET y=31*(y=-1): LET x=x-1+2*(y=0)
550 PRINT AT x,y; FLASH 1;"?"
560 PAUSE 0: LET q$=INKEY$
570 IF q$=CHR$ 13 AND t$<>"" THEN GO TO 630
580 IF q$=CHR$ 12 AND t$<>"" THEN PRINT AT x,y;CHR$ 32: LET y=y-1: LET t$=t$( TO LEN t$-1): GO TO 540
590 IF q$<CHR$ 32 THEN GO TO 560
600 LET t$=t$+q$
610 PRINT AT x,y;q$: LET y=y+1
620 GO TO 540
630 PRINT AT x,y;CHR$ 32: RETURN
999 REM -----------------------
1000 LET x=5: LET n=10: LET l=15: DIM t$(n,l): REM INPUT 2
1010 FOR j=1 TO n: FOR k=1 TO l
1020 PRINT AT x+j-1,k;CHR$ 45
1030 NEXT k: LET k=1
1040 PAUSE 0: LET q$=INKEY$
1050 IF q$=CHR$ 13 AND k<>1 THEN GO TO 1100
1060 IF q$=CHR$ 12 AND k<>1 THEN LET k=k-1: PRINT AT x+j-1,k;CHR$ 45: LET t$(j)=t$(j, TO k): GO TO 1040
1070 IF q$<CHR$ 32 THEN GO TO 1040
1080 LET t$(j,k)=q$: PRINT AT x+j-1,k;q$: LET k=k+1
1090 IF k<=l THEN GO TO 1040
1100 NEXT j
1110 RETURN
1499 REM -----------------------
1500 REM errors prints 28 error messages. From CTM 5/86 by Ed Shaughnessy
1510 RESTORE 1550: LET l=40000: LET cs=0
1520 FOR i=l TO l+24
1530 READ x: POKE i,x: LET cs=cs+x
1540 NEXT i
1550 DATA 6,28,197,205,169,8,193,120,17,101,15,197,205,63,7,6,50,118,16,253,193,16,235,207,26
1560 IF cs<>2651 THEN PRINT "error in line 50": STOP
1570 RANDOMIZE USR l
1580 REM mc version of above
1590 REM 4/29/86 incomplete
1600 REM mc code to start at 9c40 hex
1610 DATA "061c","c5","cda908","c1","78","11670f","c5","cd3f07","0632","76","10fd","c1","10eb","cf","1a"
1620 OUT 244,1: MOVE "errors.bas",10: OUT 244,0
1630 PAUSE 200: RUN
1999 REM -----------------------
2000 REM TS2068 16K ROM CHECK
2010 CLS : FLASH 0: BORDER 1: PAPER 6: INK 0: BRIGHT 0: INVERSE 0: CLS
2020 BEEP 1,0
2030 PRINT '" TS2068 16K ROM CHECK"
2040 PRINT '" RUN TIME IS FOUR MINUTES"
2050 PRINT '" TO BEGIN PRESS 1 AND ENTER"
2060 INPUT F
2070 IF F<>1 THEN GO TO 2050
2080 PRINT AT 10,12;"Working"
2090 LET b=0: LET a=b
2100 FOR i=a TO 16383
2110 LET a=a+PEEK i
2120 IF PEEK i=0 THEN LET b=b+1
2130 NEXT i
2140 CLS : PRINT " TS2068 16K ROM CHECK"''
2150 IF a=1752253 THEN PRINT TAB 5;"FIRST ROM CHECK IS OK"
2160 PRINT
2170 IF b=609 THEN PRINT TAB 5;"SECOND ROM CHECK IS OK"
2180 PRINT
2190 REM rom accuracy check
2200 LET c=0: LET d=c: LET e=c
2210 FOR i=1000 TO 1100
2220 LET c=c+i*.5-i/2
2230 LET d=d+i*.1-i/10
2240 LET e=e+i-SQR (i*i)
2250 NEXT i
2260 LET AEA=1.3391177E-7
2270 PRINT " ARITHMETIC ERRORS AVERAGE = ";AEA
2280 PRINT
2290 IF (C+D+E)/300<=AEA THEN PRINT " ARITHMETIC ERRORS AVERAGE IS CORRECT"
2300 PRINT ''"NOTE......THE ADDITIONAL 8K ROM DEDICATED TO COMMAND CARTRIDGE CAPABILITIES AND BANK SWITCHING IS NOT INCLUDED OR TESTED BY"'"THIS PROGRAM"
2310 BEEP 1,0: PAUSE 200
2499 REM -----------------------
2500 BORDER 6: PAPER 7: INK 9: CLEAR
2510 PRINT '" 5 Interesting Routines"
2520 PRINT '''" 1 Reader 1"''" 2 Reader 2"''" 3 Input 1"''" 4 Input 2"''" 5 Error Messages"''" 6 ROM Checks"
2530 INPUT "Select 1, 2, 3, 4, 5, 6, ";a: IF (a<1) OR (a>5) THEN GO TO 2530
2540 IF a=1 THEN RUN 10
2550 IF a=2 THEN RUN 100
2560 IF a=3 THEN RUN 500
2570 IF a=4 THEN RUN 1000
2580 IF a=5 THEN RUN 1500
2590 RUN 2000
9998 SAVE "5 routines" LINE 1