     .OUTPI ALFRES
     .ENTRY START
     .VIRT8 ZPAG,ZLEN

TITLE .BYTE 125,"    Atascii Converter",$9B,$9B,0
ASKI .BYTE "Enter Input Filemask",$9B,0
ASKO .BYTE "Output Drive: ",0
DIRERR .BYTE "Error Opening Directory",$9B,0
INERR .BYTE "Error Reading Input File",$9B,0
OUTERR .BYTE "Error Writing Output",$9B,0
DOING .BYTE "Converting: ",0

ODRIVE .BYTE "8"

START JSR SUBINI
      LDX #.LO.TITLE
      LDY #.HI.TITLE
      JSR SCRPRT
      LDX #.LO.ASKI
      LDY #.HI.ASKO
      JSR SCRPRT
      JSR GETLIN
      LDX LINEL
      BNE ST001
STXIT LDX #D
      JSR CLOSE
      LDX #D2
      JSR CLOSE
      LDX #D3
      JSR CLOSE
      JSR SUBXIT
      RTS
ST001 JSR CAPLIN
      LDX LINEL
ST002 LDA LINE,X
      STA IFILE,X
      DEX
      BPL ST002
      LDX #.LO.ASKO
      LDY #.HI.ASKO
      JSR SCRPRT
      JSR GETK
      CMP #"1"
      BCC STXIT
      CMP #"9"
      BCS STXIT
      STA ODRIVE
      JSR PRCHAR
      LDA #$9B
      JSR PRCHAR
      LDX #D3
      LDA #.LO.IFILE
      LDY #.HI.IFILE
      JSR OPNDIR
      BPL ST010
      LDX #.LO.DIRERR
      LDY #.HI.DIRERR
      JSR SCRPRT
      JMP STXIT
ST010 JSR GETFIL
      BCC ST011
      JMP STXIT
ST011 LDA #"D"
      STA OFILE
      LDA ODRIVE
      STA OFILE+1
      LDA #":"
      STA OFILE+2
      LDX #.LO.DOING
      LDY #.HI.DOING
      JSR SCRPRT
      LDX #0
ST012 LDA OFILE,X
      JSR PRCHAR
      LDA OFILE,X
      CMP #$9B
      BEQ ST013
      INX
      BPL ST012
ST013 LDX #D2
      LDA #.LO.OFILE
      LDY #.HI.OFILE
      JSR OPNOUT
      BPL ST014
ST030 LDX #.LO.OUTERR
      LDY #.HI.OUTERR
      JSR SCRPRT
      JMP STXIT
ST014 LDA $02E7
      STA ADR
      STA ZPAG
      LDA $02E8
      STA ADR+1
      STA ZPAG+1
      LDA #.LO.PSTART
      SEC
      SBC ZPAG
      STA LEN
      LDA #.HI.PSTART
      SBC ZPAG+1
      STA LEN+1
      LDX #D
      JSR BGET
      STY IEOF
      BPL ST15
      CPY #$88
      BEQ ST15
      LDX #.LO.INERR
      LDY #.HI.INERR
      JSR SCRPRT
      JMP STXIT
ST15  LDA LEN
      STA ZLEN
      LDA LEN+1
      STA ZLEN+1
ST015 LDA ZLEN
      ORA ZLEN+1
      BEQ ST020
ST016 LDY #0
      LDA (ZPAG),Y
      JSR FIXCHR
      STA (ZPAG),Y
      INC ZPAG
      BNE ST017
      INC ZPAG+1
ST017 LDA ZLEN
      BNE ST018
      DEC ZLEN+1
ST018 DEC ZLEN
      JMP ST015

ST020 LDX #D2
      JSR BPUT
      BPL ST021
      JMP ST030
ST021 LDA IEOF
      BMI ST022
      JMP ST014
ST022 LDX #D
      JSR CLOSE
      LDX #D2
      JSR CLOSE
      JMP ST010

FIXCHR CMP #$9B
       BEQ CHOK
       CMP #32
       BCC FIX32
       CMP #96
       BCC CHOK
       BEQ FIX32
       CMP #123
       BCS FIX01
CHOK   RTS
FIX01  CMP #128
       BCC FIX32
       AND #$7F
       JMP FIXCHR
FIX32  LDA #32
       RTS
