NEW AUTO 3,1 *-------------------------------------- IO.Reset jsr IO.Reset.In jsr IO.Reset.Out jmp IO.Reset.Err *-------------------------------------- IO.Pipe.In jsr IO.Pipe.OpenR Open last created PIPE bcs .9 pha ldy #S.PS.hStdIn lda (pPS),y >STA.G IO.hIn pla ldy #S.PS.hStdIn sta (pPS),y .9 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 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 rts *-------------------------------------- IO.Pipe.Out >PUSHEA.G IO.DEVFIFO >PUSHWZ mode >SYSCALL MKFIFO bcs .9 jsr IO.Pipe.OpenW Open for OUTPUT bcs .9 pha ldy #S.PS.hStdOut lda (pPS),y >STA.G IO.hOut pla ldy #S.PS.hStdOut sta (pPS),y .9 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 >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 bra IO.Pipe.Open IO.Pipe.OpenW ldx #O.WRONLY+O.TEXT IO.Pipe.Open >LEA.G IO.DEVFIFO *-------------------------------------- IO.FOpenYAX >PUSHYA txa >PUSHA >PUSHBI S.FI.T.TXT >PUSHWZ Aux type >SYSCALL FOpen rts *-------------------------------------- IO.StatArgVBufPtr >LDYA ZPArgVBufPtr IO.StatYA >PUSHYA >PUSHW ZPCLBuf >SYSCALL Stat bcs .9 ldy #S.STAT.MODE+1 lda (ZPCLBuf),y and #$F0 .9 rts *-------------------------------------- IO.Exec >PUSHW ZPArgVBufPtr >PUSHBI S.PS.F.CLOSEONX >SYSCALL ExecL 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 ldy #S.PS.hStdErr lda (pPS),y >PUSHA >PUSHW L.MSG.BATCHLINE >PUSHW ZPCLBuf >PUSHBI 2 >SYSCALL FPrintF ldy #$ff ldx #'-' .7 iny lda (ZPCLBuf),y beq .8 txa sta (ZPCLBuf),y bra .7 .8 ldy #S.PS.hStdErr lda (pPS),y >PUSHA >PUSHW L.MSG.BATCHERR >PUSHW ZPCLBuf >PUSHW ZPTmpW >PUSHBI 4 >SYSCALL FPrintF rts *-------------------------------------- IO.PrintErrMsg ldy #S.PS.RC lda (pPS),y >PUSHA >PUSHW ZPCLBuf >SYSCALL GetErrMsg .8 ldy #S.PS.hStdErr lda (pPS),y >PUSHA >PUSHW L.MSG.ERROR ldy #S.PS.RC lda (pPS),y >PUSHA >PUSHW ZPCLBuf >PUSHBI 3 >SYSCALL FPrintF rts *-------------------------------------- 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 SAVE usr/src/bin/sh.s.io LOAD usr/src/bin/sh.s ASM