From 8475d1ddda128bbcce2004daf2c6a67b6b2a7a77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Mon, 25 Feb 2019 14:47:31 +0000 Subject: [PATCH] Kernel 0.92+ --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/MORE.S.txt | 45 +++---------------- BIN/SH.S.CORE.txt | 6 ++- BIN/SH.S.IO.txt | 4 +- SYS/KERNEL.S.STDIO.txt | 94 ++++++++++++++++++++++++++------------- 5 files changed, 75 insertions(+), 74 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index efc83f181111890804f9519cfc88221e15bd96ee..7b6140eda5580d130d76037656775d41941f0d48 100644 GIT binary patch delta 27229 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 delta 28248 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 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