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}' (.APPLE.KEYPRESS77,BASIC.SYSTEM (*+BIT.ASSEMBLER77BIT.BREAKER 77'CHECKIT! -ϲ COLOR.SET)77DETECTOR*"E68)DIR.SAVER+3 ))DISK.TEXTF77-EIGHTY.COLUMNI77FINDQUOTE.D1L 9&9&FINDQUOTE.D2M9*9+FINDQUOTE.OBJNp9&9&+FINDQUOTE.SO99)9)FLASHERSZED*IIGS.COLORTi77-IIGS.KEYPRESSX77-IMAGEII.COLOR\M77IMAGESELF.ID_p77INTERRUPT`77KEYPRESSa77LARGEST.FINDb77LORES.LOADcu77,MOUSE.BUTTONd77MOUSE.FINDg@77'NEWTEXTh77'NIBMENUk Y:Y:PRINT.READYr677&PRODOSs }<ͰͰ)PRODOS.ID77&ROM.IDH77SLOT5.BOOT77SMALLEST.FIND77-SPEED.CONTROLK77'STARTUP }-Ӷ).STARTUP.SCREEN - . STRING.CENTER77TEST.FILE77'TESTPIC77TEXT.FILER77  PROGRAM APPLE.KEYPRESSL READ OPEN/CLOSED APPLE KEYPRESS ROUTINEh WORKS ON IIE/IIC/IIGS(:"PRESS OPEN/CLOSED APPLE WITH A KEY":2K(49152):K12850< READ KEYBOARD LOCATION F VALUE WILL BE <128 WHEN NO KEY HAS BEEN PRESSEDE P PRESSED KEY VALUE WILL BE ASCII VALUE + 128..HIGH BIT IS SETa ZA1(49249):A2(49250)| d BUTTON/KEY LOCATIONS n49168,0: CLEAR KEY BOARD STROBE x(K128)32160 "THE KEY PRESSED WAS ";:A1127ĺ"OPEN APPLE "; A2127ĺ"CLOSED APPLE ";4 (K128):: HANDLE NORMAL CHARACTERSn "THE KEY PRESSED WAS CTRL ";:A1127ĺ"OPEN APPLE "; A2127ĺ"CLOSED APPLE "; ((K128)64): HANDLE CONTROL KEYSTOKES LG ASTARTUP$#   / XXύX?klmnÍoL) "6L'?"(0`6708" = ***)<JJH !h穖tp% ;"Z/݀>">"' 1" 7"5).莀/ ;" " 6" >" 1"6"$ "g"" !"""""IzLYL 8!9 詍` "  4"/pŠϠŠà͠ӠàԠŠH06172839h` v97L75v^a ?/( va?LLLɍ$?`?a ɍɥAH93827160hH46576879h`,C bL ɍ b w,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 E$݅3`(l8L3LX>(Ƀ,`3,G0]ɾ g` H`پ_پ p _پ׾`>( p۾m׾) W)ʩ@`ɾ>(O puȾ ɾ-O ]c־Jjjj `O>0O l POپھ p H־Ǿh۰8L־Jjjjɾ)Ⱦ8 ѱ OLӜ ĤLLX>(F`־ؾپھ׾` bɄ KDEF vLl v lL bKɍKL?` w  vLl@3 @LtJ)s@J b  l`a?sa?,E30ɍФ3 E3HD F3 Ʉ%h3 bM E  lLthɍLL3`3,A0s0% Ipn DpnI:L ؅303L8933LΞAAJL ةޘг uv $ 8LƞaЌ>?@`>?@`B8` K  춼LK ҟ ҟ ( KK`HJJJJ8`HK)` #hhLJپھ pHJh` D!hgt}~p `~t}p8n~ni}tpi~~tso8pinii>j?k̈́>~|p|Ii||̈́ l - `>i>?Ek?!>Q>>>̀ `` \> ̀ `e>>?́?>?Emn(>e>ȱ>e?>Q>ؠ> ie>>?`|;}=:<~:<=;`||m};>:8o>oȑ>ppȑ>> :op`G DKpnG @p;G=po:i>?Ek?>Q>> L> \/ e>>?́?ޱ>ȥj>>m>` _m8injkiljo풼S 鸍긍$I2 U)VJ зT)`l8`a HbIJhjǾȾɾ p٭b=aIe f`8` P־ǾҾ,G0C f=W)_``\"׾پӾؾھ pD`־ǾY׾ؾOW)ݩȾɾʾ pD`8`W)CB) 5W) =)W)@! pZ}ȾȾ󰹩 p` ־ǾҾ,G 8`׾ؾ f p vۥs׾tؾE`  ( 8о(־Ǿ,G 8`_`W)H־Jjjjh p̭ fLᶢǾ ת..8 ۭ (8mȾȾmɾɾʾiʾ` Lpl8l:/,s̝sƬƀ#(ZZV4G_0=( A P FjL\5p-e9ABSAVERIFYBLOADELETEBYECATALOGOPENWRITEXECREATEFRESTORENAMEBRUNLOCKCHAIN#FLUSHREADPOSITIONOMONPR#PREFIXCLOSEAPPEND6D(!쫂8ֵ#ح#׮2}q :IC@@ -!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~TLLwLLL) `8` ԠŬLL PROGRAM BIT.ASSEMBLERX THIS ROUTINE BREAKS A NUMBER UP INTO THE BINARY BITSx AND THEM REASSEMBLES THEM( IT IS USED TO CHANGE INDIVIDUAL BITS OF A BINARY NUMBER2:"INPUT A NUMBER ";:N<N0N255ė:50FBT07; PD(BT)(N(N2)2)::"BIT ";BT;" IS ";D(BT): TAKE EACH BIT VALUEW ZN(N2): REDUCE VALUE] d n REASSEMBLE THE BITS INTO DECIMAL VALUE xVD(0)2D(1)4D(2)8D(3)16D(4)32D(5)64D(6)128D(7) :"THE VALUE ENTERED WAS ";V  PROGRAM BIT.BREAKERV THIS ROUTINE BREAKS A NUMBER UP INTO THE BINARY BITSr:"INPUT A NUMBER";:N(N0N255ė:302BT07<V(N(N2)2)::"BIT ";BT;" IS ";V: TAKE EACH BIT VALUEFN(N2): REDUCE VALUEPZ30"#$%&'(. ********** 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  PROGRAM COLOR.SET> CHANGE HIRES SCREEN TO A COLORY: CHOOSE PAGE 1 OR 2z(5: ORANGE..COLOR RANGE 0-720,0: PLOT A DOT<3082: JUMP TO ROM ENTRY POINTF :X40964148:A:X,A:X:4096:T(4149):T0ĺ"No Transwarp":56,32,31,254,176,23,156,53,16,175,0,255,188,201,84,208,11,175,1,255,188,201,87,208,3,238,53,16,96,162 T1ĺ"Transwarp Exists": 0,189,45,16,157,133,4,232,224,8,208,245,130,253,255,206,239,244,160,225,160,199,211 ,-./0123456789:;<=>?@ABCDE ************************=* DIRECTORY SAVER *[* by Charles T. Hill *y(* Copyright (c) 1991 *2* Mindcraft Publ. Corp *<* Lincoln, MA 01773 *F************************P:Z INITIALIZE VARIABLES d4180& nPD0:(48640)76PD1: PRODOS [ xD$(4):D$;"PR#3":HT1403:W79:WB79:TC9:DL20 FI$(100),W$(20),DI$(105):PD0TC3:WB29:DL18 LB$" NAME TYPE BLOCKS MODIFIED": SPACES 1,11,2,2# LB$LB$" TIME CREATED TIME ENDFILE SUBTYPE": SPACES 3,2,4,2,1 g LD$" NAME T BLK": SPACES 1,27,1 AD$(1)"AW20-DB":AD$(2)"AWGS-DB":AD$(3)"TEXT" WP(1)16:WP(2)20:WP(3)28:WP(4)39:WP(5)45 WP(6)56:WP(7)62:WP(8)71:WP(9)79 WD(1)31:WD(2)33:WD(3)37 :) GREETING4 ::3P 32);"DIRECTORY SAVER"q 31);"by Charles T. Hill": 31);"Copyright (C) 1991" 27);"Mindcraft Publishing Corp." 31);"Lincoln, MA 01773" ": ,15);"Directory Saver saves directories as ASCII files,"U 615);"optionally formatted to load into a database" @15);"in Appleworks 2.0 or 3.0 or in Appleworks GS." J T15);"Use letters or up-down arrows to change lines," ^15);"right-left arrows for next or previous page."I h15);"RETURN selects subdirectory, ESC backs up or exits." r15);"TAB changes width, CTRL-S saves directory." |: :  INPUT PREFIX LA$"": RESET LABELS TO INDICATE DIR NOT READ FOR RESTARTPD01940: DOS 3.3 disk5SV0: RESET FLAG FOR WRITING PRODOS DIRECTORY[:8);"PREFIX OR SLOT NUMBER: ";vIS1:1310: GET LINEGL$""GL$(27)1880: CHECK FOR ENDPS$GL$:SN(PS$)(SN1SN7)P$PS$:540: not a slot :17);"DRIVE NUMBER: ";IS0:1310: GET LINEBGL$(27)1880: CHECK FOR ENDNPD$GL$P$",S"PS$",D"PD$: CONSTRUCT PATH USING SLOT,DRIVE D$;"PREFIX";P$: ENTER PATH&D$;"PREFIX":P$: RETRIEVE FULL PREFIX 0P$(P$,(P$)1): strip trailing slash ::*D OPEN DIRECTORYQNPD0TF0:2540: DOS3.3 DISKX23:HT,79:: AVOID BLANK LINE ABOVE bEOD0:FS0:PG0lX(0): CLEAR MEMORY OF OLD VALUES OF CHANGED STRINGS vD$;"CLOSE";P$D$;"OPEN ";P$;",TDIR"D$;"READ";P$:FS1730@A$:LA$:A$: READ HEADER ]FS0āI1FS:A$::730c: READ DIRECTORY FILESPD02540: DOS3.3 DISKEOD1ī850: NO MORE FILES TO DISPLAY PGPG1:23:HT,79:: AVOID BLANK LINE ABOVE$J1DL: NUMBER OF DISPLAY LINESAFI$(J): READ FILEINFOaSV0Ģ23:HT,75::FSJ;:1660: CHECK FOR ESCAPEFI$(J)""Ą"";ST$:EOD1:790: END OF DIR NLJ1: NUMBER OF LINES READ SV0Ģ23:HT,75::FSNL;" ";:*OI1: RESET DISPLAY LINE@4SV03570: WRITE DIRECTORY F>:dH SELECT DIRECTORY ENTRY~R:P$::2:1);LB$:\LW$(LB$,WB):2:HT,0:1);LW$: PRODOS fLS$(LD$,W):PD0Ģ4:1);LS$: DOS3.3pI1NL:1110::1190:IOI:1100zPD1EOD1ĢNL3:NL20ĺ3PD1EOD1ĺST$]1:HT,68:"PAGE ";PG;:HT,77:"-->";zEOD1Ģ1:HT,77:"<--";1240:K13KI:1540: RETURNK92630: AT TABK19SV1:2690: CTRL-SK1SV2:2690: CTRL-AK8İ1110:590: LEFT 2K11İ1110:II1: UPRK21İ1110:700: RIGHT rK10İ1110:II1: DOWN K271710: ESC -- RESTARTK96K123KK32: SMALL LETTERSK64K85İ1110:IK64: LETTERS A-T INLINLI1I1 $OII.1100:930"8:AB DISPLAY DIRECTORY FILESGL|VVI2:PD0VI4: MAKE ROOM FOR DOS3.3 LABELS`WI$(FI$(I),W)jV:HT,1:WI$;:t:VAI64~V:HT,0:(VA);:: DISPLAY INSTRUCTIONS23:HT,0::2);"DIRECTORY SAVER:";F2);"TAB";2);"CTRL-S";2);"CTRL-A ";LR:o GET KEY FROM KEYBOARDK(49152):K1281240KK128:49168,0:: CLEAR LINE24:HT,0:79);: : GET LINE FROM KEYBOARDV(37)1:H30(GL$""'21240: GET KEY=<K13ı: RETURNKFLL(GL$)kPK271490: ESC -- BACKUPZK8K1271430: NOT LEFTdLLLL1: LEFTnLL0GL$(GL$,LL)xLL0GL$""V:HT,HLL1:" "; 1330: GET ANOTHER CHARACTER 3LL401330: LIMIT 40 CHARACTERS YIS0K47K58GL$GL$(K): #IS1K31GL$GL$(K): STRINGV:HT,HLL1(GL$)LLĺ(K);1330: GET NEXT CHARACTER LL0ĢV:HT,H:LL1):1320GL$(27): escape when blank:1 CHECK FILETYPE YNM$(FI$(I),2,16): GET FILENAME J115: TO STRIP TRAILING BLANKS(NM$,1)" "NM$(NM$,(NM$)1)"J,FT$(FI$(I),18,3): get file type 6FT$"DIR"P$P$"/"NM$:1850: READ NEW DIR@24:HT,0:FJ"Not a subdirectory. Press any key";RT:1240a^1280:930gh:r CHECK FOR ESCAPE|E(49152):EE128:49168,0E27ġ:1710: ESCAPE: RESTART23:HT,78:D$: FOR DOS3.3 D$;"CLOSE":12807LA$""1880: DIRECTORY NOT READ lSV0:PD1DL20: RESET FOR READING PRODOS DIRz24:HT,0:"DISPLAY PREVIOUS DIRECTORY? ";:1240:K78K110K27İ1280:1880K89K121K1317501280:PD0TF0:2540: CLEAR; DOS 3.3 $NP$P$WNP$(NP$,(NP$)1): STRIP SUBDIRECTORY NAMEo(NP$,1)"/"1810&(NP$)11850: WAS ROOT DIRECTORY0P$(NP$,(NP$)1): STRIP TRAILING SLASH:23:HT,0:80);D23:HT,0::"READING DIRECTORY ";P$;$N:540: RESET PREFIX HXHT,0:24::"RESTART? ";:gb:1240:K78K110K27ĀlK89K121K131880v230: GREETING : INPUT DOS3.3 DISK NAME:8);"NAME FOR DOS3.3 DISK: ";IS1:1310:P$GL$: GET LINE9P$""P$(27)1880: CHECK FOR END?:Y CHECK DOS3.3 DRIVEiDR(43624)oHT,8:"INSERT DISK IN DRIVE 1";" AND PRESS ANY KEY ";1240: GET KEY: K271880: CHECK FOR END" DR1ĺD$:D$;"VERIFY HELLO,D1": CHANGE DRIVEJ HT,8:"READING DOS3.3 DIRECTORY":P *:} 4 LOAD DOSCAT MACHINE LANGUAGE ROUTINES > HA$,B$:I149 RA16((A$,I))((B$,I))816 \767I,A::P47080 fI15:A,B:PA,B:$!p "2>02=062>=8888:::1831;0>:=0<:??<2790=>:0:02>>29=6"_!z "033093003?5546210=8011001059003:9?100<50410930::0"! 3,0,4,17,8,187,9,180,12,1!:! READ DOS3.3 DIRECTORY INFORMATION!A(0):K1:P47080:NL0!S115:P5,16S:768"J06:I46281J35:T(I3)5"T0KK1:2480: END OF DIRECTORY U"T2552470: DELETED FILEp"1,I256:0,I256(1)"775C$: GET FILENAME"TL(I1): GET FILETYPE AND LOCK BIT "LK$" ":TL127LK$"*": LOCK BIT#TL127TLTL128: STRIP LOCK BIT*# FT$" ":TL0FT$"T": TEXTG# TL1FT$"I": INTEGERf# TL2FT$"A": APPLESOFT#$ TL4FT$"B": BINARY#. TL8FT$"S": TYPE S FILE#8 TL16FT$"R": RELOCATABLE FILE#B TL32FT$"A": TYPE A FILE$L TL64FT$"B": TYPE B FILE0$V FL(I30): GET FILE LENGTHQ$` L$(FL):(L$)1L$"00"L$y$j (L$)2L$"0"L$: RIGHT JUSTIFY$t SP30(C$): FILL-IN SPACES FOR FILENAME$~ DI$(K)LK$C$:M1SP1:DI$(K)DI$(K)" ":M% DI$(K)DI$(K)FT$" "L$: PRODOS ORDERG% LK$ + FT$ + " " + L$ + " " + C$ IS STANDARD DOS3.3 FORMATQ% KK1Y% :% NDK: NUMBER OF FILES IN DIRECTORY% X(0): CLEAR OLD STRINGS FROM MEMORY% TF0: RESET TRANSFER COUNTER% LA$"Y": RESET FLAG FOR RESTART% :*& TRANSFER DOS3.3 DIRECTORY INFORMATIONN& TFND850: NO MORE FILES c& TF0EOD0:PG0& PGPG1:NLDL:(NDTF)DLNLNDTF& J1NL& TFTF1:FI$(J)DI$(TF)& J:TFNDEOD1&( OI1:850: SELECT DIRECTORY FILE&2 :'< ROUTINE TO CHANGE WIDTH OF DISPLAY4'F TCTC1:TC10TC1\'P WBWP(TC):WWP(TC): PRODOS LABELS'Z PD0WWD(TC):TC3W37: DOS3.3'd 850: SELECT DIRECTORY ENTRY'n :'x OPEN OUTPUT FILE' 23:HT,79:D$: FOR DOS3.3 ' D$;"CLOSE"( 24:HT,0 ( SV1ĺ"SAVE FILE ";;( SV2ĺ"APPEND FILE ";T( PD1ĺ"PATHNAME: ";o( PD0ĺ"NAME [,D2]: ";( IS1:1310:PW$GL$: GET LINE( GL$""GL$(27)İ1280:930( 23:HT,40:"OPENING FILE") VF1:D$;"VERIFY";PW$:VF0: IF ERROR=6 THEN DOESN'T EXIST@) SV22910: OK IF EXISTS FOR APPEND T) 1280:24:HT,0) "FILE ";PW$;" ALREADY EXISTS. DELETE IT? ";) 1240:23:HT,78:D$: PRINT FOR DOS3.3) K121K89ĺD$;"DELETE";PW$:2910*" K78K110K27K132830&*, 1280:2710: GET NEW PATHNAME U*6 SV12910: OK IF DOESN'T EXIST FOR SAVEi*@ 1280:24:HT,0*J "FILE ";PW$;" DOES NOT EXIST -- PRESS ANY KEY";*T 1240:1280:2710: GET NEW PATHNAME*^ 23:HT,78:D$: FOR DOS3.3*h D$;"OPEN";PW$+r CM$"": FOR STRIPPING [,D2]B+| (PW$)3CM$(PW$,(PW$)2,1)e+ CM$(44)PW$(PW$,(PW$)3)+ SV23080: READ FORMAT FOR APPEND+ :+ GET FORMAT FOR SAVE+ 1280:24:HT,0+ "FORMAT: [1] AW20-DB [2] AWGS-DB [3] TEXT <1>? ";, 1240:K49K13DB1:3510C, K50DB2:3510: WRITE OUTPUTh, K51DB3:3510: WRITE OUTPUT}, K27İ1280:930, 2990: INCORRECT CHOICE, :, READ FORMAT FOR APPEND, D$;"READ";PW$, NI0:NR0:NN$""- RA1: IF ERROR 5 THEN CHECK IF NR>00-& C$:C$(47)C$(44)3160D-0 1280:24:HT,0w-: PW$;" HAS INCORRECT FORMAT -- PRESS ANY KEY";-D 23:HT,78:D$: FOR DOS3.3-N D$;"CLOSE":1240:1280:2710-X C$: SKIP DIR NAME-b C$(9)C$(13)3160.l C$: FOR FIELDS".v C$(47)C$(44)3280G. NR113120: TOO MANY FIELDS p. C$(9)NINI1:3180: COUNT TABS. C$(13)3260: CARRIAGE RETURN. NN$NN$C$: STORE FILENAME . NN$" NAME"3300: TEXT LABEL. 3180: READ MORE OF FIELDS./ NI0AFNI2:AD2:3390: AWGS FORMAT Q/ NRNR1:3180: COUNT RETURNS/ NR0AFNR1:AD1:3390: AW20 FORMAT / 3120: NO FIELDS / C$: FOR LABELS/ C$(13)3330/ NN$NN$C$:3300: STORE LABELS/ PD033600 I19:(NN$)WP(I)AFI1:3380D0 :3120: WRONG LENGTH IN PRODOS j0 I13:(NN$)WD(I)AFI1:33800* :3120: WRONG LENGTH IN DOS3.3 04 AD3: TEXT FORMAT0> 23:HT,0:D$: FOR DOS3.30H RA0:D$"CLOSE";PW$0R 1280:24:HT,0-1\ "USE ";AF;" FIELDS IN ";AD$(AD);" FORMAT ? ";Y1f 1240:23:HT,78:D$: PRINT FOR DOS3.3y1p K78K110K27İ1280:8501z K89K121K1334301 DBAD:TCAF1:DB3TCAF2: SET FORMAT1 WBWP(TC):WWP(TC):PD0WWD(TC):TC3W37!2 D$;"APPEND";PW$:D$: DON'T WRITE YET'2 :@2 WRITE OUTPUT FILEU2 23:HT,0::80)o2 NFTC1:DB3NFTC2y2 12802 23:HT,0:2 "WRITING FILE ";PW$;" IN FORMAT ";DB;:2 PD1DL100:610: OPEN DIRECTORY 3 1660: CHECK FOR ESCAPE3 D$:D$;"WRITE";PW$H3PD0NLND: DOS3.3 HAS ALL IN MEMORY j3DB33720: DATABASE FORMAT3FS0SV2ĺ:: BLANKS BETWEEN DIR3$FS0PD0ĺ(44);: COMMA FOR DOS3.33.FS0ĺP$:38FS0PD1ĺ(LB$,W):4BFS0PD0ĺ(LD$,W):: DOS3.3 #4LI1NL:1660D4VPD1WI$FI$(I): PRODOS c4`PD0WI$DI$(I): DOS3.3~4j(WI$)WWI$(WI$,W)4tWI$:4~40904SC$(13):DB2SC$(9): AW20 VS.AWGS4I1NL:16604PD038804WI$FI$(I): PRODOS5(WI$)WWI$(WI$,W)(5WK$(WI$,1,1)<5WN$(WI$,2,15)P5WT$(WI$,18,3)d5WB$(WI$,22,7)x5WM$(WI$,31,9)5WH$(WI$,41,5)5WC$(WI$,48,9)5WR$(WI$,58,5)5 WE$(WI$,64,8)5WS$(WI$,73,7)539605(WI$DI$(I): DOS3.362(WI$)WWI$(WI$,W)-6<WK$(WI$,1,1)A6FWN$(WI$,2,30)U6PWT$(WI$,33,1)|6ZWB$" "(WI$,35,3): 4 SPACES6dWM$"":WH$"":WC$"":WR$"":WE$"":WS$""6nPD0ĺ(44);: COMMA FOR DOS3.36xP$;6SC$;WK$;6SC$;WN$; 7TC1ĺSC$;WT$;7TC2ĺSC$;WB$;17TC3ĺSC$;WM$;E7TC4ĺSC$;WH$;Y7TC5ĺSC$;WC$;m7TC6ĺSC$;WR$;7TC7ĺSC$;WE$;7TC8ĺSC$;WS$;777PD1EOD0FSFSNL:620: READ MORE 7PD1DB3ĺ:ST$: DIR STATISTICS8D$: EXTRA FOR DOS3.3%8D$;"CLOSE";PW$:8"IOI:23:HT,0:p8,NF;" FIELDS WRITTEN IN FORMAT ";DB;" ON ";PW$;:861280:1710: RESTART8@:8J ERROR ROUTINE8TEN(222): GET ERROR NUMBER 8^EL(219)256(218): GET LINE 9h216,0: RESET ERROR TRAPPING "9r4180U9|EN6PD0LA$""2080: CHANGE DOS3.3. DRIVE9EN6VF1VF0:2870: OUTPUT FILE NOT FOUND9EN5RA1RA0:3280: CHECK NR>09EN255Ā: TRAPPED CTRL-C9D$:D$;"CLOSE": CLOSE ALL FILES:23:HT,0(::"ERROR ";EN;" ON LINE ";EL;H:EN2541710: TRAPPED ESCf:EN2ĺ" -- RANGE ERROR";:EN4ĺ" -- WRITE PROTECTED";:EN6ĺ" -- PATH NOT FOUND";:EN8ĺ" -- I/O ERROR";:EN9ĺ" -- DISK FULL";;EN10ĺ" -- FILE LOCKED";&;EN11EN16ĺ" -- SYNTAX ERROR";5;" -- ";:;;Z;&"PRESS ANY KEY ";::" ";o;01240: GET KEY;:1710: RESTART GH PROGRAM DISK.TEXTU A GENERAL INPUT ROUTINE THAT ALLOWS QUOTES AND COMMAS IT MAKES USE OF THE INPUT ROUTINE IN ROM( TO READ CHARACTERS FROM DISK TEXT FILE TO THE KEYBOARD BUFFER 2 IT READS TEXT LINE BY LINE..CARRIAGE RETURNS INDICATE EOLF < THE ADVANTAGE OF THIS ROUTINE IS THAT IT DOESN'T USE UPg F MEMORY SPACE FOR BUFFERING P(4)"OPEN TEST.FILE":(4)"READ TEST.FILE" ZX19:54572: INPUT LINES FROM SAMPLE TEXT FILE dB512751:(B)0ĂBH nIN$" ":(131)256(132)1,0:(131)256(132)2,2:(131)256(132),B512:IN$(IN$,1)_ xT$(X)IN$:".";:Xz (4)"CLOSE TEST.FILE" :X110:T$(X): JK% PROGRAM 80 COLUMN SCREEN SAVE` SAVES CONTENTS OF AN 80 COLUMN SCREEN TO A DISK FILE{ TO TWO FILES ON DISK((4)"PR#3": TURN ON 80 COLUMN2"THIS IS A TEST OF THE 80 COLUMN SCREEN SAVE FUNCTION"< F(4)"BSAVE SCREEN1,A$400,L$400"- P49237,0: SELECT AUXILIARY MEMORYX Z(4)"BSAVE SCREEN1,A$400,L$400,B$401"} d49236,0: RETURN TO MAIN MEMORY iX11000:: KILL TIME n:V(48984):48984,0: TURN OFF PRODOS PROTECTION x(4)"BLOAD SCREEN1,L$400" 49237,0: SWITCH TO AUXILIARY MEMORY> (4)"BLOAD SCREEN1,L$400,B$401"t 49236,0:48984,V: RESTORE MAIN MEM & PROTECTION 22:"ALL DONE !"$ LISTING ONE UNCOMPRESSED VSN*0c(::"THIS IS A DEMONSTRATION PROGRAM TO SHOW"2"WHAT WILL HAPPEN IF A QUOTATION MARK <"IS LEFT OFF THE END OF A LINE. F10:"HIT TO GO ON ";:"";X$:X$""70 P:"FINISHED THANKS"& LISTING TWO COMPRESSED VERSION(::"THIS IS A DEMONSTRATION PROGRAM TO SHOW":"WHAT WILL HAPPEN IF A QUOTATION MARK: PRINT "ISLEFFFTHEOFALINE." Z10:"HIT TO GO ON ";:"";X$:X$""90:"FINISHED THANKS" ghȱȱ" LLMLL $ W۠HȱhLȱL`PQR REP40 * FINDQUOTE * COPYRIGHT (C) 1982 * DIGIPAC COMPUTER CONSULTING REP40 * * APPLESOFT USEAGE * PRGSTRT EQU $67 LINPRT EQU $ED24 OUTSPC EQU $DB57 * * STORAGE * STRLIN EQU $1A FLAG EQU $1C LINNUM EQU $1D * ORG $300 * LDA PRGSTRT ; FIND THE BEGINNING OF THE PROGRAM STA STRLIN LDA PRGSTRT+1 STA STRLIN+1 NEWLIN LDA #0 ; SET THE FLAG STA FLAG LDY #$2 ; FIND AND STORE THE LINE NUMBER LDA (STRLIN),Y STA LINNUM INY LDA (STRLIN),Y STA LINNUM+1 SRCHLN INY LDA (STRLIN),Y CMP #0 ;SEARCH FOR CARRIAGE RETURN BEQ CHKFLG CMP #$22 ; SEARCH FOR QUOTE BEQ SETFLG JMP SRCHLN CHKFLG LDA FLAG CMP #1 ; IF FLAG SET THEN BEQ ERROR ; PRINT LINE NUMBER JMP EXIT ; ELSE POSSIBLE EXIT SETFLG LDA FLAG CMP #1 ; IF FLAG SET THEN BEQ RESET ; RESET IT LDA #1 ; ELSE SET IT STA FLAG JMP SRCHLN ; CONTINUE SEARCH RESET LDA #0 ; RESET THE FLAG TO ZERO STA FLAG JMP SRCHLN ERROR LDA LINNUM ; RESTORE THE LINE NUMBER TAX LDA LINNUM+1 JSR LINPRT ; PRINT THE LINE NUMBER JSR OUTSPC ; AND A SPACE EXIT LDY #0 ; FIND THE NEXT LINE OF PROGRAM LDA (STRLIN),Y PHA INY LDA (STRLIN),Y STA STRLIN+1 PLA STA STRLIN LDY #0 LDA (STRLIN),Y CMP #0 ; IF A ZERO POSSIBLE END OF PROGRAM BEQ EXITST JMP NEWLIN EXITST INY ; IF A ZERO THEN END OF PROGRAM LDA (STRLIN),Y CMP #0 BEQ DONE JMP NEWLIN DONE RTS LSTOFF < A15:B1255:49186,B:49204,FB:FBFB1:FB15FB0X::49186,246:49204,6UVW PROGRAM IIGS.COLORB SET THE COLORS OF THE IIGS SCREENk YOU CAN SET THE BACKGROUND, BORDER( AND TEXT INDEPENDENTLY2 DANGER..THE BORDER COLOR REGISTER C034..49204 IS SHARED BY THE CLOCK. < TEXT AND BACKGROUND SHARE C022..49186" F COLOR RANGE IS FROM 0 TO 15` P THIS ROUTINE USES BIT.BREAKER AND REASSEMBLER TO MODIFY Z THE BORDER REGISTER WITHOUT CHANGING THE CLOCK d:"COLOR RANGE FROM 0 (BLACK) TO 15 (WHITE)": n"IF YOU SET THE TEXT AND BACKGOUND TO THE "* x"SAME COLOR YOU CAN'T READ THE SCREEN !":H "ENTER TEXT COLOR ";:TXn :"ENTER BACKGROUND COLOR ";:BK :"ENTER BORDER COLOR ";:BD BREAK DOWN THE NUMBER BT07:A(BT)(BD(BD2)2):BD(BD2): BV(49204): GET BORDER REGISTER VALUE4 BT07:B(BT)(BV(BV2)2):BV(BV2):x LOWER NIBBLE IS INPUT..UPPER NIBBLE IS CLOCK VALUE FROM 49204 REASSEMBLE THE BORDER BITS INTO DECIMAL VALUE VA(0)2A(1)4A(2)8A(3)16B(4)32B(5)64B(6)128B(7) 49186,TX16BK: SET TEXT AND BACKGROUND; 49204,V: SET BORDER COLORh 22:"PRESS A KEY TO CONTINUE";:A$:100YZ[ PROGRAM IIGS.KEYPRESSG THIS USES BIT.BREAKER TO TAKE APART| THE IIGS KEY MODIFIER REGISTER AT $C025, 49189( BIT 0 IS SHIFT KEY2 BIT 1 IS CONTROL KEY< BIT 2 IS CAPS LOCKF BIT 3 IS REPEATP BIT 4 IS KEYPAD) Z BIT 5 UPDATES THE REGISTER WITHOUT A KEYPRESSL d BIT 6 IS OPTION/CLOSED APPLEf n BIT 7 IS OPEN APPLE x:"PRESS ANY KEY OR COMBINATION OF KEYS": K(49152):K128130: GET REGULAR KEY VALUE 49168,0: CLEAR KEYBOARD STROBE! N(49189): GET VALUE OF KEY MODIFIER REGISTERH "BIT BREAKDOWN OF THE REGISTER":T BT07 V(N(N2)2):"BIT ";BT;" IS ";V:D(BT)V N(N2): REDUCE VALUE : D(0)1ĺ"SHIFT KEY WAS PRESSED" D(1)1ĺ"THE CONTROL KEY WAS PRESSED" D(2)1ĺ"CAPS LOCK KEY IS DOWN"D D(3)1ĺ"A KEY IS BEING HELD DOWN"m D(4)1ĺ"A NUMERIC KEY WAS PRESSED" D(5)1ĺ"THE REGISTER HAS BEEN UDATED WITH NO KEYPRESS" D(6)1ĺ"THE OPTION/CLOSED APPLE KEY WAS PRESSED" D(7)1ĺ"OPEN APPLE/COMMAND KEY WAS PRESSED"' "(K128)32310N ,"THE KEY PRESSED WAS ";(K128):} 6"THE KEY PRESSED WAS CTRL ";((K128)64) @]^ PROGRAM IMAGEII.COLORK PRINTS COLOR TEXT ON THE IMAGEWRITER IIY BLACK=0h( YELLOW=1x2 MAGENTA=2< CYAN=3F ORANGE=4P GREEN=5Z PURPLE=6d(4)"PR#1"n(9)"K": KILL LINE FEED FROM INTERFACE CARD xLOOP06 (27)"!": BOLDFACE; (27);"K";LOOP;: SET COLORs "THIS IS A TEST LINE IN COLOR ";LOOP:(10):(13) :(10):(13) T$"OVERPRINTING TO CREATE NEW/ADDITIONAL COLORS" C0:LOOP1(T$):C$(T$,LOOP,1) C6C0 (27)"K";C:36,LOOP:C$:(13):CC1. :(13):(10) (27);"K3";:"THIS IS CYAN (3) OVERLAYED WITH PURPLE (6)":(13):(27)"K6":"THIS IS CYAN (3) OVERLAYED WITH PURPLE (6)":(10)< (27);"K0";:"THIS IS BLACK (0) OVERLAYED WITH YELLOW (1)":(13):(27)"K1":"THIS IS BLACK (0) OVERLAYED WITH YELLOW (1)":(10)L (4)"PR#0" PROGRAM IMAGESELF.ID= ASKS AN IMAGEWRITER II FORQ CONFIGURATIONz( IS TIMING SENSITIVE MAY NOT ALWAYS2 WORK RELIABLY FROM APPLESOFT<(4)"PR#1"F(4)"IN#1"P(27)"?";:"";R$Z(4)"PR#0"d(4)"IN#0" n"THIS PRINTER IS ";R$:? x"IMAGEWRITER WITH COLOR WILL ID AS IW10C"o :"IMAGEWRITER WITH BLACK WILL ID AS IW10" PROGRAM INTERRUPTC DISABLE INTERUPTS ON THE APPLE IIGS THIS PREVENTS ACCESS TO THE CONTROL PANEL AND OTHER THINGS(768,120:769,96:7682 THE MACHINE CODE IS $78 $60< SEI (SET INTERRUPT MASK) RTS (RETURN FROM SUBROUTINE)0 F THESE CODES ARE PART OF THE 6502 COMMAND SETM P AND WORK WITH PRODOS 8q Z ENABLE INTERRUPTS ON THE IIGS d768,88:769,96:768 n THE MACHINE CODE IS $58 $60 x CLI (CLEAR INTERRUPT MASK) RTS (RETURN FROM SUBROUTINE) PROGRAM KEYPRESS4 READ KEYPRESS ROUTINEN WORKS ON ALL APPLESe(:"PRESS A KEY":~2K(49152):K12850< READ KEYBOARD LOCATIONF VALUE WILL BE <128 WHEN NO KEY HAS BEEN PRESSEDP KEEP LOOPING' Z PRESSED KEY VALUE WILL BE ASCII VALUE + 128..HIGH BIT IS SETM d49168,0: CLEAR KEY BOARD STROBEa n(K128)32130 x"THE KEY PRESSED WAS ";(K128):: HANDLE NORMAL CHARACTERS "THE KEY PRESSED WAS CTRL ";((K128)64): HANDLE CONTROL KEYSTOKES  PROGRAM LARGEST.FINDF FIND THE LARGEST NUMBER IN AN ARRAYiA(10): ARRAY CAN BE ANY SIZE(:"ENTER 10 NUMBERS THAT WILL BE CHECKED":2X110:"INPUT ";X;" =>";:A<A(X)A:: GET 10 NUMBERS FV1A(1): START WITH THE FIRST NUMBER& PX210: KNOWN SIZE OF ARRAY? ZV2A(X):V2V1V1V2\ d: CHECK ALL 10 NUMBERSh nVMAXV1 x:"THE LARGEST NUMBER IS ";VMAX  PROGRAM LORES.LOADP ALLOWS LOADING A PICTURE TO LORES SCREEN MEMORY{ DOES NOT ALLOW FOR SCREEN HOLE DATA!(V(48984): GET VALUE OF PRODOS PROTECT BYTE248984,0: TURN OFF PROTECTION THIS AFFECTS PAGES 0-7 <: SET LORES GRAPHICS MODE: F(4)"BLOAD TESTPIC,A1024": LOAD PICTURE FILEn P48984,V: RESET PROTECT BYTE TO ORIGINAL VALUEt Zef PROGRAM MOUSE.BUTTON2S149420:S249659TSL1: START LOOKING SLOT ONEo((S1)32(S2)214802SLSL1:SL3S1S1256:S2S2256:50: SKIP SLOT 3<SL8S1S1256:S2S2256:40F(7):"NO MOUSE IN THE COMPUTER": P(4)"PR#";SL: CALL MOUSE SLOT: Z(1): TURN ON MOUSE FIRMWAREe d(4)"PR#0": RETURN INPUT TO KEYBOARD n:"PRESS ANY KEY TO ACTIVATE THE MOUSE" xA$ (4)"IN#";SL "";X,Y,S S1ĺ(4)"IN#0":190: RETURN TO KEYBOARD 12:"THE SWITCH STATUS IS ";SC D1200:: DELAY LOOP TO SEE 'S' CHANGE L 140y 15:"A KEY WAS PRESSED ON THE KEYBAORD"  PROGRAM MOUSE.FIND5 FINDS MOUSE FIRMWAREKS149420:S249659m(SL1: START LOOKING SLOT ONE2(S1)32(S2)21490<SLSL1:SL3S1S1256:S2S2256:60: SKIP SLOT 3FSL8S1S1256:S2S2256:50 P(7):"NO MOUSE IN THE COMPUTER":9 Z:10:10:SSL:"MOUSE FOUND IN SLOT# ";S? dij PROGRAM NEWTEXT> IT IS A ROUTINE TO DEMONSTRATE A` WORDWRAP TECHNIQUE IN BASIC( IT IS SET FOR A 40 COLUMN SCREEN2 BUT CAN HANDLE LINES OF ANY LENGTH<T$(10): TOTAL NUMBER OF LINESF:CHAR1P100 ZLNLN1:T$(LN)L$:L$"":, dA$:A$(13)CHAR1:SLOC0:90Y nCHARCHAR1:L$L$A$:CHAR40A$" "170} xSLOC0İ90:L$""::CHAR1:100 SS40SLOC1:J1SS:(8);:J:J1SS:" ";:J SLOC(L$)NXTL$"":90:100 NXTL$(L$,(L$)SLOC):L$(L$,SLOC):J(L$)140:L$L$" ":JQ 90:L$NXTL$::L$;:CHAR(L$)1:NXTL$"":SLOC0:100z A$" "SLOCCHAR1: SPACE LOCATION A$; 100lmnopqDEC 1991 DISK (VOL 12 /NO 12) 5 THE APPLESOFT TOOLKIT MACHINE CODE MOVER SOLILOQUY DIRECTORY SAVER CHECKIT 2 DIRECTORY SAVER RUN DIR.SAVER CHECKIT RUN CHECKIT @ This disk is a double-sided disk. All of the programs that will run under ProDOS are on the ProDOS formatted front side of the disk, and all that will run under DOS 3.3 are on the back side of the disk. Some programs will run under both operating systems and are included on both sides of this disk. You're currently using the ProDOS side of the disk. @ Before using the programs on this disk, you should make a work disk for each program. This can be done by first making a complete copy of the disk with one of the following programs: * COPYA (DOS 3.3 System Master) * FILER (ProDOS Utilities Disk) * The Apple IIc or Apple IIGS Utilities Disk * Any Disk Copy Program Then boot the copied disk and delete all of the files that are not related to the program by using the DELETE command. The System Utilities program also has an option to DELETE files. @ The screen displays that follow show the files needed to create working copies of each program. @ To create a work disk for Applesoft Toolkit, remove all but the following files from a copy of this disk: COLOR.SET MOUSE.FIND TESTPIC MOUSE.BUTTON STRING.CENTER ROM.ID LARGEST.FIND SMALLEST.FIND NEWTEXT BIT.BREAKER BIT.ASSEMBLER KEYPRESS APPLE.KEYPRESS EIGHTY.COLUMN PRODOS.ID LORES.LOAD PRINT.READY DISK.TEXT IMAGEII.COLOR SLOT5.BOOT TEST.FILE TEXT.FILER IMAGESELF.ID These programs are included on the ProDOS and DOS 3.3 sides of this disk. They are not included as an option in the program menu, because they require special instructions. See the documentation for details. @ To create a work disk for Machine Code Mover, remove all but the following file from a copy of this disk: MCM This program is included on the DOS 3.3 side of this disk, only. @ To create a work disk for Soliloquy, remove all but the following files from a copy of this disk: FINDQUOTE.OBJ FINDQUOTE.D1 FINDQUOTE.D2 FINDQUOTE.S This program is included on the ProDOS and DOS 3.3 sides of this disk. It is not included as an option in the program menu, because it requires special instructions. See the documentation for details @ To create a work disk for Directory Saver, remove all but the following file from a copy of this disk: DIR.SAVER This program is included on the ProDOS and DOS 3.3 sides of this disk. @ In addition, we've placed a copy of the CHECKIT program on this disk. CHECKIT is a utility published in Nibble that aids in typing in programs from the magazine. The One- and Two-Liners are also included on this disk. @ The source code files for the major assembly language programs have been included on this disk. These files are included expressly for experienced programmers. These files cannot be used unless you own the appropriate assembler. WARNING: Do NOT attempt to run the following source code files: FINDQUOTE.S @ #  PROGRAM PRINTER.READYU GIVES A WARNING MESSAGE IF THE PRINTER IS OFFLINE DOESN'T WORK WITH IMAGEWRITERS AND SERIAL PORTS IF THE PRINTER IS OFF(::12:8:"THE PRINTER ISN'T READY!"2:(4)"PR#1"::(4)" PR# 0" <X110:"JUST TESTING": F:"THANK YOU"/ P(4)"PR#0"5 Ztuvwxyz{|}~L !C_" %k"l" (#M8( % ) L*"m"n" (_7, )7(P0 ( @X p 8  u"!_"f"0 ~&f"0 %o"p" (,) &q"r" ( %L*")0I0hx H( + %Щ ߩu"L! )L! 8'  )ɀ)4,- U JNT) u"Ls"t" ( !` ^"M)Fi/ b"3 h"i"j" e" iL X>"L;"ίΠ`v""""""*$ Fk%YeQP!/RB}QBiBB}\ }FEL,#> ȏ6 . ) ɘ"    L:#:#ŠϠĠԠ  m# m# J Qڨ)̰}] нȱ ̀𩠙 i V N c ɘ\   VG+ #X ɛL ' 0% '8 Jm ʈ0  0ŠϠĠ͢Š͠͠ϠŠŠϠĠخ͠ ͍B B(8`BYYZLYLYLY뿭` 8!@8` %MNЩUMߩ  L 5   8 0 8  `0 / X& & +&&7&P^&0`ŠӠֱέԠŠҬî̠ӠĮʎ1|&… (n}&Dž (\%Tz&Lc()8= (J 8'z&'{& 3((ʎ1|&|&|&3223 ')L&18|&"m11 2H22h2舌|&|&12H)M0 h10200I20h2 (`LE%12 `_'"L  <8# ȱ)ɀ  )( ` (Xp< @( )m((.(( M(i  ``) |'(j21 z& {&!` ({&z&(i({&(( CBDFGE (r&$ 3(,}&r& … 3(ŅL&JJJJ`Ϡ'8`r&h)hrȱȱȱȱ0]cȱeem*ȱ*ȱ**ȱ**ȱ* )* * )L(`L?* *Ll) ) L( )Ll)8e` ,$`ee` `* G** c*` v* G* c*`hh8`8`***`}*`e`H)hJJ*0JJ)` (< ( < *? ( < (? ( < (? ( <*? * **? *? *? ( < *? ( <.<ʆ>,=?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@)@vvȱ@Hȱ@Ah@@cve J) LL LJiB LJ) JxNhHHHHL(  ްƠx@BEOD  ް(`( C)CJJJl`B l-`J,~@~@}J@` ߩ%S @ ~`E hhhߺ0 h ߐ(     0 HϭߍLпllllhh8` Qu")T'P() ɺiLG )?      `l@Hȱ@IױHXATȱH ɯȩ׍̕5H)/@a)_ .0 :A[8@`,뎕׮Б` L ` @>V)I38 Pghם`K8`@Nȱ@O@ IiNȽבN)/ȩ/N`@[ WHJjjjhA I'KI؍0JHi 뎈`C8` @ 3N@) S莴 ⭱i`0 e; 뮈ٝ٘ 0 W,0 .H hȑNWȮّNW8`ٍّNί0NN` G8`F@ 0 P LK8`= >I8`FHGH hGhF܌ բFܽܕF芝ܝ 밶=> ?܅I m@IHHyHȘI Lܝ` @f@ n@Ю׍V)mיVʈ@tȱ@fȱ@prsiQ{R|V)5VI0ܢܽ lS'H* 7ghFG (JK L܅IU mHIH` wt tP0ST HVHQFRG 밳QR 밨J%܈G" T)Ii)܍U*܍H'ܮ( 4 䭐 $H %HFFHGHG 됬`R8`)` HHV` /Q'܅IHHVVЍV@`8 ` ͐% ΐQ8`܅I `S܍TU p8D`F` ilH)HFȍQHGR $%܍&܍!ܢ8* J8` L ܝA)I 'ܝ=`I8iUFSGT`I܅IH3H ( )ȱHί`Α8HeHI SB=0P ٙNٙLFQJʈ p猱`8m0`,0H hi PȽίhٍ0GF8yאFG  $0 S01 E8`100 e 0ʩ 谼 谷`12)1`0`Ȏi 0U`)8`ί` W G IؙJJ c: QLHIHI`JKJK`FHIG ( Ȣ؝؈JL)eKM`)` J }J͢ $0 ΑJFJL8`JGBJ \ FإG`BH \FإG`,H hHB؅F  ؅GxDE؍00C ް(`(8` L3J  B"L H  B 9ؙ` @ P8`K8`B8` O؈VJJJJحt) ) )Ю ЪGgF $ ᭔ع+ؠ >H  Wh8` 䮈ٽ ٬ؠ@` ( O )8`)i п`  H h)N$% LL L L >  .pJ덦 )@፩NJOK >iKKΥΥ IJΦ JФ̭JjHFIH HIGxKE ް((H hH h8`8@ȭ@L>쬉8NNO 8 ؍JL`RΥʱLN1MOMEKP/MEKΥLCL-M O,p莤eNNO(`JNKOL >/  .P L8 cؑJ`L@ȱ@ `@Nȱ@O`؝}}I}ؐ` rؽ؝} r 1 r؝}؈` ` H  \h)N@ C; L  >$ )bJ e ) H @hL ) # )حJjI~HI}H؊  PLKΥʱNLMO MЈMEKݸP%MEKΥL0 O, PeNNO O(` C  7 #2J}HI~HI؊ LQ  6` #A H} ع H~ ؙ؊ؠIhHIhH  iع `  عiعi` )؍0CGHFHBFGx ް(8hFhG`@4͔ L @Ai ׭2` . W#ع؍0 e讈)`.@+ i 8` L )߹0 )p )@ ) ȩ ؝O0QR 방 STQRFG 嬉؍i؍j؝k ؝f }V) }V )حP͝ `H@h`h``N8`  ) C⬉Ȣ؝@ݡ@ʈLO KIJHȢݡ)Jn 8 λ ؍ ؍ aH8 ع)ꭸJJJJ Ȣ؝I؈ >h(8H E h(8Hh(`ؑ@`@ȱ@ ` B@8ZV p鮈ٍٍٍvHٍu8ihjVJJJJV)V@` %I -t) 0@V)N8` @LL =@ 4ȹP8` %i` Bם0 4B B)( ȹ`8m8m@8` G8`F Pt)@N8`V)@J 4טyרםVV)׍Vgh 밑 %LȹL@ȅH@IL,0` G פֿ= eH.t)N 0 PghV)@LP8` a᮷ &֩VJKJ L䬈yٙ٭yٙ٩`K OEgFhG 6%&N   & ܮ `J HH hh` 0 @ LLL w`̻Yܝ ݝ0̻ȩFG   0` ܅F݅G ` wͬ 밽܅F݅G ` * w% L`L뮷HH &hFhG܍ݍ 8 `FHGH & hGhF`ݹܙ݊`@Bɼ>K@J5 9X(K XXK تKo`V8`no` I on I9XX`) HJJJh`OeNeO࿰ 9XАO`@ȭ@` ON fNJKO`HхhꭋILhH),kx8 (8` ԍ`@Ae Or88`zw! NIJK,-NOPQRSu' @   !"#$Ԡ͠ˠ(C)1983-87APPLELKL`BL Lެެެެެެެެެެެެެެެ(C)APPLE'83xLLM Mh@8nЍLޭ 0J @,,LZP׽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ҠؠӠ΢ϠԩҠŠƠԠԠŠӢɯϠҠůȠԠĠ  0h)ύh0HHHH " ׍hhhhhhh .hh8`JIMJAYKERRY&MIKE PROGRAM PRODOS.IDC THIS USES BIT.BREAKER TO TAKE APARTd THE PRODOS MACHINE ID BYTE( BITS 3,6,7 INDICATE MACHINE TYPE2 BITS 4,5 INDICATE MEMORY SIZE< BIT 1 INDICATES 80 COLUMN STATUSF BIT O INDICATES CLOCK STATUS P:N(49048)2 Z"PRODOS MACHINE ID BYTE DECODED":> dBT07m nV(N(N2)2):"BIT ";BT;" IS ";V:D(BT)V xN(N2): REDUCE VALUE : D(3)0D(6)0D(7)0ĺ"THE COMPUTER IS A II" D(3)0D(6)1D(7)0ĺ"THE COMPUTER IS A II+") D(3)0D(6)0D(7)1ĺ"THE COMPUTER IS A IIE"\ D(3)0D(6)1D(7)1ĺ"THE COMPUTER IS A III" D(3)1D(6)0D(7)1ĺ"THE COMPUTER IS A IIC" D(4)0D(5)0ĺ"MEMORY IS 48K" D(4)0D(5)1ĺ"MEMORY IS 64K" D(4)1D(5)1ĺ"MEMORY IS 128K"/ D(1)0ĺ"NO 80 COLUMN DISPLAY HARDWARE FOUND"_ D(1)1ĺ"STANDARD 80 COLUMN DISPLAY FOUND" D(0)0ĺ"NO PRODOS CLOCK IS PRESENT" D(0)1ĺ"PRODOS CLOCK IS PRESENT" PROGRAM ROM.ID= THIS ROUTINE IDENTIFIES AN APPLEf BY READING THE ROM SIGNATURE BYTES( NOTE THE LAST BYTE,173,FOR THE IIGS2 MAY NOT ALWAYS BE 173< MEMORY LOCATIONS ARE 64286,64435,64447,64448,65505 F 64286 IS USEFUL ONLY ON THE APPLE III. P APPLE II,-,56,47,96,96Q Z APPLE II+,173,234,234,234,96p d APPLE III,138,-,234,-,96 n APPLE IIE,-,6,192,234,96 x APPLE IIE ENHANCED,-,6,-,224,96 APPLE IIC,-,6,255,0,96 APPLE IIC 3.5,-,6,0,0,96 APPLE IIC ORIGINAL, 6,3,0,96,-9 APPLE IIC REVISED,6,4,0,96,-U APPLE IIC+,-,6,5,0,96t APPLE IIGS,-,6,0,224,173 AA(64286):A(64435):B(64447):C(64448):D(65055) A56B47C96D96ĺ"THE COMPUTER IS AN APPLE II"$ A234B234C234D96ĺ"THE COMPUTER IS AN APPLE II+"[ AA138B234D96ĺ"THE COMPUTER IS AN APPLE III" A6B192C234D96ĺ"THE COMPUTER IS AN APPLE IIE" A6B0C224D96ĺ"THE COMPUTER IS AN APPLE IIE ENHANCED" A6B0C0D96ĺ"THE COMPUTER IS AN APPLE IIC WITH 3.5 ROM"Z A6B255C0D96ĺ"THE COMPUTER IS AN APPLE IIC ORIGINAL" A3B0C96ĺ"THE COMPUTER IS AN APPLE IIC ORIGINAL RAM" A4B0C96ĺ"THE COMPUTER IS AN APPLE IIC REVISED RAM" "A4B5C0ĺ"THE COMPUTER IS AN APPLE IIC PLUS"G ,A6B0C224D96ĺ"THE COMPUTER IS AN APPLE IIGS" PROGRAM SLOT5.BOOTC WILL NOT WORK ON SMARTPORT DEVICESz IS INTENDED FOR APPLE IIE WITH 3.5 UNIDISK DRIVED$(4)(602D$"PR#5"<"CANNOT BOOT SLOT 5"FD$"END"P OR CONTINUE PROGRAM HERE PROGRAM SMALLEST.FINDH FIND THE SMALLEST NUMBER IN AN ARRAYkA(10): ARRAY CAN BE ANY SIZE(:"ENTER 10 NUMBERS THAT WILL BE CHECKED":2X110:"INPUT ";X;" =>";:A<A(X)A:: GET 10 NUMBERS FV1A(1): START WITH THE FIRST NUMBER0 PX210: CHECK THE REST OF THE ARRAYI ZV2A(X):V2V1V1V2f d: CHECK ALL 10 NUMBERSr nVMINV1 x:"THE SMALLEST NUMBER IS ";VMIN  PROGRAM SPEED.CONTROLE SET THE IIGS SPEED FROM APPLESOFT DANGER..THE SPEED REGISTER C036..49206 IS SHARED BY( SHADOWING, DISK MOTOR CONTROL AND SYSTEM FUNCTIONS2 HIGH BIT IS SPEED, 0=NORMAL 1=FAST < THIS ROUTINE USES BIT.BREAKER AND REASSEMBLER TO MODIFY^ F THE SPEED REGISTER WITHOUT CHANGING THE OTHER FUNCTIONS PBV(49206): GET SPEED REGISTER VALUE ZBT07:B(BT)(BV(BV2)2):BV(BV2): d:"THE CURRENT SPEED IS ";:B(7)1ĺ"FAST":120 n"NORMAL"; x:"COUNTING FROM 1 TO 1000 IN ";:B(7)1ĺ"FAST SPEED":140O "NORMAL SPEED"e :X11000:X;: CHANGE ONLY THE HIGH BIT B(7)1B(7)0:190 B(7)0B(7)1 REASSEMBLE THE REGISTER BITS INTO DECIMAL VALUE& VB(0)2B(1)4B(2)8B(3)16B(4)32B(5)64B(6)128B(7)B 49206,V: CHANGE SPEEDJ 80 ******* 8/08/86 *******;* ProDOS STARTUP *X* BY OWL *u(* COPYRIGHT (C) 1987 *2* BY MINDCRAFT PUBL. *<* LINCOLN, MA 01773 *F***********************& K THANKS TO RUSS HOUGHTON OF BALTIMORE, MD., FOR REVISING THE OPENING GRAPHIC (11-90).1 P16384H Z::D$(4):(21)R d970 n ********** GET HI-RES SCREEN AND SET DISPLAY SWITCHES x11:3:"MINDCRAFT PRESENTS NIBBLE SOFTWARE" 15:13:"PLEASE WAIT..." D$"BLOAD STARTUP.SCREEN") G(16297)(16300)(16301)(16304)Z ********** READ INFO FROM NIBMENU TEXTFILEd 1120 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 MENU9 D$;"OPEN NIBMENU"P D$;"READ NIBMENU"i A$: A$ = DISK NAME NA$"NIBBLE "A$:22:20((NA$)2):NA$:1 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$5 6I0J @II1:768,S$(I)d J(S$(I),1,1)"#"350m T320} ^D$;"CLOSE" h(1101)6İ1080: ********** UPPER/LOWER CASE ROUTINE r ********** FIRST TEXT SCREEN |::3 "Thank you for ordering the Nibble":A$;"!":C "The programs on this disk are:":\ Z1NP:5:P$(Z):Zx 1030:FLAG$"ESC"ī600  ********** CYCLE THRU NIBMENU TEXT SCREENS A1 :3 S$(A)"@"İ1030::3:((FLAG$"ESC"))490:600S$(A)"#"510 S$(A)AA1:460J ********** LAST TEXT SCREEN BEFORE MENUS:3{6:"Thanks again for your order !"12:6:"ALL PROGRAMS ON THIS DISK ARE"&6:"COPYRIGHT (C) 1991 BY NIBBLE"06:"MINDCRAFT PUBLISHING CORP."*56:"P.O. BOX 256, LINCOLN, MA 01773"Z::17:5:"UNAUTHORIZED COPYING IS ILLEGAL"dD1030N ********** SET UP MENUXMEMM2:X$(0)" ":X$(1)"-->":b1:1:"Selection: : Instructions"l3:"----------------------------------------";*v5:20((A$)2):A$QI1ME2:61I:8:I". "MP$(I):z61(ME1):8:ME1". Catalog Disk"61ME:8:ME". Quit"21:"----------------------------------------"23:1:"Type number or use arrows, then ";:PX10:SX4:SL10 ********** SELECT CHOICERNSL:OSSL:780:Z0:24:8681: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ī380DSLSLZ(Z10):SLSLME(SLME)ME(SL1)\NOS:780:Z10700e800 ********** PRINT POINTER SUBROUTINE 61N:SX:X$(SLOS);: ********** SELECTION ROUTINE SL(ME1)İ860:600*SLMEİ900:SL1:780:680;42:1:" "::2:1:RC$(SL):h> ********** EXECUTE A VALID MENU CHOICEH49168,0::1100::D$;RC$(SL)R ********** CATALOG SELECTED \:49168,0::D$;"CAT":f24:7:"Press to continue";p49168,0:49152,128:0z ********** QUIT SELECTEDo22::958:"Do you really want to quit? (Y/N)";:49168,049168,0:49152,128(49152)249(49152)217Ĺ49168,0::1100: ********** SOUND BUZZER FOR WRONG KEYSTROKE EQ110:EY(16336)(16336):EQ:F ********** ERROR HANDLING ROUTINEN:o(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. "D23:"Press to continue ";:958:49168,0:49152,128:600i ********** WAIT FOR KEYSTROKEvFLAG$""23:" for next page or for menu";:49168,0:49152,128(49152)155FLAG$"ESC"$. *********** ATTACH UPPER/LOWER CASE ROUTINEB8I013:ML:768I,ML:I:D$"PR#A$300":vB ********** DETACH UPPER/LOWER CASE HANDLER L(4);"PR#0":V ********** INSTALL INPUT-ANYTHING ROUTINE`X768839:A:X,A::j ********** INPUT-ANYTHING ROUTINE DATAOt 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,0B ********** UPPER/LOWER CASE ROUTINE DATA| 216,201,225,144,6,201,251,176,2,233,31,76,240,253,0p|~p|*U*U*U*U*U*(@?p~px|xժժժժժT*@?p~px|ЪժժժՊdO U @?`p~?pxԊԪ`|yg~0 cFc U*U*U*@@P*U*U*U*U*U c `Lgsc `0L| 0@ ժժժժժժ F`pO|`*U*U*U*U*U*0p|~p|(U*U*U*U*U**@?p~px|ժժժժժ`AT*@?p~px|xժժժՂn_? U@?`p~ppp}{c0 cFc(U*UA*U*ԪժժժժՊc|`LqFn|cx``G  pO?<ժժժժժժpaGo1G1v`cOFq3\qsqpO|`*U*U*U*U*U*p|~p|(U*U*U*U*U**@?p~px|ժժժժժ`AT*@?p~Ap||xժժժՂN?p Upysc'C&0.cFc(U*U P*U*@c|@`?|1@?<Ԫժժժժժժժժժժժ3L;sL1 3N0fF3F0f`pO|`*U*U*U*U*U*@?~yg|sO?~yg|sO?~yg|sO?~ygp|~p|(U*U*U*U*U*@*@?p~px|ժժժժժpcU*@?p~p|ժժժ_?@>| Ux{w cY#8X03X0FC30*U*U*U*U*Uc ``c 3@ Ԫժժժժժ`ժժժժժժ0LsL1 ?pgF1Fq1fqappO|`*U*U*U*U*U*pp~p|(U*U*U*U*U*@*@?p~px|ԪժժժժpcU*@?`p~p|ժժժ?~ GC@F Uxsg`c00@` 80`gF1\y1\yax1~p*U*U*U*U*U*@?p~Ap||x U*U*U*U*U*P*@?p~px|ԪժժժՊpgU @?`p~p|ժժ@?~|sp#XqF1 ;FpC ;P*  U @?~yg|sO?~yg|sO?~yg|sO?~yg@*U*U*U*U*Uc `]gs`gL`0L3 ?|1@ ժժժժժժ@pO|`ժժժժժժ0p|~pp*U*U*U*U*U*@?p~px|x U*U*U*U*U*T*@?p~px|ЪժժժՊtoU @?`p~p|ժժ`~} CCk<F9 gfCgU*(U*P*U*U*U*U*U c `Lgs0c|`0L  0@ ժժժժժժ F0`pO|`ժժժժժժ0p?|~?px*U*U*U*U*U*C CENTER A STRING OF UNKNOWN LENGTH IN A SPACE OF KNOWN WIDTH THIS DEMO WILL CENTER THE STRING ON THE 40 COLUMN SCREEN:"ENTER A STRING OF CHARACTERS"::"==> ";:A$(A$""302(A$)4030$ <:12:W20: W IS 1/2 THE WIDTH OF THE SPACE THE TEXT WILL BE CENTERED INY FD(W((A$)2)): CALCULATE HOW FAR OVER TO MOVEd PD:A$ Z22:8:"PRESS RETURN TO CONTINUE";:K$:30This is a sample text file for use with the DISK.TEST file included in the Applesoft Programmers Helper. The routine is very simple, using the INLIN routine at 54572, $D52C to get text from the current input device, and put it into the keyboard buffer. The usual question is, why not just dump the file into memory and decode it from there. The answer is, that approach takes up valuable RAM space for the buffer, space often needed by the program or other code. 3f"݈fDDwUfDD̙DwU"D3f"݈fDDwUfDD̙DwU"D3f"݈fDDwUfDD̙DwU"D3f"݈fDDwUfDD̙DwU"D3f"݈fDDwUfDD̙DwU"D3f"݈fDDwUfDD̙DwU"D 3f"݈fDDwUfDD̙DwU"D3f"݈fDDwUfDD̙DwU"D3f"݈fDDwUfDD̙DwU"D3f"݈fDDwUfDD̙DwU"D3f"݈fDDwUfDD̙DwU"D3f"݈fDDwUfDD̙DwU"D3f"݈fDDwUfDD̙DwU"D3f"݈fDDwUfDD̙DwU"DΠԠʺԠ3f"݈fDDwUfDD̙DwU"D3f"݈fDDwUfDD̙DwU"D3f"݈fDDwUfDD̙DwU"D3f"݈fDDwUfDD̙DwU"DŠì̱3f"݈fDDwUfDD̙DwU"D3f"݈fDDwUfDD̙DwU"D( PROGRAM TEXT.FILERE SAVES A BASIC PROGRAM TO A TEXT FILEi ASSUMES LINE RANGE OF 1-30000( TO USE ADD TO END OF PROGRAM AND GOTO LINE 402(4)"OPEN LISTFILE"< USE APPROPRIATE PATHNAMEF(4)"WRITE LISTFILE"P130000 Z(4)"CLOSE LISTFILE" d