@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? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `8  ɐ     `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.D8:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D8:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V 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 ALLOWED697 FREE SECTORS COPYING---D8:COPY32.COMl# 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$d0L 2L>%L-Lx%Lo(L(L(L(L4)L2)L%L%L%L%L%LU,L`,L(L)L,L(L+L$(L".L,L(L'L'L'Lm'Lv'L,L,L'L(L'L'L.L.LkT}.L.L.L.L.L.L.L#*L.*L&L&L.&L=&LF&LQ&Lk&Lr&L{&L&L&L&L)L)L)L)L,.L)L:'L'L&LL'L['LR'L*L*L.L&L&L&La'LB(LR(LU}.L(L/L9/L6/L/L/L/L/L0L0L+0LC0L/L^(Lj(L)'L@'Lo/Lr/LO/L%L'L%L% -膚 ɩҍD҅ 2 22V}2 a(2222 ` -Lq -l ԤՄԅ`ȱ`ȱ`ȥ`W}ԑȥՑ`ԤՄ`ԤԅդՅ` '0=D '04.5 '0.( '0 ' ' 8`ԅ`X} & & & &ѐ & &ʥ %аЪ %Зьɛ &0 &0 `Y}ԥ`Ɠƒ` % &LS* %LS* %օ0֥0 S*` %eԥe` %La* % % o*L% %Lo* % &L|* %L|* %Z}L% % Ʌ` BLV䅆L' %ԅ`TU HH 'hhL, B VԩL%p v'P[}KJBDEL, &fL=) %ԅ`Ę eĘ +L4( % & %` %Ԅԅ`\} -``&eԅԥeՅ`L% o(ԨL%Ԅ & %eԥe` Ԅ &ɛ +0` d) ذI]} ( 8ԅԩՅL%L,ȹɛ꩛` d)f & 8fԆՅɛ摥0L^}?)$0`2 2L,(,ɛM(M( )ɛ )򩀅` %ԍ`ԄL%_}ԄL%ɛԆL% &󅐩f =) ؐL(L4,ԅԥՅL%82ԭ 2L%ԤՄԅե``}8ե`eեe` B* K+fL% B* +fL%8ԨՄԅL% & B*ԥՄԩՅօפԥFf G+a}ԥ K+ԅՅԥզЦ`ԅՅʩ0B+=+ B+ 08f$˹ `' d b}+1ԦԄզՄFԐ eਊe&Lh+Ԇ`hh L, +Ff&֐ݥ ԆՅԠ&&&8થc}օԈ`քע +Ե 8`晄 ,L,`GHFH` U,0ɛȄ ؐL,HI h 8d}ԅԩՅL%?S, ,򦅩DEBHIL,ɛ +` +` %HI BL,e}՝HIB VL,L%B Vú.hh -l. -0dd-8/ i - 0-- ,f}@ . ,... + x' $(.Ԏ.8ե ".LO-- , `,ɛD(C` ذ -L- -L 2 -- ,g}L- - -L-l lp '8`ERROR- ?Run address> BASIC exitTrace:P8Յթԅ` ,.L, .-h}ȘH *h00,)` & ҅ԭ ) |*օեׅ` L,0թԅթᨊઐi}```Յ`8Յթԅ`0 ԩ`ԅ`` ' %`BԝK)I JD/ELVS:)H)h yj}` & % & %TԅUՅV`&B ,NLսM` & %ԝL՝MN%BL, & /` BHIL, & /`k}B JKL, %ԅUՅV & %ԅT`)ҩҊ H) hҘ` %)xԩL% %))Lc&LZ& %l})pԩL% %)|LZ&Lc& V0L-$2~2'@'@DDhDDL 2 $ppҠD Z$1@ H$ ?$ $ <m}G@vD $K@D $5@ !$PD '$5@ !$R22D '$N@hD $Z@D $a@n} !$ $D $ h9 Z$ ?$ Z$c@ H$ Z$ -$ᢐD <$2}3թ@D $L*3Lo}3ԩթ@D $LY3L3ԩթ@D $~33L3@wD $L3 h9p}L2 h9 Z$ ?$ Z$@ H$ Z$ -$ᢐD <$ԩթ@D $L43{4L%6ԩթ@q}D $L/4L%6ԩթ@D $Ls4@D $Ly4 h9L3 h9|44 Z$ ?$ Z$@ r}H$ Z$ -$ᢐD <$ԩթڅ@D $L4LV5ppҠDԩթ@4z5D s}$L5LV5ԩթ܅@D $LP5/@ !$PD '$LV5 h9Ly4 h9 Z$ ?$ Z$ޠ@ H$ Z$ -${55t}ᢐD <$ԩթڅ@D $L5L%6ԩթ@D $L5L%6ԩթ@u}5y6D $L6/@ !$RD '$L%6 h9LV5 h9 Z$ ?$ Z$A H$ Z$ -$ hD <$ԩթ @hv}D $z66L6N@hD $L> h9 Z$ ?$ Z$A H$ ?$ Z$ ?$ Z$5A H$ ?$Щ r$LD '$LD !$C@w} $L6L7LD6x7 !$?@ $L7L 2L6 Z$1@ H$ ?$8 %vD{D $hD~D $ Z$x}{D f$ Q$ Z$y77ᢌD f$ Q$ppҠD =ԩթ@D $L8 Z$1@ y}H$ ?$ Z$ ?$ Z$ ?$ Z$ ?$ Z$Q7x8A H$ ?$ Z$ `$FD '$ԩթjAD $L?8 ~; Z$FD !$ z}$ᢀ K$FD !$a@ $L8 Z$y88ᢧD K$ ?$L8é r$HD '$RHD !$pA $L8 Z$ ?$ Z{}$rA H$ ?$ Z$ ?$L9 Z$ ?$ Z$A H$HD !$ E$8x9A H$ ?$ Z$ T$ Z$ T$0 Z$ T$ppҠD Z$A H$ ?$Щ|} r$LD '$LD !$C@ $L_9Lb9L69L 2L$5@ !$OA $$ $y99 Z$ؠA H$ ?$A !$B $$ $ Z$wD K$ ?$}}ԩթjAD $L9A !$A@ $$ $ Z$B H$9x: ?$ԩթ@D $LH:~}A !$A@ $$ $ Z$ B H$ ?$PD !$5@ $L:A !$B $$ $ Z$By:: H$ ?$PD !$/@ $L:A !$}B $$ $ Z$B H$ ?$RD !$5@ $L:A !$'B $$ $ Z$)B H$ ?$RD !$/@:v; $L$;A !$'B $$ $} Z$,B H$ ?$A !$'@ $$ $ Z$0B H$ ?$A !$'@ $$ $ Z$ hD K$ ?$5@ !$E@w;; $$ $`T r$JD '$}^D !$3@ $L; Z$ ?$ Z$ $L> Z$A@ !$ $ᢀ K$RD !$/@ $L> Z$)D !$ $ᢀ K$-D !$ $}ᢀ K$/D !$n>> $ᢀ K$` Z$1@ H$ ?$/@ !$^D '$8 %vDD $0 Z$ T$ R Z$1@} H$ ?$0 Z$ᢓD f$>l? Q$ppҠD Z$3D H$vD K$7D H$ ?$ Z$ ?$? %/@ !$ND '$0 Z$ }`$`D '$ Z$`D !$ $ᢀm?? K$`D !$a@ $L? Z$ᢧD K$ ?$ ~;ND $BD $LE?é r$HD }'$pA $L?L83@ !$^D '$ ~;R?b@ Z$ ?$0 Z$ T$5@ !$^D '$ Z$1@ H$ ?$ Terminate when condition met.o30WHILE WHILE Start a WHILE }-WEND loop to end when condition met.o30WEND WEND Terminate a WHILE-END loop.o30ELSE ELSE } Optional extension for IF. The IF condition must not be followed by a "THEN", but terminated by end-of-line or }colon.o30ENDIF ENDIF Ends an IF-ELSE-ENDIF or IF-ELSE condition. Note that this allows an IF condition t }o span more than one BASIC line, provided the "IF" statement is structured as shown in Note 4.o30DO DO } Starts an "infinite" DO loop.o30LOOP LOOP Cycle back to the start of a DO loop.o30EXIT EXIT } Exit a DO-LOOP loop.o30PROC PROC name Start definition of procedure.o30ENDPROC ENDPROC } End definition of procedure.o30EXEC EXEC name Execute procedure name.General Programming }o30PAUSE PAUSE n Pause processing for n/50 seconds.o30RENUM RENUM n,i,j Renumber the program st }arting at line n,first number is i, increment is j. This function will handle GOTOs, TRAPs, and all other line referen }ces except those which involve variables or computed values.o30DEL DEL n,i Delete lines n-i.o30DUMP } DUMP Display all variables and values. For numeric arrays, the numbers are the DIMed values plus one. For }strings, the first number is the current LENgth of it and the second number is the DIMed size of it. DUMP also lists procedu }re names and labels with their line values.o30 DUMP name DUMP to device name, such as "P:" or "D:DUMP. }DAT".o30TRACE TRACE Trace program during execution.o30 TRACE - Turns trace mode of }f (Default).o30DSOUND DSOUND n,f,d,v Form of SOUND which activates channel-pairing for increased frequency range. }o30 DSOUND Turns off all sounds.o30GO TO GO TO n Alternate form of GOTO.o30*L } *L Turn line-indent on (Default).o30 *L - Turns line-indent off.o30*F * }F (or *F +) Special mode for FOR..NEXT loops which corrects a bug in Atari BASIC. Seems that in Atari BASIC, an "ille }gal" reverse loop like "FOR X=2 TO 1:PRINT X:NEXT X" will execute once even though the condition is met initially (X is alrea }dy greater than 1). Turbo BASIC fixes this bug, but leaves it available for Atari BASIC programs which may take advantage of } it.o30 *F - Turns off the special FOR..NEXT mode to make Turbo BASIC act like Atari BASIC.o30*B } *B (or *B +) Command which allows the break key to be trapped via the "TRAP" command within a program.o30 } *B - Turns off the special BREAK key mode.o30-- -- Special form of REM which p }uts 30 dashes in a program listing.Line Labelso30# # name Assigns the current line number to the } label name. This is a convenient way to get around the problem of renumbering when using variables as line numbers. Labe }ls can be thought of as a special form of variable, as they occupy the variable name table along with the "regular" variables }. We also believe that the number of variables allowed has been increased from 128 to 256 to allow for the addition of these } labels.o30GO# GO# name Analagous to the GOTO command.Modificationso30CLOSE CLOSE } Close channels 1-7.o30DIM DIM a(n) Will automatically assign a value of zero to all elements of the nume }ric array being dimensioned, and null characters to all elements of a string (The LEN is still variable, however, and initial }ly zero).o30GET GET name Wait for a key press, assign the value to name. Same as "OPEN #7,4,0,"K:":GET }#7,name:CLOSE #7".o30INPUT INPUT "text";a,b... Prints text as a prompt before asking for variable(s), same as Microso }ft-BASIC.o30LIST LIST n, List program from line n to end.o30ON ON a EXEC n1,n2,... Variation of } ON...GOSUB for procedures. N1, n2 and so on are names of procedures to be run.o30 ON a GO# n1,n2,... Similar to } ON...GOTO except that line labels are used instead of line numbers.o30POP POP This command now pops }the runtime stack for all four types of loops.o30PUT PUT n Same as "PRINT CHR$(n)";o30RESTORE RESTO }RE #name Restores the data line indicated by the label name.o30RND RND Parentheses are no lon }ger needed at the end of this command, but it will still work if they are there.o30SOUND SOUND Turn off a }ll sounds.o30TRAP TRAP #name TRAPs to the line referenced by the label name.TURBO BASIC FUNCTIONS:A }rithmetic/Logico30HEX$ HEX$(n) Convert n to hex string.o30DEC DEC(a$) Convert hex st }ring A$ to decimal.o30DIV n DIV i Integer quotient of n/i.o30MOD n MOD i Integer rema }inder of n/i.o30FRAC FRAC(a) Fractional part of a.o30TRUNC TRUNC(a) Truncates fractional }part of a.o30RAND RAND(n) Generates random number 0-n.o30$ $nnnn Allows input of h }exidecimal numbers, but they are converted to decimal. Ex: "FOR I=$0600 to $067F" => "FOR I=1536 to 1663".o30& n }& i 8-bit boolean AND.o30! n ! i 8-bit boolean OR.o30EXOR n EXOR i 8- }bit Exclusive-OR.Memoryo30DPEEK DPEEK(m) Double-PEEK of m,m+1.o30TIME TIME Time }of day(numeric).o30TIME$ TIME$ Time of day string, HHMMSS. Unfortunately, the time commands don't work p }roperly because they were written for European Ataris which operate at 50 Hz, instead of 60 Hz like American ones, the net re }sult being that they gain 12 minutes each hour.o30INKEY$ INKEY$ Returns last character typed.o30INSTR } INSTR(x$,a$) Returns relative location of start of string A$ within X$ (returns 0 if not found). The match must be e }xact; strings with the same letters but differences in case or type (normal or inverse) will not be found.o30 INST }R(x$,a$,i) i specifies the starting point of the search.o30UINSTR UINSTR(x$,a$) Same as INSTR, does not dis }tinguish between case or inverse characters. Ex: UINSTR("HeLlO","hello") returns 1.o30 UINSTR(x$,a$,i) Specifi }es optional starting point.o30ERR ERR Value of last error number.o30ERL ERL L }ine last error occurred at.Constants%0%1%2%3These four constants simply stand for the numbers 0-3, respectively. } The difference with using these in a program is that "X=1" requires 10 bytes, whereas "X=%1" only needs 4 (numbers require 7 } bytes, 6 for the number plus an identifier preceeding it. It is always a good practice to make variables for numbers that a }re used more than three times in a program).NOTES:1. Variable, Procedure and Label names may contain the underscore (_ }) character.2. To print a double-quote (") in a text string, use two of them together, instead of the Atari BASIC method of } using CHR$(34). Ex: "TEST";CHR$(34);"TEXT" becomes "TEST""TEXT" in Turbo-BASIC, both of which produce the output => TEST"T }EXT.3. Upon initial boot-up, TURBO-BASIC looks for a BASIC file named AUTORUN.BAS. If it finds an AUTORUN.BAS file, it will } automatically load and run this file.4. Turbo-BASIC also prints out English descriptions of all errors, including several }new ones for errors involving the new commands:Error - 22 ?NEST = Loops not properly nested.Error - 23 ?WHILE = WEND with n }o corresponding WHILE.Error - 24 ?REPEAT = UNTIL with no corresponding REPEAT.Error - 25 ?DO = LOOP with no corresponding D }O.Error - 26 ?EXIT = EXIT is outside a loop.Error - 27 ?XPROC = Error executing PROC.Error - 28 ?EXEC = ENDPROC with no co }rresponding EXEC.Error - 29 ?PROC = Procedure does not exist.Error - 30 ?# = Label does not exist.Also, Error 15 has been }expanded to include an UNTIL which relates to a REPEAT which has been deleted.4. A multiline IF is constructed like this: }10 IF X > 1020 PRINT X-1030 GO# TOO_BIG40 ELSE50 PRINT X60 GO# X_IS_OK70 ENDIFNote also the use of line l }abels in the GOTO statements.---Dave & Laura YearkeE50 PRINT X60 GO# X_IS_OK70 ENDIFNote also the use of line l 6 PRINTING THE TURBO BASIC DOCUMENTATION The Documentation for TURBO BASIC is included on t}his disk in a text file formatted for the PaperClip word processor named TURBODOC.PPC. Loading this into PaperClip and pr}inting it will result in a nicely formatted easy to read 3 page document. The other two files on the disk are ge}neric text ASCII text files that may be viewed or printed with the AUTORUN Doc Reader program provided on this disk. The f}irst file, TCOMPILR.TXT contains the operating instructions for the Turbo Compiler and its accompanying Runtime system. } The second file TIDIER.TXT contains the operating instructions for Text Tidier, the first full-featured program wri}tten in the States in Turbo Basic. TEXT TIDIER may also be used to convert the text files on this side of the disk to the}ir respective AtariWriter+ or PaperClip formats. --- Dave Arlington es on this side of the disk to theZ THE TURBO COMPILER Documentation and Operating Instructions by Dave Arlington } Original Program by Frank Ostrowski This documentation is provided by the Western New York Ata}ri Users Group and may be reprinted freely provided this credit is included. I know everyone is still rubbing thei}r hands in glee over TURBO-BASIC, the new public domain Basic interpreter imported from Holland and Germany. This month we} are proud to present a new treat from our international friends overseas, the TURBO COMPILER. The TURBO COMPILER wi}ll increase the speed of your TURBO BASIC programs 3-5 times and regular Atari BASIC programs can be speeded up to 10-15 }times faster. Unfortunately, like TURBO BASIC, the TURBO COMPILER will only run on the XL/XE series of computers. In addi}tion, the finished compiled programs will also only run on the XL/XE series. The TURBO COMPILER is very easy to oper}ate. It can be used with more than one disk drive, even Drive 8, the 130XE ramdisk. On the TURBO COMPILER disk, you will f}ind several files. The important ones for the operation of the TURBO COMPILER are COMPILER.COM and RUNTIME.COM. Before yo }u begin, you should prepare two disks. The first one should be a blank formatted disk with DOS.SYS and DUP.SYS written on  }it. Your second disk should contain your BASIC program (TURBO or ATARI BASIC). To begin, insert the TURBO COMPILER  }disk into your drive and turn your computer on. When it has finished loading you will be in TURBO BASIC. Type DOS to get t }o the DOS 2.5 menu. Choose DOS Option 'L', Load Binary File and load the file COMPILER.COM. After a short while, you will } see a screen full of German. If you do not read German, do not worry, that is what this article is for! At any time that }you are on this screen, you may reboot your system by hitting Control-R or you may return to DOS by hitting Control-D. Yo}u will be asked if you really want to do this. If you do, don't forget to 'J' for Ja and not 'Y' for Yes!! To compil}e your programs, remove the TURBO COMPILER disk from the drive and insert the disk with the program you want to compile. (}If you have two drives, insert your disk with the program to compile in Drive 2 and the blank DOS disk in Drive 1.) Press} the number 1 key (Number 2 if you have two drives). A complete listing of all the files on that drive will appear on the }screen with one highlighted in inverse video. Using the arrow keys, highlight the file you want to compile and hit Return}. That's all there is to it! At the top of the screen, you will see the line numbers fly by as the program is compil}ed. When it is finished, you will be prompted for a file name to save your compiled program under. It has to have an exte}nder of CTB (for Compiled Turbo Basic). The program will not let you use any other extender. At this time, if you have one} drive, you should remove your disk with your original program on it and replace it with your blank DOS disk. If you wan}t your compiled program to be an AUTORUN file, you should name it AUTORUN.CTB. Then the file will automatically load and r}un at bootup time. There is one more step that you must do to get a completely runnable compiled program. Go back to} DOS and copy the file RUNTIME.COM from the TURBO COMPILER disk to the disk with your compiled program on it. Rename the }RUNTIME.COM file to the name AUTORUN.SYS. Your disk is now ready to go. The TURBO COMPILER does not compile to runnable co}de, you must run the RUNTIME.COM file to run your compiled program. One technical note on the TURBO COMPILER: If you}'re not familiar with other compilers for the ATARI computers, you should know that many have trouble compiling certain ty}pes of statements or insist that you organize your program structure in a certain way. So far none of these problems have} occured on any programs we have tested with the TURBO COMPILER. The only statement that wouldn't compile so far is the E }ND statement. The only program structure that we have had trouble with is a FOR-NEXT loop that has two or more NEXTs for o!}ne FOR. For example: 10 FOR X=1 TO 5 20 IF X=3 THEN NEXT X 30 NEXT X Other than those two examples, we have ha"}d no problems compiling any type of program, either TURBO or ATARI BASIC. Please let us know of any problems you run into #}compiling any types of statements or programs. Whether you program in TURBO BASIC or just want to turbocharge your o$}ld Atari BASIC programs to super speed, I'm sure you will find the TURBO COMPILER will fit all your speed needs. -------%}---------------------------per speed, I'm sure you will find the TURBO COMPILER will fit all your speed needs. ------- Text Tidier 1.0 by Dave Yearke As you may recall, we received from a Dutch users' group T'}urbo BASIC, a language for XL/XE computers which is compatible with Atari BASIC but offers over 60 new features and is th(}ree times faster. Well, they've done it again, this time they sent us the Turbo BASIC Compiler, a program which compiles )}BASIC programs so they run three times faster than Turbo BASIC! I wanted to write a program to demonstrate the power of t*}hese two new programs, so after a few nights of work Text Tidier was born. Text Tidier was designed to eliminate muc+}h of the editing that goes into processing files downloaded from such services as CompuServe. These files often have exc,}ess spaces for justification, carriage returns every line, and all kinds of other annoying things that must be weeded out.-} The most bothersome types of text files are those which use the Control-J Control-M combination for linefeed and carria.}ge return. For MS-DOS machines that's fine, but our Ataris use a totally different character. In its simplest form, /}Tidier strips out linefeeds (^J) and turns ASCII carriage returns (^M) into ATASCII returns (code 155). It also breaks d0}own the file into smaller pieces that will fit into a word processor like AtariWriter or PaperClip. I've downloaded files1} that were over 100K long, far too big to fit into any word processor for the Atari! When you run the program, the 2}first thing it asks for is the maximum file size for the output files. 12,000 is pretty good for AtariWriter, although th3}is depends on what DOS is being used, whether a printer driver is loaded, and so on. For PaperClip, I've found that on my4} XL about 24,000 bytes can be loaded, although I would recommend about 20,000 so you have room to edit the file. Next it 5}asks for the Input file. Put the disk in the drive and enter the name. If you don't enter a device like "D:" it will def6}ault to drive one. All Output files will be named "SPLIT.0xx", where "xx" is the number of the file being written, start7}ing at zero. Be careful not to overwrite any existing files with the same name! Now come the formatting parameters.8} When it asks "CONVERT RETURN TO SPACE (Y/N)" type "Y" if you want all carriage returns to be converted. This is nice if9} you want to reformat the text in your word processor. This option only converts single returns; if it encounters more :}after the first one it will leave them alone because it assumes that it is a break between two paragraphs. The next optio;}n, "TIDY UP SPACING (Y/N)", is probably the most powerfull. It will get rid of multiple spaces between words, excess spa<}ces before return characters, convert ASCII Tab characters (^I) to 5 spaces, and will make sure that two spaces follow al=}l periods, colons, question marks, and exclamation points, and that one space follows all commas, even if it has to add th>}em. One note: it will not add spaces to periods which have no spaces after them, because it can't tell if it is part of?} a decimal number. The next option, "PROMPT BEFORE WRITING (Y/N)", should get a "Y" response if you need to switch di@}sks between reading and writing, and an "N" response if you want to let it go without interruption. The "BREAK FILES ON A}SPACE (Y/N)" simply assures that a word won't be split over two files (this may not work if the last word before writing iB}s over 15 characters long, but that's pretty rare). The last option is a convenience to those with the AtariWriter or PaC}perClip word processors. If you select either "A" or "P" at the prompt, it will write the "chain next file" command at tD}he end of all files except the last one. In addition, it will put a paragraph symbol where it thinks it's appropriate, anE}d convert the ASCII formfeed character (^L) to its AW or PC equivalent. If you select "N" for "neither", then the paragrF}aphs will be indented five spaces and formfeeds will be left alone. By the way, the program only allows character coG}des within the range 26-127, plus CR (13) and FF(12). Characters higher than 127 have the high bit stripped to make themH} "normal," while control characters are ignored. If you want to allow inverse and control characters (although this can bI}e a potential problem with true ASCII files; control characters can have bizarre meanings, and true ASCII does not allow J}character codes higher than 127. If you get any, it's probably a transmission error), change line 215 to: 215 REPEAT :K}GET #1,N:UNTIL (N<>LF) This will only filter linefeed characters. This program was written out of necessity, but IL} h>also had a lot of fun doing it. If you have any questions, comments, or suggestions, please let me know (I can be founM}d lurking at the meetings or on BATES in the "Ask Dave Y!" message base). I'd like to correct any bugs you find (gasp!) qN}uickly, and any features I haven't thought of we'll make part of Text Tidier 2.0! ---------------------------------) qzgs you find (gasp!) quickly, and any features I haven't thought of we'll make part of Text Tidier 2.0!  co nv er te Q} d th em R} to st ri S} ng s fi rs T} t, a sl U} ow an d V} cu mb er W} so me pr oc X} es s. %P Name Y} Syntax Desc UT pu Z} ts th e [} nu mb er to \} th e de ]} vi ce "a ^} s is ," in _} 6- by te `} FP fo rm a} at . %GET %GET #n,A Get b} Ga nu mb c} er st or d} ed wi th %P e} UT fr om f} th e de g} vi ce an d q}xB%DOS SYSB*)DUP SYSBBSAUTORUN SYSBbTURBODOCPPCBHELP TXTB'TCOMPILRTXTB)&TIDIER TXTb3SPIELE TURb IPUTGET TURb RTURBOIO BASb+\DIGILOO BASbPMMOVE TUR st or e r} it in Name Syntax Desc s} va ri ab t} le A. Ag u} ai n, th is v} is mu ch w} fa st er x} th an us in y} g "I NP z} UT #n , {} A" . St |} ru ct ur }} ed Pr og ~} ra mm in } g REPEAT REPEAT Sta } rt a RE P }E AT -U NT } IL lo op } . Nam UNTIL UNTIL Ter } mi na te }wh en co nd } it io n } me } t. WHILE WHILE Sta rt } a WH IL } E- WE ND lo } op to en } d wh en } co nd it i }o n } me t. WEND WEND Ter } mi na te } a WH IL } E- EN D l }o op Name Syntax Desc }. ELSE ELSE Opt io } na l ex te } ns io n } fo r IF } . Th e IF } co nd it } io n mu } st no t } be fo ll ow } ed by a } "T HE N" } , bu t te } rm in at } ed by en } d- of -l in } e or co }Name Syntax Desc lo n. ENDIF } ENDIF End s an } IF -E LS } E- EN DI } F or IF }-E LS E co } nd it io } n. No te } th at th is } al lo ws } an IF co } nd it io n } to sp an } mo re th } an on e } BA SI C li } ne , Name Syntax Desc } pr ov id } ed th e } "I F" st at } em en t } is st ru } ct ur ed as } sh ow n } in No te } 4. DO DO Sta rt } s an "i } nf in it e" } DO lo op } . LOOP LOOP Cyc le } ba ck to } th e st } ar t of a } Name Syntax Desc DO lo } op . EXIT EXIT } Exi t a DO } -L OO P } lo op . PROC PROC name } Sta rt de } fi ni ti } on of pr } oc ed ur e. EN }DPROC ENDPROC End Ede } fi ni ti on } of pr oc } ed ur e. EXEC EXEC name } Exe cu te } pr oc ed } ur e na } me . Name Syntax Desc } Ge ne ra } l Pr og } ra mm in } g PAUSE PAUSE n Pau } se pr oc } es si ng fo } r n/ 50 } se co nd } s. RENUM RENUM n,i,j Ren um } be r th } e pr og }ra m st ar } ti ng at } li ne n, } fi rs t nu } mb er is Name } Syntax Desc i, in } cr em en } t is j. Th } is fu nc } ti on wi } ll ha nd } le GO TO s, } TR AP s, } an d al } l ot he r } li ne re } fe re nc } es ex ce pt } th os e } wh ic h } in vo lv } e va ri Name Syntax Desc } ab le s } or co mp } ut ed va } lu es . DEL DEL n,i } Del et e } li ne s n- } i. DUMP DUMP Dis } pl ay al l } va ri ab } le s an } d va lu es } . Fo r } nu me ri } c ar ra ys } , th e } nu mb er } s Name Syntax Desc ar } e th e DI } Me d va  } lu es pl  } us on e.  } Fo r st ri  } ng s, th } e fi rs } t nu mb er } is th e } cu rr en } t LE Ng th } of it an } d th e } se co nd nu} mb er is } th e DI Name }Syntax Desc Me d } si ze of } it . DU MP } al so li } st s pr } oc ed ur e } na me s } an d la  } be ls wi th !} th ei r "} li ne va #} lu es . DUMP name $} DUM P to %} de vi ce &} na me , su '} ch as "P (} :" or Name Syntax Desc )} "D :D UM *} P. DA T" . +} TRACE TRACE Tra ce ,} pr og ra m -} du ri ng .} ex ec ut /} io n. TRACE - Tur 0} ns tr ac 1} e mo de 2}of f (D ef 3} au lt ). DSOUND DSOUN4}D n,f,d,v For m of 5} SO UN D 6} wh ic h 7} ac ti va t8}e s ch an 9} Name Syntax Desc ne l- :} pa ir in ;} g fo r <} in cr ea se =} d fr eq >} ue nc y ?} ra ng e. DSOUND @} Tur ns of A} f al l so B} un ds . GO TO GC}O TO n Alt er na D} te fo rm E} of GO TO F} . *L *L Tur n G} li ne -i H} nd en t on I} (D Name Syntax Desc ef J} au lt ). K} *L - Tur ns li L} ne -i nd M} en t of N} f. *F *F (or *F +) Spe ci O} al mo de P} fo r FO Q} R. .N EX T R} lo op s S} wh ic h T} co rr ec ts U} a bu g V} in At ar W} i BA SI C. X} Se em s Y} th at in Name SyZ}ntax Desc At ar [} i BA SI \}C, an "i ll ]} eg al " ^} re ve rs _} e lo op li `} ke "F OR a} X= 2 TO b} 1: PR IN T c} X: NE XT d} X" wi ll e} ex ec ut f}e on ce ev g} en th ou h} gh th e i} co nd it io j} n is Name Syntax Desc k} me t in l} it ia ll m} y (X is al n} re ad y o} gr ea te p} r th an 1)q} . Tu rb r} o BA SI s} C fi xe t}s th is bu u} g, bu t v} le av es w} it av ai la x} bl e fo y} r At ar z} i BA SI C {} pr Name Syntax Desc og |} ra ms wh }} ic h ma ~} y ta ke ad} va nt ag } e of it } . *F - Tur ns } of f th } e sp ec ia} l FO R. } .N EX T } mo de to }ma ke Tu rb } o BA SI } C ac t } li ke At ar } i BA SI Name } Syntax Desc C. *B *B (or *B +) } Com ma nd wh} ic h al } lo ws th } e br ea } k ke y to } be tr ap } pe d vi } a th e "T } RA P" co } mm an d } wi th in a } pr og ra } m. *B - Tur ns } of f th } e sp ec } ia l Name Syntax Desc } BR EA K ke } y mo de } . -- -- Spe ci } al fo rm } of RE M } wh ic h pu } ts 30 da } sh es in } a pr og ra } m li st } in g. } Li ne La be} ls # # name } Ass ig ns th} e cu rr } en t li Name Sy}ntax Desc ne nu } mb er to } th e la be } l na me } . Th is } is a co nv } en ie nt } wa y to } ge t ar ou } nd th e } pr ob le } m of re nu} mb er in } g wh en } us in g } va ri ab le } s as Name Syntax Desc } li ne nu } mb er s. } La be ls ca } n be th } ou gh t } of as a sp} ec ia l } fo rm of } va ri ab } le , as th } ey oc cu } py th e } va ri ab le } na me ta } bl e al } on g wi th } th Name Syntax Desc e } "r eg ul }