5 Interesting Routines

Date: 1986
Type: Program
Platform(s): TS 2068

Demonstration of programming techniques and ROM check routine.

Content

Appears On

Library tape of the Indiana Sinclair Timex User’s Group.

Related Products

Related Articles

Related 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

People

No people associated with this content.

Scroll to Top