view Makefile @ 121:5d5472b11ccd

Initital skeleton of separation of separate parsing scheme This is the first commit in a long series related to separating the parsing of the input code from the execution of the code. It should allow for more efficient, and probably simpler, execution while giving quicker feedback when someone types in syntactically invalid code.
author William Astle <lost@l-w.ca>
date Sun, 31 Dec 2023 17:44:39 -0700
parents a6a53e5c04bd
children 9d57279c900e
line wrap: on
line source

.PHONY: all
CFLAGS ?= -Wall

all: bin/lwbasic.rom bin/lwbasic-coco2b.rom bin/lwbasic-coco3.rom bin/coco.zip bin/coco2.zip bin/coco2b.zip bin/coco3.zip

lwb_srcs := bytecode.s consscr.s defs.s error.s expr.s fps.s genio.s init.s int.s interp.s irq.s keyb.s keywords.s keywordtab.s miscdata.s number.s parse.s print.s progctrl.s stack.s token.s vars.s
lwb_srcs := $(addprefix src/,$(lwb_srcs))

bin/lwbasic.rom: src/lwbasic.s $(lwb_srcs)
	lwasm --6809 --tabs=16 --raw --list=src/lwbasic-coco2.list --symbols --output=bin/lwbasic.rom src/lwbasic.s
bin/lwbasic-coco2b.rom: src/lwbasic.s $(lwb_srcs)
	lwasm --6809 --tabs=16 --raw --list=src/lwbasic-coco2b.list --symbols --output=bin/lwbasic-coco2b.rom -DCOCO2B=1 src/lwbasic.s
bin/lwbasic-coco3.rom: src/lwbasic.s $(lwb_srcs)
	lwasm --6809 --tabs=16 --raw --list=src/lwbasic-coco3.list --symbols --output=bin/lwbasic-coco3.rom -DCOCO3=1 src/lwbasic.s

src/keywordtab.s: src/keywordlist.txt src/buildkeywordtab
	./src/buildkeywordtab src/keywordlist.txt src/keywordtab.s

src/buildkeywordtab: src/buildkeywordtab.c

.PHONY: clean
clean:
	rm -f bin/*.rom bin/*.zip
	rm -f src/*.list
	rm -f */*~ *~
	rm -f src/buildkeywordtab
	rm -f src/keywordtab.s

bin/coco2.zip: bin/lwbasic.rom
	mkdir -p coco2
	rm -f coco2/* coco2.zip
	dd if=bin/lwbasic.rom of=coco2/extbas11.rom bs=1024 count=8
	dd if=bin/lwbasic.rom of=coco2/bas12.rom bs=1024 count=8 skip=8
	dd if=bin/lwbasic.rom of=coco2/disk11.rom bs=1024 count=16 skip=16
	zip bin/coco2.zip coco2/extbas11.rom coco2/bas12.rom coco2/disk11.rom
	rm -rf coco2

bin/coco.zip: bin/lwbasic.rom
	mkdir -p coco
	rm -f coco/* coco.zip
	dd if=bin/lwbasic.rom of=coco/extbas11.rom bs=1024 count=8
	dd if=bin/lwbasic.rom of=coco/bas12.rom bs=1024 count=8 skip=8
	dd if=bin/lwbasic.rom of=coco/disk11.rom bs=1024 count=16 skip=16
	zip bin/coco.zip coco/extbas11.rom coco/bas12.rom coco/disk11.rom
	rm -rf coco

bin/coco2b.zip: bin/lwbasic-coco2b.rom
	mkdir -p coco2b
	rm -f coco2b/* coco2b.zip
	dd if=bin/lwbasic-coco2b.rom of=coco2b/extbas11.rom bs=1024 count=8
	dd if=bin/lwbasic-coco2b.rom of=coco2b/bas13.rom bs=1024 count=8 skip=8
	dd if=bin/lwbasic-coco2b.rom of=coco2b/disk11.rom bs=1024 count=16 skip=16
	zip bin/coco2b.zip coco2b/extbas11.rom coco2b/bas13.rom coco2b/disk11.rom
	rm -rf coco2b

bin/coco3.zip: bin/lwbasic-coco3.rom
	mkdir -p coco3
	rm -f coco3/* coco3.zip
	dd if=bin/lwbasic-coco3.rom of=coco3/coco3.rom bs=1024 count=32
	dd if=/dev/null of=coco3/disk11.rom bs=1024 count=8
	zip bin/coco3.zip coco3/coco3.rom coco3/disk11.rom
	rm -rf coco3

.PHONY: mame1 mame1d mame2 mame2d
mame1: bin/coco.zip
	mame coco -skip_gameinfo -rompath ./bin
mame1d: bin/coco.zip
	mame coco -skip_gameinfo -rompath ./bin -debug

mame2: bin/coco2.zip
	mame coco2 -skip_gameinfo -rompath ./bin
mame2d: bin/coco2.zip
	mame coco2 -skip_gameinfo -rompath ./bin -debug

.PHONY: mame3 mame3d
mame3: bin/coco3.zip
	mame coco3 -skip_gameinfo -rompath ./bin
mame3d: bin/coco3.zip
	mame coco3 -skip_gameinfo -rompath ./bin -debug

.PHONY: mame2b mame2bd
mame2b: bin/coco2b.zip
	mame coco2b -skip_gameinfo -rompath ./bin
mame2bd: bin/coco2b.zip
	mame coco2b -skip_gameinfo -rompath ./bin -debug