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(8RMISC -' &PRODOS#B /#!, ,BASIC.SYSTEM+( /#! 0'STARTUP@! /#!9 SRCE /# 1$CALC/*[ /#! CALC.TXT /# 4"DF  /#!,HEX.DEC /#!@\:RAND1 /#!.RAND2E /#!ROD.0 /#! KROD.BAS /#!5'ROD.BIN B /#!L| Ly Lv Ӡֲ㮬f"f"C# "&i01h+# )#M8 % ) L"g# )L"@, )7(P0 ( @A p 8 )# f" +#$#0 &$#0 %# )ȍX#f"P# )ɂH#*# ) %)0I0hx H( , %Щ ߜ)#j )f 8'  )ɀ  !"#$%&'())4,- U JNT) )#L# ) f"` #K)D/ #3 &#'#(# ## iL X"0#"0ӠĠŠŠҠ`#{% F%Z]``e-.!0SB}/BiBB}/ gF/0k) y! ʿ  L##  m# m# J LB Qר)ɨ] оȱ ̀𩠙 i ȴ O Ѻ G \ ɟU ʿ V@$ A ɛL e '8 Jm ʈ0 o 0堠خ YYZLYLY@뿭`d 8#@8` %MNЩUMߩ  L 5   8 0 8  `0 / X   / &; Pb 8 )0`ddd1&… (n&Dž (\%T&Ln()8= (J 8(&(& >((ʎ1΋&΋&&3223 ')Д )18&"m11 2H22h2舌&&12H)M0 h1020I20h2 (`L%12 `\(#L  98" :ȱ)ɀ  ) ( ` (Xp< @ ( )m ( (. (( M (i  ``) '(j21 & &!` (&&(i)&)( CdBdDdFdGE ) ) ))) ))&$ >(,&& … >(ŅL 'JJJJ`Ϡ(8`&  LdDž )Pi)) () ))&-&),&͉&) ))&0)У` )ɥ`HZJ)  )zh %J)֭)n)}11J  2 (8`rȱȱȱ0\aȱeek+ȱ+ȱ++ȱ++ȱ+ *+ + *`L@+ + * L) *Ș8e` ,$`ee` `+ H++ d+` w+ H+ d+`hh8`8`+++`}+`e`H)hJJ+0JJ)` (< ( < *? ( < (? ( < (? ( <*? * **? *? *? ( < *? ( <x0HH1HH "M,Z(") \i ᘏi᫫8(`hhh8k-<ʆ>Q=?BC8 é&'112`آ <B*IBGF08Lé'+8H <,``h(`@ڍL3HEVhEhH)IWHPHHHAHHHLaVEWLӿ``LKL`BLL ޥޥޥޥޥޥޥޥޥޥޥޥޥޥޥ(C)APPLE xLLM Mh@8nЍLޭ 0J @,,L=#P׽8H  ): e: y8鰕:Jjjj<)yאi8i;i(*=>hPם8`;Zx3Q`_^]ba`0h)ύh0HHHH " ׍hhhhhddhh .hh8`JIMJAYKERRY&MIKEhh@ihAiH(ؠȱ@JJJJq@)@ݔoȱ@Hȱ@Ah@@\e J) ހL JiB ހJ) @xNHHژHL(  ްʠx@BEOD  ް(`( C)CJJJlBJ,~@~@}J@` ߩ%S @ ~`E hhhߺ0 h߈ ߐ( ߐ ߐ   ޕ0 HϭߍLпllll8` Q)T 22D) ɺi )?  }   ސ `@Hȱ@IױHXATȱH ɯȩ׍̰5H)/@a)_ .0 :A[8@`,뎰ڮЕ` } L ` r@>q)I38 kם`K8`@Nȱ@O@ eIiNȽבN)/ȩ/N`@Z VH:JjjjhA "'KI؍0JHi 뎣`ةC8` @)0 e/N0 *ڽ0 ti` <; 뮣ٝ٘ 0 W,0 .H hȑNWȮّNW8`ٍّN0NN` G8`F@ 0 $ LK8`X YI8`FHGH GF܌ עFܽܕF芝ܝ 밸XY Z܅I m[IHHyHȘI L`ܞ @@ @Ю׍q)mיqʈ@ȱ@ȱ@lmq)5qI0ܢܽ n'c* 7FG (ef Ld܅Ip mcIH`  k0no cqHlFmG 밳lm 밨e%܈b" T)Ia)܍p*܍c'ܮ( 4 䭐 $H %HFFHGHG 됬`R8` )` cHq` _9܅IHHqqЍq  @`8 ` ͫ% ΫQ8`܅I `n܍op L8D`F` EgH)HFȍlHGm %܍&܍ܢ8* J8` }L ܝ\)I 'ܝX`d8ipFnGo`d܅IH3H ( )ȱH`ά8ceHI dSBX0k }ٙiٙgFleʈ L`8m0`,0H hi MȽٍ0dGF8yאFG  }$0 *01 E8`100 < 0̩ 谾 }谹`12)1`0`Ȏi i ٞU`)8`` U _G *A)H ܝʈh٭0٭)ܝ٭*ܝ٥F٥G٭'ܝ٭(ܝ`)َ 8ʈ` 0ٝ)i `8`O 鍮 dMمFمG ; ή0FG뮣0 ٭٭ٽ8`H8`  , 8`  `ٽJJJJ`Hͮhk)&NjNjNjN. 1Eͮ d8٭ u'Nۙ۰ڙک `Z8` 1# ` . . .8۰*J۩ ٰ:`JJJJ9 d묣͸ dٍ0 u  `H8` `ٍyٍiB0H0FGy h0`FG `ϩBxEdD0C ް(`(8`ؑ@`M8`8@ؐʈI묤)8 La LةC8`؍)@ fi)8wJ ] ؅F LW) y+%J(^ FإGؐ,` JHIH I%FHGI ԭJjHIH@=IؙJJ ?9 -4HIHI`JKJK`FHIG ( Ȣ؝؈JL)eKM`)` J Jͽ $0 άJFȱJL8`GBJ 6 FإG`BH 6FإG`,H hHB؅F  ؅GxDE؍00C ް(`(8` d뀧J  ! dH   9ؙ` r@ }P8`K8`B8` j؈qJJJJح) ) )Ю ЪG.F $ ᭔ع+ؠ H  0h8` 䮣ٽ ٬ؠ@` ( j )8`)i п` H h)N$% LL L e L  pJ )@NJOK iKK IJ v JФ̭JjHFIH HIGxKE ް((H vhH h8`8@ȭ@L쬤8NNO 8 ؍JL`QʱLN0MOMEKP.MEKӱL-M O,up莿eNNO(`JNKOL / P L8 a ?ؑJ`L@ȱ@ `@Nȱ@O`؝}I轘ؐ` Gؽ؝ G  G؝؈` ` H 1h)N@ ; L  $ )dJ S ) iH h8` ) )حJjIHIH؊ PLJʱNLMO MІMEKݸP$MEK O,u PeNNO (` C  7 2JHIHI؊ aL-  ` ? H ع H ؙ؊IhHIhH a iع `  عiعi` )؍0CGHFHdBdFdGx ް(8hFhG`@4͔ L @Ai ׭2` . 0#ع؍0 <讣)`.@+ i 8` L )0 )p )@ f ) yʩ ؝j0lm 밫 }nolmFG w嬤؍؍؝ ؝ q) q )حk͸ d`H@h`h``N8`  ) ⬤Ȣ؝@ݼ@ʈL KIJHȢݼ ^魼)Jn 8  ؍ ؍ 2H8 ع)JJJJ Ȣ؝I؈ h(8H  h(8Hh(`ؑ@`@ȱ@ ` r@@8Wq ^鮣ٍٍٍHٍ8hqJJJJq2)q@` r%I -) 20@q)N8` @LL =@ ȹP8` i` ם0 B )( ȹ`8m8m@8` G8`F } r }P⭏)@N8`q)@J טyרםqq)׍q 밑 LȹL@ȅH@IL,0` rD }ﭩ: SH-)N 0 $q)@kP8` 2  dHqefe h`yٙ٭yٙ٩`H 1BFG 3%&N    ܮ `J HH hh` 0@ tL)lL S_Xܝ ݝ0ȩFG  0` ܅F݅G ` \ Sͬ 밽܅F݅G ` \) S$ L`LHH hFhG܍ݍ 8 `FHGH  hGhF`ݹܙ݊`@Bɼ>K@J5 V9X(K VXXK تKo`V8`no` "on VI9XX`)&HJJJh`OeNeO࿰ V9XГO`@ȭ@` ON <NJKO`?>х=d<<>=?ILBJ DքEdFCJJJJ֍nH}IC J֭֬։/)DI@+8`@Ae C!$|1OIIJK,-NOPQRSu' @   !"#$ Ԡͭ HB-9F 3"aɿ LLB Nϰ H  @h( L Lj  @`eLJCAB@=?<>=?<>CAB@?A` 1 L  <>`ڢF]PL8i m L   6< L  BLRAM' hLDL ֽ ְ& .Vӈ  JJJJH 8h Ei 8EX`'8`jӍWӥC)p> pӥCYӍY 轊( ( ӈBV ( ӭp0 \BkJ ՠ@iӦ> Ӑi'j:ZH i@ioZZH h ѐȭnWǥBJ Ӱ8XӦ>` Ր+>*L o % ԽYӍZӭoӝY 3Ѡ шNZ`rZLkӭZӍq8r7IZӐiZkӐk 8 ѹs ӭq ѹ| kн Z)*>>` @ $(,048<@DHLPTX\`dh 0ުlptx| 0($ p,&"op8`kkV꽌ɪɖxlӽ*kӽ-kәmMlӈ 꽌ɪ`8` ZԍsԍԍԍԥDEԌ8TԌ8WpԌqԠ 7I꽌ɪ꽌ɭ蠪:љVE:8`]ѾV]H)]ѾV]ҙ)]ѾT]ҙ)] >8hUD` ԝY`> Hh݌(`HCJJJJ)*h`8LխӅ:HhHh Ո թ թ ՘VYҪҦ>:Y)Ң`;R?AJ;<ȰY)Ң`Y?)Ң`ȐҰ ;HhHh=Ң`Hh `Hh`DEiȍ0֌18V%֌&8V֌֠)HV)hH)hHIhդD?DRIDQD)҅; ?JDQD]ՎՎՎ`MY pӭY)p  ӭp`C)`BFGV 8``  / XʩXύX X %   % ɍRH hɛɘɉɈ $ Ld :Ldې)ɮ۰ɺ' Ld  : X ( % ɛ$ɘɉ ɈL :Lɍ)ې)ɮ۰ɺH h 'L  ġLL ̹L)'L ȳL O'F ʻ ̹(((L $ʩ $$ $L `ީ % K@D EFby LҠؠӠ΢ϠԩҠŠƠԠԠŠӢɯϠҠůȠԠĠ  ح o âXoύX`1e0e21ʆe dk)i/ k Lkdha+ # nrdcddpqt$q0c)crorcc0enib ` r )pqn  Эht X l)lhЏL2  9 X [ J  dgdshUj" !# wgjdg. wg'g%s wghg%s w h ɍ1Ɋɋɉɛ kʽ/`L2LY g Xȱl蝀igt 9 X   (L $ `dm &m &m &m &mlemmli`{g8s [t0{2H* Lh2  Xȱl i L `κºú` \GQ H ?h8 S / ?8 V []bj \ ^e_f a  i  \ 2EL 0 8`0)H ""H"h8 ek)E/8`HZ; [:HZ"h+h`8h`/Ȁ򈘍` L   `H0H"hHHH HHH "hpHH"VHH; [*i)    +hhHH"""8h/ ʎ S` ?8 r 0 88`  Can't run next application.ProDOS Error = $ Please insert the disk: Accept: M Cancel: EscLG ASTARTUP$#   / XXύX?klmnÍoL) "6L'?"(0`6708" = ***)<JJH !h穖tp% ;"Z/݀>">"' 1" 7"5).莀/ ;" " 6" >" 1"6"$ "g"" !"""""IջL*,-./0123456789:;<=>YL 8!9 詍` "  4"/pŠϠŠà͠ӠàԠŠH06172839h` z97L75v^e ?/( ze?L[LLɍ$?`?e ɍɥAH93827160hH46576879h`,C fL ɍ f ,S0 @ pLޭBDEF޾ p  ޾ p($ذ z (0 k( L?ԦʚLeةީe s  pL f,FLk,DL,C0$3 >@ Ɉ 3ɾꩈL(3ɾ;Ƀ kB94 l% fʽ  ՚,S` H $݅3`(l8L3LX>(Ƀ,`3,G0]ɾ g` H`پ_پ p _پ׾`>( p۾m׾) W)ʩ@`ɾ>(O puȾ ɾ-O ͱc־JjjjZ[ (`O>0O z POپھ p WH־Ǿh۰8L־JjjjZ[ɾ)Ⱦ8 AOLӜ ҤLLX>(F`־ؾپھ׾` fɄ KDEF zLp z pL[ fKɍKL?`  zLp@3 @LtJ)s@J f 򟰸 p`H? hth?,E30ɍФ3 E3HD F3 Ʉ%h3 fM E  pLthɍLL3`3,A0s0% Ipn HpnI:L ؅303Lm8n933LҞAAJL ةޘг uv $ 8LʞeЌ>?@`>?@`Ba8` K  LK ֟ ֟  KK`JJJJ8`轶K)` #hhLJپھ pHJh` H!h߻g޻tػٻpứ `޻ٻtػp߻8nٻniػtpiٻٻtụs໅o8ễpڻiۻniݻi>j?kܻڻ߻>ٻ׻pڻ׻Ii׻׻߻߻ڻ l 1ڻۻ `>i>?Ek?!>Q>>>ڻۻ `` `>ڻ ۻ `e>>?ܻ?ܻ>?Emn(>e>ܻȱ>e?>Q>ؠ> ie>>?`׻;ػ=:<ٻ:<=;`׻׻mػ;>:8o>oȑ>ppȑ>> :oݻp` HKpn͵ @p;=po:i>?Ek?>Q>> L>ܻ `/ e>>?ܻ?ޱ>ȥj>>m⻑>` !im8i仍nj廍ki滥lj绥oS ST$I2 U)VJ :T)`l8`a HbIJhjǾȾɾ p٭b=a<I/q)im@^ʈ0 L/S 51-m@ʈ0 L٨/` E չ5TLG-T VV H$ZA@Lĩ8 `߹-U -W b WW)JJ HT$K j0IDK H H5K 0.)K H  XK`LGLl  HK m Y ܩ8jK` X,, ( 5 ` X,  `  X, `)a)_`0:8 `)H " H 媢h} I hm   8`0 :AG8 `) 媰 ` . . `SI-SRR¸)RʈS UT`RSSS8L `yGLɳ 8`H b kXklmno YhjWVL58 L tֻʆt "ֻtl e DޭVJ P eօ L s򩣍eS3 zLG # e $L? b 4 kimljn`  pg׾mȾXhؾmɾYtѮȾɾ YX`8g Ie f`8` P־ǾҾ,G0C ж=W)_`ZV"׾پӾؾھ pD`Y׾ؾOW)Ⱦɾʾ pD`8`W)CB) 5W) )W)@! pZ}ȾȾ󰹩 p` ־ǾҾ,G 8`׾ؾ ж p ධۥs׾tؾE` ( о(־Ǿ,G 8`_`W)H־JjjjhZ[ p̭ зLKǾ  . .8   ۭ (8 mȾȾmɾɾʾiʾ` Lpl8l:/0sНsƬƀ#(ZZV4G_0=( A P FjL\5p-e9ABSAVERIFYBLOADELETEBYECATALOGOPENWRITEXECREATEFRESTORENAMEBRUNLOCKCHAIN#FLUSHREADPOSITIONOMONPR#PREFIXCLOSEAPPEND Hѫ5 FڬB :hQ|Q@@ -!S    !C- !ABELSDFRV@@ !$(19@EӱüϠž(+@ABCDEFGHIKLMNPSV     T[fouu~ՠٯ* PWN*]ĿNTz @n6VC/+A>@I5gN Oz @n[Dz @nd0,~z @`$仫@v$⩔,C[B?I>孓`仫6VtCicQĿUKqtVt Nʮq$6,⨁ K6, VtI=v!gNVt Vt  lg~Tһ   LiLMTRLLLLL[^)o `\o8` ԠŬLLdmenu by Matthews{nD$(4):LT$(8):DN$(10):UP$(11):RT$(21):CR$(13):KB16384:KCKB16:LK0:F$(40),T$(40)pD$"PR#3":(17):DI$(8)(15)(27)"I"(24)(14)sD$"PREFIX":P$x:::"MENU by John B. Matthews...":160= D$"PREFIX":P$:D$"OPEN"P$",TDIR":D$"READ"P$:NP0:I13:A$:P A$:A$""160i LKĭ(A$,1)" "140 NPNP1:F$(NP)(A$,2,15):T$(NP)(A$,18,3):140 D$"CLOSE":NP0NP1:F$(1)"DIRECTORY EMPTY":T$(1)"NIL" N2(NP1)2 V(X)X(N2)(N?ABCD2X)4 H(X)20(N2X)5L :"MENU: ? Help, / New Path, - Up Path"[ 3:P$:N1 I1NP:V(I):H(I)4:"<"(64I)"> ";:T$(I)"DIR"ĺDI$; F$(I): :V(N):H(N):F$(N): (KB)128240:KC,0:A$((KB)) V(N):H(N):F$(N) (A$)96A$((A$)32)J A$"@"A$(65NP)N(A$)64:A$CR$ A$CR$300:A$" "360:A$(27)999:A$"-"370:A$"/"400:A$"*"425:A$"?"440 NN(A$LT$)(A$DN$)(A$UP$)(A$RT$) "NNNP(N1)NP(NNP):230 ,430 6T$(N)"DIR"ĺD$"-"F$(N):. @P$P$F$(N)" "= JI1(P$)^ T(P$,I,1)" "LI1:I(P$) ^:P$(P$,L)"/":D$"PREFIX"P$:120 h23: rI(P$)111 |(P$,I,1)"/"LI:I1 :P$(P$,L):D$"PREFIX"P$:120 3:"New Prefix: /";A$:A$""200 4304 A$"/"A$:D$"PREFIX"A$:120D LKLK:120 216,0:3:"Error #";(222);" press any key... ";:A$:200  "MENU by John B. Matthews":"------------------------": :"To run a program or see a directory"#:"type its letter or use the arrow keys"Q:"and press . The '?' produces":"this help screen. Typing a '/' permits":"you to enter a completely different":"pathname (eg. on a different volume)." :"The '-' command moves back up a level"::"along the path. The key exits."g::"Press any key to continue...";:A$m&0:"Entering a '*' changes whether or not"::"only locked files and directories are"D:"shown on the screen."X22:"Press any key to return: ";:A$:200 22SRCu#' /#' '%ROD.SG /##E%ROD.PNv /#3E$DF.PQr /#1E$HD.PX_ /#E)HEX.DEC.S\ /#\:E'LORES.IcB /##EMTR.Sh /#+E'DEBUG.Pj6 /##E&CALC.Pma$ /# E LST ON,Gen * ROD's Color Patttern org $2000 forty equ $28 gbasl equ $26 color equ $30 textpt equ $3A A1 equ $3C A2 equ $3E A3 equ $40 A4 equ $42 A5 equ $44 w equ $E0 i equ $E1 j equ $E2 k equ $E3 fmi equ $E4 fmk equ $E5 key equ $C000 strobe equ $C010 pread equ $FB1E settx equ $FB39 setgr equ $FB40 vtab equ $FB5B clear equ $FC58 wait equ $FCA8 cout1 equ $FDF0 * * Set lo-res, mixed graphics & text, page 1 * jsr setgr jsr clear lda #$16 jsr vtab jsr prtext asc " PDL(0) controls speed of display" dfbFHIJKL $8D asc " Press any key to exit." dfb $00 start lda #$03 ;init loop counters sta w nxtw lda #$01 sta i nxti lda #$00 sta j nxtj clc lda i adc j sta k jsr colsel ldy i ;plot i,k lda k jsr plot ldy k ;plot k,i lda i jsr plot sec ;plot 40-i, 40-k lda #forty sbc i sta fmi tay sec lda #forty sbc k sta fmk jsr plot ldy fmk ;plot 40-k, 40-i lda fmi jsr plot ldy k ;plot k, 40-i lda fmi jsr plot ldy fmi ;plot 40-i, k lda k jsr plot ldy i ;plot i, 40-k lda fmk jsr plot ldy fmk ;plot 40-k, i lda i jsr plot jsr delay inc j ;close loops lda j cmp #$14 blt nxtj inc i lda i cmp #$14 blt nxti inc w lda w cmp #$33 blt nxtw jmp start * * Delay by setting of PDL(0) * delay ldx #$00 jsr pread ;read pdl(o) tya lsr ;divide by 4 lsr beq del1 jsr wait del1 bit key ;key pressed bmi exit rts exit pla ;pop stack pla bit strobe ;clear strobe jsr settx jsr clear jmp $3D0 ;exit via ProDOS * * Plot via table lookup * A = y coordinate; Y = x coordinate * plot lsr php tax lda basl,x sta gbasl lda bash,x sta gbasl+1 jmp $F805 basl dfb $00,$80,$00,$80,$00,$80,$00,$80 dfb $28,$A8,$28,$A8,$28,$A8,$28,$A8 dfb $50,$D0,$50,$D0,$50,$D0,$50,$D0 bash dfb $04,$04,$05,$05,$06,$06,$07,$07 dfb $04,$04,$05,$05,$06,$06,$07,$07 dfb $04,$04,$05,$05,$06,$06,$07,$07 * * Print text up to next null * prtext pla sta textpt pla sta textpt+1 ldy #$00 prt1 inc textpt bne prt2 inc textpt+1 prt2 lda (textpt),y beq prt3 ora #$80 jsr cout1 jmp prt1 prt3 lda textpt+1 pha lda textpt pha rts * * Color = j*3/(i+3)+i*w/12 * colsel clc ;A5 = j*3 lda j adc j adc j sta A5 lda i ;A4 = i+3 adc #$03 sta A4 ldy #$FF ;A5 = A5/A4 sec lda A5 divi3 sbc A4 iny bcs divi3 sty A5 lda i ;A1 = i sta A1 lda w ;A2 = w sta A2 lda #$00 ;A3 = A1*A2 sta A3+1 ldx #$08 shift asl rol A3+1 asl A2 bcc bitcnt clc adc A1 bcc bitcnt inc A3+1 bitcnt dex bne shift sta A3 lda #$0C ;A2 = 12 sta A2 ldx #$08 lda A3 ; A1 = A3 sta A1 lda A3+1 ;A1 = A1/A2 div asl A1 rol A cmp A2 bcc bcnt sbc A2 inc A1 bcnt dex bne div clc ;A = A1+A5 lda A1 adc A5 and #$0F ;copy to upper nibble sta color asl asl asl asl ora color sta color rts program rod; label 99; var i, j, k, w: integer; fmi, fmk: integer; c: char; #i lores.i begin Gr; Writeln; Writeln('Press any key to exit'); repeat for w := 3 to 50 do begin for i := 1 to 19 do begin for j := 0 to 19 do begin k := i + j; Color(j * 3 div (i + 3) + i * w div 12); fmi := 40 - i; fmk := 40 - k; Plot(i, k); Plot(k, i); Plot(fmi, fmk); Plot(fmk, fmi); Plot(k, fmi); Plot(fmi, k); Plot(i, fMOmk); Plot(fmk, i); if KeyPress(c) then goto 99 end end end; until false; 99: Tx; end.{25-Jul-03; J. Matthews; GPL} program DF; {disk free space} type VolumeName = array [0..15] of char; VolumeNameArray = array [0..15] of VolumeName; Buffer = array [0..511] of char; var vna: VolumeNameArray; buf: Buffer; i, j, free, total, sumFree, sumTotal, sumVol, unit, slot, drive, length: integer; function BlockRead(u, b: Integer; var buf: Buffer): integer; begin BlockRead := 0; #a ldy #11 ;unit number lda (_sp),y sta blist+1 ldy #7 ;buffer address lda (_sp),yPRSTUV sta blist+2 iny lda (_sp),y sta blist+3 ldy #9 ;block number lda (_sp),y sta blist+4 iny lda (_sp),y sta blist+5 jsr _mli ;read_block db $80 dw blist ldy #5 ;return error code sta (_sp),y # end; #a blist db 3,0,0,0,0,0 # procedure OnLine(var v: VolumeNameArray); begin #a ldy #5 ;address of buffer lda (_sp),y sta onlist+2 iny lda (_sp),y sta onlist+3 jsr _mli db $C5 ;on_line dw onlist # end; #a onlist db 2,0,0,0 # function BitCount(var buf: Buffer): integer; begin BitCount := 0; #a bptr equ _t sum equ bptr+2 xsav equ sum+2 stx xsav lda #0 sta sum ;init sum sta sum+1 ldy #7 ;init buffer ptr lda (_sp),y sta bptr iny lda (_sp),y sta bptr+1 jsr count ;first half inc bptr+1 jsr count ;and second ldy #5 ;store result lda sum sta (_sp),y iny lda sum+1 sta (_sp),y ldx xsav # end; #a count ldy #0 ;count a page loop lda (bptr),y beq count2 ;skip 0 cmp #$FF bne count1 lda #8 bne add count1 ldx #0 nxtbit lsr pha bcc skip inx skip pla bne nxtbit txa add clc ;running total adc sum sta sum bcc count2 inc sum+1 count2 iny bne loop rts # procedure FreeCount(u: integer; var f, t: integer; var buf: Buffer); var i, firstMap, lastMap: integer; begin f := 0; t := 0; if BlockRead(u, 2, buf) = 0 then begin firstMap := ord(buf[39]) + (ord(buf[40]) * 256); t := ord(buf[41]) + (ord(buf[42]) * 256); lastMap := firstMap + (t div 4096); for i := firstMap to lastMap do if BlockRead(u, i, buf) = 0 then f := f + BitCount(buf) end end; procedure Decode(u: integer; var s, d, l: integer); begin s := (u div 16) mod 8; d := (u div 128) + 1; l := u mod 16; end; begin sumFree := 0; sumTotal := 0; sumVol := 0; OnLine(vna); Writeln('Volumes on-line: free/total'); Writeln('---------------- ----------'); for i := 0 to 15 do begin unit := ord(vna[i, 0]); Decode(unit, slot, drive, length); if length <> 0 then begin sumVol := succ(sumVol); FreeCount(unit, free, total, buf); sumFree := sumFree + free; sumTotal := sumTotal + total; Write('S', slot, ',D', drive, ': /'); for j := 1 to length do Write(vna[i, j]); for j := length to 16 do Write(' '); Writeln(free, '/', total) end end; Writeln; Write(sumFree, '/', sumTotal, ' blocks free on '); Writeln(sumVol, ' volumes.') end.{10-Jul-03; J. Matthews; GPL} program HD; const MaxString = 127; type String16 = array [1..16] of char; String127 = array [1..MaxString] of char; StrPointer = ^StrRecord; StrRecord = record StrFound: String127; NextStr: StrPointer end; var sp: StrPointer; #i other.lib/parseline.i procedure HexByte(b: integer); begin #a prbyte equ $FDDA stx _t lda #$A0 ;space jsr cout ldy #5 lda (_sp),y jsr prbyte ldx _t # end; procedure HexWord(w: integer); begin #a stx _t ldyWYZ #6 lda (_sp),y jsr prbyte dey lda (_sp),y jsr prbyte lda #$BA ;colon jsr cout ldx _t # end; procedure Dump(name: String127); var f: file of char; i, j, k: integer; s: String16; begin i := 1; j := 0; reset(f, name); while not eof(f) do begin if i = 1 then HexWord(j); k := ord(f^); if (k > 31) and (k < 128) then s[i] := chr(k) else s[i] := '.'; HexByte(k); i := i + 1; if i > 16 then begin {line break} writeln(' ', s); i := 1; j := j + 16 end; get(f); end; if i > 1 then begin {partial line} for k := i to 16 do write(' '); write(' '); for k := 1 to i - 1 do write(s[k]); writeln end else writeln end; begin sp := ParseLine; sp := sp^.NextStr; {skip command name} while sp <> nil do begin Dump(sp^.StrFound); sp := sp^.NextStr end end.;HEX/DEC by J.MATTHEWS, MD 2/28/87 ORG $4000 OBJ $4000 MSB ON DEC0 EQU $06 DEC1 EQU DEC0+1 DEC2 EQU DEC0+2 CH EQU $24 ;cursor hor. pos. CV EQU $25 ;cursor vert. pos. YSAVE EQU $2E INDEX EQU $2F ;to BUF TEXTPT EQU $3A A1 EQU $3C A2 EQU $3E MP EQU $50 ;multiplier/result of MUL ML EQU $54 ;multiplicand BUF EQU $200 ;keyboard buffer PRYX EQU $F940 ;print YX as 4 hex digits BASCL EQU $FBC1 ;form screen base address HOME EQU $FC58 ;home and clear screen GETLN EQU $FD6F ;get a line, no prompt CROUT []^_`aEQU $FD8E ;print PRBYT EQU $FDDA ;print A as 2 hex digits COUT EQU $FDED ;print A as ascii GETNM EQU $FFA7 ;get hex number ZMODE EQU $FFC7 ;set mode 0 for GETNM ; JSR HOME JSR PRTEXT ASC 'HEX/DEC Conversion by ' ASC 'J. Matthews, M.D.' DFB $8D ASC '-------------------------' ASC '--------------' DFB $8D ASC 'Enter number to be converted ' ASC '& press' DFB $8D ASC '; preceed hex with $; ' ASC 'Q quits.' DFB $00 PROMPT JSR CROUT JSR CROUT JSR PRTEXT ASC '# ' DFB $00 JSR GETLN STX INDEX DEC CV ;stay on input line LDA CV JSR BASCL INX ;advance CH INX STX CH LDY #$00 LDA BUF,Y CMP #'Q BEQ BASIC CMP #'q BEQ BASIC CMP #'$ BNE DEC ;no $ so must be decimal JSR ZMODE INY ;skip the $ sign JSR GETNM JSR PRTEXT ASC ' = ' DFB $00 LDX A1 LDA A1+1 JSR PRDEC LDA A1+1 CMP #$80 BCC PROMPT ;>32767 output 2's complement JSR PRTEXT ASC ' = -' DFB $00 SEC LDA #$00 SBC A1 STA A1 LDA #$00 SBC A1+1 LDX A1 JSR PRDEC TOPROM JMP PROMPT BASIC JSR CROUT JMP $3D0 DEC LDY #$00 STY A1 STY A1+1 LDX INDEX DEX NXTDIG LDA BUF,X CMP #$AD ;'-' BEQ NEG SEC SBC #$B0 STA ML LDA #$00 STA ML+1 STA MP+2 STA MP+3 LDA PWR,Y STA MP INY LDA PWR,Y STA MP+1 TYA PHA TXA PHA JSR MUL PLA TAX PLA TAY CLC LDA MP ADC A1 STA A1 LDA MP+1 ADC A1+1 STA A1+1 INY DEX BPL NXTDIG HEX JSR PRTEXT ASC ' = $' DFB $00 LDX A1 LDY A1+1 JSR PRYX LDA #$00 BEQ TOPROM NEG JSR PRTEXT ASC ' = ' DFB $00 SEC LDA #$00 SBC A1 STA A1 LDA #$00 SBC A1+1 STA A1+1 LDX A1 JSR PRDEC JMP HEX PWR DFB $01,$00,$0A,$00,$64,$00,$E8,$03,$10,$27 ; ; PRTEXT (relocatable) ; ; Print text starting after ; JSR PRTEXT and ending #$00 ; A reg destroyed; X&Y intact. ; PRTEXT PLA ;get return address STA TEXTPT ;as text pointer. PLA STA TEXTPT+1 STY YSAVE LDY #$00 NXTCHR INC TEXTPT BNE CHROUT INC TEXTPT+1 CHROUT LDA (TEXTPT),Y BEQ RSTR JSR COUT CLC BCC NXTCHR RSTR LDY YSAVE LDA TEXTPT+1 PHA LDA TEXTPT PHA RTS ; ; MULTIPLY MP by ML and save in MP ; MUL LDY #$10 MUL2 LDA MP LSR A BCC MUL4 CLC LDX #$FE MUL3 LDA ML,X ADC ML+2,X STA ML,X INX BNE MUL3 MUL4 LDX #$03 MUL5 ROR MP,X DEX BPL MUL5 DEY BNE MUL2 RTS ; ; PRDEC X=LO, A=HI ; PRDEC STX A2 STA A2+1 LDA #$00 STA DEC0 STA DEC1 SED LDY #$10 LOOP ASL A2 ROL A2+1 LDA DEC0 ADC DEC0 STA DEC0 LDA DEC1 ADC DEC1 STA DEC1 ROL DEC2 DEY BNE LOOP CLD LDA DEC2 JSR $FDE5 LDA DEC1 JSR PRBYT LDA DEC0 JSR PRBYT RTS {Set lo-res graphics, mixed mode, 40 column text} procedure Gr; begin #a gbasl equ $26 h2 equ $2C v2 equ $2D mask equ $2E color equ $30 plot1 equ $F80E hline1 equ $F81C scrn2 equ $F879 settxt equ $FB39 setgr equ $FB40 home equ $FC58 stx _t lda #$11 jsr cout jsr setgr jsr home ldx _t # end; {Set lo-res graphics, 80 col text} procedure Gr80; begin #a stx _t lda #$12 jsr cout jsr setgr ldx _t # end; {Set text mode, 80 column} procedure Tx; begin #a stx _t jsr settxt lda #$12 bdefgjsr cout ldx _t # end; {Set color, 0 to 15} procedure Color(c: integer); begin #a ldy #5 lda (_sp),y and #$0F sta color asl a asl a asl a asl a ora color sta color # end; {Plot x, y with current color} procedure Plot(x, y: integer); begin #a stx _t ldy #5 lda (_sp),y sta _t+1 ldy #7 lda (_sp),y tay lda _t+1 jsr plot ldx _t # end; {Get color of screen at x, y} function Scrn(x, y: integer): integer; begin Scrn := 0; #a stx _t ldy #7 lda (_sp),y sta _t+1 ldy #9 lda (_sp),y tay lda _t+1 jsr scrn ldy #5 sta (_sp),y ldx _t # end; {Replace 'gbascalc' with lookup table} #a plot lsr tax lda basl,x sta gbasl lda bash,x sta gbasl+1 lda #$0F bcc setmask lda #$F0 setmask sta mask jmp plot1 hline jsr plot jmp hline1 vlinez adc #1 vline pha jsr plot pla cmp v2 bcc vlinez rts1 rts scrn lsr tax lda basl,x sta gbasl lda bash,x sta gbasl+1 lda (gbasl),y jmp scrn2 basl db $00,$80,$00,$80,$00,$80,$00,$80 db $28,$A8,$28,$A8,$28,$A8,$28,$A8 db $50,$D0,$50,$D0,$50,$D0,$50,$D0 bash db $04,$04,$05,$05,$06,$06,$07,$07 db $04,$04,$05,$05,$06,$06,$07,$07 db $04,$04,$05,$05,$06,$06,$07,$07 # {Horizontal line from x1 to x2 at y} procedure HLine(x1, x2, y: integer); begin #a stx _t ldy #5 lda (_sp),y sta _t+1 ldy #7 lda (_sp),y sta h2 ldy #9 lda (_sp),y tay lda _t+1 jsr hline ldx _t # end; {Vertical line from y1 to y2 at x} procedure VLine(y1, y2, x: integer); begin #a stx _t ldy #9 lda (_sp),y sta _t+1 ldy #7 lda (_sp),y sta v2 ldy #5 lda (_sp),y tay lda _t+1 jsr vline ldx _t # end; {Return true if key pressed, character in ch} function KeyPress(var ch: char):boolean; begin KeyPress := false; #a bit $C000 bpl nokey ldy #6 lda (_sp),y sta _t iny lda (_sp),y sta _t+1 lda $C000 and #$7F ldy #0 sta (_t),y sta $C010 ldy #5 lda #1 sta (_sp),y nokey # end; ;Enter monitor from Kix; J. Matthews; 12-Jul-03; GPL. org $380 usradr equ $03F8 ;control-Y vector mli equ $BF00 crout equ $FD8E cout equ $FDED monz equ $FF69 ldx #2 ;install control-Y vector install lda vec,x sta usradr,x dex bpl install jsr crout ldy msg ldx #1 print lda msg,x ora #$80 jsr cout inx dey bne print jsr crout jmp monz msg str 'Enter control-Y to resume.' vec jmp exit exit jsr mli db $65 dw qlist qlist db 4,0,0,0,0,0,0program DebugTest; const MaxString = 16; type String = array [1..MaxString] of char; var s, t: String; procedure SetDebug; begin #a usradr equ $03F8 ;control-Y vector monz equ $FF69 ;monitor entry lda #$4C sta usradr lda #>resume sta usradr+1 lda # 0 then for j := 1 to (i - decimal - 1) do v := v / 10; if s[i] = 'e' then begin {handle scientific notation} i := i + 1; exponent := ParseInt(s, i); if exponent > 0 then for j := 1 to exponent do v := v * 10 else if exponent < 0 then for j := 1 to abs(exponent) do v := v / 10 end; ParseReal := v end; {ParseReal} function DoDivision (x, y : real) : real; begin if y <> 0 then DoDivision := x / y else begin Writeln('Please don''t divide by zero!'); DoDivision := 0 end end; {DoDivision} function DoFactorial (x : real) : real; var v : real; i, j : integer; begin v := 1; j := abs(trunc(x)); if (j = 0) or (j = 1) then DoFactorial := 1 else if j > 69 then Writeln('Arithemtic overflow.') else for i := j downto 2 do v := v * i; if x < 0 then DoFactorial := -v else DoFactorial := v end; {DoLn} function DoLn (x : real) : real; begin if x > 0.0 then DoLn := ln(x) else begin Writeln('Natural log argument must be positive.'); DoLn := 0.0 end end; {DoLn} function DoPower (b, e : real) : real; var p : integer; u, v : real; begin v := 1; u := b; p := trunc(e); if ((e - p) < 0.00001) and (p > 0) then begin {handle positive integral exponents} while p > 0 do begin while not odd(p) do begin p := p div 2; u := sqr(u) end; p := p - 1; v := u * v end; DoPower := v end {else use natural logarithm} else DoPower := exp(e * DoLn(b)) end; {Power} function DoSqrt (x : real) : real; begin if x > 0.0 then DoSqrt := sqrt(x) else begin Writeln('Square root argument must be positive.'); DoSqrt := 0.0 end end; {DoSqrt} procedure SkipToken (var s : String; var i : integer); begin while s[i] in ['a'..'z'] do i := i + 1; end; {SkipToken} function SkipSpace (var s : String; var i : integer) : char; begin while (s[i] in [space, tab]) do i := i + 1; SkipSpace := s[i] end; function Expression (var s : string; var i : integer) : real; var v : real; t : char; j : integer; function Term (var s : String; var i : integer) : real; var v : real; t : char; function Factor (var s : String; var i : integer) : real; var v : real; t : char; function Value (var s : String; var i : integer) : real; var v : real; t : char; begin v := 0.0; t := SkipSpace(s, i); if t = parOpen then begin {nested expression} i := i + 1; v := Expression(s, i); if (SkipSpace(s, i) = parClose) then i := i + 1 else Writeln('Missing parenthesis in expression.') end else if t = plus then begin {unary plus} i := i + 1; v := Value(s, i) end else if t = minus then begin {unary minus} i := i + 1; v := -Value(s, i) end else if IsDigit(t) then begin {real number} v := ParseReal(s, i) end else if t in ['a','c','e','l','p','s','t'] then begin {function} j := i; SkipToken(s, i); if s[j] = 'a' then if s[j+1] = 'b' then v := abs(Value(s, i)) else if s[j+1] = 't' then v := arctan(Value(s, i)); if s[j] = 'c' then v := cos(Value(s, i)); if s[j] = 'e' then if s[j+1] = 'x' then v := exp(Value(s, i)) else v := exp(1); {e} if s[j] = 'l' then v := DoLn(Value(s, i)); if s[j] = 'p' then v := 3.14159265358979; if s[j] = 's' then if s[j+1] = 'i' then v := sin(Value(s, i)) else if s[j+1] = 'q' then v := DoSqrt(Value(s, i)); if s[j] = 't' then begin v := Value(s, i); v := sin(v)/cos(v) end end else Writeln('Syntax error.'); Value := v end; {Value} begin v := Value(s, i); t := SkipSpace(s, i); while t in [bang, power] do begin i := i + 1; case t of bang: v := DoFactorial(v); power: v := DoPower(v, Factor(s, i)) end; t := SkipSpace(s, i) end; Factor := v end; {Factor} begin v := Factor(s, i); t := SkipSpace(s, i); while t in [star, slash, power] do begin i := i + 1; case t of star: v := v * Factor(s, i); slash: v := DoDivision(v, Factor(s, i)); power: v := DoPower(v, Factor(s, i)) end; t := SkipSpace(s, i) end; Term := v end; {Term} begin v := Term(s, i); t := SkipSpace(s, i); while t in [plus, minus] do begin i := i + 1; case t of plus: v := v + Term(s, i); minus: v := v - Term(s, i) end; t := SkipSpace(s, i) end; Expression := v end; {Expression} function Length (var s : String) : integer; var i : integer; begin i := maxString; while (s[i] = space) and (i <> 1) do i := i - 1; if (s[i] = space) and (i = 1) then i := 0; Length := i; end; {Length} procedure SetDecimal (var s : String; var i, dec : integer); begin SkipToken(s, i); dec := trunc(ParseReal(s, i)); if dec > 15 then dec := 15; if dec < 0 then dec := 0; Writeln('Decimal precision set to ', dec); end; {SetDecimal} procedure SetWidth (var s : String; var i, width : integer); begin SkipToken(s, i); width := trunc(ParseReal(s, i)); if width > 80 then width := 80; if width < 0 then width := 0; Writeln('Decimal width set to ', width); end; {SetWidth} procedure SetNotation (var sn : boolean); begin sn := not(sn); if sn then Writeln('Scientific notation on.') else Writeln('Scientific notation off.') end; {SetNotation} procedure Format (var s : String; var i : integer); begin if sn then Writeln(Expression(s, i):width) else Writeln(Expression(s, i):width:dec) end; {Format} function FileCheck : boolean; begin FileCheck := false; #a jsr _mli db $C4 ;Get_File_Info dw finfo bne fexit ldy #5 ;result offset lda #1 ;true sta (_sp),y fexit equ * # end; {FileCheck} #a fname str "calc.txt" finfo db 10 dw fname ds 15 # procedure Execute; var s : String; i, len : integer; f : file of char; begin if FileCheck then begin reset(f, 'calc.txt'); while not(eof(f)) do begin i := 1; repeat s[i] := f^; i := i + 1; get(f) until f^ = chr(13); get(f); s[i] := nul; for i := 1 to i - 1 do Write(s[i]); Write(' = '); i := 1; t := SkipSpace(s, i); Format(s, i) end end else Writeln('File "calc.txt" not found.') end; {Execute} procedure Help; begin Writeln; Writeln('+--------------------+'); Writeln('| Welcome to Calc v1 |'); Writeln('+--------------------+'); Writeln; Writeln('A scientific calculator by J. Matthews'); Writeln; Writeln('Operators (increasing precedence):'); Writeln(' +, -, *, /, !, ^, unary +/-, ()'); Writeln; Writeln('Functions & constants:'); Writeln(' sqrt(), ln(), exp(), atan()'); Writeln(' cos(), sin(), tan(), e, pi'); Writeln; Writeln('Commands (may be abbreviated):'); Writeln(' width #: set output field width to #'); Writeln(' decimal #: set the precision to #'); Writeln(' notation: toggle scientific notation'); Writeln(' xecute: execute the file "calc.txt"'); Writeln(' help: print this help screen'); Writeln(' quit: exit the program'); Writeln end; {Help} begin #a ; clear screen stx _t jsr $FC58 ldx _t # nul := chr(0); tab := chr(9); width := 12; dec:= 6; sn := false; done := false; Help; repeat Write('> '); Readln(s); len := Length(s); s[len + 1] := nul; {terminate string} if len > 0 then begin LowerCase(s, len); i := 1; t := SkipSpace(s, i); if t = 'd' then SetDecimal(s, i, dec) else if t = 'h' then Help else if t = 'n' then SetNotation(sn) else if t = 'q' then done := true else if t = 'w' then SetWidth(s, i, width) else if t = 'x' then Execute else Format(s, i) end until done end. {Calc} L9 [Lb  A eȑi i @ A 8 9 I`W2g @ʩ`ʩ`H h    L `@ A م  8 A`녀  @ A $ `Stop at Address $ Stop at Line  ȱ `  & 2 @ L ` r ~ l p Le l p l p L> ץ ` d'H hݤ EH h   L ' ( + @" B3 CP Di E} F G H I J K L M N2 PD QQ Rl W Z H ha{i HhILCase Index ErrorArray Index Error Input Error File Not Open Range ErrorArithmetic OverflowPathname Too Long End of FileCannot Dispose Heap OverflowToo Many Open FilesCannot READ from "output"Cannot WRITE to "input" ProDOS Error I/O ErrorNo Device ConnectedDisk Write ProtectedInvalid PathnameMaximum Number of Files OpenInvalid Reference NumberDirectory Not FoundVolume Not FoundFile Not FoundDuplicate Filename Volume FullVolume Directory FullIncompatible File FormatUnsupported Storage TypeEnd of File EncounteredPosition Out of RangeFile Access Error File is OpenDirectory Structure DamageNot a ProDOS VolumeDuplicate VolumeFile Structure Damage _ ` _ _IIL ` ` _ _ _ _8O y uu DA `Z ` E D _ _ _ _ _8O y uu _ _ _ _8O y uu uu ` _ _ _  _L LQ_ _ _ _ D0 `9 ` E. ` D D ` _LQ_ _ _ _ _ _ _8O y uu ` _ _ _ _ _ _8O y uu ` _ `Y _ _ _ _ _ _uu `Lu _ _ _ _ _8O y uu- ` _Ƞ _ _ ` `L _ ` ` _ _ _ _ _8O y uu+ ` _ _ _ _ _ _8O y uu- ` _ ` _ _ _ _ _ _uu ` _ ` ` _ _ _ _ _8O y uu D0 `9 ` E D͠ _ _ ` _ _ &a _ _ _ _ _8O y uu ^uu ` _ _ _ _ _uu `L _ _ _ _ _ &a ` _ _LQ_ _# _ _! _ _ _8O y uu D ` D ` D D _! _ _! _ _ _uu `L  _ O O _ ` ` _ ` ` E`# _ _! _ _ _8O y uu `8 h _# _ _! _ _ _8O y uu. ` _ _ _! _ _ _ `L> _ ` _ O V P# _ _! _ _ _8O y uuuu MV O O! _ _! _ _ _uu `L _ _ ` ` _ `! _ _ _ _ _ `uuIIL ` ` _ _ O ` MV P O _ _ _  _L# _ _! _ _ _8O y uue ` _ _! _ _! _ _ _uu ` _ E`# _ _ ` E`! _ _ `8 h ` _ _ ` `n _ ` _ _IILk ` ` _ _ O ` MV P O _ _ _  _L-L _ _ ` ` _ ` _ _ ^IIL ` ` _ _ O ` MV P O _ _ _  _L _ _ O O _ O%LQ_ _ _ O ` MV Tv _ _ _ O _ O P OL `LPlease don't divide by zero! ` @W ` l[ ^ _ ` MV O _ OLQ_ _ _ ` MV O _ _ O mT ^ ` _ _ ` _ _ _ ` _ `` _ _ ` MV OL _ _E ` ` _ `LArithemtic overflow. ` @W ` l[ ^L _ _ ` _ ` ` _ _ O _ _ MV P O _ _ _ 4_L _ O ` MV TV _ _ _ O O OLj _ _ O O _ O#LQ_ _ _ O O #T _ _ _ O %L OL!ˠ `LNatural log argument must be positive. ` @W& `& l[ ^ _ O O _ OLQ_ _ _ ` MV O _' _ O O _ _ O mT ` _ O _ _ MV P O T _ _ ` ` ^ _ _ _ ` `s _ _ _ z` s`. _ _ _ _ ` a ` _ _ O G OL _ _ _uu ` _ _ O _ O P OL _ _ O OL _ _ O E`' _ O O8 { P M O _ O/LQ_ _ _ O O #T _ _ _ O G OL) `LOSquare root argument must be positive. ` @W& `& l[ ^ _ O O _ OLQ_ _ _ _ _ _ _8O y uu Da `z ` E D/ _ _ _ _ _ _uu `L LQ_ _ _ _ _ _ _8O y uu D ` D ` D D _ _ _ _ _ _uu `LC _ _ _ _ _ _8O y uu ` _ LQ_ _ _ O O _ E` _ _ ` E` _ _ `8 6 ` _( ` _ _ _ _ _ _ _uu ` _ E` _ _ ` E` _ _ `8 1 O E` _ _ ` E` _ _ `8 6) ` _ _ _ _ _ _ _uu `L `L Missing parenthesis in expression. ` @W" `" l[ ^Lu, _+ ` _! _ _ _ _ _ _uu ` _ E` _ _ ` E` _ _ `8 J OLu, _- ` _" _ _ _ _ _ _uu ` _ E` _ _ ` E` _ _ `8 J O OLu, E` _ `8 " _ _ E` _ _ ` E` _ _ `8  OLu, _ Da ` Dc ` De ` Dl ` Dp ` Ds ` Dt ` D DC, _ʥHȱhL"iȥi _ _ _ ` E` _ _ ` E` _ _ `  _ _ʥHȱhLd#iȥi _8O y uua ` _w% _ _ _ʥHȱhL#iȥi _uu8O y uub ` _$ _ _ E` _ _ ` E` _ _ `8 J ^ OLw% _ _ʥHȱhL$iȥi _uu8O y uut ` _w% _ _ E` _ _ ` E` _ _ `8 J bJ O _ _ʥHȱhL%iȥi _8O y uuc ` _<& _ _ E` _ _ ` E` _ _ `8 J H O _ _ʥHȱhLP&iȥi _8O y uue ` _' _ _ _ʥHȱhL&iȥi _uu8O y uux ` _' _ _ E` _ _ ` E` _ _ `8 J M OL' _ ` MV M O _ _ʥHȱhL'iȥi _8O y uul ` _( _ _ E` E` _ _ ` E` _ _ `8 J O8 { O _ _ʥHȱhL(iȥi _8O y uup ` _) _ _ Oe5 O _ _ʥHȱhL-)iȥi _8O y uus ` _W+ _ _ _ʥHȱhL)iȥi _uu8O y uui ` _n* _ _ E` _ _ ` E` _ _ `8 J H OLW+ _ _ʥHȱhL*iȥi _uu8O y uuq ` _W+ _ _ E` E` _ _ ` E` _ _ `8 J O8  O _ _ʥHȱhLk+iȥi _8O y uut ` _@, _ _ E` _ _ ` E` _ _ `8 J O _ _ O H _ O H P OLu,M, `LZ,Syntax error. ` @W ` l[ ^ _ _ O O _ OLQ_ _ _ E` _ _ ` E` _ _ `8 J O _ E` _ _ ` E` _ _ `8 6 ` _ D! ` D^ ` D D. _ _ _ _ _ _uu ` _ _ ` _ _! ` _- _ _ E` _ O O8  OLz. _ _^ ` _u. _ _ E` _ O O E` E` _ _ ` E` _ _ `8 , O8 2 OLz. y  _ E` _ _ ` E` _ _ `8 6 `L+- _ _ O O _ OLQ_ _ _ E` _ _ ` E` _ _ `8 , O _ E` _ _ ` E` _ _ `8 6 ` _ D* ` D/ ` D^ ` D D 1 _ _ _ _ _ _uu ` _ _ ` _ _* ` _\0 _ _ _ O E` _ _ ` E` _ _ `8 , P OL}1 _ _/ ` _0 _ _ E` _ O O E` E` _ _ ` E` _ _ `8 , O8 ' OL}1 _ _^ ` _x1 _ _ E` _ O O E` E` _ _ ` E` _ _ `8 , O8 2 OL}1 y  _ E` _ _ ` E` _ _ `8 6 `Lu/ _ _ O O _ OLQ_ _ _ E` _ _ ` E` _ _ `8 . O _ E` _ _ ` E` _ _ `8 6 ` _ D+ ` D- ` D D 4 _ _ _ _ _ _uu ` _ _ ` _ _+ ` _U3 _ _ _ O E` _ _ ` E` _ _ `8 . O OL3 _ _- ` _ 3 _ _ _ O E` _ _ ` E` _ _ `8 . P OL3 y _ E` _ _ ` E` _ _ `8 6 `Lx2 _ _ O O _ OLQ_ _ _P ` ` _ _ _ _8O y uu ` _ _ _ ` Z` ^4 _ _ _ _uu `LO4 _ _ _ _8O y uu ` _ _ _ ` _ ^b5 _ _ ` ` _ _ _ ` _ _ LQ_ _ E` _ _ ` E` _ _ `  _ _ E` _ _ ` E` _ _ `8  mT ` _ _ _ ` `96 _ _ _ ` ` _ _ _ ` `k6 _ _ _ ` `u6 `L6Decimal precision set to  ` @W ` l[ _ _ _ ` ] ^ LQ_ _ E` _ _ ` E` _ _ `  _ _ E` _ _ ` E` _ _ `8  mT ` _ _ _P ` `y7 _ _ _P ` ` _ _ _ ` `7 _ _ _ ` `7 `L7Decimal width set to  ` @W ` l[ _ _ _ ` ] ^ LQ_ _ _ _ _ _ s` ` _ _8 _U8 `Ll8Scientific notation on. ` @W ` l[ ^L88 `L8Scientific notation off. ` @W ` l[ ^LQ_ _ `F9 _ E` _ _ ` E` _ _ `8 1 ` _ ` @W [ ^L9 E` _ _ ` E` _ _ `8 1 ` _ ` _ ` @W \ ^ LQ_ _ _ ` ` 9 _LQ_calc.txt 9\ _8 9ɠ< _ _ `B: `LJ:calc.txt ` DX _ Y s`Ơ< _ _ ` ` _ _ _8O y uu _ ` _ _ _uu ` _ \ _ ` _y: _ _ \ _ _ _8O y uu試 ` ` ` _ _uuIIL,< ` ` _ _ _8O y uu ` @W ` N[ _ _ _ _L;6< `L9< =  ` @W ` l[ _ ` ` ` E` _ ` E` _ `8 6 ` E` _ ` E` _ ` 8LT:L=Ӡ< `LA scientific calculator by J. Matthews ` @W& `& l[ ^ ` @W ^I> `Lk>Operators (increasing precedence): ` @W" `" l[ ^> `L> +, -, *, /, !, ^, unary +/-, () ` @W ` l[ ^ ` @W ^> `L>Functions & constants: ` @W ` l[ ^? `L9? sqrt(), ln(), exp(), atan() ` @W ` l[ ^^? `Ly? cos(), sin(), tan(), e, pi ` @W ` l[ ^ ` @W ^? `L?Commands (may be abbreviated): ` @W ` l[ ^? `L@ width #: set output field width to # ` @W% `% l[ ^8@ `LZ@ decimal #: set the precision to # ` @W" `" l[ ^@ `L@ notation: toggle scientific notation ` @W% `% l[ ^ɠ@ `L@ xecute: execute the file "calc.txt" ` @W$ `$ l[ ^A `L/A help: print this help screen ` @W ` l[ ^TA `LkA quit: exit the program ` @W ` l[ ^ ` @W ^LQ_b _ X  =A `LA>  ` @W ` l[ ` ` +WP ] ^ ` E` ` `8 14 ` ` ` _uu8O y uu試 ` ` ` _ ` `D _ E` ` ` E` ` _ `  ` E` ` ` E` ` `8 6 ` `d ` _C _ E` ` ` E` ` ` E` ` ` 5LD `h ` _C _ =LD `n ` _ݠC _ E` ` ` 8LD `q ` _D _LD `w ` _^D _ E` ` ` E` ` ` E` ` ` 6LD `x ` _D _ :LD E` ` ` E` ` ` 8 `٠A _bLQ_ ʕ` JJJ )] ei"%Le Lp JJJ)] e`)JJJ)] eL,E`iipȱkeeȑȑe e   Ly  ȥȥȥiiȑ`ii@6eeȱȥ8ȱLE ȱLEȱLwE8ȱ Ly  Ly  ȱLFȱȥqȥq?7ȱȱ  qȱq`qȥqȱȱ  qȱq`ʵLP`) Ly b Xb mU 0bii  XbsH Xb P Xb{H O b' / Xb Xb' P Xb' O XbM P b' / ٭)#ii Xb' XbH P b' 8nn Xb' b U`Bp#`p"wfh b)ߍ Xb XbU O XbJ P mT 0b b MV b)  Xb XbM P bL*I b) )ߍ Xb XbJ P b b Xb mT)I  Xb b b Xb Xb P b Xb Xb XbJ P P Xb O Xb Xb"J P P b Xb Xb P b XbZJ Xb P XbRJ O Xb P XbJJ O Xb P XbBJ O Xb P Xb:J O Xb P Xb2J O Xb P Xb*J O Xb P Xb P Xb OM`08Y&SX1ffffff33332v1A&#"uW1d!)2PQG`GF2877bwPq b) )ߍ Xb XbE #T XbE Xb P b Xb XbK #T= XbK Xb P XbM P XbM P Xb O XbK Xb O P b Xb Xb P b XbK Xb P XbK O Xb P XbK O Xb P Xb XbK O Xb P XbK O Xb P XbK O P Xb P Xb OI  XbL Xb L XbL XbL OM`gC2Vs Pui$'C&rb$'DI6y79@("`yvVB xdP#YuYW2gqU) Ly b Xb mU 0bii  Xb XbpM #T)8 Xb XbM P XbM P Xb XbM O P b Xb Xb P b XbM Xb P XbM O Xb P XbM O Xb P XbM O Xb XbM O Xb P XbM O Xb P XbM O Xb P XbM O P Xb P XbxM O Xb P b MV O XbM P`"wfhhXce0% )Qg1r8!67AP%e'738!S"ur2&Ih'@y%%`C!2GP b Xb ) XbRO #TLy Xb ) XbZO 0T XbE ` Xb XbbO P mT 0b b MV b Xb mT MV b Xb Xb P b Xb Xb XbjO P P Xb O Xb XbrO P P b Xb Xb P b XbO Xb P XbO O Xb P XbzO O Xb P b Xb XbO O Xb P XbO O b Xb Xb Xb P P XbM O b Xb Xb O b Xb ) XbO0 PLAO P b bO a U`hXceTd(FHPX@)V(26FQd)w @ f"wfhʱ` `hihiHHʱ`I ` S )P S` S )P S` S )P S` S )P S`}iə!səLS S} UP Si OS(`LzPLrPLPL_Q`|I |sEiLR8zp{q R8zp}{q~} ~"8}~ R` R8}} Rr|LQ R8iirI r`pmzpqm{qrM|ri}i}) RQ}JJJJ RQ΄} RQ` R Q`sLSpzpq{qrM|r Q } Q}}ߢ}i` R Q DR`omyonmxnmmwmlmvlkmukjmtjimsi`8oyonxnmwmlvlkukjtjisi`o.n.m.l.k.j.io.n.m.l.k.j.io.n.m.l.k.j.io.n.m.l.k.j.i`NinjnknlnmnnnoNinjnknlnmnnnoNinjnknlnmnnnoNinjnknlnmnnno` isis`Ly i) Rpipqiq`ip` DR8ppqqi`8pq!8pq陰LS8ppi ii ri`i) rqi)q8ppi)is) |{s){8zzs)s`sig`gʹi` =TLe Lp =TLe Lp =TLe Lp =TLe Lp U) i) `` Pi`) ``w)sLT&0\&0Vee0G&0A)ee00&&&) 8i`Ly e 8V) 8eePLy ) 8dLy  U ` 8V) 8i`` ɞ` O U)  O`U`  !"#$%&'()0123456789@ABCDEFGHIPQRSTUVWXY`abcdefghipqrstuvwxy)JJJe)e` 8&eeeة&& 8` MV8`8   ȱ  ` ȱ ٠ ȱ HH SYh h LV UW  y ` UW  y `4 5   ` `8 Hȱ h  Ly  ȱ `h Wh` UW   `   ȱ  ˪Lu ` ȱ  ȱ  ȪLu  ` ^X Xʥ 4 5 \`0 1 2 3 4 5  Yʩ  VEʩ<  VE  ȥ 4 ȭ5 4 5   ȩ < ȭ= 8 ȭ9 8 9 MZ`8   ȱ   ȱ ؠ ȱ  SY` "  ϪLu ЪLu   ̪Lu  i i F i iA Fʩ  F` Y` UW  \Le Lp  Le ʠ ` !Z` UW  \Le Lp ʠ `ʩ: A VE: ȭ; 2 3 LZ2 m0 3 m1 82 3 X 82 3 ii@%2 3 : ; ȑ`Ly  : ; ȩtȩeȩmȩpȥ JJJJiaȥ )iaȥJJJJiaȥ)ia` WLR[ W` WL[` WL[Ly 8 a mU8 U ) - W \. W \E W+)- WJJJJ 0 W) 0 Wi`ɚLy Ly 8 U 8V) \ \. WL\ \0 W. W 00 WL\0 \L\i`eȵ)  WL\) - W`) 0 W666666` +WY SH o h) `` Ly    ȱ  ʪLLu  `    `  YLy Z` \ Y`` 8&eeeإ) 0JJJJ 0) 0JJJJ 0) 00Ȅ8 W- W W` LW Z  \L^`Ly 8PLy `)`uuPLy `5``II`hhlee8ȱ`eeHHHȱh V> ? ```hhleeiȱi``ee`eeʠȱ` > ? hhhhHH8ȥȥȥ`eeʥ``I`)Le Lp `ʕ`8PLy `eeȵ```PI`PI`ʵ` aB ED &.B &&eemB B ,C 0B  D 0Ly  a` a&&&8 a`E 8 8` 8`hihiHHȱʠȱ`hihiHHȱȵ`hhiiHHȱʱ`hhiiHHȱ`)` 8V `) `Lb 2 + 3 * 4 2.0+(3.0*4.0) 2.99792458e8/1e8 2.99792458e8*1e-8 2^2^3 2^(2^3) sqrt(5^2) (5^2)^(1/2) 6*5*4*3*2*1 6! sin(pi/4) cos(pi/4) tan(pi/4) exp(ln(cos(0))) L9 LϠ   eȑi i @ A 8 9 I`W2g @ʩ`ʩ`H h    L `@ A م  8 A`녰  @ A $ `Stop at Address $ Stop at Line  ȱ `  & 2 @ L ` r ~ l p Le l p l p L> ץ ` d'H hݤ EH h   L ' ( + @" B3 CP Di E} F G H I J K L M N2 PD QQ Rl W Z H ha{i HhILCase Index ErrorArray Index Error Input Error File Not Open Range ErrorArithmetic OverflowPathname Too Long End of FileCannot Dispose Heap OverflowToo Many Open FilesCannot READ from "output"Cannot WRITE to "input" ProDOS Error I/O ErrorNo Device ConnectedDisk Write ProtectedInvalid PathnameMaximum Number of Files OpenInvalid Reference NumberDirectory Not FoundVolume Not FoundFile Not FoundDuplicate Filename Volume FullVolume Directory FullIncompatible File FormatUnsupported Storage TypeEnd of File EncounteredPosition Out of RangeFile Access Error File is OpenDirectory Structure DamageNot a ProDOS VolumeDuplicate VolumeFile Structure Damage   j  ȱ ȱ    LH 0ȱ1 .LH   j ȱ  ȥ   LH JHhe`    j    j  <    < j  <   8 j vo    ' j y uu  ( j y uu j  "     ) j y uu  * j y uu j  "        j  "     IILo q q <    <    <   8 j vR       <   8 2 "    9 LLH      j  j ?      j uu      j ?  LH!  X < j  T jLwVolumes on-line: free/total j # j# 6  jL---------------- ---------- j # j# 6  j jIIL軵 j j j  y  f j y uu  < j   < j  <젻 j  <꠻ j  v꠻ j  j Qe  j j    < j   < j  < j  < j  mmmmS j j  j  j  j p jL,D j 6젻 j  j pΠ jL: / j 6 j꠻ j IIL滵 j j  y  f j  y uu j  j  L!꠻ j  jIIL仵 j j  j  L j  j  j p/ j j  j  j p  L j   j  j  j p/ j j  j  j pڠ jL blocks free on  j 6 j  j  j p  jL) volumes. j 6 ,,!LH8ȱ Ly  Ly  ȱLȱȥqȥq?7ȱȱ  qȱq`qȥqȱȱ  qȱq`Ff uu6`8   ȱ  ` ȱ ٠ ȱ HH h h L   y `4 5   ` `8 Hȱ h  Ly  ȱ `h Vh`    `   ȱ  ˪Lu ` "  ϪLu ЪLu   ̪Lu  i i I i iA Iʩ  I` EL E` ELP` ELb 8&eeeإ) 0JJJJ 0) 0JJJJ 0) 00Ȅ8 E- E E` LEuuPLy ``eeHHHȱh > ? ```hhleeiȱi``ee`eeʠȱ` > ? hhhhHH8ȥȥȥ`eeʥ``ʕ`eeȵ`` Ly ii` tB ED &.B &&eemB B ,C 0B  D 0Ly  ` t&&&8 ` t&&& ߥLE 8 8` 8` X AدàʮͮĮ䠦蠤Ѡ A o/%% $>:ɤ< A<= A=ɀ A8<<=< AL@ L<=/ʽɭG8鰅TURS~APȹ~AQHH AhhPe<?>&?ee&إ   ` :22::16368,0:75="Press any key to exit...";MC((1)8)^C0C4ī20qX1((1)280)#Y1((1)160)(X2((1)280)-Y2((1)160)2C:X1,Y1X2,Y27I1C:S(16336):<(16384)127ī75A(1).96đ F20 K16368,0::: :22::754 SP16336:KB16384:KS16368U"Press any key to exit...";fC((1)16)sC0ī20X1((1)40)#Y1((1)40)(X2((1)40)-Y2((1)40)2C:X1,X2Y1:X1,X2Y23Y1,Y2X1:Y1,Y2X2 7I1C:S(SP)(SP): <(KB)127ī75, A(1).96Ĉ4 F20D KKS,0::: @ X [ )! PDL(0) controls speed of display Press any key to exit.e J! 8(8( 3LQ JJ ,0`hh, 9 XLJ &!'L((((PPPPh:h;:;: L1!;H:H`eeDiB8DBȰD<>A &A>e<A@ >@><2KIJT<J3(I3)IW12xFI,K:K,I:40I,40K:40K,40IPK,40I:40I,K:I,40K:40K,IZ:::20c::dB   eȑi i @ A 8 9 I`W2g @ʩ`ʩ`H h    L `@ A م  8 A`  @ A $ `Stop at Address $ Stop at Line  ȱ `  & 2 @ L ` r ~ l p Le l p l p L> ץ ` d'H hݤ EH h   L ' ( + @" B3 CP Di E} F G H I J K L M N2 PD QQ Rl W Z H ha{i HhILCase Index ErrorArray Index Error Input Error File Not Open Range ErrorArithmetic OverflowPathname Too Long End of FileCannot Dispose Heap OverflowToo Many Open FilesCannot READ from "output"Cannot WRITE to "input" ProDOS Error I/O ErrorNo Device ConnectedDisk Write ProtectedInvalid PathnameMaximum Number of Files OpenInvalid Reference NumberDirectory Not FoundVolume Not FoundFile Not FoundDuplicate Filename Volume FullVolume Directory FullIncompatible File FormatUnsupported Storage TypeEnd of File EncounteredPosition Out of RangeFile Access Error File is OpenDirectory Structure DamageNot a ProDOS VolumeDuplicate VolumeFile Structure Damage  @ XLS  @LS  9 LS )0 00LS   LS   = M     LSJ&'.L LiH h-`J&'&Ly((((PPPP ,   LS  -  LS   = D,ȱ) LS   =  7 =LPress any key to exit =  =  7 =2 =IIL: = =IILᄉ = =IILmm ( =  = ` = uu  =  =  ` =  < M 8(8( ( =  M ( =  M . ( =  M ( =  M . ( =  M ( =  M . ( =  M ( =  M . ( =  M ( =  M . ( =  M ( =  M . ( =  M ( =  M . ( =  M ( =  M . ( = M8 c  LH L L LO =  LS8ȱ Ly  Ly  ȱLȱȥqȥq?7ȱȱ  qȱq`qȥqȱȱ  qȱq`8   ȱ  ` ȱ ٠ ȱ HH h h Lw   y `4 5   ` `8 Hȱ h  Ly  ȱ `h ;h`    `   ȱ  ˪Lu ` "  ϪLu ЪLu   ̪Lu  i i R i iA Rʩ  R` *L` *L) L*uuPLy `eeHHHȱh o> ? ``hhlȱHȱhL o> ? ``ee` > ? hhhhHH8ȥȥȥ`eeʥ`ʕ``` B ED &.B &&eemB B ,C 0B  D 0Ly  &` &&&8 &`E 8 8` 8`