mirror of
https://github.com/brouhaha/a2zip.git
synced 2024-05-29 01:41:29 +00:00
Compare commits
4 Commits
5d0f9c1334
...
c80f8653c8
Author | SHA1 | Date | |
---|---|---|---|
|
c80f8653c8 | ||
|
988c140bc7 | ||
|
dfba493013 | ||
|
06d5238abf |
35
Makefile
35
Makefile
|
@ -4,6 +4,9 @@ all: zip1.lst zip1.bin zip1-check \
|
|||
zip3a.lst zip3a.bin zip3a-check \
|
||||
zip3b.lst zip3b.bin zip3b-check \
|
||||
zip3f.lst zip3f.bin zip3f-check \
|
||||
zip3h.lst zip3h.bin zip3h-check \
|
||||
zip3k.lst zip3k.bin zip3k-check \
|
||||
zip3m.lst zip3m.bin zip3m-check \
|
||||
ezip2a.lst ezip2a.bin ezip2a-check \
|
||||
ezip2b.lst ezip2b.bin ezip2b-check \
|
||||
ezip2c.lst ezip2c.bin ezip2c-check \
|
||||
|
@ -65,7 +68,7 @@ zip3b-check: zip3b.bin
|
|||
echo "98ab866beb68f1d78b978a36106e611fd9196ffe7cd6d2e534c145197be3ebc1 zip3b.bin" | sha256sum -c -
|
||||
|
||||
|
||||
zip3f.p zip3f.lst: zip.asm
|
||||
zip3f.p zip3f.lst: zip-late.asm
|
||||
asl zip-late.asm -o zip3f.p -L -OLIST zip3f.lst -D iver='$$0306'
|
||||
|
||||
zip3f.bin: zip3f.p
|
||||
|
@ -75,6 +78,36 @@ zip3f-check: zip3f.bin
|
|||
echo "6bcc991eb5bdc55a6c0ddb6f307c630ee273f7b95ad0d5f3bc1d9e34ee0ed988 zip3f.bin" | sha256sum -c -
|
||||
|
||||
|
||||
zip3h.p zip3h.lst: zip-late.asm
|
||||
asl zip-late.asm -o zip3h.p -L -OLIST zip3h.lst -D iver='$$0308'
|
||||
|
||||
zip3h.bin: zip3h.p
|
||||
p2bin -r '$$0900-$$27ff' zip3h.p
|
||||
|
||||
zip3h-check: zip3h.bin
|
||||
echo "7523c44811190cbce363eaf9ed04f67780794a86d849470acd5e0b8b6bb4d6a7 zip3h.bin" | sha256sum -c -
|
||||
|
||||
|
||||
zip3k.p zip3k.lst: zip-late.asm
|
||||
asl zip-late.asm -o zip3k.p -L -OLIST zip3k.lst -D iver='$$030b'
|
||||
|
||||
zip3k.bin: zip3k.p
|
||||
p2bin -r '$$0900-$$27ff' zip3k.p
|
||||
|
||||
zip3k-check: zip3k.bin
|
||||
echo "0fd531fb0366bff94fdc1e4e95fee8ca77d2a513d3dbb5ddc4fd518acbeb0c60 zip3k.bin" | sha256sum -c -
|
||||
|
||||
|
||||
zip3m.p zip3m.lst: zip-late.asm
|
||||
asl zip-late.asm -o zip3m.p -L -OLIST zip3m.lst -D iver='$$030d'
|
||||
|
||||
zip3m.bin: zip3m.p
|
||||
p2bin -r '$$0900-$$27ff' zip3m.p
|
||||
|
||||
zip3m-check: zip3m.bin
|
||||
echo "e9f42d7f2ea8b8cd942a95abc11a90a46d69fa4dd3102bd1ec35bb9cfd3f9a97 zip3m.bin" | sha256sum -c -
|
||||
|
||||
|
||||
ezip2a.p ezip2a.lst: ezip.asm
|
||||
asl ezip.asm -o ezip2a.p -L -OLIST ezip2a.lst -D iver='$$0201'
|
||||
|
||||
|
|
13
README.md
13
README.md
|
@ -66,14 +66,15 @@ Revision B added support for splitting the screen into two windows.
|
|||
## Later ZIP interpreters
|
||||
|
||||
Between revision B and revision F of the Apple II ZIP interpreters, a
|
||||
substantial rearrangement of the code occurred. These and later changes
|
||||
to the v3 interpreter have not yet been fully analyzed.
|
||||
substantial rearrangement of the code occurred.
|
||||
|
||||
Currently revision F can be built from the source file "zip-late.asm".
|
||||
The disk I/O routines are derived from RWTS but no longer structured
|
||||
in the same way as Apple DOS RWTS, and are now more tightly integrated
|
||||
with the interpreter.
|
||||
|
||||
Currently revisions F, H, K, and M can be built from the source file
|
||||
"zip-late.asm".
|
||||
|
||||
The disk I/O routines are derived from RWTS but no longer
|
||||
structured in the same way as RWTS, and are now more tightly integrated with
|
||||
the interpreter.
|
||||
|
||||
## EZIP
|
||||
|
||||
|
|
47
ezip.asm
47
ezip.asm
|
@ -7,40 +7,42 @@
|
|||
|
||||
cpu 6502
|
||||
|
||||
iver2a equ $0201 ; 2A has exactly four save positions per disk, will only
|
||||
; The differences between revisions stated here is not comprehensizve.
|
||||
|
||||
iver2a equ $0201 ; Has exactly four save positions per disk, will only
|
||||
; work for games that have up to 32 KiB saves.
|
||||
; released with A Mind Forever Voyaging r77 850814
|
||||
; Released with A Mind Forever Voyaging r77 850814
|
||||
|
||||
iver2b equ $0202 ; 2B allows disks to have three or four save positions,
|
||||
iver2b equ $0202 ; Allows disks to have three or four save positions,
|
||||
; supporting games with up to 46 KiB saves.
|
||||
; 2B forces CSWL to be COUT1 at start.
|
||||
; 2B adds "be patient" message to verify.
|
||||
; 2B radically changes implementation of get_prop_addr,
|
||||
; Forces CSWL to be COUT1 at start.
|
||||
; Adds "be patient" message to verify.
|
||||
; Radically changes implementation of get_prop_addr,
|
||||
; purpose unknown.
|
||||
; 2B changes random number generator, purpose unknown.
|
||||
; 2B changes subroutine Seb96, purpose unknown.
|
||||
; 2B changes some constants in save and restore,
|
||||
; Changes random number generator, purpose unknown.
|
||||
; Changes subroutine Seb96, purpose unknown.
|
||||
; Changes some constants in save and restore,
|
||||
; purpose unknown.
|
||||
; released with Trinity r11 860509
|
||||
; Released with Trinity r11 860509
|
||||
|
||||
iver2c equ $0203 ; 2C makes a change to deselecting output stream 3
|
||||
iver2c equ $0203 ; Changes deselecting output stream 3
|
||||
; (table), to prevent table stream stack underflow.
|
||||
; 2C changes data tables used by random number generator,
|
||||
; Changes data tables used by random number generator,
|
||||
; purpose unknown.
|
||||
; released with Bureaucracy r86 870212
|
||||
; Released with Bureaucracy r86 870212
|
||||
|
||||
iver2d equ $0204 ; 2D changes spaces to tabs in save messages (probably
|
||||
iver2d equ $0204 ; Changes spaces to tabs in save messages (probably
|
||||
; by mistake).
|
||||
; 2D changes a constant in scan_table, purpose unknown.
|
||||
; released with Bureaucracy r116 870602
|
||||
; Changes a constant in scan_table, purpose unknown.
|
||||
; Released with Bureaucracy r116 870602
|
||||
|
||||
; No Apple II games with EZIP versions 2E through 2G have been found
|
||||
|
||||
iver2h equ $0208 ; 2H removes several calls to HOME.
|
||||
; 2H changes the tabs in messages back to spaces.
|
||||
; 2H adds two extra carriage returns at the end of
|
||||
iver2h equ $0208 ; Removes several calls to HOME.
|
||||
; Changes the tabs in messages back to spaces.
|
||||
; Adds two extra carriage returns at the end of
|
||||
; some messages.
|
||||
; released with Nord and Bert r19 870723
|
||||
; Released with Nord and Bert r19 870723
|
||||
|
||||
|
||||
char_tab equ $09
|
||||
|
@ -501,8 +503,7 @@ Sd03a: stx Z0e
|
|||
ldy #rwts_sec_buf_size
|
||||
bne .lp2a
|
||||
.loop2: lda rwts_sec_buf,y
|
||||
.lp2a:
|
||||
eor rwts_sec_buf-1,y
|
||||
.lp2a: eor rwts_sec_buf-1,y
|
||||
tax
|
||||
lda nib_tab,x
|
||||
ldx Z0e
|
||||
|
@ -791,7 +792,7 @@ denib_tab equ *-$96
|
|||
; $01 = write 16-sector
|
||||
; $80 = read 18-sector
|
||||
rwts_inner:
|
||||
sta rwts_cmd ; command
|
||||
sta rwts_cmd
|
||||
lda #$02
|
||||
sta Dd475
|
||||
asl
|
||||
|
|
456
zip-late.asm
456
zip-late.asm
|
@ -7,13 +7,23 @@
|
|||
|
||||
cpu 6502
|
||||
|
||||
iver3f equ $0306
|
||||
; The differences between revisions stated here is not comprehensizve.
|
||||
|
||||
iver3h equ $0308
|
||||
iver3f equ $0306 ; Substantially rearranged compared to B.
|
||||
; Incorporates RWTS-equivalent routines.
|
||||
|
||||
iver3k equ $030b
|
||||
iver3h equ $0308 ; Sends 80-col sequence to printer firmware.
|
||||
; Accepts backspace character.
|
||||
; Quit says end of session rather than end of story.
|
||||
; Doesn't use self-modifying code for verify.
|
||||
|
||||
iver3k equ $030b ; Disk routines rearranged.
|
||||
; Forces CSWL to be COUT at start.
|
||||
|
||||
iver3m equ $030d ; Eliminated some manipulation of the screen window
|
||||
; in save and restore.
|
||||
; Fixed a bug in upper/lower case conversion.
|
||||
|
||||
iver3m equ $030d
|
||||
|
||||
|
||||
ifndef iver
|
||||
|
@ -22,6 +32,7 @@ iver equ iver3f
|
|||
|
||||
|
||||
char_bs equ $08
|
||||
char_tab equ $09
|
||||
char_cr equ $0d
|
||||
char_del equ $7f
|
||||
|
||||
|
@ -234,6 +245,9 @@ rwts_sec_buf: rmb rwts_sec_buf_size
|
|||
D2c00: rmb 256
|
||||
D2d00: rmb 256
|
||||
|
||||
if iver>=iver3h
|
||||
D2e00:
|
||||
endif
|
||||
rmb 256
|
||||
|
||||
stk_low_bytes: rmb 256 ; stack, low bytes
|
||||
|
@ -300,6 +314,7 @@ home equ $fc58
|
|||
clreol equ $fc9c
|
||||
rdkey equ $fd0c
|
||||
cout equ $fded
|
||||
cout1 equ $fdf0
|
||||
bell equ $ff3a
|
||||
|
||||
org $0900
|
||||
|
@ -381,9 +396,9 @@ S093a: stx Z6e
|
|||
; write secondary buffer (reverse order)
|
||||
tya
|
||||
ldy #rwts_sec_buf_size
|
||||
bne .lp2Z
|
||||
bne .lp2a
|
||||
.loop2: lda rwts_sec_buf,y
|
||||
.lp2Z: eor rwts_sec_buf-1,y
|
||||
.lp2a: eor rwts_sec_buf-1,y
|
||||
tax
|
||||
lda nib_tab,x
|
||||
ldx Z6e
|
||||
|
@ -439,6 +454,8 @@ write_21:
|
|||
; +6 jsr
|
||||
|
||||
|
||||
if iver<=iver3h
|
||||
|
||||
post_nibble:
|
||||
ldy #$00
|
||||
.loop1: ldx #rwts_sec_buf_size
|
||||
|
@ -455,6 +472,8 @@ post_nibble:
|
|||
bne .loop2
|
||||
rts
|
||||
|
||||
endif
|
||||
|
||||
|
||||
read_data_field_16:
|
||||
ldy #$20
|
||||
|
@ -515,7 +534,8 @@ read_data_field_16:
|
|||
bpl .loop12
|
||||
cmp #$aa ; check for data field epilogue 2nd byte
|
||||
beq read_address_field_success
|
||||
read_data_field_16_fail: sec
|
||||
read_data_field_16_fail:
|
||||
sec
|
||||
rts
|
||||
|
||||
|
||||
|
@ -582,7 +602,7 @@ seek_track:
|
|||
sta Z6e
|
||||
sec
|
||||
sbc Z6c
|
||||
beq .fwd4
|
||||
beq .fwd5
|
||||
bcs .fwd1
|
||||
eor #$ff
|
||||
inc D0d3e
|
||||
|
@ -593,9 +613,9 @@ seek_track:
|
|||
bcc .fwd3
|
||||
lda Z6d
|
||||
.fwd3: cmp #$0c
|
||||
bcs denib_tab
|
||||
bcs .fwd4
|
||||
tay
|
||||
sec
|
||||
.fwd4: sec
|
||||
jsr .subr1
|
||||
lda motor_on_time_tab,y
|
||||
jsr delay
|
||||
|
@ -606,7 +626,7 @@ seek_track:
|
|||
jsr delay
|
||||
inc Z6d
|
||||
bne .loop1
|
||||
.fwd4: jsr delay
|
||||
.fwd5: jsr delay
|
||||
clc
|
||||
.subr1: lda D0d3e
|
||||
.subr2: and #$03
|
||||
|
@ -618,6 +638,13 @@ seek_track:
|
|||
.rtn: rts
|
||||
|
||||
|
||||
if iver>=iver3k
|
||||
align $0100,$00
|
||||
endif
|
||||
|
||||
|
||||
if iver<=iver3h
|
||||
|
||||
delay: ldx #$11
|
||||
.loop1: dex
|
||||
bne .loop1
|
||||
|
@ -629,6 +656,28 @@ delay: ldx #$11
|
|||
bne delay
|
||||
rts
|
||||
|
||||
endif
|
||||
|
||||
|
||||
if iver>=iver3k
|
||||
|
||||
S0cfc: sta Z6c
|
||||
jsr S0d1f
|
||||
lda D0d3e,y
|
||||
bit Z6a
|
||||
bmi L0d0b
|
||||
lda D0d46,y
|
||||
L0d0b: sta D0d3e
|
||||
lda Z6c
|
||||
bit Z6a
|
||||
bmi L0d19
|
||||
sta D0d46,y
|
||||
bpl L0d1c
|
||||
L0d19: sta D0d3e,y
|
||||
L0d1c: jmp seek_track
|
||||
|
||||
endif
|
||||
|
||||
|
||||
motor_on_time_tab:
|
||||
fcb $01,$30,$28,$24,$20,$1e,$1d,$1c
|
||||
|
@ -665,6 +714,24 @@ denib_tab equ *-$96
|
|||
fcb $3e,$3f
|
||||
|
||||
|
||||
if iver>=iver3k
|
||||
|
||||
align $0100,$00
|
||||
|
||||
delay: ldx #$11
|
||||
.loop1: dex
|
||||
bne .loop1
|
||||
inc Z73
|
||||
bne .fwd1
|
||||
inc Z74
|
||||
.fwd1: sec
|
||||
sbc #$01
|
||||
bne delay
|
||||
rts
|
||||
|
||||
endif
|
||||
|
||||
|
||||
; On entry:
|
||||
; A = command
|
||||
; $00 = read 16-sector
|
||||
|
@ -793,18 +860,31 @@ L0cc2: ldy rwts_sector ; logical sector number
|
|||
lda D0835,y ; map to physical sector number via interleave table in boot1
|
||||
cmp Z70 ; does it match physical sector number?
|
||||
bne L0c80 ; no
|
||||
|
||||
plp
|
||||
bcs L0ceb
|
||||
jsr read_data_field_16
|
||||
|
||||
if iver<=iver3h
|
||||
|
||||
php
|
||||
bcs L0c80
|
||||
plp
|
||||
|
||||
else
|
||||
|
||||
bcc L0d08
|
||||
clc
|
||||
php
|
||||
bcc L0c80
|
||||
L0d08:
|
||||
|
||||
endif
|
||||
|
||||
ldx #$00
|
||||
stx Z6d
|
||||
jsr post_nibble
|
||||
ldx D0d50
|
||||
|
||||
L0cdf: lda #$00
|
||||
clc
|
||||
bcc L0ce5
|
||||
|
@ -826,6 +906,8 @@ S0cf4: asl
|
|||
rts
|
||||
|
||||
|
||||
if iver<=iver3h
|
||||
|
||||
S0cfc: sta Z6c
|
||||
jsr S0d1f
|
||||
lda D0d3e,y
|
||||
|
@ -841,6 +923,8 @@ L0d0b: sta D0d3e
|
|||
L0d19: sta D0d3e,y
|
||||
L0d1c: jmp seek_track
|
||||
|
||||
endif
|
||||
|
||||
|
||||
S0d1f: txa
|
||||
lsr
|
||||
|
@ -865,6 +949,28 @@ S0d26: pha
|
|||
.fwd1: sta D0d3e,y
|
||||
.rtn: rts
|
||||
|
||||
|
||||
if iver>=iver3k
|
||||
|
||||
post_nibble:
|
||||
ldy #$00
|
||||
.loop1: ldx #rwts_sec_buf_size
|
||||
.loop2: dex
|
||||
bmi .loop1
|
||||
lda rwts_pri_buf,y
|
||||
lsr rwts_sec_buf,x
|
||||
rol
|
||||
lsr rwts_sec_buf,x
|
||||
rol
|
||||
sta (rwts_buf),y
|
||||
iny
|
||||
cpy Z6d
|
||||
bne .loop2
|
||||
rts
|
||||
|
||||
endif
|
||||
|
||||
|
||||
D0d3e: fcb $00,$00,$00,$00,$00,$00,$00,$00
|
||||
D0d46: fcb $00,$00,$00,$00,$00,$00,$00,$00
|
||||
D0d4e: fcb $00
|
||||
|
@ -967,6 +1073,8 @@ int_err_0e_alt:
|
|||
|
||||
|
||||
e_0dd9: jsr op_new_line
|
||||
|
||||
if iver<=iver3k
|
||||
lda #$00
|
||||
sta wndtop
|
||||
jsr home
|
||||
|
@ -977,6 +1085,14 @@ e_0dd9: jsr op_new_line
|
|||
sta cursrv
|
||||
jmp S144e
|
||||
|
||||
else
|
||||
|
||||
lda #$00
|
||||
sta Zdf
|
||||
rts
|
||||
|
||||
endif
|
||||
|
||||
|
||||
msg_default_is: text_str " (Default is "
|
||||
D0dfe: text_str "*) >"
|
||||
|
@ -1067,7 +1183,7 @@ S0e91: prt_msg position
|
|||
lda Zf1
|
||||
jsr S0e02
|
||||
.loop2: jsr S11c5
|
||||
cmp #$0d
|
||||
cmp #char_cr
|
||||
beq .fwd3
|
||||
sec
|
||||
sbc #'1'
|
||||
|
@ -1093,10 +1209,10 @@ S0e91: prt_msg position
|
|||
lda D0e34
|
||||
jsr S0e02
|
||||
.loop3: jsr S11c5
|
||||
cmp #$0d
|
||||
cmp #char_cr
|
||||
beq .fwd6
|
||||
sec
|
||||
sbc #$31
|
||||
sbc #'1'
|
||||
cmp #$07
|
||||
bcc .fwd7
|
||||
jsr bell
|
||||
|
@ -1131,11 +1247,15 @@ S0e91: prt_msg position
|
|||
|
||||
.fwd10: prt_msg yes
|
||||
lda Zf3
|
||||
if iver==iver3f
|
||||
sta Zf1
|
||||
endif
|
||||
sta Z62
|
||||
inc Z62
|
||||
ldx Zf4
|
||||
if iver==iver3f
|
||||
stx D0e34
|
||||
endif
|
||||
inx
|
||||
txa
|
||||
asl
|
||||
|
@ -1144,7 +1264,9 @@ S0e91: prt_msg position
|
|||
asl
|
||||
sta Z60
|
||||
lda Zf2
|
||||
if iver==iver3f
|
||||
sta Zf0
|
||||
endif
|
||||
asl
|
||||
asl
|
||||
sta rwts_track
|
||||
|
@ -1176,12 +1298,26 @@ msg_insert_story:
|
|||
msg_len_insert_story equ *-msg_insert_story
|
||||
|
||||
|
||||
S0ff8: lda D172e
|
||||
S0ff8:
|
||||
if iver>=iver3h
|
||||
lda Z62
|
||||
pha
|
||||
endif
|
||||
|
||||
lda D172e
|
||||
ldx D172d
|
||||
sta Z62
|
||||
stx Z60
|
||||
|
||||
if iver==iver3f
|
||||
lda Zf1
|
||||
bne .fwd2
|
||||
else
|
||||
pla
|
||||
cmp #$02
|
||||
beq .fwd2
|
||||
endif
|
||||
|
||||
.loop1: prt_msg insert_story
|
||||
jsr S0f9e
|
||||
ldx #$01
|
||||
|
@ -1228,8 +1364,11 @@ msg_len_saving_position equ *-msg_saving_position
|
|||
|
||||
|
||||
op_save:
|
||||
if iver<=iver3k
|
||||
lda wndtop
|
||||
pha
|
||||
endif
|
||||
|
||||
jsr e_0dd9
|
||||
prt_msg save_position
|
||||
jsr S0e91
|
||||
|
@ -1255,9 +1394,13 @@ op_save:
|
|||
bcc .fwd1
|
||||
|
||||
.loop2: jsr S0ff8
|
||||
|
||||
if iver<=iver3k
|
||||
pla
|
||||
sta wndtop
|
||||
jsr home
|
||||
endif
|
||||
|
||||
jmp predicate_false
|
||||
|
||||
.fwd1: lda #(hdr_arch>>8)-3
|
||||
|
@ -1275,11 +1418,23 @@ op_save:
|
|||
bcs .loop2
|
||||
dec Z8e
|
||||
bne .loop4
|
||||
|
||||
jsr S0ff8
|
||||
|
||||
if iver>=iver3h
|
||||
lda Zf3
|
||||
sta Zf1
|
||||
lda Zf4
|
||||
sta D0e34
|
||||
lda Zf2
|
||||
sta Zf0
|
||||
endif
|
||||
|
||||
if iver<=iver3k
|
||||
pla
|
||||
sta wndtop
|
||||
jsr home
|
||||
endif
|
||||
|
||||
jmp predicate_true
|
||||
|
||||
|
||||
|
@ -1298,8 +1453,11 @@ msg_len_restoring_position equ *-msg_restoring_position
|
|||
|
||||
|
||||
op_restore:
|
||||
if iver<=iver3k
|
||||
lda wndtop
|
||||
pha
|
||||
endif
|
||||
|
||||
jsr e_0dd9
|
||||
prt_msg restore_position
|
||||
jsr S0e91
|
||||
|
@ -1329,9 +1487,13 @@ op_restore:
|
|||
bpl .loop3
|
||||
|
||||
jsr S0ff8
|
||||
|
||||
if iver<=iver3k
|
||||
pla
|
||||
sta wndtop
|
||||
jsr home
|
||||
endif
|
||||
|
||||
jmp predicate_false
|
||||
|
||||
.fwd1: lda hdr_flags2
|
||||
|
@ -1374,9 +1536,22 @@ op_restore:
|
|||
lda #$00
|
||||
sta Z99
|
||||
jsr S0ff8
|
||||
|
||||
if iver>=iver3h
|
||||
lda Zf3
|
||||
sta Zf1
|
||||
lda Zf4
|
||||
sta D0e34
|
||||
lda Zf2
|
||||
sta Zf0
|
||||
endif
|
||||
|
||||
if iver<=iver3k
|
||||
pla
|
||||
sta wndtop
|
||||
jsr home
|
||||
endif
|
||||
|
||||
jmp predicate_true
|
||||
|
||||
|
||||
|
@ -1385,10 +1560,14 @@ S11c5: cld
|
|||
pha
|
||||
tya
|
||||
pha
|
||||
.loop1: lda D172b
|
||||
.loop1:
|
||||
if iver==iver3f
|
||||
lda D172b
|
||||
beq .fwd0
|
||||
lda cur80h
|
||||
sta cursrh
|
||||
endif
|
||||
|
||||
.fwd0: jsr rdkey
|
||||
and #$7f
|
||||
cmp #$0d
|
||||
|
@ -1403,10 +1582,28 @@ S11c5: cld
|
|||
bne .fwd3
|
||||
jmp .fwd6
|
||||
|
||||
.fwd3: cmp #$20
|
||||
.fwd3:
|
||||
if iver>=iver3h
|
||||
ldx #D1243_len-1
|
||||
.loop1a:
|
||||
cmp D1243,x
|
||||
beq .fwd3a
|
||||
dex
|
||||
bpl .loop1a
|
||||
bmi .fwd3b ; always taken
|
||||
|
||||
.fwd3a: lda D124d,x
|
||||
bne .fwd6 ; always taken
|
||||
|
||||
.fwd3b:
|
||||
endif
|
||||
|
||||
cmp #$20
|
||||
bcc .fwd5
|
||||
cmp #$2b
|
||||
beq .fwd5
|
||||
|
||||
if iver==iver3f
|
||||
cmp #$3c
|
||||
bne .fwd4
|
||||
lda #$2c
|
||||
|
@ -1456,6 +1653,7 @@ S11c5: cld
|
|||
bne .fwd4i
|
||||
lda #$39
|
||||
bne .fwd6 ; always taken
|
||||
endif
|
||||
|
||||
.fwd4i: cmp #$3c
|
||||
bcc .fwd6
|
||||
|
@ -1485,15 +1683,35 @@ S11c5: cld
|
|||
rts
|
||||
|
||||
|
||||
if iver>=iver3h
|
||||
D1243: fcb "<_>)@%^&*("
|
||||
D1243_len equ *-D1243
|
||||
|
||||
D124d: fcb ",-.0256789"
|
||||
endif
|
||||
|
||||
|
||||
S1275: sta Ze2
|
||||
txa
|
||||
pha
|
||||
tya
|
||||
pha
|
||||
lda Ze2
|
||||
|
||||
if iver<=iver3k
|
||||
cmp #$60
|
||||
else
|
||||
cmp #$61
|
||||
endif
|
||||
|
||||
bcc .fwd1
|
||||
|
||||
if iver<=iver3k
|
||||
cmp #$80
|
||||
else
|
||||
cmp #$7b
|
||||
endif
|
||||
|
||||
bcs .fwd1
|
||||
ldx D172b
|
||||
bne .fwd1
|
||||
|
@ -1529,6 +1747,12 @@ e_1296: jsr S156f
|
|||
beq .fwd3
|
||||
cmp #char_del
|
||||
beq .fwd1
|
||||
|
||||
if iver>=iver3h
|
||||
cmp #char_bs
|
||||
beq .fwd1
|
||||
endif
|
||||
|
||||
jsr bell
|
||||
jmp .loop3
|
||||
|
||||
|
@ -1557,9 +1781,20 @@ e_1296: jsr S156f
|
|||
cmp #$5b
|
||||
bcs .fwd4
|
||||
adc #$20
|
||||
.fwd4: sta (arg1),y
|
||||
.fwd4:
|
||||
if iver>=iver3h
|
||||
and #$7f
|
||||
endif
|
||||
|
||||
sta (arg1),y
|
||||
dey
|
||||
|
||||
if iver==iver3f
|
||||
bpl .loop4
|
||||
else
|
||||
bne .loop4
|
||||
endif
|
||||
|
||||
jsr S1328
|
||||
lda Zc2
|
||||
ldx D172b
|
||||
|
@ -1603,11 +1838,13 @@ S1328: lda Zdf
|
|||
pha
|
||||
lda D13ad
|
||||
sta cswl
|
||||
lda D13ae
|
||||
lda D13ad+1
|
||||
sta cswl+1
|
||||
lda #$00
|
||||
sta cursrh
|
||||
sta cur80h
|
||||
|
||||
if iver==iver3f
|
||||
lda D13ac
|
||||
cmp #$01
|
||||
bne .fwd1
|
||||
|
@ -1615,7 +1852,7 @@ S1328: lda Zdf
|
|||
lda #$89
|
||||
jsr cout
|
||||
lda cswl+1
|
||||
sta D13ae
|
||||
sta D13ad+1
|
||||
lda cswl
|
||||
sta D13ad
|
||||
lda #$b8
|
||||
|
@ -1624,8 +1861,10 @@ S1328: lda Zdf
|
|||
jsr cout
|
||||
lda #$ce
|
||||
jsr cout
|
||||
lda #$8d
|
||||
lda #char_cr+$80
|
||||
jsr cout
|
||||
endif
|
||||
|
||||
.fwd1: ldy #$00
|
||||
.loop1: lda D0200,y
|
||||
jsr cout
|
||||
|
@ -1649,9 +1888,8 @@ msg_printer_slot
|
|||
msg_len_printer_slot equ *-msg_printer_slot
|
||||
|
||||
|
||||
D13ac: fcb $00 ; "."
|
||||
D13ad: fcb $00 ; "."
|
||||
D13ae: fcb $00 ; "."
|
||||
D13ac: fcb $00
|
||||
D13ad: fdb $0000
|
||||
|
||||
|
||||
S13af: prt_msg printer_slot
|
||||
|
@ -1668,9 +1906,39 @@ S13af: prt_msg printer_slot
|
|||
.fwd1: lda #$01
|
||||
.fwd2: clc
|
||||
adc #$c0
|
||||
sta D13ae
|
||||
sta D13ad+1
|
||||
jsr S144e
|
||||
inc D13ac
|
||||
|
||||
if iver>=iver3h
|
||||
; send sequence <Control-I>80N to convince printer firmware to use
|
||||
; 80 columns
|
||||
lda cswl
|
||||
pha
|
||||
lda cswl+1
|
||||
pha
|
||||
lda D13ad
|
||||
sta cswl
|
||||
lda D13ad+1
|
||||
sta cswl+1
|
||||
lda #char_tab+$80
|
||||
jsr cout
|
||||
lda #'8'+$80
|
||||
jsr cout
|
||||
lda #'0'+$80
|
||||
jsr cout
|
||||
lda #'N'+$80
|
||||
jsr cout
|
||||
lda cswl
|
||||
sta D13ad
|
||||
lda cswl+1
|
||||
sta D13ad+1
|
||||
pla
|
||||
sta cswl+1
|
||||
pla
|
||||
sta cswl
|
||||
endif
|
||||
|
||||
rts
|
||||
|
||||
|
||||
|
@ -1778,7 +2046,11 @@ op_quit:
|
|||
|
||||
|
||||
msg_end_of_session:
|
||||
if iver==iver3f
|
||||
text_str "End of story."
|
||||
else
|
||||
text_str "End of session."
|
||||
endif
|
||||
fcb char_cr
|
||||
msg_len_end_of_session equ *-msg_end_of_session
|
||||
|
||||
|
@ -2099,6 +2371,14 @@ op_show_status:
|
|||
sta cursrh
|
||||
pla
|
||||
sta cur80h
|
||||
|
||||
if iver>=iver3k
|
||||
ldx D172b
|
||||
beq .fwd13
|
||||
sta cursrh
|
||||
.fwd13:
|
||||
endif
|
||||
|
||||
jsr vtab
|
||||
ldx #$ff
|
||||
stx Zdf
|
||||
|
@ -2129,6 +2409,13 @@ interp_start:
|
|||
sta Z60
|
||||
sta Z61
|
||||
|
||||
if iver>=iver3k
|
||||
lda #cout1>>8
|
||||
sta cswl+1
|
||||
lda #cout1&$ff
|
||||
sta cswl
|
||||
endif
|
||||
|
||||
ldx #$00
|
||||
stx rwts_sector
|
||||
stx Zec
|
||||
|
@ -2222,7 +2509,7 @@ restart:
|
|||
inx
|
||||
bne .loop4
|
||||
txa
|
||||
.loop5: sta D2442,x
|
||||
.loop5: sta D2e00,x
|
||||
inx
|
||||
bne .loop5
|
||||
inc Z94
|
||||
|
@ -2380,8 +2667,8 @@ op_c0_ff:
|
|||
cmp #$e0
|
||||
bcs .fwd6
|
||||
jmp L19b3
|
||||
.fwd6: ldx #$94
|
||||
ldy #$1b
|
||||
.fwd6: ldx #D1b94&$ff
|
||||
ldy #D1b94>>8
|
||||
and #$1f
|
||||
cmp #$0c
|
||||
bcc L1935
|
||||
|
@ -2402,8 +2689,8 @@ L1946: jsr $0000
|
|||
jmp main_loop
|
||||
|
||||
op_b0_bf:
|
||||
ldx #$26
|
||||
ldy #$1b
|
||||
ldx #D1b26&$ff
|
||||
ldy #D1b26>>8
|
||||
and #$0f
|
||||
cmp #$0e
|
||||
bcc L1935
|
||||
|
@ -2425,8 +2712,8 @@ op_80_af:
|
|||
bne int_err_03
|
||||
jsr S19ea
|
||||
.fwd3: jsr S19c7
|
||||
ldx #$42
|
||||
ldy #$1b
|
||||
ldx #D1b42&$ff
|
||||
ldy #D1b42>>8
|
||||
lda opcode
|
||||
and #$0f
|
||||
cmp #$10
|
||||
|
@ -2457,8 +2744,8 @@ op_00_7f:
|
|||
lda Z8c+1
|
||||
sta arg2+1
|
||||
inc argcnt
|
||||
L19b3: ldx #$62
|
||||
ldy #$1b
|
||||
L19b3: ldx #D1b62&$ff
|
||||
ldy #D1b62>>8
|
||||
lda opcode
|
||||
and #$1f
|
||||
cmp #$19
|
||||
|
@ -2777,7 +3064,7 @@ D1b62: fdb int_err_04 ; [illegal]
|
|||
|
||||
|
||||
; VAR instructions (0-4 operands), opcodes $e0..$ff
|
||||
fdb op_call
|
||||
D1b94: fdb op_call
|
||||
fdb op_storew
|
||||
fdb op_storeb
|
||||
fdb op_put_prop
|
||||
|
@ -2849,9 +3136,34 @@ op_verify:
|
|||
sta Z8e
|
||||
rol Z8e+1
|
||||
rol acb
|
||||
|
||||
if iver==iver3f
|
||||
lda #acb+1 ; modify code in S236c subroutine
|
||||
sta L2376+1
|
||||
.loop2: jsr S236c
|
||||
|
||||
else
|
||||
|
||||
lda #$00
|
||||
sta Zea
|
||||
sta Zeb
|
||||
jmp .fwd0a
|
||||
|
||||
.loop2: lda Z9c
|
||||
bne .fwd0b
|
||||
.fwd0a lda #$29
|
||||
sta Zed
|
||||
jsr S0d6b
|
||||
.fwd0b: ldy Z9c
|
||||
lda rwts_data_buf,y
|
||||
inc Z9c
|
||||
bne .fwd0c
|
||||
inc Z9d
|
||||
bne .fwd0c
|
||||
inc Z9e
|
||||
.fwd0c:
|
||||
endif
|
||||
|
||||
clc
|
||||
adc Z90
|
||||
sta Z90
|
||||
|
@ -2866,8 +3178,12 @@ op_verify:
|
|||
lda Z9e
|
||||
cmp acb
|
||||
bne .loop2
|
||||
|
||||
if iver==iver3f
|
||||
lda #Za3+1
|
||||
sta L2376+1 ; modify code in S236c subroutine
|
||||
endif
|
||||
|
||||
lda hdr_checksum+1
|
||||
cmp Z90
|
||||
bne L1c41
|
||||
|
@ -3865,7 +4181,13 @@ L22aa: cmp D22b4,x
|
|||
rts
|
||||
|
||||
|
||||
D22b4: fcb $21,$3f,$2c,$2e,$8d,$20 ; "!?,.. "
|
||||
D22b4: fcb "!?,."
|
||||
if iver==iver3f
|
||||
fcb char_cr+$80
|
||||
else
|
||||
fcb char_cr
|
||||
endif
|
||||
fcb " "
|
||||
|
||||
|
||||
S22ba: tax
|
||||
|
@ -4033,18 +4355,24 @@ S23a2: sta Za8
|
|||
jsr S0d6b
|
||||
bcs int_err_0e
|
||||
.fwd1: ldy Za7
|
||||
lda D2442,y
|
||||
lda D2e00,y
|
||||
cmp Zaa
|
||||
beq .fwd4
|
||||
inc Zaa
|
||||
bne .fwd3
|
||||
|
||||
if iver==iver3f
|
||||
jsr S2419
|
||||
else
|
||||
jsr S243b
|
||||
endif
|
||||
|
||||
ldx #$00
|
||||
.loop3: lda D2442,x
|
||||
.loop3: lda D2e00,x
|
||||
beq .fwd2
|
||||
sec
|
||||
sbc Za2
|
||||
sta D2442,x
|
||||
sta D2e00,x
|
||||
.fwd2: inx
|
||||
cpx Za6
|
||||
bcc .loop3
|
||||
|
@ -4053,7 +4381,7 @@ S23a2: sta Za8
|
|||
sbc Za2
|
||||
sta Zaa
|
||||
.fwd3: lda Zaa
|
||||
sta D2442,y
|
||||
sta D2e00,y
|
||||
.fwd4: lda Za7
|
||||
clc
|
||||
adc Za5
|
||||
|
@ -4067,11 +4395,11 @@ int_err_0e:
|
|||
|
||||
S2419: ldx #$00
|
||||
stx Zab
|
||||
lda D2442
|
||||
lda D2e00
|
||||
inx
|
||||
.loop1: cmp D2442,x
|
||||
.loop1: cmp D2e00,x
|
||||
bcc .fwd1
|
||||
lda D2442,x
|
||||
lda D2e00,x
|
||||
stx Zab
|
||||
.fwd1: inx
|
||||
cpx Za6
|
||||
|
@ -4080,6 +4408,38 @@ S2419: ldx #$00
|
|||
rts
|
||||
|
||||
|
||||
if iver>=iver3h
|
||||
|
||||
D243a: fcb $00
|
||||
|
||||
S243b: ldx #$00
|
||||
stx Zab
|
||||
sty D243a
|
||||
.loop1: lda D2e00,x
|
||||
cmp #$00
|
||||
bne .fwd1
|
||||
inx
|
||||
cpx Za6
|
||||
bcc .loop1
|
||||
bcs .fwd3
|
||||
|
||||
.fwd1: inx
|
||||
.loop2: cmp D2e00,x
|
||||
bcc .fwd2
|
||||
ldy D2e00,x
|
||||
beq .fwd2
|
||||
tya
|
||||
stx Zab
|
||||
.fwd2: inx
|
||||
cpx Za6
|
||||
bcc .loop2
|
||||
.fwd3: sta Za2
|
||||
ldy D243a
|
||||
rts
|
||||
|
||||
endif
|
||||
|
||||
|
||||
S2433: lda Z8e
|
||||
sta Z9c
|
||||
lda Z8e+1
|
||||
|
@ -4090,7 +4450,11 @@ S2433: lda Z8e
|
|||
rts
|
||||
|
||||
|
||||
D2442: fcb [256]$00
|
||||
if iver==iver3f
|
||||
; A buffer was allocated at $2e00, but in revision F, instead
|
||||
; of that buffer being used, another one is allocated here.
|
||||
D2e00: fcb [256]$00
|
||||
endif
|
||||
|
||||
|
||||
S2542: lda Z8e
|
||||
|
|
Loading…
Reference in New Issue
Block a user