X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=doc%2Fatari.sgml;h=346377b36493519e48a5ff477de9253ae1d818e1;hb=e767c8990d07003d9c91a6151cc61f0ea28639ea;hp=459e8e7453e9a8a6c6be7c1987d93884a6aea451;hpb=316d8e9d37bc7edfc0069e6141ecf2cd4baf4b87;p=cc65 diff --git a/doc/atari.sgml b/doc/atari.sgml index 459e8e745..346377b36 100644 --- a/doc/atari.sgml +++ b/doc/atari.sgml @@ -1,12 +1,10 @@
- Atari specific information for cc65 <author> <url url="mailto:shawnjefferson@24fightingchickens.com" name="Shawn Jefferson"> and<newline> <url url="mailto:chris@groessler.org" name="Christian Groessler"> -<date>2014-04-24 <abstract> An overview over the Atari runtime system as it is implemented for the cc65 C @@ -31,7 +29,7 @@ supports XL type or newer machines (excluding the 600XL). The <tt/atarixl/ runtime makes the whole 64K of memory available, with the exception of the I/O area at $D000 - $D7FF. Since the -<tt/atarixl/ runtime has some <ref name="limitations" id="limitations">, it is +<tt/atarixl/ runtime has some <ref name="limitations" id="xllimitations">, it is recommended to use the <tt/atari/ target unless lack of memory dictates the use of the <tt/atarixl/ target. @@ -205,6 +203,18 @@ is <it/left out/, keep this in mind. The values you assign to the two symbols <tt/__AUTOSTART__/ and <tt/__EXEHDR__/ don't matter. +<sect2><tt/atari-xex.cfg/<p> + +This config file allows writing multi segment binaries easily, without having to +write the header explicitly on each segment. + +It is similar to the <tt/atari-asm.cfg/ above, but uses the ATARI (xex) file +format support on LD65 instead of the standard binary output, so it does not +have the <tt/__AUTOSTART/ nor the <tt/__EXEHDR__/ symbols. + +Note that each <tt/MEMORY/ area in the configuration file will have it's own +segment in the output file with the correct headers. + <sect2><tt/atari-cart.cfg/<p> This config file can be used to create 8K or 16K cartridges. It's suited both @@ -331,20 +341,20 @@ unsigned char ScreenMemory[100]; void DisplayList = { - DL_BLK8, - DL_BLK8, - DL_BLK8, - DL_LMS(DL_CHR20x8x2), - ScreenMemory, - DL_CHR20x8x2, - DL_CHR20x8x2, - DL_CHR20x8x2, - DL_BLK4, - DL_CHR20x8x2, - DL_JVB + DL_BLK8, + DL_BLK8, + DL_BLK8, + DL_LMS(DL_CHR20x8x2), + ScreenMemory, + DL_CHR20x8x2, + DL_CHR20x8x2, + DL_CHR20x8x2, + DL_BLK4, + DL_CHR20x8x2, + DL_JVB }; ... -POKEW(560,(unsigned int)&DisplayList); // SDLSTL +POKEW(560,(unsigned int)&DisplayList); // SDLSTL ... </verb> @@ -413,6 +423,29 @@ char* pcAtasciiMappingString = "Hello Atari!"; does not. +<sect1>Keyboard codes<p> + +For direct keyboard scanning in conjunction with e.g. the OS location "CH" (764/$2FC), +all keyboard codes are available as defined values on C and assembler side. + +Example: +<verb> +... + while (!kbhit()); + switch (PEEK(764)) + { + case KEY_RETURN: + ... + case KEY_SPACE: + ... + case KEY_1: + ... + } +... +</verb> + +You can find the C defines in the file "<tt/atari.h/" or "<tt/atari.inc/" for the assembler variant. + <sect>Loadable drivers<p> @@ -613,7 +646,18 @@ interface module. <sect>Limitations<p> -<sect1><tt/atarixl/<#if output="info|latex2e"> limitations</#if><label id="limitations"<p> +<sect1><tt/Realtime clock/<label id="realtimeclock"<p> + +Access to the realtime clock is supported only when running on SpartaDOS-X. +There needs to be a realtime clock driver installed. This is normally the case +in the default installation (CONFIG.SYS) of SpartaDOS-X. +A missing realtime clock driver in SpartaDOS-X is not supported, and the program +may crash when calling the <tt/clock_settime()/ or <tt/clock_gettime()/ +functions. + +The resolution of the realtime clock driver is 1 second. + +<sect1><tt/atarixl target/<#if output="info|latex2e"> limitations</#if><label id="xllimitations"<p> <itemize> <item>The display is cleared at program start and at program termination. This is a side @@ -934,16 +978,16 @@ chunk #2 (RAM memory area). The contents of the new NEXEHDR and CHKHDR segments come from this file (split.s): <tscreen><verb> - .import __CODE_LOAD__, __BSS_LOAD__, __CODE_SIZE__ - .import __DATA_LOAD__, __RODATA_LOAD__, __STARTUP_LOAD__ + .import __CODE_LOAD__, __BSS_LOAD__, __CODE_SIZE__ + .import __DATA_LOAD__, __RODATA_LOAD__, __STARTUP_LOAD__ - .segment "NEXEHDR" - .word __STARTUP_LOAD__ - .word __CODE_LOAD__ + __CODE_SIZE__ - 1 + .segment "NEXEHDR" + .word __STARTUP_LOAD__ + .word __CODE_LOAD__ + __CODE_SIZE__ - 1 - .segment "CHKHDR" - .word __RODATA_LOAD__ - .word __BSS_LOAD__ - 1 + .segment "CHKHDR" + .word __RODATA_LOAD__ + .word __BSS_LOAD__ - 1 </verb></tscreen> <p> Compile with @@ -1010,16 +1054,16 @@ FEATURES { New contents for NEXEHDR and CHKHDR are needed (split2.s): <tscreen><verb> - .import __STARTUP_LOAD__, __BSS_LOAD__, __DATA_SIZE__ - .import __DATA_LOAD__, __RODATA_LOAD__ + .import __STARTUP_LOAD__, __BSS_LOAD__, __DATA_SIZE__ + .import __DATA_LOAD__, __RODATA_LOAD__ - .segment "NEXEHDR" - .word __RODATA_LOAD__ - .word __DATA_LOAD__ + __DATA_SIZE__ - 1 + .segment "NEXEHDR" + .word __RODATA_LOAD__ + .word __DATA_LOAD__ + __DATA_SIZE__ - 1 - .segment "CHKHDR" - .word __STARTUP_LOAD__ - .word __BSS_LOAD__ - 1 + .segment "CHKHDR" + .word __STARTUP_LOAD__ + .word __BSS_LOAD__ - 1 </verb></tscreen> Compile with @@ -1050,7 +1094,7 @@ If you are using a customized linker config file you might get some errors regarding the MAINHDR segment. Like this: <tscreen><verb> -ld65: Error: Missing memory area assignment for segment `MAINHDR' +ld65: Error: Missing memory area assignment for segment 'MAINHDR' </verb></tscreen> The old "HEADER" memory description contained six bytes: $FFFF @@ -1098,14 +1142,14 @@ including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: <enum> -<item> The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. -<item> Altered source versions must be plainly marked as such, and must not - be misrepresented as being the original software. -<item> This notice may not be removed or altered from any source - distribution. +<item> The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +<item> Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. +<item> This notice may not be removed or altered from any source + distribution. </enum> </article>