A2osX/BIN/ASM.S.FIO.txt

318 lines
5.4 KiB
Plaintext
Raw Normal View History

2015-10-28 16:55:12 +00:00
PR#3
PREFIX /A2OSX.SRC
NEW
INC 1
AUTO 6
.LIST OFF
*---------------------------------------
FIO.Init ldy #S.PS.hCMDLINE
2015-12-04 16:33:33 +00:00
lda (pPS),y
>SYSCALL GetMemPtrA
2015-12-04 16:33:33 +00:00
bcs .99
>STYA ZPPtr1
lda (ZPPtr1)
tay
adc #3 len of ".T."
sta ASM.T.FILENAMELEN
adc #4 len of "6502"
sta ASM.T.FILENAME
tax
.2 lda (ZPPtr1),y
sta ASM.T.FILENAME,y
dey
bne .2
ldy #6
.3 lda ASM.T.DEFAULT,y
sta ASM.T.FILENAME,x
dex
dey
bpl .3
jmp FIO.LOAD.ASM.T
.99 rts
*---------------------------------------
2015-11-20 16:31:14 +00:00
FIO.OpenFileA sta FIO.hFileName
>SYSCALL GetMemPtrA
2015-10-28 16:55:12 +00:00
>STYA ZPPtr1
2015-11-20 16:31:14 +00:00
stz FIO.hFullPath
2015-10-28 16:55:12 +00:00
ldy #1
lda (ZPPtr1),y
cmp #'/'
beq .1
2015-11-20 16:31:14 +00:00
>PUSHB FIO.hFileName
2015-10-28 16:55:12 +00:00
ldy #S.PS.hPREFIX
lda (pPs),y
>PUSHA
>SYSCALL PStrCat
2015-11-20 16:31:14 +00:00
sta FIO.hFullPath
sta FIO.hFileName
>SYSCALL GetMemPtrA
2015-10-28 16:55:12 +00:00
>STYA ZPPtr1
.1 >PUSHW ZPPtr1
>PUSHW L.MSG.SRC.FILE
>LIBCALL hLIBSTR,LIBSTR.PRINTF
ldy #SRC.COUNT
lda (pData),y
2015-10-30 16:34:59 +00:00
cmp #SRC.IN.MAXDEPTH
2015-10-28 16:55:12 +00:00
bne .10
lda #ERR.SRC.TOO.MANY.IN
sec
2015-11-20 16:31:14 +00:00
bra FIO.OpenFileA.Exit
2015-10-28 16:55:12 +00:00
2015-11-20 16:31:14 +00:00
.10 lda FIO.hFileName
>SYSCALL GetMemPtrA
>SYSCALL MLIOpenYA
2015-10-28 16:55:12 +00:00
bcs .99
pha
ldy #SRC.COUNT
lda (pData),y
clc
adc #SRC.hREFNUMS
tay
pla
sta (pData),y
ldy #SRC.COUNT
lda (pData),y
clc
adc #SRC.hBUFFERS
tay
txa
sta (pData),y
2015-11-20 16:31:14 +00:00
lda FIO.hFileName
>SYSCALL GetMemPtrA
>SYSCALL MLIGetFileInfoYA
2015-10-28 16:55:12 +00:00
bcs .99
>STYA ZPPtr1
2015-10-28 16:55:12 +00:00
ldy #1
lda (ZPPtr1),y
2015-10-28 16:55:12 +00:00
tax
ldy #SRC.COUNT
lda (pData),y
clc
adc #SRC.hFILETYPES
tay
txa
sta (pData),y
cmp #$FA S-C/BAS?
beq .8
cmp #$04 TXT ?
bne .98
>PUSHBI $0D Line separator for TXT file
>PUSHBI $FF
ldy #SRC.COUNT
lda (pData),y
clc
adc #SRC.hREFNUMS
tay
lda (pData),y
>PUSHA
>SYSCALL MLINewLine
2015-10-28 16:55:12 +00:00
bcs .99
.8 ldy #SRC.COUNT
lda (pData),y
inc
sta (pData),y
clc
2015-11-20 16:31:14 +00:00
bra FIO.OpenFileA.Exit
2015-10-28 16:55:12 +00:00
.98 lda #ERR.SRC.INV.TYPE
.99 sec
2015-11-20 16:31:14 +00:00
FIO.OpenFileA.Exit php
pha
lda FIO.hFullPath
beq .1
>SYSCALL FreeMemA
2015-11-20 16:31:14 +00:00
.1 pla
plp
2015-10-28 16:55:12 +00:00
rts
*---------------------------------------
2015-11-13 16:25:31 +00:00
FIO.ReadLine stz SRC.BufPtr
2015-10-28 16:55:12 +00:00
ldy #SRC.COUNT
lda (pData),y
clc
adc #SRC.hFILETYPES-1
tay
lda (pData),y
bmi .10
>PUSHWI 256
>PUSHWI UsrBuf256
2015-10-28 16:55:12 +00:00
jsr FIO.ReadFromFile
bcs .19
lda #0 replace ending $0D with $00
sta UsrBuf256,y
2015-10-28 16:55:12 +00:00
.19 rts
.10 >PUSHWI 3
>PUSHW L.SRC.Buffer
jsr FIO.ReadFromFile
bcs .9
lda SRC.Buffer+1
sta SRC.LINENUM
lda SRC.Buffer+2
sta SRC.LINENUM+1
lda SRC.Buffer LEN
sec
sbc #3
bcc .9 LEN should be at least 3
tay
lda #0
>PUSHYA
>PUSHW L.SRC.BUFFER
jsr FIO.ReadFromFile
ldy #0
ldx #0
.1 lda SRC.Buffer,y
bmi .2
sta UsrBuf256,x
2015-10-28 16:55:12 +00:00
beq .8 Ending 00
inx
beq .99
iny
bne .1
bra .99
.2 cmp #$C0 REPEAT char?
bne .5
iny
beq .99
lda SRC.Buffer,y
iny
beq .99
.3 pha
lda SRC.Buffer,y
sta UsrBuf256,x
2015-10-28 16:55:12 +00:00
pla
inx
beq .99
dec
bne .3
iny
bne .1
bra .99
.5 and #$3F Compute blank count
.6 pha
lda #$20
sta UsrBuf256,x
2015-10-28 16:55:12 +00:00
pla
inx
beq .99
dec
bne .6
iny
bne .1
bra .99
.8 clc
.9 rts
.99 lda #ERR.LINE.TOO.LONG
sec
rts
*--------------------------------------
FIO.ReadFromFile ldy #SRC.COUNT
lda (pData),y
clc
adc #SRC.hREFNUMS-1
tay
lda (pData),y
>PUSHA
>SYSCALL MLIRead
2015-10-28 16:55:12 +00:00
bcs .9
tax $100 byte transfered ?
beq .9
lda #ERR.LINE.TOO.LONG
sec
.9 rts
*---------------------------------------
FIO.FileClose ldy #SRC.COUNT
lda (pData),y
beq .8
clc
adc #SRC.hREFNUMS-1
tay
lda (pData),y
>SYSCALL MLICloseA
2015-10-28 16:55:12 +00:00
ldy #SRC.COUNT
lda (pData),y
clc
adc #SRC.hBUFFERS-1
tay
lda (pData),y
>SYSCALL FreeMemA
2015-10-28 16:55:12 +00:00
ldy #SRC.COUNT
lda (pData),y
dec
sta (pData),y
.8 clc
rts
*---------------------------------------
2015-12-04 16:33:33 +00:00
FIO.LOAD.ASM.T ldy #ASM.T.hMem
2015-10-28 16:55:12 +00:00
lda (pData),y
beq .1
>SYSCALL FreeMemA
2015-10-28 16:55:12 +00:00
ldy #ASM.T.hMem
lda #0
sta (pData),y
.1 >PUSHW L.ASM.T.FILENAME
>PUSHW L.MSG.T.FILE
>LIBCALL hLIBSTR,LIBSTR.PRINTF
2016-09-22 06:19:49 +00:00
>PUSHWI 0 Aux type
>PUSHBI 6 S.FILEINFO.TYPE.BIN
>PUSHBI SYS.FOPEN.R
>PUSHW L.ASM.T.FILENAME
>SYSCALL LoadFile
2015-10-28 16:55:12 +00:00
bcs .9
txa
ldy #ASM.T.hMem
sta (pData),y
.9 rts
*---------------------------------------
2015-12-04 16:33:33 +00:00
FIO.EmitByte clc
rts
*---------------------------------------
2015-10-28 16:55:12 +00:00
MAN
SAVE BIN/ASM.S.FIO
LOAD BIN/ASM.S
ASM