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
4.6 KiB
Python

# Build
# By Bryan Atsatt
#
# Syntax: Build [options] name [name [name]]
#
# Description: This script will Make the specified makefile from the {MakeFiles} directory
# and execute its output. It expects the filenames in the {MakeFiles} directory
# to be in the format "make.name" where "name" is the name passed to Build.
#
# Options: -l Generate a listing in {Listings} directory. Forces -e option.
# -o Open makeout file so you can see what Make outputs.
# -e Force Make to rebuild everything.
# -p Write progress information to standard output.
# -s Suppress update dialog.
#
# All of the Make options which do not have two parts (i.e. "-f makefile") can also
# be passed as options.
#
# The following names can be used in place of "os"; these are especially useful when creating
# listings because they will only list the named module:
#
# scm, bank0, devmgr, devdisp, cache, init, gquit, loader
#
# If you type "all" for the name, all of the makefiles in the {MakeFiles} directory will be
# processed.
#
#
# Check for zero parameters case...
#
if !{#}
echo "### Build - Filename required." >> dev:StdOut
exit 0
end
#
# Parse parameters as long as this is not a recursive call...
#
if !{MakeAllFlag}
unset MakeParm
unset MakeAllFlag
unset FilesList
unset ListFlag
unset ListPartFlag
unset AsmOptions
unset LnkOptions
unset WindowFlag
unset SkipUpdate
unset DoProgress
set OSfiles "scm bank0 devmgr devdisp cache init gquit loader"
for Item in {Parameters}
Begin
if "{Item}" =~ /-l/
set ListFlag "-l"
set MakeParm "{MakeParm}-e "
else if "{Item}" =~ /-o/
open -n {WorkFolder}makeout > dev:null ³ dev:null
set WindowFlag 1
else if "{Item}" =~ /-s/
set SkipUpdate 1
else if "{Item}" =~ /-p/
set DoProgress 1
else if "{Item}" =~ /all/
set MakeAllFlag 1
else if "{Item}" =~ /-?/
set MakeParm "{MakeParm}{Item} "
else
set FilesList "{FilesList} {Item}"
end
set Parameters "{FilesList}"
end
end
export MakeAllFlag
export MakeParm
export ListFlag
export OSfiles
export DoProgress
export SkipUpdate
#
# If the {GSOS} variable is not set then we must set it as well as all the other variables
# required by our makefiles...
#
if !{GSOS}
directory ::
set GSOS `directory`
directory {GSOS}MakeFiles > dev:null ³ dev:null ||
(loop
alert "Please set the directory to GSOS..."
directory `getfilename -d`
set GSOS `directory`
directory {GSOS}MakeFiles > dev:null ³ dev:null && break
continue
end)
export GSOS
directory {GSOS}Scripts
execute {GSOS}Scripts:GSOSvariables
set Commands "{Commands},{Scripts}"
export Commands
if !{SkipUpdate}
set exit 0
confirm -t 'Do you want to update your UserStartup script for GS/OS?'
set Answer {status}
if {Answer} == 5
exit 0
else if !{Answer}
search -q "# Set up for GS/OS project..." {MPW}UserStartup > dev:null ³ dev:null
if {status}
begin
echo
echo '#'
echo '# Set up for GS/OS project...'
echo '#'
echo 'set GSOS '`echo {GSOS}`' ;export GSOS'
echo 'execute {GSOS}Scripts:GSOSstartup'
end >> {MPW}UserStartup
alert 'Your UserStartup script has been updated for GS/OS...'
else
alert 'Your UserStartup script has already been updated, so no changes were made...'
end
end
end
set exit 1
end
#
# If one of the parameters is "all", we will do a recursive call with all of
# the filenames in the MakeFiles directory...
#
if {MakeAllFlag}
set CurrentDir `directory`
directory {MakeFiles}
execute {Scripts}build `files make.Å`
directory {CurrentDir}
exit 0
end
end
#
# Set up some variables, do a Make and execute its output for each file requested...
#
for File in {Parameters}
if {DoProgress}
echo "Making "{File}"..."
end
if "{File}" !~ /make.Å/
set Prefix "make."
else
unset Prefix
end
if "{ListFlag}"
set AsmOptions "-l -m -lo {Listings}{File}.lst -pagesize 70"
Export AsmOptions
set LnkOptions "-l > {Listings}{File}.map"
Export LnkOptions
end
set exit 0
begin
if {DoProgress}
echo "set echo 1"
end
make {MakeParm} -f "{MakeFiles}{Prefix}{File}"
end > "{WorkFolder}makeout" ³ dev:null ||
begin
set exit 1
for Item in {OSfiles}
if "{File}" == "{Item}"
set File "os"
if "{ListFlag}"
unset ListFlag
set ListPartFlag "{Item}"
export ListPartFlag
end
break
end
end
begin
if {DoProgress}
echo "set echo 1"
end
make {MakeParm} -f "{MakeFiles}{Prefix}{File}"
end > "{WorkFolder}makeout" ³ dev:null
end
set exit 1
{WorkFolder}makeout
end
if {DoProgress}
echo "Done."
end
if {WindowFlag}
target {WorkFolder}makeout > dev:null ³ dev:null
end