home *** CD-ROM | disk | FTP | other *** search
Wrap
GW-BASIC | 1991-12-02 | 6.3 KB | 136 lines
10 '========================================================== 20 '** SUBTRACTING DECIMALS ** 30 '** By STAN GREENE - 03/05/85 ** 40 '** SINSTR/BAS ** 50 '** Copyright 1984 - MICROCOMPUTER WORKSHOPS ** 60 '========================================================== 70 DEFSTR A-B,F-I:DEFINT C,E,L,N-P,W-Z 80 X= VAL(MID$(TIME$,7,2)): RANDOMIZE X 90 COMMON GN,CJ,CBS,JC 100 REM GN="STAN":WIDTH 40:KEY OFF:CJ=1:COLOR 7,CJ,CJ:KEY 7,"WIDTH 80"+CHR$(13):KEY 8,"COLOR 7,0,0"+CHR$(13):GOTO 190 115 IF CBS < 32 THEN CHAIN "CBS.BAS" 120 GOTO 190 130 GOSUB 30100 140 I=INKEY$:IF I= "" OR I= "%" OR I= CHR$(13) THEN 140 ELSE LOCATE ,,0:RETURN 150 LOCATE 23,5:PRINT "Press ";:COLOR CJ,7:PRINT"space bar";:COLOR 7,CJ:PRINT " to continue.";:GOSUB 30100 160 I=INKEY$:IF I <> " " THEN 160 ELSE RETURN 170 '***** INKEY$ ROUTINE FOR ADDITION ANSWERS 180 '***** BEGIN A PROBLEM 190 CLS:LOCATE 1,14:COLOR CJ,7:PRINT "Instructions";:COLOR 7,CJ 200 LOCATE 10,1:PRINT"Before you begin the problems, you will"; 201 LOCATE 12,1:PRINT"be given three choices:"; 202 LOCATE 14,6:PRINT"1. Borrowing (Yes/No)"; 203 LOCATE 16,6:PRINT"2. Max. digits per number (2-6)"; 204 LOCATE 18,6:PRINT"3. Number of problems (1-9)";:GOSUB 150 220 '** SCREEN #2 230 CLS:LOCATE 1,14:COLOR CJ,7:PRINT "Instructions";:COLOR 7,CJ:LOCATE 1,35:PRINT"#1"; 240 LOCATE 5,16:PRINT "9 0 . 2 7 9 - 3 . 7 8"; 250 LOCATE 7,14:PRINT STRING$(14,223); 260 LOCATE 8,20:PRINT "."; 270 LOCATE 10,20:COLOR CJ,7:PRINT CHR$(24);:COLOR 7,CJ 280 LOCATE 13,1:PRINT "A randomly chosen problem will then"; 290 LOCATE 15,1:PRINT "appear.";:GOSUB 30100:GOSUB 150 295 '** SCREEN #3 300 LOCATE 5,27:PRINT " ";:LOCATE 6,14:PRINT"- 3 . 7 8";:LOCATE 10,20:PRINT" "; 305 LOCATE 13,1:PRINT STRING$(36,32); 310 LOCATE 15,1:PRINT"After the lining-up stage, the problem";:LOCATE 17,1:PRINT"will be as above. You will then be ready";:LOCATE 19,1:PRINT"to start subtracting.";:GOSUB 30100:GOSUB 150 315 '** SCREEN #4 320 LOCATE 15,1:PRINT "You will be able to fill in any trailing"; 330 LOCATE 17,1:PRINT "zeroes in the problem by entering ";:COLOR CJ,7:PRINT"Z";:COLOR 7,CJ:PRINT". ";:LOCATE 19,1:PRINT STRING$(25,32); 350 LOCATE 23,5:PRINT " Enter ";:COLOR CJ,7:PRINT"Z";:COLOR 7,CJ:PRINT". ";:GOSUB 30100 370 I=INKEY$: IF I <> "Z" THEN 370 371 '** SCREEN #5 380 LOCATE 6,26: PRINT "0";:LOCATE 8,26:PRINT CHR$(219); 390 LOCATE 13,1:PRINT"During the problem, a `cursor' will"; 430 LOCATE 15,1:PRINT"indicate where you are in the problem. ";:LOCATE 17,1:PRINT STRING$(37,32); 431 LOCATE 23,5:PRINT "Press ";:COLOR CJ,7:PRINT"space bar";:COLOR 7,CJ:PRINT " to continue.";:LOCATE 8,26,1,0,7:GOSUB 30100 432 I=INKEY$:IF I <> " " THEN 432 435 '** SCREEN #6 440 LOCATE ,,0:GOSUB 840:LOCATE 12,1:PRINT"Now subtract ";:COLOR CJ,7:PRINT"0";:COLOR 7,CJ:PRINT" from ";:COLOR CJ,7:PRINT"9";:COLOR 7,CJ:PRINT"."; 442 LOCATE 23,16:PRINT"Enter ";:COLOR CJ,7:PRINT"9";:COLOR 7,CJ:PRINT".";:LOCATE 8,26,1:GOSUB 30100 445 I=INKEY$:IF I <> "9" THEN 445 450 LOCATE 8,26,0:PRINT"9";:GOSUB 830:LOCATE 12,1:PRINT"The cursor is on the bottom row, but to"; 455 LOCATE 14,1:PRINT"subtract ";:COLOR CJ,7:PRINT"8";:COLOR 7,CJ:PRINT" from ";:COLOR CJ,7:PRINT"7";:COLOR 7,CJ:PRINT", you must borrow.";:LOCATE 23,22:COLOR CJ,7:PRINT"B";:COLOR 7,CJ:LOCATE 8,24:PRINT CHR$(219);:GOSUB 30100 460 I=INKEY$:IF I<>"B" THEN 460 465 LOCATE,,0:GOSUB 830 470 LOCATE 12,1:PRINT"When you borrow, the cursor moves one"; 475 LOCATE 14,1:PRINT"column to the left, overlaying the"; 480 LOCATE 16,1:PRINT"digit that will be borrowed from, and"; 500 LOCATE 18,1:PRINT"waits for you to enter the new digit for"; 505 LOCATE 20,1:PRINT"that column. In this case this new digit"; 510 LOCATE 22,1:PRINT"will be ";:COLOR CJ,7:PRINT"1";:COLOR 7,CJ:PRINT".";:LOCATE 23,22:COLOR CJ,7:PRINT"1";:COLOR 7,CJ:LOCATE 5,22,1:GOSUB 30100 515 I=INKEY$:IF I<>"1" THEN 515 520 LOCATE 5,22,0:PRINT"1";:GOSUB 830 525 LOCATE 12,1:PRINT"Now you must enter the carry which is ";:COLOR CJ,7:PRINT"1";:COLOR 7,CJ:PRINT"."; 530 LOCATE 23,22:COLOR CJ,7:PRINT"1";:COLOR 7,CJ:LOCATE 4,23:PRINT CHR$(219);:GOSUB 30100 535 I=INKEY$:IF I<>"1" THEN 535 540 LOCATE 4,23,0:PRINT"1";:GOSUB 830 545 LOCATE 12,1:PRINT"Now that the borrow has been performed,"; 550 LOCATE 14,1:PRINT"you can continue with the subtraction."; 555 LOCATE 16,1:PRINT"The two digits to subtract now are ";:COLOR CJ,7:PRINT"17";:COLOR 7,CJ 560 LOCATE 18,1:PRINT"and ";:COLOR CJ,7:PRINT"8";:COLOR 7,CJ:PRINT". Enter their difference."; 565 LOCATE 23,22:COLOR CJ,7:PRINT"9";:COLOR 7,CJ:LOCATE 8,24,1:GOSUB 30100 570 I=INKEY$:IF I<>"9" THEN 570 575 LOCATE 8,24,0:PRINT"9";:GOSUB 830 580 LOCATE 12,1:PRINT"Subtracting ";:COLOR CJ,7:PRINT"7";:COLOR 7,CJ:PRINT" from ";:COLOR CJ,7:PRINT"1";:COLOR 7,CJ:PRINT" requires"; 585 LOCATE 14,1:PRINT"borrowing."; 600 LOCATE 23,22:COLOR CJ,7:PRINT"B";:COLOR 7,CJ:LOCATE 8,22:PRINT CHR$(219);:GOSUB 30100 605 I=INKEY$:IF I<>"B" THEN 605 610 LOCATE ,,0:GOSUB 830 615 LOCATE 12,1:PRINT"There is nothing to borrow from the ";:COLOR CJ,7:PRINT"0";:COLOR 7,CJ:PRINT","; 620 LOCATE 14,1:PRINT"so another borrow is needed."; 625 LOCATE 23,22:COLOR CJ,7:PRINT"B";:COLOR 7,CJ:LOCATE 5,18,1:GOSUB 30100 630 I=INKEY$:IF I<>"B" THEN 630 635 LOCATE ,,0:GOSUB 830 640 LOCATE 12,1:PRINT"You are borrowing from ";:COLOR CJ,7:PRINT"9";:COLOR 7,CJ:PRINT". The new"; 645 LOCATE 14,1:PRINT"digit to enter is ";:COLOR CJ,7:PRINT"8";:COLOR 7,CJ:PRINT"."; 650 LOCATE 23,22:COLOR CJ,7:PRINT"8";:COLOR 7,CJ:LOCATE 5,16,1:GOSUB 30100 655 I=INKEY$:IF I<>"8" THEN 655 660 LOCATE 5,16,0:PRINT"8";:GOSUB 830 665 LOCATE 12,1:PRINT"Now enter the carry."; 670 LOCATE 23,22:COLOR CJ,7:PRINT"1";:COLOR 7,CJ:LOCATE 4,17:PRINT CHR$(219);:GOSUB 30100 675 I=INKEY$:IF I<>"1" THEN 675 680 LOCATE 4,17,0:PRINT"1";:GOSUB 830 685 LOCATE 12,1:PRINT"Now you can borrow from `10' instead of"; 687 LOCATE 14,1:COLOR CJ,7:PRINT"1";:COLOR 7,CJ:PRINT". The new digit here will be ";:COLOR CJ,7:PRINT"9";:COLOR 7,CJ:PRINT"."; 690 LOCATE 23,22:COLOR CJ,7:PRINT"9";:COLOR 7,CJ:LOCATE 5,18,1:GOSUB 30100 695 I=INKEY$:IF I<>"9" THEN 695 700 LOCATE 4,17,0:PRINT" ";:LOCATE 5,18:PRINT"9";:GOSUB 830 705 LOCATE 12,1:PRINT"Now enter the carry."; 710 LOCATE 23,22:COLOR CJ,7:PRINT"1";:COLOR 7,CJ:LOCATE 4,21:PRINT CHR$(219);:GOSUB 30100 715 I=INKEY$:IF I<>"1" THEN 715 720 LOCATE 4,21,0:PRINT"1";:GOSUB 830 725 LOCATE 12,1:PRINT"Now enter the difference between ";:COLOR CJ,7:PRINT"11";:COLOR 7,CJ 730 LOCATE 14,1:PRINT"and ";:COLOR CJ,7:PRINT"7";:COLOR 7,CJ:PRINT", which is ";:COLOR CJ,7:PRINT"4";:COLOR 7,CJ:PRINT"."; 735 LOCATE 23,22:COLOR CJ,7:PRINT"4";:COLOR 7,CJ:LOCATE 8,22,1:GOSUB 30100 740 I=INKEY$:IF I<>"4" THEN 740 742 LOCATE 8,22,0:PRINT"4";:GOSUB 830 744 LOCATE 12,1:PRINT"Now enter the difference between ";:COLOR CJ,7:PRINT"9";:COLOR 7,CJ:PRINT" and"; 746 LOCATE 14,1:COLOR CJ,7:PRINT"3";:COLOR 7,CJ:PRINT"."; 748 LOCATE 23,22:COLOR CJ,7:PRINT"6";:COLOR 7,CJ:LOCATE 8,18:PRINT CHR$(219);:GOSUB 30100 750 I=INKEY$:IF I<>"6" THEN 750 752 LOCATE 8,18,0:PRINT"6";:GOSUB 830 754 LOCATE 12,1:PRINT"Finally, enter the difference between "; 756 LOCATE 14,1:COLOR CJ,7:PRINT"8";:COLOR 7,CJ:PRINT" and ";:COLOR CJ,7:PRINT"0";:COLOR 7,CJ:PRINT", which is ";:COLOR CJ,7:PRINT"8";:COLOR 7,CJ:PRINT"."; 758 LOCATE 23,22:COLOR CJ,7:PRINT"8";:COLOR 7,CJ:LOCATE 8,16:PRINT CHR$(219);:GOSUB 30100 760 I=INKEY$:IF I<>"8" THEN 760 762 LOCATE 8,16,0:PRINT"8";:GOSUB 840 764 LOCATE 12,1:PRINT"At any time during a problem you will be"; 766 LOCATE 14,1:PRINT"able to press:"; 767 LOCATE 16,8:PRINT"S - To Stop problems"; 768 LOCATE 16,8:PRINT"S - To Stop problems";:GOSUB 150 770 CLS:LOCATE 1,14:COLOR CJ,7:PRINT "Instructions";:COLOR 7,CJ:LOCATE 1,35:PRINT"#1"; 772 LOCATE 8,1:PRINT"After each problem, I will tell you the"; 774 LOCATE 10,1:PRINT"kinds of errors you made. After you"; 776 LOCATE 12,1:PRINT"finish all of the problems, I will"; 778 LOCATE 14,1:PRINT"summarize your errors.";:GOSUB 150 780 CLS:LOCATE 10,1:PRINT"Don't forget to look at the lining-up"; 782 LOCATE 12,1:PRINT"instructions if you haven't seen them.";:GOSUB 150 800 CHAIN "SUB.BAS" 820 STOP 830 FOR X=12 TO 22:LOCATE X,1:PRINT STRING$(40,32);:NEXT X:RETURN 840 FOR X=12 TO 20:LOCATE X,1:PRINT STRING$(40,32);:NEXT X:LOCATE 23,5:PRINT STRING$(28,32);:RETURN 850 DEF SEG=0: POKE 1050,PEEK(1052): DEF SEG=64: POKE 23,96: DEF SEG: RETURN 860 DEF SEG: SCREEN 0: CJ=0:COLOR 7,CJ,CJ: CLS: WIDTH 80: RETURN 30100 DEF SEG=0: POKE 1050,PEEK(1052): DEF SEG=64: POKE 23,96: DEF SEG: RETURN