mirror of
https://github.com/marketideas/qasm.git
synced 2026-10-25 13:02:45 +00:00
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.
1 line
4.6 KiB
Python
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
|