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 \
ezip2c.lst ezip2c.bin ezip2c-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
@ -158,9 +159,20 @@ ezip2h-check: ezip2h.bin
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:
rm -f zip{1,2,3,3a,3b}.{p,lst,bin}
rm -f ezip2{a,b,c,d,h}.{p,lst,bin}
rm -f xzip2a.{p,lst,bin}
.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
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
EZIP interpreters.
More recently I've partially reverse-engineered a few newer Apple II
ZIP, EZIP, and XZIP interpreters.
The reverse-engineered "source code" cross-assembles using the
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.
## Later ZIP interpreters
## Later ZIP interpreter revisions
Between revision B and revision F of the Apple II ZIP interpreters, a
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
"zip-late.asm".
## EZIP
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
have up to nine significant characters, and added some improvements to I/O
capabilities. The v4 interpreters are known as EZIP. There were five
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
128 KiB of RAM.
capabilities. The v4 interpreters are known as EZIP.
There were five revisions of the Apple II EZIP interpreter, designated
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
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
"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
architectures 5 and 6, with interpreters known as XZIP and YZIP.
These are not currently represented here.
The Z-Machine architecture v5 added support for character-cell graphics and
timed input. The v5 interpreters are known as XZIP.
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

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
; write data field
S093a: stx Z6e
write_data_field:
stx Z6e
stx D0d51
sec
@ -893,7 +893,7 @@ L0ce5: sta Z66
lda mtr_off,x
rts
L0ceb: jsr S093a
L0ceb: jsr write_data_field
bcc L0cdf
lda #$10
bne L0ce4 ; always taken