From adb74d6fb4eb51502cd998c430614518b3fbdd16 Mon Sep 17 00:00:00 2001 From: blondie7575 Date: Sun, 1 Oct 2017 17:36:09 -0700 Subject: [PATCH] First pass on ProDOS-based bank loader --- .gitignore | 1 + Makefile | 16 +++++++++--- equates.s | 2 ++ gscats.2mg | Bin 819264 -> 819264 bytes gscats.s | 6 +++-- loader.s | 75 +++++++++++++++++++++++++++++++++++++++-------------- 6 files changed, 74 insertions(+), 26 deletions(-) diff --git a/.gitignore b/.gitignore index 21f6ef7..57794ad 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /GSCats.xcodeproj/xcuserdata/qd.xcuserdatad/xcschemes/GSCats.xcscheme /gscats.lst /GSCats.xcodeproj/xcuserdata/qd.xcuserdatad/xcdebugger +/loader.lst diff --git a/Makefile b/Makefile index db5dc84..3cdc012 100644 --- a/Makefile +++ b/Makefile @@ -17,23 +17,31 @@ PGM=gscats MRSPRITE=../MrSprite/mrsprite CODE PALETTE=00ff00 000000 ffff00 886611 cc9933 eebb44 dd6666 ff99aa 00ff00 ffff00 ffff00 ffff00 ffff00 ffff00 ffff00 ffff00 ffffff -all: $(PGM) +all: loader $(PGM) $(PGM): @PATH=$(PATH):/usr/local/bin; $(CL65) -t apple2enh --cpu 65816 --start-addr $(ADDR) -l$(PGM).lst $(PGM).s - java -jar $(AC) -d $(PGM).2mg $(PGM) - java -jar $(AC) -p $(PGM).2mg $(PGM) BIN 0x$(ADDR) < $(PGM) + java -jar $(AC) -d $(PGM).2mg CODEBANK + java -jar $(AC) -p $(PGM).2mg CODEBANK BIN 0x$(ADDR) < $(PGM) java -jar $(AC) -d $(PGM).2mg SPRITEBANK00 java -jar $(AC) -p $(PGM).2mg SPRITEBANK00 BIN 0x0000 < Art/spritebank00.bin rm -f $(PGM) rm -f $(PGM).o osascript V2Make.scpt $(PROJECT_DIR) $(PGM) +loader: + @PATH=$(PATH):/usr/local/bin; $(CL65) -t apple2enh --cpu 65816 --start-addr $(ADDR) -lloader.lst loader.s + java -jar $(AC) -d $(PGM).2mg $(PGM) + java -jar $(AC) -p $(PGM).2mg $(PGM) BIN 0x$(ADDR) < loader + rm -f loader + rm -f loader.o + clean: rm -f $(PGM) rm -f $(PGM).o - rm ~/Library/Application\ Support/Sweet16/Disk\ Images/* + rm -f loader + rm -f loader.o .PHONY: art art: diff --git a/equates.s b/equates.s index 5b9c40c..c63468e 100644 --- a/equates.s +++ b/equates.s @@ -9,6 +9,8 @@ KBDSTROBE = $e0c010 COUT = $fded VRAM = $e12000 VRAMBANK = $e10000 +PRODOS = $bf00 ; MLI entry point +PRODOSRETURN = $300 ; Indirect jump to get back to ProDOS from any bank ; Zero page locations we use (unused by Monitor, Applesoft, or ProDOS) PARAM0 = $06 diff --git a/gscats.2mg b/gscats.2mg index c7e2eec056c10586611cd6268ce3736b6c354087..276262f879f01cf3e5989452d4712b881735fa41 100644 GIT binary patch delta 11422 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