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
10 KiB
Plaintext

#
# This make file defines the dependencies for the following files:
#
# "GS.OS"
# "START.GS.OS"
# "GS.OS.Dev"
#
All ÄÄ GS.OS Start.GS.OS GS.OS.Dev
GS.OS ÄÄ {SDSystem}GS.OS
Start.GS.OS ÄÄ {SDSystem}Start.GS.OS
GS.OS.Dev ÄÄ {SDSystem}GS.OS.Dev
#
# Dependency rules for GS.OS
#
{SDSystem}GS.OS ÄÄ {WorkFolder}Loader.bin {WorkFolder}SCM.bin
catenate {WorkFolder}Loader.bin > {SDsystem}GS.OS
catenate {WorkFolder}Loader.bin.2 >> {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
#
# Dependency rules for Start.GS.OS
#
{SDSystem}Start.GS.OS ÄÄ {WorkFolder}SCM.bin
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
#
# Dependency rules for the new Device Dispatcher...
#
{SDSystem}GS.OS.Dev ÄÄ {object}NewDispatcher.obj
linkiigs -t $bc -x ¶
{Object}NewDispatcher.Obj ¶
-o {SDsystem}GS.OS.Dev
{Object}NewDispatcher.Obj Ä {DeviceDispatcher}NewDispatcher.Src ¶
{Common}common.equ.src ¶
{Common}hw.equ.src ¶
{Common}gsos.macros.src ¶
{Common}driver.equ.src
if "{ListFlag}" || "{ListPartFlag}" == "devdisp"; set AsmOptions "-l -m -lo {Listings}NewDispatcher.lst"; end
Asmiigs {DeviceDispatcher}NewDispatcher.Src -o {Object}NewDispatcher.Obj -i {common} {AsmOptions}
unset AsmOptions
#
# If any of the following objects change, let's re-link...
#
{WorkFolder}SCM.bin Ä {WorkFolder}SCM.lnk
MakeBinIIGS {WorkFolder}scm.lnk -o {WorkFolder}scm.bin
{WorkFolder}scm.lnk Ä {Object}scm.obj ¶
{Object}b00segr.s.obj ¶
{Object}bank0.obj ¶
{Object}b00segr.e.obj ¶
{Object}be0segr.s.obj ¶
{Object}device.dispatcher.obj ¶
{Object}be0segr.e.obj ¶
{Object}gquit.obj ¶
{Object}cache.obj ¶
{Object}init1.obj ¶
{Object}init2.obj ¶
{Object}init3.obj ¶
{Object}init4.obj
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)
#
# Dependencies for SCM...
#
{Object}scm.obj Ä {SCM}scm.src ¶
{Common}gsos.macros.src ¶
{Common}common.equ.src ¶
{Common}hw.equ.src
if "{ListFlag}" || "{ListPartFlag}" == "scm"; set AsmOptions "-l -m -lo {Listings}scm.lst"; end
asmiigs {SCM}scm.src -o {Object}scm.obj -i {Common} {AsmOptions}
unset AsmOptions
#
# Dependency rules for Bank 0 dispatcher
#
{Object}B00segr.s.obj Ä {BankZero}B00segR.s.src
if "{ListFlag}" || "{ListPartFlag}" == "bank0"; set AsmOptions "-l -m -lo {Listings}B00segR.s.lst"; end
asmiigs {BankZero}B00segR.s.src -o {Object}B00segr.s.obj {AsmOptions}
unset AsmOptions
{Object}B00segr.e.obj Ä {BankZero}B00segR.e.src
if "{ListFlag}" || "{ListPartFlag}" == "bank0"; set AsmOptions "-l -m -lo {Listings}B00segR.e.lst"; end
asmiigs {BankZero}B00segR.e.src -o {Object}B00segr.e.obj {AsmOptions}
unset AsmOptions
{Object}Bank0.obj Ä {BankZero}Bank0.Dispatcher.src ¶
{Common}common.equ.src ¶
{Common}hw.equ.src ¶
{Common}driver.equ.src
if "{ListFlag}" || "{ListPartFlag}" == "bank0"; set AsmOptions "-l -m -lo {Listings}Bank0.Dispatcher.lst"; end
asmiigs {BankZero}Bank0.Dispatcher.src -o {Object}Bank0.obj -i {common} {AsmOptions}
unset AsmOptions
#
# Dependency rules for the Device Dispatcher
#
{Object}be0segr.e.obj Ä {DeviceDispatcher}be0segr.e.src
if "{ListFlag}" || "{ListPartFlag}" == "devdisp"; set AsmOptions "-l -m -lo {Listings}be0segr.e.lst"; end
Asmiigs {DeviceDispatcher}be0segr.e.src -o {Object}be0segr.e.obj {AsmOptions}
unset AsmOptions
{Object}be0segr.s.obj Ä {DeviceDispatcher}be0segr.s.src
if "{ListFlag}" || "{ListPartFlag}" == "devdisp"; set AsmOptions "-l -m -lo {Listings}be0segr.s.lst"; end
Asmiigs {DeviceDispatcher}be0segr.s.src -o {Object}be0segr.s.obj {AsmOptions}
unset AsmOptions
{Object}Device.Dispatcher.Obj Ä {DeviceDispatcher}Device.Dispatcher.Src ¶
{Common}common.equ.src ¶
{Common}hw.equ.src ¶
{Common}gsos.macros.src ¶
{Common}driver.equ.src
if "{ListFlag}" || "{ListPartFlag}" == "devdisp"; set AsmOptions "-l -m -lo {Listings}Device.Dispatcher.lst"; end
Asmiigs {DeviceDispatcher}Device.Dispatcher.Src -o {Object}Device.Dispatcher.Obj -i {common} {AsmOptions}
unset AsmOptions
#
# Dependency rules for the Cache Manager
#
{Object}Cache.obj Ä {CacheManager}Cache.Src ¶
{Common}common.equ.src
if "{ListFlag}" || "{ListPartFlag}" == "cache"; set AsmOptions "-l -m -lo {Listings}Cache.lst"; end
Asmiigs {CacheManager}Cache.Src -o {Object}Cache.obj -i {common} {AsmOptions}
unset AsmOptions
#
# Dependency rules for the Init Manager
#
{Object}Init1.Obj Ä {InitManager}Init1.src ¶
{Common}common.equ.src ¶
{InitManager}init.equ.src
if "{ListFlag}" || "{ListPartFlag}" == "init"; set AsmOptions "-l -m -lo {Listings}Init1.lst"; end
Asmiigs {InitManager}Init1.src -o {Object}Init1.Obj -i {common} {AsmOptions}
unset AsmOptions
{Object}Init2.Obj Ä {InitManager}Init2.src ¶
{Common}common.equ.src ¶
{InitManager}init.equ.src
if "{ListFlag}" || "{ListPartFlag}" == "init"; set AsmOptions "-l -m -lo {Listings}Init2.lst"; end
Asmiigs {InitManager}Init2.src -o {Object}Init2.Obj -i {common} {AsmOptions}
unset AsmOptions
{Object}Init3.Obj Ä {InitManager}Init3.src ¶
{InitManager}init.equ.src ¶
{InitManager}init.data.src¶
{Common}common.equ.src ¶
{Common}hw.equ.src
if "{ListFlag}" || "{ListPartFlag}" == "init"; set AsmOptions "-l -m -lo {Listings}Init3.lst"; end
Asmiigs {InitManager}Init3.src -o {Object}Init3.Obj -i {common} {AsmOptions}
unset AsmOptions
{Object}Init4.Obj Ä {InitManager}Init4.src ¶
{InitManager}init.equ.src ¶
{Common}common.equ.src ¶
{Common}hw.equ.src
if "{ListFlag}" || "{ListPartFlag}" == "init"; set AsmOptions "-l -m -lo {Listings}Init4.lst"; end
Asmiigs {InitManager}Init4.src -o {Object}Init4.Obj -i {common} {AsmOptions}
unset AsmOptions
#
# Dependency rules for the Gquit
#
{Object}gquit.obj Ä {Gquit}gquit.src ¶
{Common}common.equ.src ¶
{Common}hw.equ.src ¶
{Gquit}gquit.macros.src
if "{ListFlag}" || "{ListPartFlag}" == "gquit"; set AsmOptions "-l -m -lo {Listings}gquit.lst"; end
asmiigs {Gquit}gquit.src ¶
-o {Object}gquit.obj ¶
-i {common} {AsmOptions}
unset AsmOptions
#
# Dependencies for the System Loader...
#
Files = {Loader}Loader.a {Loader}Functions.a {Loader}Init.Load.a ¶
{Loader}Restart.a {Loader}Jump.a {Loader}Segments.a ¶
{Loader}Relocation.a {Loader}Files.a {Loader}Struct.a ¶
{Loader}Misc.a {Loader}Data.a {Loader}ExpressLoad.a ¶
{Loader}Loader.Macros {Loader}Loader.Equates {Loader}Loader.Preamble ¶
{Loader}dp.a
{WorkFolder}Loader.bin Ä {Object}Loader.obj {Object}GSHeader.obj {Object}GSFooter.obj
if "{ListFlag}"; set LnkOptions "-l > {Listings}Loader.symbols"; end
LinkIIGS -x {Object}GSHeader.obj {Object}Loader.obj {Object}GSFooter.obj ¶
-o {WorkFolder}Loader.S16 {LnkOptions}
MakeBinIIGS {WorkFolder}Loader.S16 -o {WorkFolder}Loader.bin
unset LnkOptions
{Object}Loader.obj Ä {Files}
if "{ListFlag}" || "{ListPartFlag}" == "loader"; set AsmOptions "-l -m -lo {Listings}Loader.lst"; end
AsmIIGS {Loader}Loader.a -o {Object}Loader.obj {AsmOptions}
unset AsmOptions
{Object}GSHeader.obj Ä {Loader}GSHeader.a {Loader}Loader.Preamble
if "{ListFlag}" || "{ListPartFlag}" == "loader"; set AsmOptions "-l -m -lo {Listings}GSHeader.lst"; end
AsmIIGS {Loader}GSHeader.a -o {Object}GSHeader.obj {AsmOptions}
unset AsmOptions
{Object}GSFooter.obj Ä {Loader}GSFooter.a {Loader}Loader.Preamble
if "{ListFlag}" || "{ListPartFlag}" == "loader"; set AsmOptions "-l -m -lo {Listings}GSFooter.lst"; end
AsmIIGS {Loader}GSFooter.a -o {Object}GSFooter.obj {AsmOptions}
unset AsmOptions