@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@P!( 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`  `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 J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1: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- 143ɛ+,' 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 D8ulmv++MQBUFFNAUTICIPUYENORECF1F2F3PAGETSPHFILSFSORTERFISORNCMNRECNUYEDPLINEET} U}V} !"#$%!!*** REF-BASE, VERSION 3.23:*** A RESEARCH REFERENCE*** W} MANAGEMENT SYSTEM.""*** BY CHRIS CHABRIS, 1984-5bV A$P+,@e>AR@PSX}@bS@@2F6-@ A"F((ź$;@,;@,Y};@,;@0,;@`,;@0,;@0,;@,;@`,;A,;A,;A,.hh;A,Z};@,;@`,;@`,;@`,;B`Q,;@v,;A,;@@,8w67@,. %67B`Q,. [}467@,.=6-C:,N67@,. _67@v,. n67@,.w6-C:,Bnn6.d&& !!!!!!!!!!!!!!!!!!!!!!!!!!!!!\}! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Lnn6.d !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!]}!!!!!!!!!!!!!!!!!!!!! %%%%Vnn6.d !!!!!!!!!!!!!!!!!!!!!!!!^}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! `+ #A0-%A!"'+ jll216,104,56,233,3,133,217,104,133,204,104_},133,203,104,133,215,104,133,214,104,133,210,104,133,209,162,0tkk104,104,157,0,1,232,228,217,208,246,56,165,209,233,2,133,`}209,165,210,233,0,133,210,48,108,165,209,133~ll211,165,210,133,212,165,204,133,206,133,208,165,203,133,205,24,101,214,133,a}207,165,208,101,215,133,208ll160,0,185,0,1,190,2,1,134,218,190,1,1,200,200,200,132,216,168,136,177,205,209,207,240,12,165b},218,208,4kk144,16,176,46,144,44,176,10,200,202,208,234,164,216,196,217,208,210,198,211,169,255,197,211,208,6,166jj21c}2,240,11,198,212,165,208,133,206,165,207,24,144,172,165,213,240,4,134,213,208,148,96,134,213,160,0II177,205,170,177,207,1d}45,205,138,145,207,200,196,214,208,241,240,203)@@D1:*.RFB56-8(`(# The following lise}t(s) are on file:r@@@@7(j@47@<@,0 FREE SECTORSR( 7@<f}@, `6-%@j AU@ @2@@9>"U( NO LISTS STORED.g}^( ( (3(" Press to create a new list^(& to load an existing list06-F:B2y,0@*h}@A@6. -AR?A@dB(X( Enter FILENAME:j@@ni}AR@(S67@<@,.D1::67@<@%B:,,.S67@%B:,,..RFBl"@,@j}@9)@=TD@A$lD@C:,@u]"@,@@k}86-E*@]C@C:,@u - MAIN MENU DISPLAY:@ @2@@l}9>6-@dH A"u((ź󩠠 A#fAR@'AdAU9m}A@dc(% Choose one of the following options:f((( DD a new reference2''( ELETE an existing referen}nce<&&( ORT the list of referencesF""( OOK through referencesP##( IND specific referencesZ""( LEAo}R reference markersd$$( RINT lists of referencesn!!( UIT and save the filex;#@@K:0p})@;@__[ADSLFCPQ<>:,<,A0APAAA@AAPA"  Aq}- ADD A REFERENCE:X"@u!-@@"N(>:AS, Too many references to ADD!X Ap6-r}@  A"F((ź䠠󩠠P A#p( Reference # %@:|67@,. s}%67A,. 467@,.FAXARj@@ |@@8>-@@t}' AUTHOR: ~~>B:,"AK-@@ ' TITLE: ~~9-@@K CITY: ~~K-@u}@' PUB: ~~9-@@K YEAR: ~~]-@@' NOTES: ~~9@Kv}@@9]AR@B( (,6. Is this reference OK (Y/N)?6 A#@BAM6-%@ A$w},-@B:,@7<,4>:,M67<,. * *67A$&A<A$,.E6. Add another (Y/N)?' x}A#@+5 A8<B A0E=- DELETE A REFERENCE:b6-@R A"F((ź堠y}󩠠P A#bAR"0" Reference # to delete: 0!A,HAR@06. Are you surz}e (Y/N)?: A#@>H A$ 6 A@ - SORT LIST OF REFERENCES:JP6-A A"F((ź{}󩠠P A#T+(( Sort on UTHOR, ITLE, or EAR?+(^c#@@K:0)@;|}@c@e*@*@A0h( SORTING ...rv"@el6-?:<<A<<@<@0<}}<@1<@`<<AQ<@<,v A|v"@l6-?:<<A<<@1<@`<<@~}<@0<<AQ<@<,v Aj`6-?:<<A<<AQ<@<<@<@0<}<@1<@`<,j A- LOOK THROUGH LIST:\6-A6-AB% A"R((ź렠}󩠠\ A#''( View ll or arked references?Y#@@K:0)@;@}Y@e*@wAe-@#-@7-@@ E(>:AV,I L(e6.7A$&}A, ! ' A367@v,. 3"@w*7<,0YA0I A#%( Reference # :7@}@ I@@8f-@@$(AUTHOR: 6-@@ E( TITLE: W-@@f( CI}TY: f-@@$( PUB: 6-@@E( YEAR: W-@@f( NOTES: s@}'@@9*(H( Press to continues(& to (un)mark and continue,,($ to de}lete and continue&6-F:B2y,&"@A0B"@7<,4 '67,.Y*<567,. 8=B A0Q}"@ A$ 6-) A#76-&@A A0D<N AQ=&  A0!!- FIND SPECIFIC REFERENCE}S::o6-Ax A"F((ź䠠󩠠P A#o( What do you want to find?DoA}'@@ 9@@8KAR]-@@o PHRASE: ~~NB:,"A}X[@'@@99AR@<(O( SEARCHING ...[6-b+6-[<<%@,+"}Al=&6-P:+&@,'A,%@367<,.Y= Av - CLEAR REFERENCE MARKERS:k6-@ A"}F((ź󠠠󩠠P A#k6. Are you sure (Y/N)? A#@A>67@,}. %67@v,. 467@,.> A- PRINT LIST:a6-AF A"F((ź}󩠠P A#a67@v,. =(( Print ll or arked references?+(=A@dY#@@}K:0)@;@Y@e*@wAAR'@@ 9@@8K-@}@ ] TITLE: ~~o-@@ SUBTTL: ~~kAR@'@9@@9<}(?(k(' Adjust paper and press to begin. F:B2y,@A 6-@/@@}P:f(@>:@',>:@d,>:@',>:@i,z-@@(@ R1-@P:+@&B:,,'}@,%@A(@ E R(@1-@P:+@&B:,,'@,%@A(@ E R(@}(@>:@',>:@p,>:@',>:@,](@ A!`S(@-R# AUTHOR } TITLE] A!` uu(@d CITY PUBLISHER } YEARz A!`H(@- NOTESR A!`f-@Av}(@=z  /(@6-@(/( PRINTING ...*0-@0"@w*7<,0YA!@4&6.7A}$&A,& A#>! A!`!(@UH! A!`!(@URL A!`(@U((}@66-%@B!@`L A!\(  @@( AfI-@+@e&,&(@* }4 A"?@I ApCREATE LEFT MARGINz(%(@ ($FEED TO NEXT SHEET%6}-@(@%(@k6.-- page =:, --1-@@dA(@ E R(@`6-%@}k(@H(@(@$(@/(@:(@E(@H$- QUIT AND SAVE FILE:_ A"}:((ź󩠠D A#_6. Are you sure (Y/N)? A#@A(( SAVING} FILE ...8@@E*@\C@A$tC@C:,@u@" +}@@"""- MISCELLANEOUS SUBROUTINES:!!CLEAR SCREEN, DISPLAY TITLEsAR@'@}9@@9F(>:A%,s(( *** REF-BASE by Chris Chabris 1984 *** A$ !!DISPLAY NUMER OF REFERENCE}S % 6.=:, @%6.0=:, Z-C:,C:,%@*F:,WA(. @-@$@E(W-@}Z$$ RETURN YES/NO ANSWER. (6-6-8 `#@@K:0)@;@Q"}@x)"A]6-@`$B 8"@)"A!%6-@($+<5 A#`8=L EXTRACT A RECORD'S FIELDSV 6}.7@<@0,16.7@1<@,H6.7@<A ,_6.7A!<AP,v6.7AQ<AT,6.7AU},$` CONSTRUCT A RECORDj `67@,.!67@1,.067@,.?67A!,.N67AQ,.]67AU,.`$}t DELETE A RECORD~ ];L%$A%+&@,$A+@v&,$A]LC:,%C:,%&@@v& 6-&@}$ ERROR HANDLER Z6-c:,!6-c:@,+ A$P6@B"@P(>:AS,Z A M<6.} ERROR #=:, at line =:,; Press [ESC] M67@@,.  .-C:,C:,%@9*F:,WA(.  P@}'@@99AR@K-@P( F:Ad,@(A%  A% } AD1:REFBASE.BXLAR@K-@P( F:Ad,@(A%  A% 14 4 1 5 0 11 70 4 18 1322769BASIC XL2770 by Christopher F. Chabris: page @ of 17 15 Sterling Ro }ad, Armonk, NY 105042769BASIC XL2770, a cartridge-based language by Optimized Systems Software, is the newest and bes }t version of BASIC available for all Atari Personal Computers. (OSS's new 2769BASIC XE2770 can't be used on the 400 and }800 machines.) It can be used with cassette as well as disk systems, and is almost totally upward-compatible with original  }2769Atari BASIC2770 (unfortunately, it reserves the first 128 bytes of Page Six for its own use). I have been using BASIC } XL for over a year, and find it very convenient for creating useful applications for three reasons:1. 27451Development } time is reduced27450 because approximately 50 new commands, functions, and ways of using old ones are provided. For exam }ple, Player/Missile graphics commands eliminate the need for POKEs, memory maps, and machine-language subroutines. Programmi }ng aids such as TRACEing, RENUMbering and variable cross-referencing are only a command away, whereas they required separate }utilities with Atari BASIC.2. 27451Programs require less memory27450 for the same reason, combined with the power of } OSS's "SuperCartridge." This clever device employs a technique know as "bank selection" to divide the 16K of ROM into four }4K blocks. But since only two of these blocks overlay RAM at any one time, only 8K of memory is occupied - the same amount a }s is used by Atari BASIC. For more information on the SuperCartridge and bank selection, see 2769COMPUTE!2770, "Insight: } Atari," p. 264, December 1983.3. 27451Execution is faster27450 because of the new FAST command that converts all li }ne numbers to memory addresses. This does away with the time-consuming search through memory for lines called by GOTO, GOSUB }, FOR:NEXT, etc. OSS advertises a speed increase of two to four times over both Atari BASIC and 2769Atari Microsoft BASIC }2770. This is especially apparent in long programs when locating a line near the end of the listing.2769Ref-Base2770 }is a miniature database manager that I developed from scratch in three days using BASIC XL. It is designed to organize lists } of references for research projects, term papers, and the like. However, it can easily be adapted for other applications. }You might notice that BASIC XL allows and uses lower-case, and formats program LISTings with indentations. If you have a BAS }IC XL cartridge and disk drive, you can type in Ref-Base (I recommend invoking the automatic line-numbering facility with NUM } 1000,10).The remainder of this article will explain how to use it, how it works, and how it illustrates special features o }f BASIC XL. If you don't yet own BASIC XL, reading further should give you an idea of the language's power.Upon RUNning Re }f-Base, you are greeted with the Initialization screen. A directory of all the lists stored on the disk in drive 1 will be d }isplayed. Of course, the first time you use Ref-Base, you should see the "NO LISTS STORED" message. Answer the first prompt } by pressing [START], and type a filename of eight upper-case characters (the program adds an extension to identify the file }as a product of Ref-Base). The program will create the file on disk and continue on to the Main Menu.This is where you can } select various operations to perform on your list: adding and deleting references, sorting, printing reports, etc. Completi }on of these tasks will either return you to the menu automatically or give you the choice of performing the task again. Howe }ver, you may return here at absolutely any time simply by pressing [BREAK]. Each menu option is described in greater detail }below.2769ADD2770 allows you to create a new reference by typing in up to six pieces of information: AUTHOR (30 charact }ers maximum), TITLE (60 characters), CITY of publication (30 characters), PUBLISHER (30 characters), YEAR of publication (4 d }igits), and any NOTES or comments you have (60 characters). The maximum number of references allowed in a single file is 75. }2769DELETE2770 prompts you for a reference number to purge from the file. You should only use this option if you know }the specific number of the reference you want to delete.2769SORT2770 will organize your file alphabetically in one of t }hree orders: author-title-year, title-author-year, or year-author title (earliest publication first). You should usually do }this before using the Print option so that your references will be in a neat order when you get hardcopy.2769LOOK2770 s }imply allows you to flip through the list, viewing each reference as it appears on the screen. At each reference, you have t }he choice of going on, marking it, or deleting it. If you mark it, the program will remember that it has some special signif }icance, and you can later Print or Look through only those references that have been marked.2769FIND2770 prompts you fo }r a phrase (60 characters maximum) to search for throughout the entire file. The program will mark each reference that conta }ins the phrase so that you may access them later with Look or Print.2769CLEAR2770 wipes out all previous markers. This } would normally be done before Find so that only the references containing the given phrase are marked.2769PRINT2770 re }quires a printer to produce neatly formatted lists. I use an Epson MX-80 F/T III, and Ref-Base is written with its Graftrax }Plus chip in mind. You are prompted for title and subtitle lines (60 characters maximum each), which are centered at the top } of the first page in boldface type. The references are printed in compressed type in order to fit more of them on each page }, and a page number is printed at the bottom. If you have a different printer, consult your manual for the control codes req }uired for these typefaces and make changes in these lines: 2020: Cancel all special modes and engage boldface type. 20 }40: Disengage boldface type and engage compressed print (approximately 17 characters per inch). If your printer doesn't have } compressed print, you'll have to modify the program to print reports in a different format.2769QUIT2770 must be used }to exit Ref-Base with all changes saved to disk, or else any work you do will not be permanent. The current set of markers i }s saved along with the references.Ref-Base is organized into the following distinct modules, as identified in the listing's } REM statements:LINE NUMBERS ROUTINE 1000-1280 Initialization 1290-1420 Main Menu 1430-154 }0 Execute ADD 1550-1590 DELETE 1600-1670 SORT 1680-1830 } LOOK 1840-1900 FIND 1910-1940 CLEAR 1950-2210 PRINT (2160) } Create left margin (2180) Paginate 2220-2260 QUIT 2270-244 }0 Miscellaneous functions (2280) Title display (2310) # References display (2 }340) Get YES/NO answer (2380) Extract a record's fields (2400) Construct a rec }ord (2420) Delete a record 2450-2520 Error HandlerA file (list) of records (references) is or }ganized into three sections. The first is one byte that gives the total number of records, from 0 to 75. The second part is } the largest; it consists of the individual records, in numerical, order up to the total number of records.Each record is e }xactly 214 bytes long, and is organized in the following format:POSITIONS CONTAIN 1-30 Author's name 31-9 }0 Reference title 91-120 City of publication 121-150 Publisher 151-154 Year of publication 1 }55-214 Notes & CommentsThe third part is a block of 75 bytes identifying the marker status of each record. Status c }odes are as follows: 32, or ASC(" "): Record is not currently marked. 89, or ASC("Y"): Record was marked when the QUIT } option was last chosen.During the program's initialization, after the user specifies an acceptable filename, the entire f }ile is read into memory. This obviously allows for easier manipulation than a system with constant disk access of data. How }ever, it restricts the size of each file to the amount of available memory, a severe limitation for a general-purpose databas }e management program. But the specific application being examined here, research references, should under most circumstances } not require more than 75 records of information. If you're interested in writing programs to manipulate greater amounts of }data, BASIC XL has two new commands that can make your task much easier. Their syntax: RPUT #channel,expression[,express }ion ...] RGET #channel,variable[,variable ...]These store and retreive records that can contain both numeric and string }records, and BASIC XL checks to make sure that the types being read match those that were written earlier. While RPUT and RG }ET are useful, I found it easier in Ref-Base to treat the file as one long string in memory, and a binary file on disk with n }o distinction between data types. Ambitious programmers may want to extend Ref-Base to allow files limited in size only by d }isk space!The program uses a three-tiered system to deal with the file. The highest tier is represented by the variable FI }L$, which holds the entire file (the variable FIL is equal to ADR(FIL$)). Record #1 would be positions 1-214 in FIL$ (FIL-FI }L+213), #2 would be positios 215-428, etc. The next level is the variable REC$, which is used to hold the record currently b }eing accessed or manipulated. For example, if we were printing out record #37, REC$ would be equal to FIL$(7705,7918). The }last tier consists of six separate variables, each representing one of the fields (categories) in a record: AU$, TI$, CI$, PU }$, YE$, and NO$.The program itself is written in a straightforward manner that should not be difficult to understand. We'l }l go through it line-by-line and discuss those features that are unique to BASIC XL.The first really unusual statement is S }ET (line 1040). This is one of the most powerful available in BASIC XL because it controls a number of low-level functions, }including tab stops, error messages (in English!), Player/Missile parameters, and the USR function. The most interesting is }SET 9,1 which allows new program lines to be ENTERed from disk or cassette without terminating execution. You could use this } to create large programs in several modules, each to be loaded only when needed. In Ref-Base, SET 0,1 causes pressing [BREA }K] to be a TRAPpable error, which is handled in lines 2450-2520. SET 2,32 changes the prompt character for INPUT statements }from a question mark to a space (CHR$(32)).In line 1080, a common trick is used to initialize FIL$ and SF$: the first and l }ast characters are set to spaces, and FIL$(2)=FIL$ causes the space to be replicated throughout the string very quickly (as o }pposed to a slow FOR:NEXT loop). Lines 1090-1110 seem unusual; why assign sets of ampersands, exclamation points, and pound }signs to strings? These will be used by the Print option (lines 1950-2210). We'll learn their secret when we discuss that p }ortion of the program.The machine language in the DATA statements of line 1130-1200 performs the SORT function. I did not }write the routine, however. It was created by Adrian Dery and first appeared in the fourth issue of 2769Antic Magazine27 }70, October/November 1982. Although it uses the extremely slow "bubble sort" algorithm, 75 records is the most required of i }t, and it can sort on any number of fields specified in major to minor order. For more information, see the original article }.The OPEN command in line 1200 accesses the disk directory for only those filenames with the extension "LST" (it works with } both single- and double-density disks). In line 1250, POKE 702,64 puts the keyboard in shift-lock mode before the user type }s in a filename. The message "Enter FILENAME:" is displayed, and the INPUT statement uses a [SPACE] prompt so that no questi }on mark is displayed after the colon. POKE 82,17 sets the left margin so that, while INPUTting the filename, the user cannot } backspace over the prompt.BGET and BPUT commands are encountered in lines 1270-1280. These are very powerful because they } allow reading and writing from and to a file, using absolutely any area of RAM as a buffer. Therefore, the entire file can }very rapidly be loaded into FIL$ with a single statement, as in line 1270, or written to disk, as in line 1280.The Main Men }u module is unremarkable until line 1410. FIND is another powerful function; it is essentially a "string search" routine tha }t will return the position of the first occurrence of a given string within another string. Here, it is combined with an ON- }GOTO statement to process all menu selections in one line.In the ADD module, POKE 702,0 puts the keyboard in lowercase mode }. Again, the left margin is set so that the user cannot erase the prompts. Lines 1470-1500 demonstrate the capability of di }splaying a text message prompt in lieu of a single character along with an INPUT statement. After the record has been entere }d, lines 1520-1530 actually tack it onto the end of FIL$. Then, in line 1540, the user has the opportunity to ADD again with }out returning to the menu. The statement IF:ELSE:ENDIF, borrowed from structured languages like Pascal, is used to control t }he branching. If the condition is true, all code between IF and ELSE will be executed (in this case, GOTO 1290). If it is f }alse, that code is bypassed and anything between ELSE and ENDIF is executed instead. Use of IF:ELSE:ENDIF often allows progr }am control structures that would require multiple lines in Atari BASIC to occupy a single line in BASIC XL.The DELETE and S }ORT modules are very short, simply accepting user input and calling subroutines. LOOK is more complicated. It gets each rec }ord in order, skipping if the user wishes to view only marked records and the record is not one of those. After displaying t }he data, the program offers three choices (lines 1780-1820): continuing on, reversing the marker status of the record, or del }eting it. These options are controlled by a number of IF:THEN and IF:ELSE:ENDIF statements.FIND, predictably, repeatedly u }ses the FIND function (in line 1890) to discover each occurence of a user-supplied phrase. Line 1900 marks the record and pr }oceeds on to the next. It should be noted that this part of the program would be both longer and slower were it coded in Ata !}ri BASIC with no machine-language subroutines.CLEAR simply uses the string-clearing trick from lines 1080 and 1460 to wipe "}out all markers. PRINT is the most complicated module. After getting title and subtitle lines for the report, centering the #}m, and printing the column headings at the top of page 1, it goes into a loop similar to that of the LOOK module.Lines 2110 $}-2130 introduce the PRINT USING capability, another advanced, Microsoft-like command. Each PRINT USING statement has an asso %}ciated format string containing format characters. Those used in Ref-Base, F1$, F2$, and F3$, were mysteriously defined earl &}ier in lines 1090-1110. Basically, PRINT USING will output any possible kind of data in any possible format, with one annoyi '}ng exception: a format field can be no more than 59 characters long. In Ref-Base, this limitation "chops off" the last chara (}cter of TI$ and NO$ in printed reports.The following format characters are allowed:CHARACTER (TYPE) FUNCTION # (num )}eric) Fill with leading blanks & (numeric) Fill with leading zeroes * (numeric) Fill with leading *}asterisks . (numeric) Print a decimal point , (numeric) Print a comma + (numeric) Display sign +}of number - (numeric) Display sign only if negative % (string) Right justify ! (string) Left ,}justify / (either) Causes next character appearing to be printed normallyPRINT USING is -}much more flexible than I can explain here. It will seem especially powerful to those of you who have struggled to make Atar .}i BASIC produce neatly formatted output. I may have been able to use it to advantage at other places in the program, but per /}haps I didn't because it seems to be a luxury that should not be wasted on "ordinary" data!The QUIT module again uses the B 0}PUT command to save the file to disk before ENDing the program. Most of the miscellaneous subroutines are unremarkable, exce 1}pt for two lines. In 2330, the operator ! is used to execute a binary AND of two numbers (like the 6502 machine language ins 2}truction) in order to make part of a string appear in inverse video. In 2430, where a record is actually purged from memory, 3} MOVE is used for the first time. This versatile command will copy any number of bytes from portion of memory to any portion 4} of RAM, although the programmer must be careful not to let the addresses get out of hand. Here, it copies all records after 5} the one to be deleted 214 bytes "backwards" in memory so that they overwrite the deleted one. The same is done to the strin 6}g of markers. Without a MOVE command (or similar machine-language subroutine), deletion could involve a slow FOR:NEXT loop o 7}r a complicated system of flags and pointers. With MOVE, it is accomplished in one quick and dirty line.The error handler 8}introduces the ERR function, which returns the error number and line at which the error occurred. This function is really ju 9}st a convenience, for it can be easily duplicated in Atari BASIC with PEEK(195) and PEEK(186)+256*PEEK(187).We have finishe :}d examining the specifics of Ref-Base. Armed with the above information (and a BASIC XL cartridge), you should be able to ma ;}ke improvements to the program. Some suggested changes: 1. Covert the program to Atari BASIC so that all ANALOG readers <} can use it. Be forewarned that this is a very difficult task, and the maximum file size will almost certainly have to be re =}duced to make room for a longer program. 2. Add an EDIT function that would allow users to go back and change data that t >}hey've already entered. 3. Allow another report format: Bibliography style. This would print the author's name, underlin ?}ed title, etc. across the page with word wrap and proper line spacing. Such a format would eliminate the need to separately @}type the bibliography of a paper into a word processor. For bibliography formats, see the 27451MLA Handbook27450 by Gi A}baldi and Achtert. 4. Create a companion program for Endnotes, allowing users to enter up to 255 notes, consisting of ref B}erence numbers and page number ranges therein. When this data was created and saved, the program would retreive the referenc C}e data from disk in the order of the notes, and print them out in the correct note form. Although this is a major project, i D}t would considerably enhance the value of Ref-Base as a useful applications program. 5. If you don't feel up to any of th E}e above programming tasks, how about displaying the filename (BUF$) in the white status bar at the top of the screen? There F}are many other such minor improvements that can be easily implemented.If you come up with any useful enhancements to Ref-Ba G}se, send them to ANALOG so that other readers can take advantage of them.In closing, I must remind those of you who are sti H}ll skeptical that Ref-Base only scratches the surface in its use of BASIC XL's special features. A partial list of those not I} used: - Player/Missile Graphics commands and functions, and additional controller functions - String arrays, Microsof J}t string handling (LEFT$, MID$, and RIGHT$), simple concatenation, and automatic string DIMensioning - WHILE:ENDWHILE, ano K}ther program control structure borrowed from Pascal - Full support of hexadecimal numbers, as well as DPEEK and DPOKE to o L}perate with 16-bit numbersIf this taste of BASIC XL has just whetted your appetite for powerful BASIC programming, look i M}nto OSS's related products: The BASIC XL Toolkit and BASIC XE, a language designed to take full advantage of the extra 64K RA N}M in the 130XE machine. With these development tools, you can write programs that no one would have dreamed of using BASIC f O}or a few years ago!ne. With these development tools, you can write programs that no one would have dreamed of using BASIC f -Rossetti, Mary Francesca A Shadow of Dante Boston RobeQ}rts Brothers 1886 Blow, Susan E. A StuR}dy of Dante New York G. P. Putnam's Sons 1887Deals S}exclusively with The Divine Comedy Sanborn, Francis Fenton About Dante T} San Francisco The Whitaker and Ray Company 1901Also discusses "... his beloved Florence" U} Huntington, George P., comp. Comments of John Ruskin on The Divina Commedia Boston V} Houghton, Mifflin and Company 1903 Fergusson, FrancisW} Dante New York The Macmillan Company X} 1966Includes critical material on Dante's writings Freccero, John, ed. Dante - A Collection of Y}Critical Essays Englewood Cliffs, New Jersey Prentice-Hall, Inc. 1965 Z} Salvadori, G. T., trans. Dante - His Life, His Times, His Works [}New York American Heritage Press 1968Color illustrations and photographs W\}alsh, Gerald G. Dante Alighieri Milwaukee The Br]}uce Publishing Company 1946 Baynes, Herbert Dante a^}nd his Ideal London Swan Sonnenschein & Co. 1891 _} Davis, Charles Till Dante and the Idea of Rome `} Oxford, England The Clarendon Press 1957 a} Latham, Charles Sterrett Dante's Eleven Letters Boston b} Houghton, Mifflin and Company 1892Extensive comments on each letter Binyon, Laurence, trc}ans. Dante's Inferno London Macmillan and Co. Limitedd} 1933Introductions to each Canto Binyon, Laurence, trans. Dante's Purgatorio e} London Macmillan and Co. Limited 1938Introductions to each Cantof} Carpenter, G. R., trans. Giovanni Boccaccio's Life of Dante Neg}w York The Grolier Club 1900Limited edition; includes introduction Lonq})b%DOS SYSb*)DUP SYSbXSREFBASE BXLbBASICXL TXTBNPDANTE RFBgfellow, Henry W., trans. Inferno Boston Houghtonr}, Mifflin and Company 1867Very sparse footnotes Mandelbaum, Allen, trans. Inferno -s} The Divine Comedy of Dante Alighieri Berkeley, California U. of California Press 1980Includes "t}introductions and commentary" and sketches Barbi, Michele Life of Dante u} Berkeley, California U. of California Press 1933 v} Dinsmore, Charles Allen Life of Dante Alighieri Boston w} Houghton Mifflin Company 1919Illustrated Longfellow, Henry W., x}trans. Paradiso Boston Houghton, Mifflin and Compay}ny 1867Extensive notes and essays Bergin, Thomas G. Perspectives on The Divine Cz}omedy New Brunswick, New Jersey Rutgers University Press 1957 {} Holbrook, Richard Thayer Portraits of Dante Lond|}on Philip Lee Warner 1911Displays and discusses various portraits/drawings of Dante Longf}}ellow, Henry W., trans. Purgatorio Boston Houghton, ~}Mifflin and Company 1867Extensive notes and essays Mandelbaum, Allen, trans. Purgatorio }- The Divine Comedy of Dante Alighieri Berkeley, California U. of California Press 1982Includes "in}troductions and commentary" and sketches Vernon, William Warren Readings on The Inferno of Dante; in two volume}s London Macmillan and Co 1894 } Vernon, William Warren Readings on The Purgatorio of Dante; in 2 volumes London } Macmillan and Co. Limited 1897 Ciardi, John, trans. } The Divine Comedy New York W. W. Norton & Company, Inc. } 1961Introductions, endnotes, maps White, Lawrence Grant, trans. The Divine Comedy } New York Pantheon Books 1948Excellent illustrations, no not}es Sayers, Dorothy L., trans. The Divine Comedy 1 - Hell Middle}sex, England Penguin Books Ltd 1949Introduction, maps, commentaries, diagrams, etc. Sayers,} Dorothy L., trans. The Divine Comedy 2 - Purgatory Middlesex, England Penguin Book}s Ltd 1955Introduction, maps, commentaries, diagrams, etc. Sayers and Reynolds, trans. The Divine Co}medy 3 - Paradise Middlesex, England Penguin Books Ltd 1962Introduction, }commentaries, diagrams, etc. Anderson, Melville B., trans. The Divine Comedy of Dante Alighieri } New York The Limited Editions Club 1932"... notes and elucidations" } Anderson, Melville B., trans. The Divine Comedy of Dante Alighieri New York } The Heritage Press 1944Drawings, "notes and elucidations" Carlyle-Wicksteed, trans. } The Divine Comedy of Dante Alighieri New York Random House 1}932Essays, maps, chapter introductions, some footnotes Fletcher, Jefferson B., trans.The Divine Comedy of Dante Aligh}ieri New York The Macmillan Company 1931Illustrations, but no notes } Longfellow, Henry W., trans. The Divine Comedy of Dante Alighieri Boston } Houghton, Mifflin, and Company1867Includes extensive notes, essays, and indices Ciardi, J}ohn, trans. The Inferno New York The New Americ}an Library 1954"a verse translation for the modern reader;" notes and maps Grandgent, Charles H. The Ladies of D}ante's Lyrics Cambridge, Massachusetts Harvard University Press 1917Arranged with on}e chapter for each lady discussed Rizzatti, Maria Luisa The Life & Times of Dante } Philadelphia Curtis Books 1965Numerous contemporary illustrations, in color } Ciardi, John, trans. The Paradiso New York } The New American Library 1961Maps, notes, introductions Ciardi, John, trans. } The Purgatorio New York The New American Library 195}7Notes and introductions Cary, H. F. trans. The Vision of Dante Alighieri } London J. M. Dent & Sons Ltd 1908Index of persons, some notes } Cary, H. F., trans. The Vision of Dante Alighieri Part II. - Purgatory London } Methuen & Co. 1901Footnotes Cary, H. F.}, trans. The Vision of Dante Alighieri Part III. - Paradise London Methuen & Co. } 1902Footnotes Cary, H. F., trans. The Vision of Hel}l London Cassell & Company, Limited "... Critical/Expl}anatory Notes, Life of Dante, Chronology" Cary, H. F., trans. The Vision of Purgatory and Paradise } London Cassell & Company, Limited Illustrated, "... Critical and Explanatory Notes" } d, "... Critical and Explanatory Notes" Q