I renamed SHJOB to NEDOMAKE and extended it with new commands to make possible to create universal build script that builds every supported target for any nedoPC SDK example:
#!./nedomake
# Universal NEDO script to build any nedoPC SDK example
\say Build ${project}
$src=MAIN
$spr=TILES
\if ${1} : checksys
\goto radio # by default it's Radio-86RK
\label checksys
# i8080 targets:
\if ${1}==radio : radio
\if ${1}==orion : orion
\if ${1}==spets : spets
\if ${1}==speccy : speccy
# z80 targets:
\if ${1}==trdos : speccy2
\if ${1}==estex : sprinter
# other targets:
\if ${1}==clear : clear
\say ERROR : unknown target "${1}"
\exit
\label clear
\remove ${spr}.R
\remove ${src}.RO
\remove ${src}.BIN
\remove ${project}.EXE
\remove ${project}.BIN
\remove ${project}.bin
\remove ${project}.tap
\remove ${project}.trd
\remove ${project}$.bru
\goto endclear
\label radio
$syst=radio
\goto i8080
\label orion
$syst=orion
\goto i8080
\label spets
$syst=spets
\label i8080
$proc=i8080
$abin=0000
$aspr=5000
$avar=6000
\goto action
\label speccy
$proc=i8080
\goto speccy1
\label speccy2
$proc=z80
\label speccy1
$syst=speccy
$abin=8000
$aspr=D000
$avar=E000
\goto action
\label sprinter
$syst=sprinter
$proc=z80
$ahdr=3F00
$abin=4100
$aspr=9000
$avar=A000
\label action
\remove ${spr}.BIN
\remove ${spr}.R
spr_comp -S${syst} -O#${aspr} ${spr}.SPR
\remove ${src}.RO
robbyc -p -l ${src}.R
\need ${src}.RO
\remove ${src}.A
robbycc ${src}.RO -P${proc} -S${syst} -O#${abin} -B#${avar}
\need ${src}.A
\remove ${src}.BIN
\if ${proc}!=z80 : rasm
\remove ${src}.bin
zmac ${src}.A
\need ${src}.bin
\rename ${src}.bin ${src}.BIN
\remove ${src}.lst
\goto bincont
\label rasm
rasm ${src}.A -t${EXEPATH}LIB/I8080/__RULES
\label bincont
\need ${src}.BIN
\if ${syst}==radio : endradio
\if ${syst}==sprinter : sprinterexe
\remove ${project}.bin
\glue ${project}.bin ${src}.BIN #${abin}
\glue ${project}.bin ${spr}.BIN #${aspr}
\ltrim ${project}.bin
\need ${project}.bin
\if ${syst}==spets : endclear
\if ${syst}==speccy : endspeccy
# it must be orion at this point
bin2bru ${project}.bin #${abin}
\need ${project}$.bru
\remove ${project}.bin
\goto endclear
\label endspeccy
\if ${1}==trdos : endtrdos
# it must be tap at this point
\remove ${project}.tap
bin2tap ${project}.bin #${abin} ${EXEPATH}LIB/Z80/SPECCY/TAPE
\need ${project}.tap
\remove ${project}.bin
\goto endclear
\label endtrdos
\remove ${project}.trd
\remove ${project}.trl
\append ${project}.trl NORMAL "${project}"
\append ${project}.trl TRUNCATED
\append ${project}.trl hobeta "${EXEPATH}LIB/Z80/SPECCY/BOOT","boot","B"
\append ${project}.trl binary "${project}.bin","robot","C",32768
bin2trd ${project}.trl
\need ${project}.trd
\remove ${project}.trl
\remove ${project}.bin
\goto endclear
\label sprinterexe
\remove ${project}.EXE
\glue ${project}.EXE ${EXEPATH}LIB/Z80/SPRINTER/HEAD.BIN #${ahdr}
\glue ${project}.EXE ${src}.BIN #${abin}
\glue ${project}.EXE ${spr}.BIN #${aspr}
\ltrim ${project}.EXE
\need ${project}.EXE
\goto endclear
\label endradio
\rename ${src}.BIN ${project}.BIN
\label endclear
\remove ${spr}.BIN
\remove ${spr}.R
\remove ${src}.BIN
\remove ${src}.LST
\remove ${src}.R!
\remove ${src}.RO
\remove ${src}.RLS
\remove ${src}.A
This is a source code of the utility:
https://gitlab.com/nedopc/sdk/-/blob/master/sdk/nedomake.c?ref_type=heads
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.