diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index efc83f18..7b6140ed 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/MORE.S.txt b/BIN/MORE.S.txt index 3e1509b4..fa3a3afd 100644 --- a/BIN/MORE.S.txt +++ b/BIN/MORE.S.txt @@ -164,10 +164,8 @@ CS.RUN.PAUSE >PUSHBI 0 lda (pPS),y >SYSCALL fprintf -.10 >SLEEP - - jsr CS.RUN.GETC - bcs .10 no char +.10 jsr CS.RUN.GETC + bcs .99 cmp #'Q' beq .9 @@ -184,11 +182,8 @@ CS.RUN.PAUSE >PUSHBI 0 jsr CS.RUN.ERASE -.40 >SLEEP - jsr CS.RUN.GETLINE +.40 jsr CS.RUN.GETLINE bcc .5 - tay - beq .40 cmp #MLI.E.EOF bne .99 @@ -202,6 +197,7 @@ CS.RUN.PAUSE >PUSHBI 0 bra CS.RUN.PAUSE .9 jsr CS.RUN.ERASE + .90 lda #0 .99 sec rts @@ -233,36 +229,7 @@ CS.RUN.GETLINE >PUSHWI 256 lda (pPS),y .1 >SYSCALL fgets - bcs .9 - - lda (ZPBufPtr) - cmp #C.LF - bne .11 - - lda #C.CR - sta (ZPBufPtr) - -.11 ldy #$ff - -.2 iny - lda (ZPBufPtr),y - bne .2 - -.3 tya - beq .8 - - dey - lda (ZPBufPtr),y - cmp #C.LF - beq .3 - cmp #C.CR - beq .3 - lda #0 - iny -.8 sta (ZPBufPtr),y - - clc -.9 rts + rts *-------------------------------------- CS.RUN.PRINT >LDA.G bLineNum bpl .1 @@ -275,7 +242,7 @@ CS.RUN.PRINT >LDA.G bLineNum .1 >LDA.G bEscCodes bmi .2 - + >LDYA ZPBufPtr >SYSCALL puts rts diff --git a/BIN/SH.S.CORE.txt b/BIN/SH.S.CORE.txt index 69d938f4..d40ec268 100644 --- a/BIN/SH.S.CORE.txt +++ b/BIN/SH.S.CORE.txt @@ -208,8 +208,10 @@ CORE.ExecExtCmd.Exit txa >PUSHA >PUSHBI 1 - >LDYA L.MSG.PID - >SYSCALL printf + >PUSHW L.MSG.PID + ldy #S.PS.hStdErr + lda (pPS),y + >SYSCALL fprintf rts .4 >SLEEP Suspend this PID diff --git a/BIN/SH.S.IO.txt b/BIN/SH.S.IO.txt index 1511b8f2..a9759b04 100644 --- a/BIN/SH.S.IO.txt +++ b/BIN/SH.S.IO.txt @@ -38,7 +38,7 @@ IO.Reset.In >LDA.G IO.hIn ldy #S.PS.hStdIn lda (pPS),y - + >DEBUG >SYSCALL fclose pla @@ -100,7 +100,7 @@ IO.Reset.Out >LDA.G IO.hOut ldy #S.PS.hStdOut lda (pPS),y - + >DEBUG >SYSCALL fclose pla diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 8b9950ac..21cb8bfd 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -32,7 +32,9 @@ K.PutChar >PUSHA character bcc .8 tay - beq K.FPutC.RET1 + bne .8 + + >RET 1 .8 rts */-------------------------------------- @@ -51,25 +53,19 @@ K.PutChar >PUSHA character * (pStack)+0 character *-------------------------------------- K.FPutC jsr PFT.CheckNodeA - bcs K.FPutC.RET1 + bcs .8 lda (pStack) character sta K.IOBuf - ldy #1 - -K.FPutC.Y lda #0 - - >PUSHYA count - >PUSHWI K.IOBuf buf - jsr IO.Write.I - bcc K.FPutC.RET1 + ldy #1 write 1 byte + jsr K.FPutC.Y + bcc .8 tay - bne K.FPutC.RET1 + bne .8 + rts - >RET 4 pop buf,count but keep char - -K.FPutC.RET1 >RET 1 pop char +.8 >RET 1 */-------------------------------------- * # puts (BLOCKING) * Write Str to StdOut, appends '\r\n' @@ -95,8 +91,18 @@ K.PutS >PUSHYA lda #C.LF sta K.IOBuf+1 - ldy #2 - bra K.FPutC.Y + ldy #2 write 2 bytes + +K.FPutC.Y lda #0 + + >PUSHYA count + >PUSHWI K.IOBuf buf + jsr IO.Write.I + bcc K.PutS.RTS + tay + bne K.PutS.RTS + + >RET 4 pop buf,count but keep char K.PutS.RTS rts */-------------------------------------- @@ -120,7 +126,15 @@ K.FPutS jsr PFT.CheckNodeA set IO.hFD >SYSCALL strlen Get String len in Y,A >PUSHYA push len >PUSHW ZPPtr2 push buffer - jmp IO.Write.I + jsr IO.Write.I + bcc .8 + tay + bne .8 + + >RET 4 + +.8 rts + .9 >RET 2 */-------------------------------------- * # PrintF (BLOCKING) @@ -760,26 +774,42 @@ PrintF.COut phy * Y,A: s * CC = success *\-------------------------------------- +* (pStack)+2 n +* (pStack)+0 s +*-------------------------------------- K.FGetS jsr PFT.CheckNodeA - bcs K.FGetS.RET4 + bcs .9 - >PULLW ZPPtr2 s + lda (pStack) + sta ZPPtr2 + ldy #1 + + lda (pStack),y + sta ZPPtr2+1 s - >PULLA + iny + lda (pStack),y sec sbc #2 eor #$ff sta ZPPtr1 !n - >PULLA + + iny + lda (pStack),y sbc #0 eor #$ff sta ZPPtr1+1 !n - jsr K.GetC.I - bcs .9 +.10 jsr K.GetC.I + bcc .1 + tay + bne .9 I/O ERROR + rts BLOCKING I/O + +.1 cmp #C.LF Discard any leading LF + beq .10 -.1 lda K.IOBuf - cmp #C.CR +.2 cmp #C.CR beq .8 jsr MEM.PutCharPtr2 @@ -788,16 +818,18 @@ K.FGetS jsr PFT.CheckNodeA beq .8 jsr K.GetC.I - bcc .1 + bcc .2 another char... + tay BLOCKING... + bne .8 + + jsr .9 Cancel GetC blocking .8 clc -.9 pha lda #0 - sta (ZPPtr2) - pla -.99 rts -K.FGetS.RET4 >RET 4 + sta (ZPPtr2) terminate string + +.9 >RET 4 */-------------------------------------- * # getchar (BLOCKING) * Get char from StdIn