@L}6CD l0C)HCC WhL/h `CmCDiD`  R@P1  Y0@R !L` D  C D     )16CS S)  C)D1 p p 0 C9DI pCDL~CiCDiD` D  C D     )16CS S)  C)D1 p p }0 C9DI pCDL~CiCDiD` DD˙` d J)L !}D L(( LL()  L| L( S LH 0p n  } CY?  q  L L  ` )} `A! d߰")-݆ "  $G@LLLI $j") $G% }H 3S8`G ȱG ȱG   Gȭ Gȭ GG}GHiH8(()) G$H% `(0 })8` d)L ݆  LGȘ ݆LL d  ! LL d)N>Q  HH) }  hyhyB q L> Lm JJ  Ln*` dB%' }8  H H` 1 { LL   !L     Hh SY?  q  1L }  !? S   q 1 L   Ll  Lg E`L   !L)  q 1L}) `L0AM݊L݉ ML  N݆LLLNLMLHG!@}1F GȱGLLEEȩÑEȑEEȑE Ed E7EȩE  q} L !,0,0SGɛ L 1 !L EHEh W G gLLSROTCES EERF } G) *Gȩ GȽG GȌd q q G`  8   0G  `D}CEDC0X:Ȣ Y ȱC* ? 0.. , 0%n ?A[ 0 : L`L  `, 0`Y}`piH n0)բY? 08`0 }  0$L GGȽG L `8L`L}8`  05G)݁,G)ȱGȱGHh0})Hh` B! 8`8iiiLE`}E8FEh( l0`ɃLL L8^~jj8jHi hEEEiEȱEiE` dTE} H8EEȱEEȩEh J E8   . m  i`LI!)E1FR}1LJ舩9GIH`LJJ`HGHh l`} S gL   8 rii `дCDCG W  }C  Lq` X٨`DOS SYS IIIIIIIIIIIIIIIC`0 ߩ0}})@}er OS  !!"#DOSDOS SYS }}}L}F,-}CDOS SYSb.2DOSXL SUPb;`DOSXL XL bMENU COMbCLRDSK COMb$CONFIG COMbKCOPY COMb:DO } COM}UQ   ]   TL ]L!T  ɐ    D!`T }S 0 c 0 c ( 0 c`! LD:STARTUP.EXCD:DOSXL.SYSD:AUTORUN.SYSD:MENU.COM7"!}  (`;LHLLLZLLD1:D:STARTUP.EXCF,D1:RUN@RUNDOS.SYSTORSӬ"}㮠 @E: K  u  lllll,hhr 'Il#} \LAlllShhLZ $ \LA E7:8 K ` HH` U0: $}@L* LA  Z[: ]08ʈ08a{)(` ]H\H`!L`7 %}Q:6,7 c  LAD7 18:LAMOC.REMCARENDSCRNOSRENPROUNPSAVLOARUNERADIRTYP) @15=&}w{ Y #$!  \LA   L 6: *79.8 L BUɛ   L'} LA  "0   "` L Bɛ ST LA  0' 78 9: l " 7 "0LA \LA  c(}LA 06 l 7S8T Ʌ Ɉ L \LA`  "08 797:8)} 9 L 7 "H h``LȌ  H7"h"!)@ !LA!)L,! @" J "0*}a!) !)ύ! 2L % " H & " L2 h0,!p  "`!L!)  \!!)@LL+}CXE.JH hL"H hL! 0   "!LE L" B VCɀ` \LA5'6!78 897,}:8iL \LA56 5L 7ED`IH`U L `7 B-}Uɛ :VW 7U7 Q ` B8U0$  . Ԍ ` U U.}`ɛ, `ɦ!ɐɠi,ɰ)    L"DRIVE NUMBER ERRORNO BUFFERSDISK FULLI/O ERRORSYSTEM E/}RRORINVALID FILE NAMEFTe DOS XL - ATARI version 2.30 Copyright (C) 1994 by FTe FILE PROTECTEDWRITE PROTECTEDD0}IRECTORY FULLFILE NOT FOUNDADR RANGE ERRORBREAK KEY ABORTINVALID DEVICENO CARTRIDGE'6FUdt1}}?}?v? @AB `  ` b?hh` ?? h?` BLV b? V? h? V? b?`8`I`xxխЍ(`3},??@B@L}6CD l0C)HCC WhL/h `CmCDiD`4}  R@P1&  Y&0@R !L(`) 4 F`5} 4 ˤ F` 4 7 F` 4 F` 4H"h H"h F` 4 # F` 4 ɧ F`HMxLOHxխЍh(` j 6}`HxLHxխЍh(`;LHLL L L L D1:7}8} |Il j L jk hl hm n Ln m Hl H ` jL jLѲ j | ` | j`l | 9}j`l | j`l$ C D 343 8PX6CS S) 48CPDX :}  @0 C`Dp  LCiCDiD`  DD˙` J;})Lϩ CD L(( Ψ ΥLL(,) Ψ (LLޮ( u,Lh)0p- *,+<}. ᬬ, ( (,C? (  ®L,L 䮩. `=} ,) 9`/A! 'ȹ߰")- " A$//G@LLLI $j>}7") Ц$G%H7 13S8`G0ȱG1ȱG2 0Gȭ1Gȭ2GG}GHiH8(()) ЦG$H%?} `%(0)8` )L۩ A 1LG/Ș LL C ΨLL )N>@}Q ͫ HH) Υ 1 ի,hyhyB L> L JJ. - ,LA} *` B%'8  HH`S۩$LL: 4 CL Ψ ® @4 ֪ ®,Hh z,?B} ( SL C? u ® @ S L ᬬ, Ψ ΥL 1 LE`L⮩ 66 CL⮬,)C} 6 SL,) `L讽0AML ML 9 NLꮝLL஽NLMLD}HG!@%1F GȱGLܮLEEȩÑEȑEEȑE Ed E7EȩE E}- - @L6 C,0,60S6G/6ɛ 6L6 S CL EHEh y 6G 6LF}LSROTCES EERF G,) *Gȩ GȽG GȌ6,d G6`5438354 G}06G643`DCEDC0X:Ȣ 3ȱC* ? ,0.. ,30%n3?A[ 0 : ,L媮(`LH}  `,30``)-.p,.,i--H ,0)բ?ْ )-),*.I}+08(`0   0$L1 ("G GȽG 66L $`8LJ}`L8` $ 05G) ,G)ȱGȱGHh0})Hh` B! 8`8-iK}iiLͬE`E8FEh(% l0`ɃL L L8^~jj8jHi hEEEiEL}EiE` dTE3H8EEȱEEȩEh 4J3E83 3 .3m43i`L򮩟I('(!PM}EXF8R%""1@L%J@舩A@`GpH`L@%JJA`HN}GHh% l` z L   8 rii `%дCDO}CG W  C  L` Ϯ`DOS SYS IIIIIIIIIIIIIII(C'(/`0( P}ߩ0}z ɐ   ɜ jj D`h g m 0 Q}  0 h g ` LD:STARTUP.EXCD:AUTORUN.SYSD:MENU.COMɛ  ۶(`k 岩 R}L ۶E: DK ` fk k L 0: @L* L |e  e]8ʈS}e 08a{)(`e HH`h g g h Lo ` :糙  ۶j  LD 1T}:LMOC.REMCARENDSCRNOSRENPROUNPSAVLOARUNERADIRTYP) G26۴Ŵ:W#$!  L |  L@U} |: *. L@i ɛ i | L@ L Z ݶ0 i Z ݶ` |Lq ɛ V} L | 0'   ' ݶ ݶ0L L | Lj  06g ' q nɅ W} ۶j L L` = ݶ0  P HLq  ݶH h``j L Ȍ |HX}h)@ L)L絭 @ HJ ݶ0a) )ύ L % ݶ ӶH & ݶ Y}L ۶h0,p Z ݶ`L)  )@LLѶCXE.JH DhLݶH |hL 0 P H ݶZ}L ZLݶ B VCɀ` L'! H8iLR L PĩLH P[}ED`IH` HLPe e ۶e ` ɛ :  `e f\} 80$  e .f e e Ԍe f ` `ɛ, `ɦɐɠi,ɰ) [\ H]} P LݶDRIVE NUMBER ERRORNO BUFFERSDISK FULLI/O ERRORSYSTEM ERRORINVALID FILE NAMEFTe DOS XL - ATARI version 2.30C^} Copyright (C) 1994 by FTe FILE PROTECTEDWRITE PROTECTEDDIRECTORY FULLFILE NOT FOUNDADR RANGE ERRORBREAK KEY A_}BORTINVALID DEVICENO CARTRIDGEK^is}/}?NLV b? V? h? V? b?`8`I`xxխЍ(`A?? ? ?I ?(  B V` @  ?E ?D ? ??Da}E ??S` ? ?hh`l )` ```L L L  % ?#?@pb}E@L }6CD l0C)HCC WhL/h `CmCDiD`  R@Pc}1&  Y&0@R !L(`) 4 B` 4 B` 4 7d} B` 4 B` 4H"h H"h B` 4 # B` 4 B`HӍK)h`HKh`e}f} j ~ `HӍg} )L H H h`ɐ  `;LHLL L L L D1:h}i} v Il j L j r hs ht u Lu t Hs H ~ ` j L j L j W ~ ` v j `l v j j}`l v j `l DRIVE NUMBER ERRORNO BUFFERSDISK FULLI/O ERRORSYSTEM ERRORINVALID FILE NAMEFTe DOS XL - ATARI versionk} 2.30X Copyright (C) 1994 by FTe FILE PROTECTEDWRITE PROTECTEDDIRECTORY FULLFILE NOT FOUNDADR RANGE ERRORBREAKl} KEY ABORTINVALID DEVICENO CARTRIDGE * VL5 * YL5 H HHH h`H)h`e * f g H]Hlf m}5 e h@I_n}o} C D 343 8PX6CS S) 48CPDX  p} @0 C`Dp CDLCiCDiD` DD˙` J)q}L CD L(( LL(,L) (LL( u,Lh)0p- *,+. r}, Q( (,POCLNM?Q (  L,L . ` ,s}L)OP 9`/A! 'ȹ߰")-ݞ " A$//G@LLLI $j7")t} $G%H7 13S8`G0ȱG1ȱG2 0Gȭ1Gȭ2GG}GHiH8(()) 琡G$H% u}`%(0)8` )L꽟ݞ A 1LG/Ș ݞLL C LL )N>Q v}HH) 1 ,hyMMhyNNBL L> L轙JJ. - ,L*`w} B%'8  HH`S$LL: 4 CL  @4 ,PHOh z,?Q (x} S쐸L C? u  @ S L , 驀L L 1 LE`L 66 CL,L) 6Ly} SL,L) `L}0AMݢLݡ ML 9 NݞLLL⦅NLMLHz}G!@%1F GȱGLLEEȩÑEȑEEȑE Ed E7EȩE L{}- - @L6 C,0,60S6G/6ɛ 6L6 S CL EHEh y 6G 6LLSROT|}CES EERF G,L) *Gȩ GȽQG GȌ6,MNd G6`5438354 06G}}643`DCEDC0X:Ȣ 3ȱC* ? ,0.. ,30%n3?A[ 0 : ,L(`L  ~}`,30``)-.p,.,i--H ,L0)բ?Q )-),*.+L0}8(`0  0$L1 ("GGȽG 66L $`8L」}`L콣8` $ 05G)ݙ,G)ȱGȱGHh0})Hh` B! 8`8L-iiiL}E`E8FEh(% l0`ɃL L L8^~jj8jHi hEEEiEȱEiE`} dTE3H8EEȱEEȩEh 4J3E83 3 .3m43i`L著I('(!PEX}F8R%""1@L%J@舩A𩀙@𘝠`GpH`L@@%JJA`HGH}h% l` z L   8 rii `%дCDCG} W  C  L` `DOS SYS IIIIIIIIIIIIIII(C'(/`0( ߩ}0}}}}}} } D `o n H  0 ( 0 o n `  L D:STARTUP.EXCD:DOSXL.SYSD:AUTORUN.SYSD:ME}NU.COM[ ɛ r (`r L E : K r` Ar r L 0: }@L* L Wl  @]8ʈl 08a{)(`l HH`o n n  o Lv ` }:    q  LD 1 : LMOC.REMCARENDSCRNOSRENPROUNPSAVLOARUNERADIRTYP) Z"} 2#$!  L W  wL W : * .  rLp ɛ p W rL }L 5 0 p 5 ` WLL ɛ L W r0'  0L L W L}q  r06n  L IɅ Ɉ q L L`  0   +} #LL  H h``q L Ȍ WH hm  )@ L )L @ #J 0a} ) )ύ   L % H & L  h0, p 5 ` L )  )@LLC}XE.JH hLH WhLw  0 + # L 5L B VCɀ` L ' ! #8 } iL- L  +˩ L# +ͩ ED`IH` #L+l l l `  }ɛ :    `l m 8 0$  l .m l l Ԍ l m ` }`ɛ, `ɦ ɐɠi,ɰ) &' # + L  * 7 I *  + q }} B V` @  ?E ?D ? ??D!PY iP`p S S T nRLP6G 6LLSROTCES EERF G,L) *Gȩ GȽQG 8fP g }P dP ȱ ePP bP cP P LP PY`lbP?hPaP P`PHPH`FTCDEIPURSLGXQPQQCQ{QiQQQQQR'RDiDDCD 0D BD``D G,L) *Gȩ GȽQG 8fP g L 6/22/94 Do you remember the first timethat you saw Star Wars? Well it's1994, and I think }that I feel the sameway that I did back in 1977. I justloaded the PC Xformer 2.0 on my 486notebook, and I just can't get}enough of it! The 6502 community hasbeen begging for a portable computerfor years. Commodore made an attemptwith the SX-}64, and Atari talked aboutone as well. Apple released the IIcand had an optional LCD screen for it,but nobody quite seeme}d to really getit right... Until now.The PC Xformer 2.0 has been releasedby Branch Always Software to be used"freely". } It is an Atari 8-BitEmulator that runs in the IBM (orcompatible) environment. This letteris being written on a Toshiba 4}700CTnotebook using PaperClip 1.2 !!Can you imagine playing Zork, editinga letter with PaperClip, or creating6502 assemb}ly language code at Dennys?Pretty cool stuff if you ask me. Darek Mihocka has really goneto great lengths to s}upport the Atari6502 and 68000 machines. Xformer 2.0does have it's limitations, but showsgreat promise for the future. T}heamount of time that has been spent todevelop this emulator is absolutelymind-boggling. I hope that everyonegets a chan}ce to really sit down anduse it, as I couldn't do without it.(and I've only had it for one day!)It's one of those program}s that reallychange the way that we use computers.I hope that everyone writes to Darekand let's him know what a great job}he's done, what you would like to seein Ver 3.0, and that you will SUPPORTit when he does release it.With the same spirit} of keeping theAtari 8-Bits alive and well, FTe hasdecided to release the DISK-BASEDversion of MAC/65 (ver 4.20) to beuse}d exclusively with the PC Xformeras SHAREWARE. The only fee that werequest is to purchase the commercialversion of PC Xfo}rmer 3.0 when it'sreleased, and to write to us (or callthe BBS), and let us know how you areusing the Atari Emulator. (esp}ecially"what works" or "what doesn't")Yes, 1994 has been an interesting yearfor us 8-Bitters... I can visualizeall of m}y friends who SOLD their Ataricomputers to buy IBM's, calling me upnow for a few of the "old" programs... Fine Too}ned Engineering PO Box 66109 Scotts Valley, CA 95067 BBS/Fax # (4}08)438-6775 Thanks for your support! MikeP.S. Don't forget to support other SHARE}WARE authors, such as Nick Kennedy, Bob Puff, Ronnie Riche, Tom Hunt, Alfred, etc. etc.it's1994, and I think fTYPE README.TXTREMREM "type MENU"4$Ƣ L Copyright 1982 McStuff Co.ш`&&66 H hƤ襎`Lš}}Xi \Wȩ\ȭ[ȩ ^`ee`L+X`8Ƹȥ`ȱi}`Ȧ````8`ƶ`l8嶅`ȱ` fX` fXȥ`}`EE`%%`8(` YƵ` YƵ` >X Y0Ƶ` Y0Ƶ` YƵ` Y0Ƶ`Ŷŵ}(` >X*ff` >X&`8嵅嶅`II` YLXj )Xff`&&`$ 8}嵅嶅$8峅崅 @&&&8嵨嶐泅$p8峅崅LXZ8居岅$㥴`}`0LyZee`ee`ȱl fXLX fXLXq @BEDȱ},R LZW LZA LZD LZJ V :[0LX B V`HHJJJJZhh(` B V :[`} z[ V :[LXBHI` z[ z[ V :[0L[LX [Ɉ`JJJJZ` [`}ȱ` V :[LXL[}L\ i\ i\ \ \} \ 0! :8`ȱ >#<-R+R0 :[L~]`L][\ȱ A%[! i? <>Ș8?0 L\ }[H hA [[0 :[L\[ \i6\i\\!\ 0 ! 6\06\莻\[L\ pZ Z OX Z OX X X X} X X XL-^ Z X OX iZ fX (YL^ Z OX iZ X Z X OX [ pZL] pZ` Z X OX ] pZ iZ Y OX }[ pZ` Z X OX0 iZ fX OY OX Z X OX9 iZ fX EY fX YL^ iZ` iZ` pZ pZ }Z OX iZ X Z X OX iZ fX WYL_ Z X OX De pZ OX iZ fX )X X OX iZ fX WYL|_^ OX }Z X 9X fX )X OX OX iZ fX )X X XL_^ OX Z X 9X fX )X OX^ OX iZ 9X fX )X X X Z OX X X }X XL^ Z OX iZ X Z OX iZ X Z X OX Z X fX WYLb Z OX Z X OX Z X 9X fX )X X X Z OX} Z X OX iZ fX )X X Z X OX iZ fX )X X OX Z^ pZL` Z OX Z X OX iZ fX )X X OX iZ fX Y XL` }Z OX iZ X Z X OX iZ fX )X X OXS iZ fX (YLa Z OX iZ XLa Z X OX iZ fX )X X OXD iZ fX (YL}a Z OX X Z X OX iZ fX )X X OXD iZ fX (YLa Z OX X X X XLa Z X OX iZ fX )X XL}a Z OX iZ XLa Z OX iZ X Z X OX iZ fX (YLbg OX 3^ pZ^ OX Z X 9X fX )X X OX iZ} fX 8YLtb^ OX Z X 9X fX )X OX Z X X Z OX X X X XL_\ OXN iZ OXA iZ fX Y fX )X X OX }iZ fX (YLbh OX ] pZ9h OX ] pZ Z OX iZ X Z X OX iZ fX WYL;e Z OX^ OX }Z X 9X fX )X X X Z X OX iZ fX OYLzc Z X OX e pZ\ OXN iZ OXA iZ fX Y fX )X X OX iZ fX (Y}L$eZh OX ] pZ0 iZ OX Z X fX )X OX [ pZ]h OX ] pZ Z X OX iZ fX WYLld Z X OXu iZ }Y fX (YLVdgh OX ] pZLid{h OX ] pZL$e Z X OX iZ fX (YLdh OX ] pZL$e Z X OX} fX (YLdh OX ] pZL$e Z X OX fX (YLeh OX ] pZL$e˅h OX 3^ pZ Z} OX X X X XLb  pZ` OX iZ fX )X OXN iZ X OX iZ fX )X OX@ iZ X Z X OX @g pZ` Z X OX }De pZ OX iZ fX )X X OX iZ fX WYLe煵h OX 3^ pZ^ OX iZ 9X fX )X OX^ OX Z X 9X }fX )X X X^ OX Z X 9X fX )X XL}f^ OX iZ 9X fX )X OX iZ XLf^ OX iZ 9X fX )X OX} Y X OX iZ fX )X OXO iZ X OX iZ fX )X OX iZ X Z X OX @g pZ OX iZ fX )X X OX iZ} fX WYL?gi OX 3^ pZ` OX iZ fX )X OX1 iZ X OX iZ fX )X OX Z X X OX iZ 9X f}X )X OX^ X OX iZ 9X fX )X OX iZ X OX iZ 9X fX )X OX iZ X Y`configure: bad parameter list}drive no. sides density------------------------------- can't configure non-existent drive 1 } single 1 double 2 doubleconfigure: fatal I/O errorconfigure: fatal I/O errorconfigure: fat}al I/O errorȩ\ȭ[ȩ ^`ee`L+X`8Ƹȥ`ȱi@(@)@? D?UC?C?V? Y`*@Cee`&``8Ƹȥ`ȱ}i`Ȧ````8`ƶ`l8嶅`ȱ` g@` g@ȥ`}`EE`%%` BƵ` BƵ` ?@ BƵ` B0Ƶ` BƵ` B0Ƶ`Ŷŵ(` HAƵ` HAƵ` }?@ HAƵ` HAƵ` ?@*ff` ?@&`8嵅嶅`II` AL@$ 8嵅嶅$8峅崅 @}&&&8嵨嶐泅$p8峅崅L6B8居岅$㥴`HI B V`H}IB VL@``0LBee`ee`ȱl g@L@ g@L@ꥴ0008嵅}(`) eeFf&⥱`L+CUU`**`8履`} DdL D iD iD D D D 0! :8`ȱ >#<-R+R}0 :UCLD`LsDUCfCȱ A%[! i? <>Ș8?0 L'D UCH hA ['C0 :RCL'DUC }DiVCiCWC!D 0 ! C0CDUCL'D B P@ @ @ @ @ P@ B P@ @ @ @ @ @ @LKELE` B }B P@ B @ B P@ @ @ @ @ @LE B P@ @ @ @ @LaE B @ B` B @ P@ Vc B` B @ P@ Vc B B} A P@ ]c B` B6 B @ P@6 B @ P@6 B @ P@ B P@ :F B2 B @ P@ B P@ L B2 B` B P@ @ @ @ @ }@ P@: B g@ ALkFL:F B P@ @ @ @ @ P@ B P@ @ @ @ @ @ @ P@: B g@ ALFLkF B @ @L`G} B @ @ P@? B g@ ALG B @ P@ B @ @ @L!G B @ P@ B @ @ @ B P@ @ @ @ @ B P@ @ @ @ @} B P@ @ @ @ @LF B @ P@ B @` B B P@ @ @ @ @ P@ B P@ @ @ @ @ @ @ P@: B g@ ALGLyG} B P@ B @ B P@ B @ B @ P@ B g@ @AL6H B @ P@ B P@ @ @ @ @ g@ *@ P@ B @LG B P@ B} @ B @ P@ B @ g@ *@ @ P@* B g@ A P@ B @ P@ B @ g@ *@ @ P@. B g@ A g@ A P@ B @ P@ B @ g@ *@ }@ P@ B g@ A g@ AL5I B @ P@ B P@ @ @ @ @ g@ *@ P@ B @ P@ B P@ @ @ @ @ g@ *@ @ @LFH B @} P@ B @ g@ *@ @ P@* B g@ ALI B @ P@ B g@ @ALI B @ P@ B P@ @ @ @ @ g@ *@ P@? B @LhI} B @ P@ B @ g@ *@ @ P@. B g@ A P@ B @ P@ B @ g@ *@ @ P@ B g@ A g@ AL7J B P@ @ @ @ @LI} B @ P@ B @ g@ *@ @LK B P@ B @ B P@ @ @ @ @ B @ P@ B @ g@ *@ @ P@ B g@ A P@ B }@ P@ B g@ @A g@ A P@ B @ P@ B @ g@ *@ @ P@* B g@ A g@ AL[K B @ P@ B P@ @ @ @ @ g@ *@ P@ }B @ P@ B P@ @ @ @ @ g@ *@ @ @LJ B @ P@ B @ g@ *@ @ P@* B g@ ALK B @ P@ B g@ @ALK} B @ P@ B P@ @ @ @ @ g@ *@ P@? B @LK B @ P@ B @ g@ *@ P@ B @ B` B @ P@d P@ L B }B @ P@e- P@ L B 9O P@ B g@ ALLd P@ E BN P@ E BLLCh P@V B P@A B g@ A }g@ *@ @LLd P@ E BÅN P@ E B` B B P@ @ @ @ @ P@ B P@ @ @ @ @ @ @ P@: B g@ A }L0MLL B P@ B @ B @ P@ B @ g@ *@ @ P@ B g@ A P@ B @ P@ B g@ @A g@ ALM B P@ @ @  }@ @ P@ B @ P@ B P@ @ @ @ @ g@ *@ @ @L@M B P@ B @ B P@ @ @ @ @ P@. B @ B @ P@ B @ g@ *@ } @ P@ B g@ A P@ B @ P@ B g@ @A g@ ALN B P@ @ @ @ @ P@ B @ P@ B P@ @ @ @ @ g@ *@ @ @L }N B @ P@ B @ B` not copied copied B B P@ cB @ B @ P@ B g@ ALO B B` cB P@ B } g@ AL+OLO B @ B` B BCh P@Q B P@A B g@ A g@ *@ @L$PޅV P@ E Bd P@ E} B䅵V P@ E Be- P@ E B녵V P@ E B B P@ N @ P@Y B g@ A P@ B @ P@y B g@ A g@ A}L$P B A B` B P@ B @ B P@ B @ B @ P@ B g@ ALV B @ P@ B g@ A P@_e`e g@ @}LNQ B P@d P@텵V P@ a B @ P@ B g@ @ALQV P@ E Bd P@ E BW P@ E }B B A B` B @ P@ B g@ ALNQ B @ P@ W B B P@ B @ P@ X B @ P@ B g@ @ALQW} P@ E Bd P@ E B$W P@ E B B P@ B @ P@ b B @_e`eL)R B @ P@ #X B B }@ P@ ib B&W P@ E B NCh P@F B P@A B g@ A g@ *@ @ P@ B g@ A P@ B @ P@ B g@ A g@ AL}Te- P@ B g@ *@ @ P@D B g@ A P@e- P@ B g@ *@ @ P@A B g@ A g@ @LT B P@e- P@FW} P@ a B @ P@ B g@ 8ALTe- P@ E BHW P@ E B B @ P@ ib BCh P@Q B P@A B g@ A }g@ *@ @ P@ B g@ ALAT\W P@ E B B P@ N @ B @ P@Y B g@ A P@ B @ P@y B g@ A g@ AL>}T_e`e P@ B g@ AL0T B @ P@ ib B B A B`LT_e`e P@ B g@ ALuT B @ P@ ib B }B A B` B @ P@ B g@ A P@Ch P@A B P@A B g@ A g@ *@ @ P@ B g@ A g@ AL U B P@e- P@q}W P@ a B @LU_e`e P@Ch P@A B P@A B g@ A g@ *@ @ P@ B g@ A g@ @LU B P@e- P@s}W P@ a B @ B @ P@ B g@ @ALUuW P@ E Be- P@ E BW P@ E B B A B` }B @ P@ B @ P@ 4Y B P@ B g@ @ALZVW P@ E Be- P@ E BW P@ E B_e`eL}V B @ P@ ib BW P@ E B N B P@ @ @ @ @LDP B @ P@ ib B B @ P@ ib B B B`Copy to} ?Rcopy: can't open: copy: read error on file Insert 'to' disk and hit returnR already exists OK to o}verwrite? WACan't open: copy: write error on file Insert 'from' disk and hit return B @ P@aebe P@}cede P@ d B P@ B g@ @AL"X`Y P@ E B` B @ P@ B P@ c Bbeae P@ B g@ @ALrX }wY P@ E B B @ P@ B P@ c Bdece P@ B g@ @ALXY P@ E B` B B P@ P@!}eefe g@ A P@ A g@ A @ B @ P@eefe P@ B @ P@ mc B B` B @ P@eefe P@ B @ P@ c"} B`copy: fatal i/o errorcopy: fatal i/o errorcopy: fatal i/o error B B B B @ P@ B g@ @A P@ B @#} P@ B g@ #A g@ @LZEd P@ E BCh P@S B P@A B g@ A g@ *@ @`e_e B @ P@ B :@ g@ *@ @$} P@ B P@ E B B @ P@ B g@ ALZ B`e_e B P@f B P@ E BLZ B @ P@ B :@ g@ *@ @ P@f%} B P@ E B B P@ B P@ LE B P@ B g@ A g@ *@ @ P@: B g@ ALY[dd P@ B P@ B P@ LE B g@ *@&} P@ E Bd B P@f B P@ LE B P@ B g@ A g@ *@ @ P@: B g@ AL[id P@f B P@h B P@ LE B g@ *@ P@'} E B B P@ t^ B P@ B g@ A P@f B P@ t^ B P@ B g@ A g@ AL\ B P@ B g@ *@ @ P@D B g@ A P@(} B P@ B g@ *@ @ P@A B g@ A g@ @L\nd P@ E BCh P@W B P@A B g@ A g@ *@ @L\d)} P@ E Bd P@ E B N B P@eg P@ B P@ ^ B @ P@ B A g@ AL:]Ņd P@ E B B @*} P@ B g@ ALl]ᅵd P@ E B B P@4 B P@ tG Bd B P@ B P@ tG Beg P@ B @ P@ B P@ B+} g@ *@ g@ B g@ *@feee B P@ B @ B @ P@ B @ g@ @ALl^2 B P@ B P@eg P@ B P@ B g@ *@ ,}P@ B P@ @ @ @ @ g@ B g@ *@ P@ E BL]̠ B` B @ @L^ B @ @ P@? B g@ AL^ B` B P@ -}@ @ @ @ @ P@* B g@ AL^ B`Lt^ B` B B: B @ P@ B g@ *@ @ P@D B g@ A P@< B @ P@ B g@ *.}@ @ P@A B g@ A g@ AL_: B @ P@> B @ P@ E B B: B`6 B P@< B @ P@d P@ a B @ P@ B g/}@ @AL_ B A: B`8 B P@ B @ B P@2 B P@: B @ P@ b B P@ B g@ ALa4 B P@ B P@ B g@0} *@ @ @4 B @ P@ B g@ A P@6 B @ P@* B g@ A g@ AL`6 B @ P@ ib B8 B @: B` B P@ B P@ B1} g@ *@ g@ *@ P@ B @2 B P@ B @< B @ P@4 B @ g@ *@ P@< B @ P@6 B P@ @ @ @ @ g@ *@ @ @ P@: B g@ A2}L5aL` B P@ B g@ *@ P@> B @ P@6 B @ g@ *@ P@ E B8 B P@ @ @ @ @< B P@> B @ P@ B g@ *@ P@ 3}B g@ *@ @L_6 B @ P@ ib B B A: B`o @B` aEDȱ$R W 4}A DJ V Yb0L@ B V`Hƶh(` B V0 Yb`BHI` bɈ`5}C`HȱILbHIDȱEB V Yb0/D}HE}I涩DE``6}DȱE BI IL}D444 23ͽ3 2 2 2 23) h 5 r'5 '544 444 1 44!?}44i448 72443͝3  2 2 244 1 2483) l2444*L13͝!@}3  2 2 2 23)L0 2 2Y 4L}0`4L#14Y3 231D1E 2 2 2 2 2L!A}1`D1:4d64 Ȍ4d)4445 5֬445464`45 6 4 LX2 r0L2 2 2L!B}0445 6  L28 r0`4 2 4D4E 2`( 2D4E 24`HI`B VC`}FTe Du!C}plicate Disk ATARI version 2.20Copyright (C) 1994 by FTeSource Disk Drive (1,2,3,4): Destination Disk Drive (1,2,3,4): For!D}mat Destination Disk (Y or N): Put Source Disk In Drive Put Destination Disk In Drive When Ready, Hit Reading Sour!E}ce DiskFormatting Destination DiskWriting Destination Disk*** DUPLICATE DONE ***Copy same disk again (Y or N) ?Unused! !F}*** *** Hit To Retry INVALID RESPONSE *** Ԡ *** Try Another Disk!2#3@3b33333344V4]444!G}B"" 7%+2 2153 2 2153 2 24YNMMd 04 2 2 2153 2 2153 2 24YNMM%I}444 23Ͳ3 2 2 2 23) h 5 r5 544 444 1 44%J}44i448 72443͒3  2 2 244 1 2483) _2444*L13͒%K}3  2 2 2 23)L0 2 2Y 4L}0`4L#14Y3 231D1E 2 2 2 2 2L%L}1`D1:4d64 Ȍ4d)4445 5֬445464`45 6 4 r0Ly2 2 2L0445 %M}6 8 r0ۭ`4 2 4D4E 2`( 2D4E 24`HI`B VC`}FTe Duplicate Dis%N}k ATARI version 2.20Copyright (C) 1994 FTe Source Disk Drive (1,2,3,4): Destination Disk Drive (1,2,3,4): Format Destina%O}tion Disk (Y or N): Put Source Disk In Drive Put Destination Disk In Drive When Ready, Hit Reading Source DiskFor%P}matting Destination DiskWriting Destination Disk*** DUPLICATE DONE ***Copy same disk again (Y OR N) ?Unused! *** *%Q}** Hit To Retry INVALID RESPONSE *** Ԡ *** Try Another Disk!2353W3y3333334K4R4w44B"" 7%R}%+4 2 2 2153 2 2153 2 24YNMM$@B @ @ @ @ @ @ ABA123 4 LF@L@L@L@l   @ @ AL@ @ AB14AB)T} @ ABY`L@LF@ ^@ @0)LJ@ ^@ @0 @0 Z @LJ@ ^@L@LN@HJB @hL@ED`HI`@B V@)U}C`B @ uBDvBE @`( @B @L@}FTe DISK INITIALIZER ATARI VERSION 2.01. FORMAT DISK ONLY.2. FORMA)V}T DISK AND WRITE DOS.SYS.3. WRITE DOS.SYS ONLY.4. EXIT TO DOS XL ENTER FUNCTION NUMBER: ENTER DRIVE (1,2,3 OR 4): FUN)W}CTION ; DRIVE ARE YOU SURE (Y OR N): *** ERROR ***TASK TERMINATED NORMALLYHIT RETURN FOR NEXT FUNCTIONINVALI)X}D RESPONSE*ATAiAAAAAABB+BEBcB*".D1:DOS.SYSAB(x@@@? !F`@Fee`&``8Ƹȥ`ȱi`Ȧ-Z}````8`ƶ`l8嶅`ȱ` O@` O@ȥ``EE`%-[}%` BƵ` BƵ` '@ BƵ` B0Ƶ` BƵ` B0Ƶ`Ŷŵ(` 0AƵ` 0AƵ` '@ 0AƵ` 0AƵ` '@-\}*ff` '@&`8嵅嶅`II` AL@$ 8嵅嶅$8峅崅 @&&&8嵨-]}嶐泅$p8峅崅LB8居岅$㥴`HI B V`HIB VL@-^}``0L|Bee`ee`ȱl O@L@ O@L@ꥴ0008嵅(`-_}) eeFf&⥱`LCUU`**`8履` 8@ lB O@ @ 8@N lB @-`} 8@ lB O@ @ 8@@ lB @ B @ 8@ 'E sBF 8@ lB "@ O@ @ @` B @ 8@ =C sB 8@ lB O@ @ @ 8@-a} lB O@ (ALD߅E 8@ H sBF 8@ lB "@ O@ @ 8@ B @ @ B @LdDF 8@ lB "@ O@ @ 8@ -b}lB @LDF 8@ lB "@ O@ @ 8@ A @ 8@ lB O@ @ 8@O lB @ 8@ lB O@ @ 8@ lB @ B @ -c}8@ 'E sB 8@ lB O@ @ @ 8@ lB O@ (AL&EE 8@ H sB` 8@ lB O@ @ 8@1 lB @ 8@ -d}lB O@ @ 8@ B @ @ 8@ lB "@ O@ @ 8@F @ 8@ lB "@ O@ @ 8@ lB @ 8@ lB "@ O@ @ 8@-e} lB @ Y`initdbl: fatal I/O errorinitdbl: fatal I/O errorFJJ 8@ 5J sBJ 8@ lB 8@ lB 8@ I sB-f}J 8@ lB O@ @ @ 8@ lB O@ @JJJ 8@ 5J sBJ 8@ lB 8@ lB 8@ I sBJJ 8@ 8-g}@ C sB J 8@J 8@ DH sBJ 8@ lB O@ @ 8@JJ 8@0 lB O@ @ @ lB 8@ lB 8@ lB 8@ lB 8-q}> ?b.DOS SYSb.2DOSXL SUPb;`DOSXL XL bMENU COMBREADME TXTb$CONFIG COMbKCOPY COMb:DO COMb =DUPDBL COMb HDUPDSK COMbSINIT COMbYINITDBL COMbyNOVERIFYCOMBSTARTUP EXC{RS232FIXCOMb)IOMAC LIBbVERIFY COMbSYSEQU ASMbBMEM LIS,STARTUP EXCby/MAC65 COMbSYSEQU M65bSAMPLE M65bSAMPLE COM@J 8@ LJ sB 8@ lB O@ (ALGJ 8@ H sB̅J 8@J 8@ lB O@ @ 8@ DH sBJ 8@ԅJ-r} 8@ H sBJJ 8@ lB O@ ALHօJ 8@ H sBJJ 8@ \I sBJJ 8@ lB 8@ C sB ` B 8@-s} @ @ @ @ 8@ B 8@ @ @ @ @ @ @LHLDH` B @ 8@ 5J sBJJ 8@ lB 8@ C sB  lB A 8@ ERROR!BUG/65 Version 2.0}COMMANDIMMMEDIATE CMDPROTECTIONPARAMREGISTERBREAKPOINTPRINTERSYNTAX*** ERROR - MNEMONICOPERANDRANGETOO MANY LABE}L REFSUNDEFINED - I/O ERROR - = USER RUNBREAK! A X Y SP NV_BDIZC PC INSTRADANASBCBCBEBIBMB}NBPBRBVBVCLCLCLCLCMCPCPDEDEDEEOINININJMJSLDLDLDLSNOORPHPHPLPLRORORTRTSBSESESESTSTST}TATATSTXTXTY**a! 0PpXʈAL BHh("b@`8x  }      Jx x x x d B x x x x x x x Mx x x x }x x x f g x x x x x x lx x x x ix x x x c ` x x x x x x Ox x x x j}x x x x e h x x x x x x nx x x x x x x x Vx ux x x x x wvx x x }x  x x s rx x x x x Ptx x x x x Z Ux x x x x x Nx x x }x x x x Y ax x x x x x mx x x x LLLg1= Igjת}'KbӬ֬HLh 0rp c0hf  V o c0F LӨ_ ƂƃL $ @} oL! 惥ɛТ` ~` { i YB  ь   tLA` r} ~ii i Yg  Ƥ t 奤   Ƥ }Ƥ t L` # dɛ g?L x ~ i V t`L` r ~ P  }L 㟢R vLK 0 iLLvD:*.* # ɛ H hɛ gL r 㟩H  ei0Hh L}` x ` i YqH `hhH(DŋNŊF *&Ɵ u 拱ň恥ТL) }L `` {~x 扢Ł'ŀ PƄƅ i }H Vh P PƈƉ`Lh ` SƫPƬ`Lh  `l l R ~ # Z }S 򥀍eeee H Vh t 0LgLKLc x 89HHl6 L } @0-1   iL @W : AB ƟH xhH #h }  tLgLh c0PN   c053 $ c0$Hhɛ }L nLh`AXYSPFLfL@H #7 ` R#Rh v0`  ު g LLh ZR}LVZRTU 0`XYբ 0`H %hƟ`hhh  @ ~&   ~ }~ SLKii  Ƴƴ`LlL>LlL}ð }膖膄 &@Ɵ r &@Lh r &R sۆ 3 r &I 3 ~愢 }򚥗Lͳ0Ƅƅ L寢 Lp `hhLL =L` SƚƟ ~ i pƄ}ƅ` r ~ i  HH ðhh 椥 Ƴ Ʊ쥄 Y` H)? 0H}) h  h HH`   +37AGKWhy LXYH ,hLY cLXYH c L> c} X YL c  YLY# LB L ,L L c c` \&& Pȱ`HHH}Hغi8M 膀M hhhhlhhhhhh)h8hX }l}H, hL恢 ` #򚅈󚅉 Vцц`Lh @)? vLc)L*Lj }Ƴei򚥁kLͳH hH Ƴh) ,-Lⲽ,-壟򚥃L첀@L  L  } LⲥLӲ膂膂LⲮ膂膂L cHhee`JJJJJJ`} q ӍHHH@LC 0CA }: 㟢P   o c0  L` u` /+(Ɵ  % E` L } 6L  H h ` AL9ȱ02:.)ȱ # `Ŵ}H) 7H惢 VhL惢 V VhС A 柩T  hL; 7})ђ Ƚ0*ܱ ɛ` Lִ re ,,Ų򦱽93 DHC}H`xllfflfifiof~` Lִ Lƶ Lƶ G 9 + `聾}ᥲ ԶHӶH`#'7AAEIMS[l = !Lִ 1 6 6L_ ܩ} 1L =L_ 1L_L: L _ @ # `H L 0 :)LL: }aZ 0< ִLi慦慩L4H #  }h`h`H &hH .X0*:A"GƟ u ʸ θL4L:H (5 I0& ) )} θ L4L:XY, ȊђȄ` I` ` Ɵɛ` ƄƅƄƅ0 0 `0}``L6+  V膂 ƭ` 6/ L 查 0  ? 0}  .津 `؅٠ i? "800 8}&e؅ե ح٥٥؅֥مשԅܩՅ8ׅ0Iک۠څߢ&ߐޑݥɺ}ՠԑץɺll }}$$@b)AIOMAC.LIB -- FTe system I/O macrosAA Support MacrosA 10IOCB2 AYou must include SYSEQU.M65 ahead of th=}is!!AX;$6X; These macros are called by the actual I/O macros.9X; to perform the rudimentary register load functions.=}8X;BX;LX; MACRO: @CHVX;`6X; Loads IOCB number (parameter 1) into X register.jX;t 7 then a memory location1X; is assumed to=} contain the channel number.X; @CH   Q T?T?T?T?>  $> (X;2X;<X; MAC=}RO: @CVFX;P:X; Loads Constant or Value into accumultor (A-register)ZX;d+X; If value of parameter 1 is 0-255, @CVn+X; =}assumes it's an (immediate) constant.xX;'X; Otherwise the value is assumed to+X; be a memory location (non-zero page).=}X;X;X; @CV   Q> Q X;X;X;X;"X; MACRO: @FL,X;65X; @FL is used to e=}stablish a filespec (file name)@X;J-X; If a literal string is passed, @FL willT'X; generate the string in line, jump^&X;=} around it, and place its addressh/X; in the IOCB pointed to by the X-register.rX;|(X; If a non-zero page label is passed=}*X; the MACRO assumes it to be the label.X; of a valid filespec and uses it instead.X;X;X; @FL   =} !   @F = Q>4@F PICBADR9 Q>5@FPICBADR9 Q>4  PICBADR9& Q>5 0PICBADR9:D=}NA XIO macroAXX;bX; MACRO: XIOlX;v/X; FORM: XIO cmd,ch[,aux1,aux2][,filespec]X;%X; ch is given as in the=} @CH macro3X; cmd, aux1, aux2 are given as in the @CV macro+X; filespec is given as in the @FL macroX;5X; performs f=}amiliar XIO operations with/for OS/A+X;/X; If aux1 is given, aux2 must also be given8X; If aux1 and aux2 are omitted, =}they are set to zero1X; If the filespec is omitted, "S:" is assumedX; XIO  3 % AXIO: wrong number o=}f argumentsA  @CH   @CV *PICCOM9;; COMMAND4  > @CV H PICAUX19R @CV \ PICAUX29fp=}Q>z PICAUX19 PICAUX29 3 @FL AS:A @@IO @FL @@@IO: CIOA =} OPEN macroAX; X; MACRO: OPEN X; (X; FORM: OPEN ch,aux1,aux2,filespec$ X;. %X; ch is given as in the @CH macro8 1=}X; aux1 and aux2 are given as in the @CV macroB +X; filespec is given as in the @FL macroL X;V 1X; will attempt to open the =}given file name on` /X; the given channel, using the open "modes"j X; specified by aux1 and aux2t X;~ OPEN   &=} AOPEN: wrong number of argumentsA    XIO COPN= = = =   XIO COPN= = = =    =} A BGET and BPUT macrosA X; X; MACROS: BGET and BPUT X; X; FORM: BGET ch,buf,len X; BPUT ch,buf,le=}n( X;2 %X; ch is given as in the @CH macro< .X; len is ALWAYS assumed to be an immediateF 1X; and actual value...never a m=}emory addressP /X; buf must be the address of an appropriateZ X; buffer in memoryd X;n +X; puts or gets length bytes to/f=}rom thex 0X; specified buffer, uses binary read/write X; X; X; first: a common macro X; @GP @CH  Q> =} PICCOM9 Q>4  PICBADR9 Q>5  PICBADR9 Q>4  PICBLEN9 Q>5  PICBLEN9"  CIO, 6 X;@ B=}GET J  T ' ABGET: wrong number of parametersA^ h @GP = = =CGBINRr |  X; BPUT   ' AB=}PUT: wrong number of parametersA  @GP = = =CPBINR   X; A PRINT macroA X; X; MACRO: PRINT =}X; (X; FORM: PRINT ch[,buffer[,length]] X; !X; ch is as given in @CH macro& (X; if no buffer, prints just a RETURN0 %X;=} if no length given, 255 assumed: X;D 8X; used to print text. To print text without RETURN,N -X; length must be given. See=} OS/A+ manualX X;b 2X; EXCEPTION: second parameter may be a literall .X; string (e.g., PRINT 0,"test"), in whichv -X; case=} the length (if given) is ignored. X; PRINT  3  ( APRINT: wrong number of parametersA    =}  !   @IO = @GP =@IO= =CPTXTR    @GP = ==CPTXTR  @GP = =}= =CPTXTR  * 4 ! > @IO H @GP =@IO==CPTXTRR \ f p X;z A INPUT macroA X; X; MACRO:>}@@`yyWd hit return when readysdcopy: can't read directorysdcopy: no files to copyDrrȥ`ȱ@ 1000 .PAGE "FTe SYSTEM EQUATES FOR ATARI"1010 ;1020 ; FILE = #DN:SYSEQU.ASM1030 ;1040 ;1050 ; I/O CONTROL BLOCK EQUATEE}S1060 ;1065 SAVEPC = * ; SAVE CURRENT ORG1067 ;1070 *= $0340 ;START OF SYSTEM IOCBS1075 IOCB1080 ;1090 ICHID *= *+1 E};DEVICE HANDLER IS (SET BY OS)1100 ICDNO *= *+1 ;DEVICE NUMBER (SET BY OS)1110 ICCOM *= *+1 ;I/O COMMAND1120 ICSTA *= *+1 E};I/O STATUS1130 ICBADR *= *+2 ;BUFFER ADDRESS1140 ICPUT *= *+2 ;DH PUT ROUTINE (ADR-1)1150 ICBLEN *= *+2 ;BUFFER LENGTH11E}60 ICAUX1 *= *+1 ;AUX 11170 ICAUX2 *= *+1 ;AUX 21180 ICAUX3 *= *+1 ;AUX 31190 ICAUX4 *= *+1 ;AUX 41200 ICAUX5 *= *+1 ;AUXE} 51210 ICAUX6 *= *+1 ;AUX 61220 ;1230 IOCBLEN = *-IOCB ;LENGTH OF ONE IOCB1240 ;1250 ; IOCB COMMAND VALUE EQUATES1260 ;E}1270 COPN = 3 ;OPEN1280 CGBINR = 7 ;GET BINARY RECORD1290 CGTXTR = 5 ;GET TEXT RECORD1300 CPBINR = 11 ;PUT BINARY RECORDE}1310 CPTXTR = 9 ;PUT TEXT RECORD1320 CCLOSE = 12 ;CLOSE 1330 CSTAT = 13 ;GET STATUS1340 ;1350 ; DEVICE DEPENDENT COMMAND E}EQUATES FOR FILE MANAGER1360 ;1370 CREN = 32 ;RENAME1380 CERA = 33 ;ERASE1390 CPRO = 35 ;PROTECT1400 CUNP = 36 ;UNPROTECE}T1410 CPOINT = 37 ;POINT1420 CNOTE = 38 ;NOTE1430 ;1440 ; AUX1 VALUES REQD FOR OPEN1450 ;1460 OPIN = 4 ;OPEN INPUT1470E} OPOUT = 8 ;OPEN OUTPUT1480 OPUPD = 12 ;OPEN UPDATE1490 OPAPND = 9 ;OPEN APPEND1500 OPDIR = 6 ;OPEN DIRECTORY1510 ;1520 E} .PAGE1530 ;1540 ; EXECUTE FLAG DEFINES1550 ;1560 EXCYES = $80 ; EXECUTE IN PROGRESS1570 EXCSCR = $40 ; ECHO EXCUTE IE}NPUT TO SCREEN1580 EXCNEW = $10 ; EXECUTE START UP MODE1590 EXCSUP = $20 ; COLD START EXEC FLAG1600 ;1610 ; MISC ADDRESS E}EQUATES1620 ;1630 CPALOC = $0A ; POINTER TO CP/A1640 WARMST = $08 ; WAR, START (0=COLD)1650 MEMLO = $2E7 ; AVAIL MEM (LOWE}) PTR1660 MEMTOP = $2E5 ; AVAIL MEM (HIGH) PTR1670 APPMHI = $0E ; UPPER LIMIT OF APPLICATION MEMORY1680 INITADR = $2E2 ; AE}TARI LOAD/INIT ADR1690 GOADR = $2E0 ; ATARI LOAD/GO ADR1700 CARTLOC = $BFFA ; CARTRIDGE RUN LOCATION1710 CIO = $E456 ;CIO E}ENTRY ADR1720 EOL = $9B ; END OF LINE CHAR1730 ;1740 ; CP/A FUNCTION AND VALUE DISPLACEMSNT1750 ; (INDIRECT THROUGH E}CPALOC)1760 ; IE. (CPALOC),Y1770 ;1780 CPGNFN = 3 ; GET NEXT FILE NAME1790 CPDFDV = $07 ; DEFAULT DRIVE (3 BYTEE}S)1800 CPBUFP = $0A ; CMD BUFF NEXT CHAR POINTR (1 BYTE)1810 CPEXFL = $0B ; EXECUTE FLAG1820 CPEXFN = $0C ; EXECUTE FILE NE}AME (16 BYTES)1830 CPEXNP = $1C ; EXECUTE NOTE/POINT VALUES1840 CPFNAM = $21 ; FILENAME BUFFER1850 RUNLOC = $3D ; CP/A LOAE}D/RUN ADR1860 CPCMDB = $3F ; COMMAND BUFFER (60 BYTES)1870 CPCMDGO = -6 ; CP SUBROUTINE VECTOR1880 ;1890 *= SAVEPC ; RESE}TORE PC1900 ;S SYSTEM EQUATES FOR ATARI"1010 ;1020 ; FILE = #DN:SYSEQU.ASM1030 ;1040 ;1050 ; I/O CONTROL BLOCK EQUATED10 .OPT NOLIST0980 .OPT NOEJECT0990 .TITLE "A sample device driver for Atari's OS"1000 .PAGE "--- general remarks -I}--"1010 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1020 ;1030 ; The "M:" driver --1040 ; Using memory as a device1050 ;1060 ; InI}cludes installation program1070 ;1080 ; Written by Bill Wilkinson1090 ; for January, 1982, COMPUTE!1100 ;1110 ;;;;;;;;I};;;;;;;;;;;;;;;;;;;;;;;1120 ;1130 ; EQUATES INTO ATARI'S OS, ETC.1140 ;1150 ICAUX1 = $34A ; The AUX1 byte of IOCB1160 ;I}1170 OPOUT = 8 ; Mode 8 is OPEN for OUTPUT1180 ;1190 MEMLO = $2E7 ; pointer to bottom of free RAM1200 MEMTOP = $2E5 ; poinI}ter to top of free RAM1210 ;1220 FR1 = $E0 ; Fltg Pt Register 1, scratch1230 ;1240 STATUSOK = 1 ; I/O was good1250 STATUI}SEOF = $88 ; reached an end-of-file1260 ;1270 HATABS = $31A1280 ;1290 HIGH = $100 ; divisor for high byte1300 LOW = $FF I}; mask for low byte1310 ;1320 .PAGE "The installation routine"1330 ;====== CHANGE NEXT LINE TO SUIT YOUR MEMORY ======13I}40 *= $30001350 ; This first routine is simply1360 ; used to connect the driver1370 ; to Atari's handler address1380 ; I}table.1390 ;1400 LOADANDGO1410 LDX #0 ; We begin at start of table1420 SEARCHING1430 LDA HATABS,X ; Check device nameI}1440 BEQ EMPTYFOUND ; Found last one1450 CMP #'M' ; Already have M: ?1460 BEQ MINSTALLED ; Yes, don't reinstall1470 INI}X1480 INX1490 INX ; Point to next entry1500 BNE SEARCHING ; and keep looking1510 RTS ; Huh? Impossible!!!1520 ;1530I} ; We found the current end of the1540 ; table...so extend it.1550 ;1560 EMPTYFOUND1570 LDA #'M' ; Our device name, "M:"I}1580 STA HATABS,X ; is first byte of entry1590 LDA #MDRIVER&LOW1600 STA HATABS+1,X ; LSB of driver addr1610 LDA #MDRII}VER/HIGH1620 STA HATABS+2,X ; and MSB of addr1630 LDA #01640 STA HATABS+3,X ; A new end for the table1650 ;1660 ; nowI} change LOMEM so BASIC won't1670 ; overwrite us.1680 ;1690 MINSTALLED1700 LDA #DRIVERTOP&LOW1710 STA MEMLO ; LSB of toI}p addr1720 LDA #DRIVERTOP/HIGH1730 STA MEMLO+1 ; and MSB therof1740 ;1750 ; and that's all we have to do!1760 ;1770 I}RTS1780 ;1790 ;1800 ;;;;;;;;;;;;;;;;;;;;;;;;;;;1810 ;1820 ; This entry point is provided1830 ; so that BASIC can reconnI}ect1840 ; the driver via a USR(RECONNECT)1850 ;1860 RECONNECT1870 PLA1880 BEQ LOADANDGO ; No parameters, I hope1890 I}TAY1900 PULLTHEM1910 PLA1920 PLA ; get rid of a parameter1930 DEY1940 BNE PULLTHEM ; and pull another1950 BEQ LOADI}ANDGO ; go reconnect1960 ;1970 .PAGE "The driver itself"1980 ;1990 ; Recall that all drivers must2000 ; be connected toI} OS through2010 ; a driver routines address table.2020 ;2030 MDRIVER2040 .WORD MOPEN-1 ; The addresses must2050 .WORD J}MCLOSE-1 ; ...be given in this2060 .WORD MGETB-1 ; ...order and must2070 .WORD MPUTB-1 ; ...be one (1) less2080 .WORD MJ}STATUS-1 ; ...than the actual2090 .WORD MXIO-1 ; ...address2100 JMP MINIT ; This is for safety only2110 ;2120 ; For manJ}y drivers, some of these2130 ; routines are not needed, and2140 ; can effectively be null routines2150 ;2160 ; A null rouJ}tine should return2170 ; a one (1) in the Y-register2180 ; to indicate success.2190 ;2200 MXIO2210 MINIT2220 LDY #1 ; J}success2230 RTS2240 ;2250 ; If a routine is omitted because2260 ; it is illegal (reading from a2270 ; printer, etc.), sJ}imply pointing2280 ; to an RTS is adequate, since2290 ; Atari OS preloads Y with a2300 ; 'Function Not Implemented' errorJ}2310 ; return code.2320 ;2330 .PAGE "The driver function routines"2340 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2350 ;2360 ; NowJ} we begin the code for the2370 ; routines that do the actual2380 ; work2390 ;2400 MOPEN2410 LDA ICAUX1,X ; Check type oJ}f open2420 AND #OPOUT ; Open for output?2430 BEQ OPENFORREAD ; No...assume for input2440 LDA MEMTOP2450 STA MSTART ; J }We start storing2460 LDY MEMTOP+1 ; ...the bytes2470 DEY ; ...one page below2480 STY MSTART+1 ; the supposed top of memJ }2490 ;2500 ; now we join up with mode 4 open2510 ;2520 OPENFORREAD2530 LDA MSTART ; simply move the2540 STA MCURRENT J }; ...start pointer2550 LDA MSTART+1 ; ...to the current2560 STA MCURRENT+1 ; ...pointer, both bytes2570 ;2580 LDY #STAJ }TUSOK2590 RTS ; we don't acknowledge failure2600 ;2610 ;2620 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2630 ;2640 ; the routine J }for CLOSE of M:2650 ;2660 MCLOSE2670 LDA ICAUX1,X ; check mode of open2680 AND #OPOUT ; was for output?2690 BEQ MCLREJ}AD ; no...close input 'file'2700 ;2710 LDA MCURRENT ; we establish our2720 STA MSTOP ; ...limit so that2730 LDA MCURREJ}NT+1 ; ...next use can't2740 STA MSTOP+1 ; ...go too far2750 ;2760 MCLREAD2770 LDY #STATUSOK2780 RTS ; and guaranteedJ} to be ok2790 ;2800 ;2810 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2820 ;2830 ; This routine puts one byte2840 ; to the memory forJ} later2850 ; retrieval.2860 ;2870 MPUTB2880 PHA ; save the byte to be PUT2890 JSR MOVECURRENT ; get ptr to zero page2J}900 PLA ; the byte again2910 LDY #02920 STA (FR1),Y ; put the byte, indirectly2930 JSR DECCURRENT ; point to nxt byteJ}2940 RTS ; that's all2950 ;2960 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2970 ;2980 ; routine to get a byte put2990 ; in memory befJ}ore.3000 ;3010 MGETB3020 JSR MSTATUS ; any more bytes?3030 BCS MGETRTS ; no...error3040 LDY #03050 LDA (FR1),Y ; yeJ}s...get a byte3060 JSR DECCURRENT ; and point to next byte3070 MGETRTS3080 RTS3090 ;3100 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;J};;3110 ;3120 ; check the status of the driver3130 ;3140 ; this routine is only valid3150 ; when READing the 'file'...31J}60 ; "M:" never gets errors when3170 ; writing.3180 ;3190 MSTATUS3200 JSR MOVECURRENT ; current ptr to zero page3210 CJ}MP MSTOP ; any more bytes to get?3220 BNE MSTOK ; yes3230 CPY MSTOP+1 ; double chk3240 BNE MSTOK ; yes, again3250 LDYJ} #STATUSEOF ; oops...3260 SEC ; no more bytes3270 RTS3280 ;3290 MSTOK3300 LDY #STATUSOK ; all is okay3310 CLC ; flaJ}g for MGETB3320 RTS3330 .PAGE "Miscellaneous subroutines"3340 ;3350 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360 ;3370 ; finalJ}ly, we have a couple of3380 ; short and simple routines to3390 ; manipulate MCURRENT, the ptr3400 ; to the currently accesJ}sed byte3410 ;3420 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3430 ;3440 ; MOVECURRENT simply moves3450 ; MCURRENT to the floatingJ}3460 ; point register, FR1, in3470 ; zero page. FR1 is always3480 ; safe to use except in the3490 ; middle of an exprJ}ession.3500 ;3510 MOVECURRENT3520 LDA MCURRENT3530 STA FR1 ; notice that we use3540 LDY MCURRENT+1 ; both the A and3J}550 STY FR1+1 ; Y registers...this3560 RTS ; is for MSTATUS use3570 ;3580 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3590 ;3600 ;J } DECCURRENT simply does a two3610 ; byte decrement of the MCURRENT3620 ; pointer and returns with the3630 ; Y register J!}indicating OK status.3640 ; NOTE that the A register is3650 ; left undisturbed.3660 ;3670 DECCURRENT3680 LDY MCURRENT J"}; check LSB's value3690 BNE DECLOW ; if non-zero, MSB is ok3700 DEC MCURRENT+1 ; if zero, need to bump MSB3710 DECLOW37J#}20 DEC MCURRENT ; now bump the LSB3730 LDY #STATUSOK ; as promised3740 RTS3750 .PAGE "RAM usage and clean up"3760 ;3J$}770 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3780 ;3790 ; END OF CODE3800 ;3810 ;3820 ; Now we define our storage3830 ; locations.J%}3840 ;3850 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3860 ;3870 ;3880 ; MCURRENT holds the pointer to3890 ; the next byte to be PUTJ&} or GET3900 MCURRENT .WORD 03910 ;3920 ; MSTOP is set by CLOSE to point3930 ; to the last byte PUT, so GET3940 ; won't tJ'}ry to go past the end3950 ; of data.3960 MSTOP .WORD 03970 ;3980 ; MSTART is derived from MEMTOP3990 ; and points to theJ(} first byte4000 ; stored. The bytes are stored4010 ; in descending addresses until4020 ; MSTOP is set by CLOSE.4030 MSTAJ)}RT .WORD 04040 ;4050 ; DRIVERTOP becomes the new4060 ; contents of MEMLO4070 DRIVERTOP = *+$FF&$FF004080 ; (sets to nextJ*} page boundary)4090 ;4100 ;4110 ; The following is how you make4120 ; a LOAD-AND-GO file under4130 ; Atari's DOS 24140 J+};4150 *= $2E04160 .WORD LOADANDGO4170 ;4180 ;4190 .END driver for Atari's OS"1000 .PAGE "--- general remarks -HBREM Ӡ̠REM 㩠Ӭ㮠REMREM ЮàREM (you may eraN-}se it, of course)REMREM Duplicate this diskREM as soon as possible! REMREM REM We give yoN.}u the DOS XL menuREM of most commonly usedREM commands and functions.MENUЮàREM (you may eraLQ? } %`ee`L`8Ƹȥ`ȱi`ȦR0}````8`ƶ`l8嶅`ȱ` M` Mȥ``EE`%R1}%`8(` Ƶ` Ƶ` % 0Ƶ` 0Ƶ` Ƶ` 0Ƶ`Ŷŵ(` FƵ` FƵ` %R2} FƵ` FƵ` %*ff` %&`8嵅嶅`II` Lj ff`&&R3}`$ Ȃ8嵅嶅$8峅崅 @&&&8嵨嶐泅$p8峅崅Ld8居岅$R4}㥴` L L`0Lee`ee`ȱl MLÀ MLɂR5}v$Lw ix iy z w z !! :8`ȱ -0.:*ɂ`|ȱ A R6}[|숭|L!ɂ {iʂi˂{ 0 ! 0{ɂL%  6ɂ M >LGR7}چن߂ 6 M L섭܂ L 6 K L 6 K ʅ 6 M  R8} 6 K 6 K L&ą 6 K ʅ 6 M  6 K!  6ɂ M >L1R9}ʅ 6 K ʅ 6 M  6 K  6ɂ M >L1ͅ 6 K ʅ 6 R:} M  6 K  6ɂ M >L1Ѕ 6 K ʅ 6 ؆ M  6 K Ӆ R;}6 K ۆ ` Lنچ چن 6 6 À LKنچ 6 `ENTER #R<}LOAD #ASM ASM #,#,#,#DOSۆ䝇!"``!"ffLL}FTR=}e MAC/65 Disk-Based ver 4.20 (C) 1994 by FTe .I.ELS.ENDI.MACR.END.TITLŠ.PAG.WOR.ERRO.BYT.SBYT.DBYT.ER>}N.OP.TA.INCLUD .FLOA.CBYTŻ.LOCA.SE*.JSJMDEINLDLDSTSTCPCPBIBRCLCLCLCLDEDEINR?}INNOPHPHPLPLRTRTSESESETATATSTXTXTYBCBCBEBMBNBPBVBVORANEOADSTLDCMSBASROLSRO% <>R@}.DEƽ<><.O.AN.NOԡ.RE .REF.DEF.NOT .AND .OR ,X),,,ةNNOOBEREJECLISXRA}REMLISCLISNUؐҐҐɐҐ3''3ϐꐰ'ϐϐĐPKrrurSSTWT~x(æKRB}J3bǧrnhw ^~7*C25  榤 XʈHh(@`8x0Pp!AaRC}&Ff Ɍ T :X  ,  C uLЋ - ۢ RD}-Hȱ h L(EDIWHATTEXTMODũ5 L(Ҍ` HH`ɛ ۱Lɛ RE}L^LH Ɛ ݟ 8 zH %h  c $p əLHL ݟ H %h RF}@ ؐ`H h ٰ եԄL Q Ɉ򅗅 `  CRG}Ȋ L0ߩ` 04C L؍l !L؍RH}L;8eHeHL H H`L0󆞥hhL;`ʆL; 0 RI}  L L; `` 񒦞` ) %H$H`͒I9Ɛ Ɛ`L ĭs RJ}i ů8` @`` ۢB `хѦ򤟱")Q ȱ8e`8`LISԠNEבDE̘FIRK}NIJASSAVLOAENTEBLOABSAVNUPRINRE΢REРSIZLOME͠BYŠCРDO TEX ۄ ذ ِЄRL}L ۱$  @L8 @ @ @` ۄЩ Əe Ə  ZڰեLo800  RM}8` ۹ɛg+< ۩, @`0" `Ѫ$ɛ @$P `RN}8`ɛ @`0 g8`0 45` ۄ, = @`8`U; =ZZZfZnRO}nZ& /# 1D EFGJHIMKL=>A Aλ߻A A @:RP}=>@>>8?8679<;ޑ<<;C;?<;7;;<;<><;N;?>;<<;<;;B<<>< 0 4 5 # 1u RR} $%! 3" 2=_  W @=:q:ߌћݝOƞd6ޕÛipMM/,[]+RS}-*/!&^"   ۱Ò ɛ;ė(` -Є 5ɛș IX; @򹋻 @ɛ`旤RT};*,0ҪH  h`L ۄЄ  @)++D LT hh ` ۤЄѱ RU}>  &𥐪 @ @񊨱ɁȱAх`? [``.8` i L@0:`󙋻ə a з` g S /    "Ll` L  QڥR[}< g Qڠȱ)Ȅ汥 )   UX `Xd ĵB  ] Ķ m R\} ` 9;!  ݩLVԩ <0 ̎ H Nԅh ܗL'ՅԅՅօנ&uԕR]} JJJJ ϗ) ϗ(L' 0 `$  ꗥHJJJJ h))`Lį`s8 քՊօR^}0ȱ8eԐհֱ֤֠H h`J (L ` ) ` ``͌ƵƵƶƶ`mi͝LR_}H 0+ hȄ H Qڭim hLhH hL˜ H  hH hɛ` SR`}Ʈ` S  g LݟƐƐLݟ@  SƐ  SAR Ra}{Ɛ 00 N g 0ͥeLyԦH gh g S) S N g$PI LRb} Įɛʆ N g䮐)`  Lai@( `ș`@  SE*JFH hGRc}*I%L˚ SJ FH ޚh* S=Lܢ`8qiHH hihi`Rd}H饦 ޚL  LEH h HLܢ WHVH`ajllvp)`8`LLܢ g.Re};* S  Q ؐ! gͭLv ] ]ҩ; S>+ 8吪8吅膐 LWƐ ]Rf} 8 " ,p   "L`- ? Qک Q L(Y ɛL08҅8HŲRg}&eҪȹɛʈıh8宅汥豂Ʈ򅗅 -L^ BL& c 򈄲Rh}Ʊ洤́汤IJ ـ褳Ȅ` , g S?莁` S)e` m } m } Ri}mL= SB  JLH$ h L L g SN 匥 eLH LH g Z ZL Z Rj}Ze樥e͙ ̘Ѧ o  碈  з` Z7 Z0 Z ZLF Z Z 9Rk} ZL|L ȟ 8儅充 k  ӍLӷ ȟ ( 8慜煝 kRl}Lʼnň` š Š``  `ŝ Ŝ` ԥ ݟ $p L( N [бRm})ȩ Ȅe8Ш ˶ LQڥЯ ˶ L ޶Lԟ搠 ޶  ն L ř Ř Rn} ř Ř` "L` e` }  } g    š ĠRo}`Ʈ0ii`   g; L L L` g]; X _ &  gD S;Rp} g+ S; ȟ g / ~ G P n !@ ^ L+ S<`Rq}& { з ޶ii  j H L(  G P:ӄ7 Rr}X҄ۺ;hd~ Rs}` <& S] ߭р SXILLy,PLޚ$0c ^ m )$0O J = ե m $01 Rt}, L۸$ 8 MLL θ)` Ƹ  Ĺ  -(`$0 ` L S i U8`0 Ru} "Ȅ<$0)Hh`H 8嬨孪8h g g0  0 LRv}v" mHlH`+LD gLv)ㅪ) S?>  @Ɛ eɂ ɀ Rw}  g g g  Lv  (L9@ L 9L < S ` S 9) -Rx} ܢLLܢ LФȥ LL ư  LܢLФ` L S )Ry} Lܢ@𥆝i ܢ 0$0 `i e/Rz}ȑȥȥȄ g>;:=A /L*Ɛ HhȥȥȄiL⥥`L S  Ǭ搦ʩ`R{}G!@` ܢ`Le H h g g gLv@L搩l S R|}@)8 <L S`L*) ܢ < ܢ S`8R}} E( Ǭ$0). ȥՑL) ȱՆL ) LHH hh` էLR~}ܢ է Lܢ SA`/0 S)QP S) `    cLܢ Z Z Z Z`LR} $LHH ޚ hhLL$ 8`$p/+ߤėLѤė ՚ ƸR} ਩8 LШL۸ Ĺ  sƗƮ`_<+ 2ԅդ6e R}$Hՙ+ȥԙ+ȄhԅL83+`ų* {LdHH`+L8 L搥 ƐԥR}ȥ`刾++`(Xȉ9܂e( S0' J搱`LS 1R}`ei` )ȱ` ` S@` 劤шܦ eȪHȱȱ)h`6`R}0``Յԩ` ©eԅԘeՅ`8ԅԩՅ` ©8ԅԘՅ`օנ` © FfffԈ0?uؕԅՅR} ©Ն &&&8થ׆Ԉ` ©%ՅՊ%ԅ`$p$0)  몥 Ն` 몥R})Iڤhh+Lshhզ uՆL8 ©ՅՊԅ` ©EՅՊEԅ` ©Ր` ><7 23 +)* ©! R}  LL    )R}䯐` ?i??[Z 07ee YzȱĘL8匝R}卝ei͙ ̘L8匑ȥ卑ȪȑȑȩȽ䯐`$P<@4R}!18匝9卝808899莚(` Lӭ )H0 L )ёё hH  h$R}$0 ,P {`? ?ԩL*** ERROR -MEMORY FULBAD DEBRANCH RANGNOT Z PAGE/IMUNDEFINED LABR}EEXP TOO COMPLEDUP LABEO'FLO IF/ENDIF NESTIN VAL >25 IF/ENDIF STAC NESTED MACRO DE PHASE ERRO*= EXP UNDESYNTAXR} O'FLODUP MACRO NAMLINE # >6553MISSING .ENDNO *NUM/REN O'FLONESTED INCLUDLIST O'FLONOT SAVE FILLOAD TOO BIR}NOT BINARY FILINVALID .SETOO MANY X-REFTOO MANY LOCAL FIELDUNDEFINED MACRMACRO NESTIN BAD PARAMETE!NOT F.P. NOR} DEV HANDLE҉TRUNCATED REÊTIMEOUԋNAːWRITE PROTECTEĒBAD DEV CMĠDRIVE TOO MANY OPEN FILEӢDISK FUL̥FILE NAMŧLOCKEĪFILR}E NOT FN(SEE MANUAL$`݆   װLH`H H hh 鸩 R ƥ0CR}6ȐH J, h⩮^+ȱ8e;LLa L ͹0L` GAR}) 8动勢  * ɇ * *LɆɅɄ $p 6LN`ۺȄ@ J @[R}L 0 0 Ĺ `0עਈɛO(K֠)- Hȱh ץ8 0LR}q JL >L(@[` 0 0i~iنؠ0 >օנ֐ֈƮ ȱ֐+Į!R}䪱ؑHر֑hֈ֥ЦքׄИ}e`q䨊e`8包卅  0PH R}hšĠ答 $0 (,  J8  鸩 Ĺ Lqɇ'IimiLv  LvɆR} LֳɅ LvɄ#Lv`` Z渦 6LN ) `Ԣ儐R}`Z8圅坅 o   L8HI 8`R}LKȅ k L搥3 财 Qڠ Ÿh _ &Lܢ LܢɛR}򈱑 `濥ɀ`8~H m~  h`$0 8 xIiH {h {LR} { {ȹ8 {9 {̚ȱ`& Ͷ LMLN= Ȋ ``l 搤搱` Ͷ 0`LR}ө ϶HI` `H ҶhH hLJ*K+GHFH`H ƶhL `H ն R} նhJ S)` 0`ɀ/ L˷)Lʎ JLڱ)⭆Ŧ  L( R} `Ɉ"% ͶNLM 0L4 ӷ 财@` 緥Ɉ` ն 0` նR}C` ӷΆ`~IHEDBKLV`ՆԈ gȱ80 LQՆ gФб$0R} (` LH shHJJJJ ~h)L0123456789ABCDEF s )LL mL殤 (` L0) ``R}) Lװ`͟?)4 Ƹ/HH L ^ hhԩ` է Ƹ ܢ J`L 鸭R}` { Ĺ  J }L Ĺ۠ 8 XhLL` R}Ĺ  J }8厪 J"LPAGESYMBOL*** ASSEMBLY ERRORS: BYTES FRE ?=?%?=?ۺ;R}R}R}DOSR}ȱi`ȦPU INPUT X; X; FORM: INPUT ch,buf,len X; %X; ch is given as in the @CH macro )X; buf MUST be a proper buffer address>} 6X; len may be omitted, in which case 255 is assumed X; ,X; gets a line of text input to the given 'X; buffer, maximu>}m of length bytes X; INPUT  3 ( AINPUT: wrong number of parametersA$  .@GP = ==>}CGTXTR8B@GP = = =CGTXTRLV`jA CLOSE macroAtX;~X; MACRO: CLOSEX;X; FORM: CLOSE ch>}X;%X; ch is given as in the @CH macroX;X; closes channel chX; CLOSE   ( ACLOSE: wrong number of par>}ametersA @CH  Q>CCLOSE  PICCOM9 CIO(2X;<-X;;;;;;;;;;; END OF IOMAC.LIB ;;;;;;;;;;;;FX;d of th<v#AFTe SYSTEM EQUATES FOR ATARIAX;X; FILE = #DN:SYSEQU.ASMX;X;X; I/O CONTROL BLOCK EQUATES$X;)SAVV}EPC ;; SAVE CURRENT ORG+X;.@;;START OF SYSTEM IOCBS3IOCB8X;B-ICHID ;;DEVICE HANDLER IS (SET BY OS)L)ICDNV}O ;;DEVICE NUMBER (SET BY OS)VICCOM ;;I/O COMMAND`ICSTA ;;I/O STATUSjICBADR ;;BUFFER ADDRESSt&ICPUV}T ;;DH PUT ROUTINE (ADR-1)~ICBLEN ;;BUFFER LENGTHICAUX1 ;;AUX 1ICAUX2 ;;AUX 2ICAUX3 ;;AUX V}3ICAUX4 ;;AUX 4ICAUX5 ;;AUX 5ICAUX6 ;;AUX 6X;'IOCBLEN IOCB;;LENGTH OF ONE IOCBX; X; IOCV}B COMMAND VALUE EQUATESX;COPN;;OPEN CGBINR;;GET BINARY RECORD CGTXTR;;GET TEXT RECORD CPBINR ;;PUTV} BINARY RECORDCPTXTR ;;PUT TEXT RECORD(CCLOSE ;;CLOSE 2CSTAT ;;GET STATUS<X;F7X; DEVICE DEPENDENT COMMAND V}EQUATES FOR FILE MANAGERPX;ZCREN ;;RENAMEdCERA!;;ERASEnCPRO#;;PROTECTxCUNP$;;UNPROTECTCPOINT%;;POV}INTCNOTE&;;NOTEX;X; AUX1 VALUES REQD FOR OPENX;OPIN;;OPEN INPUTOPOUT;;OPEN OUTPUTOPUPD ;;OV}PEN UPDATEOPAPND ;;OPEN APPENDOPDIR;;OPEN DIRECTORYX;X;X; EXECUTE FLAG DEFINESX;#EXCYESV};; EXECUTE IN PROGRESS"+EXCSCR@;; ECHO EXCUTE INPUT TO SCREEN,%EXCNEW;; EXECUTE START UP MODE6$EXCSUP ;; COLD STV}ART EXEC FLAG@X;JX; MISC ADDRESS EQUATESTX;^CPALOC ;; POINTER TO CP/Ah#WARMST;; WAR, START (0=COLD)r#MEMLOV};; AVAIL MEM (LOW) PTR|%MEMTOP;; AVAIL MEM (HIGH) PTR1APPMHI;; UPPER LIMIT OF APPLICATION MEMORY%INITADRV};; ATARI LOAD/INIT ADR!GOADR;; ATARI LOAD/GO ADR(CARTLOC;; CARTRIDGE RUN LOCATIONCIOV;;CIO ENTRY ADRV}EOL;; END OF LINE CHARX;+X; CP/A FUNCTION AND VALUE DISPLACEMSNT#X; (INDIRECT THROUGH CPALOC)X; V}IE. (CPALOC),YX;"CPGNFN;; GET NEXT FILE NAME'CPDFDV;; DEFAULT DRIVE (3 BYTES)2CPBUFP ;; CMD BUFF NEXT CHAV}R POINTR (1 BYTE)CPEXFL ;; EXECUTE FLAG,CPEXFN ;; EXECUTE FILE NAME (16 BYTES)&)CPEXNP;; EXECUTE NOTE/POINT VV}ALUES0CPFNAM!;; FILENAME BUFFER:!RUNLOC=;; CP/A LOAD/RUN ADRD)CPCMDB?;; COMMAND BUFFER (60 BYTES)NCPCMDGOXV}X;bSAVEPC;; RESTORE PClX;ATARIAX;X; FILE = #DN:SYSEQU.ASMX;X;X; I/O CONTROL BLOCK EQUATES$X;)SAVT!'AA SAMPLE PROGRAM USING IOMAC.LIBAEI>D:SYSEQU.M65>D:IOMAC.LIBI5A [end of equates and librariZ}es...begin code]A$EK.p;; an arbitrary location8X;B SAMPLEL !AROUND;; skip buffers, etc.VX;`BUFFER jZ}X;tWMESSAGE1 =A This is a test of the sample program  Type your name here -> A~ A AM1LENGTH MESSAGE1Z}MESSAGE2 AHi there, AM2LENGTH MESSAGE2X;X; BEGIN ACTUAL CODEX; AROUNDOPEN ===AP:A BPUT Z}=MESSAGE1=M1LENGTHINPUT =BUFFER PRINT  BPUT =MESSAGE2=M2LENGTHPRINT =BUFFER 3PRINT =AAlZ}so, we send it to the printer...A BPUT =MESSAGE2=M2LENGTHPRINT =BUFFER(!PRINT =AThat's all folksA2 CZ}LOSE <:FEIPOGRAM USING IOMAC.LIBAEI>D:SYSEQU.M65>D:IOMAC.LIBI5A [end of equates and librariXppLQqqq堭 Hi there, 0BJKLhqP:eDqE ^}V BDqEDHI VBDpEHI VLq BDqEHI V BGDqE HI V^} BDpqrEHI VL5rAlso, we send it to the printer...0 BDrE#HI V0 BGDqE H^}I V0 BDpEHI VLrThat's all folks BDrEHI V0 B V`JKLhqP:eDqE \c ~ii i Yg  Ƥ t 奤   Ƥ V}Ƥ t L` # dɛ g?L x ~ i V t`L` r ~ P  V}L 㟢R vLK 0 iLLvD:*.* # ɛ H hɛ gL r 㟩H  ei0Hh LV}L$II%A $!$H I$I$I$H! I@I! HH$$$@T}