reorganize everything

This commit is contained in:
Dennis Gunia
2024-06-24 20:38:02 +02:00
parent ea1069e59c
commit 1ed6034d99
3867 changed files with 16188 additions and 13447 deletions

104
Utility/buildx.sh Executable file
View File

@@ -0,0 +1,104 @@
#!/bin/bash
## define functions
log() {
echo "[$(date -Is)]" "$@"
}
help() {
echo "Build tool for z8c computer system"
echo ""
echo "-h : disply help page"
echo "-i <file> : input file (main.s)"
echo "-c <file> : output as .com file"
echo "-m <file> : output as .mon file"
}
while getopts ":hi:c:m:" option; do
case $option in
h) help; exit;;
i) VAR_INPUT=$OPTARG;;
c) VAR_EXECUTABLE=$OPTARG;;
m) VAR_MONITOR=$OPTARG;;
esac
done
if [ -z $VAR_INPUT ]; then
log "ERROR: Please use -i to specify input file"
exit 1
fi
if ! [ -f $VAR_INPUT ]; then
log "ERROR: $VAR_INPUT not found."
exit 1
fi
ROOT_DIR="$(git rev-parse --show-toplevel)"
PROJ_PATH="$(dirname "$VAR_INPUT")"
FULLPATH="$(readlink -f "$VAR_INPUT")"
FILENAME="$(echo "$VAR_INPUT" | sed 's/^.*\///' | sed 's/\..*//')"
log "INFO: Selected main: $FULLPATH"
log "INFO: Selected project: $PROJ_PATH"
log "INFO: Root directory: $ROOT_DIR"
cd $PROJ_PATH
CMD="$ROOT_DIR/Utility/zmac $FULLPATH -I include -L --oo hex,lst"
log "INFO: Run build: $CMD"
$CMD
RC_BUILD=$?
if [ $RC_BUILD -gt 0 ]; then
log "ERROR: Build failed! Exit."
exit $RC_BUILD
else
log "INFO: Build successfull!"
fi
rm .zout -Rf
mv zout .zout
## create object file
log "INFO: Generating object file .zout/$FILENAME.bin"
CMD="objcopy --input-target=ihex --output-target=binary .zout/$FILENAME.hex .zout/$FILENAME.bin"
log "INFO: Run exec: $CMD"
$CMD
## generate monitor file
log "INFO: Generating monitor file .zout/$FILENAME.mon"
while read p; do
LINE="!${p:3:4} $(echo ${p:9:-2} | sed 's/.\{2\}/& /g' | sed 's/\ $//')"
echo -e "$LINE" >> .zout/$FILENAME.mon
done <<< "$(grep -e ':......00.*' .zout/$FILENAME.hex )"
log "INFO: Generated $(cat .zout/$FILENAME.mon | wc -l) lines!"
## generate symbol table
log "INFO: Generating symbol file .zout/symbols.s"
log "INFO: Building Symbol File"
# generate call locations list
echo -e ";This file is generated by the build script.\n;Do not make any changes here!\n" > .zout/symbols.s
sed -n '/Symbol Table:/,$p' ".zout/$FILENAME.lst" | \
grep -v "Symbol Table:" | grep -v -e '^$' | \
sed 's/=/ /gm' | awk '{printf("%s equ 0x%s\n",$1,$2)}' \
>> .zout/symbols.s
log "INFO: Generated Symbol file @ .zout/symbols.s"
## generate .com
log "INFO: Generating symbol file .zout/$FILENAME.COM"
cp .zout/$FILENAME.bin .zout/$FILENAME.com
log "INFO: Generated executable file @ .zout/$FILENAME.com"
## echo generate gititgnore
echo "$FILENAME*" > .zout/.gitignore
cd -
if [ ! -z $VAR_EXECUTABLE ]; then
log "INFO: Store executable to $VAR_EXECUTABLE"
cp $PROJ_PATH/.zout/$FILENAME.com $VAR_EXECUTABLE
fi
if [ ! -z $VAR_MONITOR ]; then
log "INFO: Store monitor script to $VAR_MONITOR"
cp $PROJ_PATH/.zout/$FILENAME.mon $VAR_MONITOR
fi