     .OUTPI ALFRES
     .ENTRY EXTARC,OUTDIR,OUTFIL,DMAFLG,SAVDMA,ARCTOP

;This routine reads each arc file
;and calls the appropriate routine
;to decompress the file if so
;desired.

ARCTOP *=*+3
OUTDIR *=*+100   Output Directory
OUTFIL *=*+120   Output File
DMAFLG .BYTE 0   Default is DMA on
SAVDMA *=*+1
ASKO .BYTE "Output Pathname/File Select:",$9B,0
NOTARC .BYTE "Not An Archive!",$9B,0
DUNNO  .BYTE "Unknown Compression Type, You May",$9B
       .BYTE "Need A Newer Version Of DZ.COM",$9B
REDO   .BYTE "Already Exists. Replace It [Y/N] ? ",0
ASKDMA .BYTE "Screen Off ? ",0
OPNERR .BYTE "Error Opening Output File",$9B,0

EXTARC LDX #.LO.ASKO
       LDY #.HI.ASKO
       JSR SCRPRT
       LDA $022F
       STA SAVDMA
       LDA SPARTA
       BEQ EXT001
       JSR GETARG
       BCC EXT002
EXT001 JSR GETLIN
EXT002 JSR CAPLIN
       JSR FQUAL     ADD DRIVE
       LDX LINEL
EXT003 LDA LINE,X
       STA OUTDIR,X
       DEX
       BPL EXT003
       LDA SPARTA
       BEQ EXT004    SKIP SPARTA STUFF
       JSR VALPTH    VALIDATE PATHNAME
       BCS EXTARC    TRY AGAIN
       JSR DIRBLD    CREATE THE DIR
       BCS EXTARC    TRY AGAIN
EXT004 JSR NOTE
       LDA SECT
       LDX SECT+1
       LDY SECT+2
       STA ARCTOP
       STX ARCTOP+1
       STY ARCTOP+2
       JSR GETHDR    FIND A FILE
       BPL EXT005
       LDA SAVDMA    Restore screen
       STA $022F
       RTS
EXT005 LDA HDRVER
       CMP #$1A
       BEQ EXT006
       LDX #.LO.NOTARC
       LDY #.HI.NOTARC
       JSR SCRPRT
       RTS
EXT006 JSR FNDEXT    DO WE DO THIS?
       BCS EXT004    NO MATCH
       LDA CMPTYP
       BNE EXT007
       RTS           END OF FILE
EXT007 LDX #0
EXT008 LDA CMPTAB,X
       BEQ EXT009    NOT HERE
       CMP CMPTYP
       BEQ EXT015    FOUND IT
       INX
       INX
       INX
       BPL EXT008
EXT009 LDX #.LO.DUNNO
       LDY #.HI.DUNNO
       JSR SCRPRT
       LDX #.LO.SKPMSG
       LDY #.HI.SKPMSG
       JSR SCRPRT
       JSR PRTNAM
       JSR RDARC
       JMP EXT004
EXT015 LDA CMPTAB+1,X
       STA EXTJSR+1
       LDA CMPTAB+2,X
       STA EXTJSR+2
       LDX #0
       STX CRCVAL
       STX CRCVAL+1  ZERO THIS
       STX IEOF
       STX TMPSIZ
       STX TMPSIZ+1
       STX TMPSIZ+2
EXT020 LDA OUTDIR,X  COPY DIRECTORY
       STA OUTFIL,X
       CMP #$9B
       BEQ EXT021
       INX
       BPL EXT020
EXT021 LDA OUTDIR,X
       CMP #">"
       BEQ EXT022
       CMP #":"
       BEQ EXT022
       DEX
       BNE EXT021
EXT022 INX
       LDY #0
EXT023 LDA NAME,Y
       STA OUTFIL,X
       BEQ EXT024
       INY
       INX
       BNE EXT023
EXT024 LDA #$9B
       STA OUTFIL,X
       LDA DMAFLG
       BNE EXT040
       LDX #.LO.ASKDMA
       LDY #.HI.ASKDMA
       JSR SCRPRT
       JSR GETLIN
       LDA LINE
       JSR CAPS
       CMP #"Y"
       BNE EXT040
       STA DMAFLG
       LDA #0
       STA $022F
EXT040 LDX #.LO.EXTM
       LDY #.HI.EXTM
       JSR SCRPRT
       JSR PRTNAM
;      JMP EXTST    SUPER FIX
       LDX #D2
       LDA #.LO.OUTFIL
       LDY #.HI.OUTFIL
       JSR OPNIN
       BMI EXT030
       LDA SAVDMA
       STA $022F
       JSR PRTNAM
       LDX #.LO.REDO
       LDY #.HI.REDO
       JSR SCRPRT
       JSR GETK
       PHA
       JSR PRCHAR
       LDA #$9B
       JSR PRCHAR
       LDA DMAFLG
       BEQ EXT029
       LDA #0
       STA $022F
EXT029 PLA
       JSR CAPS
       CMP #"Y"
       BEQ EXT030
       JSR RDARC
       JMP EXT004
EXT030 LDX #D2
       JSR CLOSE
EXTST  LDX #D2
       LDA #.LO.OUTFIL
       LDY #.HI.OUTFIL
       JSR OPNOUT
       BPL EXTJSR
EXTJSR JSR DUMMY     DO NOTHING
       LDX #D2
       JSR CLOSE
       JMP EXT004

DUMMY  LDX #.LO.NOP
       LDY #.HI.NOP
       JSR SCRPRT
       RTS

NOP  .BYTE "Do Nothing...",$9B,0

CMPTAB .BYTE 15
       .WORD XALF   LZ PLUS ADAPT
       .BYTE 0      END OF TABLE
EXTM  .BYTE "Extracting:",0