A2osX/BIN/ASM.S.FIO.txt

290 lines
4.7 KiB
Plaintext
Raw Normal View History

NEW
PREFIX /A2OSX.BUILD
AUTO 4,1
2015-10-28 16:55:12 +00:00
*---------------------------------------
2018-01-11 16:34:09 +00:00
FIO.Init >LDYA L.ASM.6502
FIO.LOAD.ASM.T >STYA ZPPtr2
ldy #S.PS.hARGS
2015-12-04 16:33:33 +00:00
lda (pPS),y
>SYSCALL GetMemPtr.A
2015-12-04 16:33:33 +00:00
>STYA ZPPtr1
ldy #$ff
2018-01-11 16:34:09 +00:00
ldx #$ff
2018-01-11 16:34:09 +00:00
.1 iny
inx
lda (ZPPtr1),y
2018-01-11 16:34:09 +00:00
sta ASM.T.FILENAME,x
bne .1
2015-12-04 16:33:33 +00:00
2018-01-11 16:34:09 +00:00
lda #'.'
sta ASM.T.FILENAME,x
2015-12-04 16:33:33 +00:00
inx
2018-01-11 16:34:09 +00:00
lda #'T'
sta ASM.T.FILENAME,x
inx
lda #'.'
sta ASM.T.FILENAME,x
ldy #$ff
.3 iny
inx
lda (ZPPtr2),y
sta ASM.T.FILENAME,x
bne .3
ldy #ASM.T.hMem
lda (pData),y
2018-01-11 16:34:09 +00:00
beq .4
>SYSCALL FreeMem.A
ldy #ASM.T.hMem
lda #0
sta (pData),y
2018-01-11 16:34:09 +00:00
.4 >PUSHW L.ASM.T.FILENAME
>LDYA L.MSG.T.FILE
>SYSCALL PrintF.YA
2015-10-28 16:55:12 +00:00
>PUSHWI 0 Aux type
>PUSHBI 6 S.FI.T.BIN
>PUSHBI SYS.FOpen.R
>PUSHW L.ASM.T.FILENAME
>SYSCALL LoadFile
bcs .9
2015-11-20 16:31:14 +00:00
txa
ldy #ASM.T.hMem
sta (pData),y
2015-11-20 16:31:14 +00:00
.9 rts
*---------------------------------------
2018-01-11 16:34:09 +00:00
FIO.OpenFile >STYA ZPPtr1
>PUSHW ZPPtr1
>LDYA L.MSG.SRC.FILE
>SYSCALL PrintF.YA
2015-10-28 16:55:12 +00:00
ldy #SRC.COUNT
lda (pData),y
2015-10-30 16:34:59 +00:00
cmp #SRC.IN.MAXDEPTH
bne .1
2015-10-28 16:55:12 +00:00
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
2015-10-28 16:55:12 +00:00
>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
2015-10-28 16:55:12 +00:00
bcs .99
pha
ldy #SRC.COUNT
lda (pData),y
clc
adc #SRC.hFILES
2015-10-28 16:55:12 +00:00
tay
pla
sta (pData),y
2015-10-28 16:55:12 +00:00
ldy #SRC.COUNT
lda (pData),y
clc
adc #SRC.hFILETYPES
tay
lda FIO.Stat+S.STAT.P.TYPE
2015-10-28 16:55:12 +00:00
sta (pData),y
ldy #SRC.COUNT
2015-10-28 16:55:12 +00:00
lda (pData),y
inc
sta (pData),y
clc
rts
2015-10-28 16:55:12 +00:00
.98 lda #ERR.SRC.INV.TYPE
sec
.99 rts
2015-10-28 16:55:12 +00:00
*---------------------------------------
2018-01-11 16:34:09 +00:00
FIO.ReadLine >LDYA ZPLineBuf
>STYA ZPLinePtr
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
2018-01-11 16:34:09 +00:00
>PUSHW ZPLineBuf
2015-10-28 16:55:12 +00:00
>PUSHWI 256
jsr FIO.ReadFromFile
bcs .19
lda #0 replace ending $0D with $00
2018-01-11 16:34:09 +00:00
sta (ZPLineBuf),y
2015-10-28 16:55:12 +00:00
.19 rts
2018-01-11 16:34:09 +00:00
*---------------------------------------
.10 >PUSHW ZPTmpBuf
>PUSHWI 3
2015-10-28 16:55:12 +00:00
jsr FIO.ReadFromFile
2018-01-11 16:34:09 +00:00
bcs .19
2015-10-28 16:55:12 +00:00
2018-01-11 16:34:09 +00:00
ldy #1
lda (ZPTmpBuf),y
2015-10-28 16:55:12 +00:00
sta SRC.LINENUM
2018-01-11 16:34:09 +00:00
iny
lda (ZPTmpBuf),y
2015-10-28 16:55:12 +00:00
sta SRC.LINENUM+1
2018-01-11 16:34:09 +00:00
lda (ZPTmpBuf) LEN
2015-10-28 16:55:12 +00:00
sec
sbc #3
bcc .9 LEN should be at least 3
tay
2018-01-11 16:34:09 +00:00
>PUSHW ZPTmpBuf
2015-10-28 16:55:12 +00:00
lda #0
>PUSHYA
jsr FIO.ReadFromFile
2018-01-11 16:34:09 +00:00
bcs .9
>LDYA ZPTmpBuf
>STYA ZPPtr1
2015-10-28 16:55:12 +00:00
ldy #0
2018-01-11 16:34:09 +00:00
.1 lda (ZPPtr1)
inc ZPPtr1
bne .11
inc ZPPtr1+1
.11 tax
2015-10-28 16:55:12 +00:00
bmi .2
2018-01-11 16:34:09 +00:00
sta (ZPLineBuf),y
2015-10-28 16:55:12 +00:00
beq .8 Ending 00
2018-01-11 16:34:09 +00:00
2015-10-28 16:55:12 +00:00
iny
bne .1
bra .99
.2 cmp #$C0 REPEAT char?
bne .5
2018-01-11 16:34:09 +00:00
lda (ZPPtr1) Get Repeat Count
inc ZPPtr1
2015-10-28 16:55:12 +00:00
bne .3
2018-01-11 16:34:09 +00:00
inc ZPPtr1+1
.3 tax
lda (ZPPtr1) Get Repeat Char
inc ZPPtr1
bne .3
inc ZPPtr1+1
.4 sta (ZPLineBuf),y
2015-10-28 16:55:12 +00:00
iny
2018-01-11 16:34:09 +00:00
beq .99
dex
bne .4
2015-10-28 16:55:12 +00:00
bra .99
.5 and #$3F Compute blank count
2018-01-11 16:34:09 +00:00
tax
2015-10-28 16:55:12 +00:00
lda #$20
2018-01-11 16:34:09 +00:00
.6 sta (ZPLineBuf),y
iny
2015-10-28 16:55:12 +00:00
beq .99
2018-01-11 16:34:09 +00:00
dex
2015-10-28 16:55:12 +00:00
bne .6
2018-01-11 16:34:09 +00:00
bra .1
2015-10-28 16:55:12 +00:00
.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
2015-10-28 16:55:12 +00:00
tay
lda (pData),y
>PUSHA
>SYSCALL FRead
2015-10-28 16:55:12 +00:00
bcs .9
2018-01-11 16:34:09 +00:00
2015-10-28 16:55:12 +00:00
tax $100 byte transfered ?
beq .9
2018-01-11 16:34:09 +00:00
2015-10-28 16:55:12 +00:00
lda #ERR.LINE.TOO.LONG
sec
.9 rts
*---------------------------------------
FIO.FileClose ldy #SRC.COUNT
lda (pData),y
beq .8
clc
adc #SRC.hFILES-1
2015-10-28 16:55:12 +00:00
tay
lda (pData),y
>SYSCALL FClose.A
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.EmitByte clc
rts
*---------------------------------------
2015-10-28 16:55:12 +00:00
MAN
SAVE /A2OSX.BUILD/BIN/DEV/ASM.S.FIO
LOAD /A2OSX.BUILD/BIN/DEV/ASM.S
2015-10-28 16:55:12 +00:00
ASM