@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 ALLOWED736 FREE SECTORS COPYING---D1:DIRECK.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- 138ɛ+,' 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 D8uTurbo-Info #1 An Introduction to the Turbo-816 by Chuck Steinman (DataQue) NOTICE: This article originally appeared in tT}he July, 1989 issue of Atari Interface Magazine and may be freely distributed or reprinted in non-profit User Group publicaU}tions as long as the article's author and Atari Interface Magazine are credited AND this notice is reprinted with the articlV}e. All other publications must obtain written permission from Unicorn Publications, 3487 Braeburn Circle, Ann Arbor, MI 48W}108, Phone: (313) 973-8825 before using this article. Welcome to the introductory article in a series which will presenX}t the Turbo-816 from DataQue Software. Initially, the features of the product will be presented, and later the series willY} progress to actual applications and programming hints. If you have any comments or critisizms, I would appreciate it greaZ}tly if you would write a note to the editor of this fine magazine and express your thoughts. For those of you not familia[}r with the Turbo-816, it is a hardware and firmware upgrade for the Atari XL and XE computers that expands the capability of\} those machines, while still maintaining compatibility with your existing software and hardware investment. There will als]}o be a version for the original 800, although no release date has been set at this time. The XL/XE kit is called the Turbo^}-816x, and will sell for $120 plus $4.00 S&H within the US. Foreign destinations, COD and other special handling would be e_}xtra. The main component of the T816 (short for Turbo-816) is the CPU adapter board. For those of you unfamiliar with com`}puter jargon, CPU stands for Central Processing Unit, which is the main "brain" of your computer. The CPU that came in youa}r XL/XE computer is an 8bit 6502. The actual CPU in the Atari XL/XE computers is a slightly modified version of the 6502. b} The T816 adapter board, along with a short ribbon cable, replaces your existing 6502 CPU with a new, more powerful 16bit Cc}PU. This new CPU has the unique capability of also being able to understand the 8bit 6502 CPU instructions. That allows thd}e adapter board to still execute your original 8bit programs. The CPU adapter board is approximately 5 inches by 2-1/2 inchee}s, and it takes care of all timing and control functions, allowing it to fully emulate (or function like) the special Atarif} version of the 6502 while also extending the addressing range. One jumper must be added to your Atari XL/XE motherboard tog} make the system work. Installation and modification information is provided as part of the Turbo-816 kit. The other coh}mponent of the Turbo-816 system is the Turbo-OS ROM. This part is a 28-pin integrated chip that holds the initialization ani}d control software that most users take for granted. Originally, I had planned on this chip fully replacing the Atari OS aj}nd just adding any new functions required by the new CPU to allow it to work properly. It wasn't long before I ran into a sk}nag. Atari would not release the source code for the XL/XE Operating System ROM to me. I offered to sign any non-disclosurl}es and pay any required fees, but the best offer they could come up with was $1000 up front, and 50 cents per unit sold, fom}r the right to copy only certain sections of the Atari Operating System ROM, but no source code was to be included in that an}greement. I was not impressed with their support, so I proceeded to write the entire Turbo-OS from scratch. This not onlo}y cost several additional months of programming effort, but also increased the amount of time to test each and every functip}on. The resulting Operating System is 100% compatible with software that uses the published, legal entry points into the Atq}ari OS and legal RAM locations. Because of many programs making illegal calls to the OS or using reserved RAM, I suggest tr}hat BOTH the Atari OS and the Turbo-OS be installed in your machine and a toggle switch be used to select which is active. s} Details on how to make this modification are also included in the kit. A popular misconception about the upgrade is thatt} it will execute ST and/or IBM/PC programs. It will not. I have never advertised or claimed it would, so I can only guessu} someone that was not familiar with assembly code, or the internal workings of computers, started this rumor. The ST uses av} 68000 processor, and the IBM uses an 80x86-based processor. The 65816 is not software compatible with either of those CPUw}s, and neither of those CPUs can directly understand 6502 code. If someone wants to write such an emulator for either of tx}hose CPUs, let me know when you have it done! The Turbo-816 uses the WD65C816P5 CPU, which was designed by Western Design y} Center and is manufactured by California Microsystems. This is the same CPU used in the Apple ][gs. Anyone familiar with z}the ][gs knows it is a powerful little machine, although it does have a few design problems that prevent it from being able{} to fully take advantage of the CPU. Many Atari owners have asked me, "What will this do for me?" There are many ways to|} answer that question depending on what you use your computer for and whether you program. The Turbo-816 not only adds 16bi}}t working registers, but also new, more powerful instructions and a 24bit address bus. Now with these new capabilities, mo~}re powerful new programs can be written to allow the Atari computers to compete again with the more expensive 16bit computer}s. The new addressing capability allows for up to 16 megabyte of memory (RAM), and the new instructions make smaller, fast}er, and more complex routines possible. I have made MAC/65 Macros and other information available to all registered owner}s via my BBS and the GEnie telecommunications service, allowing owners of MAC/65, or any other macro assembler, to begin usi}ng the new 65816 instructions immediately. To the non-programmer, at this time there are no programs which take full adv}antage of the Turbo-816. Current applications will run from 5% to over 300% faster depending on how much they use the Turbo}-OS. Since existing software was not written to access the new memory or take advantage of the new instructions, that soft}ware can only gain performance by calls to the Turbo-OS. I will have several new applications which will take advantage o}f the new memory and power, though. The first of these will be a spreadsheet program called the Turbo-S16. It will be sim}ilar to VisiCalc and SynCalc. The program will determine if a Turbo-816 and Turbo-OS are available, and then use any expan}ded or explicit memory, if available. Otherwise, it will run on a stock Atari 400/800/XL/XE using the normal RAM. Since it} is not initially going to be designed as a concurrent application (i.e., it will not multi-task), the program will absorb }all available RAM for its use. That means, if there is one megabyte of explicit or expanded memory available, the program w}ill allow you to use up to that amount for the application. I plan on releasing this program in ROM, which will be, to my }knowledge, the first spreadsheet program to be implemented in ROM for the Atari. A discount will be available (with proof o}f purchase) to owners of SynCalc, SynCalc+ and VisiCalc as an incentive to upgrade to the Turbo-S16. Details will be relea}sed later. Another application nearing completion is the Turbo-A16. This is an assembler that will allow you to assemble} native mode 65816 code. I am trying to incorporate enough versatility to allow loading of source code from popular file f}ormats. That will allow people to use their existing libraries without first having to convert them. It has not been decid}ed whether this application will be in ROM or disk based. Well, that's the basics of the Turbo-816. If you have any spec}ific questions you would like answered, please forward them to the Editor of AIM, and I will see that you get an answer. F}or those of you with GEnie accounts, I have a special section dedicated for Turbo-816 questions and answers, so feel free to} drop in! you with GEnie accounts, I have a special section dedicated for Turbo-816 questions and answers, so feel free to Turbo-Info #2 Where is All of My Memory? Chuck Steinman (DataQue) NOTICE: This article originally appeared in the August }, 1989 issue of Atari Interface Magazine and may be freely distributed or reprinted in non-profit User Group publications a }s long as the article's author and Atari Interface Magazine are credited AND this notice is reprinted with the article. All } other publications must obtain written permission from Unicorn Publications, 3487 Braeburn Circle, Ann Arbor, MI 48108, Ph }one: (313) 973-8825 before using this article. This is the second part of a multi-part information article on the Turbo- }816 from DataQue Software, for the Atari XL/XE computers. The first installment went over the basic system, and this articl }e will explain the various possible types of available memory in a Turbo-816 upgraded system. Because of the limited add }ressing range of the 6502 CPU used in the Atari 8-bit computers, there have been several techniques used to allow larger pr }ograms and more data to be stored. None of these techniques used to date have been efficient, and most are awkward at best. } The Turbo-816 changes all of that. Because of a lack of definition in the past of the various ways of describing the ma }ny ways the 6502 can address memory, I have made my own definitions as to how the 6502 and Turbo-816 can address memory. I } have broken memory down into several basic groups. They are descibed as follows: Standard: This is the original 64K of }memory that the 6502 can directly access without any gymnastics. In most systems, there would be a 16K section dedicated t }o the ROM space and I/O devices, and the remaining 48K is available for either RAM or cartridges. Extended: This is the } RAM that is available by using a bank selecting technique like the Atari 130XE. Many have upgraded their XL computers to } also have a compatible bank selected RAM area. The Turbo-OS includes several routines to manage and report the amount of }Extended RAM available. The Extended RAM is used and available exactly like it always has been, so your programs that use } the XE banked RAM will still work just fine. Explicit: This is a 1 megabyte area dedicated for RAM or ROM which is inst }alled by using Turbo-SRAM cards. It can be any mix of either Static RAMs or PROMS. The Turbo-SRAM card is compatible wit }h many common sizes of RAMs and EPROMS. The Turbo-OS checks the Explicit range from $010000 to $07FFFF every 32K for a pa }ttern, to detect whether either ROM or RAM exists. The reason for dedicating an area for SRAMs and EPROMs was to allow } for resident programs to be held in either EPROM, or RAM, and for those programs to optionally also have their own dedica }ted data RAM. This would allow you to have several different application programs or device drivers installed in the syste }m, and select from those programs without having to load them from a disk file or insert a cartridge. They would normally } be dormant, and would be activated by a system call. There are several operating system functions which support the Exp }licit memory. There are routines to allocate and deallocate Explicit RAM. There are also routines to Initialize and Execu }te application programs that reside in the Explicit memory range. Expanded: This is an 8 megabyte area dedicated for use } by user applications as either data or program RAM. The Turbo-OS will scan the range of $080000 to $7FFFFF to determine } how much Expanded RAM exists in a particular system. Also, the RAM can be allocated in 256 byte blocks by applications. }This will allow for multiple applications to share the available RAM. There is also a deallocation routine to return alloc }ated RAM back to the system. Proto: This is an area defined for the prototyping card, which is available for any user } developed applications. No production product should ever use this area. This two megabyte area runs from $800000 to $9 }FFFFF and is not checked, or used, by the Turbo-OS. Video: There is a 4 megabyte range of memory dedicated for video }adapters, in the range of $A00000 to $DFFFFF. This will allow for multiple video adapters to have their own RAM, without co }nflict. Also, this RAM is specified as dual-port DRAM, so unlike the ANTIC video RAM, no bus arbitration or DMA is requir }ed to access the RAM, either by the CPU or Video controller. This allows the CPU to run though video refreshes, unlike t }he current system in which ANTIC halts the CPU while it is reading the video RAM out to the shift registers. DataQue: Th }is is an area defined for in-house applications and products, and should not be used by any third party or user products. } This one megabyte area runs from $E00000 to $EFFFFF and is not currently checked, or used, by the Turbo-OS. Turbio: }This block is reserved for Input/Output (I/O) devices and control registers. It is located from $F00000 to $FFFFFF and c }an be used by various peripheral cards. There are specific ranges within this spec for certain devices. At this time, the }only device that uses this area is the 80-column video adapter. Other peripherals such as disk controllers, printer inte }rfaces and co-processors would use this area for their access, to allow for maximum compatibility. Each peripheral and its }supporting device driver should allow for several different locations, to allow for co-existence with other peripherals and } also multiples of like peripherals. for several different locations, to allow for co-existence with other peripherals and 'NOTICE: This article originally appeared in the September, 1989 issue of Atari Interface Magazine and may be freely distribu}ted or reprinted in non-profit User Group publications as long as the article's author and Atari Interface Magazine are cre}dited AND this notice is reprinted with the article. All other publications must obtain written permission from Unicorn Pub}lications, 3487 Braeburn Circle, Ann Arbor, MI 48108, Phone: (313) 973-8825 before using this article. Turbo-Info #3 Wh}at is the Turbo-OS and What does it do? by Chuck Steinman (DataQue) This is the third part of a multi-part information ar}ticle on the Turbo-816 from DataQue Software for the Atari XL/XE computers. The previous installments went over the basic }system and the memory, and this article will explain some of the unique functions of the Turbo-OS. Some background on the} Turbo-OS for those of you which have just tuned into the AIM Channel #816.... The Turbo-OS is an operating system for the }Atari XL and XE computers which either can fully replace the Atari OS you now have or be used in addition to the Atari OS. } The latter application requires the addition of a toggle switch to allow for user selection of which Operating System is a}ctive. A version for the 800 computer will be offered also. The Turbo-OS will only operate in systems with the Turbo-816 C}PU adapter card installed. My original intent was to have both the Atari OS and the Turbo-OS in one PROM. This would hav}e reduced the amount of hardware needed and simplfied installation. Due to my not being able to aquire an acceptable agreem}ent for the Atari OS, the Turbo-OS is a seperate PROM, without the Atari OS included. This results in an additional 28 or s}o solder connections if the "Dual-Prom" option mentioned above is installed. Another option is to use one of the commercia}lly available OS switchers, which include a PC board with multiple OS sockets and a selection switch. There is two sectio}ns to the Turbo-OS, the normal CIO/SIO system interface and the new user interface. The latter is a menu system which allow}s the user to perform many new unique features. Also there are many new CIO vectors, which perform memory management and s}ystem control functions. The Turbo-OS menu features include the following: - A non-interactive NotePad mode which is si}milar to the Atari 400/800 memo pad mode. While not too useful, kids get a kick out of it, and it does come in handy for c}ertain applications. - A full 16 megabyte hexidecimal and atascii dynamic memory dump utility. This will continuously dum}p the contents of a specified block of memory to the screen. There are several command keys to make moving about the large } addressing range a breeze. - A system configuration key, which will scan the addressing range of the Turbo-816 for appli}cations and memory. If applications are found, they are installed into a menu, where they can be executed by a single key s}election. Up to 8 of these applications can exist. - There is a memory option to clear areas of RAM including; Standard R}AM, Banked RAM (extended), Application RAM (explicit), and Expanded RAM. There are several options as to exactly how the R}AM is cleared. - There are many built-in keyboard "hot" keys which can be made active from the Turbo-OS menu. An indicto}r shows the current status of the hot keys. These keys will allow the cursor to move about the screen quicker and turn the }video, key-click, and SIO noise on and off. Also key repeat and delay rate are adjustable from the keyboard. - A built-i}n diagnostics screen will allow for verification of all memory types, including the Turbo-OS PROM. Also, there are provisio}ns for testing the keyboard, joystick controls, paddle controls and other peripherals. - There are also keys to select ei}ther a cold start of the system or an option to return to the users application program if one is active. The new CIO (Cen}tral Input/Output) system calls include the following: - CalcOS: Calculate and return the checksum of the OS ROM in regis}ter A. - TRAMCk: Scan one (or all) of the three types of non-standard RAM. - TAlloc: Allocate a specified amount of o}ne of the four types of RAM. - TDaloc: De-Allocate a specified amount of one of the four types of RAM. - TExecu: Exec}ute an installed Turbo-Application. - TIniti: Initialize an intalled Turbo-Application. - DoBank: Select one of the 1}6 possible Extended RAM banks. - NatVec: Call an OS function from outside the normal 64K address range. - CpyBuf: Cop}y up to a 64K block from/to anywhere in the 16MB range. - FilPat: Fill a block anywhere in the 16MB addressing range with} a pattern. Another feature of the Turbo-OS is the improved floating point package. These routines are called by many ap}plication programs and languages such as the Atari BASIC and Atari Assembler/Editor cartridge. The amount of increase in s}peed ranges from 10% to over 300% and is being improved further. The improved routines were originally coded by Charles Mar}slett and were merged with the Turbo-OS under his direct authorization. Some items, which should be noted about the Turbo-}OS and compatibility with current applications, are: - The C: (cassette) handler was removed to make room for the Turbo-O}S enhancements and Turbo-menu. If the C: device is used, there is an installation option to allow the original Atari OS to} be selected by a toggle switch. Anytime the cassette is needed, a flick of the switch will allow the system to communicat}e with the cassette. - The extended character set table was also removed to free up more memory. This should not be a sig}nificant problem for domestic units, and like the cassette device, could be selected by switching in the Atari OS. - Two }routines to support the uploadable device linker from the 1090 interface were deleted. Their entry vectors terminate with a}n appropriate error. It was felt that there was no need to support this device in the Turbo-OS, and again, the switch opti}on could be used if needed. Insufficient documentation would have precluded me from being able to write the routines from s}cratch anyway. - A few games, and even fewer applications, scan the OS and compare it against the Atari OS. If any OS o}ther than the Atari OS is resident, either an error message is printer or some other abnormal sequence follows. The switch }option will allow these programs to run as normal. - Some user written programs, and a few commercial programs, have used} illegal entry points into the OS. The only valid entry points in the OS are on page $E4xx as listed in several reference }documents. To simplify coding, or reduce code size, some people feel that using subroutines in the OS, other than the vect}ored ones, is a way to reach that goal. This is not as common as it was before the XL series was introduced. - A very ra}re compatibility problem exists where a program either uses an unpublished 6502 op-code or feature. This has only shown up }in two programs out of the several hundred programs tested by the beta testers. There is no easy fix for this, unless the }program itself can be patched to remove the conflict. This would be evident if the program would not run with either OS ac}tivated. - Finally there is a compatibility problem with certain pbi devices which do not buffer the address and data lin}es properly. At this point, the number of problems of this type are limited, but I am looking at several modifications to }the Atari motherboard to correct the problem in all cases. The problem occurs only when the pbi device is attached to the A}tari and is related to noise generated when that device is accessed. when the pbi device is attached to the AUNOTICE: This article originally appeared in the October 1989 issue of Atari Interface Magazine and may be freely distributed} or reprinted in non-profit User Group publications as long as the article's author and Atari Interface Magazine are credit}ed AND this notice is reprinted with the article. All other publications must obtain written permission from Unicorn Public}ations, 3487 Braeburn Circle, Ann Arbor, MI 48108, Phone: (313) 973-8825 before using this article. Turbo-Info #4 New 6}5C816 registers by Chuck Steinman (DataQue) This is the fourth part of a multi-part information article on the Turbo-816 } from DataQue Software for the Atari XL/XE computers. The previous installments went over the basic system, memory and OS. } This article will cover some of the new 65C816 addressing modes. The 65C816 is a 16bit processor, which also has the cap}ability of executing 8bit 6502 instructions. To allow for this, there are two operating modes for the CPU, the EMULATION m }ode and the NATIVE mode. The emulation mode, as it implies, will fully simulate a 6502. The native mode opens up the full  }power of the new processor. Even while in the emulation mode, many new instructions are available. Some are of little u }se because of being limited to the 64k addressing range of the 6502. Many of the new instructions allow for smaller, faster } code. Other instructions offer power which was previously not feasable or practical. Because of the limited 16bit addre }ssing range of the 6502, the designers of the 65C816 realized that if their new processor was to survive, it must be able t}o address more than 64k while still maintaining 6502 compatibility. This was done by using multiplexing which adds another e}ight lines to the address bus. This new 24bit address bus allows for a full 16 megabyte range. Obviously, there was no i}nherent way to control these extra eight lines with the 6502 instruction set, so new instructions and addressing modes would} have to be added. To maintain 6502 compatibility, there would be certian limits to the functionality of those lines while} in the 6502 emulation mode. There must also be the addition of several new registers to allow for dynamic control of the }state of the new address lines. There are two new registers in the 65C816 which control the eight new address lines. The} B register controls the new lines during access to data memory. This would be any time that you would be loading, storing o}r doing manipulations to data external to the processor. This register is also known as the DATA BANK register. The K reg}ister is used any time that program memory is being accessed. This would be when the CPU is fetching an instruction and it}s operands. This register is also known as the PROGRAM BANK register. Both of these registers are eight bits wide. It s}hould be emphasized that the B and K registers are not used in the emulation mode on the T816, so they could be used as gene}ral purpose registers. Because of this, while in the emulation mode, the CPU is limited to the base 64k of memory. This l}owest 64k is where the stock XL/XE motherboard resides in the memory map. The CPU, and Turbo-816, power up in the emulatio}n state, to maintain compatibility with the 6502. In the native mode, the B and K registers are appended to the normal 16bi}t addresses. This allows for expanded addressing, even while still executing the standard 6502 instructions. There are }two other registers which should be mentioned at this time. In the 6502, the lowest 256 bytes of memory had special address}ing modes. They were called "Zero Page Addressing." There were several variations of zero page addressing depending on wh}ich, if any, index registers were used, and also if the data was loaded directly or indirectly. The 65C816 expands this ad }dressing mode by allowing this same addressing mode throughout the base 64k. The register which allows this to be done is th!}e D, or Direct register. The D register is 16bits wide. The contents of this register are added to the user supplied oper"}and, to form the 16bit address. This register is active whether in native or emulation mode, which causes some programmers #}grief, as they assume it is always on page zero while in the emulation mode. The last register is really just an extensio$}n to an existing register. With the 6502, there was the limitation of only having a small 256 byte stack range. This limi%}ted use in applications where heavy parameter passing and stack usage were required. The 65C816, allows the stack to be loc&}ated anywhere in the base 64k, and in the native mode, the stack can be up to a full 64k in theory. A common mistake made '}here is that programmers forget that the stack is always located on page one, and always 256 bytes in size while in the emu(}lation mode. Also, people assume that in the native mode the stack wraps around within the current page. Another feature)} of the 65C816 is that the index registers (X & Y) and accumulator (A) may be either 8bit or 16bits in size while in the nat*}ive mode. The index registers are always the same size, but the accumulator may be seperately sized. Of course while in th+}e emulation mode, all three registers are limited to eight bits. Any time you switch between native and emulation mode the,} registers will be forced to eight bits. The upper byte of the index registers will also be lost. The upper byte of the ac-}cumulator will be retained while in the emulation mode but only accessible through the XBA instruction. Memory accesses wi.}ll always take on the size of the accumulator. This is easily overlooked, especially with the shift and rotate instructions./} Another control function is the E bit in the status register. This bit controls whether the Turbo-816 and CPU are in th0}e emulation or native mode. This bit is changed by using the CLC or SEC instructions followed by the XCE instruction. This1} instruction exchanges the Carry flag with the emulation flag. In this way, you can switch modes easily, and also know whic2}h mode you were switching out of (by looking at the returned carry). There are several additional control pseudo-register3}s in the Turbo-816 which are controlled by the CPU and ANTIC. This allows access to the full 16Mb of address space with th4}e CPU, while limiting ANTIC, GTIA, POKEY, and the PIA to the lowest 64k. These registers are not user accessible directly b5}ut are controlled via functions of the CPU, and ANTIC hardware. st 64k. These registers are not user accessible directly bBNOTICE: This article originally appeared in the November 1989 issue of Atari Interface Magazine and may be freely distribute7}d or reprinted in non-profit User Group publications as long as the article's author and Atari Interface Magazine are credi8}ted AND this notice is reprinted with the article. All other publications must obtain written permission from Unicorn Publi9}cations, 3487 Braeburn Circle, Ann Arbor, MI 48108, Phone: (313) 973-8825 before using this article. Turbo-Info #5 New :}65c816 Instructions by Chuck Steinman (DataQue) This is the fifth installment of a multi-part information article on the;} Turbo-816 from DataQue Software, for the Atari XL/XE computers. The previous installments went over the basic system, memo<}ry and OS. This article will cover some of the new 65c816 instructions. The Turbo-816 can operate in either its native mo=}de or the 6502 emulation mode. While in the emulation mode, the processor has many of the same limitations as the 6502. E>}ven while in the emulation mode, many new instructions are available. Some are of little use, because of being limited to ?}the 64k addressing range of the 6502. Many of the new instructions allow for smaller, faster code. Other instructions off@}er power which was previously not feasible or practical. Of particular use are the PEA, PEI and PER instructions. TheseA} allow the programmer to push data onto the stack without using one of the normal registers. This is extremely useful wherB}e parameters are passed between subroutines. The PEA instruction will push a word-sized value onto the stack. This is eC}xtremely handy for parameter passing, since you can pass absolute values or addresses. You can also pre-load return addressD}es onto the stack, remembering of course that you must subtract a value of one from the destination address. PEA is also iE}nvaluable for setting the Data Bank and Direct registers without using a register. The PEI instruction will push the contF}ents of two consecutive direct page registers onto the stack. For example, PEI $22 will push the contents of direct page aG}ddress $23 onto the stack, followed by the contents of direct page address $22. This is very useful for pushing the contenH}ts of pointers onto the stack. The PER instruction will push a relative value onto the stack, which is the relative offseI}t from the current program counter to the word operand. This can be used to generate relocatable subroutines. Since the oJ}ffset is pushed rather than the actual address, the location of the code will have no bearing on the resulting value (assumiK}ng that both routines are moved an equal amount). The value pushed is a signed word value. Another pair of useful instrL}uctions are the INA and DEA instructions. These instructions will increment or decrement the current value in the accumulatM}or. It is nice when you just want to change the accumulator by a small amount, ignoring any carry. These can also be codedN} as INC A and DEC A by many 65816 assemblers. The 6502 has a nice set of branching instructions, except it overlooks theO} occasion where you would like to branch without any test. The reason for wanting to do this is to generate more relocatablP}e code. The 65816 has two versions of branch always instructions. The BRA is like the other branch instructions in that Q}it has a +127/-128 range. The BRL instruction will branch always to an address within a +32767/-32768 range. Both branchR}es are limited to the current program bank. A unique instruction the 65816 has is the COP instruction. This is an instruS}ction for the (yet to be seen) add-on math co-processor. But not only can it be used for that, but users may also add theiT}r own math 'co-processor' (or other custom routine). The instruction has a required one byte parameter, which is not direU}ctly passed. Like the BRK instruction, the COP instruction generates an interrupt, but does not push the operand onto the V}stack. The COP also has its own interrupt vector. There are two new instructions for bit manipulations also. The TRB (tW}est and reset bit) and TSB (test and set bit) instructions allow you to do a read-modify-write operation between the accumulX}ator and either a direct memory or absolute memory address. I do not know why they did not allow for a long-absolute, or iY}ndexed version, which would be useful. Any bits set in the accumulator when the instruction is executed, will clear (TRB) oZ}r set (TSB) bits in the specified destination address. Since there are quite a few more registers in the 65816 than the 65[}02, there had to be an improvement made in stack handling. The 6502 only had two each of the push and pull instructions. \} You could push or pull the accumulator (PHA/PLA) and processor status register (PHP/PLP). The 65816 adds instructions to]} push and pull both of the index registers (PHX/PHY/PLX/PLY), the direct register (PHD/PLD), the data bank register (PHB/PL^}B) and the program bank register (PHK). As you may notice, you can only push the data bank register, since popping it would_} be somewhat difficult to apply. Of course, with all of the added addressing capabilities of the 65816, there must be so`}me way to directly call routines outside the base 64K of the machine. There is a JML instruction, which is available only aa}s an indirect jump long. I also consider the JMP ABS_LONG a JML but the manufacturer does not agree. There is also a JSL,b} which will call a long subroutine, available only in an absolute addressing mode. There also must be a way to return froc}m one of these long subroutines, which is implemented in the RTL instruction. A few odd instructions are STP, WAI and WDd}M. The STP is used in applications (primarily battery backed ones) where you need to put the processor into the low-powere} sleep mode. The only way to recover from this mode is to reset the processor. The WAI instruction is similar to the STA f}WSYNC that is used in the Atari. This instruction will halt the processor until an interrupt occurs. Unlike the WSYNC, theg} processor will wait for either an IRQ or NMI interrupt. The WDM instruction has the most potential. This instruction is q}B%DOS SYSB*)DUP SYSBBSTURBO1 TXTB-TURBO2 TXTB?TURBO3 TXTB5TURBO4 TXTB<6TURBO5 TXTBB{TURBO6 TXTBORDRFORMATABfRELEASE7ATAthe gateway into the 32-bit 65832 processor, which includes a math co-processor. After four years of waiting, this CPU hasr} not yet been seen (sound familiar?). The last two instructions I will cover are XBA and XCE. The XBA allows the programs}mer to access the upper byte of the accumulator, while in either the NATive or EMUlation mode of the processor. It is also t}handy for a temporary holding place for the accumulator. The upper byte of the accumulator is swapped with the lower byte u}each time the instruction is executed. The XCE exchanges the processor status carry flag with the emulation status bit. v}This is how you move to and from the native and emulation modes. If the carry is set before the instruction, the processorw} will be in the 6502 emulation mode. Now that the basics of the Turbo-816 system have been covered, I feel you are ready x}to see how a Turbo-Application is designed. I will be using primarily Turbo-Calc as a reference. I will cover how you maky}e determinations of what resources are available, and how to implement dual-function routines, without sacrificing much speez}d and code size. Remember, if you have any feedback pertaining to the Turbo-816, feel free to write. sacrificing much speeh NOTICE: This article originally appeared in the December, 1989 issue of Atari Interface Magazine and may be freely distrib|}uted or reprinted in non-profit User Group publications as long as the article's author and Atari Interface Magazine are cr}}edited AND this notice is reprinted with the article. All other publications must obtain written permission from Unicorn Pu~}blications, 3487 Braeburn Circle, Ann Arbor, MI 48108, Phone: (313) 973-8825 before using this article. Turbo-Info #6 D}etermining the System Configuration by Chuck Steinman (DataQue) This article will present one way to set up a program to }run under the Turbo-OS, yet still be compatible with the Atari XL/XE operating system. It is assumed that the reader has s}ome knowledge of programming at the assembly language level. This installment will concentrate on the allocation of RAM. } To make memory management a bit easier for the programmer, the Turbo-OS features several different routines to control memo}ry allocation and de-allocation. There are no such routines in the Atari OS, other than memory is allocated by the operati}ng system for its own use. There are memory locations to indicate the lowest and highest available RAM locations. These p}ointers are modified by the application program rather than the OS. When I set forth to write the Turbo-OS, I determined t}hat there were four types of memory that I would support. To maintain compatibility with current programs, there was a lim}it to what could be done with standard memory, since current applications would not be calling my routines. The same would }apply to the extended RAM, which is banked in the $4000-$7fff range using the PORTB register of the PIA. The nature of the} various types of RAM were discussed in an earlier AIM issue. There have been a few people tell me there is no need for }any memory management on the Atari 8-bit computers. If an application needs RAM, it just uses it, and when the program te}rminates, another program can use it. Well, that presents problems when more than one program has to share memory. This h}appens quite often despite what you may think. If you boot a disk operating system into your computer, and then an applicat}ion program, you would have two programs resident. There are many times when there are incompatibilities between applicat}ion programs and particular DOS versions. DOS 2.x compatibles are usually the worst. Having to load in DUP.SYS is a maj}or trauma. If there is a program in memory you want to preserve, you have to have a MEM.SAV file on the disk. This allows} you to save part of your program to disk, enough to load DUP.SYS into RAM. But then, if you happen to want to copy a file,} you are just out of luck. You either have to corrupt your program or copy a sector at a time. This all happens, even thou}gh there probably is at least 16K of RAM being wasted under the OS ROM. RAMDisks were a fudge to help this problem, automa}tically protecting the resident program would have been a better solution. Yeah, I know, all of you SpartaDOS users are g}rinning from ear-to-ear about now. Well, there are problems there also. Lets say my program wants to use the RAM under th}e OS, or one of the extended (XE type) banks? Can I jump in and use them? No, but not only that, I have no way to determin}e if that RAM is being used. There may be 4 to 16 banks of 16K just sitting there...or SpartaDOS may be using part of them} as a RAMdisk. But how does the application program know? It cannot, since there is no means provided to indicate what ba}nks are available and how many banks there were to start with. Well, I hope you can see my point. Programs should be wri}tten to be more dynamic. If the RAM under the OS is used, then look for banked RAM. If that is already used, or not avail}able, then ask the user what he wants to do. Not just "Hey bud, can I overwrite your valuable data?" but give the guy the }option to save the data, move it or destroy it. I know, I know, why do you need this type of sophistication in a game machi}ne? This is where the Turbo-OS routines jump in. If you have an application that needs four banks of extended RAM, you m}ake the Talloc call specifying you need 4 banks. Those four banks, if available, will be flagged as used, so that other p}rograms will not use them. If there are not four banks available, then a bitmap of all free banks is returned. A similar }procedure is followed by the extended and explicit RAM types. Enough talk. I am sure you programmer types want to see so}me code fly by your tired eyes about this time. Well, I will present a code segment which will determine whether there is} a Turbo-OS (and Turbo-816) installed, and what memory is available. Better buckle up, here we go! ; first some memory} locations need to be defined. basebyte dsb 1 ; memory base address basepage dsb 1 basebank dsb 1 las}tbyte dsb 1 ; memory ending address lastpage dsb 1 lastbank dsb 1 tempvar1 dsb 1 ; temporaries }tempvar2 dsb 1 tempvar3 dsb 1 expanded dsb 1 ; flag for expanded RAM availability ; note: this segment} is fully code relocatable. appropriate lda #$a5 cmp #$c001 ; this is a flag to ind}icated there bne not_816 ; is a Turbo-816 installed cmp #$c000 } beq was_816 not_816 lda #$00 ; set all flag/pointer defaults sta e}xpanded ; no expanded RAM available sta basebank ; dont really need to do these two } sta lastbank ; but, let's be offical! lda #memlo ; construct a pointer} to the lowest sta basebyte ; available standard RAM address lda #memlo+1 } ; as determined by the OS & DOS. sta basepage lda memtop ; constru}ct a pointer to the last sta lastbyte ; available standard RAM address lda }memtop+1 sta lastpage ldy #$00 rts ; no t816}, so we are all done! was_816 lda #$03 ; scan for expanded RAM jsr tramck } ; Turbo-OS RAM check routine lda taraml ora taraml+1 ; was any expan}ded found? beq not_816 acc 16 do_expand lda taraml ; preset} to max available do_loop sta tempvar1 pha ; push amount onto stack } acc 08 lda #$03 jsr talloc ; go allocate it } acc 16 pla ; pop base address off stack sta basepage } clc adc tempvar1 ; add amount to get ending address s}ta lastpage acc 08 cpy #$00 ; was there an allocation error? } bpl no_error error acc 16 ; RAM may not be contiguous lda t}empvar ; back off by a page, check again dea ; to find largest contiguous block } bne do_loop ; of unused RAM. acc 08 ; return with error statu}s ldy #$ff ; RAM was not found w/o error rts no_error st}z basebyte ; always begins on a page boundry lda #$ff sta lastbyte ; }always ends before a page boundry sta expanded ; set flag for later testing } ldy #$00 rts sta expanded ; set flag for later testing ' ----------------------------------------------------------------------- Order Form for DataQue Products: From!}: (name)_________________________________________________________ (addr)______________________________________!}___________________ (city)_________________________________________________________ (state/prov)___!}________________________________________________ (country/zip code)_____________________________________________!} (for computer)_________________________________________________ (order date)______/______/________!}(PO #)_______________________ Send to: DataQue Software Post Office Box 134 Ontario!}, OH 44862 USA ------------------------------------------------------------------------ Item # Quant!}ity Part Code Description Each Total ------ -------- --------- ----------------------- ------- ---!}------ __01__ ________ _________ _______________________ $___.__ $_____.__ __02__ ________ _________ __________!}_____________ $___.__ $_____.__ __03__ ________ _________ _______________________ $___.__ $_____.__ __04__ ____!}____ _________ _______________________ $___.__ $_____.__ __05__ ________ _________ _______________________ $___.__!} $_____.__ __06__ ________ _________ _______________________ $___.__ $_____.__ __07__ ________ _________ _____!}__________________ $___.__ $_____.__ __08__ ________ _________ _______________________ $___.__ $_____.__ __09__ !} ________ _________ _______________________ $___.__ $_____.__ __10__ ________ _________ _______________________ $_!}__.__ $_____.__ total merchandise ........................................... $_____.__ shipping and handling .......!}................................ $_____.__ additional costs (foreign and COD) .......................... $_____.__ to!}tal amount of order ....................................... $_____.__ * Foreign orders must be prepaid by money order dra!}wn on a US bank, and must include an extra $5.00 processing fee. COD orders are shipped by USPS COD which are $5.00 !}additional, and must be payed in cash. * Diskette orders please include $3.00 for the first diskette, and $0.50 for ea!}ch additional diskette for shipping and handling. * Hardware orders please include $5.00 for the first item, and $1.00 !} for each additional item for shipping and handling. -------------------------------------------------------------------!}---- ch additional item for shipping and handling. -------------------------------------------------------------------  From: DataQue Software Post Office Box 134 Ontario, OH 44862 GEnie: %} DataQue.1 Compuserve: 71777,3223 DELPHI: DataQue BBS: (419)529-5197%} Subj: Product Information Release #7 November 15, 1989 --------------------------------------%}---------------------------------- TURBO-816: ---------------------------------------------------------------------%}--- For those not familiar with the Turbo-816: The Turbo-816x is a 16-bit CPU upgrade for the Atari XL/XE compu%}ter. This upgrade will add 16-bit working registers, a 24-bit address bus, and numerous new addressing modes and in%}structions. All this new power is available to new programs written to take advantage of the new CPU, while maximu%}m compatibility with current hardware, and software is maintained. Included with the Turbo-816x is a new operating%} system PROM, which can be installed to replace your current Atari OS, or using a switch circuit, used in addition to th%}e Atari OS. The Turbo-816x is clocked at the same speed as the original Atari CPU, so that current games and such%} will run at approximately the same speed as with the stock CPU. Since the OS, Interrupts, and Floating Point pac%}kage are more efficient than the stock OS, existing applications will realize a speed increase proportional to their %} OS usage. The Turbo-816x comes packaged with the following: - Turbo-816 adapter board for the XL/XE computer%} systems. - Turbo-OS Operating System 28-pin PROM (2 for 1200XL). - CPU 12 inch ribbon cable with connectors. %}- Installation, and Operating Directions. Included also are the following files on two SSSD disks: T816XRF.DOC %} Turbo-OS to Atari 400/800 & XL/XE OS cross-ref guide. T816CAL.DOC Turbo-OS function call information. T816INC.D%}OC Turbo-OS MAC/65 compatible include file. T816MAC.DOC Turbo-816 MAC/65 compatible macros for 65816 instructions. %} T816MAP.DOC Turbo-OS memory map guide. T816BUS.DOC Turbo-816 expansion bus pinout. T816SYS.DOC Turbo-OS sys%}tem call examples. T816PAL.DOC Turbo-OS menu features, and issues. Several Example files are also included. %} ------------------------------------------------------------------------ TURBO-SRAM/PROM: -----------------%}------------------------------------------------------- The Turbo-SRAM/PROM boards are also available now. These boar%}ds will hold two memory devices. Supported types are 62256 (32k SRAM), 66204 (128k SRAM), 27128 (16k EPROM), 27256%} (32k EPROM), 27512 (64k EPROM), and 27010 (128k EPROM). Information to configure the card for other devices is su%}pplied. Both devices should be the same size, although you may have one SRAM device, and one PROM device. Normal%}ly if the two devices are not the same size, the board is configured to support the size of the larger, unless the %}smaller device is a SRAM, in which case it is suggested that the card be programmed for that device (due to foldback). T%}his is programmable within certian limitations. The Turbo-SRAM/PROM board may be located from $010000 to $08FFFF %}as explicit memory, or $090000 to $0FFFFF as expanded memory. The memory card will only work with the DataQue Turb%}o-816 proprietary bus structure. It will not function with a normal 6502 (at least not without changes). If used%} as expanded RAM, 4k of the total available expanded RAM will be dedicated for memory management. Included with t%}he board is a user guide and 12" ribbon cable with with connectors. The cable will support one memory card. A larger %} active cable will support multiple (eight maximum) cards when released. --------------------------------------%}---------------------------------- TURBO-CALC: --------------------------------------------------------------------%}---- Turbo-Calc is a cartridged based spreadsheet program for the Atari 800/XL/XE/XEGS/T816 systems. It will wor%}k with, or without a Turbo-816 installed. With most DOSes, there is about 20k of space available for spreadsheet %}data using Standard RAM. If expanded RAM is available, the spreadsheet could potentially support up to 8Mb of cell%} information. Obviously the Turbo-816 is required to allow access to expanded RAM. Turbo-Calc functions may be c%}alled one of two ways. You may either use Hot-Keys to activate all commands and functions, or by a special user en%}vironment. Turbo-View, is a graphical operating system (GOS), which is resident with application programs. This allow%}s the GOS to be customized for each application, while maintaining a common functionality between applications. %} Turbo-Calc and Turbo-View source code are available seperately to registered owners of Turbo-Calc. See the price li%}st for more information. The source code of Turbo-Calc, allows the beginning 65816 programmer a clear reference a%}s to applying the Turbo-816, while still maintaining compatibility with the current 8-bit line. The actual source c%}ode remains the property of DataQue Software, and is provided for reference purposes only. Turbo-View source has %}routines for handling drop down menus, buffered windows, joystick control, and routine selection. The source code&} is available to developers to include into their applications. There is a one-time licensing fee for Turbo-View, &}for programs which are to be distributed, in addition to the normal cost of the source code alone. The only other requi&}rement is that the used of the Turbo-View routines be acknowledge within the application, as outlined in the provid&}ed documentation. ------------------------------------------------------------------------ PRICING: ----&}-------------------------------------------------------------------- Current pricing as of 11/15/89. Prices subje&}ct to change without notice. All prices are in US Dollars. List ---- Quantit&}y Pricing ---- Item Code Description Price 1-2 3-5 6-9 10-20 --------- ---------------- &} ------- ------- ------- ------- ------- T816X-K Turbo-816 Kit $169.00 $120.00 $108.00 $96.00 $84.00 &} Turbo-816 for the XL/XE computers. Includes adapter board, connection cable, Turbo-OS PROM,& } installation and usage guide, programming information diskettes. Please indicate which syst& }em (600xl, 800xl, 130xe, or 65xe). Note: 1200XL function keys and lights are not supported by & } the Turbo-OS. Also, to make room for added features the international character set, and ca& }ssette device handler have been removed from all versions of the Turbo-OS. Insta& }lling the Dual-Prom option will allow use of the Atari OS in applications where those features &} are desired. T816X12-K T816 for 1200XL $199.00 $130.00 $118.00 $106.00 $94.00 &} Same as XL/XE kit, except includes two PROMs for the 1200xl. T816INS T816 Installation into computer $30.0&}0 Includes installation of a Turbo-816 into an Atari 600XL, 800XL, 65XE, 130XE, or 1200XL. &} Units will be tested before installation, and will not be modified if the unit does not pass&} the test. Price includes any needed sockets for the CPU and PROM and wire. Dual-Prom installation includes&} sockets, wire, and toggle switch. Installations usually have a two day turn-around. Please &}provide name, address, and phone number with unit. T816IND T816 Installation w/Dual Prom Option $&}45.00 Includes installation of a Turbo-816 into an Atari 600XL, 800XL, 65XE, or 130XE. Uni&}ts will be tested before the installation, and will not be modified if the unit does not pass&} the test. Price includes any needed sockets, wire and toggle switch. Installations usually have a three da&}y turn-around. Please provide name, address, and phone number with unit. Not available on 1&}200XL. T816-OSW Turbo-OS source listing $200.00 Turbo-OS listing includes a list file of the &}current version of the Turbo-OS. It is available only as a listing file. A signed non-disclo&}sure form,must be included with the order. Write for more information. This is not for resale, and must &} be purchased directly by the developer. Purchase does not grant any usage rights to the informat&}ion contained within, other than for writing compatible applications. Available on either A&}tari DOS 2.x, or MS-DOS formats. T816-S16 Turbo-Calc $60.00 $40.00 $36.00 $32.00 $28&}.00 Turbo-Calc is a cartridge based spreadsheet program. It supports 104 columns and 99 r& }ows of information. It can use either standard or expanded memory (if t816 installed). Turbo&!}-Calc will work with stock XL/XE/800 systems using the standard memory. Includes user guide. &"} T816-S16W above w/src list $80.00 $59.00 $50.00 $45.00 $40.00 The T816-S16W includes the&#} Turbo-Calc cartridge, user guide, and program listing for the spreadsheet. This is provided for &$} informational purposes only. Please specify Atari or MS-DOS disk format. Note: Turbo-V&%}iew environment not included (see below). T816-V16W Turbo-View source code $80.00 (private use on&&}ly) T816-V16D Turbo-View source code $120.00 (developer use) Turbo-View is a graphical operating&'} environment, which uses the graphics 0 (antic 2) mode. The source code supplied contains th&(}e windowing routines, and execution control algorithms. Supplied also is the Turbo-View module of the &)} Turbo-Calc program, to show an actual example of its use. Purchase of source allows usage in non-di&*}stributed programs. For the developer version of the source code, a signed non- disclosure &+}form must be included with the order. Write for more information. The source itself is not for resale, and &,} must be purchased directly by the developer. Specify Atari or MS-DOS disk format. ---&-}--------------------------------------------------------------------- POLICY: -------------------------------------&.}----------------------------------- We accept personal checks, Money Orders, or cashier's checks made out to Data&/}Que Software. Personal checks must clear before shipment is made. If you would prefer a COD delivery, include $5.00 for &0}special handling. Shipments are shipped via parcel post unless special handling is indicated. Foreign orders must&1} be a money order drawn on a US bank, and require an additional $5.00 added to the total amount. Any taxes or dut&2}ies are the responsibility of the purchaser. Dealer purchases require the indicated quantity to receive a discount. &3} Your initial purchase should include a photocopy of your venders licence for validation. Diskettes may be mixed to q&4}ualify for maximum discount. Any dealers selling Turbo-816 products must offer installation at a reasonable cost. &5} DataQue warrents its products for 1 year on parts (hardware and media), and 90 days on labor. Shipping to DataQue &6}Software is the responsibility of the customer, and return postage is payed by DataQue. Please include a complete&7} description of the problem, and a phone number in case we need to contact you. ---------------------------------&8}--------------------------------------- number in case we need to contact you. ---------------------------------$)