build - a description how to build GeckOS
Building the object files for use on an OS/A65 machine should really be only a 'make', as long as my cross assembler xa http://www.floodgap.com/retrotech/xa/ is in the path. If there weren’t these many options one can change.
The options below can be set in the appropriate files. But if the programs are assembled as part of a ROM, then "ROM" is defined and the 'local' options are ignored and overwritten by the ones defined in stdrom/rom.a65 or c64rom/c64rom.a65. These two files are the files to build a rom for a CS/A computer with MMU or the C64 respectively.
global options, to be set in stdrom/rom.a65 or c64rom/c64rom.a65:
ROM mandatory for a rom build. All local options are ignored.
ROMSTART Where in CPU memory (with MMU with the upper 4 bits set
to zero, i.e. $00000-$0ffff) starts the ROM.
MIN_MEM minimum amount of memory for the kernel to start
RAMTEST If set, RAM is tested on boot
SHORTRAMTEST if defined, do a short memory test only
MEMINIVAL clear memory to this value on boot
The following options customize the kernel functionaly:
NEED_CHECKCHLD Do we need the CHECKCHLD call?
NEED_GETINFO Should GETINFO be included in kernel?
NEED_RENICE Should RENICE be included in kernel?
NEED_SLOCK Should SLOCK be included in kernel?
NO_STREAMS if set, no streams are available
NO_FSM if set, no filesystem interface
NO_SEM if set, semaphores are no available
NO_SEND if set, no SEND/RECEIVE interface
EOK_SEPARATE if set kernel is not at top of memory (do not include
CPU interrupt vectors)
EOK_NOFILL Do not fill memory in ROM between kernel and end
C64 specific options, to be set in arch/c64//c64rom.a65:
CLEARMEM if defined, the memory is set to the value CLEARMEM is defined
to when booting.
C64NEEDCIA1 if defined, disables reading the CIA1 icr in the kernel.
Therefore it has to be assured that a device reads this
register to clear the interrupt line again.
Undefine this for use with the fast RS232 driver.
C64_BGND_COL
C64_TEXT_COL
C64_BORDER_COL colors to use
C64SWITCH The terminal switch key, 61= C= key, 4= F1
C64NMIRESET makes the Restore key a RESET key. Doesn't work with fast
serial driver!
STACKCOPY If defined in non-MMU systems, save stack area somewhere else
when doing a task switch. If a task switch is done, the stack
is copied back. If not defined, divide the 6502 stack
from $100 to $1ff into pieces, one for each task and one
for the system. It's faster without, but with this option
there is much more stack space per task and more tasks
are available.
CS/A specific options
ROMTEST with ROMTEST the MMU is not loaded, but the contents of
the MMU registers secured with GETBLK. Also memory is
not tested (to test a new system ROM)
kernel options in kernel/kernel.a65:
ROM with ROM all options are set globally or somewhere else
CMOSCPU for (Rockwell) CMOS CPU
NOMMU system for a computer without MMU
NOSINPORT system has no SYSPORT, but LED is driven, if a board is
plugged in
NOENVIRQ to build system where tasks cannot have an own irq routine
BATMEM main memory is not erased at memory test (for battery buffered
RAM)
NOMIRRORMEM if the memory chip is definitely not mirrored (i.e. no
unconnected CPU address lines), one can
disable the test for this.
NMIDEV enables NMI routine (without MMU only)
fsiec options in oafs/fsiec.a65
INVERT parallel IEEE488 port output lines are inverted
PARALLEL do it for IEEE488 interface, not serial interface
(works for CS/A computer and C64). NOLOOP has then
to be defined also.
NOCMD do not interpret other fs commands than FS_OPEN_*
NOFS do not register as fs - listen on bus only
NOLOOP do not listen on bus - register as fs only
STDTST include STDIO lib if needed.
NOPRG without PRG header
lmon options in apps/lmon.a65:
SHORTMON no assembler/disassembler in monitor
NOSYSFKT no file/system calls in monitor
SHORTLINE use 40 columns instead of 80
Please report bugs at https://github.com/fachat/GeckOS-V2/issues