A2osX/BIN/SH.S.IO.txt
2019-11-30 14:37:55 +01:00

285 lines
4.8 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
AUTO 3,1
.LIST OFF
*--------------------------------------
IO.Reset jsr IO.Reset.In
jsr IO.Reset.Out
jsr IO.Reset.Err
IO.Reset.9 rts
*--------------------------------------
IO.Load pha
>PUSHWZ Aux type
>PUSHBI S.FI.T.TXT
>PUSHBI O.RDONLY
pla
>SYSCALL LoadTxtFile
rts
*--------------------------------------
IO.Pipe.In jsr IO.Pipe.OpenR Open last created PIPE
bcs IO.Set.RTS
pha
ldy #S.PS.hStdIn
lda (pPS),y
>STA.G IO.hIn
pla
ldy #S.PS.hStdIn
sta (pPS),y
rts
*--------------------------------------
IO.Set.In pha
jsr IO.Reset.In
ldy #S.PS.hStdIn
lda (pPS),y
>STA.G IO.hIn
pla
ldy #S.PS.hStdIn
sta (pPS),y
IO.Set.RTS rts
*--------------------------------------
IO.Pop.In clc
.HS B0 BCS
*--------------------------------------
IO.Reset.In sec
>LDA.G IO.hIn
beq .8
bcc .1
ldy #S.PS.hStdIn
jsr IO.Close.Y
.1 ldy #S.PS.hStdIn
sta (pPS),y
>STZ.G IO.hIn
.8 clc
IO.Reset.In.RTS rts
*--------------------------------------
IO.Pipe.Out >PUSHWZ mode
>LEA.G IO.FIFO
>SYSCALL MKFIFO
bcs IO.Reset.In.RTS Create a new PIPE
jsr IO.Pipe.OpenW Open for OUTPUT
bcs IO.Reset.In.RTS
pha
ldy #S.PS.hStdOut
lda (pPS),y
>STA.G IO.hOut
pla
ldy #S.PS.hStdOut
sta (pPS),y
rts
*--------------------------------------
IO.Set.Out pha
jsr IO.Reset.Out
ldy #S.PS.hStdOut
lda (pPS),y
>STA.G IO.hOut
pla
ldy #S.PS.hStdOut
sta (pPS),y
clc
rts
*--------------------------------------
IO.Pop.Out clc
.HS B0 BCS
*--------------------------------------
IO.Reset.Out sec
IO.Reset.OutC >LDA.G IO.hOut
beq .8
bcc .1
ldy #S.PS.hStdOut
jsr IO.Close.Y
.1 ldy #S.PS.hStdOut
sta (pPS),y
>STZ.G IO.hOut
.8 rts
*--------------------------------------
IO.Set.Err pha
jsr IO.Reset.Err
ldy #S.PS.hStdErr
lda (pPS),y
>STA.G IO.hErr
pla
ldy #S.PS.hStdErr
sta (pPS),y
rts
*--------------------------------------
IO.Reset.Err >LDA.G IO.hErr
beq .8
ldy #S.PS.hStdErr
jsr IO.Close.Y
ldy #S.PS.hStdErr
sta (pPS),y
>STZ.G IO.hErr
.8 rts
*--------------------------------------
IO.Close.Y pha
lda (pPS),y
>SYSCALL fclose
pla
rts
*--------------------------------------
IO.Pipe.OpenR ldx #O.RDONLY+O.TEXT
.HS 2C BIT ABS
IO.Pipe.OpenW ldx #O.WRONLY+O.TEXT
>LEA.G IO.FIFO
*--------------------------------------
IO.FOpenYAX pha
>PUSHWZ Aux type
>PUSHBI S.FI.T.TXT
txa
>PUSHA
pla
>SYSCALL fopen
rts
*--------------------------------------
IO.StatYA phy
pha
>PUSHEA.G StatBuf
pla
ply
>SYSCALL STAT
rts
*--------------------------------------
IO.PrintBatchErrMsg
>LDYA ZPInputBuf
>STYA ZPPtr1
ldy #S.PS.RC
lda (pPs),y
cmp #E.SYN
beq .10
>LDYA ZPInputCmdPtr
bra .11
.10 >LDYA ZPInputBufPtr
.11 >STYA ZPPtr2
stz ZPTmpW Line Count
stz ZPTmpW+1
.1 inc ZPTmpW
bne .2
inc ZPTmpW+1
.2 ldy #$ff
.3 iny
lda (ZPPtr1),y
beq .4 EoF
cmp #C.CR
bne .3 Scan until EoL
.4 tya
clc
adc ZPPtr1
tax
lda ZPPtr1+1
adc #0
pha
cpx ZPPtr2
sbc ZPPtr2+1
pla
bcs .41
inx
bne .40
inc
.40 stx ZPPtr1
sta ZPPtr1+1
bra .1
.41 ldy #$ff
.5 iny
lda (ZPPtr1),y
sta (ZPCLBuf),y
beq .6
eor #C.CR
bne .5
sta (ZPCLBuf),y
.6 >PUSHW ZPCLBuf
>PUSHBI 2
>PUSHW L.MSG.BATCHLINE
jsr IO.PrintErr
ldy #$ff
ldx #'-'
.7 iny
lda (ZPCLBuf),y
beq .8
txa
sta (ZPCLBuf),y
bra .7
.8 >PUSHW ZPTmpW
>PUSHW ZPCLBuf
>PUSHBI 4
>PUSHW L.MSG.BATCHERR
.80 bra IO.PrintErr
*--------------------------------------
IO.PrintErrMsg ldx L.ERR.Codes
stx ZPPTR1
ldx L.ERR.Codes+1
stx ZPPTR1+1
ldy #S.PS.RC
lda (pPs),y
ldy #0
.1 cmp (ZPPTR1),y
beq .2
iny
cpy #ERR.Count
bne .1
.2 lda L.ERR.Messages
sta ZPPTR1
lda L.ERR.Messages+1
sta ZPPTR1+1
.3 dey
bmi .8
lda (ZPPTR1)
jsr AddAp1Ptr1
bra .3
.8 >PUSHW ZPPTR1
ldy #S.PS.RC
lda (pPs),y
>PUSHA
>PUSHBI 3
>PUSHW L.MSG.ERROR
IO.PrintErr ldy #S.PS.hStdErr
lda (pPS),y
>SYSCALL fprintf
rts
*--------------------------------------
MAN
SAVE USR/SRC/BIN/SH.S.IO
LOAD USR/SRC/BIN/SH.S
ASM