diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index b71cb0e1..5bf8cdd1 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/SYS/KERNEL.S.DIRENT.txt b/SYS/KERNEL.S.DIRENT.txt index 8d762793..f7c6d928 100644 --- a/SYS/KERNEL.S.DIRENT.txt +++ b/SYS/KERNEL.S.DIRENT.txt @@ -16,19 +16,11 @@ NEW K.OpenDir jsr PFT.CheckPathYA bcs K.ReadDir.RTS - >LDYAI S.FD.DIR - ldx #S.MEM.F.INIT0+S.MEM.F.FD - jsr MEM.GetMem.YAX + ldx #1 + jsr IO.MkFD bcs K.ReadDir.RTS - - >STYA pFD - stx IO.hFD - - lda #S.FD.T.DIR - sta (pFD) - ldy #1 - lda K.Buf256,y One char ("/") ? + lda K.Buf256+1 One char ("/") ? beq .8 No, Go open dir.... >MLICALL MLIGETFILEINFO diff --git a/SYS/KERNEL.S.ENV.txt b/SYS/KERNEL.S.ENV.txt index 574a15f6..62e75457 100644 --- a/SYS/KERNEL.S.ENV.txt +++ b/SYS/KERNEL.S.ENV.txt @@ -463,7 +463,7 @@ ENV.ExpandSysVar bne .4 lda ENV.VarName - jsr MEM.IsDigit $0...$9 ?? + jsr IsDigit $0...$9 ?? bcs .1 and #$0F diff --git a/SYS/KERNEL.S.IO.txt b/SYS/KERNEL.S.IO.txt index 2c0bd3be..33414450 100644 --- a/SYS/KERNEL.S.IO.txt +++ b/SYS/KERNEL.S.IO.txt @@ -113,18 +113,10 @@ IO.OPEN.REG >MLICALL MLIGETFILEINFO jsr IO.MLI.CREATE bcs IO.OPEN.RTS -IO.OPEN.REG.E >LDYAI S.FD.REG - ldx #S.MEM.F.INIT0+S.MEM.F.FD - jsr MEM.GetMem.YAX +IO.OPEN.REG.E ldx #0 + jsr IO.MkFD bcs IO.OPEN.RTS - >STYA pFD - stx IO.hFD - -* ldy #S.FD.T Done by GetMem0 -* lda #S.FD.T.REG -* sta (pFD),y - jsr IO.MLIOPEN bcs IO.OPEN.ERR @@ -833,6 +825,31 @@ IO.EOF.FALSE lda #0 * clc rts *-------------------------------------- +* X = 0 > REG +* X = 1 > DIR +* X = 2 > PIPE +*-------------------------------------- +IO.MkFD stx .8+1 + + ldy IO.MkFD.Y,x + lda #0 + ldx #S.MEM.F.INIT0+S.MEM.F.FD + jsr MEM.GetMem.YAX + bcs .9 + + >STYA pFD + stx IO.hFD + +.8 ldx #$ff SELF MODIFIED + lda IO.MkFD.T,x + sta (pFD) X = hFD, A = T + +* clc +.9 rts + +IO.MkFD.Y .DA #S.FD.REG,#S.FD.DIR,#S.FD.PIPE +IO.MkFD.T .DA #S.FD.T.REG,#S.FD.T.DIR,#S.FD.T.PIPE +*-------------------------------------- IO.MLIOPEN >LDYAI 1024 get a ProDOS IOBUF ldx #S.MEM.F.ALIGN+S.MEM.F.NOMOVE jsr MEM.GetMem.YAX diff --git a/SYS/KERNEL.S.MATH.txt b/SYS/KERNEL.S.MATH.txt index c0870959..37151000 100644 --- a/SYS/KERNEL.S.MATH.txt +++ b/SYS/KERNEL.S.MATH.txt @@ -577,7 +577,7 @@ MATH.Dec2ACC32 jsr MATH.ACC32ZERO lda (ZPPtr2),y beq .8 - jsr MEM.IsDigit + jsr IsDigit bcs .8 phy Save Y, pointing to next char diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index dbc6e172..ed1d1742 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -640,19 +640,15 @@ MEM.IsDigitOrUC cmp #'Z'+1 cmp #'A' bcs MEM.IsDigit.8 -MEM.IsDigit cmp #'9'+1 - bcs MEM.IsDigit.RTS - cmp #'0' - bcs MEM.IsDigit.8 + jmp IsDigit MEM.IsDigit.9 sec - -MEM.IsDigit.RTS rts + rts MEM.IsDigit.8 clc - rts +MEM.IsDigit.RTS rts *-------------------------------------- -MEM.IsHexDigit jsr MEM.IsDigit +MEM.IsHexDigit jsr IsDigit bcc .8 cmp #'A' diff --git a/SYS/KERNEL.S.STAT.txt b/SYS/KERNEL.S.STAT.txt index a32c9542..f0c74291 100644 --- a/SYS/KERNEL.S.STAT.txt +++ b/SYS/KERNEL.S.STAT.txt @@ -310,9 +310,6 @@ K.MKFIFO >STYA ZPPtr1 pathname buffer jsr K.pipe bcs STAT.Access2Mode.RTS - sta K.S.STAT+S.STAT.DEV hFD - pha - ldy #0 .1 lda STAT.FIFO,y @@ -321,7 +318,7 @@ K.MKFIFO >STYA ZPPtr1 pathname buffer cpy #9 bne .1 - pla + lda IO.hFD jsr MATH.AToHexAX sta (ZPPtr1),y @@ -352,7 +349,7 @@ K.MKFIFO >STYA ZPPtr1 pathname buffer K.MkNod >STYA ZPPtr1 pathname >PULLW K.S.STAT+S.STAT.MODE - >PULLB K.S.STAT+S.STAT.DEV + >PULLB IO.hFD K.MkNod.I ldx #2 @@ -377,7 +374,7 @@ K.MkNod.I ldx #2 .3 ldx #$ff SELF MODIFIED sta Nod.Table.hPath-2,x - lda K.S.STAT+S.STAT.DEV + lda IO.hFD sta Nod.Table.hFD-2,x txa hNODE @@ -407,17 +404,10 @@ K.Pipe sta .1+1 SIZE HI stx .8+1 save PIPE buffer - >LDYAI S.FD.PIPE - ldx #S.MEM.F.INIT0+S.MEM.F.FD - jsr MEM.GetMem.YAX - + ldx #2 + jsr IO.MkFD bcs .9 - >STYA pFD - - lda #S.FD.T.PIPE - sta (pFD) - .1 lda #$ff SELF MODIFIED ldy #S.FD.PIPE.Free+1 sta (pFD),y diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 23c52b35..f91e4780 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -310,7 +310,7 @@ K.PrintF.1 stz PrintF.Cnt sta K.PrintF.PadC no, this is the first 0, so make it K.PrintF.PadC bra .2 -.4 jsr MEM.IsDigit +.4 jsr IsDigit bcs .7 no TBL1, no digit....abort .5 and #$0F we have a digit diff --git a/SYS/KERNEL.S.TERM.txt b/SYS/KERNEL.S.TERM.txt index bed53138..03f08fb3 100644 --- a/SYS/KERNEL.S.TERM.txt +++ b/SYS/KERNEL.S.TERM.txt @@ -20,9 +20,7 @@ ZPTmpChar .BS 1 *-------------------------------------- bActive .BS 1 CsiHeader .BS 1 -bCsiInNum .BS 1 CsiParamCnt .BS 1 - CsiParams .BS 4 .ED *-------------------------------------- @@ -509,7 +507,7 @@ DRV.TERM.CSI ldy #S.DCB.TTY.INBUFFER cpy #S.DCB.TTY.INBUFFER.MAX-1 buffer full? bne .8 - jmp RESET.MODE + jsr RESET.MODE .8 clc rts @@ -517,93 +515,58 @@ DRV.TERM.CSI ldy #S.DCB.TTY.INBUFFER DRV.TERM.CSI.Exec stz CsiHeader stz CsiParamCnt - stz bCsiInNum - ldy #S.DCB.TTY.INBUFFER+1 EscSeq Ptr - lda (ZPDCBPtr),y - dey + lda #S.DCB.TTY.INBUFFER+1 EscSeq Ptr + clc + adc ZPDCBPtr + sta ZPPtr2 + lda /S.DCB.TTY.INBUFFER+1 + adc ZPDCBPtr+1 + sta ZPPtr2+1 + lda (ZPPtr2) cmp #'?' - bne .10 + bne .2 sta CsiHeader - iny + +.1 jsr MEM.NextCharPtr2 -.10 stz ZPTmpWord - stz ZPTmpWord+1 +.2 jsr MATH.Dec2ACC32 + bcs .5 -.1 iny - lda (ZPDCBPtr),y + jsr MEM.AddYToPtr2 - cmp #'0' - bcc .2 - cmp #'9'+1 - bcs .2 - - dec bCsiInNum - - and #$0F - pha - - lda ZPTmpWord - ldx ZPTmpWord+1 - - asl ZPTmpWord param=param*10 - rol ZPTmpWord+1 - asl ZPTmpWord - rol ZPTmpWord+1 - - clc - adc ZPTmpWord - sta ZPTmpWord - txa - adc ZPTmpWord+1 - sta ZPTmpWord+1 - asl ZPTmpWord - rol ZPTmpWord+1 - - pla - clc - adc ZPTmpWord - sta ZPTmpWord - bcc .1 - inc ZPTmpWord+1 - bra .1 - -.2 bit bCsiInNum - bpl .3 - - stz bCsiInNum lda #255 - ldx ZPTmpWord+1 - bne .21 + ldx ACC32+1 + bne .3 - lda ZPTmpWord -.21 ldx CsiParamCnt + lda ACC32 + +.3 ldx CsiParamCnt sta CsiParams,x inc CsiParamCnt -.3 lda (ZPDCBPtr),y + lda (ZPPtr2) cmp #';' - beq .10 + beq .1 - pha +.5 jsr RESET.MODE - jsr RESET.MODE - - pla + lda (ZPPtr2) ldx #CsiCodes.Cnt-1 -.4 cmp CsiCodes,x - beq .5 +.6 cmp CsiCodes,x + beq .7 + dex - bne .4 + bne .6 clc rts -.5 txa +.7 txa asl tax jmp (.8,x) @@ -962,15 +925,14 @@ COUT.IAC.EXIT RESET.MODE lda #0 ldy #S.DCB.TTY.MODE sta (ZPDCBPtr),y - clc rts *-------------------------------------- -RESET ldy #1 +RESET ldy #S.DCB.TTY.MODE -.1 iny - lda RESET.VALUES-2,y +.1 lda RESET.VALUES-S.DCB.TTY.MODE,y sta (ZPDCBPtr),y - cpy #S.DCB.TTY.INBUFFER + iny + cpy #S.DCB.TTY.INBUFFER+1 bne .1 jmp DRV.TERM.CLRSCR @@ -1298,6 +1260,61 @@ DRV.TERM.Title.OFF sta (ZPDCBPtr),y jmp DRV.TERM.LINE0CPY *-------------------------------------- +DRV.TERM.SETUP.L1X + ldy #S.FD.DEV.BUFPTR + lda (pFD),y + clc + adc BUF.BASEL,x + sta ZPBufBaseL1 + + iny + lda (pFD),y + adc BUF.BASEH,x + sta ZPBufBaseL1+1 + + bit bActive + bpl DRV.TERM.SETUP.L1X.8 + +DRV.TERM.SETUP.L1X.SCR + lda SCR.BASEL,x + sta ZPScrBaseL1 + lda SCR.BASEH,x + sta ZPScrBaseL1+1 +DRV.TERM.SETUP.L1X.8 + rts +*-------------------------------------- +CtrlChars .DA #C.ENQ,#C.BS,#C.LF,#C.FF,#C.CR,#C.SO,#C.SI,#C.FS,#C.ESC +CtrlChars.Cnt .EQ *-CtrlChars +*-------------------------------------- +EscCodes .AZ "MDc[()" +EscCodes.Cnt .EQ *-EscCodes +EscModes .DA #0,#0,#0,#S.DCB.TTY.MODE.CSI,#S.DCB.TTY.MODE.G0,#S.DCB.TTY.MODE.G1 +CsiCodes .AS "hlmnrJKH" +CsiCodes.Cnt .EQ *-CsiCodes +*-------------------------------------- +KeyRemapped .HS 080A0B15 Left,Down,Up,Right +KeyRemapped.Cnt .EQ *-KeyRemapped +KeyRemapped.Tbl .HS 44424143 esc[D,esc[B,esc[A,esc[C +*-------------------------------------- +WILLDO .DA #TELOPT.BINARY,#TELOPT.SGA +WILLDO.CNT .EQ *-WILLDO +WILLDONT .DA #TELOPT.TSPEED,#TELOPT.LINEMODE,#TELOPT.STATUS +WILLDONT.CNT .EQ *-WILLDONT +DOWILL .DA #TELOPT.BINARY,#TELOPT.SGA,#TELOPT.TTYPE,#TELOPT.NAWS +DOWILL.CNT .EQ *-DOWILL +DOWONT .DA #TELOPT.ECHO,#TELOPT.NEWENVIRON,#TELOPT.XDISPLOC,#TELOPT.TSPEED,#TELOPT.LFLOW +DOWONT.CNT .EQ *-DOWONT +SB.IS.TTYPE .DA #IAC,#SB,#TELOPT.TTYPE,#SB.IS +ENQ.String .AS "xterm" +ENQ.String.Len .EQ *-ENQ.String + .DA #IAC,#SE +SB.IS.TTYPE.LEN .EQ *-SB.IS.TTYPE +SB.IS.NAWS .DA #IAC,#SB,#TELOPT.NAWS,#SB.IS + .DA 80 + .DA 24 + .DA #IAC,#SE +SB.IS.NAWS.LEN .EQ *-SB.IS.NAWS +*-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.TERM LOAD USR/SRC/SYS/KERNEL.S diff --git a/SYS/KERNEL.S.TERMLC.txt b/SYS/KERNEL.S.TERMLC.txt index 45efae29..2d53898e 100644 --- a/SYS/KERNEL.S.TERMLC.txt +++ b/SYS/KERNEL.S.TERMLC.txt @@ -267,33 +267,7 @@ GetCharAtCurPos ldy #S.DCB.TTY.CV .9 rts *-------------------------------------- -DRV.TERM.SETUP.L1X - ldy #S.FD.DEV.BUFPTR - lda (pFD),y - clc - adc BUF.BASEL,x - sta ZPBufBaseL1 - - iny - lda (pFD),y - adc BUF.BASEH,x - sta ZPBufBaseL1+1 - - bit bActive - bpl DRV.TERM.SETUP.L1X.8 - -DRV.TERM.SETUP.L1X.SCR - lda SCR.BASEL,x - sta ZPScrBaseL1 - lda SCR.BASEH,x - sta ZPScrBaseL1+1 -DRV.TERM.SETUP.L1X.8 - rts -*-------------------------------------- -* ` a b c d e f g h i j k l m n o -REMAP.E0.FF .HS 5B4142434445464748495FA0DF544e4f -* p q r s t u v w x y z { | } ~ DEL - .HS 50DF5253545556575F595a5b5c5d5e5f +* TEMP *-------------------------------------- RESET.VALUES .DA #0 S.DCB.TTY.MODE .DA #0 S.DCB.TTY.CH @@ -317,38 +291,6 @@ RESET.VALUES .DA #0 S.DCB.TTY.MODE .DA #S.DCB.TTY.OUTBUFFER S.DCB.TTY.OUTHEAD .DA #S.DCB.TTY.INBUFFER S.DCB.TTY.INBUFFER *-------------------------------------- -CtrlChars .DA #C.ENQ,#C.BS,#C.LF,#C.FF,#C.CR,#C.SO,#C.SI,#C.FS,#C.ESC -CtrlChars.Cnt .EQ *-CtrlChars -*-------------------------------------- -EscCodes .AZ "MDc[()" -EscCodes.Cnt .EQ *-EscCodes -EscModes .DA #0,#0,#0,#S.DCB.TTY.MODE.CSI,#S.DCB.TTY.MODE.G0,#S.DCB.TTY.MODE.G1 -CsiCodes .AS "hlmnrJKH" -CsiCodes.Cnt .EQ *-CsiCodes -*-------------------------------------- -KeyRemapped .HS 080A0B15 Left,Down,Up,Right -KeyRemapped.Cnt .EQ *-KeyRemapped -KeyRemapped.Tbl .HS 44424143 esc[D,esc[B,esc[A,esc[C -*-------------------------------------- -WILLDO .DA #TELOPT.BINARY,#TELOPT.SGA -WILLDO.CNT .EQ *-WILLDO -WILLDONT .DA #TELOPT.TSPEED,#TELOPT.LINEMODE,#TELOPT.STATUS -WILLDONT.CNT .EQ *-WILLDONT -DOWILL .DA #TELOPT.BINARY,#TELOPT.SGA,#TELOPT.TTYPE,#TELOPT.NAWS -DOWILL.CNT .EQ *-DOWILL -DOWONT .DA #TELOPT.ECHO,#TELOPT.NEWENVIRON,#TELOPT.XDISPLOC,#TELOPT.TSPEED,#TELOPT.LFLOW -DOWONT.CNT .EQ *-DOWONT -SB.IS.TTYPE .DA #IAC,#SB,#TELOPT.TTYPE,#SB.IS -ENQ.String .AS "xterm" -ENQ.String.Len .EQ *-ENQ.String - .DA #IAC,#SE -SB.IS.TTYPE.LEN .EQ *-SB.IS.TTYPE -SB.IS.NAWS .DA #IAC,#SB,#TELOPT.NAWS,#SB.IS - .DA 80 - .DA 24 - .DA #IAC,#SE -SB.IS.NAWS.LEN .EQ *-SB.IS.NAWS -*-------------------------------------- DRV.TERM.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ .DA #0,#0,#0 >PSTR "A2osX VT100 TERM" @@ -356,6 +298,11 @@ DRV.TERM.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ .DA #0 .DA K.VER *-------------------------------------- +* ` a b c d e f g h i j k l m n o +REMAP.E0.FF .HS 5B4142434445464748495FA0DF544e4f +* p q r s t u v w x y z { | } ~ DEL + .HS 50DF5253545556575F595a5b5c5d5e5f +*-------------------------------------- BUF.BASEL .DA #0 .DA #80 .DA #160 diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index e64deba2..81e57a5a 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -47,6 +47,7 @@ A2osX.D1 .PH $D000 .INB USR/SRC/SYS/KERNEL.S.STDLIB .INB USR/SRC/SYS/KERNEL.S.DEV .INB USR/SRC/SYS/KERNEL.S.FIO + .INB USR/SRC/SYS/KERNEL.S.PFT .EP A2osX.D2 .PH $D000 .DA #RRAMWRAMBNK2 @@ -64,7 +65,6 @@ A2osX.E0 .PH $E000 .INB USR/SRC/SYS/KERNEL.S.MATH .INB USR/SRC/SYS/KERNEL.S.TERMLC ********* TMP ***** go to A2osX.D1 - .INB USR/SRC/SYS/KERNEL.S.PFT .INB USR/SRC/SYS/KERNEL.S.IO ********* TMP ***** go to A2osX.D2 .INB USR/SRC/SYS/KERNEL.S.PWD