@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@W!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% } DD˙`  }J)Lr J  ((  p L ()   J }L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉ } ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G } HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G } C8jJ3j2CD( C202C ԠBX` N 1?  LlD:RAMDISK }.COMLu L1 L ;LHL  T`  `1  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV !}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh "}DEL8HI4 0 HI,0 0  9 .G VLO #},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV Uԅ֩שբ w؅բ w F` $}ԩՠH Uh F``?<0LV`@ʆ v sI FΞ0A l i/DE  Uԅ %}ש w FL  @  Uօԩשբ `E:D1:DUP.SYS w FΝL fXpԩ `xԍҭ)Lk &} ` `֑` 9 V⪍ ઍ  - '}LLu ÝDEHILV 9 .l 9 .l  `` Uԅ֩թע w؅ע w (}F` BLV nB,DE JLV B V BLVDEIʩ BꭝLu  } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED262 FREE SECTORS COPYING---D2:DOSMANOCMl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 144ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8u) !"`3!3:AU,2AU4DAU5A< P 6-C:,6-P:'AV,)AS?AR&AV$P6-?:C:w}hL,, AD:MENUDAU5A< P 6-C:,6-P:'AV,)AS?AR&AV$P6-?:C:", ө jB*DELVE:)AS?AR&AV$P6-?:C:hL,, A 9,)ө jB*DELVE:)AS?AR&AV$P6-?:C:hL,, A$9BUFBCHNUMMLZZZZZZZ1Z8Z8Z12Z25Z50DCOMDUNIDBUFLDBUFHDSECLDSECHYXNSESECTOACTIONRE({}BTOOTOFLESTARLASSTAD@@@ @ @ @(|} @ @A(AVAApAiArAsAxAy(}}@ !"#$%&'()%%####(~}###########################%%# BOOT DISK UTILITY #%%# by J. W. Latham #%%# Published by Ata(}ri Computer #%%# Enthusiasts (N.S.W.) #%%# April 1985 #%%###############################(}99Correction to line 20100 from Issue 19 P.30d<<;A(,;@,;@,;@,;@,i6-(}6-@'6-@36-@?6-@K6-@W6-@c6-@o6-@{6-A(6-AV(}6-AjK6-Ap6-Ai'6-Ar36-As?6-AxK6-Ayn&6.h S`&6.(}p9+0@#0@/AR9 Bx (}***********************y**("* * (}SECTORSz((( * ŠԠ * 4-5{(* *|(***********************}J$(TYPE TI(}TLE AND PRESS J(!TYPE * AND PRESS TO FINISH3 6-6-6-@'6-@36-@ " -"((} PROGRAM No.  4*6-& A/ 67,."67<,.>:@d%,/67<,.. 6-&67$%<$(},.- -%(-%-(  6-% A@A -'(NOW INPUT ǠA(TYPE (} TO FINISH 6- -( Ԡ -%9"67$&<$&,.>:&P:',$,967$<$,.>:P:',, "(}6-6- A 6-% A P -'(IS EVERYTHING O.K.? L( ŠΠϠŠ١P(}0A  A+ " $0 6.67,.67,.:67<,.6-D A (}C:,&P:C:,',$P:C:,',  6-?:C:,,$(}********************(* (} *(* ԠŠ *(* *(*********************' (SOURCE - APE OR ISK(}$'(44DA&0>0TA HF'(POSITION BOOT TAPE & PRESS C(PRESS WHEN READYF(z(}C: ))6-F:AD,%$F:AE,6-F:AA,%$F:AB,( FREE RAM = &( (}"6- --(YOUR BOOT TAPE CONTAINS  RECORDS 6-$. 6-%8 6-%B  A$ L (INSUFFICIENT (}FREE RAM (` (SORRYj &t / #A$`!-A6Ai%"+/  104,162,16,169,7,157,66,3 104,157,69,(}3,104,157,68,3 104,157,73,3,104,157,72,3 ""32,86,228,16,4,169,1,133,212 96 9(( REPOSITION TAPE AND PRESS (} 9( PRESS  C: 6-?:A6<<,  A& (TAPE READ ERROR( &2  6- (}A'P< $F 6-F:AD,%$F:AE,P 6-F:AA,%$F:AB,Z ( FREE RAM = &n 6-%x 6-$ 6(}-% !A# (INSERT DISK  ( PRESS    6-6- A( C6-F:%@(},9(THIS PROGRAM USES  SECTORSC A( ""(INSERT DISK!! ( PRESS   6- A((} A&  "(ENTER STARTING SECTOR"    6--%&@ &$P:', P:'," (}&$P:',, P:',6 6-?:C:,,@ 6-%J  T $',,($} Ԡˠ by J.W. Latham',,($ ****(}******************************'++(# * Ӡ͠ӠŠ *'++(# * ԠӠΠˮŠ *'++(# (}* Ҡ͠Ġ٠ *'++(# * ӠŠԠӮ *'++(# * ԠӠƠ *'++(}(# * ΠŠĠΠŠٮ *'++(# **********************************'K-@K(71. WRITE BOOT LOADER PRO(}G. TO DISK (SECTORS 1-3)$'5-@5(!2. CREATE DIRECTORY (SECTORS 4-5).'&-@&(3. COPY BOOT FILES3'(} 6. 67,. 67,.8'K:B' )6-&@HL'BA A V' B (}NNN0,5,0,136,6,136,162,96,169,1,157,75,3,169,8,157,74,3,169,37,157,68,3,169*NSS137,157,69,3,160,0,132,203,32,38,136,76,55,(}136,169,3,208,6,169,12,208,2,169,94NSS157,66,3,32,86,228,96,162,96,169,96,157,68,3,169,137,157,69,3,169,16,157,72,3>NSS16(}0,4,132,84,169,3,133,85,32,46,136,162,96,24,189,68,3,105,16,157,68,3,189,69HNUU3,105,0,157,69,3,164,203,192,9,240,7,230,203(},230,84,76,76,136,32,42,136,169,255RN141,252,2,162,8,173,252,2\NZZ221,40,137,240,5,202,208,245,240,241,202,138,10,170,1(}89,0,138,141,10,3,232,189,0,138fNJJ141,11,3,169,0,141,4,3,169,4,141,5,3,169,1,141,1,3,169,82,141,2,3,32pNQQ83,228,48,251,(}162,3,189,0,4,157,64,2,202,16,247,173,66,2,133,4,173,67,2,133zNNN5,173,4,4,133,12,133,2,173,5,4,133,13,133,3,160,127,185,0,(}4,145,4,136,16NQQ248,24,165,4,105,128,133,4,165,5,105,0,133,5,206,65,2,240,18,238,10,3,208,3N238,11,3,32,83,228,16,21(}5NTT48,249,32,119,228,32,16,137,176,248,230,9,32,34,137,96,24,173,66,2,105,6,133,4NJJ173,67,2,105,0,133,5,108,4,0,108,1(}2,0,83,58,0,0,63,21,18,58,42,56,61N6657,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0N550,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0(},0,0,0,0,0,0,0,0NYY125,32,32,32,32,194,207,207,212,160,204,207,193,196,197,210,32,32,32,32,32,32,32,32N32,32,32,32,32(},32,32,32N #BN(}********************N''(* * SECTORSN%%(* ŠԠ * 1(}-3N(* *N(********************N!!(INSERT DISKN(PRESS WHEN READYN(}N7 -"67<,.>:,! '6--6-7 AN3 -"67<,.>:,! )6-%3 AN6 -"(}67<,.>:,! )6-%3 A6$ D:BOOTDISKN3 -"67<,.>:,! )6-%3 AN6 -"(:0ABooŧӠɠҠέ Ӡ͠,}Š ӠΠҠ1 +@@1@@9s (} (p(_THIS PROGRAM,} DEMONSTRATES AN ABILITY TO READ THE CONTENTS OF AN ENTIRE SCREEN AT ONE TIME.s(ur(jWHEN THE ? APPEARS, ENTER ANYTH,}ING YOU WANT ON THE SCREEN, EVEN USING THE CONTROL UP AND DOWN ARROWSu(ro(gWHEN YOU ARE FINISHED, PRESS RETURN, A,}ND THE PROGRAM WILL READ AND REWRITE THE CONTENTS OF THE SCREEN.r(vO(GUSE THIS TECHNIQUE IN YOUR OWN PRO- GRAMS TO ALL,}OW FULL-SCREEN ENTRY.R(v(Ġ٠͠͠Ơ --@A@ -@ ;A,;,}@@, 6.##@@ E:<-@#F-P@Z67B:,,}%@,.d n }x-@A  7@255  0} ? A6-A( @ A  A   A( ERRO0}R&,67B:,%@,.1 6# 6-&6-'@# A67B:,%@,.0 6-'@ A(0} 6. ( A!!(} BINARY to DECIMAL00((0}( 1  ( 2631  ( 84268421  ##( BIT  DECIMAL( 7654320}10  (6-6-@( BINARY: 4@L-@B:,Q6-&@V+70}<,41+6-%P:@#%?P,` j( o (t AD:BINDECQ6-&@V+70d *** THE 'X:' DEVICE ***************************************** ** CHANGE NOTES: 4}fixes and mods ** ** 01/01/85 Calls to ATARI FP ** ROM replaced w4}ith ** integer math code ** ** 11/13/84 1. now supports BASIC ** 4} PRINT statement ** 2. supports SYSTEM ** RESET key properly ** 4} 3. some memory use ** bugs fixed - now ** can CLOSE/OPEN ** repeate4}dly without ** using more memory ** ************************************4}**The 'X' device driver is an 80-columndisplay device driver for all ATARIcomputers. When loaded into memory itinstalls 4}itself between addresses$2B00 and $35D0. Since it is not yetrelocatable this places it high enough to allow room for norma4}l DOSusers (DOS/XL, OS/A+, DOS2.0s) and leaves space for the 'R' handler ifthe 850 Interface Module is used. Arelocatable4} version is planned forthe future.The 'X' device driver loads an 'X'device entry in the Handler AddressTable and provide4}s standard CIO interfacing to the driver, with somecaveats. When opened for OUTPUT itperforms like the 'E' device; allusu4}al cursor and editing controls arefollowed and inverse video isprovided. When opened for UPDATE itdoes not edit out cursor4} controlcharacters like the 'E' device, butpasses them back to the caller likethe 'S' device.The 'X' device driver provi4}des someediting features that are not offeredby the 'E' or 'S' devices. ERASE Lineand Screen to and from the currentCURSO4}R position are provided via XIOcommands. Absoulte Cursor Positioningis also provided via an XIO command. COMMA4}NDSOPEN #n,4,0,"X:" - open #n using 'X'CLOSE, GET, PUT - as usualXIO cmdno,#n,0,0,'X:' - special cmds cmdno = $10 -4} position aux1,aux2 cmdno = $20 - erase line to CURSOR cmdno = $21 - erase line fm CURSOR cmdno = $22 - erase screen to CU4}RSOR cmdno = $23 - erase screen fm CURSOR USAGEATARI DOS users should name the XDSPLY file AUTORUN.SYS on 4}their bootdisk. It can be concatenated to anexisting AUTORUN.SYS file, such asthe RS232 handler. OSS DOS/XL or OS/A+ user4}s can leave the file asa .COM file and install it by runningit like any other Extrinsic command. CAVEATSXD4}SPLY does not replace the 'E:'device. It can be used like it incertain circumstances and you canmodify the OS's Handler Ad4}dress Tableto substitute 'X:' for 'E:'; but notall of the 'E:' features such as fullscreen editing are supported. 4} BUGSPlease report any bugs to me viaEMAIL on Compuserve at 70545,507and I'll try to address them in thenext relea4}se.Alex M. Stevens70545,507DL 3: e viaEMAIL on Compuserve at 70545,507and I'll try to address them in thenext relea4( ,Bg.(&}آŠҠ1(;(NOTE:>(g($IN ORDER TO RUN THIS 80-COLUMN PRIN8}T SS(KDRIVER DEMO, YOU MUST BINARY (L)OAD XDRV.OBJ FROM DOS, THEN RETRUN c&(TO BASIC AND RUN THIS PROGRAM.)(8}c(5WHEN YOU ARE READY FOR THE DEMO..... PRESS []. F:B2y,@@##@@X:8}55(@$80 COLUMN PRINT DRIVER DEMONSTRATION(U(@U(@9This program is intended to demonstrate the 8}use of the X:2RR(@Adevice driver, to show how you might use it in your own programs.7SS(@BBy listing [L8}.] this program, you will see how to enter your text.<VV(@EFor added convenience,the XDRV.OBJ may be appended to t8}he AUTORUN.SYSATT(@CProgram so that it will load automatically when the disk is booted.F11(@ Read XDSPL8}Y.DOC to learn more...Pk(@`(@D it's your turn -- try the keyboard. SYSTEM RESET when finished.k(@8}d##@@K:n)@*@x AD:XDRVDEMO.BASwhen finished.k(@8h++ H+ G+X(E [+K +`X47`` + + + `Ht+{+u+|+\}h3i3h`H++++33h`+, |, +H-;,hԑ(eԅԩeՅ`HHHH΅ԥυդбȄM\}ѭ&- JJJJѥ)ѥ) )Ѣ;, )Ѣ;,hhhh`72){, {,{, |,e\}ԩeՅխ{,`HHH(H '-hhեJeԅԩeՅխ9,:,,,eԅȱeՅ`,&-) I` i@\} ѩ&-) &-8ѩHHHH '-hhmΥm`'-]-h\-h]-hh Dhh ٥HH]-H\-H\}`^-Y.b-c-@--X-Y-8^-@-_--8-b---c---mb---mc-- -˩`-m-\}-m-HH-H-H-H-H -`hhh.h.hhhhъHH8ЪѨ͠.. d. 9.`.Бҩ\}. БZ..ҩ`.eхѭ.eӅӬ. Бҩ.ӈБҩ`./hhh.h.h.hhՊHH.. \}.`. .`XԥYթ.. .`˅`8`ɹi򩸰`P` &/ , \}+`HHH(H '-hb-hc-ˍk/ l-k/`HHk/H(H '-h^-h_- d-`-^-a-_-k//0k/k/` z0/)\} /(j/(/ 0`//)jH/)/h /(`) z0 z0̢//Hh/hH/H(h*Hh/h\}) ܱ Z0/ 0й`//H/H(h*)H/)/h /(`8PJ/ |,`i(ԥi` '101 8/̥HP |,hH \}'1 0 8/ |,H̥HH |,ԍ%1Ս&18hԍ.hՍ.h 0 21`)8`$1%1ԭ&1 .(m%1%1m&1&1$1`̍l/ˍ\}k/`l/̭k/` '1 |,HH |,ԅԥՅ8hԍ.hՍ. . 21 0` '1 0 21?˩ |,ԍ%1Ս&111˩P |,8%1\}.&1.%1ԭ&1 . 21`HHHҝ1hhh`HHH1hhh`1<2/8j j16606666Xi66Yi\}6 6"/`=283Copyright 1984 by Alex M. StevensPermission to copy and/or distributeto any person for non-commercial (public\} domain)use only is granted by Alex M. StevensOctober 28,1984.``j20212 1 . 20ԭ1\}eԍ9,eՍ:,93444˅ <,`2j2021i3Hh3H`H̥P x3h`i` э2 1 ^,} . /\}x /n /d &/Z //P~ 8/Fɜ F/<ɝ m/2 /( /ѥɛ x3 , + j3 <,\}˰ d- 12L`"5405 !"#  l4 0 0 =1 s1` ^,* ˥+Q8 <,`2M333*4/\}4L+U_U tE#u!2bb``0"AAAA"R"w"R @$ "vRRr'wsAEwWTtGAAqQqwUWqQq" "$ '@ '@\}'!" BwUwEEuwTtTTwgTWTTg15,6wDdGEGWRrRRWUuEEGGEugUUUUWwUUwEGwTWaQWu%%%%'UUUW'%Uu'rRRsrBBsF\}B"" PPRrss"" """4&bC03ss SS""`po,,, &$&47\}"r""'""AwA" gqwe'@GtTTw-66uWTw0'u'!'B@vRRVe %''%5gUUUWwUwAAwTGAG u%%%7UUW'%Uu'RV\}vwBv'&&'%! "bcb" 676ԭ6ՠpȑȑȭ6666 6ȭ6666 6ȩAȥԑȥՑ`Oȭ6ȭ6Ԣ_\}ȑ`+! "bcb" 676ԭ6ՠpȑȑȭ6666 6ȭ6666 6ȩAȥԑȥՑ`Oȭ6ȭ6Ԣ_\RAMDISK2 RAMDISK2 configures an ATARI 130XE's Extra RAM for use with ATARI DOS 2.0S or the OSS DOSXL File Managemen`}t System. The Ramdisk (D4) created by RAMDISK2 has 503 free sectors, 4 through 359 and 369 through 515. Sectors 360 throu`}gh 368 contain the VTOC and Directory as usual. Boot sectors 1 through 3 do not exist, but a read or write attempt retur`}ns a 'success' status code. Any attempt to access sector 516 or higher returns an error 144.INSTALLATION Followi`}ng a power up boot, the RAMDISK2 object file automatically installs and formats the Ramdisk when executed as a binary a} load file. It may alternatively be renamed to AUTORUN.SYS. The installation functions are: 1. Verify that ta}he DOS File Management System is either the standard Version 2 as supplied with ATARI DOS 2.0S and normal OSS DOSXL, or tha}e modified version from DOSXL.XL. Exit if not. 2. Verify that the computer system actually has Extra Ram at 400b}*+HOORUBBBMBIMREG=} @=} , +"(PLEASE WAIT ...., A`#?'3@R?A=}U(! }START ADDRESS (HEX)!*?6-B:,&@  @,6-@4(B:,?6.C000-3 6.7, A6=}-3 HIT RETURN TO STEP2 Ap6-I:,7( 6-F:,6- A (  <+%@A4+%@=}A4F% 6- A % 7@, KY.6.7$@%@<$@%@,Y6.7$@%@<$@= }%@,P- 4  INVALID OPCODE# - @5Z   6-%@d 4BRK  @5n 4= }  A @Pxtj@:,&@dAAAAAAA AAAA= }t @P>IMPLIED MODE<L 4RTS A@6-' A@?6-$AV%%@I APL$0RTIA= }J A@ A@#6-- A@=6-$AV%G APJ$"4SEI)4CLI AP"$ AP= }$+>ABSOLUTE MODE<, $ A%6@ 4JMP36-F:%@,%F:%@,$AV= AP@$@0JSRA=}@JQ6-&@"6-P:'AV,, A5G6-&P:'AV,$AVQ A5O6)6-F:%@,%F:%@,$AV=}3 AP6$T AP$>IMMEDIATE MODE<" #$ A0 AP"$>ZERO PAGE MODE<! $ A0=} AP!$W>ABSOLUTE,XABSOLUTE,Y<) $ A% ,Y& =}AP)$>(INDIRECT,X)< + ($ A0 ,X)( AP+$>(INDIRECT),Y<+ ($ A0 ),Y(=} AP+$>ZERO PAGE,X<) $ A0 ,X& AP)$K>ZERO PAGE,YRELATIVE JUMP<K TO 6-F:,#6-%@=6-&+!A',$AVE6-%K6-S A  $=}*6-8P:'@d,,86-P:F:,',S6-&@$P:'@,1+"+P:'@2,&@$P:'@d,,16- AP$=}>INDIRECT JUMP<A ( A% )A6-F:%@,%F:%@,$.!6-F:,%F:%@,$AV+ AP=}.$> HEX TO DEC <[6- -@B:,66-@:7<,,&@HT6-$%&@$+!@ ,X [$>=} DEC TO HEX <w 6.-@@)6-P:',36-&$96.^6.>:%@H%@$+!@ ,,m67@,.s6=}-w $ > 2BYTE OPERAND < U6-F:%@,"%@, A : 7@,D A0R6-%@U$ =}> 1BYTE OPERAND < C 6-F:,%@$ A 2 7@,@6-%@C$ > PUSH <  6-F:,%A%=} :" . WARNING: STACK OVERFLOW:6-AV &@$ > POP < 6-F:,6-F:%A%,=}<"AU / WARNING: STACK UNDERFLOW<6-6@%@$!!> EXECUTE ONE INSTRUCTION <BB=}6-?:%@$,BB@d/ -@%6-F:%,/ A E- 7@$%@<@=}$%@,; 7@,? B E$o> INITIAL STUFF "0END& ERROR IN OPCODES; CHECK FOR TYPO'S>56--%Af=!}#")16-%5 <BW$ ERROR IN ML DATA9 CHECK FOR TYPO'S< 6-?:, 6502 ML TRACER$W="}> PAUSE :A%,( (#(G( A:} PROGRAM TO CROSS REFERENCE?##-@@# AP(@26-@` @p< ) $FA;}  6- 6-%PJ ((( IS NOT A BASIC PROGRAM<-@A@ J @Z-@@  A<}d 6-$n (Apx*(>:A%,(>:@),*( REM 6(>:&$+!A',,((+!A',, 6 A0A=}'( ((CONT-$@'&@ 6-% A-A'68,- !-@A>}$+'&, !   6- 6-%$    !A@ AUA  A! A?}"@  ! A"@"A/"@-@! % / A@ A@ 6-&6A@}8,-8,%"6(>:A%,(>:@),6(+%,$%8, REM ,'( ((CONT-$@'&6@@ AA}A@J! B332!2T(>:A%,^R6-F:A,A6O(ERROR  AT LINE F:A,%F:AB}A,$Rh-@-@@K:m (} ((((r>>(6Do you want output on the screen or oAC}n your printer w&(&( Type 'S' for screen outputx,((( Type 'P' for printer output,z$$7@<@,0PAD}A0|0 A 0Just in case printer isn't ready)@"@'3 XREF LISTING FOR .@AE}.@@P:6-F:A6,%F:A7,$:6-F:%, 6-F:,%F:%,$( $06-%: AAF}36-P:',6-&$(((@3(@86-F:%,-@&4(@>:F:%,,8 #(@ AG}(#(@1 6-%6-F:,%F:%,$1 B'hA '3 3'(@&% VARIABLESS (} (AH}((S(< Your printer was not ready Try again0(0(% Press any key when printer is ready AAI}  (} ((> CROSS REF LISTING FOR H 6-F:A6,%F:A7,$R :6-F:%, 6-F:,%F:%,$( $0AJ}6-%: A4\ #6-P:',6-&$( # f /6-F:%,-@&+ >:F:%,,/ p   ( z 1 6-AK}%6-F:,%F:%,$1 B'hA4     &% VARIABLES ##(Press START for another RUN ,,($ OPTIONAL} to list variables again &F:B2y,"@&%D:CRAB F:B2y,@A4 A0v-B:,@AM}6@=67%@<%@,.7<,A Z67@<@,.Ds67@<@,.:v$2T82202 190AN}2 3502 4002 4102 4502 34002 3410 2 3450d2Ie220f240g260h2 180i2 210j2 280AO}k2 330l2 360m2 410n2 450o2 460p2 3410q2 3450r2 34602T2202 4102 4302 4302 341AP}02 34302 3430,3Z-320.340/3 14003 14013 17023 17033 26043 30053 30063 33073 330AQ}83 33093 330:3 330;3 330<3 330=3 3603L3203 1003 1303 1803 2703 2803 290AR}3 4103 4603 34103 34603R3203 1403 1503 3003 310X4HY420Z4 100[4 160\4 AS}180]4 290^4 410_4 420`4 420a4 3410b4 3420c4 34204N(4204 1704 2804 2804 290 5AT}A$!520"535#540$580%5 390&5 21059'5 5000(5 5000)5 5000*5 5000+5 50005 OPT$520AU}5 3765 3785GC5505705705905 1105 1305 1805 1905 1905 2005 2005 AV} 2105 2205 2405 2405 260L6CM660N670O670P6 110Q6 130R6 130S6 130T6 190U6 19AW}0V6 210W6 220X6 240Y6 250Z6 260[6 270\6 2806D6706706706806 2806 2806 AX} 2806 2906 2906 4206 4206 4606 34206 34206 34607PP780780x7Jy790z7AY}90{7 170|7 170}7 170~7 1807 1807 2607 2607 4307 4307 4307 34307 34307 34307AZ}LN7 1007 1207 1607 1607 1807 1907 1907 1907 2907 4107 4107 4207 4207A[} 4507 4507 34107 34107 34207 34207 34507 3450@8XA8 350B8 350C8 350D8 385E8 3A\}85F8 400G8 410H8 410I8 410J8 410K8 410L8 430M8 430N8 450O8 450P8 450Q8 450R8 3400S8 A]}3410T8 3410U8 3410V8 3410W8 3410X8 3430Y8 3430Z8 3450[8 3450\8 3450]8 34508PL8 4108A^} 4108 4308 4308 4508 34108 34108 34308 34308 34509M 9 420 9 420 9 440 9 34A_}20 9 34209 3440l9Gm9 5000n9 5000o9 5000p9 5000q9 5000r9 5000D:CRAB420 9 440 9 34@h5pQQQQQQQQQQQ1Q2Q3Q11Q12Q15Q19Q19Q20Q25Q25Q30Q36Q43Q52Q58Q75Q75Q76Q93Q96RIOCBICCEa}MICBAICBAICBLICBLFINF1F2DESTVARWORKLINENDESTAAP@@@@@@Eb}@ @ @ @ @4 AA AUAAARAUAVA#A`AEc}0A AAPARA`A0A`A @2!A4"A6#A7$A@%AA&Ed}'(()<*A+BC0,U _ _-./0sshh!h h%'h$&**(ԩ)ՠ *Ee}%"!() !!% $ک&`& ȥ(&ȥ)&&i&'›6-AP6-@'6-36-@?6-Ef}@K6-@W6-@c6-@o6-@{6-@ 6-@6-@ 6-@46-A6-A Eg}6-AU6-A6-A6-AR6-AU'6-AV36-A#?6-A`K6-A0W6-A Eq}bŠbb렣b%DOS SYSb*)DUP SYSbSAUTORUN SYSb UTITLE b^MENU bxBASICOFF byBASICON b1zBOOTDISK b SCREAD b BINDEC bXDRV DOCb XDRVDEM b1MLTRACE b,4CRAB b;`ATOB b~ATOB DOCb "MICROPLD b\.LABELLER bDCOPY bHELP SYSbXDRV OBJbRAMDISK2DOCbRAMDISK2COMc6-Ao6-AP{6-AR6-A`6-A06-A`j 6-6 6-@2&6-A426-A6Er}>6-A7J6-A@V6-AAj@E:$_;,;,;,;,;,/6-I:,&@P6;,A67,. M@Es}_@@9L8 00-8 ASSEMBLER TO BASIC UTILITY`: -& INPUT FILE SPEC ===> ,6-Et}3:6-6# B:,!7<,4:6.# # B:,!7<,4:6.#  6.D1:67,.7<,0D6Eu}7,.>:,(6- 6-6(%?6-P:C:,', %C:,&$(%36-P:',?%&$: %!Ev}6-?:C:hhhLV,<,&:6-F:%,%F:%,$(5  -1  5 2 % <6Ew}7,.7<,- P; -' OUTPUT FILE SPEC ===> -6-4;6-6x# B:,!7<,4:6.# # BEx}:,!7<,4:6.#  6.D1:67,." 6-6-B:,&" A`%7,4/BASIC6-%67,.>:,IEy}"*7<,0D-E & ç I 4C:A 6-6-6Ez} - ? -+ STARTING LINE NUMBER ===> 16-8?6-6F+ )!B',-B " E{} F " - ,* -$ VARIABLE NAME ===> *6-@C (+B:,,-?  E|} C J- 6-6-(+7<,2A)7<,3Z,A@^2 -.  2 h& 6-B:E}},7<,0$&67%,.$|B:,"@A-B:,&==+7<,21)+7<,39*7<,2A,)7<,3Z,E~}A0  6.*&(+4REM1$)4REM2$)4REM3$,*  7<,4*B:,!A@B:, AQ 1 -E}-  1  - 7 -# DEST ADDRESS ===> )6-076-6@ (+B:,E},"B:,!*7<,4<6-@:7<,,%@:7<,,$@  (+B:,,6-A6  4R6-6 &7<,4$AE}0# 6-6-A:,6-6# APXH 6-6-B:, -D ! H b?-B:,6E})7<,10*7<,/9;6-%A:7<,,$? v;7<,1A*7<,/F76-%+@:7<,,&@U,$; 1 --  E} 1 6-$@ B )!BU5->  B < -E}6 " - < 4C:! 6-67<,4!6.7,++4REM1$)E}4REM2$)4REM3$A#@: "6(  DIM (B:,)06-%: A ` 0 REM h  hh`hE}!h h%h$h'h&()( $(0e(())Ņ(ńשд,, (α(0 ,()*-+*&+*e*+E}e+*-и*&**'**8$匑*ȥ%卑*ЋUU & RC=USR(PEEK(136)+PEEK(137)*256+5,ADR(>:,7:,), ,B:,) 6-% V6-C:,%B:,96-?:F:A6,%F:A7,$%:,$ A!0>G"6-&+B:=:,,%B:,$%@,G  (LEN()+1)=>:,RE}%!B:,A!\2 7<%,>:,6-%(6-%%2 A! 7,>:,6-% F:," 7  E}6-%#-%76-F:%,%F:%,$>* (,)=CHR$(F:,)5F:%,": >  "%  A"E} : 6-% A"D  BA % D$ 4REM2$E}A#. 4REM3$A$8 ww l0 REM h  hh`h!h $%!$( $!$e$$%%ōE}$ŌЩл$iԥ%i`B C 6-%C " RA=USR(PEEK(136)+PEEK(137)*256+5,)L   REM V  ` E}0 REM h  hh`h!h h'h&$%!$( $!$e$$%%ō$ŌЩе$8$i$%E}$&ЕБj   REM t @< %!RC=USR(PEEK(136)+PEEK(137)*256+5,,)@ $ 6-F:,- E} $ %+'  + %!  % /$  E}+6-6/ )%  ) /$  +6-6/ ,(  E} , *&  * 3(  /6-63 2'  E} .6-62 40 ( ׯ 4 .#  E}*6-6. 4) ! ҧ 06-64 )%  ) 5* " § E} ҧ 16-65 -"  Χ )6-6- -"  )6-6- +E}'  + 2'  ħ .6-62 *&  E}* /$  ħ +6-6/ &"  ˧ &  (  $6-E}6(  ($  (  '#  '  '#  ' E} +'  + '#  ' )%  ) E},(  Χ , '#  ' &"  & $ E} $ $  $ /$  +6-6/ -) ! E} - 0, $ 0 '#  ' -) E}! - *&  * -"  )6-6- E}('#  ' )'#  ' *"  " +2. & E} ɯ 2 ,($  ( -&"  & .)%  E} ) /#  # 0%!  % 1$  E} $ 2'#  ' 3$  $ P ! ZA* " E} - /4> BA D2:ATOB.SAV $ P ! ZA* " D? ASSEMBLER TO BASIC UTILITY PROGRAM ATOB VERSION 1.0 by Steve DerderiaI}n Introduction ATOB is used to merge an Assemblerprogram with a Basic program. Itstores programsI} in variable strings orremarks. It allows programs to bemoved from one location in memory toanother very quickly. It modI}ifiesBasic making it easy to do some trickswith strings. Required Equiptment 8K RAM for cassette.I} 16K RAM for diskette. Plus enough memory to contain the Assembler routine. Atari 410 Program Recorder or Atari 81I}0 Disk Drive. Atari Basic cartridge. Cassette Load & Run Instructions1) Insert the Atari Basic cartridge.2I}) Turn on the computer.3) Place the ATOB tape in the casette recorder.4) Rewind the tape completely.5) Type CI}LOAD, press RETURN and wait for the single tone.6) Press the play button on the recorder, then press RETURN.I}7) Type RUN then press RETURN. Disk Load & Run Instructions1) Turn on disk drive. Wait for the drive busy I}light to go out.2) Insert the ATOB diskette.3) Insert the Atari Basic cartridge.4) Turn on the computer.5) Type RI}UN "D:ATOB" and press RETURN. How To Use A TO BWrite a Basic program using the AtariBasic cartridge, or I}an equivelant Basicprogram. Write an assembler programusing the Atari Assembler Editor, orequivelant Assembler Editor. AI}ssemblethe program, and store it on disk orcassette. Example:ASM ,,#D:FILENAME.EXTASM ,,#C:When both programs are reaI}dy to bemerged follow the Load and Run instruc-tions for either Disk or Cassette. Theprogram will begin asking a series oI}fquestions. Your answers will cause theutility to do different things.( 1 ) INPUT FILE SPEC ===> Enter the specificatioI}n of any residentinput device. If the users assemblerroutine is on disk drive #1, 'D1:' isnot needed. Examples:D2:FILEI}NAME.EXTFILENAME.EXTC:After this entry is made, ATOB willimmediately load the users assemblerroutine.Several errI}ors are possible at thispoint. User input errors will causethe computer to beep once, display anerror message, and repeatI} the question.The only other possible error is thatthe computer does not have enough RAMto hold the users assembler routiI}ne.This is a terminal error. The computerwill beep twice, print an error mes-sage, and the program will terminate.I}( 2 ) OUTPUT FILE SPEC ===> Enter the specification of any residentoutput device. If the users assemblerroutine is toI} be placed on disk drive#1, 'D1:' is not needed. Examples:D2:FILENAME.EXTFILENAME.EXTD4:FILENAME.EXT/BASICFILENAME.EXTI}/BASICC:After this entry is made, ATOB willimmediately open the device unless C:is specified. Cassette will be openedlI}ater.The output from ATOB must manually bemerged with a Basic program by theuser. If the users Basic program re-sidesI} on disk, and is in list format,ATOB will automatically merge the prog-rams if '/BASIC' is placed after thefilename.SeveI}ral errors are possible at thispoint. User input errors will causethe computer to beep once, display anerror message, andI} repeat the question.Since the cassette recorder is consid-ered to be a resident Input/Output de-vice, no terminal errorsI} are possibleat this point.( 3 ) STARTING LINE NUMBER ===> Enter a number between 1 and 32700.Since ATOB is generatiI}ng Basic code, itmust assign line numbers to its output.ATOB will begin numbering its lineswith the number that is enteredI}, andthen increment the line numbers by one.The user must be sure that the linenumbers that ATOB uses do not conflictwithI} the line numbers that are alreadyused in the Basic program. If they doconflict, some lines of code will belost.A user I}input error at this point willcause the computer to beep once, dis-play an error message, and repeat thequestion.( 4 ) VAI}RIABLE NAME ===> Several answers are possible at thispoint.STRING VARIABLEIf the users assembler routine is to bestorI}ed in a string variable, enter avalid string variable name. The dollarsign ($) at the end of the variablename will be genI}erated if it is notentered.The ATOB program will scan the usersassembler routine for "special" charac-ters, $9B (end-of-I}line) and $22 (doublequote). It will note the location ofthese characters, and replace them witha $20 (space). These chaI}racters willconflict with the entering process ofBasic statements. Now a series ofassignment statments will be generated.I}The number of statements will depend onthe length of the users assembler rou-tine, and the number of "special" char-acterI}s that were found.The following is an example of the pos-sible output:100 ROUTINE$="ASSEMBLER ROUTINE FRAGMENT#1 * * * *I} * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *"101 ROUTINE$(LEN(ROUTINE$)+1)="ASSEMBLERFRAGMENT #2* * I}* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *"102 ROUTINE$(10,10)=CHR$(34):ROUTINE$(25,25)=CHR$(155)REMAI}RKSIf the users assembler routine is lessthan 251 bytes long, and does not con-tain any $9B (EOL) characters it maybe stI}ored in a REM.REM1Enter 'REM1' to generate only the re-mark containing the users assemblerprogram. Note - the user mustI} havesome way of determining the address ofthe remark. REM1 will generate:100 REM *** USERS ASSEMBLER ROUTINE ***RI}EM2 - used for relocatable routinesSince it is difficult to determine theaddress of a program stored in a REM,ATOB will pI}rovide an assembler routineto find the address of the users as-sembler routine. Entering 'REM2' willcause ATOB to generatI}e its assemblerroutine on line 0, a call to its rou-tine (which will store the address inthe variable RA), and the REM conI}tain-ing the users routine. The user canthen call his routine using RA for theaddress.ATOB's routine should be called wI}iththe following Basic statement:RA=USR(PEEK(136)+PEEK(137)*256+5, LINENO)LINENO = The Basic line number contain-I}ing the REM, and users assembler rou-tine.On return RA will contain a return codeor the address of the users routine.If I}RA is < 180 then the functions ofthis routine were not implemented. Theusers Basic program should be able tohandle this cI}ondition.176, $B0 = An invalid number of parame-ters was passed to the routine.179, $B3 = The line number that wassearcI}hed for was not found.Any other number = is the address ofthe users routine.REM2 will generate:0 REM *** ATOB's FINDI} ROUTINE ***100 REM *** USER's ROUTINE ***101 RA=USR(PEEK(136)+PEEK(137)*256+5,100)The users Basic program shoI}uld test RAto be sure that it isn't equal to 176or 179. Then the users routine may becalled with the following Basic statI}e-ment.9999 X=USR(RA,PARM1,PARM2,...,PARMn)REM3 - for non-relocatable routinesIt is also difficult to move a progrI}amstored in a REM. ATOB will provide anassembler routine to move the usersassembler routine. Entering 'REM3'will cause I}ATOB to generate itsassembler routine on line 0, a call toits routine, and the REM containing theusers routine. The user I}can then callhis routine at a fixed address.ATOB's routine should be called withthe following Basic statement:RC=USR(PEI}EK(136)+PEEK(137)*256+5, LINENO, DESTAD)LINENO = The Basic line number contain-ing the REM, and users assemI}bler rou-tine.DESTAD = The decimal address, uponwhich the users assembler routine is tobegin.On return, RC will contaiI}n a returncode. If RC is not equal to 1. Thefunctions of this routine were notimplemented. The users Basic programshouI}ld be able to handle this condi-tion.1, $01 = Normal routine termination.176, $B0 = An invalid number of parame-ters I}was passed to the routine.179, $B3 = The line number that wassearched for was not found.180, $B4 = There was no data to I}move.If the users routine should begin onpage 6 REM3, ATOB will generate:0 REM *** ATOB's FIND ROUTINE ***100 REM *I}** USER's ROUTINE ***101 RC=USR(PEEK(136)+PEEK(137)*256+5,100,1536)The users Basic program should test RCto be sI}ure that it is equal to 1. Thenthe users routine may be called withthe following Basic statement:9999 X=USR(1536,PARM1,PI}ARM2,...,PARMn)Several errors are possible at thispoint. If a user input error is de-tected, the computer will beep once,I}print an error message, and ask againfor the variable name. Any other erroris considered a terminal error. Thiswill cauI}se the computer to beep twice,print an error message, and terminatethe program.( 5 ) DEST ADDRESS ===> Now ATI}OB needs to know the address thatthe users routine is to begin on. If'REM1' or 'REM2' was entered in theprevious step, anI}ything entered herewill be ignored.REntering the letter 'R' tells ATOB thatthe users routine is relocatable, andmay reI}side wherever Basic places it.DECIMAL ADDRESSEnter any number between 0, and 65535.Example:1536HEX ADDRESSThe addreI}ss will be interpreted as ahexidecimal number if it is predeededby a dollar sign ($). Enter any numberbetween $0 and $FFFI}F. Example:$600RETURNSimply pressing the RETURN key tellsATOB to look at the users assemblerroutine to determine theI} destinationaddress. If ATOB cannot find anaddress in the routine, $600 is auto-matically used. IF REM3 WAS ENTERED I}IN THE PREVIOUS STEPThe number entered by the user (orfound in the assembler routine) will beconverted toI} decimal, and used as thethird entry in the USR statement. REM3is explained in the previous section.If 'R' was entered, $I}600 will automa-tically be used.IF A VALID VARIABLE NAME WAS ENTERED IN THE PREVIOUS STEPIf 'R' is I}entered by the user, ATOBwill generate a DIM statement, and aseries of assignment statementscontaining the users assemblerI} routine.Example:100 DIM ASMRTN$(200)101 ROUTINE$="ASSEMBLER ROUTINE FRAGMENT#1 * * * * * * * * * * * * * * * * * * * * *I} * * * * * * * * * * * * * * * * *"102 ROUTINE$(LEN(ROUTINE$)+1)="ASSEMBLERFRAGMENT #2* * * * * * * * * * * * * * * * * * * I}* * * * * * * * * * * * * * *"103 ROUTINE$(10,10)=CHR$(34):ROUTINE$(25,25)=CHR$(155)If an address or null was entered, ATI}OBwill generate an assembler routine online 0, a call to its routine, and aseries of assignment statementscontaining the I}users assembler program.This routine is extremely powerful. Itallows a block of memory to be accessedthrough a string vaI}riable name. It re-quires the name of a string variable, adecimal address of memory, and thenumber of bytes in the block.I} Itshould be called with the followingBasic statememt:RC=USR(PEEK(136)+PEEK(137)*256+5, ADR("VARNAM"),DEST,LEN)I}ADR("VARNAM") = The address of astring containing the name of the var-iable. The last character in thestring MUST be I}an inverse dollar sign().DEST = The address upon which the blockof memory is to begin.LEN = The size (number of bytes)I} in theblock.Once this routine has been called, theblock of memory may be accessed byassigning a string of characters toI} thevariable. A DIM statement is notneeded, because ATOB's routine does theDIM for you. Example:100 LET BLOCK$="ANY ATI}ASCII CHARACTERS"If page 6 were to be defined as a 256byte block, and assigned the stringvariable name PAGE6$, the followiJ}ngcall to this routine should be made:RC=USR(PEEK(136)+PEEK(137)*256+5, ADR("PAGE6"),1536,256)On return to BasicJ}, RC will equal areturn code. If RC is not equal to 1,then the functions of the routine werenot implemented. The users BJ}asicprogram should take this fact intoaccount.1 $01 - Normal program termination.176 $B0 - An invalid number of para-J} meters was passed to the program.177 $B1 - The variable name string passed to the routine could not be founJ}d in the Basic program.178 $B2 - This is a weird error. It should never occur. It means that the variable numbeJ}r from the var- iable name table does not match the variable number in the vari- able value table. J} WRAP-UPIf cassette was specified in the outputfile specification, the cassette filewill now be opened. ATJ}OB will ask youto wait while it processes the usersassembler routine.Merge the Basic program with the outputfrom ATOB (sJ}ee the section on the out-put file specification), and the Basicprogram is ready to run. NOTESTheJ } users Basic program may requiremore than 1 assembler routine. If itdoes, do not mix REM1, REM2, REM3, andvariable stringJ }s in the same program.This could cause trouble, because theroutine that ATOB stored on Basic line0 may be changed. Try toJ } use variablestrings, since this allows the mostflexibility.Even though you were allowed to specifythe destination addreJ }ss of the usersassembler routine, ATOB does not freethe ram for your use. Be sure that thearea of ram you are using is noJ }t beingused by Basic, or the Operating System.Let's say that you have two or moreprograms that must be on page 6 to run.J}Obviously, all of the programs cannotreside in the same place in memory, atthe same time. Use ATOB's assemblerroutine forJ} string variables to accesspage 6 through the variable namePAGE6$. Then just before a routine isneeded, move it to page 6J} with anassignment statement.ATOB's other two assembler routines(for REM2, and REM3) search for a Basicline number. TheJ}y do not verify thatthe line that is found contains a REMstatement. This will not cause a prob-lem if ATOBs Basic code inJ} unaltered bythe user. ERROR MESSAGESATOB will generate two classes of errormessages, warning messages, andJ} termi-nal messages. Warning messages willbeep once, print the message, and thenrepeat the prompt for input. TerminalmeJ}ssages will beep twice, print themessage, and terminate the program.Terminal errors could be difficult tocorrect. They maJ}y require major pro-gram modifications. ROUTINE RETURN CODESThe assembler routines that ATOB gen-erates,J} and places in your Basic pro-gram will provide return codes to showthat they have terminated normally, orexplain what typJ}e of error was encount-ered. The following is an explainationof the return codes.$01 1 - Normal program termination$J}B0 176 - An invalid number of parameters was passed to the routine. The routines functions werJ}e not implemented.$B1 177 - The variable name string passed to the routine could not be founJ}d in the Basic program. The routines functions were not implemented.178 $B2 - This is a weiJ}rd error. It should never occur. It means that the variable number from the variable name tabJ}le does not match the variable number in the variable value table. The routines functions wereJ} not implemented.$B3 179 - The line number that was searched for was not found. The routineJ}s functions were not implemented.$B4 180 - There was no data to move. The routines functions were J} not implemented.There is one exception to these rules.The routine generated by REM2 hasnormally terminated if the nuJ }mberreturned by the routine is less than179.ATOB's routines will always terminatenormally if the code that it generatesJ!}is unchanged by the user.routines will always terminatenormally if the code that it generatesH7\LDFILECCCCd##**************N#}***************n##* *x##* MICRO-PAINTER* *##* PICTURE LOADER *##N$}* *##* BY: TOM HUDSON *##* *##* * TM OF DATASOFTN%}, INC. *##* *##******************************** READ LOADER DATA ***N&}8;A,$-@A("467,.>:,8  *** INPUT FILENAME AND *** *** LOAD PICTURE FROM ***N'} *** DISK ***";@,,c +- ENTER MICROPAINTER FILENAME1; AF@cN(}@@6 +@$6-?:C:,,@@AJr)@)@*)@7)@N)}B@NAZAfA rAT F:B2y,@A@^ Ahr*** PN*}ICTURE LOAD DATA ***|ZZ216,104,173,48,2,24,105,3,133,203,173,49,2,105,0,133,204,160,0,177,203,201,79,208,21]]169N+},78,145,203,165,203,24,105,2,133,203,165,204,105,0,133,204,169,0,240,14,201,15,208,6]]169,14,145,203,208,4,201,65,240,17,N,}165,203,24,105,1,133,203,165,204,105,0,133,204,169,0VV240,198,162,16,169,7,157,66,3,169,0,157,72,3,169,30,157,73,3,165,88N-},157,68,3,165==89,157,69,3,32,86,228,189,67,3,133,212,169,0,133,213,96 D:MICROPLD,157,72,3,169,30,157,73,3,165,88L]stQ-c-L1L2L3L4L5L6L7L8ABCNFGLINELINBLANKLICENTETIMEPEMLINECNBSCRPRNTSIZTYPCUSTOAUR/}TD<Zx( ( @( h  R0}BBBR1} !"#$%Bh%%*******************************%%* ULTIMATE DISK LABELER R2}V.2.3 *%%* by Peter J. Fazio *%%* June 18, 1984 *%%*******************************%%*R3} The B.A.S.I.C. Bulletin *%%* Vol.II No.3 May/June 1984 *%%*******************************%%* Program in thR4}e Public Domain* %%******************************* 11;@0,;@0,;@0,;@0, %%6-F:A`,%AVR5}$F:Aa,11;@0,;@0,;@0,;@0,GG;@@,;@@,;@@,;@&,;@,R6};@,W&;@0,;@0,;@0,767@,. H67@0,. W67@,.36-B6-B'R7}6-B36-##@@K:- B -@@P:) B@R8}@) B*@A'B7tA*$*"@*(@>:@',@ 4"@*"@R9}4(@>:@',E"(@$#K +'0@1 @(K(Are you using:($R:}($( A. 15/16 inch labels2%(%( B. 1-7/16 inch labels<+(+(Type the letter of your choice:A)@R;}F-"@:A,)"@:a,#6-@- B!P-"@:B,)"@:b,#6-@ - B!Z @en; +'0@R<}1 @(; @0oG @)!@ G() You Select a SIZE First!pm @R=})!@ +AR@.(1(V( Press Any Key to Continue.c)@m Bs; +'0@R>}1 @(; @0tM+(#Prepare Printer & Align Labels..(M(Press any key to begin...u)@vR?} (}x(LINE 1: )@'"@:S,)"@:s,6.' A1"@:T,)"@:t,#6-@' 1 R@}A%"@:W,)"@:w, % A Ap, 6 6.;"@ A@ (}J(LINE 2:TRA} ^)@h'"@:S,)"@:s,6.' Am"@ Apn1"@:T,)"@:t,#6-@' 1RB} Ar%"@:W,)"@:w, % A| AP  6."@ A (}(LINE 3:RC} )@'"@:S,)"@:s,6.' A"@ Ap1"@:T,)"@:t,#6-@' RD}1 A%"@:W,)"@:w, % A AP  6."@ A (}(LINE 4:RE} &)@0'"@:S,)"@:s,6.' A5"@ Ap61"@:T,)"@:t,#6-@' RF}1 A:%"@:W,)"@:w, % AD APX b 6.g"@ Al (}v(LINE 5:RG} )@'"@:S,)"@:s,6.' A"@ Ap1"@:T,)"@:t,#6-@' RH}1 A%"@:W,)"@:w, % A AP  6."@ A"@ ARI} (}(LINE 6: )@'"@:S,)"@:s,6.' A"@ Ap1"@:RJ}T,)"@:t,#6-@' 1 A%"@:W,)"@:w, % A  AP  * 6./"@ ARK}4 (}>(LINE 7:H R)@\'"@:S,)"@:s,6.' A a"@ Apb1"@:RL}T,)"@:t,#6-@' 1 A f%"@:W,)"@:w, % A p AP  6."@ ARM} (}(LINE 8: )@'"@:S,)"@:s,6.' A"@ A p1"@:RN}T,)"@:t,#6-@' 1 A%"@:W,)"@:w, % A A P  6. (}RO}(Label as entered:(5 (1. (2. !(3. +(4. 5(5. "@ AP! (6. (7. RP}!(8. .(.(#==================================="("(Is this correct (Y/N)?)@!"@:Y,)"@:RQ}y,! A  !"@:N,)"@:n,! A Apx((Start over (Y/N)?)@9"@:Y,)"@:RR}y,#6-/6-9 A!"@:N,)"@:n,! AP A/(#(Enter line # to change:/6-@RS})@*"@:1,6- (}* A "@:2,(} A0"@:3,(} A0RT}"@:4,(} A0"@:5,(} A0"@ A "@:6,(} A0"@:7RU},(} A0"@:8,(} A 0 A`PRINT ROUTINE (}9 A 0((5(Enter #RV} of labels to print: 9? B(2(Hit any key to print labels.?)@((Printing labels...RW}-@ D(@(@*(@7(@D(@$"@(@$ A  5(@RX}(@*(@5(@* 42 (} (2( Print more of same labels (Y/N)?9)@>!"@RY}:Y,)"@:y,! A H9"@:N,)"@:n,#6-/6-9 B!R A!''LINE INPUT ROUTINERZ}'--(%}Enter text of line: (30 char max.) '*(*( ' ( ($<(+ 6-B:,6-@0R[}&+6-P:'@,F( 6.67%@,.P( 6. $)!(!( Press to skip),@,( Press R\} for Title)( Press for Text")((===>,)$ NM + @(10@M(SelecR]}t your printer:*N!(!( A.EPSON RX-Series4N( EPSON FX-Series>N( EPSON MX-SeriesHN!!( R^}(with Graftrax+)RN( GEMINI 10X\N++(# or any Graftrax+ compatible`N!(!( B.EPSON MX-SeriesaN""(R_} (with Graftrax-80bN!!( or NO Graftrax)fN#(#( C.Any other printerpN+(+(Type the letter of yR`}our choice:uN)@zNG"@:A,)"@:a,#6-@=(@>:@',@G B!|NG"@:B,)"@:b,#6Ra}-@=(@>:@',@G B!N-"@:C,)"@:c,#6-- B!N BN +'0@Rb}1 @(G"@)"@{(.Do you want Emphasized print (Y/N)=> BN}ARRc}@/0@}(I You select EPSON printers to use this feature!N-( (-(Rd} Press Any Key to Continue.N,)@"AR, B!N)@N-"@:Y,)"@:y,#6-@Re}- B!NV"@:N,)"@:n,#6-L(@>:@',F>:@',HV B!N BHq @Rf})!@ #+=0@G @(YAR@(+ You choose a Label Size First!RqRg}] @)!@ (("(F( Press Any Key to ContinueS)@] B0u/"@*"@%6-@Rh}/ B1u/"@*"@ %6-@/ B2u/"@*"@ %6-@/ B3u/"@*"Ri}@%6-@/ B5u/"*"@%6-@/ B6u/"*"@ %6-@ / B7uRj} B8uA7(@>:@',F>:@',A>:@,A B:@',F>:@',3>:@$Rk},D"@_(@>:@',G?u(@Cu6.D :*.*Du^ +'0@1 @(Rl}[(%Prepare Printer & Align Labels.^(Nu)&(Insert Disk into proper drive.)(Xue(Press any key to begin."(-@Rm}M@@K:Z)@e@buc(}Enter Drive # ==>))@?!@H* @SRn}Y67@<@,.>:,c BTcu BPfu86-@(>:,.(Contents of Disk:8 B`gu B@luvRo}u Buu1(-("Enter Disk name or to exit 1u 4 Bu2"(@(6-@Rp}2 B@u&6-@&(@>:@,u<"@2(@>:@,>:@,< B@u@((@>Rq}:@',S>:,@(@>:@,u+@+@@u B@u BRr}@u"@ Bu""6. " B u B@u B u 6.Rs}u 6.u"@ Bv 6. v. (@   .6-%@v"*46.vD Rt}4-@&%(@) 4@:(}D B v?"@*"+&@,((@3(@?6-Ru}#v?"@*"+&@,((@3(@?6-%v4"*"+&@,((@46-*v BRv}P4v= B=F:A,"A8)F:A,"A`Br>vO'6-F:A,%+F:A,$AV,L(ERROR #F:ARw}, AT LINE O&@vL (}BAD DRIVE # !!4-@A8 B BL BP\v( av 4@Rx} B fv 4@ B kv BPpv"("(Print Label (Y/N)? ==>zv)@v4"@:Y,)"Ry}@:y,#6-*(>:,4 B`v("@:N,)"@:n,(>:,( Bv B0v11((}Another Directory LabelRz} (Y/N)? ==>v)@v."@:Y,)"@:y,$(}. B0v!"@:N,)"@:n,! BPv Bv4R{}"@)"@4(@>:@',@v4"@*"@4(@>:@',Ev4"@*"@R|}4(@>:@',Ev(@vy B!}} +@'0@9AR@?(I R}}@([-@}(@PRINTER ON-LINE! }}(@.(@ PREPARE PRINTER9(@S(@R~} THEN^(@}(@ PRESS ANY KEY}%)@@% @%d}Q6-++R}AY=AR@G B!Q B!e} 6-?:C: h@ҩR`,, $f}C B!A1AR}ARCA Ag}I-@@&( THE 8-@$@I( DISK LABELERi}-@@/(R}1 SELECT PRINTER TYPEA-@%@Y(2 SELECT LABEL SIZEk-@ @(3 SELECT PRINT STYLE (EPSON)j}c-@3R}@ 4(4 PRINT CUSTOM TEXT LABELSF-@@c(5 PRINT DIRECTORY LABELSk}I-@@%( 6 GOTO MENUR}7AY@4IAdAUl}JA)@*6-&@H@ @)!@J B!m}%AYR} B!% B! %n}@@ Bo}@@ @5p}@@ Bq}@R}@ Ar}@@ Bs}.+@@# B!0.%D:MENUt}u}S%@@R}+%@@?%@$@S%@%@v})-@@"%%A0) w}96-C:,HHR} ԍЩ% "ԩhh@,PAP:'AV,oA&F:A,$AV%@1@4x}7 #B!!!R}-@%"3A6%7 y}''0,194,0,4,0,98,0,64,0,20,0,84,0,0z}BBA$} D:LABELLER}R@%"3A6%7 y}''0,194,0,4,0,98,0,64,0,20,0,84,0,0z}BBA$} D:LABELLEP@@ KL:@LLL ؠ0 @)L@ @`i@i@i@i@$i @%i @CV}{@ $@L@}DCOPY.COM Version 1.01@ $@L@(1985) by Ralph E. Walden @  V}A $@@L#EC - Copy a single fileD - DirectoryE - Erase a fileF - Format a diskL - Lock a fileM - Multiple V}file copyP - Print directoryQ - Quit (exit to DOS)R - Rename a fileU - Unlock a fileW - Write DOS.SYSBreak key abortV}Non-existant deviceInvalid commandDevice doesn't respondDevice not availableWrite protected diskDrive number errorNot eV}nough file buffersDisk is fullSystem errorFile number mismatchFilename errorFile lockedDirectory fullFile not foundD1V}:*.*P:}Put printer on-line and press a key.Press break key to abort.D1:DOS.SYSˠˠŠŠV}ԠNo files were found!Put source in drive #1 and press a key.Put destination in drive #1 and press a key.H G0V}tuhB VLCL#E DCL@ѢB $@LDD $@LD***38=BPUZ_mrw|LDآV}A $@sA $@jA $@a B $@X#B $@O8B $@FMB $@=`B $@4xB $@+B $@"B $@B $@B $@¢B $@ܢDV} $@LD***LJ /JLDΦνɛ @E $@LE >>> Φν`ɛ @`0 B V7E $@L@ECommand?* @LC @0V}L @@C $@#LCU @6C $@$LCR @QC $@ LCE @HC $@!LCF @[C $@LCQ @C`DV}CL^JP I@CL^JW @*C $@ @zLCC ML&HL#E"F $@L/FCopy from? G ILIHDF $@LNFCopy to?V} J @`DEIB VLC8aC FL#E D' @? @ @* @LCY2y.` @C#DV}C{C $@* @LCp0DEJB VLC80x1OytOur0 VLC`0CgC#V}`DaCC $@* @LC`: `DEJB V`DEI B V䤿 D`xhyi bdOeV} V DLGɈLFLJ J @DEIB VLCD:1`0H $@LFHMultiple copy frV}om? GSH $@L_HDevice to?@DEIB VLC@ɛQ@DA: A:B8ACCPDV}EJB VLCʩȩKɢP`DEIB V0a`0L]I:`  .Ȣ ` ȠV}-CLHiȐLH J eC $@L#EȩKɠș`@` FiȐL#Eɛ * ?V}``BHILV JB $@* @LC@DBEJB V0`DEI B V`i0 B VLJ`ԩV}?J $@LGJError #L @ @C`GHFH`hJ $@LvJ٠B G0DEJB VLC0 IV}Kɛ JJ?C,U. @թ* @LCLJLJ SJLJUЭ JJ JL#EJB VLC0 IT\`gyCPYXLASNETHIDEdY +Z}AR@+6-@=@@O@@9Y Ai"@A`nAdAUs F:Z}Ad,AUA5x* -6-%@# @ *(}.!@( "!@.6- AZ}66-F:Ad,2"@)"A4)"@R6 "A8AP - Ae-@@Z}P:6-@6-@ 06-@6-&@0 AI-@@#I(>:AS,#Z}ҠӠԠġD-@A % B0@: AuD AL"!-@Z}@#I("Խ̭кԽٺԽˠL$$*** FRAME1 ***(>:A%,11(&THE PAGE 6 LIBRARY - Z}DISK #62 11(& 11(&UTILITIES 6 11(Z}& (11(&ήͯƮ These files 11(&can only be used bZ}y XL/XE owners, and 11(&are used to turn BASIC on and off from11(&DOS, using option L. (Z}11(& - Creates boot disks from 11(&cassette or disk files. (11(& Z}- Routine to demonstrate how to 11(&use the whole screen for input. (11(& - A useful Binary-DZ}ecimal and 11(&Decimal-Binary converter. ("('(,11(& moZ}re... 1(6?6-A 6-A'6-A36-@!?6-@6; Au A@*** FRAME2 ***EZ}(>:A%,H11(& - An 80 column device. Please J11(&read the XDRV.DOC file carefully. ThisO11(&iZ}s an excellent utility if the T11(&instructions are followed properly. Y(^11(&˲ - This is fZ}or 130XE owners c11(&only! The Ramdisk will be installed ath11(&power up and will remain resident m11(Z}&until power down. All activity with r11(&the Ramdisk is called by using the w11(&device name 'D4:'. Use DOZ}S option C to|11(© RAMDISK2.DOC to E: or printer (11(& - Single steps through a ML 11(Z}&program showing the status of all the 11(&important registers. (11(& - Cross rZ}eferences a BASIC 11(&program, showing variables and the 11(&lines they are in. Z}(11(& more... (?6-AU6-A'6-A036-@!?6-@6Z} Au A*** FRAME3 ***(>:A%,11(& - For more information, use DOS 11(&optioZ}n C to copy ATOB.DOC to the 11(&screen or printer. (11(& - A routine to Z}load pictures 11(&that have been saved in Micro-Painter 11(&format. (11Z}(& - Simple to use, but one of 11(&the most advanced labelling programs 11(&around. Z} ( 11(& - Use DOS option L to load this 11(&unique file copier that has integral Z}11(&DOS functions. (!(&(+11(& End... 0Z}(5(:(?(D?6-A6-A%'6-Ae36-@?6-@5I Au ANW(>:A%Z},"AdAU4AR?%D:MENUWTHIS IS THE LAST LINE D:HELP.SYS Au ANW(>:A%X^0 hexidecimal. Exit if not. 3. Copy the relocatable driver code to the end of the FMS, and set the drive bit in DRVb}BYT for drive 4. 4. Replace the FMS calls to SIO and the OS Resident Disk Handler with calls to the relocated codeb}. 5. If the FMS was the standard Version 2, kill the 'write DOS' function by pointing it to the Invalid Devib}ce Command error return. 6. Add the length of the driver code to SASA, the FMS start of allocation address wb}ord. 7. Reinitialize the FMS. 8. If the Extra RAM is not already formatted as Ramdisk, clear it to zeroes b}and write the VTOC for the 503 available sectors.NOTES: A reboot without turning off the computer does not destroy tb}he Ramdisk contents. Once RAMDISK2 has set up D4 in the Extra Ram it may be used like any other drive interfaced through b}DOS.mdisk contents. Once RAMDISK2 has set up D4 in the Extra Ram it may be used like any other drive interfaced through `88LY  `  `8 4 4* 5xӪ)5H48jJ5j4230f}hHӱ4ӑ20BhӪHhHӱ2ӑ4) #rr˰ rrrrrh) өX`LSf}89`Y6/Ӫ)兀ӭ@@@I@@I@(L9SQx)ӭ7S'8f} :;7;8 өXL9 өX` :;;L   cɩ!hɩdidiiii if}  i  9:x)H Ӣrrrhjө@3223iH) hh) өr3f}2ȩ2ȑ22ȑ2 2ȑ2J272ȩ2 өX`8*   2 348504235f}4242 i:;; i;`82ȩ2 өX`8*   2 348504235d- - Use DOS option L to load this 11(&unique file copier that has integral 11(&DOS functions. } (!(&(+11(& End... 0(5(:(?(D?6-A}