]> git.sur5r.net Git - cc65/blobdiff - doc/lynx.sgml
Added code to parse bit fields and enter them into the symbol table. They're
[cc65] / doc / lynx.sgml
index 017218e3b84a29dc07b1f0713bbf0f47605c963c..424c53cafbb37ae4588d2dba500b492d41d4a59f 100644 (file)
@@ -5,7 +5,7 @@
 <title>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>2004-10.14
+<date>2004-10-14
 
 <abstract>
 An overview over the Atari Lynx runtime system as it is implemented for the
@@ -32,28 +32,38 @@ information.
 
 <sect>Binary format<p>
 
-The standard binary output format generated by the linker for the VIC20 target
-is a machine language program with a one line BASIC stub. This means that a
-program can be loaded as BASIC program and started with RUN. It is of course
+The standard binary output format generated by the linker for the Lynx target
+is a machine language program with an executable header. It is of course
 possible to change this behaviour by using a modified startup file and linker
 config.
 
+You can also produce real carts with directory structures and encrypted
+headers by modifying the startup and linker config files. There is a simple
+example archive called <tt/lynx-cart-demo/ in the <htmlurl
+url="ftp://ftp.musoftware.de/pub/uz/cc65/contrib/" name="contrib directory">
+that shows how to create a complete bootable Lynx cart.
 
 <sect>Memory layout<p>
 
 cc65 generated programs with the default setup run with the I/O area and the
-kernal and BASIC ROM enabled (RAM at &dollar;A000 - &dollar;BFFF may be used
-for the heap), which gives a usable memory range of &dollar;1000 - &dollar;1DFF.
-All ROM entry points may be called directly without additional code.
+kernal enabled, which gives a usable memory range of &dollar;400 - &dollar;BE3F.
+All boot ROM entry points may be called directly without additional code.
 
 Special locations:
 
 <descrip>
   <tag/Text screen/
-  The text screen is located at &dollar;1E00 (as in the standard setup).
+  No conio support is currently available for the Lynx.
+
+  <tag/Keyboard/
+  The Lynx "flabode" keys, Opt 1, Pause and Opt 2 are implemented using the
+  conio interface. The only characters the keyboard is able to produce are
+  'R' for Restart (Opt 1 + Pause), 'F' for flip (Opt 2 + Pause),
+  'P' for pause, '1' for Opt 1, '2' for Opt 2, '3' for Opt 1 + Opt 2 and
+  '?' for all keys down at the same time.
 
   <tag/Stack/
-  The C runtime stack is located at &dollar;1DFF and growing downwards.
+  The C runtime stack is located at &dollar;BE3F and growing downwards.
 
   <tag/Heap/
   The C heap is located at the end of the program and grows towards the C
@@ -105,11 +115,24 @@ structures, accessing the struct fields will access the chip registers.
 
 <sect1>Graphics drivers<p>
 
-A TGI driver for the standard graphics mode (160*102 in 16 colors) is
+A TGI driver for the standard graphics mode (160&times;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.
 
+The TGI driver is implemented as a 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.
+
+Calling tgi_ioctl(0, spr) will display a standard Lynx sprite on screen.
+
+Calling tgi_ioctl(1, 0) will do a flip screen. If you decide to flip the
+screen then it may be a good idea to call the install-routine for the
+joystick to get that flipped too.
+
+Calling 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.
 
 <sect1>Extended memory drivers<p>
 
@@ -123,6 +146,8 @@ 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.
 
+The joystick will check to see if the screen is flipped or not in the install
+routine and adapt itself to the currect state.
 
 <sect1>Mouse drivers<p>
 
@@ -141,6 +166,13 @@ No serial drivers are currently available for the Lynx.
 
 <sect>Other hints<p>
 
+At this point in time there is no support for the cart filesystem yet. I have
+a <tt/lynx-cart-demo/ example project that uses an interrupt driven display,
+has support for the cart filesystem and an abcmusic sound module.
+
+At some point in time we may find a way to rewrite these to fit the way the
+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>