@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@W!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr 12 4 1 5 0 10 70 2 12 144@227=============================================================DE RE ATARIU}PDATE FOR THE XL-COMPUTERS=============================================================----------------------------------}---------------------------CONTENTS-------------------------------------------------------------1. Introduction......}..................................2292. Literature on the XL-computers......................2303. Comparing the old a}nd the new systems...............231 3.1 The HELP-key...................................232 3.2 Redefining the Ke }yboard........................233 Contents of the Key Definition Table...........233 Nondefinable Keys an }d Key-combinations.........236 3.3 User selectable Key-repeat rate................236 3.4 Switching between Upper }- and Lowercase printing.......................................237 3.5 Selftest on powering up............... }.........238 3.6 Additionally available Screen modes............238 3.7 Finescrolling of Textwindow.............. }......239 3.8 Improvement of Disk Communication..............239 3.9 Switching Key-klick On/Off..................}...240 3.10 Changing between Standard and International Characterset...................................2404.} Memorymap of the XL-system..........................2415. Improvements of the XL-system over the previous Model..}.............................................2436. Other Imporvements / General Information.........................}................245Appendix A Sample of redifinition of the Keyboard..................................2}47Appendix B Suggestion for a special Characterset for the New Graphics Modes....................248-}------------------------------------------------------------INTRODUCTION-------------------------------------------------}------------This is an update for DE RE ATARI and it treats the special features of the XL-system.Like explained in par}agraph 3.5, the XL line of products is a further development of the old 400/800-line. The operating system is almost similar.} This means that the data available in the OS-manual for the old 400/800 machines are also valid for the XL-models.This upd}ate is to inform the user on the additional features and adresses of the XL-computers. Details and charcteristics of the peri}pherals will also be treated.-------------------------------------------------------------Literature on the XL-computers}-------------------------------------------------------------1. The OS-MANUAL for the ATARI(tm)-Home-computer: This boo}k discusses the operating system for the old 400/800-machines and is the basis for the changes as discussed in this text.2.} The Hardware-Manual for the ATARI(tm)-Home-computer: The hardware manual contains information on the hardware registers wh}ich control the miscellaneous functions of the ATARI-computer.As far as they are part of the operating system, this manual a}lso treats the hardware registers required for the additional functions. So the programmer can use the Hardware Manual to fur}ther improve his or her knowledge of the hardware.3. DE RE ATARI: This book shows the possibilities for effective program}ming of the ATARI(tm)-Personal Computer Systems.-------------------------------------------------------------Comparing t }he old and the new systems-------------------------------------------------------------The following list shows all the s!}ubjects to be covered in this chapter. All the features of the XL-machines will be dealt with separately.Subjects:1. T"}he HELP-key2. Which key-codes can be changed and how is it done.3. How to change the key repeat-rate.4. How to sw#}itch between upper and lower case printing.5. What happens during selftest.6. What extra screen modes are available o$}n the XL-machines.7. How to achieve fine-scrolling of the text-window.8. The changes brought into the disk-handler to%} achieve better disk communication.9. How to switch the key-click on and off.10. How to change between the standard an&}d the international characterset.The numbers in the above list relate to the number of the chapter. Point 4 e.g. refers to'} chapter 3.4.3.1 The HELP-keyThe operating system recognizes during the keyboard-scan if the HELP-key has been pressed(}. If so a flag will be set in the form of a systemvariable.The HELP-key does not generate a ATASCII-code which can be chec)}ked by a program. Only the systemvariable will be influenced. So, next to the normal keyboard handling, a program that has to*} check for a press of this key will have to check whether the systemvariable HELPFG ("helpflag") has been changed indicating +}that the user has asked for help.The HELPFG-variable is located at memory-location $02DC. Below we will see a list of the ,}possible contents of this adress and its meanings.Hexadecimal meaning value 00 The flag has been cleared-}. 25During power up it has been set to 00 and has to be reset likewise by the program everytime after a change. 10 11 .} The HELP-key only has been pressed. 51 The combination SHIFT/HELP has been pressed. 91 This /}value is generated on pressing the combination CONTROL/HELP.3.2 Redefining the keyboardIn the XL-comput0}er exists a table defining the individual keys. The Operating System uses its own datatable indicating the normal keyboard la1}yout. The user can now produce a definition-table of his/her own. It is then of course necessary to tell the Operating System2} where to find the new table in memory.An application for such a definition table might be to try out a different and maybe3} better keyboard lay-out, like the DVORAK-design. The reader can then decide for himself.CONTENTS OF THE KEYBOARD-DEFINITIO4}N-TABLEThis table allows the generation of any desired ATASCII-code or internal function by almost any key. The exemptions 5}will be treated at the end of this chapter. First a certain area in memory must be found and protected to redifine the keys i6}n a table of 192 bytes. In this table the user stores the new key-definitions. Afterwards the operating system is informed wh7}ere to find this table in stead of the normal one.This table is made up of the following parts:Lowercase64 Bytes(Start8}s with a user defined address 0). Part of table with lowercase letters.SHIFTed keys64 BytesPart of table with capital lett9}ers.CTRLed keys64 BytesPart of table with CTRL-key combinationsThe last byte of this table is on address KEYTABLE-START :}+ 191.The reason for the division in 3 parts of this table lies in the hardware, which can handle only a total of 64 bytes a;} time. These codes, numbered 00-63 (= $FF-$3F), are used as a direct index within a part of the main table. What part is invo<}lved depends on the actuation of either the SHIFT- or the CTRL-key.Note: there is no part of the table which allows simulta=}neous printing of SHIFT- and CTRL-key-combinations. These combinations are unvalid and ignored by the operating system.Ever>}yone of the three parts, large 64 bytes, has the following form:Code 00 Byte 0 contains the transformation for th?}e keycode 00 by the CTRL-, SHIFT- or none of these keys. This depends of the selected part of the table.Code 01 Byte @} 1 Contains the transformation of keycode 01.......................Code 63 Byte 63 Contains the transformation A}of keycode 3F.The codes that are placed in the table by the user generate either an ATASCII-code (for later conversion toB} certain signs) or system functions. Especially the codes from $80 to $92 are treated by the system in a special way. This coC}nversion is indicated in the next table:CODES AND THEIR ACTION ON THE SYSTEM AFTER CONVERSIONCODE EFFECT (as far asD} applicable)$00 / $7F Only used as ATASCII-code.$92 / $FF Only used as ATASCII-code.$80 Ignored, invalid key-combinE}ation.$81 Inverts screen display.$82 Switches between lowercase and uppercase.$83 Locks on uppercase.$8F}4 Locks on CTRL-combinations.$85 End-of-file.$86 ATASCII-code;$87 ATASCII-code.$89 Toggles G}keyboard-click.$8A Cursor up.$8B Cursor down.$8C Cursor left.$8D Cursor right.$8E Cursor hH}ome (upper left corner).$8F Cursor to lower left corner.$90 Cursor to left side of screen.$91 Cursor to I}right side of screen.The next table shows the individual codes for capital letters. The physical position of the single keyJ}s within the table determines the generated code. To find the corresponding code the reader must add the values of row and coK}lumn. The resulting number is the hex-value required by the operating system. ($00/$3F).KEY DEFINITION TABLELET OP !!L}!!LET OP !!!!LET OP !!!!LET OP !!!!LET OP !!!!LET OP !!!!LET OP !!!!LET OP !!!!LET OP !!!!LET OP !!!!LET OP !!!!LET OP !!!!LEM}T OP !!!!LET OP !!!!LET OP !!!!LET OP !!!!LET OP !!!!LET OP !!!!LET OP !!!!LET OP !!!!LET OP !!!!LET OP !!!!LET OP !!!!N}TABEL UIT DE DUITSE VERSIE VAN DE RE ATARI OVERNEMENAn example: The capital letter "C"is found in the table in row 10 anO}d column 2. So the hardware generates a hardware-code with the value of $10 + $2 = $12. The ATASCII-code of this sign is storP}ed in the key definition table in location $12, this is applicable to all kinds of entry of "C" ( C alone, with SHIFT or withQ} CTRL). The user now can cause the execution of a function or the printing of a certain ATASCII-character while the contents R}of the key definition table is changed at location $12.After the new key definition table is produced and stored in memory,S} the user must inform the operating system where to find it. This is done by storing the address of the start of the table inT} locations $79 and $7A. The operating system will then use the new table for the conversion of the key combinations.The low U}byte of the start address of the key definition table must be stored in address $79, the high byte in address $80. These two V}locations together give one of the many system vectors of the computer. On powering up or pressing the RESET-button their valW}ue is reset as to point to the table with the original definitions.NONREDIFINABLE KEYS AND KEYCOMBINATIONSThe followingX} keys and keycombinations are wired in a special way or are treated as such by the operating system and can therefore not be Y}redefined.Although these keys generate a specific code and have an own allocation in the conversion table it is not possibZ}le to redefine them. The operating system "catches" the hardware-code of these inputs directly to always allow for the specia[}l functions implied and prevent jumps to the conversionmode. The following keys are excluded from redefinition:BREAK T\}his function is separately treated by the operating system. It is recognized by the hardware.SHIFT This key is part of ]}the hardware to code all keypresses.CTRL For this key the same applies as for the SHIFT-key.OPTION,SELECT,START ^} These three keys are directly connected to the GTIA-circuits and are recognized as such.RESET Is directly connected t_}o the RESET-line of the 6502-processor.HELP This function is layed down in the operating system. The actual processing`} of the HELP-function is treated in another part of this manual.CTRL-1 This key-combination stops and starts the output a}to the screen. It functions as a start/stop-function during a listing and is "cought" by the operating system during the decob}ding of the hardware determined key-codes.3.3 USER DETERMINED KEY REPEAT FUNCTIONThe operating system of the XL-Series ac}llows the user to choose the rate at which a key starts repeating, after is has been pressed for some time. This can be achied}ved by a program which alters the OS-system variable KEYREP. This is located at address $02DA. some time. This can be achie`12 4 1 5 0 10 70 2 12 144@237This variable determines the rate at which the occurred VBLANK-(vertical blanksf})intervals are counted. For the PAL-system it is 5, for the NTSC-system 6. These values have as an effect that in both systemg}s a key is repeated 10 times per second.By changing this variable a maximum rate of 50 (PAL) or 60 (NTSC) can be attained h}which corresponds to the screen-refresh rate. This can be achieved by putting a 1 in it.The user can also determine the tii}me that is required before the key-repeat starts. The controlling OS-variable is called KRPDEL and located at address $02D9.j}This variable controls the number of VBLANKS before the first repeat starts. Than the above procedure controls the actual rk}epeat again. The initial value of this OS-variable is 40 (PAL) or 48 (NTSC) which allows for a delay of 0.8 seconds before a l}key starts repeating.3.4 SWITCHING BETWEEN UPPER CASE AND LOWER CASE PRINTINGThe function of the CAPS-key is in the XLm}-series incorporated as follows:KEYCOMBINATION CURRENT STATUS NEW STATUSCAPS CTRL-locked lowen}r caseCAPS upper case lower caseCAPS lower case upper caseSHIFT/CAPS - ano}y - upper caseCTRL/CAPS - any - CTRL-lockedSHIFT/CTRL/CAPS - any - no changeTp}he status above implies the following:Lower case: All keys operate in lower case mode.Upper case: All alphabetic keys (A-q}Z) operate in upper case mode, all others in lower case mode.CTRL-locked: Alle keys operate as if pressed together with ther} CTRL-key.3.5 SELFTEST ON POWERING UPDuring powering up the operating system of the XL-series computers performs the fos}llowing tests on RAM and ROM:a) Is it possible to write the value $FF to all RAM memory locations?b) Is it possible tt}o write the value $00 to all RAM memory locations?c) Is the current checksum of both ROMS the same as the originally storu}ed values?As soon as any of these tests fails the operating system will automatically transfer control to the selftest-routv}ine for the memory-test. This leads to a more intensive test of both RAM and ROM.3.6 ADDITIONALLY AVAILABLE SCREEN MODESw}The XL-machines allow, contrary to the old 400/800's, direct access to the display-processor. The following table gives the x}modes directly available in the old models. The second table gives the new screen modes of the XL-computers as well as the nuy}mbers to be used in calling them.Directly available screen modes of the ATARI 400/800 "TM"-computers.Software-mode z}ANTIC-mode GTIA-modelet op let op let op let op let op let op let op let op let op let op let op let op let op let op {}let op let op : neem tabel over van pagina 208Additionally available direct access screen modes of the XLseries:Software|}-mode ANTIC-mode GTIA-mode12 ($0C) 4 ($04) 0 (note 1)13 ($0D) 5 ($05) 0}} (note 1)14 ($0E) 12 ($0C) 015 ($0F) 14 ($0E) 0Note 1: The existing charactersets~} do not show recognizable signs on the screen. For this reason the user must define own charactersets when these modes are ap}plied. This is described earlier in DE RE ATARI.In addendum B of this text an example of such a special characterset is sho}wn, it is fit for these modes.3.7 FINESCROLLING OF TEXTWINDOWThe screen-editor of the XL-series allows finescrolling }of the data on the textwindow as an option. This option is initiated by putting a value unequal to zero in the databasis-vari}able called FINE (memory location $026E) before the OPEN-command is issued to the screen-editor. Likewise finescrolling stops} when the value of zero is put there again before the OPEN-command.3.8 IMPROVEMENT OF DISK COMMUNICATIONThe resident d}isk-handler routines in the XL-computers allows to read and write sectors with a variable length between 1 and 65536 bytes. T}he standard value is like with the old serie 128 bytes. This is the value installed during power up and after pressing RESET.} A program can control this sector length through the OS-variable DSCTLN. The latter is a 2-byte variable found at addresses }$02D5 and $02D6 (LO-byte in $02D5, HI-byte in $02D6).Additionally the XL-computers can write without verify, this being imp}ossible on the old computers. The command is "P" and not found in the old operating system.This makes it possible for the u}ser to decide whether to to choose for certainty (verify writes) or for speed (no verify). This is best decided upon some tes}ts.3.9 SWITCHING KEY-CLICK ON/OFFThe user may switch the audible key-click on or off under program control. The only th}ing that has to be done is to change one variable, to indicate to the operating system whether or not to switch on the key-cl}ick. This variable is called NOCLIK and found at location $02DB.When we switch on the device or press the RESET-key this OS}-systemvariable is initialised with a value of 0. This means that key-presses will produce a click-sound. To end this sound a} value of $FF must be stored in location $02DB.3.10 CHANGING BETWEEN STANDARD AND INTERNATIONAL CHARACTERSETThe inter}national characterset is located in ROM and starts at location $CC00. By writing the value $CC in a location called CHBAS ($0}2F4) this characterset is selected. The standard characterset is also place in ROM and found starting at address $E000. If we} place a value of $E0 in CHBAS then this version is selected.4 MEMORYMAP OF THE XL-SYSTEMThe following table shows how t}he 6502-processor devides the address-space. The maximum space that the 6502-processor can address with 16 bits lies between }$0000 and $FFFF. Hardware circuits devide it in the following way.NOTE: The ATARI 800XL (TM) uses, similar to the expanded} ATARI 600XL (TM), an addressable memoryspace of 64K RAM. This memory would normally be completely accessible, but the Memory}-Manager (for memory allocation) devides it so that native ROM's, ROM-modules and peripherals get the memory they need.ME}MORYMAPLET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET O}P! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! (VOOR LAYOUT IN HET ORIGI}NEEL KIJKEN S.V.P.)LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! L}ET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! LET OP! HEX-ADDRESS } OCCUPIED BY NOTEFFF-D800 OS-ROM or RAM, when switched off 1D7FF-D000 This memory-page contains the} chip-select locations for peripheral chips.Memory-mapped I/OD000-D0FF GTIAD200-D2FF POKEYD300-D3FF PIAD400-D4FF A}NTICD500-D5FF Every location in this area activates the CCNTL-control circuit of the module-interface (same on old models).}D100-D1FFD600-D6FF reserved for future applications.D700-D7FFOS-ROM physically available but not addressable. 2C}FFF-C000 OS-ROM or RAM when ROM is switched off.BFFF-A000 RAM or module-interface, when line RD5 is at +5V because} of inserted modules.9FFF-8000 RAM or module-interface, when line RD4 is at +5V because of inserted modules.7FFF-5800} RAM5FFF-5000 RAM, when not in selftest-mode.4FFF-0000 RAMNOTES:1. Writing a value of 0 to port B of the PIA, bit PB}O, disables the OS-ROM. Normally it is enabled by a 1 on this bit. (When this bit is to be changed others must not be.)2. } The selftest-ROM-code is available at addresses $D000-$D7FF. This area though is required for access of the I/O-devices ment}ioned in the memory-list. When the selftest is activated, RAM at locations $5000-$57FF is disabled. The memory-manager redefi}nes the memory such as to gain access to locations $D000-$D7FF of the physical OS-ROM's through locations $5000-$57FF. It use}s Port B of the PIA, bit PB', to determine whether to access ROM or RAM in area $5000-$57FF. On a value of 1 in PB7 RAM is ac}cessed, otherwise OS-ROM. (When this bit is changed other bits of this register must be unaffected.)(Port B in the old 400/}800-series was used to operate joysticks 3 & 4)5. IMPROVEMENTS OFTHE XL-SYSTEM OVER THE PREVIOUS MODELThe functions of }the old ATARI 400/800 (tm) operating system rev.B where improved with the following possibilities:Printer-CLOSE with data-}bufferThe printer-handler inserts, before the contents of the buffer is transmitted by CLOSE, an EOL-character (End Of Line}), when not available. This guarantees that the last line is printed directly instead of in a separate line.Processing of }unit-numbers of printersThe printer handler is changed such as to incorporate the number of the printer in the IOCB. This a}llows access of up to 8 printers through codes P1 till P8.CIO-processing of incomplete sets during readingThe CIO places} an EOL-character in the user-buffer when the data-set is too long or when an EOF comes up during reading. This makes all dat}asets accessible. Even when the user selected a buffer too small, a fitting amount of data is read in.CURSOR-treatment of }the display-handlerThe display-handler now accepts a clear-screen command irrespective of the cursor's x- or y-position.}Memory erasure by the display-handler / screen-editorThe display-handler and the screen-editor now do not erase memory abov}e the end indicated by RAMTOP. This makes it possible for the user to apply the end of available memory, after screen-memory,} for own machine-language programs or device-handlers. Changing the graphic mode does not erase memory beyond screen-memory a}nymore and keeps this inaccesable for the OS.Improved floating-point arithmeticIn the XL operating system a bug of rev. B} OS is removed. Attempts to calculate LOG(0) or CLOG(0) now produce an error-status.New ROM-vectorThe following entry-po}int is newly inserted in the ROM of the XL-series.E480 JMP PUPDIS Entry of selftest routine.Other improvements / general} informationThis section handles points that concern changes of the operating system but are hard to categorize elsewhere.}IMPROVEMENTS IN SYSTEM VARIABLE PROCESSINGDuring the normal power-up sequence (Coldstart) the system-variables from $03ED }till $03FF will be put on 0. After RESET (Warmstart) this is NOT done by the OS. A softloadable operating system can use thes}e memory locations without requiring to be loaded again after a RESET-operation.All these bytes are reserved for future OS-}versions!TIMING OF NTSC/PAL VERSIONSThere are several timing differences between PAL- (50 Hz) and NTSC- (60 Hz) versions}. To avoid the necessity to provide different ROM's for different systems both sets of values for timing adjustments are stor}ed in one ROM-set.To determine which TV-version it is working with the OS tests a flag in the GTIA-chip and installs the ti}ming requirements accordingly. This is possible because the GTIA exists in different versions to serve the different TV-syste}ms. By setting the timing requirements in correspondance with this flag it is possible to make the ROM's independent of the T}V-system.The timing values required for the operation the ATARI cassette-recorder and the key-repeat function are mentioned} in the list below:LET OP!LET OP!LET OP!LET OP!LET OP!LET OP!LET OP!LET OP!LET OP!LET OP!LET OP!LET OP!LET OP!LET OP!LET OP!} TABEL-LAYOUT IN ORIGINEELINDEPENDENT CASSETTE TIMINGS timingInter-record-gap (IRG) during write 3.0 sec.IRG du}ring read (long) 2.0 sec.IRG during write (short) 0.25 sec.IRG-delay during read (short) 0.16 sec.}Data-leader during write 19.2 sec.Data-leader-delay during read 9.6 sec.Duration of beep-tone 0.5 sec.Separ}ation of beeps 0.16 sec.INDEPENDENT KEY-REPEAT FUNCTION timingrepeat-delay 0.8 sec.repeat r}ate 10 char's/sec.INDEPENDENT KEY-REPEAT FUNCTION timingrepeat-delay 0.8 sec.repeat r%2 4 1 5 0 10 70 2 2 144@247APPENDIX AEXAMPLE OF A REDIFINED KEYBOARDLike we discussed before, the sepa}rate keys of the keyboard can be redefined. The next table gives the key-layout according to the DVORAK-system (also mentione}d the simplified American system). When the typewriter was invented in 1867, it's inventor Christoffer L. Sholes, had to devi}se a key-board layout to minimize speed of the typists and thus save his machine from destruction. This system of key-layout }is kept till today.In 1932 August Dvorak invented a new layout which put the most abundant keys including vocals in the bas}eline. Furthermore the rest of the letters were laid out such that the operation-ratio left/right changed from 65% vs 35% was} brought to 50% vs 50%. Some suppliers have the Dvorak-keyboard as an option. Now the user of the XL-computer has the possibi}lity to try out the Dvorak-system himself by redefining the keyboard according to the following instructions.UPPER ROW OF K}EYS:Normal: Qq Ww Ee R T Y U I O P 1/4 1/2Dvorak: ?/ ,, .. P Y F G C R L " 'MIDDLE ROW OF KEYS:Normal: A S D F G H} J K L :; "'Dvorak: A O E U ID H T N Ss __(understrike)BOTTOM ROW OF KEYS:Normal: Zz X C V B N M , . ?/Dvorak: :; Q} J K X B M Ww Vv ZzAPPENDIX B - PROPOSAL FOR A SPECIALCHARACTERSET TOR THE NEW GRAPHICS MODESIn this appendix the ne}w graphic modes 12, 13, 14 and 15 are treated. Screen-modes 14 and 15 can be considered as pure graphics modes with a resolut}ion of 160 x 192 dots. Because these are no character-modes the following is only related to modes 12 and 13.In the screen} modes 12 and 13 the normal character-sets do not produce readable text. This will become clear when comparing mode 0 with 12} or 13 respectively: 15Mode 0 is a 40 character mode, where each letter is built-up of 8 horizontal pixels (finest horizonta}l resolution). The width of every pixel is 1/2 color-clock.Modes 12 and 13 both also contain 40 characters per line, but th}ese characters horizontally only contain 4 pixels, with a width of 1 color-clock. A character therefore is the same size as }in mode 0. It is however much more difficult to build characters with a resolution of 4x8 pixels than with 8x8 pixels. 10Let}'s compare the construction of a character wide 4 pixels to a character having a width of 8 pixels: 15In mode zero one can }choose from two colors for every pixel. (In the hardware manual 1.5 is indicated, but first there is the color and intensity }of the second playfield -when the matching bit is set 0- or the color and intensity of playfield one -if there is a 1 in the }required bit.) That's why there is only one bit needed to define the 1/2 color-clock. The resident character-set defines the }characters in an 8 by 8 matrix, as 8 bytes in line. Every byte gives one scanline of the character.Mode 12 also needs 8 sca}nlines per character. The bytes for the character-definition though are used in a different way: ANTIC considers every data-b}yte as a set of 4 2-bit values, where every pair of bits determines the color of the 2 color-clocks wide pixel in the charact}er. Mode 13 works similar but here the height of the characters is 16 scan-lines vs 8 in mode 12. A single data-byte indicate}s the appearance of two scan-lines.Let us now look at a normal character, e.g. the W. The bits that shape the letter are ar}ranged like:10000001 * *10000001 * *10011001 shows: * ** *10011001 } * ** *10100101 * * * *10100101 * * * *11000011 ** **11000011 **} **10000001 * *Note: This is not the exact representation, but this example is used to point out the }differences clearly between the correct display in mode 0 and the incorrect display in modes 12 and 13.If one observes the }result of the bit-transfer to the screen one really sees a readable W. The bits indicate the different points of the characte}r.In mode 0 every 1 develops a color, every 0 gives the background, as to give a readable letter.In modes 12 and 13 this }is not the case, as there are 4 (in stead of 8) pixels to control:Value of the bit-pair color of pixel 00 } backgroundcolor 01 color of playfield 0 10 color of playfield 1 } 11 color of playfield 2 (when bit 7 of charactername = 0) 11 color of playfield 2 (wh}en bit 7 of charactername = 1)In the above example the 4th line from the bottom would be built up and colored as follows: 4} pixels in the colors of playfield 1,1,0 and 0. The colors of the last line would have been those of playfield 1, background,} background and playfield 0. A character like this is of course unreadable. (Even when in this case the character has a verti}cal symmetry, a unsymmetrical character would be even more difficult to recognize.)A character-set for the screen-modes 12 }and 13 might be built up such as to contain two blocks of 8 bytes per character to give every character a width of 8 pixels.}To print a character like this on the screen we would have to do the same as printing two characters next to each other in m}ode 0. The letter W could have been built up like this: byte-set 1: byte-set 2: 10 00 00 00 00 00} 00 10 10 00 00 00 00 00 00 10 10 00 00 10 10 00 00 10 10 00 00 10 10 00 00 10 10} 00 10 00 00 10 00 10 10 00 10 00 00 10 00 10 10 10 00 00 00 00 10 10 10 10 00 00 } 00 00 10 10 10 00 00 00 00 00 00 10Byte-set 1 might e.g. be defined at ATASCII-location $57 of the new cha}racter-set. Byte-set 2 at location $D7 (= $57 plus $80). This choice of division is of course completely free.When these tw}o characters are printed it does of course give a readable letter, but it also limits a line to only 20 characters in one lin}e. Here the bit-combination 10 does the same as the 1 in the example for mode 0, the combination 00 the same as the 0 in mode} 0.The user has also the possibility to define the character in a different grid than 8x8. (With the given example there wa}s no space between the individual characters. They were directly connected to each other on the screen.)Modes 12 and 13 can} also be used for multicolored characters. Or even in much the same way multicolored maps by redefining a character-set.USE}FULL SYSTEM ADDRESSESZERO-PAGE ADDRESSES OF THE OPERATING SYSTEMabrev. hex dec bytes descriptionLET OP!!!!LET} OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!! NEEM OP DEZE EN VOLGENDE BLADZIJDEN D}E LINKER VIER KOLOMMEN VAN DE TABELLEN OVER, HIERONDER VOLGT SLECHTS DE VERTALING VAN DE BESCHRIJVINGEN.Cassetteboot initia}lizationvectorWarmstartflag:0=coldstart, $FF=warmstartBoot-flag:bit0 for disk-bootbit1 for cassette-bootDiskprogram }startvector (e.g. DOS)Disk-boot initializationvectorFirst free memory-locationPOKEY-interrupt-mask:bit7 for BREAK-key-}interruptbit6 for keyboard-interruptBREAK-key-flag:0=BREAK-key pressedInternal clockI/O-sound flag:0=silentCritica }l operation flagATTRACT-mode-flag: When this value reaches > 127 then the screencolors start cycling. Is incremented with t }he middle byte of the internal clock.Left screen borderRight screen borderLine-number of cursor in graphics windowCol }umn-number of cursor in graphics windowCurrent graphics modeUpper left corner of screenNumber of RAM-pagesPointer to }keyboard-definition tableExplanation of used symbols:* only with ATARI 400/800# only with ATARI 600XL/800XLZERO-PAGE }ADDRESSES OF BASICabrev. hex dec bytes descriptionLET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET } OP!!!!LET OP!!!!LET OP!!!!LET OP!!!! NEEM OP DEZE EN VOLGENDE BLADZIJDEN DE LINKER VIER KOLOMMEN VAN DE TABELLEN OVER, HIERO }NDER VOLGT SLECHTS DE VERTALING VAN DE BESCHRIJVINGEN.Pointer to start of BASIC memoryPointer to variable nametablePoin }ter to end of variable nametablePointer to variable valuetablePointer to commandlist of current programPointer to curre }nt commandpointer to start of fieldvariable rangePointer to run-time stackPointer to end of BASIC memoryLine-number i }n which a STOP-command is found or an error occurredError-code with STOPLNTabulator spacing in PRINT-commandsZERO-PAGE }ADDRESSES OF FLOATING POINT PACKAGEabrev. hex dec bytes descriptionLET OP!!!!LET OP!!!!LET OP!!!!NEEM HIERONDER }VOLGT SLECHTS DE VERTALING VAN DE BESCHRIJVINGEN.Floating point register 0Floating point register 1Pointer to an ASCII-te }xtbufferPointer to a floating point numberNGEN.Floating point register 0Floating point register 1Pointer to an ASCII-te,2 4 1 5 0 10 70 2 2 144@253abr. hex dec bytes descriptionLET OP!!!!LET OP!!!!LET OP!!!!LET OP! }!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LE }T OP!!!!LET OP!!!! DE EERSTE VIER TABELLEN MET LETTERS EN GETALLEN LETTERLIJK OVERNEMEN OP DEZE BLADZIJDE EN ALLE VOLGENDE LE }T OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP! }!!!LET OP!!!!LET OP!!!!LET OP!!!!Display-list-interrupt vector (DLI)Vector to the IRQ-routine to handle serial bus operatio }nsVector to serial-bus IRQ-routineBREAK-interrupt vectorKeyboard-interrupt vectorVector to routine for serial data-readV }ector to routine for serial data-writeVector to routine for ending serial data-writePOKEY-timer-1-IRQ-interrupt vectorPOKE }Y-timer-2-IRQ-interrupt vectorPOKEY-timer-4-IRQ-interrupt vectorIRQ-interrupt main vectorValue of system-timer 1Value of }system-timer 2Value of system-timer 3Value of system-timer 4Value of system-timer 5Intermediate Vertical Blank vectorDef }erred Vertical Blank vectorSystem-timer-1 interrupt vectorSystem-timer-2 interrupt vectorSystem-timer-3 flagSystem-timer- }4 flagSystem-timer-5 flagSystem-timer-3 flagRegister for Direct Memory Access by ANTIC (Shadow-register of $D400)Pointer }to start of Display-ListHorizontal Lightpen-positionVertical Lightpen-positionColdstart flag: 1= execute coldstart 0= }execute warmstart, when RESET is pressedDisable-keyboard flagFine-scroll flagPriority-register (shadow-register of $D01B) }Value of paddle 0Value of paddle 1Value of paddle 2Value of paddle 3Value of paddle 4Value of paddle 5Value of paddle 6 }Value of paddle 7Value of joystick 0Value of joystick 1Value of joystick 2Value of joystick 3Value of joystick 4Paddl }etrigger 0Paddletrigger 1Paddletrigger 2Paddletrigger 3Paddletrigger 4Paddletrigger 5Paddletrigger 6Paddletrigger 7Jo }ysticktrigger 0Joysticktrigger 1Joysticktrigger 2Joysticktrigger 3Row-number of cursor in text-windowColumn-number of cu }rsor in text-windowUpper left corner of text-windowTabulator-tableInverse-video flag: 0=normal, $80=inverseShift-lock f }lag:0=lower case, $40=upper case, $80=CTRL-locked, $FF=all letters ingoredNumber of textlines (0, 4 or 24)Color-register o }f Player/Missile 0Color-register of Player/Missile 1Color-register of Player/Missile 2Color-register of Player/Missile 3C !}olor-register of Playfield 0Color-register of Playfield 1Color-register of Playfield 2Color-register of Playfield 3Color- "}register of backgroundcolorKey-repeat delayKey-repeat rateKey-click flagHELP-flagNumber of RAM-pagesOperating System en #}d-of-RAM pointerOperating System start-of-RAM pointerDevice statusCursor-On/Off flagCharacter-display register: 0=displa $}y inverse as normal 1=display inverse as blanks 2=display inverse as inverse 3=display inverse as inverse blocks 4/7 give %} same effect but with characters upside downCharacter-set starting page number: 204 International character-set 224 Americ &}an character-set (upper case) 226 American character-set (lower case)Keyboard-code of last key pressedColor-value for Fill '}-command (XIO18)CTRL-character-display flag:0=normal, 1=CTRL-character displayedStart/Stop flag for output:0=normal outpu (}t, 1=stop output (ref. CTRL-1)Device indentificationDevice numberCommand byteDevice statusData-buffer address (Low byte )})Data-buffer address (high byte)Device-handler delayNumber of bytes for transfer (low byte)Number of bytes for transfer ( *}high byte)Sector-number (low byte)Sector-number (high byte)Handler address tableI/O-block 0Command byteStatus byteBuff +}er address (Low byte)Buffer address (high byte)Buffer length (low byte)Buffer length (high byte)Help-byte 1Help-byte 2H ,}elp-bytes 3/6I/O-control block 1 (see also under IOCBO)I/O-control block 2 (see also under IOCBO)I/O-control block 3 (see -}also under IOCBO)I/O-control block 4 (see also under IOCBO)I/O-control block 5 (see also under IOCBO)I/O-control block 6 ( .}see also under IOCBO)I/O-control block 7 (see also under IOCBO)(W) horizontal position of Player 0(R) collision-register /}Missile 0 with playfield(W) horizontal position of Player 1(R) collision-register Missile 1 with playfield(W) horizontal p 0}osition of Player 2(R) collision-register Missile 2 with playfield(W) horizontal position of Player 3(R) collision-registe 1}r Missile 3 with playfield(W) horizontal position of Missile 0(R) collision-register Player 0 with playfield(W) horizontal 2} position of Missile 1(R) collision-register Player 1 with playfield(W) horizontal position of Missile 2(R) collision-regi 3}ster Player 2 with playfield(W) horizontal position of Missile 3(R) collision-register Player 3 with playfield(W) size of 4}player 0(R) collision-register Missile 0 with player(W) size of player 1(R) collision-register Missile 1 with player(W) s 5}ize of player 2(R) collision-register Missile 2 with player(W) size of player 3(R) collision-register Missile 3 with playe 6}r(W) size of Missiles(R) collision-register Player 0 with Player(W) shape of Player 0(R) collision-register Player 1 with 7} Player(W) shape of Player 1(R) collision-register Player 2 with Player(W) shape of Player 2(R) collision-register Player 8} 3 with Player(W) shape of Player 3(R) Shape of all Missiles(R) joystick-trigger 1(W) color-register for Player/Missile 0 9}(R) joystick-trigger 2(W) color-register for Player/Missile 1(R) joystick-trigger 3(W) color-register for Player/Missile :}2(W) color-register for Player/Missile 3(W) color-register for Playfield 0(W) color-register for Playfield 1(W) color-reg ;}ister for Playfield 2(W) color-register for Playfield 3(W) color-register for backgroundcolor(W) priorityregister:bit7 a <}nd bit6 for GTIA-graphics modebit5 makes mix-colors with overlapping Playersbit4 allows combining all Missiles to one Playe =}r with color of COLPF3bit3 priority: PF0, PF1, P0-P3, PF2, PF3, BKbit2 priority: PF0-PF3, P0-P3, BKbit1 priority: P0-P1, P >}F0-PF3, P2-P3, BKbit0 priority: P0-P3, PF0-PF3, BKGraphics control register:bit0 for direct Missile-memory accessbit1 for ?} direct Player-memory accessCollision-register eraseFunction-key-register:bit0 for START-keybit1 for SELECT-keybit2 for @}OPTION-key(W) soundfrequency-register channel 1(R) potentiometer (paddle) 0(W) soundcontrol-register channel 1(R) potenti A}ometer (paddle) 1(W) soundfrequency-register channel 2(R) potentiometer (paddle) 2(W) soundcontrol-register channel 2(R) B}potentiometer (paddle) 3(W) soundfrequency-register channel 3(R) potentiometer (paddle) 4(W) soundcontrol-register channel C} 3(R) potentiometer (paddle) 5(W) soundfrequency-register channel 4(R) potentiometer (paddle) 6(W) soundcontrol-register D}channel 4(R) potentiometer (paddle) 7(W) audio-control register(W) keyboard-code register(R) random number generator(W) E}serial bus output register(R) serial bus input register(W) POKEY-interrupt mask(R/W) Data-register for joystickports 1&2 ( F}when bit2 in PACTL=1)(W) Data-direction register for joystickports 1&2 (when bit2 in PACTL=1)(R/W) Data-register for joysti G}ckports 3&4 (when bit2 in PACTL=1)(W) Data-direction register for joystickports 3&4 (when bit2 in PACTL=1)(W) RAM/ROM-contr H}ol bit0 for the operating system ROM bit1 for the BASIC-ROM bit7 for the selftest(W) control register for port A:$4C swi I}tches cassette-motor off$46 switches cassette-motor on(W) control register for port B(W) register for ANTIC's direct memo J}ry access: bit0 and bit1 for Playfield-width bit2 for Missile-memory access bit3 for Player-memory access bit4 for vertic K}al Player resolution bit5 for memory access allocation(W) Character-display register (compare $2F3)(W) pointer to display L}list (low byte)(W) pointer to display list (high byte)(W) horizontal scroll register(W) vertical scroll register(W) playe M}r/Missile-area address(W) character-set starting page number(W) wait for horizontal synchronization(R) screen row counter N}(R) horizontal lightpen-position(R) vertical lightpen-position(W) NMI-interrupt mask(W) NMI-reset(R) NMI-statusENTRY PO O}INTS OF FLOATING POINT PACKAGEabr. hex dec bytes descriptionLET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!! P}!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET Q} OP!!!! DE EERSTE VIER TABELLEN MET LETTERS EN GETALLEN LETTERLIJK OVERNEMEN OP DEZE BLADZIJDE EN ALLE VOLGENDETransfer of R} ASCII- into floating-point-formatTransfer of floating-point- into ASCII-formatTransfer of integer- into floating-point-for S}matTransfer of floating-point- into integer-formatErase FR0 (FR0=0)Erase a zero-page floating-point register (put register T}-address in CPU-X-register)Floating-point subtraction (FR0=FR0-FR1)Floating-point addition (FR0=FR0+FR1)Floating-point div U}ision (FR0=FR0/FR1)Calculation of polynomal:**********************Zie vorm tussen haakjes op pagina 259 ******************* V}***********put startaddress of list of coefficients Ai (i=n....0) in CPU-X- and Y-registers, number of coefficients in CPU-a W}ccumulatorLoad floating-point register FR0 put starting address of value in CPU-X- and Y-registersLoad floating-point regi X}ster FR0 put starting address of value in FLPTRLoad floating-point register FR1 put starting address of value in CPU-X- an Y}d Y-registersLoad floating-point register FR1 put starting address of value in FLPTRStore floating-point register FR0 put Z} starting address of value in CPU-X- and Y-registersStore floating-point register FR1 put starting address of value in FLPT [}RCopy FR0 into FR1Exponentiation (FR0=exp(FR0))Exponentiation on base 10 (FR0=10^FRO)Natural logarithm (FRO=LN(FRO))Comm \}on logarithm (FRO=CLOG(FRO))OPERATING SYSTEM VECTORSabr. hex dec bytes descriptionLET OP!!!!LET OP!!!!LET OP ]}!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!LET OP!!!!L ^}ET OP!!!!LET OP!!!!LET OP!!!! DE EERSTE VIER TABELLEN MET LETTERS EN GETALLEN LETTERLIJK OVERNEMEN OP DEZE BLADZIJDEDisk-han _}dler initialization vectorDisk-handler vectorCIO-vectorSIO-vectorSystem-timer-call vectorSystem vertical blank routine v `}ectorClose-VB routine vectorSIO-initialization vectorActivation-routine vector to send via serial busInterrupt-handler in a}itialization vectorMemo-pad-mode entry vectorSelftest entry vectorWarmstart entry vectorColdstart entry vectorCassette-b b}lock-read entry vectorCassette-read-OPEN-routine vectorExplanation of used symbols:* only ATARI 400/800# only ATARI 60 c}0XL/800XLentry vectorCassette-read-OPEN-routine vectorExplanation of used symbols:* only ATARI 400/800# only ATARI 60 cBaDERE 1 BaeDERE 2 BGDERE 3 BW DERE 4 /