IMD 1.16: 29/05/2007 18:48:01 FOGCPM.076 ååååååååååååååå--FOGCPM076KM BAS KM DOC€ KM DOC€ !"#$%&KM DOC'-06-00 86 ¤-CPM076 DOC¥¦§¨MUL BASp()*+,-./012345SUB BASi6789:;<=>?@ABCADD BASoDEFGHIJKLMNOPQDIV BAS€RSTUVWXYZ[\]^_`aDIV BASbGRAPHIC BAS)cdefghDRAW BASFijklmnopqDRAW DOCrKDRAW BAS4stuvwxyKPLOT BAS?@ABåADD BASoCDEFGHIJKLMNOPåDIV BAS€QRSTUVWXYZ[\]^_`åDIV BASaåGRAPHIC BAS)bcdefgåDRAW BASFhijklmnopåDRAW DOCqåKDRAW BAS4rstuvwxåKPLOT BAS A";CHR$(27)+")";"DDition";CHR$(27)+"(" 1005 PRINT TAB(15);"> S";CHR$(27)+")";"UBtraction";CHR$(27)+"(" 1010 PRINT TAB(15);"> M";CHR$(27)+")";"ULtiplication";CHR$(27)+"(" 1015 PRINT TAB(15);"> D";CHR$(27)+")";"IVision";CHR$(27)+"(" 1020 PRINT TAB(15);"> Q";CHR$(27)")";"UIT to CP/M";CHR$(27)"(" 1025 PRINT:PRINT " ENTER A,S,M,D, or Q"; 1030 Z$=INPUT$(1) 1035 PRINT CHR$(26):PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT 1040 COMMON SEED,USER$ 1045 IF Z$="A" OR Z$="a" THEN PRINT " WAIT!! Loading ADDition":CHAIN "ADD",ALL 1050 IF Z$="S" OR Z$="s" THEN PRINT " WAIT!! Loading SUBtraction":CHAIN "SUB",ALL 1055 IF Z$="M" OR Z$="m" THEN PRINT " WAIT!! Loading MULtiplication":CHAIN "MUL",ALL 1060 IF Z$="Q" OR Z$="q" THEN PRINT " QUITing to CP/M":SYSTEM 1065 IF Z$="D" OR Z$="d" THEN PRINT " WAIT!! Loading DIVision":CHAIN "DIV",ALL ELSE PRINT CHR$(7):GOTO 970 M":SYSTEM 1065 IF Z$="D.OP Released to the Public Domain July 15, 1984 by Douglas M. Hurst. Kidmatè ió designeä foò thå Osbornå ± anä Osbornå ± Double- Density with 52 column screens. It can be adapted to 80 columns with a little effort and that would be a good project for some- one. It should also be easily adaptable to the Executive with some work and someone should write an AUTOST adaptation for it for the Executive.  KIDMATH Version 1.6 SmallSoft 6808 Estrella Ave. Twentynine Palms, CA 92277 Š.PN2 KIDMATH Version 1.6 SmallSoft 6808 Estrella Ave. Twentynine Palms, CA 92277 Table of Contents Section I. List of Enclosed Items...................... 3 Section II. Introduction................................ 4 Section III. Program Organization........................ 5 Section IV. Copying the KIDMATH diskette................10 Section V. Program Installation....................... 13 Section VI. How to Use KIDMATH......................... 15 Section VII. Receipt of Update Material................. 17 Section VIII. End User's Agreement....................... 18 Š SmallSoft 680¸ Estrellá Ave. Twentyninå Palms,CÁ 92277 (714© 368-6149 IMPORTANÔ !!¡ DÏ NOÔ breaë thå seaì oî thå KIDMATH‚ diskettå               untiì instructeä tï dï sï iî thió user'ó manual® Anù               Systeí returneä tï SmallSofô witè thå seaì brokeî               wilì bå returneä tï you. I® Lisô_oæ_Encloseä_Items. Encloseä iî thå envelopå yoõ jusô openeä pleaså finä thå following: A. Loose leaf 3 hole binder. B® One (1© µ 1/4¢ singlå sided/doublå densitù floppù diskette containinç thå followinç files: KM.BAS ADD.BAS SUB.BAS MUL.BAS DIV.BAS DU.COM C® Thå KIDMATÈ User'ó Manuaì yoõ arå now readinç. ŠII® Introduction® Thanë yoõ mucè foò yoõ purchaså oæ KIDMATÈ 1.6® Versioî 1.6 representó á significanô improvemenô oveò previouó versionó mainlù iî termó oæ easå oæ use® Witè thå exceptioî oæ thå actuaì entrù oæ probleí answeró alì useò responseó arå no÷ singlå keystrokes® Thió alonç witè severaì improvementó iî programminç techniquå havå alsï alloweä uó tï savå á gooä deaì oæ diskettå space® Aó á result¬ KIDMATÈ (Versioî 1.6© allowó MBASIC¬ anä thereforå thå entirå system¬ tï fiô oî á single¬ singlå densitù diskette® Afteò á shorô installatioî program¬ yoõ caî simply slið thå KIDMATH‚ Systeí diskettå iî thå Á drive¬ presó ADDition | | > SUBtraction | | > MULtiplication | | > DIVision | | > QUIT. To CP/M | | | | | | TYPE in A,S,M,D or Q ?_ | | | | | | | | | |__________________________________________________| It'ó reallù verù simple® Jusô typå iî thå FIRSÔ letteò oæ youò choicå froí thå AREÁ MENÕ anä off you go. Š __________________________________________________ | | | LEVEL_MENU | | | | First, you must select a LEVEL of hardness from | | the 9 choices shown below. Or, you may EXIT back| | to the AREA menu. | | | | 1 > LEVEL 1 (Simple Whole Numbers) | | 2 > LEVEL 2 (Complex Whole Numbers) | | 3 > LEVEL 3 (Complex Decimal Numbers) | | 4 > LEVEL 4 (Simple Fractions) | | 5 > LEVEL 5 (Complex Fractions) | | 6 > LEVEL 6 (RESERVED FOR FUTURE USE) | | 7 > LEVEL 6 (RESERVED FOR FUTURE USE) | | 8 > LEVEL 6 (RESERVED FOR FUTURE USE) | | 9 > LEVEL 6 (RESERVED FOR FUTURE USE) | | E > EXIT, To KIDMATH | | | | Type in your CHOICE?_ | | | |__________________________________________________| Wheî yoõ arrivå aô thå AREÁ selected¬ yoõ wilì bå faceä witè á LEVEÌ oæ hardnesó menu® Looë aô thå typå operationó anä numberó associated with each LEVEL and make a selection. __________________________________________________ | | | | | | |  | | | | Now, you must pick whether you want REGULAR | | DRILL or TEST for a possible REWARD. | | | | | | A > REGULAR DRILL | | B > TEST/REWARD (20 problems) | | | | | | TYPE in your CHOICE?_ | | | | | | | | | | | |__________________________________________________| Next¬ yoõ wilì bå askeä tï picë whetheò yoõ wanô thå REGULAÒ DRILÌ oò thå TEST/REWARÄ mode® (Seå Sectioî VI® Ho÷ tï uså KIDMATH)® Afteò yoõ havå planteä á "seed¢ number¬ youò firsô probleí wilì loaä anä yoõ caî gï righô tï work. Š __________________________________________________ | PROBLEM NUMBER 1. | | | | _____ | | 7) 219 | | | | Your ANSWER will be in TWO PARTS. | | TYPE in your ANSWER and a REMAINDER | | SEPARATED by a COMMA (,) (EXAMPLE 34,3)?_ | | | | | | | | | | | | | | | | | | | | | | | | | |__________________________________________________| Herå ió á typicaì problem® Thió particulaò onå is froí DIVision¬ LEVEÌ ³ (Compleø wholå numberó witè remainders). __________________________________________________ | | | | | | | | | | | | |Your ANSWER 31 with a REMAINDER of 2 IS CORRECT!! | | | | 31 Remainder 2 | | _____ ^  | | 7) 219 | | | 21 | | | ___ | | | 9 | | | 7 | | | _ | | | 2 ----------- | | | | | |Press S for SCORE, any other key to CONTINUE?_ | |__________________________________________________| Iæ youò chilä answeró thå probleí correctly¬ thå screeî showî abovå wilì appear® Thå probleí ió workeä ouô correctlù foò reinforcement® Aô thió poinô yoõ maù choså whetheò yoõ desirå tï continue or return to the LEVEL menu. ŠIæ youò chilä answeró thå probleí incorrectly¬ thå followinç screen will generate: __________________________________________________ | | | | | | | | | | | | |SORRY!! WRONG answer. Try again. | |PROBLEM NUMBER 1. | | _____ | | 7) 219 | | | | Your ANSWER will be in TWO PARTS. | | TYPE in your ANSWER and a REMAINDER | | SEPARATED by a COMMA (,) (EXAMPLE 34,3)?_ | | | | | | | | |  |__________________________________________________| Iæ youò chilä answeró incorrectlù á seconä time¬ thå screeî abovå wilì repeaô itselæ onlù thió timå therå wilì bå twï saä faces® __________________________________________________ | | | | | | | | | | | | |SORRY!! You missed the same problem 3 times. Take | |a look at the CORRECT ANSWER. | | | | 31 Remainder 2 | | _____ ^ | | 7) 219 | | | 21 | | | ___ | | | 9  | | | 7 | | | _ | | | 2 ----------- | |You had 4 RIGHT answers and 3 WRONG answers. | | | |L for new LEVEL,A for new AREA, or Q to QUIT?_ | |__________________________________________________| Shoulä youò chilä answeò incorrectly á thirä timå¬ thå screeî showî abovå wilì generate® Again¬ thå correcô answeò ió showî witè thå probleí workeä tï aiä iî diagnosió anä prescription® Aô this point you must return to the LEVEL menu. Š __________________________________________________ | | | | | | | | |  | | | | | | | | | | | | | | | | | | | | | | Your ANSWER 35 is CORRECT!! | | You had 20 RIGHT answers and 3 WRONG answers. | |L for new LEVEL,A for new AREA, or Q to QUIT?_ | |__________________________________________________| Iæ yoõ pickeä thå  (TEST/REWARD© modå option¬ yoõ woulä havå starteä buildinç thió screeî graphic® Iô ió completeä oî thå 20tè correcô answer® Thå meaninç oæ thå REWARÄ numbeò ió explaineä iî detaiì iî Sectioî VI®  IMPORTANT!!¡ Iæ aô thió point¬ yoõ havå decideä KIDMATÈ ió noô thå typå oæ prograí yoõ thoughô iô waó goinç tï be¬ simplù return‚ alì materialó WITHIÎ 3° DAYÓ FROÍ THÅ DATÅ OÆ RECEIPT‚ foò á fulì refund® THÅ KIDMATÈ DISKETTE MUSÔ BÅ RETURNEÄ WITÈ THÅ SEAÌ UNBROKEN® Otherwise¬ wå cannoô forwarä á refund.  ŠIV® Copying_thå_KIDMATÈ_diskettes. IMPORTANT!! Iæ yoõ havå decideä tï retaiî KIDMATH¬ removå thå             KIDMATÈ diskette froí thå sealeä envelope. A® Upoî openinç thå envelopå containinç thå KIDMATÈ diskettå anä beforå doinç anythinç else¬ yoõ shoulä makå á copù oæ botè thå KIDMATÈ diskettå usinç thå Osbornå 1'ó COPY.COÍ utilitù aó follows: 1® Inserô youò Osbornå supplieä CP/Í Systeí disë iî Drivå Á anä á blanë diskettå (workinç copy© iî Drivå B® Typå ® Presó thå Escapå ® Yoõ wilì seå thå followinç message: ---------------------------------------------------- | Osbornå Diskettå Utilitù Program | | Revisioî 3.0 | | | | à COPÙ Diskettes | | Æ FORMAÔ Diskettes | | RETURÎ exiô program | | Presó à tï COPY¬ Æ tï FORMAÔ oò RETURÎ tï exit | ---------------------------------------------------- 2® Presó C¬ anä yoõ wilì seå thå followinç message: ---------------------------------------------------- | Osbornå Diskettå Utilitù Program | | Revisioî 3.0 | | | | | | | | | |  | | Selecô SOURCÅ diskettå oæ COPÙ (Á oò B) | | oò presó RETURÎ for main menu | ---------------------------------------------------- Š 3® Selecô Á aó thå Sourcå Drive® Yoõ wilì seå thå followinç message: ---------------------------------------------------- | Osbornå Diskettå Utilitù Program | | Revisioî 3.0 | | | | | | Placå SOURCÅ diskettå iî drivå A. | | DESTINATIOÎ diskettå iî drivå B | | anä presó returî wheî ready. | ---------------------------------------------------- 4® Removå thå CP/Í Systeí diskettå anä replacå iô witè thå thå KIDMATÈ SYSTEÍ diskettå anä presó ®  5® Afteò thå copù ruî ió complete¬ removå thå KIDMATÈ SYSTEÍ diskettå froí Drivå Á anä placå iô iî á properlù protecteä storagå place® Removå thå workinç diskettå froí Drivå  ¨ Labeì thió disë KIDMATÈ SYSTEM)® Thió "workinç copy¢ shoulä contaiî thå samå fileó listeä iî paragrapè  oæ Sectioî I® Alì futurå referenceó tï thå KIDMATÈ SYSTEÍ disë wilì refeò tï thå "workinç copy" ŠV® Prograí_Installatioî. SPECIAL NOTE: Untiì doublå densitù camå alonç thió waó á verù                easù installatioî tï perform® Iô stilì ió iæ yoõ                use normal care and follow all instructions. A® Firsô yoõ musô picë thå scenariï belo÷ whicè describeó youò situation. 1® Yoõ owî á singlå densitù onlù Osbornå 1® Gï tï paragraph B. 2® Yoõ owî á doublå densitù Osbornå ± buô plaî tï keeð KIDMATH in single density. Go to paragraph C. 3® Yoõ owî á doublå densitù Osbornå ± anä desirå tï transfeò KIDMATH‚ froí singlå tï doublå density® Gï tï paragrapè D. B. This is the easiest installation. 1® Placå youò CP/Í Utilitù diskettå iî Drivå Á anä youò KIDMATÈ SYSTEÍ diskettå iî Drivå B® Pusè reseô anä typå ® Aô thå CP/Í § A¾ § prompt¬ typå SYSGEÎ ® Yoõ wilì seå thå followinç message. ---------------------------------------------------- | Operating System Generation Program | | OSBORNE COMPUTER SYSTEM ONE | | Revision 1.5 | | | | SOURCE drive (A or B) | |Put SOURCE diskette in drive A, then press RETURN | ---------------------------------------------------- 2® Yoõ shoulä presó Á theî ® Wheî yoõ do¬ yoõ wilì seå thå followinç messageº  ---------------------------------------------------- | Operating System Generation Program | | OSBORNE COMPUTER SYSTEM ONE | | Revision 1.5 | | | | SOURCE drive (A or B) | | Put SOURCE diskette in drive A, then press RETURN| | | | System read successfully. | | | |--------------------------------------------------| | | | DESTINATION (A,B or RETURN to exit) | | Put DESTINATION diskette in B, then press RETURN.| ---------------------------------------------------- 3® Presó  theî again® Wheî yoõ dï yoõ wilì thå followinç message after a few seconds:   Š ---------------------------------------------------- | Operating System Generation Program | | OSBORNE COMPUTER SYSTEM ONE | | Revision 1.5 | | | | SOURCE drive (A or B) | |Put SOURCE diskette in drive A, then press RETURN | | | | System read successfully. | | | |--------------------------------------------------| | | |DESTINATION (A,B or RETURN to exit) | |Put DESTINATION diskette in B, then press RETURN. | | | | System copied successfully. | |  | |--------------------------------------------------- | | ü DESTINATIOÎ (A, oò RETURÎ tï exit) | |Puô DESTINATIOÎ diskettå iî B¬ theî presó RETURN® | ---------------------------------------------------- 4® Removå thå KIDMATÈ SYSTEM diskettå froí Drivå B® Placå iô iî drivå A¬ presó thå . You should get the following indication: A> AUTOST? A> 5. Type in the following: DU T2;S6;CH0B,4D,42,20,4B,4D,00;W;X Thió procedurå alteró thå CP/Í systeí trackó oî thå KIDMATÈ SYSTEÍ disë sï thå prograí wilì booô uð MBASIà anä KIDMATH‚ automaticallù wheî yoõ presó ® Presó at the HELP menu to load CP/M. Perform steps B1-4 above. With the KIDMATH SYSTEM disk in drive A type in the following: DU T2;S6;CH1E,4D,42,20,4B,4D,00;W;X Thió procedurå alteró thå CP/Í systeí trackó oî thå KIDMATÈ SYSTEÍ disë sï thå prograí wilì booô uð MBASIà anä KIDMATH‚ automaticallù wheî yoõ presó ® Yoõ shoulä seå thå followingº A> AUTOST? A> Type in the following: DU T1;S6;CH1E,4D,42,20,4B,4D,00;W;X Thió procedurå alteró thå CP/Í systeí trackó oî thå KIDMATÈ SYSTEÍ disë sï thå prograí wilì booô uð MBASIà anä KIDMATH‚ automaticallù wheî yoõ presó ¬ inserô youò CP/Í Systeí diskettå iî Drivå A¬ youò KIDMATÈ SYSTEÍ (doublå densitù iæ yoõ madå thå transfer¬ singlå densitù otherwise© diskettå iî Drivå  anä presó ® Aô thå HELÐ menu¬ presó thå ® Afteò á bit¬ yoõ wilì seå aî § ª § (asterisk© prompt® No÷ removå thå CP/Í Systeí anä replacå iô witè youò MBASIà Systeí diskette® Typå iî thå following: B:=A:MBASIC.COM[V] F® Afteò á fe÷ momentó oæ "drivå talk¢ yoõ wilì seå anotheò § ª § prompt® No÷ typå ® Afteò á fe÷ morå momentó thå § ª § prompô wilì bå replaceä bù thå familiaò § A¾ § prompô. G. Now type the following: REN B:MB.COM=B:MBASIC.COM H® Installatioî complete® Yoõ shoulä no÷ bå ablå tï placå yoõ KIDMATÈ SYSTEÍ disë iî drivå Á anä iô shoulä loaä automatically from a "cold start". SPECIAL NOTE: Iæ troublå ió encountered¬ trù thå copù anä               installatioî procedureó again® Iæ troublå stilì               existó calì (619)367-109° anytimå afteò µ P.M® Wesô               Coasô timå anä onå oæ ouò stafæ memberó wilì               assist® Iæ thió stilì doesn'ô solvå thå problem¬               senä thå originaì KIDMATÈ SYSTEÍ disë bacë tï               SmallSofô anä wå wilì geô iô runninç anä senä iô               back to you immediately. ŠVI® How_to_use_KIDMATH® A® Thió waó thå easiesô sectioî oæ thå KIDMATÈ User'ó Manuaì tï write® W hy¿ Becauså KIDMATÈ ió á totallù menu¬ oò otherwiså student/useò prompteä program® Aó stateä previously¬ KIDMATÈ ió foò elementarù ageä schooì children® Witè thå possiblå exceptioî oæ Kindergarteî anä 1sô graders¬ KIDMATÈ shoulä bå totallù readablå bù thió group® ADULÔ SUPERVISIOÎ ió stilì HIGHLÙ RECOMMENDED. B® Tï loaä KIDMATÈ placå thå SYSGEN'ä WORKINÇ COPÙ oæ youò KIDMATH SYSTEM diskettå in drive A. Typå . C® Firsô yoõ wilì seå thå KIDMATÈ logï anä Copyright/seriaì numbeò statemenô anä finallù thå KIDMATÈ MAÐ screen® Iô tooë á while¬ buô yoõ arå no÷ readù tï uså KIDMATH. D® Afteò viewinç thå KIDMATÈ MAÐ screen¬ presó anù keù anä you will go to your first menu. 1® Thå AREÁ menõ askó thå useò tï selecô aî AREÁ iî whicè tï worë (Addition¬ Subtraction¬ Multiplicatioî oò Division). This will cause that AREA sub-program to load. 2® Wheî yoõ geô tï thå AREÁ chosen¬ yoõ wilì bå requireä tï picë á LEVEÌ oæ hardness®  3® Theî comeó á mosô importanô menu® Thió menõ ió á reallù "parent's¢ menu® Yoõ shoulä inforí yoõ chilä thaô iæ hå oò shå ió workinç witè KIDMATÈ alonå tï alwayó uså thå Á (REGULAÒ DRILL© option® Uså oæ thå  (TEST/REWARD© optioî shoulä bå selecteä onlù bù Moí oò Daä anä itó uså limiteä onlù bù theiò imagination® Pickinç thió option¬ youò chilä wilì receivå 2° differenô problems® Eacè timå á probleí ió answereä correctly¬ á portioî oæ á graphiã ió "painteä oî thå screen"® Thió graphiã buildó linå bù linå anä ió completå witè thå 20tè correcô answer® Thå 20tè (last© graphiã linå alsï presentó á randoí "REWARD¢ number® Thió numbeò wilì rangå betweeî ± anä 100® Belo÷ thå graphiã ió aî answereä right/wronç statement® Oæ courså thå numbeò righô wilì alwayó bå 20¬ aô thå end¬ anä thå numbeò wronç caî varù froí ° tï 4° (thió ió becauså KIDMATÈ allowó continueä advancå aó lonç aó eacè probleí ió noô misseä morå thaî twicå iî succession)® Durinç thå ruî towarä 20¬ iæ youò chilä misseó á singlå probleí threå timeó iî successioî hå oò shå wilì bå forceä tï exit/starô over® 4® Yoõ wilì bå askeä tï SEEÄ á randoí number® Thió numbeò maù bå anù numbeò betweeî -32,76¸ anä +32,767® Jusô enteò á numbeò fallinç withiî thió rangå anä presó ® Afteò thió seed number is entered, your first problem will load. Š G® Sï ho÷ shoulä yoõ uså thió TEST/REWARÄ mode¿ Wå caî onlù offeò suggestions® Yoõ mighô uså thå randoí "REWARD¢ numbeò aó á moneù oò poinô reward® Foò example¬ iæ youò chilä makeó iô tï 2° (completeó thå graphic© anä getó lesó thaî XØ (yoõ decide© numbeò incorrecô yoõ mighô givå theí thå numbeò oæ centó equaì tï thå randoí number® Or¬ yoõ mighô accumulatå theså numberó aó 'points§ foò somå morå distanô reward® Iô ió realizeä thå graphiã valuå mighô weaò ofæ afteò á period¬ buô thå randoí numbeò oî thaô lasô linå wilì bå á continuaì incentive® Yoõ mighô verù welì finä somå  combinatioî oæ right/wrong/randoí numbeò thaô wilì bå eveî morå motivating® Sectioî III® containó á samplå screeî whicè showó thå graphiã builô wheî thå  modå ió selected H® That'ó it¡ Alì otheò pertinenô instructionó oî ho÷ tï uså KIDMATÈ wilì bå containeä iî thå prograí itself. ŠVII® Receipô_oæ_Updatå_Material. A® Wheî yoõ sigî anä returî thå enä user'ó agreemenô encloseä herein¬ youò namå anä addresó wilì bå placeä oî ouò mailinç list® Eacè timå á ne÷ modulå ió completeä foò KIDMATH¬ yoõ wilì bå notified® Updateä moduleó wilì bå availablå FREÅ (seå shippinç anä handlinç chargeó below© foò aó lonç aó yoõ caî bå reacheä aô thå addresó wå havå oî filå (Oæ course¬ iæ yoõ movå anä leô uó know¬ youò ne÷ addresó wilì bå loadeä tï thå mailinç list.© B® Thå followinç nominaì shippinç anä handlinç chargeó wilì applyº 1® Iæ originaì KIDMATÈ SYSTEM ¤ 2.50 or a blank diskette is returned. 2® Iæ yoõ desirå a ne÷ ¤ 7.50 KIDMATÈ diskette. Osbornå ± ió á registereä trademarë oæ thå Osbornå Computeò Corporation. CP/Í ió á registereä trademarë oæ thå Digitaì Researcè Corporation. MBASIà ió á TÍ oæ MicroSofô Inc. CBASIà ió á TÍ oæ Compileò Systems¬ Inc. WordStar is a TM of MicroPro International Corporation. åPAINT2 DOC*ŒŽ‘åSCDESIGNBAS1’“”•–—˜åSW104 BAS"™š›œåSW80 BAS"žŸ ¡¢åCHEKLISTCRC£åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå 10 REM "MUL 1.6, COPYRIGHT 1983" 30 REM "By SmallSoft" 40 CLS$=CHR$(26):CH$=CHR$(27) 50 PRINT CHR$(26):FOR I=1 TO 7:PRINT:NEXT 60 PRINT " WELCOME TO MULtiplication ";USER$ 90 PRINT:PRINT "Yes, this is MULtiplication. In this sub-program of" 100 PRINT "KIDMATH you will be able to work multiplication " 110 PRINT "problems at any of five (5) levels of hardness." 115 COMMON SEED 120 CHAIN MERGE "GRAPHIC",370,ALL 290 IF B>10 THEN B=5+(INT(B/10)) 370 PRINT CHR$(26):PRINT 373 PRINT TAB(18);"LEVEL MENU 376 FOR I=1 TO 4:PRINT:NEXT 380 PRINT " First, ";USER$;", you must pick the level of " 390 PRINT " hardness you want from the five" 400 PRINT " choices available. Or, you may exit back" 410 PRINT " the original KIDMATH program." 420 PRINT 430 PRINT " 1 > LEVEL 1 (Single whole numbers)" 440 PRINT " 2 > LEVEL 2 (Complex whole numbers)" 450 PRINT " 3 > LEVEL 3 (Complex decimal numbers) " 460 PRINT " 4 > LEVEL 4 (Simple fractions)" 470 PRINT " 5 > LEVEL 5 (Complex fractions)" 520 PRINT " E > EXIT, to KIDMATH" 530 PRINT:PRINT " Type in your CHOICE?"; 532 H$=INPUT$(1) 534 IF H$="E" OR H$="e" THEN PRINT:PRINT:PRINT " WAIT!! Returning to KIDMATH":CHAIN "KM",970,ALL 536 H=VAL(H$) 540 PRINT CHR$(26) 550 IF H<=0 OR H>=6 THEN PRINT CHR$(7):FOR I=1 TO 6:PRINT:NEXT I:PRINT " The number must be between 1 and 5, or E.":FOR I= 1 TO 1500:NEXT I:GOTO 370 560 PRINT CHR$(26):PRINT:PRINT:PRINT:PRINT:PRINT "Now, ";USER$;", you must pick whether you want REGULAR" 570 PRINT "DRILL or TEST for a possible REWARD." 580 PRINT:PRINT:PRINT:PRINT " A > REGULAR DRILL" 590 PRINT " B > TEST and/or REWARD (20 problems) 600 PRINT:PRINT:PRINT " TYPE in your CHOICE?"; 602 KK$=INPUT$(1) 610 IF KK$<>"A" AND KK$<>"a" AND KK$<>"B" AND KK$<>"b" THEN PRINT CHR$(26)CHR$(7):PRINT " Your CHOICE must be either 'A' or 'B' ONLY.":FOR I=1 TO 1500:NEXT:GOTO 560 615 IF KK$="a" THEN KK$="A" ELSE IF KK$="b" THEN KK$="B" 620 PRINT CHR$(26) 630 ON H GOTO 1000,2000,3000,4000,5000 1000 REM "LEVEL 1" 1010 GOSUB 20000 1020 GOSUB 30000 1030 A=INT((RND(A)*100)/10) 1040 B=INT((RND(B)*100)/10) 1050 C=A*B 1060 PRINT CHR$(26) 1070 PRINT "PROBLEM NUMBER ";S;".":PRINT:PRINT 1080 PRINT " "; 1090 PRINT USING N$;A 1100 PRINT "x "; 1110 PRINT USING N$;B; 1120 PRINT " ";A;"x";B;"=" 1130 PRINT "___" 1140 GOSUB 40000 1150 PRINT:IF T=C AND KK$="A" THEN GOSUB 62400:PRINT:PRINT USER$;" Your ANSWER ";C;" is CORRECT!!!":WWW=0:R=R+1 ELSE IF T=C AND KK$="B" THEN GOSUB 63000:PRINT:PRINT USER$;" Your ANSWER ";C;" is CORRECT!!!":GOTO 1180 1160 IF WWW=2 THEN GOSUB 62300:PRINT:PRINT "SORRY!! You missed the same problem 3 times.";CHR$(10)CHR$(13);"Maybe you should START OVER or try a LOWER LEVEL.":W=W+1:PRINT:GOTO 1200 1170 IF T<>C AND WWW=0 THEN GOSUB 62100:PRINT:PRINT "SORRY!! WRONG answer. Try again.":WWW=WWW+1:W=W+1:GOTO 1070 ELSE IF T<>C AND WWW=1 THEN GOSUB 62200:PRINT:PRINT "SORRY!! WRONG answer. Try again.":W=W+1:WWW=WWW+1:GOTO 1070 1180 IF KK$="B" AND R=20 THEN 1200 ELSE GOSUB 50000 1190 IF X$<>"S" THEN S=S+1:GOTO 1020 ELSE PRINT CHR$(26)CHR$(7):GOTO 1180 1200 PRINT " You had ";R; "RIGHT ANSWERS and ";W; "WRONG ANSWERS." 1205 IF KK$="A" THEN PRINT" Press to CONTINUE" 1210 PRINT " Press L for new LEVEL, A for new AREA, Q to QUIT"; 1215 Y$=INPUT$(1):IF Y$=CHR$(13) THEN 620 ELSE IF Y$="L" OR Y$="l" THEN 370 ELSE IF Y$="Q" OR Y$="q" THEN SYSTEM ELSE SEED=SEED+1:COMMON SEED:CHAIN "KM",970,ALL 2000 REM "LEVEL 2" 2010 GOSUB 20000 2020 GOSUB 30000 2030 A=INT(RND(A)*100) 2040 B=INT(RND(B)*100) 2050 IF B>A THEN 2020 2060 FOR I=1 TO 3 2070 IF A<10 THEN A=A*9 2080 NEXT 2090 IF B>10 THEN B=5+INT(B/10) 2100 C=A*B 2110 D=A*(B-(INT(B/10)*10)) 2120 E=A*(INT(B/10)) 2130 PRINT CHR$(26) 2140 PRINT "PROBLEM NUMBER ";S;".":PRINT:PRINT 2150 PRINT " "; 2160 PRINT USING O$;A 2170 PRINT "x "; 2180 PRINT USING O$;B; 2190 PRINT " ";A;"x";B;"=" 2200 PRINT "____" 2210 GOSUB 40000 2220 IF T=C AND KK$="A" THEN GOSUB 62400:PRINT:PRINT USER$;" Your ANSWER ";C;" is CORRECT!!!":WWW=0:R=R+1:PRINT:GOTO 2250 ELSE IF T=C AND KK$="B" THEN GOSUB 63000:PRINT:PRINT USER$;" Your ANSWER ";C;" is CORRECT!!!":GOTO 2380 2230 IF WWW=2 THEN GOSUB 62300:PRINT:PRINT "SORRY!! You missed the same problem 3 times.";CHR$(10)CHR$(13);"Maybe you should START OVER or try a LOWER LEVEL.":W=W+1:PRINT:GOTO 2250 2240 IF T<>C AND WWW=0 THEN GOSUB 62100:PRINT:PRINT "SORRY!! WRONG answer. Try again.":W=W+1:WWW=WWW+1:GOTO 2140 ELSE IF T<>C AND WWW=1 THEN GOSUB 62200:PRINT:PRINT "SORRY!! WRONG answer. Try again":W=W+1:WWW=WWW+1:GOTO 2140 2250 PRINT:PRINT " "; 2260 PRINT USING O$;A 2270 PRINT " x "; 2280 PRINT USING O$;B 2290 PRINT " _____" 2300 PRINT " "; 2310 PRINT USING Q$;D 2320 PRINT " "; 2330 PRINT USING Q$;E 2340 PRINT " _______" 2350 PRINT " "; 2360 PRINT USING Q$;C:PRINT 2370 IF WWW=2 THEN 1200 2380 GOSUB 50000 2390 IF X$<>"S" THEN S=S+1:GOTO 2020 ELSE PRINT CHR$(26)CHR$(7):GOTO 2380 2400 PRINT:PRINT:PRINT:PRINT 2410 IN PUT "PRESS ENTER TO RETURN TO MATH ";Y$ 2420 PRINT CHR$(26):PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT 2430 IF X$="N" THEN PRINT " WAIT!!! Returning to MATH" 3000 REM "LEVEL 3" 3010 GOSUB 20000 3020 GOSUB 30000 3030 A=INT(RND(A)*1000)/10 3040 B=INT(RND(B)*1000)/10 3050 IF B>A THEN SWAP B,A 3060 C=A*B 3070 C=(INT(C*100))/100 3080 H=A*10 3090 I=B*10 3100 D=H*(I-(INT(I/10))*10) 3110 E=H*((INT(I/10))-(INT(I/100)*10)) 3120 F=H*((INT(I/100))-(INT(I/1000)*10)) 3130 G=H*((INT(I/1000))-(INT(I/10000)*10)) 3140 PRINT CHR$(26) 3150 PRINT "PROBLEM NUMBER ";S;".":PRINT:PRINT 3160 PRINT " "; 3170 PRINT USING P$;A 3180 PRINT "x "; 3190 PRINT USING P$;B 3200 PRINT " _____" 3210 GOSUB 40000 3220 T=(INT(T*100))/100 3230 IF T<=C+.05 AND T>=C-.05 THEN T=C 3240 IF T=C AND KK$="A" THEN GOSUB 62400:PRINT:PRINT USER$;" Your ANSWER ";C;" is CORRECT!!!":WWW=0:R=R+1:PRINT :GOTO 3270 ELSE IF T=C AND KK$="B" THEN GOSUB 63000:PRINT:PRINT USER$;" Your ANSWER ";C;" is CORRECT!!!":GOTO 3430 3250 IF WWW=2 THEN GOSUB 62300:PRINT:PRINT "SORRY!! You missed the same problem 3 times.";CHR$(10)CHR$(13);"Maybe you should START OVER or try a LOWER LEVEL.":W=W+1:GOTO 3270 3260 IF T<>C AND WWW=0 THEN GOSUB 62100:PRINT:PRINT "SORRY!! WRONG answer. Try again.":W=W+1:WWW=WWW+1:GOTO 3150 ELSE IF T<>C AND WWW=1 THEN GOSUB 62200:PRINT:PRINT "SORRY!! WRONG answer. Try again.":W=W+1:WWW=WWW+1:GOTO 3150 3270 PRINT:PRINT " "; 3280 PRINT USING P$;A 3290 PRINT " x "; 3300 PRINT USING P$;B 3310 PRINT " ______" 3320 PRINT " "; 3330 PRINT USING Q$;D 3340 PRINT " "; 3350 PRINT USING Q$;E 3360 PRINT " "; 3370 PRINT USING Q$;F 3380 PRINT " _________" 3390 PRINT " "; 3400 PRINT USING Q$;C*100 3410 PRINT " /\":PRINT 3420 IF WWW=2 THEN 1200 3430 IF KK$="B" AND R=20 THEN 1200 ELSE GOSUB 50000 3440 IF X$<>"S" THEN S=S+1 :GOTO 3020 ELSE PRINT CHR$(26)CHR$(7):GOTO 3430 4000 REM "LEVEL 4" 4010 GOSUB 20000 4020 RESTORE:READ A,B,C,D 4030 A=INT(RND(A)*1000):B=INT(RND(B)*1000):C=INT(RND(C)*1000):D=INT(RND(D)*1000) 4040 IF A=0 OR B=0 OR C=0 OR D=0 THEN 4020 4050 FOR I=1 TO 5 4060 IF A>=10 THEN A=INT(A/10) 4070 IF B>=10 THEN B=INT(B/10) 4080 IF C>=10 THEN C=INT(C/10) 4090 IF D>=10 THEN D=INT(D/10) 4100 NEXT I 4110 E=A*C 4120 F=B*D 4130 IF E=F THEN 4020 4140 Y=E:Z=F 4150 J=9 4160 WHILE J>=1 4170 FOR K=1 TO 3 4180 IF E/J=INT(E/J) AND F/J=INT(F/J) THEN E=E/J:F=F/J:G=E:H=F 4190 NEXT K 4200 J=J-1 4210 WEND 4220 IF G/H=INT(G/H) THEN 4020 4230 O=INT(G/H) 4240 P=G-(O*H) 4250 PRINT CHR$(26) 4260 PRINT "PROBLEM NUMBER ";S;".":PRINT 4270 PRINT " ";A;" ";C 4280 PRINT " ___ x ___ =" 4290 PRINT " ";B;" ";D 4300 PRINT:PRINT "Your ANSWER will be in THREE PARTS, each SEPARATED 4310 PRINT "by a COMMA ','. First ENTER the WHOLE NUMBER" 4320 PRINT "(0 if NONE), then the NUMERATOR and finally the 4330 PRINT "DENOMINATOR. 15 4340 PRINT "(EXAMPLE: 3,15,16 would be entered for 3 ___ )" 4350 PRINT " 16" 4360 PRINT:PRINT "Be sure to REDUCE your ANSWER to the LOWEST form" 4370 PRINT "POSSIBLE." 4380 PRINT:INPUT "Do this NOW! (Then press RETURN/ENTER)";T,U,V 4390 PRINT: IF T=O AND U=P AND V=H AND KK$="A" THEN GOSUB 62400:PRINT:PRINT "Your WHOLE NUMBER";T;"NUMERATOR";U;"and DENOMINATOR";V;CHR$(10)CHR$(13);"are all CORRECT ";USER$;" !!":R=R+1:WWW=0:GOTO 4460 4400 PRINT: IF T=O AND U=P AND V=H AND KK$="B" THEN GOSUB 63000:PRINT:PRINT "Your WHOLE NUMBER";T;"NUMERATOR";U;"and DENOMINATOR";V;CHR$(10)CHR$(13);"are all CORRECT ";USER$;" !!":GOTO 4690 4410 IF WWW=2 THEN GOSUB 62300:PRINT:PRINT "SORRY!! You missed the same problem 3 times. Look";CHR$(10)CHR$(13);"at the right answer.":PRINT:W=W+1:PRINT:GOTO 4460 4420 IF T<>O OR U<>P OR V<>H THEN :W=W+1:WWW=WWW+1 4430 IF WWW=1 THEN GOSUB 62100:PRINT:PRINT "SORRY!! WRONG answer. Try again.": ELSE IF WWW=2 THEN GOSUB 62200:PRINT:PRINT "SORRY!! WRONG answer. Try again." 4440 IF T=0 AND U=Y AND V=Z AND Z<>H THEN PRINT "Your NUMERATOR";Y;"and DENOMINATOR";Z;"are CORRECT,";CHR$(10)CHR$(13);"but you DID NOT REDUCE far enough.":PRINT:GOTO 4260 4450 IF T=0 AND U=G AND V=H AND G>H THEN PRINT "Your NUMERATOR";G;"and DENOMINATOR";H;"are CORRECT,";CHR$(10)CHR$(13);"but you forgot to MAKE your ANSWER a WHOLE ";CHR$(10)CHR$(13);"NUMBER and FRACTION.":PRINT:GOTO 4260 ELSE GOTO 4260 4460 PRINT 4470 PRINT USING N$;A; 4480 PRINT " "; 4490 PRINT USING N$;C; 4500 PRINT " "; 4510 PRINT USING S$;Y; 4520 PRINT " "; 4530 PRINT USING S$;G; 4540 PRINT " "; 4550 PRINT USING S$;P 4560 PRINT "_ x _ = ___ or ___ or "; 4570 PRINT USING O$;O; 4580 PRINT " __" 4590 PRINT USING N$;B; 4600 PRINT " "; 4610 PRINT USING N$;D; 4620 PRINT " "; 4630 PRINT USING S$;Z; 4640 PRINT " "; 4650 PRINT USING S$;H; 4660 PRINT " "; 4670 PRINT USING S$;H 4680 IF WWW=2 THEN PRINT:PRINT:GOTO 1200 4690 IF KK$="B" AND R=20 THEN 1200 ELSE GOSUB 50000 4700 IF X$<>"S" THEN S=S+1:GOTO 4020 ELSE PRINT CHR$(26)CHR$(7):GOTO 4690 5000 REM "LEVEL 5" 5010 GOSUB 20000 5020 REST ORE:READ A,B,C,D 5030 A=INT(RND(A)*1000):B=INT(RND(B)*1000):C=INT(RND(C)*1000):D=INT(RND(D)*1000) 5040 IF A=0 OR B=0 OR C=0 OR D=0 THEN 5020 5050 FOR I=1 TO 5 5060 IF A>=100 THEN A=INT(A/10) 5070 IF B>=100 THEN B=INT(B/10) 5080 IF C>=100 THEN C=INT(C/10) 5090 IF D>=100 THEN D=INT(D/10) 5100 NEXT I 5110 E=A*C 5120 F=B*D 5130 IF E=F THEN 5020 5140 Y=E:Z=F 5150 J=9 5160 WHILE J>=1 5170 FOR K=1 TO 4 5180 IF E/J=INT(E/J) AND F/J=INT(F/J) THEN E=E/J:F=F/J:G=E:H=F 5190 NEXT K 5200 J=J-1 5210 WEND 5220 IF G/H=INT(G/H) THEN 5020 5230 O=INT(G/H) 5240 P=G-(O*H) 5250 PRINT CHR$(26) 5260 PRINT "PROBLEM NUMBER ";S;".":PRINT 5270 PRINT " ";A;" ";C 5280 PRINT " ___ x ___ =" 5290 PRINT " ";B;" ";D 5300 PRINT:PRINT "Your ANSWER will be in THREE PARTS, each SEPARATED 5310 PRINT "by a COMMA ','. First ENTER the WHOLE NUMBER" 5320 PRINT "(0 if NONE), then the NUMERATOR and finally the 5330 PRINT "DENOMINATOR. 15 5340 PRINT "(EXAMPLE: 3,15,16 would be entered for 3 ___ )" 5350 PRINT " 16" 5360 PRINT:PRINT "Be sure to REDUCE your ANSWER to the LOWEST form" 5370 PRINT "POSSIBLE." 5380 PRINT:INPUT "Do this NOW! (Then press RETURN/ENTER)";T,U,V 5390 PRINT: IF T=O AND U=P AND V=H AND KK$="A" THEN GOSUB 62400:PRINT:PRINT "Your WHOLE NUMBER";T;"NUMERATOR";U;"and DENOMINATOR";V;CHR$(10)CHR$(13);"are all CORRECT ";USER$;" !!":R=R+1:WWW=0:GOTO 5460 5400 PRINT: IF T=O AND U=P AND V=H AND KK$="B" THEN GOSUB 63000:PRINT:PRINT "Your WHOLE NUMBER";T;"NUMERATOR";U;"and DENOMINATOR";V;CHR$(10)CHR$(13);"are all CORRECT ";USER$;" !!":GOTO 5710 5410 IF WWW=2 THEN GOSUB 62300:PRINT:PRINT "SORRY!! You missed the same problem 3 times. Look";CHR$(10)CHR$(13);"at the right answer.":PRINT:W=W+1:PRINT:GOTO 5460 5420 IF T<>O OR U<>P OR V<>H THEN :W=W+1:WWW=WWW+1 5430 IF WWW=1 THEN GOSUB 62100:PRINT:PRINT "SORRY!! WRONG answer. Try again.": ELSE IF WWW=2 THEN GOSUB 62200:PRINT:PRINT "SORRY!! WRONG answer. Try again." 5440 IF T=0 AND U=Y AND V=Z AND Z<>H THEN PRINT "Your NUMERATOR";Y;"and DENOMINATOR";Z;"are CORRECT,";CHR$(10)CHR$(13);"but you DID NOT REDUCE far enough.":PRINT:GOTO 5260 5450 IF T=0 AND U=G AND V=H AND G>H THEN PRINT "Your NUMERATOR";G;"and DENOMINATOR";H;"are CORRECT,";CHR$(10)CHR$(13);"but you forgot to MAKE your ANSWER a WHOLE ";CHR$(10)CHR$(13);"NUMBER and FRACTION.":PRINT:GOTO 5260 ELSE GOTO 5260 5460 PRINT 5470 PRINT " "; 5480 PRINT USING O$;A; 5490 PRINT " "; 5500 PRINT USING O$;C; 5510 PRINT " "; 5520 PRINT USING T$;Y; 5530 PRINT " "; 5540 PRINT USING T$;G; 5550 PRINT " "; 5560 PRINT USING T$;P 5570 PRINT " __ x __ = ____ or ____ or "; 5580 PRINT USING O$;O; 5590 PRINT " ___" 5600 PRINT " "; 5610 PRINT USING O$;B; 5620 PRINT " "; 5630 PRINT USING O$;D; 5640 PRINT " "; 5650 PRINT USING T$;Z; 5660 PRINT " "; 5670 PRINT USING T$;H; 5680 PRINT " "; 5690 PRINT USING T$;H 5700 IF WWW=2 THEN PRINT:PRINT:GOTO 1200 5710 IF KK$="B" AND R=20 THEN 1200 ELSE GOSUB 50000 5720 IF X$<>"S" THEN S=S+1:GOTO 5020 ELSE PRINT CHR$(26)CHR$(7):GOTO 5710 6000 GOTO 370 7000 GOTO 370 8000 GOTO 370 9000 GOTO 370 10000 REM "DATA & SUB-ROUTINES"" 10010 DATA ,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,-999 20000 RANDOMIZE SEED 20040 R=0: REM "INITIALIZE RIGHT ANSWER COUNT" 20050 W=0: REM "INITIALIZE WRONG ANSWER COUNT" 20060 WWW=0: REM "INITIALIZE 3 WRONG ANSWER COUNT" 20070 S=1: REM "INITIALIZE PROBLEM NUMBER COUNT" 20080 N$="#":O$="##":P$="####.#":Q$="#######":R$="######.##":S$="###":T$="####" 20090 RETURN 30000 RESTORE:READ A,B 30010 IF A=-999 OR B=-999 THEN PRINT CHR$(26):PRINT "OUT OF DATA FOR PROBLEM GENERATION.":GOTO 1200: REM "IF OUT OF DATA, EXIT GRACEFULLY" 30020 RETURN 40000 PRINT:PRINT: INPUT "TYPE in your ANSWER, then press RETURN/ENTER";T:RETURN 50000 PRINT:PRINT "Press S for SCORE, ANY other key to CONTINUE?" 50005 X$=INPUT$(1) 50010 IF X$="S" OR X$="s" THEN PRINT CHR$(26):GOTO 1200 ELSE RETURN r SCORE, ANY 10 REM "SUB 1.6, COPYRIGHT 1983" 30 REM "By SmallSoft" 35 CLS$=CHR$(26):CH$=CHR$(27) 40 PRINT CHR$(26):FOR I=1 TO 7:PRINT:NEXT 50 PRINT " WELCOME TO SUBtraction ";USER$ 80 PRINT:PRINT "Yes, this is SUBtraction. In this sub-program of" 90 PRINT "KIDMATH, you will be able to work subtraction " 100 PRINT "problems at any of five (5) levels of hardness." 105 COMMON SEED 110 CHAIN MERGE "GRAPHIC",360,ALL 360 PRINT CHR$(26):PRINT 363 PRINT TAB(18);"LEVEL MENU 366 FOR I=1 TO 4:PRINT:NEXT 370 PRINT " First, ";USER$;", you must pick the level of " 380 PRINT " hardness you desire from the five" 390 PRINT " choices available. Or, you may EXIT back" 400 PRINT " to the original math program." 410 PRINT 420 PRINT " 1 > LEVEL 1. (Single whole numbers)" 430 PRINT " 2 > LEVEL 2, (Complex whole numbers)" 440 PRINT " 3 > LEVEL 3, (Complex decimal numbers)" 450 PRINT " 4 > LEVEL 4, (Simple fractions)" 460 PRINT " 5 > LEVEL 5, (Complex fractions)" 510 PRINT " E > EXIT, to KIDMATH" 520 PRINT:PRINT " TYPE in your CHOICE?"; 522 H$=INPUT$(1) 523 IF H$="E" OR H$="e" THEN PRINT:PRINT:PRINT " WAIT!! Returning to KIDMATH":CHAIN "KM",970,ALL 524 H=VAL(H$) 530 PRINT CHR$(26) 540 IF H<=0 OR H>=6 THEN PRINT CHR$(7):FOR I=1 TO 6:PRINT:NEXT I:PRINT " The number must be between 1 and 5, or E":FOR I=1 TO 1500:NEXT I:GOTO 360 550 PRINT CHR$(26):PRINT:PRINT:PRINT:PRINT:PRINT "Now, ";USER$;", you must pick whether you want REGULAR" 560 PRINT "DRILL or TEST for a possible REWARD." 570 PRINT:PRINT:PRINT:PRINT " A > REGULAR DRILL" 580 PRINT " B > TEST and/or REWARD (20 problems) 590 PRINT:PRINT:PRINT" TYPE in your CHOICE?"; 592 KK$=INPUT$(1) 600 IF KK$<>"A" AND KK$<>"a" AND KK$<>"B" AND KK$<>"b" THEN PRINT CHR$(26)CHR$(7):PRINT " Your CHOICE must be either 'A' or 'B' ONLY.":FOR I=1 TO 1500:NEXT:GOTO 550 605 IF KK$="a" THEN KK$="A" ELSE IF KK$="b" THEN KK$="B" 610 PRINT CHR$(26) 620 ON H GOTO 1000,2000,3000,4000,5000 1000 REM "LEVEL 1" 1010 GOSUB 20000 1020 GOSUB 30000 1030 GOSUB 40000 1040 A=INT(RND(A)*10) 1050 B=INT(RND(B)*10) 1060 C=A+B 1070 IF A=0 OR B=0 THEN 1020 1080 PRINT CHR$(26) 1090 PRINT "PROBLEM NUMBER ";S;".":PRINT:PRINT 1100 PRINT " "; 1110 PRINT USING N$;C 1120 PRINT " - "; 1130 PRINT USING N$;A; 1140 PRINT " ";C;"-";A;"=" 1150 PRINT " ____" 1160 GOSUB 50000 1170 PRINT:IF T=B AND KK$="A" THEN GOSUB 62400:PRINT:PRINT USER$;" Your ANSWER ";B;" is CORRECT!!!":WWW=0:R=R+1 ELSE IF T=B AND KK$="B" THEN GOSUB 63000:PRINT:PRINT USER$;" Your ANSWER ";B;" is CORRECT!!!":GOTO 1200 1180 GOSUB 50010 1190 IF T<>B AND WWW=0 THEN GOSUB 62100:W=W+1:WWW=WWW+1:PRINT:PRINT "SORRY!! WRONG answer, Try again.":GOTO 1090 ELSE IF T<>B AND WWW=1 THEN GOSUB 62200:W=W+1:WWW=WWW+1:PRINT:PRINT "SORRY!! WRONG answer. Try again.":GOTO 1090 1200 IF KK$="B" AND R=20 THEN 1220 ELSE GOSUB 60000 1210 IF X$<>"S" THEN S=S+1:GOTO 1020 ELSE PRINT CHR$(26)CHR$(7):GOTO 1200 1220 PRINT " You had ";R;" RIGHT ANSWERS and ";W;" WRONG ANSWERS." 1225 IF KK$="A" THEN PRINT" Press to CONTINUE" 1230 PRINT " Press L for new LEVEL, A for new AREA, Q to QUIT"; 1235 X$=INPUT$(1):IF X$=CHR$(13) THEN 610 ELSE IF X$="L" OR X$="l" THEN 360 ELSE IF X$="Q" OR X$="q" THEN SYSTEM ELSE SEED=SEED+1:COMMON SEED:CHAIN "KM",970,ALL 1290 END 2000 REM "LEVEL 2" 2010 GOSUB 20000 2020 GOSUB 30000 2030 GOSUB 40000 2040 A=INT(RND(A)*1000) 2050 B=INT(RND(B)*1000) 2060 C=A+B 2070 PRINT CHR$(26) 2080 PRINT "PROBLEM NUMBER ";S;".":PRINT:PRINT 2090 PRINT " "; 2100 PRINT USING O$;C 2110 PRINT " -"; 2120 PRINT USING O$;A; 2130 PRINT " "; 2140 PRINT USING O$;C; 2150 PRINT " -"; 2160 PRINT USING O$;A; 2170 PRINT " =" 2180 PRINT " _____ 2190 GOSUB 50000 2200 PRINT:IF T=B AND KK$="A" THEN GOSUB 62400:PRINT:PRINT USER$;" Your ANSWER ";B;" is CORRECT!!!":WWW=0:R=R+1 ELSE IF T=B AND KK$="B" THEN GOSUB 63000:PRINT:PRINT USER$;" Your ANSWER ";B;" is CORRECT!!!":GOTO 2230 2210 GOSUB 50010 2220 IF T<>B AND WWW=0 THEN GOSUB 62100:W=W+1:WWW=WWW+1:PRINT:PRINT "SORRY!! WRONG answer. Try again.":GOTO 2080 ELSE IF WWW=1 THEN GOSUB 62200:W=W+1:WWW=WWW+1:PRINT:PRINT "SORRY!! WRONG answer. Try again.":GOTO 2080 2230 IF KK$="B" AND R=20 THEN 1220 ELSE GOSUB 60000 2240 IF X$<>"S" THEN S=S+1:GOTO 2020 ELSE PRINT CHR$(26)CHR$(7):GOTO 2230 3000 REM "LEVEL 3" 3010 GOSUB 20000 3020 GOSUB 30000 3030 GOSUB 40000 3040 A=INT(RND(A)*100)/10 3050 B=INT(RND(B)*100)/10 3060 IF A=0 OR B=0 THEN 3020 3070 A=A*85.3 3080 B=B*26.2 3090 A=INT(A*100)/100 3100 B=INT(B*100)/100 3110 IF B>=A THEN 3020 3120 C=A+B 3130 PRINT CHR$(26) 3140 PRINT "PROBLEM NUMBER ";S;".":PRINT:PRINT 3150 PRINT " "; 3160 PRINT USING P$;C 3170 PRINT " - "; 3180 PRINT USING P$;A; 3190 PRINT " ";C;" - ";A;" =" 3200 PRINT " ________" 3210 PRINT:PRINT:INPUT "TYPE in your ANSWER, then PRESS RETURN/ENTER";T 3220 T=INT(T*100)/100 3230 IF T<=B+.009 AND T>=B+.009 THEN T=B 3240 PRINT:IF T=B AND KK$="A" THEN GOSUB 62400:PRINT:PRINT USER$;" Your ANSWER ";B;" is CORRECT !!!":WWW=0:R=R+1 ELSE IF T=B AND KK$="B" THEN GOSUB 63000:PRINT:PRINT USER$;" Your ANSWER ";B;" is CORRECT!!!":GOTO 3270 3250 GOSUB 50010 3260 IF T<>B AND WWW=0 THEN GOSUB 62100:W=W+1:WWW=WWW+1:PRINT:PRINT "SORRY!! WRONG answer, Try again.":GOTO 3140 ELSE IF T<>B AND WWW=1 THEN GOSUB 62200:W=W+1:WWW=WWW+1:PRINT:PRINT "SORRY!! WRONG answer. Try again.":GOTO 3140 3270 IF KK$="B" AND R=20 THEN 1220 ELSE GOSUB 60000 3280 IF X$<>"S" THEN S=S+1:GOTO 3020 ELSE PRINT CHR$(26)CHR$(7):GOTO 3270 4000 REM "LEVEL 4" 4010 GOSUB 20000 4020 GOSUB 40000 4030 RESTORE:READ A,B,C,D 4040 A=INT(RND(A)*1000):B=INT(RND(B)*1000):C=INT(RND(C)*1000):D=INT(RND(D)*1000) 4050 IF A=0 OR B=0 OR C=0 OR D=0 THEN 4030 4060 FOR I=1 TO 5 4070 IF A>=10 THEN A=INT(A/10) 4080 IF B>=10 THEN B=INT(B/10) 4090 IF C>=10 THEN C=INT(C/10) 4100 IF D>=10 THEN D=INT(D/10) 4110 NEXT I 4120 IF A/B=1 4200 FOR K=1 TO 3 4210 IF H/J=INT(H/J) AND F/J=INT(F/J) THEN L=H/J:M=F/J:H=L:F=M 4220 NEXT K 4230 J=J-1 4240 WEND 4250 IF L/M=INT(L/M) THEN 4030 4260 O=INT(L/M) 4270 P=L-(O*M) 4280 PRINT CHR$(26) 4290 PRINT "PROBLEM NUMBER ";S;".":PRINT 4300 PRINT " ";A;" ";C 4310 PRINT " ___ - ___ =" 4320 PRINT " ";B;" ";D 4330 PRINT:PRINT "Your ANSWER will be in THREE PARTS, each SEPARATED 4340 PRINT "by a COMMA ','. First ENTER the WHOLE NUMBER" 4350 PRINT "(0 if NONE), then the NUMERATOR and finally the 4360 PRINT "DENOMINATOR. 15 4370 PRINT "(EXAMPLE: 3,15,16 would be entered for 3 ___ )" 4380 PRINT " 16" 4390 PRINT:PRINT "Be sure to REDUCE you ANSWER to the LOWEST form" 4400 PRINT "POSSIBLE." 4410 PRINT:INPUT "Do this NOW! (Then press RETURN/ENTER)";T,U,V 4420 PRINT: IF T=O AND U=P AND V=M AND KK$="A" THEN GOSUB 62400:PRINT:PRINT "Your WHOLE NUMBER";T;"NUMERATOR";U;"and DENOMINATOR";V;CHR$(10)CHR$(13);"are all CORRECT ";USER$;" !!":R=R+1:WWW=0:GOTO 4490 4430 PRINT: IF T=O AND U=P AND V=M AND KK$="B" THEN GOSUB 63000:PRINT:PRINT "Your WHOLE NUMBER";T;"NUMERATOR";U;"and DENOMINATOR";V;CHR$(10)CHR$(13);"are all CORRECT ";USER$;" !!":GOTO 4800 4440 IF WWW=2 THEN GOSUB 62300:PRINT:PRINT "SORRY!! You missed the same problem 3 times. Look";CHR$(10)CHR$(13);"at the right answer.":PRINT:W=W+1:PRINT:GOTO 4490 4450 IF T<>O OR U<>P OR V<>M THEN W=W+1:WWW=WWW+1 4460 IF WWW=1 THEN GOSUB 62100:PRINT:PRINT "SORRY!! WRONG answer. Try again." ELSE IF WWW=2 THEN GOSUB 62200:PRINT:PRINT "SORRY!! WRONG answer. Try again." 4470 IF T=0 AND U=Y AND V=Z AND Z<>M THEN PRINT "Your NUMERATOR";Y;"and DENOMINATOR";Z;"are CORRECT,";CHR$(10)CHR$(13);"but you DID NOT REDUCE far enough.":PRINT:GOTO 4290 4480 IF T=0 AND U=L AND V=M AND L>M THEN PRINT "Your NUMERATOR";L;"and DENOMINATOR";M;"are CORRECT,";CHR$(10)CHR$(13);"but you forgot to MAKE your ANSWER a WHOLE ";CHR$(10)CHR$(13);"NUMBER and FRACTION.":PRINT:GOTO 4290 ELSE GOTO 4290 4490 PRINT 4500 PRINT USING N$;A; 4510 PRINT " "; 4520 PRINT USING N$;C; 4530 PRINT " "; 4540 PRINT USING Q$;E; 4550 PRINT " "; 4560 PRINT USING Q$;G; 4570 PRINT " "; 4580 PRINT USING Q$;Y; 4590 PRINT " "; 4600 PRINT USING Q$;L; 4610 PRINT " "; 4620 PRINT USING Q$;P 4630 PRINT " _ - _ = __ - __ = ___ or ___ or "; 4640 PRINT USING Q$;O; 4650 PRINT " __" 4660 PRINT USING N$;B; 4670 PRINT " "; 4680 PRINT USING N$;D; 4690 PRINT " "; 4700 PRINT USING Q$;Z; 4710 PRINT " "; 4720 PRINT USING Q$;Z; 4730 PRINT " "; 4740 PRINT USING Q$;Z; 4750 PRINT " "; 4760 PRINT USING Q$;M; 4770 PRINT " "; 4780 PRINT USING Q$;M 4790 IF WWW=2 THEN PRINT:PRINT:GOTO 1220 4800 IF KK$="B" AND R=20 THEN 1220 ELSE GOSUB 60000 4810 IF X$<>"S" THEN S=S+1:GOTO 4020 ELSE PRINT CHR$(26)CHR$(7):GOTO 4800 5000 REM "LEVEL 5" 5010 GOSUB 20000 5020 GOSUB 40000 5030 RESTORE:READ A,B,C,D 5040 A=INT(RND(A)*1000):B=INT(RND(B)*1000):C=INT(RND(C)*1000):D=INT(RND(D)*1000) 5050 IF A=0 OR B=0 OR C=0 OR D=0 THEN 5030 5060 FOR I=1 TO 5 5070 IF A>=100 THEN A=INT(A/10) 5080 IF B>=100 THEN B=INT(B/10) 5090 IF C>=100 THEN C=INT(C/10) 5100 IF D>=100 THEN D=INT(D/10) 5110 NEXT I 5120 IF A/B=1 5200 FOR K=1 TO 4 5210 IF H/J=INT(H/J) AND F/J=INT(F/J) THEN L=H/J:M=F/J:H=L:F=M 5220 NEXT K 5230 J=J-1 5240 WEND 5250 IF L/M=INT(L/M) THEN 5030 5260 O=INT(L/M) 5270 P=L-(O*M) 5280 PRINT CHR$(26) 5290 PRINT "PROBLEM NUMBER ";S;".":PRINT 5300 PRINT " ";A;" ";C 5310 PRINT " ___ - ___ =" 5320 PRINT " ";B;" ";D 5330 PRINT:PRINT "Your ANSWER will be in THREE parts, each SEPARATED 5340 PRINT "by a COMMA ','. First ENTER the WHOLE NUMBER" 5350 PRINT "(0 if NONE), then the NUMERATOR and FINALLY the 5360 PRINT "DENOMINATOR. 15 5370 PRINT "(EXAMPLE: 3,15,16 would be entered for 3  ___ )" 5380 PRINT " 16" 5390 PRINT:PRINT "Be sure to REDUCE your ANSWER to the LOWEST form" 5400 PRINT "POSSIBLE." 5410 PRINT:INPUT "Do this NOW! (Then press RETURN/ENTER)";T,U,V 5420 PRINT: IF T=O AND U=P AND V=M AND KK$="A" THEN GOSUB 62400:PRINT:PRINT "Your WHOLE NUMBER";T;"NUMERATOR";U;"and DENOMINATOR";V;CHR$(10)CHR$(13);"are all CORRECT ";USER$;" !!":R=R+1:WWW=0:GOTO 5490 5430 PRINT: IF T=O AND U=P AND V=M AND KK$="B" THEN GOSUB 63000:PRINT:PRINT "Your WHOLE NUMBER";T;"NUMERATOR";U;"and DENOMINATOR";V;CHR$(10)CHR$(13);"are all CORRECT ";USER$;" !!":GOTO 5800 5440 IF WWW=2 THEN GOSUB 62300:PRINT:PRINT "SORRY!! You missed the same problem 3 times. Look";CHR$(10)CHR$(13);"at the right answer.":PRINT:W=W+1:PRINT:GOTO 5490 5450 IF T<>O OR U<>P OR V<>M THEN W=W+1:WWW=WWW+1 5460 IF WWW=1 THEN GOSUB 62100:PRINT:PRINT "SORRY!! WRONG answer. Try again." ELSE IF WWW=2 THEN GOSUB 62200:PRINT:PRINT "SORRY!! WRONG answer. Try again." 5470 IF T=0 AND U=Y AND V=Z AND Z<>M THEN PRINT "Your NUMERATOR";Y;"and DENOMINATOR";Z;"are CORRECT,";CHR$(10)CHR$(13);"but you DID NOT REDUCE far enough.":PRINT:GOTO 5290 5480 IF T=0 AND U=L AND V=M AND L>M THEN PRINT "Your NUMERATOR";L;"and DENOMINATOR";M;"are CORRECT,";CHR$(10)CHR$(13);"but you forgot to MAKE your ANSWER a WHOLE ";CHR$(10)CHR$(13);"NUMBER and FRACTION.":PRINT:GOTO 5290 ELSE GOTO 5290 5490 PRINT 5500 PRINT USING N$;A; 5510 PRINT " "; 5520 PRINT USING N$;C; 5530 PRINT " "; 5540 PRINT USING O$;E; 5550 PRINT " "; 5560 PRINT USING O$;G; 5570 PRINT " "; 5580 PRINT USING O$;Y; 5590 PRINT " "; 5600 PRINT USING O$;L; 5610 PRINT " "; 5620 PRINT USING O$;P 5630 PRINT "__ - __ = ____ - ____ = ____ or ____ or"; 5640 PRINT USING O$;O; 5650 PRINT " ____" 5660 PRINT USING N$;B; 5670 PRINT " "; 5680 PRINT USING N$;D; 5690 PRINT " "; 5700 PRINT USING O$;Z; 5710 PRINT " "; 5720 PRINT USING O$;Z; 5730 PRINT " "; 5740 PRINT USING O$;Z; 5750 PRINT " "; 5760 PRINT USING O$;M; 5770 PRINT " "; 5780 PRINT USING O$;M 5790 IF WWW=2 THEN PRINT:PRINT:GOTO 1220 5800 IF KK$="B" AND R=20 THEN 1220 ELSE GOSUB 60000 5810 IF X$<>"S" THEN S=S+1:GOTO 5020 ELSE PRINT CHR$(26)CHR$(7):GOTO 5800 6000 GOTO 360 7000 GOTO 360 8000 GOTO 360 9000 GOTO 360 10000 REM "DATA & SUB-ROUTINES"" 10010 DATA 1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,-999 20000 RANDOMIZE SEED 20040 R=0 20050 W=0 20060 WWW=0 20070 S=1 20080 RETURN 30000 RESTORE:READ A,B 30010 IF A=-999 OR B=-999 THEN PRINT CHR$(26):PRINT "OUT OF DATA FOR PROBLEM GENERATION":PRINT CHR$(26):GOTO 3080 30020 RETURN 40000 N$="##":O$="####":P$="####.##":Q$="###":RETURN 50000 PRINT:PRINT:INPUT "TYPE in your ANSWER, then press RETURN/ENTER";T:RETURN 50010 IF WWW=2 THEN GOSUB 62300:PRINT:PRINT "SORRY!! You missed the same problem 3 times.";CHR$(10)CHR$(13);"Maybe you should START OVER or try a LOWER LEVEL.":W=W+1:PRINT:GOTO 1220 ELSE RETURN 60000 PRINT:PRINT "Press S for SCORE, ANY other key to CONTINUE?"; 60005 X$=INPUT$(1) 60010 IF X$="S" OR X$="s" THEN PRINT CHR$(26):GOTO 1220 ELSE RETURN  SCORE, ANY other key to CONTINUE?"; 60005 X$=INPUT$(1) 60010 GOSUB 60000 5810 IF X$<>"S" THEN S=S+1:GOTO 5020 ELSE PRINT CHR$(26)CHR$(7):GOTO 5800 6000 GOTO 360 7000 GOTO 360 8000 GOTO 360 9000 GOTO 360 10000 REM "DATA & SUB-ROUTINES"" 10010 DATA 1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,-999 20000 RANDOMIZE SEED 20040 R=0 20050 W=0 20060 WWW=0 20070 S=1 20080 RETURN 30000 RESTORE:READ A,B 30010 IF A=-999 OR B=-999 THEN PRINT CHR$(26):PRINT "OUT OF DATA FOR PROBLEM GENERATION":PRINT CHR$(26):GOTO 3080 30020 RETURN 40000 N$="##":O$="####":P$="####.##":Q$="###":RETURN 50000 PRINT:PRINT:INPUT "TYPE in your ANSWER, then press RETURN/ENTER";T:RETURN 50010 IF WWW=2 THEN GOSUB 62300:PRINT:PRINT "SORRY!! You missed the same problem 3 times.";CHR$(10)CHR$(13);"Maybe you should START OVER or try a LOWER LEVEL.":W=W+1:PRINT:GOTO 1220 ELSE RETURN 60000 PRINT:PRINT "Press S for SCORE, ANY other key to CONTINUE?"; 60005 X$=INPUT$(1) 60010 10 REM "ADD 1.6, COPYRIGHT 1983" 30 REM "By SmallSoft" 35 CLS$=CHR$(26):CH$=CHR$(27) 40 PRINT CHR$(26):FOR I=1 TO 7:PRINT:NEXT 50 PRINT " WELCOME TO ADDition ";USER$ 80 PRINT:PRINT "Yes, this is ADDition. In this sub-program of" 90 PRINT "KIDMATH you will be able to work addition problems" 100 PRINT "at any of five (5) levels of hardness." 105 COMMON SEED 110 CHAIN MERGE "GRAPHIC",360,ALL 360 PRINT CHR$(26):PRINT 363 PRINT TAB(18);"LEVEL MENU 366 FOR I=1 TO 4:PRINT:NEXT 370 PRINT " First, ";USER$;", pick the level of hard-" 380 PRINT " ness you want from the five choices" 390 PRINT " shown below. Or, you may EXIT back to" 400 PRINT " the original KIDMATH program." 410 PRINT 420 PRINT " 1 > LEVEL 1 (Single whole numbers) 430 PRINT " 2 > LEVEL 2 (Complex whole numbers) 440 PRINT " 3 > LEVEL 3 (Complex decimal numbers) 450 PRINT " 4 > LEVEL 4 (Simple fractions)" 460 PRINT " 5 > LEVEL 5 (Complex fractions)" 510 PRINT " E > EXIT, to KIDMATH" 520 PRINT:PRINT " TYPE in your CHOICE?"; 535 H$=INPUT$(1) 536 IF H$="E" OR H$="e" THEN PRINT:PRINT:PRINT " WAIT!! Returning to KIDMATH":CHAIN "KM",970,ALL 537 H=VAL(H$) 539 PRINT CHR$(26) 540 IF H<=0 OR H>=6 THEN PRINT CHR$(7):FOR I=1 TO 6:PRINT:NEXT I:PRINT" The number must be between 1 and 5, or E":FOR I=1 TO 1500:NEXT I:GOTO 360 550 PRINT CHR$(26):PRINT:PRINT:PRINT:PRINT:PRINT "Now, ";USER$;", you must pick whether you want REGULAR" 560 PRINT "DRILL or TEST for a possible REWARD." 570 PRINT:PRINT:PRINT:PRINT " A > REGULAR DRILL" 580 PRINT " B > TEST and/or REWARD (20 problems)" 590 PRINT:PRINT:PRINT " TYPE in your CHOICE?"; 600 KK$=INPUT$(1):IF KK$<>"A" AND KK$<>"a" AND KK$<>"B" AND KK$<>"b" THEN PRINT CHR$(26)CHR$(7):PRINT " Your CHOICE must be either 'A' or 'B' ONLY.":FOR I=1 TO 1500:NEXT:GOTO 550 605 IF KK$="a" THEN KK$="A":IF KK$="b" THEN KK$="B" 607 IF KK$="b" THEN KK$="B" 610 PRINT CHR$(26):ON H GOTO 1000,2000,3000,4000,5000 1000 REM "LEVEL 1" 1010 GOSUB 20000 1020 RESTORE:READ A,B 1030 A=INT(RND(A)*10):REM "GENERATES RANDOM NUMBERS" 1040 B=INT(RND(B)*10) 1050 C=A+B 1060 PRINT CHR$(26) 1070 PRINT "PROBLEM NUMBER ";S;".":PRINT:PRINT 1080 PRINT " ";A 1090 PRINT " +";B;" ";A;" + ";B;"=" 1100 PRINT " ___" 1110 GOSUB 40000 1120 PRINT:IF T=C AND KK$="A" THEN GOSUB 62400:PRINT:PRINT USER$;" Your ANSWER ";C;" is CORRECT!!!":R=R+1:WWW=0 ELSE IF T=C AND KK$="B" THEN GOSUB 63000:PRINT:PRINT USER$;" Your ANSWER ";C;" is CORRECT!!!":GOTO 1150 GOTO 1150 1130 GOSUB 50000 1140 IF T<>C AND WWW=0 THEN GOSUB 62100:W=W+1:WWW=WWW+1:PRINT:PRINT "SORRY!! WRONG answer. Try again.":GOTO 1070 ELSE IF T<>C AND WWW=1 THEN GOSUB 62200:W=W+1:WWW=WWW+1:PRINT:PRINT "SORRY!! WRONG answer. Try again.":GOTO 1070 1150 IF KK$="B" AND R=20 THEN 1170 ELSE GOSUB 60000 1160 IF X$<>"S" THEN S=S+1:GOTO 1020 ELSE PRINT CHR$(26)CHR$(7):GOTO 1150 1170 PRINT " You had ";R;" RIGHT ANSWERS and ";W;" WRONG ANSWERS" 1175 IF KK$="A" THEN PRINT " Press to CONTINUE" 1180 PRINT " Press L for new LEVEL, A for new AREA, Q to QUIT"; 1185 Y$=INPUT$(1):IF Y$=CHR$(13) THEN 610 ELSE IF Y$="L" OR Y$="l" THEN 360 ELSE IF Y$="Q" OR Y$="q" THEN SYSTEM ELSE SEED=SEED+1:COMMON SEED:CHAIN "KM",970,ALL 1240 END 2000 REM "LEVEL 2" 2010 GOSUB 20000 2020 GOSUB 30000 2030 RESTORE:READ A,B,C,D,E 2040 A=INT(RND(A)*100):REM "GENERATES RANDOM NUMBERS" 2050 B=INT(RND(B)*100) 2060 C=INT(RND(C)*100) 2070 D=INT(RND(D)*100) 2080 E=INT(RND(F)*100) 2090 FOR I=1 TO 3 2100 IF A<10 THEN A=A*10:REM "MAKES ALL NUMBERS FALL BETWEEN 10-99 2110 IF B<10 THEN B=B*10 2120 IF C<10 THEN C=C*10 2130 IF D<10 THEN D=D*10 2140 IF E<10 THEN E=E*10 2150 NEXT 2160 F=A+B+C+D+E 2170 PRINT CHR$(26) 2180 PRINT "PROBLEM NUMBER ";S;".":PRINT:PRINT 2190 PRINT " "; 2200 PRINT USING O$;A 2210 PRINT " "; 2220 PRINT USING O$;B 2230 PRINT " "; 2240 PRINT USING O$;C 2250 PRINT " "; 2260 PRINT USING O$;D 2270 PRINT " + "; 2280 PRINT USING O$;E; 2290 PRINT " ";A;"+";B;"+";C;"+";D;"+";E;"=" 2300 PRINT " ____ 2310 GOSUB 40000 2320 PRINT:IF T=F AND KK$="A" THEN GOSUB 62400:PRINT:PRINT USER$;" Your ANSWER ";F; " is CORRECT!!!":WWW=0:R=R+1 ELSE IF T=F AND KK$="B" THEN GOSUB 63000:PRINT:PRINT USER$;" Your ANSWER ";F;" is CORRECT!!!":GOTO 2350 2330 GOSUB 50000 2340 IF T<>F AND WWW=0 THEN GOSUB 62100:W=W+1:WWW=WWW+1:PRINT:PRINT "SORRY!! WRONG answer. Try again.":GOTO 2180 ELSE IF T<>F AND WWW=1 THEN GOSUB 62200:W=W+1:WWW=WWW+1:PRINT:PRINT "SORRY!! WRONG answer. Try again.":PRINT:GOTO 2180 2350 IF KK$="B" AND R=20 THEN 1170 ELSE GOSUB 60000 2360 IF X$<>"S" THEN S=S+1:GOTO 2030 ELSE PRINT CHR$(26)CHR$(7):GOTO 2350 2370 END 3000 REM "LEVEL 3" 3010 GOSUB 20000 3020 GOSUB 30000 3030 RESTORE:READ A,B,C,D 3040 A=(INT(RND(A)*100000!)/10):REM: "GENERATES RANDOM NUMBERS" 3050 B=(INT(RND(B)*100000!)/10) 3060 C=(INT(RND(C)*100000!)/10) 3070 D=(INT(RND(D)*100000!)/10) 3080 FOR I=1 TO 5 3090 IF A<1000 THEN A=A*10+.3 :REM: "KEEPS ALL NUMBERS BETWEEN 100.0-999.9 3100 IF B<1000 THEN B=B*10+.6 3110 IF C<1000 THEN C=C*10+.2 3120 IF D<1000 THEN D=D*10+.9 3130 NEXT 3140 E=A+B+C+D 3150 E=(INT(E*10))/10:REM "STRIPS OFF ROUND-UP/DOWN" 3160 PRINT CHR$(26) 3170 PRINT "PROBLEM NUMBER ";S;".":PRINT:PRINT 3180 PRINT " "; 3190 PRINT USING P$;A 3200 PRINT " "; 3210 PRINT USING P$;B 3220 PRINT " "; 3230 PRINT USING P$;C 3240 PRINT "+ "; 3250 PRINT USING P$;D; 3260 PRINT " ";A;"+";B;"+";C;"+";D;"=" 3270 PRINT "________" 3280 GOSUB 40000 3290 PRINT:IF T=E AND KK$="A" THEN GOSUB 62400:PRINT:PRINT USER$;" Your ANSWER ";E;" is CORRECT!!!":WWW=0:R=R+1 ELSE IF T=E AND KK$="B" THEN GOSUB 63000:PRINT:PRINT USER$;" Your ANSWER ";E;" is CORRECT":GOTO 3320 3300 GOSUB 50000 3310 IF T<>E AND WWW=0 THEN GOSUB 62100:W=W+1:WWW=WWW+1:PRINT:PRINT "SORRY!! WRONG answer. Try again.":GOTO 3170 ELSE IF T<>E AND WWW=1 THEN GOSUB 62200:W=W+1:WWW=WWW+1:PRINT:PRINT "SORRY!! WRONG answer. Try again.":GOTO 3170 3320 IF KK$="B" AND R=20 THEN 1170 ELSE GOSUB 60000 3330 IF X$<>"S" THEN S=S+1:GOTO 3030 ELSE PRINT CHR$(26)CHR$(7):GOTO 3320 3340 END 4000 REM "LEVEL 4" 4010 GOSUB 20000 4020 GOSUB 30000 4030 RESTORE:READ A,B,C,D 4040 A=INT(RND(A)*1000):B=INT(RND(B)*1000):C=INT(RND(C)*1000):D=INT(RND(D)*1000) 4050 IF A=0 OR B=0 OR C=0 OR D=0 THEN 4030 4060 FOR I=1 TO 5 4070 IF A>=10 THEN A=INT(A/10) 4080 IF B>=10 THEN B=INT(B/10) 4090 IF C>=10 THEN C=INT(C/10) 4100 IF D>=10 THEN D=INT(D/10) 4110 NEXT I 4120 IF A>B THEN SWAP A,B 4130 IF C>D THEN SWAP C,D 4140 F=B*D 4150 E=(F/B)*A 4160 G=(F/D)*C 4170 H=E+G 4180 Y=H:Z=F 4190 J=9 4200 WHILE J>=1 4210 FOR K=1 TO 3 4220 IF H/J=INT(H/J) AND F/J=INT(F/J) THEN L=H/J:M=F/J:H=L:F=M 4230 NEXT K 4240 J=J-1 4250 WEND 4260 IF L/M=INT(L/M) THEN 4030 4270 O=INT(L/M) 4280 P=L-(O*M) 4290 IF P=0 THEN M=0 4300 PRINT CHR$(26) 4310 PRINT "PROBLEM NUMBER ";S;".":PRINT 4320 PRINT " ";A;" ";C 4330 PRINT " ___ + ___ =" 4340 PRINT " ";B;" ";D 4350 PRINT:PRINT "Your ANSWER will be in THREE PARTS, each SEPARATED 4360 PRINT "by a COMMA ','. First,ENTER the WHOLE NUMBER" 4370 PRINT "(0 IF NONE), then the NUMERATOR and finally the 4380 PRINT "DENOMINATOR. 15 4390 PRINT "(EXAMPLE: 3,15,16 would be entered for 3 ___ )" 4400 PRINT " 16" 4410 PRINT:PRINT "Be sure to REDUCE your ANSWER to the LOWEST form" 4420 PRINT "POSSIBLE." 4430 PRINT:INPUT "Do this NOW! (Then press RETURN/ENTER)";T,U,V 4440 PRINT: IF T=O AND U=P AND V=M AND KK$="A" THEN GOSUB 62400:PRINT:PRINT "Your WHOLE NUMBER";T;"NUMERATOR";U;"and DENOMINATOR";V;CHR$(10)CHR$(13);"are all CORRECT ";USER$;" !!":R=R+1:WWW=0:GOTO 4510 4450 PRINT: IF T=O AND U=P AND V=M AND KK$="B" THEN GOSUB 63000:PRINT:PRINT "Your WHOLE NUMBER";T;"NUMERATOR";U;"and DENOMINATOR";V;CHR$(10)CHR$(13);"are all CORRECT ";USER$;" !!":GOTO 4820 4460 IF WWW=2 THEN GOSUB 62300:PRINT:PRINT "SORRY!! you missed the same problem 3 times. Look";CHR$(10)CHR$(13);"at the right answer.":PRINT:W=W+1:PRINT:GOTO 4510 4470 IF T<>O OR U<>P OR V<>M THEN W=W+1:WWW=WWW+1 4480 IF WWW=1 THEN GOSUB 62100:PRINT:PRINT "SORRY!! WRONG answer. Try again." ELSE IF WWW=2 THEN GOSUB 62200:PRINT:PRINT "SORRY!! WRONG answer. Try again." 4490 IF T=0 AND U=Y AND V=Z AND Z<>M THEN PRINT "Your NUMERATOR";Y;"and DENOMINATOR";Z;"are CORRECT,";CHR$(10)CHR$(13);"but you DID NOT REDUCE far enough.":PRINT:GOTO 4310 4500 IF T=0 AND U=L AND V=M AND L>M THEN PRINT "Your NUMERATOR";L;"and DENOMINATOR";M;"are CORRECT,";CHR$(10)CHR$(13);"but,you forget to MAKE your ANSWER a WHOLE ";CHR$(10)CHR$(13);"NUMBER and FRACTION.":PRINT:GOTO 4310 ELSE GOTO 4310 4510 PRINT 4520 PRINT USING N$;A; 4530 PRINT " "; 4540 PRINT USING N$;C; 4550 PRINT " "; 4560 PRINT USING Q$;E; 4570 PRINT " "; 4580 PRINT USING Q$;G; 4590 PRINT " "; 4600 PRINT USING Q$;Y; 4610 PRINT " "; 4620 PRINT USING Q$;L; 4630 PRINT " "; 4640 PRINT USING Q$;P 4650 PRINT "_ + _ = ___ + ___ = ___ or ___ or "; 4660 PRINT USING O$;O; 4670 PRINT " __" 4680 PRINT USING N$;B; 4690 PRINT " "; 4700 PRINT USING N$;D; 4710 PRINT " "; 4720 PRINT USING Q$;Z; 4730 PRINT " "; 4740 PRINT USING Q$;Z; 4750 PRINT " "; 4760 PRINT USING Q$;Z; 4770 PRINT " "; 4780 PRINT USING Q$;M; 4790 PRINT " "; 4800 PRINT USING Q$;M 4810 IF WWW=2 THEN PRINT:PRINT:GOTO 1170 4820 IF KK$="B" AND R=20 THEN 1170 ELSE GOSUB 60000 4830 IF X$<>"S" THEN S=S+1:GOTO 4020 ELSE PRINT CHR$(26)CHR$(7):GOTO 4820 5000 REM "LEVEL 5" 5010 GOSUB 20000 5020 GOSUB 30000 5030 RESTORE:READ A,B,C,D 5040 A=INT(RND(A)*1000):B=INT(RND(B)*1000):C=INT(RND(C)*1000):D=INT(RND(D)*1000) 5050 IF A=0 OR B=0 OR C=0 OR D=0 THEN 5030 5060 FOR I=1 TO 5 5070 IF A>=100 THEN A=INT(A/10) 5080 IF B>=100 THEN B=INT(B/10) 5090 IF C>=100 THEN C=INT(C/10) 5100 IF D>=100 THEN D=INT(D/10) 5110 NEXT I 5120 IF A>B THEN SWAP A,B 5130 IF C>D THEN SWAP C,D 5140 F=B*D 5150 E=(F/B)*A 5160 G=(F/D)*C 5170 H=E+G 5180 Y=H:Z=F 5190 J=9 5200 WHILE J>=1 5210 FOR K=1 TO 4 5220 IF H/J=INT(H/J) AND F/J=INT(F/J) THEN L=H/J:M=F/J:H=L:F=M 5230 NEXT K 5240 J=J-1 5250 WEND 5260 IF L/M=INT(L/M) THEN 5030 5270 O=INT(L/M) 5280 P=L-(O*M) 5290 IF P=0 THEN M=0 5300 PRINT CHR$(26) 5310 PRINT "PROBLEM NUMBER ";S;".":PRINT 5320 PRINT " ";A;" ";C 5330 PRINT " ___ + ___ =" 5340 PRINT " ";B;" ";D 5350 PRINT:PRINT "Your ANSWER will be in THREE parts, each SEPARATED 5360 PRINT "by a COMMA ','. First ENTER the WHOLE NUMBER" 5370 PRINT "(0 IF NONE), then the NUMERATOR and finally the 5380 PRINT "DENOMINATOR. 15 5390 PRINT "(EXAMPLE: 3,15,16 would be entered for 3 ___ )" 5400 PRINT " 16" 5410 PRINT:PRINT "Be sure to REDUCE your ANSWER to the LOWEST form" 5420 PRINT "possible." 5430 PRINT:INPUT "Do this NOW! (then PRESS RETURN/ENTER)";T,U,V 5440 PRINT: IF T=O AND U=P AND V=M AND KK$="A" THEN GOSUB 62400:PRINT:PRINT "Your WHOLE NUMBER";T;"NUMERATOR";U;"and DENOMINATOR";V;CHR$(10)CHR$(13);"are all CORRECT ";USER$;" !!":R=R+1:WWW=0:GOTO 5510 5450 PRINT: IF T=O AND U=P AND V=M AND KK$="B" THEN GOSUB 63000:PRINT:PRINT "Your WHOLE NUMBER";T;"NUMERATOR";U;"and DENOMINATOR";V;CHR$(10)CHR$(13);"are all CORRECT ";USER$;" !!":GOTO 5820 5460 IF WWW=2 THEN GOSUB 62300:PRINT:PRINT "SORRY!! You missed the same problem 3 times. Look";CHR$(10)CHR$(13);"at the right answer.":PRINT:W=W+1:PRINT:GOTO 5510 5470 IF T<>O OR U<>P OR V<>M THEN W=W+1:WWW=WWW+1 5480 IF WWW=1 THEN GOSUB 62100:PRINT:PRINT "SORRY!! WRONG answer. Try again." ELSE IF WWW=2 THEN GOSUB 62200:PRINT:PRINT "SORRY!! WRONG answer. Try again." 5490 IF T=0 AND U=Y AND V=Z AND Z<>M THEN PRINT "Your NUMERATOR";Y;"and DENOMINATOR";Z;"are CORRECT,";CHR$(10)CHR$(13);"but you DID NOT REDUCE far enough.":PRINT:GOTO 5310 5500 IF T=0 AND U=L AND V=M AND L>M THEN PRINT "Your NUMERATOR";L;"and DENOMINATOR";M;"are CORRECT,";CHR$(10)CHR$(13);"but you forgot to make your ANSWER a WHOLE ";CHR$(10)CHR$(13);"NUMBER and FRACTION.":PRINT:GOTO 5310 ELSE GOTO 5310 5510 PRINT 5520 PRINT USING O$;A; 5530 PRINT " "; 5540 PRINT USING O$;C; 5550 PRINT " "; 5560 PRINT USING R$;E; 5570 PRINT " "; 5580 PRINT USING R$;G; 5590 PRINT " "; 5600 PRINT USING R$;Y; 5610 PRINT " "; 5620 PRINT USING R$;L; 5630 PRINT " "; 5640 PRINT USING R$;P 5650 PRINT "__ + __ = ____ + ____ = ____ or ____ or "; 5660 PRINT USING Q$;O; 5670 PRINT " ____" 5680 PRINT USING O$;B; 5690 PRINT " "; 5700 PRINT USING O$;D; 5710 PRINT " "; 5720 PRINT USING R$;Z; 5730 PRINT " "; 5740 PRINT USING R$;Z; 5750 PRINT " "; 5760 PRINT USING R$;Z; 5770 PRINT " "; 5780 PRINT USING R$;M; 5790 PRINT " "; 5800 PRINT USING R$;M 5810 IF WWW=2 THEN PRINT:PRINT:GOTO 1170 5820 IF KK$="B" AND R=20 THEN 1170 ELSE GOSUB 60000 5830 IF X$<>"S" THEN S=S+1:GOTO 5020 ELSE PRINT CHR$(26)CHR$(7):GOTO 5820 6000 GOTO 360 7000 GOTO 360 8000 GOTO 360 9000 GOTO 360 10000 REM "DATA & SUB-ROUTINES" 10010 DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 10020 DATA 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,-999 20000 RANDOMIZE SEED 20010 R=0: REM "INITIALIZE RIGHT ANSWER COUNT 20050 W=0: REM "INITIALIZE WRONG ANSWER COUNT 20060 WWW=0: REM "INITIALIZE 3 WRONG ANSWER COUNT 20070 S=1: REM "INITIALIZE PROBLEM NUMBER COUNT 20080 RETURN 30000 N$="#":O$="##":P$="####.#":Q$="###":R$="####":RETURN 40000 PRINT:PRINT:INPUT "TYPE in your ANSWER, then press RETURN/ENTER ";T:RETURN 50000 IF WWW=2 THEN GOSUB 62300:PRINT:PRINT "SORRY!! you missed the same problem 3 times.";CHR$(10)CHR$(13);"Maybe you should START OVER or try a LOWER LEVEL.":PRINT:W=W+1:PRINT:GOTO 1170 ELSE RETURN 60000 PRINT:PRINT "Press S for SCORE, ANY other key to CONTINUE?"; 60005 X$=INPUT$(1) 60010 IF X$="S" OR X$="s" THEN PRINT CHR$(26):GOTO 1170 ELSE RETURN SCORE, ANY other key to CONTINUE?"; 60005 X$=INPUT$(1) 60010 IF X$="S" OR X$="s" THEN PRINT CHR$(26):GOTO 1GOTO 360 9000 GOTO 360 10000 REM "DATA & SUB-ROUTINES" 10010 DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 10020 DATA 2,2,2,2,210 REM "DIV 1.6, COPYRIGHT 1983" 30 REM "By SmallSoft" 35 CLS$=CHR$(26):CH$=CHR$(27) 40 PRINT CHR$(26):FOR I=1 TO 7:PRINT:NEXT 50 PRINT " WELCOME TO DIVision ";USER$ 80 PRINT:PRINT "Yes, this is DIVision. In this sub-program of" 90 PRINT "KIDMATH, you will be able to work division problems" 100 PRINT "at any of six (6) levels of hardness." 105 COMMON SEED 110 CHAIN MERGE "GRAPHIC",360,ALL 360 PRINT CHR$(26):PRINT 363 PRINT TAB(18);"LEVEL MENU 366 FOR I=1 TO 4:PRINT:NEXT 370 PRINT " First, ";USER$;", you must state what level of " 380 PRINT " hardness you desire from the six" 390 PRINT " choices available. Or, you may exit back" 400 PRINT " the original KIDMATH program." 410 PRINT 420 PRINT " 1 > LEVEL 1. (Simple whole numbers)" 430 PRINT " 2 > LEVEL 2, (Complex whole numbers)" 440 PRINT " 3 > LEVEL 3, (Complex whole numbers" 450 PRINT " with remainders)" 460 PRINT " 4 > LEVEL 4, (Complex decimal numbers)" 470 PRINT " 5 > LEVEL 5, (Simple fractions)" 480 PRINT " 6 > LEVEL 6, (Complex fractions)" 520 PRINT " E > EXIT, to KIDMATH" 530 PRINT:PRINT " TYPE in your CHOICE?"; 532 H$=INPUT$(1) 534 IF H$="E" OR H$="e" THEN PRINT:PRINT:PRINT " WAIT!! Returning to KIDMATH":CHAIN "KM",970,ALL 536 H=VAL(H$) 540 PRINT CHR$(26) 550 IF H<=0 OR H>=7 THEN PRINT CHR$(7):FOR I=1 TO 6:PRINT:NEXT I:PRINT " The number must be between 1 and 6, or E":FOR I=1 TO 1500 :NEXT I :GOTO 360 560 PRINT CHR$(26):PRINT:PRINT:PRINT:PRINT:PRINT "Now, ";USER$;", you must pick whether you want REGULAR" 570 PRINT "DRILL or TEST for a possible REWARD." 580 PRINT:PRINT:PRINT:PRINT " A > REGULAR DRILL" 590 PRINT " B > TEST and/or REWARD (20 problems)" 600 PRINT:PRINT:PRINT " TYPE in your CHOICE?"; 605 KK$=INPUT$(1) 610 IF KK$<>"A" AND KK$<>"a" AND KK$<>"B" AND KK$<>"b" THEN PRINT CHR$(26)CHR$(7):PRINT " Your CHOICE must be either 'A' or 'B' ONLY.":FOR I=1 TO 1500:NEXT:GOTO 560 615 IF KK$="a" THEN KK$="A" ELSE IF KK$="b" THEN KK$="B" 620 PRINT CHR$(26) 630 ON H GOTO 1000,2000,3000,4000,5000,6000 1000 REM "LEVEL 1" 1010 GOSUB 20000 1020 GOSUB 30000 1030 A=INT(RND(A)*10) 1040 B=INT(RND(B)*10) 1050 C=A*B 1060 IF A=0 OR B=0 THEN 1020 1070 IF B=0 THEN 30000 1080 PRINT CHR$(26) 1090 PRINT "PROBLEM NUMBER ";S;".":PRINT:PRINT 1100 PRINT " ______ 1110 PRINT A;")";C;" ";C;"/";A;"=" 1120 GOSUB 40000 1130 IF T=B AND KK$="A" THEN GOSUB 62400:PRINT:PRINT USER$;" Your ANSWER ";B;" is CORRECT!!!":WWW=0:R=R+1 ELSE IF T=B AND KK$="B" THEN GOSUB 63000:PRINT:PRINT USER$;" Your ANSWER ";B;" is CORRECT!!!":GOTO 1160 1140 IF WWW=2 THEN GOSUB 62300:PRINT:PRINT "SORRY!! You missed the same problem 3 times.";CHR$(10)CHR$(13);"Maybe you should START OVER or try a LOWER LEVEL.":W=W+1:PRINT:GOTO 1180 1150 IF T<>B AND WWW=0 THEN GOSUB 62100:PRINT:PRINT "SORRY!! WRONG answer. Try again.":W=W+1:WWW=WWW+1:GOTO 1090 ELSE IF WWW=1 THEN GOSUB 62200:PRINT:PRINT "SORRY!! WRONG answer. Try again.":W=W+1:WWW=WWW+1:GOTO 1090 1160 IF KK$="B" AND R=20 THEN 1180 ELSE GOSUB 50000 1170 IF X$<>"S" THEN S=S+1:GOTO 1020 ELSE PRINT CHR$(26)CHR$(7):GOTO 1160 1180 PRINT " You had ";R;" RIGHT ANSWERS and ";W;" WRONG ANSWERS." 1190 IF KK$="A" THEN PRINT" Press to CONTINUE" 1200 PRINT " Press L for new LEVEL, A for new AREA, Q to QUIT"; 1205 Y$=INPUT$(1):IF Y$=CHR$(13) THEN 620 ELSE IF Y$="L" OR Y$="l" THEN 360 ELSE IF Y$="Q" OR Y$="q" THEN SYSTEM ELSE SEED=SEED+1:COMMON SEED:CHAIN "KM",970,ALL 1260 END 2000 REM "LEVEL 2" 2010 GOSUB 20000 2020 GOSUB 30000 2030 A=INT(RND(A)*100) 2040 B=INT(RND(B)*100) 2050 FOR I=1 TO 3 2060 IF A<10 THEN A=A*10 2070 IF B<10 THEN B=B*10 2080 NEXT 2085 IF A>10 THEN A=3+INT(A/10) 2090 C=A*B 2100 D=A*(INT(B/10)) 2110 E=A*(B-(INT(B*10))/10) 2120 PRINT CHR$(26) 2130 PRINT "PROBLEM NUMBER ";S;".":PRINT:PRINT 2140 PRINT " _______" 2150 PRINT " "; 2160 PRINT USING N$;A; 2170 PRINT " )"; 2180 PRINT USING O$;C; 2190 PRINT "  "; 2200 PRINT USING O$;C; 2210 PRINT "/"; 2220 PRINT USING N$;A 2230 GOSUB 40000 2240 IF T=B AND KK$="A" THEN GOSUB 62400:PRINT:PRINT USER$;" Your ANSWER ";B;" is CORRECT!!!":PRINT:WWW=0:R=R+1:GOTO 2270 ELSE IF T=B AND KK$="B" THEN GOSUB 63000:PRINT:PRINT USER$;" Your ANSWER ";B;" is CORRECT!!!":GOTO 2440 2250 IF WWW=2 THEN GOSUB 62300:PRINT:PRINT "SORRY!! You missed the same problem 3 times.";CHR$(10)CHR$(13);"Maybe you should START OVER or try a LOWER LEVEL.":W=W+1:PRINT:GOTO 2270 2260 IF T<>B AND WWW=0 THEN GOSUB 62100:PRINT:PRINT "SORRY!! WRONG answer. Try again.":W=W+1:WWW=WWW+1:GOTO 2130 ELSE IF T<>B AND WWW=1 THEN GOSUB 62200:PRINT:PRINT "SORRY!! WRONG answer. Try again.":W=W+1:WWW=WWW+1:GOTO 2130 2270 PRINT " "; 2280 PRINT USING N$;B 2290 PRINT " _______ 2300 PRINT USING N$;A; 2310 PRINT ")"; 2320 PRINT USING O$;C 2330 PRINT " "; 2340 PRINT USING P$;D 2350 PRINT " ____" 2360 PRINT " "; 2370 PRINT USING P$;C-(D*10) 2380 PRINT " "; 2390 PRINT USING P$;C-(D*10) 2400 PRINT " ___" 2410 PRINT " "; 2420 PRINT USING P$;0 2430 IF WWW=2 THEN PRINT:GOTO 1180 2440 IF KK$="B" AND R=20 THEN 1180 ELSE GOSUB 50000 2450 IF X$<>"S" THEN S=S+1:GOTO 2020 ELSE PRINT CHR$(26)CHR$(7):GOTO 2440 3000 REM "LEVEL 3" 3010 GOSUB 20000 3020 GOSUB 30000 3030 A=INT(RND(A)*10) 3040 B=INT(RND(B)*100) 3050 FOR I=1 TO 3 3060 IF A<1 THEN A=A*10 3070 IF B<10 THEN B=B*10 3080 NEXT 3090 C=A*B 3100 C=C+INT(RND(A)*10) 3110 D=A*INT(B/10) 3120 E=C-(D*10) 3130 F=A*(B-(INT(B/10)*10)) 3140 G=E-F 3150 IF G>=A THEN 3020 3160 PRINT CHR$(26) 3170 PRINT "PROBLEM NUMBER ";S;".":PRINT:PRINT 3180 PRINT " _____" 3190 PRINT " "; 3200 PRINT USING N$;A; 3210 PRINT ")"; 3220 PRINT USING P$;C 3230 PRINT:PRINT "Your ANSWER will be in TWO PARTS." 3240 PRINT "TYPE in your ANSWER and REMAINDER" 3250 INPUT "SEPARATED by a COMMA (,) (EXAMPLE 34,3)";T,U 3260 PRINT:IF T=B AND U=G AND KK$="A" THEN GOSUB 62400:PRINT:PRINT "Your ANSWER";B;"with a REMAINDER OF";G;"is CORRECT ";USER$;" !!!":PRINT:WWW=0:R=R+1:GOTO 3310 3270 IF T=B AND U=G AND KK$="B" THEN GOSUB 63000:PRINT:PRINT "Your ANSWER";B;"with a REMAINDER of";G;"IS CORRECT ";USER$;" !!!":GOTO 3550 3280 IF WWW=2 THEN GOSUB 62300:PRINT:PRINT "SORRY!! You missed the same problem 3 times.";CHR$(10)CHR$(13);"Maybe you should START OVER or try a LOWER LEVEL.":W=W+1:PRINT:GOTO 3310 3290 IF T<>B OR U<>G THEN WWW=WWW+1:W=W+1 3300 IF WWW=1 THEN GOSUB 62100:PRINT:PRINT "SORRY!! WRONG answer. Try again.":GOTO 3170 ELSE IF WWW=2 THEN GOSUB 62200:PRINT:PRINT "SORRY!! WRONG answer. Try again.":GOTO 3170 3310 PRINT " "; 3320 PRINT USING P$;B; 3330 PRINT " Remainder";G 3340 PRINT " _____ ^" 3350 PRINT " "; 3360 PRINT USING N$;A; 3370 PRINT ")"; 3380 PRINT USING P$;C; 3390 PRINT " |" 3400 PRINT " "; 3410 PRINT USING N$;D; 3420 PRINT " |" 3430 PRINT " ___ |" 3440 PRINT " "; 3450 PRINT USING N$;E; 3460 PRINT " |" 3470 PRINT "  "; 3480 PRINT USING N$;F; 3490 PRINT " |" 3500 PRINT " __ |" 3510 PRINT " "; 3520 PRINT USING N$;G; 3530 PRINT " ------------" 3540 IF WWW=2 THEN PRINT:GOTO 1180 3550 IF KK$="B" AND R=20 THEN 1180 ELSE GOSUB 50000 3560 IF X$<>"S" THEN S=S+1:GOTO 3020 ELSE PRINT CHR$(26)CHR$(7):GOTO 3550 4000 REM "LEVEL 4" 4010 GOSUB 20000 4020 GOSUB 30000 4030 A=(INT(RND(A)*1000))/100 4040 B=(INT(RND(B)*1000))/100 4050 FOR I=1 TO 3 4060 IF A<10 AND A>9 THEN A=A*9 4070 IF A<9 THEN A=A*9 4080 IF B<10 AND B>9 THEN B=B*9 4090 IF B<9 THEN B=B*9 4100 NEXT 4110 A=(INT(A*10))/10 4120 B=(INT(B*10))/10 4130 Q$="##.#" 4140 R$="#####.##" 4150 S$="####" 4160 C=A*B 4170 C=(INT(C*100))/100 4180 D=(A*10)*(INT(B/10)) 4190 E=(INT(C*10))-(D*10) 4200 F=(A*10)*INT(B-(INT(B/10))*10) 4210 G=(A*10)*((B-INT(B))*10) 4220 H=0 4230 PRINT CHR$(26) 4240 PRINT "PROBLEM NUMBER ";S;".":PRINT:PRINT 4250 PRINT " _________" 4260 PRINT " "; 4270 PRINT USING Q$;A;  4280 PRINT " )"; 4290 PRINT USING R$;C; 4300 PRINT " "; 4310 PRINT USING R$;C; 4320 PRINT "/"; 4330 PRINT USING Q$;A 4340 GOSUB 40000 4350 PRINT:IF T=B AND KK$="A" THEN GOSUB 62400:PRINT:PRINT USER$;" Your ANSWER ";B;" is CORRECT!!!":WWW=0:R=R+1:GOTO 4380 ELSE IF T=B AND KK$="B" THEN GOSUB 63000:PRINT:PRINT USER$;" Your ANSWER ";B;" is CORRECT!!!":GOTO 4600 4360 IF WWW=2 THEN GOSUB 62300:PRINT:PRINT "SORRY!! You missed the same problem 3 times.";CHR$(10)CHR$(13);"Maybe you should START OVER or try a LOWER LEVEL.":W=W+1:PRINT:GOTO 4380 4370 IF T<>B AND WWW=0 THEN GOSUB 62100:PRINT:PRINT "SORRY!! WRONG answer. Try again.":W=W+1:WWW=WWW+1:GOTO 4240 ELSE IF T<>B AND WWW=1 THEN GOSUB 62200:PRINT:PRINT "SORRY!! WRONG answer. Try again.":W=W+1:WWW=WWW+1:GOTO 4240 4380 PRINT:PRINT " "; 4390 PRINT USING Q$;B 4400 PRINT " __________ 4410 PRINT USING P$;A*10; 4420 PRINT " )"; 4430 PRINT USING R$;C*10 4440 PRINT " "; 4450 PRINT USING P$;D 4460 PRINT " ____" 4470 PRINT " "; 4480 PRINT USING P$;E 4490 PRINT " "; 4500 PRINT USING P$;F 4510 PRINT " ____" 4520 PRINT " "; 4530 PRINT USING P$;G 4540 PRINT " "; 4550 PRINT USING P$;G 4560 PRINT " ____" 4570 PRINT " "; 4580 PRINT USING P$;0 4590 IF WWW=2 THEN PRINT:GOTO 1180 4600 IF KK$="B" AND R=20 THEN 1180 ELSE GOSUB 50000 4610 IF X$<>"S" THEN S=S+1:GOTO 4020 ELSE PRINT CHR$(26)CHR$(7):GOTO 4600 5000 REM "LEVEL 5" 5010 GOSUB 20000 5020 RESTORE:READ A,B,C,D 5030 A=INT(RND(A)*1000):B=INT(RND(B)*1000):C=INT(RND(C)*1000):D=INT(RND(D)*1000) 5040 IF A=0 OR B=0 OR C=0 OR D=0 THEN 5020 5050 FOR I=1 TO 5 5060 IF A>=10 THEN A=INT(A/10) 5070 IF B>=10 THEN B=INT(B/10) 5080 IF C>=10 THEN C=INT(C/10) 5090 IF D>=10 THEN D=INT(D/10) 5100 NEXT I 5110 IF A>B THEN SWAP A,B 5120 IF C>D THEN SWAP C,D 5130 E=A*D 5140 F=B*C 5150 IF E=F THEN 5020 5160 Y=E:Z=F 5170 J=9 5180 WHILE J>=1 5190 FOR K=1 TO 3 5200 IF E/J=INT(E/J) AND F/J=INT(F/J) THEN E=E/J:F=F/J:G=E:H=F 5210 NEXT K 5220 J=J-1 5230 WEND 5240 IF G/H=INT(G/H) THEN 5020 5250 O=INT(G/H) 5260 P=G-(O*H) 5270 PRINT CHR$(26) 5280 PRINT "PROBLEM NUMBER ";S;".":PRINT 5290 PRINT " ";A;" ";C 5300 PRINT " ___ % ___ = NOTE: % = The DIVision symbol." 5310 PRINT " ";B;" ";D 5320 PRINT:PRINT "Your ANSWER will be in THREE PARTS, each SEPARATED 5330 PRINT "by a COMMA ','. First ENTER the WHOLE NUMBER" 5340 PRINT "(0 if NONE), then the NUMERATOR and finally the 5350 PRINT "DENOMINATOR. 15 5360 PRINT "(EXAMPLE: 3,15,16 would be entered for 3 ___ )" 5370 PRINT " 16" 5380 PRINT:PRINT "Be sure to REDUCE your ANSWER to the LOWEST form" 5390 PRINT "POSSIBLE." 5400 PRINT:INPUT "Do this NOW! (Then press RETURN/ENTER)";T,U,V 5410 PRINT: IF T=O AND U=P AND V=H AND KK$="A" THEN GOSUB 62400:PRINT:PRINT "Your WHOLE NUMBER";T;"NUMERATOR";U;"and DENOMINATOR";V;CHR$(10)CHR$(13);"are all CORRECT ";USER$;" !!":R=R+1:WWW=0:GOTO 5480 5420 PRINT: IF T=O AND U=P AND V=H AND KK$="B" THEN GOSUB 63000:PRINT:PRINT "Your WHOLE NUMBER";T;"NUMERATOR";U;"and DENOMINATOR";V;CHR$(10)CHR$(13);"are all CORRECT ";USER$;" !!":GOTO 5790 5430 IF WWW=2 THEN GOSUB 62300:PRINT:PRINT "SORRY!! You missed the same problem 3 times. Look";CHR$(10)CHR$(13);"at the right answer.":PRINT:W=W+1:PRINT:GOTO 5480 5440 IF T<>O OR U<>P OR V<>H THEN W=W+1:WWW=WWW+1 5450 IF WWW=1 THEN GOSUB 62100:PRINT:PRINT "SORRY!! WRONG answer. Try again." ELSE IF WWW=2 THEN GOSUB 62200:PRINT:PRINT "SORRY!! WRONG answer. Try again." 5460 IF T=0 AND U=Y AND V=Z AND Z<>H THEN PRINT "Your NUMERATOR";Y;"and DENOMINATOR";Z;"are CORRECT,";CHR$(10)CHR$(13);"but you DID NOT REDUCE far enough.":PRINT:GOTO 5280 5470 IF T=0 AND U=G AND V=H AND G>H THEN PRINT "Your NUMERATOR";G;"and DENOMINATOR";H;"are CORRECT,";CHR$(10)CHR$(13);"but you forgot to MAKE your ANSWER a WHOLE ";CHR$(10)CHR$(13);"NUMBER and FRACTION.":PRINT:GOTO 5280 ELSE GOTO 5280 5480 PRINT 5490 PRINT USING M$;A; 5500 PRINT " "; 5510 PRINT USING M$;C; 5520 PRINT " "; 5530 PRINT USING M$;A; 5540 PRINT " "; 5550 PRINT USING M$;D; 5560 PRINT " "; 5570 PRINT USING N$;Y; 5580 PRINT " "; 5590 PRINT USING N$;G; 5600 PRINT " "; 5610 PRINT USING N$;P 5620 PRINT "_ % _ = _ x _ = ___ or ___ or "; 5630 PRINT USING N$;O; 5640 PRINT " __" 5650 PRINT USING M$;B; 5660 PRINT " "; 5670 PRINT USING M$;D; 5680 PRINT " "; 5690 PRINT USING M$;B; 5700 PRINT " "; 5710 PRINT USING M$;C; 5720 PRINT " "; 5730 PRINT USING N$;Z; 5740 PRINT " "; 5750 PRINT USING N$;H; 5760 PRINT " "; 5770 PRINT USING N$;H 5780 IF WWW=2 THEN PRINT:PRINT:GOTO 1180 5790 IF KK$="B" AND R=20 THEN 1180 ELSE GOSUB 50000 5800 IF X$<>"S" THEN S=S+1:GOTO 5020 ELSE PRINT CHR$(26)CHR$(7):GOTO 5790 6000 REM "LEVEL 6" 6010 GOSUB 20000 6020 RESTORE:READ A,B,C,D 6030 A=INT(RND(A)*1000):B=INT(RND(B)*1000):C=INT(RND(C)*1000):D=INT(RND(D)*1000) 6040 IF A=0 OR B=0 OR C=0 OR D=0 THEN 6020 6050 FOR I=1 TO 5 6060 IF A>=100 THEN A=INT(A/10) 6070 IF B>=100 THEN B=INT(B/10) 6080 IF C>=100 THEN C=INT(C/10) 6090 IF D>=100 THEN D=INT(D/10) 6100 NEXT I 6110 IF A>B THEN SWAP A,B 6120 IF C>D THEN SWAP C,D 6130 E=A*D 6140 F=B*C 6150 IF E=F THEN 6020 6160 Y=E:Z=F 6170 J=9 6180 WHILE J>=1 6190 FOR K=1 TO 4 6200 IF E/J=INT(E/J) AND F/J=INT(F/J) THEN E=E/J:F=F/J:G=E:H=F 6210 NEXT K 6220 J=J-1 6230 WEND 6240 IF G/H=INT(G/H) THEN 6020 6250 O=INT(G/H) 6260 P=G-(O*H) 6270 PRINT CHR$(26) 6280 PRINT "PROBLEM NUMBER ";S;".":PRINT 6290 PRINT " ";A;" ";C 6300 PRINT " ___ % ___ = NOTE: % = The DIVision symbol." 6310 PRINT " ";B;" ";D 6320 PRINT:PRINT "Your ANSWER will be in THREE PARTS, each SEPARATED 6330 PRINT "by a COMMA ','. First ENTER the WHOLE NUMBER" 6340 PRINT "(0 if NONE), then the NUMERATOR and FINALLY the 6350 PRINT "DENOMINATOR. 15 6360 PRINT "(EXAMPLE: 3,15,16 would be entered for 3 ___ )" 6370 PRINT " 16" 6380 PRINT:PRINT "Be sure to REDUCE your ANSWER to the LOWEST form" 6390 PRINT "POSSIBLE." 6400 PRINT:INPUT "Do this NOW! (Then press RETURN/ENTER)";T,U,V 6410 PRINT: IF T=O AND U=P AND V=H AND KK$="A" THEN GOSUB 62400:PRINT:PRINT "Your WHOLE NUMBER";T;"NUMERATOR";U;"and DENOMINATOR";V;CHR$(10)CHR$(13);"are all CORRECT ";USER$;" !!":R=R+1:WWW=0:GOTO 6480 6420 PRINT:IF T=O AND U=P AND V=H AND KK$="B" THEN GOSUB 63000:PRINT:PRINT "Your WHOLE NUMBER";T;"NUMERATOR";U;"and DENOMINATOR";V;CHR$(10)CHR$(13);"are all CORRECT ";USER$;" !!":GOTO 6790 6430 IF WWW=2 THEN GOSUB 62300:PRINT:PRINT "SORRY!! You missed the same problem 3 times. Look";CHR$(10)CHR$(13);"at the right answer.":PRINT:W=W+1:PRINT:GOTO 6480 6440 IF T<>O OR U<>P OR V<>H THEN W=W+1:WWW=WWW+1 6450 IF WWW=1 THEN GOSUB 62100:PRINT:PRINT "SORRY!! WRONG answer. Try again." ELSE IF WWW=2 THEN GOSUB 62200:PRINT:PRINT "SORRY!! WRONG answer. Try again." 6460 IF T=0 AND U=Y AND V=Z AND Z<>H THEN PRINT "Your NUMERATOR";Y;"and DENOMINATOR";Z;"are CORRECT,";CHR$(10)CHR$(13);"but you DID NOT REDUCE far enough.":PRINT:GOTO 6280 6470 IF T=0 AND U=G AND V=H AND G>H THEN PRINT "Your NUMERATOR";G;"and DENOMINATOR";H;"are CORRECT,";CHR$(10)CHR$(13);"but you forgot to MAKE your ANSWER a WHOLE ";CHR$(10)CHR$(13);"NUMBER and FRACTION.":PRINT:GOTO 6280 ELSE GOTO 6280 6480 PRINT 6490 PRINT USING N$;A; 6500 PRINT " "; 6510 PRINT USING N$;C; 6520 PRINT " "; 6530 PRINT USING N$;A; 6540 PRINT " "; 6550 PRINT USING N$;D; 6560 PRINT " "; 6570 PRINT USING P$;Y; 6580 PRINT " "; 6590 PRINT USING P$;G; 6600 PRINT " "; 6610 PRINT USING P$;P 6620 PRINT "__ % __ = __ x __ = ____ or ____ or"; 6630 PRINT USING P$;O; 6640 PRINT " ____" 6650 PRINT USING N$;B; 6660 PRINT " "; 6670 PRINT USING N$;D; 6680 PRINT " "; 6690 PRINT USING N$;B; 6700 PRINT " "; 6710 PRINT USING N$;C; 6720 PRINT " "; 6730 PRINT USING P$;Z; 6740 PRINT " "; 6750 PRINT USING P$;H; 6760 PRINT " "; 6770 PRINT USING P$;H 6780 IF WWW=2 THEN PRINT:PRINT:GOTO 1180 6790 IF KK$="B" AND R=20 THEN 1180 ELSE GOSUB 50000 6800 IF X$<>"S" THEN S=S+1:GOTO 6020 ELSE PRINT CHR$(26)CHR$(7):GOTO 6790 7000 GOTO 360 8000 GOTO 360 9000 GOTO 360 10000 REM "DATA" 10010 DATA 1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9 10020 DATA 1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,-999 20000 RANDOMIZE SEED 20040 R=0 20050 W=0 20060 WWW=0 20070 S=1 20080 M$="#":N$="##":O$="####.##":P$="####":Q$="###.#":R$="#####.##" 20090 RETURN 30000 RESTORE:READ A,B 30010 IF A=-999 OR B=-999 THEN PRINT CHR$(26):PRINT "OUT OF DATA FOR PROBLEM GENERATION":PRINT CHR$(26):GOTO 1180 30020 RETURN 40000 PRINT:PRINT:INPUT "TYPE in your ANSWER, then press RETURN/ENTER";T:RETURN 50000 PRINT:PRINT "Press S for SCORE, ANY other key to CONTINUE?"; 50005 X$=INPUT$(1) 50010 IF X$="S" OR X$="s" THEN PRINT CHR$(26):GOTO 1180 ELSE RETURN  SCORE, ANY other key to CONTINUE?"; 50005 X$=INPUT$(1) åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå62098 REM "GRAPHIC 1.4, COPYRIGHT 1983" 62099 REM "By SmallSoft" 62100 FOR I=1 TO 2 62110 PRINT CLS$CH$")"CH$"g"STRING$(3,32)CHR$(10)STRING$(3,22)CHR$(8)CH$"G" 62120 PRINT CH$"g"STRING$(3,32)CHR$(22)CHR$(25)CHR$(22)CHR$(21)CHR$(22)CH$"G" 62130 PRINT CH$"g"STRING$(3,32)STRING$(5,22)CH$"G" 62140 PRINT CH$"g"STRING$(3,32)CHR$(21)CHR$(25)CHR$(32)CHR$(21)CHR$(25)CH$"G" 62150 PRINT CH$"g"STRING$(4,32)CHR$(21)CHR$(22)CHR$(25)CH$;"G";CH$"(" 62160 NEXT:RETURN 62200 FOR I=1 TO 2 62210 PRINT CLS$CH$")"CH$"g"STRING$(3,32)CHR$(10)STRING$(3,22)CHR$(8)CHR$(32)CHR$(10)STRING$(3,22)CHR$(8)CH$"G" 62220 PRINT CH$"g"STRING$(3,32)CHR$(22)CHR$(25)CHR$(22)CHR$(21)CHR$(22)CHR$(32)CHR$(22)CHR$(25)CHR$(22)CHR$(21)CHR$(22)CH$"G" 62230 PRINT CH$"g"STRING$(3,32)STRING$(5,22)CHR$(32)STRING$(5,22)CH$"G" 62240 PRINT CH$"g"STRING$(3,32)CHR$(21)CHR$(25)CHR$(32)CHR$(21)CHR$(25)CHR$(32)CHR$(21)CHR$(25)CHR$(32)CHR$(21)CHR$(25)CH$"G" 62250 PRINT CH$"g"STRING$(4,32)CHR$(21)CHR$(22)CHR$(25)STRING$(3,32)CHR$(21)CHR$(22)CHR$(25)CH$"G"CH$"(" 62260 NEXT:RETURN 62300 FOR I=1 TO 2 62310 PRINT CLS$CH$")"CH$"g"STRING$(3,32)CHR$(10)STRING$(3,22)CHR$(8)CHR$(32)CHR$(10)STRING$(3,22)CHR$(8)CHR$(32)CHR$(10)STRING$(3,22)CHR$(8)CH$"G" 62320 PRINT CH$"g"STRING$(3,32)CHR$(22)CHR$(25)CHR$(22)CHR$(21)CHR$(22)CHR$(32)CHR$(22)CHR$(25)CHR$(22)CHR$(21)CHR$(22)CHR$(32)CHR$(22)CHR$(25)CHR$(22)CHR$(21)CHR$(22)CH$"G" 62330 PRINT CH$"g"STRING$(3,32)STRING$(5,22)CHR$(32)STRING$(5,22)CHR$(32)STRING$(5,22)CH$"G" 62340 PRINT CH$"g"STRING$(3,32)CHR$(21)CHR$(25)CHR$(32)CHR$(21)CHR$(25)CHR$(32)CHR$(21)CHR$(25)CHR$(32)CHR$(21)CHR$(25)CHR$(32)CHR$(21)CHR$(25)CHR$(32)CHR$(21)CHR$(25)CH$"G" 62350 PRINT CH$"g"STRING$(4,32)CHR$(21)CHR$(22)CHR$(25)STRING$(3,32)CHR$(21)CHR$(22)CHR$(25)STRING$(3,32)CHR$(21)CHR$(22)CHR$(25)CH$"G"CH$"(" 62360 NEXT:RETURN 62400 FOR I=1 TO 3 62410 PRINT CLS$CH$"g"STRING$(3,32)CHR$(10)STRING$(3,22)CHR$(8)CH$"G" 62420 PRINT CH$"g"STRING$(3,32)CHR$(22)CHR$(13)CHR$(22)CHR$(13)CHR$(22)CH$"G" 62430 PRINT CH$"g"STRING$(3,32)STRING$(5,22)CH$"G" 62440 PRINT CH$"g"STRING$(3,32)CHR$(21)CHR$(8)CHR$(12)CHR$(10)CHR$(25)CH$"G" 62450 PRINT CH$"g"STRING$(4,32)CHR$(21)CHR$(22)CHR$(25)CH$"G" 62460 NEXT:PRINT CHR$(7):RETURN 62500 PRINT CLS$:PRINT "The SEED NUMBER you entered was outside the RANGE." 62510 PRINT " Let's START OVER.":PRINT CHR$(7) 62520 FOR I=1 TO 2000:NEXT I:RUN 63000 PRINT CHR$(7)CLS$:R=R+1:WWW=0:IF R>=1 THEN PRINT " "CH$;"g"CHR$(10)STRING$(39,22)CHR$(8)CH$;"G" 63010 IF R>=2 THEN PRINT " "CH$;"g"STRING$(2,22)STRING$(5,32) "BUILD "STRING$(8,32)STRING$(4,22)CHR$(32)CHR$(4)CHR$(1)CHR$(32)STRING$(2,22)CHR$(32)CHR$(4)CHR$(1)CHR$(32)STRING$(6,22)CH$;"G" ELSE RETURN 63020 IF R>=3 THEN PRINT " "CH$;"g"STRING$(2,22)STRING$(19,32)STRING$(4,22)CHR$(32)CHR$(4)CHR$(1)CHR$(32)STRING$(2,22)CHR$(32)CHR$(4)CHR$(1)CHR$(32)STRING$(6,22)CH$;"G" ELSE RETURN 63030 IF R>=4 THEN PRINT " "CH$;"g"STRING$(2,22)STRING$(6,32)"THIS"STRING$(9,32)STRING$(4,22)CHR$(32)CHR$(4)CHR$(1)CHR$(32)STRING$(2,22)CHR$(32)CHR$(4)CHR$(1)CHR$(32)STRING$(6,22)CH$;"G" ELSE RETURN 63040 IF R>=5 THEN PRINT " "CH$;"g"STRING$(2,22)STRING$(19,32)STRING$(4,22)CHR$(32)CHR$(3)CLS$CHR$(32)STRING$(2,22)CHR$(32)CHR$(3)CLS$CHR$(32)STRING$(6,22)CH$;"G" ELSE RETURN 63050 IF R>=6 THEN PRINT " "CH$;"g"STRING$(2,22)STRING$(4,32)"COMPUTER "STRING$(6,32)STRING$(4,22)CHR$(32)CHR$(5)CHR$(17)CHR$(32)STRING$(2,22)CHR$(32)CHR$(5)CHR$(17)CHR$(32)STRING$(6,22)CH$;"G" ELSE RETURN 63060 IF R>=7 THEN PRINT " "CH$;"g"STRING$(2,22)STRING$(19,32)STRING$(4,22)CHR$(32)CHR$(4)CHR$(1)CHR$(32)STRING$(2,22)CHR$(32)CHR$(4)CHR$(1)CHR$(32)STRING$(6,22)CH$;"G" ELSE RETURN 63070 IF R>=8 THEN PRINT " "CH$;"g"STRING$(2,22)STRING$(6,32)"WITH"STRING$(9,32)STRING$(4,22)CHR$(32)CHR$(4)CHR$(1)CHR$(32)STRING$(2,22)CHR$(32)CHR$(4)CHR$(1)CHR$(32)STRING$(6,22)CH$;"G" ELSE RETURN 63080 IF R>=9 THEN PRINT " "CH$;"g"STRING$(2,22)STRING$(19,32)STRING$(4,22)CHR$(32)CHR$(4)CHR$(1)CHR$(32)STRING$(2,22)CHR$(32)CHR$(4)CHR$(1)CHR$(32)STRING$(6,22)CH$;"G" ELSE RETURN 63090 IF R>=10 THEN PRINT "  "CH$;"g"STRING$(2,22)STRING$(5,32)"CORRECT"STRING$(7,32)STRING$(20,22)CH$;"G" ELSE RETURN 63100 IF R>=11 THEN PRINT " "CH$;"g"STRING$(2,22)STRING$(19,32)STRING$(20,22)CH$;"G" ELSE RETURN 63110 IF R>=12 THEN PRINT " "CH$;"g"STRING$(2,22)STRING$(5,32)"ANSWERS"STRING$(7,32)STRING$(4,22)" KIDMATH "STRING$(5,22)CH$;"G" ELSE RETURN 63120 IF R>=13 THEN PRINT " "CH$;"g"STRING$(41,22)CH$;"G" ELSE RETURN 63130 IF R>=14 THEN PRINT " "CH$;"g"STRING$(41,22)CH$;"G" ELSE RETURN 63140 IF R>=15 THEN PRINT " "CH$;"g"STRING$(41,22)CH$;"G" ELSE RETURN 63150 IF R>=16 THEN PRINT " "CH$;"g"STRING$(41,23)CH$;"G" ELSE RETURN 63160 IF R>=17 THEN PRINT " "CH$;"g"CHR$(10)CHR$(22)CHR$(25)STRING$(19,2)CHR$(6)CHR$(21)STRING$(18,22)CHR$(8)CH$;"G" ELSE RETURN 63170 IF R>=18 THEN PRINT " "CH$;"g"STRING$(43,23)CH$;"G" ELSE RETURN 63180 IF R>=19 THEN PRINT " "CH$;"g"STRING$(43,22)CH$"G" ELSE RETURN 63190 IF R>=20 THEN PRINT " "CH$;"g"STRING$(1,22)CH$"G";" YOU MADE IT! Your REWARD number is ";INT(RND(A)*100);CH$"g"CHR$(22)CH$;"G" ELSE RETURN 63200 RETURN "STRING$(1,22)CH$"G";" YOU MADE IT! Your REWARD number is ";INT;"g"STRING$(2,22)STRING$(19,32)STRING$(20,22)CH$;"G" ELSE RETURN 63110 IF R>=12 THEN PRINT " "CH$;"g"STRING$(2,22)STRING$(5,32)"ANSWERS"STRING$(7,32)STRING$(4,22)" KIDMATH "STRING$(5,22)CH$;"G" ELSE RETURN 63120 IF R>=13 THEN PRINT " "CH$;"g"STRING$(41,22)CH$;"G" ELSE RETURN 63130 IF R>=14 THEN PRINT " "CH$;"g"STRING$(41,22)CH$;"G" ELSE RETURN 63140 IF R>=15 THEN PRINT " "CH$;"g"STRING$(41,22)CH$;"G" ELSE RETURN 63150 IF R>=16 THEN PRINT " "CH$;"g"STRING$(41,23)CH$;"G" ELSE RETURN 63160 IF R>=17 THEN PRINT " "CH$;"g"CHR$(10)CHR$(22)CHR$(25)STRING$(19,2)CHR$(6)CHR$(21)STRING$(18,22)CHR$(8)CH$;"G" ELSE RETURN 63170 IF R>=18 THEN PRINT " "CH$;"g"STRING$(43,23)CH$;"G" ELSE RETURN 63180 IF R>=19 THEN PRINT " "CH$;"g"STRING$(43,22)CH$"G" ELSE RETURN 63190 IF R>=20 THEN PRINT " "CH$;"g"STRING$(1,22)CH$"G";" YOU MADE IT! Your REWARD number is ";INT10 REM 20 REM "DRAW" 25-OCT-82 C.FLARITY 30 REM 40 REM THIS PROGRAM CONSTRUCTS A PICTURE ON C.R.T.SCREEN 42 REM 80 COLUMNS WIDE, 23 LINES LONG. 44 REM 46 REM IT OPERATES IN ONE OF TWO MODES, WHICH ARE TOGGLED 48 REM WITH [ESC] KEY. IT BEGINS IN "DRAW" MODE WHERE THE 50 REM ARROW KEYS MOVE CURSOR WITHOUT AFFECTING IMAGE. 60 REM THE NUMBER PAD THEN CONTROLS MOVEMENT OF A "PENCIL" 70 REM THE [5] KEY TOGGLES BETWEEN "ERASE" AND "MARK". 80 REM 100 INPUT "Need instructions (Y/N)?",CMD$ 102 IF CMD$="N" THEN 200 103 PRINT 104 PRINT "COPYRIGHT 1982 Marie Associates" 106 PRINT "This program may be distributed freely provided" 108 PRINT "no charge is made and that the copyright notice" 110 PRINT "be retained. Marie Associates, Micro-computer" 112 PRINT "consultants, (408) 733-8615." 114 PRINT 116 PRINT "The number pad acts as joystick for moving a 118 PRINT "'pencil'. The [5] key swaps eraser for marking 120 PRINT "end. The arrow keys move pencil without marking 122 PRINT "or erasing. Default mark = '*'. This may be 124 PRINT "changed with the command [newmark] [RETURN]. 126 PRINT "TEXT mode is entered/exited with [ESC] key. 127 PRINT "[0] Erases CRT image. 128 PRINT 130 PRINT "In DRAW mode, commands may be entered in the form 132 PRINT " [RETURN]. Valid commands are: 140 PRINT "EXIT, HOUSE, BOY, CAT, DOG, TREE, CAR, TRAIN, MAN 142 PRINT "GIRL, FRAME, GRID, PRINT. 144 PRINT 146 PRINT "PRINT command prints image on line printer. 148 PRINT 190 PRINT "Press any key when you are ready -"; 194 CHAR$=INPUT$(1) 200 HOME=&HF000: LYNE=128: COLUMN=1 210 CLEARSCREEN$=CHR$(26) 220 BELL$=CHR$(7): ESC$=CHR$(27) 230 DRAW=1: TEXT=0 240 BOTTOM=&HFF00 250 REM Peek into system to obtain value of arrow keys. 252 ADRS=PEEK(&HE57F)+256*PEEK(&HE580) 254 UPARROW=PEEK(ADRS): RIGHTARROW=PEEK(ADRS+1) 256 DOWNARROW=PEEK(ADRS+2): LEFTARROW=PEEK(ADRS+3) 260 DIM OLDP(20) 270 P=0: CMD$="" 280 FRAMEMARK=ASC("#") 300 REM 310 REM Turn off system's horizontal scroll. 320 REM 330 POKE &HE568,0 1000 REM 1001 REM ERASE SCREEN AND INITIALIZE 1002 REM 1010 PRINT CLEARSCREEN$; 1020 ADRS=HOME 1030 MODE=DRAW 1040 MARK=32: OLDMARK=ASC("*") 1500 REM 1501 REM START OF MAIN LOOP 1502 REM 1510 IF ADRS=BOTTOM THEN 1590 1530 IF (ADRS AND 127)<80 THEN 1600 1590 PRINT BELL$;: ADRS=OLDADRS 1600 REM 1601 REM SET CURSOR TO NEW POSITION 1602 REM 1610 XCUR=ADRS AND 127: YCUR=INT((ADRS-HOME)/128) 1700 REM 1701 REM MOVE SCREEN OVER IF REQUIRED 1702 REM 1710 XPOS=0: YPOS=0 1720 L=INT((ADRS-HOME)/128) 1730 IF L>20 THEN YPOS=L-20 1740 C=ADRS AND 127 1750 IF C>40 THEN XPOS=C-40 1770 PRINT ESC$+"S"+CHR$(YPOS+32)+CHR$(XPOS+32); 1780 YCUR=YCUR-YPOS 1790 PRINT ESC$+"="+CHR$(YCUR+32)+CHR$(XCUR+32); 2000 REM 2001 REM READ NEXT CHARACTER 2002 REM 2010 CHAR$=INPUT$(1): CHAR=ASC(CHAR$) 2020 OLDADRS=ADRS 2024 IF CHAR$<>ESC$ THEN 2040 2030 IF MODE=DRAW THEN MODE=TEXT: PARK=ADRS: POKE ADRS,255: GOTO 5000 2034 MODE=DRAW 2036 POKE ADRS,OLDP 2040 IF MODE<>DRAW THEN 2500 2045 IF CHAR>57 THEN 6000 2046 IF CHAR>32 AND CHAR<48 THEN 6000 2047 IF CHAR=13 THEN 6100 2050 IF CHARASC("9") THEN 2500 2110 IF CHAR$="1" THEN ADRS=ADRS+LYNE-COLUMN: GOTO 2210 2120 IF CHAR$="2" THEN ADRS=ADRS+LYNE: GOTO 2210 2130 IF CHAR$="3" THEN ADRS=ADRS+LYNE+COLUMN:GOTO 2210 2140 IF CHAR$="4" THEN ADRS=ADRS-COLUMN:GOTO 2210 2150 IF CHAR$<>"5" THEN 2160 2155 IF MARK=32 THEN MARK=OLDMARK ELSE MARK=32 2160 IF CHAR$="6" THEN ADRS=ADRS+COLUMN:GOTO 2210 2170 IF CHAR$="7" THEN ADRS=ADRS-LYNE-COLUMN:GOTO 2210 2180 IF CHAR$="8" THEN ADRS=ADRS-LYNE:GOTO 2210 2190 IF CHAR$="9" THEN ADRS=ADRS-LYNE+COLUMN 2200 IF CHAR$="0" THEN 1000 2210 IF ADRS>=BOTTOM OR ADRSTEXT THEN 1500 3020 POKE OLDADRS,OLDP 3030 POKE ADRS,PEEK(ADRS) OR 127 5000 REM 5001 REM JUST PUT TEXT ON THE SCREEN 5002 REM 5010 IF CHAR<>13 THEN 5020 5012 POKE ADRS,OLDP 5014 ADRS=PARK+LYNE: PARK=ADRS 5016 POKE ADRS,255 5018 GOTO 1500 5020 IF CHAR<32 THEN 1500 5030 PRINT ESC$+"="+CHR$(YCUR+32)+CHR$(XCUR+33); 5040 POKE ADRS,CHAR 5050 ADRS=ADRS+1 5060 OLDP=PEEK(ADRS): POKE ADRS,255 5100 GOTO 1500 6000 REM 6002 REM 6010 OLDP(P)=PEEK(ADRS): P=P+1 6030 PRINT ESC$+"="+CHR$(YCUR+32)+CHR$(XCUR+33); 6040 POKE ADRS,CHAR 6050 ADRS=ADRS+1 6060 CMD$=CMD$+CHAR$ 6090 GOTO 1500 6100 TADRS=ADRS-1: P=P-1 6110 FOR TP=P TO 0 STEP -1 6120 POKE TADRS,OLDP(TP) AND 127 6130 TADRS=TADRS-1 6140 NEXT 6150 P2=P: P=0 6160 IF CMD$<>"PRINT" THEN 6300 6200 REM 6201 REM PRINT CONTENTS OF SCREEN ON LINE PRINTER. 6202 REM 6210 FOR TADRS=HOME TO BOTTOM STEP 128 6220 FOR TP=TADRS TO TADRS+80 6230 LPRINT CHR$(PEEK(TP)); 6240 NEXT 6250 LPRINT 6260 NEXT 6270 LPRINT CHR$(12); 6290 GOTO 6900 6300 REM 6301 REM IF ONLY ONE LETTER ENTERED THEN TAKE  6302 REM IT AS THE MARK CHARACTER. 6303 REM 6310 IF P2>0 THEN 6333 6314 IF CMD$="" THEN 6900 6320 MARK=ASC(CMD$): OLDMARK=MARK 6324 POKE ADRS,MARK OR (PEEK(ADRS) AND 128) 6330 GOTO 6900 6333 RESTORE 7998 6338 IF CMD$="EXIT" THEN END 6340 IF CMD$="HOUSE" THEN RESTORE 7340 6350 IF CMD$="BOY" THEN RESTORE 7350 6360 IF CMD$="CAT" THEN RESTORE 7360 6370 IF CMD$="DOG" THEN RESTORE 7370 6380 IF CMD$="TREE" THEN RESTORE 7380 6390 IF CMD$="CAR" THEN RESTORE 7390 6400 IF CMD$="TRAIN" THEN RESTORE 7400 6410 IF CMD$="MAN" THEN RESTORE 7350 6420 IF CMD$="GIRL" THEN RESTORE 7350 6430 IF CMD$<>"FRAME" THEN 6440 6431 FOR J=HOME TO HOME+80 6432 POKE J,(PEEK(J) AND 128) + FRAMEMARK 6433 POKE J+&HF00,(PEEK(J+&HF00) AND 128) + FRAMEMARK 6434 NEXT 6435 FOR J=HOME TO HOME+&HF00 STEP 128 6436 POKE J,(PEEK(J) AND 128) + FRAMEMARK 6437 POKE J+79,(PEEK(J+79) AND 128) + FRAMEMARK 6438 NEXT 6440 IF CMD$<>"GRID" THEN 6450 6441 FOR J=HOME+3 TO HOME+79 STEP 3 6442 FOR K=J TO J+&HF00 STEP 128 6443 POKE K,(PEEK(K) AND 128)+OLDMARK 6444 NEXT: NEXT 6445 FOR J=HOME+3*LYNE TO HOME+&HF00 STEP 3*LYNE 6446 FOR K=J TO J+79 6447 POKE K,(PEEK(K) AND 128) + OLDMARK 6448 NEXT: NEXT 6450 REM 6800 READ N 6805 IF N<0 THEN 6900 6810 FOR J=1 TO N 6820 READ OFFSET,P$ 6824 IF ADRS+OFFSET>=BOTTOM THEN 6840 6826 IF ((ADRS+OFFSET) AND 127)>80 THEN 6840 6830 POKE ADRS+OFFSET,ASC(P$)+(PEEK(ADRS+OFFSET) AND 128) 6840 NEXT 6900 CMD$="": P=0 6910 GOTO 1500 7340 DATA 63 7341 DATA 0,"!",-1," ",-2," ",-3," ",-4," ",-5," ",-6," ",-7,"!" 7342 DATA -128,"!",-129,"-",-130,"-",-131,"-",-132,"-",-133,"-",-134,"-",-135,"!" 7343 DATA -256,"\",-257," ",-258," ",-259," ",-260," ",-261," ",-262," ",-263,"/" 7344 DATA -385,"\",-386," ",-387," ",-388," ",-389," ",-390,"/" 7345 DATA -514,"\",-517,"/",-127,"\",-136,"/" 7346 DATA 128,"!",127," ",126," ",125,"#",124," ",123," ",122," ",121,"!" 7347 DATA 256,"!",255," ",254," ",253,"#",252," ",251," ",250," ",249,"!" 7348 DATA 384,"+",383,"-",382,"-",381,"-",380,"-",379,"-",378,"-",377,"+" 7349 DATA -641,"H",-643,"\",-644,"/",-385,"H",-513,"H" 7350 DATA 7 7351 DATA 0,"_",-1,"+",-2,"_" 7352 DATA -129,"0" 7353 DATA 127,"*",254,"/",256,"\" 7360 DATA 8 7361 DATA 0,"|",-1,"=",-2,"=",-3,"=",-4,"@" 7362 DATA 127,"^",125,"^",-128,"," 7370 DATA 11 7371 DATA 1,"#",0,"#",-1,"y",-2,"y",-3,"y",-4,"y" 7372 DATA -5,"\",127,"[",124,"[",-128,",",-127,"," 7380 DATA 14 7381 DATA 127,"H",-1,"H",-129,"H",-256,"*",-257,"*",-258,"*" 7382 DATA -383,"*",-384,"*",-385,"*",-386,"*",-387,"*" 7383 DATA -512,"*",-513,"*",-514,"*" 7390 DATA 41 7391 DATA 0,"\",1,"-",2,"-",3,"-",4,"]",132,"]",131,"_",130," " 7392 DATA 258,")",257," ",256,"(",128," ",127,"_",126,"_",125,"_",124,"_" 7393 DATA 123,"_",122," ",121," ",250,")",249," ",248,"(",119,"_",118,"[" 7394 DATA -10,"[",-9,"-",-8,"-",-7,"-",-6,"/",-4," ",-3," ",-2," " 7395 DATA -5," ",120," ",129," ",-1," " 7396 DATA -133,"/",-132,"-",-131,"-",-130,"-",-129,"\" 7400 DATA 75 7401 DATA 262,"\",261,"\",259,"o",258,"o",257,"o",253,")",252," " 7402 DATA 251,"(",249,")",248," ",247,"(",117,"n",118,"n",119,"X" 7403 DATA 120,"^",121,"X",122,"X",123,"X",124,"^",125,"X",126,"X" 7404 DATA 127,"X",128,"X",129,"X",130,"X",131,"X",132,"X",133,"\" 7405 DATA 5,"C",4,"X",3,"X",2,"X",1,"X",0,"X",-1,"N",-2,"I" 7406 DATA -3,"A",-4,"R",-5,"T",-6,"X",-7,"X",-8,"X",-9,"X",-10,"X" 7407 DATA -138,"X",-137,"X",-136,"X",-135,"X",-134,"X",-133,"X" 7408 DATA -132,"X",-131,"X",-130,"X",-129,"X",-128,"X",-127,"X" 7409 DATA -126,"X",-124,"X",-253,"H",-254,"H",-256,"m",-258,"m" 7410 DATA -262,"]",-263," ",-264,"[",-265,"X",-266,"X",-125,"X" 7411 DATA -394,"X",-393,"X",-392,"[",-391,"^",-390,"]" 7412 DATA -382,"H",-381,"H" 7998 DATA -1,"1",-2,"2",-3,"3",-4,"4",-5,"5",-6,"6" 394,"X",-393,"X",-392,"[",-391,"^",-390,"]" 741 7394 DATA -10,"[",-9,"-",-8,"-",-7,"-",-6,"/",-4," ",-3," ",-2," " 7395 DATA -5," ",120," ",129," ",-1," " 7396 DATA -133,"/",-132,"-",-131,"-",-130,"-",-129,"\" 7400 DATA 75 7401 DATA 262,"\",261,"\",259,"o",258,"o",257,"o",253,")",252," " 7402 DATADRAW.BAS Is similiar to the program E-SKETCH.BAS however, is much more elaborate. DRAW.BAS operates on an image 80 columns by 30 lines with auto-horiz scroll. The number pad acts as a joy stick allowing you to draw with an arbitrary character (default=*). The [5] key flips "pencil" between marker & eraser. The arrow keys allow you to move pencil without drawing or erasing. A text mode may be entered with [ESC] key allowing you to include any text in your picture. [ESC] again returns you to draw mode. DRAW.BAS Recognizes commands in draw mode... PRINT Prints your picture on line printer. HOUSE Draws a picture of a house. BOY Draws a picture of a boy. CAR Draws a picture of a car. TREE Draws a picture of a tree. FRAME Draws a frame around your picture. åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå10 ' KDRAW SCREEN GRAPHICS UTILITY 20 ' 30 PRINT CHR$(26) 40 PRINT "KDRAW 1.0" 50 PRINT "created 12/27/82 by David Ring" 60 PRINT 70 PRINT 80 PRINT "This program is an MBASIC utility for composing" 90 PRINT "screens with the Osborne graphics characters. It" 100 PRINT "creates an array representing the 24 by 52 cells" 110 PRINT "of the visible screen, allows you to enter character" 120 PRINT "codes as desired, and then prints out the screen." 130 WIDTH 128 140 DIM SCREEN(24,52) 150 PRINT 160 INPUT "When ready to proceed, press RETURN.",DUMMY$ 170 PRINT CHR$(26) 180 PRINT "Your options are:" 190 PRINT 200 PRINT 210 PRINT " (N) Enter data for screen array" 220 PRINT " (E) Edit screen array data" 230 PRINT " (D) Display screen array" 240 PRINT " (X) Exit from KDRAW" 250 PRINT 260 INPUT "Your choice";CHOICE$ 270 FLAG=0 280 IF CHOICE$="N" OR CHOICE$="n" THEN GOSUB 1000 290 IF CHOICE$="E" OR CHOICE$="e" THEN GOSUB 5000 300 IF CHOICE$="D" OR CHOICE$="d" THEN GOSUB 2000 310 IF CHOICE$="X" OR CHOICE$="x" THEN END 320 IF FLAG=1 GOTO 170 330 PRINT CHR$(26) 340 PRINT "That letter is not on the menu. Please try again." 350 PRINT 360 GOTO 180 1000 '************************************************** 1010 ' 1020 ' SUBROUTINE TO ENTER SCREEN ARRAY 1030 ' 1040 PRINT CHR$(26) 1050 PRINT "KDRAW allows you to enter one row of characters at" 1060 PRINT "a time. The current row number will be displayed" 1070 PRINT "at the top of the screen. At the prompt 'Character" 1080 PRINT "code:' enter the code of the graphics character you" 1090 PRINT "wish to display in the current row/column position." 1100 PRINT "At the prompt 'to column?' enter the column at which" 1110 PRINT "you wish use of this particular character to stop." 1120 PRINT "KDRAW will fill the row from the current position" 1130 PRINT "to the designated ending position with the chosen" 1140 PRINT "character." 1150 PRINT 1160 INPUT "When ready to proceed, press RETURN.",DUMMY$ 1170 FOR I=1 TO 24 1180 PRINT CHR$(26) 1190 PRINT "Current row is "+STR$(I)+"." 1200 STARTCOL=1 1210 ENDCOL=1 1220 WHILE ENDCOL<52 1230 PRINT 1240 INPUT "Character code";CODE 1250 INPUT "to column";ENDCOL 1260 IF CODE>127 OR ENDCOL>52 THEN 1280 ELSE 1300 1270 PRINT 1280 PRINT "Value out of range. Please try again." 1290 GOTO 1230 1300 FOR J=STARTCOL TO ENDCOL 1310 SCREEN(I,J)=CODE 1320 NEXT J 1330 STARTCOL=ENDCOL+1 1340 WEND 1350 NEXT I 1360 GOSUB 3000 1370 FLAG=1 1380 RETURN 2000 '************************************************** 2010 ' 2020 ' SUBROUTINE TO DISPLAY SCREEN ARRAY 2030 ' 2040 PRINT CHR$(26) 2050 PRINT "If you wish to display an array saved as a file," 2060 PRINT "please enter filename, including disk prefix. If" 2070 PRINT "you wish to display the array in current memory," 2080 PRINT "simply press RETURN." 2090 PRINT 2100 INPUT "Filename";FILENAME$ 2110 IF FILENAME$<>"" THEN GOSUB 4000 2120 PRINT CHR$(26) 2130 FOR K=1 TO 24 2140 PRINT CHR$(27)+"g"; 2150 FOR L=1 TO 52 2160 IF SCREEN(K,L)=9 THEN 2170 ELSE 2210 2170 POKE 16750,195 2180 PRINT CHR$(9); 2190 POKE 16750,194 2200 GOTO 2260 2210 IF SCREEN(K,L)=27 THEN 2220 ELSE 2240 2220 PRINT CHR$(27)+CHR$(27); 2230 GOTO 2260 2240 'OTHERWISE 2250 PRINT CHR$(SCREEN(K,L)); 2260 NEXT L 2270 IF K<24 THEN PRINT CHR$(27)+"G" 2280 NEXT K 2290 PRINT CHR$(27)+"G"; 2300 INPUT "",DUMMY$ 2310 FLAG=1 2320 RETURN 3000 '************************************************** 3010 ' 3020 ' SUBROUTINE TO STORE SCREEN ARRAY AS FILE 3030 ' 3040 PRINT CHR$(26) 3050 PRINT "If you wish to save the current screen array" 3060 PRINT "please supply a filename, including disk prefix." 3070 PRINT 3080 INPUT "Filename";FILENAME$ 3090 IF FILENAME$="" THEN RETURN 3100 OPEN "O",#1,FILENAME$ 3110 FOR M=1 TO 24 3120 FOR N=1 TO 52 3130 PRINT #1,SCREEN(M,N) 3140 NEXT N 3150 NEXT M 3160 CLOSE #1 3170 RETURN 4000 '************************************************** 4010 ' 4020 ' SUBROUTINE TO GET SCREEN ARRAY FROM FILE 4030 ' 4040 OPEN "I",#1,FILENAME$ 4050 FOR O=1 TO 24 4060 FOR P=1 TO 52 4070 INPUT #1,SCREEN(O,P) 4080 NEXT P 4090 NEXT O 4100 CLOSE #1 4110 RETURN 5000 '************************************************** 5010 ' 5020 ' SUBROUTINE TO EDIT SCREEN ARRAY 5030 ' 5040 PRINT CHR$(26) 5050 PRINT "If you wish to edit a screen array saved as a" 5060 PRINT "file, please enter filename, including disk" 5070 PRINT "prefix. To edit the array in current memory," 5080 PRINT "simply press RETURN." 5090 PRINT 5100 INPUT "Filename";FILENAME$ 5110 IF FILENAME$<>"" THEN GOSUB 4000 5120 PRINT CHR$(26) 5130 PRINT "KDRAW will first prompt you for line number to" 5140 PRINT "edit, then display the line in graphics format," 5150 PRINT "and finally allow you to re-enter code values for" 5160 PRINT "individual cells in the line. When you are through" 5170 PRINT "with the last cell in a line, and when you are" 5180 PRINT "through with the last line you wish to edit, in" 5190 PRINT "each case enter the letter 'D' to tell KDRAW you" 5200 PRINT "are done." 5210 PRINT 5220 INPUT "Ready";DUMMY$ 5230 PRINT CHR$(26) 5240 INPUT "Line number";ROW$ 5250 IF ROW$="D" OR ROW$="d" THEN GOTO 5460 5260 IF VAL(ROW$)<1 OR VAL(ROW$)>24 THEN 5270 ELSE 5300 5270 PRINT 5280 PRINT "Invalid line number. Please try again." 5290 GOTO 5230 5300 PRINT 5310 GOSUB 6000 '(DISPLAY LINE IN GRAPHICS) 5320 PRINT 5330 INPUT "Column to change";COL$ 5340 IF COL$="D" OR COL$="d" THEN GOTO 5420 5350 INPUT "New character code";CODE 5360 IF VAL(COL$)>52 OR CODE>127 THEN 5370 ELSE 5400 5370 PRINT 5380 PRINT "Value out of range. Please try again." 5390 GOTO 5320 5400 SCREEN(VAL(ROW$),VAL(COL$))=CODE 5410 GOTO 5320 5420 PRINT 5430 GOSUB 6000 '(DISPLAY LINE IN GRAPHICS) 5440 INPUT "Press RETURN to proceed",DUMMY$ 5450 GOTO 5230 5460 GOSUB 3000 '(SAVE EDITED RESULTS AS FILE) 5470 FLAG=1 5480 RETURN 6000 '************************************************** 6010 ' 6020 ' SUBROUTINE TO DISPLAY LINE IN GRAPHICS 6030 ' 6040 PRINT "1234567890123456789012345678901234567890123456789012" 6050 PRINT CHR$(27)+"g"; 6060 FOR Q=1 TO 52 6070 IF SCREEN(VAL(ROW$),Q)=9 THEN 6080 ELSE 6120 6080 POKE 16750,195 6090 PRINT CHR$(9); 6100 POKE 16750,194 6110 GOTO 6170 6120 IF SCREEN(VAL(ROW$),Q)=27 THEN 6130 ELSE 6150 6130 PRINT CHR$(27)+CHR$(27); 6140 GOTO 6170 6150 'OTHERWISE 6160 PRINT CHR$(SCREEN(VAL(ROW$),Q)); 6170 NEXT Q 6180 PRINT CHR$(27)+"G" 6190 RETURN  6140 GOTO 6170 6150 'OTHERWISE 6160 PRINT er code";CODE 5360 IF VAL(COL$)>52 OR CODE>127 THEN 5370 ELSE 5400 5370 PRINT 5380 PRINT "Value out of range. Please try again." 5390 GOTO 5320 5400 SCREEN(VAL(ROW$),VAL(COL$))=CODE 5410 GOTO 5320 5420 PRINT 5430 GOSUB 6000 '(DISPLAY LINE IN GRAPHICS) 5440 INPUT "Press RETURN to proceed",DUMMY$ 5450 GOTO 5230 5460 GOSUB 3000 '(SAVE EDITED RESULTS AS FILE) 5470 FLAG=1 5480 RETURN 6000 '************************************************** 6010 ' 6020 ' SUBROUTINE TO DISPLAY LINE IN GRAPHICS 610 ' KPLOT GRAPH PROGRAM 20 ' 30 DIM XVAL(100): DIM YVAL(100): DIM XNEW(100): DIM YNEW(100): DIM PLOT(21,51) 40 PRINT CHR$(26) 50 PRINT "OSPLOT 1.0" 60 PRINT "created by David Ring, 12/24/82" 70 PRINT 80 PRINT 90 PRINT "This program will accept sets of X,Y data and" 100 PRINT "generate either bar graphs or unconnected X,Y" 110 PRINT "plots." 120 PRINT 130 PRINT "Your options are:" 140 PRINT 150 PRINT " (N) Enter a new set of X,Y points" 160 PRINT " (D) Display graph of data set" 170 PRINT " (E) Edit an existing data set" 180 PRINT " (X) Exit from KPLOT" 190 PRINT 200 INPUT "Your choice"; CHOICE$ 210 FLAG=0 220 IF CHOICE$="N" OR CHOICE$="n" THEN GOSUB 1000 230 IF CHOICE$="D" OR CHOICE$="d" THEN GOSUB 2000 240 IF CHOICE$="E" OR CHOICE$="e" THEN GOSUB 3000 250 IF CHOICE$="X" OR CHOICE$="x" THEN END 260 IF FLAG=1 THEN 290 270 PRINT 280 PRINT "That letter is not on the menu. Please try again." 290 GOTO 120 1000 '************************************************** 1010 ' 1020 '  SUBROUTINE TO INPUT PARAMETERS & DATA 1030 ' 1040 PRINT CHR$(26) 1050 INPUT "Minimum X value"; XMIN 1060 INPUT "Maximum X value"; XMAX 1070 INPUT "Minimum Y value"; YMIN 1080 INPUT "Maximum Y value"; YMAX 1090 PRINT CHR$(26) 1100 PRINT "You may enter up to 100 X,Y pairs. After entering" 1110 PRINT "the last pair, signal by entering the letter 'D'." 1120 PAIRS=0 1130 ' DO UNTIL X$="D" OR X$="d" 1140 PRINT 1150 INPUT "X value";X$ 1160 IF X$="D" OR X$="d" THEN 1270 1170 INPUT "Y value";Y$ 1180 IF VAL(X$)>XMAX OR VAL(X$)YMAX OR VAL(Y$)"" THEN XMIN=VAL(TEMP$) 3210 INPUT "New maximum X value";TEMP$ 3220 IF TEMP$<>"" THEN XMAX=VAL(TEMP$) 3230 INPUT "New minimum Y value";TEMP$ 3240 IF TEMP$<>"" THEN YMIN=VAL(TEMP$) 3250 INPUT "New maximum Y value";TEMP$ 3260 IF TEMP$<>"" THEN YMAX=VAL(TEMP$) 3270 PRINT CHR$(26) 3280 PRINT "KPLOT will now display 10 X,Y points at a" 3290 PRINT "time. To change a point, you must enter the" 3300 PRINT "number of the X,Y pair, the new X value and" 3310 PRINT "the new Y value. When through entering revised" 3320 PRINT "values, signal by entering 'D'." 3330 PRINT 3340 INPUT "Ready";DUMMY$ 3350 PRINT CHR$(26) 3360 FOR A=0 TO PAIRS 3370 PRINT A, XVAL(A), YVAL(A) 3380 IF (A+1) MOD 10 = 0 OR A=PAIRS THEN 3390 ELSE 3460 3390 PRINT 3400 ' DO UNTIL PAIR$="D" OR PAIR$="d" 3410 INPUT "Number of X,Y pair to revise";PAIR$ 3420 IF PAIR$="D" OR PAIR$="d" THEN 3460 3430 INPUT "New X value";XVAL(VAL(PAIR$)) 3440 INPUT "New Y value";YVAL(VAL(PAIR$)) 3450 GOTO 3400 3460 NEXT A 3470 GOSUB 4000 '(SUBROUTINE TO SAVE DATA FILE) 3480 PRINT CHR$(26) 3490 PRINT "Editing complete. Press RETURN to return to main" 3500 PRINT "menu." 3510 PRINT 3520 INPUT DUMMY$ 3530 FLAG=1 3540 PRINT CHR$(26) 3550 RETURN 4000 '************************************************** 4010 ' 4020 ' SUBROUTINE TO SAVE DATA SET AS FILE 4030 ' 4040 PRINT CHR$(26) 4050 PRINT "If you wish to save this set of X,Y data and" 4060 PRINT "axis parameters, enter a name for the file," 4070 PRINT "including disk prefix. Otherwise press RETURN." 4080 PRINT 4090 INPUT "Name for data file";FILENAME$ 4100 IF FILENAME$="" THEN RETURN 4110 OPEN "O",#1,FILENAME$ 4120 PRINT #1,PAIRS,XMIN,XMAX,YMIN,YMAX 4130 FOR J=0 TO PAIRS 4140 PRINT #1,XVAL(J),YVAL(J) 4150 NEXT J 4160 CLOSE #1 4170 RETURN 5000 '************************************************** 5010 ' 5020 ' SUBROUTINE TO READ DATA FILE 5030 ' 5040 PRINT 5050 INPUT "Name of data file";FILENAME$ 5060 IF FILENAME$="" THEN RETURN 5070 OPEN "I",#1,FILENAME$ 5080 INPUT #1,PAIRS,XMIN,XMAX,YMIN,YMAX 5090 FOR K=0 TO PAIRS 5100 INPUT #1,XVAL(K),YVAL(K) 5110 NEXT K 5120 CLOSE #1 5130 RETURN 6000 '************************************************** 6010 ' 6020 ' SUBROUTINE TO PLOT POINTS 6030 ' 6040 FOR P=0 TO PAIRS 6050 PLOT((20-YNEW(P)),(XNEW(P)+1))=SYMBOL 6060 NEXT P 6070 FLAG=1 6080 RETURN 7000 '************************************************** 7010 ' 7020 ' SUBROUTINE TO DRAW VERTICAL BARS 7030 ' 7040 FOR P=0 TO PAIRS 7050 FOR Q=0 TO YNEW(P) 7060 PLOT((20-Q),(XNEW(P)+1))=SYMBOL 7070 NEXT Q 7080 NEXT P 7090 FLAG=1 7100 RETURN 8000 '************************************************** 8010 ' 8020 ' SUBROUTINE TO DRAW HORIZONTAL BARS 8030 ' 8040 FOR P=0 TO PAIRS 8050 FOR Q=0 TO XNEW(P) 8060 PLOT((20-YNEW(P)),(Q+1))=SYMBOL 8070 NEXT Q 8080 NEXT P 8090 FLAG=1 8100 RETURN TO PAIRS 8050 FOR Q=0 TO XNEW(P) 8060 PLOT((20-YNEW(P)),(Q+1))=SYMBOL 8070 NEXT Q 8080 NEXT P 8090 FLAG=1 8100 RETUETURN 5070 OPEN "I",#1,FILENAME$ 5080 INPUT #1,PAIRS,XMIN,XMAX,YMIN,YMAX 5090 FOR K=0 TO PAIRS 5100 INPUT #1,XVAL(K),YVAL(K) 5110 NEXT K 5120 CLOSE #1 5130 RETURN 6000 '************************************************** 6010 ' 6020 ' SUBROUTINE TO PLOT POINTS 6030 ' 6040 FOR P=0 TO PAIRS 6050 PLOT((20-YNEW(P)),(XNEW(P)+1))=SYMBOL 6060 NEXT P 6070 FLAG=1 6080 RETURN 7000 '************************************************** 7010 ' 7020 ' SUBROUTINE TO DRAW VERTICAL BARS 7030 ' 7040 FOR P 36 30 80 0 6 30 .006 35 .007 36 .095 37 1.525 38 4.1 39 5.28 40 5.8 41 5.8 42 4.5 43 3.08 44 2.43 45 1.78 46 1.34 47 1.14 48 1.12 49 1.15 50 1.24 51 1.42 52 1.65 53 1.84 54 1.89 55 1.84 56 1.56 57 1.52 58 1.73 59 2.26 60 2.92 61 4.04 62 5.04 63 5.64 64 5.9 65 5 66 4.34 67 3.1 68 1.69 69 .87 70 .4  65 5 66 åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå10 WIDTH 128 20 DIM LN(758) 'temporary storage during character menu 30 CUR$=CHR$(27)+"=" 'cursor position command 40 HOME$=CHR$(0)+CHR$(32) 'home cursor using CUR$ 50 B$=CHR$(27)+"(" 'BRIGHT command for character menu 60 G0$=CHR$(27)+"G" 'end graphics mode command 70 G1$=CHR$(27)+"g" 'start graphics mode command 80 D$=CHR$(27)+")" 'DIM command for character menu 90 LIMIT1%=100:LIMIT2%=80 ' if LIMIT2"Y" AND A$<>"y" THEN PRINT "Try again.":GOTO 230 270 PRINT:INPUT "Enter name of old file (USE CAPS): ",INFILE$ 280 IF INFILE$="" THEN PRINT "Try again.":GOTO 270 290 A$=LEFT$(INFILE$,2) 300 IF A$<>"A:" AND A$<>"B:" THEN PRINT:INPUT "WHICH DRIVE? ",DRIVE$:IF DRIVE$="A" OR DRIVE$="B" THEN INFILE$=DRIVE$+":"+INFILE$ 310 ELSE 300 320 OPEN "I",#1,INFILE$:INPUT #1,A:CLOSE #1:IF A<>10000 THEN PRINT "File does not begin at 10000":END 330 PRINT:PRINT:PRINT:INPUT "DO YOU WANT TO SAVE RESULTS (Y/N)? ",YN$ 340 A$=LEFT$(YN$,1):IF A$="N" OR A$="n" OR A$="" THEN 450 350 IF A$<>"Y" AND A$<>"y" THEN PRINT "Try again.":GOTO 330 360 GOSUB 1690 ' get name of new file 370 PRINT:PRINT:PRINT "What size screen do you want to save?" 380 PRINT " 24 X 52 -- A" 390 PRINT " 32 X 128 -- B (default)" 400 INPUT "A OR B (A stores faster): ",SIZE$ 410 IF SIZE$="a" OR SIZE$="b" THEN SIZE$=CHR$(ASC(SIZE$)-32) 420 IF SIZE$<>"A" AND SIZE$<>"B" AND SIZE$<>"" THEN 400 430 IF SIZE$="A" THEN LINES=23:COLS=51:ELSE LINES=31:COLS=127 440 REM print menu of commands 450 PRINT CHR$(26); 460 PRINT FN PC$(1,3);"^A toggles cursor underlining" 470 PRINT FN PC$(3,3);"^U toggles character underlining" 480 PRINT FN PC$(5,3);"^? toggles movement without modification" 490 PRINT FN PC$(7,3);"^B toggles blinking" 500 PRINT FN PC$(9,3);"TAB permits change of, and prints menu of graphics" 510 PRINT FN PC$(11,3);"ESC ends session" 520 PRINT FN PC$(13,3);"Hitting any character changes to that character" 530 PRINT FN PC$(15,3);"Remember the ASCII characters:" 540 PRINT FN PC$(16,15);"~ = ^/" 550 PRINT FN PC$(17,15);"{ = ^," 560 PRINT FN PC$(18,15);"} = ^." 570 PRINT FN PC$(19,15);"` = ^=" 580 PRINT FN PC$(21,3)"Writing over code number in corner removes it" 590 PRINT FN PC$(24,10);CHR$(27)+")";"Hit RETURN to continue."; 600 INPUT A$ 610 PRINT B$;CHR$(26) 620 CH=32:U$="Y":T$="N" 'if U$=Y then underlining 630 C1$="N":C2$="Y":DEL$="" 640 REM START OF MAIN PROGRAM ****************** 650 IF INFILE$="" THEN 700 'get existing subroutine and run it 660 CHAIN MERGE INFILE$,670,ALL 670 REM >>>>>IMPORTANT<<<<< CHAIN in previous line MUST refer here 680 PRINT CHR$(&H1A); 690 GOSUB 10000:CH=PEEK(61440!) 700 IF DEL$<>"Y" THEN PRINT FN PC$(23,50);CH 'code # is printed 710 IF SCR=64306! THEN DEL$="Y" ' code # is written over: don't print it 720 IF C1$="Y" THEN CH=PEEK(SCR) ' move without altering 730 POKE SCR,CH 'put current char. on screen 740 IF U$="Y" THEN POKE SCR,CH OR 128 'underline at current position 750 REM START OF DO LOOP FOR BLINKING DURING INPUT 760 FOR TIME%=1 TO LIMIT1% 770 A$=INKEY$ 780 IF A$<>"" THEN 820 790 IF TIME%=LIMIT2% THEN POKE SCR,32 'blink current char. 800 NEXT 810 GOTO 730 820 D=ASC(A$) 830 POKE SCR,CH 'put current char. back on screen 840 IF D<13 AND D>7 THEN ON D-7 GOTO 940,960,970,990,1010 850 REM CURSOR MOVEMENT L, CH, D, U, R 860 IF D=&H15 THEN CH=CH OR 128:GOTO 730 870 IF D=2 THEN SWAP LIMIT1%,LIMIT2%:SWAP LIMIT1F%,LIMIT2F%:GOTO 720 'Toggle for blinking 880 IF D=127 THEN SWAP C1$,C2$:SWAP LIMIT1%,LIMIT1F%:SWAP LIMIT2%,LIMIT2F%:CH=PEEK(SCR):GOTO 720 'Toggle for cursor movement 890 IF D>&H1F THEN CH=D:GOTO 730 'change to new char. 900 REM Toggle underlining for cursor 910 IF D=1 THEN SWAP U$,T$:IF U$="Y" THEN POKE SCR,(CH OR 128):GOTO 700 920 IF D=27 THEN GOTO 1030 REM TO END PROGRAM 930 GOTO 710 940 IF SCR=61440! THEN GOTO 710 'MOVE LEFT 950 SCR=SCR-1:GOTO 710 960 GOSUB 1790:GOTO 730 ' TAB: CHANGE CHARACTER 970 IF (SCR+128)>65535! THEN 710 'MOVE DOWN 980 SCR=SCR+128:GOTO 710 990 IF (SCR-128)<61440! THEN 710 'MOVE UP 1000 SCR=SCR-128:GOTO 710 1010 IF SCR = 65535! THEN 710 'MOVE RIGHT 1020 SCR=SCR+1:GOTO 710 1030 A$=LEFT$(YN$,1):IF A$="N" OR A$="n" OR A$="" THEN 1050 1040 GOSUB 1080:PRINT CHR$(7) 1050 INPUT "ANOTHER SESSION? ",A$:A$=LEFT$(A$,1):IF A$="Y" OR A$="y" THEN 220 1060 END '******************************END OF PROGRAM 1070 REM Subroutine for saving screen as subroutine on disk 1080 OPEN "O",#1,FILE$ 1090 PRINT #1,"10000 REM GRAPHICS SUBROUTINE START" 1100 LN=10010 'first line number in saved subroutine 1110 CH=27 1120 REM locate horizontal series of char.'s 1130 FOR J=0 TO LINES 1140 COUNT = 1:CH=27 1150 FOR I=0 TO COLS 1160 SCR=61440!+((J)*128)+I 1170 IF PEEK(SCR)=32 AND CH=32 THEN 1220 1180 INCHAR = PEEK(SCR) 1190 IF INCHAR=CH THEN COUNT=COUNT+1:GOTO 1220 1200 IF COUNT>3 THEN GOSUB 1440 'save series as DO loop 1210 CH=INCHAR:COUNT=1 1220 NEXT I:IF COUNT>3 THEN GOSUB 1440 1230 NEXT J 1240 REM locate vertical series of char.'s 1250 FOR J=0 TO COLS 1260 COUNT=1:CH=32 1270 FOR I=61440!+J TO 65408!+J STEP 128 1280 IF PEEK(I)=32 AND CH=32 THEN 1330 1290 INCHAR=PEEK(I) 1300 IF INCHAR=CH THEN COUNT=COUNT+1:GOTO 1330 1310 IF COUNT>3 THEN GOSUB 1510 'save series as DO loops 1320 CH=INCHAR:COUNT =1 1330 NEXT I:IF COUNT>3 THEN GOSUB 1510 1340 NEXT J 1350 REM Begin GOSUB printing single characters to disk 1360 FOR J=0 TO LINES 1370 FOR I=0 TO COLS 1380 SCR=61440!+(J*128)+I 1390 IF PEEK(SCR)<>32 THEN GOSUB 1570 1400 NEXT I,J 1410 PRINT #1,STR$(LN);" RETURN":CLOSE #1 1420 RETURN 1430 REM Begin GOSUB printing horizontal series to disk as DO loops 1440 PRINT #1,STR$(LN);"FOR SCRNPOS=";STR$(SCR-COUNT);"TO"; 1450 PRINT #1,STR$(SCR-1);":POKE SCRNPOS,";STR$(CH);":NEXT" 1460 REM Erase saved char.'s from screen 1470 FOR CLEANUP=SCR-COUNT TO SCR-1:POKE CLEANUP,32:NEXT 1480 LN=LN+10 1490 RETURN 1500 REM Begin GOSUB printing vertical DO loops to disk 1510 PRINT #1,STR$(LN);"FOR SCRNPOS=";STR$(I-COUNT*128);" TO"; 1520 PRINT #1,STR$(I-128);" STEP 128:POKE SCRNPOS,";STR$(CH);":NEXT" 1530 REM Erase saved characters from screen 1540 FOR CLEANUP=I-COUNT*128 TO I-128 STEP 128 : POKE CLEANUP,32:NEXT 1550 LN=LN+10 1560 RETURN 1570 REM Begin GOSUB printing single char.'s to disk 1580 PRINT #1,STR$(LN);" POKE";STR$(SCR)+","+STR$(PEEK(SCR)) 1590 LN=LN+10 1600 POKE SCR,32 'erase saved char. from screen 1610 RETURN '*************** END OF SAVE ON DISK ROUTINES 1620 REM Begin GOSUB printing border of starting display 1630 FOR I=61440! TO 61491!:POKE I,11:NEXT 1640 FOR I=61568! TO 64256! STEP 128:POKE I,27:NEXT 1650 FOR I=61619! TO 64307! STEP 128:POKE I,27:NEXT 1660 FOR I=64384! TO 64435!:POKE I,11:NEXT 1670 RETURN 1680 REM Begin GOSUB inputting name of file to be saved 1690 PRINT:PRINT "Enter name of output file (USE CAPS): " 1700 INPUT " (Default filename: 'GRAPHSUB.BAS') ",FILE$ 1710 IF FILE$="" THEN FILE$="GRAPHSUB.BAS" 1720 A$=LEFT$(FILE$,2) 1730 IF A$="A:" OR A$="B:" THEN 1760 1740 PRINT:INPUT "WHICH DRIVE? ",DRIVE$:IF DRIVE$<>"A" AND DRIVE$<>"B" THEN 1740 1750 FILE$=DRIVE$+":"+FILE$ 1760 OPEN "O",#1,FILE$:CLOSE #1 1770 RETURN 1780 REM ********************************** 1790 REM START OF GOSUB FOR CHOOSING GRAPHICS CHARACTERS MENU 1800 REM first store lines 0-4 1810 J=0:FOR I=0 TO 52:GOSUB 2200:NEXT 1820 PRINT CUR$+HOME$;"Hit any key or wait for menu." 1830 FOR J=1 TO 4 1840 FOR I=0 TO 52 1850 GOSUB 2200 1860 A$=INKEY$:IF A$<>"" THEN 2140 1870 NEXT I,J 1880 J=0 1890 REM Print graphics characters 1900 PRINT CUR$+HOME$; 1910 FOR I=0 TO 16:GOSUB 1950:NEXT 1920 POKE 61440!+28,9:GOTO 2000 'Bandaid for mystery bug #1 1930 GOTO 2000 1940 IF I=31 THEN PRINT CUR$+CHR$(2)+CHR$(74); 'Bandaid for mystery bug #2 1950 PRINT D$;G1$;CHR$(&H16);G0$;B$;G1$;CHR$(I); 1960 IF I=27 THEN PRINT CHR$(I); ' ESCAPE must be printed twice 1970 PRINT G0$;D$;G1$;CHR$(&H16);G0$; 1980 RETURN 1990 REM print ASCII codes for graphics char.'s 2000 PRINT B$:PRINT " 0";:FOR I=1 TO 16:PRINT USING "###";I;:NEXT 2010 PRINT:FOR I=17 TO 32:GOSUB 1940:NEXT 2020 PRINT B$:PRINT "17";:FOR I=18 TO 32:PRINT USING "###";I;:NEXT 2030 PRINT:PRINT " ";CHR$(&HD);:INPUT CH 'input code 2040 IF CH<0 OR CH>127 THEN CH=0 2050 REM restore user's graphics stored in LN 2060 PRINT CUR$+HOME$; 2070 FOR J=0 TO 4:FOR I=0 TO 52:PRINT " ";:NEXT:PRINT:NEXT 2080 PRINT CUR$+HOME$; 2090 FOR J=0 TO 4 2100 FOR I=0 TO 52 2110 GOSUB 2210 2120 NEXT I,J 2130 RETURN 2140 REM start GOSUB for inputting graphics code 2150 PRINT CUR$+HOME$;" ";CUR$+HOME$; 2160 INPUT "ASCII #: ",CH:IF CH<0 OR CH>127 THEN PRINT CUR$+HOME$;:GOTO 2160 2170 J=0:FOR I=0 TO 30:GOSUB 2210:NEXT 2180 PRINT CUR$+CHR$(31)+CHR$(32); 2190 RETURN 2200 LN(J*52+I)=PEEK(61440! + J*128 + I):RETURN 'Store character 2210 POKE (61440! + J*128 + I),LN(J*52 + I):RETURN 'Restore screen J*52+I)=PEEK(61440! + J*128 + I):RETURN 'Store character 2210 POKE (61440! + J*128 + I),LN(J*52 + I):RINT " 0";:FOR I=1 TO 16:PRINT USING "###";I;:NEXT 2010 PRINT:FOR I=17 TO 32:GOSUB 1940:NEXT 2020 PRINT B$:PRINT "17";:FOR I=18 TO 32:PRINT USING "###";I;:NEXT 2030 PRINT:PRINT " ";CHR$(&HD);:INPUT CH 'input code 2040 IF CH<0 OR CH>127 THEN CH=0Thå  "Osbornå ± Screeî Painter¢ bù Johî Conwaù anä Jaù  Hanloî (SCRPAINT.BAÓ oî Volumå 5© haó  á  fe÷ limitations®  É  havå comå uð witè severaì usefuì modificationó  foò  it¬  anä thå  ne÷  versioî  ió calleä  PAINT2.BAS®  Iô shoulä bå oî thå RCP/Í bù the time you read this. Thå basiã ideá ió tï uså thå arro÷ keyó tï movå  á cursoò arounä oî thå screen¬ "painting¢ thå screeî witè graphicó characters®  Wheî yoõ arå finished¬ thå  prograí  storeó  thå  picturå  aó  aî  MBASIà subroutinå  whicè wheî calleä restoreó thå picturå to the screen. Somå oæ mù modificationó arå relativelù minor¬ buô verù useful® Hittinç anù keyboarä characteò wilì changå  tï  thaô character®  Hittinç  ^Õ  toggleó underlininç thå characteró yoõ painô with®  Thaô annoyinç  numbeò iî thå loweò righô hanä corneò ió usefuì  sometimeó foò tellinç yoõ  whaô  characteò yoõ  arå using¬  buô iî PAINT² iæ yoõ "paint¢ oveò it¬  iô won'ô comå back®  Á menõ aô thå starô  oæ eacè sessioî telló yoõ alì oæ this¬ aó welì aó thå keyó  foò ~¬  {¬  }¬  anä `®  Aô thå enä oæ  eacè sessioî iô promptó yoõ foò startinç anotheò one. Á  majoò changå waó tï improvå thå waù thå prograí storeó  thå subroutinå foò á screenfuì oæ  charac ters®  Thå originaì simplù wrotå á lonç serieó oæ POKÅ commandó tï eitheò disë oò  printer®  (Sincå tï  bå usefuì á subroutinå needó tï bå oî disk¬  É eliminateä  thå optioî oæ sendinç iô tï thå  prin ter®  É aí currentlù workinç oî á prograí tï senä thå  PICTURE¬  insteaä oæ thå subroutine¬  tï  thå printer.© MBASIà ió verù inefficienô iî usinç RAÍ space¬  sincå  thå entirå texô oæ thå  prograí  ió helä iî memory¬ aó welì aó MBASIà itself® Iæ rowó oæ identicaì characteró arå founä iî youò picture¬ however¬  DÏ  loopó caî bå useä tï eliminatå á loô oæ text. PAINT²  lookó  foò horizontaì  rowó  oæ  identicaì characteró first¬ theî verticaì rows¬ anä theî foò whateveò  ió left®  Iô takeó oveò threå timeó  aó lonç  tï perforí theså threå searcheó aó  foò  thå originaì  tï  perforí  itó  onå  search¬   buô  bå patient®  Thå  resulô iî thå caså oæ thå graphicó iî thå headinç oæ thå prograí waó á reductioî froí onå  hundreä fortù eighô POKÅ commandó tï fouò  DÏ loops®  Yoõ  caî alsï amuså yourselæ bù  watchinç thå  searcè  iî  progress¬   sincå  PAINT²  eraseó characteró aó iô storeó them. Anotheò  majoò changå É madå waó tï allo÷  yoõ  tï Šediô  á  picturå  whicè haä alreadù  beeî  stored® Thió  haó obviouó advantageó iî permittinç yoõ  tï savå youò worë aó yoõ progress®  PAINT² askó  yoõ iæ  yoõ wanô tï modifù aî existinç subroutinå wheî yoõ  begiî á session®  Yoõ caî savå thå  modifieä versioî witè thå samå namå oò á differenô one¬  oò noô  aô all®  PAINT² wilì asë yoõ iæ yoõ wanô  tï savå  youò work®  Thå requirementó foò modifyinç aî  existinç filå arå thaô thå firsô linå  oæ  thå previouó subroutinå musô bå numbereä 10000¬ anä iô musô  enä  witè á RETURÎ statement®  PAINT²  saveó subroutineó  iî thå propeò formaô tï bå  recalled® Bå surå tï uså capitaì letteró wheî naminç  files¬ becauså  CP/Í wilì noô bå ablå tï manipulatå loweò caså names® Anotheò changå ió iî choosinç graphicó characters® Hittinç  TA wilì causå thå computeò tï storå  thå toð fouò lineó oæ thå picture¬  whicè takeó á  fe÷ seconds®  Theî  iô  replaceó theí witè á menõ  oæ graphicó  characters®   Hittinç  anù  keù  durinç storagå  wilì interrupô thió anä prompô yoõ foò á numbeò foò thå ne÷ graphicó character®  Otherwiså thå prompô wilì occuò afteò thå menõ ió displayed. Somå   irritatinç  thingó  havå  beeî  changeä  iî PAINT2®  Iî thå original¬ iæ yoõ trù tï movå tï á differenô  areá yoõ leavå á traiì  oæ  characters® Thió  caî  bå frustratinç iæ  yoõ  havå  carefullù "painted¢  yourselæ intï á corner®  Iî blanë areaó yoõ eitheò havå tï gï bacë afterwarä tï eraså thå characteró  oò  youò characteò ió á blanë anä  yoõ can'ô seå wherå yoõ arå ®  Iî PAINT2¬  ^Á toggleó (turnó o î anä off© aî underlineä cursoò foò  blanë areas¬  anä  ^ toggleó blinkinç iô foò "painted¢ areas® Yoõ caî movå iô withouô modifyinç anythinç iî youò waù bù hittinç ^?® Iæ yoõ movå thå cursoò iî thió waù ontï á characteò anä hiô ^¿  tï  starô "painting¢  again¬  iô wilì adopô thå characteò iô ió sittinç on. Iî  ordeò tï avoiä havinç thå screeî flið bacë  tï "home¢  afteò "painting¢ characteró whicè arå ofæ thå  edgå  oæ thå "homå window,¢  yoõ  shoulä  uså SETUÐ tï turî ofæ automatiã scrolling¬  jusô aó iî SCRPAINT. No÷   á  worä  abouô  subroutinesº   Includinç  á graphicó  subroutinå iî youò prograí ió  okaù  foò somå  applications¬  buô iô ió mucè morå versatilå tï leavå iô aó á separatå filå anä CHAIÎ it¬  wheî needed¬  witè thå MERGÅ option® Lateò iî prograí executioî otheò subroutineó caî bå overlaiî iî thå samå  waù iî thå samå space¬  savinç yoõ á loô  oæ ŠRAM®  PAINT² alsï includeó á RETURÎ statemenô  iî itó  storeä files®  Nï modificatioî ió  necessarù between saving and recalling the subroutine. Iæ anyonå noticeó anù bugó iî PAINT2¬  pleaså  leô me know. My phone evenings is 493-5852.  "painting¢  again¬  iô wilì adopô thå characteò iô ió sittinç on. Iî  ordeò tï avoiä havinç thå screeî flið bacë  tï "home¢  afteò "painting¢ characteró whicè arå ofæ thå  edgå  oæ thå "homå window,¢  yoõ  shoulä  uså SETUÐ tï turî ofæ automatiã scrolling¬  jusô aó iî SCRPAINT. No÷   á  worä  abouô  subroutinesº   Includinç  á graphicó  subroutinå iî youò prograí ió  okaù  foò somå  applications¬  buô iô ió mucè morå versatilå tï leavå iô aó á separatå filå anä CHAIÎ it¬  wheî needed¬  witè thå MERGÅ option® Lateò iî prograí executioî otheò subroutineó caî bå overlaiî iî thå samå  waù iî thå samå space¬  savinç yoõ á loô  oæ ŠRAM®  PAINT² alsï includeó á RETURÎ statemenô  iî itó  storeä files®  Nï modificatioî ió  nece10 PRINT CHR$(26) 20 WHILE A<>32:Z1=Z:READ Z,A:Z=Z1+Z:POKE Z+61440!,A:WEND 30 DATA 0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0 40 DATA 2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,206,0,4,1 50 DATA 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1 60 DATA 2,1,2,1,2,1,2,1,2,1,2,1,2,1,4,0,206,0,4,1,4,13,1,13,1,13 70 DATA 1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13 80 DATA 1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13 90 DATA 1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,5,1,4,0,86,13 100 DATA 33,13,87,0,4,1,4,13,7,21,3,83,1,67,1,82,1,69,1,69,1,78 110 DATA 1,87,1,82,1,73,1,84,1,69,1,82,3,25,9,13,5,1,4,0,86,13,33,13 120 DATA 87,0,4,1,4,13,8,70,1,79,1,82,2,84,1,72,1,69,2,79,1,83,1,66 130 DATA 1,79,1,82,1,78,1,69,2,49,9,13,5,1,4,0,86,13,33,13,87,0 140 DATA 4,1,4,13,33,13,5,1,4,0,86,13,4,98,1,121,2,74,1,97,1,99 150 DATA 1,107,2,87,1,97,1,108,1,114,1,97,1,118,1,101,1,110,2,40 160 DATA 1,67,1,41,2,49,1,57,1,56,1,50,5,13,87,0,4,1,4,13,33,13,5,1 170 DATA 4,0,86,13,11,105,1,110,2,77,1,66,1,65,1,83,1,73,1,67,14,13 180 DATA 87,0,4,1,4,13,33,13,5,1,4,0,86,13,2,50,1,56,1,52,1,48,2,76 190 DATA 1,101,1,105,1,103,1,104,2,82,1,100,1,46,1,44,2,86,1,105 200 DATA 1,99,1,116,1,111,1,114,1,105,1,97,1,44,2,66,1,46,1,67,1,46 210 DATA 2,13,87,0,4,1,4,13,10,40,1,54,1,48,1,52,1,41,2,51,1,56 220 DATA 1,50,2,54,1,49,1,54,1,48,10,13,5,1,4,0,86,13,33,13,87,0 230 DATA 4,1,4,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13 240 DATA 1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13 250 DATA 1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13 260 DATA 1,13,5,1,4,0,206,0,4,1,2,1,2,1,2,1,2,1,2,80,1,82,1,69,1,83 270 DATA 1,83,2,65,1,78,1,89,2,75,1,69,1,89,2,84,1,79,2,66,1,69 280 DATA 1,71,1,73,1,78,3,1,2,1,2,1,2,1,2,1,4,0,206,0,2,0,2,0,2,0 290 DATA 2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0 300 DATA 2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,32,32 310 Y$=INPUT$(1) 320 '*****SCREENWRITER PROGRAM WITH GRAPHICS FOR THE OSBORNE 1 330 '***** 340 '***** written by Jack Walraven (Oct 82) 350 '***** 360 '*****2840 Leigh Rd, Victoria, B.C., Canada (604) 474 1750 370 '***** 380 PRINT CHR$(26) 390 PRINT CHR$(26) 400 CLEAR 410 DIM PR$(100) 420 B=61440!:E=64383! 430 Z=B 440 C=83 450 RM=999:LM=999 460 SP=32 470 PRINT CHR$(26) 480 PRINT:PRINT 490 PRINT"CURSOR CONTROL AND ALPHA-NUMERICS 500 PRINT"Use the arrow keys to move the cursor to the 510 PRINT"desired position. The cursor will show what 520 PRINT"direction it will move. Use the alpha-numeric 530 PRINT"keys to lay out the screen format and message. 540 PRINT 550 PRINT"GRAPHICS! Use the ESC key to produce the graphic 560 PRINT"you desire. Use the TAB key to continue drawing 570 PRINT"that graphic in the direction you indicated with 580 PRINT"the arrow keys. 590 PRINT"When your design is completed, hit the ENTER 600 PRINT"key. The program will then read (PEEK) your 610 PRINT"design in video memory, write a BASIC program 620 PRINT"and save it in a sequential file, which you 630 PRINT"can then MER!GE with any of your programs (just 640 PRINT"make sure that the line numbers don't overlap). 650 PRINT:PRINT:PRINT"press any key to begin 660 Y$=INPUT$(1) 670 PRINT CHR$(26) 680 INPUT "ENTER THE BEGINNING LINE NUMBER (default is 1): ";LN 690 PRINT CHR$(26) 700 IF LN=0 THEN LN=1 710 INPUT "INCREMENT BETWEEN LINE NUMBERS (default is 1): ";IC 720 PRINT CHR$(26) 730 IF IC =0 THEN IC=1 740 INPUT "FILE NAME without .ext (default is TEST): ";F$ 750 IF F$="" THEN F$="TEST" 760 F$=F$+".BAS" 770 PRINT CHR$(26) 780 '*****remove cursor from screen 790 POKE Z+128,SP 800 POKE Z,C 810 '*****wait for keyboard input 820 A$=INKEY$:IF A$="" THEN 820 830 '*****check if input is arrow key 840 IF A$=CHR$(13) THEN POKE Z,SP:GOTO 1390 850 IF A$=CHR$(11) THEN C=94:GOTO 1030 860 IF A$=CHR$(10) THEN C=118:GOTO 1110 870 IF A$=CHR$(12) THEN C=62:GOTO 1190 880 IF A$=CHR$(8) THEN C=60:GOTO 1290 890 A=ASC(A$) 900 IF X>31 THEN X=0 910 '*****check if input is graphic 920 IF A=27 THEN A=X:X1=X:X=X+1:POKE Z,A:GOTO 820 930 IF A=9 THEN A=X1 940 Z1=Z-61440!:IF C=62 AND (Z1-50)/128=INT((Z1-50)/128) THEN POKE Z,A:GOTO 820 950 IF C=60 AND Z1/128=INT(Z1/128) THEN POKE Z,A:GOTO 820 960 POKE Z,A 970 IF C=94 AND Z-127>B THEN Z=Z-128:GOTO 820 980 IF C=118 AND Z+128B THEN Z=Z-1:GOTO 820 1010 GOTO 820 1020 '*****cursor up routine 1030 IF Z-128C THEN 1070 1050 POKE Z,SP 1060 Z=Z-128 1070 C1=C 1080 POKE Z,C 1090 GOTO 820 1100 '*****cursor down routine 1110 IF Z+128>E GOTO 820 1120 IF C1<>C THEN 1150 1130 POKE Z,SP 1140 Z=Z+128 1150 C1=C 1160 POKE Z,C 1170 GOTO 820 1180 '*****cursor right routine 1190 IF Z+1>E THEN 820 1200 IF C1<>C THEN 1240 1210 Z1=Z-61440!:IF Z1=RM THEN 820 1220 POKE Z,SP 1230 Z=Z+1 1240 C1=C 1250 Z1=Z-61440!:IF (Z1-50)/128=INT((Z1-50)/128) THEN RM=Z1 1260 POKE Z,C 1270 GOTO 820 1280 '*****cursor left routine 1290 IF Z-1C THEN 1340 1310 Z1=Z-61440!:IF Z1=LM THEN 820 1320 POKE Z,SP 1330 Z=Z-1 1340 C1=C 1350 Z1=Z-61440!:IF Z1/128=INT(Z1/128) THEN LM=Z1 1360 POKE Z,C 1370 GOTO 820 1380 '*****read (peek) screen and write BASIC program 1390 CU=1 1400 PR$(CU)=STR$(LN)+" PRINT CHR$(26)":CU=CU+1:LN=LN+IC 1410 PR$(CU)=STR$(LN)+" WHILE A<>32:Z1=Z:READ Z,A:Z=Z1+Z:POKE Z+61440!,A:WEND 1420 CU=CU+1:LN=LN+IC 1430 N2=0 1440 FOR N=0 TO 2816 STEP 128 1450 FOR N1=N TO N+50 1460 Z=N1+61440! 1470 T%=PEEK(Z) 1480 IF T%=32 THEN 1560 1490 POKE N1+61440!,127 1500 Z%=N1-N2 1510 Z$=MID$(STR$(Z%),2):T$=MID$(STR$(T%),2) 1520 IF LEN(PR$)<50 THEN PR$=PR$+Z$+","+T$+",":GOTO 1550 1530 PR$(CU)=STR$(LN)+" DATA "+PR$+Z$+","+T$ 1540 CU=CU+1:LN=LN+IC:PR$="" 1550 N2=N1 1560 NEXT N1 1570 NEXT N 1580 IF PR$="" THEN 1600 1590 PR$(CU)=STR$(LN)+" DATA "+PR$+"32,32" 1600 CU=CU+1:LN=LN+IC 1610 PR$(CU)=STR$(LN)+" Y$=INPUT$(1) 1620 '*****save file to disk 1630 OPEN "O",#1,F$ 1640 FOR N=1 TO CU+1 1650 PRINT #1,PR$(N) 1660 NEXT N 1670 CLOSE #1 1680 PRINT CHR$(26) 1690 PRINT:PRINT "YOUR DESIGN: ";F$;" HAS BEEN SAVED TO DISK. 1700 END N) 1660 NEXT N 1670 CLOSE #1 1680 1370 GOTO 820 1380 '*****read (peek) screen and write BASIC program 1390 CU=1 1400 PR$(CU)=STR$(LN)+" PRINT CHR$(26)":CU=CU+1:LN=LN+IC 1410 PR$(CU)=STR$(LN)+" WHILE A<>32:Z1=Z:READ Z,A:Z=Z1+Z:POKE Z+61440!,A:WEND 1420 CU=CU+1:LN=LN+IC 1430 N2=0 1440 FOR N=0 TO 2816 STEP 128 1450 FOR N1=N TO N+50 1460 Z=N1+61440! 1470 T%=PEEK(Z) 1480 IF T%=32 THEN 1560 1490 POKE N1+61440!,127 1500 Z%=N1-N2 1510 Z$=MID$(STR$(Z%),2):T$=MID$(STR$(T%),2) 1520 IF LEN(PR$)<50 THEN PR$=PR$+Z$+","+T$+",":GOTO 1550 1530 PR$(CU)=STR$(LN)+" DATA "+PR$+Z$+","+T$ 1540 CU=CU+1:LN=LN+IC:PR$="" 1550 N2=N1 1560 NEXT N1 1570 NEXT N 1580 IF PR$="" THEN 1600 1590 PR$(CU)=STR$(LN)+" DATA "+PR$+"32,32" 1600 CU=CU+1:LN=LN+IC 1610 PR$(CU)=STR$(LN)+" Y$=INPUT$(1) 1620 '*****save file to disk 1630 OPEN "O",#1,F$ 1640 FOR N=1 TO CU+1 1650 PRINT #1,PR$(N) 1660 NEXT N 1670 CLOSE #1 1680100 '*** SCREENWRITER PROGRAM WITH GRAPHICS FOR THE OSBORNE 1 110 '*** 120 '*** WRITTEN BY JACK WALRAVEN (OCT 82) 130 '*** 140 '*** 2840 LEIGH RD, VICTORIA, B.C., CANADA 150 '*** 160 PRINT CHR$(26) 170 CLEAR 180 DIM PR$(100) 190 B=61440!:E=64383! 200 Z=B 210 C=83 220 RM=999:LM=999 230 SP=32 240 PRINT CHR$(26) 250 PRINT:PRINT 260 PRINT"CURSOR CONTROL AND ALPHA-NUMERICS" 270 PRINT"Use the arrow keys to move the cursor to the" 280 PRINT"desired position. The cursor will show what" 290 PRINT"direction it will move. Use the alpha-numeric" 300 PRINT "keys to lay out the screen format and message." 310 PRINT 320 PRINT "GRAPHICS! Use the ESC key to produce the graphic 330 PRINT "you desire. Use the TAB key to continue drawing 340 PRINT "that graphic in the direction you indicated with 350 PRINT "the arrow keys. 360 PRINT "When your design is completed, hit the ENTER 370 PRINT "key. The program will the read (PEEK) your 380 PRINT "design in video memory, write a BASIC progr"am 390 PRINT "and save it in a sequential file, which you 400 PRINT "can then MERGE with any of your programs (just 410 PRINT "make sure that the line numbers don't overlap). 420 PRINT:PRINT:PRINT"press any key to begin 430 Y$=INPUT$(1) 440 PRINT CHR$(26) 450 INPUT "ENTER THE BEGINNING LINE NUMBER (default is 1): ";LN 460 PRINT CHR$(26) 470 IF LN=0 THEN LN=1 480 INPUT "INCREMENT BETWEEN LINE NUMBERS (default is 1): ";IC 490 PRINT CHR$(26) 500 IF IC=0 THEN IC=1 510 INPUT "FILE NAME without .ext (default is TEST): ";F$ 520 IF F$="" THEN F$="TEST" 530 F$="B:"+F$+".BAS" 540 PRINT CHR$(26) 550 '*****remove cursor from screen 560 POKE Z+128,SP 570 POKE Z,C 580 '*****wait for keyboard input 590 A$=INKEY$:IF A$="" THEN 590 600 '*****check if input is arrow key 610 IF A$=CHR$(13) THEN POKE Z,SP:GOTO 1160 620 IF A$=CHR$(11) THEN C=94:GOTO 800 630 IF A$=CHR$(10) THEN C=118:GOTO 880 640 IF A$=CHR$(12) THEN C=62:GOTO 960 650 IF A$=CHR$(8) THEN C=60:GOTO 1060 660 A=ASC(A$) 670 IF X>31 THEN X=0  680 '*****check if input is graphic 690 IF A=27 THEN A=X:X1=X:X=X+1:POKE Z,A:GOTO 590 700 IF A=9 THEN A=X1 710 Z1=Z-61440!:IF C=62 AND (Z1-103)/128=INT((Z1-103)/128) THEN POKE Z,A:GOTO 590 720 IF C=60 AND Z1/128=INT(Z1/128) THEN POKE Z,A:GOTO 590 730 POKE Z,A 740 IF C=94 AND Z-127>B THEN Z=Z-128:GOTO 590 750 IF C=118 AND Z+128B THEN Z=Z-1:GOTO 590 780 GOTO 590 790 '*****cursor up routine 800 IF Z-128C THEN 840 820 POKE Z,SP 830 Z=Z-128 840 C1=C 850 POKE Z,C 860 GOTO 590 870 '*****cursor down routine 880 IF Z+128>E GOTO 590 890 IF C1<>C THEN 920 900 POKE Z,SP 910 Z=Z+128 920 C1=C 930 POKE Z,C 940 GOTO 590 950 '*****cursor right routine 960 IF Z+1>E THEN 590 970 IF C1<>C THEN 1010 980 Z1=Z-61440!:IF Z1=RM THEN 590 990 POKE Z,SP 1000 Z=Z+1 1010 C1=C 1020 Z1=Z-61440!:IF (Z1-103)/128=INT((Z1-103)/128) THEN RM=Z1 1030 POKE Z,C 1040 GOTO 590 1050 '*****cursor left routine  1060 IF Z-1C THEN 1110 1080 Z1=Z-61440!:IF Z1=LM THEN 590 1090 POKE Z,SP 1100 Z=Z-1 1110 C1=C 1120 Z1=Z-61440!:IF Z1/128=INT(Z1/128) THEN LM=Z1 1130 POKE Z,C 1140 GOTO 590 1150 "*****read (peek) screen and write BASIC program 1160 CU=1 1170 PR$(CU)=STR$(LN)+" PRINT CHR$(26)":CU=CU+1:LN=LN+IC 1180 PR$(CU)=STR$(LN)+" WHILE A<>32:Z1=Z:READ Z,A:Z=Z1+Z:POKE Z+61440!,A:WEND" 1190 CU=CU+1:LN=LN+IC 1200 N2=0 1210 FOR N=0 TO 2816 STEP 128 1220 FOR N1=N TO N+103 1230 Z=N1+61440! 1240 T%=PEEK(Z) 1250 IF T%=32 THEN 1330 1260 POKE N1+61440!,127 1270 Z%=N1-N2 1280 Z$=MID$(STR$(Z%),2):T$=MID$(STR$(T%),2) 1290 IF LEN(PR$)<103 THEN PR$=PR$+Z$+","+T$+",":GOTO 1320 1300 PR$(CU)=STR$(LN)+" DATA "+PR$+Z$+","+T$ 1310 CU=CU+1:LN=LN+IC:PR$="" 1320 N2=N1 1330 NEXT N1 1340 NEXT N 1350 IF PR$="" THEN 1370 1360 PR$(CU)=STR$(LN)+" DATA "+PR$+"32,32" 1370 CU=CU+1:LN=LN+IC 1380 PR$(CU)=STR$(LN)+" Y$=INPUT$(1)" 1390 '******SAVE FILE ON DISK 1400 OPEN "O",#1,F$ 1410 FOR N=1 TO CU+1 1420 PRINT #1,PR$(N) 1430 NEXT N 1440 CLOSE #1 1450 PRINT CHR$(26) 1460 PRINT:PRINT "YOUR DESIGN: ";F$;" HAS BEEN SAVED TO DISK. 1470 END N) 1430 NEXT N 1440 CLOSE #1 1450 PRINT CHR$(26) 1460 PRINTram 1160 CU=1 1170 PR$(CU)=STR$(LN)+" PRINT CHR$(26)":CU=CU+1:LN=LN+IC 1180 PR$(CU)=STR$(LN)+" WHILE A<>32:Z1=Z:READ Z,A:Z=Z1+Z:POKE Z+61440!,A:WEND" 1190 CU=CU+1:LN=LN+IC 1200 N2=0 1210 FOR N=0 TO 2816 STEP 128 1220 FOR N1=N TO N+103 1230 Z=N1+61440! 1240 T%=PEEK(Z) 1250 IF T%=32 THEN 1330 1260 POKE N1+61440!,127 1270 Z%=N1-N2 1280 Z$=MID$(STR$(Z%),2):T$=MID$(STR$(T%),2) 1290 IF LEN(PR$)<103 THEN PR$=PR$+Z$+","+T$+",":GOTO 1320 1300 PR$(CU)=STR$(LN)+" DATA "+PR$+Z$+","+T$ 1310 CU=CU+1:LN=LN+IC:PR$="" 1320 N2=N1 1330 NEXT N1 1340 NEXT N 1350 IF PR$="" THEN 1370 1360 PR$(CU)=STR$(LN)+" DATA "+PR$+"32,32" 1370 CU=CU+1:LN=LN+IC 1380 PR$(CU)=STR$(LN)+" Y$=INPUT$(1)" 1390 '******SAVE FILE ON DISK100 '*** SCREENWRITER PROGRAM WITH GRAPHICS FOR THE OSBORNE 1 110 '*** 120 '*** WRITTEN BY JACK WALRAVEN (OCT 82) 130 '*** 140 '*** 2840 LEIGH RD, VICTORIA, B.C., CANADA 150 '*** 160 PRINT CHR$(26) 170 CLEAR 180 DIM PR$(100) 190 B=61440!:E=64383! 200 Z=B 210 C=83 220 RM=999:LM=999 230 SP=32 240 PRINT CHR$(26) 250 PRINT:PRINT 260 PRINT"CURSOR CONTROL AND ALPHA-NUMERICS" 270 PRINT"Use the arrow keys to move the cursor to the" 280 PRINT"desired position. The cursor will show what" 290 PRINT"direction it will move. Use the alpha-numeric" 300 PRINT "keys to lay out the screen format and message." 310 PRINT 320 PRINT "GRAPHICS! Use the ESC key to produce the graphic 330 PRINT "you desire. Use the TAB key to continue drawing 340 PRINT "that graphic in the direction you indicated with 350 PRINT "the arrow keys. 360 PRINT "When your design is completed, hit the ENTER 370 PRINT "key. The program will the read (PEEK) your 380 PRINT "design in video memory, write a BASIC progr#am 390 PRINT "and save it in a sequential file, which you 400 PRINT "can then MERGE with any of your programs (just 410 PRINT "make sure that the line numbers don't overlap). 420 PRINT:PRINT:PRINT"press any key to begin 430 Y$=INPUT$(1) 440 PRINT CHR$(26) 450 INPUT "ENTER THE BEGINNING LINE NUMBER (default is 1): ";LN 460 PRINT CHR$(26) 470 IF LN=0 THEN LN=1 480 INPUT "INCREMENT BETWEEN LINE NUMBERS (default is 1): ";IC 490 PRINT CHR$(26) 500 IF IC=0 THEN IC=1 510 INPUT "FILE NAME without .ext (default is TEST): ";F$ 520 IF F$="" THEN F$="TEST" 530 F$="B:"+F$+".BAS" 540 PRINT CHR$(26) 550 '*****remove cursor from screen 560 POKE Z+128,SP 570 POKE Z,C 580 '*****wait for keyboard input 590 A$=INKEY$:IF A$="" THEN 590 600 '*****check if input is arrow key 610 IF A$=CHR$(13) THEN POKE Z,SP:GOTO 1160 620 IF A$=CHR$(11) THEN C=94:GOTO 800 630 IF A$=CHR$(10) THEN C=118:GOTO 880 640 IF A$=CHR$(12) THEN C=62:GOTO 960 650 IF A$=CHR$(8) THEN C=60:GOTO 1060 660 A=ASC(A$) 670 IF X>31 THEN X=0  680 '*****check if input is graphic 690 IF A=27 THEN A=X:X1=X:X=X+1:POKE Z,A:GOTO 590 700 IF A=9 THEN A=X1 710 Z1=Z-61440!:IF C=62 AND (Z1-80)/128=INT((Z1-80)/128) THEN POKE Z,A:GOTO 590 720 IF C=60 AND Z1/128=INT(Z1/128) THEN POKE Z,A:GOTO 590 730 POKE Z,A 740 IF C=94 AND Z-127>B THEN Z=Z-128:GOTO 590 750 IF C=118 AND Z+128B THEN Z=Z-1:GOTO 590 780 GOTO 590 790 '*****cursor up routine 800 IF Z-128C THEN 840 820 POKE Z,SP 830 Z=Z-128 840 C1=C 850 POKE Z,C 860 GOTO 590 870 '*****cursor down routine 880 IF Z+128>E GOTO 590 890 IF C1<>C THEN 920 900 POKE Z,SP 910 Z=Z+128 920 C1=C 930 POKE Z,C 940 GOTO 590 950 '*****cursor right routine 960 IF Z+1>E THEN 590 970 IF C1<>C THEN 1010 980 Z1=Z-61440!:IF Z1=RM THEN 590 990 POKE Z,SP 1000 Z=Z+1 1010 C1=C 1020 Z1=Z-61440!:IF (Z1-80)/128=INT((Z1-80)/128) THEN RM=Z1 1030 POKE Z,C 1040 GOTO 590 1050 '*****cursor left routine 1060 IF Z-1C THEN 1110 1080 Z1=Z-61440!:IF Z1=LM THEN 590 1090 POKE Z,SP 1100 Z=Z-1 1110 C1=C 1120 Z1=Z-61440!:IF Z1/128=INT(Z1/128) THEN LM=Z1 1130 POKE Z,C 1140 GOTO 590 1150 "*****read (peek) screen and write BASIC program 1160 CU=1 1170 PR$(CU)=STR$(LN)+" PRINT CHR$(26)":CU=CU+1:LN=LN+IC 1180 PR$(CU)=STR$(LN)+" WHILE A<>32:Z1=Z:READ Z,A:Z=Z1+Z:POKE Z+61440!,A:WEND" 1190 CU=CU+1:LN=LN+IC 1200 N2=0 1210 FOR N=0 TO 2816 STEP 128 1220 FOR N1=N TO N+80 1230 Z=N1+61440! 1240 T%=PEEK(Z) 1250 IF T%=32 THEN 1330 1260 POKE N1+61440!,127 1270 Z%=N1-N2 1280 Z$=MID$(STR$(Z%),2):T$=MID$(STR$(T%),2) 1290 IF LEN(PR$)<80 THEN PR$=PR$+Z$+","+T$+",":GOTO 1320 1300 PR$(CU)=STR$(LN)+" DATA "+PR$+Z$+","+T$ 1310 CU=CU+1:LN=LN+IC:PR$="" 1320 N2=N1 1330 NEXT N1 1340 NEXT N 1350 IF PR$="" THEN 1370 1360 PR$(CU)=STR$(LN)+" DATA "+PR$+"32,32" 1370 CU=CU+1:LN=LN+IC 1380 PR$(CU)=STR$(LN)+" Y$=INPUT$(1)" 1390 '******SAVE FILE ON DISK 1400 OPEN "O",#1,F$ 1410 FOR N=1 TO CU+1 1420 PRINT #1,PR$(N) 1430 NEXT N 1440 CLOSE #1 1450 PRINT CHR$(26) 1460 PRINT:PRINT "YOUR DESIGN: ";F$;" HAS BEEN SAVED TO DISK. 1470 END N) 1430 NEXT N 1440 CLOSE #1 1450 PRINT CHR$(26) 1460 PRINT:PRINT 1160 CU=1 1170 PR$(CU)=STR$(LN)+" PRINT CHR$(26)":CU=CU+1:LN=LN+IC 1180 PR$(CU)=STR$(LN)+" WHILE A<>32:Z1=Z:READ Z,A:Z=Z1+Z:POKE Z+61440!,A:WEND" 1190 CU=CU+1:LN=LN+IC 1200 N2=0 1210 FOR N=0 TO 2816 STEP 128 1220 FOR N1=N TO N+80 1230 Z=N1+61440! 1240 T%=PEEK(Z) 1250 IF T%=32 THEN 1330 1260 POKE N1+61440!,127 1270 Z%=N1-N2 1280 Z$=MID$(STR$(Z%),2):T$=MID$(STR$(T%),2) 1290 IF LEN(PR$)<80 THEN PR$=PR$+Z$+","+T$+",":GOTO 1320 1300 PR$(CU)=STR$(LN)+" DATA "+PR$+Z$+","+T$ 1310 CU=CU+1:LN=LN+IC:PR$="" 1320 N2=N1 1330 NEXT N1 1340 NEXT N 1350 IF PR$="" THEN 1370 1360 PR$(CU)=STR$(LN)+" DATA "+PR$+"32,32" 1370 CU=CU+1:LN=LN+IC 1380 PR$(CU)=STR$(LN)+" Y$=INPUT$(1)" 1390 '******SAVE FILE ON DISK 1400 This is the release date of the disk. PAINT2 BAS €ƒ'PAINT2 DOC €SCDESIGNBAS €“€SW104 BAS €šSW80 BAS €ŸååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååKDRAW .BAS 86 EB 6656 52 KPLOT .BAS 05 E5 7680 60 MABPLOT . D2 C0 896 7 PAINT2 .BAS 4F 6D 9984 78 PAINT2 .DOC 4A 8A 5376 42 SCDESIGN.BAS 1D 4C 6272 49 SW104 .BAS 61 A8 4352 34 SW80 .BAS 17 20 4352 34 åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå$ Fog Library Disk FOG-CPM.076 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 programs. Source is included for most. Filename Description -06-00 .86 This is the release date of the disk. -CPM076 .DOC This is the description of the disk contents. KM .BAS FD38 4K ver. 1.6 [KIDMATH 1 of 6] No longer available commercially, this MBasic program is designed to drill children on arithmetic problems. Addition, subtraction, multiplication, and division are all covered. Lots of room to add new drills and easy to convert to other computers. Thanks to Doug Hurst for this gem. KM .DOC C305 33K ver. 1.6 [KIDMATH 2 of 6] MUL .BAS 324D 14K ver. 1.6 [KIDMATH 3 of 6] SUB .BAS 39D3 14K ver. 1.6 [KIDMATH 4 of 6] ADD .BAS ACDB 14K ver. 1.6 [KIDMATH 5 of 6] DIV .BAS DB4D 17K ver. 1.6 [KIDMATH 6 of 6] GRAPHIC .BAS 4FE6 6K ver. 1.4 MBasic graphics program also used by KIDMATH. DRAW .BAS 4156 9K [Draw 1 of 2] MBasic program for drawing pictures on the Osborne 1. DRAW .DOC 4048 1K [Draw 2 of 2] KDRAW  .BAS 86EB 7K MBasic screen graphics utility for 52 column screen KPLOT .BAS 05E5 8K [KPlot 1 of 2] MBasic program which prints bar graph or scatter plot on the Osborne 1 screen. MABPLOT . D2C0 1K [KPlot 2 of 2] PAINT2 .BAS 4F6D 10K ver. 2.0 [Paint 1 of 2] MBasic program which creates screen display with both ASCII and graphics characters and builds a file of data statements for other MBasic programs. Designed for Osborne 1. PAINT2 .DOC 4A8A 6K ver. 2.0 [Paint 2 of 2] SCDESIGN.BAS 1D4C 7K MBasic program for Osborne 1 which uses graphic and ASCII characters to build DATA statements. SW104 .BAS 61A8 5K [ScreenWriter 1 of 2] Two versions of this MBasic program for the Osborne 1 are included here. One for 104 column, one for the 80 column screen. Both use graphics to write pictures to a sequential file. SW80 .BAS 1720 5K [ScreenWriter 2 of 2] KIDMATH 3 of 6] SUB .BAS 39D3 14K ver. 1.6 [KIDMATH 4 of 6] ADD .BAS ACDB 14K ver. 1.6 [KIDMATH 5 of 6] DIV .BAS DB4D 17K ver. 1.6 [KIDMATH 6 of 6] GRAPHIC .BAS 4FE6 6K ver. 1.4 MBasic graphics program also used by KIDMATH. DRAW .BAS 4156 9K [Draw 1 of 2] MBasic program for drawing pictures on the Osborne 1. DRAW .DOC 4048 1K [Draw 2 of 2] KDRAW ååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå%ååååå&ååååå'ååååå