Kernel 0.92+

This commit is contained in:
Rémy GIBERT 2019-02-25 14:47:31 +00:00
parent b7d0ebf1ea
commit 8475d1ddda
5 changed files with 75 additions and 74 deletions

Binary file not shown.

View File

@ -164,10 +164,8 @@ CS.RUN.PAUSE >PUSHBI 0
lda (pPS),y lda (pPS),y
>SYSCALL fprintf >SYSCALL fprintf
.10 >SLEEP .10 jsr CS.RUN.GETC
bcs .99
jsr CS.RUN.GETC
bcs .10 no char
cmp #'Q' cmp #'Q'
beq .9 beq .9
@ -184,11 +182,8 @@ CS.RUN.PAUSE >PUSHBI 0
jsr CS.RUN.ERASE jsr CS.RUN.ERASE
.40 >SLEEP .40 jsr CS.RUN.GETLINE
jsr CS.RUN.GETLINE
bcc .5 bcc .5
tay
beq .40
cmp #MLI.E.EOF cmp #MLI.E.EOF
bne .99 bne .99
@ -202,6 +197,7 @@ CS.RUN.PAUSE >PUSHBI 0
bra CS.RUN.PAUSE bra CS.RUN.PAUSE
.9 jsr CS.RUN.ERASE .9 jsr CS.RUN.ERASE
.90 lda #0 .90 lda #0
.99 sec .99 sec
rts rts
@ -233,36 +229,7 @@ CS.RUN.GETLINE >PUSHWI 256
lda (pPS),y lda (pPS),y
.1 >SYSCALL fgets .1 >SYSCALL fgets
bcs .9 rts
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
*-------------------------------------- *--------------------------------------
CS.RUN.PRINT >LDA.G bLineNum CS.RUN.PRINT >LDA.G bLineNum
bpl .1 bpl .1

View File

@ -208,8 +208,10 @@ CORE.ExecExtCmd.Exit
txa txa
>PUSHA >PUSHA
>PUSHBI 1 >PUSHBI 1
>LDYA L.MSG.PID >PUSHW L.MSG.PID
>SYSCALL printf ldy #S.PS.hStdErr
lda (pPS),y
>SYSCALL fprintf
rts rts
.4 >SLEEP Suspend this PID .4 >SLEEP Suspend this PID

View File

@ -38,7 +38,7 @@ IO.Reset.In >LDA.G IO.hIn
ldy #S.PS.hStdIn ldy #S.PS.hStdIn
lda (pPS),y lda (pPS),y
>DEBUG
>SYSCALL fclose >SYSCALL fclose
pla pla
@ -100,7 +100,7 @@ IO.Reset.Out >LDA.G IO.hOut
ldy #S.PS.hStdOut ldy #S.PS.hStdOut
lda (pPS),y lda (pPS),y
>DEBUG
>SYSCALL fclose >SYSCALL fclose
pla pla

View File

@ -32,7 +32,9 @@ K.PutChar >PUSHA character
bcc .8 bcc .8
tay tay
beq K.FPutC.RET1 bne .8
>RET 1
.8 rts .8 rts
*/-------------------------------------- */--------------------------------------
@ -51,25 +53,19 @@ K.PutChar >PUSHA character
* (pStack)+0 character * (pStack)+0 character
*-------------------------------------- *--------------------------------------
K.FPutC jsr PFT.CheckNodeA K.FPutC jsr PFT.CheckNodeA
bcs K.FPutC.RET1 bcs .8
lda (pStack) character lda (pStack) character
sta K.IOBuf sta K.IOBuf
ldy #1 ldy #1 write 1 byte
jsr K.FPutC.Y
K.FPutC.Y lda #0 bcc .8
>PUSHYA count
>PUSHWI K.IOBuf buf
jsr IO.Write.I
bcc K.FPutC.RET1
tay tay
bne K.FPutC.RET1 bne .8
rts
>RET 4 pop buf,count but keep char .8 >RET 1
K.FPutC.RET1 >RET 1 pop char
*/-------------------------------------- */--------------------------------------
* # puts (BLOCKING) * # puts (BLOCKING)
* Write Str to StdOut, appends '\r\n' * Write Str to StdOut, appends '\r\n'
@ -95,8 +91,18 @@ K.PutS >PUSHYA
lda #C.LF lda #C.LF
sta K.IOBuf+1 sta K.IOBuf+1
ldy #2 ldy #2 write 2 bytes
bra K.FPutC.Y
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 K.PutS.RTS rts
*/-------------------------------------- */--------------------------------------
@ -120,7 +126,15 @@ K.FPutS jsr PFT.CheckNodeA set IO.hFD
>SYSCALL strlen Get String len in Y,A >SYSCALL strlen Get String len in Y,A
>PUSHYA push len >PUSHYA push len
>PUSHW ZPPtr2 push buffer >PUSHW ZPPtr2 push buffer
jmp IO.Write.I jsr IO.Write.I
bcc .8
tay
bne .8
>RET 4
.8 rts
.9 >RET 2 .9 >RET 2
*/-------------------------------------- */--------------------------------------
* # PrintF (BLOCKING) * # PrintF (BLOCKING)
@ -760,26 +774,42 @@ PrintF.COut phy
* Y,A: s * Y,A: s
* CC = success * CC = success
*\-------------------------------------- *\--------------------------------------
* (pStack)+2 n
* (pStack)+0 s
*--------------------------------------
K.FGetS jsr PFT.CheckNodeA K.FGetS jsr PFT.CheckNodeA
bcs K.FGetS.RET4 bcs .9
>PULLW ZPPtr2 s lda (pStack)
sta ZPPtr2
ldy #1
>PULLA lda (pStack),y
sta ZPPtr2+1 s
iny
lda (pStack),y
sec sec
sbc #2 sbc #2
eor #$ff eor #$ff
sta ZPPtr1 !n sta ZPPtr1 !n
>PULLA
iny
lda (pStack),y
sbc #0 sbc #0
eor #$ff eor #$ff
sta ZPPtr1+1 !n sta ZPPtr1+1 !n
jsr K.GetC.I .10 jsr K.GetC.I
bcs .9 bcc .1
tay
bne .9 I/O ERROR
rts BLOCKING I/O
.1 lda K.IOBuf .1 cmp #C.LF Discard any leading LF
cmp #C.CR beq .10
.2 cmp #C.CR
beq .8 beq .8
jsr MEM.PutCharPtr2 jsr MEM.PutCharPtr2
@ -788,16 +818,18 @@ K.FGetS jsr PFT.CheckNodeA
beq .8 beq .8
jsr K.GetC.I jsr K.GetC.I
bcc .1 bcc .2 another char...
tay BLOCKING...
bne .8
jsr .9 Cancel GetC blocking
.8 clc .8 clc
.9 pha
lda #0 lda #0
sta (ZPPtr2) sta (ZPPtr2) terminate string
pla
.99 rts .9 >RET 4
K.FGetS.RET4 >RET 4
*/-------------------------------------- */--------------------------------------
* # getchar (BLOCKING) * # getchar (BLOCKING)
* Get char from StdIn * Get char from StdIn