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|;' ,BASIC.SYSTEM(*+BIG.APPLER7R7'CHECKIT 6/ ;-DBL.COL.MACRO%#N5N5DIFFRACTION8R7R7-DOLLAR.FORMAT9D: D INST.CDA=) ) ,INST.CDA.ASM> + L% /MEMORY.PEEKER.SE5@g)3'NIBMENUz .j. j/ &NOGGINHNZ. -PLOAD.INSTALL:@M/PLOAD.INSTALL.S+FM&PRODOS }<SLIDE.OBJc:M +SLIDE.OBJ.S:M *SLIDE.SHOW:Q'STARTUP ®3s,.STARTUP.SCREEN®09`®4%TRANShh'TRANS.S hh+TRANSFORMER- hhTRUNCFg-g-*TRUNC.DEMOg)j) 'TRUNC.Svg g WIPE4yR7R7 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:::,"BIG APPLE":6:X0278:X,0X1,154(1)X7:X,159::E09E9:FF0:7F3C:Z(1)277:CE120:DE50:YEC156C:Z(D1),YZ3C,YC:M2,155:M(MC)(M559):"^^ ";: !"#$. ********** NIBBLE PRD DISK **********[ * CHECKIT * * COPYRIGHT 1988 BY MICROSPARC, INC.*( * CONCORD, MA 01742 *2 ************************************* <:::"CHECKIT":"COPYRIGHT 1988 BY MICROSPARC, INC."& F90R 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)4096/ n6:"ARE YOU ENTERING A HEXADECIMAL":"FILE?";:A$:16368,0:A$Z xA$"N"A$(110)İ370:34218,128:210v A$"Y"A$(121)110 768,1:10:958:"WHAT IS THE STARTING ADDRESS OF THE":"FILE (IN HEX)";:H$:290:AH( A736A39424ĺ:"INVALID ADDRESS. PLEASE DOUBLE-CHECK":"AND RE-ENTER":350:140r 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..."n 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:2508 (4);"IN#A$8500":250b (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"  O"H0:L(H$):L1L4300:I1L:D((H$,I,1)):HHH(LI)(D48(D58D47)55(D64D71)):U,j6 $1600 VERSION@I0377:ML:5632I,ML:I:C5632JI018:ML:CML,(CML)111:T^21:"PRESS RETURN TO CONTINUE ";:CH$:CH$:16368,0: h $8500 VERSION+rI0377:ML:34048I,ML:I1| 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,169U 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,1334 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,32e 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,16, 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 &'()*+,-./01234567O=====|====|====|====|====|====|====|====|====|====|====|====|====|====|====|===8}  # Double Column Macro" by Sherman Paddock" Copyright (C) 1989# by MicroSPARC, Inc.! Concord, MA 01742START{010} E: 137 then' E = 138 - Len $9 : E = E / 2 + 1 : E = 72 - E :. W = E + 10 : W = W / 10 : E = E - W + 1 :, $1 = 'RM may be set to ' + Str$ W + "."' + Str$ E + ' thru 6.5 ONLY' : GoTo sa-C : ElseOff :{040}$oa-N >D.< Rtn : A = 0 : Posn C,L :If L > 2 then/ {move non-double-column lines to clipboard} sa-F : ElseOff :{050}oa-O >LM< Rtn >0< Rtn >SM< Rtn >0< Rtn >CI< Rtn >10< Rtn : Esc :{060}oa-9 : Posn C,J : J = J - 2 :oa-Z : oa-1 : oa-Z : I = 6 :{070} BEGIN : sa-1 : IfNot L > J then RPT : ElseOff :1{ _ _ _ _ _ BEGIN DOUBLE-COLUMNING _ _ _ _ _ _}{080} BEGIN :! up : $1 = Screen 42,24,4 : If $1 = "Stic" then# {Clean off excess Returns} oa-D : down : left : Rtn : J = J - 1 : RPT : ElseOff :down : oa-O >NP< Rtn! >SM< Rtn >254< Rtn : Esc :* {last line is now set to Marker 254}{090}oa-1 :If A = 1 then oa-M >F< ElseOff :1oa-F : right : right : Rtn >0< Rtn : Rtn : up :'{100} {zero the right & left margins}oa-O >RM< Rtn >0< Rtn >LM< Rtn >0< Rtn >SM< Rtn >0< Rtn >CI< Rtn >17< Rtn >SM< Rtn >1< Rtn : Esc :. {very first line is now set to Marker 1}{110} oa-Z : A = W - 2 : B = B + 1 : I = K + 1 : J = J - 3 :If I > 10 then I = 10 : ElseOff :sa-6 : oa-K : Rtn :{120} BEGIN : sa-3 : If J > 1 then) : down : oa-Z : down : I = 13 : RPT : ElseOff :{130}oa-D : Rtn : down :oa-left : Posn M,L :If M > 1 then down : oa-D : Rtn : up : sa-8 : print $9 : left : A = A + A : sa-D : oa-Spc :+ right : If J = 0 then down : ElseOff :{140}oa-D : down :Rtn :oa-F : right : right : Rtn >0< Rtn : Rtn : down :oa-D : up : up : up : Rtn :# {work settings are now deleted}{150}oa-Z : oa-1 :0$1 = "Double-Columning Complete" : GoTo sa-C>!1{_ _DETERMINE WHERE TO START DOUBLE-COLUMN _ _}{160} B:< BEGIN : Posn C,L : If L = I then, I = I + 1 : down : RPT : ElseOff :If I > L then1 $1 = 'No Right-Margin MARKER has been set' :! oa-1 : GoTo sa-C : ElseOff :-B = L - I + B + 1 : K = L - B : L = L + 1 :If L > 21 then L = 21 : ElseOff :oa-Z : $1 = Screen 9,L,5 >!1{_ _PRINT ERROR OR ENDING MESSAGE AND QUIT _ _}{170}/C:< Bell : msg $1 + ' - Press any key' :Key : msg "" :If D = 1 then {reset to overstrike mode} oa-E : ctrl-x : ElseOff : Stop >!1{_ _ _ INSERT SELECTED NUMBER OF SPACES _ _ _ }{180} D:< BEGIN : If M < A then" Spc : M = M + 1 : RPT >!1{ _ _ _ _ MOVE TOP LINES TO CLIPBOARD _ _ _ _ }{190}*F:< up : oa-left : oa-M >T< A = 1 : BEGIN : Posn C,L : If L > 1 then up : RPT : ElseOff :Rtn : down >!1{ _ _ _ _ _ _ BLOCK OFF ALL LINES _ _ _ _ _ _ }{200} 1:< BEGIN : IfNot I = 21 then I = I + 1 : ElseOff :! down : $1 = Screen 1,I,8 : If $1 = "--------" then sa-2 : ElseOff :V = PEEK $10F5 :If L < J then If V = 160 then {in case of line of spaces} oa-Spc : right : del :* oa-right : V = Peek $10F5 : oa-left : IfNot V = 160 then, right : del : spc : left : ElseOff :{210}oa-left : Posn C,L :If C > W + 1 then, left : del : right : left : C = C - 1 : ElseOff :IfNot C = 1 then left : C = C - 1 :'Else : oa-Spc : C = C + 1 : ElseOff :V = Peek $10F5 : IfNot V = 160 then IfNot V = R + 128 then( right : C = C + 1 : ElseOff :{220} BEGIN : IfNot C = W Then+ Spc : C = C + 1 : RPT : ElseOff :V = Peek $10F5 :IfNot V = R + 128 then sa-K : ElseOff : oa-Right >!1{ _ _ _ INSURE IT IS A PRINT STATEMENT _ _ _ _}{225},2:< oa-Z : $1 = Screen 1,I,8 : oa-Z : IfNot $1 = "--------" then {reset end of file}% up : Posn C,J : J = J - 2 : If I = 21 then I = I - 1 >!1{ _ _ _ _ GET RID OF EXCESSIVE SPACES _ _ _ _ }{230}K:< Rtn : down : up : BEGIN : V = Peek $10F5 : If V = 160 then right : del : RPT : Else : del >!1{ _ _ _ _ DETERMINE LENGTH OF PAGES _ _ _ _ _ }{240}3:< P = 0 : L = 0 : BEGIN : L = L + 1 :  If I < 22 then I = I + 1 : ElseOff : $1 = Screen 33,I,11 :$ IfNot $1 = "End of Page" then down : RPT : ElseOff : If L > J then( {calculate because of odd page}+ P = L / 2 : L = L - P : ElseOff : L = L - 1 : If P = 0 then0 P = L : L = 0 : down : RPT : ElseOff :{260}.Q = 0 : down : oa-D : Esc : {erase page No.}If P < L then" Q = L - P : L = P : ElseOff : P = P + L : J = J - P :L = P / 2 : P = P - L :.M = L + Q : {make length of both pages same}1{_ _ _ _ _ GET TO TOP OF SECOND PAGE _ _ _ _ _}{270} BEGIN : up : M = M - 1 : IfNot M = 0 then( {find beginning of second page} RPT : ElseOff :/sa-6 : {clean off excess CR's on page brakes}/oa-O >SM< Rtn >2< Rtn : Esc : {mark 2nd page}oa-Z : BEGIN : sa-N : If L > 0 then RPT :# Else oa-F : right : right :+ Rtn >1< Rtn : Rtn : down : sa-6 : oa-K : Rtn :% oa-F : {get to second page}. right : right : Rtn >1< Rtn : Rtn >!1{ _ _ _ _ MOVE LINE UP TO FIRST PAGE _ _ _ _ _}{280} N:<&oa-F : right : right : Rtn >2< Rtn : Rtn : down :sa-8 : N = F : right : del :$1 = Screen M,13,1 : S = 0 :If $1 = Chr$ 32 then& left : oa-spc : S = 1 : ElseOff :{290}left : $2 = "" :$oa-M >T< {move line to clip board}#BEGIN : $2 = Screen M,13,1 + $2 :. left : M = M - 1 : {find start of line} If M > 1 then RPT : ElseOff : $2 = $9 + Screen M,13,1 + $2 :Rtn : right : del : {line is now deleted}oa-F : right : right : Rtn( >1< Rtn : Rtn : {find top marker}-oa-D : Rtn : down : oa-O >SM< Rtn >1< Rtn :Esc : up : up :sa-8 : right : L = L - 1 :" {print line and insert divider}If N > 0 then, {move from clipboard to keep Ctrl chrs}& N = 0 : oa-M >F< del : print $9 :Else : {print w/o Ctrl chrs} left : print $2 : If S = 1 then del : oa-spc >!1{ _ _ ERASE EXCESSIVE CR's ON PAGE BREAKS _ _ }{300} 6:< BEGIN : $1 = Screen 42,24,4 : If $1 = "Stic" then$ oa-D : down : left : Rtn : sa-U : RPT >!{310} U:<If J > 0 then% {there are still more pages left} J = J - 1 :Else sa-V >!{320} V:<If L = P then! {columns one & two are equal} L = L - 1 :Else P = P - 1 :- {cols 1 & 2 are not equal, so add line}% oa-O >SM< Rtn >10< Rtn : esc : oa-F : right : right : Rtn >254< Rtn : Rtn : up : Rtn : del : M = 0 : sa-D : oa-spc : oa-F : right : right : Rtn >10< Rtn : Rtn : oa-D : Rtn >!1{_ _ _ _ ADD EXTRA SPACES IF CTRL CODE _ _ _ _}{330} 8:<M = 0 : C = 0 : F = 0 : BEGIN :( M = M + 1 : $1 = Screen 42,24,4 : IfNot $1 = "Line" then sa-Z : Else V = Peek $10F5 : If V = 255 then F = 1 : ElseOff : right : If M < A then RPT : ElseOff : BEGIN : If C > 0 then. Spc : C = C - 1 : M = M + 1 : RPT >! Z:<IfNot $1 = "Stic" then) {increase line & mark for clipboard} C = C + 1 : F = 1 :$Else : right : del : spc : left >!:X(1)25:X(2)50:X(3)240:Y(1)25:Y(2)180:Y(3)100:I0191:J0279:M0:K13:QIY(K):RJX(K):S(QQRR):MM(.2S50)(1(.1S)):K:A((M.5)8):((A2(A2))2.1)7:J,I:J:I:;< ** DOLLAR.FORMAT;* BY ANTONIO DE PASQUALEY(* COPYRIGHT (C) 1989 q2* MICROSPARC, INC.<* CONCORD, MA 01742F*P::Z"DOLLAR.FORMAT":"COPYRIGHT (C) 1989":"MICROSPARC, INC."4 d:" DOLLAR FORMAT SAMPLE OUTPUT"::"ORIGINAL INPUT";:22);"FORMATTED OUTPUT":h nX17:V:NV:1000:3);V;:35(N$));N$:X: xX17:V:NV:1000:3);V;:35(N$));N$:X 23: .00785, 1.337, 23.412, 276658, 4355.458, 58927.1855, 277372.9131 -.0871,-2.896,-96.3334,-587.7689,-6788.2782,-37889.37,-187124.0167 S **********************o * * * FORMAT ROUTINE * * STARTS HERE * * * **********************  (RDFLAG1)1010:DN(10):DN$(10):RDFLAG1E N9999999.99N9999999.99N$"*********": INDX110:DN(INDX)0:DN$(INDX)"":INDX:S$("$(",1,11(N0)):N(N) N(100(((N.0051)100)100)).001:N$"" INDX1011:N1(N10):N2(N110):N3(NN2):DN(INDX)N3:NN1:INDX` INDX110:DN$(INDX)(DN(INDX)):INDX:INDX18:DN$(INDX)"0"DN$(INDX)"":INDX $DN$(2)""DN$(2)DN$(2)"," .DN$(5)""DN$(5)DN$(5)"," 8DN$(8)DN$(8)".":N$S$:DN$(8)"."DN$(8)"0." BINDX110:N$N$DN$(INDX):INDX:(N$,2)"$("N$N$")" L6 ,@ 6HHHHHHH$"zhhHHHHHHH$"zhhk?@ABCD*********************************** * * * INST.CDA Source Code * * by Sandy Mossberg * * * * Copyright (C) 1989 * * by MicroSPARC, Inc. * * Concord, MA 01742 * * * *********************************** ; ; ; If you are using APW, issue the following: ; 1. ASML INST.CDA.ASM ; 2. COPY INST.CDA */SYSTEM/SYSTEM.SETUP ; 3. FILETYPE */SYSTEM/SYSTEM.SETUP/INST.CDA $B7 KEEP INST.CDA INST_CDA START ; Check for ROM version 01: LDA #0 ;zero result regs PHA ;space for result (P-reg) PHA ; (A-reg) PHA ; (X-reg PHA ; (Y-reg) PHA ;entry A-reg (lo byte used) PHA ;entry X-reg (lo byte used) PHA ;entry Y-reg (lo byte used) PEA $FE1F ;IDROUTINE entry LDX #$2403 ;FWEntry tool call JSL $E10000 PLY ;Y-reg (lo byte returned) PLX ;X-reg (lo byte returned) PLA ;A-reg (lo byte returned) PLA ;P-reg (lo byte returned) CPY #1 BNE Done ;ROM 01 not found ; ROM version 01 found so install CDAs: LDA #0 ;zero result regs PHA ;space for result (P-reg) PHA ; (A-reg) PHA ; (X-reg PHA ; (Y-reg) PHA ;entry A-reg (lo byte used) PHA ;entry X-reg (lo byte used) PHA ;entry Y-reg (lo byte used) PEA $FEB4 ;# command entry (ROM 01) LDX #$2403 ;FWEntry tool call JSL $E10000 PLY ;Y-reg (lo byte returned) PLX ;X-reg (lo byte returned) PLA ;A-reg (lo byte returned) PLA ;P-reg (lo byte returned) ; Exit program: Done RTL END FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy0001 1800 *********************************** 0002 1800 * * 0003 1800 * MEMORY PEEKER * 0004 1800 * interpreted by Sandy Mossberg * 0005 1800 * * 0006 1800 * Copyright (C) 1988 * 0007 1800 * by MicroSPARC, Inc. * 0008 1800 * Concord, MA 01742 * 0009 1800 * * 0010 1800 *********************************** 0011 1800 0012 1800 ; Zero Page Equates: 0013 1800 0014 1800 BytConvRef GEQU $80 ;ASCII conversion base point 0015 1800 LinCounter GEQU $80 ;line output counter (W) 0016 1800 BlkHandle GEQU $82 ;handle to memory block (L) 0017 1800 BlkRecord GEQU $85 ;start of block record data 0018 1800 BlkSize GEQU $8D ;size of memory block (L) 0019 1800 FwdLinkPtr GEQU $95 ;ptr to next block record (L) 0020 1800 CurrFreCnt GEQU $99 ;current free memory (L) 0021 1800 TotFreCnt GEQU $9D ;total free memory (L) 0022 1800 LinString GEQU $A1 ;start of line data string 0023 1800 ; ; ($A1=length, $A2-->=text) 0024 1800 0025 1800 ; ORG $FF1800 ;ROM code in bank $FF 0026 1800 0027 1800 MP_Code START 0028 1800 0029 1800 ***************************************************************** 0030 1800 * 0031 1800 * CDA Installation Code: 0032 1800 * 0033 1800 ***************************************************************** 0034 1800 0035 1800 C2 30 MP_Install REP #%00110000 ;clear m,x flags 0036 1802 LONGA ON ; 16-bit accum/memory 0037 1802 LONGI ON ; 16-bit index 0038 1802 F4 FF 00 PEA MP_Handle|-16 ;handle to CDA header 0039 1805 F4 91 1A PEA MP_Handle ; ($FF1A91) 0040 1808 A2 05 0F LDX #$0F05 ;InstallCDA 0041 180B 22 00 00 E1 JSL $E10000 0042 180F 6B RTL 0043 1810 0044 1810 ***************************************************************** 0045 1810 * 0046 1810 * CDA Code: 0047 1810 * 0048 1810 ***************************************************************** 0049 1810 ; 0050 1810 ; Initialize 0051 1810 ; 0052 1810 ; Save current output configuration on stack: 0053 1810 0054 1810 F4 00 00 MP_Start PEA $0000 ;space for output device code 0055 1813 F4 00 00 PEA $0000 ;space for output slot/vector 0056 1816 F4 00 00 PEA $0000 0057 1819 A2 0C 13 LDX #$130C ;GetOutputDevice 0058 181C 22 00 00 E1 JSR $E10000 ; (leave on stack) 0059 1820 0060 1820 F4 00 00 PEA $0000 ;space for output AND mask 0061 1823 F4 00 00 PEA $0000 ;space for output OR mask 0062 1826 A2 0C 0D LDX #$0D0C ;GetOutGlobals 0063 1829 22 00 00 E1 JSR $E10000 ; (leave on stack) 0064 182D 0065 182D ; Set slot 3 text output (negative ASCII): 0066 182D 0067 182D F4 FF 00 PEA $00FF ;AND mask (no change) 0068 1830 F4 80 00 PEA $0080 ;OR mask (set high bit) 0069 1833 A2 0C 0A LDX #$0A0C ;SetOutGlobals 0070 1836 22 00 00 E1 JSR $E10000 0071 183A 0072 183A F4 00 00 PEA $0000 ;BASIC device type 0073 183D F4 00 00 PEA $0000 ;input from slot 3 0074 1840 F4 03 00 PEA $0003 0075 1843 A2 0C 10 LDX #$100C ;SetOutputDevice 0076 1846 22 00 00 E1 JSR $E10000 0077 184A 0078 184A F4 00 00 PEA $0000 ;init input device 0079 184D A2 0C 15 LDX #$150C ;InitTextDev 0080 1850 22 00 00 E1 JSR $E10000 0081 1854 0082 1854 F4 01 00 PEA $0001 ;init output device 0083 1857 A2 0C 15 LDX #$150C ;InitTextDev 0084 185A 22 00 00 E1 JSR $E10000 0085 185E ;................................................................ 0086 185E ; 0087 185E ; Display menu: 0088 185E ; 0089 185E C2 30 ShowMenu REP #%00110000 ;clear m,x flags 0090 1860 LONGA ON ; 16-bit accum/memory 0091 1860 LONGI ON ; 16-bit index 0092 1860 F4 FF 00 PEA MenuText|-16 ;pointer to text string 0093 1863 F4 E3 19 PEA MenuText ; ($FF19E3) 0094 1866 A2 0C 1A LDX #$1A0C ;WriteLine 0095 1869 22 00 00 E1 JSR $E10000 0096 186D ;................................................................ 0097 186D ; 0098 186D ; Get user command and route valid requests: 0099 186D ; 0100 186D MSB OFF ;generate pos ASCII chars 0101 186D 0102 186D F4 00 00 GetCommand PEA $0000 ;space for ASCII char code 0103 1870 F4 00 00 PEA $0000 ;no echo 0104 1873 A2 0C 22 LDX #$220C ;ReadChar 0105 1876 22 00 00 E1 JSR $E10000 0106 187A 68 PLA ;retrieve input 0107 187B 29 7F 00 AND #$007F ;convert to positive ASCII 0108 187E C9 61 00 CMP #'a' 0109 1881 90 03 BCC GC1 ;upper case found 0110 1883 49 20 00 EOR #$0020 ;shift low case to up case 0111 1886 C9 55 00 GC1 CMP #'U' 0112 1889 F0 20 BEQ DoUSED ;Used list requested 0113 188B C9 50 00 CMP #'P' 0114 188E F0 20 BEQ DoPURGE ;Purge list requested 0115 1890 C9 46 00 CMP #'F' 0116 1893 F0 20 BEQ DoFREE ;Free list requested 0117 1895 C9 51 00 CMP #'Q' 0118 1898 D0 D3 BNE GetCommand ;invalid char so get another 0119 189A ;................................................................ 0120 189A ; 0121 189A ; QUIT handler: 0122 189A ; 0123 189A C2 30 REP #%00110000 ;clear m,x flags 0124 189C LONGA ON ; 16-bit accum/memory 0125 189C LONGI ON ; 16-bit index 0126 189C A2 0C 0A LDX #$0A0C ;SetOutGlobals 0127 189F 22 00 00 E1 JSR $E10000 ; (on stack) 0128 18A3 A2 0C 10 LDX #$100C ;SetOutputDevice 0129 18A6 22 00 00 E1 JSR $E10000 ; (on stack) 0130 18AA 6B MP_Shut RTL 0131 18AB ;................................................................ 0132 18AB ; 0133 18AB ; USED list handler: 0134 18AB ; 0135 18AB A2 00 00 DoUSED LDX #$0000 ;index used block records 0136 18AE 80 0A BRA DoList ;to common list handler 0137 18B0 ;................................................................ 0138 18B0 ; 0139 18B0 ; PURGE list handler: 0140 18B0 ; 0141 18B0 A2 04 00 DoPURGE LDX #$0004 ;index purged block records 0142 18B3 80 05 BRA DoList ;to common list handler 0143 18B5 ;................................................................ 0144 18B5 ; 0145 18B5 ; FREE list handler: 0146 18B5 ; 0147 18B5 A2 08 00 DoFREE LDX #$0008 ;index free block records 0148 18B8 80 00 BRA DoList ;[superfluous instruction] 0149 18BA ;................................................................ 0150 18BA ; 0151 18BA ; Common list handler: 0152 18BA ; 0153 18BA ; Point at first block record in selected chain: 0154 18BA 0155 18BA 08 DoList PHP ;save entry status 0156 18BB 78 SEI ;disable interrupts 0157 18BC BF 00 16 E1 LDA $E11600,X ;point at selected 0158 18C0 85 82 STA BlkHandle ; block records 0159 18C2 BF 02 16 E1 LDA $E11602,X 0160 18C6 85 84 STA BlkHandle+2 0161 18C8 0162 18C8 ; Zero counters: 0163 18C8 0164 18C8 64 80 STZ LinCounter 0165 18CA 64 9D STZ TotFreCnt 0166 18CC 64 9F STZ TotFreCnt+2 0167 18CE 0168 18CE ; Print headers for block record data: 0169 18CE 0170 18CE F4 FF 00 PEA DataText|-16 ;pointer to text string 0171 18D1 F4 16 1A PEA DataText ; ($FF1A16) 0172 18D4 A2 0C 1A LDX #$1A0C ;WriteLine 0173 18D7 22 00 00 E1 JSR $E10000 0174 18DB E2 30 SEP #%00110000 ;set m,x flags 0175 18DD LONGA OFF ; 8-bit accum/memory 0176 18DD LONGI OFF ; 8-bit index 0177 18DD 0178 18DD ; Check end of block record chain: 0179 18DD 0180 18DD A5 82 NextRecord LDA BlkHandle 0181 18DF 05 83 ORA BlkHandle+1 0182 18E1 05 84 ORA BlkHandle+2 0183 18E3 D0 1F BNE DoString ;another record in chain 0184 18E5 0185 18E5 ; Check free memory count when block record chain completed: 0186 18E5 0187 18E5 A5 9D LDA TotFreCnt 0188 18E7 05 9E ORA TotFreCnt+1 0189 18E9 05 A0 ORA TotFreCnt+3 ;[should be ORA TotFreCnt+2] 0190 18EB F0 13 BEQ ListDone ;don't print zero free count 0191 18ED 0192 18ED ; Setup and print total free memory count: 0193 18ED 0194 18ED A2 3C LDX #$3C ;put text in line buffer 0195 18EF ; ;[LDA #$35 more logical] 0196 18EF BF 52 1A FF PrtTotFre LDA >TotFreText,X ;get char at $FF1A52,X 0197 18F3 95 A1 STA LinString,X ;put into line string buffer 0198 18F5 CA DEX 0199 18F6 10 F7 BPL PrtTotFre ;get another char 0200 18F8 A2 1D LDX #$1D ;"Total Free Memory" 0201 18FA 20 9A 19 JSR Conv3Byt ; at $9D-$9F 0202 18FD 20 CF 19 JSR PrintLine ;print the line 0203 1900 0204 1900 ; List completed: 0205 1900 0206 1900 28 ListDone PLP ;restore entry status 0207 1901 4C 5E 18 JMP ShowMenu ;get another menu selection 0208 1904 ;................................................................ 0209 1904 ; 0210 1904 ; Prepare and print string containing data from one block record: 0211 1904 ; 0212 1904 ; Transfer 20-byte block record to $85-$98: 0213 1904 0214 1904 64 A1 DoString STZ LinString ;zero length byte of string 0215 1906 A0 13 LDY #$13 ;index 19(+1) bytes 0216 1908 B7 82 TfrBlkRec LDA [BlkHandle],Y ;FROM block record 0217 190A BB TYX 0218 190B 95 85 STA BlkRecord,X ;TO zero page 0219 190D 88 DEY 0220 190E 10 F8 BPL TfrBlkRec ;back for more 0221 1910 0222 1910 ; Zero free count bytes for this segment: 0223 1910 0224 1910 C2 20 REP #%00100000 ;clear m flag 0225 1912 LONGA ON ; 16-bit accum/memory 0226 1912 64 99 STZ CurrFreCnt 0227 1914 64 9B STZ CurrFreCnt+2 0228 1916 0229 1916 ; If at end of block record chain, do not calculate free space: 0230 1916 0231 1916 A5 95 LDA FwdLinkPtr 0232 1918 05 97 ORA FwdLinkPtr+2 0233 191A F0 2F BEQ SetString ;forward link = 0 0234 191C A0 02 LDY #$02 0235 191E A7 95 LDA [FwdLinkPtr] 0236 1920 17 95 ORA [FwdLinkPtr],Y 0237 1922 F0 27 BEQ SetString ;next master ptr = 0 0238 1924 0239 1924 ; Calculate current free space: 0240 1924 0241 1924 ;--> Calculate area between this memory segment and next segment: 0242 1924 0243 1924 A7 95 LDA [FwdLinkPtr] ;Start of next segment (lo) 0244 1926 38 SEC ; minus 0245 1927 E7 82 SBC [BlkHandle] ; start of this segment (lo) 0246 1929 85 99 STA CurrFreCnt ; = intersegmental size (lo) 0247 192B B7 95 LDA [FwdLinkPtr],Y ;Start of next seg (hi) minus 0248 192D F7 82 SBC [BlkHandle],Y ; start of this segment (hi) 0249 192F 85 9B STA CurrFreCnt+2 ; = intersegmental size (hi) 0250 1931 0251 1931 ;--> Free space = difference between above value and block size: 0252 1931 0253 1931 A5 99 LDA CurrFreCnt ;Intersegmental size (lo) 0254 1933 38 SEC ; minus 0255 1934 E5 8D SBC BlkSize ; size of current block (lo) 0256 1936 85 99 STA CurrFreCnt ; = free space (lo) 0257 1938 A5 9B LDA CurrFreCnt+2 ;Interseg size (hi) minus 0258 193A E5 8F SBC BlkSize+2 ; size of current block (hi) 0259 193C 85 9B STA CurrFreCnt+2 ; = free space (hi) 0260 193E 0261 193E ; Add current free space to total free space: 0262 193E 0263 193E A5 99 LDA CurrFreCnt ;current free space (lo) 0264 1940 18 CLC ; plus 0265 1941 65 9D ADC TotFreCnt ; total free space (lo) 0266 1943 85 9D STA TotFreCnt ; = new total free space (lo) 0267 1945 A5 9B LDA CurrFreCnt+2 ;current free space (hi) plus 0268 1947 65 9F ADC TotFreCnt+2 ; total free space (hi) 0269 1949 85 9F STA TotFreCnt+2 ; = new total free space (hi) 0270 194B 0271 194B ; Convert zero page hex data to ASCII line string: 0272 194B 0273 194B E6 80 SetString INC LinCounter ;bump block record count 0274 194D E2 30 SEP #%00110000 ;set m,x flags 0275 194F LONGA OFF ; 8-bit accum/memory 0276 194F LONGI OFF ; 8-bit index 0277 194F A2 00 LDX #$00 ;line count ("#") 0278 1951 20 A1 19 JSR Conv2Byt ; at $80-$81 0279 1954 A2 02 LDX #$02 ;handle ("Handle") 0280 1956 20 9A 19 JSR Conv3Byt ; at $82-$84 0281 1959 A2 05 LDX #$05 ;master pointer ("Addr") 0282 195B 20 9A 19 JSR Conv3Byt ; at $85-$87 0283 195E A2 09 LDX #$09 ;attributes ("Attr") 0284 1960 20 A1 19 JSR Conv2Byt ; at $89-$8A 0285 1963 A2 0B LDX #$0B ;owner ID ("ID") 0286 1965 20 A1 19 JSR Conv2Byt ; at $8B-$8C 0287 1968 A2 0D LDX #$0D ;block size ("Size") 0288 196A 20 93 19 JSR Conv4Byt ; at $8D-$90 0289 196D A2 11 LDX #$11 ;backward link ("Prev") 0290 196F 20 9A 19 JSR Conv3Byt ; at $91-$93 0291 1972 A2 15 LDX #$15 ;forward link ("Next") 0292 1974 20 9A 19 JSR Conv3Byt ; at $95-$97 0293 1977 A5 99 LDA CurrFreCnt 0294 1979 05 9A ORA CurrFreCnt+1 0295 197B 05 9B ORA CurrFreCnt+2 0296 197D F0 05 BEQ LineOut ;free count = 0 so skip it 0297 197F A2 19 LDX #$19 ;current free count ("Free") 0298 1981 20 9A 19 JSR Conv3Byt ; at $99-$9B 0299 1984 0300 1984 ; Print line string (i.e. one line of data): 0301 1984 0302 1984 20 CF 19 LineOut JSR PrintLine 0303 1987 0304 1987 ; Set handle to next block: 0305 1987 0306 1987 A2 03 LDX #$03 ;transfer 4 bytes from 0307 1989 B5 95 NextHandle LDA FwdLinkPtr,X ; forward link pointer 0308 198B 95 82 STA BlkHandle,X ; to zero page 0309 198D CA DEX 0310 198E 10 F9 BPL NextHandle 0311 1990 4C DD 18 JMP NextRecord ;back for next block record 0312 1993 ;................................................................ 0313 1993 ; 0314 1993 ; Convert 2-4 hex bytes to ASCII and place at end of line string: 0315 1993 ; 0316 1993 DA Conv4Byt PHX ;save X-reg 0317 1994 B5 83 LDA BytConvRef+3,X ;get 4th byte, convert to 0318 1996 20 B1 19 JSR SetStrByte ; ASCII and add to string 0319 1999 FA PLX ;restore X-reg 0320 199A 0321 199A DA Conv3Byt PHX ;save X-reg 0322 199B B5 82 LDA BytConvRef+2,X ;get 3rd byte, convert to 0323 199D 20 B1 19 JSR SetStrByte ; ASCII and add to string 0324 19A0 FA PLX ;restore X-reg 0325 19A1 0326 19A1 DA Conv2Byt PHX ;save X-reg 0327 19A2 B5 81 LDA BytConvRef+1,X ;get 2nd byte, convert to 0328 19A4 20 B1 19 JSR SetStrByte ; ASCII and add to string 0329 19A7 FA PLX ;restore X-reg 0330 19A8 0331 19A8 B5 80 LDA BytConvRef,X ;get 1st byte, convert to 0332 19AA 20 B1 19 JSR SetStrByte ; ASCII and add to string 0333 19AD 20 CB 19 JSR AddSpace ;add space to line string 0334 19B0 60 RTS 0335 19B1 ;................................................................ 0336 19B1 ; 0337 19B1 ; Place ASCII data at end of line string: 0338 19B1 ; 0339 19B1 ; Convert hex byte to ASCII: 0340 19B1 0341 19B1 MSB ON ;generate neg ASCII chars 0342 19B1 0343 19B1 48 SetStrByte PHA ;save byte 0344 19B2 4A LSR A ;isolate high order digit 0345 19B3 4A LSR A 0346 19B4 4A LSR A 0347 19B5 4A LSR A 0348 19B6 20 BC 19 JSR HexToAscii ;convert hex digit to ASCII 0349 19B9 68 PLA ;restore byte 0350 19BA 29 0F AND #$0F ;isolate low order digit 0351 19BC 0352 19BC ; Convert hex digit to negative ASCII: 0353 19BC 0354 19BC 09 B0 HexToAscii ORA #'0' 0355 19BE C9 BA CMP #'9'+1 0356 19C0 90 02 BCC AddToStr ;$01-$09 0357 19C2 69 06 ADC #$06 ;$0A-$0F 0358 19C4 0359 19C4 ; Put character at end of line string: 0360 19C4 0361 19C4 A6 A1 AddToStr LDX LinString ;get length of string 0362 19C6 95 A2 STA LinString+1,X ;put char at end of string 0363 19C8 E6 A1 INC LinString ;bump length of string 0364 19CA 60 RTS 0365 19CB 0366 19CB ; Put space at end of line string: 0367 19CB 0368 19CB A9 A0 AddSpace LDA #' ' ;neg ASCII space 0369 19CD 80 F5 BRA AddToStr 0370 19CF 0371 19CF ;................................................................ 0372 19CF ; 0373 19CF ; Print one line of data (i.e. line string): 0374 19CF ; 0375 19CF C2 30 PrintLine REP #%00110000 ;clear m,x flags 0376 19D1 LONGA ON ; 16-bit accum/memory 0377 19D1 LONGI ON ; 16-bit index 0378 19D1 F4 00 00 PEA LinString|-16 ;pointer to text string 0379 19D4 F4 A1 00 PEA LinString ; ($A1) 0380 19D7 A2 0C 1A LDX #$1A0C ;WriteLine 0381 19DA 22 00 00 E1 JSR $E10000 0382 19DE E2 30 SEP #%00110000 ;set m,x flags 0383 19E0 LONGA OFF ; 8-bit accum/memory 0384 19E0 LONGI OFF ; 8-bit index 0385 19E0 64 A1 STZ LinString ;zero leading length byte 0386 19E2 60 RTS 0387 19E3 ;................................................................ 0388 19E3 ; 0389 19E3 ; Text: 0390 19E3 ; 0391 19E3 32 MenuText DC H'32' ;length byte 0392 19E4 D5 BD A0 D5 DC C'U= Used list P= Purge list F= Free list ' 0393 1A0F D1 BD A0 D1 DC C'Q= Quit' 0394 1A16 0395 1A16 3B DataText DC H'3B' ;length byte 0396 1A17 8D 8D DC H'8D 8D' 0397 1A19 A3 A0 A0 A0 DC C'# Handle Addr Attr ID Size ' 0398 1A40 D0 F2 E5 F6 DC C'Prev Next Free' 0399 1A52 0400 1A52 35 TotFreText DC H'35' ;length byte 0401 1A53 8D DC H'8D' 0402 1A54 A0 A0 A0 A0 DC 34C' ' 0403 1A76 D4 EF F4 E1 DC C'Total Free Memory ' 0404 1A88 0405 1A88 BD A0 A0 A0 DC C'= ' ;used by PrtTotFre 0406 1A91 ; ;[superfluous] 0407 1A91 0408 1A91 ***************************************************************** 0409 1A91 * 0410 1A91 * Handle to CDA Header: 0411 1A91 * 0412 1A91 ***************************************************************** 0413 1A91 0414 1A91 95 1A FF 00 MP_Handle DC I4'MP_Header' 0415 1A95 0416 1A95 ***************************************************************** 0417 1A95 * 0418 1A95 * CDA Header: 0419 1A95 * 0420 1A95 ***************************************************************** 0421 1A95 0422 1A95 MSB OFF ;generate pos ASCII chars 0423 1A95 0424 1A95 0D MP_Header DC H'0D' ;length byte 0425 1A96 4D 65 6D 6F DC C'Memory Peeker' ;title 0426 1AA3 10 18 FF 00 DC I4'MP_Start' ;startup entry 0427 1AA7 AA 18 FF 00 DC I4'MP_Shut' ;shutdown entry 0428 1AAB 0429 1AAB END {|}~JAN. 1989 DISK (VOL 10/NO 1) 8 TRANSFORMER PICTURE THIS NOGGIN GETTING STARTED WITH AMPERSAND DOLLAR FORMATTING DOUBLE COLUMN MACRO FOR APPLEWORKS MEMORY PEEKER DESK ACCESSORY CHECKIT 5 TRANSFORMER RUN TRANSFORMER NOGGIN RUN NOGGIN GETTING STARTED WITH AMPERSAND RUN TRUNC.DEMO DOLLAR FORMATTING RUN DOLLAR.FORMAT 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. @ You will not be able to delete the titles that we've placed in the catalog to separate files. However, these will not interfere with the operation of the programs. The screen displays that follow show the files needed to create working copies of each program. @ To create a work disk for TRANSFORMER, remove all but the following files from a copy of this disk: TRANSFORMER TRANS These programs are included on both the DOS 3.3 and ProDOS sides of this disk. @ To create a work disk for PICTURE THIS, remove all but the following files from a copy of this disk: PLOAD.INSTALL SLIDE.SHOW SLIDE.OBJ These programs are included only on the ProDOS side of this disk. These programs are not included as an option in the program menu because they require special instructions. See the documentation for details. These programs run only on the IIGS. @ To create a work disk for NOGGIN, remove all but the following file from a copy of this disk: NOGGIN This program is included on both the DOS 3.3 and ProDOS sides of this disk. @ To create a work disk for GETTING STARTED WITH AMPERSAND COMMANDS, remove all but the following files from a copy of this disk: TRUNC.DEMO TRUNC These programs are included on both the DOS 3.3 and ProDOS sides of this disk. @ To create a work disk for DOLLAR FORMATTING, remove all but the following file from a copy of this disk: DOLLAR.FORMAT This program is included on both the DOS 3.3 and ProDOS sides of this disk. @ To create a work disk for DOUBLE COLUMN MACRO FOR APPLEWORKS, remove all but the following file from a copy of this disk: DBL.COL.MACRO This program is included only on the ProDOS side of this disk. This program 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 MEMORY PEEKER DESK ACCESSORY, remove all but the following file from a copy of this disk: INST.CDA This program is included only on the ProDOS side of this disk. This program is not included as an option in the program menu because it requires special instructions. See the documentation for details. @ In addition, we've placed a copy of the CHECKIT program on this disk. CHECKIT is a utility published in every issue of Nibble that aids in typing in programs from the magazine. See the Typing Tips in the latest issue of Nibble for details on using CHECKIT. We have also included the One- and Two-Liners. @ The source code files for the major assembly language programs have been included on this side of the 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: TRANS.S (Merlin) PLOAD.INSTALL.S (Merlin) SLIDE.OBJ.S (Merlin) TRUNC.S (Merlin) MEMORY.PEEKER.S (APW) INST.CDA.ASM (APW @ #  **********************; * NOGGIN *X * BY MARK YANNONE *u( * COPYRIGHT(C) 1989 *2 * MICROSPARC, INC. *< * CONCORD, MA 01742 *F **********************, P::(21);::10)"N O G G I N"41):"BY MARK YANNONE (C)1989 MICROSPARC, INC";s Z34,5:280:21:"SCORING:":"LETTERS IN WORD --> 4 5 6 7 8+": d"POINTS --> 1 2 3 5 10":I140:"-";::" <- -> (P)AUSE (N)EW (Q)UIT";:35,19:33,14M n32,13:X49200:B$(25,6),N(25),M(25):I(((78)256(79))):I1:EI25:FI6:B$(E,F):::F6u xE25:GIE:M(G)C::H130::280 GIE M((I)E)I:M(M)C140:M(M)M:N(G)M::LI5:ZI5:Z$(L,Z)B$(N(E),((I)F)I):EEI:::T300 :SC:ZI5:2Z4:LI5:1900 :LI5:2L4:Z5II:190W :Z5II:162Z:L5II:190v :L5II:162L:ZI5 (Z$(L,Z)" ",3);:::: 17:5::" "("00"(T)" ",4)::H(X)(X):TTI:TC270:H11040::A$"":(49152)128200:A$((49152)128) 49168,C:A$(80)A$(112)240:A$(8)A$(21)220:A$(78)A$(110)320:(A$(81)A$(113))300:200 SSI(A$(8))I(A$(21)):SS(S4)4:SCĴ(S)180,170,160 S160,170,180:150 :12:2:"WAITING...";:A$:49168,C:220s Y0::12:"ARE YOU SURE? (Y/N) ";:16368,0:AN$:AN$;:YAN$"Y"AN$"y":YAN$"n"AN$"N"250 12:40);: 18:3::(7)" S T O P "(7);::29:A$:120v12:15(32)::"SHAKING DICE":::R,L,H,H,D,O,W,R,O,V,R,G,Y,R,R,R,P,I,Y,R,F,S,P,I,D,D,O,N,H,T,S,E,N,U,S,S,S,A,R,A,F,I,X,B,K,J,Z,QU,S,A,R,I,Y,F,R,N,H,L,D,O,C,L,I,T,I,E,E,N,N,N,A,D,M,T,E"T,T,O,M,E,A,U,G,E,N,U,W,T,O,O,M,A,N,G,E,N,C,L,I,T,E,P,E,A,E,A,E,E,U,T,T,O,O,O,T,E,T,I,I,I,O,R,D,H,L,N,S,I,T,C,E,P,N,T,C,S,E,C,F,A,A,A,R,S,M,E,A,E,E,E#,250:Yī220-6::>@250:Y220GJ1208ɾ*@B@@ɚC `ti@ L @@HJJJ)8jXXh͵@%ЍɍÍ΍ԍ0;AAAT8`bɠ)"툌RS0bhPTh8`hh8L0bahP׾ پȾsξ8@ ) p@о־޾Ǿ p*.*Q 8 pbhh`HbhL 8 p0Ti׀0x80} پ8 pP0"Ⱦپ8 pb pX0bق-08 p/ p%0b܂0}8 p0 P@ ɀ8 P P) Pi HPzPiiȾپ8 p py0b قN0۾HHZHH'"hmȾȾ`čĠ٠č Į 卪 Ӎ é ì î Ĭ à ÍǠ ͠ՠ ĠՠŰ ԠՠŰ Ҡՠŵ ɍΠՠŵ ͠ՠŵ 쩍Ӡՠŵ Ӡՠŷ Ġՠ¸ Ġՠ¹ ͠ՠ÷ ˠՠø ƠՠŠ ΍͠ՠİ ͠ՠĶį ՠķ ԠՠĹ Ӡՠ  ͠ՠŠ ҠՠƵ РՠƵ ΠՠĠ ԠՠĠ 卍 ҠՠҠՠڠՠ Šՠ 덠 Šՠ Ԡՠű 卍 ŠÍÍō ŠÍÍōР ҠÍҠ̠ݱ ҠÍà̠ҍϠÍôҠӍҍΠÍøҠӍҍĠÍҠӍҍˠÍōҠӍҍōī РŠ 占Ѡ͠ 獠ǫ Ȱ٠ Ƞ٠ Ѡ٠ Ǡ٠ 占Рī٠ 占ѠȠ 占àǫ 占ǫР àȰ 占͠ 卍 î٠٠̬٠ Ѡ ҠԠ 򮍠٠ 占Š󍺲Ӡ Í ͫ͠ Íà ͠ ĭĠ 䍠à 䍠ҠҍàƠ 퍠РԠ 򍍪 Ơ̱̲ Šؠ 㮍 Ҡ ҍҍ٠ Ġ ؍à 􍺱ҍ؍̠Ь٠ 占Ь٠ à Р͠ 󿍠àŠ ĠΠ Р ŠΠ 獠𠹊 ͹čЍ¹ƍ¹²ɍ¹³Í¹´΍¹°ԍ¹± Πōī ˫ ̱Ġ 䍠ī ĭĮƠ 퍠ؠĠ ̲٠ Π ōӍ͠Ӡ 占Ӡܠ 卍 ĠĠ ҠĠ č٠ 䍠ؠ 卺ؠ ؍Р ѠĠƠ Рө٠ 獠Šˍٍ٠ 俍à 獠ٍ٠Π  占ڠ͠ ōҠĠ Ҡ 占Ӡ ħ 덠ōà Ӎˠ 덠à 䍠Р ĠōҠƠ ፠٠Ҭ٠ 占ө٠ ٍٍ̠ ōҠ ፠ ፠ԍҠ ōԠ 占ڠˠ ű ҫ͠ Ơ ΍ō  ð ΍͠ ͠ 嬍͠ 䍠͠ ύĠ 占Рñ 덠ѠÍР ѠÍРð 占ѠÍŠĠ ȍҠ ÍŠōà 占ҠӍҠƍ٠ө٠ 䍠Ҭٍٍ̠Ӡ ÍҠ 㮍ҠŠ 占 㮍РԠ􍍪 àōčō  덠ŭ 덠ؠҠ ٠Ҡ 占ΠŬԍ  덠Ҡ 占ÍàŠ 덠ҍР Šà 占Š àōĠ 占ѠŰРѠŰРѠ԰Ѝō̠Š ԰Р̠Ű 荍 Űōİ 獠ڍ 占ԍōčؠа̠űİؠ 썠ؠ ŠаؠƍаŬ؍̠űŰؠ ፠؍̠аō 占ˍōԍ԰РōˍčōҠˍҍРİԠ԰Ѝ̠ō Űō 獠ڠ ԰РōˍčōҠˍڠ 忍Š԰Р 占̠Š ō Űōİ § 㮩ڍōčōū РѠˍРѠˍ Үō̠ҍ 讍 宍ˍؠū 占 ㍠ū ㍠Ġưư ؠв̠űİؠ ፠؍؍ؠø ű÷Šв űø űƍ̠űİ؍؍؍ؠ 忍Š 卪 űŰ 𩮍ؠū вÍà 積؍Šв ؠ ؍ 􍺲ū؍̠űŰؠ ፠؍؍̠ ፍ 卪 ᮍٍ ؠū٠ вÍà ؍Šв à ˠ 占ōԍ԰РōˍčōҠˍҍРİԠ԰Ѝ̠ō ˠōؠӠ 䍠 ፠٠Ҡ ٍؠ 򩍠 Ҡ  荠ڠ ؠ ̠ű 䍠Íàˠ ˠ 덠ӍĠàĢ̠ؠčà ĢؠĸİƠӠĠՠ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)I38Pghם`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&MIKE0@"8`0H"hb8`0:""8`0"8` Ů 卪 Ӎ é ì î Ĭ à ÍǠ̠ՠű 󮍪ŠÍÍōР 卪ŠÍÍō ɮ 󮍪Рō 䍠 占 荠 占 󍠠 čؠ̠̍ōӍ  ŰĠō Ű 獠ؠ荠̠̍Ƞ ōӍ 卪 宍Ҡō 퍠÷ ؠ̠̍Ű 獠ؠ獠̠̍ōӍ 䮍 Ԭ Πōؠ̠̍ōӍȠӠ  ** SLIDE.SHOW0* BY STEVE ELLISJ(* COPYRIGHT (C) 1989b2* MICROSPARC, INC.{<* CONCORD, MA 01742F*PD$(4):F$(45):F0:P1$""Z600dD$"-PLOAD.INSTALL"n610xD$"BLOAD SLIDE.OBJ,A$300"D$"PR#3" 390q ::620:1::"Super Hi-Res Slide Show":"By Steve Ellis":"Copyright (C) 1989":"MicroSPARC, Inc.":: "1) Enter Slot/Drive" :"2) Enter Prefix"::"3) Turn picture names off"::"4) Turn picture names on"::"5) See slide show"::"6) Quit"::"Your Choice: ";B 16368,0:AN$:AN$"1"AN$"6"180M AN$;:d AN$"1"İ510:140v AN$"2"270 PP$P1$::"Enter Prefix: /";P1$:P1$""P1$"/"P1$:(P1$,2)"//"P1$(P1$,(P1$)1):2401 ERR0:FL1:D$"prefix ";P1$:D$"catalog"::"Press Return to continue ";:AN$:AN$;:G FL0:ERRP1$PP$P 150f AN$"3"F1:150| AN$"4"F0:150 "AN$"6"Č852::23::shut down QuickDraw and end ,P1$""ĺD$;"PREFIX":P1$:320 6(P1$,1)"/"P1$P1$"/" @X1" JD$"OPEN"P1$",TDIR":D$"READ"P1$2 TA$:A$:A$u ^A$:T$(A$,18,3):T$"PIC"T$"PNT"T$"$C1"T$"$C0"350 hY1521:(A$,Y,1)" "Ă rF$(X)(A$,2,Y) |XX1:Y2:Y:350: D$"CLOSE":FLERR1:16:"Error using prefix ";P1$:"Press Return to continue ";:16368,0:AN$:16:79):79);:250 X1ė:"Disk error or no pictures on that disk...press Return to continue ";:16368,0:AN$:AN$;:140 490 768:Startup Quickdraw Y1 D$"PLOAD"P1$F$(Y)WZ1(F$(Y)):735Z,((F$(Y),Z,1))::735Z,0:794:poke title into memory and calc. its pixel widthH(320(866))2:824,H:center the title F0Č819:draw the titleA$:(A$)27500YY1:YX440852:F0:140580:1:"Slot:";:16368,0:S:S4S7520!SP1:3:"Drive:";:16368,0:D:D1D2540&D:D$;"PREFIX,S";S;",D";D:D$"catalog"::"Press Return to continue ";:AN$:AN$;:0D$"PREFIX":P1$:216,0::D3288:(222)165706N:"Invalid Slot and Drive. Press RETURN to continue.";:16368,0:AN$:520[X:"CANNOT FIND PLOAD.INSTALL":|b:"CANNOT FIND SLIDE.OBJ":l22:1:"While slide show is running, press Return for next picture":"and Escape for this menu";: ******* 8/08/86 *******;* ProDOS STARTUP *X* BY OWL *u(* COPYRIGHT (C) 1987 *2* BY MICROSPARC, INC. *<* CONCORD, MA 01742 *F***********************P16384Z::D$(4):(21)d9704 n ********** GET HI-RES SCREEN AND SET DISPLAY SWITCHESf x11:3:"MICROSPARC PRESENTS NIBBLE SOFTWARE" 15:13:"PLEASE WAIT..." D$"BRUN STARTUP.SCREEN" G(16297)(16300)(16301)(16304) ********** READ INFO FROM NIBMENU TEXTFILE 11203 P$(20): P$ = PROGRAM NAME a 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$:1j 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"ī600O  ********** CYCLE THRU NIBMENU TEXT SCREENSW A1` :3 S$(A)"@"İ1030::3:((FLAG$"ESC"))490:600 S$(A)"#"510 S$(A) AA1:460  ********** LAST TEXT SCREEN BEFORE MENU :3!6:"Thanks again for your order !"+12:S6:"ALL PROGRAMS ON THIS DISK ARE"{&6:"COPYRIGHT (C) 1988 BY NIBBLE"06:"MICROSPARC, INC. CONCORD, MA"::17:5:"UNAUTHORIZED COPYING IS ILLEGAL"D1030N ********** SET UP MENU XMEMM2:X$(0)" ":X$(1)"-->":Vb1:1:"Selection: : Instructions"l3:"----------------------------------------";v5:20((A$)2):A$I1ME2:61I:8:I". "MP$(I):61(ME1):8:ME1". Catalog Disk"61ME:8:ME". Quit"B21:"----------------------------------------"23:1:"Type number or use arrows, then ";:PX10:SX4:SL1 ********** SELECT CHOICENSL:OSSL:780:Z0:24:868/1: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:Z10700800 ********** PRINT POINTER SUBROUTINE% 61N:SX:X$(SLOS);:H ********** SELECTION ROUTINEa SL(ME1)İ860:600*SLMEİ900:SL1:780:68042:1:" "::2:1:RC$(SL):> ********** EXECUTE A VALID MENU CHOICEH49168,0::1100:D$;RC$(SL)&R ********** CATALOG SELECTED C\:49168,0::D$;"CAT":mf24:7:"Press to continue";p49168,0:49152,128:z ********** QUIT SELECTED22::958:"Do you really want to quit? (Y/N)";:49168,049168,0:49152,1280(49152)249(49152)217Ĺ49168,0::1100:6j ********** SOUND BUZZER FOR WRONG KEYSTROKE EQ110:EY(16336)(16336):EQ: ********** ERROR HANDLING ROUTINE:(1101)6ė:D$"PR#A$300"5(222)6(222)8Ģ19:(7);"Disk Error. Please insert Nibble disk":1010g19:(7);"An error #"(222)" has occurred. "23:"Press to continue ";:958:49168,0:49152,128:600 ********** WAIT FOR KEYSTROKEFLAG$""623:" for next page or for menu";:49168,0:49152,128T(49152)155FLAG$"ESC"Z$. *********** ATTACH UPPER/LOWER CASE ROUTINE8I013:ML:768I,ML:I:D$"PR#A$300":B ********** DETACH UPPER/LOWER CASE HANDLER L(4);"PR#0":0V ********** INSTALL INPUT-ANYTHING ROUTINEK`X768839:A:X,A::xj ********** 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,216Z 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ժժժժժ pgBT* @?p~px|ЪժժժՊ @?~|>xaFaFF?p- U @?`p~?pxԊԪ"- U*U*U*uP*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|ժժժժժ toBT* @?p~px|xժժժՂ `~}?~|C~axGFx- U @?`p~pp[(U*UA*U*uԪժժժժՊ @ [ժժժժժժdpO|`*U*U*U*U*U*p|~p|(U*U*U*U*U*S* @?p~px|ժժժժժ dOBT* @?p~Ap||xժժժՂ `|y #L ~`xCc- Uy(U*U P*U* > @p{?" NԪժժժժժ@ [ժժժժժժdpO|`*U*U*U*U*U*p|~p|(U*U*U*U*U* `AB@* @?p~px|ժժժժժ n_?BU* @?p~p|ժժժp}{  3 00C1c. Uz*U*U*U*U*U L @@ " NԪժժժժժtժժժժժժdpO|`*U*U*U*U*U*pp~p|(U*U*U*U*U* `AB@* @?p~px|ԪժժժժN?8` |1U* @?`p~p|ժժժpys # 3 00F1c- Uz*U*U*U*U*U 49N/ p<@Pg@ OorEc{yMԪժժժժժLժժժժժժf~p*U*U*U*U*U*@?@p~p||(U*U*U*U*U* pcBP* @?p~px|Ԫժժժժ_?<< p|G?1U* @?`p~p|ժժժx{w<|sxο+* Tw@*U*U*U*U*U QA"$"p E@_(@ "  Mժժժժժժtժժժժժժf~p*U*U*U*U*U*@?p~Ap||x U*U*U*U*U* pcBP* @?p~px|ԪժժժՊ?~x 0 FA F11U @?`p~p|ժժxsg BL1U PRINT MAIN MENU] :} 0:1:JX140:JY86:1JX,JY :23:2:"SOURCE";:10:"DEST";:18:"TRANS";:26:"FILE";:34:"QUIT"; 22:1:"MAIN MENU:" CX1:CY23 16368,0 CX:CY:"<";:CX7:">";5 (16384)128270h KY(16384):16368,0:KY224KY251KYKY32y "KY149320 ,CX:CY:" ";:CX7:" ";:CXCX8:CX34CX1 6260 @KY136350 JCX:CY::" ";:CX7:" ";:CXCX8:CX0CX33 T260/ ^KY141Ĵ(CX1)81380,810,1790,1420,860? h(7);:260K rSOURCE\ |BXPNİ1350n BXPNİ1240 BXBX0:PN1:JXX1:JYY1:HXX2:HYY2:AN0 PNPN0:1HX,HY:1JX,HY:1HX,JY :22:"SOURCE: I,J,K,M TO POSTION "; SOURCE AND DESTINATION MENUSY 23:2:"INCR";:10:"DECR";:18:"VIEW";:26:"PIN";:34:"MAIN";t 21:1:"COORDINATES:" PNĢ22:29:"UPPER-LEFT "; PNĢ22:29:"LOWER-RIGHT"; 24:1:I1SZ:"*";:I CX1:CY23 16368,0 CX:CY:"<";:CX7:">";#(16384)128520VKY(16384):16368,0:KY224KY251KYKY32gKY149570&VWĖCX:CY:" ";:CX7:" ";:CXCX8:CX34CX10510:KY136600DVWĖCX:CY:" ";:CX7:" ";:CXCX8:CX0CX33N510$XKY141Ĵ(CX1)81680,710,740,770,220BbKY201KY204KY205660Ll1010v21:15:" ";:15:PNĺ(JX);",";(JY);:20 SPACESPNĺ(HX);",";(HY);510(7);:510 INCRSZ30510SZSZ1:24:SZ:"*";:510 DECRSZ1510;24:SZ:" ";:SZSZ1:510EVIEWbVWĹ16302,0:VW1:510z16301,0:VW0:510 PINPN790 1360:PN0:AN0:22:29:"UPPER-LEFT ";:510HXJX:HYJY:PN1:22:29:"LOWER-RIGHT";:510  DESTINATIONy*BXPNĢ21:1:"NO SOURCE BOX-- PRESS RETURN";:A$:21:1:" ";:260:30 SPACES4:22:"DEST: I,J,K,M TO POSITION ";>BXİ1360:AN0:PN0:440HBX1:PN0:X1JX:Y1JY:X2HX:Y2HY:JX(HXJX)2JX:JY(HYJY)2JY:1JX,JY:440"R QUITq\:22:"DO YOU WANT TO CONTINUE?";A$:(A$,1)"N"(A$,1)(("N")32)ĉ:zf220p ERASE FINAL BOX ENDPOINTSzRX1RX280RY1RY192ĕ1RX,RYSX1SX280SY1SY192ĕ1SX,SYTX1TX280TY1TY192ĕ1TX,TYJ CALCUALTE FINAL BOX ENDPOINTS AND DRAW THEMRX((HXJX)(ANCV))JX:RY((HXJX)(ANCV))JY:TX((HYJY)(ANCV))JX:TY((HYJY)(ANCV))JYSX((HXJX)(ANCV))((HYJY)(ANCV))JX:SY((HXJX)(ANCV))((HYJY)(ANCV))JY?RX1RX280RY1RY192ĕ1RX,RYgSX1SX280SY1SY192ĕ1SX,SYTX1TX280TY1TY192ĕ1TX,TY MOVE BOX ENDPOINTSBX1180PN10901JX,JYKY201JYJYSZ:JY0JY0:1080%KY205JYJYSZ:JY191JY191:1080K$KY202JXJXSZ:JX0JX0:1080o.KY203JXJXSZ:JX279JX279~81JX,JY:B1JX,JY:JXHXĕ1HX,JYLJYHYĕ1JX,HY:JXHXĕ1HX,HYVKY201HYHYSZ:HYJYHYJY:1150`KY205HYHYSZ:HY191HY191:1150<jKY202HXHXSZ:HXJXHXJX:1150`tKY203HXHXSZ:HX279HX279~~1JX,JY:JXHXĕ1HX,JYJYHYĕ1JX,HY:JXHXĕ1HX,HYPN1260JX1JX280JY1JY192ĕ1JX,JYKY201JYJYSZ:1240KY205JYJYSZ:12400KY202JXJXSZ:1240EKY203JXJXSZmJX1JX280JY1JY192ĕ1JX,JYsJX1JX280JY1JY192ĕ1JX,JYAN0İ890:1310JXHXHX1HX280JY1JY192ĕ1HX,JY JYHYJX1JX280HY1HY192ĕ1JX,HYDJYHYJXHXHX1HX280HY1HY192ĕ1HX,HYjKY201HYSZ1JYHYHYSZ:1350(KY205HYHYSZ:13502KY202HXSZ1JXHXHXSZ:1350<KY203HXHXSZFJX1JX280JY1JY192ĕ1JX,JYPAN0İ940:(ZJXHXHX1HX280JY1JY192ĕ1HX,JYWdJYHYJX1JX280HY1HY192ĕ1JX,HYnJYHYJXHXHX1HX280HY1HY192ĕ1HX,HYx FILE MENU:22:"FILE:";:23:2:"LOAD";:10:"SAVE";:18:"CAT";:26:"SL/DR";:34:"MAIN"; CX1:CY2316368,06CX:CY:"<";:CX7:">";N(16384)1281460KY(16384):16368,0:KY224KY251KYKY32KY1491510CX:CY:" ";:CX7:" ";:CXCX8:CX34CX11450KY1361540CX:CY::" ";:CX7:" ";:CXCX8:CX0CX331450NKY141Ĵ(CX1)811560,1650,1720,1730,220_(7);:1450:21:"ENTER FILE NAME-- '?' FOR CATALOG TO CANCEL:":"";A$:7 SPACES"A$""1420,A$"?"A$"/"1720X6:22:"LOADING WILL ERASE CURRENT PICTURE. DO YOU WANT TO CONTINUE?";B$:(B$,1)"Y"(B$,1)(("Y")32)1420|@(4);"BLOAD";A$;",A$2000,D";DDJBXĕ1X1,Y1:1X1,Y2:1X2,Y1:1X2,Y2:1350TBXİ1080^BXPNİ1090h14200r:21:"ENTER FILE NAME-- '?' FOR CATALOG TO CANCEL:":"";A$:7 SPACES@|A$""1420XA$"?"A$"/"1720BXĕ1X1,Y1:1X1,Y2:1X2,Y1:1X2,Y2:1350BXİ1080BXPNİ1090(4);"BSAVE";A$;",A$2000,L$1FFF,D";DD:1420.:::(4);CT$;",D";DD;",S"SL:"PRESS RETURN TO CONTINUE";A$:16304,0:1420p::22:"ENTER DRIVE NUMBER:";A$:(A$)0(A$)2ĺ(7):1730}DD(A$):22:"ENTER SLOT NUMBER:";A$:(A$)3(A$)7ĺ(7);:1750SL(A$):PRODOSĺ(4)"PREFIX,S";SL;",D";DD1420  TRANSFORM MENUtBXPNĢ21:1:"NO DESTINATION BOX-- PRESS RETURN";:A$:" ";:220:30 SPACES:23:2:"ROTATE";:10:"COPY";:18:"B/W";:26:"EXEC";:34:"MAIN";22:1:"TRANSFORM:";:31:"ANGLE: ";AN CMĢ23:10:"MOVE"; &CFĢ23:18:"COLOR";F 0RXHX:RYJY:SXHX:SYHY:TXJX:TYHYU :CX1:CY23c D16368,0 NCX:CY:"<";:CX7:">"; X(16384)1281880 bKY(16384):16368,0:KY224KY251KYKY32 lKY1491930!vCX:CY:" ";:CX7:" ";:CXCX8:CX34CX1!1870,!KY1361960_!CX:CY::" ";:CX7:" ";:CXCX8:CX0CX33i!1870!KY141Ĵ(CX1)812010,2070,2100,2130,220!KY201KY205KY204ĺ(7);:1870!1010:AN0RXHX:RYJY:SXHX:SYHY:TXJX:TYHY!1870 "ROTATE#"ANAN5:AN360AN0N"22:38:" ";:22:38:AN;:3 SPACES]"890:1360"AN0RXHX:RYJY:SXHX:SYHY:TXJX:TYHY"1870"  COPY/MOVE"CMĢ23:10:"COPY";:CM0:1870" 23:10:"MOVE";:CM1:1870#* COLOR OR BLACK AND WHITE-#4CFĢ23:18:"B/W ";:CF0:1870S#>CFĢ23:18:"COLOR";:CF1:1870a#H EXECUTE#RX1X2Y1Y2JXHXJYHYĢ21:1:"INVALID BOXES-- PRESS RETURN";:A$:1:" ";:1870:30 SPACES$\1X1,Y1:1X1,Y2:1X2,Y1:1X2,Y2:1350p$fTRANS,X1,Y1,X2,Y2,JX,JY,HX,HY,(X2X1)(HXJX),(Y2Y1)(HYJY),(ANCV),(ANCV),CF128,CM$p1X1,Y1:1X1,Y2:1X2,Y1:1X2,Y2:AN0:1350$z21:38:" ";:38:AN;:3 SPACES$RXHX:RYJY:SXHX:SYHY:TXJX:TYHY:1870b%BLĺ"TRANS FILE NOT ON DISK-- INSERT DISK AND PRESS RETURN. PRESS TO QUIT":A$:(A$)27Āv%BLĺA$:777:%(222)255Č777:%(222)0(222)16ĺ"ERROR #";(222);" IN LINE ";(218)(219)256:9&:23:(222)2240,2250,2260,2270,2280,2290,2300,2310,2320,2330,2340,2350,2360,2370,2380,2390Q&"ERROR #";(222):i&"ERROR #";(222):&"ERROR #";(222):&"DISK IS WRITE PROTECTED":2400&"FILE IS NOT ON DISK":(4);"DELETE";A$:2400&"FILE IS NOT ON DISK":2400'"ERROR #";(222):)' "I/O ERROR":2400@' "DISK FULL":2400\' "FILE IS LOCKED":2400{'$ "INVALID FILE NAME":2400'. "ERROR #";(222):'8 "ERROR #";(222):'B "ERROR #";(222):'L "ERROR #";(222):'V "INVALID FILE NAME":2400(` "PRESS RETURN TO CONTINUE";A$,(j 777:1420OLL { lݥ {  : :`! ************************A * TRUNC.DEMO *a * BY LAWRENCE KUBICZ &( * COPYRIGHT(C) 1988 *2 * MICROSPARC, INC *< * CONCORD, MA 01742 *F ************************ PHM(116)256(215):: SAVE OLD HIMEM ' Z(4)"BRUN TRUNC"1 d210O n"ENTER A STRING >>> ";A$b xA$""ģHM::h "ENTER NEW LENGTH >>> ";L "OLD STRING: ";A$ A$,L "NEW STRING: ";A$ 110 :"ERROR IN LINE ";(219)256(218):HM: * TRUNC * by Lawrence Kubicz * Copyright(c) 1988 * MicroSPARC, Inc. * Concord, MA 01742 * Merlin Assembler * ORG $9500 AMPV = $3F5 CHKCOM = $DEBE CHKSTR = $DD6C CONINT = $E6FB FRMEVL = $DD7B LINNUM = $50 NEWLEN = $9501 PTRLO = $1A RSHM = $F28C * INIT LDX #2 ;INITIALIZE COUNTER INIT1 LDA AMPJ,X ;GET BYTE STA AMPV,X ;STORE IT STA LINNUM-1,X ;STORE IN LINNUM TOO DEX BPL INIT1 ;REPEAT FOR THREE BYTES JMP RSHM ;RESET HIMEM AMPJ JMP TRUNC ;JUMP TO OUR CODE TRUNC JSR FRMEVL ;EVALUATE FIRST PARAMETER JSR CHKSTR ;STRING? LDA $A0 ;GET 1ST BYTE OF POINTER STA PTRLO ;STORE IT LDA $A1 STA PTRLO+1 ;STORE 2ND BYTE JSR CHKCOM ;CHECK FOR COMMA JSR FRMEVL ;GET 2D PARAMETER JSR CONINT ;CONVERT TO INT STX NEWLEN ;STORE INT. VALIUE LDY #0 ;ZERO INDEX LDA (PTRLO),Y ;GET 1ST BYTE OF DESCRIPTOR CMP NEWLEN BLT OUT ;NOTHING TO DO LDA NEWLEN STA (PTRLO),Y ;REPLACE LENGTH OUT RTS 2 ip8WHH ?hh(`(P? @ p) H `hLOh`'Ow