This commit is contained in:
191
.github/workflows/build-on-pull-request.yml
vendored
Normal file
191
.github/workflows/build-on-pull-request.yml
vendored
Normal file
@@ -0,0 +1,191 @@
|
|||||||
|
name: Build Pull Request
|
||||||
|
on: [pull_request]
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build_linux:
|
||||||
|
name: Build and Test (Linux)
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Install Dependencies
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install linuxdoc-tools-info gcc-mingw-w64-x86-64
|
||||||
|
|
||||||
|
- shell: bash
|
||||||
|
run: git config --global core.autocrlf input
|
||||||
|
- name: Checkout Source
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Build the tools.
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
make -j2 bin USER_CFLAGS=-Werror
|
||||||
|
make -j2 util
|
||||||
|
- name: Build the platform libraries.
|
||||||
|
shell: bash
|
||||||
|
run: make -j2 lib QUIET=1
|
||||||
|
- name: Run the regression tests.
|
||||||
|
shell: bash
|
||||||
|
run: make test QUIET=1
|
||||||
|
- name: Test that the samples can be built.
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
make SYS=apple2 -C samples
|
||||||
|
make SYS=apple2 -C samples clean
|
||||||
|
make SYS=apple2enh -C samples
|
||||||
|
make SYS=apple2enh -C samples clean
|
||||||
|
make SYS=atari -C samples
|
||||||
|
make SYS=atari -C samples clean
|
||||||
|
make SYS=atarixl -C samples
|
||||||
|
make SYS=atarixl -C samples clean
|
||||||
|
make SYS=atari2600 -C samples
|
||||||
|
make SYS=atari2600 -C samples clean
|
||||||
|
make SYS=atari5200 -C samples
|
||||||
|
make SYS=atari5200 -C samples clean
|
||||||
|
make SYS=atmos -C samples
|
||||||
|
make SYS=atmos -C samples clean
|
||||||
|
make SYS=bbc -C samples
|
||||||
|
make SYS=bbc -C samples clean
|
||||||
|
make SYS=c128 -C samples
|
||||||
|
make SYS=c128 -C samples clean
|
||||||
|
make SYS=c16 -C samples
|
||||||
|
make SYS=c16 -C samples clean
|
||||||
|
make SYS=c64 -C samples
|
||||||
|
make SYS=c64 -C samples clean
|
||||||
|
make SYS=cbm510 -C samples
|
||||||
|
make SYS=cbm510 -C samples clean
|
||||||
|
make SYS=cbm610 -C samples
|
||||||
|
make SYS=cbm610 -C samples clean
|
||||||
|
make SYS=creativision -C samples
|
||||||
|
make SYS=creativision -C samples clean
|
||||||
|
make SYS=cx16 -C samples
|
||||||
|
make SYS=cx16 -C samples clean
|
||||||
|
make SYS=gamate -C samples
|
||||||
|
make SYS=gamate -C samples clean
|
||||||
|
make SYS=geos-apple -C samples
|
||||||
|
make SYS=geos-apple -C samples clean
|
||||||
|
make SYS=geos-cbm -C samples
|
||||||
|
make SYS=geos-cbm -C samples clean
|
||||||
|
make SYS=lunix -C samples
|
||||||
|
make SYS=lunix -C samples clean
|
||||||
|
make SYS=lynx -C samples
|
||||||
|
make SYS=lynx -C samples clean
|
||||||
|
make SYS=nes -C samples
|
||||||
|
make SYS=nes -C samples clean
|
||||||
|
make SYS=osic1p -C samples
|
||||||
|
make SYS=osic1p -C samples clean
|
||||||
|
make SYS=pce -C samples
|
||||||
|
make SYS=pce -C samples clean
|
||||||
|
make SYS=pet -C samples
|
||||||
|
make SYS=pet -C samples clean
|
||||||
|
make SYS=plus4 -C samples
|
||||||
|
make SYS=plus4 -C samples clean
|
||||||
|
make SYS=sim6502 -C samples
|
||||||
|
make SYS=sim6502 -C samples clean
|
||||||
|
make SYS=sim65c02 -C samples
|
||||||
|
make SYS=sim65c02 -C samples clean
|
||||||
|
make SYS=supervision -C samples
|
||||||
|
make SYS=supervision -C samples clean
|
||||||
|
make SYS=sym1 -C samples
|
||||||
|
make SYS=sym1 -C samples clean
|
||||||
|
make SYS=telestrat -C samples
|
||||||
|
make SYS=telestrat -C samples clean
|
||||||
|
make SYS=vic20 -C samples
|
||||||
|
make SYS=vic20 -C samples clean
|
||||||
|
- name: Test that the targettest programs can be built.
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
make SYS=apple2 -C targettest
|
||||||
|
make SYS=apple2 -C targettest clean
|
||||||
|
make SYS=apple2enh -C targettest
|
||||||
|
make SYS=apple2enh -C targettest clean
|
||||||
|
make SYS=atari -C targettest
|
||||||
|
make SYS=atari -C targettest clean
|
||||||
|
make SYS=atarixl -C targettest
|
||||||
|
make SYS=atarixl -C targettest clean
|
||||||
|
make SYS=atari2600 -C targettest
|
||||||
|
make SYS=atari2600 -C targettest clean
|
||||||
|
make SYS=atari5200 -C targettest
|
||||||
|
make SYS=atari5200 -C targettest clean
|
||||||
|
make SYS=atmos -C targettest
|
||||||
|
make SYS=atmos -C targettest clean
|
||||||
|
make SYS=bbc -C targettest
|
||||||
|
make SYS=bbc -C targettest clean
|
||||||
|
make SYS=c128 -C targettest
|
||||||
|
make SYS=c128 -C targettest clean
|
||||||
|
make SYS=c16 -C targettest
|
||||||
|
make SYS=c16 -C targettest clean
|
||||||
|
make SYS=c64 -C targettest
|
||||||
|
make SYS=c64 -C targettest clean
|
||||||
|
make SYS=cbm510 -C targettest
|
||||||
|
make SYS=cbm510 -C targettest clean
|
||||||
|
make SYS=cbm610 -C targettest
|
||||||
|
make SYS=cbm610 -C targettest clean
|
||||||
|
make SYS=creativision -C targettest
|
||||||
|
make SYS=creativision -C targettest clean
|
||||||
|
make SYS=cx16 -C targettest
|
||||||
|
make SYS=cx16 -C targettest clean
|
||||||
|
make SYS=gamate -C targettest
|
||||||
|
make SYS=gamate -C targettest clean
|
||||||
|
make SYS=geos-apple -C targettest
|
||||||
|
make SYS=geos-apple -C targettest clean
|
||||||
|
make SYS=geos-cbm -C targettest
|
||||||
|
make SYS=geos-cbm -C targettest clean
|
||||||
|
make SYS=lunix -C targettest
|
||||||
|
make SYS=lunix -C targettest clean
|
||||||
|
make SYS=lynx -C targettest
|
||||||
|
make SYS=lynx -C targettest clean
|
||||||
|
make SYS=nes -C targettest
|
||||||
|
make SYS=nes -C targettest clean
|
||||||
|
make SYS=osic1p -C targettest
|
||||||
|
make SYS=osic1p -C targettest clean
|
||||||
|
make SYS=pce -C targettest
|
||||||
|
make SYS=pce -C targettest clean
|
||||||
|
make SYS=pet -C targettest
|
||||||
|
make SYS=pet -C targettest clean
|
||||||
|
make SYS=plus4 -C targettest
|
||||||
|
make SYS=plus4 -C targettest clean
|
||||||
|
make SYS=sim6502 -C targettest
|
||||||
|
make SYS=sim6502 -C targettest clean
|
||||||
|
make SYS=sim65c02 -C targettest
|
||||||
|
make SYS=sim65c02 -C targettest clean
|
||||||
|
make SYS=supervision -C targettest
|
||||||
|
make SYS=supervision -C targettest clean
|
||||||
|
make SYS=sym1 -C targettest
|
||||||
|
make SYS=sym1 -C targettest clean
|
||||||
|
make SYS=telestrat -C targettest
|
||||||
|
make SYS=telestrat -C targettest clean
|
||||||
|
make SYS=vic20 -C targettest
|
||||||
|
make SYS=vic20 -C targettest clean
|
||||||
|
- name: Build the document files.
|
||||||
|
shell: bash
|
||||||
|
run: make -j2 doc
|
||||||
|
- name: Build 64-bit Windows versions of the tools.
|
||||||
|
run: |
|
||||||
|
make -C src clean
|
||||||
|
make -j2 bin USER_CFLAGS=-Werror CROSS_COMPILE=x86_64-w64-mingw32-
|
||||||
|
|
||||||
|
build_windows:
|
||||||
|
name: Build (Windows)
|
||||||
|
runs-on: windows-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- shell: bash
|
||||||
|
run: git config --global core.autocrlf input
|
||||||
|
|
||||||
|
- name: Checkout Source
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Add msbuild to PATH
|
||||||
|
uses: microsoft/setup-msbuild@v1.1
|
||||||
|
|
||||||
|
- name: Build app (debug)
|
||||||
|
run: msbuild src\cc65.sln -t:rebuild -property:Configuration=Debug
|
||||||
|
|
||||||
|
- name: Build app (release)
|
||||||
|
run: msbuild src\cc65.sln -t:rebuild -property:Configuration=Release
|
||||||
107
.github/workflows/snapshot-on-push-master.yml
vendored
Normal file
107
.github/workflows/snapshot-on-push-master.yml
vendored
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
name: Snapshot Build
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
master
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build_windows:
|
||||||
|
name: Build (Windows)
|
||||||
|
runs-on: windows-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- shell: bash
|
||||||
|
run: git config --global core.autocrlf input
|
||||||
|
|
||||||
|
- name: Checkout Source
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Add msbuild to PATH
|
||||||
|
uses: microsoft/setup-msbuild@v1.1
|
||||||
|
|
||||||
|
- name: Build app (debug)
|
||||||
|
run: msbuild src\cc65.sln -t:rebuild -property:Configuration=Debug
|
||||||
|
|
||||||
|
- name: Build app (release)
|
||||||
|
run: msbuild src\cc65.sln -t:rebuild -property:Configuration=Release
|
||||||
|
|
||||||
|
build_linux:
|
||||||
|
name: Build, Test and Snaphot (Linux)
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: build_windows
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Install Dependencies
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install linuxdoc-tools-info gcc-mingw-w64-x86-64 gcc-mingw-w64-i686
|
||||||
|
|
||||||
|
- shell: bash
|
||||||
|
run: git config --global core.autocrlf input
|
||||||
|
- name: Checkout Source
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Build the tools.
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
make -j2 bin USER_CFLAGS=-Werror
|
||||||
|
make -j2 util
|
||||||
|
- name: Build the platform libraries.
|
||||||
|
shell: bash
|
||||||
|
run: make -j2 lib QUIET=1
|
||||||
|
- name: Run the regression tests.
|
||||||
|
shell: bash
|
||||||
|
run: make test QUIET=1
|
||||||
|
- name: Test that the samples can be built.
|
||||||
|
shell: bash
|
||||||
|
run: make -j2 samples
|
||||||
|
- name: Remove the output from the samples tests.
|
||||||
|
shell: bash
|
||||||
|
run: make -C samples clean
|
||||||
|
- name: Remove programs in util directory
|
||||||
|
shell: bash
|
||||||
|
run: make -C util clean
|
||||||
|
- name: Build the document files.
|
||||||
|
shell: bash
|
||||||
|
run: make -j2 doc
|
||||||
|
- name: Build and package 64-bit Windows versions of the tools.
|
||||||
|
run: |
|
||||||
|
make -C src clean
|
||||||
|
make -j2 bin USER_CFLAGS=-Werror CROSS_COMPILE=x86_64-w64-mingw32-
|
||||||
|
make zip
|
||||||
|
mv cc65.zip cc65-snapshot-win64.zip
|
||||||
|
- name: Build and package 32-bit Windows versions of the tools.
|
||||||
|
run: |
|
||||||
|
make -C src clean
|
||||||
|
make -j2 bin USER_CFLAGS=-Werror CROSS_COMPILE=i686-w64-mingw32-
|
||||||
|
make zip
|
||||||
|
mv cc65.zip cc65-snapshot-win32.zip
|
||||||
|
|
||||||
|
- name: Upload a 32-bit Snapshot Zip
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: cc65-snapshot-win32.zip
|
||||||
|
path: cc65-snapshot-win32.zip
|
||||||
|
- name: Upload a 64-bit Snapshot Zip
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: cc65-snapshot-win64.zip
|
||||||
|
path: cc65-snapshot-win64.zip
|
||||||
|
|
||||||
|
# enter secrets under "repository secrets"
|
||||||
|
- name: Upload snapshot to sourceforge
|
||||||
|
uses: nogsantos/scp-deploy@master
|
||||||
|
with:
|
||||||
|
src: cc65-snapshot-win32.zip
|
||||||
|
host: ${{ secrets.SSH_HOST }}
|
||||||
|
remote: ${{ secrets.SSH_DIR }}
|
||||||
|
port: ${{ secrets.SSH_PORT }}
|
||||||
|
user: ${{ secrets.SSH_USER }}
|
||||||
|
key: ${{ secrets.SSH_KEY }}
|
||||||
|
|
||||||
|
# TODO: Update docs at https://github.com/cc65/doc
|
||||||
|
# TODO: Publish snapshot zip at https://github.com/cc65/cc65.github.io
|
||||||
6
Makefile
6
Makefile
@@ -1,4 +1,4 @@
|
|||||||
.PHONY: all mostlyclean clean install zip avail unavail bin lib doc html info samples test
|
.PHONY: all mostlyclean clean install zip avail unavail bin lib doc html info samples test util
|
||||||
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
|
|
||||||
@@ -6,6 +6,7 @@ all mostlyclean clean install zip:
|
|||||||
@$(MAKE) -C src --no-print-directory $@
|
@$(MAKE) -C src --no-print-directory $@
|
||||||
@$(MAKE) -C libsrc --no-print-directory $@
|
@$(MAKE) -C libsrc --no-print-directory $@
|
||||||
@$(MAKE) -C doc --no-print-directory $@
|
@$(MAKE) -C doc --no-print-directory $@
|
||||||
|
@$(MAKE) -C util --no-print-directory $@
|
||||||
@$(MAKE) -C samples --no-print-directory $@
|
@$(MAKE) -C samples --no-print-directory $@
|
||||||
|
|
||||||
avail unavail bin:
|
avail unavail bin:
|
||||||
@@ -23,6 +24,9 @@ samples:
|
|||||||
test:
|
test:
|
||||||
@$(MAKE) -C test --no-print-directory $@
|
@$(MAKE) -C test --no-print-directory $@
|
||||||
|
|
||||||
|
util:
|
||||||
|
@$(MAKE) -C util --no-print-directory $@
|
||||||
|
|
||||||
%65:
|
%65:
|
||||||
@$(MAKE) -C src --no-print-directory $@
|
@$(MAKE) -C src --no-print-directory $@
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
[Wiki](https://github.com/cc65/wiki/wiki)
|
[Wiki](https://github.com/cc65/wiki/wiki)
|
||||||
|
|
||||||
[](https://app.travis-ci.com/cc65/cc65)
|
[](https://github.com/cc65/cc65/actions/workflows/snapshot-on-push-master.yml)
|
||||||
|
|
||||||
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
|
||||||
|
|||||||
@@ -50,7 +50,6 @@ PET_2000 = $CA
|
|||||||
PET_3000 = $FC
|
PET_3000 = $FC
|
||||||
PET_4000 = $FD
|
PET_4000 = $FD
|
||||||
|
|
||||||
|
|
||||||
;----------------------------------------------------------------------------
|
;----------------------------------------------------------------------------
|
||||||
; Vector and other locations
|
; Vector and other locations
|
||||||
|
|
||||||
@@ -59,7 +58,25 @@ BRKVec := $0092
|
|||||||
NMIVec := $0094
|
NMIVec := $0094
|
||||||
|
|
||||||
; ---------------------------------------------------------------------------
|
; ---------------------------------------------------------------------------
|
||||||
; I/O: 6522 VIA2
|
; I/O: 6520 PIA1
|
||||||
|
|
||||||
|
PIA1 := $E810 ; PIA1 base address
|
||||||
|
PIA1_PORTA := PIA1+$0 ; Port A (PA) and data direction register A (DDRA)
|
||||||
|
PIA1_PACTL := PIA1+$1 ; Port A control register (CRA)
|
||||||
|
PIA1_PORTB := PIA1+$2 ; Port B (PB) and data direction register B (DDRB)
|
||||||
|
PIA1_PBCTL := PIA1+$3 ; Port B control register (CRB)
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; I/O: 6520 PIA2
|
||||||
|
|
||||||
|
PIA2 := $E820 ; PIA2 base address
|
||||||
|
PIA2_PORTA := PIA2+$0 ; Port A (PA) and data direction register A (DDRA)
|
||||||
|
PIA2_PACTL := PIA2+$1 ; Port A control register (CRA)
|
||||||
|
PIA2_PORTB := PIA2+$2 ; Port B (PB) and data direction register B (DDRB)
|
||||||
|
PIA2_PBCTL := PIA2+$3 ; Port B control register (CRB)
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; I/O: 6522 VIA
|
||||||
|
|
||||||
VIA := $E840 ; VIA base address
|
VIA := $E840 ; VIA base address
|
||||||
VIA_PB := VIA+$0 ; Port register B
|
VIA_PB := VIA+$0 ; Port register B
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ more information.
|
|||||||
|
|
||||||
The standard binary file format generated by the linker for the
|
The standard binary file format generated by the linker for the
|
||||||
Apple ][ target is an <url name="AppleSingle"
|
Apple ][ target is an <url name="AppleSingle"
|
||||||
url="http://kaiser-edv.de/documents/AppleSingle_AppleDouble.pdf"> file.
|
url="https://nulib.com/library/AppleSingle_AppleDouble.pdf"> file.
|
||||||
The default load address is $803.
|
The default load address is $803.
|
||||||
|
|
||||||
<bf/AppleCommander 1.4.0/ or later (available at <url
|
<bf/AppleCommander 1.4.0/ or later (available at <url
|
||||||
@@ -73,7 +73,7 @@ system takes care of actually moving the code into the Language Card.
|
|||||||
|
|
||||||
The amount of memory available in the Language Card for generated code depends
|
The amount of memory available in the Language Card for generated code depends
|
||||||
on the <ref id="link-configs" name="linker configuration"> parameters. There are
|
on the <ref id="link-configs" name="linker configuration"> parameters. There are
|
||||||
several usefull settings:
|
several useful settings:
|
||||||
|
|
||||||
<descrip>
|
<descrip>
|
||||||
|
|
||||||
@@ -281,7 +281,7 @@ AppleCommander option to put LOADER.SYSTEM on a ProDOS 8 disk image is <tt/-p/.
|
|||||||
If the cc65 program can be successfully linked as system program using the linker
|
If the cc65 program can be successfully linked as system program using the linker
|
||||||
configuration <ref id="apple-sys-cfg" name="apple2-system.cfg">, but
|
configuration <ref id="apple-sys-cfg" name="apple2-system.cfg">, but
|
||||||
uses the heap either explicitly or implicitly (i.e. by loading a driver) then
|
uses the heap either explicitly or implicitly (i.e. by loading a driver) then
|
||||||
the memory from $800 to $2000 can be added to the heap by calling
|
the memory from $800 to $1FFF can be added to the heap by calling
|
||||||
<tt/_heapadd ((void *) 0x0800, 0x1800);/ at the beginning of <tt/main()/.
|
<tt/_heapadd ((void *) 0x0800, 0x1800);/ at the beginning of <tt/main()/.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ more information.
|
|||||||
|
|
||||||
The standard binary file format generated by the linker for the
|
The standard binary file format generated by the linker for the
|
||||||
enhanced Apple //e target is an <url name="AppleSingle"
|
enhanced Apple //e target is an <url name="AppleSingle"
|
||||||
url="http://kaiser-edv.de/documents/AppleSingle_AppleDouble.pdf"> file.
|
url="https://nulib.com/library/AppleSingle_AppleDouble.pdf"> file.
|
||||||
The default load address is $803.
|
The default load address is $803.
|
||||||
|
|
||||||
<bf/AppleCommander 1.4.0/ or later (available at <url
|
<bf/AppleCommander 1.4.0/ or later (available at <url
|
||||||
@@ -73,7 +73,7 @@ system takes care of actually moving the code into the Language Card.
|
|||||||
|
|
||||||
The amount of memory available in the Language Card for generated code depends
|
The amount of memory available in the Language Card for generated code depends
|
||||||
on the <ref id="link-configs" name="linker configuration"> parameters. There are
|
on the <ref id="link-configs" name="linker configuration"> parameters. There are
|
||||||
several usefull settings:
|
several useful settings:
|
||||||
|
|
||||||
<descrip>
|
<descrip>
|
||||||
|
|
||||||
@@ -281,7 +281,7 @@ AppleCommander option to put LOADER.SYSTEM on a ProDOS 8 disk image is <tt/-p/.
|
|||||||
If the cc65 program can be successfully linked as system program using the linker
|
If the cc65 program can be successfully linked as system program using the linker
|
||||||
configuration <ref id="apple-sys-cfg" name="apple2enh-system.cfg">, but
|
configuration <ref id="apple-sys-cfg" name="apple2enh-system.cfg">, but
|
||||||
uses the heap either explicitly or implicitly (i.e. by loading a driver) then
|
uses the heap either explicitly or implicitly (i.e. by loading a driver) then
|
||||||
the memory from $800 to $2000 can be added to the heap by calling
|
the memory from $800 to $1FFF can be added to the heap by calling
|
||||||
<tt/_heapadd ((void *) 0x0800, 0x1800);/ at the beginning of <tt/main()/.
|
<tt/_heapadd ((void *) 0x0800, 0x1800);/ at the beginning of <tt/main()/.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ Special locations:
|
|||||||
The startup code rearranges the memory as follows:
|
The startup code rearranges the memory as follows:
|
||||||
|
|
||||||
<enum>
|
<enum>
|
||||||
<item>Sceen memory and display list are moved below the program start address.
|
<item>Screen memory and display list are moved below the program start address.
|
||||||
<item>The ROM is disabled, making the memory in the areas [$C000-$CFFF]
|
<item>The ROM is disabled, making the memory in the areas [$C000-$CFFF]
|
||||||
and [$D800-$FFF9] available.
|
and [$D800-$FFF9] available.
|
||||||
<item>Character generator data is copied from ROM to the CHARGEN location specified in the
|
<item>Character generator data is copied from ROM to the CHARGEN location specified in the
|
||||||
@@ -131,7 +131,7 @@ With the default load address of $2400 this gives a usable memory range o
|
|||||||
[$2400-$CFFF].
|
[$2400-$CFFF].
|
||||||
|
|
||||||
Please note that the first load chunk (which checks the system
|
Please note that the first load chunk (which checks the system
|
||||||
compatibilty and available memory) will always be loaded at
|
compatibility and available memory) will always be loaded at
|
||||||
$2E00, regardless of the specified start address. This address
|
$2E00, regardless of the specified start address. This address
|
||||||
can only be changed by a custom linker config file.
|
can only be changed by a custom linker config file.
|
||||||
|
|
||||||
@@ -305,7 +305,7 @@ The names are the usual ones you can find in system reference manuals. Example:
|
|||||||
...
|
...
|
||||||
</verb></tscreen>
|
</verb></tscreen>
|
||||||
|
|
||||||
Please note that memory location 762/$2FA is called "<tt/char_/" while the orignal name "<tt/char/" conflicts with the C keyword.
|
Please note that memory location 762/$2FA is called "<tt/char_/" while the original name "<tt/char/" conflicts with the C keyword.
|
||||||
|
|
||||||
If you like to use the OS names and locations for the original Atari 800 operating system, please "<tt/#define OSA/" before including the
|
If you like to use the OS names and locations for the original Atari 800 operating system, please "<tt/#define OSA/" before including the
|
||||||
<tt/atari.h/ header file.
|
<tt/atari.h/ header file.
|
||||||
@@ -401,7 +401,7 @@ OS.sdlst = &DisplayList;
|
|||||||
...
|
...
|
||||||
</verb></tscreen>
|
</verb></tscreen>
|
||||||
|
|
||||||
Please inspect the <tt/_antic.h/ header file to detemine the supported
|
Please inspect the <tt/_antic.h/ header file to determine the supported
|
||||||
instruction names. Modifiers on instructions can be nested without need
|
instruction names. Modifiers on instructions can be nested without need
|
||||||
for an order:
|
for an order:
|
||||||
|
|
||||||
@@ -410,7 +410,7 @@ for an order:
|
|||||||
Please mind that ANTIC has memory alignment requirements for "player
|
Please mind that ANTIC has memory alignment requirements for "player
|
||||||
missile graphics"-data, font data, display lists and screen memory. Creation
|
missile graphics"-data, font data, display lists and screen memory. Creation
|
||||||
of a special linker configuration with appropriate aligned segments and
|
of a special linker configuration with appropriate aligned segments and
|
||||||
switching to that segment in the c-code is usually neccessary. A more memory
|
switching to that segment in the c-code is usually necessary. A more memory
|
||||||
hungry solution consists in using the "<tt/posix_memalign()/" function in
|
hungry solution consists in using the "<tt/posix_memalign()/" function in
|
||||||
conjunction with copying your data to the allocated memory.
|
conjunction with copying your data to the allocated memory.
|
||||||
|
|
||||||
@@ -726,6 +726,11 @@ for sectors 1 to 3, regardless of the type of diskette.
|
|||||||
The console I/O is speed optimized therefore support for XEP80 hardware
|
The console I/O is speed optimized therefore support for XEP80 hardware
|
||||||
or f80.com software is missing. Of course you may use stdio.h functions.
|
or f80.com software is missing. Of course you may use stdio.h functions.
|
||||||
|
|
||||||
|
<tt/cprintf/ targets a 40 character line. On a 20-column display this has
|
||||||
|
the unexpected effect of a blank line after your text. On such displays you can either
|
||||||
|
use for example <tt/gotoxy(20,0)/ to target the "next" line, or you can switch to <tt/write()/
|
||||||
|
function which does not have this side effect.
|
||||||
|
|
||||||
|
|
||||||
<sect>Technical details<label id="techdetail"><p>
|
<sect>Technical details<label id="techdetail"><p>
|
||||||
|
|
||||||
@@ -1141,8 +1146,8 @@ ld65: Error: Missing memory area assignment for segment 'MAINHDR'
|
|||||||
</verb></tscreen>
|
</verb></tscreen>
|
||||||
|
|
||||||
The old "HEADER" memory description contained six bytes: $FFFF
|
The old "HEADER" memory description contained six bytes: $FFFF
|
||||||
and the first and last memory addess of the program. For the "system
|
and the first and last memory address of the program. For the "system
|
||||||
check" load chunk this had to be split into two memory assigments. The
|
check" load chunk this had to be split into two memory assignments The
|
||||||
"HEADER" now only contains the $FFFF. The main program's first
|
"HEADER" now only contains the $FFFF. The main program's first
|
||||||
and last memory address were moved to a new segment, called "MAINHDR",
|
and last memory address were moved to a new segment, called "MAINHDR",
|
||||||
which in the new linker config file goes into its own memory area (also
|
which in the new linker config file goes into its own memory area (also
|
||||||
|
|||||||
@@ -237,7 +237,7 @@ The runtime library provides a default game name which is "cc65
|
|||||||
compiled". To change that, one has to link a file which puts data into
|
compiled". To change that, one has to link a file which puts data into
|
||||||
the "<tt/CARTNAME/" segment.
|
the "<tt/CARTNAME/" segment.
|
||||||
|
|
||||||
For reference, here's the default version used by the cc65 libary:
|
For reference, here's the default version used by the cc65 library:
|
||||||
<tscreen><verb>
|
<tscreen><verb>
|
||||||
.export __CART_NAME__: absolute = 1
|
.export __CART_NAME__: absolute = 1
|
||||||
.macpack atari
|
.macpack atari
|
||||||
|
|||||||
@@ -301,7 +301,7 @@ Here is a description of all the command line options:
|
|||||||
compiler, see there for a list.
|
compiler, see there for a list.
|
||||||
|
|
||||||
Depending on the target, the default CPU type is also set. This can be
|
Depending on the target, the default CPU type is also set. This can be
|
||||||
overriden by using the <tt/<ref id="option--cpu" name="--cpu">/ option.
|
overridden by using the <tt/<ref id="option--cpu" name="--cpu">/ option.
|
||||||
|
|
||||||
|
|
||||||
<label id="option-v">
|
<label id="option-v">
|
||||||
@@ -3724,7 +3724,7 @@ See: <tt><ref id=".ASCIIZ" name=".ASCIIZ"></tt>,<tt><ref id=".BYTE" name=".BYTE"
|
|||||||
|
|
||||||
<tt/.PUSHCHARMAP/ allows together with <tt><ref id=".POPCHARMAP"
|
<tt/.PUSHCHARMAP/ allows together with <tt><ref id=".POPCHARMAP"
|
||||||
name=".POPCHARMAP"></tt> to switch to another character mapping and to restore the old
|
name=".POPCHARMAP"></tt> to switch to another character mapping and to restore the old
|
||||||
characther mapping later, without knowledge of the current mapping.
|
character mapping later, without knowledge of the current mapping.
|
||||||
|
|
||||||
The assembler will print an error message if the character mapping stack is already full,
|
The assembler will print an error message if the character mapping stack is already full,
|
||||||
when this command is issued.
|
when this command is issued.
|
||||||
|
|||||||
@@ -395,7 +395,7 @@ Here is a description of all the command line options:
|
|||||||
|
|
||||||
This option is used to set the target system. The target system determines
|
This option is used to set the target system. The target system determines
|
||||||
the character set that is used for strings and character constants and the
|
the character set that is used for strings and character constants and the
|
||||||
default CPU. The CPU setting can be overriden by use of the <tt/<ref
|
default CPU. The CPU setting can be overridden by use of the <tt/<ref
|
||||||
id="option--cpu" name="--cpu">/ option.
|
id="option--cpu" name="--cpu">/ option.
|
||||||
|
|
||||||
The following target systems are supported:
|
The following target systems are supported:
|
||||||
@@ -1250,7 +1250,7 @@ parameter with the <tt/#pragma/.
|
|||||||
|
|
||||||
This pragma is used to display informational messages at compile-time.
|
This pragma is used to display informational messages at compile-time.
|
||||||
|
|
||||||
The message intented to be displayed must be a string literal.
|
The message intended to be displayed must be a string literal.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
<tscreen><verb>
|
<tscreen><verb>
|
||||||
@@ -1369,7 +1369,7 @@ parameter with the <tt/#pragma/.
|
|||||||
Switch compiler warnings on or off. "name" is the name of a warning (see the
|
Switch compiler warnings on or off. "name" is the name of a warning (see the
|
||||||
<tt/<ref name="-W" id="option-W">/ compiler option for a list). The name is
|
<tt/<ref name="-W" id="option-W">/ compiler option for a list). The name is
|
||||||
followed either by "pop", which restores the last pushed state, or by "on" or
|
followed either by "pop", which restores the last pushed state, or by "on" or
|
||||||
"off", optionally preceeded by "push" to push the current state before
|
"off", optionally preceded by "push" to push the current state before
|
||||||
changing it.
|
changing it.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
@@ -1673,7 +1673,7 @@ This is the original compiler copyright:
|
|||||||
|
|
||||||
Anyone may copy or redistribute these programs, provided that:
|
Anyone may copy or redistribute these programs, provided that:
|
||||||
|
|
||||||
1: You don't charge anything for the copy. It is permissable to
|
1: You don't charge anything for the copy. It is permissible to
|
||||||
charge a nominal fee for media, etc.
|
charge a nominal fee for media, etc.
|
||||||
|
|
||||||
2: All source code and documentation for the programs is made
|
2: All source code and documentation for the programs is made
|
||||||
|
|||||||
@@ -57,11 +57,11 @@ Short options:
|
|||||||
-O Optimize code
|
-O Optimize code
|
||||||
-Oi Optimize code, inline more code
|
-Oi Optimize code, inline more code
|
||||||
-Or Optimize code, honour the register keyword
|
-Or Optimize code, honour the register keyword
|
||||||
-Os Optimize code, inline standard funtions
|
-Os Optimize code, inline standard functions
|
||||||
-S Compile but don't assemble and link
|
-S Compile but don't assemble and link
|
||||||
-T Include source as comment
|
-T Include source as comment
|
||||||
-V Print the version number
|
-V Print the version number
|
||||||
-W name[,...] Supress compiler warnings
|
-W name[,...] Suppress compiler warnings
|
||||||
-Wa options Pass options to the assembler
|
-Wa options Pass options to the assembler
|
||||||
-Wc options Pass options to the compiler
|
-Wc options Pass options to the compiler
|
||||||
-Wl options Pass options to the linker
|
-Wl options Pass options to the linker
|
||||||
|
|||||||
@@ -235,12 +235,12 @@ things to be different from runtime loading:
|
|||||||
|
|
||||||
<item> Without changing the segment names, all segments take the default
|
<item> Without changing the segment names, all segments take the default
|
||||||
names used by the standard linker configurations. This means that the
|
names used by the standard linker configurations. This means that the
|
||||||
driver code is no longer contingous in memory, instead the code
|
driver code is no longer contiguous in memory, instead the code
|
||||||
segment is placed somewhere in between all other code segments, the
|
segment is placed somewhere in between all other code segments, the
|
||||||
data segment is placed with all other data segments and so on. If the
|
data segment is placed with all other data segments and so on. If the
|
||||||
driver doesn't do strange things this shouldn't be a problem.
|
driver doesn't do strange things this shouldn't be a problem.
|
||||||
|
|
||||||
<item> With statically linked code, data and bss segments will get intialized
|
<item> With statically linked code, data and bss segments will get initialized
|
||||||
once (when the application is loaded), while a loadable driver will
|
once (when the application is loaded), while a loadable driver will
|
||||||
get its initialization each time the driver is loaded into memory
|
get its initialization each time the driver is loaded into memory
|
||||||
(which may be more than once in the lifetime of a program). It depends
|
(which may be more than once in the lifetime of a program). It depends
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ slower than the same code for unsigned types.
|
|||||||
|
|
||||||
<sect>Use chars instead of ints if possible<p>
|
<sect>Use chars instead of ints if possible<p>
|
||||||
|
|
||||||
While in arithmetic operations, chars are immidiately promoted to ints, they
|
While in arithmetic operations, chars are immediately promoted to ints, they
|
||||||
are passed as chars in parameter lists and are accessed as chars in variables.
|
are passed as chars in parameter lists and are accessed as chars in variables.
|
||||||
The code generated is usually not much smaller, but it is faster, since
|
The code generated is usually not much smaller, but it is faster, since
|
||||||
accessing chars is faster. For several operations, the generated code may be
|
accessing chars is faster. For several operations, the generated code may be
|
||||||
|
|||||||
@@ -156,7 +156,7 @@ Here is a description of all the command line options:
|
|||||||
<tag><tt>-i name, --info name</tt></tag>
|
<tag><tt>-i name, --info name</tt></tag>
|
||||||
|
|
||||||
Specify an info file. The info file contains global options that may
|
Specify an info file. The info file contains global options that may
|
||||||
override or replace command line options plus informations about the code
|
override or replace command line options plus information about the code
|
||||||
that has to be disassembled. See the separate section <ref id="infofile"
|
that has to be disassembled. See the separate section <ref id="infofile"
|
||||||
name="Info File Format">.
|
name="Info File Format">.
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ transfer the program to the real machine until it is done.
|
|||||||
|
|
||||||
<item>An emulator allows many things that are almost impossible one of the
|
<item>An emulator allows many things that are almost impossible one of the
|
||||||
original machines. You may set watchpoints (detect read or write access to
|
original machines. You may set watchpoints (detect read or write access to
|
||||||
arbitary addresses), debug interrupt handlers and even debug routines that run
|
arbitrary addresses), debug interrupt handlers and even debug routines that run
|
||||||
inside the 1541 floppy.
|
inside the 1541 floppy.
|
||||||
|
|
||||||
<item>You may use the label file generated by the linker to make much more use
|
<item>You may use the label file generated by the linker to make much more use
|
||||||
@@ -117,7 +117,7 @@ these warnings and errors as long as they reference any problems VICE thinks
|
|||||||
it has with the labels.
|
it has with the labels.
|
||||||
|
|
||||||
After loading the labels, they are used by VICE in the disassembler listing,
|
After loading the labels, they are used by VICE in the disassembler listing,
|
||||||
and you may use them whereever you need to specify an address. Try
|
and you may use them wherever you need to specify an address. Try
|
||||||
|
|
||||||
<tscreen><verb>
|
<tscreen><verb>
|
||||||
d ._main
|
d ._main
|
||||||
@@ -138,7 +138,7 @@ load your label file like this:
|
|||||||
</verb></tscreen>
|
</verb></tscreen>
|
||||||
|
|
||||||
After loading the labels, they are used by Oricutron in the disassembler listing,
|
After loading the labels, they are used by Oricutron in the disassembler listing,
|
||||||
and you may use them whereever you need to specify an address. Try
|
and you may use them wherever you need to specify an address. Try
|
||||||
|
|
||||||
<tscreen><verb>
|
<tscreen><verb>
|
||||||
d ._main
|
d ._main
|
||||||
|
|||||||
@@ -3513,7 +3513,7 @@ extended memory that should be supported. There is no autodetect capability.
|
|||||||
<tag/Declaration/<tt/void* __fastcall__ em_map (unsigned page);/
|
<tag/Declaration/<tt/void* __fastcall__ em_map (unsigned page);/
|
||||||
<tag/Description/The function maps one page of extended memory into linear
|
<tag/Description/The function maps one page of extended memory into linear
|
||||||
memory and returns a pointer to the page frame. Depending on the hardware
|
memory and returns a pointer to the page frame. Depending on the hardware
|
||||||
and driver, the data is either mapped into the address space or transfered
|
and driver, the data is either mapped into the address space or transferred
|
||||||
into a buffer. If you don't need the actual contents of the page (for example
|
into a buffer. If you don't need the actual contents of the page (for example
|
||||||
because you're going to overwrite it completely), it is better to call
|
because you're going to overwrite it completely), it is better to call
|
||||||
<tt/<ref id="em_use" name="em_use">/ instead. <tt/em_use/ will not transfer the
|
<tt/<ref id="em_use" name="em_use">/ instead. <tt/em_use/ will not transfer the
|
||||||
@@ -3728,7 +3728,7 @@ switching the CPU into double clock mode.
|
|||||||
<tag/Function/Return the end-of-file indicator of a stream.
|
<tag/Function/Return the end-of-file indicator of a stream.
|
||||||
<tag/Header/<tt/<ref id="stdio.h" name="stdio.h">/
|
<tag/Header/<tt/<ref id="stdio.h" name="stdio.h">/
|
||||||
<tag/Declaration/<tt/int __fastcall__ feof (FILE* f);/
|
<tag/Declaration/<tt/int __fastcall__ feof (FILE* f);/
|
||||||
<tag/Description/<tt/feof/ tests the end-of-file indicator ofthe stream
|
<tag/Description/<tt/feof/ tests the end-of-file indicator of the stream
|
||||||
<tt/f/, and returns a non zero value if it is set.
|
<tt/f/, and returns a non zero value if it is set.
|
||||||
<tag/Notes/<itemize>
|
<tag/Notes/<itemize>
|
||||||
<item>The indicator is set only after a read past the end of a file is
|
<item>The indicator is set only after a read past the end of a file is
|
||||||
@@ -4172,7 +4172,7 @@ const char* optstring);/
|
|||||||
is a string that contains command line option characters. If a character in
|
is a string that contains command line option characters. If a character in
|
||||||
<tt/optstring/ is followed by a colon, the option requires an argument. An
|
<tt/optstring/ is followed by a colon, the option requires an argument. An
|
||||||
option on the command line is recognized if it is one of the option characters
|
option on the command line is recognized if it is one of the option characters
|
||||||
preceeded by a '-'.
|
preceded by a '-'.
|
||||||
<tt/getopt/ must be called repeatedly. It will return each option character
|
<tt/getopt/ must be called repeatedly. It will return each option character
|
||||||
found on the command line and <tt/EOF/ (-1) if there is no other option. An
|
found on the command line and <tt/EOF/ (-1) if there is no other option. An
|
||||||
option argument is placed in <tt/optarg/, the index of the next element on the
|
option argument is placed in <tt/optarg/, the index of the next element on the
|
||||||
@@ -5020,7 +5020,7 @@ always be the same.
|
|||||||
<tag/Header/<tt/<ref id="setjmp.h" name="setjmp.h">/
|
<tag/Header/<tt/<ref id="setjmp.h" name="setjmp.h">/
|
||||||
<tag/Declaration/<tt/void __fastcall__ longjmp (jmp_buf buf, int retval);/
|
<tag/Declaration/<tt/void __fastcall__ longjmp (jmp_buf buf, int retval);/
|
||||||
<tag/Description/The <tt/longjmp/ function restores a program context from the
|
<tag/Description/The <tt/longjmp/ function restores a program context from the
|
||||||
data in <tt/buf/, which must have been set by a preceeding call to
|
data in <tt/buf/, which must have been set by a preceding call to
|
||||||
<tt/<ref id="setjmp" name="setjmp">/. Program execution continues as if the
|
<tt/<ref id="setjmp" name="setjmp">/. Program execution continues as if the
|
||||||
call to <tt/<ref id="setjmp" name="setjmp">/ has just returned the value
|
call to <tt/<ref id="setjmp" name="setjmp">/ has just returned the value
|
||||||
<tt/retval/.
|
<tt/retval/.
|
||||||
@@ -5664,7 +5664,7 @@ cc65 allows to pass this argument, it is ignored.
|
|||||||
<tag/Function/Open a directory.
|
<tag/Function/Open a directory.
|
||||||
<tag/Header/<tt/<ref id="dirent.h" name="dirent.h">/
|
<tag/Header/<tt/<ref id="dirent.h" name="dirent.h">/
|
||||||
<tag/Declaration/<tt/DIR* __fastcall__ opendir (const char* name);/
|
<tag/Declaration/<tt/DIR* __fastcall__ opendir (const char* name);/
|
||||||
<tag/Description/<tt/opendir/ opens a directory and returns the direcory
|
<tag/Description/<tt/opendir/ opens a directory and returns the directory
|
||||||
descriptor associated with it. On error, NULL is returned and an error code is
|
descriptor associated with it. On error, NULL is returned and an error code is
|
||||||
stored in <tt/errno/.
|
stored in <tt/errno/.
|
||||||
<tag/Notes/<itemize>
|
<tag/Notes/<itemize>
|
||||||
@@ -6863,7 +6863,7 @@ be used in presence of a prototype.
|
|||||||
|
|
||||||
<quote>
|
<quote>
|
||||||
<descrip>
|
<descrip>
|
||||||
<tag/Function/Concatentate two strings.
|
<tag/Function/Concatenate two strings.
|
||||||
<tag/Header/<tt/<ref id="string.h" name="string.h">/
|
<tag/Header/<tt/<ref id="string.h" name="string.h">/
|
||||||
<tag/Declaration/<tt/char* __fastcall__ strcat (char* s1, const char* s2);/
|
<tag/Declaration/<tt/char* __fastcall__ strcat (char* s1, const char* s2);/
|
||||||
<tag/Description/The <tt/strcat/ function appends a copy of the string
|
<tag/Description/The <tt/strcat/ function appends a copy of the string
|
||||||
@@ -7189,7 +7189,7 @@ be used in presence of a prototype.
|
|||||||
|
|
||||||
<quote>
|
<quote>
|
||||||
<descrip>
|
<descrip>
|
||||||
<tag/Function/Concatentate two strings.
|
<tag/Function/Concatenate two strings.
|
||||||
<tag/Header/<tt/<ref id="string.h" name="string.h">/
|
<tag/Header/<tt/<ref id="string.h" name="string.h">/
|
||||||
<tag/Declaration/<tt/char* __fastcall__ strncat (char* s1, const char* s2, size_t n);/
|
<tag/Declaration/<tt/char* __fastcall__ strncat (char* s1, const char* s2, size_t n);/
|
||||||
<tag/Description/The <tt/strncat/ function appends not more than n characters
|
<tag/Description/The <tt/strncat/ function appends not more than n characters
|
||||||
@@ -7314,7 +7314,7 @@ be used in presence of a prototype.
|
|||||||
<tag/Header/<tt/<ref id="string.h" name="string.h">/
|
<tag/Header/<tt/<ref id="string.h" name="string.h">/
|
||||||
<tag/Declaration/<tt/char* __fastcall__ strpbrk (const char* str, const char* set);/
|
<tag/Declaration/<tt/char* __fastcall__ strpbrk (const char* str, const char* set);/
|
||||||
<tag/Description/<tt/strpbrk()/ searches within <tt/str/ for the first
|
<tag/Description/<tt/strpbrk()/ searches within <tt/str/ for the first
|
||||||
occurance of any character from <tt/set/. It returns a pointer to that
|
occurrence of any character from <tt/set/. It returns a pointer to that
|
||||||
character if found; otherwise, it returns <tt/NULL/.
|
character if found; otherwise, it returns <tt/NULL/.
|
||||||
<tag/Notes/<itemize>
|
<tag/Notes/<itemize>
|
||||||
<item>The function is available only as a fastcall function;
|
<item>The function is available only as a fastcall function;
|
||||||
@@ -7418,7 +7418,7 @@ be used in presence of a prototype.
|
|||||||
<tag/Function/Find a substring.
|
<tag/Function/Find a substring.
|
||||||
<tag/Header/<tt/<ref id="string.h" name="string.h">/
|
<tag/Header/<tt/<ref id="string.h" name="string.h">/
|
||||||
<tag/Declaration/<tt/char* __fastcall__ strstr (const char* str, const char* substr);/
|
<tag/Declaration/<tt/char* __fastcall__ strstr (const char* str, const char* substr);/
|
||||||
<tag/Description/<tt/strstr/ searches for the first occurance of the string
|
<tag/Description/<tt/strstr/ searches for the first occurrence of the string
|
||||||
<tt/substr/ within <tt/str/. If found, it returns a pointer to the copy,
|
<tt/substr/ within <tt/str/. If found, it returns a pointer to the copy,
|
||||||
otherwise it returns <tt/NULL/.
|
otherwise it returns <tt/NULL/.
|
||||||
<tag/Notes/<itemize>
|
<tag/Notes/<itemize>
|
||||||
@@ -7485,7 +7485,7 @@ the behaviour is undefined.
|
|||||||
<item>If <tt/n/ is zero, <tt/s1/ may be a NULL pointer.
|
<item>If <tt/n/ is zero, <tt/s1/ may be a NULL pointer.
|
||||||
<item>The function is only available as fastcall function, so it may only
|
<item>The function is only available as fastcall function, so it may only
|
||||||
be used in presence of a prototype.
|
be used in presence of a prototype.
|
||||||
<item>Since cc65 doesn't support different charcter sets, <tt/strxfrm/ will
|
<item>Since cc65 doesn't support different character sets, <tt/strxfrm/ will
|
||||||
just copy s2 to s1 using <tt><ref id="strncpy" name="strncpy"></tt>.
|
just copy s2 to s1 using <tt><ref id="strncpy" name="strncpy"></tt>.
|
||||||
</itemize>
|
</itemize>
|
||||||
<tag/Availability/ISO 9899
|
<tag/Availability/ISO 9899
|
||||||
|
|||||||
@@ -207,7 +207,7 @@ see them together in the filling box in GeoPaint.
|
|||||||
<p>
|
<p>
|
||||||
<tt/void GraphicsString (const void *myGString)/
|
<tt/void GraphicsString (const void *myGString)/
|
||||||
<p>
|
<p>
|
||||||
One of the more powerfull routines of GEOS. This function calls other graphic functions depending
|
One of the more powerful routines of GEOS. This function calls other graphic functions depending
|
||||||
on the given command string. See the structures chapter for a more detailed description.
|
on the given command string. See the structures chapter for a more detailed description.
|
||||||
|
|
||||||
<sect2>Rectangle functions
|
<sect2>Rectangle functions
|
||||||
@@ -652,7 +652,7 @@ For some purposes you might consider using the <tt/dio.h/ interface to disk acce
|
|||||||
<p>
|
<p>
|
||||||
All GEOS disk functions return an error code in the X register. In some cases this is returned by the
|
All GEOS disk functions return an error code in the X register. In some cases this is returned by the
|
||||||
GEOSLib function (if its type is <tt/char/), but in all cases the last error is saved in the <tt/__oserror/
|
GEOSLib function (if its type is <tt/char/), but in all cases the last error is saved in the <tt/__oserror/
|
||||||
location. If it is nonzero - an error occured. See <tt/gdisk.h/ for the list of possible errorcodes.
|
location. If it is nonzero - an error occurred. See <tt/gdisk.h/ for the list of possible errorcodes.
|
||||||
You need to include <tt/errno.h/ to get <tt/__oserror/, together with the standard <tt/errno/. The
|
You need to include <tt/errno.h/ to get <tt/__oserror/, together with the standard <tt/errno/. The
|
||||||
latter gives less verbose, but still usable information and can be used with <tt/strerror/.
|
latter gives less verbose, but still usable information and can be used with <tt/strerror/.
|
||||||
Probably you will get more information using <tt/_stroserror/ in a similar way.
|
Probably you will get more information using <tt/_stroserror/ in a similar way.
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<url url="mailto:greg.king5@verizon.net" name="Greg King">
|
<url url="mailto:greg.king5@verizon.net" name="Greg King">
|
||||||
|
|
||||||
<abstract>
|
<abstract>
|
||||||
This document describes a compiler that can create GEOS headers and menues for
|
This document describes a compiler that can create GEOS headers and menus for
|
||||||
cc65-compiled programs.
|
cc65-compiled programs.
|
||||||
</abstract>
|
</abstract>
|
||||||
|
|
||||||
@@ -24,7 +24,7 @@ Optional resources might be menu definitions, other headers (e.g., for data
|
|||||||
files of an app.), dialog definitions, etc. Without an application's header,
|
files of an app.), dialog definitions, etc. Without an application's header,
|
||||||
GEOS is unable to load and start it.
|
GEOS is unable to load and start it.
|
||||||
|
|
||||||
Currently, <bf/grc65/ supports only menues and the required header definition,
|
Currently, <bf/grc65/ supports only menus and the required header definition,
|
||||||
along with support for building applications with VLIR-structured overlays.
|
along with support for building applications with VLIR-structured overlays.
|
||||||
|
|
||||||
<bf/grc65/ generates output in two formats: C header and <bf/ca65/ source (.s).
|
<bf/grc65/ generates output in two formats: C header and <bf/ca65/ source (.s).
|
||||||
@@ -345,7 +345,7 @@ for addresses.
|
|||||||
<!-- <appendix> -->
|
<!-- <appendix> -->
|
||||||
<sect>Appendix A -- example.grc<label id="example-grc">
|
<sect>Appendix A -- example.grc<label id="example-grc">
|
||||||
<p><tscreen><verb>
|
<p><tscreen><verb>
|
||||||
; Note that MENU can define both menues and submenues.
|
; Note that MENU can define both menus and submenus.
|
||||||
; If you want to use any C operators (such as "|", "&", etc.), do it WITHOUT
|
; If you want to use any C operators (such as "|", "&", etc.), do it WITHOUT
|
||||||
; any spaces between the arguments (the parser is simple and weak).
|
; any spaces between the arguments (the parser is simple and weak).
|
||||||
|
|
||||||
|
|||||||
@@ -555,7 +555,7 @@ feature on.
|
|||||||
</quote>
|
</quote>
|
||||||
|
|
||||||
<quote>
|
<quote>
|
||||||
In VICE, got to <bf/Settings/ -> <bf/Settings/, then <bf/Peripherial devices/ ->
|
In VICE, got to <bf/Settings/ -> <bf/Settings/, then <bf/Peripheral devices/ ->
|
||||||
<bf/Drive/. Then, you must enable the <bf/True drive emulation/ checkbox.
|
<bf/Drive/. Then, you must enable the <bf/True drive emulation/ checkbox.
|
||||||
</quote>
|
</quote>
|
||||||
|
|
||||||
|
|||||||
@@ -886,7 +886,7 @@ also for a segment. The value must be an integer between 0 and 255. It is used
|
|||||||
as the fill value for space reserved by the assembler's <tt/.ALIGN/ and <tt/.RES/
|
as the fill value for space reserved by the assembler's <tt/.ALIGN/ and <tt/.RES/
|
||||||
commands. It is also used as the fill value for space between sections (part of a
|
commands. It is also used as the fill value for space between sections (part of a
|
||||||
segment that comes from one object file) caused by alignment, but not for
|
segment that comes from one object file) caused by alignment, but not for
|
||||||
space that preceeds the first section.
|
space that precedes the first section.
|
||||||
|
|
||||||
To suppress the warning, the linker issues if it encounters a segment that is
|
To suppress the warning, the linker issues if it encounters a segment that is
|
||||||
not found in any of the input files, use "<tt/optional=yes/" as an additional
|
not found in any of the input files, use "<tt/optional=yes/" as an additional
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ Please note:
|
|||||||
<item> The macro '<tt>SMC_StoreValue</tt>' takes care, that the store
|
<item> The macro '<tt>SMC_StoreValue</tt>' takes care, that the store
|
||||||
operation will occur on the value-position of a SMC-instruction. As
|
operation will occur on the value-position of a SMC-instruction. As
|
||||||
you will see, other macros influence other instruction part positions.
|
you will see, other macros influence other instruction part positions.
|
||||||
There is no consistency check, if the targeted SMC instruction acually
|
There is no consistency check, if the targeted SMC instruction actually
|
||||||
contains a value. Storing a 'value' on an immplied SMC instruction
|
contains a value. Storing a 'value' on an immplied SMC instruction
|
||||||
would corrupt the following memory cell!
|
would corrupt the following memory cell!
|
||||||
</enum>
|
</enum>
|
||||||
@@ -257,7 +257,7 @@ SMC LoadDefault, { LDX #25 }
|
|||||||
<label id="Load value">
|
<label id="Load value">
|
||||||
<tag><tt>SMC_LoadValue label (, register)</tt></tag>
|
<tag><tt>SMC_LoadValue label (, register)</tt></tag>
|
||||||
|
|
||||||
Retreives the value of a SMC line.
|
Retrieves the value of a SMC line.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
<tscreen><verb>
|
<tscreen><verb>
|
||||||
@@ -582,7 +582,7 @@ into a single instruction line. These can be changed of course too.
|
|||||||
Line 10,11: These lines construct a branch operation for line 8: The
|
Line 10,11: These lines construct a branch operation for line 8: The
|
||||||
X-register will be used to change it from 'inc StoreAccuFirstSection+2'
|
X-register will be used to change it from 'inc StoreAccuFirstSection+2'
|
||||||
(high-byte operation) to 'beq restoreCode'. Please note: To calculate the
|
(high-byte operation) to 'beq restoreCode'. Please note: To calculate the
|
||||||
relaive branch offset, we introduced a second label
|
relative branch offset, we introduced a second label
|
||||||
('RestoreCodeBranchBaseAdr') for to calculate it. Some could also use the
|
('RestoreCodeBranchBaseAdr') for to calculate it. Some could also use the
|
||||||
internal name of the SMC label, but you should abstain to do so - it may be
|
internal name of the SMC label, but you should abstain to do so - it may be
|
||||||
changed in the future...
|
changed in the future...
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ in Telemon, there is no way to load a binary easily.
|
|||||||
|
|
||||||
Stratsed (the Telestrat operating system) handles files management. Stratsed
|
Stratsed (the Telestrat operating system) handles files management. Stratsed
|
||||||
is loaded to memory from floppy disk. Stratsed vector are declared in asminc/telestrat.inc.
|
is loaded to memory from floppy disk. Stratsed vector are declared in asminc/telestrat.inc.
|
||||||
But, reverse engineering is required to find how theses vectors works. Please, note that
|
But, reverse engineering is required to find how these vectors works. Please, note that
|
||||||
Stratsed is located in overlay memory (bank 0)
|
Stratsed is located in overlay memory (bank 0)
|
||||||
|
|
||||||
There is no tool to insert a binary in a Stratsed floppy disk.
|
There is no tool to insert a binary in a Stratsed floppy disk.
|
||||||
@@ -194,7 +194,7 @@ if you get input from keyboard by conio cgetc function, you will get direction f
|
|||||||
|
|
||||||
Anyway, if you don't want to use ROM, you can use joysticks standard drivers in your code.
|
Anyway, if you don't want to use ROM, you can use joysticks standard drivers in your code.
|
||||||
|
|
||||||
The standard driver manages two joysticks. Only one button is managed for theses joysticks.
|
The standard driver manages two joysticks. Only one button is managed for these joysticks.
|
||||||
|
|
||||||
Telestrat can handle one button for the left port, and three buttons for the right port (but this port was designed for a mouse).
|
Telestrat can handle one button for the left port, and three buttons for the right port (but this port was designed for a mouse).
|
||||||
|
|
||||||
|
|||||||
@@ -78,6 +78,7 @@ int __fastcall__ stricmp (const char* s1, const char* s2); /* DOS/Windows */
|
|||||||
int __fastcall__ strcasecmp (const char* s1, const char* s2); /* Same for Unix */
|
int __fastcall__ strcasecmp (const char* s1, const char* s2); /* Same for Unix */
|
||||||
int __fastcall__ strnicmp (const char* s1, const char* s2, size_t count); /* DOS/Windows */
|
int __fastcall__ strnicmp (const char* s1, const char* s2, size_t count); /* DOS/Windows */
|
||||||
int __fastcall__ strncasecmp (const char* s1, const char* s2, size_t count); /* Same for Unix */
|
int __fastcall__ strncasecmp (const char* s1, const char* s2, size_t count); /* Same for Unix */
|
||||||
|
size_t __fastcall__ strnlen (const char* s, size_t maxlen); /* POSIX.1-2008 */
|
||||||
char* __fastcall__ strlwr (char* s);
|
char* __fastcall__ strlwr (char* s);
|
||||||
char* __fastcall__ strlower (char* s);
|
char* __fastcall__ strlower (char* s);
|
||||||
char* __fastcall__ strupr (char* s);
|
char* __fastcall__ strupr (char* s);
|
||||||
|
|||||||
@@ -102,6 +102,8 @@ extern struct _timezone {
|
|||||||
# define CLOCKS_PER_SEC 135 /* FIXME */
|
# define CLOCKS_PER_SEC 135 /* FIXME */
|
||||||
#elif defined(__GEOS__)
|
#elif defined(__GEOS__)
|
||||||
# define CLOCKS_PER_SEC 1
|
# define CLOCKS_PER_SEC 1
|
||||||
|
#elif defined(__TELESTRAT__)
|
||||||
|
# define CLOCKS_PER_SEC 10
|
||||||
#elif defined(__ATARI__) || defined (__LYNX__)
|
#elif defined(__ATARI__) || defined (__LYNX__)
|
||||||
/* Read the clock rate at runtime */
|
/* Read the clock rate at runtime */
|
||||||
clock_t _clocks_per_sec (void);
|
clock_t _clocks_per_sec (void);
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
;
|
;
|
||||||
; Ullrich von Bassewitz, 22.06.2002
|
; 2002-06-22, Ullrich von Bassewitz
|
||||||
|
; 2021-12-23, Greg King
|
||||||
;
|
;
|
||||||
; Original C code by Marc 'BlackJack' Rintsch, 18.03.2001
|
; Original C code by Marc 'BlackJack' Rintsch, 18.03.2001
|
||||||
;
|
;
|
||||||
@@ -19,26 +20,17 @@
|
|||||||
;
|
;
|
||||||
|
|
||||||
.export _cbm_open
|
.export _cbm_open
|
||||||
|
|
||||||
.import popa
|
.import popa
|
||||||
.import _cbm_k_setlfs, _cbm_k_setnam, _cbm_k_open
|
.import _cbm_k_setlfs, _cbm_k_setnam, _cbm_k_open
|
||||||
.import __oserror
|
.import __oserror
|
||||||
|
|
||||||
_cbm_open:
|
_cbm_open:
|
||||||
pha
|
jsr _cbm_k_setnam
|
||||||
txa
|
|
||||||
pha ; Save name
|
|
||||||
|
|
||||||
jsr popa ; Get sec_addr
|
jsr popa ; Get sec_addr
|
||||||
jsr _cbm_k_setlfs ; Call SETLFS, pop all args
|
jsr _cbm_k_setlfs ; Call SETLFS, pop all args
|
||||||
|
|
||||||
pla
|
|
||||||
tax
|
|
||||||
pla ; Get name
|
|
||||||
jsr _cbm_k_setnam
|
|
||||||
|
|
||||||
jsr _cbm_k_open
|
jsr _cbm_k_open
|
||||||
sta __oserror
|
sta __oserror
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ eof: lda #0
|
|||||||
|
|
||||||
devnotpresent:
|
devnotpresent:
|
||||||
lda #ENODEV
|
lda #ENODEV
|
||||||
jmp __directerrno ; Sets _errno, clears _oserror, returns -1
|
.byte $2C ; Skip next opcode via BIT <abs>
|
||||||
|
|
||||||
; Error entry: The given file descriptor is not valid or not open
|
; Error entry: The given file descriptor is not valid or not open
|
||||||
|
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ devnotpresent2:
|
|||||||
pla
|
pla
|
||||||
devnotpresent:
|
devnotpresent:
|
||||||
lda #ENODEV
|
lda #ENODEV
|
||||||
jmp __directerrno ; Sets _errno, clears _oserror, returns -1
|
.byte $2C ; Skip next opcode via BIT <abs>
|
||||||
|
|
||||||
; Error entry: The given file descriptor is not valid or not open
|
; Error entry: The given file descriptor is not valid or not open
|
||||||
|
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ int __fastcall__ posix_memalign (void** memptr, size_t alignment, size_t size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Test alignment: is it a power of two? There must be only one bit set. */
|
/* Test alignment: is it a power of two? There must be only one bit set. */
|
||||||
if (alignment == 0 || (alignment & --alignment) != 0) {
|
if (alignment == 0 || (alignment & (alignment - 1)) != 0) {
|
||||||
*memptr = NULL;
|
*memptr = NULL;
|
||||||
return EINVAL;
|
return EINVAL;
|
||||||
}
|
}
|
||||||
@@ -86,7 +86,7 @@ int __fastcall__ posix_memalign (void** memptr, size_t alignment, size_t size)
|
|||||||
** overhead added one time; and, the worst thing that might happen is that
|
** overhead added one time; and, the worst thing that might happen is that
|
||||||
** we cannot free the upper and lower blocks.
|
** we cannot free the upper and lower blocks.
|
||||||
*/
|
*/
|
||||||
b = malloc (size + alignment);
|
b = malloc (--alignment + size);
|
||||||
|
|
||||||
/* Handle out-of-memory */
|
/* Handle out-of-memory */
|
||||||
if (b == NULL) {
|
if (b == NULL) {
|
||||||
@@ -169,6 +169,3 @@ int __fastcall__ posix_memalign (void** memptr, size_t alignment, size_t size)
|
|||||||
|
|
||||||
return EOK;
|
return EOK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
54
libsrc/common/strnlen.s
Normal file
54
libsrc/common/strnlen.s
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
; size_t __fastcall__ strnlen (const char* s, size_t maxlen);
|
||||||
|
|
||||||
|
.export _strnlen
|
||||||
|
.import popax
|
||||||
|
.importzp ptr1, tmp1, tmp2, tmp3, tmp4
|
||||||
|
|
||||||
|
.proc _strnlen
|
||||||
|
; Get maximum length.
|
||||||
|
tay
|
||||||
|
iny
|
||||||
|
sty tmp3
|
||||||
|
inx
|
||||||
|
stx tmp4
|
||||||
|
|
||||||
|
; Fetch string pointer.
|
||||||
|
jsr popax
|
||||||
|
sta ptr1
|
||||||
|
stx ptr1+1
|
||||||
|
|
||||||
|
; Clear return value.
|
||||||
|
ldy #0
|
||||||
|
sty tmp1
|
||||||
|
sty tmp2
|
||||||
|
|
||||||
|
|
||||||
|
;;; Loop over string.
|
||||||
|
; Decrement maximum length.
|
||||||
|
next: dec tmp3
|
||||||
|
bne l2
|
||||||
|
dec tmp4
|
||||||
|
beq done
|
||||||
|
l2:
|
||||||
|
|
||||||
|
lda (ptr1),y
|
||||||
|
beq done
|
||||||
|
|
||||||
|
; Step to next character.
|
||||||
|
iny
|
||||||
|
bne l1
|
||||||
|
inc ptr1+1
|
||||||
|
l1:
|
||||||
|
|
||||||
|
; Increment return value.
|
||||||
|
inc tmp1
|
||||||
|
bne next
|
||||||
|
inc tmp2
|
||||||
|
|
||||||
|
bne next ; (jmp)
|
||||||
|
|
||||||
|
|
||||||
|
done: lda tmp1
|
||||||
|
ldx tmp2
|
||||||
|
rts
|
||||||
|
.endproc
|
||||||
@@ -6,8 +6,7 @@
|
|||||||
.include "lynx.inc"
|
.include "lynx.inc"
|
||||||
.import __STARTOFDIRECTORY__
|
.import __STARTOFDIRECTORY__
|
||||||
.import __MAIN_START__
|
.import __MAIN_START__
|
||||||
.import __CODE_SIZE__, __DATA_SIZE__, __RODATA_SIZE__
|
.import __STARTUP_LOAD__, __BSS_LOAD__
|
||||||
.import __STARTUP_SIZE__, __ONCE_SIZE__, __LOWCODE_SIZE__
|
|
||||||
.import __BANK0BLOCKSIZE__
|
.import __BANK0BLOCKSIZE__
|
||||||
.export __DEFDIR__: absolute = 1
|
.export __DEFDIR__: absolute = 1
|
||||||
|
|
||||||
@@ -21,7 +20,7 @@ off0 = __STARTOFDIRECTORY__ + (__DIRECTORY_END__ - __DIRECTORY_START__)
|
|||||||
blocka = off0 / __BANK0BLOCKSIZE__
|
blocka = off0 / __BANK0BLOCKSIZE__
|
||||||
; Entry 0 - first executable
|
; Entry 0 - first executable
|
||||||
block0 = off0 / __BANK0BLOCKSIZE__
|
block0 = off0 / __BANK0BLOCKSIZE__
|
||||||
len0 = __STARTUP_SIZE__ + __ONCE_SIZE__ + __CODE_SIZE__ + __DATA_SIZE__ + __RODATA_SIZE__ + __LOWCODE_SIZE__
|
len0 = __BSS_LOAD__ - __STARTUP_LOAD__
|
||||||
.byte <block0
|
.byte <block0
|
||||||
.word off0 & (__BANK0BLOCKSIZE__ - 1)
|
.word off0 & (__BANK0BLOCKSIZE__ - 1)
|
||||||
.byte $88
|
.byte $88
|
||||||
|
|||||||
@@ -12,7 +12,6 @@
|
|||||||
|
|
||||||
.proc _beep: near
|
.proc _beep: near
|
||||||
|
|
||||||
jsr BEEP ; Beep
|
jmp BEEP ; Beep
|
||||||
rts
|
|
||||||
|
|
||||||
.endproc
|
.endproc
|
||||||
|
|||||||
@@ -53,5 +53,5 @@ _exit: jsr donelib ; Run destructors
|
|||||||
lda TECHO
|
lda TECHO
|
||||||
ora #$80 ; Re-enable console echo
|
ora #$80 ; Re-enable console echo
|
||||||
sta TECHO
|
sta TECHO
|
||||||
jsr NACCES ; Lock System RAM
|
jmp NACCES ; Lock System RAM
|
||||||
rts ; Re-enter Sym-1 monitor
|
; Re-enter Sym-1 monitor
|
||||||
|
|||||||
@@ -12,7 +12,6 @@
|
|||||||
|
|
||||||
.proc _fdisp: near
|
.proc _fdisp: near
|
||||||
|
|
||||||
jsr SCAND ; Flash Display
|
jmp SCAND ; Flash Display
|
||||||
rts
|
|
||||||
|
|
||||||
.endproc
|
.endproc
|
||||||
|
|||||||
13
libsrc/telestrat/tgi_stddrv.s
Normal file
13
libsrc/telestrat/tgi_stddrv.s
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
;
|
||||||
|
; Name of the standard TGI driver
|
||||||
|
;
|
||||||
|
; 2022-02-02, Greg King
|
||||||
|
;
|
||||||
|
; const char tgi_stddrv[];
|
||||||
|
;
|
||||||
|
|
||||||
|
.export _tgi_stddrv
|
||||||
|
|
||||||
|
.rodata
|
||||||
|
|
||||||
|
_tgi_stddrv: .asciiz "telestrat-240-200-2.tgi"
|
||||||
@@ -154,7 +154,7 @@ endif
|
|||||||
# Lists of subdirectories
|
# Lists of subdirectories
|
||||||
|
|
||||||
# disasm depends on cpp
|
# disasm depends on cpp
|
||||||
DIRLIST = tutorial geos atari2600 supervision cbm
|
DIRLIST = tutorial geos atari2600 atari5200 apple2 gamate supervision sym1 cbm
|
||||||
|
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
# Lists of executables
|
# Lists of executables
|
||||||
@@ -170,6 +170,7 @@ EXELIST_apple2 = \
|
|||||||
multdemo \
|
multdemo \
|
||||||
ovrldemo \
|
ovrldemo \
|
||||||
sieve \
|
sieve \
|
||||||
|
tinyshell \
|
||||||
tgidemo
|
tgidemo
|
||||||
|
|
||||||
EXELIST_apple2enh = $(EXELIST_apple2)
|
EXELIST_apple2enh = $(EXELIST_apple2)
|
||||||
@@ -183,12 +184,13 @@ EXELIST_atari = \
|
|||||||
multdemo \
|
multdemo \
|
||||||
ovrldemo \
|
ovrldemo \
|
||||||
sieve \
|
sieve \
|
||||||
|
tinyshell \
|
||||||
tgidemo
|
tgidemo
|
||||||
|
|
||||||
EXELIST_atarixl = $(EXELIST_atari)
|
EXELIST_atarixl = $(EXELIST_atari)
|
||||||
|
|
||||||
EXELIST_atari2600 = \
|
EXELIST_atari2600 = \
|
||||||
atari2600hello
|
notavailable
|
||||||
|
|
||||||
EXELIST_atari5200 = \
|
EXELIST_atari5200 = \
|
||||||
notavailable
|
notavailable
|
||||||
@@ -212,6 +214,7 @@ EXELIST_c64 = \
|
|||||||
multdemo \
|
multdemo \
|
||||||
ovrldemo \
|
ovrldemo \
|
||||||
sieve \
|
sieve \
|
||||||
|
tinyshell \
|
||||||
tgidemo
|
tgidemo
|
||||||
|
|
||||||
EXELIST_c128 = \
|
EXELIST_c128 = \
|
||||||
@@ -222,11 +225,13 @@ EXELIST_c128 = \
|
|||||||
mandelbrot \
|
mandelbrot \
|
||||||
mousedemo \
|
mousedemo \
|
||||||
sieve \
|
sieve \
|
||||||
|
tinyshell \
|
||||||
tgidemo
|
tgidemo
|
||||||
|
|
||||||
EXELIST_c16 = \
|
EXELIST_c16 = \
|
||||||
ascii \
|
ascii \
|
||||||
enumdevdir \
|
enumdevdir \
|
||||||
|
tinyshell \
|
||||||
hello
|
hello
|
||||||
|
|
||||||
EXELIST_cbm510 = \
|
EXELIST_cbm510 = \
|
||||||
@@ -234,12 +239,14 @@ EXELIST_cbm510 = \
|
|||||||
gunzip65 \
|
gunzip65 \
|
||||||
hello \
|
hello \
|
||||||
mousedemo \
|
mousedemo \
|
||||||
|
tinyshell \
|
||||||
sieve
|
sieve
|
||||||
|
|
||||||
EXELIST_cbm610 = \
|
EXELIST_cbm610 = \
|
||||||
ascii \
|
ascii \
|
||||||
gunzip65 \
|
gunzip65 \
|
||||||
hello \
|
hello \
|
||||||
|
tinyshell \
|
||||||
sieve
|
sieve
|
||||||
|
|
||||||
EXELIST_creativision = \
|
EXELIST_creativision = \
|
||||||
@@ -254,6 +261,7 @@ EXELIST_cx16 = \
|
|||||||
mandelbrot \
|
mandelbrot \
|
||||||
mousedemo \
|
mousedemo \
|
||||||
sieve \
|
sieve \
|
||||||
|
tinyshell \
|
||||||
tgidemo
|
tgidemo
|
||||||
|
|
||||||
EXELIST_gamate = \
|
EXELIST_gamate = \
|
||||||
@@ -285,6 +293,7 @@ EXELIST_pet = \
|
|||||||
ascii \
|
ascii \
|
||||||
enumdevdir \
|
enumdevdir \
|
||||||
hello \
|
hello \
|
||||||
|
tinyshell \
|
||||||
sieve
|
sieve
|
||||||
|
|
||||||
EXELIST_plus4 = \
|
EXELIST_plus4 = \
|
||||||
@@ -292,6 +301,7 @@ EXELIST_plus4 = \
|
|||||||
enumdevdir \
|
enumdevdir \
|
||||||
gunzip65 \
|
gunzip65 \
|
||||||
hello \
|
hello \
|
||||||
|
tinyshell \
|
||||||
sieve
|
sieve
|
||||||
|
|
||||||
EXELIST_sim6502 = \
|
EXELIST_sim6502 = \
|
||||||
@@ -308,7 +318,10 @@ EXELIST_sym1 = \
|
|||||||
EXELIST_telestrat = \
|
EXELIST_telestrat = \
|
||||||
ascii \
|
ascii \
|
||||||
gunzip65 \
|
gunzip65 \
|
||||||
hello
|
hello \
|
||||||
|
mandelbrot \
|
||||||
|
sieve \
|
||||||
|
# tgidemo
|
||||||
|
|
||||||
EXELIST_vic20 = \
|
EXELIST_vic20 = \
|
||||||
ascii \
|
ascii \
|
||||||
@@ -373,6 +386,23 @@ tgidemo: tgidemo.o
|
|||||||
$(LD) -D __HIMEM__=0x6000 $(LDFLAGS) -o $@ -C vic20-tgi.cfg -m $@.map $^ $(SYS).lib
|
$(LD) -D __HIMEM__=0x6000 $(LDFLAGS) -o $@ -C vic20-tgi.cfg -m $@.map $^ $(SYS).lib
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# --------------------------------------------------------------------------
|
||||||
|
# some programs link against getsp.o
|
||||||
|
|
||||||
|
getsp.o: getsp.s
|
||||||
|
$(AS) $(ASFLAGS) -t $(SYS) $<
|
||||||
|
|
||||||
|
ifneq ($(SYS),vic20)
|
||||||
|
tinyshell: tinyshell.o getsp.o
|
||||||
|
$(LD) $(LDFLAGS) -t $(SYS) -o $@ $^ $(SYS).lib
|
||||||
|
endif
|
||||||
|
|
||||||
|
# some programs need more memory on the vic20
|
||||||
|
ifeq ($(SYS),vic20)
|
||||||
|
tinyshell: tinyshell.o getsp.o
|
||||||
|
$(LD) $(LDFLAGS) -o $@ -C vic20-32k.cfg -m $@.map $^ $(SYS).lib
|
||||||
|
endif
|
||||||
|
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
# Rule to make a CBM disk with all samples. Needs the c1541 program that comes
|
# Rule to make a CBM disk with all samples. Needs the c1541 program that comes
|
||||||
# with the VICE emulator.
|
# with the VICE emulator.
|
||||||
@@ -453,7 +483,10 @@ install:
|
|||||||
$(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)/atari2600
|
||||||
|
$(INSTALL) -d $(DESTDIR)$(samplesdir)/atari5200
|
||||||
|
$(INSTALL) -d $(DESTDIR)$(samplesdir)/apple2
|
||||||
$(INSTALL) -d $(DESTDIR)$(samplesdir)/cbm
|
$(INSTALL) -d $(DESTDIR)$(samplesdir)/cbm
|
||||||
|
$(INSTALL) -d $(DESTDIR)$(samplesdir)/gamate
|
||||||
$(INSTALL) -d $(DESTDIR)$(samplesdir)/supervision
|
$(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)
|
||||||
@@ -461,7 +494,10 @@ install:
|
|||||||
$(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 atari2600/*.* $(DESTDIR)$(samplesdir)/atari2600
|
||||||
|
$(INSTALL) -m0644 atari5200/*.* $(DESTDIR)$(samplesdir)/atari5200
|
||||||
|
$(INSTALL) -m0644 apple2/*.* $(DESTDIR)$(samplesdir)/apple2
|
||||||
$(INSTALL) -m0644 cbm/*.* $(DESTDIR)$(samplesdir)/cbm
|
$(INSTALL) -m0644 cbm/*.* $(DESTDIR)$(samplesdir)/cbm
|
||||||
|
$(INSTALL) -m0644 gamate/*.* $(DESTDIR)$(samplesdir)/gamate
|
||||||
$(INSTALL) -m0644 supervision/*.* $(DESTDIR)$(samplesdir)/supervision
|
$(INSTALL) -m0644 supervision/*.* $(DESTDIR)$(samplesdir)/supervision
|
||||||
|
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
@@ -474,7 +510,9 @@ zip:
|
|||||||
# Clean-up rules
|
# Clean-up rules
|
||||||
|
|
||||||
mostlyclean:
|
mostlyclean:
|
||||||
@$(DEL) *.lbl *.map *.o *.s 2>$(NULLDEV)
|
@$(DEL) *.lbl *.map *.o 2>$(NULLDEV)
|
||||||
|
# we cant use .s since we have asm files in the directory that we want to keep
|
||||||
|
@$(DEL) ${patsubst %.c,%.s,$(wildcard *.c)} 2>$(NULLDEV)
|
||||||
|
|
||||||
clean: mostlyclean
|
clean: mostlyclean
|
||||||
@$(DEL) $(EXELIST_$(SYS)) $(DISK_$(SYS)) 2>$(NULLDEV)
|
@$(DEL) $(EXELIST_$(SYS)) $(DISK_$(SYS)) 2>$(NULLDEV)
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
|
||||||
|
# Run 'make SYS=<target>'; or, set a SYS env.
|
||||||
|
# var. to build for another target system.
|
||||||
|
SYS ?= apple2
|
||||||
|
|
||||||
# For this one see https://applecommander.github.io/
|
# For this one see https://applecommander.github.io/
|
||||||
AC ?= ac.jar
|
AC ?= ac.jar
|
||||||
|
|
||||||
@@ -23,13 +28,31 @@ ifdef CC65_HOME
|
|||||||
CL = $(CC65_HOME)/bin/cl65
|
CL = $(CC65_HOME)/bin/cl65
|
||||||
LD = $(CC65_HOME)/bin/ld65
|
LD = $(CC65_HOME)/bin/ld65
|
||||||
else
|
else
|
||||||
AS := $(if $(wildcard ../../../bin/ca65*),../../../bin/ca65,ca65)
|
AS := $(if $(wildcard ../../bin/ca65*),../../bin/ca65,ca65)
|
||||||
CC := $(if $(wildcard ../../../bin/cc65*),../../../bin/cc65,cc65)
|
CC := $(if $(wildcard ../../bin/cc65*),../../bin/cc65,cc65)
|
||||||
CL := $(if $(wildcard ../../../bin/cl65*),../../../bin/cl65,cl65)
|
CL := $(if $(wildcard ../../bin/cl65*),../../bin/cl65,cl65)
|
||||||
LD := $(if $(wildcard ../../../bin/ld65*),../../../bin/ld65,ld65)
|
LD := $(if $(wildcard ../../bin/ld65*),../../bin/ld65,ld65)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all: hgrshow hgrtest dhgrshow
|
EXELIST_apple2 = \
|
||||||
|
hgrshow \
|
||||||
|
hgrtest \
|
||||||
|
dhgrshow
|
||||||
|
|
||||||
|
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: apple2 tests not available for" $(SYS)
|
||||||
|
else
|
||||||
|
# suppress the "nothing to be done for 'samples' message
|
||||||
|
@echo > $(NULLDEV)
|
||||||
|
endif
|
||||||
|
|
||||||
disk: hgr.dsk dhgr.dsk
|
disk: hgr.dsk dhgr.dsk
|
||||||
|
|
||||||
@@ -40,6 +40,7 @@ void main (void)
|
|||||||
}
|
}
|
||||||
closedir (dir);
|
closedir (dir);
|
||||||
|
|
||||||
|
POKE (0xC05F, 0);
|
||||||
tgi_uninstall ();
|
tgi_uninstall ();
|
||||||
videomode (old);
|
videomode (old);
|
||||||
}
|
}
|
||||||
56
samples/atari5200/Makefile
Normal file
56
samples/atari5200/Makefile
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
|
||||||
|
# Run 'make SYS=<target>'; or, set a SYS env.
|
||||||
|
# var. to build for another target system.
|
||||||
|
SYS ?= atari5200
|
||||||
|
|
||||||
|
# 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
|
||||||
|
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)
|
||||||
|
endif
|
||||||
|
|
||||||
|
EXELIST_atari5200 = \
|
||||||
|
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 5200 tests not available for" $(SYS)
|
||||||
|
else
|
||||||
|
# suppress the "nothing to be done for 'samples' message
|
||||||
|
@echo > $(NULLDEV)
|
||||||
|
endif
|
||||||
|
|
||||||
|
hello: hello.c
|
||||||
|
$(CL) -t atari5200 -o hello hello.c
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@$(DEL) hello 2>$(NULLDEV)
|
||||||
57
samples/gamate/Makefile
Normal file
57
samples/gamate/Makefile
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
|
||||||
|
# Run 'make SYS=<target>'; or, set a SYS env.
|
||||||
|
# var. to build for another target system.
|
||||||
|
SYS ?= gamate
|
||||||
|
|
||||||
|
# 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
|
||||||
|
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)
|
||||||
|
endif
|
||||||
|
|
||||||
|
EXELIST_gamate = \
|
||||||
|
nachtm.bin
|
||||||
|
|
||||||
|
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: gamate tests not available for" $(SYS)
|
||||||
|
else
|
||||||
|
# suppress the "nothing to be done for 'samples' message
|
||||||
|
@echo > $(NULLDEV)
|
||||||
|
endif
|
||||||
|
|
||||||
|
nachtm.bin: nachtm.c
|
||||||
|
$(CL) -Os -l nachtm.lst -t gamate -o nachtm.bin nachtm.c
|
||||||
|
../../util/gamate/gamate-fixcart nachtm.bin
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@$(DEL) nachtm.bin nachtm.lst 2>$(NULLDEV)
|
||||||
12
samples/getsp.s
Normal file
12
samples/getsp.s
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
.export _getsp
|
||||||
|
.importzp sp
|
||||||
|
|
||||||
|
.proc _getsp
|
||||||
|
|
||||||
|
ldx sp+1
|
||||||
|
lda sp
|
||||||
|
rts
|
||||||
|
|
||||||
|
.endproc
|
||||||
|
|
||||||
@@ -1,6 +1,14 @@
|
|||||||
|
|
||||||
This directory contains sample programs for the cc65 compiler.
|
This directory contains sample programs for the cc65 compiler.
|
||||||
|
|
||||||
|
The programs contained here are
|
||||||
|
- used as samples and referenced from within the documentation (this is their
|
||||||
|
main purpose)
|
||||||
|
- installed into the filesystem
|
||||||
|
- compiled (but NOT run) by the CI test
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Below is a short description for each of the programs, together with a list
|
Below is a short description for each of the programs, together with a list
|
||||||
of the supported platforms.
|
of the supported platforms.
|
||||||
|
|
||||||
@@ -68,10 +76,10 @@ 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, and converted to cc65 using TGI graphics
|
written by groepaz, and converted to cc65 using TGI graphics
|
||||||
by Stephan Haubenthal.
|
by Stefan 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.
|
and NES.
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
Name: mousedemo
|
Name: mousedemo
|
||||||
@@ -105,6 +113,11 @@ 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: tinyshell
|
||||||
|
Description: Simple ("tiny") shell to test filename and directory functions.
|
||||||
|
Platforms: Runs on all platforms that have stdio support
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
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
|
||||||
@@ -125,6 +138,37 @@ Description: A "Hello world" type program.
|
|||||||
Platforms: Runs on only the Atari 2600 Video Console System.
|
Platforms: Runs on only the Atari 2600 Video Console System.
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
atari 5200:
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Name: hello
|
||||||
|
Description: A "Hello world" type program.
|
||||||
|
Platforms: Runs on only the Atari 5200 Video Console System.
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
apple2:
|
||||||
|
-------
|
||||||
|
|
||||||
|
Name: hgrtest
|
||||||
|
Description: shows how to incorporate a hires screen right into the binary,
|
||||||
|
thus allowing to place content both below and above the hires
|
||||||
|
video ram without multiple files nor copying stuff around (plus
|
||||||
|
having a nice splash screen as bonus). It basically demos how to
|
||||||
|
make use of apple2-hgr.cfg.
|
||||||
|
|
||||||
|
Name: hgrshow
|
||||||
|
Description: is a (single) hires program showing how to load (single) hires
|
||||||
|
screens from files without support from TGI. TGI could be used
|
||||||
|
to "paint" on the loaded screens.
|
||||||
|
|
||||||
|
Name: dhgrshow
|
||||||
|
Description: is a double hires program showing how to load double hires
|
||||||
|
screens from files. TGI is used for most of the I/O address
|
||||||
|
manipulation, but (in contrast to hgrshow) is not actually
|
||||||
|
functional.
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
cbm:
|
cbm:
|
||||||
----
|
----
|
||||||
|
|
||||||
@@ -147,6 +191,32 @@ Platforms: The program needs a VIC-II or a TED, so it runs on the following
|
|||||||
C64, C128, CBM510, Plus/4.
|
C64, C128, CBM510, Plus/4.
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
gamate:
|
||||||
|
-------
|
||||||
|
|
||||||
|
Name: nachtm
|
||||||
|
Description: Plays "Eine kleine Nachtmusik" by Wolfgang Amadeus Mozart.
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
sym1:
|
||||||
|
-----
|
||||||
|
|
||||||
|
Name: symHello
|
||||||
|
Description: Hello World for Sym-1
|
||||||
|
|
||||||
|
Name: symTiny
|
||||||
|
Description: Hello World for Sym-1 (tiny version without printf)
|
||||||
|
|
||||||
|
Name: symDisplay
|
||||||
|
Description: Sym-1 front panel display example
|
||||||
|
|
||||||
|
Name: symIO
|
||||||
|
Description: Sym-1 digital I/O interface example
|
||||||
|
|
||||||
|
Name: symNotepad
|
||||||
|
Description: Sym-1 Notepad
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
supervision:
|
supervision:
|
||||||
------------
|
------------
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
|
||||||
|
# Run 'make SYS=<target>'; or, set a SYS env.
|
||||||
|
# var. to build for another target system.
|
||||||
|
SYS ?= sym1
|
||||||
|
|
||||||
# Just the usual way to find out if we're
|
# Just the usual way to find out if we're
|
||||||
# using cmd.exe to execute make rules.
|
# using cmd.exe to execute make rules.
|
||||||
ifneq ($(shell echo),)
|
ifneq ($(shell echo),)
|
||||||
@@ -20,13 +25,29 @@ ifdef CC65_HOME
|
|||||||
CL = $(CC65_HOME)/bin/cl65
|
CL = $(CC65_HOME)/bin/cl65
|
||||||
LD = $(CC65_HOME)/bin/ld65
|
LD = $(CC65_HOME)/bin/ld65
|
||||||
else
|
else
|
||||||
AS := $(if $(wildcard ../../../bin/ca65*),../../../bin/ca65,ca65)
|
AS := $(if $(wildcard ../../bin/ca65*),../../bin/ca65,ca65)
|
||||||
CC := $(if $(wildcard ../../../bin/cc65*),../../../bin/cc65,cc65)
|
CC := $(if $(wildcard ../../bin/cc65*),../../bin/cc65,cc65)
|
||||||
CL := $(if $(wildcard ../../../bin/cl65*),../../../bin/cl65,cl65)
|
CL := $(if $(wildcard ../../bin/cl65*),../../bin/cl65,cl65)
|
||||||
LD := $(if $(wildcard ../../../bin/ld65*),../../../bin/ld65,ld65)
|
LD := $(if $(wildcard ../../bin/ld65*),../../bin/ld65,ld65)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all: symHello.bin symTiny.bin symDisplay.bin symIO.bin symNotepad.bin
|
EXELIST_sym1 = \
|
||||||
|
symHello.bin symTiny.bin symDisplay.bin symIO.bin symNotepad.bin
|
||||||
|
|
||||||
|
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: sym1 tests not available for" $(SYS)
|
||||||
|
else
|
||||||
|
# suppress the "nothing to be done for 'samples' message
|
||||||
|
@echo > $(NULLDEV)
|
||||||
|
endif
|
||||||
|
|
||||||
symHello.bin: symHello.c
|
symHello.bin: symHello.c
|
||||||
$(CL) -t sym1 -O -o symHello.bin symHello.c
|
$(CL) -t sym1 -O -o symHello.bin symHello.c
|
||||||
@@ -60,13 +60,13 @@ extern unsigned int getsp(void); /* comes from getsp.s */
|
|||||||
static unsigned char verbose;
|
static unsigned char verbose;
|
||||||
static unsigned char terminate;
|
static unsigned char terminate;
|
||||||
static unsigned char cmd;
|
static unsigned char cmd;
|
||||||
static unsigned char *cmd_asc, *arg1, *arg2, *arg3, *args; /* 'args': everything after command */
|
static char *cmd_asc, *arg1, *arg2, *arg3, *args; /* 'args': everything after command */
|
||||||
static unsigned char keyb_buf[KEYB_BUFSZ + 1];
|
static char keyb_buf[KEYB_BUFSZ + 1];
|
||||||
static unsigned char keyb_buf2[KEYB_BUFSZ + 1];
|
static char keyb_buf2[KEYB_BUFSZ + 1];
|
||||||
static size_t cpbuf_sz = 4096;
|
static size_t cpbuf_sz = 4096;
|
||||||
|
|
||||||
struct cmd_table {
|
struct cmd_table {
|
||||||
unsigned char *name;
|
char *name;
|
||||||
unsigned char code;
|
unsigned char code;
|
||||||
} cmd_table[] = {
|
} cmd_table[] = {
|
||||||
{ "help", CMD_HELP },
|
{ "help", CMD_HELP },
|
||||||
@@ -196,7 +196,7 @@ static void cmd_help(void)
|
|||||||
static void cmd_ls(void)
|
static void cmd_ls(void)
|
||||||
{
|
{
|
||||||
DIR *dir;
|
DIR *dir;
|
||||||
unsigned char *arg;
|
char *arg;
|
||||||
struct dirent *dirent;
|
struct dirent *dirent;
|
||||||
#ifdef __ATARI__
|
#ifdef __ATARI__
|
||||||
char need_free = 0;
|
char need_free = 0;
|
||||||
@@ -356,7 +356,7 @@ static void cmd_rename(void)
|
|||||||
|
|
||||||
static void cmd_exec(void)
|
static void cmd_exec(void)
|
||||||
{
|
{
|
||||||
unsigned char *progname, *arguments;
|
char *progname, *arguments;
|
||||||
|
|
||||||
progname = strtok(args, " \t\n");
|
progname = strtok(args, " \t\n");
|
||||||
if (! progname) {
|
if (! progname) {
|
||||||
@@ -373,7 +373,7 @@ static void cmd_exec(void)
|
|||||||
static void cmd_copy(void)
|
static void cmd_copy(void)
|
||||||
{
|
{
|
||||||
int srcfd = -1, dstfd = -1;
|
int srcfd = -1, dstfd = -1;
|
||||||
unsigned char *buf;
|
char *buf;
|
||||||
int readsz, writesz;
|
int readsz, writesz;
|
||||||
|
|
||||||
if (!arg2 || arg3) {
|
if (!arg2 || arg3) {
|
||||||
@@ -34,6 +34,9 @@ endif
|
|||||||
EXELIST_atari2600 = \
|
EXELIST_atari2600 = \
|
||||||
notavailable
|
notavailable
|
||||||
|
|
||||||
|
EXELIST_atari5200 = \
|
||||||
|
notavailable
|
||||||
|
|
||||||
EXELIST_bbc = \
|
EXELIST_bbc = \
|
||||||
notavailable
|
notavailable
|
||||||
|
|
||||||
|
|||||||
@@ -286,7 +286,7 @@ static void ParseAutoDecl (Declaration* Decl)
|
|||||||
** We abuse the Collection somewhat by using it to store line
|
** We abuse the Collection somewhat by using it to store line
|
||||||
** numbers.
|
** numbers.
|
||||||
*/
|
*/
|
||||||
CollReplace (&CurrentFunc->LocalsBlockStack, (void *)(long)GetCurrentLine (),
|
CollReplace (&CurrentFunc->LocalsBlockStack, (void *)(size_t)GetCurrentLine (),
|
||||||
CollCount (&CurrentFunc->LocalsBlockStack) - 1);
|
CollCount (&CurrentFunc->LocalsBlockStack) - 1);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -955,10 +955,6 @@ int main (int argc, char* argv[])
|
|||||||
OptTarget (Arg, GetArg (&I, 2));
|
OptTarget (Arg, GetArg (&I, 2));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'u':
|
|
||||||
OptCreateDep (Arg, 0);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'v':
|
case 'v':
|
||||||
OptVerbose (Arg, 0);
|
OptVerbose (Arg, 0);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ struct CodeEntry;
|
|||||||
typedef struct DefOrRef DefOrRef;
|
typedef struct DefOrRef DefOrRef;
|
||||||
struct DefOrRef {
|
struct DefOrRef {
|
||||||
unsigned Line;
|
unsigned Line;
|
||||||
long LocalsBlockId;
|
size_t LocalsBlockId;
|
||||||
unsigned Flags;
|
unsigned Flags;
|
||||||
int StackPtr;
|
int StackPtr;
|
||||||
unsigned Depth;
|
unsigned Depth;
|
||||||
|
|||||||
@@ -951,7 +951,7 @@ DefOrRef* AddDefOrRef (SymEntry* E, unsigned Flags)
|
|||||||
DOR = xmalloc (sizeof (DefOrRef));
|
DOR = xmalloc (sizeof (DefOrRef));
|
||||||
CollAppend (E->V.L.DefsOrRefs, DOR);
|
CollAppend (E->V.L.DefsOrRefs, DOR);
|
||||||
DOR->Line = GetCurrentLine ();
|
DOR->Line = GetCurrentLine ();
|
||||||
DOR->LocalsBlockId = (long)CollLast (&CurrentFunc->LocalsBlockStack);
|
DOR->LocalsBlockId = (size_t)CollLast (&CurrentFunc->LocalsBlockStack);
|
||||||
DOR->Flags = Flags;
|
DOR->Flags = Flags;
|
||||||
DOR->StackPtr = StackPtr;
|
DOR->StackPtr = StackPtr;
|
||||||
DOR->Depth = CollCount (&CurrentFunc->LocalsBlockStack);
|
DOR->Depth = CollCount (&CurrentFunc->LocalsBlockStack);
|
||||||
@@ -1013,9 +1013,9 @@ SymEntry* AddLabelSym (const char* Name, unsigned Flags)
|
|||||||
/* Are we jumping into a block with initalization of an object that
|
/* Are we jumping into a block with initalization of an object that
|
||||||
** has automatic storage duration? Let's emit a warning.
|
** has automatic storage duration? Let's emit a warning.
|
||||||
*/
|
*/
|
||||||
if ((long)CollLast (AIC) != DOR->LocalsBlockId &&
|
if ((size_t)CollLast (AIC) != DOR->LocalsBlockId &&
|
||||||
(CollCount (AIC) < DOR->Depth ||
|
(CollCount (AIC) < DOR->Depth ||
|
||||||
(long)CollAt (AIC, DOR->Depth - 1) != DOR->LocalsBlockId)) {
|
(size_t)CollAt (AIC, DOR->Depth - 1) != DOR->LocalsBlockId)) {
|
||||||
Warning ("Goto at line %d to label %s jumps into a block with "
|
Warning ("Goto at line %d to label %s jumps into a block with "
|
||||||
"initialization of an object that has automatic storage duration",
|
"initialization of an object that has automatic storage duration",
|
||||||
GetCurrentLine (), Name);
|
GetCurrentLine (), Name);
|
||||||
@@ -1044,9 +1044,9 @@ SymEntry* AddLabelSym (const char* Name, unsigned Flags)
|
|||||||
/* Are we jumping into a block with initalization of an object that
|
/* Are we jumping into a block with initalization of an object that
|
||||||
** has automatic storage duration? Let's emit a warning.
|
** has automatic storage duration? Let's emit a warning.
|
||||||
*/
|
*/
|
||||||
if ((long)CollLast (AIC) != DOR->LocalsBlockId &&
|
if ((size_t)CollLast (AIC) != DOR->LocalsBlockId &&
|
||||||
(CollCount (AIC) >= DOR->Depth ||
|
(CollCount (AIC) >= DOR->Depth ||
|
||||||
(long)CollLast (AIC) >= (long)DOR->Line))
|
(size_t)CollLast (AIC) >= (size_t)DOR->Line))
|
||||||
Warning ("Goto at line %d to label %s jumps into a block with "
|
Warning ("Goto at line %d to label %s jumps into a block with "
|
||||||
"initialization of an object that has automatic storage duration",
|
"initialization of an object that has automatic storage duration",
|
||||||
DOR->Line, Name);
|
DOR->Line, Name);
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ typedef struct DbgInfo DbgInfo;
|
|||||||
struct DbgInfo {
|
struct DbgInfo {
|
||||||
|
|
||||||
/* First we have all items in collections sorted by id. The ids are
|
/* First we have all items in collections sorted by id. The ids are
|
||||||
** continous, so an access by id is almost as cheap as an array access.
|
** continuous, so an access by id is almost as cheap as an array access.
|
||||||
** The collections are also used when the objects are deleted, so they're
|
** The collections are also used when the objects are deleted, so they're
|
||||||
** actually the ones that "own" the items.
|
** actually the ones that "own" the items.
|
||||||
*/
|
*/
|
||||||
@@ -680,7 +680,7 @@ static char* SB_StrDup (const StrBuf* B)
|
|||||||
static Collection* CollInit (Collection* C)
|
static Collection* CollInit (Collection* C)
|
||||||
/* Initialize a collection and return it. */
|
/* Initialize a collection and return it. */
|
||||||
{
|
{
|
||||||
/* Intialize the fields. */
|
/* Initialize the fields. */
|
||||||
C->Count = 0;
|
C->Count = 0;
|
||||||
C->Size = 0;
|
C->Size = 0;
|
||||||
C->Items = 0;
|
C->Items = 0;
|
||||||
@@ -1349,7 +1349,7 @@ static int CompareFileInfoByName (const void* L, const void* R)
|
|||||||
|
|
||||||
|
|
||||||
static LibInfo* NewLibInfo (const StrBuf* Name)
|
static LibInfo* NewLibInfo (const StrBuf* Name)
|
||||||
/* Create a new LibInfo struct, intialize and return it */
|
/* Create a new LibInfo struct, initialize and return it */
|
||||||
{
|
{
|
||||||
/* Allocate memory */
|
/* Allocate memory */
|
||||||
LibInfo* L = xmalloc (sizeof (LibInfo) + SB_GetLen (Name));
|
LibInfo* L = xmalloc (sizeof (LibInfo) + SB_GetLen (Name));
|
||||||
@@ -1463,7 +1463,7 @@ static int CompareLineInfoByLine (const void* L, const void* R)
|
|||||||
|
|
||||||
|
|
||||||
static ModInfo* NewModInfo (const StrBuf* Name)
|
static ModInfo* NewModInfo (const StrBuf* Name)
|
||||||
/* Create a new ModInfo struct, intialize and return it */
|
/* Create a new ModInfo struct, initialize and return it */
|
||||||
{
|
{
|
||||||
/* Allocate memory */
|
/* Allocate memory */
|
||||||
ModInfo* M = xmalloc (sizeof (ModInfo) + SB_GetLen (Name));
|
ModInfo* M = xmalloc (sizeof (ModInfo) + SB_GetLen (Name));
|
||||||
@@ -1536,7 +1536,7 @@ static int CompareModInfoByName (const void* L, const void* R)
|
|||||||
|
|
||||||
|
|
||||||
static ScopeInfo* NewScopeInfo (const StrBuf* Name)
|
static ScopeInfo* NewScopeInfo (const StrBuf* Name)
|
||||||
/* Create a new ScopeInfo struct, intialize and return it */
|
/* Create a new ScopeInfo struct, initialize and return it */
|
||||||
{
|
{
|
||||||
/* Allocate memory */
|
/* Allocate memory */
|
||||||
ScopeInfo* S = xmalloc (sizeof (ScopeInfo) + SB_GetLen (Name));
|
ScopeInfo* S = xmalloc (sizeof (ScopeInfo) + SB_GetLen (Name));
|
||||||
@@ -1697,7 +1697,7 @@ static int CompareSegInfoByName (const void* L, const void* R)
|
|||||||
|
|
||||||
|
|
||||||
static SpanInfo* NewSpanInfo (void)
|
static SpanInfo* NewSpanInfo (void)
|
||||||
/* Create a new SpanInfo struct, intialize and return it */
|
/* Create a new SpanInfo struct, initialize and return it */
|
||||||
{
|
{
|
||||||
/* Allocate memory */
|
/* Allocate memory */
|
||||||
SpanInfo* S = xmalloc (sizeof (SpanInfo));
|
SpanInfo* S = xmalloc (sizeof (SpanInfo));
|
||||||
@@ -1779,7 +1779,7 @@ static int CompareSpanInfoByAddr (const void* L, const void* R)
|
|||||||
|
|
||||||
|
|
||||||
static SymInfo* NewSymInfo (const StrBuf* Name)
|
static SymInfo* NewSymInfo (const StrBuf* Name)
|
||||||
/* Create a new SymInfo struct, intialize and return it */
|
/* Create a new SymInfo struct, initialize and return it */
|
||||||
{
|
{
|
||||||
/* Allocate memory */
|
/* Allocate memory */
|
||||||
SymInfo* S = xmalloc (sizeof (SymInfo) + SB_GetLen (Name));
|
SymInfo* S = xmalloc (sizeof (SymInfo) + SB_GetLen (Name));
|
||||||
@@ -2147,7 +2147,7 @@ static TypeInfo* ParseTypeString (InputData* D, StrBuf* Type)
|
|||||||
I += GT_GET_SIZE (A[I]) + 1;
|
I += GT_GET_SIZE (A[I]) + 1;
|
||||||
} else {
|
} else {
|
||||||
/* Unknown type in type string */
|
/* Unknown type in type string */
|
||||||
ParseError (D, CC65_ERROR, "Unkown type in type value");
|
ParseError (D, CC65_ERROR, "Unknown type in type value");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -2733,7 +2733,7 @@ static int StrConstFollows (InputData* D)
|
|||||||
|
|
||||||
|
|
||||||
static int Consume (InputData* D, Token Tok, const char* Name)
|
static int Consume (InputData* D, Token Tok, const char* Name)
|
||||||
/* Check for a token and consume it. Return true if the token was comsumed,
|
/* Check for a token and consume it. Return true if the token was consumed,
|
||||||
** return false otherwise.
|
** return false otherwise.
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
@@ -6936,7 +6936,7 @@ const cc65_scopeinfo* cc65_scope_byspan (cc65_dbginfo Handle, unsigned SpanId)
|
|||||||
const cc65_scopeinfo* cc65_childscopes_byid (cc65_dbginfo Handle, unsigned Id)
|
const cc65_scopeinfo* cc65_childscopes_byid (cc65_dbginfo Handle, unsigned Id)
|
||||||
/* Return the direct child scopes of a scope with a given id. The function
|
/* Return the direct child scopes of a scope with a given id. The function
|
||||||
** returns NULL if no scope with this id was found, otherwise a list of the
|
** returns NULL if no scope with this id was found, otherwise a list of the
|
||||||
** direct childs.
|
** direct children.
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
const DbgInfo* Info;
|
const DbgInfo* Info;
|
||||||
|
|||||||
@@ -196,7 +196,7 @@ static void StrVal (void)
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
CfgWarning (&CfgErrorPos,
|
CfgWarning (&CfgErrorPos,
|
||||||
"Unkown escape sequence '%%%c'", C);
|
"Unknown escape sequence '%%%c'", C);
|
||||||
SB_AppendChar (&CfgSVal, '%');
|
SB_AppendChar (&CfgSVal, '%');
|
||||||
SB_AppendChar (&CfgSVal, C);
|
SB_AppendChar (&CfgSVal, C);
|
||||||
NextChar ();
|
NextChar ();
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ static void SetAX (CPURegs* Regs, unsigned Val)
|
|||||||
|
|
||||||
static unsigned char Pop (CPURegs* Regs)
|
static unsigned char Pop (CPURegs* Regs)
|
||||||
{
|
{
|
||||||
return MemReadByte (0x0100 + ++Regs->SP);
|
return MemReadByte (0x0100 + (++Regs->SP & 0xFF));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -317,6 +317,8 @@ void ParaVirtInit (unsigned aArgStart, unsigned char aSPAddr)
|
|||||||
void ParaVirtHooks (CPURegs* Regs)
|
void ParaVirtHooks (CPURegs* Regs)
|
||||||
/* Potentially execute paravirtualization hooks */
|
/* Potentially execute paravirtualization hooks */
|
||||||
{
|
{
|
||||||
|
unsigned lo;
|
||||||
|
|
||||||
/* Check for paravirtualization address range */
|
/* Check for paravirtualization address range */
|
||||||
if (Regs->PC < PARAVIRT_BASE ||
|
if (Regs->PC < PARAVIRT_BASE ||
|
||||||
Regs->PC >= PARAVIRT_BASE + sizeof (Hooks) / sizeof (Hooks[0])) {
|
Regs->PC >= PARAVIRT_BASE + sizeof (Hooks) / sizeof (Hooks[0])) {
|
||||||
@@ -327,5 +329,6 @@ void ParaVirtHooks (CPURegs* Regs)
|
|||||||
Hooks[Regs->PC - PARAVIRT_BASE] (Regs);
|
Hooks[Regs->PC - PARAVIRT_BASE] (Regs);
|
||||||
|
|
||||||
/* Simulate RTS */
|
/* Simulate RTS */
|
||||||
Regs->PC = Pop(Regs) + (Pop(Regs) << 8) + 1;
|
lo = Pop (Regs);
|
||||||
|
Regs->PC = lo + (Pop (Regs) << 8) + 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -122,6 +122,48 @@ DISK_atarixl = testcode.atr
|
|||||||
|
|
||||||
.PRECIOUS: %.o
|
.PRECIOUS: %.o
|
||||||
|
|
||||||
|
LDFLAGS=
|
||||||
|
ifeq ($(SYS),c64)
|
||||||
|
LDFLAGS+=-Ln $@.lbl
|
||||||
|
endif
|
||||||
|
ifeq ($(SYS),c128)
|
||||||
|
LDFLAGS+=-Ln $@.lbl
|
||||||
|
endif
|
||||||
|
ifeq ($(SYS),c16)
|
||||||
|
LDFLAGS+=-Ln $@.lbl
|
||||||
|
endif
|
||||||
|
ifeq ($(SYS),cbm510)
|
||||||
|
LDFLAGS+=-Ln $@.lbl
|
||||||
|
endif
|
||||||
|
ifeq ($(SYS),cbm610)
|
||||||
|
LDFLAGS+=-Ln $@.lbl
|
||||||
|
endif
|
||||||
|
ifeq ($(SYS),cx16)
|
||||||
|
LDFLAGS+=-Ln $@.lbl
|
||||||
|
endif
|
||||||
|
ifeq ($(SYS),geos-cbm)
|
||||||
|
LDFLAGS+=-Ln $@.lbl
|
||||||
|
endif
|
||||||
|
ifeq ($(SYS),lunix)
|
||||||
|
LDFLAGS+=-Ln $@.lbl
|
||||||
|
endif
|
||||||
|
ifeq ($(SYS),pet)
|
||||||
|
LDFLAGS+=-Ln $@.lbl
|
||||||
|
endif
|
||||||
|
ifeq ($(SYS),pet-overlay)
|
||||||
|
LDFLAGS+=-Ln $@.lbl
|
||||||
|
endif
|
||||||
|
ifeq ($(SYS),plus4)
|
||||||
|
LDFLAGS+=-Ln $@.lbl
|
||||||
|
endif
|
||||||
|
ifeq ($(SYS),vic20)
|
||||||
|
LDFLAGS+=-Ln $@.lbl
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(SYS),pce)
|
||||||
|
LDFLAGS+=-D__CARTSIZE__=0x8000
|
||||||
|
endif
|
||||||
|
|
||||||
.o:
|
.o:
|
||||||
ifeq ($(SYS),vic20)
|
ifeq ($(SYS),vic20)
|
||||||
$(LD) $(LDFLAGS_$(@F)_$(SYS)) $(LDFLAGS) -o $@ -C vic20-32k.cfg -m $@.map $^ $(SYS).lib
|
$(LD) $(LDFLAGS_$(@F)_$(SYS)) $(LDFLAGS) -o $@ -C vic20-32k.cfg -m $@.map $^ $(SYS).lib
|
||||||
@@ -129,11 +171,17 @@ else
|
|||||||
$(LD) $(LDFLAGS_$(@F)_$(SYS)) $(LDFLAGS) -o $@ -t $(SYS) -m $@.map $^ $(SYS).lib
|
$(LD) $(LDFLAGS_$(@F)_$(SYS)) $(LDFLAGS) -o $@ -t $(SYS) -m $@.map $^ $(SYS).lib
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# --------------------------------------------------------------------------
|
||||||
|
# Lists of subdirectories
|
||||||
|
|
||||||
|
DIRLIST = accelerator atari cbm gamate pce
|
||||||
|
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
# Lists of executables
|
# Lists of executables
|
||||||
|
|
||||||
# omitted: seek
|
# omitted: seek
|
||||||
EXELIST_c64 = \
|
EXELIST_c64 = \
|
||||||
|
minimal \
|
||||||
arg-test \
|
arg-test \
|
||||||
clock \
|
clock \
|
||||||
clock-test \
|
clock-test \
|
||||||
@@ -160,13 +208,205 @@ EXELIST_c64 = \
|
|||||||
scanf-test \
|
scanf-test \
|
||||||
ser-test \
|
ser-test \
|
||||||
strdup-test \
|
strdup-test \
|
||||||
|
strnlen \
|
||||||
|
stroserror-test \
|
||||||
|
strqtok-test \
|
||||||
|
uname-test
|
||||||
|
|
||||||
|
# omitted: seek
|
||||||
|
EXELIST_c128 = \
|
||||||
|
minimal \
|
||||||
|
arg-test \
|
||||||
|
clock \
|
||||||
|
clock-test \
|
||||||
|
conio \
|
||||||
|
cpeek-test \
|
||||||
|
cprintf \
|
||||||
|
cursor \
|
||||||
|
deb \
|
||||||
|
dir-test \
|
||||||
|
div-test \
|
||||||
|
em-test \
|
||||||
|
exec-test1 \
|
||||||
|
exec-test2 \
|
||||||
|
fileio-test \
|
||||||
|
ft \
|
||||||
|
getopt-test \
|
||||||
|
heaptest \
|
||||||
|
joy-test \
|
||||||
|
moddiv-test \
|
||||||
|
mouse-test \
|
||||||
|
mul-test \
|
||||||
|
posixio-test \
|
||||||
|
rename-test \
|
||||||
|
scanf-test \
|
||||||
|
ser-test \
|
||||||
|
strdup-test \
|
||||||
|
strnlen \
|
||||||
|
stroserror-test \
|
||||||
|
strqtok-test \
|
||||||
|
uname-test
|
||||||
|
|
||||||
|
|
||||||
|
# omitted: seek clock clock-test mouse-test ser-test
|
||||||
|
EXELIST_c16 = \
|
||||||
|
minimal \
|
||||||
|
arg-test \
|
||||||
|
conio \
|
||||||
|
cpeek-test \
|
||||||
|
cprintf \
|
||||||
|
cursor \
|
||||||
|
deb \
|
||||||
|
dir-test \
|
||||||
|
div-test \
|
||||||
|
em-test \
|
||||||
|
exec-test1 \
|
||||||
|
exec-test2 \
|
||||||
|
fileio-test \
|
||||||
|
ft \
|
||||||
|
getopt-test \
|
||||||
|
heaptest \
|
||||||
|
joy-test \
|
||||||
|
moddiv-test \
|
||||||
|
mul-test \
|
||||||
|
posixio-test \
|
||||||
|
rename-test \
|
||||||
|
scanf-test \
|
||||||
|
strdup-test \
|
||||||
|
strnlen \
|
||||||
|
stroserror-test \
|
||||||
|
strqtok-test \
|
||||||
|
uname-test
|
||||||
|
|
||||||
|
# omitted: seek ser-test
|
||||||
|
EXELIST_cbm510 = \
|
||||||
|
minimal \
|
||||||
|
arg-test \
|
||||||
|
clock \
|
||||||
|
clock-test \
|
||||||
|
conio \
|
||||||
|
cpeek-test \
|
||||||
|
cprintf \
|
||||||
|
cursor \
|
||||||
|
deb \
|
||||||
|
dir-test \
|
||||||
|
div-test \
|
||||||
|
em-test \
|
||||||
|
exec-test1 \
|
||||||
|
exec-test2 \
|
||||||
|
fileio-test \
|
||||||
|
ft \
|
||||||
|
getopt-test \
|
||||||
|
heaptest \
|
||||||
|
joy-test \
|
||||||
|
moddiv-test \
|
||||||
|
mouse-test \
|
||||||
|
mul-test \
|
||||||
|
posixio-test \
|
||||||
|
rename-test \
|
||||||
|
scanf-test \
|
||||||
|
strdup-test \
|
||||||
|
strnlen \
|
||||||
|
stroserror-test \
|
||||||
|
strqtok-test \
|
||||||
|
uname-test
|
||||||
|
|
||||||
|
# omitted: joy-test mouse-test seek
|
||||||
|
EXELIST_cbm610 = \
|
||||||
|
minimal \
|
||||||
|
arg-test \
|
||||||
|
clock \
|
||||||
|
clock-test \
|
||||||
|
conio \
|
||||||
|
cpeek-test \
|
||||||
|
cprintf \
|
||||||
|
cursor \
|
||||||
|
deb \
|
||||||
|
dir-test \
|
||||||
|
div-test \
|
||||||
|
em-test \
|
||||||
|
exec-test1 \
|
||||||
|
exec-test2 \
|
||||||
|
fileio-test \
|
||||||
|
ft \
|
||||||
|
getopt-test \
|
||||||
|
heaptest \
|
||||||
|
moddiv-test \
|
||||||
|
mul-test \
|
||||||
|
posixio-test \
|
||||||
|
rename-test \
|
||||||
|
scanf-test \
|
||||||
|
ser-test \
|
||||||
|
strdup-test \
|
||||||
|
strnlen \
|
||||||
|
stroserror-test \
|
||||||
|
strqtok-test \
|
||||||
|
uname-test
|
||||||
|
|
||||||
|
# omitted: clock-test em-test mouse-test seek ser-test
|
||||||
|
EXELIST_pet = \
|
||||||
|
minimal \
|
||||||
|
arg-test \
|
||||||
|
clock \
|
||||||
|
conio \
|
||||||
|
cpeek-test \
|
||||||
|
cprintf \
|
||||||
|
cursor \
|
||||||
|
deb \
|
||||||
|
dir-test \
|
||||||
|
div-test \
|
||||||
|
exec-test1 \
|
||||||
|
exec-test2 \
|
||||||
|
fileio-test \
|
||||||
|
ft \
|
||||||
|
getopt-test \
|
||||||
|
heaptest \
|
||||||
|
joy-test \
|
||||||
|
moddiv-test \
|
||||||
|
mul-test \
|
||||||
|
posixio-test \
|
||||||
|
rename-test \
|
||||||
|
scanf-test \
|
||||||
|
strdup-test \
|
||||||
|
strnlen \
|
||||||
|
stroserror-test \
|
||||||
|
strqtok-test \
|
||||||
|
uname-test
|
||||||
|
|
||||||
|
# omitted: clock-test em-test mouse-test seek
|
||||||
|
EXELIST_plus4 = \
|
||||||
|
minimal \
|
||||||
|
arg-test \
|
||||||
|
clock \
|
||||||
|
conio \
|
||||||
|
cpeek-test \
|
||||||
|
cprintf \
|
||||||
|
cursor \
|
||||||
|
deb \
|
||||||
|
dir-test \
|
||||||
|
div-test \
|
||||||
|
exec-test1 \
|
||||||
|
exec-test2 \
|
||||||
|
fileio-test \
|
||||||
|
ft \
|
||||||
|
getopt-test \
|
||||||
|
heaptest \
|
||||||
|
joy-test \
|
||||||
|
moddiv-test \
|
||||||
|
mul-test \
|
||||||
|
posixio-test \
|
||||||
|
rename-test \
|
||||||
|
scanf-test \
|
||||||
|
ser-test \
|
||||||
|
strdup-test \
|
||||||
|
strnlen \
|
||||||
stroserror-test \
|
stroserror-test \
|
||||||
strqtok-test \
|
strqtok-test \
|
||||||
tinyshell \
|
|
||||||
uname-test
|
uname-test
|
||||||
|
|
||||||
# omitted: seek clock-test mouse-test ser-test
|
# omitted: seek clock-test mouse-test ser-test
|
||||||
EXELIST_vic20 = \
|
EXELIST_vic20 = \
|
||||||
|
minimal \
|
||||||
arg-test \
|
arg-test \
|
||||||
clock \
|
clock \
|
||||||
conio \
|
conio \
|
||||||
@@ -190,13 +430,14 @@ EXELIST_vic20 = \
|
|||||||
rename-test \
|
rename-test \
|
||||||
scanf-test \
|
scanf-test \
|
||||||
strdup-test \
|
strdup-test \
|
||||||
|
strnlen \
|
||||||
stroserror-test \
|
stroserror-test \
|
||||||
strqtok-test \
|
strqtok-test \
|
||||||
tinyshell \
|
|
||||||
uname-test
|
uname-test
|
||||||
|
|
||||||
# omitted: cpeek-test, clock
|
# omitted: cpeek-test, clock
|
||||||
EXELIST_apple2 = \
|
EXELIST_apple2 = \
|
||||||
|
minimal \
|
||||||
arg-test \
|
arg-test \
|
||||||
clock-test \
|
clock-test \
|
||||||
conio \
|
conio \
|
||||||
@@ -222,15 +463,16 @@ EXELIST_apple2 = \
|
|||||||
seek \
|
seek \
|
||||||
ser-test \
|
ser-test \
|
||||||
strdup-test \
|
strdup-test \
|
||||||
|
strnlen \
|
||||||
stroserror-test \
|
stroserror-test \
|
||||||
strqtok-test \
|
strqtok-test \
|
||||||
tinyshell \
|
|
||||||
uname-test
|
uname-test
|
||||||
|
|
||||||
EXELIST_apple2enh = $(EXELIST_apple2)
|
EXELIST_apple2enh = $(EXELIST_apple2)
|
||||||
|
|
||||||
# omitted: cpeek-test
|
# omitted: cpeek-test
|
||||||
EXELIST_atari = \
|
EXELIST_atari = \
|
||||||
|
minimal \
|
||||||
arg-test \
|
arg-test \
|
||||||
clock-test \
|
clock-test \
|
||||||
clock \
|
clock \
|
||||||
@@ -257,18 +499,196 @@ EXELIST_atari = \
|
|||||||
seek \
|
seek \
|
||||||
ser-test \
|
ser-test \
|
||||||
strdup-test \
|
strdup-test \
|
||||||
|
strnlen \
|
||||||
stroserror-test \
|
stroserror-test \
|
||||||
strqtok-test \
|
strqtok-test \
|
||||||
tinyshell \
|
|
||||||
uname-test
|
uname-test
|
||||||
|
|
||||||
EXELIST_atarixl = $(EXELIST_atari)
|
EXELIST_atarixl = $(EXELIST_atari)
|
||||||
|
|
||||||
# none of the testcode can work on the 2600
|
# omitted: clock-test cpeek-test deb dir-test em-test exec-test1 exec-test2
|
||||||
# EXELIST_atari2600 =
|
# joy-test mouse-test rename-test seek ser-test stroserror-test
|
||||||
|
EXELIST_telestrat = \
|
||||||
|
minimal \
|
||||||
|
arg-test \
|
||||||
|
clock \
|
||||||
|
conio \
|
||||||
|
cprintf \
|
||||||
|
cursor \
|
||||||
|
div-test \
|
||||||
|
fileio-test \
|
||||||
|
ft \
|
||||||
|
getopt-test \
|
||||||
|
heaptest \
|
||||||
|
moddiv-test \
|
||||||
|
mul-test \
|
||||||
|
posixio-test \
|
||||||
|
scanf-test \
|
||||||
|
strdup-test \
|
||||||
|
strnlen \
|
||||||
|
strqtok-test \
|
||||||
|
uname-test
|
||||||
|
|
||||||
# none of the testcode can work on supervision
|
# omitted: arg-test clock-test clock cpeek-test conio cprintf cursor deb dir-test
|
||||||
# EXELIST_supervision =
|
# em-test exec-test1 exec-test2 fileio-test ft getopt-test heaptest joy-test
|
||||||
|
# mouse-test mul-test posixio-test rename-test scanf-test seek ser-test strdup-test
|
||||||
|
# stroserror-test uname-test
|
||||||
|
EXELIST_sym1 = \
|
||||||
|
minimal \
|
||||||
|
div-test \
|
||||||
|
moddiv-test \
|
||||||
|
strnlen \
|
||||||
|
strqtok-test
|
||||||
|
|
||||||
|
# omitted: clock-test cpeek-test conio deb dir-test em-test exec-test1 exec-test2
|
||||||
|
# fileio-test ft mouse-test posixio-test rename-test seek ser-test
|
||||||
|
EXELIST_atmos = \
|
||||||
|
minimal \
|
||||||
|
arg-test \
|
||||||
|
clock \
|
||||||
|
cprintf \
|
||||||
|
cursor \
|
||||||
|
div-test \
|
||||||
|
getopt-test \
|
||||||
|
heaptest \
|
||||||
|
joy-test \
|
||||||
|
moddiv-test \
|
||||||
|
mul-test \
|
||||||
|
scanf-test \
|
||||||
|
strdup-test \
|
||||||
|
strnlen \
|
||||||
|
stroserror-test \
|
||||||
|
strqtok-test \
|
||||||
|
uname-test
|
||||||
|
|
||||||
|
# omitted: arg-test clock-test clock cpeek-test conio cprintf deb dir-test div-test
|
||||||
|
# em-test exec-test1 exec-test2 fileio-test ft getopt-test heaptest joy-test moddiv-test
|
||||||
|
# mouse-test mul-test posixio-test rename-test scanf-test seek ser-test strdup-test
|
||||||
|
# strnlen stroserror-test strqtok-test uname-test
|
||||||
|
EXELIST_creativision = \
|
||||||
|
minimal \
|
||||||
|
cursor
|
||||||
|
|
||||||
|
# omitted: cpeek-test seek ser-test
|
||||||
|
EXELIST_cx16 = \
|
||||||
|
minimal \
|
||||||
|
arg-test \
|
||||||
|
clock-test \
|
||||||
|
clock \
|
||||||
|
conio \
|
||||||
|
cprintf \
|
||||||
|
cursor \
|
||||||
|
deb \
|
||||||
|
dir-test \
|
||||||
|
div-test \
|
||||||
|
em-test \
|
||||||
|
exec-test1 \
|
||||||
|
exec-test2 \
|
||||||
|
fileio-test \
|
||||||
|
ft \
|
||||||
|
getopt-test \
|
||||||
|
heaptest \
|
||||||
|
joy-test \
|
||||||
|
moddiv-test \
|
||||||
|
mouse-test \
|
||||||
|
mul-test \
|
||||||
|
posixio-test \
|
||||||
|
rename-test \
|
||||||
|
scanf-test \
|
||||||
|
strdup-test \
|
||||||
|
strnlen \
|
||||||
|
stroserror-test \
|
||||||
|
strqtok-test \
|
||||||
|
uname-test
|
||||||
|
|
||||||
|
# omitted: arg-test clock-test clock cpeek-test cprintf cursor deb dir-test div-test
|
||||||
|
# em-test exec-test1 exec-test2 fileio-test ft getopt-test heaptest joy-test moddiv-test
|
||||||
|
# mouse-test mul-test posixio-test rename-test scanf-test seek ser-test strdup-test
|
||||||
|
# strnlen stroserror-test strqtok-test uname-test
|
||||||
|
EXELIST_nes = \
|
||||||
|
minimal \
|
||||||
|
conio
|
||||||
|
|
||||||
|
# omitted: arg-test clock-test clock cpeek-test cprintf cursor deb dir-test div-test
|
||||||
|
# em-test exec-test1 exec-test2 fileio-test ft getopt-test heaptest joy-test moddiv-test
|
||||||
|
# mouse-test mul-test posixio-test rename-test scanf-test seek ser-test strdup-test
|
||||||
|
# strnlen stroserror-test strqtok-test uname-test
|
||||||
|
EXELIST_pce = \
|
||||||
|
minimal \
|
||||||
|
conio
|
||||||
|
|
||||||
|
# omitted: arg-test clock-test clock cpeek-test conio cprintf deb dir-test div-test
|
||||||
|
# em-test exec-test1 exec-test2 fileio-test ft getopt-test heaptest joy-test moddiv-test
|
||||||
|
# mouse-test posixio-test rename-test scanf-test seek ser-test strdup-test strnlen
|
||||||
|
# stroserror-test strqtok-test uname-test
|
||||||
|
EXELIST_osic1p = \
|
||||||
|
minimal \
|
||||||
|
cursor \
|
||||||
|
mul-test
|
||||||
|
|
||||||
|
# omitted: arg-test clock-test clock cpeek-test conio cprintf deb dir-test div-test
|
||||||
|
# em-test exec-test1 exec-test2 fileio-test ft getopt-test heaptest joy-test moddiv-test
|
||||||
|
# mouse-test posixio-test rename-test scanf-test seek ser-test strdup-test strnlen
|
||||||
|
# stroserror-test strqtok-test uname-test
|
||||||
|
EXELIST_geos-apple = \
|
||||||
|
minimal \
|
||||||
|
cursor \
|
||||||
|
mul-test
|
||||||
|
|
||||||
|
# omitted: arg-test clock-test clock cpeek-test conio cprintf deb dir-test div-test
|
||||||
|
# em-test exec-test1 exec-test2 fileio-test ft getopt-test heaptest joy-test moddiv-test
|
||||||
|
# mouse-test posixio-test rename-test scanf-test seek ser-test strdup-test strnlen
|
||||||
|
# stroserror-test strqtok-test uname-test
|
||||||
|
|
||||||
|
EXELIST_geos-cbm = \
|
||||||
|
minimal \
|
||||||
|
cursor \
|
||||||
|
mul-test
|
||||||
|
|
||||||
|
# omitted: clock clock-test conio cpeek-test cprintf cursor deb dir-test em-test
|
||||||
|
# exec-test1 exec-test2 ft heaptest joy-test mouse-test mul-test rename-test seek
|
||||||
|
# ser-test strdup-test stroserror-test uname-test
|
||||||
|
EXELIST_sim6502 = \
|
||||||
|
minimal \
|
||||||
|
arg-test \
|
||||||
|
div-test \
|
||||||
|
fileio-test \
|
||||||
|
getopt-test \
|
||||||
|
moddiv-test \
|
||||||
|
posixio-test \
|
||||||
|
scanf-test \
|
||||||
|
strnlen \
|
||||||
|
strqtok-test
|
||||||
|
|
||||||
|
EXELIST_sim65c02 = $(EXELIST_sim6502)
|
||||||
|
|
||||||
|
|
||||||
|
# omitted: arg-test clock clock-test conio cpeek-test cprintf cursor deb dir-test
|
||||||
|
# div-test em-test exec-test1 exec-test2 fileio-test ft getopt-test heaptest
|
||||||
|
# joy-test moddiv-test mouse-test mul-test posixio-test rename-test scanf-test
|
||||||
|
# ser-test seek strdup-test strnlen stroserror-test strqtok-test tinyshell uname-test
|
||||||
|
EXELIST_atari2600 = \
|
||||||
|
minimal
|
||||||
|
|
||||||
|
EXELIST_atari5200 = \
|
||||||
|
minimal
|
||||||
|
|
||||||
|
EXELIST_gamate = \
|
||||||
|
minimal
|
||||||
|
|
||||||
|
EXELIST_lynx = \
|
||||||
|
minimal
|
||||||
|
|
||||||
|
EXELIST_supervision = \
|
||||||
|
minimal
|
||||||
|
|
||||||
|
# none of the testcode can work on the bbc (no library support)
|
||||||
|
EXELIST_bbc = \
|
||||||
|
notavailable
|
||||||
|
|
||||||
|
# none of the testcode can work on lunix (no library support)
|
||||||
|
EXELIST_lunix = \
|
||||||
|
notavailable
|
||||||
|
|
||||||
# Unlisted targets will try to build everything.
|
# Unlisted targets will try to build everything.
|
||||||
# That lets us learn what they cannot build, and what settings
|
# That lets us learn what they cannot build, and what settings
|
||||||
@@ -277,21 +697,27 @@ ifndef EXELIST_$(SYS)
|
|||||||
EXELIST_$(SYS) := ${patsubst %.c,%,$(wildcard *.c)}
|
EXELIST_$(SYS) := ${patsubst %.c,%,$(wildcard *.c)}
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
define SUBDIR_recipe
|
||||||
|
|
||||||
|
@$(MAKE) -C $(dir) --no-print-directory $@
|
||||||
|
|
||||||
|
endef # SUBDIR_recipe
|
||||||
|
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
# Rules to make the binaries and the disk
|
# Rules to make the binaries and the disk
|
||||||
|
|
||||||
testcode: $(EXELIST_$(SYS))
|
testcode: $(EXELIST_$(SYS))
|
||||||
|
$(foreach dir,$(DIRLIST),$(SUBDIR_recipe))
|
||||||
|
|
||||||
|
# empty target used to skip systems that will not work with any program in this dir
|
||||||
|
notavailable:
|
||||||
|
ifeq ($(MAKELEVEL),0)
|
||||||
|
@echo "info: generic targettest programs not available for" $(SYS)
|
||||||
|
endif
|
||||||
|
|
||||||
disk: $(DISK_$(SYS))
|
disk: $(DISK_$(SYS))
|
||||||
|
|
||||||
all: testcode
|
all:
|
||||||
make -C accelerator
|
|
||||||
make -C apple2
|
|
||||||
make -C atari
|
|
||||||
make -C atari5200
|
|
||||||
make -C cbm SYS=$(SYS)
|
|
||||||
make -C gamate
|
|
||||||
make -C pce
|
|
||||||
|
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
# some programs link against getsp.o
|
# some programs link against getsp.o
|
||||||
@@ -302,9 +728,6 @@ mouse-test: mouse-test.o getsp.o
|
|||||||
ifneq ($(SYS),vic20)
|
ifneq ($(SYS),vic20)
|
||||||
ft: ft.o getsp.o
|
ft: ft.o getsp.o
|
||||||
$(LD) $(LDFLAGS) -t $(SYS) -o $@ $^ $(SYS).lib
|
$(LD) $(LDFLAGS) -t $(SYS) -o $@ $^ $(SYS).lib
|
||||||
|
|
||||||
tinyshell: tinyshell.o getsp.o
|
|
||||||
$(LD) $(LDFLAGS) -t $(SYS) -o $@ $^ $(SYS).lib
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# some programs need more memory on the vic20
|
# some programs need more memory on the vic20
|
||||||
@@ -312,9 +735,6 @@ endif
|
|||||||
ifeq ($(SYS),vic20)
|
ifeq ($(SYS),vic20)
|
||||||
ft: ft.o getsp.o
|
ft: ft.o getsp.o
|
||||||
$(LD) $(LDFLAGS) -o $@ -C vic20-32k.cfg -m $@.map $^ $(SYS).lib
|
$(LD) $(LDFLAGS) -o $@ -C vic20-32k.cfg -m $@.map $^ $(SYS).lib
|
||||||
|
|
||||||
tinyshell: tinyshell.o getsp.o
|
|
||||||
$(LD) $(LDFLAGS) -o $@ -C vic20-32k.cfg -m $@.map $^ $(SYS).lib
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
@@ -392,10 +812,4 @@ mostlyclean:
|
|||||||
|
|
||||||
clean: mostlyclean
|
clean: mostlyclean
|
||||||
@$(DEL) $(EXELIST_$(SYS)) $(DISK_$(SYS)) 2>$(NULLDEV)
|
@$(DEL) $(EXELIST_$(SYS)) $(DISK_$(SYS)) 2>$(NULLDEV)
|
||||||
make -C accelerator clean
|
$(foreach dir,$(DIRLIST),$(SUBDIR_recipe))
|
||||||
make -C apple2 clean
|
|
||||||
make -C atari clean
|
|
||||||
make -C atari5200 clean
|
|
||||||
make -C cbm SYS=$(SYS) clean
|
|
||||||
make -C gamate clean
|
|
||||||
make -C pce clean
|
|
||||||
|
|||||||
@@ -20,15 +20,38 @@ ifdef CC65_HOME
|
|||||||
CL = $(CC65_HOME)/bin/cl65
|
CL = $(CC65_HOME)/bin/cl65
|
||||||
LD = $(CC65_HOME)/bin/ld65
|
LD = $(CC65_HOME)/bin/ld65
|
||||||
else
|
else
|
||||||
AS := $(if $(wildcard ../../../bin/ca65*),../../../bin/ca65,ca65)
|
AS := $(if $(wildcard ../../bin/ca65*),../../bin/ca65,ca65)
|
||||||
CC := $(if $(wildcard ../../../bin/cc65*),../../../bin/cc65,cc65)
|
CC := $(if $(wildcard ../../bin/cc65*),../../bin/cc65,cc65)
|
||||||
CL := $(if $(wildcard ../../../bin/cl65*),../../../bin/cl65,cl65)
|
CL := $(if $(wildcard ../../bin/cl65*),../../bin/cl65,cl65)
|
||||||
LD := $(if $(wildcard ../../../bin/ld65*),../../../bin/ld65,ld65)
|
LD := $(if $(wildcard ../../bin/ld65*),../../bin/ld65,ld65)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all: c64-scpu-test.prg c128-scpu-test.prg c64dtv-test.prg \
|
EXELIST_c64 = \
|
||||||
c64-c128-test.prg c128-test.prg chameleon-test.prg \
|
c64-scpu-test.prg \
|
||||||
c65-test.prg turbomaster-test.prg
|
c128-scpu-test.prg \
|
||||||
|
c64dtv-test.prg \
|
||||||
|
c64-c128-test.prg \
|
||||||
|
chameleon-test.prg \
|
||||||
|
c65-test.prg \
|
||||||
|
turbomaster-test.prg
|
||||||
|
|
||||||
|
EXELIST_c128 = \
|
||||||
|
c128-test.prg
|
||||||
|
|
||||||
|
ifneq ($(EXELIST_$(SYS)),)
|
||||||
|
testcode: $(EXELIST_$(SYS))
|
||||||
|
else
|
||||||
|
testcode: notavailable
|
||||||
|
endif
|
||||||
|
|
||||||
|
# empty target used to skip systems that will not work with any program in this dir
|
||||||
|
notavailable:
|
||||||
|
ifeq ($(MAKELEVEL),0)
|
||||||
|
@echo "info: accelerator tests not available for" $(SYS)
|
||||||
|
else
|
||||||
|
# suppress the "nothing to be done for 'testcode' message
|
||||||
|
@echo > $(NULLDEV)
|
||||||
|
endif
|
||||||
|
|
||||||
c64-scpu-test.prg: c64-c128-scpu-test.c
|
c64-scpu-test.prg: c64-c128-scpu-test.c
|
||||||
$(CL) -t c64 c64-c128-scpu-test.c -o c64-scpu-test.prg
|
$(CL) -t c64 c64-c128-scpu-test.c -o c64-scpu-test.prg
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
|
|
||||||
|
# Run 'make SYS=<target>'; or, set a SYS env.
|
||||||
|
# var. to build for another target system.
|
||||||
|
SYS ?= atari
|
||||||
|
|
||||||
# Just the usual way to find out if we're
|
# Just the usual way to find out if we're
|
||||||
# using cmd.exe to execute make rules.
|
# using cmd.exe to execute make rules.
|
||||||
ifneq ($(shell echo),)
|
ifneq ($(shell echo),)
|
||||||
@@ -21,14 +25,36 @@ ifdef CC65_HOME
|
|||||||
CL = $(CC65_HOME)/bin/cl65
|
CL = $(CC65_HOME)/bin/cl65
|
||||||
LD = $(CC65_HOME)/bin/ld65
|
LD = $(CC65_HOME)/bin/ld65
|
||||||
else
|
else
|
||||||
AS := $(if $(wildcard ../../../bin/ca65*),../../../bin/ca65,ca65)
|
AS := $(if $(wildcard ../../bin/ca65*),../../bin/ca65,ca65)
|
||||||
CC := $(if $(wildcard ../../../bin/cc65*),../../../bin/cc65,cc65)
|
CC := $(if $(wildcard ../../bin/cc65*),../../bin/cc65,cc65)
|
||||||
CL := $(if $(wildcard ../../../bin/cl65*),../../../bin/cl65,cl65)
|
CL := $(if $(wildcard ../../bin/cl65*),../../bin/cl65,cl65)
|
||||||
LD := $(if $(wildcard ../../../bin/ld65*),../../../bin/ld65,ld65)
|
LD := $(if $(wildcard ../../bin/ld65*),../../bin/ld65,ld65)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all: charmapping.xex defdev.xex displaylist.xex mem.xex multi.xex ostype.xex \
|
EXELIST_atari = \
|
||||||
scrcode.com sys.xex
|
charmapping.xex \
|
||||||
|
defdev.xex \
|
||||||
|
displaylist.xex \
|
||||||
|
mem.xex \
|
||||||
|
multi.xex \
|
||||||
|
ostype.xex \
|
||||||
|
scrcode.com \
|
||||||
|
sys.xex
|
||||||
|
|
||||||
|
ifneq ($(EXELIST_$(SYS)),)
|
||||||
|
testcode: $(EXELIST_$(SYS))
|
||||||
|
else
|
||||||
|
testcode: 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 tests not available for" $(SYS)
|
||||||
|
else
|
||||||
|
# suppress the "nothing to be done for 'testcode' message
|
||||||
|
@echo > $(NULLDEV)
|
||||||
|
endif
|
||||||
|
|
||||||
charmapping.xex: charmapping.c
|
charmapping.xex: charmapping.c
|
||||||
$(CL) -t atari -o charmapping.xex charmapping.c
|
$(CL) -t atari -o charmapping.xex charmapping.c
|
||||||
|
|||||||
@@ -1,36 +0,0 @@
|
|||||||
|
|
||||||
# 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
|
|
||||||
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)
|
|
||||||
endif
|
|
||||||
|
|
||||||
all: hello
|
|
||||||
|
|
||||||
hello: hello.c
|
|
||||||
$(CL) -t atari5200 -o hello hello.c
|
|
||||||
|
|
||||||
clean:
|
|
||||||
@$(DEL) hello 2>$(NULLDEV)
|
|
||||||
@@ -24,19 +24,47 @@ ifdef CC65_HOME
|
|||||||
CL = $(CC65_HOME)/bin/cl65
|
CL = $(CC65_HOME)/bin/cl65
|
||||||
LD = $(CC65_HOME)/bin/ld65
|
LD = $(CC65_HOME)/bin/ld65
|
||||||
else
|
else
|
||||||
AS := $(if $(wildcard ../../../bin/ca65*),../../../bin/ca65,ca65)
|
AS := $(if $(wildcard ../../bin/ca65*),../../bin/ca65,ca65)
|
||||||
CC := $(if $(wildcard ../../../bin/cc65*),../../../bin/cc65,cc65)
|
CC := $(if $(wildcard ../../bin/cc65*),../../bin/cc65,cc65)
|
||||||
CL := $(if $(wildcard ../../../bin/cl65*),../../../bin/cl65,cl65)
|
CL := $(if $(wildcard ../../bin/cl65*),../../bin/cl65,cl65)
|
||||||
LD := $(if $(wildcard ../../../bin/ld65*),../../../bin/ld65,ld65)
|
LD := $(if $(wildcard ../../bin/ld65*),../../bin/ld65,ld65)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all: petscii.prg cbmdir-test.prg
|
EXELIST_c64 = \
|
||||||
|
petscii.prg \
|
||||||
|
cbmdir-test.prg
|
||||||
|
|
||||||
|
EXELIST_vic20 = \
|
||||||
|
cbmdir-test.prg
|
||||||
|
|
||||||
|
ifneq ($(EXELIST_$(SYS)),)
|
||||||
|
testcode: $(EXELIST_$(SYS))
|
||||||
|
else
|
||||||
|
testcode: notavailable
|
||||||
|
endif
|
||||||
|
|
||||||
|
# empty target used to skip systems that will not work with any program in this dir
|
||||||
|
notavailable:
|
||||||
|
ifeq ($(MAKELEVEL),0)
|
||||||
|
@echo "info: cbm tests not available for" $(SYS)
|
||||||
|
else
|
||||||
|
# suppress the "nothing to be done for 'testcode' message
|
||||||
|
@echo > $(NULLDEV)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(SYS),c64)
|
||||||
petscii.prg: petscii.c
|
petscii.prg: petscii.c
|
||||||
$(CL) -t $(SYS) -O -o petscii.prg petscii.c
|
$(CL) -t $(SYS) -O -o petscii.prg petscii.c
|
||||||
|
else
|
||||||
|
petscii.prg:
|
||||||
|
endif
|
||||||
|
|
||||||
cbmdir-test.prg: cbmdir-test.c
|
cbmdir-test.prg: cbmdir-test.c
|
||||||
|
ifeq ($(SYS),vic20)
|
||||||
|
$(CL) -t $(SYS) -C vic20-32k.cfg -Oris -o $@ $<
|
||||||
|
else
|
||||||
$(CL) -t $(SYS) -Oris -o $@ $<
|
$(CL) -t $(SYS) -Oris -o $@ $<
|
||||||
|
endif
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@$(DEL) petscii.prg cbmdir-test.prg 2>$(NULLDEV)
|
@$(DEL) *.lbl petscii.prg cbmdir-test.prg 2>$(NULLDEV)
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
|
|
||||||
|
# Run 'make SYS=<target>'; or, set a SYS env.
|
||||||
|
# var. to build for another target system.
|
||||||
|
SYS ?= gamate
|
||||||
|
|
||||||
# Just the usual way to find out if we're
|
# Just the usual way to find out if we're
|
||||||
# using cmd.exe to execute make rules.
|
# using cmd.exe to execute make rules.
|
||||||
ifneq ($(shell echo),)
|
ifneq ($(shell echo),)
|
||||||
@@ -21,13 +25,29 @@ ifdef CC65_HOME
|
|||||||
CL = $(CC65_HOME)/bin/cl65
|
CL = $(CC65_HOME)/bin/cl65
|
||||||
LD = $(CC65_HOME)/bin/ld65
|
LD = $(CC65_HOME)/bin/ld65
|
||||||
else
|
else
|
||||||
AS := $(if $(wildcard ../../../bin/ca65*),../../../bin/ca65,ca65)
|
AS := $(if $(wildcard ../../bin/ca65*),../../bin/ca65,ca65)
|
||||||
CC := $(if $(wildcard ../../../bin/cc65*),../../../bin/cc65,cc65)
|
CC := $(if $(wildcard ../../bin/cc65*),../../bin/cc65,cc65)
|
||||||
CL := $(if $(wildcard ../../../bin/cl65*),../../../bin/cl65,cl65)
|
CL := $(if $(wildcard ../../bin/cl65*),../../bin/cl65,cl65)
|
||||||
LD := $(if $(wildcard ../../../bin/ld65*),../../../bin/ld65,ld65)
|
LD := $(if $(wildcard ../../bin/ld65*),../../bin/ld65,ld65)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all: audiotest.bin lcdtest.bin ctest.bin
|
EXELIST_gamate = \
|
||||||
|
audiotest.bin lcdtest.bin ctest.bin
|
||||||
|
|
||||||
|
ifneq ($(EXELIST_$(SYS)),)
|
||||||
|
testcode: $(EXELIST_$(SYS))
|
||||||
|
else
|
||||||
|
testcode: notavailable
|
||||||
|
endif
|
||||||
|
|
||||||
|
# empty target used to skip systems that will not work with any program in this dir
|
||||||
|
notavailable:
|
||||||
|
ifeq ($(MAKELEVEL),0)
|
||||||
|
@echo "info: gamate tests not available for" $(SYS)
|
||||||
|
else
|
||||||
|
# suppress the "nothing to be done for 'testcode' message
|
||||||
|
@echo > $(NULLDEV)
|
||||||
|
endif
|
||||||
|
|
||||||
audiotest.bin: audiotest.s
|
audiotest.bin: audiotest.s
|
||||||
$(CL) -l audiotest.lst -t gamate -o audiotest.bin audiotest.s
|
$(CL) -l audiotest.lst -t gamate -o audiotest.bin audiotest.s
|
||||||
@@ -35,9 +55,6 @@ lcdtest.bin: lcdtest.s
|
|||||||
$(CL) -l lcdtest.lst -t gamate -o lcdtest.bin lcdtest.s
|
$(CL) -l lcdtest.lst -t gamate -o lcdtest.bin lcdtest.s
|
||||||
ctest.bin: ctest.c
|
ctest.bin: ctest.c
|
||||||
$(CL) -l ctest.lst -t gamate -o ctest.bin ctest.c
|
$(CL) -l ctest.lst -t gamate -o ctest.bin ctest.c
|
||||||
nachtm.bin: nachtm.c
|
|
||||||
$(CL) -Os -l nachtm.lst -t gamate -o nachtm.bin nachtm.c
|
|
||||||
gamate-fixcart nachtm.bin
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@$(DEL) lcdtest.o audiotest.o ctest.o 2>$(NULLDEV)
|
@$(DEL) lcdtest.o audiotest.o ctest.o 2>$(NULLDEV)
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ unsigned char y = 0;
|
|||||||
unsigned char x = 0;
|
unsigned char x = 0;
|
||||||
unsigned short n;
|
unsigned short n;
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
void main(void)
|
||||||
{
|
{
|
||||||
clrscr();
|
clrscr();
|
||||||
gotoxy(0,0);cputs("Gamate C-Test");
|
gotoxy(0,0);cputs("Gamate C-Test");
|
||||||
@@ -47,6 +47,4 @@ int main(int argc, char *argv[])
|
|||||||
(*((unsigned char*)LCD_YPOS)) = y;
|
(*((unsigned char*)LCD_YPOS)) = y;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ static unsigned char* V[256];
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static char* Alloc (void)
|
static unsigned char* Alloc (void)
|
||||||
/* Allocate a random sized chunk of memory */
|
/* Allocate a random sized chunk of memory */
|
||||||
{
|
{
|
||||||
/* Determine the size */
|
/* Determine the size */
|
||||||
@@ -234,6 +234,3 @@ int main (void)
|
|||||||
/* Done */
|
/* Done */
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
13
targettest/minimal.c
Normal file
13
targettest/minimal.c
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
|
||||||
|
/* this is a minimal / empty c program, any supported target that has some
|
||||||
|
* sort of C support should be able to link this. Failure indicates a problem
|
||||||
|
* with the crt0 or the linker config of the respective target */
|
||||||
|
|
||||||
|
char bss_variable;
|
||||||
|
char data_variable = 42;
|
||||||
|
const char rodata_variable = 23;
|
||||||
|
|
||||||
|
void main(void)
|
||||||
|
{
|
||||||
|
/* nothing here */
|
||||||
|
}
|
||||||
@@ -1,4 +1,8 @@
|
|||||||
|
|
||||||
|
# Run 'make SYS=<target>'; or, set a SYS env.
|
||||||
|
# var. to build for another target system.
|
||||||
|
SYS ?= pce
|
||||||
|
|
||||||
# Just the usual way to find out if we're
|
# Just the usual way to find out if we're
|
||||||
# using cmd.exe to execute make rules.
|
# using cmd.exe to execute make rules.
|
||||||
ifneq ($(shell echo),)
|
ifneq ($(shell echo),)
|
||||||
@@ -21,10 +25,10 @@ ifdef CC65_HOME
|
|||||||
CL = $(CC65_HOME)/bin/cl65
|
CL = $(CC65_HOME)/bin/cl65
|
||||||
LD = $(CC65_HOME)/bin/ld65
|
LD = $(CC65_HOME)/bin/ld65
|
||||||
else
|
else
|
||||||
AS := $(if $(wildcard ../../../bin/ca65*),../../../bin/ca65,ca65)
|
AS := $(if $(wildcard ../../bin/ca65*),../../bin/ca65,ca65)
|
||||||
CC := $(if $(wildcard ../../../bin/cc65*),../../../bin/cc65,cc65)
|
CC := $(if $(wildcard ../../bin/cc65*),../../bin/cc65,cc65)
|
||||||
CL := $(if $(wildcard ../../../bin/cl65*),../../../bin/cl65,cl65)
|
CL := $(if $(wildcard ../../bin/cl65*),../../bin/cl65,cl65)
|
||||||
LD := $(if $(wildcard ../../../bin/ld65*),../../../bin/ld65,ld65)
|
LD := $(if $(wildcard ../../bin/ld65*),../../bin/ld65,ld65)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
.PHONY: all clean test
|
.PHONY: all clean test
|
||||||
@@ -42,7 +46,23 @@ else
|
|||||||
COUNT := 1
|
COUNT := 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all: conio.bin
|
EXELIST_pce = \
|
||||||
|
conio.bin
|
||||||
|
|
||||||
|
ifneq ($(EXELIST_$(SYS)),)
|
||||||
|
testcode: $(EXELIST_$(SYS))
|
||||||
|
else
|
||||||
|
testcode: notavailable
|
||||||
|
endif
|
||||||
|
|
||||||
|
# empty target used to skip systems that will not work with any program in this dir
|
||||||
|
notavailable:
|
||||||
|
ifeq ($(MAKELEVEL),0)
|
||||||
|
@echo "info: pce tests not available for" $(SYS)
|
||||||
|
else
|
||||||
|
# suppress the "nothing to be done for 'testcode' message
|
||||||
|
@echo > $(NULLDEV)
|
||||||
|
endif
|
||||||
|
|
||||||
%.bin: %.c
|
%.bin: %.c
|
||||||
$(CL) -t pce $< -Wl -D__CARTSIZE__=${CARTSIZE} -m $*.map -o $@
|
$(CL) -t pce $< -Wl -D__CARTSIZE__=${CARTSIZE} -m $*.map -o $@
|
||||||
|
|||||||
9
targettest/readme.txt
Normal file
9
targettest/readme.txt
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
This directory contains test programs for the cc65 compiler.
|
||||||
|
|
||||||
|
The programs contained here are
|
||||||
|
- NOT to be referenced in the documentation
|
||||||
|
- compiled (but NOT run) by the CI test (this is their main purpose)
|
||||||
|
- some programs can be used interactively to check certain library features
|
||||||
|
|
||||||
|
Sample programs ment for endusers should be placed in the samples directory.
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
#include <_heap.h>
|
#include <_heap.h>
|
||||||
|
|
||||||
static unsigned char* V[256];
|
static char* V[256];
|
||||||
|
|
||||||
static void ShowInfo (void)
|
static void ShowInfo (void)
|
||||||
/* Show heap info */
|
/* Show heap info */
|
||||||
|
|||||||
32
targettest/strnlen.c
Normal file
32
targettest/strnlen.c
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
const char * str = "0123456789";
|
||||||
|
|
||||||
|
void
|
||||||
|
check (size_t result, size_t expected)
|
||||||
|
{
|
||||||
|
if (result != expected) {
|
||||||
|
printf ("Expected strnlen() to return %u, got %u.\n",
|
||||||
|
expected, result);
|
||||||
|
exit (EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main (void)
|
||||||
|
{
|
||||||
|
size_t maxlen = strlen (str);
|
||||||
|
size_t result;
|
||||||
|
size_t expected;
|
||||||
|
|
||||||
|
for (expected = 0; expected < maxlen; expected++)
|
||||||
|
check (strnlen (str, expected), expected);
|
||||||
|
|
||||||
|
check (strnlen (str, maxlen << 1), maxlen);
|
||||||
|
|
||||||
|
printf ("strnlen() OK.\n");
|
||||||
|
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
22
util/Makefile
Normal file
22
util/Makefile
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
|
||||||
|
.PHONY: atari gamate zlib
|
||||||
|
|
||||||
|
util: atari gamate zlib
|
||||||
|
|
||||||
|
all: util
|
||||||
|
|
||||||
|
atari:
|
||||||
|
@$(MAKE) -C atari --no-print-directory $@
|
||||||
|
gamate:
|
||||||
|
@$(MAKE) -C gamate --no-print-directory $@
|
||||||
|
zlib:
|
||||||
|
@$(MAKE) -C zlib --no-print-directory $@
|
||||||
|
|
||||||
|
mostlyclean clean:
|
||||||
|
@$(MAKE) -C atari --no-print-directory $@
|
||||||
|
@$(MAKE) -C gamate --no-print-directory $@
|
||||||
|
@$(MAKE) -C zlib --no-print-directory $@
|
||||||
|
|
||||||
|
install zip:
|
||||||
|
|
||||||
|
|
||||||
12
util/atari/Makefile
Normal file
12
util/atari/Makefile
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
.PHONY: mostlyclean clean
|
||||||
|
|
||||||
|
atari: ataricvt
|
||||||
|
|
||||||
|
ataricvt: ataricvt.c
|
||||||
|
$(CC) $(CFLAGS) -o ataricvt ataricvt.c
|
||||||
|
|
||||||
|
mostlyclean clean:
|
||||||
|
$(RM) ataricvt
|
||||||
|
|
||||||
|
install zip:
|
||||||
12
util/gamate/Makefile
Normal file
12
util/gamate/Makefile
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
.PHONY: mostlyclean clean
|
||||||
|
|
||||||
|
gamate: gamate-fixcart
|
||||||
|
|
||||||
|
gamate-fixcart: gamate-fixcart.c
|
||||||
|
$(CC) $(CFLAGS) -o gamate-fixcart gamate-fixcart.c
|
||||||
|
|
||||||
|
mostlyclean clean:
|
||||||
|
$(RM) gamate-fixcart
|
||||||
|
|
||||||
|
install zip:
|
||||||
17
util/zlib/Makefile
Normal file
17
util/zlib/Makefile
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
|
||||||
|
.PHONY: mostlyclean clean
|
||||||
|
|
||||||
|
zlib: warning
|
||||||
|
#zlib: deflater
|
||||||
|
|
||||||
|
warning:
|
||||||
|
@echo "deflater needs zlib installed, use 'make deflater' to build"
|
||||||
|
|
||||||
|
deflater: deflater.c
|
||||||
|
$(CC) $(CFLAGS) -o deflater deflater.c -lz
|
||||||
|
|
||||||
|
mostlyclean clean:
|
||||||
|
$(RM) deflater
|
||||||
|
|
||||||
|
install zip:
|
||||||
|
|
||||||
Reference in New Issue
Block a user