mirror of
https://github.com/david-schmidt/Davex.git
synced 2024-09-27 13:55:09 +00:00
578 lines
8.3 KiB
NASM
578 lines
8.3 KiB
NASM
|
.include "Common/2/Globals2.asm"
|
||
|
.include "Common/2/Apple.Globals2.asm"
|
||
|
.include "Common/2/Mli.globals2.asm"
|
||
|
.include "Common/Macros.asm"
|
||
|
|
||
|
; Unpack Apple Archive Format
|
||
|
|
||
|
.segment "CODE_9000"
|
||
|
|
||
|
LFD8E = $fd8e
|
||
|
LFE84 = $fe84
|
||
|
LFE80 = $fe80
|
||
|
LFDED = $fded
|
||
|
LBF00 = $bf00
|
||
|
|
||
|
rts
|
||
|
|
||
|
.byte $ee, $ee
|
||
|
.byte $10, $11
|
||
|
.byte %00000000
|
||
|
clc
|
||
|
bcc L9009
|
||
|
L9009: bcc L905D
|
||
|
bcc L900D
|
||
|
L900D: .byte 0, 0, 0, 0
|
||
|
.byte $04
|
||
|
brk
|
||
|
.byte $03
|
||
|
sbc $07
|
||
|
brk
|
||
|
brk
|
||
|
.byte $39
|
||
|
.byte $E1
|
||
|
L901A: sbc ($E6,x)
|
||
|
ldy #$AD
|
||
|
lda $D5A0
|
||
|
inc $E1F0
|
||
|
.byte $E3
|
||
|
.byte $EB
|
||
|
ldy #$C1
|
||
|
beq L901A
|
||
|
cpx $A0E5
|
||
|
cmp ($F2,x)
|
||
|
.byte $E3
|
||
|
inx
|
||
|
sbc #$F6
|
||
|
sbc $A0
|
||
|
dec $EF
|
||
|
.byte $F2
|
||
|
sbc $F4E1
|
||
|
ldy #$E6
|
||
|
sbc #$EC
|
||
|
sbc $F3
|
||
|
ldy #$AF
|
||
|
ldy #$E2
|
||
|
sbc $CAA0,y
|
||
|
sbc $E6
|
||
|
inc $A0
|
||
|
iny
|
||
|
sbc ($EE,x)
|
||
|
.byte $F3
|
||
|
sbc $EE
|
||
|
sty $E2
|
||
|
sta $E3
|
||
|
sty L93A4
|
||
|
sta L93A5
|
||
|
.byte $20
|
||
|
L905D: .byte $BF
|
||
|
.byte $93
|
||
|
bcc L9062
|
||
|
rts
|
||
|
|
||
|
L9062: .byte $64
|
||
|
inc $EEC6
|
||
|
lda #$E5
|
||
|
jsr xgetparm_ch
|
||
|
bcs L906F
|
||
|
sta $EE
|
||
|
L906F: lda #$01
|
||
|
jsr xgetparm_n
|
||
|
sty $EB
|
||
|
sta $EC
|
||
|
sty L9392
|
||
|
sta L9393
|
||
|
sty L920E
|
||
|
sta L920F
|
||
|
.byte $B2
|
||
|
.byte $EB
|
||
|
beq L909F
|
||
|
jsr LBF00
|
||
|
cpy $91
|
||
|
.byte $93
|
||
|
bcc L9093
|
||
|
jmp xProDOS_err
|
||
|
|
||
|
L9093: lda L9395
|
||
|
cmp #$0F
|
||
|
beq L909F
|
||
|
lda #$97
|
||
|
jmp xProDOS_err
|
||
|
|
||
|
L909F: lda $E2
|
||
|
sta L9392
|
||
|
lda $E3
|
||
|
sta L9393
|
||
|
jsr LBF00
|
||
|
cpy $91
|
||
|
.byte $93
|
||
|
bcc L90B4
|
||
|
jmp xProDOS_err
|
||
|
|
||
|
L90B4: lda L9395
|
||
|
cmp #$04
|
||
|
beq L90F0
|
||
|
cmp #$B0
|
||
|
beq L90F0
|
||
|
jsr xmess
|
||
|
tax
|
||
|
tax
|
||
|
tax
|
||
|
ldy #$E5
|
||
|
.byte $F2
|
||
|
.byte $F2
|
||
|
.byte $EF
|
||
|
.byte $F2
|
||
|
tsx
|
||
|
ldy #$EE
|
||
|
.byte $EF
|
||
|
.byte $F4
|
||
|
ldy #$E1
|
||
|
inc $C1A0
|
||
|
.byte $D3
|
||
|
.byte $C3
|
||
|
cmp #$C9
|
||
|
ldy #$A8
|
||
|
.byte $D4
|
||
|
cld
|
||
|
.byte $D4
|
||
|
ldy #$EF
|
||
|
.byte $F2
|
||
|
ldy #$D3
|
||
|
.byte $D2
|
||
|
.byte $C3
|
||
|
lda #$A0
|
||
|
inc $E9
|
||
|
cpx $8DE5
|
||
|
brk
|
||
|
jmp xerr
|
||
|
|
||
|
L90F0: lda #$00
|
||
|
sta L93A6
|
||
|
lda #$08
|
||
|
sta L93A7
|
||
|
jsr LBF00
|
||
|
iny
|
||
|
.byte $A3
|
||
|
.byte $93
|
||
|
bcc L9105
|
||
|
jmp xProDOS_err
|
||
|
|
||
|
L9105: lda L93A8
|
||
|
sta L93AA
|
||
|
sta L93AE
|
||
|
sta $E4
|
||
|
.byte $64
|
||
|
inx
|
||
|
jsr LBF00
|
||
|
cmp #$A9
|
||
|
.byte $93
|
||
|
bcc L911D
|
||
|
jmp xProDOS_err
|
||
|
|
||
|
L911D: jsr LBF00
|
||
|
dex
|
||
|
lda L9093
|
||
|
bit $4CC9
|
||
|
beq L912C
|
||
|
jmp xProDOS_err
|
||
|
|
||
|
L912C: lda $E4
|
||
|
sta L93BE
|
||
|
jsr LBF00
|
||
|
cpy L93BD
|
||
|
bcc L9150
|
||
|
jmp xProDOS_err
|
||
|
|
||
|
bit $E8
|
||
|
bpl L9150
|
||
|
lda $E7
|
||
|
sta L93BE
|
||
|
jsr LBF00
|
||
|
cpy L93BD
|
||
|
bcc L9150
|
||
|
jmp xProDOS_err
|
||
|
|
||
|
L9150: rts
|
||
|
|
||
|
lda $EA
|
||
|
bit $E9
|
||
|
bmi L9160
|
||
|
ldx #$00
|
||
|
lda $1000,x
|
||
|
ora #$80
|
||
|
sta $EA
|
||
|
L9160: cmp #$AB
|
||
|
beq L9171
|
||
|
cmp #$BD
|
||
|
beq L9174
|
||
|
cmp #$AD
|
||
|
beq L9177
|
||
|
.byte $80
|
||
|
brk
|
||
|
jmp L9186
|
||
|
|
||
|
L9171: jmp L91A7
|
||
|
|
||
|
L9174: jmp L91BD
|
||
|
|
||
|
L9177: jmp L92E8
|
||
|
|
||
|
L917A: lda L93B4
|
||
|
beq L9181
|
||
|
lda #$FF
|
||
|
L9181: sta $E9
|
||
|
jmp L911D
|
||
|
|
||
|
L9186: bit $EE
|
||
|
bpl L919F
|
||
|
lda L93B3
|
||
|
.byte $3A
|
||
|
sta $ED
|
||
|
ldx #$FF
|
||
|
L9192: inx
|
||
|
lda $1000,x
|
||
|
ora #$80
|
||
|
jsr LFDED
|
||
|
cpx $ED
|
||
|
bne L9192
|
||
|
L919F: jsr xcheck_wait
|
||
|
bcc L917A
|
||
|
jmp L912C
|
||
|
|
||
|
L91A7: bit $E8
|
||
|
bpl L917A
|
||
|
.byte $64
|
||
|
inx
|
||
|
lda $E7
|
||
|
sta L93BE
|
||
|
jsr LBF00
|
||
|
cpy L93BD
|
||
|
bcc L917A
|
||
|
jmp xProDOS_err
|
||
|
|
||
|
L91BD: bit $E8
|
||
|
bpl L91D3
|
||
|
lda $E7
|
||
|
sta L93BE
|
||
|
.byte $64
|
||
|
inx
|
||
|
jsr LBF00
|
||
|
cpy L93BD
|
||
|
bcc L91D3
|
||
|
jmp xProDOS_err
|
||
|
|
||
|
L91D3: ldx #$00
|
||
|
inx
|
||
|
lda $1000,x
|
||
|
ora #$80
|
||
|
cmp #$8D
|
||
|
beq L91E4
|
||
|
sta L9331,x
|
||
|
.byte $80
|
||
|
.byte $F1
|
||
|
L91E4: dex
|
||
|
stx L9331
|
||
|
jsr LFE80
|
||
|
ldy #$31
|
||
|
lda #$93
|
||
|
jsr L93F7
|
||
|
jsr LFE84
|
||
|
jsr LFD8E
|
||
|
lda #$31
|
||
|
sta $E5
|
||
|
lda #$93
|
||
|
sta $E6
|
||
|
.byte $B2
|
||
|
.byte $EB
|
||
|
bne L920A
|
||
|
ldy $E5
|
||
|
lda $E6
|
||
|
.byte $80
|
||
|
.byte $20
|
||
|
L920A: jsr xpmgr
|
||
|
.byte $04
|
||
|
L920E: brk
|
||
|
L920F: brk
|
||
|
eor ($93,x)
|
||
|
jsr xpmgr
|
||
|
.byte $03
|
||
|
eor ($93,x)
|
||
|
ldy #$31
|
||
|
lda #$93
|
||
|
jsr xpmgr
|
||
|
brk
|
||
|
eor ($93,x)
|
||
|
ldy #$41
|
||
|
lda #$93
|
||
|
sty $E5
|
||
|
sta $E6
|
||
|
sty L9392
|
||
|
sta L9393
|
||
|
sty L9383
|
||
|
sta L9384
|
||
|
sty L938F
|
||
|
sta L9390
|
||
|
sty L93A4
|
||
|
sta L93A5
|
||
|
jsr LBF00
|
||
|
cpy $91
|
||
|
.byte $93
|
||
|
bcs L92B2
|
||
|
ldy $E5
|
||
|
lda $E6
|
||
|
jsr xprint_path
|
||
|
jsr xmess
|
||
|
ldy #$E5
|
||
|
sed
|
||
|
sbc #$F3
|
||
|
.byte $F4
|
||
|
.byte $F3
|
||
|
brk
|
||
|
lda L9394
|
||
|
and #$C3
|
||
|
cmp #$C3
|
||
|
beq L9272
|
||
|
jsr xmess
|
||
|
ldy #$DB
|
||
|
cpy $C3CF
|
||
|
.byte $CB
|
||
|
cmp $C4
|
||
|
.byte $DD
|
||
|
brk
|
||
|
L9272: jsr xmess
|
||
|
ldx $CFA0
|
||
|
inc $E5,x
|
||
|
.byte $F2
|
||
|
.byte $F7
|
||
|
.byte $F2
|
||
|
sbc #$F4
|
||
|
sbc $00
|
||
|
lda #$EE
|
||
|
jsr xyesno2
|
||
|
bmi L928D
|
||
|
.byte $64
|
||
|
inx
|
||
|
jmp L917A
|
||
|
|
||
|
L928D: lda #$C3
|
||
|
sta L9394
|
||
|
lda #$07
|
||
|
sta L9391
|
||
|
jsr LBF00
|
||
|
.byte $C3
|
||
|
sta ($93),y
|
||
|
bcc L92A2
|
||
|
jmp xProDOS_err
|
||
|
|
||
|
L92A2: lda #$0A
|
||
|
sta L9391
|
||
|
jsr LBF00
|
||
|
cmp ($8E,x)
|
||
|
.byte $93
|
||
|
bcc L92B9
|
||
|
jmp xProDOS_err
|
||
|
|
||
|
L92B2: cmp #$46
|
||
|
beq L92B9
|
||
|
jmp xProDOS_err
|
||
|
|
||
|
L92B9: jsr LBF00
|
||
|
cpy #$82
|
||
|
.byte $93
|
||
|
bcc L92C4
|
||
|
jmp xProDOS_err
|
||
|
|
||
|
L92C4: lda #$00
|
||
|
sta L93A6
|
||
|
lda #$0C
|
||
|
sta L93A7
|
||
|
jsr LBF00
|
||
|
iny
|
||
|
.byte $A3
|
||
|
.byte $93
|
||
|
.byte $90
|
||
|
L92D5: .byte $03
|
||
|
jmp xProDOS_err
|
||
|
|
||
|
L92D9: lda L93A8
|
||
|
sta L93B6
|
||
|
sta $E7
|
||
|
lda #$FF
|
||
|
sta $E8
|
||
|
jmp L917A
|
||
|
|
||
|
L92E8: bit $E8
|
||
|
bpl L932E
|
||
|
bit $E9
|
||
|
bpl L9308
|
||
|
lda #$00
|
||
|
sta L93B7
|
||
|
lda #$10
|
||
|
sta L93B8
|
||
|
lda L93B3
|
||
|
sta L93B9
|
||
|
lda L93B4
|
||
|
sta L93BA
|
||
|
.byte $80
|
||
|
.byte $1B
|
||
|
L9308: lda #$01
|
||
|
sta L93B7
|
||
|
lda #$10
|
||
|
sta L93B8
|
||
|
sec
|
||
|
lda L93B3
|
||
|
sbc #$01
|
||
|
sta L93B9
|
||
|
lda L93B4
|
||
|
sbc #$00
|
||
|
sta L93BA
|
||
|
jsr LBF00
|
||
|
.byte $CB
|
||
|
lda $93,x
|
||
|
bcc L932E
|
||
|
jmp xProDOS_err
|
||
|
|
||
|
L932E: jmp L917A
|
||
|
|
||
|
L9331: ldy #$E2
|
||
|
bcs L92D5
|
||
|
ldy #$A0
|
||
|
ldy #$A0
|
||
|
ldy #$A0
|
||
|
ldy #$A0
|
||
|
ldy #$A0
|
||
|
ldy #$A0
|
||
|
clv
|
||
|
ldy #$AB
|
||
|
ldy $A0,x
|
||
|
sbc ($B0,x)
|
||
|
ldy #$AE
|
||
|
ldy #$A0
|
||
|
sbc $A0
|
||
|
tax
|
||
|
.byte $EF
|
||
|
ldy #$AA
|
||
|
ldy #$A0
|
||
|
ldy #$A0
|
||
|
ldy #$A0
|
||
|
nop
|
||
|
inc $A0A0
|
||
|
.byte $EF
|
||
|
ldy #$A0
|
||
|
ldy #$A0
|
||
|
ldy #$A0
|
||
|
ldy #$A0
|
||
|
ldy #$A0
|
||
|
.byte $BB
|
||
|
ldy #$A0
|
||
|
ldx $A0,y
|
||
|
ldy #$A0
|
||
|
ldy #$A0
|
||
|
ldy #$A0
|
||
|
.byte $F4
|
||
|
ldy #$A0
|
||
|
ldy #$A0
|
||
|
lda ($A0),y
|
||
|
ldy #$A0
|
||
|
ldy #$B5
|
||
|
ldy #$A0
|
||
|
ldy #$A0
|
||
|
ldy #$07
|
||
|
L9383: tax
|
||
|
L9384: ldy #$E3
|
||
|
.byte $04
|
||
|
brk
|
||
|
brk
|
||
|
ora ($A0,x)
|
||
|
sbc ($A0,x)
|
||
|
.byte $80
|
||
|
.byte $01
|
||
|
L938F: .byte $A0
|
||
|
L9390: .byte $A0
|
||
|
L9391: asl a
|
||
|
L9392: .byte $A0
|
||
|
L9393: .byte $E6
|
||
|
L9394: .byte $B6
|
||
|
L9395: ldy #$A0
|
||
|
ldy #$A0
|
||
|
sbc $A0
|
||
|
.byte $A0
|
||
|
L939C: ldy #$A0
|
||
|
tax
|
||
|
.byte $F3
|
||
|
.byte $80
|
||
|
.byte $FF
|
||
|
ldy #$03
|
||
|
L93A4: .byte $A0
|
||
|
L93A5: nop
|
||
|
L93A6: brk
|
||
|
L93A7: php
|
||
|
L93A8: sbc $03
|
||
|
L93AA: ldy #$7F
|
||
|
.byte $0D
|
||
|
.byte $04
|
||
|
L93AE: ldy #$00
|
||
|
bpl L93B2
|
||
|
L93B2: .byte $01
|
||
|
L93B3: .byte $A0
|
||
|
L93B4: ldy #$04
|
||
|
L93B6: .byte $A0
|
||
|
L93B7: brk
|
||
|
L93B8: .byte $10
|
||
|
L93B9: .byte $A0
|
||
|
L93BA: ldy #$A0
|
||
|
.byte $A0
|
||
|
L93BD: .byte $01
|
||
|
L93BE: ldy #$AD
|
||
|
.byte $B3
|
||
|
.byte $FB
|
||
|
cmp #$38
|
||
|
beq L93D4
|
||
|
cmp #$EA
|
||
|
beq L93D4
|
||
|
lda $FBC0
|
||
|
cmp #$EA
|
||
|
beq L93D4
|
||
|
clc
|
||
|
bne L93F6
|
||
|
L93D4: jsr xbell
|
||
|
jsr xmess
|
||
|
tax
|
||
|
tax
|
||
|
tax
|
||
|
ldy #$E5
|
||
|
.byte $F2
|
||
|
.byte $F2
|
||
|
.byte $EF
|
||
|
.byte $F2
|
||
|
tsx
|
||
|
ldy #$B6
|
||
|
lda $C3,x
|
||
|
bcs L939C
|
||
|
ldy #$F2
|
||
|
sbc $F1
|
||
|
sbc $E9,x
|
||
|
.byte $F2
|
||
|
sbc $E4
|
||
|
sta $3800
|
||
|
L93F6: rts
|
||
|
|
||
|
L93F7: sty $E0
|
||
|
sta $E1
|
||
|
txa
|
||
|
pha
|
||
|
ldy #$00
|
||
|
lda ($E0),y
|
||
|
beq L940E
|
||
|
tax
|
||
|
iny
|
||
|
L9405: lda ($E0),y
|
||
|
jsr LFDED
|
||
|
iny
|
||
|
dex
|
||
|
bne L9405
|
||
|
L940E: pla
|
||
|
tax
|
||
|
rts
|