Files
Shawn Quick dfcaae62dd Add qlink, the disk tools, and a bootable ProDOS 8 image.
Move the assembler to src/qasm. qlink links OMF 1.0 and 2.0 from a script. makeBin flattens a load file, qomf dumps OMF, and qpro builds ProDOS volumes. APW and MPW assemble through the ORCA front end. Relocatable modules emit OMF objects. Listings stay off unless -l is set.

make boot assembles the GS/OS 6.0.1 ProDOS 8 kernel and BASIC.SYSTEM into an 800K volume. BASIC.SYSTEM accepts ls and pfx, and its splash reports PRODOS BASIC 2.0, copyright 1983-2026. IIGS.601.SRC is the source and the BASIC.SYSTEM oracle that image is built from.
2026-10-16 14:41:55 -07:00

1 line
3.4 KiB
Plaintext

# GSOSlink
# By Bryan Atsatt
#
# This file links and builds the following files:
#
# GS.OS
# START.GS.OS
# ERROR.MSG
#
# Link everybody...
#
unset LnkOptions
if "{ListFlag}" || "{ListPartFlag}"
set LnkOptions "-l > {Listings}os.symbols"
end
linkiigs -apw -o {WorkFolder}scm.lnk {LnkOptions} ¶
-lseg scm_seg_0 # becomes scm.bin ¶
{Object}scm.obj(@start_seg0) ¶
{Object}scm.obj(@oscall_seg) ¶
{Object}scm.obj(@end_seg0) ¶
-lseg scm_seg_1 # becomes scm.bin.2 ¶
{Object}scm.obj(@start_seg1) ¶
{Object}scm.obj(@misc_seg) ¶
{Object}scm.obj(@end_seg1) ¶
-lseg scm_seg_2 # becomes scm.bin.3 ¶
{Object}scm.obj(@start_seg2) ¶
{Object}scm.obj(@scm_main) ¶
{Object}scm.obj(@end_seg2) ¶
-lseg scm_seg_3 # becomes scm.bin.4 ¶
{Object}scm.obj(@start_seg3) ¶
{Object}scm.obj(@system_svc) ¶
{Object}scm.obj(@end_seg3) ¶
-lseg scm_seg_4 # becomes scm.bin.5 ¶
{Object}scm.obj(@start_seg4) ¶
{Object}scm.obj(@bank_e1) ¶
{Object}scm.obj(@end_seg4) ¶
-lseg b00segr # becomes scm.bin.6 ¶
{Object}b00segr.s.obj ¶
{Object}bank0.obj ¶
{Object}b00segr.e.obj ¶
-lseg be0segr # becomes scm.bin.7 ¶
{Object}be0segr.s.obj ¶
{Object}device.dispatcher.obj ¶
{Object}be0segr.e.obj ¶
-lseg gquit.1 # becomes scm.bin.8 ¶
{Object}gquit.obj(@seg_gldr) ¶
-lseg gquit.2 # becomes scm.bin.9 ¶
{Object}gquit.obj(@seg_b0) ¶
-lseg gquit.3 # becomes scm.bin.10 ¶
{Object}gquit.obj(@seg_e1) ¶
-lseg gquit.4 # becomes scm.bin.11 ¶
{Object}gquit.obj(@seg_e0) ¶
-lseg cache # becomes scm.bin.12 ¶
{Object}cache.obj ¶
-lseg init.1 # becomes scm.bin.13 ¶
{Object}init1.obj ¶
-lseg init.2 # becomes scm.bin.14 ¶
{Object}init2.obj ¶
-lseg init.3 # becomes scm.bin.15 ¶
{Object}init3.obj ¶
-lseg init.4 # becomes scm.bin.16 ¶
{Object}init4.obj ¶
-lseg terminator # becomes scm.bin.17 ¶
{Object}scm.obj(@terminator)
#
# Make binary...
#
makebiniigs {WorkFolder}scm.lnk -o {WorkFolder}scm.bin
#
# Create "START.GS.OS" from binary...
#
catenate {WorkFolder}scm.bin.8 > {SDsystem}start.gs.os
catenate {WorkFolder}scm.bin.9 >> {SDsystem}start.gs.os
catenate {WorkFolder}scm.bin.10 >> {SDsystem}start.gs.os
catenate {WorkFolder}scm.bin.11 >> {SDsystem}start.gs.os
#
# Set filetype and auxtype...
#
set exit 0; echo "foo" | rez -o {SDsystem}start.gs.os -m -c pdos -t $70f90007 ³ dev:null; set exit 1
#
# Set the mod time to the current time
#
setfile -m . {SDsystem}start.gs.os
#
# Create "GS.OS" from binary...
#
catenate {WorkFolder}loader > {SDsystem}gs.os
catenate {WorkFolder}scm.bin >> {SDsystem}gs.os
catenate {WorkFolder}scm.bin.2 >> {SDsystem}gs.os
catenate {WorkFolder}scm.bin.3 >> {SDsystem}gs.os
catenate {WorkFolder}scm.bin.4 >> {SDsystem}gs.os
catenate {WorkFolder}scm.bin.5 >> {SDsystem}gs.os
catenate {WorkFolder}scm.bin.6 >> {SDsystem}gs.os
catenate {WorkFolder}scm.bin.7 >> {SDsystem}gs.os
catenate {WorkFolder}scm.bin.12 >> {SDsystem}gs.os
catenate {WorkFolder}scm.bin.13 >> {SDsystem}gs.os
catenate {WorkFolder}scm.bin.14 >> {SDsystem}gs.os
catenate {WorkFolder}scm.bin.15 >> {SDsystem}gs.os
catenate {WorkFolder}scm.bin.16 >> {SDsystem}gs.os
catenate {WorkFolder}scm.bin.17 >> {SDsystem}gs.os
#
# Set filetype and auxtype...
#
set exit 0; echo "foo" | rez -o {SDsystem}gs.os -m -c pdos -t $70f90000 ³ dev:null; set exit 1
#
# Set the mod time to the current time
#
setfile -m . {SDsystem}gs.os