diff --git a/Makefile b/Makefile index 2616bcf..332d6b4 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,8 @@ all: zip1.lst zip1.bin zip1-check \ xzip2a.lst xzip2a.bin xzip2a-check \ xzip2c.lst xzip2c.bin xzip2c-check \ xzip2e.lst xzip2e.bin xzip2e-check \ - xzip2f.lst xzip2f.bin xzip2f-check + xzip2f.lst xzip2f.bin xzip2f-check \ + xzip2h.lst xzip2h.bin xzip2h-check %.p %.lst: %.asm @@ -202,10 +203,20 @@ xzip2f-check: xzip2f.bin echo "1df3dc06b9bbf9876a21ea67fa394bbbb44ca743b61380e9238a71e3bc2ec33d xzip2f.bin" | sha256sum -c +xzip2h.p xzip2h.lst: xzip.asm + asl xzip.asm -o xzip2h.p -L -OLIST xzip2h.lst -D iver='$$0508' + +xzip2h.bin: xzip2h.p + p2bin -r '$$d000-$$feff' xzip2h.p + +xzip2h-check: xzip2h.bin + echo "8743ec267305e7dc2a183fdb806fdd96bdaed4d02cbcd636294639dd019a6d40 xzip2h.bin" | sha256sum -c + + clean: - rm -f zip{1,2,3,3a,3b}.{p,lst,bin} + rm -f zip{1,2,3,3a,3b,3f,3h,3m}.{p,lst,bin} rm -f ezip2{a,b,c,d,h}.{p,lst,bin} - rm -f xzip2{a,c,e,f}.{p,lst,bin} + rm -f xzip2{a,c,e,f,h}.{p,lst,bin} .PRECIOUS: %.lst diff --git a/README.md b/README.md index 7724d04..32460a9 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ interpreted on a ZIP interpreter. ZIP interpreters were written for many computers, including the Apple II. In 1983 to 1984 I reverse-engineered a substantial portion of the Apple II version 1 through 3 ZIP interpreters. -More recently I've partially reverse-engineered a few newer Apple II +More recently I've partially reverse-engineered soem newer Apple II ZIP, EZIP, and XZIP interpreters. The reverse-engineered "source code" cross-assembles using the @@ -109,9 +109,8 @@ There were five revisions of the Apple II XZIP interpreter, A, C, E, F, and H. The platform number will be reported as 2, except when using an Apple IIc, which will be reported as 9. -Early work on reverse-engineering XZIP interpreter revisions A, C, E, and F -are present in the source file "xzip.asm". This does not use an -include file for macro definitions. +Early work on reverse-engineering thes is present int eh source file +"xzip.asm". This does not use an include file for macro definitions. ## YZIP diff --git a/xzip.asm b/xzip.asm index edd964a..41dcbd8 100644 --- a/xzip.asm +++ b/xzip.asm @@ -1601,7 +1601,7 @@ Sd871: lda #'1' Sd899: if iver>=iver_e - lda $f0d4 + lda Df0d4 beq .fwd1 jmp Sd871 endif @@ -1949,8 +1949,12 @@ msg_out: ldx #$00 .loop1: .lda: fcb $bd,$00,$00 ; lda $0000,x ; self-modifying code, MUST be absolute,x + + if iver<=iver_f ldy invflg bpl .fwd1 + endif + ora #$80 .fwd1: jsr Sdb39 inx @@ -2092,7 +2096,11 @@ op_set_window: ldx Zc7 lda cursrv sta Dfdea,x + + if iver<=iver_f sta Dfde6,x + endif + lda D057b sta Dfde8,x lda arg1 @@ -2120,7 +2128,11 @@ op_set_window: ldx Zc7 lda Dfdea,x sta cursrv + + if iver<=iver_f lda Dfde6,x + endif + lda Dfde8,x sta D057b jmp S08a9 @@ -6070,8 +6082,12 @@ Sf69a: sta Zdc .fwd3: cmp #' ' bcc .rtn + + if iver<=iver_f ldx invflg bpl .fwd4 + endif + ora #$80 .fwd4: ldx Zd6 sta D0200,x @@ -6644,8 +6660,12 @@ op_print_table: beq .fwd1 lda arg3 .fwd1: sta Z71 + + if iver<=iver_f lda cursrh sta Z6d + endif + lda D057b sta Z6d+1 lda cursrv @@ -6784,8 +6804,12 @@ Sfada: jsr Sf8e1 sta Dfde4 cmp #$80 bcs .fwd6 + + if iver<=iver_f ldx invflg bpl .fwd5 + endif + ora #$80 .fwd5: jsr Sdb39 .fwd6: lda Dfde4 @@ -6827,7 +6851,13 @@ Sfada: jsr Sf8e1 and #$01 beq .fwd11 ldy Dfde3 + + if iver<=iver_f lda #$0d + else + lda #$00 + endif + sta (Zc8),y ldx Dfde3 dex