Davex/src/xtn/2/aaf.asm
2018-09-16 21:01:16 -04:00

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