A2osX/BIN/ASM.S.FIO.txt

257 lines
4.3 KiB
Plaintext
Raw Normal View History

NEW
PREFIX /A2OSX.BUILD
AUTO 4,1
2015-10-28 16:55:12 +00:00
*---------------------------------------
FIO.Init 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
.2 iny
lda (ZPPtr1),y
2015-12-04 16:33:33 +00:00
sta ASM.T.FILENAME,y
bne .2
ldx #0
2015-12-04 16:33:33 +00:00
.3 lda ASM.T.DEFAULT,x
sta ASM.T.FILENAME,y
beq FIO.LOAD.ASM.T
inx
iny
bra .3
2015-12-04 16:33:33 +00:00
*---------------------------------------
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
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
*---------------------------------------
FIO.OpenFileA >SYSCALL GetMemPtr.A
2015-10-28 16:55:12 +00:00
>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
*---------------------------------------
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.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
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
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