initial commit
This commit is contained in:
@@ -0,0 +1,335 @@
|
||||
.TH oscar64 1 "June 2026" "Version 1.32" "User Commands"
|
||||
.SH NAME
|
||||
oscar64 \- optimizing C/C++ cross-compiler for 6502 systems
|
||||
|
||||
.SH SYNOPSIS
|
||||
.B oscar64
|
||||
.RB [ \-h ]
|
||||
.RB [ \-v [ 1 | 2 | 3 ]]
|
||||
.RB { \-i= "\fIincludePath\fR}"
|
||||
.RB [ \-ii= "\fIincludePath\fR" ]
|
||||
.RB [ \-o= "\fIoutput.prg\fR" ]
|
||||
.RB [ \-rt= "\fIruntime.c\fR" ]
|
||||
.RB [ \-tf= "\fIformat\fR" ]
|
||||
.RB [ \-tm= "\fImachine\fR" ]
|
||||
.RB [ \-pp ]
|
||||
.RB [ \-strict ]
|
||||
.RB [ \-psci ]
|
||||
.RB [ \-n | \-bc ]
|
||||
.RB [ \-e [ p | t | b | a | i ]]
|
||||
.RB [ \-g [ p ]]
|
||||
.RB [ \-O ( 0 | 1 | 2 | 3 | s )]
|
||||
.RB [ \-O ( i | ii | a | z | p | o | x | g | m )]
|
||||
.RB [ \-d \fISYMBOL\fR[=\fIvalue\fR] ]
|
||||
.RB [ \-D \fISYMBOL\fR[=\fIvalue\fR] ]
|
||||
.RB [ \-xz ]
|
||||
.RB [ \-rmp ]
|
||||
.RB [ \-d64= "\fIdiskname\fR" ]
|
||||
.RB [ \-f= "\fIfile\fR" ]
|
||||
.RB [ \-fz= "\fIfile\fR" ]
|
||||
.RB [ \-fi= "\fIn\fR" ]
|
||||
.RB [ \-cid= "\fIn\fR" ]
|
||||
.RB [ \-csub= "\fIn\fR" ]
|
||||
.RB [ \-cname= "\fIname\fR" ]
|
||||
.RI { source.c }
|
||||
.RI { source.cpp }
|
||||
|
||||
.SH DESCRIPTION
|
||||
\fBoscar64\fR is a C/C++ compiler for the 6502 processor family. It is designed to generate high-performance 8-bit code targeting platforms such as the Commodore 64, VIC-20, PET, Commander X16, NES, Atari 8-bit, and Mega65.
|
||||
|
||||
.SH OPTIONS
|
||||
.SS "General Options"
|
||||
.TP
|
||||
.B \-h
|
||||
Print help text and exit.
|
||||
.TP
|
||||
.BI \-i= includePath
|
||||
Set the include file search path.
|
||||
.TP
|
||||
.BI \-ii= includePath
|
||||
Set the default include path (overrides built-in path).
|
||||
.TP
|
||||
.BI \-o= output.prg
|
||||
Specify output file name.
|
||||
.TP
|
||||
.BI \-rt= runtime.c
|
||||
Use a custom runtime startup source (or empty for none).
|
||||
.TP
|
||||
.B \-pp
|
||||
Compile in C++ mode (automatically enabled for .cpp files).
|
||||
.TP
|
||||
.B \-strict
|
||||
Use strict ANSI C parsing (no C++ extensions).
|
||||
.TP
|
||||
.B \-psci
|
||||
Use PETSCII encoding for all string literals without prefix.
|
||||
.TP
|
||||
.B \-xz
|
||||
Extended zero page usage. Provides more zero page space but disables return to BASIC.
|
||||
.TP
|
||||
.B \-rmp
|
||||
Generate error files (.error.map and .error.asm) when the linker fails.
|
||||
|
||||
.SS "Symbol Definitions"
|
||||
.TP
|
||||
.BI \-d SYMBOL[=value]
|
||||
Define a preprocessor symbol (like \fB\-D\fR in other compilers).
|
||||
.TP
|
||||
.BI \-D SYMBOL[=value]
|
||||
Define a symbol in a gcc-compatible way (e.g., \fB\-D NAME=VALUE\fR as a separate argument).
|
||||
|
||||
.SS "Code Generation"
|
||||
.TP
|
||||
.B \-n
|
||||
Create pure native code for all functions (now the default).
|
||||
.TP
|
||||
.B \-bc
|
||||
Create byte code for all functions (disables native code generation).
|
||||
.TP
|
||||
.B \-e
|
||||
Execute the result in the integrated emulator after compilation.
|
||||
.TP
|
||||
.B \-ep
|
||||
Execute and profile the result in the integrated emulator.
|
||||
.TP
|
||||
.B \-et
|
||||
Execute with trace output in the integrated emulator.
|
||||
.TP
|
||||
.B \-eb
|
||||
Execute with break trace in the integrated emulator.
|
||||
.TP
|
||||
.B \-ea
|
||||
Execute with asserts enabled in the integrated emulator.
|
||||
.TP
|
||||
.B \-ei
|
||||
Execute with I/O range checking in the integrated emulator.
|
||||
|
||||
.SS "Optimization"
|
||||
.TP
|
||||
.B \-O0
|
||||
Disable all optimizations.
|
||||
.TP
|
||||
.B \-O1 "\fBor\fR" \-O
|
||||
Default optimizations.
|
||||
.TP
|
||||
.B \-O2
|
||||
Aggressive speed optimizations (includes auto-inline of small functions).
|
||||
.TP
|
||||
.B \-O3
|
||||
Aggressive optimization for speed (includes all sub-optimizations).
|
||||
.TP
|
||||
.B \-Os
|
||||
Optimize for code size.
|
||||
.TP
|
||||
.B \-Oi
|
||||
Enable auto-inline of small functions (part of O2/O3).
|
||||
.TP
|
||||
.B \-Oii
|
||||
Enable aggressive auto-inline of all suitable functions.
|
||||
.TP
|
||||
.B \-Oa
|
||||
Optimize inline assembler (part of O2/O3).
|
||||
.TP
|
||||
.B \-Oz
|
||||
Enable auto-placement of global variables in zero page (part of O3).
|
||||
.TP
|
||||
.B \-Op
|
||||
Optimize constant parameters.
|
||||
.TP
|
||||
.B \-Oo
|
||||
Optimize size using "outliner" (extract repeated code sequences into functions).
|
||||
.TP
|
||||
.B \-Ox
|
||||
Optimize pointer arithmetic by blocking shorter arrays from crossing page boundaries.
|
||||
.TP
|
||||
.B \-Og
|
||||
Enable global optimization.
|
||||
.TP
|
||||
.B \-Om
|
||||
Enable merge calls optimization.
|
||||
|
||||
.SS "Debug and Diagnostics"
|
||||
.TP
|
||||
.B \-v
|
||||
Enable verbose output for diagnostics.
|
||||
.TP
|
||||
.B \-v2
|
||||
More verbose output.
|
||||
.TP
|
||||
.B \-v3
|
||||
Even more verbose output (implies v2).
|
||||
.TP
|
||||
.B \-g
|
||||
Create source-level debug info and add source line numbers to .asm listing.
|
||||
.TP
|
||||
.B \-gp
|
||||
Create source-level debug info and static profile data.
|
||||
|
||||
.SS "Target Format"
|
||||
.TP
|
||||
.BI \-tf= format
|
||||
Set the output target format.
|
||||
.RS
|
||||
.TP
|
||||
prg
|
||||
Standard Commodore PRG format (default).
|
||||
.TP
|
||||
crt
|
||||
EasyFlash cartridge format.
|
||||
.TP
|
||||
crt8
|
||||
Generic 8KB cartridge (0x8000\-0xa000).
|
||||
.TP
|
||||
crt16
|
||||
Generic 16KB cartridge (0x8000\-0xc000).
|
||||
.TP
|
||||
bin
|
||||
Raw binary format.
|
||||
.TP
|
||||
lzo
|
||||
LZO-compressed PRG output.
|
||||
.RE
|
||||
|
||||
.SS "Target Machine"
|
||||
.TP
|
||||
.BI \-tm= machine
|
||||
Specify the target machine.
|
||||
.RS
|
||||
.TP
|
||||
c64
|
||||
Commodore C64 (0x0800..0xa000, default).
|
||||
.TP
|
||||
c128
|
||||
Commodore C128 (0x1c00..0xfc00).
|
||||
.TP
|
||||
c128b
|
||||
C128 first 16KB only (0x1c00..0x4000).
|
||||
.TP
|
||||
c128e
|
||||
C128 first 48KB only (0x1c00..0xc000).
|
||||
.TP
|
||||
plus4
|
||||
Commodore Plus/4 (0x1000..0xfc00).
|
||||
.TP
|
||||
vic20
|
||||
VIC-20, no expansion (0x1000..0x1e00).
|
||||
.TP
|
||||
vic20+3
|
||||
VIC-20 +3K RAM (0x0400..0x1e00).
|
||||
.TP
|
||||
vic20+8
|
||||
VIC-20 +8K RAM (0x1200..0x4000).
|
||||
.TP
|
||||
vic20+16
|
||||
VIC-20 +16K RAM (0x1200..0x6000).
|
||||
.TP
|
||||
vic20+24
|
||||
VIC-20 +24K RAM (0x1200..0x8000).
|
||||
.TP
|
||||
pet
|
||||
Commodore PET, 8K RAM (0x0400..0x2000).
|
||||
.TP
|
||||
pet16
|
||||
Commodore PET, 16K RAM (0x0400..0x4000).
|
||||
.TP
|
||||
pet32
|
||||
Commodore PET, 32K RAM (0x0400..0x8000).
|
||||
.TP
|
||||
nes
|
||||
NES NROM, 32K ROM, no mirror.
|
||||
.TP
|
||||
nes_nrom_h
|
||||
NES NROM, 32K ROM, horizontal mirror.
|
||||
.TP
|
||||
nes_nrom_v
|
||||
NES NROM, 32K ROM, vertical mirror.
|
||||
.TP
|
||||
nes_mmc1
|
||||
NES MMC1 mapper, 256K PROM, 128K CROM.
|
||||
.TP
|
||||
nes_mmc3
|
||||
NES MMC3 mapper, 512K PROM, 256K CROM.
|
||||
.TP
|
||||
atari
|
||||
Atari 8-bit systems (0x2000..0xbc00).
|
||||
.TP
|
||||
x16
|
||||
Commander X16 (0x0800..0x9f00).
|
||||
.TP
|
||||
mega65
|
||||
Mega65 (0x2000..0xc000).
|
||||
.RE
|
||||
|
||||
.SS "Disk Image"
|
||||
.TP
|
||||
.BI \-d64= diskname
|
||||
Create a .d64 disk image with the specified name.
|
||||
.TP
|
||||
.BI \-f= file.xxx
|
||||
Add a binary file to the disk image.
|
||||
.TP
|
||||
.BI \-fz= file.xxx
|
||||
Add a compressed binary file to the disk image.
|
||||
.TP
|
||||
.BI \-fi= n
|
||||
Set sector interleave for data files on disk image (default: 10).
|
||||
|
||||
.SS "Cartridge Options"
|
||||
.TP
|
||||
.BI \-cid= n
|
||||
Set cartridge type ID (used by VICE emulator).
|
||||
.TP
|
||||
.BI \-csub= n
|
||||
Set cartridge sub-type.
|
||||
.TP
|
||||
.BI \-cname= name
|
||||
Set cartridge name string.
|
||||
|
||||
.SH "RUNTIME LIBRARY DEFINES"
|
||||
.TP
|
||||
.BI \-d NOLONG
|
||||
Disable support for long integers in printf.
|
||||
.TP
|
||||
.BI \-d NOFLOAT
|
||||
Disable floating-point support in printf.
|
||||
.TP
|
||||
.BI \-d HEAPCHECK
|
||||
Enable heap allocation/free checking; jam if heap is full or free out of range.
|
||||
.TP
|
||||
.BI \-d NOBSSCLEAR
|
||||
Do not clear BSS segment on startup.
|
||||
.TP
|
||||
.BI \-d NOZPCLEAR
|
||||
Do not clear zero-page BSS segment on startup.
|
||||
|
||||
.SH EXAMPLES
|
||||
Compile a program with optimizations:
|
||||
.nf
|
||||
oscar64 -i=include -O2 -o=demo.prg demo.c
|
||||
.fi
|
||||
|
||||
Compile with emulator execution and custom runtime:
|
||||
.nf
|
||||
oscar64 -e -rt=startup.c -f=assets.dat game.c
|
||||
.fi
|
||||
|
||||
Create a disk image with compiled output:
|
||||
.nf
|
||||
oscar64 -d64=mydisk.d64 -f=demo.prg demo.c
|
||||
.fi
|
||||
|
||||
Compile in C++ mode with maximum optimization:
|
||||
.nf
|
||||
oscar64 -pp -O3 -o=demo.prg demo.cpp
|
||||
.fi
|
||||
|
||||
.SH FILES
|
||||
.TP
|
||||
.B /usr/local/bin/oscar64
|
||||
Main compiler executable.
|
||||
.TP
|
||||
.B /usr/local/share/oscar64/
|
||||
Headers and startup runtime source.
|
||||
|
||||
.SH SEE ALSO
|
||||
.BR llvm-mos (1)
|
||||
Reference in New Issue
Block a user