X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=doc%2Flynx.sgml;h=0eef70535793d9861fe35aded81770f248d5de48;hb=df80d071e8eeb799bd1d8ec55acd1ee92714c752;hp=554d911d94f5f0dcefc001b1f980e122ee41991a;hpb=5a041308907fb4b782bc038a2903031d162e67b8;p=cc65 diff --git a/doc/lynx.sgml b/doc/lynx.sgml index 554d911d9..0eef70535 100644 --- a/doc/lynx.sgml +++ b/doc/lynx.sgml @@ -1,11 +1,10 @@
- Atari Lynx specific information for cc65 -<author>Karri Kaksonen, <htmlurl url="mailto:karri@sipo.fi" name="karri@sipo.fi"> -Ullrich von Bassewitz, <htmlurl url="mailto:uz@cc65.org" name="uz@cc65.org"> -<date>2011-04-01 +<author> +<url url="mailto:karri@sipo.fi" name="Karri Kaksonen">,<newline> +<url url="mailto:uz@cc65.org" name="Ullrich von Bassewitz"> <abstract> An overview over the Atari Lynx runtime system as it is implemented for the @@ -24,7 +23,7 @@ with the cc65 C compiler. It describes the memory layout, Lynx specific header files, available drivers, and any pitfalls specific to that platform. Please note that Lynx specific functions are just mentioned here, they are -described in detail in the separate <htmlurl url="funcref.html" name="function +described in detail in the separate <url url="funcref.html" name="function reference">. Even functions marked as "platform dependent" may be available on more than one platform. Please see the function reference for more information. @@ -38,10 +37,9 @@ Here is a small traditional Hello World program for the Atari Lynx. #include <lynx.h> #include <tgi.h> #include <6502.h> -extern char lynxtgi[]; void main(void) { - tgi_install(&lynxtgi); + tgi_install(tgi_static_stddrv); tgi_init(); CLI(); while (tgi_busy()) @@ -70,36 +68,10 @@ in your own program you need to load it at run time. Unfortunately the Lynx does not have a disk drive from where to load it. Therefore you must already load it at compile time. The easiest way is to -link it in statically. - -This relocatable driver is found in <tt>$(CC65_HOME)/tgi/lynx-160-102-16.tgi</tt>. -Copy it from here. - -The name comes from 160 by 102 pixels (The Lynx LCD size), 16 colors. - -In order to link in this statically we have to make it back to a source -file so that we can compile it. The next command will turn the compiled -driver object file into an assembler source and compile it with the ca65 -assembler. +automatically link it in statically from the Lynx C library. <tscreen><verb> -co65 --code-label _lynxtgi lynx-160-102-16.tgi -ca65 -t lynx lynx-160-102-16.s -</verb></tscreen> - -This will create a linkable object file called lynx-160-102-16.o - -Then we need to compile our main file to a linkable object file. - -<tscreen><verb> -cc65 -t lynx main.c -ca65 -t lynx main.s -</verb></tscreen> - -Finally we have to link them together to produce an executable cart. - -<tscreen><verb> -cl65 -t lynx -o game.lnx main.o lynx-160-102-16.o lynx.lib +cl65 -t lynx -o game.lnx main.c </verb></tscreen> This will create a bootable cart image called game.lnx @@ -214,46 +186,52 @@ structures, accessing the struct fields will access the chip registers. <sect>Loadable drivers<p> +The names in the parentheses denote the symbols to be used for static linking of the drivers. + + <sect1>Graphics drivers<p> -A TGI driver for the standard graphics mode (160×102 in 16 colors) is -available, but must be statically linked, because no file I/O is available. -See the documentation for the <htmlurl url="co65.html" name="co65 utility"> -for information on how to do that. +<descrip> + + <tag><tt/lynx-160-102-16.tgi (lynx_160_102_16_tgi)/</tag> + A TGI driver for the standard graphics mode (160×102 in 16 colors). + + The TGI driver is implemented as an interrupt driven dual buffering device. + To use it as a single-buffer device set draw page and view page to the same + value 0 or 1; + + The TGI driver has a few Lynx-specific extensions. -The TGI driver is implemented as an interrupt driven dual buffering device. -To use it as a single-buffer device set draw page and view page to the same -value 0 or 1; + Calling tgi_sprite(spr) or tgi_ioctl(0, spr) will display a standard Lynx + sprite on screen. -The TGI driver has a few Lynx-specific extensions. + Calling tgi_flip() or tgi_ioctl(1, 0) will do a flip screen. -Calling tgi_sprite(spr) or tgi_ioctl(0, spr) will display a standard Lynx -sprite on screen. + Calling tgi_setbgcolor(bgcolor) or tgi_ioctl(2, bgindex) will set the text + background color to the index defined by bgindex. If bgindex is 0 then the + background color is transparent. -Calling tgi_flip() or tgi_ioctl(1, 0) will do a flip screen. + To set the framerate of the display hardware call tgi_setframerate(rate) or + tgi_ioctl(3, rate). The supported framerates are 50, 60 and 75 frames per + second. Actually there is no real reason to use anything else than 75 frames + per second. -Calling tgi_setbgcolor(bgcolor) or tgi_ioctl(2, bgindex) will set the text -background color to the index defined by bgindex. If bgindex is 0 then the -background color is transparent. + To check if the drawing engine is busy with the previous swap you can + call tgi_busy or tgi_ioctl(4, 0). It returns 0 if idle and 1 if busy -To set the framerate of the display hardware call tgi_setframerate(rate) or -tgi_ioctl(3, rate). The supported framerates are 50, 60 and 75 frames per -second. Actually there is no real reason to use anything else than 75 frames -per second. + To update displays you can call tgi_updatedisplay() or tgi_ioctl(4, 1) it + will wait for the next VBL interrupt and set the draw buffer to the + view buffer. The draw buffer is also changed to (drawbuffer xor 1). -To check if the drawing engine is busy with the previous swap you can -call tgi_busy or tgi_ioctl(4, 0). It returns 0 if idle and 1 if busy + You can also enable or disable collision detection by a call to + tgi_setcollisiondetection(active) or tgi_ioctl(5, active). The collision + result is located before the sprite structure by default in this driver. -To update displays you can call tgi_updatedisplay() or tgi_ioctl(4, 1) it -will wait for the next VBL interrupt and set the draw buffer to the -view buffer. The draw buffer is also changed to (drawbuffer xor 1). + In order to reserve memory for the collision detection buffer you need to + specify lynx-coll.cfg as the configuration file to the linker. -You can also enable or disable collision detection by a call to -tgi_setcollisiondetection(active) or tgi_ioctl(5, active). The collision -result is located before the sprite structure by default in this driver. +</descrip><p> -In order to reserve memory for the collision detection buffer you need to -specify lynx-coll.cfg as the configuration file to the linker. <sect1>Extended memory drivers<p> @@ -262,10 +240,13 @@ No extended memory drivers are currently available for the Lynx. <sect1>Joystick drivers<p> -A joystick driver for the standard buttons is available, but must be -statically linked, because no file I/O is available. See the documentation for -the <htmlurl url="co65.html" name="co65 utility"> for information on how to do -that. +<descrip> + + <tag><tt/lynx-stdjoy.joy (lynx_stdjoy_joy)/</tag> + A joystick driver for the standard buttons. + +</descrip><p> + <sect1>Mouse drivers<p> @@ -276,6 +257,9 @@ No mouse drivers are currently available for the Lynx. <descrip> + <tag><tt/lynx-comlynx.ser (lynx_comlynx_ser)/</tag> + A serial driver for the ComLynx port. + The ComLynx port has Tx and Rx wired together. Every byte is sent to all connected Lynxes. Only one Lynx can send at a time. There is no protocol created for communication. You are on your own. @@ -342,15 +326,6 @@ cc65 drivers require. But for the time being you can create less portable applications using these Lynx specific modules in <tt/lynx-cart-demo/. -<sect>Bugs/Feedback<p> - -If you have problems using the library, if you find any bugs, or if you're -doing something interesting with it, I would be glad to hear from you. Feel -free to contact me by email (<htmlurl url="mailto:uz@cc65.org" -name="uz@cc65.org">). - - - <sect>License<p> This software is provided 'as-is', without any expressed or implied @@ -362,14 +337,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>