home *** CD-ROM | disk | FTP | other *** search
Wrap
GW-BASIC | 1991-12-02 | 11.8 KB | 265 lines
2 REM ADD LINE-UP PRACTICE "ADDLNUP.BAS" 3 REM By STAN GREENE - 03/05/85 5 REM Copyright 1984 - MICROCOMPUTER WORKSHOPS 6 REM IBM PC,PC-JR VERSION - ROSS, BRANDON & REID, INC. 7 REM =========================================================== 10 DEFSTR A-B,F-I 11 DEFINT C,E,L,N-P,W-Z 12 DIM A(11),PF(11),ET(11),EF(11),FE(11),FL(11),FM(12),XA(6) 13 COMMON GN,CJ,CBS,JC 14 REM CBS=32:WIDTH 40:CJ=1:COLOR 7,CJ,CJ:CLS 15 IF CBS < 32 THEN CHAIN "CBS.BAS" 20 GOTO 50000 25 GOSUB 30100 26 I=INKEY$:IF I="" OR I="%" OR I=CHR$(13) THEN 26 ELSE RETURN 50 GOSUB 30100: LOCATE 23,7,0:PRINT F1; 55 I=INKEY$:IF I <> CHR$(13) THEN 55 ELSE RETURN 99 REM ********** MAIN MENU ************* 100 CZ=0: PC=1: FOR X= 1 TO 3: ET(X)=0: EF(X)=0: NEXT 199 REM ******* PROBLEM PROMPTS ********* 200 CLS 201 LOCATE 1,1: PRINT "How many practice problems would you"; 202 GOSUB 30100:LOCATE 3,1:PRINT "like to try (1 - 9)? "; 203 I=INKEY$: IF I="" THEN 203 204 NP=VAL(I): IF NP=0 THEN 202 ELSE PRINT I: FOR X=1 TO 900:NEXT 205 REM ************* GET LIMITS FOR NEXT PROBLEM ********************* 206 CLS:LOCATE 1,1:PRINT "For problem #"RIGHT$(STR$(PC),1); 210 LOCATE 4,1: PRINT "Enter the maximum number of digits per"; 211 GOSUB 30100:LOCATE 6,1: PRINT "decimal (2 - 6)? "; 212 I=INKEY$:IF I="" THEN 212 213 ND=VAL(I):IF ND<2 OR ND>6 THEN 211 ELSE PRINT I 214 IF ND>4 THEN X=4:GOTO 218 215 IF ND=4 THEN X=5 ELSE X=6 218 LOCATE 9,1:PRINT "Enter the amount of numbers you wish to"; 220 GOSUB 30100: LOCATE 11,1:PRINT "use for this problem (2 -";STR$(X);")? "; 223 I=INKEY$:IF I ="" THEN 223 230 NN=VAL(I): IF NN<2 OR NN>X THEN 220 ELSE PRINT I 299 REM **** COMPUTE PROBLEM **** 300 FOR X=1 TO 6: ET(X)=0: A(X)="": NEXT: EN$="" 305 X= VAL(MID$(TIME$,7,2)): RANDOMIZE X 310 FOR X = 1 TO NN: FOR Y = 1 TO ND 320 Z=INT(RND*10): IF Y=1 AND Z=0 THEN 320 325 A(X)=A(X) + RIGHT$(STR$(Z),1):NEXT 330 Z=INT(RND*(LEN(A(X))+1)): IF Z=LEN(A(X))+1 THEN A(X) = "." + A(X):GOTO 345 340 IF Z<> LEN(A(X)) THEN A(X)=LEFT$(A(X),Z) + "." + RIGHT$(A(X),LEN(A(X))-Z) 345 NEXT 350 FOR X=1 TO NN: Y=INSTR(A(X),"."): IF Y = 0 THEN 359 352 FOR Z=LEN(A(X)) TO Y STEP -1: IF MID$(A(X),Z,1) <> "0" THEN Z=Y: GOTO 358 355 A(X)=LEFT$(A(X),Z-1): IF MID$(A(X),Z-1,1)="." THEN A(X)=LEFT$(A(X),Z-2) 358 NEXT 359 NEXT 360 I=A(1): FOR X = 2 TO NN: I=I+" + "+A(X): NEXT: PN=INT((40-LEN(I))/2):LL=PN 370 XA(1)=PN:XB=PN:FOR X=2 TO NN:XA(X)=XB+3+LEN(A(X-1)):XB=XA(X):NEXT 395 GOTO 1000 399 REM **** INKEY$ ROUTINE FOR ADDITION ANSWERS **** 400 GOSUB 30100 410 I=INKEY$:IF I= "" OR I= CHR$(13) OR I="%" THEN 410 411 IF I="S" THEN 48000 412 IF ASC(I) < 48 OR ASC(I)> 57 THEN 410 420 PRINT I;:RETURN 499 '***** MOVE #'S MENU 500 GOSUB 30400:RETURN 510 LOCATE 17,1:PRINT " Use the ARROW keys to line up the" 515 LOCATE 18,1:PRINT "flashing number with the decimal point." 520 LOCATE 20,2:PRINT "Press <C> to check the number lineup." 525 LOCATE 23,11:PRINT IQ;:RETURN 599 '***** MOVE #'S INKEY$ ROUTINE 600 B=STRING$(LEN(A(ZZ)),32) 615 X=0:Y=0 619 REM GOSUB 30100: GOSUB 30201: COLOR 23: PRINT A(ZZ);:COLOR 7 620 GOSUB 30100: GOSUB 30201: COLOR CJ,7: PRINT A(ZZ);:COLOR 7,CJ 621 S$=INKEY$:IF S$="" THEN 621 ELSE IF MSG=1 THEN MSG=0:GOSUB 30400 622 LOCATE R1,C1+LEN(A(ZZ)):L1=ASC(S$):IF L1=0 THEN GOSUB 55000 623 IF L1=50 OR L1=52 OR L1=54 OR L1=56 OR L1=65 OR L1=67 OR L1=83 THEN 624 ELSE 621 624 IF L1=65 OR L1=67 OR L1=83 THEN 630 ELSE L1 = (L1-48)/2 625 ON L1 GOTO 730,760,780,700 630 IF L1=65 THEN 900 631 IF L1=67 THEN 800 632 IF L1=83 THEN 50000 640 IF Y>=5 THEN IF X=1 THEN X=0:Y=0:ELSE X=1:Y=0 650 IF X=1 THEN GOSUB 30201: PRINT B;:Y=Y+1:GOTO 620 660 GOSUB 30201:PRINT A(ZZ);:Y=Y+1:GOTO 620 699 '*** UP ARROW 700 Z=1:IF LP<2 THEN BEEP:GOTO 640 705 IF PF(LP-Z)=1 THEN Z=Z+1:IF LP-Z<1 THEN 640 ELSE 705 710 GOSUB 30201: PRINT B;:IF LP=NN THEN GOSUB 30202: PRINT "+"; 711 REM P=P-(Z*64):LP=LP-Z:GOSUB 30201:PRINT A(ZZ);:GOTO 615 712 P=P-(Z*64):LP=LP-Z:GOSUB 30201:COLOR CJ,7:PRINT A(ZZ);:GOTO 615 729 '*** DOWN ARROW 730 Z=1:IF LP=NN THEN BEEP:GOTO 640 735 IF LP=0 THEN GOSUB 30201:PRINT B;:PN=POS(0)-1:GOSUB 500 740 IF PF(LP+Z)=1 THEN Z=Z+1:IF LP+Z > NN THEN 640 ELSE 740 744 REM GOSUB 30201:PRINT B;:P=P+(Z*64):LP=LP+Z:GOSUB 30201:PRINT A(ZZ);:GOTO 615 745 GOSUB 30201:PRINT B;:P=P+(Z*64):LP=LP+Z:GOSUB 30201:COLOR CJ,7:PRINT A(ZZ);:GOTO 615 759 '*** LEFT ARROW 760 IF LP=0 OR POS(0)-LEN(A(ZZ))=LL THEN BEEP:GOTO 640 765 GOSUB 30201:PRINT B;:GOSUB 30202:PRINT "+"; 769 REM P=P-1:GOSUB 30201:PRINT A(ZZ);:GOTO 615 770 P=P-1:GOSUB 30201:COLOR CJ,7:PRINT A(ZZ);:GOTO 615 779 '*** RIGHT ARROW 780 IF LP=0 OR POS(0)=LR THEN BEEP:GOTO 640 785 GOSUB 30201:PRINT B;:GOSUB 30202:PRINT "+"; 789 REM P=P+1:GOSUB 30201:PRINT A(ZZ);:GOTO 615 790 P=P+1:GOSUB 30201:COLOR CJ,7:PRINT A(ZZ);:GOTO 615 799 '*** CHECK LINE-UP 800 GOSUB 30201:PRINT A(ZZ);:IF INSTR(A(ZZ),".") > 0 AND POS(0)-( LEN(A(ZZ)) - INSTR(A(ZZ),".")+1 ) = 20 THEN XF(ZZ)=1:PF(LP) = 1: XN=XN+1:RETURN 805 IF INSTR(A(ZZ),".")=0 AND POS(0)=20 THEN XF(ZZ)=1:PF(LP)=1:XN=XN+1:RETURN 810 ET(1)=ET(1)+1 813 LOCATE 13,1:PRINT "Your line-up is wrong." 814 LOCATE 15,1:PRINT "Press any key to get an explanation."; 815 I=INKEY$:IF I="" THEN 815 816 GOSUB 30400:LOCATE 13,1:PRINT"All decimal points must be in a line."; 817 LOCATE 15,1:PRINT"Integers have an invisible decimal point"; 818 LOCATE 17,1:PRINT "after the units digit. Try again."; 820 MSG=1:GOTO 640 900 GOSUB 30201:PRINT B;:P23=XA(ZZ):GOSUB 30200:PRINT A(ZZ);:LOCATE NN+1,20-ND-3:PRINT "+";:RETURN 999 '***** BEGIN A PROBLEM 1000 CLS:XN=0:P23=PN:GOSUB 30200: PRINT I;:LR=POS(0):LH=LR:LV=CSRLIN: FOR X=1 TO 6:PF(X)=1:XF(X)=1:NEXT: FOR X=1 TO NN:PF(X)=0:XF(X)=0:NEXT:LOCATE 18,30:PRINT"Problem #";RIGHT$(STR$(PC),1); 1010 LOCATE NN+1,20-ND-3:PRINT "+";:X=POS(0):LOCATE NN+2,X-2:PRINT STRING$(2*ND+6,"-"):LOCATE NN+3,20:PRINT ".":LOCATE NN+5,20:COLOR CJ,7:PRINT CHR$(24):COLOR 7,CJ:LOCATE 19,1:PRINT STRING$(39,220); 1012 LOCATE 20,1:PRINT" "; 1013 LOCATE 21,1:PRINT"S = Stop for directory ";CHR$(24); 1014 LOCATE 22,1:PRINT"A = Advance to next number ";CHR$(27);" ";CHR$(26); 1015 LOCATE 23,1:PRINT"C = Check number line-up ";CHR$(25); 1030 REM FOR ZZ= 1 TO NN: LP=0: P=PN: PH=LH:PV=LV 1035 ZZ=1: LP=0: P=PN: PH=LH:PV=LV 1040 REM 1041 GOSUB 600 1042 IF XN < NN THEN GOSUB 2000 ELSE GOTO 1056 1045 IF L1 = 65 THEN 1041 1050 GOSUB 30400:IF ET(1)> NN THEN X=4 ELSE X=INT((RND*8)+1) 1052 LOCATE 15,1:PRINT FL(X);", "GN"."; 1054 LOCATE 17,1:PRINT "Now try another number."; 1055 GOTO 1041 1056 GOSUB 30400:IF ET(1)> NN THEN X=4 ELSE X=INT((RND*8)+1) 1057 LOCATE 15,1:PRINT "Congratulations, "GN".";:FOR X=1 TO 1200:NEXT:GOTO 8999 1059 '***** DONE WITH THE LINE-UP 1999 '*** FIND NEXT NUMBER FOR OPTION 'A' 2000 ZZ=ZZ+1: IF ZZ > NN THEN ZZ = 1 2010 IF XF(ZZ) = 1 THEN 2000 2020 P=XA(ZZ):LP=0:RETURN 8999 '***** END A PROBLEM 9020 REM IF Z=0 THEN X=RND(4) ELSE IF Z=1 THEN X=RND(4)+4 ELSE X=RND(4)+8 9025 REM PRINT:PRINT TAB((40-LEN(FM(X)))/2)FM(X):IF Z=0 THEN CZ=CZ+1 9026 IF Z=0 THEN CZ=CZ+1 9030 GOSUB 30400:EN$="Y":LOCATE 13,1:PRINT"The lining-up stage is completed.";:LOCATE 15,1:PRINT "Press any key to continue.";:GOSUB 30100 9040 A$=INKEY$:IF A$="" THEN 9040 9050 IF PC=NP THEN 48000 ELSE PC=PC+1:EN$="":GOTO 206 9950 GOSUB 30100:LOCATE 23,7,0:PRINT "Press ";:COLOR CJ,7:PRINT"space bar";:COLOR 7,CJ:PRINT" to continue."; 9952 A$ = INKEY$: IF A$ <> " " THEN 9952 ELSE RETURN 9960 FOR X=10 TO 17:PRINT STRING$(39,32);:NEXT:RETURN 9961 FOR X=10 TO 21:LOCATE X,1:PRINT STRING$(40,32);:NEXT:LOCATE 23,7:PRINT STRING$(28,32);:RETURN 10000 CLS:LOCATE 1,10:PRINT"LINE-UP INSTRUCTIONS"; 10005 LOCATE 3,12:PRINT "4.32 + 162 + .84"; 10010 LOCATE 6,15:PRINT "+"; 10015 LOCATE 7,15:PRINT STRING$(9,223); 10020 LOCATE 8,20:PRINT "."; 10025 LOCATE 9,20:PRINT CHR$(24); 10030 LOCATE 12,1:PRINT "I will give you problems like the one"; 10035 LOCATE 14,1:PRINT "above. I will now show you how to"; 10040 LOCATE 16,1:PRINT "line up the numbers so you can add them.";:GOSUB 9950 10045 CLS:LOCATE 4,17:PRINT "162";:LOCATE 5,20:PRINT".84";:LOCATE 6,15:PRINT"+ 4.32";:LOCATE 7,15:PRINT STRING$(9,223);:LOCATE 8,20:PRINT"."; 10050 LOCATE 11,1:PRINT"After you line them up, they will look"; 10055 LOCATE 13,1:PRINT"like the problem above. Notice that all"; 10060 LOCATE 15,1:PRINT"the decimal points are in a line and all"; 10065 LOCATE 17,1:PRINT"the numbers have moved off the starting"; 10070 LOCATE 19,1:PRINT"row.";:GOSUB 9950 10072 CLS 10075 COLOR CJ,7:LOCATE 3,12:PRINT"4.32";:COLOR 7,CJ:LOCATE 3,17:PRINT"+ 162 + .84"; 10080 LOCATE 6,15:PRINT "+"; 10085 LOCATE 7,15:PRINT STRING$(9,223); 10090 LOCATE 8,20:PRINT "."; 10095 LOCATE 9,20:PRINT CHR$(24); 10100 LOCATE 13,1:PRINT"You can move the numbers into place one"; 10105 LOCATE 15,1:PRINT"at a time. The number being moved will"; 10110 LOCATE 17,1:PRINT"be ";:COLOR CJ,7:LOCATE 17,4:PRINT"highlighted";:COLOR 7,CJ:PRINT".";:GOSUB 9950 10115 GOSUB 9961:LOCATE 12,1:PRINT"To move one space down, press ";:COLOR CJ,7:PRINT CHR$(25);:COLOR 7,CJ:PRINT". ";:LOCATE 23,7:PRINT"Press ";:COLOR CJ,7:PRINT CHR$(25);:COLOR 7,CJ:PRINT" to continue.";:GOSUB 30100 10120 A$=INKEY$:IF A$ <> "2" AND RIGHT$(A$,1)<>"P" THEN 10120 10125 LOCATE 3,12:PRINT " ";:LOCATE 4,12:COLOR CJ,7:PRINT"4.32";:COLOR 7,CJ 10130 LOCATE 14,1:PRINT"To move one space right, press ";:COLOR CJ,7:PRINT CHR$(26);:COLOR 7,CJ:PRINT". ";:LOCATE 23,7:PRINT"Press ";:COLOR CJ,7:PRINT CHR$(26);:COLOR 7,CJ:PRINT" to continue.";:GOSUB 30100 10135 A$=INKEY$:IF A$ <> "6" AND RIGHT$(A$,1)<>"M" THEN 10135 10140 LOCATE 4,12:PRINT " ";:COLOR CJ,7:LOCATE 4,13:PRINT"4.32";:COLOR 7,CJ 10145 LOCATE 16,1:PRINT"To move one space left, press ";:COLOR CJ,7:PRINT CHR$(27);:COLOR 7,CJ:PRINT". ";:LOCATE 23,7:PRINT"Press ";:COLOR CJ,7:PRINT CHR$(27);:COLOR 7,CJ:PRINT" to continue.";:GOSUB 30100 10150 A$=INKEY$:IF A$ <> "4" AND RIGHT$(A$,1)<>"K" THEN 10150 10155 LOCATE 4,13:PRINT" ";:COLOR CJ,7:LOCATE 4,12:PRINT"4.32";:COLOR 7,CJ 10160 LOCATE 18,1:PRINT"To move one space up, press ";:COLOR CJ,7:PRINT CHR$(24);:COLOR 7,CJ:PRINT". ";:LOCATE 23,7:PRINT"Press ";:COLOR CJ,7:PRINT CHR$(24);:COLOR 7,CJ:PRINT" to continue.";:GOSUB 30100 10165 A$=INKEY$:IF A$ <> "8" AND RIGHT$(A$,1)<>"H" THEN 10165 10170 LOCATE 4,12:PRINT " ";:COLOR CJ,7:LOCATE 3,12:PRINT"4.32";:COLOR 7,CJ:GOSUB 9961 10175 LOCATE 12,1:PRINT"Please take note that when a number"; 10180 LOCATE 14,1:PRINT"reaches the edge of its working space,"; 10185 LOCATE 16,1:PRINT"it will not move any further in that"; 10190 LOCATE 18,1:PRINT"direction.";:GOSUB 9950 10195 GOSUB 9961:LOCATE 3,12:PRINT" ";:LOCATE 4,19:COLOR CJ,7:PRINT"4.32";:COLOR 7,CJ 10200 LOCATE 11,1:PRINT"When you think you have correctly"; 10205 LOCATE 13,1:PRINT"lined up the numbers, press ";:COLOR CJ,7:PRINT"C";:COLOR 7,CJ:PRINT". The"; 10210 LOCATE 15,1:PRINT"computer will tell you if your line-up"; 10215 LOCATE 17,1:PRINT"is wrong. If it is correct, it will"; 10220 LOCATE 19,1:PRINT"leave the number there and advance"; 10225 LOCATE 21,1:PRINT"you to the next one."; 10230 LOCATE 23,7:PRINT"Press ";:COLOR CJ,7:PRINT"C";:COLOR 7,CJ:PRINT" to continue.";:GOSUB 30100 10235 A$=INKEY$:IF A$ <> "C" THEN 10235 10240 LOCATE 3,17:PRINT" ";:LOCATE 3,19:COLOR CJ,7:PRINT"162";:COLOR 7,CJ:LOCATE 4,19:PRINT"4.32";:GOSUB 9961 10245 LOCATE 11,1:PRINT"If you are having trouble lining up a"; 10250 LOCATE 13,1:PRINT"number, press ";:COLOR CJ,7:PRINT"A";:COLOR 7,CJ:PRINT". That number will"; 10255 LOCATE 15,1:PRINT"return to the top row and you will move"; 10260 LOCATE 17,1:PRINT"to the next number. When a number is in"; 10265 LOCATE 19,1:PRINT"the starting row, it can only move down."; 10270 LOCATE 23,7:PRINT"Press ";:COLOR CJ,7:PRINT"A";:COLOR 7,CJ:PRINT" to continue.";:GOSUB 30100 10275 A$=INKEY$:IF A$ <> "A" THEN 10275 10280 LOCATE 3,19:PRINT"162";:COLOR CJ,7:LOCATE 3,25:PRINT".84";:COLOR 7,CJ:GOSUB 9961 10285 LOCATE 13,1:PRINT"You can stop the set of problems by"; 10290 LOCATE 15,1:PRINT"pressing ";:COLOR CJ,7:PRINT"S";:COLOR 7,CJ:PRINT". This option will always";:LOCATE 17,1:PRINT"appear at the bottom of the screen.";:GOSUB 9950 10295 CLS:LOCATE 12,1:PRINT"Press any key to return to the line-up"; 10300 LOCATE 14,1:PRINT"menu."; 10305 A$=INKEY$: IF A$="" THEN 10305 10310 GOTO 50000 30000 STOP 30100 DEF SEG=0: POKE 1050,PEEK(1052): DEF SEG=64: POKE 23,96: DEF SEG: RETURN 30190 YR=FNROW(Y): YC=FNCOL(Y): RETURN 30191 PR=FNROW(P): PK=FNCOL(P): RETURN 30192 XR=FNROW(X): XC=FNCOL(X): RETURN 30193 ZR=FNROW(Z): ZC=FNCOL(Z): RETURN 30194 R1=FNROW(P23): C1=FNCOL(P23): RETURN 30195 PLR=FNROW(PL): PLC=FNCOL(PL):RETURN 30200 R1=FNROW(P23): C1=FNCOL(P23): LOCATE R1,C1: RETURN 30201 R1=FNROW(P): C1=FNCOL(P): LOCATE R1,C1: RETURN 30202 P23=NN*64+(20-ND-4):R1=FNROW(P23): C1=FNCOL(P23): LOCATE R1,C1: RETURN 30300 DEF SEG: SCREEN 0: CJ=0:COLOR 7,CJ,CJ: CLS: WIDTH 80: RETURN 30400 IF CJ=1 THEN LOCATE 13,1,0:FOR X=1 TO 5:PRINT STRING$(40,32);:NEXT:LOCATE 18,1:PRINT STRING$(29,32);:RETURN 30401 LOCATE 13,1,0:FOR X=1 TO 5:PRINT STRING$(40,32);:NEXT:LOCATE 17,1:PRINT STRING$(39,32);:RETURN 47999 '***** QUIT ROUTINE 48000 IF I="*" OR L1=42 THEN GOTO 50000 48010 CLS:PRINT"You have now completed a set of":PRINT:PRINT"practice line-ups. Do you want any":PRINT:PRINT"more practice (y or n)?"; 48100 A$=INKEY$:IF A$="" THEN 48100 48105 IF A$= "n" OR A$="N" THEN GOTO 50000 48107 IF A$= "y" OR A$="Y" THEN GOTO 100 48140 PL=PL+64: RETURN 48990 '***** INPUT NAME 49999 REM ***** INTRO 50000 CLS: LOCATE 3,15:PRINT "Line-up Menu" 50002 LOCATE 6,13:PRINT "You may either:"; 50005 LOCATE 10,5:PRINT "1) See the Line-Up Instructions,":LOCATE 12,5:PRINT"2) Practice Line-Up Problems, or";:LOCATE 14,5:PRINT "3) Return to the Main Directory."; 50010 LOCATE 17,1,0:PRINT "Your selection, "+GN+" ?";:GOSUB 30100 50013 A$=INKEY$:IF A$ = "" THEN 50013 50014 IF VAL(A$) < 1 OR VAL(A$) > 3 THEN A$="":GOTO 50010 50015 IF A$ = "1" THEN 10000 50017 IF A$ = "2" THEN 50020 50019 IF A$ = "3" THEN CHAIN "ADD.BAS" 50020 LOCATE ,,0 50032 X= VAL(MID$(TIME$,7,2)): RANDOMIZE X 50040 FM(1)="Very impressive":FM(2)="I see you've been doing your homework!":FM(3)="Too bad your teacher can't see this!":FM(4)="The math department is proud of you!":FM(5)="Well, we can't all be perfect." 50050 FM(6)="You almost made it on that one.":FM(7)="That was a good try.":FM(8)="Keep trying. You're doing well.":FM(9)="Keep trying. You'll get it.":FM(10)="You'll do better on the next one." 50060 FM(11)="These problems are not so easy.":FM(12)="Try again. Practice makes perfect." 50070 FE(1)="Lineup":FE(2)="Addition":FE(3)="Carry" 50075 FL(1)="That is correct":FL(2)="Okay":FL(3)="You've got it":FL(4)="That's it":FL(5)="Nice work":FL(6)="Well done":FL(7)="Good job":FL(8)="Excellent" 50080 F1="Press <ENTER> to continue.":DEF FNF1="Sorry, "+GN+". "+I+" is incorrect.":IQ="Press <*> to quit." 50082 DEF FNROW(X23) = INT((X23/64+1)) 50084 DEF FNCOL(X23) = INT((X23-(INT(X23/64)*64))+1) 50100 GOTO 100 54999 END 55000 REM CHECK ARROW KEYS HIT 55002 IF RIGHT$(S$,1)="P" THEN L1=50: REM 2 55004 IF RIGHT$(S$,1)="K" THEN L1=52: REM 4 55006 IF RIGHT$(S$,1)="M" THEN L1=54: REM 6 55008 IF RIGHT$(S$,1)="H" THEN L1=56: REM 8 55010 RETURN