A2osX/BIN/SH.S.IO.txt

426 lines
6.3 KiB
Plaintext
Raw Normal View History

NEW
2019-06-02 08:58:46 +00:00
AUTO 3,1
*--------------------------------------
2018-11-07 16:11:02 +00:00
IO.Reset jsr IO.Reset.In
jsr IO.Reset.Out
2020-12-15 13:23:22 +00:00
jmp IO.Reset.Err
2019-04-04 15:44:20 +00:00
*--------------------------------------
2019-10-25 15:09:13 +00:00
IO.Pipe.In jsr IO.Pipe.OpenR Open last created PIPE
2020-12-15 13:23:22 +00:00
bcs .9
2019-02-15 16:38:17 +00:00
2019-10-25 15:09:13 +00:00
pha
2019-02-26 16:50:42 +00:00
2019-10-25 15:09:13 +00:00
ldy #S.PS.hStdIn
lda (pPS),y
>STA.G IO.hIn
pla
ldy #S.PS.hStdIn
sta (pPS),y
2020-12-15 13:23:22 +00:00
.9 rts
2019-04-04 15:44:20 +00:00
*--------------------------------------
2018-11-07 16:11:02 +00:00
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
2020-12-15 13:23:22 +00:00
rts
*--------------------------------------
2019-10-25 15:09:13 +00:00
IO.Pop.In clc
.HS B0 BCS
2019-04-04 15:44:20 +00:00
*--------------------------------------
2019-10-25 15:09:13 +00:00
IO.Reset.In sec
>LDA.G IO.hIn
2018-11-07 16:11:02 +00:00
beq .8
2023-05-16 16:53:52 +00:00
2019-10-25 15:09:13 +00:00
bcc .1
2018-11-07 16:11:02 +00:00
ldy #S.PS.hStdIn
2019-10-26 14:33:37 +00:00
jsr IO.Close.Y
2019-10-25 15:09:13 +00:00
.1 ldy #S.PS.hStdIn
2018-11-07 16:11:02 +00:00
sta (pPS),y
>STZ.G IO.hIn
2019-10-25 15:09:13 +00:00
2019-02-15 16:38:17 +00:00
.8 clc
2020-12-15 13:23:22 +00:00
rts
2019-04-04 15:44:20 +00:00
*--------------------------------------
IO.Pipe.Out >PUSHEA.G IO.FIFONAME
2020-03-10 16:42:07 +00:00
>PUSHWZ mode
2019-06-04 06:31:54 +00:00
>SYSCALL MKFIFO
2020-12-15 13:23:22 +00:00
bcs .9
2019-02-18 06:42:17 +00:00
jsr IO.Pipe.OpenW Open for OUTPUT
2020-12-15 13:23:22 +00:00
bcs .9
2019-10-25 15:09:13 +00:00
pha
ldy #S.PS.hStdOut
lda (pPS),y
>STA.G IO.hOut
pla
ldy #S.PS.hStdOut
sta (pPS),y
2020-12-15 13:23:22 +00:00
.9 rts
2018-11-07 16:11:02 +00:00
*--------------------------------------
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
2019-10-25 15:09:13 +00:00
clc
2018-11-07 16:11:02 +00:00
rts
*--------------------------------------
2019-10-25 15:09:13 +00:00
IO.Pop.Out clc
.HS B0 BCS
*--------------------------------------
2019-10-25 15:09:13 +00:00
IO.Reset.Out sec
2023-05-16 16:53:52 +00:00
>LDA.G IO.hOut
2018-11-07 16:11:02 +00:00
beq .8
2019-10-25 15:09:13 +00:00
bcc .1
2018-11-07 16:11:02 +00:00
ldy #S.PS.hStdOut
2019-10-26 14:33:37 +00:00
jsr IO.Close.Y
2019-10-25 15:09:13 +00:00
.1 ldy #S.PS.hStdOut
2018-11-07 16:11:02 +00:00
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
*--------------------------------------
2018-11-07 16:11:02 +00:00
IO.Reset.Err >LDA.G IO.hErr
beq .8
2019-10-26 14:33:37 +00:00
2018-11-07 16:11:02 +00:00
ldy #S.PS.hStdErr
2019-10-26 14:33:37 +00:00
jsr IO.Close.Y
2018-11-07 16:11:02 +00:00
ldy #S.PS.hStdErr
sta (pPS),y
>STZ.G IO.hErr
.8 rts
*--------------------------------------
2019-10-26 14:33:37 +00:00
IO.Close.Y pha
lda (pPS),y
2020-02-28 07:21:46 +00:00
>SYSCALL FClose
2019-10-26 14:33:37 +00:00
pla
rts
*--------------------------------------
2019-10-25 15:09:13 +00:00
IO.Pipe.OpenR ldx #O.RDONLY+O.TEXT
2023-05-16 16:53:52 +00:00
bra IO.Pipe.Open
2019-10-25 15:09:13 +00:00
IO.Pipe.OpenW ldx #O.WRONLY+O.TEXT
2023-10-18 05:41:12 +00:00
IO.Pipe.Open >LEA.G IO.FIFONAME
2019-10-25 15:09:13 +00:00
*--------------------------------------
2020-02-14 07:21:56 +00:00
IO.FOpenYAX >PUSHYA
2019-08-02 14:36:49 +00:00
txa
>PUSHA
2020-02-14 07:21:56 +00:00
>PUSHBI S.FI.T.TXT
>PUSHWZ Aux type
2020-03-09 16:24:08 +00:00
>SYSCALL FOpen
2019-08-02 14:36:49 +00:00
rts
*--------------------------------------
2020-01-07 13:44:38 +00:00
IO.StatArgVBufPtr
>LDYA ZPArgVBufPtr
2020-02-14 07:21:56 +00:00
IO.StatYA >PUSHYA
2020-01-07 13:44:38 +00:00
>PUSHW ZPCLBuf
2020-03-09 16:24:08 +00:00
>SYSCALL Stat
2020-01-07 13:44:38 +00:00
bcs .9
2021-02-17 16:15:43 +00:00
ldy #S.STAT.MODE+1
2020-01-07 13:44:38 +00:00
lda (ZPCLBuf),y
2021-02-17 16:15:43 +00:00
and #$F0
2020-01-07 13:44:38 +00:00
.9 rts
2019-11-15 14:40:48 +00:00
*--------------------------------------
2020-08-20 13:20:33 +00:00
IO.Exec >PUSHW ZPArgVBufPtr
>PUSHBI S.PS.F.CLOSEONX
>SYSCALL ExecL
rts
*--------------------------------------
2018-11-10 14:30:09 +00:00
IO.PrintBatchErrMsg
2019-02-14 14:51:24 +00:00
>LDYA ZPInputBuf
2018-11-10 14:30:09 +00:00
>STYA ZPPtr1
2020-08-25 06:01:56 +00:00
2019-03-01 14:36:20 +00:00
ldy #S.PS.RC
2020-02-28 07:21:46 +00:00
lda (pPS),y
2023-05-18 16:12:57 +00:00
2019-03-05 16:49:34 +00:00
cmp #E.SYN
2019-03-01 14:36:20 +00:00
beq .10
2019-11-30 13:37:55 +00:00
2019-03-01 14:36:20 +00:00
>LDYA ZPInputCmdPtr
bra .11
2019-11-30 13:37:55 +00:00
2019-03-01 14:36:20 +00:00
.10 >LDYA ZPInputBufPtr
.11 >STYA ZPPtr2
2020-08-25 06:01:56 +00:00
2019-07-31 15:10:59 +00:00
stz ZPTmpW Line Count
stz ZPTmpW+1
2018-11-10 14:30:09 +00:00
2019-07-31 15:10:59 +00:00
.1 inc ZPTmpW
2018-11-10 14:30:09 +00:00
bne .2
2021-05-11 18:44:13 +00:00
2019-07-31 15:10:59 +00:00
inc ZPTmpW+1
2018-11-10 14:30:09 +00:00
2019-02-14 14:51:24 +00:00
.2 ldy #$ff
.3 iny
lda (ZPPtr1),y
beq .4 EoF
cmp #C.CR
bne .3 Scan until EoL
2020-08-25 06:01:56 +00:00
2019-02-14 14:51:24 +00:00
.4 tya
clc
adc ZPPtr1
tax
2018-11-10 14:30:09 +00:00
lda ZPPtr1+1
2019-02-14 14:51:24 +00:00
adc #0
pha
2019-03-01 14:36:20 +00:00
cpx ZPPtr2
sbc ZPPtr2+1
2019-02-14 14:51:24 +00:00
pla
bcs .41
2020-08-25 06:01:56 +00:00
2019-02-14 14:51:24 +00:00
inx
bne .40
2020-08-25 06:01:56 +00:00
2019-02-14 14:51:24 +00:00
inc
2020-08-25 06:01:56 +00:00
2019-02-14 14:51:24 +00:00
.40 stx ZPPtr1
sta ZPPtr1+1
bra .1
2018-11-10 14:30:09 +00:00
2019-02-14 14:51:24 +00:00
.41 ldy #$ff
2018-11-10 14:30:09 +00:00
2019-02-14 14:51:24 +00:00
.5 iny
lda (ZPPtr1),y
2019-06-04 15:49:58 +00:00
sta (ZPCLBuf),y
2018-11-10 14:30:09 +00:00
beq .6
2019-02-14 14:51:24 +00:00
2019-06-04 15:49:58 +00:00
eor #C.CR
bne .5
2019-02-14 14:51:24 +00:00
2019-06-04 15:49:58 +00:00
sta (ZPCLBuf),y
2020-02-14 07:21:56 +00:00
.6 ldy #S.PS.hStdErr
lda (pPS),y
>PUSHA
2020-02-14 07:21:56 +00:00
>PUSHW L.MSG.BATCHLINE
>PUSHW ZPCLBuf
2019-06-04 15:49:58 +00:00
>PUSHBI 2
2020-03-09 16:24:08 +00:00
>SYSCALL FPrintF
2018-11-27 21:26:03 +00:00
2019-02-14 14:51:24 +00:00
ldy #$ff
2019-06-04 15:49:58 +00:00
ldx #'-'
2019-02-14 14:51:24 +00:00
.7 iny
2019-06-04 15:49:58 +00:00
lda (ZPCLBuf),y
2019-02-14 14:51:24 +00:00
beq .8
2019-06-04 15:49:58 +00:00
txa
sta (ZPCLBuf),y
2019-02-14 14:51:24 +00:00
bra .7
2019-06-04 15:49:58 +00:00
2020-02-14 07:21:56 +00:00
.8 ldy #S.PS.hStdErr
lda (pPS),y
>PUSHA
>PUSHW L.MSG.BATCHERR
2019-06-04 15:49:58 +00:00
>PUSHW ZPCLBuf
2020-02-14 07:21:56 +00:00
>PUSHW ZPTmpW
2019-06-04 15:49:58 +00:00
>PUSHBI 4
2020-03-09 16:24:08 +00:00
>SYSCALL FPrintF
2020-02-14 07:21:56 +00:00
rts
2018-11-10 14:30:09 +00:00
*--------------------------------------
2020-05-17 17:34:32 +00:00
IO.PrintErrMsg ldy #S.PS.RC
2020-02-28 07:21:46 +00:00
lda (pPS),y
2020-05-17 17:34:32 +00:00
>PUSHA
2019-11-30 13:37:55 +00:00
2020-05-17 17:34:32 +00:00
>PUSHW ZPCLBuf
2021-05-04 17:31:21 +00:00
>SYSCALL GetErrMsg
2019-11-30 13:37:55 +00:00
2020-02-14 07:21:56 +00:00
.8 ldy #S.PS.hStdErr
lda (pPS),y
>PUSHA
>PUSHW L.MSG.ERROR
2019-11-30 13:37:55 +00:00
ldy #S.PS.RC
2020-02-28 07:21:46 +00:00
lda (pPS),y
>PUSHA
2020-05-17 17:34:32 +00:00
>PUSHW ZPCLBuf
2018-10-08 05:55:28 +00:00
>PUSHBI 3
2019-10-25 15:09:13 +00:00
2020-03-09 16:24:08 +00:00
>SYSCALL FPrintF
2020-05-17 17:34:32 +00:00
rts
*--------------------------------------
2023-05-16 16:53:52 +00:00
IO.EscOutYA >STYA ZPPtr1 In
>STYA ZPPtr2 Out
ldy #0
.1 jsr GetPtr1NextChar
beq .8
cmp #'\'
bne .6
lda (ZPPtr1)
beq .7
ldx #OUT.EscCharsCnt-1
.2 cmp OUT.EscChars,x
beq .5
dex
bpl .2
stz ZPTmpW
jsr ToUpperCase
cmp #'X'
bne .3
.20 jsr IncPtr1
lda (ZPPtr1)
beq .40
jsr IO.IsHexDigit
bcs .40
asl ZPTmpW
asl ZPTmpW
asl ZPTmpW
asl ZPTmpW
ora ZPTmpW
sta ZPTmpW
bra .20
.3 jsr IO.IsOctDigit
bcs .40
jsr IncPtr1
asl ZPTmpW
asl ZPTmpW
asl ZPTmpW
ora ZPTmpW
sta ZPTmpW
lda (ZPPtr1)
bne .3
.40 lda ZPTmpW
bra .6
.4 tax
lda #'\'
sta (ZPPtr2),y
iny
txa
bra .6
.5 lda OUT.EscCodes,x
jsr IncPtr1
.6 sta (ZPPtr2),y
iny
bra .1
.7 lda #'\'
sta (ZPPtr2),y
iny
lda #0
.8 sta (ZPPtr2),y
>LDYA ZPPtr2
*--------------------------------------
IO.OutYA >PUSHYA
>PUSHBI 0
>SYSCALL PrintF
rts
*--------------------------------------
IO.IsOctDigit cmp #'0'
bcc .9
cmp #'7'+1
bcs .9
and #%00000111
clc
rts
.9 sec
rts
*--------------------------------------
IO.IsHexDigit cmp #'0'
bcc .9
cmp #'9'+1
bcc .8
cmp #'A'
bcc .9
cmp #'Z'+1
bcc .7
cmp #'a'
bcc .9
cmp #'z'+1
bcc .9
* sec
sbc #$20
.7 sec
sbc #'A'-10
.8 and #$0F
clc
rts
.9 sec
rts
*--------------------------------------
MAN
2020-05-26 14:23:09 +00:00
SAVE usr/src/bin/sh.s.io
LOAD usr/src/bin/sh.s
ASM