From 118ab094b127c0173628af526c8c4038b8932578 Mon Sep 17 00:00:00 2001 From: Peter Ferrie Date: Wed, 21 Mar 2018 15:25:48 -0700 Subject: [PATCH] Z2 support --- Makefile | 4 + src/onbeyond/onbeyond.system.s | 13 +- src/onbeyond/z2/0800-21ff.org | Bin 0 -> 6656 bytes src/onbeyond/z2/0800-21ff.pak | Bin 0 -> 4285 bytes src/onbeyond/z2/z2.s | 582 +++++++++++++++++++++++++++++++++ winmake.bat | 2 + 6 files changed, 593 insertions(+), 8 deletions(-) create mode 100644 src/onbeyond/z2/0800-21ff.org create mode 100644 src/onbeyond/z2/0800-21ff.pak create mode 100644 src/onbeyond/z2/z2.s diff --git a/Makefile b/Makefile index 2cd503a..1f1866f 100644 --- a/Makefile +++ b/Makefile @@ -28,6 +28,8 @@ asm: md $(ACME) -r build/grue.system.lst src/grue.system.s $(ACME) -r build/pitchdark.lst src/pitchdark.a $(ACME) -r build/onbeyond.system.lst src/onbeyond/onbeyond.system.s + $(ACME) -r build/z3.lst src/onbeyond/z1/z1.s + $(ACME) -r build/z3.lst src/onbeyond/z2/z2.s $(ACME) -r build/z3.lst src/onbeyond/z3/z3.s $(ACME) -r build/z4.lst src/onbeyond/z4/z4.s $(ACME) -r build/z5.lst src/onbeyond/z5/z5.s @@ -43,6 +45,8 @@ dsk: md asm $(CADIUS) ADDFILE build/"$(DISK)" "/PITCH.DARK/" "res/PITCH.DARK.CONF" $(CADIUS) CREATEFOLDER build/"$(DISK)" "/PITCH.DARK/LIB/" $(CADIUS) ADDFILE build/"$(DISK)" "/PITCH.DARK/LIB/" "build/WEEGUI" + $(CADIUS) ADDFILE build/"$(DISK)" "/PITCH.DARK/LIB/" "build/ONBEYONDZ1" + $(CADIUS) ADDFILE build/"$(DISK)" "/PITCH.DARK/LIB/" "build/ONBEYONDZ2" $(CADIUS) ADDFILE build/"$(DISK)" "/PITCH.DARK/LIB/" "build/ONBEYONDZ3" $(CADIUS) ADDFILE build/"$(DISK)" "/PITCH.DARK/LIB/" "build/ONBEYONDZ4" $(CADIUS) ADDFILE build/"$(DISK)" "/PITCH.DARK/LIB/" "build/ONBEYONDZ5" diff --git a/src/onbeyond/onbeyond.system.s b/src/onbeyond/onbeyond.system.s index c0766c3..c4cd502 100644 --- a/src/onbeyond/onbeyond.system.s +++ b/src/onbeyond/onbeyond.system.s @@ -62,21 +62,18 @@ quit jsr $bf00 bne quit ;select interpreter by auxtype - ;1, 3, 4, 5, "$55" (special case) + ;1, 2, 3, 4, 5, "$55" (special case) lda c4_parms+5 - cmp #1 - beq + - cmp #3 - bcc quit + beq quit cmp #$55 - beq ++ + beq + cmp #6 bcs quit -+ dec filename + dec filename ora #$30 sta version -++ ++ ;get volume name diff --git a/src/onbeyond/z2/0800-21ff.org b/src/onbeyond/z2/0800-21ff.org new file mode 100644 index 0000000000000000000000000000000000000000..69c53945dc1a3c5fe9f5cbdadc2bb745d49ed792 GIT binary patch literal 6656 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 literal 0 HcmV?d00001 diff --git a/src/onbeyond/z2/0800-21ff.pak b/src/onbeyond/z2/0800-21ff.pak new file mode 100644 index 0000000000000000000000000000000000000000..7645ece5fdb85c47aeb1c1ca390234d2f1c0b73c GIT binary patch literal 4285 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 literal 0 HcmV?d00001 diff --git a/src/onbeyond/z2/z2.s b/src/onbeyond/z2/z2.s new file mode 100644 index 0000000..b4da62f --- /dev/null +++ b/src/onbeyond/z2/z2.s @@ -0,0 +1,582 @@ +;license:MIT +;(c) 2017-2018 by qkumba + +!cpu 6502 +!to "build/ONBEYONDZ2#063000",plain +*=$3000 + +!macro version {!scrxor $80, "1/180221"} + + ;user-defined options + verbose_info = 0 ;set to 1 to enable display of memory usage + +gamename=$2940 +savename=$2980 +scrpname=$29C0 + +;unpacker variables, no need to change these +src = $0 +dst = $2 +ecx = $4 +last = $6 +tmp = $8 + +- jsr $bf00 +op_c7 + + !byte $c7 + !word c7_parms + ldx $200 + bne + + lda $bf30 + sta c5_parms+1 + jsr $bf00 + !byte $c5 + !word c5_parms + ldx $201 + inx + txa + and #$0f + sta $200 + lda #$2f + sta $201 + dec op_c7 + bne - ++ + + ldy $2006 + lda #'2' + sta gamename,y + lda #'Z' + sta gamename-1,y + lda #'V' + sta savename+1,y + lda #'A' + sta savename,y + lda #'S' + sta savename-1,y + lda #'G' + sta scrpname+1,y + lda #'O' + sta scrpname,y + lda #'L' + sta scrpname-1,y + dey + dey +- lda $2006,y + sta gamename,y + sta savename,y + sta scrpname,y + dey + bpl - + inc savename + inc scrpname + + lda $306 + eor $305 + eor $304 + eor $303 + eor $302 + eor $301 + eor $300 + eor #$a5 + beq + + ldx #0 + stx $303 ;no script + stx $304 + dex + stx $302 ;no load ++ + + jsr $fe93 + jsr $fc58 + lda #$17 + sta $25 + lda #0 + sta $24 + sta $57b + jsr $fc22 + ldy #0 + beq + +- jsr $fdf0 + iny ++ lda brandtext,y + bne - + + lda #>pakoff + sta src + 1 + lda #print + sta $1bec + lda #printer + sta $1d63 + + lda $304 + beq + + lda #callbackprn1 + sta $1d4b ++ + ldx $302 + inx + beq + + lda $1d4a + sta loadcall1+1 + lda $1d4b + sta loadcall2+1 + lda #callback1 + sta $1d4b ++ + + lda #savefile + sta $2066 + lda #loadfile + sta $20ff + lda #closefile + sta $20e7 + sta $20ed + sta $2193 + sta $2199 + lda #quit + sta $21d2 + + jsr closefile + lda #$60 + sta $7c ;! + jmp $800 + +brandtext + !scrxor $80, "ON BEYOND Z-MACHINE! REVISION " + +version + !byte 0 + +c7_parms + !byte 1 + !word $200 + +c5_parms + !byte 2 + !byte 0 + !word $201 + +unrelochdd +!pseudopc $2800 { + clc + adc #$c9 + sta pro_op + lda #0 + sta ce_parms+2 + lda $e4 + sta ce_parms+3 + lda $e5 + sta ce_parms+4 + lda $e7 + sta ca_parms+3 + +- jsr $bf00 + !byte $ce ;seek + !word ce_parms + bcc + + jsr $bf00 + !byte $d0 ;set EOF + !word ce_parms + bcc - + ++ + jsr $bf00 +pro_op + !byte $ca ;read file + !word ca_parms + bcs quit + rts + +printer + ldx $eb + lda #$8d + sta $200,x + inx + stx cb_parms+4 + lda #printer + sta $1bec + + lda #