From 9f844defbb24a0bfe3dcdae02745ee9e65f13692 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Thu, 16 May 2019 17:51:19 +0200 Subject: [PATCH] Kernel 0.93 --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/MORE.S.txt | 15 ++++-- DRV/X.SSC.DRV.S.txt | 35 +++++++------- INC/A2osX.I.txt | 3 +- SBIN/GETTY.S.txt | 100 +++++++++++++++++++++------------------ SYS/KERNEL.S.IO.txt | 51 ++++++++------------ SYS/KERNEL.S.TERM.txt | 34 ++++++------- 7 files changed, 121 insertions(+), 117 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index d3cee3cddb996d8a2a2a7db59cce9f189b1f8b33..a5097105079605684c5b6a8e3c6fba92ca6167cf 100644 GIT binary patch delta 33279 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 W1^fp19qPrzT&L+UxH{r>?q6o4H7 delta 34289 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 Mp2zB^{Js4D0PY?v4FCWD diff --git a/BIN/MORE.S.txt b/BIN/MORE.S.txt index 93e1858d..71f7742a 100644 --- a/BIN/MORE.S.txt +++ b/BIN/MORE.S.txt @@ -212,9 +212,8 @@ CS.RUN.PAUSE >PUSHBI 0 bcc .5 cmp #MLI.E.EOF - bne .99 - - bra .90 + beq .90 + rts .5 inc LineNum bne .6 @@ -257,7 +256,15 @@ CS.RUN.GETLINE >PUSHWI 256 lda (pPS),y .1 >SYSCALL fgets - rts + bcs .9 + + lda #'\' + >PUSHA + ldy #S.PS.hStdErr + lda (pPS),y + >SYSCALL fputc + +.9 rts *-------------------------------------- CS.RUN.PRINT lda bLineNum bpl .1 diff --git a/DRV/X.SSC.DRV.S.txt b/DRV/X.SSC.DRV.S.txt index 64e478d8..581afdfa 100644 --- a/DRV/X.SSC.DRV.S.txt +++ b/DRV/X.SSC.DRV.S.txt @@ -249,17 +249,17 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB clc rts -.3 cmp #S.IOCTL.STATCODE.GETRC +.3 cmp #S.IOCTL.STATCODE.EOF bne STATUS.9 lda DIB+S.DIB.S and #S.DIB.S.OPENED - beq .8 + beq OPEN.E .DO SSCIRQ=1 lda INBUF.TAIL eor INBUF.HEAD - beq .4 NO DATA? eof + TRUE + beq .4 NO DATA? eof = TRUE lda #1 @@ -295,13 +295,13 @@ CONTROL jsr STATUS.CONTROL.Init *-------------------------------------- OPEN lda DIB+S.DIB.S bit #S.DIB.S.OPENED - beq .1 + beq OPEN.1 - lda #MLI.E.OPEN +OPEN.E lda #MLI.E.OPEN sec rts -.1 php +OPEN.1 php sei ldx DEVSLOTn08F @@ -424,11 +424,11 @@ READ php clc rts -.9 lda #C.EOF +.9 lda #MLI.E.IO .HS 2C BIT ABS -.99 plp - lda #E.NODATA +.99 lda #E.NODATA + plp sec rts *-------------------------------------- @@ -445,7 +445,7 @@ WRITE php .3 .DO SSCIRQ=1 lda SSC.STATUS-$8F,x bit #SSC.STATUS.nDSR true when 0 - bne .90 + bne .9 lda OUTBUF.HEAD cmp OUTBUF.TAIL Buffer Empty? @@ -471,7 +471,7 @@ WRITE php inc and #BUF.MASK cmp OUTBUF.TAIL - beq .9 Buffer Full!! + beq .99 Buffer Full!! sta OUTBUF.HEAD @@ -486,7 +486,7 @@ WRITE php .ELSE .4 lda SSC.STATUS-$8F,x bit #SSC.STATUS.nDSR true when 0 - bne .90 + bne .9 bit #SSC.STATUS.TDRE Outgoing char? beq .4 @@ -505,9 +505,9 @@ WRITE php clc rts -.90 lda #E.NODATA +.9 lda #MLI.E.IO .HS 2C BIT ABS -.9 lda #C.EOF +.99 lda #E.NODATA plp sec rts @@ -520,17 +520,20 @@ STATUS.CONTROL.Init ldy #S.IOCTL.BUFPTR lda (ZPIOCTL),y sta ZPBufPtr + iny + lda (ZPIOCTL),y sta ZPBufPtr+1 -* ldy #S.IOCTL.BYTECNT - iny + iny #S.IOCTL.BYTECNT lda (ZPIOCTL),y eor #$ff sta ZPCount + iny + lda (ZPIOCTL),y eor #$ff sta ZPCount+1 diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index ea916e5a..e9a3624a 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -367,8 +367,7 @@ S.IOCTL.STATCODE.STATUS .EQ 0 S.IOCTL.STATCODE.GETDCB .EQ 1 S.IOCTL.STATCODE.GETNL .EQ 2 S.IOCTL.STATCODE.GETDIB .EQ 3 -S.IOCTL.STATCODE.GETRC .EQ 4 -S.IOCTL.STATCODE.GETWC .EQ 5 +S.IOCTL.STATCODE.EOF .EQ 4 S.IOCTL.CTRLCODE .EQ 4 1 BYTE S.IOCTL.CTRLCODE.RESET .EQ 0 S.IOCTL.CTRLCODE.SETDCB .EQ 1 diff --git a/SBIN/GETTY.S.txt b/SBIN/GETTY.S.txt index 6ec8ec55..f195170d 100644 --- a/SBIN/GETTY.S.txt +++ b/SBIN/GETTY.S.txt @@ -10,12 +10,23 @@ NEW .INB INC/NET.TELNET.I *-------------------------------------- TIMEOUT.MAX .EQ 100 10 sec. +IAC.BUF.MAX .EQ 32 *-------------------------------------- .DUMMY .OR ZPBIN ZS.START ZPPtr1 .BS 2 TimeOut .BS 1 +hErr .BS 1 +ArgIndex .BS 1 +ArgDev .BS 1 +ArgProg .BS 1 +hFILE .BS 1 +bExitOnClose .BS 1 +IAC.CMD .BS 1 +IAC.SUBCMD .BS 1 +IAC.SB.CMD .BS 1 +IAC.SB.LEN .BS 1 ZS.END .ED *-------------------------------------- * File Header (16 Bytes) @@ -48,6 +59,15 @@ L.ENV.TERM .DA ENV.TERM *-------------------------------------- CS.INIT clc rts + +TEST lda ArgProg + >SYSCALL ArgV + >PUSHYA + lda hErr + >SYSCALL fputs + rts + + *-------------------------------------- CS.RUN ldy #S.PS.ARGC lda (pPs),y @@ -55,7 +75,8 @@ CS.RUN ldy #S.PS.ARGC bcc .9 -.1 >INC.G ArgIndex +.1 inc ArgIndex + lda ArgIndex >SYSCALL ArgV bcs .8 @@ -65,18 +86,18 @@ CS.RUN ldy #S.PS.ARGC bcs .9 beq .1 valid option, check next arg - >LDA.G ArgDev + lda ArgDev bne .2 - >LDA.G ArgIndex - >STA.G ArgDev + lda ArgIndex + sta ArgDev bra .1 -.2 >LDA.G ArgProg +.2 lda ArgProg bne .9 - >LDA.G ArgIndex - >STA.G ArgProg + lda ArgIndex + sta ArgProg bra .1 .9 >PUSHBI 0 @@ -86,15 +107,19 @@ CS.RUN ldy #S.PS.ARGC sec .99 rts -.8 >LDA.G ArgDev +.8 lda ArgDev beq .9 - >LDA.G ArgProg + lda ArgProg beq .9 + ldy #S.PS.hStdErr + lda (pPs),y + sta hErr + >PUSHWI 0 auxtype >PUSHBI 0 type >PUSHBI O.RDWR - >LDA.G ArgDev + lda ArgDev >SYSCALL ArgV >SYSCALL fopen @@ -107,7 +132,7 @@ CS.RUN ldy #S.PS.ARGC iny #S.PS.hStdErr sta (pPs),y - >STA.G hFILE + sta hFILE CS.RUN.LOOP0 >SLEEP @@ -149,7 +174,7 @@ CS.RUN.LOOP1 >SLEEP .1 lda TimeOut bne CS.RUN.LOOP1 - >LDA.G ArgDev + lda ArgDev >SYSCALL ArgV >PUSHYA >PUSHWI K.VER @@ -160,16 +185,15 @@ CS.RUN.LOOP1 >SLEEP bcs CS.RUN.EXIT unable to send greetings... .2 >PUSHBI S.PS.F.HOLD - - >LDA.G ArgProg + lda ArgProg >SYSCALL ArgV >SYSCALL ExecV >SLEEP -CS.RUN.EXIT >LDA.G bExitOnClose +CS.RUN.EXIT lda bExitOnClose bmi .8 - + jmp CS.RUN.LOOP0 .8 lda #0 @@ -179,15 +203,14 @@ CS.RUN.9 rts CS.RUN.IACMODE >SYSCALL GetChar Wait for IAC CMD (or SB) bcs CS.RUN.9 - >STA.G IAC.CMD + sta IAC.CMD >SYSCALL GetChar Wait for IAC SUBCMD bcs CS.RUN.9 - >STA.G IAC.SUBCMD - tax + ldx IAC.SUBCMD - >LDA.G IAC.CMD + lda IAC.CMD cmp #SB beq CS.RUN.IAC.SB *-------------------------------------- @@ -216,9 +239,9 @@ CS.RUN.IAC.CMD cmp #WILL CS.RUN.IAC.SB >SYSCALL GetChar Wait for IAC SB.IS or SEND bcs .9 - >STA.G IAC.SB.CMD + sta IAC.SB.CMD - >STZ.G IAC.SB.LEN + stz IAC.SB.LEN .2 >SYSCALL GetChar bcs .9 @@ -226,21 +249,17 @@ CS.RUN.IAC.SB >SYSCALL GetChar Wait for IAC SB.IS or SEND cmp #IAC beq .4 end of DATA, go wait SE - pha + ldy IAC.SB.LEN - >LDA.G IAC.SB.LEN - clc - adc #IAC.SB.DATA - tay - - pla sta (pData),y iny lda #0 sta (pData),y - >INC.G IAC.SB.LEN - bra .2 + sty IAC.SB.LEN + cpy #IAC.BUF.MAX + bne .2 + bra .8 .4 >SYSCALL GetChar bcs .9 @@ -248,15 +267,15 @@ CS.RUN.IAC.SB >SYSCALL GetChar Wait for IAC SB.IS or SEND cmp #SE bne .8 - >LDA.G IAC.SUBCMD + lda IAC.SUBCMD cmp #TELOPT.TTYPE bne .8 - >LDA.G IAC.SB.CMD + lda IAC.SB.CMD cmp #SB.IS bne .8 - >PUSHEA.G IAC.SB.DATA + >PUSHW pData IAC.SB.DATA >LDYA L.ENV.TERM >SYSCALL SetEnv @@ -274,7 +293,7 @@ CS.DOEVENT lda (pEvent) .9 sec do not discard TIMER event rts *-------------------------------------- -CS.QUIT >LDA.G hFILE +CS.QUIT lda hFILE beq .8 >SYSCALL fclose @@ -337,16 +356,7 @@ ENV.TERM .AZ "TERM" .DUMMY .OR 0 DS.START -ArgIndex .BS 1 -ArgDev .BS 1 -ArgProg .BS 1 -hFILE .BS 1 -bExitOnClose .BS 1 -IAC.CMD .BS 1 -IAC.SUBCMD .BS 1 -IAC.SB.CMD .BS 1 -IAC.SB.LEN .BS 1 -IAC.SB.DATA .BS 32 +IAC.SB.DATA .BS IAC.BUF.MAX DS.END .ED MAN SAVE USR/SRC/SBIN/GETTY.S diff --git a/SYS/KERNEL.S.IO.txt b/SYS/KERNEL.S.IO.txt index 91def8ba..a0e31396 100644 --- a/SYS/KERNEL.S.IO.txt +++ b/SYS/KERNEL.S.IO.txt @@ -448,18 +448,15 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1 tax iny sbc (pFD),y - bcc .12 + pla A,X = cnt + bcc .12 cnt < Used - pla - dey - lda (pFD),y - pha - iny lda (pFD),y tax + dey + lda (pFD),y A,X = Used -.12 pla - sta .80+1 +.12 sta .80+1 stx .81+1 eor #$ff sta IO.Counter @@ -475,7 +472,7 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1 sty .2+1 ldy #S.FD.PIPE.Tail+1 -* clc + clc adc (pFD),y sta .2+2 @@ -529,19 +526,21 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1 ldy #S.FD.PIPE.Tail sta (pFD),y - lda .80+1 ldy #S.FD.PIPE.Free + clc - adc (pFD),y + lda (pFD),y + adc .80+1 sta (pFD),y iny - lda .81+1 - adc (pFD),y + lda (pFD),y + adc .81+1 sta (pFD),y - ldy #S.FD.PIPE.Used + iny #S.FD.PIPE.Used + sec lda (pFD),y sbc .80+1 @@ -613,7 +612,7 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S eor #$ff sta IO.Counter+1 pla - ldy #S.FD.PIPE.Used+1 + iny #S.FD.PIPE.Used+1 adc (pFD),y sta (pFD),y @@ -766,21 +765,8 @@ IO.EOF.TRUE lda #$ff * clc IO.EOF.REG.RTS rts *-------------------------------------- -IO.EOF.CDEV >LDYAI K.IOBuf - >STYA K.S.IOCTL+S.IOCTL.BUFPTR - - lda #S.IOCTL.STATCODE.GETRC - - jsr K.GetDevStatus.I - bcs IO.EOF.REG.RTS - - lda K.IOBuf - ora K.IOBuf+1 - beq IO.EOF.TRUE - -IO.EOF.FALSE lda #0 -* clc - rts +IO.EOF.CDEV lda #S.IOCTL.STATCODE.EOF + jmp K.GetDevStatus.I *-------------------------------------- IO.EOF.SSOCK ldy #S.FD.SSOCK.EOF @@ -802,7 +788,10 @@ IO.EOF.PIPE clc iny ora (pFD),y beq IO.EOF.TRUE - bne IO.EOF.FALSE + +IO.EOF.FALSE lda #0 +* clc + rts *-------------------------------------- IO.MLIOPEN >LDYAI 1024 get a ProDOS IOBUF ldx #S.MEM.F.ALIGN+S.MEM.F.NOMOVE diff --git a/SYS/KERNEL.S.TERM.txt b/SYS/KERNEL.S.TERM.txt index d95b54b6..5f75d01e 100644 --- a/SYS/KERNEL.S.TERM.txt +++ b/SYS/KERNEL.S.TERM.txt @@ -62,13 +62,13 @@ DRV.TERM.STATUS jsr DRV.TERM.GetIOCTLBufCntDCB clc rts -.3 cmp #S.IOCTL.STATCODE.GETRC +.3 cmp #S.IOCTL.STATCODE.EOF bne .9 ldy #S.DCB.TTY.STATUS lda (ZPDCBPtr),y and #S.DIB.S.OPENED - beq .8 + beq DRV.TERM.OPEN.E jsr DRV.TERM.CURBLNK @@ -76,24 +76,20 @@ DRV.TERM.STATUS jsr DRV.TERM.GetIOCTLBufCntDCB lda (ZPDCBPtr),y iny sec - sbc (ZPDCBPtr),y OUTHEAD - - and #$F + eor (ZPDCBPtr),y OUTHEAD + bne .8 bit bActive - bpl .8 + bpl .7 bit OPENAPPLE - bmi .8 + bmi .7 bit KBD - bpl .8 + bmi .8 - inc - -.8 sta (ZPBufPtr) - ldy #1 - lda #0 - sta (ZPBufPtr),y +.7 lda #$ff + .HS 2C BIT ABS +.8 lda #0 clc rts @@ -108,13 +104,13 @@ DRV.TERM.OPEN tax DEV.ID in A ldy #S.DCB.TTY.STATUS lda (ZPDCBPtr),y bit #S.DIB.S.OPENED - beq .1 + beq DRV.TERM.OPEN.1 - lda #MLI.E.OPEN +DRV.TERM.OPEN.E lda #MLI.E.OPEN sec rts -.1 txa +DRV.TERM.OPEN.1 txa ldx #0 .2 ldy A2osX.SCRNDEVS,x @@ -760,8 +756,8 @@ DRV.TERM.G1 ldy #S.DCB.TTY.bG1ALT .1 ror sta (ZPDCBPtr),y - clc - rts + lda #0 + jmp DRV.TERM.SETMODE *-------------------------------------- DRV.TERM.IAC ldy #S.DCB.TTY.INBUFFER lda (ZPDCBPtr),y