8L2C)pJJJJ IH(ȱH:=IH[H`@HcH  $ +   I/H`JLNGȄBȄF aK  haaFF  mJm# KKJ UJ )J ۈ) ;J3ȱJFȱJGJKaȄM  aaNNJFLGJL L  !"#$%&'()/9 f)/DSK2FILE57.ICONʐBvvSTARTUP#DSK2FILEP P , ' &PRODOS#Bb ! ,BASIC.SYSTEM*(M & 0*DSK2FILE57?#Bf,f,FINDER.ROOTb P 6 pP  FINDER.DATAc}P 6 pP DSK2FILE57.4THr? &PRODOS `DaElH$?EGvѶK+`L HHLy XP LM ŠϠĠӠS)*+,+`F)) (*=GJFjJJA QE'+ '== `@ STSP8QSS8 m P o R(8RL| Ly Lv Ӡֲ㮬f"f"C# "&i01h+# )#M8 % ) L"g# )L"@, )7(P0 ( @A p LKL`BLL ޥޥޥޥޥޥޥޥޥޥޥޥޥޥޥ(C)APPLE xLLM Mh@8nЍLޭ 0J @,,L=#آ <B*IBGF08Lé'+8H <,``h(`@ڍL3HEVhEhH)IWHPHHHAHHHLaVEWLӿ``"M,Z(") \i ᘏi᫫8(`hhh8k-<ʆ>Q=?BC8 é&'112``+ H++ d+` w+ H+ d+`hh8`8`+++`}+`e`H)hJJ+0JJ)` (< ( < *? ( < (? ( < (? ( <*? * **? *? *? ( < *? ( <x0HH1HH rȱȱȱ0\aȱeek+ȱ+ȱ++ȱ++ȱ+ *+ + *`L@+ + * L) *Ș8e` ,$`ee` `&  LdDž )Pi)) () ))&-&),&͉&) ))&0)У` )ɥ`HZJ)  )zh %J)֭)n)}11J  2 (8`ɿ` (Xp< @ ( )m ( (. (( M (i  ``) '(j21 & &!` (&&(i)&)( CdBdDdFdGE ) ) ))) ))&$ >(,&& … >(ŅL 'JJJJ`Ϡ(8223 ')Д )18&"m11 2H22h2舌&&12H)M0 h1020I20h2 (`L%12 `\(#L  98" :ȱ)ɀ  ) ( 8 0 8  `0 / X   / &; Pb 8 )0`ddd1&… (n&Dž (\%T&Ln()8= (J 8(&(& >((ʎ1΋&΋&&3ʈ0 o 0堠خ YYZLYLY@뿭`d 8#@8` %MNЩUMߩ  L 5     m# m# J LB Qר)ɨ] оȱ ̀𩠙 i ȴ O Ѻ G \ ɟU ʿ V@$ A ɛL e '8 Jm ĠŠŠҠ`#{% F%Z]``e-.!0SB}/BiBB}/ gF/0k) y! ʿ  L##)4,- U JNT) )#L# ) f"` #K)D/ #3 &#'#(# ## iL X"0#"0ӂ8 )# f" +#$#0 &$#0 %# )ȍX#f"P# )ɂH#*# ) %)0I0hx H( , %Щ ߜ)#j )f 8'  )ɀ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,~`8@ؐʈI묤)8 La LةC8`؍)@ fi)8wJ ] ؅F LW) y+%J(^ FإGؐ,` JHIH I%FHGI ٰ:`JJJJ9 d묣͸ dٍ0 u  `H8` `ٍyٍiB0H0FGy h0`FG `ϩBxEdD0C ް(`(8`ؑ@`M8ٽJJJJ`Hͮhk)&NjNjNjN. 1Eͮ d8٭ u'Nۙ۰ڙک `Z8` 1# ` . . .8۰*J۩ ܝ`)َ 8ʈ` 0ٝ)i `8`O 鍮 dMمFمG ; ή0FG뮣0 ٭٭ٽ8`H8`  , 8`  ` < 0̩ 谾 }谹`12)1`0`Ȏi i ٞU`)8`` U _G *A)H ܝʈh٭0٭)ܝ٭*ܝ٥F٥G٭'ܝ٭(eHI dSBX0k }ٙiٙgFleʈ L`8m0`,0H hi MȽٍ0dGF8yאFG  }$0 *01 E8`100`n܍op L8D`F` EgH)HFȍlHGm %܍&܍ܢ8* J8` }L ܝ\)I 'ܝX`d8ipFnGo`d܅IH3H ( )ȱH`ά8c T)Ia)܍p*܍c'ܮ( 4 䭐 $H %HFFHGHG 됬`R8` )` cHq` _9܅IHHqqЍq  @`8 ` ͫ% ΫQ8`܅I lmq)5qI0ܢܽ n'c* 7FG (ef Ld܅Ip mcIH`  k0no cqHlFmG 밳lm 밨e%܈b"@ 0 $ LK8`X YI8`FHGH GF܌ עFܽܕF芝ܝ 밸XY Z܅I m[IHHyHȘI L`ܞ @@ @Ю׍q)mיqʈ@ȱ@ȱ@i 뎣`ةC8` @)0 e/N0 *ڽ0 ti` <; 뮣ٝ٘ 0 W,0 .H hȑNWȮّNW8`ٍّN0NN` G8`F뎰ڮЕ` } L ` r@>q)I38 kם`K8`@Nȱ@O@ eIiNȽבN)/ȩ/N`@Z VH:JjjjhA "'KI؍0JHl8` Q)T 22D) ɺi )?  }   ސ `@Hȱ@IױHXATȱH ɯȩ׍̰5H)/@a)_ .0 :A[8@`,@~@}J@` ߩ%S @ ~`E hhhߺ0 h߈ ߐ( ߐ ߐ   ޕ0 HϭߍLпlllJjHIH@=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ح) ) )Ю ЪVXXK تKo`V8`no` "on VI9XX`)&HJJJh`OeNeO࿰ V9XГO`@ȭ@` ON <NJKO`?>х=d<<>=? 밽܅F݅G ` \) S$ L`LHH hFhG܍ݍ 8 `FHGH  hGhF`ݹܙ݊`@Bɼ>K@J5 V9X(K   ܮ `J HH hh` 0@ tL)lL S_Xܝ ݝ0ȩFG  0` ܅F݅G ` \ Sͬ @ȅH@IL,0` rD }ﭩ: SH-)N 0 $q)@kP8` 2  dHqefe h`yٙ٭yٙ٩`H 1BFG 3%&N   i` ם0 B )( ȹ`8m8m@8` G8`F } r }P⭏)@N8`q)@J טyרםqq)׍q 밑 LȹL h(8H  h(8Hh(`ؑ@`@ȱ@ ` r@@8Wq ^鮣ٍٍٍHٍ8hqJJJJq2)q@` r%I -) 20@q)N8` @LL =@ ȹP8`ݼ@ʈL KIJHȢݼ ^魼)Jn 8  ؍ ؍ 2H8 ع)JJJJ Ȣ؝I؈)p )@ f ) yʩ ؝j0lm 밫 }nolmFG w嬤؍؍؝ ؝ q) q )حk͸ d`H@h`h``N8`  ) ⬤Ȣ؝@عiعi` )؍0CGHFHdBdFdGx ް(8hFhG`@4͔ L @Ai ׭2` . 0#ع؍0 <讣)`.@+ i 8` L )0 NLMO MІMEKݸP$MEK O,u PeNNO (` C  7 2JHIHI؊ aL-  ` ? H ع H ؙ؊IhHIhH a iع `  轘ؐ` Gؽ؝ G  G؝؈` ` H 1h)N@ ; L  $ )dJ S ) iH h8` ) )حJjIHIH؊ PLJʮ`QʱLN0MOMEKP.MEKӱL-M O,up莿eNNO(`JNKOL / P L8 a ?ؑJ`L@ȱ@ `@Nȱ@O`؝}ILL L e L  pJ )@NJOK iKK IJ v JФ̭JjHFIH HIGxKE ް((H vhH h8`8@ȭ@L쬤8NNO 8 ؍JLG.F $ ᭔ع+ؠ H  0h8` 䮣ٽ ٬ؠ@` ( j )8`)i п` H h)N$% ILBJ DքEdFCJJJJ֍nH}IC J֭֬։/)DI@+8`@Ae C!$|1OIIJK,-NOPQRSu' @   !"#$ Ԡͭ Эht X l)lhЏL2  9 X [ J  dgdshUj" !# wgjdg. wg'g%s wghg%s w h ɍ1Ɋɋɉɛ kʽ/`L2LY g Xح o âXoύX`1e0e21ʆe dk)i/ k Lkdha+ # nrdcddpqt$q0c)crorcc0enib ` r )pqn  Fby LҠؠӠ΢ϠԩҠŠƠԠԠŠӢɯϠҠůȠԠĠ  ɈL :Lɍ)ې)ɮ۰ɺH h 'L  ġLL ̹L)'L ȳL O'F ʻ ̹(((L $ʩ $$ $L `ީ % K@D E  / XʩXύX X %   % ɍRH hɛɘɉɈ $ Ld :Ldې)ɮ۰ɺ' Ld  : X ( % ɛ$ɘɉ 8V%֌&8V֌֠)HV)hH)hHIhդD?DRIDQD)҅; ?JDQD]ՎՎՎ`MY pӭY)p  ӭp`C)`BFGV 8``8LխӅ:HhHh Ո թ թ ՘VYҪҦ>:Y)Ң`;R?AJ;<ȰY)Ң`Y?)Ң`ȐҰ ;HhHh=Ң`Hh `Hh`DEiȍ0֌1֍ZԍsԍԍԍԥDEԌ8TԌ8WpԌqԠ 7I꽌ɪ꽌ɭ蠪:љVE:8`]ѾV]H)]ѾV]ҙ)]ѾT]ҙ)] >8hUD` ԝY`> Hh݌(`HCJJJJ)*h`0($ p,&"op8`kkV꽌ɪɖxlӽ*kӽ-kәmMlӈ 꽌ɪ`8` *L o % ԽYӍZӭoӝY 3Ѡ шNZ`rZLkӭZӍq8r7IZӐiZkӐk 8 ѹs ӭq ѹ| kн Z)*>>` @ $(,048<@DHLPTX\`dh 0ުlptx| ֽ ְ& .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Ӧ>` Ր+><>=?<>CAB@?A` 1 L  <>`ڢF]PL8i m L   6< L  BLRAM' hLDLHB-9F 3"aɿ LLB Nϰ H  @h( L Lj  @`eLJCAB@=?ȱ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/8p@3 @LtJ)s@J f 򟰸 p`H? hth?,E30ɍФ3 E3HD F3 Ʉ%h3 fM E  pLthɍLL3`3,A0s0% Ipn HpnI:L ؅30پھ p WH־Ǿh۰8L־JjjjZ[ɾ)Ⱦ8 AOLӜ ҤLLX>(F`־ؾپھ׾` fɄ KDEF zLp z pL[ fKɍKL?`  zL$݅3`(l8L3LX>(Ƀ,`3,G0]ɾ g` H`پ_پ p _پ׾`>( p۾m׾) W)ʩ@`ɾ>(O puȾ ɾ-O ͱc־JjjjZ[ (`O>0O z PODEF޾ p  ޾ p($ذ z (0 k( L?ԦʚLeةީe s  pL f,FLk,DL,C0$3 >@ Ɉ 3ɾꩈL(3ɾ;Ƀ kB94 l% fʽ  ՚,S` H H06172839h` z97L75v^e ?/( ze?L[LLɍ$?`?e ɍɥAH93827160hH46576879h`,C fL ɍ f ,S0 @ pLޭBYL 8!9 詍` "  4"/pŠϠŠà͠ӠàԠŠJJH !h穖tp% ;"Z/݀>">"' 1" 7"5).莀/ ;" " 6" >" 1"6"$ "g"" !"""""IջLLG ASTARTUP$#   / XXύX?klmnÍoL) "6L'?"(0`6708" = ***)<+,-./0123456789:;<=>""8h/ ʎ S` ?8 r 0 88`  Can't run next application.ProDOS Error = $ Please insert the disk: Accept: M Cancel: Esc`HZ; [:HZ"h+h`8h`/Ȁ򈘍` L   `H0H"hHHH HHH "hpHH"VHH; [*i)    +hhHH"3Lm8n933LҞ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/XYjV) e :8` B ?`l׾ XYW0V)HW׾ؾ,WpHh_`)0%I0)3]8X^YȰ8` 8` p Ⱦɾʾ8`پھW)@%ZȾ pSԩ p`S$ @8gȾhɾʾg׾hؾ  p hgͺ칾`LCV)jC mMjà Lp `VJJ°LGLp :)< LQ : LQW)8VJưϥ3   `F`4W)ɐ3 zLG # e $L? b 4 kimljn`  pg׾mȾXhؾmɾYtѮȾɾ YX`8gS ST$I2 U)VJ :T)`l8`a HbIJhjǾȾɾ p٭b=a<I/q)im@^ʈ0 L/S 51-m@ʈ0 L٨/` E չ5L/A2ʩJ -V HrTJ6LGSL )AJ E @V n k38`J" Hʩ V HЧ H HЖabT)!J B8`@U)9VJ T)h*I/W)󩭙L=id =`H) +hJJJJ ɺi` [  ` . 8  `O`S  )AI-LG B C VW>m⻑>` !im8i仍nj廍ki滥lj绥oi>?Ek?>Q>> L>ܻ `/ e>>?ܻ?ޱ>Kpn͵ @p;=po:?Ek?!>Q>>>ڻۻ `` `>ڻ ۻ `e>>?ܻ?ܻ>?Emn(>e>ܻȱ>e?>Q>ؠ> ie>>?`׻;ػ=:<ٻ:<=;`׻׻mػ;>:8o>oȑ>ppȑ>> :oݻp` H,WpW)0پȾھɾʾ p p,Wp CL8`jÍ eN I 9 1黍׾껍ؾ컮  p p C H h(`׾ؾ`  ߭黍׾t8mؾŰ黪t껨 L8` ˌھپLp k V)@W0!XY \X6Y7` \ YX`X:Y;τ<:: <`:8` b ke eվ e'OV)Jj :f a ( z   A&ji Ҥ @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aLLLLL[^)o `\o8` ԠŬLL,~z @`$仫@v$⩔,C[B?I>孓`仫6VtCicQĿUKqtVt Nʮq$6,⨁ K6, VtI=v!gNVt Vt  lg~Tһ   LiLMTRӱüϠž(+@ABCDEFGHIKLMNPSV     T[fouu~ՠٯ* PWN*]ĿNTz @n6VC/+A>@I5gN Oz @n[Dz @nd0PENWRITEXECREATEFRESTORENAMEBRUNLOCKCHAIN#FLUSHREADPOSITIONOMONPR#PREFIXCLOSEAPPEND Hѫ5 FڬB :hQ|Q@@ -!S    !C- !ABELSDFRV@@ !$(19@E ۭ (8 mȾȾmɾɾʾiʾ` Lpl8l:/0sНsƬƀ#(ZZV4G_0=( A P FjL\5p-e9ABSAVERIFYBLOADELETEBYECATALOGOZ}ȾȾ󰹩 p` ־ǾҾ,G 8`׾ؾ ж p ධۥs׾tؾE` ( о(־Ǿ,G 8`_`W)H־JjjjhZ[ p̭ зLKǾ  . .8  ȾɾʾNfne }ȾȾI > Ie f`8` P־ǾҾ,G0C ж=W)_`ZV"׾پӾؾھ pD`Y׾ؾOW)Ⱦɾʾ pD`8`W)CB) 5W) )W)@! p:`V)R ޾,N0MHhHh p' P,N HCNh`M`M N `޾Lp h־Ҿ,G0^W)TP) ecfdپھ׾ؾӾ p$c d pccddީ 8` jЭW)`_ 㻍Ͼ pH Ph8`jGM㻝ﻭоM  GY):_Z`[蹀[:`V)8`MN; Ҵ;`;C Ҵ N8` YG)̀#:Z[蹀[Ǿ ph㻍Ͼ pH Ph8`Ͼо־ǾҾ_` [Ӿ pW) LC`C N `9V) ` V) ޾ p` (8` 8`8`(W)`_V)Ij!؍Í`_ eʾ`HV)jh츾$-#㻍Ͼ p о־޾Ǿ` 8` 8`ɾ)ɾ ɾɾ0miȾ p pY)`lP *,N!ǾȾɾʾ pǾ~H kh8`8`,C k  8` Ⱦ㻍ɾM$ mHɃ B ,  W ` z])Y 񩢍`Ⱦɾ0Ǿ p) : z6 E= =& =8Hh =` 6Y׾ؾ+پھ p|پɾL,)L L HZ zh`Z )z`hh HH`dddd`ʘʆ`L%`L%ʘʆ`L%`L%ʘʆ`L%`L%ʘʆ`L%i 1! 1!ii 1! 1! 1! 1!L 1! 1! 1! (!L+allot E. ee`, X. ! 1! 1!L(!c, n. ! 1!L(!forget . z$ i$ $L% 1! 1!. 1! + L1!L%hh N! r!L% "ȱL+if . 1!% 1!/ 1!L+constant - z$ i$ $L% 1!> 1!- 1! + L1!L%hh N! r! L% ! +iiH 1!h 1!  1! 1! 1! 1!L 1! 1! 1! (!L+create - z$ i$ $L% 1! 1!- 1! + L1!L%hh N! r! L% ! +i%=%<%`<% $ L% N! r!=% L% +iiH 1!hL1!; B,=% L%` 1!=%L(!variable c, z$ i$ $L% 1! 1!, 1! + L1!L%hh N! r! L% ! +iiH 1!h 1!ii 1! 1! 1! 1!L 1! 1! 1! 1! 1! (!+`read + z$ i$ 1!8 1!+ 1! +L1!L%hh@%Ȁ?% ))@ )8n>%8n+ * +HZ *zh t%ל>% *LR%L% !  1! 1!L!  1!Ȁ`ȱ eਦZ`: +,=%L)?)%)) ) ))Q%`ʍ))Q%))))) )))))ii  )(`̍))Q%)L)d d 8**}*}* $  i 8f $ L  d' "*sA` ) "`آR)IX %)6 6 ) LR%蠲ᬠԮ쬠卍LR% )`yyč) )?)%)L)ȍ)nete砀 'e砮"n򠀠ddnnto""Q&0+ɀ!Z  Ȁ zȀ Ȁ LR%wwwwww䠀d$IiIi` 1! 1! 1! 1! 1! 1! L1!turnkeye57.4th ; !>% *>%=%=% " _` d i$ N,<% , z$ $ $ % z$ N! r!? % z$l 1! 1! 1! z$,=%0 ` 1! !,>%`L%H  򠭠>>3?d?}???@A@q@@@@ A 5   򈩈  ㈩ L ͙ IJ ` `-ȱ  0:Ȁ`8`-dddȱ 1 -& & &ee80e N! !i` ++>,X,--=.T.i.{.../o///Q000101G111b2222$3E3N3333333?4}44444455%5H5n5555555 696e6666C77788O88889)9>9[9j9x99999::5:Q:t::::::@;R;`;m;;;;;;;<<=O====>=>\>|>>>>ȑȑi`8ȱ V! ` `橍 ȱ  ʀ0  i,ɓ,ШТL ` :!#`L% ````⩯`dEȱ  )``ȱȱȱ   `ȱȱ`㙀# 1! 1!L 1! N  N 1! 1!` `else 5/ f L% f L 1! N  N 1! 1!`then v/ f  L% f `do / 1! 1!/ 1! L L  iiL loop / / L% 1!- 1!0 1! 1! 1!L 1!  1!L1!  `  `+loop Y0 / L% 1! 1!0 1! 1! 1!L 1!  1!L1!   ee`  `leave 0  L% L 1!  1!L1!i 1lose >~< {<< ~`L%3- B>8`L%4+ a>`L%4- >8`L%k > L L%.$ > Hh A `normal > `inverse > `type > fopen =~<  z C9 0,L false c9L true q9L 1+ }9 `L%1- 9`L%2+ 9`L%2- 98`L%2* 9 >`L IiIiL negate 8 < #8  E)0L L > S8  E)  L L = 8$ ,Ȅ`L%<> 8$ ,Ȅ`L%u< 8    IiIid   I IiIi``/ G7 7 e7$  IiIiL (dd&&&8  `L%mod 7 IiIi  IiIid  e7$  IiIiL abs 7 `L%and 6   L L or >6  L L xor k6 ,  ,EL + 6  ee L - 6  8 L * 6 7dFf ee&$  IiIiLL'4dup 5  L drop "5L swap ,5   L over O5    L rot t5     L >r 5 L r> 5 L r@ 5 55 55L . 5 L'4u. 5 L*not 5, '4`  ` IiIiL*.r D4 '4`  `! 4  `@ 4 L c! 4  `c@ 4 L +! 4  rq`? 4  1! 1! 1!" 2`( (3ȱ )Șe`L%) I3L%' R3 z$ i$ 1!s 1!3 1! + 1!Lz$hh N! r!  L+L%execute 3 333lareg 33L xreg 3Т3L yreg 3ߢ3L words 3Lq".s 3!` z$ D 8ȱ / $  1! 1!$ 0 1!8e` L%." g2 1! 1! 1!"L 2 L%" 2L%string 2 1! 1!2 1!~L 2hh 1!ȀeથiH`lit" 2i i 1! 1! 1! 1! 1! 1! L L%j 1 L L%begin 81 N LN until O1 f L% 1!% 1!/ 1! 1! 1!L 1! f  1!L1!while 1 f L% 1!% 1!/ 1! 1! 1!L 1! N 1! 1!LN repeat 1 f L%L 1! f  f  1! 1 ee ii`count ;? ii `room k?8窤 `here ?ii `disp ?  ii`fgetc ?~<<< D : :`outHdr FN OB@ = D "5`800image lN |E )B 4 B 4 @ nG I A 4 %/LN FNȢ / 1 6 1 / 1 A 1 1 6 6 6 K@ D -0LN A = D "5 B: :`makeDisk M sF )B 4 B 4 @ A = D J# / >  R A = D "5 A 4 8 %/LM Y;  P 1ILM Y;  W / 1 6 1 6 A 1 6 6 |@ D -0LM Y; >  1 6 1 / 1 A 1 1 6 6 6 K@ D -0L L A 4 8 %/LbL Y;  P 1ILbL Y;  W A = D "5 B 4 %/LL B 4 Y;  ELL Y; >  . lD %/LL D 0LK ; > D ;  ----------------------------------- ;  STAT:  : : >  R >  = reading, >  W >  = writing, >  P >  = processing ; : :`makeImage K |E )B 4 B 4 @ nG J / >  R | 1 2 3 4 5 6 7 8 9 | ;  |..0...0...0...0...0...0...0...0...0...| ;  STAT:  : :`.track J : :  00000000000000001111111111111111222 ;  TRK: 0123456789ABCDEF0123456789ABCDEF012 3`>a I ,5 6 6 A 6`dosSwap 1I  / 1 I 1 6 I =H -0LBI`.update nI ,5 G7 6 : : > %/LI Y;LIE Y; >`.block I : :  % Completed ;  eA = DLH`(swap) HHL `swapSec =H 5 7 ,5 G7 5 H 6 4 H 6 4 5 H 6 4 H 6 4 5 7 ,5 G7 5 H 6 4 H 6 4 5 H 6 4 H 6 4 H4 3 ; ; : :  ;`open-file1 nG A = 8 %/LG A < D A = DLG`open-file2 G eA = 8 %/LH eA < D > "5 =B 4 3 ; ; : :  ;`ready2 sF ; > : :  Insert disks, target in S )B 4 5  ,D B 4 5 >  press any key: : 8 %/LG > "5 =B 4 %/LbE ;  *** ProDOS error, type >  (hex) Press a key: : "5 > "5 =B 4 3LrE "5 B 4`ready1 |E ; > : :  Insert disks, source in S )B 4 5  ,D B 4 5 >  press any key: : 8 %/LF D 5 5 O5 5 S8 %/L"D ,5 "5L%D "5`keypress 1D N 4 4 S8 %/LBD : "5`esc? lD 4 8 N 4`esc! D > "5 =B 4 3`accept D ,5 5 5 ,5 : 5 G; 6 4`.error D 5 9 %/LD "5LrE > A CL Iɠ0]Cj  NLB ;E]CLB NLB A .k LALA]CLB ;E]CLB]CPARMS ]CdCL BPMLI nCuCL dC`get_prefix CǢ nC 6 4 nC 3`set_prefix CƢ nC 6 4 nC 3`max C 5 5 O5 5 S8 %/LC "5LC ,5 "5`min error? BBL drv# B BL slt# )B0BL abortvec =BDBL _2mghdr OBVBL 2IMGSHEP@@@ PNAME BBL /]C`^C0@A0<[0a04{0]CƝ˝ŝٝ詮^C詍LeE^PNAME2 Bepth AL file1 AAL ش̵ŶҲ¹бӷƻֿàfile2 eAlAL ӕ wSS宮 D D I= eEL.L/8`k l m theBuff AcL isize A̢AL iorder AޢAL 2mg? AAL err? AAL 4 %/L(O B 4 1 nIL5O 1 nI lD %/LCO D -0LN ; > D : :`800disk zO sF )B 4 B 4 @ A = D A 4 %/LO A@ = D "5 IȢ / A = D "5 / 1 6 1 6 A 1 6 6 |@ D -0LP B 4 %/LbP B 4 1 nILoP 1 nI lD %/L}P D -0LO ; > D : :`getNum P : 5 50 C9 D 8 9 %/LP "5LP0 6`show_prefix P ; : )B 4 5 >`setpfx ^ ; : :  ..................................................  .............. : B }9@ : G; B 4 G; 9 %/L^ B 4 B }9 4 C : :  8 %/L] L] B 4 >C : : B 4 5 >`toggle5 Q] A 4 %/Lo] A 4L|] A 4 >C : : A 4 %/L]  140KL]  800K >`slotnum ] )B 4 )B 4 9 %/L] )B 4 >C : >C : :  PRODOS >C : :  800K > >C : : A 4 %/Lp\  YESLw\  NO >`toggle3 \ A 4 %/L\ A 4L\ A 4 >C : : A 4 %/L\  YESL\  NO >`toggle4 \ B 4 zO ; ;  Disk created, press any key for menu: : "5`toggle1 D[ A 4 %/Lb[ A 4Lo[ A 4 >C : : A 4 %/L[  DOS3.3L[  PRODOS >`toggle2 [ A 4 %/L[ A 4LA\ A 4 A 4 A 4 ile is in > A 4 %/L*Z  DOS 3.3L4Z  ProDOS >  order A 4 %/LcZ  , 2mg format.LhZ  . ;  -------------------------------------------------------------------- ; ; ;`file2dsk Z A 4 9 %/LZ A 4 eY W A 4 %/L[ ML[W V A 4 %/LY KLY lN ; ;  Image file created, press any key for menu: : "5`.file2dsk eY {:  -------------------------------------------------------------------- ;  IMAGE FILE --> > A 4 %/LY  140KLY  800K >  DISK. Image fK --> IMAGE FILE. File will be in > A 4 %/LDX  DOS 3.3LNX  ProDOS >  order A 4 %/L|X  , 2mg formatLX  . ;  -------------------------------------------------------------------- ; ; ;`dsk2file X A 4 9 %/LX A 4 e: eA@ D`getSname1 W ; >  File >  : C B ;? > A@ D`getYN WW : 5Y 8 ,5y 8 >6`.dsk2file W {:  -------------------------------------------------------------------- ; > A 4 %/LW  140KLW  800K >  DIS <7> Toggle drive number ;  <8> Select slot number ;  <9> Set prefix ;  <0> Exit to ProDOS ; ;  Which ? P`getFname1 V ; >  File >  : C B ;? > A@ D`getName2 V ;  Pathname of second fil---> image file ;  <2> Image file ---> disk ; ;  Settings: ;  <3> Toggle image order ;  <4> Toggle image size ;  <5> Toggle 2mg image file ;  <6> Toggle stop on bad block read ;  NO >2 : :  Stop bad block = > A 4 %/LKT  YESLRT  NO >2 : :  Drive number = > B 4 5 >2 : :  Slot number = > )B 4 5 > ; : :  Images: ;  <1> Disk 2 : :  Image order = > A 4 8 %/LRS  DOS3.3L\S  PRODOS >2 : :  Image size = > A 4 8 %/LS  140KLS  800K >2 : :  2mg format = > A 4 %/LS  YESLT  -----------------------------------------------------  ----- ; : :  Copyright 1997-2000, Ronald T. Kneusel, rkneusel@mcw.edu.  Freeware.6 : : >  Current Settings >2 : :  ------------------------- : :  Prefix: C > B ;? > >`menu :Q {:  ---------------------------------------------------------------------  ----- ; >  DSK2FILE - version 5.7f, disk image utility,  March 2000 ; >  ----------------  P`get_start_prefix =_ CA / B 1 6 4 B 1 6 4 -0LQ_`set_start_prefix _A / B 1 6 4 B 1 6 4 -0L_ C`main _ A 4 A 4 A 4 A 4 B 4 B 4 )B 4 =_ :Q : : P 5 8 %/LZ` "5 X :QLVa 5 8 %/L{` "5 Z :QLVa 5 8 %/L` "5 D[LVa 5 8 %/L` "5 Q]LVa 5 8 %/L` "5 [LVa 5 8 %/L` "5 \LVa 5 8re writing to the file. Most newer emulators support ProDOS order (.PO extension, usually). If you are working with 800k disks then the image order used is always ProDOS regardless of this setting. If you are working with .2MG format, either creating a the way in which the information on the disk is written to the file. Virtually all Apple II emulators handle DOS3.3 order which usually has a .DSK or .DO file extension. ProDOS order is slightly faster because there is no swapping of data in memory befot number You will likely use <1> the most often. The second option is for those who might come across an image file and want to put that file back onto a disk and run it on a real Apple ][. The image order <3> is either DOS3.3 or ProDOS. It determines ---------------- DSK2FILE's menu has two choices: <1> DISK -> IMAGE FILE <2> IMAGE FILE -> DISK and some options, <3> Toggle image order <4> Toggle disk size <5> Toggle 2MG format <6> Toggle stop on bad block read <7> Toggle drive number <8> Select slolace to put the resulting 1608 block file. A hard drive works nicely but a large RAM card would do as well. DSK2FILE will create the file, it is up to you to get the file to the PC or Mac. See below for suggestions on how to do this. Running DSK2FILE version you need an enhanced IIe or better. You then need a 5.25" drive and one of the following: (1) a 3.5" drive (2) a hard drive (3) a RAM card with 150K or more If you want to make 800k images you will need (besides the 3.5" drive, obviously) some pl handle DOS 3.3 order, some will also handle ProDOS order. 2IMG format is for specific Apple IIgs emulators and is only available with 800k disks (regardless of any messages to the contrary) What do I need to run it? ------------------------- For this 'gf$S*5BDSK2FILE57.ICONBPRODOS BASIC.SYSTEM DSK2FILE57*4`` %/La "5 \LVa 5 8 %/L/a "5 ]LVa 5 8 %/LMa "5 ^LVa "5 _ ;  #8 %/L"``9name1 yaaL dsk2file579getname1 a ;  Output file: yaB : ya G; 6 .2MG image of an 800k disk or writing an existing .2MG format image to an 800k disk, then use <5> to set the 2MG flag properly. Many of my old disks have bad sectors or blocks but are still usable. Normally, DSK2FILE will ignore read errors and create a disk image anyway. This is usually a good thing as you can preserve a slightly damaged disk, but there might be times when you want to stop on an error, if so, toggle this option. (<6>) <1> DISK -> IMAGE FILE DSK2FILE reads disks from the slot selected we the file to a PC disk if need be. It doesn't work, now what? -------------------------- Contact me at the email address above. If you start seeing two digit hex numbers please write them down to help me in the debugging. These are ProDOS MLI error cce I have Internet access) Another option is to use a null modem cable and go directly to a PC or Mac with the image file. Lastly, you could write the file to a 3.5" ProDOS disk and use a Mac to read the file with Apple File Exchange. Then you could writ------------------------- The end goal, of course, is to get the file to a PC or Macintosh (or Unix box) I use a terminal program to upload the image file (written to my RAM card) to a Unix box and then download it to the Mac or PC. (Really, I FTP it sinS order) are quickly re-arranged in memory. The track is then written to disk. Writing an image works the same way, read a track from the image file, swap sectors to get the order right, and write it to disk. What do I do with the image file? --------8 blocks per track) How does it work? ----------------- Glad you asked! :) This version uses the ProDOS MLI command built into QForth to read a single track of the disk. If the order specified is DOS then the sectors (which are read as blocks in ProDOhe file in one order while using track 0 to 34 and sector 0 to 15 for each track will write the data in a different order. Either way, all the data will be written, 143360 bytes total. An 800k image contains 1600 ProDOS blocks or 200 tracks-worth (using OS block corresponds to two sectors. However, these are not necessarily contiguous sectors. ProDOS uses a different physical spacing of what DOS 3.3 would call sectors so that reading all the blocks from 0 to 279 in order writes the data on the disk to t, I'm simplifying a bit, I know :) DOS 3.3 is the older and slower of the two and deals in 256 byte sectors with 16 sectors per track and 35 tracks per 5.25" disk. ProDOS is faster and deals with 512 byte blocks, 280 per 5.25" disk. Therefore, each ProDonfiguration. For 800k disks either ProDOS or Mac will do just fine. What's with the DOS and ProDOS orders? -------------------------------------- The Apple ][ has two different disk operating systems: DOS 3.3 and ProDOS. (Yes, there are several othersors are as above. The target disk must be FORMATTED. DSK2FILE will not do it for you. I looked into it once and it wasn't worth the effort to add it. How it is formatted is not important: DOS 3.3, ProDOS, Pascal, CP/M, etc. all use the same low-level ce right image order. Use ProDOS order for .PO images and use DOS order for .DSK and .DO image files. Recall that .2MG extensions refer to 2IMG files which are 800k ProDOS order. Be sure the 2MG option is set if working with these files. Status indicat produce an inverse "E" while no error displays an inverse space. <2> IMAGE FILE -> DISK Insert a *formatted* 5.25" or 3.5" disk in the selected slot and drive then specify the *complete* pathname of the image file as above. Use the options to select th memory (if DOS3.3 order) and written to the output file. If a read error happened but was ignored an "E" is left for that track. No error is indicated by a "." 800k images use a slightly modified display which shows the percent completed. An error willith <8>, drive 1 or 2 (option <7>) Enter the complete pathname for the output file. Insert the disks when asked and press return. The image file will be created. Note the bit copy program-ish status indicator. As each track is read it is processed inodes. DSK2FILE will not read copy protected disks. Disks with bad blocks or sectors will still be written to an image file with nonsense in the bad block or sector. Ron Kneusel AMDG Updated: 06-Mar-00 (Cool IIgs Finder icon courtesy of Adrian Whichello (adrianw@ee.usyd.edu.au)) 0 c, ( end header ) create PNAME 80 allot ( room for a prefix ) create PNAME2 80 allot ( startup prefix ) create PARMS ( ProDOS parameter table ) 1 c, ( number of parameters ) PNAME 256 mod c, ( address of output buffer ) PNAME 0 c, 0 c, 128 c, 12 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, ( address of abort routine ) ( 2mg header ) create 2mghdr 50 c, 73 c, 77 c, 71 c, 83 c, 72 c, 69 c, 80 c, 64 c, 0 c, 1 c, 0 c, 1 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 64 c, 6 c, 0 c, 0 c, 64 c, 0 c, 0 c, 800k 2mg format ) variable err? ( -1 = stop on ProDOS err ) variable error? ( -1 = error on block read ) variable drv# ( drive number, 1 or 2 ) variable slt# ( drive slot # ) variable abortvec first filename ) create file2 64 allot ( second filename ) 25344 constant theBuff ( hold a single track, $8000 ) variable isize ( -1 = 140k, 0 = 800k ) variable iorder ( -1 = DOS, 0 = PRODOS ) variable 2mg? ( -1 = ) ( [*] prefix read at startup and can be set ) ( ) ( ------------------------------------------------------------------ ) create file1 64 allot ( ed track buffer to $8000 ) ( [*] no crash on empty prefix string entered ) ( [*] pressing 'esc' key aborts image operation ) ( [*] choosing 2MG option forces PRODOS and 800K ) ( Last update: 06-Mar-00 ) ( ------------------------------------------------------------------ ) ( ) ( [*] chang ( DSK2FILE 5.7 - Create a disk image in .PO or .DSK order ) ( Ronald T. Kneusel, 12-Oct-97. AMDG ) ( rkneusel@post.its.mcw.edu ) ( stuvwxyz{|}~CLOSE ";F$:  VIEW.DOCS )D$(4):D$;"pr#3"L"VIEW DSK2FILE DOCUMENTATION":"(use ctrl-s to pause/resume, ctrl-c to exit)":::"press a key:";:LOST$::(:F$"docs.57f"2D$;"OPEN ";F$:D$;"READ ";F$765<A$:A$;:60 AD$;"256 / c, create PMLI ( ProDOS MLI interface ) 32 c, 0 c, 191 c, ( JSR $BF00 ;MLI ) 0 c, ( DFB $00 ;CMD NUMBER ) PARMS 256 mod c, ( DA PARMS ;PARAM TABLE ) PARMS 256 / c, 96 c, ( RTS ;NO ERR CHECK ) : get_prefix ( -- ) ( get the current prefix ) 199 PMLI 3 + c! ( GET_PREFIX ) PMLI execute ; ( prefix now in PNAME as a counted string ) : set_prefix ( -- ) ( set the prefix in PNAME ) 198 PMLI 3 + c! ( SET_PREFIX ) 13 cv ; : .track ( -- ) ( print track processing text ) 0 ch 10 cv ." 00000000000000001111111111111111222" cr ." TRK: 0123456789ABCDEF0123456789ABCDEF012" cr ." -----------------------------------" cr ." STAT: " 3 ch 16 cv inveemit then normal ; : .block ( -- ) ( print block processing text ) 0 ch 10 cv ." % Completed" cr ." | 1 2 3 4 5 6 7 8 9 |" cr ." |..0...0...0...0...0...0...0...0...0...|" cr ." STAT: " 6 ch r in track ) 15 swap - 256 * theBuff + ; : dosSwap ( -- ) ( rearrange the track for DOS order ) 8 1 do i >a 15 i - >a swapSec loop ; : .update ( trk ec -- ) ( update the 800k display ) swap 5 / 6 + ch 13 cv inverse if 32 emit else 69 dup 256 mod swap 256 / ( a1.low a1.high ) dup 11 (swap) + c! 4 (swap) + c! ( pointer to a1 ) dup 10 (swap) + c! 3 (swap) + c! (swap) execute ; ( do the swap ) : >a ( sec -- addr ) ( calculate address of secto ( RTS ) : swapSec ( a1 a2 -- ) ( swap two pages, 256 bytes ) dup 256 mod swap 256 / ( a2.low a2.high ) dup 15 (swap) + c! 8 (swap) + c! ( pointer to a2 ) dup 14 (swap) + c! 7 (swap) + c! ( STA $1000,X ) 152 c, ( TYA ) 157 c, 0 c, 0 c, ( STA $2000,X ) 232 c, ( INX ) 208 c, 239 c, ( BNE LOOP ) 96 c, wo pages ) 162 c, 0 c, ( LDX #$00 ) 189 c, 0 c, 0 c, ( LOOP LDA $1000,X ) 168 c, ( TAY ) 189 c, 0 c, 0 c, ( LDA $2000,X ) 157 c, 0 c, 0 c, it if necessary ) 0 file1 fopen 0 <> if file1 6 0 fcreate .error 0 file1 fopen .error else then ; : open-file2 ( -- ) 0 file2 fopen 0 <> if file2 6 0 fcreate .error 0 file2 fopen .error else then ; create (swap) ( swap tS" slt# @ . ." ,D" drv# @ . normal ." press any key: " key 27 = if 0 fclose drop abortvec @ execute then cr cr 0 ch 10 cv ." " cr ; : open-file1 ( -- ) ( opens the file, creating . normal ." press any key: " key 27 = if 0 fclose drop abortvec @ execute then cr cr 0 ch 10 cv ." " cr ; : ready2 ( --) cr inverse 0 ch 10 cv ." Insert disks, target in :" key drop 0 fclose drop abortvec @ execute ( execute abort handler ) else drop -1 error? ! then then ; : ready1 ( -- ) ( insert disk message ) cr inverse 0 ch 10 cv ." Insert disks, source in S" slt# @ . ." ,D" drv# @ ) ( expect, but makes a null terminated string ) swap dup >r swap expect 0 r> span + c! ; : .error ( ec -- ) ( print an error code if any ) dup 0= if drop else normal err? @ if cr ." *** ProDOS error, type " .$ ." (hex) Press a key to be pressed, no cursor ) 0 -16306 c! begin -16384 c@ 127 > until key drop ; : esc? ( -- t|f ) ( true if esc pressed ) -16384 c@ 155 = 0 -16306 c! ; : esc! ( -- ) ( quit to menu ) 0 fclose drop abortvec @ execute ; : accept ( addr len -- PMLI execute ; ( prefix assumed in PNAME as a counted string ) : max ( a b -- max[a,b] ) dup >r over r> > if drop else swap drop then ; : min ( a b -- min[a,b] ) dup >r over r> > if swap drop else drop then ; : keypress ( -- ) ( wait for a keyrse ." R" normal ." = reading, " inverse ." W" normal ." = writing, " inverse ." P" normal ." = processing" cr 6 ch 13 cv ; : makeImage ( -- ) ( make a 140k image ) ready1 slt# @ drv# @ slot/drv open-file1 .track 280 0 do inverse ." R" 8 i + i do i theBuff i j - 512 * + readblk .error loop iorder @ -1 = if 8 emit ." P" dosSwap else then 8 emit ." W" 0 theBuff 4096 fwrite .error drop error? @ if 0 error? ! 8 emit ." E" else show_prefix ; : getFname1 ( -- ) ( get the name of the output file ) cr inverse ." File" normal ." : " get_prefix PNAME count type file1 64 accept ; : getName2 ( -- ) cr ." Pathname of second file: " file2 64 accept ; : getSname1 ( -- ) 2mg image file" cr ." <6> Toggle stop on bad block read" cr ." <7> Toggle drive number" cr ." <8> Select slot number" cr ." <9> Set prefix" cr ." <0> Exit to ProDOS" cr cr ." Which ? " r 0 ch 6 cv ." Images:" cr ." <1> Disk ---> image file" cr ." <2> Image file ---> disk" cr cr ." Settings:" cr ." <3> Toggle image order" cr ." <4> Toggle image size" cr ." <5> Toggle lse ." NO " then normal 50 ch 14 cv ." Stop bad block = " inverse err? @ if ." YES" else ." NO " then normal 50 ch 15 cv ." Drive number = " inverse drv# @ . normal 50 ch 16 cv ." Slot number = " inverse slt# @ . normal corder = " inverse iorder @ -1 = if ." DOS3.3" else ." PRODOS" then normal 50 ch 12 cv ." Image size = " inverse isize @ -1 = if ." 140K" else ." 800K" then normal 50 ch 13 cv ." 2mg format = " inverse 2mg? @ if ." YES" e------------------" ." -----" cr 0 ch 22 cv ." Copyright 1997-2000, Ronald T. Kneusel, rkneusel@mcw.edu." ." Freeware." 54 ch 9 cv inverse ." Current Settings" normal 50 ch 10 cv ." -------------------------" 50 ch 11 cv ." Image -----------------------------------------------------------------" ." -----" cr inverse ." DSK2FILE - version 5.7f, disk image utility, " ." March 2000 " cr normal ." ---------------------------------------------------etNum ( -- n ) ( get a number in [0,9] ) begin key dup dup 48 max 57 min = 0= while drop repeat 48 - ; : show_prefix ( -- ) cr 0 ch 4 cv ." Prefix: " get_prefix inverse PNAME count type normal ; : menu ( -- 1-5 ) page ." ---- ( read a track ) 8 0 do j 8 * i + theBuff i 512 * + writeblk .error loop error? @ if 0 error? ! i 0 .update else i -1 .update then esc? if esc! then loop cr 0 fclose .error 0 ch 17 cv ; : g .error 0 ch 17 cv ; : 800disk ( -- ) ( make an 800k disk ) ready2 slt# @ drv# @ slot/drv 0 file1 fopen .error 2mg? @ if 0 theBuff 64 fread .error drop ( skip header ) then .block 200 0 do 0 theBuff 4096 fread .error drop 200 0 do 8 i + i do i theBuff i j - 512 * + readblk .error loop 0 theBuff 4096 fwrite .error drop error? @ if 0 error? ! i 0 .update else i -1 .update then esc? if esc! then loop cr 0 fclose 0 fclose .error 0 ch 17 cv ; : outHdr ( -- ) ( output .2mg header ) 0 2mghdr 64 fwrite .error drop ; : 800image ( -- ) ( make an 800k image ) ready1 slt# @ drv# @ slot/drv open-file1 .block 2mg? @ if outHdr then ( .2mg header ) eBuff 4096 fread .error drop ( read a track ) iorder @ -1 = if 8 emit ." P" dosSwap else then 8 emit ." W" 8 0 do j 8 * i + theBuff i 512 * + writeblk .error loop 8 emit normal ." ." esc? if esc! then loop cr 8 emit normal ." ." then esc? if esc! then 8 +loop cr 0 fclose .error 0 ch 17 cv ; : makeDisk ( -- ) ( make a 5.25" disk ) ready2 slt# @ drv# @ slot/drv 0 file1 fopen .error .track 35 0 do inverse ." R" 0 th ( get source file name ) cr inverse ." File" normal ." : " get_prefix PNAME count type file1 64 accept ; : getYN ( -- t|f ) ( true if Y or y pressed ) key dup 89 = swap 121 = or ; : .dsk2file ( -- ) ( dsk -> file header ) page ." --------------------------------------------------------------------" cr inverse isize @ if ." 140K" else ." 800K" then normal ." DISK --> IMAGE FILE. File will be in " inverse iorder @ if ." DOS 3.3" else ." ProDOS" then normal ." order" 2 3 = if drop toggle1 else dup 4 = if drop toggle5 else dup 5 = if drop toggle2 else dup 6 = if drop toggle3 else dup 7 = if drop toggle4 else dup 8 = if drop slotnum else dup 9 = if drop setpfx else ( no error yet ) 1 drv# ! ( default to drive 1 ) 6 slt# ! ( default slot 6 ) get_start_prefix menu begin 20 cv 8 ch getNum dup 1 = if drop dsk2file menu else dup 2 = if drop file2dsk menu else dup 65 0 do PNAME2 i + c@ PNAME i + c! loop set_prefix ; : main ( -- ) -1 iorder ! ( default to DOS order ) -1 isize ! ( default to 140k size ) 0 2mg? ! ( not 2mg format ) 0 err? ! ( don't stop on error ) 0 error? ! + c! then set_prefix 4 cv 8 ch ." " ." " show_prefix ; : get_start_prefix ( -- ) get_prefix 65 0 do PNAME i + c@ PNAME2 i + c! loop ; : set_start_prefix ( -- ) inverse 67 ch 16 cv slt# @ . normal ; : setpfx ( -- ) ( change the prefix ) cr 4 cv 8 ch ." .................................................." ." .............." 8 ch PNAME 1+ 64 expect span PNAME c! span 0= if 1 PNAME c! 32 PNAME 1. normal ; : toggle5 ( -- ) isize @ if 0 isize ! else -1 isize ! then inverse 67 ch 12 cv isize @ if ." 140K" else ." 800K" then normal ; : slotnum ( -- ) ( cycle through slot numbers ) -1 slt# +! ( decrement ) slt# @ 0= if 7 slt# ! then ." YES" else ." NO " then normal ; : toggle3 ( -- ) err? @ if 0 err? ! else -1 err? ! then inverse 67 ch 14 cv err? @ if ." YES" else ." NO " then normal ; : toggle4 ( -- ) drv# @ 1 = if 2 else 1 then drv# ! inverse 67 ch 15 cv drv# @ ( -- ) 2mg? @ if 0 2mg? ! else -1 2mg? ! ( 2MG format ) 0 iorder ! ( PRODOS ) 0 isize ! ( 800K ) inverse 67 ch 11 cv ." PRODOS" inverse 67 ch 12 cv ." 800K" normal then inverse 67 ch 13 cv 2mg? @ ifke 800k disk ) then cr cr ." Disk created, press any key for menu: " key drop ; : toggle1 ( -- ) iorder @ if 0 iorder ! else -1 iorder ! then inverse 67 ch 11 cv iorder @ if ." DOS3.3" else ." PRODOS" then normal ; : toggle2 to disk ) isize @ 0= if 0 iorder ! then ( make 800k always PRODOS ) .file2dsk ( print header ) getSname1 ( get source filename ) isize @ if makeDisk ( make 140k disk ) else 800disk ( main " inverse iorder @ if ." DOS 3.3" else ." ProDOS" then normal ." order" 2mg? @ if ." , 2mg format." else ." ." then cr ." --------------------------------------------------------------------" cr cr cr ; : file2dsk ( -- ) ( write an image key drop ; : .file2dsk ( -- ) ( dsk -> file header ) page ." --------------------------------------------------------------------" cr ." IMAGE FILE --> " inverse isize @ if ." 140K" else ." 800K" then normal ." DISK. Image file is ( print header ) getFname1 ( get output file name ) isize @ if makeImage ( make the image file ) else 800image ( make 800k image ) then cr cr ." Image file created, press any key for menu: "mg? @ if ." , 2mg format" else ." ." then cr ." --------------------------------------------------------------------" cr cr cr ; : dsk2file ( -- ) ( make a disk image ) isize @ 0= if 0 iorder ! then ( make 800k always PRODOS ) .dsk2file drop set_start_prefix bye then then then then then then then then then 3 2 < until ; ( initialize abort vector ) ' main abortvec !  (4);"-DSK2FILE57"wwpwppwww3wwww33 &IDUNA/IDUNAPROGKORNCH.ICONS DSK2FILE*IIGS@DDODOODODDDDODDDDwpDDOwDpwpO333ww