A2osX/BIN/ASM.S.FIO.txt
2018-01-10 16:34:57 +00:00

257 lines
4.3 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

NEW
PREFIX /A2OSX.BUILD
AUTO 4,1
*---------------------------------------
FIO.Init ldy #S.PS.hARGS
lda (pPS),y
>SYSCALL GetMemPtr.A
>STYA ZPPtr1
ldy #$ff
.2 iny
lda (ZPPtr1),y
sta ASM.T.FILENAME,y
bne .2
ldx #0
.3 lda ASM.T.DEFAULT,x
sta ASM.T.FILENAME,y
beq FIO.LOAD.ASM.T
inx
iny
bra .3
*---------------------------------------
FIO.LOAD.ASM.T ldy #ASM.T.hMem
lda (pData),y
beq .1
>SYSCALL FreeMem.A
ldy #ASM.T.hMem
lda #0
sta (pData),y
.1 >PUSHW L.ASM.T.FILENAME
>LDYA L.MSG.T.FILE
>SYSCALL PrintF.YA
>PUSHWI 0 Aux type
>PUSHBI 6 S.FI.T.BIN
>PUSHBI SYS.FOpen.R
>PUSHW L.ASM.T.FILENAME
>SYSCALL LoadFile
bcs .9
txa
ldy #ASM.T.hMem
sta (pData),y
.9 rts
*---------------------------------------
FIO.OpenFileA >SYSCALL GetMemPtr.A
>STYA ZPPtr1
>PUSHW ZPPtr1
>LDYA L.MSG.SRC.FILE
>SYSCALL PrintF.YA
ldy #SRC.COUNT
lda (pData),y
cmp #SRC.IN.MAXDEPTH
bne .1
lda #ERR.SRC.TOO.MANY.IN
sec
rts
.1 >PUSHW L.FIO.Stat
>PUSHW ZPPtr1
>SYSCALL Stat
bcs .99
lda FIO.Stat+S.STAT.P.TYPE
cmp #$04 TXT ?
bne .2
>PUSHWI 0
>PUSHBI 4
>PUSHBI SYS.FOpen.R+SYS.FOpen.T
bra .3
.2 cmp #$FA S-C/BAS?
bne .98
>PUSHWI 0
>PUSHBI $FA
>PUSHBI SYS.FOpen.R
.3 >PUSHW ZPPtr1
>SYSCALL FOpen
bcs .99
pha
ldy #SRC.COUNT
lda (pData),y
clc
adc #SRC.hFILES
tay
pla
sta (pData),y
ldy #SRC.COUNT
lda (pData),y
clc
adc #SRC.hFILETYPES
tay
lda FIO.Stat+S.STAT.P.TYPE
sta (pData),y
ldy #SRC.COUNT
lda (pData),y
inc
sta (pData),y
clc
rts
.98 lda #ERR.SRC.INV.TYPE
sec
.99 rts
*---------------------------------------
FIO.ReadLine stz SRC.BufPtr
ldy #SRC.COUNT
lda (pData),y
clc
adc #SRC.hFILETYPES-1
tay
lda (pData),y
bmi .10
>PUSHWI 256
>PUSHWI UsrBuf256
jsr FIO.ReadFromFile
bcs .19
lda #0 replace ending $0D with $00
sta UsrBuf256,y
.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
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
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
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.hFILES-1
tay
lda (pData),y
>PUSHA
>SYSCALL FRead
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.hFILES-1
tay
lda (pData),y
>SYSCALL FClose.A
ldy #SRC.COUNT
lda (pData),y
dec
sta (pData),y
.8 clc
rts
*---------------------------------------
FIO.EmitByte clc
rts
*---------------------------------------
MAN
SAVE /A2OSX.BUILD/BIN/DEV/ASM.S.FIO
LOAD /A2OSX.BUILD/BIN/DEV/ASM.S
ASM