diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index d3cee3cd..a5097105 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 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