Merge branch 'cc65:master' into master
This commit is contained in:
10
.travis.yml
10
.travis.yml
@@ -9,14 +9,14 @@ jobs:
|
|||||||
- sudo apt-get update
|
- sudo apt-get update
|
||||||
- sudo apt-get install linuxdoc-tools linuxdoc-tools-info binutils-mingw-w64-i686 gcc-mingw-w64-i686 sshpass
|
- sudo apt-get install linuxdoc-tools linuxdoc-tools-info binutils-mingw-w64-i686 gcc-mingw-w64-i686 sshpass
|
||||||
script:
|
script:
|
||||||
- make bin USER_CFLAGS=-Werror
|
- make -j2 bin USER_CFLAGS=-Werror
|
||||||
- make lib QUIET=1
|
- make -j2 lib QUIET=1
|
||||||
- make test QUIET=1
|
- make test QUIET=1
|
||||||
- make samples
|
- make -j2 samples
|
||||||
- make -C src clean
|
- make -C src clean
|
||||||
- make bin USER_CFLAGS=-Werror CROSS_COMPILE=i686-w64-mingw32-
|
- make -j2 bin USER_CFLAGS=-Werror CROSS_COMPILE=i686-w64-mingw32-
|
||||||
- make -C samples clean
|
- make -C samples clean
|
||||||
- make doc zip
|
- make -j2 doc zip
|
||||||
after_success:
|
after_success:
|
||||||
- make -f Makefile.travis
|
- make -f Makefile.travis
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
[Wiki](https://github.com/cc65/wiki/wiki)
|
[Wiki](https://github.com/cc65/wiki/wiki)
|
||||||
|
|
||||||
[](https://travis-ci.org/cc65/cc65/builds)
|
[](https://app.travis-ci.com/cc65/cc65)
|
||||||
|
|
||||||
cc65 is a complete cross development package for 65(C)02 systems, including
|
cc65 is a complete cross development package for 65(C)02 systems, including
|
||||||
a powerful macro assembler, a C compiler, linker, librarian and several
|
a powerful macro assembler, a C compiler, linker, librarian and several
|
||||||
|
|||||||
@@ -428,8 +428,8 @@ The names in the parentheses denote the symbols to be used for static linking of
|
|||||||
|
|
||||||
<tag><tt/a2.ssc.ser (a2_ssc_ser)/</tag>
|
<tag><tt/a2.ssc.ser (a2_ssc_ser)/</tag>
|
||||||
Driver for the Apple II Super Serial Card. Supports up to 19200 baud,
|
Driver for the Apple II Super Serial Card. Supports up to 19200 baud,
|
||||||
hardware flow control (RTS/CTS) and interrupt driven receives. Note
|
requires hardware flow control (RTS/CTS) and does interrupt driven receives.
|
||||||
that because of the peculiarities of the 6551 chip transmits are not
|
Note that because of the peculiarities of the 6551 chip transmits are not
|
||||||
interrupt driven, and the transceiver blocks if the receiver asserts
|
interrupt driven, and the transceiver blocks if the receiver asserts
|
||||||
flow control because of a full buffer.
|
flow control because of a full buffer.
|
||||||
|
|
||||||
|
|||||||
@@ -428,8 +428,8 @@ The names in the parentheses denote the symbols to be used for static linking of
|
|||||||
|
|
||||||
<tag><tt/a2e.ssc.ser (a2e_ssc_ser)/</tag>
|
<tag><tt/a2e.ssc.ser (a2e_ssc_ser)/</tag>
|
||||||
Driver for the Apple II Super Serial Card. Supports up to 19200 baud,
|
Driver for the Apple II Super Serial Card. Supports up to 19200 baud,
|
||||||
hardware flow control (RTS/CTS) and interrupt driven receives. Note
|
requires hardware flow control (RTS/CTS) and does interrupt driven receives.
|
||||||
that because of the peculiarities of the 6551 chip transmits are not
|
Note that because of the peculiarities of the 6551 chip transmits are not
|
||||||
interrupt driven, and the transceiver blocks if the receiver asserts
|
interrupt driven, and the transceiver blocks if the receiver asserts
|
||||||
flow control because of a full buffer.
|
flow control because of a full buffer.
|
||||||
|
|
||||||
|
|||||||
@@ -675,9 +675,9 @@ The default callbacks definition (<tt/mouse_def_callbacks/) is an alias for the
|
|||||||
|
|
||||||
<sect1>RS232 device drivers<p>
|
<sect1>RS232 device drivers<p>
|
||||||
|
|
||||||
Currently there is one RS232 driver. It uses the R: device (therefore
|
Currently there is one RS232 driver. It supports up to 9600 baud, requires hardware flow control
|
||||||
an R: driver needs to be installed) and was tested with the 850
|
(RTS/CTS) and uses the R: device (therefore an R: driver needs to be installed). It was tested
|
||||||
interface module.
|
with the 850 interface module.
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tabular ca="rr">
|
<tabular ca="rr">
|
||||||
|
|||||||
@@ -176,10 +176,11 @@ No mouse drivers are currently available for the Atmos.
|
|||||||
|
|
||||||
<tag><tt/atmos-acia.ser (atmos_acia_ser)/</tag>
|
<tag><tt/atmos-acia.ser (atmos_acia_ser)/</tag>
|
||||||
Driver for the Telestrat integrated serial controller and the Atmos with a
|
Driver for the Telestrat integrated serial controller and the Atmos with a
|
||||||
serial add-on.
|
serial add-on. Supports up to 19200 baud, requires hardware flow control
|
||||||
Note that, because of the peculiarities of the 6551 chip, together with the
|
(RTS/CTS) and does interrupt driven receives. Note that, because of the
|
||||||
use of the NMI, transmits are not interrupt driven; and, the transceiver
|
peculiarities of the 6551 chip, together with the use of the NMI, transmits
|
||||||
blocks if the receiver asserts flow control because of a full buffer.
|
are not interrupt driven; and, the transceiver blocks if the receiver
|
||||||
|
asserts flow control because of a full buffer.
|
||||||
|
|
||||||
</descrip><p>
|
</descrip><p>
|
||||||
|
|
||||||
|
|||||||
@@ -324,9 +324,9 @@ The default drivers, <tt/mouse_stddrv (mouse_static_stddrv)/, point to <tt/c128-
|
|||||||
<descrip>
|
<descrip>
|
||||||
|
|
||||||
<tag><tt/c128-swlink.ser (c128_swlink_ser)/</tag>
|
<tag><tt/c128-swlink.ser (c128_swlink_ser)/</tag>
|
||||||
Driver for the SwiftLink cartridge. Supports up to 38400 BPS, hardware flow
|
Driver for the SwiftLink cartridge. Supports up to 38400 baud, requires hardware
|
||||||
control (RTS/CTS), and interrupt-driven receives. Note that, because of the
|
flow control (RTS/CTS) and does interrupt driven receives. Note that, because of
|
||||||
peculiarities of the 6551 chip, together with the use of the NMI, transmits
|
the peculiarities of the 6551 chip, together with the use of the NMI, transmits
|
||||||
are not interrupt driven; and, the transceiver blocks if the receiver asserts
|
are not interrupt driven; and, the transceiver blocks if the receiver asserts
|
||||||
flow control because of a full buffer.
|
flow control because of a full buffer.
|
||||||
|
|
||||||
|
|||||||
@@ -410,9 +410,9 @@ The default drivers, <tt/mouse_stddrv (mouse_static_stddrv)/, point to <tt/c64-1
|
|||||||
<descrip>
|
<descrip>
|
||||||
|
|
||||||
<tag><tt/c64-swlink.ser (c64_swlink_ser)/</tag>
|
<tag><tt/c64-swlink.ser (c64_swlink_ser)/</tag>
|
||||||
Driver for the SwiftLink cartridge. Supports up to 38400 BPS, hardware flow
|
Driver for the SwiftLink cartridge. Supports up to 38400 baud, requires hardware
|
||||||
control (RTS/CTS), and interrupt-driven receives. Note that, because of the
|
flow control (RTS/CTS) and does interrupt driven receives. Note that, because of
|
||||||
peculiarities of the 6551 chip, together with the use of the NMI, transmits
|
the peculiarities of the 6551 chip, together with the use of the NMI, transmits
|
||||||
are not interrupt driven; and, the transceiver blocks if the receiver asserts
|
are not interrupt driven; and, the transceiver blocks if the receiver asserts
|
||||||
flow control because of a full buffer.
|
flow control because of a full buffer.
|
||||||
|
|
||||||
|
|||||||
@@ -231,10 +231,10 @@ The default drivers, <tt/mouse_stddrv (mouse_static_stddrv)/, point to <tt/cbm51
|
|||||||
|
|
||||||
<tag><tt/cbm510-std.ser (cbm510_std_ser)/</tag>
|
<tag><tt/cbm510-std.ser (cbm510_std_ser)/</tag>
|
||||||
Driver for the 6551 ACIA chip built into the Commodore 510. Supports up to
|
Driver for the 6551 ACIA chip built into the Commodore 510. Supports up to
|
||||||
19200 BPS, hardware flow control (RTS/CTS), and interrupt-driven receives.
|
19200 baud, requires hardware flow control (RTS/CTS) and does interrupt driven
|
||||||
Note that, because of the peculiarities of the 6551 chip, transmits are not
|
receives. Note that, because of the peculiarities of the 6551 chip, transmits
|
||||||
interrupt driven; and, the transceiver blocks if the receiver asserts flow
|
are not interrupt driven; and, the transceiver blocks if the receiver asserts
|
||||||
control because of a full buffer.
|
flow control because of a full buffer.
|
||||||
|
|
||||||
</descrip><p>
|
</descrip><p>
|
||||||
|
|
||||||
|
|||||||
@@ -212,10 +212,10 @@ No mouse drivers are currently available for the Commodore 610.
|
|||||||
|
|
||||||
<tag><tt/cbm610-std.ser (cbm610_std_ser)/</tag>
|
<tag><tt/cbm610-std.ser (cbm610_std_ser)/</tag>
|
||||||
Driver for the 6551 ACIA chip built into the Commodore 610. Supports up to
|
Driver for the 6551 ACIA chip built into the Commodore 610. Supports up to
|
||||||
19200 BPS, hardware flow control (RTS/CTS), and interrupt-driven receives.
|
19200 baud, requires hardware flow control (RTS/CTS) and does interrupt driven
|
||||||
Note that, because of the peculiarities of the 6551 chip, transmits are not
|
receives. Note that, because of the peculiarities of the 6551 chip, transmits
|
||||||
interrupt driven; and, the transceiver blocks if the receiver asserts flow
|
are not interrupt driven; and, the transceiver blocks if the receiver asserts
|
||||||
control because of a full buffer.
|
flow control because of a full buffer.
|
||||||
|
|
||||||
</descrip><p>
|
</descrip><p>
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<article>
|
<article>
|
||||||
<title>Gamate System specific information for cc65
|
<title>Gamate System specific information for cc65
|
||||||
<author>
|
<author>
|
||||||
<url url="mailto:groepaz@gmx.net" name="Groepaz/Hitmen">
|
<url url="mailto:groepaz@gmx.net" name="Groepaz">
|
||||||
|
|
||||||
<abstract>
|
<abstract>
|
||||||
An overview over the Gamate runtime system as it is implemented for the
|
An overview over the Gamate runtime system as it is implemented for the
|
||||||
@@ -117,14 +117,7 @@ following functions (and a few others):
|
|||||||
<sect>Other hints<p>
|
<sect>Other hints<p>
|
||||||
|
|
||||||
<itemize>
|
<itemize>
|
||||||
<item>The Gamate is emulated by MESS (<url url="http://www.mess.org/">),
|
<item>some resources on the Gamate: <url url="http://en.wikipedia.org/wiki/Gamate">
|
||||||
run like this: <tt>mess gamate -debug -window -skip_gameinfo -cart test.bin</tt>
|
|
||||||
</itemize>
|
|
||||||
|
|
||||||
some resources on the Gamate:
|
|
||||||
|
|
||||||
<itemize>
|
|
||||||
<item><url url="http://en.wikipedia.org/wiki/Gamate">
|
|
||||||
</itemize>
|
</itemize>
|
||||||
|
|
||||||
<sect>License<p>
|
<sect>License<p>
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
<url url="mailto:uz@cc65.org" name="Ullrich von Bassewitz">,<newline>
|
<url url="mailto:uz@cc65.org" name="Ullrich von Bassewitz">,<newline>
|
||||||
<url url="mailto:cbmnut@hushmail.com" name="CbmNut">,<newline>
|
<url url="mailto:cbmnut@hushmail.com" name="CbmNut">,<newline>
|
||||||
<url url="mailto:greg.king5@verizon.net" name="Greg King">,<newline>
|
<url url="mailto:greg.king5@verizon.net" name="Greg King">,<newline>
|
||||||
|
<url url="mailto:groepaz@gmx.net" name="Groepaz">,<newline>
|
||||||
<url url="mailto:stephan.muehlstrasser@web.de" name="Stephan Mühlstrasser">
|
<url url="mailto:stephan.muehlstrasser@web.de" name="Stephan Mühlstrasser">
|
||||||
|
|
||||||
<abstract>
|
<abstract>
|
||||||
@@ -458,12 +459,8 @@ Substitute the name of a Commodore computer for that <tt/<sys>/:
|
|||||||
Start the desired version of the emulator (CBM610 programs run on
|
Start the desired version of the emulator (CBM610 programs run on
|
||||||
the CBM II [<tt/xcbm2/] emulator).
|
the CBM II [<tt/xcbm2/] emulator).
|
||||||
|
|
||||||
In the Windows versions of VICE, choose <bf>File>Autoboot disk/tape
|
Choose <bf>File>Autostart disk/tape image...</bf>, choose your executable,
|
||||||
image...</bf>, choose your executable, and click <bf/OK/.
|
and click <bf/OK/.
|
||||||
|
|
||||||
In the Unix versions, hold down the mouse's first button. Move the pointer to
|
|
||||||
<bf>Smart-attach disk/tape...</bf>, and release the button. Choose your
|
|
||||||
executable, and click <bf/Autostart/.
|
|
||||||
|
|
||||||
The file has a 14-byte header which corresponds to a PRG-format BASIC program,
|
The file has a 14-byte header which corresponds to a PRG-format BASIC program,
|
||||||
consisting of a single line, similar to this:
|
consisting of a single line, similar to this:
|
||||||
@@ -499,6 +496,29 @@ The output will appear on a separate line, and you will be returned to a BASIC
|
|||||||
prompt.
|
prompt.
|
||||||
|
|
||||||
|
|
||||||
|
<sect1>Gamate<p>
|
||||||
|
|
||||||
|
Before you can run the cartridge image produced by the linker, the binary has to
|
||||||
|
be patched using the <bf/gamate-fixcart/ tool that is included in the cc65
|
||||||
|
package in the util/gamata directory.
|
||||||
|
|
||||||
|
<tscreen><verb>
|
||||||
|
gamate-fixcart <image.bin>
|
||||||
|
</verb></tscreen>
|
||||||
|
|
||||||
|
<sect2>MESS<p>
|
||||||
|
Available at <url
|
||||||
|
url="https://www.mamedev.org">:
|
||||||
|
|
||||||
|
MESS (Multiple Emulator Super System) is a multi system emulator that emulates
|
||||||
|
various cc65 targets. It once started as a MAME fork, but was marged into MAME
|
||||||
|
again at some point.
|
||||||
|
|
||||||
|
<tscreen><verb>
|
||||||
|
mess gamate -debug -window -skip_gameinfo -cart <image.bin>
|
||||||
|
</verb></tscreen>
|
||||||
|
|
||||||
|
|
||||||
<sect1>GEOS<p>
|
<sect1>GEOS<p>
|
||||||
Available at <it/Click Here Software's/ <url
|
Available at <it/Click Here Software's/ <url
|
||||||
url="http://cbmfiles.com/geos/index.html" name="GEOS download section">:
|
url="http://cbmfiles.com/geos/index.html" name="GEOS download section">:
|
||||||
@@ -535,17 +555,8 @@ feature on.
|
|||||||
</quote>
|
</quote>
|
||||||
|
|
||||||
<quote>
|
<quote>
|
||||||
VICE even has different ways that depend on which operating system is running
|
In VICE, got to <bf/Settings/ -> <bf/Settings/, then <bf/Peripherial devices/ ->
|
||||||
the emulator.
|
<bf/Drive/. Then, you must enable the <bf/True drive emulation/ checkbox.
|
||||||
<itemize>
|
|
||||||
<item>In Windows, you must click on <bf/Options/ (in an always visible menu).
|
|
||||||
Then, you must click on <bf/True drive emulation/.
|
|
||||||
<item>In Unix, you must <em/hold down/ the second button on your mouse. Move
|
|
||||||
the pointer down to <bf/Drive settings/. Then, move the pointer over to
|
|
||||||
<bf/Enable true drive emulation/. (If there is a check-mark in front of
|
|
||||||
those words, that feature already is turned on -- then, move the pointer
|
|
||||||
off of that menu.) Release the mouse button.
|
|
||||||
</itemize>
|
|
||||||
</quote>
|
</quote>
|
||||||
|
|
||||||
Find the <bf/CONVERT/ program on the boot disk [tap the 6-key; then, you
|
Find the <bf/CONVERT/ program on the boot disk [tap the 6-key; then, you
|
||||||
@@ -572,6 +583,29 @@ directory notePad. Look at the eight file-positions on each page until you see
|
|||||||
The output is shown in a GEOS dialog box; click <bf/OK/ when you have finished
|
The output is shown in a GEOS dialog box; click <bf/OK/ when you have finished
|
||||||
reading it.
|
reading it.
|
||||||
|
|
||||||
|
Alternatively you can use the <bf/c1541/ program that comes with VICE to write the
|
||||||
|
file to a disk image directly in GEOS format, so it can be used in GEOS directly
|
||||||
|
without having to use the <bf/CONVERT/ program.
|
||||||
|
|
||||||
|
<tscreen><verb>
|
||||||
|
c1541 -attach geos.d64 -geoswrite hello1
|
||||||
|
</verb></tscreen>
|
||||||
|
|
||||||
|
|
||||||
|
<sect1>Nintendo Entertainment System<p>
|
||||||
|
|
||||||
|
<sect2>Mednafen (NES)<p>
|
||||||
|
Available at <url
|
||||||
|
url="https://mednafen.github.io/releases/">:
|
||||||
|
|
||||||
|
Mednafen is a multi system emulator that emulates a couple of the supported
|
||||||
|
targets of cc65: Apple II/II+, Atari Lynx, Nintendo Entertainment System and
|
||||||
|
PC Engine/TurboGrafx 16.
|
||||||
|
|
||||||
|
<tscreen><verb>
|
||||||
|
mednafen -force_module nes <image.bin>
|
||||||
|
</verb></tscreen>
|
||||||
|
|
||||||
|
|
||||||
<sect1>Ohio Scientific Challenger 1P<p>
|
<sect1>Ohio Scientific Challenger 1P<p>
|
||||||
The <tt/osic1p/ runtime library returns to the boot prompt when the main()
|
The <tt/osic1p/ runtime library returns to the boot prompt when the main()
|
||||||
@@ -694,6 +728,32 @@ Press <RETURN>.
|
|||||||
After hitting the RETURN key, you should see the boot prompt again.
|
After hitting the RETURN key, you should see the boot prompt again.
|
||||||
|
|
||||||
|
|
||||||
|
<sect1>PC Engine/TurboGrafx 16<p>
|
||||||
|
|
||||||
|
For the cartridge image produced by the linker to work in emulators and on real
|
||||||
|
hardware, its content must be rearranged so the first 8k block becomes the last
|
||||||
|
8k block in the image.
|
||||||
|
|
||||||
|
For example, for a 32k image this can be done using <bf/dd/ as follows:
|
||||||
|
|
||||||
|
<tscreen><verb>
|
||||||
|
dd if=infile.bin bs=8K skip=3 > outfile.pce
|
||||||
|
dd if=infile.bin bs=8K count=3 >> outfile.pce
|
||||||
|
</verb></tscreen>
|
||||||
|
|
||||||
|
<sect2>Mednafen<p>
|
||||||
|
Available at <url
|
||||||
|
url="https://mednafen.github.io/releases/">:
|
||||||
|
|
||||||
|
Mednafen is a multi system emulator that emulates a couple of the supported
|
||||||
|
targets of cc65: Apple II/II+, Atari Lynx, Nintendo Entertainment System and
|
||||||
|
PC Engine/TurboGrafx 16.
|
||||||
|
|
||||||
|
<tscreen><verb>
|
||||||
|
mednafen -force_module pce <image.pce>
|
||||||
|
</verb></tscreen>
|
||||||
|
|
||||||
|
|
||||||
<sect1>Contributions wanted<p>
|
<sect1>Contributions wanted<p>
|
||||||
|
|
||||||
We need your help! Recommended emulators and instructions for other targets
|
We need your help! Recommended emulators and instructions for other targets
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<article>
|
<article>
|
||||||
<title>PC-Engine (TurboGrafx 16) System-specific information for cc65
|
<title>PC-Engine (TurboGrafx 16) System-specific information for cc65
|
||||||
<author><url url="mailto:groepaz@gmx.net" name="Groepaz/Hitmen">,<newline>
|
<author><url url="mailto:groepaz@gmx.net" name="Groepaz">,<newline>
|
||||||
<url url="mailto:greg.king5@verizon.net" name="Greg King">
|
<url url="mailto:greg.king5@verizon.net" name="Greg King">
|
||||||
|
|
||||||
<abstract>
|
<abstract>
|
||||||
@@ -206,11 +206,6 @@ following functions (and a few others):
|
|||||||
|
|
||||||
<sect>Other hints<p>
|
<sect>Other hints<p>
|
||||||
|
|
||||||
<itemize>
|
|
||||||
<item><url url="https://mednafen.github.io/" name= "Mednafen"> is a good
|
|
||||||
emulator to use for the PC-Engine.
|
|
||||||
</itemize>
|
|
||||||
|
|
||||||
Some useful resources on PCE coding:
|
Some useful resources on PCE coding:
|
||||||
|
|
||||||
<itemize>
|
<itemize>
|
||||||
|
|||||||
@@ -195,10 +195,10 @@ No mouse drivers are currently available for the Plus/4.
|
|||||||
|
|
||||||
<tag><tt/plus4-stdser.ser (plus4_stdser_ser)/</tag>
|
<tag><tt/plus4-stdser.ser (plus4_stdser_ser)/</tag>
|
||||||
Driver for the 6551 ACIA chip built into the Plus/4. Supports up to 19200
|
Driver for the 6551 ACIA chip built into the Plus/4. Supports up to 19200
|
||||||
baud, hardware flow control (RTS/CTS) and interrupt driven receives. Note
|
baud, requires hardware flow control (RTS/CTS) and does interrupt driven
|
||||||
that because of the peculiarities of the 6551 chip transmits are not
|
receives. Note that because of the peculiarities of the 6551 chip transmits
|
||||||
interrupt driven, and the transceiver blocks if the receiver asserts flow
|
are not interrupt driven, and the transceiver blocks if the receiver asserts
|
||||||
control because of a full buffer.
|
flow control because of a full buffer.
|
||||||
|
|
||||||
You need an adapter to use the builtin port, since the output levels
|
You need an adapter to use the builtin port, since the output levels
|
||||||
available at the user port don't follow the RS232 standard.
|
available at the user port don't follow the RS232 standard.
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ endif
|
|||||||
# Lists of subdirectories
|
# Lists of subdirectories
|
||||||
|
|
||||||
# disasm depends on cpp
|
# disasm depends on cpp
|
||||||
DIRLIST = tutorial geos
|
DIRLIST = tutorial geos atari2600 supervision cbm
|
||||||
|
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
# Lists of executables
|
# Lists of executables
|
||||||
@@ -205,28 +205,22 @@ EXELIST_bbc = \
|
|||||||
EXELIST_c64 = \
|
EXELIST_c64 = \
|
||||||
ascii \
|
ascii \
|
||||||
enumdevdir \
|
enumdevdir \
|
||||||
fire \
|
|
||||||
gunzip65 \
|
gunzip65 \
|
||||||
hello \
|
hello \
|
||||||
mandelbrot \
|
mandelbrot \
|
||||||
mousedemo \
|
mousedemo \
|
||||||
multdemo \
|
multdemo \
|
||||||
nachtm \
|
|
||||||
ovrldemo \
|
ovrldemo \
|
||||||
plasma \
|
|
||||||
sieve \
|
sieve \
|
||||||
tgidemo
|
tgidemo
|
||||||
|
|
||||||
EXELIST_c128 = \
|
EXELIST_c128 = \
|
||||||
ascii \
|
ascii \
|
||||||
enumdevdir \
|
enumdevdir \
|
||||||
fire \
|
|
||||||
gunzip65 \
|
gunzip65 \
|
||||||
hello \
|
hello \
|
||||||
mandelbrot \
|
mandelbrot \
|
||||||
mousedemo \
|
mousedemo \
|
||||||
nachtm \
|
|
||||||
plasma \
|
|
||||||
sieve \
|
sieve \
|
||||||
tgidemo
|
tgidemo
|
||||||
|
|
||||||
@@ -237,19 +231,15 @@ EXELIST_c16 = \
|
|||||||
|
|
||||||
EXELIST_cbm510 = \
|
EXELIST_cbm510 = \
|
||||||
ascii \
|
ascii \
|
||||||
fire \
|
|
||||||
gunzip65 \
|
gunzip65 \
|
||||||
hello \
|
hello \
|
||||||
mousedemo \
|
mousedemo \
|
||||||
nachtm \
|
|
||||||
plasma \
|
|
||||||
sieve
|
sieve
|
||||||
|
|
||||||
EXELIST_cbm610 = \
|
EXELIST_cbm610 = \
|
||||||
ascii \
|
ascii \
|
||||||
gunzip65 \
|
gunzip65 \
|
||||||
hello \
|
hello \
|
||||||
nachtm \
|
|
||||||
sieve
|
sieve
|
||||||
|
|
||||||
EXELIST_creativision = \
|
EXELIST_creativision = \
|
||||||
@@ -302,7 +292,6 @@ EXELIST_plus4 = \
|
|||||||
enumdevdir \
|
enumdevdir \
|
||||||
gunzip65 \
|
gunzip65 \
|
||||||
hello \
|
hello \
|
||||||
plasma \
|
|
||||||
sieve
|
sieve
|
||||||
|
|
||||||
EXELIST_sim6502 = \
|
EXELIST_sim6502 = \
|
||||||
@@ -311,7 +300,7 @@ EXELIST_sim6502 = \
|
|||||||
EXELIST_sim65c02 = $(EXELIST_sim6502)
|
EXELIST_sim65c02 = $(EXELIST_sim6502)
|
||||||
|
|
||||||
EXELIST_supervision = \
|
EXELIST_supervision = \
|
||||||
supervisionhello
|
notavailable
|
||||||
|
|
||||||
EXELIST_telestrat = \
|
EXELIST_telestrat = \
|
||||||
ascii \
|
ascii \
|
||||||
@@ -398,7 +387,7 @@ $(C1541) -attach $@ -write "$(subst ?,$(SPACE),$(file))" $(notdir $(file)),s >$(
|
|||||||
endef # D64_WRITE_SEQ_recipe
|
endef # D64_WRITE_SEQ_recipe
|
||||||
|
|
||||||
samples.d64: samples
|
samples.d64: samples
|
||||||
@$(C1541) -format samples,AA d64 $@ >$(NULLDEV)
|
@$(C1541) -format "samples,00" d64 $@ >$(NULLDEV)
|
||||||
$(foreach file,$(EXELIST_$(SYS)),$(D64_WRITE_PRG_recipe))
|
$(foreach file,$(EXELIST_$(SYS)),$(D64_WRITE_PRG_recipe))
|
||||||
$(foreach file,$(OVERLAYLIST),$(D64_WRITE_PRG_recipe))
|
$(foreach file,$(OVERLAYLIST),$(D64_WRITE_PRG_recipe))
|
||||||
$(foreach file,$(EMD) $(MOU) $(TGI),$(D64_WRITE_SEQ_recipe))
|
$(foreach file,$(EMD) $(MOU) $(TGI),$(D64_WRITE_SEQ_recipe))
|
||||||
@@ -460,11 +449,17 @@ install:
|
|||||||
$(INSTALL) -d $(DESTDIR)$(samplesdir)
|
$(INSTALL) -d $(DESTDIR)$(samplesdir)
|
||||||
$(INSTALL) -d $(DESTDIR)$(samplesdir)/geos
|
$(INSTALL) -d $(DESTDIR)$(samplesdir)/geos
|
||||||
$(INSTALL) -d $(DESTDIR)$(samplesdir)/tutorial
|
$(INSTALL) -d $(DESTDIR)$(samplesdir)/tutorial
|
||||||
|
$(INSTALL) -d $(DESTDIR)$(samplesdir)/atari2600
|
||||||
|
$(INSTALL) -d $(DESTDIR)$(samplesdir)/cbm
|
||||||
|
$(INSTALL) -d $(DESTDIR)$(samplesdir)/supervision
|
||||||
$(INSTALL) -m0644 *.* $(DESTDIR)$(samplesdir)
|
$(INSTALL) -m0644 *.* $(DESTDIR)$(samplesdir)
|
||||||
$(INSTALL) -m0644 readme.txt $(DESTDIR)$(samplesdir)
|
$(INSTALL) -m0644 readme.txt $(DESTDIR)$(samplesdir)
|
||||||
$(INSTALL) -m0644 Makefile $(DESTDIR)$(samplesdir)
|
$(INSTALL) -m0644 Makefile $(DESTDIR)$(samplesdir)
|
||||||
$(INSTALL) -m0644 geos/*.* $(DESTDIR)$(samplesdir)/geos
|
$(INSTALL) -m0644 geos/*.* $(DESTDIR)$(samplesdir)/geos
|
||||||
$(INSTALL) -m0644 tutorial/*.* $(DESTDIR)$(samplesdir)/tutorial
|
$(INSTALL) -m0644 tutorial/*.* $(DESTDIR)$(samplesdir)/tutorial
|
||||||
|
$(INSTALL) -m0644 atari2600/*.* $(DESTDIR)$(samplesdir)/atari2600
|
||||||
|
$(INSTALL) -m0644 cbm/*.* $(DESTDIR)$(samplesdir)/cbm
|
||||||
|
$(INSTALL) -m0644 supervision/*.* $(DESTDIR)$(samplesdir)/supervision
|
||||||
|
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
# Packaging rules
|
# Packaging rules
|
||||||
|
|||||||
59
samples/atari2600/Makefile
Normal file
59
samples/atari2600/Makefile
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
|
||||||
|
# Run 'make SYS=<target>'; or, set a SYS env.
|
||||||
|
# var. to build for another target system.
|
||||||
|
SYS ?= atari2600
|
||||||
|
|
||||||
|
# Just the usual way to find out if we're
|
||||||
|
# using cmd.exe to execute make rules.
|
||||||
|
ifneq ($(shell echo),)
|
||||||
|
CMD_EXE = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifdef CMD_EXE
|
||||||
|
NULLDEV = nul:
|
||||||
|
DEL = -del /f
|
||||||
|
RMDIR = rmdir /s /q
|
||||||
|
else
|
||||||
|
NULLDEV = /dev/null
|
||||||
|
DEL = $(RM)
|
||||||
|
RMDIR = $(RM) -r
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifdef CC65_HOME
|
||||||
|
AS = $(CC65_HOME)/bin/ca65
|
||||||
|
CC = $(CC65_HOME)/bin/cc65
|
||||||
|
CL = $(CC65_HOME)/bin/cl65
|
||||||
|
LD = $(CC65_HOME)/bin/ld65
|
||||||
|
SP = $(CC65_HOME)/bin/sp65
|
||||||
|
else
|
||||||
|
AS := $(if $(wildcard ../../bin/ca65*),../../bin/ca65,ca65)
|
||||||
|
CC := $(if $(wildcard ../../bin/cc65*),../../bin/cc65,cc65)
|
||||||
|
CL := $(if $(wildcard ../../bin/cl65*),../../bin/cl65,cl65)
|
||||||
|
LD := $(if $(wildcard ../../bin/ld65*),../../bin/ld65,ld65)
|
||||||
|
SP := $(if $(wildcard ../../bin/sp65*),../../bin/sp65,sp65)
|
||||||
|
endif
|
||||||
|
|
||||||
|
EXELIST_atari2600 = \
|
||||||
|
hello
|
||||||
|
|
||||||
|
ifneq ($(EXELIST_$(SYS)),)
|
||||||
|
samples: $(EXELIST_$(SYS))
|
||||||
|
else
|
||||||
|
samples: notavailable
|
||||||
|
endif
|
||||||
|
|
||||||
|
# empty target used to skip systems that will not work with any program in this dir
|
||||||
|
notavailable:
|
||||||
|
ifeq ($(MAKELEVEL),0)
|
||||||
|
@echo "info: atari 2600 samples not available for" $(SYS)
|
||||||
|
else
|
||||||
|
# suppress the "nothing to be done for 'samples' message
|
||||||
|
@echo > $(NULLDEV)
|
||||||
|
endif
|
||||||
|
|
||||||
|
hello: hello.c
|
||||||
|
$(CL) -t $(SYS) -O -o hello -m hello.map hello.c
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@$(DEL) $(EXELIST_atari2600) 2>$(NULLDEV)
|
||||||
|
@$(DEL) *.map 2>$(NULLDEV)
|
||||||
164
samples/cbm/Makefile
Normal file
164
samples/cbm/Makefile
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
|
||||||
|
# Run 'make SYS=<target>'; or, set a SYS env.
|
||||||
|
# var. to build for another target system.
|
||||||
|
SYS ?= c64
|
||||||
|
|
||||||
|
# Just the usual way to find out if we're
|
||||||
|
# using cmd.exe to execute make rules.
|
||||||
|
ifneq ($(shell echo),)
|
||||||
|
CMD_EXE = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifdef CMD_EXE
|
||||||
|
NULLDEV = nul:
|
||||||
|
DEL = -del /f
|
||||||
|
RMDIR = rmdir /s /q
|
||||||
|
else
|
||||||
|
NULLDEV = /dev/null
|
||||||
|
DEL = $(RM)
|
||||||
|
RMDIR = $(RM) -r
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifdef CC65_HOME
|
||||||
|
AS = $(CC65_HOME)/bin/ca65
|
||||||
|
CC = $(CC65_HOME)/bin/cc65
|
||||||
|
CL = $(CC65_HOME)/bin/cl65
|
||||||
|
LD = $(CC65_HOME)/bin/ld65
|
||||||
|
SP = $(CC65_HOME)/bin/sp65
|
||||||
|
else
|
||||||
|
AS := $(if $(wildcard ../../bin/ca65*),../../bin/ca65,ca65)
|
||||||
|
CC := $(if $(wildcard ../../bin/cc65*),../../bin/cc65,cc65)
|
||||||
|
CL := $(if $(wildcard ../../bin/cl65*),../../bin/cl65,cl65)
|
||||||
|
LD := $(if $(wildcard ../../bin/ld65*),../../bin/ld65,ld65)
|
||||||
|
SP := $(if $(wildcard ../../bin/sp65*),../../bin/sp65,sp65)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(filter disk samples.%,$(MAKECMDGOALS)),)
|
||||||
|
ifdef CC65_HOME
|
||||||
|
TARGET_PATH = $(CC65_HOME)/target
|
||||||
|
else
|
||||||
|
TARGET_PATH := $(if $(wildcard ../target),../target,$(shell $(CL) --print-target-path))
|
||||||
|
endif
|
||||||
|
|
||||||
|
# If TARGET_PATH contains spaces then it is presumed to contain escaped spaces. GNU make
|
||||||
|
# has very limited support for paths containing spaces. $(wildcard) is the only function
|
||||||
|
# that is aware of escaped spaces. However, $(wildcard) never returns paths with escaped
|
||||||
|
# spaces !!! So if it e.g. finds 4 files in a path with 2 spaces then one ends up with a
|
||||||
|
# return value consisting of 12 plain words :-((
|
||||||
|
#
|
||||||
|
# Fortunately we can work around that behaviour here because we know that the files we
|
||||||
|
# are looking for have known extensions. So we can $(filter) the in our example above 12
|
||||||
|
# words for file extensions so we come up with 4 path fragments. Then we remove those
|
||||||
|
# path fragments with $(notdir) from the file names.
|
||||||
|
#
|
||||||
|
# So far so good. But here we want to process files from different paths in a single
|
||||||
|
# recipe further down below and therefore want to prepend the paths to the files with
|
||||||
|
# $(addprefix). However, $(foreach) isn't aware of escaped spaces (only $(wildcard) is).
|
||||||
|
# Therefore, we need to replace the spaces with some other character temporarily in order
|
||||||
|
# to have $(foreach) generate one invocation per file. We use the character '?' for that
|
||||||
|
# purpose here, just because it is known to not be part of file names.
|
||||||
|
#
|
||||||
|
# Inside the recipe generated per file we then replace the '?' again with a space. As we
|
||||||
|
# want to be compatible with cmd.exe for execution we're not using an escaped space but
|
||||||
|
# rather double-quote the whole path.
|
||||||
|
#
|
||||||
|
# Note: The "strange" $(wildcard) further down below just serves the purpose to unescape
|
||||||
|
# spaces for cmd.exe. This could have as well been done with another $(subst).
|
||||||
|
|
||||||
|
SUBST_TARGET_PATH := $(subst \$(SPACE),?,$(TARGET_PATH))
|
||||||
|
|
||||||
|
EMD := $(wildcard $(TARGET_PATH)/$(SYS)/drv/emd/*)
|
||||||
|
MOU := $(wildcard $(TARGET_PATH)/$(SYS)/drv/mou/*)
|
||||||
|
TGI := $(wildcard $(TARGET_PATH)/$(SYS)/drv/tgi/*)
|
||||||
|
|
||||||
|
EMD := $(addprefix $(SUBST_TARGET_PATH)/$(SYS)/drv/emd/,$(notdir $(filter %.emd,$(EMD))))
|
||||||
|
MOU := $(addprefix $(SUBST_TARGET_PATH)/$(SYS)/drv/mou/,$(notdir $(filter %.mou,$(MOU))))
|
||||||
|
TGI := $(addprefix $(SUBST_TARGET_PATH)/$(SYS)/drv/tgi/,$(notdir $(filter %.tgi,$(TGI))))
|
||||||
|
|
||||||
|
# This one comes with the VICE emulator.
|
||||||
|
# See http://vice-emu.sourceforge.net/
|
||||||
|
C1541 ?= c1541
|
||||||
|
endif
|
||||||
|
|
||||||
|
DISK_c64 = samples.d64
|
||||||
|
|
||||||
|
EXELIST_c64 = \
|
||||||
|
fire \
|
||||||
|
plasma \
|
||||||
|
nachtm
|
||||||
|
|
||||||
|
EXELIST_c128 = \
|
||||||
|
fire \
|
||||||
|
plasma \
|
||||||
|
nachtm
|
||||||
|
|
||||||
|
EXELIST_cbm510 = \
|
||||||
|
fire \
|
||||||
|
plasma \
|
||||||
|
nachtm
|
||||||
|
|
||||||
|
EXELIST_cbm610 = \
|
||||||
|
nachtm
|
||||||
|
|
||||||
|
EXELIST_plus4 = \
|
||||||
|
plasma
|
||||||
|
|
||||||
|
EXELIST_c16 = \
|
||||||
|
notavailable
|
||||||
|
|
||||||
|
EXELIST_pet = \
|
||||||
|
notavailable
|
||||||
|
|
||||||
|
EXELIST_vic20 = \
|
||||||
|
notavailable
|
||||||
|
|
||||||
|
ifneq ($(EXELIST_$(SYS)),)
|
||||||
|
samples: $(EXELIST_$(SYS))
|
||||||
|
else
|
||||||
|
samples: notavailable
|
||||||
|
endif
|
||||||
|
|
||||||
|
disk: $(DISK_$(SYS))
|
||||||
|
|
||||||
|
# empty target used to skip systems that will not work with any program in this dir
|
||||||
|
notavailable:
|
||||||
|
ifeq ($(MAKELEVEL),0)
|
||||||
|
@echo "info: cbm samples not available for" $(SYS)
|
||||||
|
else
|
||||||
|
# suppress the "nothing to be done for 'samples' message
|
||||||
|
@echo > $(NULLDEV)
|
||||||
|
endif
|
||||||
|
|
||||||
|
fire: fire.c
|
||||||
|
$(CL) -t $(SYS) -O -o fire -m fire.map fire.c
|
||||||
|
plasma: plasma.c
|
||||||
|
$(CL) -t $(SYS) -O -o plasma -m plasma.map plasma.c
|
||||||
|
nachtm: nachtm.c
|
||||||
|
$(CL) -t $(SYS) -O -o nachtm -m nachtm.map nachtm.c
|
||||||
|
|
||||||
|
# --------------------------------------------------------------------------
|
||||||
|
# Rule to make a CBM disk with all samples. Needs the c1541 program that comes
|
||||||
|
# with the VICE emulator.
|
||||||
|
|
||||||
|
define D64_WRITE_PRG_recipe
|
||||||
|
|
||||||
|
$(C1541) -attach $@ -write "$(subst ?,$(SPACE),$(file))" $(notdir $(file)),p >$(NULLDEV)
|
||||||
|
|
||||||
|
endef # D64_WRITE_PRG_recipe
|
||||||
|
|
||||||
|
define D64_WRITE_SEQ_recipe
|
||||||
|
|
||||||
|
$(C1541) -attach $@ -write "$(subst ?,$(SPACE),$(file))" $(notdir $(file)),s >$(NULLDEV)
|
||||||
|
|
||||||
|
endef # D64_WRITE_SEQ_recipe
|
||||||
|
|
||||||
|
samples.d64: samples
|
||||||
|
@$(C1541) -format "samples,00" d64 $@ >$(NULLDEV)
|
||||||
|
$(foreach file,$(EXELIST_$(SYS)),$(D64_WRITE_PRG_recipe))
|
||||||
|
# $(foreach file,$(OVERLAYLIST),$(D64_WRITE_PRG_recipe))
|
||||||
|
# $(foreach file,$(EMD) $(MOU) $(TGI),$(D64_WRITE_SEQ_recipe))
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@$(DEL) $(EXELIST_$(SYS)) 2>$(NULLDEV)
|
||||||
|
@$(DEL) *.map 2>$(NULLDEV)
|
||||||
|
@$(DEL) $(DISK_$(SYS)) 2>$(NULLDEV)
|
||||||
@@ -10,11 +10,13 @@ Please note:
|
|||||||
similar systems. If you're using Windows, then consider installing Cygwin
|
similar systems. If you're using Windows, then consider installing Cygwin
|
||||||
or MSys2.
|
or MSys2.
|
||||||
|
|
||||||
* The makefile specifies the C64 as the default target system because all
|
* The makefile specifies the C64 as the default target system because most
|
||||||
but three of the programs run on that platform. When compiling for another
|
of the programs run on that platform. When compiling for another system,
|
||||||
system, you will have to change the line that specifies the target system
|
you will have to change the line that specifies the target system at the
|
||||||
at the top of the makefile, specify the system with SYS=<target> on the
|
top of the makefile, specify the system with SYS=<target> on the make
|
||||||
make command line, or set a SYS environment variable.
|
command line, or set a SYS environment variable. For example:
|
||||||
|
|
||||||
|
make SYS=apple2
|
||||||
|
|
||||||
* Use "make disk" to build a disk image with all sample programs.
|
* Use "make disk" to build a disk image with all sample programs.
|
||||||
|
|
||||||
@@ -31,11 +33,6 @@ Description: Shows the ASCII (or ATASCII, PETSCII) codes of typed
|
|||||||
<greg.king5@verizon.com>.
|
<greg.king5@verizon.com>.
|
||||||
Platforms: All platforms with conio or stdio (compile time configurable).
|
Platforms: All platforms with conio or stdio (compile time configurable).
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
Name: atari2600hello
|
|
||||||
Description: A "Hello world" type program.
|
|
||||||
Platforms: Runs on only the Atari 2600 Video Console System.
|
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
Name: diodemo
|
Name: diodemo
|
||||||
Description: A disc copy program written and contributed by Oliver
|
Description: A disc copy program written and contributed by Oliver
|
||||||
@@ -52,12 +49,6 @@ Platforms: All systems with device enumeration and directory access
|
|||||||
(currently the Commodore machines, the Commander X16,
|
(currently the Commodore machines, the Commander X16,
|
||||||
and the Apple ][).
|
and the Apple ][).
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
Name: fire
|
|
||||||
Description: Another graphics demo written by groepaz/hitmen.
|
|
||||||
Platforms: The program currently is running on only the C64, but should
|
|
||||||
be portable to the C128 and CBM510 (and maybe more machines).
|
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
Name: gunzip65
|
Name: gunzip65
|
||||||
Description: A gunzip utility for 6502-based machines, written by Piotr
|
Description: A gunzip utility for 6502-based machines, written by Piotr
|
||||||
@@ -76,8 +67,8 @@ Platforms: Runs on all platforms that support conio, which means:
|
|||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
Name: mandelbrot
|
Name: mandelbrot
|
||||||
Description: A mandelbrot demo using integer arithmetic. The demo was
|
Description: A mandelbrot demo using integer arithmetic. The demo was
|
||||||
written by groepaz/hitmen, and converted to cc65 using TGI
|
written by groepaz, and converted to cc65 using TGI graphics
|
||||||
graphics by Stephan Haubenthal.
|
by Stephan Haubenthal.
|
||||||
Platforms: Runs on all platforms that have TGI support:
|
Platforms: Runs on all platforms that have TGI support:
|
||||||
Apple ][, Atari, C64, C128, Oric Atmos and Telestrat, GEOS,
|
Apple ][, Atari, C64, C128, Oric Atmos and Telestrat, GEOS,
|
||||||
NES, and Lynx.
|
NES, and Lynx.
|
||||||
@@ -97,13 +88,6 @@ Platforms: All systems with an overlay linker config., disk directory
|
|||||||
access, and EMD support (currently the C64, the C128,
|
access, and EMD support (currently the C64, the C128,
|
||||||
the Atari, and the Apple ][).
|
the Atari, and the Apple ][).
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
Name: nachtm
|
|
||||||
Description: Plays "Eine kleine Nachtmusik" by Wolfgang Amadeus Mozart.
|
|
||||||
Platforms: All systems that have the Commodore SID (Sound Interface
|
|
||||||
Device):
|
|
||||||
C64, C128, CBM510, CBM610.
|
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
Name: overlaydemo
|
Name: overlaydemo
|
||||||
Description: Shows how to load overlay files from disk. Written and
|
Description: Shows how to load overlay files from disk. Written and
|
||||||
@@ -111,13 +95,6 @@ Description: Shows how to load overlay files from disk. Written and
|
|||||||
Platforms: All systems with an overlay linker config. (currently the C64,
|
Platforms: All systems with an overlay linker config. (currently the C64,
|
||||||
the C128, the Atari, and the Apple ][).
|
the C128, the Atari, and the Apple ][).
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
Name: plasma
|
|
||||||
Description: A fancy graphics demo written by groepaz/hitmen.
|
|
||||||
Platforms: The program needs a VIC-II or a TED, so it runs on the following
|
|
||||||
systems:
|
|
||||||
C64, C128, CBM510, Plus/4.
|
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
Name: sieve
|
Name: sieve
|
||||||
Description: Implements the "Sieve of Eratosthenes" as a way to find all
|
Description: Implements the "Sieve of Eratosthenes" as a way to find all
|
||||||
@@ -128,11 +105,6 @@ Platforms: All systems with conio and clock support:
|
|||||||
Commander X16, Apple ][ (without timing due to missing clock
|
Commander X16, Apple ][ (without timing due to missing clock
|
||||||
support).
|
support).
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
Name: supervisionhello
|
|
||||||
Description: A "Hello world" type program.
|
|
||||||
Platforms: Runs on only the Watara Supervision game console.
|
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
Name: tgidemo
|
Name: tgidemo
|
||||||
Description: Shows some of the graphics capabilities of the "Tiny Graphics
|
Description: Shows some of the graphics capabilities of the "Tiny Graphics
|
||||||
@@ -140,3 +112,46 @@ Description: Shows some of the graphics capabilities of the "Tiny Graphics
|
|||||||
Platforms: Runs on all platforms that have TGI support:
|
Platforms: Runs on all platforms that have TGI support:
|
||||||
Apple ][, Atari, C64, C128, Oric Atmos and Telestrat, GEOS,
|
Apple ][, Atari, C64, C128, Oric Atmos and Telestrat, GEOS,
|
||||||
NES, and Lynx.
|
NES, and Lynx.
|
||||||
|
|
||||||
|
=============================================================================
|
||||||
|
|
||||||
|
Platform specific samples follow:
|
||||||
|
|
||||||
|
atari 2600:
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Name: hello
|
||||||
|
Description: A "Hello world" type program.
|
||||||
|
Platforms: Runs on only the Atari 2600 Video Console System.
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
cbm:
|
||||||
|
----
|
||||||
|
|
||||||
|
Name: fire
|
||||||
|
Description: Another graphics demo written by groepaz.
|
||||||
|
Platforms: C64, C128, CBM510
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
Name: nachtm
|
||||||
|
Description: Plays "Eine kleine Nachtmusik" by Wolfgang Amadeus Mozart.
|
||||||
|
Platforms: All systems that have the Commodore SID (Sound Interface
|
||||||
|
Device):
|
||||||
|
C64, C128, CBM510, CBM610.
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
Name: plasma
|
||||||
|
Description: A fancy graphics demo written by groepaz.
|
||||||
|
Platforms: The program needs a VIC-II or a TED, so it runs on the following
|
||||||
|
systems:
|
||||||
|
C64, C128, CBM510, Plus/4.
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
supervision:
|
||||||
|
------------
|
||||||
|
|
||||||
|
Name: hello
|
||||||
|
Description: A "Hello world" type program.
|
||||||
|
Platforms: Runs on only the Watara Supervision game console.
|
||||||
|
----------------------------------------------------------------------------
|
||||||
|
|||||||
59
samples/supervision/Makefile
Normal file
59
samples/supervision/Makefile
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
|
||||||
|
# Run 'make SYS=<target>'; or, set a SYS env.
|
||||||
|
# var. to build for another target system.
|
||||||
|
SYS ?= supervision
|
||||||
|
|
||||||
|
# Just the usual way to find out if we're
|
||||||
|
# using cmd.exe to execute make rules.
|
||||||
|
ifneq ($(shell echo),)
|
||||||
|
CMD_EXE = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifdef CMD_EXE
|
||||||
|
NULLDEV = nul:
|
||||||
|
DEL = -del /f
|
||||||
|
RMDIR = rmdir /s /q
|
||||||
|
else
|
||||||
|
NULLDEV = /dev/null
|
||||||
|
DEL = $(RM)
|
||||||
|
RMDIR = $(RM) -r
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifdef CC65_HOME
|
||||||
|
AS = $(CC65_HOME)/bin/ca65
|
||||||
|
CC = $(CC65_HOME)/bin/cc65
|
||||||
|
CL = $(CC65_HOME)/bin/cl65
|
||||||
|
LD = $(CC65_HOME)/bin/ld65
|
||||||
|
SP = $(CC65_HOME)/bin/sp65
|
||||||
|
else
|
||||||
|
AS := $(if $(wildcard ../../bin/ca65*),../../bin/ca65,ca65)
|
||||||
|
CC := $(if $(wildcard ../../bin/cc65*),../../bin/cc65,cc65)
|
||||||
|
CL := $(if $(wildcard ../../bin/cl65*),../../bin/cl65,cl65)
|
||||||
|
LD := $(if $(wildcard ../../bin/ld65*),../../bin/ld65,ld65)
|
||||||
|
SP := $(if $(wildcard ../../bin/sp65*),../../bin/sp65,sp65)
|
||||||
|
endif
|
||||||
|
|
||||||
|
EXELIST_supervision = \
|
||||||
|
hello
|
||||||
|
|
||||||
|
ifneq ($(EXELIST_$(SYS)),)
|
||||||
|
samples: $(EXELIST_$(SYS))
|
||||||
|
else
|
||||||
|
samples: notavailable
|
||||||
|
endif
|
||||||
|
|
||||||
|
# empty target used to skip systems that will not work with any program in this dir
|
||||||
|
notavailable:
|
||||||
|
ifeq ($(MAKELEVEL),0)
|
||||||
|
@echo "info: supervision samples not available for" $(SYS)
|
||||||
|
else
|
||||||
|
# suppress the "nothing to be done for 'samples' message
|
||||||
|
@echo > $(NULLDEV)
|
||||||
|
endif
|
||||||
|
|
||||||
|
hello: hello.c
|
||||||
|
$(CL) -t $(SYS) -O -o hello -m hello.map hello.c
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@$(DEL) $(EXELIST_supervision) 2>$(NULLDEV)
|
||||||
|
@$(DEL) *.map 2>$(NULLDEV)
|
||||||
@@ -1113,9 +1113,9 @@ static unsigned Opt_a_toscmpbool (StackOpData* D, const char* BoolTransformer)
|
|||||||
|
|
||||||
D->IP = D->OpIndex + 1;
|
D->IP = D->OpIndex + 1;
|
||||||
|
|
||||||
if (!D->RhsMultiChg &&
|
if (!D->RhsMultiChg &&
|
||||||
(D->Rhs.A.LoadEntry->Flags & CEF_DONT_REMOVE) == 0 &&
|
(D->Rhs.A.Flags & LI_DIRECT) != 0 &&
|
||||||
(D->Rhs.A.Flags & LI_DIRECT) != 0) {
|
(D->Rhs.A.LoadEntry->Flags & CEF_DONT_REMOVE) == 0) {
|
||||||
|
|
||||||
/* cmp */
|
/* cmp */
|
||||||
AddOpLow (D, OP65_CMP, &D->Rhs);
|
AddOpLow (D, OP65_CMP, &D->Rhs);
|
||||||
|
|||||||
@@ -5,13 +5,13 @@ MEMORY {
|
|||||||
ZP: file = "", define = yes, start = $0082, size = $007E;
|
ZP: file = "", define = yes, start = $0082, size = $007E;
|
||||||
# First memory segment in file, show message
|
# First memory segment in file, show message
|
||||||
LOADER: file = %O, start = $680, size = 128;
|
LOADER: file = %O, start = $680, size = 128;
|
||||||
# First memory segment in file, load over COLOR registers:
|
# Second memory segment in file, load over COLOR registers:
|
||||||
COLOR: file = %O, start = $2C4, size = 5;
|
COLOR: file = %O, start = $2C4, size = 5;
|
||||||
# Second memory segment, load at page 6:
|
# Third memory segment, load at page 6:
|
||||||
PAGE6: file = %O, start = $600, size = 128;
|
PAGE6: file = %O, start = $600, size = 128;
|
||||||
# Third memory segment in file, load over SDLST register:
|
# Fourth memory segment in file, load over SDLST register:
|
||||||
SDLST: file = %O, start = $230, size = 2;
|
SDLST: file = %O, start = $230, size = 2;
|
||||||
# Main segment, load at "STARTADDRESS"
|
# Fifth/Main segment, load at "STARTADDRESS"
|
||||||
MAIN: file = %O, start = %S, size = $BC20 - %S;
|
MAIN: file = %O, start = %S, size = $BC20 - %S;
|
||||||
}
|
}
|
||||||
FILES {
|
FILES {
|
||||||
|
|||||||
@@ -9,9 +9,9 @@
|
|||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
|
char *rev;
|
||||||
unsigned int t, v;
|
unsigned int t, v;
|
||||||
unsigned char palntsc;
|
unsigned char palntsc;
|
||||||
unsigned char *rev;
|
|
||||||
unsigned char minor;
|
unsigned char minor;
|
||||||
unsigned char c;
|
unsigned char c;
|
||||||
|
|
||||||
|
|||||||
@@ -42,14 +42,15 @@ else
|
|||||||
COUNT := 1
|
COUNT := 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all: conio.pce
|
all: conio.bin
|
||||||
|
|
||||||
|
%.bin: %.c
|
||||||
|
$(CL) -t pce $< -Wl -D__CARTSIZE__=${CARTSIZE} -m $*.map -o $@
|
||||||
|
@echo "use 'make conio.pce' to produce a .pce file using dd"
|
||||||
|
|
||||||
%.pce: %.bin
|
%.pce: %.bin
|
||||||
dd if=$< bs=8K skip=${COUNT} > $@
|
dd if=$< bs=8K skip=${COUNT} > $@
|
||||||
dd if=$< bs=8K count=${COUNT} >> $@
|
dd if=$< bs=8K count=${COUNT} >> $@
|
||||||
|
|
||||||
%.bin: %.c
|
|
||||||
$(CL) -t pce $< -Wl -D__CARTSIZE__=${CARTSIZE} -m $*.map -o $@
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@$(DEL) conio.o conio.??? 2>$(NULLDEV)
|
@$(DEL) conio.o conio.??? 2>$(NULLDEV)
|
||||||
|
|||||||
42
test/val/bug1552.c
Normal file
42
test/val/bug1552.c
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
|
||||||
|
/*
|
||||||
|
bug #1552 - crash in fuzix xec.c
|
||||||
|
|
||||||
|
cc65 -t none -O bug1552.c
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
typedef struct trenod *TREPTR;
|
||||||
|
typedef struct whnod *WHPTR;
|
||||||
|
|
||||||
|
struct trenod {
|
||||||
|
int tretyp;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct whnod {
|
||||||
|
int whtyp;
|
||||||
|
TREPTR whtre;
|
||||||
|
};
|
||||||
|
|
||||||
|
int execute(TREPTR argt, int execflg, int *pf1, int *pf2)
|
||||||
|
{
|
||||||
|
register TREPTR t;
|
||||||
|
int type;
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case 6:
|
||||||
|
{
|
||||||
|
while ((execute(((WHPTR) t)->whtre, 0, NULL, NULL) == 0) == (type == 5)) {
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
return execute((TREPTR)42, 2, (int *)3, (int *)4);
|
||||||
|
}
|
||||||
30
test/val/bug1562.c
Normal file
30
test/val/bug1562.c
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
|
||||||
|
/* bug 1562: cc65 generates incorrect code for logical expression with -O */
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
int failures = 0;
|
||||||
|
|
||||||
|
char input[256];
|
||||||
|
|
||||||
|
#define DEBUGTRUE(x) printf("%s=%d\n", #x, (x)); failures += (x) ? 0 : 1
|
||||||
|
|
||||||
|
#define DEBUGFALSE(x) printf("%s=%d\n", #x, (x)); failures += (x) ? 1 : 0
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
char* r;
|
||||||
|
strcpy(input, "\"XYZ\"");
|
||||||
|
r = input+4;
|
||||||
|
DEBUGFALSE(*r != '"'); // = false
|
||||||
|
DEBUGTRUE(*r == '"'); // = true
|
||||||
|
DEBUGFALSE(*(r+1) == '"'); // = false
|
||||||
|
// Next answer should be false because
|
||||||
|
// (false || true && false) is false, but it is true with -O.
|
||||||
|
DEBUGFALSE(*r != '"' || *r == '"' && *(r+1) == '"');
|
||||||
|
// Adding parens fixes it even with -O.
|
||||||
|
DEBUGFALSE(*r != '"' || (*r == '"' && *(r+1) == '"'));
|
||||||
|
|
||||||
|
printf("failures: %d\n", failures);
|
||||||
|
return failures;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user