Add XZIP interpreter revision A. Some updates to EZIP and ZIP.

This commit is contained in:
Eric Smith 2023-07-03 02:53:57 -06:00
parent c80f8653c8
commit 939785c594
5 changed files with 7673 additions and 547 deletions

View File

@ -11,7 +11,8 @@ all: zip1.lst zip1.bin zip1-check \
ezip2b.lst ezip2b.bin ezip2b-check \ ezip2b.lst ezip2b.bin ezip2b-check \
ezip2c.lst ezip2c.bin ezip2c-check \ ezip2c.lst ezip2c.bin ezip2c-check \
ezip2d.lst ezip2d.bin ezip2d-check \ ezip2d.lst ezip2d.bin ezip2d-check \
ezip2h.lst ezip2h.bin ezip2h-check ezip2h.lst ezip2h.bin ezip2h-check \
xzip2a.lst xzip2a.bin xzip2a-check
%.p %.lst: %.asm %.p %.lst: %.asm
@ -158,9 +159,20 @@ ezip2h-check: ezip2h.bin
echo "2683ce2f038bce968796540a3a9ce652a9e4120d06a75ee2e80c09cab7c09503 ezip2h.bin" | sha256sum -c echo "2683ce2f038bce968796540a3a9ce652a9e4120d06a75ee2e80c09cab7c09503 ezip2h.bin" | sha256sum -c
xzip2a.p xzip2a.lst: xzip.asm
asl xzip.asm -o xzip2a.p -L -OLIST xzip2a.lst -D iver='$$0501'
xzip2a.bin: xzip2a.p
p2bin -r '$$d000-$$feff' xzip2a.p
xzip2a-check: xzip2a.bin
echo "9aaf97852fd38f0015248074e88e3b1045602cbf8d01bb11d489e0687dc5287d xzip2a.bin" | sha256sum -c
clean: clean:
rm -f zip{1,2,3,3a,3b}.{p,lst,bin} rm -f zip{1,2,3,3a,3b}.{p,lst,bin}
rm -f ezip2{a,b,c,d,h}.{p,lst,bin} rm -f ezip2{a,b,c,d,h}.{p,lst,bin}
rm -f xzip2a.{p,lst,bin}
.PRECIOUS: %.lst .PRECIOUS: %.lst

View File

@ -13,8 +13,8 @@ interpreted on a ZIP interpreter. ZIP interpreters were written for
many computers, including the Apple II. In 1983 to 1984 I reverse-engineered 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. 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 ZIP and More recently I've partially reverse-engineered a few newer Apple II
EZIP interpreters. ZIP, EZIP, and XZIP interpreters.
The reverse-engineered "source code" cross-assembles using the The reverse-engineered "source code" cross-assembles using the
Macro Assembler AS, which is open source and supports common development Macro Assembler AS, which is open source and supports common development
@ -63,7 +63,7 @@ printer interface card, which previously was required to be slot 1.
Revision B added support for splitting the screen into two windows. Revision B added support for splitting the screen into two windows.
## Later ZIP interpreters ## Later ZIP interpreter revisions
Between revision B and revision F of the Apple II ZIP interpreters, a Between revision B and revision F of the Apple II ZIP interpreters, a
substantial rearrangement of the code occurred. substantial rearrangement of the code occurred.
@ -75,16 +75,19 @@ with the interpreter.
Currently revisions F, H, K, and M can be built from the source file Currently revisions F, H, K, and M can be built from the source file
"zip-late.asm". "zip-late.asm".
## EZIP ## EZIP
Z-Machine architecture v4 doubled the available virtual machine memory size Z-Machine architecture v4 doubled the available virtual machine memory size
to 256 KiB, allowed a game to have more objects, allowed vocabulary words to to 256 KiB, allowed a game to have more objects, allowed vocabulary words to
have up to nine significant characters, and added some improvements to I/O have up to nine significant characters, and added some improvements to I/O
capabilities. The v4 interpreters are known as EZIP. There were five capabilities. The v4 interpreters are known as EZIP.
revisions of the Apple II EZIP interpreter, designated 2A through 2D, and 2H.
These interpeters require an Apple IIe, IIc, IIC+, or IIgs with at least There were five revisions of the Apple II EZIP interpreter, designated
128 KiB of RAM. 2A through 2D, and 2H. The numric character, 2 is a platform
identifier, referencing the Apple II family, while the alphabetic
character is the revision of the interpreter for that platform. These
interpeters require an Apple IIe, IIc, IIC+, or IIgs with at least 128
KiB of RAM.
As with later Apple II ZIP interpreter versions, the disk routines are more As with later Apple II ZIP interpreter versions, the disk routines are more
tightly integrated with the interpreter. In EZIP (and the later XZIP), tightly integrated with the interpreter. In EZIP (and the later XZIP),
@ -97,11 +100,25 @@ Roland Gustafsson's RWTS18.
Early work on reverse-engineering these is present in the source file Early work on reverse-engineering these is present in the source file
"ezip.asm". This does not use an include file for macro definitions. "ezip.asm". This does not use an include file for macro definitions.
## XZIP and YZIP ## XZIP
Eventually Infocom added even more capabilities, resulting in Z-Machine The Z-Machine architecture v5 added support for character-cell graphics and
architectures 5 and 6, with interpreters known as XZIP and YZIP. timed input. The v5 interpreters are known as XZIP.
These are not currently represented here.
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 revision A is
present in the source file "ezip.asm". This does not use an include
file for macro definitions.
## YZIP
Eventually Infocom added graphics and mouse support, resulting in
Z-Machine architectures 6, with the interpreter known as YZIP.
YZIP is not currently represented here.
## Archive of earliest reverse-engineered source files ## Archive of earliest reverse-engineered source files

1109
ezip.asm

File diff suppressed because it is too large Load Diff

7050
xzip.asm Normal file

File diff suppressed because it is too large Load Diff

View File

@ -360,8 +360,8 @@ pre_nibble:
rts rts
; write data field write_data_field:
S093a: stx Z6e stx Z6e
stx D0d51 stx D0d51
sec sec
@ -893,7 +893,7 @@ L0ce5: sta Z66
lda mtr_off,x lda mtr_off,x
rts rts
L0ceb: jsr S093a L0ceb: jsr write_data_field
bcc L0cdf bcc L0cdf
lda #$10 lda #$10
bne L0ce4 ; always taken bne L0ce4 ; always taken