@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 2.5 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.5s, 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 ALLOWED377 FREE SECTORS COPYING---D2:JT.PICCOMl# 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 D8TuR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8Tu UPDATE INFORMATION ------------------This file contains information aboutthe changes to this disk and acoT}uple of omissions from the manual.Unfortunately, in order to allow themaximum compatability, this disk isin single densitU}y and due to thisthere is not enough room to fit thesource code for the ROTATE.COM fileon the disk. Please write if youwoV}uld like a listing.The manual omitted to mention anydetails about changing the defaultfont. At present this can only bedW}one by assembling the source codeand creating a new object code filefrom a standard font, using theprogram 80FONT.BAS. At X}present thiscreates an object code file with astart address of $2400 (9216), butthis may be changed by altering the9216 iY}n the program as necessary.Make sure the source font is called80CHAR.FNT.In addition, the file 80UNFONT.BASwill dump theZ} current 80-columnfont to the font file 80FONT.FNT.This is useful if you destroy thesource font file (I have, which iswhy[} I wrote it!).Redesigning the font is fairlystraightforward but just a few wordsof advice. I suggest you do notredefine \}the space (ASCII 32)character. The screen clear andscroll routines fill the blank spacewith zeros, so that any spacechara]}cter will be ignored.The LOCATE routine scans eachcharacter in ASCII order, so that thespace is the 33rd character to be^}checked with the on-screen character.Since many lines contain a lot ofwhite space, a few bytes of codecheck if the charact_}er is totallyblank, and if it is, a spacecharacter is assumed. Thus, if youredefine the space, although anytrue space cha`}racters will returncorrectly, any white space will alsobe returned as a space character.(By white space I mean blank screea}ndata that has not had ASCII 32written to it explicitly).When redefining characters, make surethat each character is difb}ferent.Otherwise any LOCATE (or INPUT, etc.)will return the first character inASCII order that matches the shape.Also chec}ck that one character is notthe inverse of another, since theinverse of it will never be detected,for the same reason.Thd}e 80TBMODI.TUR file has beensuperseded by another similar programcalled TURBOMOD.TUR. This programdoes the same job, but te}he resultingTurbo-BASIC XL program can work withor without any other low-memoryprograms, so there is no need tokeep separf}ate copies.The listing for the disk is now asfollows:*.ASM 80-Column source files.AUTORUN.SYS Title page.80CONg}FIG.BAS 80: Configurer.80FONT.BAS 80: font .OBJ maker.80UNFONT.BAS 80: font .FNT maker.80CHAR.OBJ 80: object font fileh}.80CHAR.FNT 80: standard font file.80MANUAL.DOC 80: unformatted manual.TURBOMOD.TUR Turbo-BASIC modifier.READ.ME Ti}his file.DOS.SYS Standard ATARI DOS 2.5.DUP.SYS Ditto.Since everyone has their own "pet"way they like to prinj}t their manuals,I have left 80MANUAL.DOC unformatted(no carriage returns except at theends of paragraphs, no centring, nok}underlining) which can then be pushedthrough your word processor to beformatted how you wish. You may needto split the fill}e into half first! Ifthis is an inconvenience, I'm sorry.Personally I print my documentationwith Daisy Dot. Would a DD form}mattedmanual be better? For those withDD, I suppose so, otherwise, not. Theother reason it is unformatted isthat I know Bn}aPAUG, Page 6 and so onlike to format things for themselvesusing Desktop Publishing packages,and I'm sure an unformatted mo}anual ismuch better in this respect fromtheir point of view.Simon TrewNovember 1991.Z@@@@@@ࠠ@`@ @ @@@@P@@@ @@@@@ @@@@@@@@@@@@@@@ @@ q}@ࠠ@@@@@@@ @ @ @@ @@@@@` @@@@@@@@@ @@ @ @@ r} @@@`@ࠠ@@@`ࠠ@@@@@ ࠠ s}@@@@ `@ @@@@@@@@@@@@@ @@@ @@ t}@@```pp``````````````` @@@@ 00pp00000000 u}@@@pp````````````````````pp@`@@@@@@@ v}@ `` @``@@@@@ ``` ``@```` @@@@ ` @@@@@@@ w}ࠠ@@`` @`@ @@@@` @@@@```````` x} `` $$  @jD$JD@P(DDDDD(DD@@HHD䤤NL"D"",N¤HDJDDDDD N@.z}J"D%%DjĪȨΨ䊈ʊ䤤***,**ĪĪʄƨĢJJJJJNNJD((H{}BB".@@$$FF```fff$$BB00ss @@F`olll l|}hlx~DNND$ff$%%@LJNƨ df`ʊ ̤(j*,*@@DNNJĪƪƂFꊊNNJ}}J .N`nljjbb`(ll(10REM !------------------------------!11 REM ! TURBOMOD.TUR BY SIZ 1991 !12 REM !------------------------------!13 RE}M This program reads in your !14 REM ! Turbo-BASIC XL binary file !15 REM ! and creates a new one that !16 REM ! i}s ompatible with some !17 REM ! other MEMLO-changing devices !18 REM ! including my 80:, M: and N: !19 REM ! device} hndlers. This !20 REM ! program supersedes 80TBMODI !21 REM ! because the new binary file !22 REM ! will now lo}adcorrectly !23 REM ! whether or not a low-memory !24 REM ! device is used, there is no !25 REM ! need to keep a s}eprate copy !26 REM ! of Turbo-BASIC XL. !27 REM !------------------------------!28 REM 29 REM !--------------}---------------!30 REM ! Read in the names of the !31 REM ! input and output files. !32 REM !-------------------}----------!33 TRAP #ERROR34 DIM IN$(20),OUT$(20),BUFFER$(4000)35 INPUT "Input file: ";IN$36 INPUT "Output file: ";OUT$}37CLOSE #1:OPEN #1,4,0,IN$38 CLOSE #2:OPEN #2,8,0,OUT$39 REM 40 REM !------------------------------!41 REM ! Modify the }fist segment to !42 REM ! replace the fixed MEMLO with !43 REM ! MEMLO-checking code. !44 REM !-----------------}------------!45 GET #1,MLL,MHH:REM file header 46 GET #1,MLL,MHH:REM Segment head47 GET #1,MLL,MHH:REM Segment tail48 GE}T 1,MLL,MHH:REM Memlo consts49 PUT #2,$FF,$FF:REM file header50 PUT #2,$02,$21:REM segment head51 PUT #2,$1A,$21:REM segm}en tail52 PUT #2,$A0,MLL,$A9,MHH53 PUT #2,$CD,$E8,$02,$9054 PUT #2,$0F,$D0,$07,$CC55 PUT #2,$E7,$02,$90,$0856 PUT #2,$F}0,06,$8D,$E857 PUT #2,$02,$8C,$E7,$02,$6058 PUT #2,$E2,$02:REM init segment59 PUT #2,$E3,$02:REM init segment60 PUT #2,$}02$21:REM run new code.61 REM 62 REM !------------------------------!63 REM ! Copy the rest of the file !64 REM ! in }th usual way, making !65 REM ! a 4000-byte copy pass until !66 REM ! an EOF or an error occurs. !67 REM !---------}--------------------!68 REPEAT 69 TRAP #EOF70 BGET #1,ADR(BUFFER$),400071 # EOF:PB=DPEEK($0348+$10)72 TRAP #ERR}OR73 LAST=PB<400074 IF PB>075 BPUT #2,ADR(BUFFER$),PB76 ENDIF 77 UNTIL LAST78 REM 79 REM !------------------}-----------!80 REM ! Error routine: If EOF then !81 REM ! the copy completed or the !82 REM ! user ended his input. } !83 REM ! Otherwise display the error. !84 REM !------------------------------!85 # ERROR:CLOSE 86 IF ERR=13687 } PINT "Program finished OK."88 ELSE 89 PRINT "Error ";ERR;" at line ";ERL90 ENDIF 91 END a?@*+LINEHXOPTNAMEFILERFILEADDRHEXVALBYTRMARGIADDKEHL} !!***************************!!* 80: CONF}IGURER *!!* ----------------------- *!!* BY SIMON TREW, 1989. *!!* ----------------------- *!!* This }ATARI BASIC prog *$!!* enables anybody to con- *.!!* struct their own custom *8!!* 80: device from a menu *B!!}* operated system. *L!!* *V!!***************************` A0jt}Π~&&;@@,;@,;@,&&;@,;@@,;@@,;@,;@},6.0123456789ABCDEF" 6.8"6-F:AD,%@ AP6.6. D:AUTORUN.SYS6.6-@y}9A 'A@9A@ AP 6. A6-+@+@@}#  A0 4A@9B:, @/67B:,%@,.>:AU,9 A A0(0}-@@,*@@:7<,,0 2 A0<(F##(The program was successful.P""(The binary file sho}uld nowZ(be executable as .d(nxҠ!!(An error has occured that(preve}nts the successful""(completion of the program.(Please check that the(options are valid, then(re-RU}N the program.Šؠ̠ؠ"-@B:,@6.7<%@, 4}'$" A,*@6 @ .J A0T^Ӡhr?@@?(}%}The 80: configurer, by S. Trew 1989.|.@.@@K:((1. Start page..... $}(2. Filename....... !!(3. Device name.... :(4. Right margin... ( 5. Foreground(6. Backgro}und (&)(7. Border (')(8. DOS 2.x File...  ((G. GO!( (Which? )@6.>:,}4G)4g$[ 41(Addr: $%@+6.5 A[+ AV,%@A0AP. 42(File:} $@. AP. 43(Name: $@. AP. 44(Marg: $@. AP&O 4}5EA F:A ,%@&AV$+F:A ,!AS,O Ap0O 46EAF:A,%@&AV$+F:A},!A9,O Ap:O 47EAF:A,%@&AV$+F:A,!A9,O ApDO 4&EA}F:A,%@&AV$+F:A,!AS,O ApNO 4'EAF:A,%@&AV$+F:A,!AS},O ApX$ 48(BinF: $@b)B:,!@)6.7@<@,l48APv Ap}àϠؠf6-P:'@,$6-&@$?6.7%@<%@,c67@,.7%@<%@},f$ ؠӠϠà 3FF A c`6-@$+@:,&@H&@$+39F,,%+@:}7@,,&@H&@$+7@,39,,c$ 46-$ 46-F:A ,$ 46-F:A,}$ 46-F:A,$ 46-@:,$ eb6-@$+@:,&Av&@$+3,,%+@:7@,,&Av}&@$+7@,3,,%e$  ؠҠ͠  FFFF80FF040404040400 0400AAAAAE0A0}E0A0A00406A 824424C84A0044A4A440B0A0 5000284444444444280000A4 44EE44A400000000000E0040 408000020204044848}0044AC A4E4A4A44E004CA222448282 EC008EA8A8EC22222C004E82 C2A4A8A8480044AAAA4AA6A2 44000000444400444408002}0  4E80402E0000048A4A224480& 0400007F44AAAAAE8A8A0 6A00C4AAA8C8A8AAC400CEA8: A8ACA8A8CE00E48A88CA8A}8AD 8600AEA4A4E4A4A4AE002A2AN 2A2C2A2ACA008A8E8E8E8A8AX EA00C4AAAAAAAAAAA400C4AAb AAAACA848200C6A8A8C4A2A2l }AC00EA4A4A4A4A4A4E00AAAAv AAAEAE4E4A00AAAAAA44A4A4{  A400EE2828488888EE000E82 824242222E00004040A0A000} 0E00007F06A6E6E7E746 46061616161E1E1010106060 60EEEE666666181824244242 8181101030307373F3F38383 C}3C3E0E0F0F0CFCFC0C00000 0000000000000C0CFCFC0040 40E7A746E606060606FFFF06 0606000060F0FFFF6F0F8080  }808F8F8686866C6C6CFCFC0C 0C0C6C686C787E0406000044 E4E44E4E4400002466FF6624 000080FF00404CE2E64A 4E008}080C6A8A8A8C6002020 64AAAEA86600608086CA8A86 820C8480CCA4A4A4AE002808* 6A2A2C2AAA40C040444E4E4A4 EA000000C4}AAAAAAA4000000> C6AAAAC68282000046A88482C H 8C008080EA8A8AAA4E000000R AAAAAE4E4A000000AAAA4AA6\ A20C0004E}42E4E84EE00606Ef 6C6A6A62626000286CEE6C28p 0000FFFF001758585858z 585858581806F526F6604818 A5F565F785F5A5}F665F885F6 686000008D1F4898488A48 AD1FAA2901F002A9FF8D1E 188A297E85F5A90085F620  08200818A}90085F7A9 85F8200EA007B1F5CD1E B005290F4C634A4A4A4AE0 809002490F99008810E468 AA68A86860488A4818}AD10E4 69018D92AD11E469008D93 A90C852AA908852B20FFFF 68AA68604898488A489885F5 A90085F62008A5F585F7A}5F685F82008200818200E A005200888D0FA8A4A85F7A90085F8200EA55885F7$A55985F8200E68AA68A8}68.6020204898488A48209888A4AB02DA200A000A92885F7BA90085F8BD000A0A0A0A9DL00B1F5290F1D0091F520V}0EE8E008D0E568AA68A868`60A200A000A92885F7A90085jF8B1F529F01D0091F5200EotE8E008D0EFF0DB4898488A~}48A2002098A8A5F585F9A5F685FA2098A000B1F991F5C8D0F9E6FAE6F6B1F991F5C8C040D0F768AA68A86860488A4}89848A20020988AA891F5C8D0FBE6F691F5C8C040D0F968A868AA6860488A489848AAC82038C8E8E01790F7A017206A}68A868AA686000488A488CA5A017A218CCA5F00888CA20384CB0206A68AA68600020984898488A48290}1AAA9008DC4A000B1F5E001D005290F4CE64A4A 4A4AACC4990018A92865F585F5A90065F685F6C88CC4C008D0D4}68AA68A8686048(8A48E04FF00CE820C5CA202E0E84C0AA92020DD687<AA686000488E23E04FF010FA24FCA20C}5E820E0CAECP23D0F268AE2320DD60Z585858585858585858585858d58585858000020C58A4898n48A2008E548E}558E1Ex86F8A90085F5A985F6A90885F7A007B900994C0A0A0A0A99440D548D548810EAAD54D004A920D}01FA007AD1ED00BB1F529F0D944D01BF009B1F5290FD94CD0108810E48A8D4C68A868AAAD4C1860E88A29}01D003200E8D1EE000F027E080D0C1A007B94C490F994CB94449F099448810EDA90085F5A985F6386E559}09E68A868AA386020C5489848A007B900490F99008810F568A8684CE0FFFF18C1000000BD4A0320A9}2030A00160489848A557C908"F02D2075C0809005686868,6860A98553A98DC502A968DC602A98DC802A90085@}568D1A8D19A552855568JA86860AC198423602027T8A48207A68AAAD189D4A^03852A60BD4203C911F007C9ch}12D05900000048AD19F04CrA5538D86A5528D85BD42|03C911B00C2904D004A006D006A004D002A00A18B910E4690}18DC0B911E469008DC16820FFFFC080900784F52062A4F548AD868553AD8585526860A0916860C926D012A5549D}4E03A5559D4C03A5569D4D03A00160C927D01EAD19D0DDBC4A03C018B00FBD4B03AAE018B0072038A001D002A08}D60C928D015AD19D0BBBC4A03C018B006206AA00160A08D60C929D012AD19D0A2BC4A03C018B0ED208AA00160C92A}D015AD19D08CBC4A03C018B0D720A6A00160000000C92BD01AAD1949&018D19A202B554BC5B94+0549D5BC}A10F3A00160C92C:D020AD19F0034CDABC4BD03C018B00EBD4A03AAE050B0N0620FFA001604C13C92DXD01BA001BD4A03}C90C900DC9b0FB0099D4A03852A8D1860lA90C4CB1A09260FFFFC2v5C20FFFFA200BD1A03F00BCD5AF006E8E8E84CC}7AD5A9D1A03A92D9D1B03A99D1C03ADE802C99009D011ADE702C9AEB00AA98DE802A9AE8DE702AD5AC9}45D024A200A90C9D42032056E4A95A9D4403A99D4503A90C9D4A039D4B03A9039D42032056E4601A41FA3C606}64C2C002027AC19F00A48A9099D4203684C88A411F007ACFF02D0F7F0088CFF02A0804CA48E3CA656}D03FA655E050B039A454C018B0 3348C99BF034ADA2020DFE02F02C6820DDE8E453F01090 0EA652C8C018D007A000208A*}A017865584540EA202A40B4AE3C602011A08D6068C9>1BD008A9808DA2024CA2C9H1CD00CA454881002A0178454R4C}A2C91DD00EA454C8C018W\D002A00084544CA2C91ED0f10A455883004C452B002A453p84554CA2C91FD010A455C8zC}4539004F002A45284554CA2C97DD015A017206A8810FAA00084548456A45284554CA2C97ED019A455C452F0108A48A9}20A655CA8655A45420DD68AA4CA2C97FD01018A555690AC5539002A55385554CA2C99BD01AA5528555A454C8C}018D007A000208AA01784540EA2024CA2C99CD00CA454208AA45284554CA2C99DD008A45420A64C76C99ED007}A45284554CA2C99FD01238A555E90A3004C552B002A55285554CA2C9FDD02520B44CA24898488A48A02020C7881}0FA68AA68$A86860A27F8E1FD08E0AD4CA.10F760C9FED00C8AA655A45482007AA4CA2C9FFF0034CB838A48A920A6}55A4542024L68AA4CA2002027AC19VF0034C88A556D035A555`C5539002D02DA554C918B027jBD4A0329021D4903D02}7BD48t03C902B0208EFAA655A454~20569004A090D002A001AEFA602011A08DD0F5000000AD1AF011AC46}B95DCE1AEE46A0016000008EFAA001844C8411A5548D5EA5558D5DBD4A03C90DF06618AD24E469018D9EAD2}5E469008D9FBD4A03C90EF00CADF002D007A655A45420FF20FFFFC08090034C2CBC4A03C00ED00160A655A45448}ADF002D00320FF68C99BF00F204FA655E048D00320B44C91A454CC5EF008A6 528E5D8C5EAE5DE053}9005F0034C02AC5E2056B00FAE1A9D5DEE1A(EE5D4CDFAE1AF00CBD25CC920D005CE1AD0EFA9<9B}AE1A9D5DEE1AA200F8E46204FAEFA4C49KPA9008D1A8D468DFF0298Z48A655A454BD4A0329020DF0d0}2D00320FFA99B204FA9n008DF00268A8AEFA603Ax9BAE01A50C8DC3A50D8DC4A9C2850CA9850D20C5A2}00A9E29D4403A99D4503A91D9D4803A9009D4903A90B9D42032056E4609B38303A2064657669636520627920532E2}05472657720313938392E9B453A9BE202E302AEE002E102E1؛FFFF054FA90CA2109D42032056E43021A9039D4203}A9429D4403A99D4503A9049D4A03A9009D4B032056E43003203CA90CA2109D42034C56E4A900484CC815؛E002E}10205؛D:80CONFIG.BAS W ASTARSTAFINAOD@!!*******************}********!!* 80: FONT SQUASH *!!* ----------------------- *!!* BY S. TREW 1989 *!!* ----------}--------------*!!* This program reads in *$!!* the standard font file *.!!* 80CHAR.FNT and writes *8!!* a b}inary file 80CHAR.OBJ*B!!* which loads at address *L!!* $2400. For this utility *V!!* to work, only the left *`!}!* side of each char should*j!!* be used - the other *t!!* should be blank. *~!!* } *!!***************************9@,--@@ D:80CHAR.FNT--@@} D:80CHAR.OBJ)*@AU)*@AU6-@2 A6-@d A6-} A6-@ A@@6-A%@$ 6-%A'%%*@}&AV$P:'AV,*@P:'AV,(%%*@&AV$P:'AV,2*@P:'AV,<-}@1F""6-++'@,P:'@,,P-@Z)@d-#*@8,%+'@,- }An 68,-x   $ D:80FONT.BAS8 !SCRAD!!***************************!!* 80: FONT EXPAND *!!* ----- }------------------ *!!* BY S. TREW 1989 *!!* ------------------------*!!* This program reads in *$!! }* the squashed font file *.!!* 80CHAR.OBJ and writes *8!!* a font file 80CHAR.FNT. *B!!* }*L!!***************************V`##@@E:j%%6-F:@,%AV$F:@,t--@ }@ D:80CHAR.FNT~-A'*@@'!@ @d%@2 }%!@c* @%&@d,-%A@@*@F:,  @ }D:80UNFONT.BAS YET ANOTHER 80-COLUMN PROGRAMThis program is yet another machine code utility that sets up an 80-column screen. Unlike the$} myriad of other 80-column devices, however, this one was designed with the specific intention of being a replacement for the$} E: device, rather than just as a mystified USR call. To that extent it operates a slightly "warts-and-all" approach, so some$} of the bad points of E: are included, purely for compatability. On the other hand, some slight differences are apparent, and%} these will be explained later.You will find that the 80: device is much faster than many 80-column handlers, and also a bi%}t easier to read. This is because its 80-column character set is more rounded, and uses a 7x3 (8x4 for graphics) rather than %}a 6x3 character set.THE 8: DEVICE - ITS FUNCTIONS, ITS HOTELS, ITS BEACHESThe supplied program sets up a device called %}8:, which links into the CIO and enables the 80-column operation. Because CIO accepts a device "number" as well as a "letter"%} before the colon, I recommend you use device number 0 and thus call the device "80:". It is possible to name the device anyt%}hing, calling it E: will allow it to replace the 40-column screen editor.If the device is named E:, whenever Reset is press%}ed then the old blue screen will be replaced by the 80: screen, as will any OPEN to the "E:" device. This, however, does disa%}ble the ability to use the DOS menu (DUP.SYS), as the menu uses the same area of memory as the 80: device. The rest of the ma%}nual assumes you have called the device 80:.Most aspects of the device can be accessed in the usual way. Control-key and in% }verse are supported, and every code except Return can be printed by preceeding it with Esc (ASCII 27). The standard editor wi% }ll not accept a printable Return key, so neither does this one.All control-key actions are supported, including clear-scree% }n, shift-delete, buzzer and so on. The Control-1 key is checked so the display can be halted, and Control-3 can be used to si% }gnify End Of File. The DISPFLG flag at 766 ($2FE) is also checked: this is used by Basic and other cartridges to signify that% } control characters are to be printed and not acted on, this is used by the LIST command, for example.Left and Right margin%}s are supported. The right margin, set by POKEing location 83 ($53), is set to 79 when the device is opened. The left margin %}can be set by a POKE to location 82 ($52).Tabbing IS different to the E: device. Since physical lines are longer, you may u%}se the Tab key for advancing 10 characters, without wraparound. You may use the Shift-Tab to move back ten characters, and yo%}u may use Control-Tab to place the cursor at the left margin.Standard CIO Graphics commands can be issued using a procedure%} described below. The 80: device uses a standard Graphics 8 screen (with the colours changed on an OPEN to what I consider to%} be the most readable, black on white). This means that any Graphics 8 utilities such as fast DRAWTOs and PLOTs and FILLs, su%}ch as those listed some time ago in Monitor magazine, should work OK, providing any reference to the "S:" device is replaced %}by references to the "80:" device. The Turbo-Basic TEXT command can also be used, but the TEXT command will use the 40-column%} char set, useful for creating headings and so on. Alternatively, if doing a lot of graphics work, you may wish to have a sep%}arate channel for text and one for graphics. To do this use GRAPHICS 8+32 and OPEN the 80: device on a channel other than 6. %}Then all DRAWTOs, PLOTs etc. will work on channel 6 and you can still use all the text functions of the 80: device without ha%}ving to switch between the two.The 80: device also uses the standard keyboard handler, so any keyboard buffer or softkey ha%}ndler that links into the standard keyboard handler should still work.CIO COMMANDSThe following CIO commands are suppor%}ted:OPEN #chan,mode,0,"80:"Opens channel chan for the 80-column screen, sets colours and right margin. The value after mo%}de is shown as 0 but can be any value or variable in the range 0..255. The mode can be any integer in the range 12..14. If it%} falls outside this range, 12 is assumed.The modes supported are as follows:12: Standard as for E: device. Input is buffe%}red until Return is pressed and then the whole line is returned. The cursor can be moved freely around the screen and the Bre%}ak, Ctrl-1 and Ctrl-3 keys act as normal.13: "Return-Key" mode, as for the E: device. Whenever input is requested, say by t% }he BASIC editor, no key input is taken but instead the handler generates its own "Return". This is sometimes used by programs%!} to modify themselves (see "Notes on the Return-Key Mode", below).14: All keyboard input is passed directly to the user as %"}for the K: device, and not buffered like the E: device. This is useful if you have your own, more program-dependant key input%#} routines.Any other value for Mode will be treated as for mode 12. Note that you cannot have a "split-screen" setup as you %$}can with the E: device. CLOSE #chanNo special actions.PUT #chan, PRINT #chan(Also Turbo-Basic BPUT #chan)As for th%%}e E: device. The character is put or its control-key action executed. In the case of the former, the cursor is advanced. If t%&}he cursor is past the right margin, it will wrap to the left margin, and possibly the screen will scroll. This means that, as%'} for the E: device, it is difficult to print a character on the bottom line at the right margin: one way to do it, as for the%(} E: device, is to generate the text on the line above and push it down 1 line with a Shift-insert command.Like the E: devic%)}e, a POSITION command can be used to print text before the left margin, it cannot, however, be used to print text after the r%*}ight margin, since the cursor will be wrapped after the first character has been printed.Unlike the E: device, the cursor i%+}s only enabled on an INPUT (or BGET) command (and only if PEEK(752)=0). The cursor takes extra time to print, which is fine i%,}f you're typing as the device is limited to the speed you type, but on a PRINT command it is just a waste of time, especially%-} since most of the time the cursor is unwanted anyway. The cursor as usual is an inverse block, and acts as normal, however m%.}ost cursor flashing routines will not work as intended with the 80: device. (They probably won't do it any harm, though).G%/}ET #chan,AThe actions of the GET command depend on the input mode you are in. They differ from the INPUT command, as they o%0}nly occur when a single byte is requested.The GET command is actually the way CIO interprets a LOCATE. This command, then, %1}returns the character at the cursor into the variable A. If the cursor is placed over a "character" that is not part of the c%2}haracter set, that is to say a graphics command has written through the square, then an error 144 (device done/bad sector) wi%3}ll be generated. The value of A is indeterminate if this happens. You may find that it always returns the same number under t%4}hese conditions, but different versions may change this, so watch out.If you OPEN or change the device for mode 14, however%5}, a LOCATE is not performed, but instead the first key pressed is returned to the user. It is not printed on the screen, neit%6}her is the cursor, and so it acts like the K: device.Of course, if you are in graphics mode, the normal graphics actions oc%7}cur. INPUT #chan,A(also Turbo-Basic BGET #chan)This places a visible cursor on screen (depending on the state of locat%8}ion 752 ($2F0), as for the E: device) and allows free-form editing on the screen as for the "E:" device. When Return is press%9}ed, the line is returned, minus any trailing blanks and any non-characters, which will be treated as the end of the line.If%:} the line you press Return on is the same as the line the cursor was on when the INPUT command was issued, only the character%;}s from the original X cursor position to the end will be returned. This is useful for printing a prompt (like Basic prints "?%<}").Note that there is no such thing as a logical line. Each line is a maximum of 80 characters long, and any more just spil%=}ls over on to the next line. This is for 3 reasons: firstly, logical lines take lots more processing and thus lots more memor%>}y. With the E: device this is a necessity since many lines are going to be longer than 40 characters, but with an 80-column s%?}creen most things can be accomodated. Secondly, many cartridges and Basic have a maximum of 120 or so characters per line, an%@}d this would mean a 1.5 physical line to 1 logical line ratio, which is difficult more for the user than the programmer. Thir%A}dly, I prefer to have 1 physical line for each line of code, so I never bothered with logical lines. And that's good enough f%B}or me.POSITION x,yAs normal. x may be in the range 0..79 and y in the range 0..23. See the notes on the PRINT statement %C}about POSITIONing outside the margins. This command does not do a CIO call, but just changes the contents of memory locations%D} 84, 85 and 86 ($54, $55 and $56); therefore any out-of-range values will not be detectd until another CIO command is issued.%E}DRAWTO x,yWhen set up for GRAPHICS mode, the line is plotted between x and y in the current colour. See XIO 43 for setti%F}ng up GRAPHICS mode. Note that this only works for channel 6: this is a limitation of Basic, and not the CIO or 80: device. I%G}f the 80: device is set up for a channel other than 6, then the command XIO 17,#chan,x,y,"80:" has the same effect (see the X%H}IOs section, below.)PLOT x,yWhen set up for GRAPHICS mode, the point is plotted in the current colour. Otherwise this is %I}the same as POSITION x,y: PUT #6,colour (which is actually how BASIC handles it.) If using a channel other than 6, use this m%J}ethod but changing the channel number.NOTE #chan,x,yGets the cursor position. Note this will ONLY work with the 80: devi%K}ce, but it WILL return the graphics cursor if the screen is set up for graphics. It will NOT work for any other mode, since i%L}t is a command explicit to the 80: device. The NOTE and POINT commands are extremely useful in that they are the only way to %M}pass integers (in the range 0..65535) between BASIC and a device.This command can be bypassed by PEEKs to the cursor locati%N}ons at 84 ($54) (Y axis) and 85 & 86 ($55 & $56) (X axis), but from Basic this is both more difficult and less intelligable.%O}STATUS #chan,xReturns 0 into x if the screen is in TEXT mode, 1 otherwise.MIXING TEXT WITH GRAPHICSText may be mixed%P} with graphics by using the XIO 43 command (see below.) When an OPEN command is performed, the screen is opened if possible a%Q}nd the device is placed in TEXT mode. When in TEXT mode, all PUTs, GETs, PRINTs etc. function similarly to the E: device, and%R} DRAWTO and XIO 18 (FILLTO) are not available: this is because a very few programs use DRAWTO on a text screen, and this woul%S}d probably be worse on the 80: screen than reporting back with an error, since you cannot DRAWTO with text characters on the %T}80-column screen. The Turbo-Basic command CIRCLE can work with text characters, but the PAINT command will always work on a b%U}it-mapped (graphics) level. The TEXT command will work, but will use the 40-column character set on a 320x192 coordinate syst%V}em. This is very useful for plotting double-width headings, and so on.In GRAPHICS mode, PLOT, DRAWTO and XIO 18 are used as%W} for GRAPHICS 8. The cursor position can be found using the NOTE command. The PRINT command can be used as in other graphics %X}modes to do a quick PLOT of a large area (see the SUNPLOTTER program in Page 6 issue 37 for a good example of this).XIO CO%Y}MMANDS (or: HOW TO MAKE LIFE DIFFICULT)Atari made the CIO a wonderful open system, however the XIO command is one of the mo%Z}st obscure commands around, as well as the only command in any Basic I know that begins with X.The general format of an XIO%[} command is:XIO cmd,#chan,x,y,"80:"This sends the command (cmd) that is specified to the channel (chan) that is specified%\}, with x and y as parameters if necessary, using the device name supplied. The device name is included for this reason: If th%]}e channel is not open, and the command is greater than 12, signifying a SPECIAL function, or a STATUS command, then the chann%^}el is automatically opened, the command performed, and the channel closed.In any case, the XIO command is used mainly for o%_}perations that are device-specific, such as disk RENAME, DELETE and FORMAT, screen DRAWTO and so on (although some languages %`}have special commands that can be used as alternatives to XIOs, for example BASIC has DRAWTO and Turbo-Basic has FILLTO, RENA%a}ME and DELETE).The 80: device supports the following XIO commands:XIO 17,#chan,x,y,"80:"This is the XIO equivalent of %b}a DRAWTO, and enables you to use channels other than 6 for graphics.XIO 18,#chan,x,y,"80:"This is the much-maligned FILL%c}TO command. Its operation is so empirical that I shall refer you to the Atari OS Users Manual, Computer Animation Primer or a%d}ny good Atari beginner's guide.XIO 38,#chan,0,0,"80:"This is the equivalent of the NOTE x,y command. The x value can be %e}found in ICAX3 and ICAX4 of the IOCB, or PEEK(852+chan*16) and PEEK(853+chan*16), and the y command at ICAX5 or PEEK(854+chan%f}*16). This method is not recommended from Basic.XIO 39,#chan,x,y,"80:"Moves the whole of line x to line y, very quickly.%g} This does not affect the cursor position. This command moves the line byte-by-byte, and so any graphics will be moved as wel%q}PB%DOS SYSB*)DUP SYSBSREAD ME B p80CHAR FNTBy80CHAR OBJB~TURBOMODTURBW80CONFIGBASB 80FONT BASB80UNFONTBASB 80MANUALDOCB80COL COMBO)AUTORUN SYSBINTRO BASl. This command uses the same subroutine to move a line as the scrolling / shift-insert / shift-delete routines. If you want %r}to fill a whole area with one character, use this command, it is a lot faster than a PRINT.XIO 40,#chan,x,0,"80:"This co%s}mmand clears line x very quickly. It does not affect the cursor position.XIO 41,#chan,x,0,"80:"This command scrolls line%t} x and all lines below it up one line, and clears the bottom line. This is similar to Shift-Delete, but doesn't affect the cu%u}rsor position.XIO 42,#chan,x,0,"80:"XIO 42 is the counterpart to the above command. It scrolls down all lines from x onw%v}ards, and clears line x. It does not affect the cursor position.The above 4 XIO commands are not inhibited by Ctrl-1 or Bre%w}ak, therefore they are slightly different to equivalent control codes.XIO 43,#chan,0,0,"80:"This command changes which m%x}ode the screen is in. Whenever the mode is changed, the cursor values are swapped with internal values, so that it is possibl%y}e to switch at will between graphics and text modes and still retain cursor positions for both of them. To find the current m%z}ode, use STATUS.XIO 44,#chan,x,y,"80:"This command inverts the character at x,y. The "character" can actually be any gra%{}phics data. This is therefore a good way of creating your own cursor or inverting an area of the screen (albeit slowly from B%|}asic, due to the comatose maths!). It is also a lot quicker than LOCATE and PUT since LOCATE needs to do quite an extensive s%}}earch for characters through the character set, as well as double the overhead of CIO time.If you really like to be awkward%~}, you can get a printable Return key by printing an escape character and inverting it. Note that any line input on the line w%}ill be terminated at that "Return", though, and then another line containing the remaining characters will be returned.XIO%} 45,#chan,mode,0,"80:"This is used to change the input mode from that specified in an OPEN command, and is most notably use%}d to toggle on/off Return-Key mode. You can use POKE, but since any XIO corrupts this value, this method is recommended as th%}e value is updated after each XIO. The value of Mode is as for the Return statement.Note that if you do opt for the POKE, t%}he address to poke is not 842 (which handles channel 0, the screen editor) but 842+16*chan, where chan is the channel of the %}80: device. See the notes on the Return-Key mode, below.ERRORS: HOW TO GET THEM, HOW TO GET RID OF THEMErrors are extrem%}ely simple to get. However they are more difficult to decipher. If you have Turbo-Basic then you might be lucky enough to get%} a tiny error message such as ?CURSOR. See below for errors that are generated by the 80: device (as opposed to other general%} CIO errors).Note that if you try using the 80: device when you are not using a GRAPHICS 8 screen, the screen will be re-op%}ened (like the E: screen does).If you get an error, the mode is changed to TEXT. This ensures that data input integrity is %}maintained. However, if the Break key is pressed whilst in GRAPHICS mode, and an 80: command is not being executed, Basic or %}another language may get there first, and thus try printing the "STOPPED" message and requesting input from graphics. If this%} happens, the computer seems to be having a rest. Pressing the Break key should solve this (you may get an additional ERROR 1%}41 depending on where the graphics cursor was).ERROR 128 Break key abort. Occurs during PUT and GET operations. Manifests %}itself in Basic as "STOPPED".ERROR 136 End of File. Control-3 was pressed while input was occuring. This is not really an e%}rror, but Basic stops if an ERROR 136 is generated anyway.ERROR 141 Cursor is out of range. The GRAPHICS X-axis range is 0.%}.319 and the Y-axis 0..191; the TEXT X-axis range is 0..79 and the Y-axis 0..23.ERROR 144 Device done/bad sector. With refe%}rence to the screen, this means the attempted LOCATE tried to read a character that is not part of the character set, that is%}, has been PLOTted or DRAWTOed over.ERROR 145 Bad screen mode. You attempted a DRAWTO or FILL operation whilst in text mode%}, or a MOVE LINE, DELETE LINE, SCROLL or INVERT operation whilst in ttGRAPHICS mode.ERROR 158 Not enough memory to open the%} screen in this mode.NOTES ON THE "RETURN-KEY" MODE.The Return-key mode works in a similar fashion to the E: device. Ess%}entially what happens is that whenever an input command is issued, the device automatically "Presses Return" on the line that%} the cursor is on.Some Basic programs use this to create other Basic programs or modify themselves. Their general format is%}:10 REM ***EXAMPLE****20 PRINT "RETURN KEY MODE"30 PRINT "THIS ADDS A COUPLE OF LINES TO THE PROGRAM"40 PRINT "100 REM %}"50 PRINT "110 REM ̠"60 PRINT "GOTO 90"70 POSITION 0,280 POKE 842,13:STOP90 POKE 842,12:LISTWhat this does%} is to print the two new lines on the screen. Then it prints the immediate mode instruction GOTO 80 so that BASIC will conti%}nue from line 80 when the E: device reaches that line, and position the cursor. It then POKES 842 with 13, and stops the prog%}ram so that Basic expects input. Location 842 contains the mode that channel 0 (the editor) was opened with: normally set to %}12 on a Reset. Setting this to 13 induces Return-key mode, and setting it to 12 again in line 80 reverts back to a normal inp%}ut facility. The input that Basic expects is automatically provided, until the CONT statement is encountered, whereupon the p%}rogram recommences operation.However, the 80: device cannot use POKE 842 unless you have opened it in channel 0, that is yo%}u have it configured as E:. Either use POKE 842+16*chan, or the preffered method, especially if you are using XIOS afterwards%}, XIO 44,#chan,Mode,0,"80:" where Mode is either 12, 13 or 14 (see the OPEN command). This latter method preserves the input %}mode even if you use XIO: otherwise, expect some strange results if you use any XIOs.MEMORY USAGEWhen dormant, ie in memo%}ry but not with the screen open, the device takes approximately 2740 bytes (this will depend on the configuration). When open%}ed, the device takes approximately 9880 bytes (compared to 7200 extra for a standard Graphics 8 screen). This is significantl%}y less than, say, the X: device on Page 6 PD disk 62. Incidentally, if you want a speed test, when compared to that device, a%} disk-to-screen copy of 15000 characters (approx.) took 1 minute 14 seconds on the 80: device, and 6 minutes 54 seconds on th%}e X: device! Unfortunately I have not been able to test it against the XEP80, and any speed data would be greatly appreciated%}.MAKING YOUR OWN CUSTOM 80: DEVICEThe program can be configured to suit your own application; this is done via a Basic p%}rogram. You should note that all above information assumes the standard configuration, created by loading the Basic program a%}nd running it without changing any options.Firstly load "80CONFIG.BAS" from the source disk. This is the Basic code that cr%}eates the machine code 80-column device. You may use this as many times as you wish to create custom 80: devices.The 80: de%}vice is not self-relocatable, that is, it cannot move itself around in memory depending on the size of your system. CIO handl%}ers are a lot of hassle in this way, because the CIO needs to know about 10 addresses of where it can find various bits of th%}e program, so relocation becomes heavy work for handlers of any size. However, when you run the Basic program, you can alter %}the page to start the code at. The page at which you want the program to load will vary depending on your system.If you kno%}w which page, then select option 1 and type the page number, in hex (2 digits). If not, the program will automatically choose%} the lowest possible page depending on your system. If you have missed all that "page" talk, just follow this advice: Load al%}l the software into memory that you would normally want while using the 80: screen, then load the "80CONFIG.BAS" program and %}run.Option 2 allows you to change the machine code file name, this is the file you will run each time you want to use the 8%}0: device. The default is D:AUTORUN.SYS. DOS 2.x (that is, any DOS 2 derivative) users should note that the DUP.SYS package u%}ses the same memory as the 80: device, and for this reason it cannot be loaded from DOS with the L command, nor can it be in %}use when DUP is used (this will only happen if the device is called E:). Therefore the best bet is to call it D:AUTORUN.SYS.%}The third option will allow you to change the device name. I recommend 8: but you may want to call it something else, notabl%}y E: which will mean as soon as you load it, all normal editor operations will be replaced by the new 80-column operations. N%}ote that if you do this, however, you will never be able to use the old E: device while the 80-column driver is in memory. A %}special case exists when calling the device E:, and that is that on a Reset channel 0 is closed and re-opened to E:, this is %}because the normal Reset process first inserts the old E: handler and opens the screen before allowing other Reset processes %}to proceed. Some things may insist on using 40 columns, by calling the OS ROM routines directly, so if you encounter problems%}, you may not want to call the device E:.Option 4 allows you to adjust the default right margin, set originally to 79. This%} means that whenever the device is OPENed, the right margin is changed to 79. You may want to change this to, say, 77 or 39.%}Options 5, 6 and 7 allow you to change the default colours for foreground, background and border, respectively. Whenever you%} type these numbers, the colours change on-screen. To change the brightnesses, use Shift-6 (&) and Shift-7 (') respectively. %}Only the brightness can be changed on option 5.Option 8, for DOS 2.x users, allows you to specify a binary filename to load%} after the 80: device, if left blank, then no file is loaded. This is very useful if you call the device AUTORUN.SYS, since y%}ou can have another binary file also run automatically at bootup. (It is also possible to append the 80: device program to an%} existing AUTORUN.SYS file.) Note that this feature does not remain resident and so does not take up any more memory.(Note %}that for typing filenames, you must include the drive specifier eg D:, D2:, D8:.)Once configured, press G and the binary fi%}le will be created. When done, you can boot the disk with your AUTORUN.SYS file on, or if you are not using DOS 2.x then you %}can go to your DOS command line and type the program name. Presto!USING 80: WITH TURBO-BASICThe 80: device works well wi%}th Turbo-Basic, however there are a few caveats.I suggest you call the device D:AUTORUN.SYS and have it automatically load a%} file called D:TURBO.COM, and rename your Turbo-Basic file to TURBO.COM.Since Turbo-Basic also modifies the Low Memory poin%}ter, this must be changed after loading to above the 80: device, otherwise your Turbo-Basic program will overwrite the 80: de%}vice.There are two ways to do this. The first is to create an 80: device with a start page of $38 (the default under Turbo-%}Basic is $37) and, when first loading, type: DPOKE $2E7,$4300:DPOKE $80,$4300You cannot do this within a program. The st%}art page has to be bumped up by one, else when you type the above line, you will be overwriting the lower end of the 80: char%}acter set. The second, and to my mind better, way to achieve this is to remove the low memory pointer from the Turbo-Basic %}binary file. The Turbo-Basic program 80MODITB.TUR will do this for you, and write a custom Turbo-Basic file D:TURBO.COM to di%}sk. You can then use this as you would with Turbo-Basic.Another useful feature with Turbo-Basic is that you can access the %}DOS menu in 80 columns. Do not try to do a Copy or Duplicate option, though, as this will use the memory reserved by Turbo-Ba%}sic and the 80: device! You can return to Turbo by typing 2080 at option M (this works on my 130XE but I have been informed t%}hat it does not work on an 800XL).PROGRAM DESIGNThe resultant 80.COM (or AUTORUN.SYS) file is made by appending four sep%}arate .OBJ files using the COPY /A command. These files are 80CHAR.OBJ, 80BASICS.OBJ, 80XIOS.OBJ and 80CIO.OBJ.80CHAR.OBJ h%}as 512 bytes of code and contains the character set. This character set has been designed using a standard font editor that p%}roduces nine-sector (1024 byte) fonts. A small program called 80FONT.BAS, written in BASIC, takes the font called 80CHAR.FNT %}and writes the 80CHAR.OBJ file. If you want to change the font permanently, then load the 80CHAR.FNT font into your font edit%}or. You will see that only half the width of each character is used: the other must be blank for 80FONT.BAS to work properly.%} 80FONT.BAS is a very noddy program since it is only used once or twice.The assembler source file is split into three parts%}: 80BASICS, 80XIOS and 80CIO. These are "linked" by a set of equates at the top of each file which refer to addresses in the %}other source files. This is for two reasons: firstly, because one source file would be absolutely huge and take aeons to load%}, save and assemble; and secondly the files can be assembled separately thus if an error in 80CIO occurs the others need not %}be re-assembled. Since the files were developed in the three distinct stages this meant that after 80BASICS was working satis%}factorily then its innards could be forgotten. This is a very primitive form of "linking": using procedures from an external %}file without actually knowing the code they contain.Even though assembler is a low-level language, it still needs to be str%}uctured and the software was developed using a procedural approach. The A,X, and Y registers would not be changed by a subrou%}tine, neither would any memory location, unless this was explicitly stated in the module spec (a spec written and updated by %}me throughout the project). Any local variable space that only the one subroutine uses is declared at the top of the subrouti%}ne. In many subroutines you will see at each end instructions saving and restoring the registers from the stack.The 80BASIC%}S file contains all the basic routines used by the driver, such as putting a character on screen, inverting characters, getti%}ng characters from the screen, scrolling etc. If you are writing a program that uses 80 columns but do not wish to access it %}through CIO systems, then this file is probably all you need. This provides you with basic screen control but has no checking%} for things like scrolling at ends of lines, margins, keyboard input etc. It also does not provide any graphics functions.T%}he 80XIOS file contains CIO handling code that handle the XIOs functions. This includes instructions to save the input mode w%}hich is destroyed by an XIO command, and control all the CIO commands that do not vary. That is, the PUT and GET commands var%}y a lot depending on the input mode, the TEXT/GRAPHICS mode, and so on. But all other commands, even though they may only be %}valid in either TEXT or GRAPHICS mode, always have the same function. This is handled by 80XIOS and includes OPEN, CLOSE, STA%}TUS, and SPECIAL. It also has a special procedure called CHECK8. This checks whether a Graphics 8 screen is being displayed a%}nd if not opens it. If it cannot be opened, then the CHECK8 procedure does not return to the caller but returns to the caller%}'s caller, which is always the CIO. This means that by placing a JSR CHECK8 instruction in the code it can be assured that th%}e next instruction will only be executed if the screen is open.The 80CIO file contains the PUT and GET functions, including%} all the control code processing and text buffering. It also controls the 8: entry into the CIO Handler Table (HATABS) and a %}small amount of transient code.Most of the code is resident, that is to say it remains in memory after the program has run.%} The transient code is executed only when the program is first loaded and then is erased from memory and thus does not take a%}ny memory. This is used to print the 80: message:80: device by S.Trew 1989.and it also sets MEMLO, reroutes the DOS loade%}r for Reset, and generally tidies. This then calls the resident code.BUGS!The program has been heavily tested, but if yo%}u find a bug in the program or a whopper in the documentation, please send full details to me. If you have any problems, plea%}se also get in touch. It is quite difficult writing a manual for something you know all about, and inevitably some things wil%}l need changing.DISCLAIMER (MY MUM TOLD ME TO PUT THIS IN)These programs and their accompanying documentation are in the%} public domain and may be freely copied, distributed, disassembled or changed in any other manner for any non-profit-making r%}eason. They may not be used on any commercial basis without written permission from the author, who will be happy to oblige. %}Whilst it is hoped that the programs and documentation are free from errors, the author cannot be held responsible for any ac%}tions arising either directly or indirectly from the use of the software, nor from his sense of humour.BIBLIOGRAPHYBooks%} I could not do without:Compute!'s "Revised Mapping the Atari"Atari "OS User's Manual"Atari "OS Source Listing"Freud "In%}somnia and the Low-Level Programmer".Simon Trew.December 1989.QUESTIONAIRE / REGISTRATION FORMIf you use the 80: d%}evice regularly, please show your appreciation by filling in this short questionaire and returning it to me. If you would lik%}e to register for the next release of 80:, please send an SAE, and when I complete the next revision (including some of the f%}eatures below), I will drop you a line. Please mention anything else you feel would be handy too. Be honest! There are no hig%}h cliffs around here to jump off.1. How do you rate the program? [] Very highly [] Highly [] Average2. How ofte&}n do you use it? [] Most sessions [] Some sessions [] Occasionally3. The following features may be included in a fu&}ture revision of the program. Please indicate those you would find worth the estimated extra memory usage (in brackets). &}a) ST Mouse Control. (70 bytes) [] Very [] Slightly [] Not Useful b) Windowing (The ability to set top, bott&}om, left, right margins and have more than one 8: window on screen at once). (300 bytes) [] Very [] Slightly [] Not U&}seful c) The ability to redefine characters using an XIO command. (50 bytes) [] Very [] Slightly [] Not Useful &} d) Fast, more versatile PLOTs and DRAWTOs. (300 bytes) [] Very [] Slightly [] Not Useful e) A "flood" graphics &}fill (needs PLOTS and DRAWTOs+150 bytes) [] Very [] Slightly [] Not Useful f) Auto Wordwrapping (120 bytes) [&}] Very [] Slightly [] Not Useful g) Logical lines (300 bytes) [] Very [] Slightly [] Not Useful h) A "las&}t line recall" (50 bytes) [] Very [] Slightly [] Not useful i) Keyboard macros (300 bytes). [] Very [] Slig& }htly [] Not useful4. What other features would you enjoy?(please use more sheets if you would like to).5. How& } did you find the documentation? [] Good [] Average [] Poor [] I just opened the envelope, and there it was.If you& } have any questions about the program, I will do my best to answer them. If you wish to suggest other improvements or need a & }custom version of the program, please feel free to write, and I will see what I can do. I've got nothing better to do in the & }evenings.Please send to: Your address:Simon Trew __________________&}_____________322 York Road _______________________________STEVENAGE &} _______________________________Herts. _______________________________SG1 4HW. &} _______________________________ENGLAND. _______________________________&}Thankyou for taking the time to fill in this questionaire.$;))  @jD$JD@P(DDDDD(DD@@HHD䤤NL"D"",N¤HDJDDDDD N@.*}J"D**DjĪȨΨ䊈ʊ䤤***,**ĪĪʄƨĢJJJJJNNJD((H*}BB".@@))FF```fff$$BB00ss @@F`olll l*}hlx~DNND$ff$**@LJNƨ df`ʊ ̤(j*,*@@DNNJĪƪƂFꊊNNJ*}J .N`nljjbb`(ll(+.XXXXXXXX&`Heeh`+HHH+)+)~ + +) ++*})Lc+JJJJI+hhh`HHi+i+ *+ hh`HHH + + + + +J +XY *}+hhh` +HHH +J-(+ +)+ +hhh`()+ +HHH + +*}@hhh`HHH +@hhh`HHH 8, j,hhh`HH,̥, 8,L, j,hh` +HHH)*},)L,JJJJ,+(eeȌ,hhh`HHO , +L - +hh`H#-OO , +#-h#- +`XXXXXXXXX*}XXXXXXX ,HHT-U-+)+L- D- T-T-T- + )D- )L-䊍L-hhL-`) *}++'L-IL-D-ID-)8nU-hh8` ,HH+I+hhL+./J / 0.`HHW- u+hhhh`OS*}  V..RUhh`.#` '.H z.h.J*`BYH.LS.R.B ) i.i.*}h  b/H.S.Rh`h`&TNULVM`'.ݼJK 8,`(.лJ j,``).ТJ*} ,`*.ЌJ ,`+.I.T[/T[/`, .L.KJP -`L/-J  J** }.` L/`/\3  Z3L/Z3-03 ɮ 3Z3E$ B VZD3E JKB V`.*!}A/1<0`.f.L,0 '.. H BhL.L0<0V?UP9T3Hɛ4 ,h +SR ,UT <0` 1*"}`hL0 TTL0TTL0U0RSUL0USRUL0} j,TVRUL0~UR*#}H UʆUT +hL0Ui SSUL0ɛRUT ,TL0ɜ T ,RUL0ɝT ,Lv1ɞRUL0ɟ8U 0RR*$}UL0% 1L0HHH 1hhh`Ў ` UT -L0L0H UT $-hL0 '..L.V5US-T'J)I'*%}H 1UT V-1` 1.F2]3.F2`1LT^2U]2J f$i2%i2J UT - *&}L,3J`UTH -hɛ O0UH 1L2T^2R]2^2]2SL3^2 V-.]3.]2L2. \3 .者.]3*'}.F2 O01LI2.F2HUTJ)  - O0h1`E:34 / /… / /D3EHI B V`80: *(}device by S. Trew 1989.E:33('X X!XAXBXEXp~FXIX0@JXMXBXDXNXNXOXOXPXPXQXQXZSXX.*} !#%(*,.02468:<>@BDFHIKMOQRTVWYZ\^_abcefhijkmnopqrstuvwwxyzz{||}}~~~Y"Y TYPE A KEY TYPE A KEY.+} $Y+YpVY0-Y3Y0VYA$Y6Y6Y 7YY^ŗ4Ŗ,*Oȥȥ eem6Y.,}eƒЫe揦`YYe`YY`YYȩ-ȩY`YY*Y+Y`YY"/.-}`ZZZZZ.ZHZЭYL+ZYЭYЭZh@1Z1Z2Z2Z3ZZMNX)NXi iNX1Z"&YZZԩ..}/Y2Z2Z61Z/Z&YZԬZ/YZ/Y1Zl/Z`ZZPXIZPX JXKXZ JXKX`Z[OX ./}POXTOXQXSXZZ8QXZSXZ8ZZJZ*ZPX FXGXZ Y YZ 7Y YZ FXGXZ 7Y.0}ZmZ Y Y YQXJJJJZZJJJJZH)8ZZh) ZYH)8ZZh) ZY`[[Z8RXQX ZQX8RX.1} QX`ZPX ZZQX Z`[\ZPX ZRXQX ZQXZ mRXQX`"\B\$/Z%0Z@ԩ \!\ \䦆`C\e\3 \Z!\.2} "\Z`m\\!/ 6Y Z Z0f\1g\$0Y1`\\ m\\\!X\iRXX\ [L.3}\ [L\\i2`\]h\#Y8 Y C\`]P]/Z \0Z!\ "\ Yf\0g\1.4}Ԡh\`Q]\] \ \ ]`@O.5}.6}.7}.8}.9}??B?BB?B?B?B?BBBBBB~~~~~~B.:}BBBBB??B?BB?B?B?B?.;}.<}.=}B?B?B?B?B??B?BBBBBBBB~~~~~~.>}~BBBBBBBB?B?B?B?B??B?B.?}.@}.A}??B?BBB?B?B?BBBBBB~~~.B}~~~BBBBBB??B?BBB?B?B?.C}.D}.E}B?B?B?B?B??B?BBBBBBBB~.F}~~~~~~BBBBBBBB?B?B?B?B??B?B.G}.H}.I}???BB?B?B?B?BBBB.J}B~~~~~BBBBB???BB?B?B?B?.K}.L}.M}B?B?B?B?B?B?B?BBBB.N}BBBBB~~~~~~~~BBBBBBBBB?B?B?B?B?B?B?B.O}.P}.Q}?B?B?B?B?B?B?B?.R}BBBBBBB~~~~~~~BBBBBBB?B?B?B?B?B?B?B?.S}.T}.U}0?.V}<<333g111c1.W}11c111c111g11 1.X}X1_1g111c111c111c.Y}331c1c.Z}?01c1g3c1c1c1c1c1?c@1c1?.\}cb1cw1Ǐcv0