8L2C)pJJJJ IH(ȱH:=IH[H`@HcH  $ +   I/H`JLNGȄBȄF aK  haaFF  mJm# KKJ UJ )J ۈ) ;J3ȱJFȱJGJKaȄM  aaNNJFLGJL L? &PRODOS `DaElH$?EGvѶK+`L HHLy XP LM ŠϠĠӠS)*+,+`F)) (*=GJFjJJA QE'+ '== `@ STSP8QSS8 m P o R(8RNEW.DISK}' ALMANAC.START 0,BASIC.SYSTEM( BOOT.SLOTZ 'CHECKIT 6/ ϲ )DBL.HIRES&|մ  MINIPAINT*o  NIBBLE.ALMANAC+0505'NIBMENUn 11&PRODOS"}@#((READ80.S   (SCROLLERܴ 5'STARTUP ®3p.STARTUP.SCREENC 9`4&TE.ASM(L ٴ#(TE.DFORKٴٴ[TEXT.EDITOR 2# VEJUR  ) ALMANAC.START, Copyright (c) 1990E MindCraft Publ. Corp.w:12:"Please wait. Loading Nibble Almanac."(802(4)"pr#3"<(4)"Prefix Nibble.Almanac"F(4)"-Almanac"( PERERR:::"Place ALMANAC.START in the root directory, /NIBBLE, and then run":"the program."t Z:"Note that you must have a directory, /NIBBLE/NIBBLE.ALMANAC, which" d"contains the program files." n:"Note also that you must have an 80-column card in slot 3." LG ASTARTUP$#   / XXύX?klmnÍoL) "6L'?"(0`6708" = ***)<JJH !h穖tp% ;"Z/݀>">"' 1" 7"5).莀/ ;" " 6" >" 1"6"$ "g"" !"""""I򭭻LYL 8!9 詍` "  4"/pŠϠŠà͠ӠàԠŠH06172839h` v97L75v^a ?/( va?L5LLɍ$?`?a ɍɥAH93827160hH46576879h`,C bL ɍ b ,S0 @ lLޭBDEF޾ p ޾ p($ذ v (0 ?( L?ԦʚLeةީa s  lL b,FLg,DL,C0$3 >@ Ɉ 3ɾꩈL(3ɾ;Ƀ ?B94 l% bʽ  ՚,S` H $݅3`(l8L3LX>(Ƀ,`3,G0]ɾ g` H`پ_پ p _پ׾`>( p۾m׾) W)ʩ@`ɾ>(O黩 puȾ ɾ-O c־Jjjj껝2뻝3 `O>0O v POپھ p +H־Ǿh۰8L־Jjjj2껽3뻭ɾ)Ⱦ8껰  OLӜ ΤLLX>(F﻽ﻝﻩ`ֻ־ؾپھ׾` bɄ KDEF vLl v lL5 bKɍKL?`  vLl@3 @LtJ)s@J b  l`a?sa?,E30ɍФ3 E3HD F3 Ʉ%h3 bM E  lLthɍLL3`3,A0s0% Ipn DpnI:L ؅3ݷ03LG8H933LΞAAJL ةޘг uv $ 8LƞaЌ>?@`>?@`B;8`W K  黐LK ҟ ҟ l KK`JJJJ8`轌K)` #hhLJپھ pHJh` D!hgtp `tp8nnitpiͱtso8pinii>j?kͷ>pIiͯͷ l - `>i>?Ek?!>Q>>>Ͳͳ `` \>Ͳ ͳ `e>>?ʹ?>?Emn(>e>ȱ>e?>Q>ؠ> ie>>?`;=:<:<=;`ͯm;>:8o>oȑ>ppȑ>> :op` DKpn͋ @p;틻=po:i>?Ek?>Q>> L> \/ e>>?ʹ?ޱ>ȥj>>m>` im8iŻnjƻkiljoŻS -޻.߻$I2 U)VJ T)`l޻8`a HbIJhjǾȾɾ p٭b=aIe f`8` cP־ǾҾ,G0C =W)_``\"׾پӾؾھ pD`־ǾY׾ؾOW)ݩȾɾʾ pD`8`W)CB) ŵ 춰5W) )W)@! pZ}ȾȾ󰹩 p` c־ǾҾ,G 8`׾ؾ  p ۥs׾tؾE` c ( |о(־Ǿ,G 8`_`W)H־Jjjjh2׻3ػ p̭ػ׻ L%Ǿ廎滠 ..8׻ػ 廍⻈ۭ (׻8廪ػ滨mȾȾmɾɾʾiʾ` Lpl8l:/,s̝sƬƀ#(ZZV4G_0=( A P FjL\5p-e9ABSAVERIFYBLOADELETEBYECATALOGOPENWRITEXECREATEFRESTORENAMEBRUNLOCKCHAIN#FLUSHREADPOSITIONOMONPR#PREFIXCLOSEAPPENDbzDl e|Ŭ-⭚ݴgaB<{P~VM@@ -!S    !C- !ABELSDFRV@@ !$(19@EüϠž(+@ABCDEFGHIKLMNPSV     T[fouu~ՠٯ* PWN*]ĿNTz @n6VC/+A>@I5gN Oz @n[Dz @nd0,~z @`$仫@v$⩔,C[B?I>孓`仫6VtCicQĿUKqtVt Nʮq$6,⨁ K6, VtI=v!gNVt Vt  lg~T٩   LiLMTRLLLLL58ﻀۻ)Iۻ `2Eۻ8`ﻀ ԠŬLL XI ɱɲɳɴɵɶɷLLLLLLL !"#$%. ********** NIBBLE PRD DISK **********[ * CHECKIT * * COPYRIGHT 1988 BY MINDCRAFT PUBL.CORP. *( * CONCORD, MA 01742 *2 *************************************' <:::"CHECKIT":"COPYRIGHT 1988 BY MINDCRAFT PUBL. CORP."0 F90\ PI0377:ML:CSCSML:::CS48127100 Z:"ERROR IN DATA STATEMENTS!":"PROBABLY LOCATED ON OR BEFORE LINE ";(123)(124)256: d216,0:768,0:H(3):H(0)1:H(1)16:H(2)256:H(3)40969 n6:"ARE YOU ENTERING A HEXADECIMAL":"FILE?";:A$:16368,0:A$d xA$"N"A$(110)İ370:34218,128:210 A$"Y"A$(121)110 768,1:10:958:"WHAT IS THE STARTING ADDRESS OF THE":"FILE (IN HEX)";:H$:290:AH2 A736A39424ĺ:"INVALID ADDRESS. PLEASE DOUBLE-CHECK":"AND RE-ENTER":350:140| 13:958:"WHAT IS THE LENGTH OF THE FILE":"(IN HEX)";:H$:290:BH B1B32000ĺ"INVALID LENGTH. PLEASE DOUBLE-CHECK":"AND RE-ENTER":350:160 :::34,1:2:"INSTALLING CHECKIT..."x A6144İ320:5799,(A256):5798,A256(5799):5801,(B256):5800,B256(5801):5802,0:230: ABOVE $1800 SOMEWHERE A6144İ370:34215,(A256):34214,A256(34215):34217,(B256):34216,B256(34217):34218,0:210: BELOW $1800 SOMEWHERE' (48896)76Ĺ56,0:57,133:1002:250B (4);"IN#A$8500":250l (48896)76Ĺ56,0:57,22:1002:250 (4)"IN#A$1600":250 :::34,1:2:"CHECKIT INSTALLED" (768)1ĺ:"ENTER THE MONITOR BY TYPING":" CALL -151"  Y"H0:L(H$):L1L4300:I1L:D((H$,I,1)):HHH(LI)(D48(D58D47)55(D64D71)):_,t6 $1600 VERSION@I0377:ML:5632I,ML:I:C5632JI018:ML:CML,(CML)111:T^21:"PRESS RETURN TO CONTINUE ";:CH$:CH$:16368,0:h $8500 VERSION5rI0377:ML:34048I,ML:I;| 216,32,27,253,201,154,240,31,201,141,208,26,134,224,32,178,133,32,251,218,32,128,254,56,165,8 229,9,32,218,253,32,132,254,166,224,169,141,96,32,106,134,44,170,133,16,43,169,1,133,6,169_ 8,133,7,160,0,177,6,133,251,200,177,6,133,252,240,63,200,177,6,32,79,134,200,177,6,32 79,134,165,251,133,6,165,252,133,7,208,221,173,167,133,133,7,173,166,133,133,6,160,0,177,6& 32,79,134,230,6,208,2,230,7,230,251,208,2,230,252,165,251,205,168,133,165,252,237,169,133,144 227,162,0,189,171,133,32,237,253,232,224,7,144,245,44,16,192,32,128,254,164,8,166,9,32,64 249,32,251,218,32,132,254,169,152,96,0,0,0,0,0,20,15,20,1,12,58,32,32,106,134,133> 6,169,2,133,7,160,0,177,6,201,176,144,73,201,186,176,69,177,6,44,170,133,16,53,201,210 208,4,166,251,240,61,201,162,208,8,72,169,1,69,251,133,251,104,201,160,208,6,166,251,208,25 240,26,201,191,208,19,132,226,160,0,185,117,134,32,79,134,200,192,5,144,245,164,226,176,3,32o 79,134,200,196,224,144,188,96,166,224,104,104,169,141,96,132,226,136,177,6,201,160,240,249,201,186 240,8,201,176,144,36,201,186,176,32,164,226,200,177,6,201,197,208,23,200,177,6,201,205,208,166 169,210,32,79,134,169,197,32,79,134,169,205,32,79,134,96,164,226,177,6,24,144,135,162,8,10 38,8,38,9,144,14,72,165,8,73,33,133,8,165,9,73,16,133,9,104,202,208,232,96,169,0 133,8,133,9,133,251,133,252,96,208,210,201,206,212 16,41,44,73,79,92,97,106,123,128,135,180,203,246,249,261,316,321,326 '()! *************************A * DBL.HIRES2 *a * BY VERN L. MASTEL * * COPYRIGHT (C) 1990 * * MINDCRAFT PUBL. CORP. * * CONCORD, MA 01742 *  ************************* TURN ON THE 80 COLUMN FIRMWARE; ::(4)"PR#3":"PathName to load: ";:"";PN$f  SET UP THE AUXMOVE VECTORS IN PAGE 3 (768,56: $38 SET CARRY FLAG 2769,76: $4C JMP <770,17: $11 LOW BYTE ADDRESS $11 F771,195: $3C HIGH BYTE ADDRESS $3C P49246,0: TURN OFF ANNUNCIATOR 3, Z: CLEAR THE SCREENe d LOAD THE AUXILIARY RESIDENT PORTION OF THE PICTURE n(4)"BLOAD ";PN$;",A8192,L8192" x60,0: SOURCE LOW BYTE IS 0 61,32: SOURCE HIGH BYTE IS 8192 (32*256) 62,0: SOURCE END LOW BYTE IS 03 63,64: SOURCE END HIGH BYTE IS 16384 (64*256)Y 66,0: DESTINATION LOW BYTE IS 0 67,32: DESTINATION HIGH BYTE IS 8192 (32*256) 768: CALL AUXMOVE TO MOVE MAIN MEMORY TO AUXILIARY MEMORY* (4)"BLOAD ";PN$;", A8192, B8192":: LOAD THE SECOND HALF OF THE PICTURE TO MAIN MEMORYo 49234,0: TURN OFF THE TEXT WINDOW AT THE BOTTOM OF THE SCREEN.{ Z$::J768778:D:J,D:J:1,0,4,0,173,63,55,45,245,63,0:::230,32:232,0:233,3:49236,0:X140:AX:Y95:BY:1:0:C3:C:1X,Y:I23:II1:P$:P(P$):CC(P47)(P56)n PN(PN0)(P80)PN(P80):XX(P75)(P74):YY(P77)(P73):XX(X280)279(X0):YY(Y192)191(Y0):C(CC1)(P48)(CC0)C:CPN4(PN0)(C3):1A,B:C:1X,Y:AX:BY:P81ĂnNIBBLE.ALMANAC05' ''ALMANAC,7kд 3  +READ80c1kl +YEARSd4 +BIRTHDATES.1e4 44 +BIRTHDATES.2f4 44 +BIRTHDATES.3g4 44 +BIRTHDATES.4h4 44 +BIRTHDATES.5i4 44 +BIRTHDATES.6j4 44 +BIRTHDATES.7k4 44 +BIRTHDATES.8l4 44 +BIRTHDATES.9m4 44 +-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abS *************************s  * NIBBLE ALMANAC *  * BY: RUDY A. GUY * ( * COPYRIGHT(C) 1990 * 2 * MINDCRAFT PUBL. CORP. * < * CONCORD, MA 01742 * F ************************* P6204 Z Input of 3 linesM dA$:A$(27)FL1:c nCH(PT):CV(37) xA$(21)ĹPT,CH1:CH59CV12Ĺ37,CV2:100 A$(21)CH59Ĺ37,CV1 A$(127)(CH59CV12)Ĺ1614,160:PT,CH1:100 A$(127)CH0ĺ(32);:PT,CH1:37,CV:100N A$(127)(CH0CV10)ĺ(32);:PT,0:37,CV:100 A$(127)(CH0CV11)ĺ(32);:PT,59:37,CV1:100 A$(127)(CH0CV12)ĺ(32);:PT,59:37,CV1:100 A$(127)100 A$(8)CH0ĹPT,CH1:100" A$(8)(CH0CV10)ĹPT,59:37,CV2:100L A$(8)(CH0CV11)ĹPT,59:37,CV1v A$(8)(CH0CV12)ĹPT,59:37,CV1 A$(25)ė:100 A$(13)IL180:6000 A$(32)100 A$(34)A$(39) CH59CV12Ĺ1614,(A$)128:1052:100 "A$;:100# ,A$:A$(27)FL1:9 6CH(PT):CV(37)k @A$(21)ĹPT,CH1:CH59CV11Ĺ37,CV1:300 JA$(21)CH59Ĺ37,CV1 TA$(127)(CH59CV11)Ĺ1486,160:PT,CH1:37,CV:300 ^A$(127)CH0ĺ(32);:PT,CH1:37,CV:300+hA$(127)(CH0CV10)ĺ(32);:PT,0:37,CV:300drA$(127)(CH0CV11)ĺ(32);:PT,59:37,CV1:300|A$(8)CH0ĹPT,CH1:300A$(8)(CH0CV10)ĹPT,59:37,CV1:300A$(8)(CH0CV11)ĹPT,59:37,CV1A$(25)ė:300 A$(13)IL120:6000A$(32)3006A$(34)A$(39)cCH59CV11Ĺ1486,(A$)128:1052:300qA$;:300A$:A$(27)FL1:CH(PT):CV(37)A$(21)CH59ĹPT,CH1:470A$(21)CH59Č1052:470A$(127)CH59Ĺ1358,160:PT,CH1:4709A$(127)CH0ĺ(32);:PT,CH1:470gA$(127)CH0ĹPT,CH:(32):PT,CH:470A$(8)CH0ĹPT,CH1:470&A$(25)ė:4700A$(13)IL60:6000:A$(32)470DA$(34)A$(39)NCH59Ĺ1358,(A$)128:1052:470XA$;:4703b Check for //e, //c or GSIl(64435)66830uv MOVE BASIC PROGRAM INTO HIGHER MEMORY(2354)0Ĺ2354,0:103,51:104,9:(4)"RUN ALMANAC"M$(12),MD(12),T$(24),DT$(24),GS$(12)I$"":D$(4):MT$(27)(15):NT$(24)(14):BELL$(7).PT1403:MI1:SX176I Check for data filesT6680oCH1:D$"BLOAD READ80":12:"Please wait. Verifying needed files."D$"PREFIX":"";PF$J0:I1(PF$):(PF$,I,1)"/"JJ1:J37605:12:"Nibble Almanac must be run from a":"subdirectory.":PCH2:D$"VERIFY YEARS"]CH3:I0 II1:I12ĺD$"VERIFY BIRTHDATES."I:780CH4:I0 II1:I12ĺD$"VERIFY EVENTS."I:800*CH0:D$"PREFIX":PF$4I112:M$(I):>I112:MD(I):HI124:T$(I):3RI112:GS$(I):L\I768911:K:I,K:\f Main Menukp5710:ME1z11:PT,29:"1. Add/Edit Information"PT,29:"2. View Information"PT,29:"3. File Maintenance"PT,29:"4. Birthday Bulletin"PT,29:"5. Return To BASIC">18:PT,29:"Please choose:"TMA5:BX182:6240sS990,2080,3670,5010,5530FL0:880 Enter Data5710:ME2:FL0:I124:DT$(I)"":11:PT,29:"1. Enter/Edit Yearly Highlights"PT,29:"2. Enter Birthdates"9PT,29:"3. Enter/Edit Notable Events"^PT,29:"4. Return to Main Menu"18:PT,29:"Please choose:"T10:M0:MI1:MA4:SX176:BX181:6240:S4ı$S1080,1510,1660:990. Add Information for Year86450:A$"Yearly Highlights":1:6470NBD$"OPEN YEARS,L5":D$"READ YEARS,R0":NU:D$"CLOSE"]LNU01230V13:"Just press RETURN for the main menu.":12:"What year ?";YR$`(YR$)0ıj(YR$)2(YR$)4ĺBELL$:12:868:1110t(YR$)2YR$"19"YR$-~D$"OPEN YEARS,L5":D$"READ YEARS,R0":NUdI1NU:D$"READ YEARS,R";I:SY$:SY$YR$M1:INUu:D$"CLOSE"M1127012:958:"A file for "YR$" already exists. Do you want to modify the file?";"";YN$:6550:YN$"Y"1380YN$"N"ıBELL$:1190|3:958:13:"Just press RETURN for the main menu.":12:"Enter information for what year?";YR$(YR$)0ı(YR$)2(YR$)4ĺBELL$:12:868:1230(YR$)2YR$"19"YR$3:958:" Year: ";::YR$:6410:T$(1):6070:FL1ı: DT$(1)I$:6400:6420:G1280GT1224g6410:T$(T1):6150:FL1ı(DT$(T1)I$:6400:6420:G13102<NUNU1:D$"OPEN YEARS,L5":D$"WRITE YEARS,R0":NUFD$"WRITE YEARS,R"NU:YR$:(4)"CLOSE"PD$"OPEN YEAR."YR$:D$"WRITE YEAR."YR$FZI124:(34);DT$(I)::D$"CLOSE":Pd6450ynA$"Edit Yearly Highlights":1:6470xD$"OPEN YEAR."YR$:D$"READ YEAR."YR$I124:DT$(I)::D$"CLOSE"3:958:" Year: ";::YR$: 6410:T$(1):T11:6070:FL1ı,DT$(1)I$:6400:6420:G14309T1224Y6410:T$(T1):6150:FL1ı|DT$(T1)I$:6400:6420:G1460D$"OPEN YEAR."YR$:D$"WRITE YEAR."YR$I124:(34);DT$(I)::D$"CLOSE":6450Add Birthday Information 'A$"Celebrity Birthdays":1:6470k10:958:"Please enter celebrity's name:"::"";CN$:CN$""ı(CN$)40ĺBELL$:154014:958:"Please enter celebrity's birthdate: (mm,dd,yyyy)"::"";MM$,DD$,YY$"5830:E11E10:,E12E10:156066400:6420:G1540@D$"OPEN BIRTHDATES."M",L52":D$"READ BIRTHDATES."M",R0":NU:D$"WRITE BIRTHDATES."M",R0":NUNU1:NUJD$"WRITE BIRTHDATES."M",R"NU:M:D:Y:CN$:D$"CLOSE"T6400:23:"Another?";YN$:6550:YN$"Y"1510^YN$"N"ıh1620(r Add Notable EventsO|6450:A$"Notable Events":1:647012:958:"(A)dd or (E)dit an event?";YN$:6550:YN$"A"1710YN$"E"1820(YN$)0ıBELL$:1670 3:958:8:"Please enter the date for the event: (mm,dd,yyyy)":10:"";MM$,DD$,YY$5 5830:E11E10:J E12E10:1710w 3:958:"Date:";::M$(M)" "D", "YY$: EV$"":5910:FL1ı 6400:6420:G1660!D$"OPEN EVENTS."M",L193":D$"READ EVENTS."M",R0":NU:NUNU1:D$"WRITE EVENTS."M",R0":NUC!D$"WRITE EVENTS."M",R"NU:M:D:Y:(34);I$:D$"CLOSE"u!6400:23:"Another?";YN$:6550:YN$"Y"1710!YN$"N"ı!1790!8:958:"Please enter the date of the event: (mm,dd,yyyy)":10:"";MM$,DD$,YY$!&5830:E11E10:"0E12E10:1820O":3:958:12:"Searching for events of "M$(M)" "D", "YY$".""DD$"OPEN EVENTS."M",L193":D$"READ EVENTS."M",R0":NU:NU0ĺD$"CLOSE":3:958:12:"There are no records for that month.":1940"NF0:S1NU#XD$"READ EVENTS."M",R"S:MM,DD,YY,EV$%#bDDDYYY19103#lF1:1970D#v:D$"CLOSE"#F0Ģ3:958:12:"There are no events listed for that date.":1940#F1F0:3:958:12:"There are no more events listed for that date." $6400:23:"Another?";YN$:6550:YN$"Y"1820$YN$"N"ı$$19403$D$"CLOSE"`$3:958:"Date:";::M$(M)" "D", "YY$:$5910:FL1FL0::3:958:2040$6400:23:"Is this correct?";YN$:6550:YN$"Y"2030$YN$"N"1980$20001%D$"OPEN EVENTS."M",L193":D$"WRITE EVENTS."M",R"S:M:D:Y:(34);I$:D$"CLOSE"D%MMM:DDD:YYY%3:958:12:"Searching for events of "M$(M)" "D", "YY$"."% D$"OPEN EVENTS."M",L193":1910% View Information on Screen% 5710:ME2:L0&*11:PT,29:"1. View Yearly Highlights")&4PT,29:"2. View Birthdates"N&>PT,29:"3. View Notable Events"s&HPT,29:"4. Return to Main Menu"&R18:PT,29:"Please choose:"&\M0:MA4:BX181:6240:S4ı&fS2160,2490,3130:2080&p6450:A$"Yearly Highlights":1:64704'zD$"OPEN YEARS,L5":D$"READ YEARS,R0":NU:D$"CLOSE"C'NU03060'M0:13:"Just press RETURN for the main menu.":12:"What year ?";YR$:(YR$)0ı'(YR$)2(YR$)4ĺBELL$:12:868:2190'(YR$)2YR$"19"YR$(D$"OPEN YEARS,L5":D$"READ YEARS,R0":NUJ(I1NU:D$"READ YEARS,R";I:SY$:SY$YR$M1:INU[(:D$"CLOSE"j(M13080(D$"OPEN YEAR."YR$:D$"READ YEAR."YR$(I124:DT$(I):(D$"CLOSE"(6450:A$YR$" Highlights":1:6470(LM10:RM70:3) S1240) PT,10:"<<<"T$(S)": >>>":A$DT$(S):5540:E) S6(S6)2380K)$ }). 6400:23:"Another?";YN$:6550:YN$"Y"2160)8 YN$"N"ı)B 2350)L L0:6400:23:S242440*V A$"Press ESC to cancel, P to print screen, any other key to continue.":6470(*` X(16384):X155Ĺ16368,0:W*j X208X240Ĺ16368,0:34,23:768::2400{*t X127Ĺ16368,0:3:958:2340*~ 2400* A$"P to print, any other key for the menu.":6470* X(16384):X208X240Ĺ16368,0:34,23:768::2450+ X127Ĺ16368,0:2340+ 24504+ Birthdays DisplayC+ 5710:ME2a+ 11:PT,29:"1. By Month"+ PT,29:"2. By Month and Day"+ PT,29:"3. By Month, Day and Year"+ PT,29:"4. Return to Main Menu"+ 18:PT,29:"Please choose:", M0:MA4:BX181:6240:S4ġ:0, S2570,2620,2690:2490[, 6450:A$"Birthdays By Month":1:6470, 12:958:"Birthdates for which month (1-12) ?";MM$:M(MM$):M0ı, M1M12ĺBELL$:2580,( 6450:A$"Birthdays for "M$(M):1:6470,2 SE1:2740*-< 6450:A$"Birthdays By Month/Day":1:6470o-F 12:958:"Birthdays for which month and day (mm,dd) ?";MM$,DD$-P M(MM$):D(DD$):M0ı-Z M2(D0D29)2670-d (M1M12)(D1DMD(M))ĺBELL$:2630.n 6450:A$"Birthdays for "M$(M)" "DD$:1:6470.x SE2:2740I. 6450:A$"Birthdays By Month/Day/Year":1:6470. 12:958:"Birthdays for which date (mm,dd,yyyy) ?";MM$,DD$,YY$:5830:E11E10:. E12E10:BELL$:2700. 6450:A$"Birthdays for "M$(M)" "DD$", "YY$:1:6470/ SE3/ C0:2:958a/ D$"OPEN BIRTHDATES."M",L52":D$"READ BIRTHDATES."M",R0":NU:NU03040/ S1NU:D$"READ BIRTHDATES."M",R"S:MM,DD,YY,CN$/ SE12880/ SE2DDD2880/ SE22820/ SE3(DDDYYY)2880/ SE328200 :D$"CLOSE"Y0 C0Ģ12:"Sorry, I cannot match that date.":"Press RETURN for the menu.";YN$:m0 23::6400:230" "Another date?";YN$:6550:YN$"Y"ı0, YN$"N"ġ:06 28400@ CC1:PT,5:CN$;:SE329100J SE2ĹPT,47:YY:2910 1T PT,47:M$(MM)" "DD", "YY#1^ C20(C20)2930-1h 2820F1r D$"CLOSE":6400:23U1| SNU30001 A$"Press ESC to cancel, P to print screen, any other key to continue.":64701 X(16384):X155Ĺ16368,0:1 X208X240Ĺ16368,0:34,23:768::2960:2 X127Ĺ16368,0:D$"OPEN BIRTHDATES."M",L52":2:958:2820D2 29602 A$"P to print screen, any other key for the menu.":64702 X208X240Ĺ16368,0:34,23:768::30002 X(16384):X127Ĺ16368,0:2 3020+3 D$"CLOSE":12:958:"There is no birthday information for that month."S3 "Press RETURN for the menu.";YN$:3 12:958:"There are no yearly highlight files available."3 "Press RETURN for the menu.";YN$:3 12:958:"There is no yearly highlight file for "YR$"."54 "Try another year?";YN$:6550:YN$"Y"Ģ12:958:2190D4 YN$"N"ıU4& BELL$:3080w40 Notable Events Display Menu4: 5710:ME24D 11:PT,29:"1. By Month"4N PT,29:"2. By Month and Day"4X PT,29:"3. By Month, Day and Year"5b PT,29:"4. Return to Main Menu"45l 18:PT,29:"Please choose:"c5v LM15:RM65:M0:MA4:BX181:6240:S4ġ:5 S3210,3260,3320:31305 6450:A$"Events by Month":1:64705 12:958:"Events for which month (1-12) ?";MM$5 M(MM$):M0ı 6 M1M12ĺBELL$:3220@6 6450:A$"Events for "M$(M):1:6470:SE1:3360l6 6450:A$"Events by Month/Day":1:64706 12:958:"Events for which month and day (mm,dd) ?";MM$,DD$6 M(MM$):D(DD$):M0ı6 M2(D0D29)33107 (M1M12)(D1DMD(M))ĺBELL$:3270M7 6450:A$"Events for "M$(M)" "DD$:1:6470:SE2:3360~7 6450:A$"Events by Month/Day/Year":1:64707 12:958:"Events for which date (mm,dd,yyyy) ?";MM$,DD$,YY$:5830:E11E10:7 E12E10:BELL$:3330/8 6450:A$"Events for "M$(M)" "DD$", "YY$:1:6470:SE3C8 C0:2:958:28* D$"OPEN EVENTS."M",L193":D$"READ EVENTS."M",R0":NU:NU0364084 S1NU:D$"READ EVENTS."M",R"S:MM,DD,YY,EV$8> SE135108H SE2DDD35108R SE234409\ SE3(DDDYYY)35109f SE33440'9p :D$"CLOSE"|9z C0Ģ12:"Sorry, I cannot match that date.":"Press RETURN for the menu.";YN$:9 23::6400:239 A$"Press P to print, any other key for menu.":6470: X(16384):X208X240Ĺ16368,0:34,23:768::3480: X127Ĺ16368,0:%: 3480<: CC1::SE33540a: SE2ĹPT,LM:"<<<"YY">>>":3540: PT,LM:"<<<"M$(MM)" "DD", "YY">>>": A$EV$:5540: L0:C3(C3)3570: 3440: D$"CLOSE":6400:23: SNU34407;A$"Press ESC to cancel, P to print screen, any other key to continue.":6470Z;X(16384):X155Ĺ16368,0:;X208X240Ĺ16368,0:34,23:768::3600;$X127Ĺ16368,0:D$"OPEN EVENTS."M",L193":2:958:3440;.3600<8D$"CLOSE":12:958:"There are no events stored for that month."@D$"OPEN YEARS,L5":D$"READ YEARS,R0":NU:D$"CLOSE":NU04040>F0:3:958:13:"Just press RETURN for the menu.":12:"Delete what year?";YR$>(YR$)0ı>(YR$)4ĺBELL$:3790>D$"OPEN YEARS,L5">S1NU:D$"READ YEARS,R"S ?Y:Y(YR$)FS:SNU(? :D$"CLOSE":F03900?12:958:"There is no yearly highlight file for "YR$".":"Press RETURN for another year, ESC for the menu."?X(16384):X155Ĺ16368,0:?(X141Ĺ16368,0:3790?23870&@<12:958:"Press RETURN to delete "YR$". Press ESC to cancel."I@FX(16384):X155Ĺ16368,0:d@PX141Ĺ16368,0:3940n@Z3910@d12:958:"Deleting "YR$" yearly highlight file. Do not interrupt."@nD$"DELETE YEAR."YR$AxD$"OPEN YEARS,L5":D$"WRITE YEARS,R0":NU1AFNU4000+AD$"READ YEARS,R"NU:YFAD$"WRITE YEARS,R"F:YeAD$"CLOSE":NUNU1:NU0ıA6400:23:"Another?";YN$:6550:YN$"Y"3790AYN$"N"ıA4010B3:958:12:"There are no yearly highlight files available.":"Press RETURN for the menu.";YN$:@B6450:A$"Delete Birthdate":1:6470BF0:3:958:13:"Just press RETURN for the menu.":12:"Delete what celebrity's birthday?";SE$B(SE$)0ı C3:958:12:"In what month was "SE$" born (1-12) ?";:"";M$:M(M$):M1M12ıcCD$"OPEN BIRTHDATES."M",L52":D$"READ BIRTHDATES."M",R0":NU:NU0ĺD$"CLOSE":4280CS1NU:D$"READ BIRTHDATES."M",R"S:MM,D,Y,SN$:SN$SE$FS:SNUC:D$"CLOSE":F041609D12:958:"There is no birthday information for "SE$".":"Press RETURN to try another name, ESC for the menu."\D"X(16384):X155Ĺ16368,0:wD,X141Ĺ16368,0:4060D64130D@12:958:"Press RETURN to delete birthday information for "SE$".":"Press ESC to cancel."EJX(16384):X155Ĺ16368,0:ETX141Ĺ16368,0:4200)E^4170xEh12:958:"Deleting birthday information for "SE$".":"Do not interrupt."ErD$"OPEN BIRTHDATES."M",L52":D$"WRITE BIRTHDATES."M",R0":NU1E|FNUĺD$"CLOSE":4250FD$"READ BIRTHDATES."M",R"NU:MM,D,Y,SN$OFD$"WRITE BIRTHDATES."M",R"F:MM:D:Y:SN$:D$"CLOSE":NUNU1:NU0ıF6400:23:"Another?";YN$:6550:YN$"Y"4060FYN$"N"ıF4250G3:958:12:"There is no birthday information for that month.":"Press RETURN for the menu.";YN$:G Sort Birthdays?G6450:A$"Sort Birthdays":1:6470`GCH5:D$"VERIFY /RAM":AV119G12:"Sort what month (1-12) ?";M$:M(M$):M1M12ıGSE$"BIRTHDATES."(M):SL(SE$)GD$"OPEN "PF$",TDIR":D$"READ "PF$HA$:(A$,2,SL)SE$ĺD$"CLOSE":4390,H(A$,6)"BLOCKS"4350;HD$"CLOSE"H12:958:"Unable to locate a file named BIRTHDATES."M" on diskette.":"Press RETURN for the menu.";YN$:H&BL((A$,26,3)):BLAV4410I012:958:"File is too large to be sorted.":"Press a key for the menu.";YN$:gI:12:958:A$"Sorting birthdate file. Please wait..."::12:6470:IDD$"OPEN BIRTHDATES."M",L52":D$"READ BIRTHDATES."M",R0":NU:NU0ĺD$"CLOSE":IND$"OPEN /RAM/TEMP,L52"IXC0:J1MD(M):I1NUJbD$"READ BIRTHDATES."M",R"IRJlM,D,Y,CN$:DJCC1:D$"WRITE /RAM/TEMP,R"C:M:D:Y:CN$[JvI,JJD$"CLOSE":D$"OPEN /RAM/TEMP,L52":D$"OPEN BIRTHDATES."M",L52"JI1NUJD$"READ /RAM/TEMP,R"IKM,D,Y,CN$:D$"WRITE BIRTHDATES."M",R"I:M:D:Y:CN$K:D$"CLOSE"-KD$"DELETE /RAM/TEMP":_KF0:6450:A$"Delete Notable Events":1:6470K12:958:"Enter the date of the event to be deleted (mm,dd,yyyy)"::"";MM$,DD$,YY$K5830:E11E10:KE12E10:45506LD$"OPEN EVENTS."M",L193":D$"READ EVENTS."M",R0":NU:NU0ĺD$"CLOSE":4750LS1NU:D$"READ EVENTS."M",R"S:MM,DD,YY,EV$:YYYDDDĺD$"CLOSE":F1:4660L:D$"CLOSE":LF1İ6400:23:"That's all of them. Press RETURN for the menu.";YN$:,M 12:958:"Sorry, can't locate any events for that date.":BELL$gM6400:23:"Try another date?";YN$:6550:YN$"Y"4550vM YN$"N"ıM*4630M410:958:LM15:RM65:PT,LM:M$(M)" "D", "Y::A$EV$:5540N>6400:23:"Is this the event that is to be deleted?";YN$:6550:YN$"Y"4700vNHYN$"N"Ģ10:958:12:A$"Searching for another record.":6470:D$"OPEN EVENTS."M",L193":4600NR4670N\10:958:12:"Deleting event. Do not interrupt."NfD$"OPEN EVENTS."M",L193":D$"WRITE EVENTS."M",R0":NU1:SNU47408OpD$"READ EVENTS."M",R"NU:MM,DD,YY,EV$:EV$(34)EV$fOzD$"WRITE EVENTS."M",R"S:MM:DD:YY:EV$OD$"CLOSE":6400:23:"Press RETURN for the menu.";YN$:P12:958:"There is no Event information available.":"Press RETURN for the menu.";YN$:P Sort Events7P6450:A$"Sort Events":1:6470XPCH5:D$"VERIFY /RAM":AV119P12:"Sort what month (1-12) ?";M$:M(M$):M1M12ıPSE$"EVENTS."(M):SL(SE$)PD$"OPEN "PF$",TDIR":D$"READ "PF$QA$:(A$,2,SL)SE$ĺD$"CLOSE":4860 Q(A$,6)"BLOCKS"4820/QD$"CLOSE"Q12:958:"Unable to locate a file named EVENTS."M" on diskette.":"Press RETURN for the menu.";YN$:QBL((A$,26,3)):BLAV4880R12:958:"File is too large to be sorted.":"Press a key for the menu.";YN$:SR12:958:A$"Sorting event file. Please wait..."::12:6470:RD$"OPEN EVENTS."M",L193":D$"READ EVENTS."M",R0":NU:NU0ĺD$"CLOSE":R$D$"OPEN /RAM/TEMP,L193"R.C0:J1MD(M):I1NUR8D$"READ EVENTS."M",R"I9SBM,D,Y,EV$:DJCC1:D$"WRITE /RAM/TEMP,R"C:M:D:Y:(34)EV$BSLI,JSVD$"CLOSE":D$"OPEN /RAM/TEMP,L193":D$"OPEN EVENTS."M",L193"S`I1NUSjD$"READ /RAM/TEMP,R"IStM,D,Y,EV$:D$"WRITE EVENTS."M",R"I:M:D:Y:(34)EV$S~:D$"CLOSE"TD$"DELETE /RAM/TEMP":=T6450:A$"Birthday Bulletin":1:6470\TCH4:D$"VERIFY /RAM":CH0T12:958:"Birthday bulletin for who?"::"";NM$:(NM$)0ıT16:"Please enter "NM$"'s birthdate (mm,dd,yyyy):";:"";MM$,DD$,YY$:5830:E11E10:UE10E10:BELL$:5040eU12:958:"Birthday Bulletin for "NM$".":"Birthdate: "M$(M)" "DD$", "YY$U18:"Is this information correct?";YN$:6550:YN$"Y"5110UYN$"N"5030UBELL$:5070U Birthday BulletinUPT36:5480 VA$"Nibble Almanac Birthday Bulletin":6470^V :A$NM$:6470:A$"Born on "M$(M)" "DD$", "YY$:6470VA$"Birthstone :"GS$(M):6470:L5VD$"PR#0":12:958:"Please wait while the report is compiled."W(D$"OPEN YEARS,L5":D$"READ YEARS,R0":NU:NU0F1:D$"CLOSE":5210QW2I1NU:D$"READ YEARS,R"I:YR$:YR$YY$ĺD$"CLOSE":5200bW<:D$"CLOSE"pWFF1:5210WPD$"OPEN YEAR."YY$:D$"READ YEAR."YY$:I124:DT$(I)::D$"CLOSE"XZC0:D$"OPEN BIRTHDATES."M",L52":D$"READ BIRTHDATES."M",R0":NU:NU0ĺD$"CLOSE":5250IXdS1NU:D$"READ BIRTHDATES."M",R"S:MM,DD,YY,CN$XnDDDCC1:D$"OPEN /RAM/BD.TEMP,L46":D$"WRITE /RAM/BD.TEMP,R"C:(YY)" "CN$:D$"CLOSE /RAM/BD.TEMP"Xx:D$"CLOSE"YE0:D$"OPEN EVENTS."M",L193":D$"READ EVENTS."M",R0":NU:NU0ĺD$"CLOSE":5290LYS1NU:D$"READ EVENTS."M",R"S:MM,DD,YY,EV$YDDDEE1:D$"OPEN /RAM/EV.TEMP,L186":D$"WRITE /RAM/EV.TEMP,R"E:EV$(34)(YY)" "EV$:EV$:D$"CLOSE /RAM/EV.TEMP"Y:D$"CLOSE"ZLM5:RM75:D$"PR#1":6500:F1F0:5330@ZS124:(DT$(S))1A$T$(S)": "DT$(S):5540:CH2ZCH2(S1S3S5S8S9S12S17S19S22)İ6500:CH0Z:6500ZC05380Z"Well known people with the same birthdate:"::LL2:6520H[D$"OPEN /RAM/BD.TEMP,L46":S1C:D$"READ /RAM/BD.TEMP,R"S:CN$:S2(S2)ĹPT,41:CN$:LL1:6520:5370X[PT,1:CN$;}[:D$"CLOSE"::LL1:6520:6500[E05430["Notable events for "M$(M)" "DD$":"::LL2:6520\D$"OPEN /RAM/EV.TEMP,L186":S1E:D$"READ /RAM/EV.TEMP,R"S:EV$'\"A$EV$:5540::LL1:65208\,:D$"CLOSE"M\6(12):D$"PR#0"p\@C0ĺD$"DELETE /RAM/BD.TEMP"\JE0ĺD$"DELETE /RAM/EV.TEMP"\TL0:PT1403:\^ Initialize Printer+]h3:958:12:"Please adjust paper and turn on printer.":"Press RETURN to begin report, ESC to cancel."u]rX(16384):X141Ĺ16368,0:D$"PR#1":(27)(97)(50):(27)(78):]|X155Ĺ16368,0::]5490] Exit Program]::12:A$"Thanks for using the Nibble Almanac.":6470:23:^PRINT FORMATTER-^(A$)RMLMĹPT,LM:A$:LL1:6520:?^JRMLM11^C$(A$,J,1):C$" "C$"."C$","C$"!"C$"?"C$"-"5590^:JRMLM^C$" "A1$(A$,J1):A$(A$,(A$)J):56302_C$"!"C$","C$"."C$"?"C$"-"JRMLMİ5670:A1$(A$,J):A$(A$,(A$)J1):PT,LM:A1$:LL1:6520:5640h_A1$(A$,J):(A$)(A1$)A$(A$,(A$)J):5630r_5650_PT,LM:A1$:LL1:6520_(A$)RMLM5560_PT,LM:A$:LL1:6520__&J(A$)ı`0(A$,J1,1)" "A1$(A$,J):A$(A$,(A$)J):PT,LM:A1$::5640!`:2`D Draw MenusD`ND$"PR#3"::]`XMT$:3:PT,10:6480o`b3:TV5:6490`lPT,10:6480`vNT$`A$"Nibble Almanac":4:6470`A$"By: Rudy A. Guy":6470aA$"Copyright 1990 - MindCraft Publishing Corp.":6470aMT$:10:PT,10:64802a10:TV10:6490JaPT,10:6480:NT$:da Validate Date Input}aM(MM$):M0E11:aM1M12ĺBELL$:E12:aY(YY$):Y1000ĺBELL$:E12:aY4(Y4)MD(2)28:5890aY4(Y4)MD(2)29"bY100(Y100)Y400(Y400)MD(2)28JbD(DD$):D1DMD(M)ĺBELL$:E12:Pb tbMT$:10:PT,17:I162:"L";:b 10:I15:PT,17:"|";:PT,78:"|":b*PT,17:I162:"L";::NT$b46400c>23:A$"ESC for Main Menu, CTRL-Y to blank entry, RETURN to accept.":6470ScH32,18:33,60:34,10:35,14::EV$;:PT,0:35,13:37,10\cR100bc\|cf Read Screen Into I$GdpI$" ": 180 Spacesdz:L1(105):L2(106):L3L1L2256:L1(L33):L2(L34):2343,L1:2344,L2d2230dL0:IIL11:(I$,I,1)(32)LI:I1d::L0I$"":dI$(I$,L):%e Draw Input Box and Get Information - 2 LinesIeMT$:10:PT,17:I162:"L";:se10:I14:PT,17:"|";:PT,78:"|":ePT,17:I162:"L";::NT$e6400e23:A$"ESC for Main Menu, CTRL-Y to blank entry, RETURN to accept.":6470,f32,18:33,60:34,10:35,13::DT$(T1);:PT,0:35,12:37,107f300:Pf Get Keyboard InputtfMT$:10:PT,17:I162:"L";:f10:I13:PT,17:"|";:PT,78:"|":fPT,17:I162:"L";::NT$f$6400g.23:A$"ESC for Main Menu, CTRL-Y to blank entry, RETURN to accept.":6470Wg832,18:33,60:34,10:35,12::DT$(T1);:PT,0:35,11:37,10bgB480:gL Input of one line of textgV Number, ESCAPE and Arrow sequenceg`16368,0:S1:6360gjX(16384):X141İ6390:htX155ME2SMA:16368,0:h~X138X149İ6310:6250 ȏ6 . ) ɟ"     Lb#b#ŠϠĠԠ  m# m# J Qڨ)̰}]! нȱ ̀𩠙 i  a Y n ɟg   VR6  .X ɛL " e ' 0% '8 Jm ʈ0  0ŠϠĠ͢Š͠͠ϠŠŠϠĠخ͠ ͍B B(8`<YYZLYLYLY뿭` 8!@8` R%MNЩUMߩ  L 5   8 0 8  `0 / X?&G& e&&q&P&0`ŠӠֱ̭ԠŠҬî̠ӠĮʎ1&… )n&Dž )\%T&L()8= )J 81(&2(& m((ʎ1ζ&ζ&&3223 ')L&18&"m11 2H22h2舌&&12H)M0 h10200I20h2 C(`L%12 `_3("L  <8# ȱ)ɀ  );( ` (Xp< @;( )m;(;(.;(>( M;(i  ``) '(j21 & &!` )&&(i(&(( CBDFGE !)&$ m(,&& … m(ŅL7'JJJJ`Ϡ3(8`&h)hrȱȱȱȱ0]cȱeem+ȱ+ȱ++ȱ++ȱ+ )+ C* )L2)`Ly* U*L) ) L2) )L)8e` ,$`ee` `+ *+ *` * * *`hh8`8`+++`}+`e`H)hJJ*0JJ)` (< ( < *? ( < (? ( < (? ( <*? * **? *? *? ( < *? ( <x0HH1HH "hh+("i 0Ꮻ\Ꮸ0hh8(`hhh8k/<ʆ>-=?BC8 é&'112`HB-9F 3"aɿ LLB Nϰ H  @h( L Lj  @`eLJCAB@=?<>=?<>CAB@?A` 1 L  <>`ڢF]PL8i m L   6< L  BLRAM' hLDLآ <B*IBGF08Lé'+8H <,``h(`@ڍL3hh@ihAiH(ؠȱ@JJJJq@)@pvȱ@Hȱ@Ah@@cpe J) LL LJiB LJ) BxNhHHHHL(  ްƠx@BEOD  ް(`( C)CJJJl`B f-`J,~@~@}J@` ߩ%S @ ~`E hhhߺ0 h ߐ( ߐ ߐ  0 HϭߍLпllllhh8` Q)T'P") ɺiL? )?      `l@Hȱ@IױHXATȱH ɯȩ׍̎5H)/@a)_ .0 :A[8@`,뎎׮Б` L ` @>O)I38 I`aם`K8`@Nȱ@O@ IiNȽבN)/ȩ/N`@[ WHJjjjhA C'KI؍0JHi 뎁`C8` @)0 3N0" K莭0 ⭪i` ]; 뮁ٝ٘ 0 W,0 .H hȑNWȮّNW8`ٍّNΨ0NN` G8`F@ 0 F LK8`6 7I8`FHGH hGhF܌ բFܽܕF芝ܝ 밶67 8܅I m9IHHyHȘI Lܝ` @_@ g@Ю׍O)mיOʈ@mȱ@_ȱ@iklbJtKuO)5OI0ܢܽ eL'A* 7`aFG (CD Lz܅IN mAIH` pm mI0LM AOHJFKG 밳JK 밨C%܈@" T)Ii)܍N*܍A'ܮ( 4 䭐 $H %HFFHGHG 됬`R8`)` AHO` 'Q'܅IHHOOЍO@`8 ` ͉% ΉQ8`܅I `L܍MN h8D`F` alH)HFȍJHGK $%܍&܍!ܢ8* J8` L ܝ:)I 'ܝ6`B8iNFLGM`B܅IH3H ( )ȱHΨ`Ί8AeHI SB60I ٙGٙEFJCʈ h猪`8m0`,0H hi PȽΨhٍ0GF8yאFG  $0 K01 E8`1ݺ00 ] 0ʩ 谼 谷`12)1`0`Ȏi 0U`)8`Ψ` W |G 4A)H ܝʈh٭0٭)ܝ٭*ܝ٥F٥G٭'ܝ٭(ܝ`)َ 8ʈ` 0ٝ)i `8`R ꍌvw zNمFمG < Ό0 FGL鮁0 ٭w٭vٽ8`H8`  ,v w 8` vw `ٽJJJJ`H͌hn)NjNjNjN. GH͌ z;٭ *Nۙ۰ڙک `Z8` G# ,`w .w .w .w8۰*Jv۩ ٰvw`JJJJ;i z묁͖ zٍ0  `H8` `ٍyٍiB0H0FG h0`FG `ϩBxED0C ް(`(8`ؑ@`M8`8@ؐʈI묂)v8vv L} LةC8`؍)@ i)v8vyJ ^ ؅F Ls) +%J(a ,FإGؐ.` ,JHIH IL3FHGI ҭJjHIHB>IؙJJ [: IL}HIHI`JKJK`FHIG ( Ȣ؝}؈JL)eKM`)` J vJ͛ $0 ΊJFȱJL8`GBJ R FإG`BH RFإG`,H hHB؅F  ؅GxDE؍00C ް(`(8` zL)J  8"L zH  8 9ؙ` @ P8`K8`B8` H؈OJJJJحm) ) )Ю ЪG `F $ ᭔ع+ؠ 6H  Qh8` 䮁ٽ ٬ؠ@` ( H )8`)i п` H h)N$% LL L L 6 $pJ덟 )@።NJOK 6iKKΞΞ IJΟ JФ̭JjHFIH HIGxKE ް((H hH h8`8@ȭ@L6쬂8NNO 8 ؍JL`RΞʱLN1MOMEKP/MEKΞL9L-M O,p莝eNNO(`JNKOL 6/ $P L8 } [ؑJ`L@ȱ@ `@Nȱ@O`؝}}vIvؐ` hzؽ}؝v h ' h؝zv؈` ` H Rh)N@ 9; L  6$ )bJ ] ) H 6hL )  )حJjIwHIvH؊ PLKΞʱNLMO MЈMEKݸP%MEKΞL& O, PeNNO N(` C  7 2JvHIwHI؊ LI  ,` A Hv ع Hw ؙ؊ؠIhHIhH  iع `  عiعi` )؍0CGHFHBFGx ް(8hFhG`@4͔ L @Ai ׭2` . Q#ع؍0 ]讁)`.@+ i 8` L )߹0 )p )@ ) ȩ ؝H0JK 방 LMJKFG 嬂؍b؍c؝d ؝_ vO) vO )حI͖ z`H@h`h``N8`  ) 9⬂Ȣ؝z@zݚ@ʈLN KIJHȢݚ h魚)Jn 8 δ ؍ ؍ `H8 ع)ꭱJJJJ Ȣ؝I؈ 6h(8H ; h(8Hh(`ؑ@`@ȱ@ ` B@8ZO h鮁ٍٍٍoHٍn8bhcOJJJJO)O@` %I -m) 0@O)N8` @LL =@ -ȹP8` i` ;ם0 -B ;)( ȹ`8m8m@8` G8`F Pm)@N8`O)@J -טyרםOO)׍O`a 밑 LȹL@ȅH@IL,0` G קּ= ]H.m)N 0 F`aO)@LP8` `  zHOCDC h`yٙ٭yٙ٩`H GB`FaG 3%&N    ܮ `J HH hh` 0 @ LJL t_̴Xܝ ݝ0̴ȩFG  0` ܅F݅G ` } tͬ 밽܅F݅G ` }) t$ L`L뮰HH hFhG܍ݍ 8 `FHGH  hGhF`ݹܙ݊`@Bɼ>K@J5 z9X(K zXXK تKo`V8`no` C on zI9XX`)HJJJh`OeNeO࿰ z9XАO`@ȭ@` ON `NJKO`HхhꭋILhH),ex8 (8` ԍ`@Ae Hk00YpmGIJK,-NOPQRSu' @   !"#$Ԡ͠(C)1983-89APPLELKL`BLL ެެެެެެެެެެެެެެެ(C)APPLE'83xLLM Mh@8nЍLޭ 0J @,,LRP׽8H  ): e: y8鰕:Jjjj<)yאi8i;i(*=>hPם8`;Zx3QZYXXWV[HEVhEhH)IWHPHHHAHHHLaVEWLӿ`` ֽ ְ& .Vӈ  JJJJH 8h Ei 8EX`'8`jӍWӥC)p> pӥCYӍY 轊( ( ӈBV ( ӭp0 \BkJ ՠ@iӦ> Ӑi'j:ZH i@ioZZH h ѐȭnWǥBJ Ӱ8XӦ>` Ր+>*L o % ԽYӍZӭoӝY 3Ѡ шNZ`rZLkӭZӍq8r7IZӐiZkӐk 8 ѹs ӭq ѹ| kн Z)*>>` @ $(,048<@DHLPTX\`dh 0ުlptx| 0($ p,&"op8`kkV꽌ɪɖxlӽ*kӽ-kәmMlӈ 꽌ɪ`8` ZԍsԍԍԍԥDEԌ8TԌ8WpԌqԠ 7I꽌ɪ꽌ɭ蠪:љVE:8`]ѾV]H)]ѾV]ҙ)]ѾT]ҙ)] >8hUD` ԝY`> Hh݌(`HCJJJJ)*h`8LխӅ:HhHh Ո թ թ ՘VYҪҦ>:Y)Ң`;R?AJ;<ȰY)Ң`Y?)Ң`ȐҰ ;HhHh=Ң`Hh `Hh`DEiȍ0֌18V%֌&8V֌֠)HV)hH)hHIhդD?DRIDQD)҅; ?JDQD]ՎՎՎ`MY pӭY)p  ӭp`C)`BFGV 8``  / XʩXύX X %   % ɍRH hɛɘɉɈ $ Ld :Ldې)ɮ۰ɺ' Ld  : X ( % ɛ$ɘɉ ɈL :Lɍ)ې)ɮ۰ɺH h 'L  ġLL ̹L)'L ȳL O'F ʻ ̹(((L $ʩ $$ $L `ީ % K@D EFby LҠؠӠ΢ϠԩҠŠƠԠԠŠӢɯϠҠůȠԠĠ  ح o âXoύX1021ʆ ")i/ d+ M# L $0)0ei B = )n  Э` M )ЏL6  9 X [ ?  W" !# n. n'% n% n ɍ+Ɋɋɉɛݮʽ/ L6L[  Mȱ蝀` ̭  ( 9 X L $ ` & & & &e`{8i [`0{2H* Ah2  Mȱ  L `κºú` GAB0h)ύh0HHHH " ׍hhhhhhh .hh8`JIMJAYKERRY&MIKE******************************** l l l * READ80 Source Code * * By Rudy A. Guy * * Copyright (c) 1990 * * MindCraft Publishing Corp. * * Concord, MA 01742 * ******************************** * * * MindCraft Assembler * * * ******************************** ORG $801 ;origin MAIN_MEM EQU $C054 ;80 column softswitch AUX_MEM EQU $C055 ;80 column softswitch LINE1 EQU $531 ;memory location of 1st line of input LINE2 EQU $5B1 ;memory location of 2nd line of input LINE3 EQU $631 ;memory location of 3rd line of input BLD_STR EQU $801 ;move screen memory here DFS $B5 ;reserve 180 bytes START LDX #$00 LDA #$20 ;put a space character into acc. CLEAR STA BLD_STR,X ;put space into reserved memory INX CPX #$B4 ;All 180 bytes filled with spaces? BNE CLEAR ;If not - continue LDX #$00 LDY #$00 READ_60 BIT AUX_MEM ;prepare to read from aux. screen memory LDA LINE1,Y ;read a character from screen STA BLD_STR,X ;move character to reserved memory BIT MAIN_MEM ;prepare to read from main screen memory LDA LINE1,Y ;read a character from screen INX ;increment pointer to reserved memory STA BLD_STR,X ;move character to reserved memory INX ;increment pointer to reserved memory INY ;increment the number of screen reads CPY #$1E ;All of the line read? BEQ NEXT_60 ;If 60 characters read then do next line JMP READ_60 ;Continue reading this line NEXT_60 LDY #$00 ;Initialize counter for second line READ_120 BIT AUX_MEM ;prepare to read from aux. text screen LDA LINE2,Y ;read a character STA BLD_STR,X ;move it to reserved bytes BIT MAIN_MEM ;prepare to read from main text screen LDA LINE2,Y ;read a character INX ;increment pointer to reserved bytes STA BLD_STR,X ;move character to reserved bytes INX ;increment pointer to reserved bytes INY ;increment the number of screen reads CPY #$1E ;done reading? BEQ FINAL_60 ;if yes - read final 60 characters JMP READ_120 ;continue reading current line FINAL_60 LDY #$00 ;initialize counter for final reads READ_180 BIT AUX_MEM ;prepare to read from aux. text screen LDA LINE3,Y ;read a character STA BLD_STR,X ;move character to reserved memory BIT MAIN_MEM ;prepare to read from main text screen LDA LINE3,Y ;read a character INX ;increment pointer to reserved memory bytes STA BLD_STR,X ;store character in reserved memory INX ;increment pointer to reserved memory bytes INY ;increment the number of reads performed CPY #$1E ;done? BEQ DONE ;if yes - exit read routine JMP READ_180 ;continue reading current line DONE LDX #$00 ;prepare to move reserved bytes to string loc. MOVE_IT LDA BLD_STR,X ;get 1st character from reserved memory SEC ;set carry SBC #$80 ;subtract 128 from character code DFC $9D,$00,$00 ;move character to locations poked from BASIC INX ;increment counter CPX #$B4 ;all characters moved? BEQ END ;if yes - exit move routine JMP MOVE_IT ;continue moving characters END RTS ;back to BASIC q  ***********************= * SCROLLER *[ * BY ALAN A. HODSON *y * COPYRIGHT (C) 1990 * * MINDCRAFT PUBL. CO. * *********************** (4)"PR#3": 80 COLUMN MODEz :30)"**********************":31)"PROGRAM BY":31)"BY ALAN A. HODSON":31)"COPYRIGHT (C) 1990":31)"MINDCRAFT PUBL. CORP.":30)"**********************" 23:27)"INITIALIZING - PLEASE WAIT" (G$" ........": 18 BLANKS, 8. 2K$(65,15),F$(60),NN$(60),P$(12,12) <660: FIRST ARRAY8 FI159:J111:K$(I,J)::N PFL1:450: TITLE ZL1$"*******************************************************************************": 80 ASTERISKS> dL2$"* ENTER UP TO SIXTY LINES *": 1*,28 LEADING BLANKS,25 TRAILING BLANKS,1* nL3$"* OF EIGHT CHARACTERS EACH *": 1*,27LB,25TB,1* xL4$"* HIT ANY KEY TO TERMINATE *": 1*,27LB,26TB,1* + ::::::S 34,17: CONTROL TOP PART OF SCREEN{ 17:1:L1$:L2$:L3$:L4$:L1$:: 24:1:"ENTER NUMBER OF LINES ";LL$:(LL$)60190 (LL$)0130 LL(LL$):200 (7);">>> MAXIMUM 60 PLEASE <<<":ZZ12500::18:650:1509 34,0: RESTORE FULL SCREENW LL9G$" "G$: 1 BLANKf :II1LL II10G$" "G$: 1 BLANK N$" ":650: 1 BLANK 19:1::G$:"ENTER LINE# ";II;"/";LL;" ";:N$;:X$:X(X$) SZ(N$):X13350: SIZE & RETURN @X8SZ1N$(N$,(N$)1):650:250: BACKSPACE RX8II1250"X127N$(N$,(N$)1):650:250: LEFT ARROW ,X44250: COMMA CONTROL6X32250: CONTROL FOR LOW ASCII CHARACTERS@X123250: CONTROL FOR {,|,},~ AND HIGHER2JX90X96250:CONTROL FOR [,\,],^,_ OTN$N$X$:250: BUILD N$m^N$N$"-": ADD DUMMY ENDhL$N$:J1(L$):CH$(L$,J,1):(CH$)96(CH$)123N$(N$,J1)(((N$,J,1))32)(N$,J1,(L$)):360rJ: LOWER CASE TO UPPER|K$N$1N$(N$,(K$)1):(N$)1N$(N$,(K$)2)HZN(N$):ZN8430|NZ((8ZN)2):XS1NZ:N$" "N$:XS: PACK N$(N$)9İ650:(7):" WORD TOO LONG- MAX 8 LETTERS... HIT ":R$:240NN$(II)N$:N$"":::P17::FL1LL1:NN$(1)"SCROLLER":246QQ1LL: MAIN LOOPEN$NN$(QQ)ZLN(N$):I1LNpW((N$,I,1))31W1K$(W,1)" "K$(W,1)(N$,I,1)530K$(W,1)"-"X111:P$(X,I)K$(W,X):X:I: TURN ARRAY AROUNDFL1ė:24F&Z211:" ";:ZZ1LN:F$((P$(Z,ZZ)));:::: 4 BLANKS - PRINT ARRAYSg0FL1FL0:TT14:::QQ::::::::QQ:T12000:DND(16384):ND128610N WAIT FOR A KEYPRESS AND THEN CLEAR KEYBOARD STROBEX16368,0:440Cb16368,0:24:27:"QUIT SCROLLER NOW ? (Y/N) ";:ZZ$:ZZ$"Y"ZZ$"y"ė:630Ll440v3:27:" ANOTHER MESSAGE ? (Y/N) ";:ZZ$:ZZ$"Y"ZZ$"y"ĺ:90::15:958:: CLEAR SCREEN FROM CURSOR TO ENDF$(0)" ": 9 BLANKS (B), NO ASTERISKS (*)- TOTAL B'S + *'S MUST BE 9AF$(1)" *** ":3B,3*,3B bF$(2)" ***** ":2B,5*,2B F$(3)" ** ** ": 1B,2*,3B,2*,1BF$(4)" ******* ": 1B,7*,1BF$(5)" ** ** ": 1B,2*,2B,2*,2BF$(6)" ***** ": 1B,5*,3BF$(7)" ** ": 1B,2*,6B4F$(8)" ****** ": 1B,6*,2B[F$(9)" ** *** ": 1B,2*,2B,3*,1B}F$(10)" ** ": 4B,2*,3BF$(11)" ** ** ": 1B,2*,1B,2*,3B F$(12)" **** * ": 1B,4*,2B,1*,1BF$(13)" ** *** ": 1B,2*,1B,3*,2B F$(14)" **** ": 1B,4*,4B?*F$(15)" *** *** ": 1B,3*,1B,3*,1Bm4F$(16)" ** * ** ": 1B,2*,1B,1*,1B,2*,1B>F$(17)" *** ** ": 1B,3*,2B,2*,1BHF$(18)" **** ** ": 1B,4*,1B,2*,1BRF$(19)" ** **** ": 1B,2*,1B,4*,1B\F$(20)" * ": 7B,1*,1B)fF$(21)" ** ": 6B,2*,1BQpF$(22)" ** ** ": 2B,2*,1B,2*,2BszF$(23)" * ": 4B,1*,4BF$(24)" ** ": 5B,2*,2BF$(25)" ** ": 2B,2*,5BF$(26)" * * ": 3B,1*,2B,1*,2BF$(27)" * * ": 3B,1*,1B,1*,3B/F$(28)" ** * ": 2B,2*,3B,1*,1BWF$(29)" ** * ": 2B,2*,2B,1*,2ByF$(30)" * ": 5B,1*,3BF$(31)" * ": 3B,1*,5BF$(32)" * ** ": 2B,1*,2B,2*,2BF$(33)" * ** ": 1B,1*,3B,2*,2BF$(34)" * * ": 1B,1*,2B,1*,4B;F$(35)" * * ": 4B,1*,2B,1*,1BcF$(36)" * * ": 2B,1*,3B,1*,2BF$(37)" *** ": 2B,3*,4BF$(38)" ** * * ": 1B,2*,2B,1*,1B,1*,1BF$(39)" ** * ": 1B,2*,3B,1*,2B$F$(40)" **** ": 2B,4*,3B.F$(41)" *** ": 4B,3*,2BA8F$(42)" ** ": 3B,2*,4BoBF$(43)" * * * ": 1B,1*,2B,1*,2B,1*,1BLF$(44)" * * * ": 2B,1*,1B,1*,1B,1*,2BVF$(45)" ** * ": 1B,2*,4B,1*,1B`F$(46)" *** ": 5B,3*,1B jF$(47)" *** ": 1B,3*,5B1tF$(48)" * ** ": 1B,1*,2B,2*,3BS~F$(49)" * ": 1B,1*,7B{F$(50)" * * ": 1B,1*,5B,1*,1BF$(51)" * *** * ": 1B,1*,1B,3*,1B,1*,1BF$(52)" * * * * ": 1B,1*,1B,1*,1B,1*,1B,1*,1BF$(53)" * ***** ": 1B,1*,1B,5*,1B,: FIRST ENTRY BELOW IS SPACE BARH ,0,0,0,0,0,0,0,0,0,0f !,1,1,1,1,1,1,23,0,23,0 . APPEARS INSTEAD OF " .,26,22,0,0,0,0,0,0,0,0 #,0,27,27,4,27,4,27,27,0,0 $,23,4,34,34,4,35,35,4,23,0 %,0,28,29,30,23,31,32,33,0,0* &,2,36,22,1,37,38,39,38,40,0H  ',30,23,0,0,0,0,0,0,0,0m (,24,41,42,25,25,25,42,41,24,0 ),25,37,10,24,24,24,10,37,25,0( *,0,43,44,1,4,1,44,43,0,02 +,1,1,1,4,4,4,1,1,1,0< . APPEARS INSTEAD OF , F .,0,0,0,0,0,10,10,23,31,0'P -,0,0,0,2,0,0,0,0,0,0EZ .,0,0,0,0,0,0,10,10,0,0hd /,20,21,24,10,42,25,7,49,0,0n 0,2,4,3,3,3,3,3,4,2,0x 1,37,1,1,1,1,1,1,1,40,0 2,4,4,3,46,41,1,37,4,4,0 3,4,4,21,21,40,21,21,4,4,0 4,3,3,3,4,4,21,21,21,21,0  5,4,4,7,4,4,21,21,4,4,0< 6,4,4,7,7,4,4,3,4,4,0_ 7,4,4,33,24,10,10,42,42,42,0{ 8,2,4,3,4,1,4,3,4,2,0 9,2,4,3,4,4,21,21,4,4,0 . APPEARS INSTEAD OF : .,0,23,23,0,0,23,23,0,0,0 ;,0,23,23,0,0,23,23,31,0,0  <,21,46,41,1,37,1,41,46,21,06  =,0,0,2,0,0,2,0,0,0,0Y  >,25,37,1,41,46,41,1,37,25,0y  ?,4,4,3,46,41,1,42,0,42,0  @,4,50,51,52,52,52,53,49,4,0 " A,1,2,3,3,4,4,3,3,3,0 , B,4,3,3,5,6,5,3,3,4,0 6 C,8,8,7,7,7,7,7,4,4,0 !@ D,6,8,9,3,3,3,9,8,6,0(!J E,4,4,7,7,6,7,7,4,4,0D!T F,4,4,7,7,6,7,7,7,7,0`!^ G,4,4,7,7,7,9,3,4,4,0|!h H,3,3,3,4,4,3,3,3,3,0!r I,4,4,1,1,1,1,1,4,4,0!| J,4,4,10,10,10,11,11,6,6,0! K,3,9,13,6,14,6,13,9,3,0! L,7,7,7,7,7,7,7,4,4,0" M,3,15,4,16,16,3,3,3,3,02" N,3,17,18,4,19,9,3,3,3,0N" O,4,4,3,3,3,3,3,4,4,0j" P,4,4,3,4,4,7,7,7,7,0" Q,4,4,3,3,3,3,9,4,4,20" R,4,4,3,3,4,6,13,9,3,0" S,4,4,7,4,4,21,21,4,4,0" T,4,4,1,1,1,1,1,1,1,0" U,3,3,3,3,3,3,3,4,4,0# V,3,3,3,3,3,3,22,1,23,07# W,3,3,3,3,16,16,4,15,3,0V# X,3,15,2,1,23,1,2,15,3,0t# Y,3,15,22,1,1,1,1,1,1,0# Z,4,4,24,10,1,25,7,4,4,0 ******* 8/08/86 *******;* ProDOS STARTUP *X* BY OWL *u(* COPYRIGHT (C) 1987 *2* BY MINDCRAFT PUBL. *<* CONCORD, MA 01742 *F***********************P16384Z::D$(4):(21)d9703 n ********** GET HI-RES SCREEN AND SET DISPLAY SWITCHESd x11:3:"MINDCRAFT PRESENTS NIBBLE SOFTWARE" 15:13:"PLEASE WAIT..." D$"BRUN STARTUP.SCREEN" G(16297)(16300)(16301)(16304) ********** READ INFO FROM NIBMENU TEXTFILE 11201 P$(20): P$ = PROGRAM NAME _ S$(300):S$ = LINES OF TEXT INSTRUCTIONS RC$(20): RC$ = COMMAND USED TO RUN PROGRAM MP$(20): MP$ = PROGRAM NAME TO APPEAR IN MENU D$;"OPEN NIBMENU" D$;"READ NIBMENU" A$: A$ = DISK NAME= NA$"NIBBLE "A$:22:20((NA$)2):NA$:1h NP: NP = NUMBER OF PROGRAMS ON DISK~ I1NP:P$(I):I MM: MM = NUMBER OF VALID MENU ENTRIES "I1MM:MP$(I):RC$(I):I ,S$ 6I0 @II1:768,S$(I) J(S$(I),1,1)"#"350 T320! ^D$;"CLOSE"^ h(1101)6İ1080: ********** UPPER/LOWER CASE ROUTINE r ********** FIRST TEXT SCREEN |::3 "Thank you for ordering the Nibble":A$;"!": "The programs on this disk are:": Z1NP:5:P$(Z):Z 1030:FLAG$"ESC"ī600M  ********** CYCLE THRU NIBMENU TEXT SCREENSU A1^ :3 S$(A)"@"İ1030::3:((FLAG$"ESC"))490:600 S$(A)"#"510 S$(A) AA1:460  ********** LAST TEXT SCREEN BEFORE MENU :36:"Thanks again for your order !")12:R6:"ALL PROGRAMS ON THIS DISK ARE"{&6:"COPYRIGHT (C) 1990 BY NIBBLE"06:"MINDCRAFT PUBLISHING CORP."56:"52 DOMINO DR, CONCORD MA 01742"::17:5:"UNAUTHORIZED COPYING IS ILLEGAL"D1030$N ********** SET UP MENUJXMEMM2:X$(0)" ":X$(1)"-->":b1:1:"Selection: : Instructions"l3:"----------------------------------------";v5:20((A$)2):A$I1ME2:61I:8:I". "MP$(I):61(ME1):8:ME1". Catalog Disk"861ME:8:ME". Quit"l21:"----------------------------------------"23:1:"Type number or use arrows, then ";:PX10:SX4:SL1 ********** SELECT CHOICENSL:OSSL:780:Z0:24:868Y1:12:SL:49168,0:16384,128::Z$((16384)128):Z$"1"Z$(ME)SL(Z$):NOS:780:700Z(Z$(21)Z$(10))(Z$(8)Z$(11))10(Z$(13))20(Z$(27)):Z950Z20ī380SLSLZ(Z10):SLSLME(SLME)ME(SL1)NOS:780:Z107008002 ********** PRINT POINTER SUBROUTINEO 61N:SX:X$(SLOS);:r ********** SELECTION ROUTINE SL(ME1)İ860:600*SLMEİ900:SL1:780:68042:1:" "::2:1:RC$(SL): > ********** EXECUTE A VALID MENU CHOICE,H49168,0::1100:D$;RC$(SL)PR ********** CATALOG SELECTED m\:49168,0::D$;"CAT":f24:7:"Press to continue";p49168,0:49152,128:z ********** QUIT SELECTED22::958:"Do you really want to quit? (Y/N)";:49168,0(49168,0:49152,128Z(49152)249(49152)217Ĺ49168,0::1100:` ********** SOUND BUZZER FOR WRONG KEYSTROKE EQ110:EY(16336)(16336):EQ: ********** ERROR HANDLING ROUTINE:(1101)6ė:D$"PR#A$300"_(222)6(222)8Ģ19:(7);"Disk Error. Please insert Nibble disk":101019:(7);"An error #"(222)" has occurred. "23:"Press to continue ";:958:49168,0:49152,128:600  ********** WAIT FOR KEYSTROKEFLAG$""`23:" for next page or for menu";:49168,0:49152,128~(49152)155FLAG$"ESC"$. *********** ATTACH UPPER/LOWER CASE ROUTINE8I013:ML:768I,ML:I:D$"PR#A$300":B ********** DETACH UPPER/LOWER CASE HANDLER *L(4);"PR#0":ZV ********** INSTALL INPUT-ANYTHING ROUTINEu`X768839:A:X,A::j ********** INPUT-ANYTHING ROUTINE DATAt 32,190,222,32,227,223,36,17,208,5,162,163,76,18,212,133,133,132,134,165:~ 184,164,185,133,135,132,136,32,44,213,173,0,2,201,3,208,3,76,99,216 169,0,133,13,133,14,169,0,160,2,32,237,227,32,61,231,32,123,218,165 135,164,136,133,184,132,185,32,183,0,96,0 ********** UPPER/LOWER CASE ROUTINE DATA 216,201,225,144,6,201,251,176,2,233,31,76,240,253,0  c` ` v`` ` v` `ݥ``8 ``+p|~p|*U*U*U*U*U*S( @?p~px|xժժժժժRT* @?p~px|ЪժժժՊ dOE U @?`p~?pxԊԪ `|yg~0 cFc& U*U*U*@@ @%P*U*U*U*U*U }<_/" p@Pgp{?"dydw!<MժժժժժժdpO|`*U*U*U*U*U*p|~p|(U*U*U*U*U*S* @?p~px|ժժժժժ `AFT* @?p~px|xժժժՂ n_?E U @?`p~ppp}{c0 cFc&(U*UA*U*uԪժժժժՊ @ [ժժժժժժdpO|`*U*U*U*U*U*p|~p|(U*U*U*U*U*S* @?p~px|ժժժժժ `AFT* @?p~Ap||xժժժՂ N?p1 U4pysc'C&0.cFc&(U*U P*U* > @p{?" NԪժժժժժ@ [ժժժժժժdpO|`*U*U*U*U*U*p|~p|(U*U*U*U*U*R@* @?p~px|ժժժժժ pcFU* @?p~p|ժժժ _?@>|. U5x{w cY#8X03X0FC30%*U*U*U*U*U L @@ " NԪժժժժժtժժժժժժdpO|`*U*U*U*U*U*pp~p|(U*U*U*U*U*R@* @?p~px|Ԫժժժժ pcFU* @?`p~p|ժժժ ?~ GC@F- U5xsg`c00@` 80 arrow rts end ***************************************************************** * ShutDown start * * Shutdown tools sets: * ***************************************************************** using GlobalData PushWord #1 ;reference is handle PushLong SSRecFinal ;ref to final StartStop record _ShutDownTools ;----call ShutDownTools PushWord MasterID ;master ID _MMShutDown _TLShutDown rts end ***************************************************************** * FatalErr start * * Check for error and handle fatal error: * ***************************************************************** bcs FE01 ;error detected rts ;no error on carry clear FE01 pha ;error code in A reg PushLong #0 ;use default failure message _SysFailMgr ;die a horrible death end ***************************************************************** * InitDesktop start * * Initialize desktop: * ***************************************************************** PushLong #0 ;space for result PushWord #2 ;reference is resource PushLong #1 ;reference to menu bar PushLong #0 ;system menu bar _NewMenuBar2 ;create menu bar _SetSysBar ;set system bar (handle on stack) PushLong #0 ;use system menu bar _SetMenuBar ;set current menu bar PushLong #0 ;entire desktop _RefreshDesktop ;refresh desktop PushWord #1 ;ID of NDA menu _FixAppleMenu ;setup NDA menu pha ;space for result _FixMenuBar ;set standard size of menu bar pla ;discard menu height _DrawMenuBar ;display current menu bar rts end ***************************************************************** * InitApplic start * * Initialize application specific data: * ***************************************************************** using GlobalData stz QuitFlag ;clear quit flag stz WindFlag ;clear window flag rts end ***************************************************************** * EventLoop start * * Handle events: * ***************************************************************** using GlobalData jsr ChangeMenus ;dim/undim menu title/items anop ;scan events with TaskMaster pha ;space for result PushWord #$FFFF ;handle all events PushLong #TaskRecord ;ptr to extended task record _TaskMaster ;get the event pla ;get result anop ;handle event asl a ;create index into 2-byte tax ; entries of task table jsr (TaskTable,x) ;call event handler anop ;check for quit signal lda QuitFlag bpl EventLoop ;Quit not chosen rts ;................................................................ ; ; EventLoop data: ; TaskTable anop ;GetNextEvent event handlers: dc i2'DoRTS' ; 0 = nullEvt dc i2'DoRTS' ; 1 = mouseDownEvt dc i2'DoRTS' ; 2 = mouseUpEvt dc i2'DoRTS' ; 3 = keyDownEvt dc i2'DoRTS' ; 4 = undefined dc i2'DoRTS' ; 5 = autoKeyEvt dc i2'DoRTS' ; 6 = updateEvt dc i2'DoRTS' ; 7 = undefined dc i2'DoRTS' ; 8 = activateEvt dc i2'DoRTS' ; 9 = switchEvt dc i2'DoRTS' ;10 = deskAccEvt dc i2'DoRTS' ;11 = driverEvt dc i2'DoRTS' ;12 = app1Evt dc i2'DoRTS' ;13 = app2Evt dc i2'DoRTS' ;14 = app3Evt dc i2'DoRTS' ;15 = app4Evt anop ;TaskMaster event handlers: dc i2'DoRTS' ;16 = wInDesktop dc i2'DoMenu' ;17 = wInMenuBar dc i2'DoRTS' ;18 = wClickCalled dc i2'DoRTS' ;19 = wInContent dc i2'DoRTS' ;20 = wInDrag dc i2'DoRTS' ;21 = wInGrow dc i2'DoClose' ;22 = wInGoAway dc i2'DoRTS' ;23 = wInZoom dc i2'DoRTS' ;24 = wInInfo dc i2'DoMenu' ;25 = wInSpecial dc i2'DoRTS' ;26 = wInDeskItem dc i2'DoRTS' ;27 = wInFrame dc i2'DoRTS' ;28 = wInactMenu dc i2'DoRTS' ;29 = wClosedNDA dc i2'DoRTS' ;30 = wCalledSysEdit dc i2'DoRTS' ;31 = wTrackZoom dc i2'DoRTS' ;32 = wHitFrame dc i2'DoRTS' ;33 = wInControl dc i2'DoRTS' ;34 = wInControlMenu end ***************************************************************** * DoMenu start * * Handle menu events (menu items must be numbered sequentially): * ***************************************************************** using GlobalData sec lda TaskData ;get menu item ID sbc #250 ;convert N250 into 0th item asl a ;create index into 2-byte tax ; entries of menu item table jsr (ItemTable,x) ;call menu item handler PushWord #0 ;TRUE=hilite, FALSE=unhilite PushWord TaskData+2 ;menu ID _HiliteMenu ;unhighlight menu rts ;................................................................ ; ; DoMenu data: ; ItemTable anop ;menu item handlers dc i2'DoRTS' ;250 = Undo dc i2'DoRTS' ;251 = Cut dc i2'DoRTS' ;252 = Copy dc i2'DoRTS' ;253 = Paste dc i2'DoRTS' ;254 = Clear dc i2'DoClose' ;255 = Close dc i2'DoAbout' ;256 = About... dc i2'DoQuit' ;257 = Quit dc i2'DoNew' ;258 = New dc i2'DoOpen' ;259 = Open dc i2'DoRTS' ;260 = Save... dc i2'DoRTS' ;261 = Page Setup... dc i2'DoRTS' ;262 = Print... end ***************************************************************** * ShutApplic start * * Deallocate memory before shutting down tool sets: * ***************************************************************** using GlobalData rts end ***************************************************************** * DoRTS start * * Ignore an event: * ***************************************************************** rts end ***************************************************************** * DoQuit start * * Turn on quit flag to terminate this application: * ***************************************************************** using GlobalData lda #$8000 sta QuitFlag ;set quit flag rts end ***************************************************************** * DoClose start * * Close front window: * ***************************************************************** using GlobalData PushLong #0 ;space for result _FrontWindow ;get ptr to front window PullLong FrontWinPtr ;save ptr lda FrontWinPtr ;check for open window ora FrontWinPtr+2 beq Done ;no window open PushLong FrontWinPtr ;ptr to front window _CloseNDAbyWinPtr ;close NDA window bcc Done ;NDA window closed anop ;application window in front PushLong #0 ;get menu item ID in wRefCon PushLong FrontWinPtr _GetWRefCon plx ;ID in lo pla ;discard hi phx ;enable menu item _EnableMItem PushLong FrontWinPtr ;ptr to front window _CloseWindow ;close application window Done rts end ***************************************************************** * DoAbout start * * Handle About item in Apple menu (display title and credits): * ***************************************************************** pha ;space for result PushWord #5 ;ref is resource, P-string PushLong #0 ;no substitution array PushLong #$07FE0001 ;reference to alert string _AlertWindow ;display alert window pla ;discard button ID (OK) rts end ***************************************************************** * DoNew start * * Open new TextEdit window: * ***************************************************************** using GlobalData PushLong #0 ;space for result PushLong #0 ;ptr to replacement title PushLong TaskData ;repl refCon (New item ID) PushLong #DrawNew ;ptr to repl content drawing PushLong #0 ;ptr to repl window defProc PushWord #2 ;ref is resource PushLong #$1001 ;ref to window template PushWord #$800E ;type 1 (stnd) window template _NewWindow2 jsr LocalError ;check nonfatal error PullLong NewWindPtr ;ptr to window GrafPort bcs Done ;error PushWord TaskData ;dim New item in File menu _DisableMItem Done rts end ***************************************************************** * DoOpen start * * Open preset TextEdit window: * ***************************************************************** using GlobalData PushLong #0 ;space for result PushLong #0 ;ptr to replacement title PushLong TaskData ;repl refCon (Open item ID) PushLong #DrawOpen ;ptr to repl content drawing PushLong #0 ;ptr to repl window defProc PushWord #2 ;ref is resource PushLong #$1101 ;ref to window template PushWord #$800E ;type 1 (stnd) window template _NewWindow2 jsr LocalError ;check nonfatal error PullLong OpenWindPtr ;ptr to window GrafPort bcs Done ;error PushWord TaskData ;dim New item in File menu _DisableMItem Done rts end ***************************************************************** * DrawNew start * * Draw content region of New window (called by TaskMaster): * ***************************************************************** using GlobalData PushLong NewWindPtr ;ptr to New window _DrawControls rtl end ***************************************************************** * DrawOpen start * * Draw content region of Open window (called by TaskMaster): * ***************************************************************** using GlobalData PushLong OpenWindPtr ;ptr to New window _DrawControls rtl end ***************************************************************** * ChangeMenus start * * Enable or disable menu titles and items during null events: * ***************************************************************** using GlobalData PushLong #0 ;space for result _FrontWindow ;get ptr to front window PullLong FrontWinPtr ;save ptr ldx #$8000 ;assume open window lda FrontWinPtr ;check for open window ora FrontWinPtr+2 bne CheckFlag ;open window found ldx #0 ;no open window CheckFlag cpx WindFlag bne ChangeFlag ;flag changed rts ;flag unchanged so exit ChangeFlag stx WindFlag ;set new flag lda WindFlag ;check for open window bpl NoWind ;no window open anop ;window open so enable specials PushWord #250 ;Undo _EnableMItem PushWord #251 ;Cut _EnableMItem PushWord #252 ;Copy _EnableMItem PushWord #253 ;Paste _EnableMItem PushWord #254 ;Clear _EnableMItem PushWord #255 ;Close _EnableMItem PushWord #$FF7F ;flags: enable menu PushWord #3 ;Edit menu number _SetMenuFlag ;enable Edit menu title bra Done NoWind anop ;no window open so dim specials PushWord #255 ;Close _DisableMItem PushWord #$80 ;flags: diaable menu PushWord #3 ;Edit menu number _SetMenuFlag ;dim Edit menu title and items Done _DrawMenuBar ;display current menu bar rts end **************************************************************** * LocalError start * * Handle nonfatal errors: entry A = error code * **************************************************************** using GlobalData bcc Done ;no error tax ;save error code pha ;space for result PushWord #0 ;type of substitution string PushLong #0 ;ptr to substitution string phx ;error code _ErrorWindow ;display error window pla ;discard button number sec ;return with error signal Done rts end ***************************************************************** * GlobalData data * * Global program data: * ***************************************************************** MasterID ds 2 ;our master memory ID SSRecFinal ds 4 ;ptr to final StartStop record FrontWinPtr ds 4 ;ptr to front window in Close item NewWindPtr ds 4 ;ptr to New window GrafPort OpenWindPtr ds 4 ;ptr to Open window GrafPort QuitFlag ds 2 ;quit=MI, no quit=PL WindFlag ds 2 ;open window=MI, no window=PL TaskRecord anop ;new extended task record What ds 2 ;event code Message ds 4 ;event message When ds 4 ;ticks since startup Where ds 4 ;global position of mouse Modifiers ds 2 ;state of modifier keys TaskData ds 4 ;extended event data TaskMask dc i4'$1FFFFF' ;bit flag (handle all events) LastClkTick ds 4 ;tick value at last click ClickCount ds 2 ;type of last click TaskData2 ds 4 ;additional data TaskData3 ds 4 ;additional data TaskData4 ds 4 ;additional data LastClickY ds 2 ;vertical axis of last click LastClickX ds 2 ;horizontal axis of last click end  ,@ K  c") "H" h}}H" hh"`HH"}H""``H"C""9"9""H"h*"`` H"h `^^8 yH,"`^```"hh ?HH".HH)"hڢ0"ᭅHH "`HY"h`HHa" ehh H1"`HHa" ehh H1"`HH"kHH"k"hh `K0"0"0"0"0"0""1""*"`Hڢb"h8`   c04}=}QUYgkv} "$&(*,.02468:^<>@BDFHJ^LNPRTVXZ\`hyny{}^#'*FeJNSkosve  2 ,@ K  c") "H" h}}H" hh"`HH"}H""``H"C""9"9""H"h*"`` H"h `^^8 yH,"`^```"hh ?HH".HH)"hڢ0"ᭅHH "`HY"h`HHa" ehh H1"`HHa" ehh H1"`HH"kHH"k"hh `K0"0"0"0"0"0""1""*"`Hڢb"h8`   c04}=}QUYgkv} "$&(*,.02468:^<>@BDFHJ^LNPRTVXZ\`hyny{}^#'*FeJNSkosvet7- 2 @!@ u +   B T g {     00%070J0^  2 "   4  F  Y  m         0 0 0) 0< 0PP%P N`d\! 2    "@@About Text Editor...          File Nn NewOo OpenWw CloseSs Save..., -  Page Setup...Pp Print...Qq Quit00000 Edit Zz0UndoXx0CutCc0CopyVv0Paste0Clear0<0/JS Text EditorS by Sandy Mossberg (c)1990 by MindCraft Publ. Corp./^#0P((,  Untitled PF@X! Heinlein | B| B! The two highest achievements of the human mind are the twin concepts of "loyalty" and "duty." Whenever these twin concepts fall into disrepute - get out of there fast! You may possibly save yourself, but it is too late to save the society. It is doomed. In a mature society, "civil servant" is semantically equivalent to "civil master." What are the facts? Again and again and again - what are the facts? Shun wishful thinking, ignore divine revelation, forget "what the stars foretell," avoid opinion, care not what the neighbors think, never mind the unguessable "verdict of history" - what are the facts, and to how many decimal places? You pilot always into an unknown future; facts are your single clue. Get the facts! A motion to adjourn is always in order. You can have peace. Or you can have freedom. Don't ever count on having both at one time. Anyone who cannot cope with mathematics is not fully human. At best he is a tolerable subhuman who has learned to wear shoes, bathe, and not make messes in the house. Never underestimate the power of human stupidity. Writing is not necessarily something to be ashamed of - but do it in private and wash your hands afterwards. TANSTAAFL. [There ain't no such thing as a free lunch.] --Excerpts from the notebook of Lazerus Long --Robert A. HeinleinbT768785:A:T,A::(21):3:PI4(1)::T02PIPI30:140,96140140(T),9696(T)::TPI602PIPI30:140,96140140(T),9696(T)::768::173,84,192,173,0,192,201,127,16,7,234,173,85,192,76,0,3,96