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
>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

View File

@ -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

View File

@ -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

View File

@ -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