]> git.sur5r.net Git - cc65/blobdiff - doc/c128.sgml
Merge pull request #80 from AntiheroSoftware/ca65-65816
[cc65] / doc / c128.sgml
index a2ef0829be2c0084e7100715369d501230c3e4d1..5ea44b97043c30bc1769739dbf3d441ca1cfbe9b 100644 (file)
@@ -32,10 +32,10 @@ information.
 <sect>Binary format<p>
 
 The standard binary output format generated by the linker for the C128 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
-possible to change this behaviour by using a modified startup file and linker
-config.
+is a machine language program with a one line BASIC stub, which calls the
+machine language part via SYS. This means that a program can be loaded as
+BASIC program and started with RUN. It is of course possible to change this
+behaviour by using a modified startup file and linker config.
 
 
 <sect>Memory layout<p>
@@ -43,12 +43,12 @@ config.
 cc65 generated programs with the default setup run with the I/O area and the
 kernal ROM enabled. Note that this is a non standard memory layout, and that
 there is no "memory configuration index" for this layout. This means that
-special case has to be taken when changing the configuration, or calling any
+special care has to be taken when changing the configuration, or calling any
 code that does this. The memory configuration register at &dollar;FF00 should
 be saved and restored instead of relying on the memory configuration index
 stored in the zero page.
 
-The setup gives a usable memory range of &dollar;1C00 - &dollar;CFFF. Having
+The setup gives a usable memory range of &dollar;1C00 - &dollar;BFFF. Having
 just the kernal ROM mapped in means, that kernal entry points may be called
 directly, but using the BASIC ROM is not possible without additional code.
 
@@ -59,7 +59,7 @@ Special locations:
   The text screen is located at &dollar;400 (as in the standard setup).
 
   <tag/Stack/
-  The C runtime stack is located at &dollar;CFFF and growing downwards.
+  The C runtime stack is located at &dollar;BFFF and growing downwards.
 
   <tag/Heap/
   The C heap is located at the end of the program and grows towards the C
@@ -83,7 +83,7 @@ The functions listed below are special for the C128. See the <htmlurl
 url="funcref.html" name="function reference"> for declaration and usage.
 
 <itemize>
-<item>toggle_videomode
+<item>videomode
 <item>c64mode
 <item>fast
 <item>slow
@@ -146,12 +146,12 @@ structures, accessing the struct fields will access the chip registers.
   directory for the declaration of the structure.
 
   <tag><tt/CIA1, CIA2/</tag>
-  Access to the two CIA (complex interface adapater) chips is available via
+  Access to the two CIA (complex interface adapter) chips is available via
   the <tt/CIA1/ and <tt/CIA2/ variables. The structure behind these variables
-  is explained in <tt/_cia.h/.
+  is explained in <tt/_6526.h/.
 
   <tag><tt/COLOR_RAM/</tag>
-  A character array that mirrors the color RAM of the C64 at &dollar;D800.
+  A character array that mirrors the color RAM of the C128 at &dollar;D800.
 
 </descrip><p>
 
@@ -159,50 +159,64 @@ 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>
 
 Note: The graphics drivers for the VDC are incompatible with the extended
 memory drivers using the VDC memory!
 
 <descrip>
-  <tag><tt/c128-vdc.tgi/</tag>
+  <tag><tt/c128-vdc.tgi (c128_vdc_tgi)/</tag>
   This driver was written by Maciej Witkowiak. It uses the 80 column display
   and features a resolution of 640*200 with two colors and an adjustable
-  palette (that means that the two colors can be choosen out of the 16 VDC
+  palette (that means that the two colors can be chosen out of the 16 VDC
   colors).
 
-  <tag><tt/c128-vdc2.tgi/</tag>
+  <tag><tt/c128-vdc2.tgi (c128_vdc2_tgi)/</tag>
   This driver was written by Maciej Witkowiak. This driver uses the 80 column
   display and features a resolution of 640*480 with two colors and an
-  adjustable palette (that means that the two colors can be choosen out of the
-  16 VDC colors).
+  adjustable palette (that means that the two colors can be chosen out of the
+  16 VDC colors). The driver requires 64KB VDC RAM.
 </descrip><p>
 
+Note: The colors are translated from definitions in headers to correct VDC values
+so please use definitions or VIC color numbers only. Colors <tt/GRAY3/ and <tt/BROWN/ are
+missing on VDC and are translated to the two colors missing from VIC palette.
 
 <sect1>Extended memory drivers<p>
 
 <descrip>
 
-  <tag><tt/c128-georam.emd/</tag>
+  <tag><tt/c128-georam.emd (c128_georam_emd)/</tag>
   A driver for the GeoRam cartridge. The driver will always assume 2048 pages
   of 256 bytes each. There are no checks, so if your program knows better,
   just go ahead.
 
-  <tag><tt/c128-ram.emd/</tag>
+  <tag><tt/c128-ram.emd (c128_ram_emd)/</tag>
   An extended memory driver for the RAM in page 1. The common memory area is
   excluded, so this driver supports 251 pages of 256 bytes each.
 
-  <tag><tt/c128-ramcart.emd/</tag>
+  <tag><tt/c128-ram2.emd (c128_ram2_emd)/</tag>
+  An extended memory driver for the RAM in pages 1-3. The common memory area
+  is excluded, so this driver supports up to 731 pages of 256 bytes each. The
+  driver can be used as a full replacement for <tt/c128-ram.emd/, because RAM
+  in pages 2+3 is autodetected, but it's larger and there are not many
+  machines with RAM in banks 2+3, so it has been made a separate driver. The
+  additional code was contributed by Marco van den Heuvel.
+
+  <tag><tt/c128-ramcart.emd (c128_ramcart_emd)/</tag>
   A driver for the RamCart 64/128 written and contributed by Maciej Witkowiak.
   Will test the hardware for the available RAM.
 
-  <tag><tt/c128-reu.emd/</tag>
+  <tag><tt/c128-reu.emd (c128_reu_emd)/</tag>
   A driver for the CBM REUs. The driver will determine from the connected REU
   if it supports 128KB of RAM or more. In the latter case, 256KB are assumed,
   but since there are no range checks, the application can use more memory if
   it has better knowledge about the hardware than the driver.
 
-  <tag><tt/c128-vdc.emd/</tag>
+  <tag><tt/c128-vdc.emd (c128_vdc_emd)/</tag>
   A driver for the VDC memory of the C128 written and contributed by Maciej
   Witkowiak. Autodetects the amount of memory available (16 or 64K) and offers
   64 or 256 pages of 256 bytes each. Note: This driver is incompatible with
@@ -215,14 +229,14 @@ memory drivers using the VDC memory!
 
 <descrip>
 
-  <tag><tt/c128-ptvjoy.joy/</tag>
+  <tag><tt/c128-ptvjoy.joy (c128_ptvjoy_joy)/</tag>
   Driver for the Protovision 4-player adapter originally written by Groepaz
   for the C64 and converted for the C128 by me. See <htmlurl
   url="http://www.protovision-online.de/hardw/hardwstart.htm"
   name="http://www.protovision-online.de/hardw/hardwstart.htm"> for prices and
   building instructions. Up to four joysticks are supported.
 
-  <tag><tt/c128-stdjoy.joy/</tag>
+  <tag><tt/c128-stdjoy.joy (c128_stdjoy_joy)/</tag>
   Supports up to two joysticks connected to the standard joysticks port of
   the C128.
 
@@ -232,15 +246,34 @@ memory drivers using the VDC memory!
 
 <sect1>Mouse drivers<p>
 
-Currently no drivers available (in fact, the API for loadable mouse drivers
-does not exist).
+<descrip>
+
+  <tag><tt/c128-1351.mou (c128_1351_mou)/</tag>
+  Supports a standard mouse connected to port #0 of the C128.
+
+  <tag><tt/c128-inkwell.mou (c128_inkwell_mou)/</tag>
+  Supports the Inkwell Systems lightpens, connected to port #0 of the
+  C128.  It can read both the one-button 170-C and the two-button 184-C pens.
+  (It can read other lightpens and light-guns that send their button signal to
+  the joystick left-button pin or the paddle Y [up/down] pin.)  It works on
+  only the 40-column screen.
+
+  <tag><tt/c128-joy.mou (c128_joy_mou)/</tag>
+  Supports a mouse emulated by a standard joystick e.g. 1350 mouse in port
+  #1 of the C128.
+
+  <tag><tt/c128-pot.mou (c128_pot_mou)/</tag>
+  Supports a potentiometer device e.g. Koala Pad connected to port #1 of
+  the C128.
+
+</descrip><p>
 
 
 <sect1>RS232 device drivers<p>
 
 <descrip>
 
-  <tag><tt/c128-swlink.ser/</tag>
+  <tag><tt/c128-swlink.ser (c128_swlink_ser)/</tag>
   Driver for the SwiftLink cartridge. Supports up to 38400 baud, hardware flow
   control (RTS/CTS) and interrupt driven receives. Note that because of the
   peculiarities of the 6551 chip together with the use of the NMI, transmits
@@ -262,12 +295,33 @@ does not exist).
 
 <sect1>Passing arguments to the program<p>
 
-Command line argument passing is currently not supported for the C128.
+Command line arguments can be passed to <tt/main()/. Since this is not
+supported by BASIC, the following syntax was chosen:
+
+<tscreen><verb>
+    RUN:REM ARG1 " ARG2 IS QUOTED" ARG3 "" ARG5
+</verb></tscreen>
+
+<enum>
+<item>Arguments are separated by spaces.
+<item>Arguments may be quoted.
+<item>Leading and trailing spaces around an argument are ignored. Spaces within
+      a quoted argument are allowed.
+<item>The first argument passed to <tt/main/ is the program name.
+<item>A maximum number of 10 arguments (including the program name) are
+      supported.
+</enum>
+
+
+<sect1>Program return code<p>
+
+The program return code (low byte) is passed back to BASIC by use of the
+<tt/ST/ variable.
 
 
 <sect1>Interrupts<p>
 
-The runtime for the C128 uses routines marked as <tt/.CONDES/ type 2 for
+The runtime for the C128 uses routines marked as <tt/.INTERRUPTOR/ for
 interrupt handlers. Such routines must be written as simple machine language
 subroutines and will be called automatically by the interrupt handler code
 when they are linked into a program. See the discussion of the <tt/.CONDES/
@@ -275,15 +329,6 @@ feature in the <htmlurl url="ca65.html" name="assembler manual">.
 
 
 
-<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
@@ -306,7 +351,3 @@ freely, subject to the following restrictions:
 </enum>
 
 </article>
-
-
-
-