IMD 1.16: 29/05/2007 18:30:13 FOGCPM.060 --FOGCPM060MENU BAS MENU DOCBUBBLE BAS8 BUBBLE DOC DESIGN BAS#DESIGN DOC ETCH BASSEARCH BASSEARCH DOCBREAKOUTBAS !CROSSPUZBAS/"#$%&'DUCK BAS5()*+,-.DUCK DOC/E-SKETCHBAS012ESCAPE BAS&34567GUNNER-2BAS89:;GUNNER-2DOC<HANOI BAS!=>?@APINGPONGBAS0BCDEFGPINGPONGDOCHRND-WALKBASIRND-WALKDOCJSLOTS BASXKLMNOPQRSTUSLOTS DOCVWSNOW BASXKONG BASpYZ[\]^_`abcdefGRAPH PRN ghKONG DOCiPRITPICTBASjPICT BASklmSKET BAS$nopqrSKET DOCsBRIDGE COMvtuvwxyz{|}~BRIDGE DESBRIDGE DOCBRIDGE PASaLIFE BASLIFE DOCLIFEASC COMgLIFEASC DOCLIFE1 PATLIFE2 PATLIFE3 PATLIFE4 PAT-06-00 86 -CPM060 DOC*This is the disk name. BREAKOUTBAS BRIDGE COMv BRIDGE DESBRIDGE DOCBRIDGE PASa !"#$%&'BUBBLE BAS8()*+,-.BUBBLE DOC /0CROSSPUZBAS/123456DESIGN BAS#789:;DESIGN DOC <=DUCK BAS5>?@ABCDDUCK DOCEE-SKETCHBASFGHETCH BASIJKLESCAPE BAS&MNOPQGUNNER-2BASRSTUGUNNER-2DOCVHANOI BAS!WXYZ[KONG BASp\]^_`abcdefghiKONG DOCjGRAPH PRN klLIFE BASmnoLIFE DOCpqrLIFE1 PATsLIFE2 PATtLIFE3 PATuLIFE4 PATvLIFEASC COMgwxyz{|}~10 ' Program Name--MENU 7/4/82 20 ' 30 ' Selects programs on diskette 40 ' 50 ' Archie Abaire 52 ' PO Box 29157 54 ' Richmond, Virginia 23233 56 ' (804) 740-7639 58 ' 60 ' July 1982 70 ' 200 NUM = 5:' Number of menu items including "EXIT" 210 DRIVE$ = "B:" 220 PROG$(1) = "DESIGN" 230 PROG$(2) = "BUBBLE" 240 PROG$(3) = "ETCH" 250 PROG$(4) = "SEARCH" 260 PROG$(5) = "EXIT" 500 DEF FNXY$(R,C) = CHR$(27) + "=" + CHR$(R+32) + CHR$(C+32) 550 XY$ = FNXY$(1,20) 560 PRINT CHR$(26);XY$;"Menu" 600 FOR I = 1 TO NUM 610 XY$ = FNXY$(I+4,5) 620 PRINT XY$;I;PROG$(I) 630 NEXT 700 XY$ = FNXY$(23,1) 710 PRINT XY$;"Enter selection "; 720 Q$ = INPUT$(1) 730 IF VAL(Q$) < 1 OR VAL(Q$) > NUM THEN PRINT CHR$(7);:GOTO 700 735 IF PROG$(VAL(Q$)) = "EXIT" THEN 999 740 PROGRAM$ = DRIVE$ + PROG$(VAL(Q$)) 750 RUN PROGRAM$ 999 END 1000 ' *** Instructions *** 1010 ' 1020 ' Assign program names to the variables 1030 ' PROG$(x). Don't forget to dimension PROG$(x) 1040 ' if you go beyond ten programs. 1045 ' 1050 ' In statement 200, assign the number of 1060 ' program names to the variable NUM 1065 ' 1070 ' In statement 210, assign to DRIVE$ the 1080 ' drive into which you will always put your 1090 ' program disk. 1100 ' 1110 ' At the exit point of each of the programs 1120 ' include the statement RUN "B:MENU instead 1130 ' of END.  1100 ' 1110 ' At the exit point of each of the programs 1120 ' include the statement RUN "B:MENU instead 1130 ' 560 PRINT CHR$(26);XY$;"Menu" 600 FOR I = 1 TO NUM 610 XY$ = FNXY$(I+4,5) 620 PRINT XY$;I;PROG$(I) 630 NEXT 700 XY$ = FNXY$(23,1) 710 PRINT XY$;"Enter selection "; 720 Q$ = INPUT$(1) 730 IF VAL(Q$) < 1 OR VAL(Q$) > NUM THEN PRINT CHR$(7);:GOTO 700 735 IF PROG$(VAL(Q$)) = "EXIT" THEN 999 740 PROGRAM$ = DRIVE$ + PROG$(VAL(Q$)) 750 RUN PROGRAM$ 999 END 1000 ' *** Instructions *** 1010 ' 1020 ' Assign program names to the variables 1030 ' PROG$(x). Don't forget to dimension PROG$MENU, BUBBLE, DESIGN, ETCH, & SEARCH were submitted All of these MBASIC files are are menu driven; first run MENU. DESIGN & ETCH both use graphics. See *.DOC files for information. To start the menu driven games, type after B> A:MBASIC MENU or type after Ok RUN "MENU" DESIGN BAS#789:;DESIGN DOC <=DUCK BAS5>?@ABCDDUCK DOCEE-SKETCHBASFGHETCH BASIJKLESCAPE BAS&MNOPQGUNNER-2BASRSTUGUNNER-2DOCVHANOI BAS!WXYZ[KONG BASp\]^_`abcdefghiKONG DOCjGRAPH PRN klLIFE BASmnoLIFE DOCpqrLIFE1 PATsLIFE2 PATtLIFE3 PATuLIFE4 PATvLIFEASC COMgwxyz{|}~10 'Program Name--BUBBLE 7/3/82 20 'Adapted from Apple program of 10/27/82 30 ' 40 'This program demonstrates how a computer 50 'does a bubble sort. 60 ' 70 ' Archie Abaire 80 ' July 1982 90 ' 100 DELAY = 100:' Timing delay factor 120 DIM LYST$(12) 130 DEF FNXY$(R,C) = CHR$(27) + "=" + CHR$(R+32) + CHR$(C+32) 140 '** Warning -- RESTORE instruction has been ** 150 '** used in subroutine for computer generated ** 160 '** list. ** 170 ' 180 '* Introduction to program * 190 ' 200 PRINT CHR$(26); 210 XY$ = FNXY$(5,0):PRINT XY$; 220 ON ERROR GOTO 200 230 PRINT "Hello! My name is Ozzie. What's yours?" 240 XY$ = FNXY$(23,0):PRINT XY$;"Type response and press 'RETURN'"; 250 XY$ = FNXY$(8,0):PRINT XY$;:INPUT "",QNAME$ 260 IF LEN(QNAME$) > 10 THEN QNAME$ = LEFT$(QNAME$,10) 265 PNAME$ = LEFT$(QNAME$,1) 266 FOR I = 2 TO LEN(QNAME$) 267 PNAME$ = PNAME$ + CHR$(ASC(MID$(QNAME$,I,1))+32) 268 NEXT 280 PRINT CHR$(26); 285 XY$ = FNXY$(5,0):PRINT XY$; 290 PRINT "Hello, ";PNAME$;"!":PRINT 300 PRINT "You are about to see an example of how a" 310 PRINT "computer does its work.":PRINT 320 PRINT "The bubble sort gets its name from the way" 330 PRINT "that items in a list seem to 'bubble' to" 340 PRINT "their correct positions like bubbles in a" 350 PRINT "fish tank.":PRINT 360 PRINT "Shortly you will see the kinds of operations" 370 PRINT "that the computer has to perform to put a" 380 PRINT "list into order." 390 GOSUB 18080 1000 PRINT CHR$(26); 1010 XY$ = FNXY$(3,18):PRINT XY$; 1040 ' 1050 PRINT "Menu":PRINT 1060 PRINT TAB(15);"Bubble Sort" 1070 PRINT:PRINT 1080 PRINT TAB(8);"1. Let me make a list for you" 1090 PRINT 1100 PRINT TAB(8);"2. You give me a list" 1110 PRINT 1120 PRINT TAB(8);"3. Return to instructions" 1122 PRINT 1124 PRINT TAB(8);"4. Exit" 1130 XY$ = FNXY$(23,1):PRINT XY$; 1140 PRINT "Please enter a number ";:CHOICE$ = INPUT$(1) 1150 IF CHOICE$ = "9" THEN GOSUB 20000 1160 IF CHOICE$ = "1" THEN GOSUB 18000 1170 IF CHOICE$ = "2" THEN GOSUB 7040 1180 IF CHOICE$ = "3" THEN 200 1185 IF CHOICE$ = "4" THEN RUN "B:MENU" 1190 IF CHOICE$ < "1" OR CHOICE$ > "3" THEN 1000 3000 XY$ = FNXY$(1,11):PRINT CHR$(26);XY$;"*** Bubble Sort ***" 3010 XY$ = FNXY$(3,14):PRINT XY$;"List" 3020 M = 4:' M controls vertical spacing 3025 IF CHOICE$ = "2" THEN GOSUB 21000 3030 FOR I = 1 TO 8 3040 M = M + 2 3050 XY$ = FNXY$(M,11):PRINT XY$;LYST$(I) 3060 NEXT 3070 Z = FRE(0) 4000 ' Set screen format 4010 ' 4020 M = 4 4030 FOR I = 1 TO 8 4040 M = M + 2:A = 0 4050 XY$ = FNXY$(M,8):PRINT XY$;I 4060 FOR J=1 TO 25:A=A+1:NEXT:' Timing delay loop 4070 NEXT 4080 XY$ = FNXY$(4,24):PRINT XY$;"Pass" 4090 GOSUB 18080 4100 XY$ = FNXY$(22,24):PRINT XY$;"Temporary" 4110 XY$ = FNXY$(23,24):PRINT XY$;"Register"; 5000 ' 5010 ' ** Beginning of sort procedure ** 5020 ' 5030 B10$ = STRING$(10," "):Z = FRE(0) 5040 FOR LL = 8 TO 2 STEP -1 5050 PASS = 9 - LL 5060 XY$ = FNXY$(4,29):PRINT XY$;" ";XY$;PASS 5070  FLAG1$ = "OFF" 5080 ' ** Sort loop ** 5090 FOR L = 1 TO LL - 1 5100 FLAG2 = 0:' Decision flag 5110 IF LYST$(L) <= LYST$(L+1) THEN FLAG2 = 1 5120 XY$ = FNXY$(2*L+4,21):PRINT XY$;"*" 5130 XY$ = FNXY$(2*L+6,21):PRINT XY$;"*" 5140 GOSUB 15000 5150 IF FLAG2 = 1 THEN 5400 5160 ' ** Swap occurs here ** 5170 XY$ = FNXY$(2*L+4,11):PRINT XY$;B10$ 5180 TEMP$ = LYST$(L) 5190 XY$ = FNXY$(2*L+4,24):PRINT XY$;B10$;XY$;TEMP$ 5200 GOSUB 15000 5210 LYST$(L) = LYST$(L+1) 5220 XY$ = FNXY$(2*L+4,11):PRINT XY$;B10$;XY$;LYST$(L) 5230 XY$ = FNXY$(2*L+6,11):PRINT XY$;B10$ 5240 GOSUB 15000 5250 XY$ = FNXY$(2*L+6,11):PRINT XY$;TEMP$ 5260 XY$ = FNXY$(2*L+4,24):PRINT XY$;B10$ 5270 LYST$(L+1) = TEMP$ 5300 FLAG1$ = "ON ":' End of swap 5400 XY$ = FNXY$(2*L+4,21):PRINT XY$;" " 5410 XY$ = FNXY$(2*L+6,21):PRINT XY$;" " 5420 NEXT 5430 IF FLAG1$ = "OFF" THEN 6000 5440 GOSUB 15000 5450 NEXT 5460 ' ** End of sort routine ** 5470 ' 6000 ' ** Job Exit ** 6010 ' 6020 XY$ = FNXY$(8,24):PRINT XY$;"Job" 6030 XY$ = FNXY$(9,24):PRINT XY$;"Completed" 6040 XY$ = FNXY$(22,24):PRINT XY$;B10$ 6050 XY$ = FNXY$(23,24):PRINT XY$;B10$; 6060 GOSUB 18080 6160 ' Set delay to normal 6180 IF DELAY = 1 THEN DELAY = 100:GOTO 1000:' Return to menu 6200 XY$ = FNXY$(10,0):PRINT CHR$(26);XY$; 6210 PRINT "Would you like to see how fast I can go? (Y/N)" 6220 Q$ = INPUT$(1) 6230 IF Q$ = "N" THEN 1000 6240 IF Q$ <> "Y" THEN 6220 6250 DELAY = 1:GOSUB 18000 6260 GOTO 3000 7000 ' ** User keys list ** 7010 ' 7040 MSG$(1) = "Enter the words you would like to" 7050 MSG$(2) = "have sorted. They may have up to" 7060 MSG$(3) = "ten characters. Numbers will be" 7070 MSG$(4) = "treated as if they were letters." 7080 MSG$(5) = "TO CORRECT ERRORS" 7090 MSG$(6) = "use backspace arrow" 7100 MSG$(7) = "at right end of key" 7110 MSG$(8) = "board." 7120 MSG$(9) = "Press RETURN key" 7130 MSG$(10) = "to enter each word." 7140 ' 7145 PRINT CHR$(26) 7150 FOR I = 1 TO 4 7160 XY$ = FNXY$(2*I,3) 7170 PRINT XY$;MSG$(I) 7180 NEXT 7190 XY$ = FNXY$(11,21):PRINT XY$;MSG$(5) 7200 FOR I = 6 TO 8 7210 XY$ = FNXY$(I+7,21) 7220 PRINT XY$;MSG$(I) 7230 NEXT 7240 ' Prenumber list 7250 FOR I = 1 TO 8 7260 XY$ = FNXY$(10+I,3):PRINT XY$;I 7270 NEXT 7280 ' 8000 ' ** Enter list ** 8010 ' 8020 MARK$ = STRING$(10,".") 8030 FOR I = 1 TO 8 8040 XY$ = FNXY$(21,21) 8050 PRINT XY$;MARK$;XY$; 8060 INPUT "",WORD$ 8070 PRINT XY$;SPC(LEN(WORD$) + 1) 8080 LYST$(I) = LEFT$(WORD$,10) 8090 XY$ = FNXY$(10+I,6) 8100 PRINT XY$;LYST$(I) 8120 NEXT 8140 ' 8150 ' Extra copy of original list 8160 ' 8170 FOR I = 1 TO 8 8180 EXTRALYST$(I) = LYST$(I) 8190 NEXT 8200 RETURN 9999 END 15000 ' ** Delay loop ** 15010 ' 15020 FOR I = 1 TO DELAY 15030 A = A + 1 15040 NEXT 15050 A = 0 15060 RETURN 15070 ' 17900 ' ** Data for computer generated list ** 17910 ' 18000 DATA DEMOCRITUS,OZZIE,ZENO,ARCHIMEDES 18010 DATA CARVER,KEPLER,BOOLE,PASTEUR,HARVEY,HERO 18020 FOR I = 1 TO 7 18030 READ LYST$(I) 18040 NEXT 18050 LYST$(8) = QNAME$ 18060 RESTORE 18070 RETURN 18075 ' ** 'Ready to continue' display ** 18080 XY$ = FNXY$(23,0) 18090 PRINT XY$;"Press any key to continue..."; 18100 Q$ = INPUT$(1) 18110 PRINT XY$;SPC(30); 18120 RETURN 18130 ' 20000 ' ** Modify delay factor ** 20010 ' 20020 XY$ = FNXY$(10,0):PRINT CHR$(26);XY$ 20030 'COUNT = COUNT - 1 20040 PRINT "Initial delay factor = 100" 20050 PRINT:PRINT "Present delay factor =";DELAY 20060 PRINT:INPUT "Change factor to ",NEWDELAY 20070 IF NEWDELAY = 0 THEN 20150 20080 IF NEWDELAY < 0 THEN NEWDELAY = 100 20090 IF NEWDELAY > 500 THEN NEWDELAY = 500 20100 DELAY = NEWDELAY 20150 RETURN 21000 '** Reuse user's list ** 21010 ' 21020 FOR I = 1 TO 8 21030 LYST$(I) = EXTRALYST$(I) 21040 NEXT 21050 RETURN N 21000 '** Reuse user's list ** 21010 ' 21020 FOR I = 1 TO 8 21030 LYST$(I) = EXTRALYST$(I) 21040Program Name BUBBLE Author Archie L. Abaire, Jr. PO Box 29157 Richmond, Virginia 23233 (804) 740-7639 Date July, 1982 Thi progra demonstrate ho bubbl sor works Mos o th instruction ar displaye o th scree an ar fairl straightforward. I th compute generate th list i use name containe i DAT statement i th subroutin startin a statemen 18000 Th use wh enter his/he nam i respons t prompt a th beginnin o th progra wil fin his/he nam a th botto o th lis t b sorted Th numbe o passe th compute make throug th algorith depend o th firs lette o thi person's name. I th use generate th list word wil b truncate t te characters I uppe an lowe cas character ar mixe o i number wit decimals wit an withou leadin zeroes ar used th result ar rathe interesting an unexpecte t anyon no familia wit ASCI codes. Th timin delay whic contro th sortin displa ca b altere b th user Thi i accomplishe b enterin "9 a men choic (no show o th men - add littl mystery) Th rat i initialize t defaul valu whe th progra i firs run Afte eac sort th questio i aske whethe yo wan t se ho fas th compute ca go I th respons i "yes the th dela facto i se t "1" Upo completion i i se bac to the default value. th botto o th lis t b sorted Th numbe o passe th compute make throug th algorith depend o th firs lette o thi person's name. I th use generate th list word wil b truncate t te characters I uppe an lowe cas character ar mixe o i number wit decimals wit an withou leadin zeroes ar used th10 ' Program Name--DESIGN 7/2/82 20 ' To print nifty designs on the screen 21 ' 22 ' Archie L. Abaire, Jr. 23 ' PO Box 29157 24 ' Richmond, Virginia 23233 25 ' (804) 740-7639 26 ' 30 ' 40 PRINT CHR$(26); 45 K$ = "" 50 FOR X = 1 TO 5:PRINT:NEXT 60 PRINT TAB(10);"1. Reflection" 70 PRINT TAB(10);"2. Wrap around" 72 PRINT TAB(10);"3. Wave in a box" 73 PRINT TAB(10);"4. Wave" 75 PRINT TAB(10);"5. Exit" 80 PRINT:PRINT 90 PRINT TAB(10);"Select "; 100 Q$ = INPUT$(1) 110 IF Q$ = "1" THEN 200 120 IF Q$ = "2" THEN 1000 122 IF Q$ = "3" THEN 2000 123 IF Q$ = "4" THEN 3000 125 IF Q$ = "5" THEN 3620 130 GOTO 40 200 DEFINT R,C,P 210 PRINT CHR$ (26) 220 FOR X = 1 TO 5:PRINT:NEXT 230 PRINT TAB(10);"Select a number between 40 and 51 "; 240 CLIMIT = VAL(INPUT$(2)) 250 IF CLIMIT < 40 OR CLIMIT > 51 THEN 210 260 PRINT CHR$(26) 500 R = 0 510 COL = 0 520 PLACE = &HF000 530 WHILE LEN(K$) = 0 540 IF R = 0 THEN RDIR = 1 550 IF R = 23 THEN RDIR = -1 560 IF COL = 0 THEN CDIR = 1 570 IF COL = CLIMIT THEN CDIR = -1 580 ' 590 PCHAR = PEEK(PLACE) 600 IF PCHAR = 32 THEN CHAR = 13:GOTO 660 610 IF PCHAR = 13 THEN CHAR = 0:GOTO 660 620 IF PCHAR = 0 THEN CHAR = 79:GOTO 660 630 IF PCHAR = 79 THEN CHAR = 22:GOTO 660 640 CHAR = 32 650 ' 660 POKE PLACE,CHAR 670 R = RDIR*1 + R 680 ROW = R*&H80 + &HF000 690 COL = CDIR*1 + COL 700 PLACE = ROW + COL 710 ' 720 K$ = INKEY$ 730 WEND 735 GOTO 40 740 FOR X = 0 TO 32 750 POKE &HF000 + 2*X,X 760 NEXT 1000 DEFINT R,C,P 1010 PRINT CHR$(26); 1020 FOR X = 1 TO 5:PRINT:NEXT 1030 PRINT TAB(10);"Select a number between 40 and 51 "; 1040 CLIMIT = VAL(INPUT$(2)) 1050 IF CLIMIT < 40 OR CLIMIT > 51 THEN 1010 1060 PRINT CHR$(26); 1070 R = 0 1080 COL = 0 1090 PLACE = &HF000 1100 WHILE LEN(K$) = 0 1110 IF R = 0 THEN RDIR = 1 1115 IF R = 23 THEN RDIR = -1 1120 IF COL = CLIMIT THEN COL = 0 1130 ' 1140 PCHAR = PEEK(PLACE) 1150 IF PCHAR = 32 THEN CHAR = 13:GOTO 1210 1160 IF PCHAR = 13 THEN CHAR = 0:GOTO 1210 1170 IF PCHAR = 0 THEN CHAR = 79:GOTO 1210 1180 IF PCHAR = 79 THEN CHAR = 22:GOTO 1210 1190 CHAR = 32 1200 ' 1210 POKE PLACE,CHAR 1220 R = R + 1*RDIR 1230 ROW = R*&H80 + &HF000 1240 COL = COL + 1 1250 PLACE = ROW + COL 1260 ' 1270 K$ = INKEY$ 1280 WEND 1290 GOTO 40 2000 DEFINT R,C,P 2010 PRINT CHR$(26); 2020 FOR X = 1 TO 5:PRINT:NEXT 2030 PRINT TAB(10);"Select a number between 40 and 51 "; 2040 CLIMIT = VAL(INPUT$(2)) 2050 IF CLIMIT < 40 OR CLIMIT > 51 THEN 2010 2060 PRINT CHR$(26); 2070 R = 0 2080 COL = 0 2090 PLACE = &HF000 2100 WHILE LEN(K$) = 0 2110 IF R = 0 THEN RDIR = 1 2120 IF R = 23 THEN RDIR = -1 2125 IF COL = 0 THEN CDIR = 1 2130 IF COL = CLIMIT THEN CDIR = -1 2140 ' 2150 PCHAR = PEEK(PLACE) 2160 IF PCHAR = 32 THEN CHAR = 13:GOTO 2220 2170 IF PCHAR = 13 THEN CHAR = 0:GOTO 2220 2180 ' IF PCHAR = 13 THEN CHAR = 79:GOTO 2220 2190 ' IF PCHAR = 79 THEN CHAR = 22:GOTO 2220 2200 CHAR = 32 2210 ' 2220 POKE PLACE,CHAR 2230 X = X + .13 2232 IF X = 4 THEN X = 0 2234 R = 12 + INT(10*SIN(X)) 2240 ROW = R*&H80 + &HF000 2250 COL = COL + 1*CDIR 2260 PLACE = ROW + COL 2270 ' 2280 K$ = INKEY$ 2290 WEND 2300 GOTO 40 3000 DEFINT R,C,P 3010 PRINT CHR$(26); 3020 FOR X = 1 TO 5:PRINT:NEXT 3030 PRINT TAB(10);"Select a number between 40 and 51 "; 3040 CLIMIT = VAL(INPUT$(2)) 3050 IF CLIMIT < 40 OR CLIMIT > 51 THEN 3010 3060 PRINT CHR$(26); 3070 R = 0 3075 RY = 0 3080 COL = 0 3085 COL1 = 0 3086 Y = 0 3087 X = 0 3088 Z = 0 3089 CHAR = 32 3090 PLACE = &HF000 3095 PLACE1 = &HF000 3100 WHILE LEN(K$) = 0 3140 IF COL = CLIMIT THEN COL = 0 3145 IF COL1 = CLIMIT THEN COL1 = 0 3150 ' 3160 PCHAR = PEEK(PLACE) 3170 IF PCHAR = 32 THEN CHAR = 13:GOTO 3310 3220 ' 3310 IF Z = 2*CLIMIT THEN 3325 3320 Z = Z + 1:GOTO 3500 3325 POKE PLACE1,32 3330 Y = Y + .13 3340 IF Y = 4 THEN Y = 0 3350 RY = 12 + INT(10*SIN(Y)) 3360  ROW1 = RY*&H80 + &HF000 3370 COL1 = COL1 + 1 3380 PLACE1 = ROW1 + COL1 3390 ' 3500 POKE PLACE,CHAR 3510 X = X + .13 3520 IF X = 4 THEN X = 0 3530 R = 12 + INT(10*SIN(X)) 3540 ROW = R*&H80 + &HF000 3550 COL = COL + 1 3560 PLACE = ROW + COL 3570 ' 3580 ' 3590 K$ = INKEY$ 3600 WEND 3610 GOTO 40 3620 RUN "B:MENU"  COL = COL + 1 3560 een 40 and 51 "; 3040 CLIMIT = VAL(INPUT$(2)) 3050 IF CLIMIT < 40 OR CLIMIT > 51 THEN 3010 3060 PRINT CHR$(26); 3070 R = 0 3075 RY = 0 3080 COL = 0 3085 COL1 = 0 3086 Y = 0 3087 X = 0 3088 Z = 0 3089 CHAR = 32 3090 PLACE = &HF000 3095 PLACE1 = &HF000 3100 WHILE LEN(K$) = 0 3140 IF COL = CLIMIT THEN COL = 0 3145 IF COL1 = CLIMIT THEN COL1 = 0 3150 ' 3160 PCHAR = PEEK(PLACE) 3170 IF PCHAR = 32 THEN CHAR = 13:GOTO 3310 3220 ' 3310 IF Z = 2*CLIMIT THEN 3325 3320 Z = Z + 1:GOTO 3500 3325 POKE PLACE1,32 3330 Y = Y + .13 3340 IF Y = 4 THEN Y = 0 3350 RY = 12 + INT(10*SIN(Y)) 3360 Program Name DESIGN Author Archie L. Abaire, Jr. PO Box 29157 Richmond, Virginia 23233 (804) 740-7639 Date July, 1982 Thi progra i actuall fou program i one Eac subuni i complet b itself A eac characte i printed th vertica an horizonta coordinate ar incremented Eac locatio i th scree memor ma t b printe i firs PEEKe an th characte t b POKE i selecte accordin t wha i already there. Th rathe crypti promp t selec numbe betwee 4 an 5 a th beginnin o eac segmen allow inpu o th widt o the design. T exi an o th design whil the ar running pres an key. You will be returned to the menu. "Reflection show patter create b th lin reflectin of al fou boundaries "Wra around wrap aroun onl i th horizonta directio an reflect fro th to an botto boundaries Wra aroun i al fou direction prove t b rathe uninteresting "Wav i box an "Wave ar no a interesting Th curso travel i sin wav patter rathe than in straight lines. onta coordinate ar incremented Eac locatio i th scree memor ma t b printe i firs PEEKe an th characte t b POKE i selecte accordin t wha i already there. Th rathe crypti promp t selec numbe betwee 4 an 5 a th beginnin o eac segmen allow inpu o th widt o the design. T exi an o th design whil the ar running pres an key. You will be returned to the menu. "Reflection show patter create b th lin reflectin of al fou boundaries "Wra around wrap aroun onl i th horizonta directio an reflect fr10 'Program name--ETCH 7/24/82 20 'Cursor control exercise 30 ' 40 PRINT CHR$(26); 50 FOR Z = 1 TO 5:PRINT:NEXT 60 PRINT " ETCH-A-SCREEN" 70 PRINT " by David Blair" 80 PRINT " 6/14/82" 90 PRINT 100 PRINT " modified by" 110 PRINT " Archie L. Abaire, Jr." 120 PRINT " 7/24/82" 130 GOSUB 970:' "to continue" instruction 140 PRINT CHR$(26); 150 PRINT " Commands" 160 PRINT 170 PRINT " '!' exits to menu 180 PRINT " starts program over" 185 PRINT " C exits to MBASIC 190 PRINT " (most other keys) gives a graphic character" 195 PRINT " '";CHR$(34);"' to enter ASCII numbers (3 digits)" 200 PRINT 210 PRINT " All commands are via the numeric key pad" 220 PRINT " 1 moves cursor down and to the left" 230 PRINT " 2 moves cursor down" 240 PRINT " 3 moves cursor down and to the right" 250 PRINT " 4 moves cursor to the left" 260 PRINT " 5 is a switch that turns tracer off/on" 270 PRINT " 6 moves cursor right" 280 PRINT " 7 moves cursor up and to the left" 290 PRINT " 8 moves cursor up" 300 PRINT " 9 moves cursor up and to the right" 310 PRINT " 0 erases any character at cursor position" 320 PRINT 330 PRINT " x Any other character becomes tracer" 340 GOSUB 970 350 ' 360 PRINT CHR$(26); 370 B$ = "X":' Set tracer character 380 IPEN% = -1:' Turn off tracer 390 X% = 58 400 Y% = 44 410 PRINT CHR$(27);"=";CHR$(Y%);CHR$(X%); 420 A$ = INPUT$(1) 430 IF A$ = CHR$(27) THEN 140 440 IF A$ = CHR$(33) THEN 1010 445 IF A$ = CHR$(34) THEN GOSUB 1030 450 IF A$ < "0" THEN B$ = A$:GOTO 780:' If not numeric, set tracer 460 IF A$ > "9" THEN B$ = A$:GOTO 780 470 ' 480 ' Move cursor 490 IF A$ = "1" THEN XX% = -1 500 IF A$ = "1" THEN YY% = 1 510 IF A$ = "2" THEN XX% = 0 520 IF A$ = "2" THEN YY% = 1 530 IF A$ = "3" THEN XX% = 1 540 IF A$ = "3" THEN YY% = 1 550 IF A$ = "4" THEN XX% = -1 560 IF A$ = "4" THEN YY% = 0 570 IF A$ = "5" THEN IPEN% = -IPEN%:' Reverse tracer switch 580 IF A$ = "5" THEN XX% = 0:YY% = 0 590 IF A$ = "6" THEN XX% = 1 600 IF A$ = "6" THEN YY% = 0 610 IF A$ = "7" THEN XX% = -1 620 IF A$ = "7" THEN YY% = -1 630 IF A$ = "8" THEN XX% = 0 640 IF A$ = "8" THEN YY% = -1 650 IF A$ = "9" THEN XX% = 1 660 IF A$ = "9" THEN YY% = -1 670 ' 680 X% = X% + XX% 690 Y% = Y% + YY% 700 XFLAG% = 0:YFLAG% = 0 710 IF X% > 81 OR X% < 33 THEN XFLAG% = 1:' Keep cursor on screen 720 IF Y% < 33 OR Y% > 54 THEN YFLAG% = 1 730 IF XFLAG% = 1 OR YFLAG% = 1 THEN XX% = -XX%:YY% = -YY% 740 IF XFLAG% = 0 AND YFLAG% = 0 THEN 780 750 X% = X% + XX%:' Restore previous X% and Y% values 760 Y% = Y% + YY% 770 '' 780 PRINT 790 IF A$ <> "0" THEN 870 800 XX% = -XX%:YY% = -YY% 810 X% = X% + XX% 820 Y% = Y% + YY% 830 PRINT CHR$(27);"=";CHR$(Y%);CHR$(X%);" "; 840 PRINT CHR$(27);"=";CHR$(Y%);CHR$(X%); 850 GOTO 420 860 ' 870 PRINT CHR$(27);"=";CHR$(Y%);CHR$(X%); 880 IF IPEN% = -1 THEN 420 890 PRINT CHR$(27);"g"; 900 PRINT B$; 910 PRINT CHR$(27);"G"; 920 PRINT CHR$(27);"=";CHR$(Y%);CHR$(X%); 930 GOTO 420 940 ' 950 ' 960 ' Subroutine "to continue" 970 PRINT CHR$(27);"=";CHR$(54);CHR$(32); 980 PRINT "Press any key to continue "; 990 Z$ = INPUT$(1) 1000 RETURN 1010 RUN "B:MENU" 1020 ' Subroutine for special characters 1030 A$ = INPUT$(3) 1040 A$ = CHR$(VAL(A$)) 1050 RETURN ETUR YY% 700 XFLAG% = 0:YFLAG% = 0 710 IF X% > 81 OR X% < 33 THEN XFLAG% = 1:' Keep cursor on screen 720 IF Y% < 33 OR Y% > 54 THEN YFLAG% = 1 730 IF XFLAG% = 1 OR YFLAG% = 1 THEN XX% = -XX%:YY% = -YY% 740 IF XFLAG% = 0 AND YFLAG% = 0 THEN 780 750 X% = X% + XX%:' Restore previous X% and Y% values 760 Y% = Y% + YY% 770 '' 780 PRINT 790 IF A$ <> "0" THEN 870 800 XX% = -XX%:YY% = -YY% 810 X% = X% + XX% 820 Y% = Y% + YY% 830 PRINT CHR$(27);"=";CHR$(Y%);CHR$(X%);" "; 840 PRINT CHR$(27);"=";CHR$(Y%);CHR$(X%); 850 GOTO 420 860 ' 870 PRINT CHR$(27);"=";CHR$(Y%);CHR$(X%); 880 IF IPEN% = -1 THEN 420 890 PRINT CHR$(27);"g"; 900 PRINT B$; 910 PRINT CHR$(27);"G"; 920 PRINT CHR$(27);"=";CHR$(Y%);CHR$(X%); 930 GOTO 420 940 ' 950 ' 960 ' Subroutine "10 'Program name--SEARCH 7/26/82 20 ' 30 ' Demonstrates how a computer can extract information from data 40 ' 50 ' Archie L. Abaire, Jr. 60 ' PO Box 29157 70 ' Richmond, Virginia 23233 80 ' (804) 740-7639 90 ' 100 DIM L$(20),SEARCH(500),LETTER(40) 110 DEF FNXY$(Y,X) = CHR$(27)+"="+CHR$(Y+31)+CHR$(X+31) 120 PRINT CHR$(26) 130 PRINT "Letter Counter" 140 PRINT "July, 1982":PRINT 150 ' 160 FOR I = 1 TO 500 170 SEARCH(I) = 0 180 NEXT 190 FOR I = 1 TO 40 200 LETTER(I) = 0 210 NEXT 220 PRINT "Enter low search character ";:LOW$ = INPUT$(1):PRINT LOW$ 230 PRINT "Enter high search character ";:HIGH$ = INPUT$(1):PRINT HIGH$ 240 PRINT "Display out of range characters? Y/N ";:FLAG$ = INPUT$(1):PRINT FLAG$ 250 ' Enter words 260 GOSUB 490 270 ' 280 PRINT CHR$(26); 290 PRINT:PRINT "*** LIST BEING SEARCHED ***" 300 GOSUB 600 310 GOSUB 750 320 PRINT 330 PRINT "TEST RESULTS" 340 PRINT "NUMBER OF CHARACTERS > ";HIGH$;" =";HIGH 350 PRINT "NUMBER OF CHARACTERS < ";LOW$;" =";LOW 360 PRINT "NUMBER OF CHARACTERS =";C 370 PRINT:PRINT "Press any key to see table ";:A$ = INPUT$(1) 380 GOSUB 850 390 GOSUB 940 400 PRINT:PRINT "# =";SUB1;TAB(20);"# =";SUB2 410 PRINT:PRINT "TOTAL CHARACTER COUNT =";LETTERCOUNT 420 IF FLAG$="Y" THEN PRINT:PRINT "Press any key to see out of range characters ";:Q$ = INPUT$(1) 430 IF FLAG$="Y" THEN GOSUB 1040 440 XY$ = FNXY$(23,1):PRINT XY$; 450 PRINT "Do you want to do it again? ";:Q$ = INPUT$(1) 460 IF Q$ = "Y" THEN 120 470 IF Q$ <> "N" THEN 440 480 GOTO 740 490 PRINT CHR$(26); 500 PRINT "Enter words. ( when done)" 510 PRINT 520 N = 0 530 Q$ = " " 540 WHILE LEN(Q$) <> 0 550 N = N + 1 560 LINE INPUT "",Q$ 570 L$(N) = Q$ 580 WEND 590 RETURN 600 'SEARCH ARRAY 610 ' 620 Z=1:C = 0:HIGH = 0:LOW = 0 630 FOR I=1 TO N 640 FOR J=1 TO LEN(L$(I)) 650 TEST$=MID$(L$(I),J,1) 660 IF TEST$ > HIGH$ THEN HIGH=HIGH+1 670 IF FLAG$="Y" THEN IF TEST$ > HIGH$ THEN SEARCH(Z)=ASC(TEST$):Z=Z+1 680 IF TEST$ < LOW$ THEN LOW=LOW+1 690 IF FLAG$="Y" THEN IF TEST$ < LOW$ THEN SEARCH(Z)=ASC(TEST$):Z=Z+1 700 C=C+1:'TOTAL NUMBER OF CHARACTERS 710 NEXT 720 NEXT 730 RETURN 740 RUN "B:MENU 750 'COUNT ALL CHARACTERS 760 ' 770 FOR I=1 TO N 780 FOR J=1 TO LEN(L$(I)) 790 K%=ASC(MID$(L$(I),J)) - 64 800 IF K% < 1 THEN 820 810 LETTER(K%)=LETTER(K%)+1 820 NEXT 830 NEXT 840 RETURN 850 'PRINT TABLE OF CHARACTER COUNT 860 ' 870 PRINT CHR$(26):PRINT "TABLE--CHARACTER COUNT" 880 PRINT 890 FOR I=1 TO 13 900 PRINT CHR$(I+64);" =";LETTER(I); 910 PRINT TAB(20);CHR$(I+13+64);" =";LETTER(I+13) 920 NEXT 930 RETURN 940 'COUNT ALL LETTERS IN TABLE 950 ' 960 LETTERCOUNT = 0 970 SUB1 = 0:SUB2 = 0 980 FOR I=1 TO 26 990 LETTERCOUNT=LETTERCOUNT+LETTER(I) 1000 IF I<=13 THEN SUB1=SUB1+LETTER(I) 1010 IF I>13 THEN SUB2=SUB2+LETTER(I) 1020 NEXT 1030 RETURN 1040 'PRINT EXTRA CHARACTERS 1050 ' 1060 PRINT CHR$(26) 1070 PRINT "OTHER CHARACTERS":PRINT 1080 X = 1:Y = 3 1090 FOR I = 1 TO Z 1100 IF I MOD 20 = 0 THEN X = X + 10:Y = 2 1110 Y = Y + 1 1120 XY$ = FNXY$(Y,X) 1130 PRINT XY$;:PRINT USING "###";I; 1140 XY$ = FNXY$(Y,X+4) 1150 PRINT XY$;CHR$(SEARCH(I)); 1160 NEXT 1170 RETURN 30 PRINT XY$;:PROR J=1 TO LEN(L$(I)) 790 K%=ASC(MID$(L$(I),J)) - 64 800 IF K% < 1 THEN 820 810 LETTER(K%)=LETTER(K%)+1 820 NEXT 830 NEXT 840 RETURN 850 'PRINT TABLE OF CHARACTER COUNT 860 ' 870 PRINT CHR$(26):PRINT "TABLE--CHARACTER COUNT" 880 PRINT 890 FOR I=1 TO 13 900 PRINT CHR$(I+64);" =";LETTER(I); 910 PRINT TAB(20);CHR$(I+13+64);" =";LETTER(I+13) 920 NEXT 930 RETURN 940 'COUNT ALL LETTERS IN TABLE 950 ' 960 LETTERCOUNT = 0 970 SUB1 = 0:SUB2 = 0 980 FOR I=1 TO 26 990 LETTERCOUNT=LETTERCOUNT+LETTER(I) 1000 IF I<=13 THEN SUB1=SUB1+LETTER(I) 1010 IF I>13 THEN SUB2=SUB2+LETTER(I) 1020 NEXT 1030 RETURN 1040 'PRINT EXTRA CHARACTERS 1050 ' 1060 PRINT CHR$(26) 1070 PRINT "OTHER CHARACTERS":PRINT 1080 X = 1:Y = 3 1090 F Program Name SEARCH Author Archie L. Abaire, Jr. PO Box 29157 Richmond, Virginia 23233 (804) 740-7639 Date July 1982 Th堠 purpos o thi progra i t demonstrat堠 th capabilities of a computer to analyze information. Thi progra accept lis o word o indeterminat numbe an length Th letter i thes word ar counte an char i displaye showin th tota coun an th coun fo eac letter A th beginnin o th run th use i aske fo hig an lo searc characters An character whic fal outsid o thi rang wil b save fo optiona specia displa afte th count of all letters is displayed. LIFE2 PATtLIFE3 PATuLIFE4 PATvLIFEASC COMgwxyz{|}~10 REM BREAKOUT FOR OSBORNE 1 20 REM 4-19-82 BY MIKE MARZALEK 30 REM THIS SOFTWARE MAY BE COPIED FREELY 40 REM KEYS 3 AND 9 MOVE PADDLE 50 PRINT CHR$(&H1A) 60 FOR P%= 0 TO 2 70 FOR I%=1 TO 22 80 POKE &HF000+6+2*P%+128*I%,1 90 NEXT I% 100 NEXT P% 110 FOR P%=0 TO 1 120 FOR I%=0 TO 50 130 POKE &HF000+128*23*P%+I%,22 140 NEXT I% 150 NEXT P% 160 DATA 10,22,22,32,10,22,22,32,10,22,22,25,10,22,22 170 DATA 32,10,25,10,25,10,22,22,32,10,25,10,25 180 DATA 10,22,22,25 190 I%=16:J%=7 200 FOR P%=0 TO 31 210 GOSUB 1140 220 NEXT P% 230 DATA 10,22,22,25,10,22,22,25,10,22,32,32,10,22 240 DATA 22,25,10,25,10,25,10,22,22,25,10,25,10,25 250 DATA 32,10,25,32 260 I%=15:J%=8 270 FOR P%=0 TO 31 280 GOSUB 1140 290 NEXT P% 300 DATA 10,22,22,32,10,22,22,32,10,25,32,32,10,22 310 DATA 22,25,10,25,22,32,10,22,22,25,10,25,10,25 320 DATA 32,10,25,32 330 I%=14:J%=9 340 FOR P%=0 TO 31 350 GOSUB 1140 360 NEXT P% 370 DATA 10,22,22,25,10,25,10,25,10,22,22,25,10,25 380 DATA 10,25,10,25,10,25,32,22,22,25,10,22,22,25 390 DATA 32,10,25,32 400 I%=13:J%=10 410 FOR P%=0 TO 31 420 GOSUB 1140 430 NEXT P% 440 DATA 10,8,32,57,4,1,32,32,4,1,32,32,21,25,32,51 450 I%=40 460 FOR J%=17 TO 20 470 FOR P%=0 TO 3 480 GOSUB 1140 490 NEXT P% 500 NEXT J% 510 FOR P%=1 TO 800 520 NEXT P% 530 FOR I%=12 TO 50 540 FOR J%=7 TO 20 550 POKE &HF000+I%+128*J%,32 560 NEXT J% 570 NEXT I% 580 B%=0 590 P%=1 600 POKE &HF000+51+256,1 610 C=.46:D=.17 620 X=15:Y=3 630 I%=X:J%=Y 640 Y=Y+D:X=X+C 650 IF X>51 THEN C=-ABS(C) 660 IF X<1 THEN C=ABS(C) 670 IF Y<1 THEN D=ABS(D) 680 IF Y>22 THEN D=-ABS(D) 690 IF(X>51) AND ABS(J%-P%)>1 THEN GOTO 950 700 IF X>51 THEN PRINT CHR$(&H7);CHR$(&HB) 710 IF I%<51 THEN POKE &HF000+I%+128*J%,32 720 I%=X:J%=Y 730 IF I%>11 THEN GOTO 800 740 L%=2*INT(I%/2) 750 K%=PEEK(&HF000+L%+128*J%) 760 IF K%<>1 THEN GOTO 800 770 C=-C 780 POKE &HF000+L%+128*J%,32 790 PRINT CHR$(&H7);CHR$(&HB) 800 IF I%<51 THEN POKE &HF000+I%+128*J%,13 810 C=C*1.001:IF C>2 THEN C=2 820 IF X>51 THEN D=(Y-P%)/4 830 CHAR$="":CHAR$=INKEY$ 840 IF CHAR$="3" THEN GOTO 910 850 IF CHAR$="9" THEN GOTO 870 860 GOTO 630 870 P%=P%-1:IF P%<0 THEN P%=0 880 POKE &HF000+51+128*(P%-1),1 890 POKE &HF000+51+128*(P%+2),32 900 GOTO 630 910 P%=P%+1:IF P%>23 THEN P%=23 920 POKE &HF000+51+128*(P%+1),1 930 POKE &HF000+51+128*(P%-2),32 940 GOTO 630 950 B%=B%+1 960 POKE &HF000+I%+128*J%,32 970 X=0 980 FOR I%=6 TO 10 990 FOR J%= 0 TO 23 1000 K%=PEEK(&HF000+I%+128*J%) 1010 IF K%=1 THEN X=X+1 1020 NEXT J% 1030 NEXT I% 1040 PRINT 66-X 1050 IF B%<3 THEN GOTO 610 1060 RESTORE 1070 PRINT "ANOTHER GAME???" 1080 CHAR$="":CHAR$=INKEY$ 1090 IF CHAR$="" THEN GOTO 1080 1100 IF CHAR$<"A" THEN GOTO 1080 1110 IF CHAR$="Y" THEN GOTO 10 1120 PRINT CHR$(&H1A) 1130 END 1140 READ K% 1150 POKE &HF000+I%+128*J%+P%,K% 1160 RETURN  1110 IF CHAR$="Y" THEN GOTO 10 1120 PRINT CHR$(&H1A) 1130 END 1140 READ K% 1R$(&H7);CHR$(&HB) 800 IF I%<51 THEN POKE &HF000+I%+128*J%,13 810 C=C*1.001:IF C>2 THEN C=2 820 IF X>51 THEN D=(Y-P%)/4 830 C10 ' ****************************************** 20 ' ** W O R D S E A R C H P U Z Z L E ** 30 ' ****************************************** 40 ' ** ADAPTED FROM CREATIVE COMPUTING ** 50 ' ** FOR THE OSBORNE 1 COMPUTER ** 60 ' ** USING MICROSOFT BASIC 5.0 ** 70 ' ** BY STEVE TURNER ** 80 ' ** 12/1/1981 ** 90 ' ****************************************** 100 PRINT CHR$(26) 110 PRINT STRING$(52,160) 120 PRINT 130 GOSUB 1590 140 PRINT TAB(18)"WORD SEARCH PUZZLE" 150 GOSUB 1600 160 PRINT STRING$(52,160) 170 PRINT:PRINT" THIS PROGRAM IS A WORD SEARCH PUZZLE GENERATOR" 180 PRINT"THE PROGRAM TAKES A SET OF WORDS, PURGES ALL NON-" 190 PRINT"ALPHABETIC CHARACTERS OUT OF THEM, AND INCORPORATES" 200 PRINT"THEM INTO A WORD SEARCH PUZZLE." 210 PRINT 220 PRINT" IN THE COURSE OF MAKING THE PUZZLE, THE COMPUTER" 230 PRINT"MAY FIND THAT IT CAN'T PUT A PARTICULAR WORD ANY-" 240 PRINT"WHERE, AND SO WILL ASK YOU IF IT SHOULD  START THE" 250 PRINT"WHOLE PUZZLE OVER.IF YOU DON'T WANT IT TO START OVER" 260 PRINT", ENTER 'NO', AND IT WILL THROW AWAY THAT PARTICULAR" 270 PRINT"WORD IF THIS PERSISTS, TRY EITHER GIVING LESS WORDS" 280 PRINT"OR BIGGER PUZZLE DIMENSIONS!" 290 PRINT:PRINT STRING$(52,160) 300 PRINT 310 CLEAR 3000 320 DEF FNA(Z)=INT(RND(1)*Z+1) 330 INPUT"HOW MANY COLUMNS DOES YOUR PRINTER HAVE";TW 340 WIDTH LPRINT(TW) 350 INPUT"DO YOU WANT A SOLUTION PRINTOUT";X$ 360 INPUT"WHAT IS THE WIDTH OF THE PUZZLE";W:MD=W 370 IF W*2<=TW THEN 390 380 PRINT"THAT WILL NOT FIT IN ";TW;" COLUMNS.":GOTO 360 390 IF W<1 THEN 360 400 INPUT"THE LENGTH OF THE PUZZLE WILL BE ";L:IF L>W THEN MD=L 410 IF L<1 THEN 400 420 PRINT " MAXIMUM NUMBER OF WORDS TO USE IN THE PUZZLE"; 430 INPUT M 440 IF M>=2 THEN 460 450 PRINT"SORRY; THERE MUST BE AT LEAST 2 WORDS.":GOTO 420 460 PRINT:LPRINT 470 DIM A$(L,W),W$(M) 480 DIM W(M,3),DXY(8,2),DD(28) 490 PRINT"NOW ENTER A HEADING THAT WILL BE PRINTED OVER" 500 PRINT"THE PUZZLE";" (";TW;" CHARACTERS MAXIMUM ! )" 510 INPUT XY$ 520 PRINT"OK. . . ENTER A WORD AT EACH QUESTION MARK." 530 PRINT"TO REDO THE PREVIOUS WORD, TYPE A HYPHEN (-)." 540 PRINT"WHEN YOU RUN OUT OF WORDS, TYPE A PERIOD (.)." 550 FOR I=1 TO M 560 INPUT T$:IF T$="-" THEN I=I-1:PRINT"REDO ";W$(I);". . .":GOTO 560 570 IF T$="." THEN M=I-1:GOTO 770 580 IF LEN(T$)=0 THEN PRINT "INPUT ERROR; REDO:":GOTO 560 590 J=1 600 TE$=MID$(T$,J,1):IF TE$>="a" AND TE$<="z" THEN 670 610 IF TE$<"A" OR TE$>"Z" THEN 630 620 T$=LEFT$(T$,J-1)+CHR$(ASC(MID$(T$,J,1))+32)+RIGHT$(T$,LEN(T$)-J):GOTO 670 630 IF TE$=T$ THEN T$="":GOTO 580 640 IF J=LEN(T$) THEN T$=LEFT$(T$,J-1):GOTO 680 650 IF J=1 THEN T$=RIGHT$(T$,LEN(T$)-1):J=J-1:GOTO 670 660 T$=LEFT$(T$,J-1)+RIGHT$(T$,LEN(T$)-J):J=J-1 670 J=J+1:IF J<=LEN(T$) THEN 600 680 PRINT" - ";T$;" - " 690 IF LEN(T$)<=MD THEN 720 700 PRINT"THAT'S TOO LONG I'M AFRAID."; 710 PRINT"TRY ANOTHER ONE:":GOTO 560 720 FOR IZ=1 TO I-1:IF W$(IZ)<>T$ THEN NEXT:GOTO 740 730 PRINT"YOU ENTERED THAT ONE ALREADY. TRY ANOTHER:":GOTO 560 740 W$(I)=T$ 750 NEXT I 760 PRINT"THAT'S IT . . . ";M;" WORDS." 770 PRINT"NOW LET ME THINK HOW TO DO THIS PUZZLE " 780 FOR I=1 TO M-1 790 FOR J=I+1 TO M 800 IF LEN(W$(I))< LEN(W$(J)) THEN HZ$=W$(I):W$(I)=W$(J):W$(J)=HZ$ 810 NEXT:NEXT 820 FOR I=1 TO 8:READ DXY(I,1),DXY(I,2):NEXT 830 FOR I=1 TO 28:READ DD(I):NEXT 840 DATA 0,1,1,1,1,0,1,-1,0,-1,-1,-1,-1,0,-1,1 850 DATA 2,4,6,8,2,4,6,8,2,4,6,8,2,4,6,8,2,4,6,8,2,4,6,8,1,3,5,7 860 FOR I=1 TO M 870 LN=LEN(W$(I)) 880 NT=0 890 SD=DD(FNA(28)) 900 SX=FNA(W):X1=SX+(LN-1)*DXY(SD,1):IF X1<1 OR X1>W THEN 890 910 SY=FNA(L):X1=SY+(LN-1)*DXY(SD,2):IF X1<1 OR X1>L THEN 890 920 NT=NT+1:IF NT<>W*L*2 THEN 970 930 PRINT"COULD NOT FIT '";W$(I);"' IN THE PUZZLE." 940 INPUT"DO YOU WANT ME TO START OVER";A$ 950 IF LEFT$(A$,1)="Y" OR LEFT$(A$,1)="y" THEN 860 960 W$(I)="":GOTO 1050 970 J=SY:K=SX 980 FOR P=1 TO LN 990 IF LEN(A$(J,K)) AND A$(J,K)<> MID$(W$(I),P,1) THEN 890 1000 J=J+DXY(SD,2):K=K+DXY(SD,1):NEXT P 1010 J=SY:K=SX 1020 FOR P=1 TO LN:A$(J,K)=MID$(W$(I),P,1) 1030 J=J+DXY(SD,2):K=K+DXY(SD,1):NEXT 1040 W(I,1)=SX:W(I,2)=SY:W(I,3)=SD 1050 NEXT I 1060 FOR I=1 TO L 1070 FOR J=1 TO W 1080 IF A$(I,J)="" THEN A$(I,J)=CHR$(FNA(26)+96) 1090 NEXT:NEXT 1100 FOR I=1 TO M-1:FOR J=I TO M 1110 IF W$(I)<=W$(J) THEN 1140 1120 HZ$=W$(I):W$(I)=W$(J):W$(J)=HZ$ 1130 FOR K=1 TO 3:HZ=W(I,K):W(I,K)=W(J,K):W(J,K)=HZ:NEXT K 1140 NEXT J:NEXT I 1150 INPUT"HOW MANY COPIES OF THIS PUZZLE DO YOU WANT";N 1160 PRINT"FOR EACH COPY, HIT RETURN TO BEGIN PRINTING..." 1170 FOR C=1 TO N:GOSUB 1180:NEXT:GOTO 1450 1180 INPUT A$:PRINT 1190 LPRINT:LPRINT 1200 T=(TW-2*W)/2:PRINT 1210 LPRINT 1220 PRINT 1230 LPRINT 1240 PRINT TAB(5);XY$ 1250 LPRINT TAB((TW-LEN(XY$))/2);XY$ 1260 PRINT 1270 LPRINT:LPRINT 1280 FOR J=1 TO L: PRINT ; 1290 LPRINT TAB(T); 1300 FOR K=1 TO W:IF A$(J,K)="." THEN PRINT". ";:LPRINT ". ";:GOTO 1330 1310 PRINT CHR$(ASC(A$(J,K))-32);" "; 1320 LPRINT CHR$(ASC(A$(J,K))-32);" "; 1330 NEXT:PRINT:LPRINT:NEXT 1340 PRINT 1350 LPRINT:LPRINT 1360 PRINT TAB(2)"FIND THESE HIDDEN WORDS IN THE ABOVE PUZZLE" 1370 LPRINT TAB(15)"FIND THESE HIDDEN WORDS IN THE ABOVE PUZZLE:" 1380 LPRINT 1390 FOR J=1 TO M:IF LEN(W$(J))=0 THEN 1430 1400 IF POS(0) + LEN(W$(J)) > TW-2 THEN LPRINT:PRINT 1410 PRINT W$(J), 1420 LPRINT W$(J), 1430 NEXT:LPRINT:LPRINT:LPRINT:LPRINT 1440 RETURN 1450 IF LEFT$(X$,1)="Y" OR LEFT$(X$,1)="y" THEN 1470 1460 END 1470 REM 1480 FOR I=1 TO L:FOR J=1 TO W:A$(I,J)=".":NEXT J:NEXT I 1490 FOR I=1 TO M 1500 LN=LEN(W$(I)):J=W(I,2):K=W(I,1) 1510 FOR P= 1 TO LN 1520 A$(J,K)=MID$(W$(I),P,1) 1530 J=J+DXY(W(I,3),2):K=K+DXY(W(I,3),1):NEXT P 1540 NEXT I 1550 XY$="ANSWER KEY:" 1560 GOSUB 1180 1570 PRINT:PRINT 1580 END 1590 PRINT CHR$(27);")";:RETURN 1600 PRINT CHR$(27);"(";:RETURN ="ANSWER KEY:" 1560 GOSUB 1180 1570 PRINT:PRINT 1580 END 1590 PRINT CHR$(27);")";:RETURN 1600 PRINT CHR$(27);"( PRINT CHR$(ASC(A$(J,K))-32);" "; 1320 LPRINT CHR$(ASC(A$(J,K))-32);" "; 1330 NEXT:PRINT:LPRINT:NEXT 1340 PRINT 1350 LPRINT: 10 ' WIPE$ homes the cursor and clears the screen 20 ' CUR$ (followed by string X and Y values) puts the 30 ' cursor at X,Y. NOLINE$ erases from the cursor to 40 ' the end of the line. GREY$ begins half-intensity 50 ' display; WHT$ restores full intensity. LEAF$ and 60 ' TRUNK$ each hold a whole line's worth of graphic 70 ' herbiage; DIRT$ holds a line's worth of graphic 80 ''dirt'(maybe its really grass?) 90 ' 100 WIPE$=CHR$(26):CUR$=CHR$(27)+"=":LEAF$="":TRUNK$="" 110 NOLINE$=CHR$(&H1B)+CHR$(&H54):GREY$=CHR$(27)+")" 120 WHT$=CHR$(27)+"(" 130 FOR I=1 TO 25:LEAF$=LEAF$+CHR$(141)+" ":NEXT I 140 FOR I=1 TO 25:TRUNK$=TRUNK$+CHR$(139)+" ":NEXT I 150 FOR I=1 TO 50:DIRT$=DIRT$+CHR$(150):NEXT I 160 WALL$=" "+CHR$(150)+CHR$(150)+CHR$(150)+CHR$(150) 170 FEN$=" "+CHR$(128)+CHR$(128)+CHR$(128)+CHR$(128) 180 ROOF$=CHR$(138)+CHR$(136)+CHR$(138)+CHR$(136) 190 PRINT WIPE$ 200 PRINT:PRINT:PRINT TAB(25)"DUCK" 210 PRINT:PRINT:PRINT 220 INPUT" Do you want instructions (Y/N)? ",I$ 230 IF I$="N" OR I$="n" GOTO 440 240 PRINT WIPE$; 250 PRINT"The object of the game is to make the most points" 260 PRINT"shooting ducks without getting divebombed or blown" 270 PRINT"up. Shot ducks score from 10 to 50 points, depen-" 280 PRINT"ding on the angle of the shot. A duck shot directly" 290 PRINT"overhead (key 5) only scores 10 points, but ducks" 300 PRINT"shot on the steepest angles (keys 1 or 9) score 50" 310 PRINT"points. Only four consecutive shots from the same" 320 PRINT"angle are allowed. If you miss, the duck may bomb" 330 PRINT"you or your protecting trees. If more than five" 340 PRINT"trees are lost from either side of your blind," 350 PRINT"you are liable to be divebombed from that side. You" 360 PRINT"can survive if your ammunition is not hit. The duck" 370 PRINT"can also hit your ammunition with a bomb from di-" 380 PRINT"rectly overhead." 385 PRINT 390 PRINT"Five bonus points are scored for each surviving" 400 PRINT"tree as long as at least one duck was hit. 20" 410 PRINT"points are scored for trees that survive through" 420 PRINT"an entire game, but no bonus points are scored if" 430 PRINT"no ducks were hit." 440 PRINT:PRINT TAB(16);"Press any key to begin." 450 A$=INKEY$:IF A$<>"" THEN GOTO 490 460 ROLL=ROLL+1 470 IF ROLL > 32767 THEN ROLL = -32768! 480 GOTO 450 490 RANDOMIZE ROLL 500 DIM L(22) 510 FOR Y= 1 TO 22:READ L(Y):NEXT Y 520 PRINT WIPE$ 530 M=0:N=0:Q=11:Z=11:V=0:P=0:H=0:S=0:T=0:A$="":C2=0 540 D=INT(RND(1)*4) 550 PRINT CUR$;CHR$(55);" "; 560 PRINT GREY$;LEAF$:PRINT TRUNK$:PRINT DIRT$:PRINT DIRT$ 570 PRINT WHT$; 580 PRINT CUR$;CHR$(52);CHR$(54);WALL$; 590 PRINT CUR$;CHR$(51);CHR$(54);FEN$; 600 PRINT CUR$;CHR$(50);CHR$(55);ROOF$; 610 PRINT CUR$;" ";CHR$(33);"FIRE AT ANGLE 1 TO 9" 620 X=0 630 FOR Y= 0 TO 52 STEP 1 640 PRINT CUR$;CHR$(33+X);CHR$(32+Y);" "; 650 PRINT CHR$(152);CHR$(136) 660 IF X<18 GOTO 690 670 IF X=18 AND Y=23 THEN X=0:Y=0:GOTO 630 680 IF X=19 AND Y = 23 GOTO 1420 690 A$=INKEY$:IF VAL(A$)=0 GOTO 870 700 IF VAL(A$)=H THEN C2=C2+1 710 IF VAL(A$)<>H AND VAL(A$)>0 THEN C2=0 720 IF C2>3 GOTO 870 730 H=VAL(A$) 740 V=V+1 750 PRINT CUR$;" ";100-V;"Bullets remaining " 760 A=6*VAL(A$)-30 770 S=X:T=Y 780 FOR X=0 TO -16 STEP-1 790 PRINT CUR$;CHR$(49+X);CHR$(57+INT(A*ABS(X)/10));"*" 800 PRINT CUR$;CHR$(49+X);CHR$(57+INT(A*ABS(X)/10));" " 810 IF S<>X+16 GOTO 840 820 IF T=INT(22+A*ABS(X)/10) OR T=INT(23+A*ABS(X)/10) THEN GOTO 1180 830 IF V= 100 GOTO 1430 840 NEXT X 850 GOSUB 1250 860 X=S:Y=T 870 NEXT Y 880 PRINT CUR$;CHR$(33+X);CHR$(86);" "; 890 X=INT(RND(1)*(15+N)) 900 FOR Y=52 TO 0 STEP-1 910 PRINT CUR$;CHR$(33+X);CHR$(32+Y);CHR$(138);CHR$(152); 920 PRINT " " 930 IF X<18 GOTO 960 940 IF X=18 AND Y=23 THEN X=0:Y=0:GOTO 630 950 IF X=19 AND Y=23 GOTO 1420 960 A$=INKEY$:IF VAL(A$)=0 GOTO 1140 970 IF VAL(A$)=H THEN C2=C2+1 980 IF VAL(A$)<>H AND VAL(A$)>0 THEN C2=0 990 IF C2>3 GOTO 1140 1000 H=VAL(A$) 1010 V=V+1 1020 PRINT CUR$;" ";100-V;"Bullets remaining " 1030 A=6*VAL(A$)-30 1040 S=X:T=Y 1050 FOR X=0 TO -16 STEP-1  1060 PRINT CUR$;CHR$(49+X);CHR$(57+INT(A*ABS(X)/10));"*" 1070 PRINT CUR$;CHR$(49+X);CHR$(57+INT(A*ABS(X)/10));" " 1080 IF S<>X+16 GOTO 1110 1090 IF T= INT(25+A*ABS(X)/10) OR T=INT(24+A*ABS(X)/10) THEN GOTO 1180 1100 IF V=100 GOTO 1430 1110 NEXT X 1120 GOSUB 1250 1130 X=S:Y=T 1140 NEXT Y 1150 PRINT CUR$;CHR$(X+33);" "; 1160 X=INT(RND(1)*(15+C)) 1170 GOTO 630 1180 PRINT CHR$(7); 1190 P=P+ABS(VAL(A$)-5)*10+10 1200 PRINT CUR$;" ";CHR$(69);P;"Points"; 1210 IF V=100 GOTO 1430 1220 PRINT CUR$;CHR$(33+S);" ";NOLINE$; 1230 X=0:Y=0 1240 GOTO 630 1250 W=INT(RND(1)*3) 1260 IF W=>1 THEN RETURN 1270 FOR M=0 TO 19-S STEP 1 1280 FOR E= 1 TO 20:NEXT E 1290 PRINT CUR$;CHR$(34+M+S);CHR$(34+T);CHR$(141) 1300 PRINT CUR$;CHR$(34+M+S);CHR$(34+T);" " 1310 IF T=D+21 AND M=19-S THEN GOSUB 1420 1320 NEXT M 1330 FOR B= 1 TO 22 1340 IF L(B)= T+2 THEN L(B)=-1:GOTO 1370 1350 NEXT B 1360 GOTO 1410 1370 IF T+2<21 THEN Q=Q-1 1380 IF T+2>27 THEN Z=Z-1 1390 IF Q<7 THEN C=5:PRINT CUR$;" ";CHR$(59);"DUCK ! "  1400 IF Z<7 THEN N=5:PRINT CUR$;" ";CHR$(59);"DUCK !" 1410 RETURN 1420 GOSUB 1590 1430 FOR I=32 TO 49:PRINT CUR$;CHR$(I);" ";NOLINE$:NEXT I 1440 PRINT CHR$(&H1E); 1450 PRINT TAB(23);"GAME OVER" 1460 PRINT:PRINT:PRINT: 1470 IF P=0 THEN 1480 ELSE 1500 1480 PRINT TAB(10)"YOU BOMBED OUT -- NO POINTS SCORED" 1490 GOTO 1550 1500 IF V=100 THEN BONUS=20 ELSE BONUS=5 1510 PRINT TAB(10)" You had";Q+Z;"trees remaining worth" 1520 PRINT:PRINT TAB(17);(Q+Z)*BONUS; "bonus points." 1530 PRINT:PRINT TAB(13);" Your score was";P+(Q+Z)*BONUS;"points." 1540 DATA 0,2,4,6,8,10,12,14,16,18,20,28,30,32,34,36,38,40,42,44,46,48 1550 FOR I=1 TO 4:PRINT:NEXT I 1560 PRINT TAB(12);:INPUT" Try it again (Y/N)? ",AGAIN$ 1570 IF AGAIN$="Y" THEN A$=INKEY$:RESTORE:GOTO 510 1580 END 1590 FOR G=0 TO 21 1600 PRINT CUR$;CHR$(53);CHR$(54+G);" " 1610 PRINT CUR$;CHR$(53);CHR$(58-G);" " 1620 PRINT CUR$;CHR$(54);CHR$(54+G/2);" " 1630 PRINT CUR$;CHR$(54);CHR$(58-G/2);" " 1640 PRINT CUR$;CHR$(51-G);CHR$(55);" " 1650 PRINT CUR$;CHR$(50-G);CHR$(55);ROOF$ 1660 PRINT CUR$;CHR$(52-G);CHR$(56-G);" " 1670 PRINT CUR$;CHR$(51-G);CHR$(55-G);CHR$(128) 1680 PRINT CUR$;CHR$(52-G);CHR$(56+G);" " 1690 PRINT CUR$;CHR$(51-G);CHR$(57+G);CHR$(128);CHR$(128) 1700 PRINT CUR$;CHR$(53-G);CHR$(56+G/2);" " 1710 PRINT CUR$;CHR$(52-G);CHR$(57+G/2);CHR$(150) 1720 PRINT CUR$;CHR$(51);CHR$(58-G);" " 1730 PRINT CUR$;CHR$(52);CHR$(55-G);CHR$(150);" " 1740 PRINT CUR$;CHR$(51);CHR$(51+G);" " 1750 PRINT CUR$;CHR$(52);CHR$(57+G);" ";CHR$(159) 1760 NEXT G 1770 RETURN 50);" " 1740 PRINT CUR$;CHR$(51);CHR$(51+G);" " 1750 PRINT CUR$;CHR$(52);CHR$(57+G);" ";CHR$(159) 1760 4:PRINT:NEXT I 1560 PRINT TAB(12);:INPUT" Try it again (Y/N)? ",AGAIN$ 1570 IF AGAIN$="Y" THEN A$=INKEY$:RESTORE:GOTO 510 1580 END 1590 FOR G=0 TO 21 1600 PRINT CUR$;CHR$(53);CHR$(54+G);" " 1610 PRINT CUR$;CHR$(53);CHR$(58-G);" " 1620 PRINT CUR$;CHR$(54);CHR$(54+G/2);" " 1630 PRINT CUR$;CHR$(54);CHR$(58-G/2);" " 1640 PRINT CUR$;CHR$(51-G);CHR$(55);" " 1650 PRINT CDUCK, contributed by Tim Fox, is a graphics shooting gallery game like that published in the Portable Companion, April/May 1983, p. 42, by Peter H. Kelly. SEARCH BASSEARCH DOCBREAKOUTBAS !CROSSPUZBAS/"#$%&'DUCK BAS5()*+,-.DUCK $$$DUCK BAS5>?@ABCDDUCK DOCEE-SKETCHBASFGHETCH BASIJKLESCAPE BAS&MNOPQGUNNER-2BASRSTUGUNNER-2DOCVHANOI BAS!WXYZ[KONG BASp\]^_`abcdefghiKONG DOCjGRAPH PRN klLIFE BASmnoLIFE DOCpqrLIFE1 PATsLIFE2 PATtLIFE3 PATuLIFE4 PATvLIFEASC COMgwxyz{|}~10 'ETCH (ETCH-A-SKETCH) WRITTEN IN MBASIC AS CURSOR CONTROL EXERCISE 20 'BY DAVE BLAIR 14 JUNE 1982 21 ' 22 ' 30 'C DROPS YOU BACK TO MBASIC 40 ' STARTS PROGRAM OVER 41 ' 42 ' MOST KEYS GIVES A GRAPHIC 43 ' 50 'ALL COMMANDS ARE VIA THE NUMERIC KEY PAD 51 '--1-- MOVES CURSOR UP AND TO THE LEFT 52 '--2-- MOVES CURSOR UP 53 '--3-- MOVES CURSOR UP AND TO THE RIGHT 54 '--4-- MOVES CURSOR TO THE LEFT 55 '--5-- IS A SWITCH WHICH TURNS TRACER OFF/ON/OFF/ON 56 '--6-- MOVES CURSOR TO RIGHT 57 '--7-- MOVES CURSOR DOWN AND TO THE LEFT 58 '--8-- MOVES CURSOR DOWN 59 '--9-- MOVES CURSOR DOWN AND TO THE RIGHT 60 '--0-- ERASES ANY CHARACTER AT CURSOR POSITION 70 ' 80 '--x-- ANY OTHER CHARACTER BECOMES TRACER 90 ' 91 'PUT MBASIC IN A 92 'PUT THEIS DISC IN B 93 'Type MBASIC B:E-SKETCH and try it out 94 ' 100 PRINT CHR$(26) 'CLEAR SCREEN 110 B$ = "X" 'SET TRACER CHARACTER 120 IPEN% = -1 'TURN OFF TRACER 140 X% = 58 'SET INITIAL X 150 Y% = 44 'SET INITIAL Y 160 PRINT CHR$(27);"=";CHR$(Y%);CHR$(X%); 'POSITION CURSOR 200 A$ = INPUT$(1) 'INPUT A CONTROL CHARACTER 201 IF A$ = CHR$(27) THEN GOTO 100 'START OVER IF 208 IF A$ < "0" THEN B$ = A$ 'IF NOT NUMERIC, SET FOR TRACER 209 IF A$ > "9" THEN B$ = A$ 210 IF A$ = "1" THEN X% = X% - 1 211 IF A$ = "1" THEN Y% = Y% + 1 220 IF A$ = "2" THEN Y% = Y% + 1 230 IF A$ = "3" THEN X% = X% + 1 231 IF A$ = "3" THEN Y% = Y% + 1 240 IF A$ = "4" THEN X% = X% - 1 250 IF A$ = "5" THEN IPEN% = -IPEN% 'REVERSE TRACER SWITCH 260 IF A$ = "6" THEN X% = X% + 1 270 IF A$ = "7" THEN X% = X% - 1 271 IF A$ = "7" THEN Y% = Y% - 1 280 IF A$ = "8" THEN Y% = Y% - 1 290 IF A$ = "9" THEN X% = X% + 1 291 IF A$ = "9" THEN Y% = Y% - 1 300 IF X% > 81 THEN X% = 33 310 IF X% < 33 THEN X% = 81 320 IF Y% < 33 THEN Y% = 54 'KEEP CURSOR ON  SCREEN 330 IF Y% > 54 THEN Y% = 33 390 PRINT 'KEEPS LINE COUNTER CLEAN 400 IF A$ <> "0" THEN GOTO 500 'IF --0-- BLANK OUT CURSOR POSITION 410 PRINT CHR$(27);"=";CHR$(Y%);CHR$(X%);" "; 420 PRINT CHR$(27);"=";CHR$(Y%);CHR$(X%); 430 GOTO 200 500 PRINT CHR$(27);"=";CHR$(Y%);CHR$(X%); 'POSITION CURSOR 510 IF IPEN% = -1 THEN GOTO 200 'IF SWITCH OFF, GO DO NEXT COMMAND 520 PRINT CHR$(27);"g"; 'SET FOR GRAPHICS 530 PRINT B$; 'IF SWITCH ON, PRINT TRACER 540 PRINT CHR$(27);"G"; 'RESET FOR NON-GRAPHICS 550 PRINT CHR$(27);"=";CHR$(Y%);CHR$(X%); 'POSITION CURSOR 599 GOTO 200 'GET NEXT COMMAND  1 271 IF A$ = "7" THEN Y% = Y% - 1 280 IF A$ = "8" THEN Y% = Y% - 1 290 IF A$ = "9" THEN X% = X% + 1 291 IF A$ = "9" THEN Y% = Y% - 1 300 IF X% > 81 THEN X% = 33 310 IF X% < 33 THEN X% = 81 320 IF Y% < 33 THEN Y% = 54 'KEEP CURSOR ON 10 DIM A(20,50),B(2,6) 20 NL$=CHR$(&HA): CR$=CHR$(&HD) 30 A8=20:A9=50:SPEED=10:N2=10 40 PRINT CHR$(&H1A): RANDOMIZE:PRINT CHR$(&H1A) 50 PRINT 60 PRINT 70 PRINT "YOU ARE THE ('*'). THE ATTACKERS ARE THE ('$')." 80 PRINT "THE MINES ARE THE ('X'). THE TANK IS ('&')." 90 PRINT 100 PRINT"THE TANK CAN HIT A MINE WITHOUT BEING DAMAGED" 110 PRINT"THE TANK CAN DESTROY YOU OR THE ATTACKERS" 120 PRINT"THE ATTACKERS WILL CHASE YOU SO MANUVER YOURSELF" 130 PRINT" SO THAT THE ATTACKERS WILL RUN INTO MINES " 140 PRINT"SCORE IS THE TIME YOU REMAIN ON THE BOARD" 150 PRINT"NO POINTS ARE AWARDED FOR KILLING THE ATTACKERS" 160 PRINT 170 POKE -4096+14+(128*3),&HD 180 POKE -4096+43+(128*3),&H0 190 POKE -4096+20+(128*4),&H7F 200 POKE -4096+39+(128*4),&HC 210 PRINT "MOVE BY TEN KEY PAD USED AS A JOY STICK: " 220 PRINT:PRINT "7 UP/LEFT 8 UP 9 UP/RIGHT" 230 PRINT "4 LEFT 5 JUMP 6 RIGHT" 240 PRINT "1 DOWN/LEFT 2 DOWN 3 DOWN/RIGHT" 250 PRINT 260 PRINT "JUMP (5) WILL PUT YOU ANYWHERE (EVEN ON A MINE)." 270 PRINT "NO MOVE WILL LEAVE YOU WHERE YOU ARE." 280 PRINT "YOU HAVE ONLY ";N2;" CHANCES TO USE JUMP (5)." 290 PRINT:PRINT "MAKE SURE WIDTH IS LARGER THAN 64":PRINT "OR GAME WILL NOT PRINT CORRECTLY":PRINT 300 INPUT "HIT ENTER TO START GAME";ANS$ 310 PRINT CHR$(&H1A):JJ=0:N2=10 320 FOR U=0 TO ((2*A8)+2):PRINT CHR$(&HA):NEXT U 330 PRINT CHR$(&HA);:PRINT CHR$(&HB);:PRINT CHR$(&HB); 340 FOR B=1 TO A8:FOR C=1 TO A9:A(B,C)=20:X=INT(A9*RND) 350 IF X<>5 THEN 360 ELSE A(B,C)=5:POKE -4096+C+(128*B),&H7F 360 NEXT C:NEXT B:N3=0 370 FOR D =1 TO A9:A(1,D)=5:POKE -4096+D+(128*1),&H7F:A(A8,D)=5:POKE -4096+D+(128*A8),&H7F:NEXT D 380 FOR D = 1 TO A8:A(D,1)=5:POKE -4096+1+(128*D),&H7F:A(D,A9)=5:POKE -4096+A9+(128*D),&H7F:NEXT D 390 GOTO 420 400 H=INT(A8*RND)+1:I=INT(A9*RND)+1 410 IF A(H,I)<>20 THEN 400 ELSE RETURN 420 FOR D=1 TO 7:GOSUB 400 430 A(H,I)=15:POKE -4096+I+(128*H),&H0:IF D<>7 THEN 450 440 A(H,I)=10:POKE -4096+I+(128*H),&HD:J=H:K=I:GOTO 470 450 IF D<>1 THEN 460 ELSE A(H,I)=25:POKE -4096+I+(128*H),&HC 460 B(1,D)=H:B(2,D)=I 470 NEXT D 480 PRINT " ";CHR$(&HD);"ESCAPE!";CHR$(&HD); 490 III = 0:Y=0:JJ=JJ+1:PRINT TAB(38);JJ;"SCORE/TIME";CHR$(&HD); 500 AAA$="" 510 AAA$=INKEY$ 520 III=III+1 530 IF(AAA$="")AND(III<>SPEED) THEN 500 ELSE PRINT CHR$(&HD); :PRINT " ";:PRINT CHR$(&HD); 540 IF AAA$="1" THEN Y=6 550 IF AAA$="2" THEN Y=7 560 IF AAA$="3" THEN Y=8 570 IF AAA$="4" THEN Y=5 580 IF AAA$="6" THEN Y=1 590 IF AAA$="7" THEN Y=4 600 IF AAA$="8" THEN Y=3 610 IF AAA$="9" THEN Y=2 620 IF AAA$="5" THEN Y=9 630 IF Y=0 THEN PRINT "NO MOVE";:PRINT CHR$(&HD);:GOTO 750 640 V=J:W=K:IF Y<9 THEN 660 ELSE IF N2<>0 THEN 710 650 PRINT "ILLEGAL";:PRINT CHR$(&HD);:GOTO 480 660 IF Y <> 1 THEN 670 ELSE J=0: GOTO 680 670 J=SGN(Y-5) 680 IF Y>3 THEN 700 ELSE IF Y=3 THEN 690 ELSE K=1: GOTO 740 690 K=0:GOTO 740 700 K=SGN(Y-7):GOTO 740 710 GOSUB 400 720 A(J,K)=20:POKE -4096+K+(128*J),&H20 730 J=H:K=I:N2=N2-1:GOTO 750 740 K=K+W:J=J+V 750 IF A(J,K)=5 THEN 1110 ELSE A(V,W)=20:POKE -4096+W+(128*V),&H20 760 A(J,K)=10:POKE -4096+K+(128*J),&HD:GOTO 1070 770 IF X<>99 THEN 780 ELSE RETURN 780 V=X:M=Y:X=SGN(J-X):Y=SGN(K-Y):X=X+V:Y=Y+M 790 IF A(X,Y)=10 THEN 1000 ELSE IF A(X,Y)=20 THEN 930 800 IF A(V,M)=25 THEN 890 810 IF A(X,Y)<>15 THEN 850 ELSE GOSUB 400 820 X=H:Y=M 830 PRINT "TWO ATTACKERS HAVE COLLIDED."; :PRINT CHR$(&HD); 840 A(V,M)=20:POKE -4096+M+(128*V),&H20:A(X,Y)=15:POKE -4096+Y+(128*X),&H0:RETURN 850 A(V,M)=20:POKE -4096+M+(128*V),&H20:IF A(X,Y)=25 THEN 860 ELSE A(X,Y)=20:POKE -4096+Y+(128*X),&H20 860 GOSUB 880 870 X=99:RETURN 880 PRINT "KILLED ONE";:PRINT CHR$(&HD);:N3=N3+1:RETURN 890 IF A(X,Y)<>15 THEN 930 ELSE M9=2 900 IF B(1,M9)<>X THEN 910 ELSE IF B(2,M9)=Y THEN 920 910 M9=M9+1:GOTO 900 920 B(1,M9)=99:GOSUB 880 930 A(X,Y)=A(V,M):A(V,M)=20:POKE -4096+M+(128*V),&H20 940 IF A(X,Y)=5 THEN POKE -4096+Y+(128*X),&H7F 950 IF A(X,Y)=10 THEN POKE -4096+Y+(128*X),&HD 960 IF A(X,Y)=15 THEN POKE -4096+Y+(128*X),&H0 970 IF A(X,Y)=20 THEN POKE -4096+Y+(128*X),&H20 980 IF A(X,Y)=25 THEN POKE -4096+Y+(128*X),&HC 990 RETURN 1000 PRINT "THE ENEMY FOUND YOU -- YOU'RE DEAD" 1010 IF A(X,Y)=5 THEN POKE -4096+Y+(128*X),&H7F 1020 IF A(X,Y)=10 THEN POKE -4096+Y+(128*X),&HD 1030 IF A(X,Y)=15 THEN POKE -4096+Y+(128*X),&H0 1040 IF A(X,Y)=20 THEN POKE -4096+Y+(128*X),&H20 1050 IF A(X,Y)=25 THEN POKE -4096+Y+(128*X),&HC 1060 GOTO 1120 1070 FOR D=1 TO 6:X=B(1,D):Y=B(2,D):GOSUB 770 1080 B(1,D)=X:B(2,D)=Y:NEXT D 1090 IF N3<>5 THEN 480 1100 PRINT "ALL OPPONENTS DESTROYED -- YOU WIN":GOTO 1120 1110 POKE -4096+K+(128*J),&HD:PRINT "YOU TOUCHED A MINE -- YOU ARE DEAD" 1120 INPUT "TRY AGAIN ";ANS$:IF (ANS$<>"0")AND(ANS$<>"N") THEN GOTO 310 ELSE PRINT CHR$(&H1A):END  INPUT 0 920 B(1,M9)=99:GOSUB 880 930 A(X,Y)=A(V,M):A(V,M)=20:POKE -4096+M+(128*V),&H20 940 IF A(X,Y)=5 THEN POKE -4096+Y+(128*X),&H7F 950 IF A(X,Y)=10 THEN POKE -4096+Y+(128*X),&HD 960 IF A(X,Y)=15 THEN POKE -4096+Y+(128*X),&H0 970 IF A(X,Y)=20 THEN POKE -1 'GUNNER-2: MODIFICATION OF CREATIVE COMPUTING 2 'VERSION, INCORPORATING GRAPHICS, AMONG OTHER 3 'CHANGES. 4 ' ERIC KNUDSON 5 ' 946 WASHINGTON ROAD 6 ' GROSSE POINTE, MI 48230 10 PRINT CHR$(26) 12 PRINT" GGG U U N N N N EEEEE RRRR" 14 PRINT" G G U U NN N NN N E R R" 16 PRINT" G U U NN N NN N E R R" 18 PRINT" G GG U U N N N N N N EEEE RRRR 20 PRINT" G G U U N NN N NN E R R" 22 PRINT" G G U U N NN N NN E R R" 24 PRINT" GGG UUU N N N N EEEEE R R" 30 PRINT 40 DIM X(100),Y(100) 50 DIM A$(80) 60 DIM YNOW(128) 70 DEFSNG P 100 INPUT "NAME, PLEASE";Z$ 130 PRINT Z$" IS THE OFFICER-IN-CHARGE," 135 PRINT"GIVING ORDERS TO A GUN CREW," 140 PRINT"TELLING THEM THE DEGREES OF ELEVATION (S)HE ESTIMATES" 150 PRINT "WILL PLACE A PROJECTILE ON TARGET." 155 PRINT"A HIT WITH 3% OF THE DISTANCE" 160 PRINT "TO THE TARGET WILL DESTROY IT.":PRINT 165 INPUT"INPUT GUN CALIBER";C:RANDOMIZE C 170 V=INT(1000*RND(1)+200) 171 G=32.2:ST=0 172 R=V*V/G 175 RR=.03*R 176 PRINT CHR$(26) 180 PRINT "MAXIMUM RANGE OF YOUR GUN IS";R;"YARDS." 185 ZZ=0 190 PRINT 195 SS=0 200 T=INT(R*(.1+.8*RND(1))) 210 S=0 220 GOTO 370 230 PRINT "MINIMUM ELEVATION IS 1 DEGREE." 240 GOTO 390 250 PRINT "MAXIMUM ELEVATION IS 89 DEGREES." 260 GOTO 390 270 PRINT"OVER TARGET BY";ABS(E);"YARDS, AT";ATEMP;"ELEVATION." 280 GOTO 390 290 PRINT"SHORT OF TARGET BY";ABS(E);"YARDS, AT";ATEMP;"ELEVATION." 300 GOTO 390 320 PRINT "***TARGET DESTROYED***";S;"ROUNDS OF AMMUNITION EXPENDED" 325 ST=ST+S 330 IF ZZ=4 THEN 490 340 ZZ=ZZ+1 345 PRINT 350 PRINT "THE FORWARD OBSERVER HAS SIGHTED MORE ENEMY ACTIVITY..." 360 GOTO 200 370 PRINT " DISTANCE TO THE TARGET IS";T;"YARDS." 380 PRINT 390 PRINT 400 PRINT"RANGE =";R:PRINT"TARGET =";T 410 INPUT"ELEVATION";A 420 IF A>89 THEN 250 430 IF A<1 THEN 230 433 ATEMP=A 435 A=A*3.14159265#/180 440 S=S+1 442 IF S<6 THEN 450 444 PRINT:PRINT "BOOM!!!! YOU HAVE JUST BEEN DESTROYED"; 446 PRINT" BY THE ENEMY.":PRINT:PRINT:PRINT:GOTO 500 450 IP=V*V*SIN(2*A)/G:X=T-IP:E=INT(X) 455 GOSUB 600 460 IF ABS(E)RR THEN 290 480 GOTO 270 490 PRINT:PRINT:PRINT"TOTAL ROUNDS EXPENDED WERE:";ST 491 IF ST>18 THEN 499 492 IF ST>11 THEN 498 493 IF ST>8 THEN 497 494 PRINT"DID YOU CHEAT?":GOTO 500 497 PRINT"FANTASTIC SHOOTING, "Z$"!!! YOU ARE AWARDED A MEDAL.":GOTO 500 498 PRINT"NICE SHOOTING, "Z$".":GOTO 500 499 PRINT"BETTER GO BACK TO FORT SILL FOR MORE TRAINING, "Z$"." 500 PRINT:INPUT"TRY AGAIN (Y/N)";OK$ 510 IF OK$="Y" THEN 170 520 PRINT"OK -- RETURN TO BASE CAMP." 530 END 600 SA=SIN(A):S2A=SIN(2*A) 610 CA=COS(A) 620 TOTIME=2*V*SA/G 630 TODIST=V*V*S2A/G 640 SUX=CINT(52*TODIST/T) 645 IF SUX>128 THEN PRINT"YOU MUST BE KIDDING":RETURN 650 TINCR=TOTIME/SUX 660 FOR I=1 TO SUX 670 TNOW=I*TINCR 680 YPOS=TNOW*(V*SA-G*TNOW/2) 690 YNOW(I)=CINT(24*YPOS/T) 700 IF YPOS>T THEN YNOW(I)=999 710 NEXT I 720 PRINT CHR$(26) 730 FOR I=1 TO 23 740 P=64384!-128*I 750 POKE P,124 760 NEXT I 770 POKE 64384!,67 780 FOR I=1 TO 52 790 P=64384!+I 800 POKE P,95 810 NEXT I 820 POKE 64435!,84 830 FOR I=1 TO SUX 840 IF YNOW(I)=999 THEN 870 850 P=64384!+I-128*YNOW(I) 860 POKE P,42 870 NEXT I 880 RETURN 999 END  830 FOR I=1 TO SUX 840 IF YNOW(I)=999 THEN 870 850 P=64384!+I-128*YNOW(I) 860 POKE P,RINT"FANTASTIC SHOOTING, "Z$"!!! YOU ARE AWARDED A MEDAL.":GOTO 500 498 PRINT"NICE SHOOTING, "Z$".":GOTO 500 499 PRINT"BETTER GO BACK TO FORT SILL FOR MORE TRAINING, "Z$"." 500 PRINT:INPUT"TRY AGAIN (Y/N)";OK$ 510 IF OK$="Y" THEN 170 520 PRINT"OK -- RETURN TO BASE CAMP." 530 END 600 SA=SIN(A):S2A=SIN(2*A) 610 CA=COS(A) 620 TOTIME=2*V*SA/G 630 TODIST=V*V*S2A/G 640 SUX=CINT(52*TODIST/T) 645 IF SUX>128 THEN PRINT"YOU MUST BE KIDDING":RETURN 650 TINCR=TOTIME/SUX 660 FOR I=1 TO SUX 670 TNOW=I*TINCR 680 YPOS=TNOW*(V*SA-G*TNOW/2) 690 YNOW(I)=CINT(24*YPOS/T) 700 IF YPOS>T THEN YNOW(I)=999 710 NEXT I 720 PRINT CHR$(26) 7GUNNER-2 is a game involving the firing of a howitzer at a target. BUBBLE DOC DESIGN BAS#DESIGN DOC ETCH BASSEARCH BASSEARCH DOCBREAKOUTBAS !CROSSPUZBAS/"#$%&'DUCK BAS5()*+,-.DUCK DOC/E-SKETCHBAS012ESCAPE BAS&34567GUNNER-2BAS89:;GUNNER-2$$$ESCAPE BAS&MNOPQGUNNER-2BASRSTUGUNNER-2DOCVHANOI BAS!WXYZ[KONG BASp\]^_`abcdefghiKONG DOCjGRAPH PRN klLIFE BASmnoLIFE DOCpqrLIFE1 PATsLIFE2 PATtLIFE3 PATuLIFE4 PATvLIFEASC COMgwxyz{|}~1000 REM tower of hanoi puzzle 1010 REM copyright 1981 Michael M Rubenstein 1020 REM 1030 DEFINT A-Z 1040 WIDTH 255 1050 REM 1060 REM elements in the problem array are 1070 REM interpreted as asking for the solution of 1080 REM move prob(i,0) disks from peg prob(i,1) 1090 REM to peg prob(i,2) using peg(i,3) 1100 DIM PROB(64,3),PEGS(3,7), PEGCOL(3) 1110 REM 1120 GOSUB 2120: GOSUB 2150: REM print title 1130 GOSUB 2210: REM ask how many disks 1140 IF DISKS=0 THEN WIDTH 72: END 1150 GOSUB 2150 1160 REM 1170 REM set up pins 1180 GOSUB 2090 1190 ROW=13: COL=0: GOSUB 2020 1200 FOR I=1 TO 51: PRINT CHR$(&H16);: NEXT I 1210 PEGCOL(1)=8: PEGCOL(2)=24: PEGCOL(3)=40 1220 PEGS(1,0)=DISKS: PEGS(2,0)=0: PEGS(3,0)=0 1230 FOR ROW=13-DISKS TO 12 1240 FOR J=1 TO 3 1250 COL=PEGCOL(J): GOSUB 2020: PRINT CHR$(&HB); 1260 NEXT J 1270 NEXT ROW 1280 DCHAR$=CHR$(&H17): DCOL=PEGCOL(1) 1290 FOR I=1 TO DISKS 1300 DROW=13-I 1310 DSIZE=DISKS+1-I 1320 PEGS(1,I)=DSIZE 1330 GOSUB 2310 1340 NEXT I 1350 GOSUB 2120 1360 REM 1370 REM set up problem 1380 PROBPT=0 1390 PROB(0,0)=DISKS: PROB(0,1)=1: PROB(0,2)=2: PROB(0,3)=3 1400 MOVES=0 1410 REM 1420 REM blank out how many question 1430 ROW=19: COL=0: GOSUB 2020 1440 PRINT " "; 1450 REM 1460 REM solve the puzzle 1470 GOSUB 2380 1480 IF PROBPT<0 THEN 1130 1490 IF PROB(PROBPT,0)=1 THEN 1680 1500 REM reduce to three easier problems 1510 I=PROBPT+2 1520 PROB(I,0)=PROB(PROBPT,0)-1 1530 PROB(I,1)=PROB(PROBPT,1) 1540 PROB(I,2)=PROB(PROBPT,3) 1550 PROB(I,3)=PROB(PROBPT,2) 1560 I=I-1 1570 PROB(I,0)=1 1580 PROB(I,1)=PROB(PROBPT,1) 1590 PROB(I,2)=PROB(PROBPT,2) 1600 PROB(I,3)=PROB(PROBPT,3) 1610 PROB(PROBPT,0)=PROB(PROBPT,0)-1 1620 PROB(PROBPT,1)=PROB(PROBPT,3) 1630 PROB(PROBPT,3)=PROB(I,1) 1640 PROBPT=PROBPT+2 1650 GOTO 1490 1660 REM 1670 REM easy case -- move one disk 1680 F=PROB(PROBPT,1): T=PROB(PROBPT,2) 1690 DCOL=PEGCOL(F): DSIZE=PEGS(F,PEGS(F,0)) 1700 FOR I=13-PEGS(F,0) TO 13-DISKS STEP -1 1710 DROW=I-1: DCHAR$=CHR$(&H17): GOSUB 2310 1720 DROW=I: DCHAR$=" ": GOSUB 2310 1730 NEXT I 1740 IF FT THEN INC=-1: LEAD=0 1760 ROW=DROW-1: COL=PEGCOL(F): GOSUB 2060: DCH=&H17 1770 FOR I=1 TO ABS(PEGCOL(T)-PEGCOL(F)) 1780 SPT=SPT+INC 1790 IF LEAD THEN POKE SPT-DSIZE-1,&H20 1800 FOR J=SPT-DSIZE TO SPT-1: POKE J,DCH: NEXT J 1810 POKE SPT,&H20 1820 FOR J=SPT+1 TO SPT+DSIZE: POKE J,DCH: NEXT J 1830 IF NOT LEAD THEN POKE SPT+DSIZE+1,&H20 1840 NEXT I 1850 DCOL=PEGCOL(T) 1860 FOR I=12-DISKS TO 13-PEGS(T,0)-2 1870 DROW=I+1: DCHAR$=CHR$(&H17): GOSUB 2310 1880 DROW=I: DCHAR$=" ": GOSUB 2310 1890 NEXT I 1900 PEGS(F,0)=PEGS(F,0)-1 1910 PEGS(T,0)=PEGS(T,0)+1 1920 PEGS(T,PEGS(T,0))=DSIZE 1930 MOVES=MOVES+1 1940 PROBPT=PROBPT-1 1950 GOTO 1470 1960 REM 1970 REM clear screen 1980 PRINT CHR$(&H1B);"S";CHR$(0);CHR$(32);CHR$(&H1A); 1990 RETURN 2000 REM 2010 REM set cursor position 2020 PRINT CHR$(&H1B);"=";CHR$(ROW+32);CHR$(COL+32); 2030 RETURN 2040 REM 2050 REM set cursor position for poke 2060 SPT=&HF000+128*ROW+COL: RETURN 2070 REM 2080 REM enter graphics mode 2090 PRINT CHR$(&H1B);"#";CHR$(&H1B);"g";: RETURN 2100 REM 2110 REM leave graphics mode 2120 PRINT CHR$(&H1B);"G";CHR$(&H1B);CHR$(&H22);: RETURN 2130 REM 2140 REM print title 2150 GOSUB 1980 2160 PRINT "Towers of Hanoi Puzzle" 2170 PRINT "Copyright 1981 Michael M Rubenstein 2180 RETURN 2190 REM 2200 REM ask how many disks (1-7) 2210 ROW=19: COL=0: GOSUB 2020 2220 PRINT "How many disks (q to quit)? "; 2230 C$=INKEY$: IF C$="" THEN 2230 2240 IF C$="q" OR C$="Q" THEN DISKS=0: RETURN 2250 IF C$<"1" OR C$>"7" THEN 2230 2260 PRINT C$; 2270 DISKS=VAL(C$) 2280 RETURN 2290 REM 2300 REM print disk 2310 ROW=DROW: COL=DCOL: GOSUB 2060 2320 DCH=ASC(DCHAR$) 2330 FOR IPDSK=SPT-DSIZE TO SPT-1: POKE IPDSK,DCH: NEXT IPDSK 2340 FOR IPDSK=SPT+1 TO SPT+DSIZE: POKE IPDSK,DCH: NEXT IPDSK 2350 RETURN 2360 REM 2370 REM print move counter 2380 ROW=17: COL=0: GOSUB 2020 2390 PRINT USING "& ###";"Moves:";MOVES; 2400 RETURN  2360 REM 2370 REM print move counter 2380 ROW=17: COL=0: GOSUB 2020 2390 PRINT USING "& ###$(&H1B);"#";CHR$(&H1B);"g";: RETURN 2100 REM 2110 REM leave graphics mode 2120 PRINT CHR$(&H1B);"G";CHR$(&H1B);CHR$(&H22);: RETURN 2130 REM 2140 REM print title 2150 GOSUB 1980 2160 PRINT "Towers of Hanoi Puzzle" 2170 PRINT "Copyright 1981 Michael M Rubenstein 2180 RETURN 2190 REM 2200 REM ask how many disks (1-7) 2210 ROW=19: COL=0: GOSUB 2020 2220 PRINT "How many disks (q to quit)? "; 2230 C$=INKEY$: IF C$="" THEN 2230 2240 IF C$="q" OR C$="Q" THEN DISKS=0: RETURN 2250 IF C$<"1" OR C$>"7" THEN 2230 2260 PRINT C$; 2270 DISKS=VAL(C$) 2280 RETURN 2290 REM 2300 REM print disk 2310 ROW=DROW: COL=DCOL: GOSUB 2060 2320 DCH=ASC(DCHAR$) 2330 FOR IPDSK=SPT-DSIZE TO SPT-1: POKE IPDSK,DCH: NEXT IPDSK 2340 FOR IPDSK=SPT+1 TO SPT+DSIZE: POKE IPDSK,DCH: NEXT IPDSK 2350 RETURN 2360 REM 2370 REM print move counter 2380 ROW=17: COL=0: GOSUB 2020 2390 PRINT USING "& ###10 PRINT:PRINT:PRINT " PING PONG GAME by Jerry Silverstein 20 PRINT:PRINT:PRINT:PRINT "TO LAUNCH BALL TYPE '0' TO LAUNCH FROM LEFT PLAYER" 30 PRINT " OR '.' TO LAUNCH FROM RIGHT PLAYER" 40 PRINT:PRINT:PRINT" LEFT PLAYER USES 'Q' TO GO UP AND 'A' TO GO DOWN" 50 PRINT" RIGHT PLAYER USES '6' TO GO UP AND '3' TO GO DOWN" 55 PRINT"(RIGHT PLAYER SHOULD USE 10 KEY PAD FOR CONTROLS)" 60 PRINT:PRINT:PRINT"GAME CONTINUES UNTIL '0' OR '.' IS TYPED TO END GAME" 70 PRINT:PRINT"PLEASE MAKE NOTE OF SCORE BEFORE ENDING GAME SINCE " 80 PRINT" SCREEN IS CLEARED WHEN GAME IS ENDED" 90 PRINT:PRINT"SCORE OF 1 IS GIVEN FOR RETURNING THE BALL" 100 SPEED = 10 110 PRINT" SCORE OF 10 IS GIVEN TO THE OTHER PLAYER IF BALL IS " 120 PRINT "MISSED OR BALL GOES OFF THE TABLE WHEN RETURNED " 125 PRINT " BEFORE GOING HALF WAY ACROSS THE TABLE":PRINT 130 INPUT "HIT RETURN TO START PLAY",A$ 140 W = 23 ' WIDTH OF SCREEN (TOP TO BOTTOM) (LINES) 150 L = 49 ' LENGTH OF SCREEN (LEFT TO RIGHT) (COLUMNS) 160 T = L-3 ' PRINT TAB 170 MT = ((L/2)-3.5) ' PRINT MESSAGE TAB 180 SC1 = 0 ' SCORE LEFT PLAYER 190 SC2 = 0 ' SCORE RIGHT PLAYER 200 D1 = 1 ' DIRECTION OF LEFT PADDLE (UP=1,DOWN=-1,NO MOVE=0) 210 D2 = 1 ' DIRECTION OF RIGHT PADDLE(UP=1,DOWN=-1,NO MOVE=0) 220 OB = &H7F ' OUT OF BOUNDS FIELD CHARACTER 230 PD = &H0 ' PADDLE CHARACTER 240 B = &HD ' BALL CHARACTER 250 X = 2 ' COLUMN NUMBER OF LEFT PADDLE 260 Y1 = 11:Y2 = 11 ' LINE NUMBER OF TOP OF LEFT AND RIGHT PADDLES 270 BLK = &H20 ' BLANK CHARACTER 280 CLS$= CHR$(&H1A) ' CLEAR SCREEN CHARACTER 290 RET$= CHR$(&HD) ' RETURN TO BEGINNING OF SAME LINE 300 PRINT CLS$; 310 FOR I = 0 TO 2 320 POKE -4096 + X +(128*(Y1 + I)),PD 330 POKE -4096 + X +(L -2)+(128*(Y2 + I)),PD ' CREATE PADDLES 340 NEXT I 350 FOR I = -2 TO (L+2) 360 POKE -4096 +(X -1)+ I + 128,OB ' CREATE FIELD BORDER 370 POKE -4096 +(X -1)+ I +(128*W),OB 380 POKE -4096+(X-1)+I+(128*(W+1)),OB 390 NEXT I 400 FOR I = 0 TO (W +2) 410 POKE -4096 +(X -1)+(128*I),OB ' CREATE FIELD BORDER 420 POKE -4096 +(X -2)+(128*I),OB 430 POKE -4096 +(X + 0)+ L +(128*I),OB 440 POKE -4096 +(X -1)+ L +(128*I),OB 450 POKE -4096+(X-3)+(128*I),OB 460 POKE -4096+(X+1)+L+(128*I),OB 470 NEXT I 480 FOR I=2 TO (W-1) 490 POKE -4096+((L/2)+.5)+(128*I),&H4 'CREATE NET 500 POKE -4096+((L/2)+1.5)+(128*I),&H1 510 NEXT I 520 POKE -4096+(L-0)+(128*1),&H20 530 POKE -4096+2+(128*1),&H20 540 POKE -4096+(L-0)+(128*W),&H20 550 POKE -4096+2+(128*W),&H20 560 POKE -4096+L+1,&H20:POKE -4096+L+2,&H20 'MAKE OUTOFBOUNDS A SQUARE FIELD 570 PRINT TAB(MT);"LAUNCH BALL?";RET$; 580 LCH = 0:DIR$="NN":DW = 0:DL = 0 590 A$="" 600 A$= INKEY$ 610 IF A$="" THEN 600 620 IF A$="0" THEN LCH = 1:DIR$="UR":DL = 3:DW=W-2:POKE -4096 + DL +(128*DW),B ' LAUNCH BALL FROM LEFT 630 IF A$="." THEN LCH = 2:DIR$="DL":DL = L -1:DW=3:POKE -4096 + DL +(128*DW),B ' LAUNCH BALL FROM RIGHT 640 IF LCH = 0 THEN 570 ELSE PRINT TAB(MT);"  ";RET$; 650 A$="":I = 0:D1 = 0:D2 = 0 660 LCH=0 670 A$= INKEY$:I = I + 1 680 IF I > SPEED THEN 740 690 IF A$="" THEN 670 700 IF A$="Q" THEN D1 = 1 ELSE IF A$="A" THEN D1 = -1 ELSE IF A$="6" THEN D2 = 1 ELSE IF A$="3" THEN D2 = -1 710 IF (A$="0")OR(A$=".")THEN PRINT CLS$:END 720 GOTO 670 730 ' MOVE PADDLES 740 IF (Y1 = 1)AND(D1 = 1) THEN D1 = 0 ' STOP PADDLES FROM MOVING OFF SCREEN 750 IF (Y2 = 1)AND(D2 = 1) THEN D2 = 0 760 IF (Y1 =(W -2))AND(D1 = -1) THEN D1 = 0 770 IF (Y2 =(W -2))AND(D2 = -1) THEN D2 = 0 780 IF D1 = 1 THEN J1 = 3:N1 = 0 ELSE IF D1 = -1 THEN J1 = -1:N1 = 2 790 IF D2 = 1 THEN J2 = 3:N2 = 0 ELSE IF D2 = -1 THEN J2 = -1:N2 = 2 800 Y1 = Y1 -D1:Y2 = Y2 -D2 810 IF D1 <> 0 THEN POKE -4096 + X +(128*(Y1 + J1)),BLK 820 IF D2 <> 0 THEN POKE -4096 + X +(L -2)+(128*(Y2 + J2)),BLK 830 PRINT " ";SC1;TAB(T);SC2;RET$; 840 POKE -4096 + X +(128*(Y1 + N1)),PD 850 POKE -4096 + X +(L -2)+(128*(Y2 + N2)),PD 860 ' HIT BALL SCORE 870 POKE -4096+DL+(128*DW),BLK 880 IF (DIR$="UR")OR(DIR$="DR")OR(DIR$="RR") THEN DIR = 1 890 IF (DIR$="DL")OR(DIR$="UL")OR(DIR$="LL") THEN DIR = -1 900 IF (DIR$="NN") THEN DIR = 0 910 IF DIR = 1 THEN DD = DL + 1 ELSE IF DIR = -1 THEN DD = DL -1 ELSE DD = DL 920 P = PEEK(-4096 + DD +(128*DW)) 930 IF P = PD THEN P = PEEK(-4096 + DD +(128*(DW+1))) ELSE GOTO 980 940 IF P <> PD THEN IF DIR = 1 THEN DIR$="DL":DIR = -1:SC2 = SC2 + 1:GOSUB 1150 ELSE IF DIR = -1 THEN DIR$="DR":DIR = 1:SC1 = SC1 + 1:GOSUB 1150 950 IF P = PD THEN P = PEEK(-4096 + DD +(128*(DW-1))) ELSE GOTO 980 960 IF P = PD THEN IF DIR = 1 THEN DIR$="LL":DIR = -1:SC2 = SC2 + 1:GOSUB 1150 ELSE IF DIR = -1 THEN DIR$="RR":DIR = 1:SC1 = SC1 + 1:GOSUB 1150 970 IF P <> PD THEN IF DIR = 1 THEN DIR$="UL":DIR = -1:SC2 = SC2 + 1:GOSUB 1150 ELSE IF DIR = -1 THEN DIR$="UR":SC1 = SC1 + 1:GOSUB 1150 980 IF DIR$="UR" THEN DW = DW - 1:DL = DL + 3 990 IF DIR$="DR" THEN DW = DW +1:DL = DL + 3 1000 IF DIR$="DL" THEN DW = DW + 1:DL = DL -3 1010 IF DIR$="UL" THEN DW = DW -1:DL = DL -3 1020 IF DIR$="LL" THEN DL = DL -3 1030 IF DIR$="RR" THEN DL = DL + 3 1040 P = PEEK(-4096 + DL +(128* DW)) ' SCORE - OUT OF BOUNDS 1050 IF P = OB THEN IF DL >(L -4) THEN SC1 = SC1 + 10:LCH=2:GOTO 1090 1060 IF P=OB THEN IF DL < 2 THEN SC2 = SC2 + 10:LCH=1:GOTO 1090 1070 IF P=OB THEN IF DIR = 1 THEN SC2 = SC2 + 10:LCH=1:GOTO 1090 1080 IF P=OB THEN IF DIR = -1 THEN SC1 = SC1 + 10:LCH=2 1090 IF LCH=1 THEN DIR$="UR":DL=3:DW=W-2:POKE -4096+DL+(128*DW),B 1100 IF LCH=2 THEN DIR$="DL":DL=L-1:DW=3:POKE -4096+DL+(128*DW),B 1110 IF (LCH<>1)AND(LCH<>2) THEN GOTO 1130 1120 FOR GG=1 TO 5:GOSUB 1150:FOR GGG=1 TO 35:NEXT GGG:NEXT GG 1130 POKE -4096 + DL +(128*DW),B ' PLACE BALL AT NEW LOCATION 1140 GOTO 650 1150 ' FEEDBACK -- BALL HITS PADDLE 1160 BELLNG=5 'BELL LENGTH 1170 POKE &HEF62,&H20 'BEEPER FLAG ON 1180 PRINT CHR$(&HD); 1190 FOR BELCNT= 1 TO BELLNG:NEXT BELCNT 1200 POKE &HEF62,0 1210 PRINT CHR$(&HD); 1220 RETURN G ON 1180 PRINT CHR$(&HD); 1190 FOR BELCNT= 1 TO BELPINGPONG, with graphics, is a pong game. This program and ESCAPE were provided by Jerry Silverstein. BUBBLE DOC DESIGN BAS#DESIGN DOC ETCH BASSEARCH BASSEARCH DOCBREAKOUTBAS !CROSSPUZBAS/"#$%&'DUCK BAS5()*+,-.DUCK DOC/E-SKETCHBAS012ESCAPE BAS&34567GUNNER-2BAS89:;GUNNER-2DOC<HANOI BAS!=>?@APINGPONGBAS0BCDEFGPINGPONG$$$HANOI BAS!WXYZ[KONG BASp\]^_`abcdefghiKONG DOCjGRAPH PRN klLIFE BASmnoLIFE DOCpqrLIFE1 PATsLIFE2 PATtLIFE3 PATuLIFE4 PATvLIFEASC COMgwxyz{|}~1 ' RANDOM WALK (A LA PARTICLE-IN-A-BOX) 2 ' ...EINSTEIN REVISITED... 3 ' 4 ' ERIC KNUDSON 5 ' 946 WASHINGTON ROAD 6 ' GROSSE POINTE, MI 48230 7 ' 8 'LET ME KNOW IF ANY NUMBER GIVES A HALF-WAY 9 'INTERESTING RORSCHACH... 10 PRINT CHR$(26) 20 INPUT"INPUT RANDOM SEED: ",R 30 RANDOMIZE R 40 PRINT CHR$(26) 100 DEFSNG L,C,X,Y 110 X=26! 120 Y=12 130 L=INT(64384!+X-128*Y) 140 C=CINT(RND*25+65) 150 POKE L,C 160 A=INT(RND*3)-1! 162 X=X+A 164 IF X>=0 AND X<=52 THEN 170 166 X=X-A:GOTO 160 170 B=INT(RND*3)-1! 172 Y=Y+B 174 IF Y>=0 AND Y<=24 THEN 130 176 Y=Y-B 178 GOTO 170 180 GOTO 130 70 166 X=X-A:GOTPINGPONGDOCHRND-WALK$$$KONG BASp\]^_`abcdefghiKONG DOCjGRAPH PRN klLIFE BASmnoLIFE DOCpqrLIFE1 PATsLIFE2 PATtLIFE3 PATuLIFE4 PATvLIFEASC COMgwxyz{|}~RND-WALK will display a random path of letters. BUBBLE DOC DESIGN BAS#DESIGN DOC ETCH BASSEARCH BASSEARCH DOCBREAKOUTBAS !CROSSPUZBAS/"#$%&'DUCK BAS5()*+,-.DUCK DOC/E-SKETCHBAS012ESCAPE BAS&34567GUNNER-2BAS89:;GUNNER-2DOC<HANOI BAS!=>?@APINGPONGBAS0BCDEFGPINGPONGDOCHRND-WALKBASIRND-WALK$$$KONG DOCjGRAPH PRN klLIFE BASmnoLIFE DOCpqrLIFE1 PATsLIFE2 PATtLIFE3 PATuLIFE4 PATvLIFEASC COMgwxyz{|}~10 '********************************************** 20 ' 30 ' ********* SLOTS ********* 40 ' 50 'ORIGINAL IDEA FROM "67 READY TO RUN PROGRAMS 60 'IN BASIC" BY WM. SCOTT WATSON. 70 'ORIGINAL VERSION WRITTEN FOR TRS-80 80 ' 90 'RE-WRITTEN, MODIFIED AND UPGRADED FOR THE 100 'OSBORNE AND MICROSOFT BASIC IN JULY, 1983 110 'BY RON FORSYTHE AND MIKE KAUFMAN 120 ' 130 '******************************************* 140 ' SIGN ON GRAPHICS 150 '******************************************* 160 PRINT CHR$(26) 170 WHILE A<>32:Z1=Z:READ Z,A:Z=Z1+Z:POKE Z+61440!,A:WEND 180 DATA 0,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22 190 DATA 1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22 200 DATA 1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22 210 DATA 78,22,1,22,48,22,1,22,78,22,1,22,2,80,1,73,1,71,1,83,2,73,1,78,2,65,2,80,1,79,1,75,1,69 220 DATA 1,89,2,80,1,82,1,69,1,83,1,69,1,78,1,84,1,83,1,58,22,22,1,22,78,22,1,22,9,10,1,22,1,22 230 DATA 1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22 240 DATA 1,22,1,22,1,22,1,22,1,22,1,22,1,25,1,1,12,22,1,22,78,22,1,22,8,10,1,25,24,10,1,25,2,1 250 DATA 12,22,1,22,78,22,1,22,7,10,1,25,4,83,3,76,3,79,3,84,3,83,3,33,5,10,1,25,3,1,2,86,1,111 260 DATA 1,105,1,100,7,22,1,22,78,22,1,22,6,10,1,25,24,10,1,25,4,1,12,22,1,22,78,22,1,22,5,0 270 DATA 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0 280 DATA 1,0,1,0,1,0,1,0,1,0,5,1,2,87,1,104,1,101,1,114,1,101,6,22,1,22,78,22,1,22,4,0,1,0,1,0 290 DATA 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0 300 DATA 1,0,1,0,1,0,1,25,5,1,12,22,1,22,78,22,1,22,2,17,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23 310 DATA 1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23 320 DATA 1,23,1,23,1,23,1,23,1,5,2,80,1,114,1,111,1,104,1,105,1,98,1,105,1,116,1,101,1,100,5,22 330 DATA  1,22,78,22,1,22,2,1,30,4,4,1,12,22,1,22,78,22,1,22,2,1,2,17,1,18,1,18,1,18,1,18,1,18 340 DATA 1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18 350 DATA 1,18,1,18,1,5,3,4,2,11,2,1,3,98,1,121,8,22,1,22,78,22,1,22,2,1,2,6,25,7,3,4,2,11,2,1 360 DATA 12,22,1,22,78,22,1,22,2,1,2,6,3,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45 370 DATA 1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,4,7,3,4,2,11,2,1,2,76,1,97,1,119,1,33,7,22,1,22 380 DATA 78,22,1,22,2,1,2,6,3,124,2,66,1,65,1,82,2,124,2,66,1,65,1,82,2,124,2,66,1,65,1,82,2,124 390 DATA 4,7,3,4,2,11,2,1,12,22,1,22,78,22,1,22,2,1,2,6,3,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45 400 DATA 1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,4,7,3,4,2,11,2,1,12,22,1,22,78,22 410 DATA 1,22,2,1,2,6,25,7,3,4,2,13,2,1,12,22,1,22,78,22,1,22,2,1,2,6,25,7,3,4,3,10,1,1,12,22 420 DATA 1,22,78,22,1,22,2,1,2,26,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7 430 DATA 1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,3,3,4,2,10,1,25,13,22,1,22,78,22,1,22,2,1,30,4 440 DATA 1,10,1,25,14,22,1,22,78,22,1,22,2,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22 450 DATA 1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22 460 DATA 1,22,1,22,1,22,1,25,15,22,1,22,78,22,1,22,36,109,1,107,11,22,1,22,78,22,1,22,1,22,1,22 470 DATA 1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22 480 DATA 1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22 490 DATA 1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,32,32 500 FOR X=1 TO 1500:NEXT X 510 '******************************************** 520 ' DEFINE PROGRAM GRAPHICS 530 '******************************************** 540 XY$=CHR$(10):XZ$=CHR$(13) 550 YA$=STRING$(43,45):YB$=STRING$(1,124) 560 E$=CHR$(27):F$=CHR$(103):G$=CHR$(0):H$=CHR$(71) 570 MM$=E$+F$+G$:LL$=E$+H$ 580 BELL$=CHR$(7):'RING BELL 590 UY$=E$+"l":'START UNDERLINING 600 UN$=E$+"m":'STOP UNDERLINING 610 PRINT CHR$(26):'CLEAR SCREEN 620 '******************************************** 630 ' PRINT INSTRUCTIONS TO SCREEN 640 '******************************************** 650 PRINT:PRINT TAB(10)UY$ "WELCOME TO THE OSBORNE SLOT MACHINE";UN$ 660 PRINT:PRINT "YOU MAY BET 1,5,10,20,50 OR 100 DOLLARS ON EACH PLAY" 670 PRINT:INPUT "PRESS ENTER TO CONTINUE";A$:PRINT CHR$(26) 680 PRINT TAB(10) UY$ "$10000 WILL BREAK THE BANK!!";UN$:PRINT 690 PRINT TAB(20) "PAYOFFS ARE:":PRINT 700 PRINT "3 BARS-----------------------------100 TO 1" 710 PRINT "3 BELLS-----------------------------80 TO 1" 720 PRINT "3 LEMONS----------------------------50 TO 1" 730 PRINT "3 PLUMS-----------------------------30 TO 1" 740 PRINT "3 PEACHES---------------------------25 TO 1" 750 PRINT "3 ORANGES---------------------------10 TO 1" 760 PRINT "2 BARS & 1 BELL---------------------10 TO 1" 770 PRINT "2 BELLS & 1 LEMON--------------------9 TO 1" 780 PRINT "2 LEMONS AND 1 PLUM------------------8 TO 1" 790 PRINT "2 PLUMS AND 1 PEACH------------------7 TO 1" 800 PRINT "2 PEACHES AND 1 ORANGE---------------5 TO 1" 810 PRINT "2 ORANGES AND ANYTHING---------------2 TO 1" 820 PRINT:PRINT"PRESS ENTER " UY$ "TWICE" UN$:PRINT:INPUT "TO CONTINUE";A$:A$=INKEY$ 830 '******************************************* 840 ' SET RANDOM NUMBER SEED 850 '******************************************* 860 IF INKEY$="" THEN SEED=SEED+1:GOTO 860 870 PRINT CHR$(26) 880 PRINT:PRINT"YOU MAY START WITH UP TO $5000" 890 PRINT:INPUT"HOW MUCH MONEY DO YOU WANT TO START WITH";CA:PRINT CHR$(26) 900 IF CA>5000 GOTO 880 910 IF CA=0 GOTO 880 920 T=CA 930 SEED=SEED-32767*(INT(SEED/32767)) 940 RANDOMIZE SEED 950 PRINT:PRINT "YOU NOW HAVE $";T 960 INPUT "WHAT IS YOUR BET";B 970 IF (B=1)+(B=5)+(B=10)+(B=20)+(B=50)+(B=100) THEN 990:'ESTABLISH ALLOWABLE BETS 980 PRINT "YOU MAY BET 1,5,10,20,50 OR 100 DOLLARS ";UY$;"ONLY";UN$:GOTO 960 990 IF B<=T GOTO 1010 1000 PRINT "YOU DON'T HAVE THAT MUCH ";UY$;"TURKEY!";UN$:GOTO 950 1010 PRINT:PRINT:PRINT TAB(10) UY$ "THE WHEELS ARE SPINNING!";UN$;A$ 1020 FOR O=1 TO 3 1030 P=0 1040 NM=6:NN=1 1050 R=NN+INT((NM-NN+1)*RND) 1060 IF R=1 THEN PR$(O)="BAR":L=300000!:GOTO 1120 1070 IF R=2 THEN PR$(O)="BELL":L=20000:GOTO 1120 1080 IF R=3 THEN PR$(O)="LEMON":L=3000:GOTO 1120 1090 IF R=4 THEN PR$(O)="PLUM":L=100:GOTO 1120 1100 IF R=5 THEN PR$(O)="PEACH":L=20:GOTO 1120 1110 IF R=6 THEN PR$(O)="ORANGE":L=3 1120 IF O=1 GOTO 1410 1130 IF O=2 GOTO 1430 1140 IF O=3 GOTO 1450 1150 NEXT O 1160 GOSUB 2010 1170 FOR XX=1 TO 500:NEXT XX 1180 '******************************************* 1190 ' ESTABLISH WINNING COMBINATIONS 1200 '******************************************* 1210 IF D=900000! GOTO 1510 1220 IF D=60000! GOTO 1550 1230 IF D=9000 GOTO 1580 1240 IF D=300 GOTO 1610 1250 IF D=60 GOTO 1640 1260 IF D=9 GOTO 1670 1270 IF D=620000! GOTO 1700 1280 IF D=43000! GOTO 1710 1290 IF D=6100 GOTO 1740 1300 IF D=220 GOTO 1770 1310 IF D=43 GOTO 1800 1320 IF D=300006! GOTO 1830 1330 IF D=20006 GOTO 1830 1340 IF D=3006 GOTO 1830 1350 IF D=106 GOTO 1830 1360 IF D=26 GOTO 1830 1370 PRINT "SORRY, BUT YOU LOSE YOUR BET OF $";B 1380 FOR Z=1 TO 750:NEXT Z 1390 T=T-B:IF T<=0 GOTO 1950:'OUT OF MONEY LOOP 1400 PRINT CHR$(26):GOTO 950 1410 A=L 1420 GOTO 1150 1430 E=L 1440 GOTO 1150 1450 C=L 1460 D=A+E+C:'A IS VALUE OF WHEEL #1, B WHEEL #2, C WHEEL #3 1470 GOTO 1150 1480 '****************************************** 1490 ' PAYOFF ODDS 1500 '****************************************** 1510 PRINT TAB(10) UY$"JACKPOT!!! 100 TO 1 PAYOFFS!!";UN$:PRINT BELL$ 1520 PRINT UY$ "YOU'RE A WINNER!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";UN$:PRINT BELL$ 1530 T=T+(100*B) 1540 GOTO 1860 1550 PRINT "YOU WIN AT 80 TO 1 ODDS":PRINT BELL$ 1560 T=T+(80*B) 1570 GOTO 1860 1580 PRINT "YOU WIN AT 50 TO 1 ODDS":PRINT BELL$ 1590 T=T+(50*B) 1600 GOTO 1860 1610 PRINT "YOU WIN AT 30 TO 1 ODDS":PRINT BELL$ 1620 T=T+(30*B) 1630 GOTO 1860 1640 PRINT "YOU WIN AT 25 TO 1 ODDS":PRINT BELL$ 1650 T=T+(25*B) 1660 GOTO 1860 1670 PRINT "YOU WIN AT 10 TO 1 ODDS":PRINT BELL$ 1680 T=T+(10*B) 1690 GOTO 1860 1700 GOTO 1670 1710 PRINT "YOU WIN AT 9 TO 1 ODDS":PRINT BELL$ 1720 T=T+(9*B) 1730 GOTO 1860 1740 PRINT "YOU WIN AT 8 TO 1 ODDS":PRINT BELL$ 1750 T=T+(8*B) 1760 GOTO 1860 1770 PRINT "YOU WIN AT 7 TO 1 ODDS":PRINT BELL$ 1780 T=T+(7*B) 1790 GOTO 1860 1800 PRINT "YOU WIN AT 5 TO 1 ODDS":PRINT BELL$ 1810 T=T+(5*B) 1820 GOTO 1860 1830 PRINT "YOU WIN AT 2 TO 1 ODDS":PRINT BELL$ 1840 T=T+(2*B) 1850 GOTO 1860 1860 IF T>=10000 GOTO 1880 1870 FOR ZZ=1 TO 500:NEXT ZZ:PRINT CHR$(26):GOTO 930 1880 PRINT UY$ "INCREDIBLE! YOU'VE BROKEN THE BANK!!";UN$:PRINT BELL$ 1890 PRINT TAB(10) "YOUR WINNINGS ARE $";T;:PRINT 1900 PRINT:INPUT "DO YOU WANT A CERTIFICATE PRINTED (Y/N)";CR$ 1910 IF CR$="Y" OR CR$="y" OR CR$="YES" OR CR$="Yes" OR CR$="yes" GOTO 2160 1920 PRINT:INPUT "TRY AGAIN (Y/N)";YN$ 1930 IF YN$="Y" OR YN$="y" OR YN$="Yes" OR YN$="YES" OR YN$="yes" GOTO 540 1940 END 1950 PRINT:PRINT "AND YOU'RE OUT OF MONEY ";UY$;"SUCKER";UN$:PRINT:INPUT "TRY AGAIN (Y/N)";YN$ 1960 IF YN$="Y" OR YN$="y" OR YN$="YES" OR YN$="Yes" OR YN$="yes" GOTO 540 1970 END 1980 '******************************************** 1990 ' SLOT MACHINE SCREEN GRAPHICS ROUTINE 2000 '******************************************** 2010 PRINT:PRINT:FOR X=1 TO 43:PRINT MM$;:NEXT X:PRINT LL$ 2020 PRINT YA$ 2030 PRINT YB$;SPC(5);:GOSUB 2070:PRINT PR$(1),YB$;SPC(5);:GOSUB 2070:PRINT PR$(2),YB$;SPC(5);:GOSUB 2070:PRINT PR$(3),YB$ 2040 PRINT YA$ 2050 FOR X=1 TO 43:PRINT MM$;:NEXT X:PRINT LL$ 2060 PRINT:PRINT:RETURN 2070 FOR YY=1 TO 500:NEXT YY 2080 RETURN 2090 END 2100 '******************************************** 2110 ' PRINTED CERTIFICATE SUB-ROUTINE 2120 ' 2130 ' NOTE: CHR$(14) IS THE ENLARGED MODE FOR 2140 ' EPSON FX-80. CHR$(27);"4" ENTERS 2150 ' ITALIC MODE, CHR$(27);"5" LEAVES IT. 2160 '******************************************* 2170 INPUT "ENTER TODAY'S DATE:";DT$ 2180 INPUT "ENTER YOUR NAME:";NM$ 2190 LPRINT "================================================================================" 2200 LPRINT:LPRINT:LPRINT CHR$(14) TAB(15) "BE IT KNOWN" 2210 LPRINT:LPRINT 2220 LPRINT CHR$(27);"4":LPRINT TAB(5) "That the holder of this CERTIFICATE has demonstrated an outstanding" 2230 LPRINT "level of skill, talent and just plain good luck in that said person did" 2240 LPRINT:LPRINT CHR$(14) TAB(10) "BREAK THE BANK OF OSBORNE" 2250 LPRINT:LPRINT "And in doing so did earn the INCREDIBLE amount of:" 2260 LPRINT:LPRINT CHR$(14) TAB(15);"$";T 2270 LPRINT:LPRINT TAB(5) "The holder of the certificate is therefore entitled to and should" 2280 LPRINT "receive all of the respect, courtesy and benefits usually afforded to" 2290 LPRINT "a person of such talent and wealth." 2300 LPRINT:LPRINT CHR$(14) "ISSUED TO: ";NM$ 2310 LPRINT:LPRINT CHR$(14) "DATED: ";DT$:LPRINT CHR$(27);"5" 2320 LPRINT:LPRINT "===============================================================================" 2330 GOTO 1920 27);"5" 2320 LPRINT:LPRINT "======================== SLOTS An MBASIC Program Slot wa writte fo th Osborn i MBASI b Ron Forsythe and Mike Kaufman. Th origina ide cam fro th boo "6 Read t Ru Programs i Basic b Wm Scot Watson Tha version was written for the TRS-80. I thi versio th scree prompt hav bee changed graphic hav bee adde an th rando numbe generato ha bee se u fo MBASIC' Randomiz command. T ru th progra inser th MBASIà progra dis i driv A Loa MBASI an a th promp type RUN "B:SLOTS". I yo wan t delet th sig o messag t spee executio o th program delet line 140- 500. Th progra ca b easil modifie t sui you ow tastes Th堠 winnin砠 combination ar establishe i line 1180-1360 Th payof odd ar established in lines 1480-1850. Th valu t "Brea th Bank i se a $10,000 Thi ca b change i lin 1860 bu yo shoul als chang th instructio i lin 68 i yo chang thi value. Th allowabl bet ar 1,5,10,20,5 o 10 dollars Thes ar establishe in an ca b change in line 97 an 980. Th printe sub-routin begin a lin 2100 Thi routin wil allo fo certificat t b printe wit th date user nam an winnin amount Th堠 subroutin use characte strin statement whic addres th itali an enlarge mode o th Epso FX-8 printer Th certificat shoul prin o an printe bu wil no includ th specia prin format. An question o problem contac Ro Forsythe P.O Bo 1011 Fairfield Ca 94533. sui you ow tastes Th堠 winnin砠 combination ar establishe i line 1180-1360 Th payof odd ar established in lines 1480-1850. Th valu t "Brea th Bank i se a $10,000 Thi ca b change i lin 186010 'SNOW: SOMETHING FOR MY KIDS TO GO CRAZY WATCHING 20 ' ERIC KNUDSON 30 ' 946 WASHINGTON ROAD 40 ' GROSSE POINTE, MI 48230 50 PRINT CHR$(26):REM CLEAR SCREEN TO BEGIN WITH 60 PRINT TAB(24);"SNOW":PRINT:PRINT 70 PRINT"ALL THIS PROGRAM DOES IS TO FILL UP THE SCREEN" 80 PRINT"WITH RANDOM LETTERS, SORT OF LIKE FALLING SNOW." 90 PRINT:PRINT"IT MIGHT BE POSSIBLE TO USE THIS FOR PLAYING" 100 PRINT"BOGGLE, IF THE SCREEN WERE A BIT SMALLER." 110 PRINT"(AND IF YOU WERE VERY FAST...)" 120 PRINT:INPUT"INPUT A NUMBER FOR RANDOMIZATION";R 130 RANDOMIZE R 140 PRINT CHR$(26) 150 DEFSNG L,C,X,Y:' IT HAS TO HAVE INTEGERS FOR SCREEN LOCATIONS 160 X=CINT(52*RND):' GENERATE X-COORDINATE 170 Y=CINT(24*RND):' GENERATE Y-COORDINATE 180 L=INT(64384!+X-128*Y):' L=SCREEN LOCATION 190 C=65+INT(26*RND):' GENERATE WHICH CHARACTER TO PLOT 200 POKE L,C:' STICK IT ON THE SCREEN 210 GOTO 160 220 END (26*RND):' GENERATE WHICH CHARACTER TO PLO100 'KONG by Dan Woolley, FOG 110 'Uses machine language code for painting block 120 'graphics on the screen. 130 'Uses tab and left/right/up arrow keys to move man 140 ' 170 'OSBORNE 1 Block Graphics by Jim Woolley 180 'Initialize display and subroutines 190 CLEAR,&HC600 195 DEFINT A-Z 200 PRINT CHR$(26) 210 GRAPH.IT=&HC601 220 DATA &H2B,&H2B,&HE5,&HEB,&H7E,&H3C,&HFE,&HFF,&HDA,&H0E,&HC6,&H3E,&HFF,&H32,&H29,&HC6,&HE1,&H23 230 DATA &H23,&H54,&H5D,&H13,&H13,&H42,&H4B,&H03,&H03,&HC5,&HCD,&H2A,&HC6,&H3A,&H29,&HC6,&H3D,&HC2 240 DATA &H0E,&HC6,&HE1,&HC9,&H00,&H7E,&H3D,&H6F,&H26,&H00,&H29,&H29,&H29,&H29,&H29,&H29,&H29,&H1A 250 DATA &H3D,&H5F,&H16,&H00,&H19,&H11,&H00,&HF0,&H19,&H0A,&H77,&HC9,-1 254 ' 255 'Load machine language code 260 READ GN%:GI%=0 270 WHILE GN%>=0 280 POKE GRAPH.IT+GI%,GN% 290 GI%=GI%+1 300 READ GN% 310 WEND 320 DIM GA%(2,254) 330 GN%=-1 334 ' 335 'Jump to main program 340 GOTO 5000 344 ' 345 'Subroutines follow 350 ' 360 'Put C at col.X, row Y, screen S 370 'where 1<=X<=128, 1<=Y<=24 380 'C=integer value of ASCII character 390 GN%=GN%+1 400 GA%(0,GN%)=Y 410 GA%(1,GN%)=X 420 GA%(2,GN%)=C 430 IF GN%<254 THEN RETURN 440 CALL GRAPH.IT(GA%(0,0),GN%) 450 GN%=-1 460 RETURN 470 ' 480 'Display screen S=0 or 1 490 'Screen 0 is cols.1 thru 52 500 'Screen 1 is cols.53 thru 104 510 PRINT CHR$(27)"S "CHR$(32+S*53) 520 RETURN 530 ' 540 'Set screen left edge at col.X 550 PRINT CHR$(27)"S "CHR$(32+X) 560 RETURN 4999 ' 5000 'Main Program 5020 PRINT"Use tab and left/right/up arrow to move man." 5030 RANDOMIZE 5040 PRINT CHR$(26) 5050 DIM R(2),T(2) 5070 S=0 5080 FOR A=1 TO 52 5090 Y=24:C=23:X=A:GOSUB 360 5100 NEXT A 5110 GOSUB 440 5120 FOR A=1 TO 52 5130 Y=19:X=A:GOSUB 360 5140 NEXT A 5150 GOSUB 440 5160 FOR A=1 TO 52 5170 Y=14:X=A:GOSUB 360 5180 NEXT A 5190 GOSUB 440 5200 FOR A=1 TO 52 5210 Y=9:X=A:GOSUB 360 5220 NEXT A 5230 GOSUB 440 5240 FOR A=21 TO 30 5250 Y=4:X=A:GOSUB 360 5260 NEXT A 5270 GOSUB 440 5280 GOSUB 9600 5290 GOSUB 9740 5300 GOSUB 9880 5310 GOSUB 10020 5320 FOR B=5 TO 8 5330 X=8:C=11:Y=B:GOSUB 360 5340 NEXT B 5350 X=3:Y=5:C=79:GOSUB 360 5360 X=5:GOSUB 360 5370 X=4:Y=6:C=94:GOSUB 360 5380 X=2:Y=7:C=92:GOSUB 360 5390 FOR B=3 TO 5 5400 C=95:X=B:GOSUB 360 5410 NEXT B 5420 X=6:C=47:GOSUB 360 5430 GOSUB 440 5440 X=1:Y=10:C=124:GOSUB 360 5450 GOSUB 440 5460 X=51:Y=15:GOSUB 360 5470 GOSUB 440 5480 X=2:Y=21:C=13:GOSUB 360 5490 X=1:Y=22:C=47:GOSUB 360 5500 X=2:C=0:GOSUB 360 5510 X=3:C=92:GOSUB 360 5520 Y=23:C=92:GOSUB 360 5530 X=1:C=47:GOSUB 360 5540 GOSUB 440 5550 X=29:C=79:Y=1:GOSUB 360 5560 X=28:C=47:Y=2:GOSUB 360 5570 X=29:C=22:GOSUB 360 5580 X=30:C=92:GOSUB 360 5590 Y=3:GOSUB 360 5600 X=28:C=47:GOSUB 360 5610 GOSUB 440 5620 W=2 5630 V=21 5640 BASE!=61440! 5650 R(1)=INT(RND*52) 5660 T(1)=INT(RND*23) 5670 IF NOT (T(1)=7 OR T(1)=12 OR T(1)=17 OR T(1)=22) THEN 5660 5680 R(2)=INT(RND*23) 5690 T(2)=INT(RND*23) 5700 IF NOT (T(2)=7 OR T(2)=12 OR T(2)=17 OR T(2)=22) THEN 5680 5710 F=1 5720 GOSUB 8140 5730 F=F+1 5740 IF F=3 THEN J=0 5750 Z$=INKEY$:IF LEN(Z$)=0 THEN 5720 5760 IF Z$=CHR$(12) THEN GOSUB 8140:GOTO 5850 5770 IF Z$=CHR$(8) THEN GOSUB 8140:GOTO 6080 5780 IF Z$=CHR$(11) THEN GOSUB 8140:GOTO 6720 5790 IF Z$=CHR$(10) THEN GOSUB 8140:GOTO 6990 5800 IF Z$=CHR$(9) THEN 5810 ELSE GOTO 5710 5810 IF J=0 THEN 6320 5820 IF J=1 THEN 7210 5830 IF J=2 THEN 7650 5840 GOTO 5710 5850 IF V=21 OR V=16 OR V=11 OR V=6 THEN 5860 ELSE GOTO 5710 5860 IF W=50 THEN 5710 ELSE W=W+2 5870 X=W-2:Y=V:C=32:GOSUB 360 5880 X=W-3:Y=V+1:GOSUB 360 5890 X=W-2:GOSUB 360 5900 X=W-1:GOSUB 360 5910 X=W-1:Y=V+2:GOSUB 360 5920 X=W-3:GOSUB 360 5930 GOSUB 440 5940 X=W:Y=V:C=13:GOSUB 360 5950 X=W-1:Y=V+1:C=47:GOSUB 360 5960 X=W:C=0:GOSUB 360 5970 X=W+1:C=92:GOSUB 360 5980 X=W+1:Y=V+2:GOSUB 360 5990 X=W-1:C=47:GOSUB 360 6000 GOSUB 440 6010 IF W=50 AND V=21 THEN GOSUB 10020 6020 IF W=10 AND V=16 THEN GOSUB 9880 6030 IF W=50 AND V=11 THEN GOSUB 9740 6040 IF W=26 AND V=6 THEN GOSUB 9600 6050 J=1 6060 GOSUB 8140 6070 GOTO 5710 6080 IF V=21 OR V=16 OR V=11 OR V=6 THEN 6090 ELSE GOTO 5710 6090 IF W=2 THEN 5710 ELSE W=W-2 6100 X=W+2:Y=V:C=32:GOSUB 360 6110 X=W+3:Y=V+1:GOSUB 360 6120 X=W+2:GOSUB 360 6130 X=W+1:GOSUB 360 6140 X=W+1:Y=V+2:GOSUB 360 6150 X=W+3:GOSUB 360 6160 GOSUB 440 6170 X=W:Y=V:C=13:GOSUB 360 6180 X=W-1:Y=V+1:C=47:GOSUB 360 6190 X=W:C=0:GOSUB 360 6200 X=W+1:C=92:GOSUB 360 6210 X=W+1:Y=V+2:GOSUB 360 6220 X=W-1:C=47:GOSUB 360 6230 GOSUB 440 6240 IF W=42 AND V=21 THEN GOSUB 10020 6250 IF W=2 AND V=16 THEN GOSUB 9880 6260 IF W=42 AND V=11 THEN GOSUB 9740 6270 IF W=18 AND V=6 THEN GOSUB 9600 6280 J=2 6290 IF V=6 AND W<10 THEN GOTO 8430 6300 GOSUB 8140 6310 GOTO 5710 6320 IF NOT (V=6 OR V=11 OR V=16 OR V=21) THEN 5710 6330 X=W:Y=V:C=32:GOSUB 360 6340 X=W-1:Y=V+1:GOSUB 360 6350 X=W:GOSUB 360 6360 X=W+1:GOSUB 360 6370 X=W+1:Y=V+2:GOSUB 360 6380 X=W-1:GOSUB 360 6390 GOSUB 440 6400 X=W:Y=V-1:C=13:GOSUB 360 6410 X=W-1:C=92:GOSUB 360 6420 X=W+1:C=47:GOSUB 360 6430 X=W:Y=V:C=0:GOSUB 360 6440 X=W+1:Y=V+1:C=92:GOSUB 360 6450 X=W-1:C=47:GOSUB 360 6460 GOSUB 440 6470 V=V-1 6480 GOSUB 8140 6490 GOSUB 8140 6500 V=V+1 6510 X=W:Y=V-1:C=32:GOSUB 360 6520 X=W-1:GOSUB 360 6530 X=W+1:GOSUB 360 6540 X=W:Y=V:GOSUB 360 6550 X=W+1:Y=V+1:GOSUB 360 6560 X=W-1:GOSUB 360 6570 GOSUB 440 6580 V=V-1 6590 GOSUB 8140 6600 GOSUB 8140 6610 V=V+1 6620 X=W:Y=V:C=13:GOSUB 360 6630 X=W-1:Y=V+1:C=47:GOSUB 360 6640 X=W:C=0:GOSUB 360 6650 X=W+1:C=92:GOSUB 360 6660 X=W+1:Y=V+2:GOSUB 360 6670 X=W-1:C=47:GOSUB 360 6680 GOSUB 440 6690 GOSUB 8140 6700 J=0 6710 GOTO 5710 6720 IF W=22 AND V=1 THEN 8050 6730 IF V<24 AND V>16 AND W=46 THEN 6780 6740 IF V<19 AND V>11 AND W=6 THEN 6780 6750 IF V<14 AND V>6 AND W=46 THEN 6780 6760 IF V<9 AND V>1 AND W=22 THEN 6780 6770 GOTO 5710 6780 V=V-1 6790 X=W:Y=V+1:C=32:GOSUB 360 6800 X=W-1:Y=V+2:GOSUB 360 6810 X=W:GOSUB 360 6820 X=W+1:GOSUB 360 6830 X=W+1:Y=V+3:GOSUB 360 6840 X=W-1:GOSUB 360 6850 GOSUB 440 6860 X=W:Y=V:C=13:GOSUB 360 6870 X=W-1:Y=V+1:C=47:GOSUB 360 6880 X=W:C=0:GOSUB 360 6890 X=W+1:C=92:GOSUB 360 6900 X=W+1:Y=V+2:GOSUB 360 6910 X=W-1:C=47:GOSUB 360 6920 GOSUB 440 6930 IF V=16 AND W=46 THEN GOSUB 10020 6940 IF V=11 AND W=6 THEN GOSUB 9880 6950 IF V=6 AND W=46 THEN GOSUB 9740 6960 IF V=1 AND W=22 THEN GOSUB 9600 6970 GOSUB 8140 6980 J=0:GOTO 5710 6990 IF V>1 AND V<6 AND W=22 THEN 7040 7000 IF V>4 AND V<11 AND W=46 THEN 7040 7010 IF V>9 AND V<16 AND W=6 THEN 7040 7020 IF V>14 AND V<21 AND W=46 THEN 7040 7030 GOTO 5710 7040 V=V+1 7050 X=W:Y=V-1:C=32:GOSUB 360 7060 X=W-1:Y=V:GOSUB 360 7070 X=W:GOSUB 360 7080 X=W+1:GOSUB 360 7090 X=W+1:Y=V+1:GOSUB 360 7100 X=W-1:GOSUB 360 7110 GOSUB 440 7120 X=W:Y=V:C=13:GOSUB 360 7130 X=W-1:Y=V+1:C=47:GOSUB 360 7140 X=W:C=0:GOSUB 360 7150 X=W+1:C=92:GOSUB 360 7160 X=W+1:Y=V+2:GOSUB 360 7170 X=W-1:C=47:GOSUB 360 7180 GOSUB 440 7190 GOSUB 8140 7200 J=0:GOTO 5710 7210 W=W+4 7220 IF NOT (V=6 OR V=11 OR V=16 OR V=21) THEN 5710 7230 X=W-4:Y=V:C=32:GOSUB 360  7240 X=W-5:Y=V+1:GOSUB 360 7250 X=W-4:GOSUB 360 7260 X=W-3:GOSUB 360 7270 X=W-3:Y=V+2:GOSUB 360 7280 X=W-5:GOSUB 360 7290 GOSUB 440 7300 X=W-3:Y=V-1:C=92:GOSUB 360 7310 X=W-2:C=13:GOSUB 360 7320 X=W-1:C=47:GOSUB 360 7330 X=W-2:Y=V:C=0:GOSUB 360 7340 X=W-1:Y=V+1:C=92:GOSUB 360 7350 X=W-3:C=47:GOSUB 360 7360 GOSUB 440 7370 V=V-1 7380 GOSUB 8140 7390 V=V+1 7400 X=W-3:Y=V-1:C=32:GOSUB 360 7410 X=W-2:GOSUB 360 7420 X=W-1:GOSUB 360 7430 X=W-2:Y=V:GOSUB 360 7440 X=W-1:Y=V+1:GOSUB 360 7450 X=W-3:GOSUB 360 7460 GOSUB 440 7470 V=V-1 7480 GOSUB 8140 7490 V=V+1 7500 X=W:Y=V:C=13:GOSUB 360 7510 X=W-1:Y=V+1:C=47:GOSUB 360 7520 X=W:C=0:GOSUB 360 7530 X=W+1:C=92:GOSUB 360 7540 X=W+1:Y=V+2:GOSUB 360 7550 X=W-1:C=47:GOSUB 360 7560 IF W>50 THEN 7600 7570 GOSUB 440 7580 GOSUB 8140 7590 GOTO 5710 7600 IF W=52 THEN 7620 7610 W=50:GOTO 7500 7620 X=52:Y=16:C=32:GOSUB 360 7630 Y=17:GOSUB 360 7640 GOTO 7610 7650 W=W-4 7660 IF NOT (V=6 OR V=11 OR V=16 OR V=21) THEN 5710 7670 X=W+4:Y=V:C=32:GOSUB 360 7680 X=W+3:Y=V+1:GOSUB 360 7690 X=W+4:GOSUB 360 7700 X=W+5:GOSUB 360 7710 X=W+5:Y=V+2:GOSUB 360 7720 X=W+3:GOSUB 360 7730 GOSUB 440 7740 X=W+1:Y=V-1:C=92:GOSUB 360 7750 X=W+2:C=13:GOSUB 360 7760 X=W+3:C=47:GOSUB 360 7770 X=W+2:Y=V:C=0:GOSUB 360 7780 X=W+3:Y=V+1:C=92:GOSUB 360 7790 X=W+1:C=47:GOSUB 360 7800 GOSUB 440 7810 V=V-1 7820 GOSUB 8140 7830 V=V+1 7840 X=W+1:Y=V-1:C=32:GOSUB 360 7850 X=W+2:GOSUB 360 7860 X=W+3:GOSUB 360 7870 X=W+2:Y=V:GOSUB 360 7880 X=W+3:Y=V+1:GOSUB 360 7890 X=W+1:GOSUB 360 7900 GOSUB 440 7910 GOSUB 8140 7920 X=W:Y=V:C=13:GOSUB 360 7930 X=W-1:Y=V+1:C=47:GOSUB 360 7940 X=W:C=0:GOSUB 360 7950 X=W+1:C=92:GOSUB 360 7960 X=W+1:Y=V+2:GOSUB 360 7970 X=W-1:C=47:GOSUB 360 7980 IF W<2 THEN 8040 7990 GOSUB 440 8000 V=V-1 8010 GOSUB 8140 8020 V=V+1 8030 GOTO 5710 8040 W=2:GOTO 7920 8050 PRINT CHR$(26) 8060 PRINT CHR$(7) 8070 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT 8080 PRINT TAB(19)"YOU MADE IT!!!" 8090 FOR I=1 TO 500:NEXT 8100 PRINT CHR$(26) 8110 PRINT CHR$(7) 8120 FOR I=1 TO 500:NEXT 8130 GOTO 8060 8140 FOR H=1 TO 2 8150 R=R(H):T=T(H) 8160 IF T=22 AND R=1 THEN 8380 8170 IF T=7 OR T=17 THEN 8190 8180 IF T=12 OR T=22 THEN 8260 8190 R=R+1 8200 IF R=53 THEN 8340 8210 POKE T*128+BASE!+(R-1),32 8220 POKE T*128+BASE!+R,13 8230 IF NOT (V=T-1 OR V=T OR V=T+1) THEN 8400 8240 IF W-1=R OR W=R OR W+1=R THEN 8430 8250 GOTO 8400 8260 R=R-1 8270 IF R<1 THEN 8360 8280 POKE T*128+BASE!+(R+1),32 8290 IF V=T+1 AND R?@APINGPONGBAS0BCDEFGPINGPONGDOCHRND-WALKBASIRND-WALKDOCJSLOTS BASXKLMNOPQRSTUSLOTS DOCVWSNOW BASXKONG BASpYZ[\]^_`abcdefGRAPH PRN ghKONG $$$LIFE3 PATuLIFE4 PATvLIFEASC COMgwxyz{|}~10 OPEN"I",1,"B:PICT.BAS 20 PRINT CHR$(26) 30 IF EOF(1) THEN 70 40 INPUT#1,ROW,COL,C 50 POKE ROW*128+61440!+COL,C 60 GOTO 30 70 CLOSE#1 PICT.BAS 20 PRINT CHR$(26) 30 IF EOF(1) THEN 70 40 INPUT#1,ROW,COL,C 50 POKE ROW*128+61440!+COL,C 60 GOTO 3SEARCH BASSEARCH DOCBREAKOUTBAS !CROSSPUZBAS/"#$%&'DUCK BAS5()*+,-.DUCK DOC/E-SKETCHBAS012ESCAPE BAS&34567GUNNER-2BAS89:;GUNNER-2DOC<HANOI BAS!=>?@APINGPONGBAS0BCDEFGPINGPONGDOCHRND-WALKBASIRND-WALKDOCJSLOTS BASXKLMNOPQRSTUSLOTS DOCVWSNOW BASXKONG BASpYZ[\]^_`abcdefGRAPH PRN ghKONG DOCiPRITPICT$$$LIFE4 PATvLIFEASC COMgwxyz{|}~ 13 26 22 14 27 22 15 28 22 16 29 22 17 30 22 17 30 32 16 29 22 16 29 32 15 28 22 15 28 32 14 27 22 14 27 32 13 26 22 14 27 9 15 28 9 16 29 9 17 30 9 18 31 9 19 32 9 20 33 9 20 34 9 20 35 9 20 36 9 20 37 9 20 38 9 20 39 9 20 40 9 20 41 9 19 42 9 18 43 9 17 44 9 16 44 9 15 44 9 14 44 9 13 44 9 12 44 9 11 44 9 10 44 9 9 44 9 8 44 9 7 44 9 7 43 9 7 42 9 7 41 9 7 40 9 7 39 9 7 38 9 7 37 9 7 36 9 7 35 9 7 34 9 7 33 9 7 32 9 7 31 9 7 30 9 7 29 9 7 28 9 7 27 9 7 26 9 7 25 9 8 24 9 9 23 9 10 22 9 11 21 9 12 20 9 12 20 32 11 21 9 11 21 32 10 22 9 10 22 32 9 23 9 9 23 32 8 24 9 8 24 32 7 25 9 8 25 9 9 25 9 10 25 9 11 25 9 12 25 9 13 25 9 13 24 9 13 23 9 13 22 9 13 21 9 13 20 9 13 19 9 12 19 7 11 19 7 10 19 7 9 19 7 8 19 7 7 19 7 6 19 7 5 19  7 4 19 7 3 19 7 2 19 7 1 19 7 23 18 7 22 17 7 21 16 7 20 15 7 20 15 32 21 16 7 22 17 7 22 17 32 22 17 32 23 18 7 23 18 32 22 17 7 22 17 32 21 16 7 21 16 32 20 15 7 20 15 32 19 14 7 19 14 32 18 14 7 17 14 7 16 14 7 15 14 7 14 14 7 13 14 7 12 14 7 11 14 7 10 14 7 9 14 7 8 14 7 7 14 7 6 14 7 5 14 7 4 14 7 3 14 7 2 14 7 1 14 7 1 15 7 1 16 7 1 17 7 1 18 7 1 19 7 1 18 7 1 17 7 1 16 7 1 15 7 1 14 7 1 13 7 1 12 7 1 11 7 1 10 7 1 9 7 1 8 7 1 7 7 1 6 7 1 5 7 1 4 7 1 3 7 1 2 7 1 1 7 1 51 7 1 50 7 1 49 7 1 50 7 1 51 7 1 1 7 1 2 7 1 3 7 1 4 7 2 4 7 2 3 7 2 2 7 2 1 7 2 51 7 2 50 7 1 50 7 1 50 7 1 50 7 1 50 7 1 50 7 1 50 7 1 50 7 1 50 7 1 50 7 2 50 7 3 50 7 4 50 7 5 50 7 6 50 7 7 50 7 8 50 7 9 50 7 10 50 7 11 50 7 12 50 7 12 50 7  7 2 50 7 3 50 7 4 50 7 5 50 7 6 50 7 7 50 7 8 50 7 9 50 7 10 50 7 11 50 7 12 50 7 12 50 32 22 17 32 23 18 7 23 18 32 22 17 7 22 17 32 21 16 7 21 16 32 20 15 7 20 15 32 19 14 7 19 14 32 18 14 7 17 14 7 16 14 7 15 14 7 14 14 7 13 14 7 12 14 7 11 14 7 10 14 7 9 14 7 8 14 7 7 14 7 6 14 7 5 14 7 4 14 7 3 14 7 2 14 7 1 14 7 1 15 7 1 16 7 1 17 7 1 18 7 1 19 7 1 18 7 1 17 7 1 16 7 1 15 7 1 14 7 1 13 7 1 12 7 1 11 7 1 10 7 1 9 7 1 8 7 1 7 7 1 6 7 1 5 7 1 4 7 1 3 7 1 2 7 1 1 7 1 51 7 1 50 7 1 49 7 1 50 7 1 51 7 1 1 7 1 2 7 1 3 7 1 4 7 2 4 7 2 3 7 2 2 7 2 1 7 2 51 7 2 50 7 1 50 7 1 50 7 1 50 7 1 50 7 1 50 7 1 50 7 1 50 7 1 50 7 1 50 7 2 50 7 3 50 7 4 50 7 5 50 7 6 50 7 7 50 7 8 50 7 9 50 7 10 50 7 11 50 7 12 50 7 12 50 10 PRINT CHR$(26) 20 PRINT TAB(23)"SKETCH" 30 PRINT TAB(19)"BY DAVID ANNING" 40 PRINT TAB(20)"JULY 1, 1982" 50 PRINT 60 PRINT" 'SKETCH' IS JUST LIKE AN ETCH-A-SKETCH. USE THE" 70 PRINT"NUMARIC KEY PAD FOR THE DIRECTION OF YOUR CHARACTER" 80 PRINT"TO BE PRINTED IN. THERE ARE ALSO OTHER OPERATIONS." 90 PRINT:PRINT:PRINT TAB(19)"IN SKETCH MODE:":PRINT 100 PRINT"'1-4','6-9' PRINT A CHARACTOR IN THEIR DIRECTION" 110 PRINT"'5'-TYPE A CHARACTOR'S NUMBER . IN THE BACK OF" 120 PRINT" THE OSBORNE MANUAL, STARTING THE NINTH TO LAST" 130 PRINT" AND ENDING AT THE FIFTH TO LAST PAGE, ARE THE" 140 PRINT" CHARACTORS.THE FIRST ONE, 0, IS A BOX." 150 PRINT"'B'-TYPE B, THEN THE NUMBER IN THE DIRECTION YOU" 160 PRINT" WANT AND IT WILL PRINT A BLANK AT THAT PLACE" 170 PRINT"'C'-TYPE C, AND THE SCREEN WILL CLEAR" 180 PRINT"'F'-TYPE F, WHEN YOU ARE FINISHED" 190 PRINT:PRINT 200 PRINT TAB(16)"TO CONTINUE HIT RETURN" 210 X$=INKEY$ 220 IF X$=CHR$(13)THEN GOTO 870 230 GOTO 210 240 DIM ROW(1000):DIM COL(1000):DIM C(500):DIM M(500) 250 CLOSE#1 260 OPEN"O",1,"B:PICT.BAS 270 FILES "B:PICT.BAS 280 PRINT CHR$(26) 290 ROW=12 300 NUM=128 310 BASE=61440! 320 COL=25 330 C=22 340 GOTO 400 350 INPUT;C 360 PRINT CHR$(30) 370 PRINT" " 380 PRINT CHR$(30) 390 GOTO 400 400 A$=INPUT$(1) 410 IF A$="1" THEN ROW=ROW+1 420 IF A$="1" THEN COL=COL-1 430 IF A$="2" THEN ROW=ROW+1 440 IF A$="3" THEN ROW=ROW+1 450 IF A$="3" THEN COL=COL+1 460 IF A$="4" THEN COL=COL-1 470 IF A$="5" THEN GOTO 350 480 IF A$="6" THEN COL=COL+1 490 IF A$="7" THEN ROW=ROW-1 500 IF A$="7" THEN COL=COL-1 510 IF A$="8" THEN ROW=ROW-1 520 IF A$="9" THEN ROW=ROW-1 530 IF A$="9" THEN COL=COL+1 540 IF ROW>23 THEN ROW=1 550 IF ROW<1 THEN ROW=23 560 IF COL>51 THEN COL=1 570 IF COL<1 THEN COL=51 580 IF A$="C" THEN GOTO 1630 590 IF A$="F" THEN 870 600 IF C=<0 THEN C=22 610 IF C=>255 THEN C=22 620 IF A$="B"THEN GOTO 670 630 POKE ROW*NUM+BASE+COL,C 640 PRINT#1,ROW;COL;C; 650 GOTO 400 660 GOTO 400 670 FOR X=1 TO 300 680 NEXT 690 CA=32 700 M=32 710 POKE ROW*NUM+BASE+COL,CA 720 PRINT#1,ROW;COL;M; 730 GOTO 400 740 CLOSE#1 750 OPEN"I",1,"B:PICT.BAS 760 PRINT CHR$(26) 770 IF EOF(1)THEN GOTO 810 780 INPUT#1,ROW,COL,C 790 POKE ROW*128+61440!+COL,C 800 GOTO 770 810 PRINT TAB(7) "TYPE 'R' TO RETURN OR 'P' TO REPRINT " 820 CLOSE#1 830 C$=INKEY$ 840 IF C$="R" THEN GOTO 870 850 IF C$="P" THEN GOTO 740 860 GOTO 830 870 PRINT CHR$(26) 880 A=1 890 A=A+1 900 POKE 0*128+61440!+A,22 910 IF A=52 THEN 930 920 GOTO 890 930 B=1 940 B=B+1 950 POKE B*128+61440!+51,22 960 IF B=24 THEN 980 970 GOTO 940 980 C=52 990 C=C-1 1000 POKE 23*128+61440!+C,22 1010 IF C=0 THEN 1030 1020 GOTO 990 1030 D=24 1040 D=D-1 1050 POKE D*128+61440!+0,22 1060 IF D=0 THEN GOTO 1080 1070 GOTO 1040 1080 FOR F=1 TO 5 1090 PRINT CHR$(13) 1100 NEXT 1110 PRINT TAB(18)"1 -MAKE A PICTURE":PRINT 1120 PRINT TAB(18)"2 -PRINT A FILE":PRINT 1130 PRINT TAB(18)"3 -RETURN TO BEGINNING": PRINT 1140 PRINT TAB(18)"4 -QUIT":PRINT 1150 PRINT TAB(18)"5 -IMFORMATION" 1160 A=1 1170 A=A+1 1180 POKE A*128+61440!+0,22 1190 IF A=24 THEN 1210 1200 GOTO 1170 1210 PRINT CHR$(30) 1220 A=1 1230 A=A+1 1240 POKE 0*128+61440!+A,22 1250 IF A=30 THEN GOTO 1270 1260 GOTO 1230 1270 POKE 23*128+61440!+1,22 1280 E$=INKEY$ 1290 POKE 0*128+61440!+1,22 1300 POKE 1*128+61440!+51,22 1310 IF E$="1" THEN 260 1320 IF E$="2" THEN 740 1330 IF E$="3" THEN 10 1340 IF E$="4"THEN GOTO 1370 1350 IF E$="5"THEN 1430 1360 GOTO 1280 1370 PRINT CHR$(26) "DO YOU REALLY WANT TO QUIT":INPUT G$ 1380 IF G$="Y" THEN 1650 1390 IF G$="N"THEN 870 1400 IF G$="NO" THEN 870 1410 IF G$="YES" THEN 1650 1420 GOTO 1370 1430 PRINT CHR$(26):PRINT" WHEN YOU SKETCH A PICTURE, AND THEN SKETCH " 1440 PRINT"ANOTHER PICTURE, IT SAVES THE NEW PICTURE OVER THE" 1450 PRINT"OLD PICTURE. IF YOU WANT TO SAVE TO A DIFFERENT " 1460 PRINT"FILE YOU HAVE TO DO SOME EDITTING. HERE IS WHAT TO " 1470 PRINT"CHANGE:" 1480 PRINT:PRINT 1490 PRINT"' IS USED INSTEAD OF DOUBLE BECAUSE OF PRINT" 1500 PRINT" STATEMENT":PRINT 1510 PRINT" REPLACE 'B:PICT.BAS' WITH 'B:(NEWFILE).BAS'" 1520 PRINT:PRINT 1530 PRINT TAB(12)"260 OPEN 'I',1,'B:PICT.BAS 1540 PRINT TAB(12)"270 FILES'B:PICT.BAS" 1550 PRINT TAB(12)"750 OPEN'I',1,'B:PICT.BAS" 1560 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT 1570 PRINT TAB(17)"HIT RETURN" 1580 K$=INKEY$ 1590 IF K$=CHR$(13) THEN 870 1600 GOTO 1580 1610 PRINT CHR$(26) 1620 GOTO 770 1630 CLOSE#1 1640 GOTO 260 1650 PRINT CHR$(26):END $=CHR$(13) THEN 870 1HR$(26) "DO YOU REALLY WANT TO QUIT":INPUT G$ 1380 IF G$="Y" THEN 1650 1390 IF G$="N"THEN 870 1400 IF G$="NO" THEN 870 1410 IF G$="YES" THEN 1650 1420 GOTO 1370 1430 PRINT CHR$(26):PRINT" WHEN YOU SKETCH A PICTURE, AND THEN SKETCH " 1440 PRINT"ANOTHER PICTURE, IT SAVES THE NEW PICTURE OVER THE" 1450 PRINT"OLD PICTURE. IF YOU WANT TO SAVE TO A DIFFERENT " 1460 PRINT"FILE YOU HAVE TO DO SOME EDITTING. HERE IS WHAT TO " 1470 PRINT"CHANGE:" 1480 PRINT:PRINT 1490 PRINT"' IS USED INSTEAD OF DOUBLE SKET is an etch-a-sktech game, which will save the sketch on a file for later redisplay using PRITPICT. PICT is a file used by PRITPICT and by SKET. RND-WALKDOCSEARCH BASSEARCH DOCSLOTS BASXSLOTS DOCSNOW BAS ͫCopyright (C) 1985 BORLAND IncB Osborne 1al SelectedP)(= EE RT(1)1~7#~= oͦkԄ!!"~#(}:$= +*!5!*!!:(2!5:(>2!!!:O::O:!*! !45(! +/ 0y0( d!k5!{5__o&  :(͠|(  *"x2y( >28!"9!! og2"">~22 9/4*9 Co&ͦͣ} [ (!e{ͦA8Q0G: x@!\w# (͂ ?(*( .( w^. ^!h6# (?( *( ͂( w#>?> w#ͦ 8 !ɿ .,;:=?*[]<>{}a{ |ʹ}ͽƐ'@'7||}>2ͯ*Bڨ  "og"2>2! ""*B"[Ru*"^#V#^#V#N#FO/o&9O/o&9!9(> (G!9 w#Eͺw}8' RB0 >' RqRR!+ Ͱ R!+ Ͱ r!+ Ͱ r!+ Ͱ r!# Ͱ r!+ Ͱ T]KB!z> S>))0 = | |̀̀DMgo>jB0 7?= H͒<z5a)a<z {0Gɯgo||~}||/g}/o#}o&K[xAJSJDM!b"!6J"DM'd } ) W _}8(8J`9{T]=o`9y ) >' ́ ͬ͗ }>' xˆ }} ˸T}ٕ(0D=z ,= ( ͒ 0%{ , 7 ?(8ͬ x ͆ - r 8˸x ͏  ,-xG}r }مM 9r .>#n0͒ { = - nx ͇ ,-(-˸G,-r }ٕ?M 9.> 8ͬ ?= u+-(>͆ 0ͬ ͆ 8 ?x ͇ , 78ƀ8ƀ8ox٨!دoGOW_gɷɷ|لg{ً_zيWyىOxوG|ٔg{ٛ_zٚWyٙOx٘Gxٸyٹzٺ{ٻ|ټx٨ xx( ?}ٽ }ցr <(r 7{ = |٤g{٣_z٢Wy١Ox٠G{ ͬ ́ }x>' ͬ}ƀ/ƀo -́ }0͎-́ ͎,}l˸ 8 4 ͗ x( - 8́ - 8,́ }l8;*!͗ ! >4ͬ͗ ͗ ͬ--- ́ ,,,-xGg?+2n*8t z~,->' x' ͘}. ͆́ , ! >4,͢- o&0%,͗ }gr }؉}颋.:}8c~I$I~L*͢ٷx˸ }0G,<},-(-́ !>I0 ͗͘ o8 ͆ >' m.`1pF,t6|!wS<.z}[|%FXc~ur1}͆ٯx(<˸ 8 !~J 0.O!>s 8 =  n s͗ ͆ .n 0 ͎-́ OT0 j oD,:j !I}袋.}8c~I$I~L! >ͬ͗ I× nn ͗ = ͆ nf^VNF!DLT\I!!53!r1!͒!> x #-= o˸x͆(- }(x>8(z ,z `iÃ!>' |r |̀>)=|(DMbo˸88x(0 8> ̀x(>-{(ay( z(>. ( {>E>+|(|Dg>-|/ 0:p# ~# +>0w#,-  60#}˸}րogM| .(z = ~> x0w#xG%͇ %͇ ZJDM%͇ = _~65+~hìx-Sx9?+{Η@}|z z gZJDM0{ ,7}o˸? #yO!@9i&?  #?w#?/w#?w#!9! E9!!9~(+Fͺ!"9!(#>2*"| >"2:( Ͷ *w*6 !\$![ (ͦ( #:~CONTRMKBDLSTCAUXUSR>2i:*ˮ~0:*:(@q##pZ* :(  ~* < >26"!"""~>2""v>2>"!"ˮ(!~8>~O6~*"w(6(2(-()(6 (8 0 :(* y(~#+ (( 66 #6 #"*: y~o p .##~ͺ(.6w4._~ =*##55= *[R8*~#"= ͣ}== ͯ}͵}*#w+#~+>*~('k!0(ˮ]k!8ˮ!]~-#8~>27kˮw>O$6̃s #r$ͣ6̏ k ( (ˮ qk(ˮ ( k ˮ*O:~ ##~._q4((=ʦ==ʩ=ʬò*:4^q*##~6ͺ>2}*|(̓|( ̓6-#[RM8( G> A~#*'C! !TRUEFALSE!9N#Y~#( G~#> >    "~(kѻ(( !0 (ˮ!!>2Sz:0:*6##ww#w$w#w:  ##N#F*B>2w#w#[s#r> "~ͮ*-w#ww##> ͮÁ""~>2:ZR0 *4#4>2:ZR> *4 #4(> >22*f(/˦:G(##~++ :O x yC!ͺ Q*:G(##~._.͚f<\=<͚*##w ͮ +4 #4x >>2:G("ͮ"*nˮ*0 SZѷR8@* N#F#s#r, 0})jS\*##w+ N#FB ͮr+s>2!T]>)j)0 0= ]R!#]*^#V#N#F#^#V>2Ͱ:0:*6 #-Nw#Fwq#p#6#w#w#w"~Á>">!DM!":*B:!>(>2>">!"2"~ʰ*w#wx(9* :O *-4 #4!*4 #4 *-N#Fq#pV+^Bq#pSZѷR&* s#r$ s#rL <?*L!\  <( !\$>2>2L:>!(* \$\<(!3: [1ð\!(7"~> 2"S"Ns#FrB(Z#\: \<(?*"}K\! !*}#"}! x \* *>) 2""{_!"*nf}(HR0nf" ^VMDnfutqp*s#r*s#r"* uKB!0>' ~#fo{_"*R0RnfR0KqputsrNF( ^VNF^V*SutKqp R*R(~w~wnf ut"6#K*K*!""*NFy(* "*B0Cnf* [R*"*RS[s#r^#V""6#>O"w2x2*"!F"" &y*"*>2"*"!F"""!\*: Nr!~6go(\R*s#r_2x( s x(T]DMx(R0 U(͝O/o&9q# (!>F0#( ~ ( #]( ~ ( (#}(  i&T-a%â}ͦo*!~6o&|:2 2}:__zѯ2*|KB " z ^C User break+=  I/O Run-time error {ʹ, PC=*ͯNot enough memory Program aborted :ʎ'1!d!;#B>ü:TJQKASPHEDICLNO!}2!}2!!4fzʱ!"!*+)*&s!*+)*&s*&!Eʙ!*&!Eʏ!*&#}2!}2è!*&!}2*#,!!!4fz.""H!5*R;*"!*+)!*+)!*+)!*+)!*#ü!!!4fzh""!*+)!*+)*#9"!!fz"}2!!fz"}2!k*&))))*&)́#*&#È"*&#s"!!4fzʒ#"*&!E#!}2 #*&#}2!*+)n&}2!*+)n&}2!k*&))))*&)!k*&))))*&)]́*&͑#*#">͛ͺESC !$!͛ͺNorth !!͛ͺWest !2!͛ͺEast !$!͛ͺSouth !!fz{%}2!!fzp%}2}*&RR$!*}&! ì$Rq$!*}&!ì$R$!-*}&! ì$R¬$!*}&!!!*}&):͛!ͪ !!vze%}2|*|&!k*&))))*}&)]OEZ%*|&! E8%*|&͛!& Z%! *|&n&͛e.!ͪ *|&+$*}&#%$*&#$!!fz%}2!!fz%}2s!k*&))))*s&)́#*s&#Ü%*&#Ç%!!4fzʦ&"*&!E&!}2&*&#}2!*+)n&}2r!*+)n&}2s!k*&))))*s&)!k*&))))*s&)]́*r&͑#*#%!!fz'}2!"f!!fz'}2i!"d!!fz6'}2h*h&!k*&))))*i&)]OE+'*d#"d*h&#&! !fzʟ'}2h*h&!k*&))))*i&)]OEʔ'*f*h&! R"f*h&#A'!k*&)))) *i&*ds*i&#&!k*&))))*fs*&#ò&!!͛!("!k!))))n&!&ͺ points) !*!͛!("!k!))))n&!&ͺ points) !7!͛!("!k!))))n&!&ͺ points) !*!͛!("!k!))))n&!&ͺ points) !!͛ͺ Contract:  !ͩ!D *&́!1!7͛OEv)*&͛"! " !!͙**&!Eʕ)!}2Î+**&! Eʷ)!!͙**&́!1!7͛O}oE*!!͛ͺTry again... (3 N or 4 H, etc) ! !*&́!1!7͛OE )! !!ͩ!D *&}2*&́!N͑!S͑!H͑!D͑!C͑OEʠ**&͛" !!͙_+*&!Eʸ* )_+*&!E*!}2Î+_+*&! E*!!͙_+*&́!N͑!S͑!H͑!D͑!C͑O}oE_+!!͛ͺTry again... (3 N or 4 H, etc) *&́!N͑!S͑!H͑!D͑!C͑OE.*!}2!!͛ͺBy:  !!!ͩ!D *&́!N͑!S͑!E͑!W͑OE,͛*&" !!͙ß,*&! E6,!!͙ß,*&́!N͑!S͑!E͑!W͑!͑O}oEʟ,!!͛ͺPlease enter only N, S, E, or W *&́!N͑!S͑!E͑!W͑!͑OEʮ+*&WR-!k!))))A!k!))))!k!))))!k!))))!k!))))!k!))))!k!))))!k!))))!A͓#!!͛ͺ Contract: *&"! "*&" V0NR.!k!))))A!k!))))!k!))))!k!))))!A!k!))))A!k!))))!k!))))!k!))))!A͓#!!͛ͺ Contract: *&"! "*&" V0ER/!k!))))A!k!))))!k!))))!k!))))!k!))))!k!))))!k!))))!k!))))!A͓#!!͛ͺ Contract: *&"! "*&" V0SRE0!!͙!*!͙!2!͛ͺEast !*!͙!!͙V0RV0!}2u0*&"0*&}25*&}28!".!",!}2*&SR£0!}270HR·0!}270DR0!}270CR0!}270NR0!}27!/!͛ͺPlays/TricksLost: *,! Eʰ:!!fz9"!}2+*&R[1!!Ý1Rr1!+!Ý1R‰1!8!Ý1R1!+!*!͒!k*&))))*6&)]́}oEM2*6&R1͛!S" A2R2͛!H" A2R+2͛!D" A2RA2͛!C" *6&}284!ͩ!3D *3&SRw2!}2/3HR‹2!}2/3DRŸ2!}2/3CR³2!}2/3R2÷:/3 R2!!͙@1/3!}2+!!͙͛ͺ1The suit can only be S, H, D, or C. Try again... !k*&))))*&)]́*3&́!S͑!H͑!D͑!C͑O}o*3&! ͒}oE3!}2+!!͛ͺ4You don't have any cards in that suit. Try again... 84*3&́!S͑!H͑!D͑!C͑OE84͛*3&" !!͙*+&!E91!}2+*&Rl4!!î4Rƒ4!-!î4Rš4!:!î4R®4!-!!ͩ!2D *2&}22*2&!E4@15*2&!E4ó:5*2&! E5!!͙Q4*2&e.M 23456789TJQKAͲ}2*&!k*&))))*&)]OEʃ5͛*2&" !!͙*&!k*&))))*&)]O}oEʃ6*2&!S*2&!H}o*2&!D}o*2&!C}oEK6͛ͺ0The suit has already been entered. Try again... |6͛ͺ'You don't have that card. Try again... !}2+*+&!EJ4!k*&))))*&)!k*&))))*&)]́*&͑&#*&R7!*&! ͙!-*&! !!*&):͛!ͪ !!vz7}24*4&!k!))))*&)]OE7*4&! Eʫ7*4&͛!& 7! *4&n&͛e.!ͪ *4&+J7!*&! P8R8!!*&!͙P8R18!/*&! ͙P8RP8!!*&!͙!!vz8}24*4&!k*&))))*&)]OE8*4&! Eʾ8*4&͛!& 8! *4&n&͛e.!ͪ *4&+[8*!E9*&}26Z0*5&*7&*&*7&}o*&*0}oED9Z0*5&*7&͒*&*7&}oEo9Z0*&*5&*&*0}oEʘ9Z0*&!Eʴ9!}2þ9*&#}2*#01*8&R9!}2*.!".0:R9!}20:R:!}2*.!".0:R0:!}2*,#",!@!*,͛!&!/"*.!& !!͙!+!͙!8!͙!+!͙!2!͛ͺEast 1û:ð:ð:!N}2!}2>*&!Y͒E:!:|%͓#ͧ& )*&!E;͏+*&!E;W0!!͙͛ͺ(Do you want to see the deal again (Y/N)? !ͩ!D *&}2*&!Y͒E;!!͙͛ͺANOTHER DEAL (Y/N)? !ͩ!D *&}2*&!N*&!N}oE:> &!Y!͙P8R18!/*&! ͙P8RP8!!*&!͙!!vz8}24*4&!k*&))))*&)]OE8*4&! Eʾ8*4&͛!& 8! *4&n&͛e.!ͪ *4&+[8*!E9*&BRIDGE, submitted by Doug Cox, is a bridge card game played against yourself. It was written using Turbo Pascal. Decide upon and enter the contract (e.g., 1N or 4H). To rotate the declarer around to South, enter his original position (e.g., N, E, S, or W). Play cards by entering a suit followed by a card (e.g., HQ or D7). See BRIDGE.DOC for further information. SLOTS DOCSNOW BAS Jan, '84 BRIDGE This is a simple play-against-yourself program. Run it from CP/M. When you get the A> prompt, print BRIDGE (or bridge) and press return. I think the game is self-explanatory. (Use Control-H to back- space.) Doug Cox FOG memberSLOTS DOCSNOW BASprogram Bridge; (* written in TURBO PASCAL Aug '84 for a 52 column Osborne 1 *) type Suit= (sp,he,di,cl,no); Rank= 2..14; Players= (w,n,e,s); Deck= record CardRank: Rank; CardSuit: Suit; end; HandFull= record Cards: array[Suit] of set of Rank; NumCards: array[Suit] of 0..13; Points: 0..40; Bid: string[2]; end; HandArray= array[Players] of HandFull; Card= array[1..52] of Deck; var player: Players; cardPlayed: Deck; hand: HandArray; cd: Card; ans, reDispl, amt, sute: char; quit: boolean; j: integer; const name: array[10..14] of char= 'TJQKA'; suitName: array[Suit] of string[2]= ('SP','HE','DI','CL','NO'); procedure Deal; var vSuit: Suit; vRank: Rank; vCard: Deck; cardDeck: Card; cardNo: integer; begin vRank:= 2; vSuit:= sp; for j:= 1 to 52 do (*Put cards in arrays*) begin cardDeck[j].CardRank:= vRank; cardDeck[j].CardSuit:= vSuit; if vRank= 14 then begin if vSuit < cl then vSuit:= succ(vSuit); vRank:= 2; end else vRank:= vRank+1; end; for j:= 1 to 52 do (*Shuffle*) begin Randomize; cardNo:= random(53-j)+j; vCard:= cardDeck[j]; cardDeck[j]:= cardDeck[cardNo]; cardDeck[cardNo]:= vCard; end; for j:= 1 to 52 do cd[j]:= cardDeck[j]; for player:= w to s do (*Initialize*) for vSuit:= sp to cl do hand[player].Cards[vSuit]:= []; for j:= 1 to 52 do (*Deal*) begin if player= s then player:= w else player:= succ(player); vRank:= cardDeck[j].CardRank; vSuit:= cardDeck[j].CardSuit; hand[player].Cards[vSuit]:= hand[player].Cards[vSuit] + [vRank]; end; end; procedure Display; var vSuit: Suit; vRank: Rank; begin ClrScr; write ('ESC'); GotoXY(36,1); write ('North'); GotoXY(21,8); write ('West'); GotoXY(50,8); write ('East'); GotoXY(36,15); write ('South'); for player:= w to s do  for vSuit:= sp to cl do begin case player of w: GotoXY(16,ord(vSuit)+10); n: GotoXY(31,ord(vSuit)+3); e: GotoXY(45,ord(vSuit)+10); s: GotoXY(31,ord(vSuit)+17); end; write (suitName[vSuit]:2); for vRank:= 14 downto 2 do if vRank in hand[player].Cards[vSuit] then if vRank < 10 then write (vRank:3) else write (name[vRank]:3); end; end; procedure ReDisplay; var vSuit: Suit; vRank: Rank; begin for player:= w to s do (*Initialize*) for vSuit:= sp to cl do hand[player].Cards[vSuit]:= []; for j:= 1 to 52 do begin if player= s then player:= w else player:= succ(player); vRank:= cd[j].CardRank; vSuit:= cd[j].CardSuit; hand[player].Cards[vSuit]:= hand[player].Cards[vSuit] + [vRank]; end; end; procedure Evaluate; var vSuit: Suit; vRank: Rank; value, noCards: integer; begin for player:= w to s do begin  value:= 0; for vSuit:= sp to cl do begin noCards:= 0; for vRank:= 2 to 14 do if vRank in hand[player].Cards[vSuit] then noCards:= Succ(noCards); (*number of cards in suit*) for vRank:= 11 to 14 do (*J,Q,K,A*) if (vRank in hand[player].Cards[vSuit]) then value:= value+(vRank-10); hand[player].NumCards[vSuit]:= noCards; end; (*for vSuit*) hand[player].Points:= value; end; (*for player*) GotoXY(26,8); write ('(', hand[w].Points:2,' points)'); GotoXY(42,1); write ('(', hand[n].Points:2,' points)'); GotoXY(55,8); write ('(', hand[e].Points:2,' points)'); GotoXY(42,15); write ('(',hand[s].Points:2,' points)'); end; procedure Contract; label R; begin R:repeat GotoXY(1,22); write ('Contract: '); read (Kbd, amt); if amt in ['1'..'7'] then begin write (amt,' '); GotoXY(1,24); ClrEol; end else if amt= #27 then begin quit:= True;  Exit; end else if amt= ' ' then begin GotoXY(1,24); ClrEol; end else if not (amt in ['1'..'7']) then begin GotoXY(1,24); write ('Try again... (3 N or 4 H, etc)'); GotoXY(11,22); end; until (amt in ['1'..'7']); repeat GotoXY(13,22); read (Kbd, sute); sute:= UpCase(sute); if sute in ['N','S','H','D','C'] then begin write (sute); GotoXY(1,24); ClrEol; end else if sute= chr(08) then goto R else if sute= #27 then begin quit:= True; Exit; end else if sute= ' ' then begin GotoXY(1,24); ClrEol; end else if not (sute in ['N','S','H','D','C']) then begin GotoXY(1,24); write ('Try again... (3 N or 4 H, etc)'); end; until (sute in ['N','S','H','D','C']); end; procedure Rotate; var tHand: HandFull; begin quit:= False; GotoXY(15,22); write ('By: '); repeat GotoXY(19,22); read (Kbd, ans); if UpCase(ans) in ['N','S','E','W'] then begin write (UpCase(ans)); GotoXY(1,24); ClrEol; end else if ans= ' ' then begin GotoXY(1,24); ClrEol; end else if not (UpCase(ans) in ['N','S','E','W',#27]) then begin GotoXY(1,24); write ('Please enter only N, S, E, or W'); end; until UpCase(ans) in ['N','S','E','W',#27]; case UpCase(ans) of 'W': begin tHand:=Hand[w]; Hand[w]:=Hand[n]; Hand[n]:=Hand[e]; Hand[e]:= Hand[s]; Hand[s]:= tHand; Display; GotoXY(1,22); write ('Contract: ',amt,' ',sute); end; 'N': begin tHand:=Hand[n]; Hand[n]:=Hand[s]; Hand[s]:=tHand; tHand:=Hand[w]; Hand[w]:=Hand[e]; Hand[e]:=tHand; Display; GotoXY(1,22); write ('Contract: ',amt,' ',sute); end; 'E': begin tHand:=Hand[e]; Hand[e]:=Hand[n]; Hand[n]:=Hand[w]; Hand[w]:=Hand[s]; Hand[s]:=tHand; Display; GotoXY(1,22); write ('Contract: ',amt,' ',sute); end; 'S': begin GotoXY(26,8); ClrEol; GotoXY(42,1); ClrEol;  GotoXY(50,8); write ('East'); GotoXY(42,15); ClrEol; GotoXY(29,22); ClrEol; end; #27: quit:= True; end; end; procedure Play; label R, R2; var winner: Players; trump, leadSuit, highSuit: Suit; vRank: Rank; tSuit, tRank: char; highCard, tricksLost, plays: integer; error: boolean; procedure Lead; begin highCard:= cardPlayed.CardRank; highSuit:= cardPlayed.CardSuit; winner:= player; end; begin tricksLost:= 0; plays:= 0; player:= w; case UpCase(sute) of 'S': trump:= sp; 'H': trump:= he; 'D': trump:= di; 'C': trump:= cl; 'N': trump:= no; end; GotoXY(47,22); write ('Plays/TricksLost:'); while plays < 13 do begin for j:= 1 to 4 do begin repeat error:= False; R: case player of w: GotoXY(27,8); n: GotoXY(43,1); e: GotoXY(56,8); s: GotoXY(43,15); end; if (j <> 1) and (hand[player].Cards[leadSuit] <> []) then begin case leadSuit of sp: write ('S'); he: write ('H'); di: write ('D'); cl: write ('C'); end; cardPlayed.CardSuit:= leadSuit; end else begin read (Kbd,tSuit); case UpCase(tSuit) of 'S': cardPlayed.CardSuit:= sp; 'H': cardPlayed.CardSuit:= he; 'D': cardPlayed.CardSuit:= di; 'C': cardPlayed.CardSuit:= cl; #27: Exit; ' ': begin GotoXY(1,24); ClrEol; Goto R; end; else begin error:= True; GotoXY(1,24); ClrEol; write ('The suit can only be S, H, D, or C. Try again...'); end; end; if (hand[player].Cards[cardPlayed.CardSuit]= []) and (UpCase(tSuit) in ['S','H','D','C']) and (tSuit <> ' ') then begin  error:= True; GotoXY(1,24); write ('You don''t have any cards in that suit. Try again...'); end else if (UpCase(tSuit) in ['S','H','D','C']) then begin write (UpCase(tSuit)); GotoXY(1,24); ClrEol; end; end; (*else*) until error= False; repeat error:= False; R2: case player of w: GotoXY(29,8); n: GotoXY(45,1); e: GotoXY(58,8); s: GotoXY(45,15); end; read (Kbd, tRank); tRank:= UpCase(tRank); if tRank= chr(08) then goto R else if tRank= #27 then Exit else if tRank= ' ' then begin GotoXY(1,24); ClrEol; Goto R2; end; cardPlayed.CardRank:= pos(UpCase(tRank),' 23456789TJQKA'); if (cardPlayed.CardRank in hand[player].Cards[cardPlayed.CardSuit]) then write (UpCase(tRank)); GotoXY(1,24); ClrEol; if not (cardPlayed.CardRank in hand[player].Cards[cardPlayed.CardSuit]) then begin if (tRank= 'S') or (tRank= 'H') or (tRank= 'D') or (tRank= 'C') then write ('The suit has already been entered. Try again...') else write ('You don''t have that card. Try again...'); error:= True; end; until error= False; hand[player].Cards[cardPlayed.CardSuit]:= hand[player].Cards[cardPlayed.CardSuit] - [cardPlayed.CardRank]; case player of w: begin GotoXY(18,ord(cardPlayed.CardSuit)+10); ClrEol; GotoXY(45,ord(cardPlayed.CardSuit)+10); write (suitName[cardPlayed.CardSuit]:2); for vRank:= 14 downto 2 do if vRank in hand[e].Cards[cardPlayed.CardSuit] then if vRank < 10 then write (vRank:3) else write (name[vRank]:3); GotoXY(18,ord(cardPlayed.CardSuit)+10); end;  n: begin GotoXY(33,ord(cardPlayed.CardSuit)+3); ClrEol; end; e: begin GotoXY(47,ord(cardPlayed.CardSuit)+10); ClrEol; end; s: begin GotoXY(33,ord(cardPlayed.CardSuit)+17); ClrEol; end; end; for vRank:= 14 downto 2 do if vRank in hand[player].Cards[cardPlayed.CardSuit] then if vRank < 10 then write (vrank:3) else write (name[vRank]:3); if j= 1 then begin leadSuit:= cardPlayed.CardSuit; Lead; end; if (highSuit= trump) and (cardPlayed.CardSuit= trump) and (cardPlayed.CardRank > highCard) then Lead; if (highSuit <> trump) and (cardPlayed.CardSuit= trump) then Lead; if (cardPlayed.CardSuit= highSuit) and (cardPlayed.CardRank > highCard) then Lead; if player= s then player:= w  else player:= succ(player); end; (*of 'for'*) case winner of w: begin player:= w; tricksLost:= tricksLost+1; end; n: player:= n; e: begin player:= e; tricksLost:= tricksLost+1; end; s: player:= s; end; plays:= Succ(plays); GotoXY(64,22); write (plays:2,'/',tricksLost); GotoXY(27,8); ClrEol; GotoXY(43,1); ClrEol; GotoXY(56,8); ClrEol; GotoXY(43,15); ClrEol; GotoXY(50,8); write ('East'); end; (*of 'while'*) end; Begin (*MAIN PART*) reDispl:= 'N'; repeat quit:= False; ClrScr; if reDispl <> 'Y' then Deal else ReDisplay; Display; Evaluate; Contract; if quit= False then Rotate; if quit= False then Play; GotoXY(1,24); ClrEol; write ('Do you want to see the deal again (Y/N)?'); read (Kbd, reDispl); reDispl:= UpCase(reDispl); if reDispl <> 'Y' then begin GotoXY(20,24); ClrEol; write ('ANOTHER DEAL  (Y/N)?'); read (Kbd, ans); ans:= UpCase(ans); end; until (ans= 'N') and (reDispl= 'N'); ClrScr; End. NOTHER DEALcksLost:= tricksLost+1; end; n: player:= n; e: begin player:= e; tricksLost:= tricksLost+1; end; s: player:= s; end; plays:= Succ(plays); GotoXY(64,22); write (plays:2,'/',tricksLost); GotoXY(27,8); ClrEol; GotoXY(43,1); ClrEol; GotoXY(56,8); ClrEol; GotoXY(43,15); ClrEol; GotoXY(50,8); write ('East'); end; (*of 'while'*) end; Begin (*MAIN PART*) reDispl:= 'N'; repeat quit:= False; ClrScr; if reDispl <> 'Y' then Deal else ReDisplay; Display; Evaluate; Contract; if quit= False then Rotate; if quit= False then Play; GotoXY(1,24); ClrEol; write ('Do you want to see the deal again (Y/N)?'); read (Kbd, reDispl); reDispl:= UpCase(reDispl); if reDispl <> 'Y' then begin GotoXY(20,24); ClrEol; write ('ANOTHER DEAL INTEGER A, B, C, D, E, F, G, H, I, J, K, L, M INTEGER N, O, P, Q, R, S(2), T, U, V, W, X(2) INTEGER Y, Z, L9, N1, R1, SS, XX PRINT CHR$(26) L9=92 DIM S(L9+1,L9+1), X(L9+1,L9+1), M$(72) 20 Y=0:A=0:SS=0 INPUT "PATTERN FILE FOR INPUT";F$ OPEN F$ AS 1 290 INPUT "WHICH GENERATION SHALL THE DISPLAY START WITH";T INPUT "AND THE LAST GENERATION";R1 INPUT "ALSO, HOW MANY SHALL I SKIP";O O=O+1 FOR M=1 TO L9 360 READ #1; LINE MM$ IF MM$="DONE" OR MM$="END" THEN 480 IF LEN(MM$)"*" THEN 490 S(M,R)=1 A=A+1 IF R>SS THEN SS=R 460 NEXT R NEXT M 480 GOTO 520 490 PRINT "'";MID$(MM$,R,1);"' IS NEITHER A ' ' NOR A '*'"; GOTO 1500 520 DIM X(L9+1,L9+1) IF Y<=0 THEN 550 GOTO 20 550 DIM X(0,0) DIM X(L9+1,L9+1) V=0:G=0 Y=M-1:N1=M-1 PRINT CHR$(26);"GENERATION = 0 POPULATION =";A GOSUB 1020 610 G=G+1 A=0:V=0 FOR M=1 TO N1 FOR R=1 TO SS J=0 IF M>L9 OR R>L9 THEN 1370 IF X(M,R+1)<=0 OR R=SS THEN 690 J=J+1 690 IF X(M+1,R+1)<=0 OR M=N1 OR R=SS THEN 710 J=J+1 710 IF X(M+1,R)<=0 OR M=N1 THEN 730 J=J+1 730 IF M=N1 OR R=1 THEN 760 IF X(M+1,R-1)<=0 THEN 760 J=J+1 760 IF R=1 THEN 790 IF X(M,R-1)<=0 THEN 790 J=J+1 790 IF M=1 OR R=1 THEN 820 IF X(M-1,R-1)<=0 THEN 820 J=J+1 820 IF M=1 THEN 850 IF X(M-1,R)<=0 THEN 850 J=J+1 850 IF M=1 OR R=SS THEN 880 IF X(M-1,R+1)<=0 THEN 880 J=J+1 880 IF J=3 THEN 900 IF J<>2 OR X(M,R)<=0 THEN 920 900 S(M,R)=1 A=A+1 920 NEXT R NEXT M IF A=0 THEN 1340 IF G=R1 THEN 970 IF (GINT((G-T)/O) THEN 990 970 PRINT CHR$(26); "GEN=" ;G; TAB(20); "POP=" ;A GOTO 1000 990 V=9 1000 GOSUB 1020 GOTO 610 1020 J=90:A=90 C=0:D=0 FOR M=1 TO N1 FOR R=SS TO 1 STEP -1 IF S(M,R)<=0 THEN 1130 IF MC THEN C=M IF R>D THEN D=R IF V=9 THEN 1130 remark go graphics, print circle, jump out, up a line REMARK OUT......... PRINT TAB(R);CHR$(27);"g";CHR$(13);CHR$(27);"G";CHR$(11) PRINT TAB(R);"*";CHR$(11) 1130 NEXT R IF CONSTAT% THEN GOTO 1600 ELSE GOTO 1160 1600 I%=INKEY WHILE NOT CONSTAT% WEND I%=INKEY IF I%=3 THEN GOTO 1380 IF I%=112 THEN CHAIN "DUMP.COM" IF I%=80 THEN PRINTFLAG=1 1160 IF V=9 THEN 1170 PRINT 1170 NEXT M IF PRINTFLAG=1 THEN CHAIN "DUMP.COM" IF G=R1 THEN 1350 C=C-J+3 D=D-A+3 X(1,5)=3 DIM X(0,0) DIM X(L9+1,L9+1) FOR M=1 TO N1 FOR R=1 TO SS IF S(M,R)<=0 THEN 1270 X(M-J+2,R-A+2)=1 1270 NEXT R NEXT M DIM S(0,0) DIM S(L9+1,L9+1) N1=C SS=D RETURN 1340 PRINT "NO MORE LIFE IN GENERATION";G 1350 PRINT "*** END OF RUN ***" GOTO 1380 1370 PRINT "CELL HAS REACHED LIMITS OF PROGRAM. PROGRAM MUST TERMINATE." 1380 PRINT INPUT "ANOTHER RUN";J$ IF LEFT$(J$,1)="Y" THEN CHAIN "LIFE.COM" ELSE GOTO 1500 1500 END  LIFE.DOC by Edward P. Grant edited by Jim Woolley LIFE.BA wa rewritte fo CB-8 basi b Edwar Gran an i publi domain Th origina progra i -FOG/GAM.00 di no hav a autho mentione i th listing LIFEASC.CO͠ run throug蠠 generatio ver quickly fro t second pe generation. LIFEASC.CO i th compile lif progra usin th CB-8 basi compiler I wil promp yo fo th patter fro file Se LIFE1.PAԠ throug LIFE4.PA fo example o th forma fo patter file Onc th progra i cyclin throug th cell an generatin ne lif yo ca sto th displa b hittin an key Th progra wil no continu unti젠 anothe ke stroke Yo hav堠 thre differen option onc th displa i stopped. 1 Hi capita 'P fo scree dum afte th curren generatio i completel outpu t th screen. 2 Hi lowe cas 'p fo scree dum withou completin th! curren display (Usefu i yo wan t captur th middl par o pattern) 3 Hi contro 'C t abor th curren pattern LIFEASC.CO͠ wil the as yo i yo wan t inpu anothe pattern Repl wit 'Y o 'N'. LIFE.BAӠ i th sourc listin an i compile shoul b compile wit th nam LIFE.CO͠ a i chain itsel whe yo sa 'Y t 'anothe pattern?' LIFE1.PAԠ throug LIFE4.PA ar sampl pattern tha ca b use b LIFEASC.COM Yo ca us WordSta i th non-documen mod t crea patter file Pattern consis o space an asterisks N tab please Remark ca b include i th fil afte th terminatio wor 'DONE o 'END' Onc LIFEASC.CO read th 'DONE o 'END i coul car les wha i o th file DUMP.CO͠ fro FOG/UTL.03 mus b presen o th dis t chai t th scree dump (Se an above. I yo ar goin t us scree dum a anothe patter t inpu t lif the mak sur t remov th statistic a th to o th patter an t ad 'DONE O 'END afte th patter o seperat line. IFE.BAӠ i th sourc listin an i compile shoul b compile wit th nam LIFE.CO͠ a i chain itsel whe yo sa 'Y t 'anothe pattern?' LIFE1.PAԠ throug LIFE4.PA ar sampl pattern tha ca b use b LIFEASC.COM Yo ca us WordSta i th non-documen mod t crea patter file Pattern consis o space an asterisks N tab please Remark ca b include i th fil afte th terminatio wor 'DONE o 'END' Onc LIFEASC.CO read th 'DONE o 'END i coul car les wha i o th file DUMP.CO͠ fro FOG/UTL.03 mus b presen o th dis t chai t th scree dump (Se an above. I yo ar goin t us scree dum a anothe patter t inpu+)LIFEASC 57B!!"4͖* d  =""6#}|B=!"4 "}00-!~G#~ }q+ph##a"p#w *5"5"5"5*5*5*5}!a6#6#q#p*5"5*5|`i"5* ,X5 }HƐ'@'_ ERROR $ AT PC $"DM6#6#!"*{w#zw!">2DM}|*ڄ"^#V{^#V{_zWڄ{zҾ*w#ww#w###s#rq#p#!5#ʄOM+F+N*}|!"~#fo{z }|~#~#~#O~G!}|*##^#V}|?s#r##q#pw#w#~w#~w7!N#F#~#foho}|p`i}W:0!9BKÞ DM!9͞ !9! 9N#F#͞ ͷÖBKw !9DMw ͖DMw !9DM! 9DMw !9DM͖ͷͮ!9DMË ͮË DMw !9DM*!9DMw !9DMͷʹʹ*Lͷͫjͫ!9DMw d͌ͫ! 9DMw !9DMͷ̓j̓ë͌̓ÅDMZ!9DMw ͼ !9!9!9DM w ͮü @PP"5̀*5!9~w{_!y+##!52*5  |g"5!HU >'-lw# M>@2525 5͋ À*%*5§5*5"5>25:5Ww !5:5w 5͋ w !55͞ !5:5w:5W!525w r2525o&G>Ow# $q#,:5!5V5Ϳ M>u5g b!5< 5!5{7>' #i +>'w#>'w #†:525 !5~PM:5M6!5~ U+w# @ }6w{255!5~#!5~#!5q#!5"5~#M/G5*5 +#4?MG5*5'w# :!55*5#  5g !5~ȯw+6+wo:5<25OF!5 怮w J_#~ȓAPw>25`i"5255*5>'#>'#>'#>'#>'#>'#>'>'wڮ*5Ϳ #~'w!5~w:5=825!5ì5͞  5g bDZA}25x25iOG>F25!5r#ti`)!5~'w#… ~ !5 +» #?µ! < !5=> pT]w+ ~w!55G# :5з! !5!55q!55w+) p!555 p5 + + + + + + 'm P'> 'm o g"5`i5â *5|• ɵ!5â ~#~#~#~#~#~#~#~#!5'w#'w#'w#'w#'w#'w#'w!9~A 6/OG #6= x>#w| DM!x& y), )2 )8 )> )D )J )P )| | ʖ zp x)yOxGyxڈ GyO#=t ogeop p )ګ #£ OÍ U `i!:5ANN:5#+ $ ͔$# >$:5ä * ͔*# >*ø . ͔#>.¸ 25S - ͔# .>-¸ >2525OS >25+ \͔̔ä 253 > 25 ͔#2 ,H >252 !5q.d >25͔#d X !5q^w ͔j !5q-ˆ >25͔>255͋ :5O 2525!5r#§ :5ʵ =25:5> â :5 :5!567 y@G /%2525255w 2:525Gy@w:5!5>_ >_ 4!55<25:5!5G:5x :5OxGxҢ 5W?< =… z` zg !5~ʢ bÈ :5 :5!5:5 :5 >-G:5OW* $ $ :5!5  Oz y:5ʩ—:5—:5©×:52> >0> 255g b!5~256:5@25!5 lr6!5p25/O!5 #~ ʌ y25=/25:5>0é:5=!55:525!5~>.:5!5/:5:5G:5G25x:5 !55:5:5M>E!5:5'5~ 2/<-Gyx/ : Gyx0:5^2525:5:525"5|ƒ:5~W#^#:5¬zʢ~# Ò|~:525>NS"5"5:5/!&\͔͔̔ʳ/͔â͸I g :5> !44O:53* YI Bg >24> #> #I ]g :5:4e> k͎b͎B!5:4=B25!5~5*5~+"50G>0 0:5:5:5>,*5:5> >-*5|*F||>25~G#N#"5"5`i"5"5|!#a&Ê/ʈ&ʈ!ʈ\Š xŠ25>UN. xV"5*5|¨*5"5*5ñ+"5*5~#"525*5~#"5*5|+"5> ĸ"5!5454!>:5#/!&$ ͔$>$*͔*>*-.͔#.>-\͔̔*5++!"5ã:00!{~Gwog:00! !*|ʲF#N#íN͊# x£ ͊U" 626z͐*5#"5 4  >24:6i2 625GW2 6͛~"G͛8͛~">2 6~,c͛W* 6F:4ʔo&##a6#4Gw#‹* 6s#r:4#ʥ: 6+~ʷ"¼:6 !5q~!4 w !5rimproper input - reenter $F^|,##ap#q#w x"s#rFlxG! w#w^DMl^DMl*5DM*5}|ڄODF#N# "5͍go͇ ڧO͊o&͇o&}2o&E{2xn&}!9>OU"6>26y26w# +2 6260 +#-&>2600#.U: 6/2 6y˜00+:6=26CEʞeʞ<lyGʊ :626҆xÊ: 6ژ:6<260+y0 ʞG-_ʷxº0<G0<OxG{G:6@*6wɯ26y260+->26)DM)) O 0<:6+z/W{/_s#r:6=26~#0:?^#V* }||~!5N q!5 ^!4!5 n&*h6"5*h6!4#Ìzz26zW{_!65ʔ*6| |g}o"6*6|g}o"6g*6*6DM*h6;͞"j6*j6"j6BN|>>>)=; a"h6;p#z  *h6 "o6"q6}2u6æl6*h6$ ~#$*h6 l6 w#* k6~#DF*h6r+s"l6:u6=|!n6~@w"x6)|{>(>NF|ʥ~¥#~#ʤG*h6:ʨz6#> 6 #=®x:ҥw#26P .26P S"6!6"6xҤw#p6|¤*h6!DM!:+ w< L>w:6w.d# ]7*}:6>*}>266?#`ډ{҉_:ʤ*ʤ?ʝw#:6ڬIF>?Ø*j6*q6}O|Gr# x*q6*o6#{z"o626;3͂z:6*h6!~w:6*h6!~w͒C*h6!^w#Vw*h6. s#rͱ>;zV|EX*x6)6w#w>6^#f|OEk26;3͂zzڮ*h6!:~ʮ!~wͭ±MEk>6 s#rk6 ^#VzFU"h6*x6)>6 ^#V"z6 *l6"~6!9"|6æn6  :u6RB="RU"|IR"+DM*l6\*j6{o>g+{z_yW͐!*h6 s#r!n6~w"o6zr!!9"|6*z*z+zzһ!!9"|6+z+z*v6*j6s#rͦ*h6!0! ~#~!n6>w:u626&!658Ͱ:n62n6*j6+"s6ñ*q6"s6!n6~wX͐͞"o6:n6*o6~F *l6|jRE"!9"|6*s6*o6#{zڬ"o6:n6*o6n&:n6͐͞"o6â!4j , Gy2 p#*l6|F4!"6 !j"!!66,!66!4"6D26!4"626:6 AF PÀj!6k x*6w#"6!6~ s#r~#fo1F#NyOxTA*l6as#rr#sTF#wzJFFA>"s#r*l6|F …!n6~ЇwWR"ͦ*o6*j6{_zW{z<Ͱ=¸ͦұ!n6>w*|6*z6|DW"G:5x *l6|*~6|ER"+"~6͐*j6"o6:n6<*h6! N#F p+q*o6w!n6>w!9"|6}:5j>"p:5>"Ëj ËL :5>,:5ڣ>"p:5>"j L :5*~6|++> +|> > *h6!0! w#w*o6+"o6!n6~w*|6*z6|EFk6 ^w#VwzCU ""h6ͦ ͐ͦͲzc EX>6 w#w;!È 6)~#fo, *6#"6{zu k6 ^w#VwzDU ""h6ͦͲz EX͗c !9"|6!;͂z<FR"*h6"6!;͂#z<3!*h6 *6~# !z;*6"h6;!;*6"h6;!!;>26͂*h6 6?##6?!"6_*h6~ʆ!=_"5<EX]"5<EX##FNz!`*j6O yŷ!~##!!!~#!!*6"6ê!;26*6)!*|6!\"h6͂!hw##"!e~ ="6O#6V#6Li"CV"#~OP"#~Mi"CTOP"#~VP"#~LP"\:00څ"!b~w<CM*5*#ª" "´"##"N#F#x# g o" ="  GO" _ W"yx "Ø""* {z #*| #+~w*"6!"6*6"6o$Y#*6"6##^#V*6"6*{z/#m#*6^#~WC##,#!"6*o$ʇ##~w+Ì#"6##^#V*{zv#:eO#]!&$#¯#*{z#\!#f$*\!*{z#\f$CX!>$(~#.$!À\ʀ\! "\\*6}ʇ${Ozر~#fot$=e'PYe' |$##a"6s'{'{'''*6! 9SLz%|(%e'PYe'y_xW4%x%%# x$''%%ɯ>e'%7%e'%7?%z%N#FyF%x+ͺ'|[%~&~ws#re'q%n&'AC!as'q++*zSSe'yxҧ%PY##a"6s'BK{''*6|e'++'zSSe'yOxG& ##a"6s'BK{''*6|~&DMxl&zl&|~#+4&'!e'yOxGr&yxO&PYa"6s'BK{''*6SS!"6d&!5~26w24&j *4&##axw#q#4{':625 !44^w|~&e'&a~&~_w# x&e'! as'BK{'++"6|!"6]'e']'`i ##a"6s' xG'G*6p#z<']'{'*6+|"6H''*6|DM~G#N#zw#s#xʌ'@ͥ''yʞ'Ow# •'yOw#w#w#w# ¥'^#V* }||~"6^#V* }|'*6w#w}''>(>26!6"6!9N#F# y26B(26+~+ng# *6s#r#"6DM:6=!(+~+ng# :6_ "6a"6*6"6)"6*6+F+N ##6# x€(~#fo#:6_ og"6:6(26*6+V+^"6(*6*6"6*6+r+s"6*6+"6|¹(#~#fo#)og"6:6=¨(*6*6s#r:6=)C 57B!!"4͖* d  =""6#}|B=!"4 "}00-!~G#~ }q+ph#PATTERN FILE FOR INPUT-WHICH GENERATION SHALL THE DISPLAY START WITHAND THE LAST GENERATIONALSO, HOW MANY SHALL I SKIPDONEEND NO MORE THAN  CELLS PER LINE *'' IS NEITHER A ' ' NOR A '*'GENERATION = 0 POPULATION =GEN=POP=*DUMP.COMDUMP.COMNO MORE LIFE IN GENERATION*** END OF RUN ***;CELL HAS REACHED LIMITS OF PROGRAM. PROGRAM MUST TERMINATE. ANOTHER RUNY LIFEASC.COM4!)"5"5!)"5!x%w!\"7*7#*7#!!!7'*7#*7#!!!7'!H!!!#7'!"7!"7!"!7!)͖>ͻ!%7 *%7!!!>!)͖>ͻ!7\!)͖>ͻ!7\!)͖>ͻ! 7\* 7#" 7!" 7,!!'7*'7!*$*'7!*$.,,*'7%*7#{zD,Y,! *m*7!*w^4!"7,*'7*7!&!,*$},,*'7*7!&!/*$ʘ,,*7* 7)^#V*7)6#6*7#"7*7*!7}|,*7"!7*7#"7*'7%*7{zb,* 7#" 7*7}|+-!2*m*'7*7!&m!5*m^4*7#*7#!!!7'*7{zB-E-Ä+!!!!!7'*7#*7#!!!7'!"7!"7* 7+"7* 7+"7!x%m!S*m*79>1*7#"7!"7!"7!" 7Ð0!"7|0!" 7* 7*7}|*7*7}|-!4*7* 7)^#V*7#)^#V!}|/*7*!7{oz,.3.* 7#" 7* 7#*7^#V*7#)^#V!}|/* 7*7{oz*7*!7{ozҁ.È.* 7#" 7* 7#*7^#V*7)^#V!}|/* 7*7{oz..* 7#" 7* 7*7{oz*7+|./* 7#*7^#V*7+)^#V!}|//* 7#" 7*7+|"/M/*7* 7)^#V*7+)^#V!}|F/M/* 7#" 7* 7+|*7+|i/Õ/* 7+*7^#V*7+)^#V!}|/Õ/* 7#" 7* 7+|¡//* 7+*7^#V*7)^#V!}|//* 7#" 7* 7+|*7*!7{oz/0* 7+*7^#V*7#)^#V!}|00* 7#" 7* 7+++|'0X0* 7++|*7* 7)^#V*7)^#V!}|/X0u0*7* 7)^#V*7)6#6*7#"7*7#"7*!7}|-* 7#" 7*7}|-*7|¨0 4*7*7{oz»01*7*7{z*7*7{ozg* 7U *7*7{ozg* 7U  121!x%m!q*m*7!͎!w*m*7981! "7>1å-!Z" 7!Z"7!"7!"7!" 7å2*!7"72*7* 7)^#V*7)^#V!}|12* 7* 7{z1* 7" 7*7*7{z1*7"7* 7*7}|1* 7"7*7*7}|1*7"7*7 {oz12*7͎!}*m! x%w*7"7!2}|l1͐|.21212É2ͫ")7:2͐|:2ͫ")7*)7+++|V2'4*)7p{ozn2o !*"*)7P{oz‰2!!+7͎*7 {oz›2Þ2B* 7#" 7*7}|_1!!+72o !*"*7*7{oz24*7* 7{ozg###"7*7*7{ozg###"7*7^#V!)6#6!!!!!7'*7#*7#!!!7'!" 73!"7ð3*7* 7)^#V*7)^#V!}|y3é3* 7* 7{ozg##*7^#V*7*7{ozg##)6#6*7#"7*!7}|X3* 7#" 7*7}|O3!!!!!7'*7#*7#!!!7'*7"7*7"!7!*m*79!*w'4!*wB!+͖>ͻ!37 *37!͎%!+$[4o !+"^4^4o ͝!5q^w ͔j !5q-ˆ }|-* 7#" 7*7}|-*7|¨0 4*7*7{oz»01*7*7{z*7*7{ozg* 7U *7*7{ozg* 7U  $LIFEASC, submitted by Edward Grant, is a compiled CBASIC version of the LIFE game. Starting patterns are input by means of an ASCII file created using a text editor such as WordStar. LIFE1.PAT thru LIFE4.PAT include four sample starting patterns. This program has the ability to chain to DUMP.COM to capture an image of the screen in a file. Place LIFEASC.COM, DUMP.COM, and a starting screen pattern such as LIFE1.PAT in drive A. At the A> prompt, type LIFEASC When prompted, enter a pattern filename (e.g., LIFE1.PAT). Refer to LIFE.DOC for additional information.  ** ** * DONE This pattern will run uninterupted for about 250 generation. The most prolific 5 cell pattern there is! By judicious redimensioning of the program arrays' this pattern might go up to 300 generations. LIFEASC DOCLIFE1 $$$SEARCH DOCSLOTS BASXSLOTS DOCSNOW BAS ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** * ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** DONE This pattern of blocks with a misplaced cell will repair itself in two generations, and then not change at all.  ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** * ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** DONE This pattern of blocks although very similar to life2.pat will be destroyed by this placement of the center cell. ** ** ** ** ** ** * ** ** *** DONE this prolific little bugger lasts for 175 generations. BRIDGE PASaLIFE BASLIFE DOCLIFEASC COMgLIFEASC DOCLIFE1 PATLIFE2 PATLIFE3 PATLIFE4 $$$SNOW BAS% This is the release date of the disk. !K"K$K%K&K'K(K)K+K,K-K.K/K2K3K4K5K6K7K8K9K:K;KK?K@KAKBKCKDKEKFKGKHKIKJKKKLKMKNKOKPKQKRKSKTKUKVKWKXKYKZK[K\K]K^K_K`KaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxKyKzK{K|K}K~KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLBREAKOUT.BAS 0C 21 2944 23 CROSSPUZ.BAS A2 24 6016 47 DUCK .BAS EE DE 6784 53 DUCK .DOC 4E 61 256 2 E-SKETCH.BAS 6A 7F 2816 22 ESCAPE .BAS 5C 1E 4864 38 GUNNER-2.BAS EE 8F 3456 27 GUNNER-2.DOC B5 9C 128 1 HANOI .BAS 8F 50 4224 33 PINGPONG.BAS EA 58 6144 48 PINGPONG.DOC 78 0B 128 1 RND-WALK.BAS 3A C7 640 5 RND-WALK Fog Library Disk FOG-CPM.060 Copyright (1986) by Fog International Computer Users Group to the extent not copyrighted by the original author for the exclusive use and enjoyment of its members. Any reproduction or distribution for profit or personal gain is strictly forbidden. For information, contact FOG, P. O. Box 3474, Daly City, CA. 94015-0474. as part of the description of a file indicates that the program is distributed on a "try first, pay if you like it" basis. If you find the program(s) meet your need, please refer to the author's documentation for information on becoming a registered user. Only by registering and paying for the programs you like and use will the authors of such programs continue development. Often, more complete documentation, additional modules, and new releases are available only to registered users. Osborne 1 specific programs. Filename Description -06-00 .86 This is the release date of the disk. -CPM060 .DOC This is the description of the disk contents. MENU .BAS 681D 2K [MBasic games 1 of 9] MBasic menu program for the next five Osborne 1 programs. Can be modified to add or delete programs. MENU .DOC F4A6 1K [MBasic games 2 of 9] BUBBLE .BAS FEE2 7K [MBasic games 3 of 9] MBasic program for Osborne 1 to show how bubble sorts work. BUBBLE .DOC 3F53 2K [MBasic games 4 of 9] DESIGN .BAS 0D0F 5K [MBasic games 5 of 9] MBasic program. Prints "nifty" designs on an Osborne 1 screen DESIGN .DOC 8F5F 2K [MBasic games 6 of 9] ETCH .BAS AF2C 4K [MBasic games 7 of 9] MBasic Etch-A-Sketch game for Osborne 1. SEARCH .BAS 3304 4K [MBasic games 8 of 9] MBasic program to count words in a list and display a chart on an Osborne 1. SEARCH .DOC EABF 1K [MBasic games 9 of 9] BREAKOUT.BAS 0C21 3K MBasic Pong game. This version supports Osborne 1 graphics and is a more complex version than some. CROSSPUZ.BAS A224 6K MBasic program which prepares a word search puzzle from a supplied word. Osborne 1 version can be modified for other computers. DUCK .BAS EEDE 7K [Duck shoot 1 of 2] MBasic program for Osborne 1 with a graphic version of the shooting gallery game. DUCK .DOC 4E61 1K [Duck shoot 2 of 2] E-SKETCH.BAS 6A7F 3K Osborne 1 graphics version of the Etch-a-sketch game. Requires MBasic. ESCAPE .BAS 5C1E 5K MBasic tank battle game with Osborne 1 screen graphics. GUNNER-2.BAS EE8F 4K [Gunner-2 1 of 2] MBasic game where you fire a howitzer at a target. This version is for the Osborne 1. GUNNER-2.DOC B59C 1K [Gunner-2 2 of 2] HANOI .BAS 8F50 5K MBasic Tower of Hanoi game for the Osborne 1. PINGPONG.BAS EA58 6K [Ping-pong 1 of 2] MBasic game for two people. Modified for Osborne 1. PINGPONG.DOC 780B 1K [Ping-pong 2 of 2] RND-WALK.BAS 3AC7 1K [RND-WALK 1 of 2] MBasic program to display a random path of letters. Modified for the Osborne 1. RND-WALK.DOC DAEA 1K [RND-WALK 2 of 2] SLOTS .BAS A115 11K [Slots 1 of 2] Graphics oriented one-arm bandit for the Osborne 1. Requires MBasic. SLOTS .DOC 0ABA 2K [Slots 2 of 2] SNOW .BAS 580D 1K MBasic program for the Osborne 1 to fill the screen with random letters. KONG .BAS 4521 14K [Kong 1 of 3] MBasic game for the Osborne 1. Displays block graphics. GRAPH .PRN D046 2K [Kong 2 of 3] KONG .DOC 1B7D 1K [Kong 3 of 3] SKET .BAS 3168 5K [SKET 1 of 4] An MBasic Etch&-A-Sketch program for the Osborne 1 which also save design to a file for later printing with PRITPICT. SKET .DOC 9FF1 1K [SKET 2 of 4] PRITPICT.BAS BE45 1K [SKET 3 of 4] PICT .BAS 8F20 3K [SKET 4 of 4] BRIDGE .COM 65D9 15K [Bridge 1 of 4] A bridge game for Osborne 1 users. Play against yourself - no card required. Turbo Pascal source code included. BRIDGE .DES DEED 1K [Bridge 2 of 4] BRIDGE .DOC 317C 1K [Bridge 3 of 4] BRIDGE .PAS 2B32 13K [Bridge 4 of 4] LIFEASC .COM D420 13K [LIFE 1 of 8] A game which build patterns similar to those that produced by living cells. CBasic source included. LIFEASC .DOC 2206 1K [LIFE 2 of 8] LIFE1 .PAT 3EBB 1K [LIFE 3 of 8] LIFE2 .PAT 58BB 1K [LIFE 4 of 8] LIFE3 .PAT EFBE 1K [LIFE 5 of 8] LIFE4 .PAT BA2B  1K [LIFE 6 of 8] LIFE .BAS 73CA 3K [LIFE 7 of 8] LIFE .DOC D044 3K [LIFE 8 of 8] m for the Osborne 1 to fill the screen with random letters. KONG .BAS 4521 14K [Kong 1 of 3] MBasic game for the Osborne 1. Displays block graphics. GRAPH .PRN D046 2K [Kong 2 of 3] KONG .DOC 1B7D 1K [Kong 3 of 3] SKET .BAS 3168 5K [SKET 1 of 4] An MBasic Etch'