Makefile tweaks

This commit is contained in:
Joshua Bell 2018-02-21 21:18:46 -08:00
parent c48bf17e6f
commit cffe277cc9
9 changed files with 75 additions and 24 deletions

View File

@ -7,12 +7,9 @@ OUTDIR = out
HEADERS = $(wildcard ../*.inc) $(wildcard ../inc/*.inc) $(wildcard *.inc) HEADERS = $(wildcard ../*.inc) $(wildcard ../inc/*.inc) $(wildcard *.inc)
DAS = calculator show_text_file date puzzle show_image_file DAS = calculator show.text.file date puzzle show.image.file
# ProDOS file type for DAs is $F1 ($ is pesky) TARGETS = $(patsubst %,$(OUTDIR)/%.$$F1,$(DAS))
EXTENSION = F1
TARGETS = $(patsubst %,$(OUTDIR)/%.$(EXTENSION),$(DAS))
.PHONY: clean all .PHONY: clean all
all: $(OUTDIR) $(TARGETS) all: $(OUTDIR) $(TARGETS)
@ -22,10 +19,24 @@ $(OUTDIR):
clean: clean:
rm -f $(OUTDIR)/*.o rm -f $(OUTDIR)/*.o
rm -f $(TARGETS) rm -f $(OUTDIR)/*.list
rm -f $(OUTDIR)/*.built
rm -f $(OUTDIR)/*.\$$F1
rm -f $(OUTDIR)/*.sys
$(OUTDIR)/%.o: %.s $(HEADERS) $(OUTDIR)/%.o: %.s $(HEADERS)
$(CC65)/ca65 $(CAFLAGS) --listing $(basename $@).list -o $@ $< $(CC65)/ca65 $(CAFLAGS) --listing $(basename $@).list -o $@ $<
$(OUTDIR)/%.$(EXTENSION): $(OUTDIR)/%.o # Built DeskTop segments
$(CC65)/ld65 $(CCFLAGS) -o $@ $< $(OUTDIR)/%.built: $(OUTDIR)/%.o asm.cfg
$(CC65)/ld65 $(CCFLAGS) -o '$@' $<
# Desk Accessories .$F1
$(OUTDIR)/%.$$F1: $(OUTDIR)/%.o
$(CC65)/ld65 $(CCFLAGS) -o '$@' $<
xattr -w prodos.AuxType '@' '$@'
# System Files .SYS
$(OUTDIR)/%.SYS: $(OUTDIR)/%.o
$(CC65)/ld65 $(CCFLAGS) -o '$@' $<
xattr -wx prodos.AuxType '00 20' $@

View File

@ -19,7 +19,7 @@ function do_make {
} }
function verify { function verify {
diff "orig/$1.bin" "out/$1.F1" \ diff "orig/$1.bin" "out/$1.\$F1" \
&& (cecho green "diff $1 good" ) \ && (cecho green "diff $1 good" ) \
|| (tput blink ; cecho red "DIFF $1 BAD" ; return 1) || (tput blink ; cecho red "DIFF $1 BAD" ; return 1)
} }
@ -28,24 +28,30 @@ function stats {
echo "$1: "$(../res/stats.pl < "$1") echo "$1: "$(../res/stats.pl < "$1")
} }
function mount {
uppercase=$(echo "$1" | tr /a-z/ /A-Z/)
cp "out/$1" "mount/$uppercase" \
&& (cecho green "mounted $uppercase" ) \
|| (cecho red "failed to mount $uppercase" ; return 1)
}
#do_make clean #do_make clean
do_make all do_make all
# Verify original and output match # Verify original and output match
echo "Verifying diffs:" echo "Verifying diffs:"
verify "calculator" verify "calculator"
verify "show_text_file" verify "show.text.file"
verify "date" verify "date"
verify "puzzle" verify "puzzle"
# Compute stats
echo "Unidentified symbols:" echo "Unidentified symbols:"
stats "calculator.s" stats "calculator.s"
stats "show_text_file.s" stats "show.text.file.s"
stats "date.s" stats "date.s"
stats "puzzle.s" stats "puzzle.s"
cat out/show_image_file.F1 > mount/SHOW.IMAGE.FILE.\$F1 \ # Mountable directory
&& echo "Updated mountable file (SIF)" echo "Copying files to mount/"
mount 'show.image.file.$F1'
#cat calc_fixed.F1 > mount/TEST.\$F1 \
# && echo "Updated mountable file (Test)"

View File

@ -10,9 +10,7 @@ HEADERS = $(wildcard ../*.inc) $(wildcard ../inc/*.inc) $(wildcard *.inc)
SEGMENTS = loader mgtk desktop invoker \ SEGMENTS = loader mgtk desktop invoker \
ovl1 ovl1a ovl5 ovl6 ovl7 ovl1 ovl1a ovl5 ovl6 ovl7
EXTENSION = built TARGETS = $(patsubst %,$(OUTDIR)/%.built,$(SEGMENTS))
TARGETS = $(patsubst %,$(OUTDIR)/%.$(EXTENSION),$(SEGMENTS))
.PHONY: clean all .PHONY: clean all
all: $(OUTDIR) $(TARGETS) all: $(OUTDIR) $(TARGETS)
@ -22,10 +20,24 @@ $(OUTDIR):
clean: clean:
rm -f $(OUTDIR)/*.o rm -f $(OUTDIR)/*.o
rm -f $(TARGETS) rm -f $(OUTDIR)/*.list
rm -f $(OUTDIR)/*.built
rm -f $(OUTDIR)/*.\$$F1
rm -f $(OUTDIR)/*.sys
$(OUTDIR)/%.o: %.s $(HEADERS) $(OUTDIR)/%.o: %.s $(HEADERS)
$(CC65)/ca65 $(CAFLAGS) --listing $(basename $@).list -o $@ $< $(CC65)/ca65 $(CAFLAGS) --listing $(basename $@).list -o $@ $<
$(OUTDIR)/%.$(EXTENSION): $(OUTDIR)/%.o asm.cfg # Built DeskTop segments
$(CC65)/ld65 $(CCFLAGS) -o $@ $< $(OUTDIR)/%.built: $(OUTDIR)/%.o asm.cfg
$(CC65)/ld65 $(CCFLAGS) -o '$@' $<
# Desk Accessories .$F1
$(OUTDIR)/%.$$F1: $(OUTDIR)/%.o
$(CC65)/ld65 $(CCFLAGS) -o '$@' $<
xattr -w prodos.AuxType '@' '$@'
# System Files .SYS
$(OUTDIR)/%.SYS: $(OUTDIR)/%.o
$(CC65)/ld65 $(CCFLAGS) -o '$@' $<
xattr -wx prodos.AuxType '00 20' $@

View File

@ -74,7 +74,7 @@ pathname passed at $2006 (see ProDOS TLM).
### Initializer ### Initializer
`desktop.s` (in `desktop.s`)
Loaded at $800-$FFF, this does one-time initialization of the Loaded at $800-$FFF, this does one-time initialization of the
DeskTop. It is later overwritten when any desk accessories are DeskTop. It is later overwritten when any desk accessories are
@ -82,7 +82,7 @@ run.
### MouseGraphics ToolKit (MGTK) ### MouseGraphics ToolKit (MGTK)
`a2d.s` `mgtk.s`
AUX $4000-$851E is the GUI library used for the DeskTop application AUX $4000-$851E is the GUI library used for the DeskTop application
and (presumably) for disk copy and Selector apps (TBD). and (presumably) for disk copy and Selector apps (TBD).
@ -196,3 +196,7 @@ $0100 +-------------+ +-------------+
| Zero Page | | Zero Page | | Zero Page | | Zero Page |
$0000 +-------------+ +-------------+ $0000 +-------------+ +-------------+
``` ```
The Disk Copy command replaces large chunks of memory and is best
thought of as a separate application. When exiting, the DeskTop is
restarted from the beginning.

17
desktop/orig/make_chunks.sh Executable file
View File

@ -0,0 +1,17 @@
#!/bin/bash
dd if=DESKTOP2.\$F1 bs=1 of=DESKTOP2_loader skip=$(( 0x0)) count=$(( 0x580))
dd if=DESKTOP2.\$F1 bs=1 of=DESKTOP2_mgtk skip=$(( 0x580)) count=$((0x451F))
dd if=DESKTOP2.\$F1 bs=1 of=DESKTOP2_desktop skip=$(( 0x4A9F)) count=$((0xE3E1))
dd if=DESKTOP2.\$F1 bs=1 of=DESKTOP2_invoker skip=$((0x12E80)) count=$(( 0x160))
dd if=DESKTOP2.\$F1 bs=1 of=DESKTOP2_ovl1 skip=$((0x12FE0)) count=$(( 0x200))
dd if=DESKTOP2.\$F1 bs=1 of=DESKTOP2_ovl1a skip=$((0x131E0)) count=$(( 0x200))
dd if=DESKTOP2.\$F1 bs=1 of=DESKTOP2_ovl1b skip=$((0x133E0)) count=$((0x2200))
dd if=DESKTOP2.\$F1 bs=1 of=DESKTOP2_ovl1c skip=$((0x155E0)) count=$(( 0xB00))
dd if=DESKTOP2.\$F1 bs=1 of=DESKTOP2_ovl2 skip=$((0x160E0)) count=$((0x1400))
dd if=DESKTOP2.\$F1 bs=1 of=DESKTOP2_ovl3 skip=$((0x174E0)) count=$((0x1000))
dd if=DESKTOP2.\$F1 bs=1 of=DESKTOP2_ovl4 skip=$((0x184E0)) count=$((0x2000))
dd if=DESKTOP2.\$F1 bs=1 of=DESKTOP2_ovl5 skip=$((0x1A4E0)) count=$(( 0x800))
dd if=DESKTOP2.\$F1 bs=1 of=DESKTOP2_ovl6 skip=$((0x1ACE0)) count=$(( 0x800))
dd if=DESKTOP2.\$F1 bs=1 of=DESKTOP2_ovl7 skip=$((0x1B4E0)) count=$(( 0x800))

View File

@ -39,6 +39,7 @@ for t in $TARGETS; do
verify $t verify $t
done; done;
# Compute stats
echo "Unidentified symbols:" echo "Unidentified symbols:"
for t in $TARGETS; do for t in $TARGETS; do
stats "$t.s" stats "$t.s"