Kernel 0.93

This commit is contained in:
Rémy GIBERT 2019-07-12 16:51:57 +02:00
parent 39d45fa0bf
commit fd63f01d30
11 changed files with 137 additions and 178 deletions

Binary file not shown.

View File

@ -16,19 +16,11 @@ NEW
K.OpenDir jsr PFT.CheckPathYA K.OpenDir jsr PFT.CheckPathYA
bcs K.ReadDir.RTS bcs K.ReadDir.RTS
>LDYAI S.FD.DIR ldx #1
ldx #S.MEM.F.INIT0+S.MEM.F.FD jsr IO.MkFD
jsr MEM.GetMem.YAX
bcs K.ReadDir.RTS bcs K.ReadDir.RTS
>STYA pFD
stx IO.hFD
lda #S.FD.T.DIR
sta (pFD)
ldy #1 lda K.Buf256+1 One char ("/") ?
lda K.Buf256,y One char ("/") ?
beq .8 No, Go open dir.... beq .8 No, Go open dir....
>MLICALL MLIGETFILEINFO >MLICALL MLIGETFILEINFO

View File

@ -463,7 +463,7 @@ ENV.ExpandSysVar
bne .4 bne .4
lda ENV.VarName lda ENV.VarName
jsr MEM.IsDigit $0...$9 ?? jsr IsDigit $0...$9 ??
bcs .1 bcs .1
and #$0F and #$0F

View File

@ -113,18 +113,10 @@ IO.OPEN.REG >MLICALL MLIGETFILEINFO
jsr IO.MLI.CREATE jsr IO.MLI.CREATE
bcs IO.OPEN.RTS bcs IO.OPEN.RTS
IO.OPEN.REG.E >LDYAI S.FD.REG IO.OPEN.REG.E ldx #0
ldx #S.MEM.F.INIT0+S.MEM.F.FD jsr IO.MkFD
jsr MEM.GetMem.YAX
bcs IO.OPEN.RTS 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 jsr IO.MLIOPEN
bcs IO.OPEN.ERR bcs IO.OPEN.ERR
@ -833,6 +825,31 @@ IO.EOF.FALSE lda #0
* clc * clc
rts 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 IO.MLIOPEN >LDYAI 1024 get a ProDOS IOBUF
ldx #S.MEM.F.ALIGN+S.MEM.F.NOMOVE ldx #S.MEM.F.ALIGN+S.MEM.F.NOMOVE
jsr MEM.GetMem.YAX jsr MEM.GetMem.YAX

View File

@ -577,7 +577,7 @@ MATH.Dec2ACC32 jsr MATH.ACC32ZERO
lda (ZPPtr2),y lda (ZPPtr2),y
beq .8 beq .8
jsr MEM.IsDigit jsr IsDigit
bcs .8 bcs .8
phy Save Y, pointing to next char phy Save Y, pointing to next char

View File

@ -640,19 +640,15 @@ MEM.IsDigitOrUC cmp #'Z'+1
cmp #'A' cmp #'A'
bcs MEM.IsDigit.8 bcs MEM.IsDigit.8
MEM.IsDigit cmp #'9'+1 jmp IsDigit
bcs MEM.IsDigit.RTS
cmp #'0'
bcs MEM.IsDigit.8
MEM.IsDigit.9 sec MEM.IsDigit.9 sec
rts
MEM.IsDigit.RTS rts
MEM.IsDigit.8 clc MEM.IsDigit.8 clc
rts MEM.IsDigit.RTS rts
*-------------------------------------- *--------------------------------------
MEM.IsHexDigit jsr MEM.IsDigit MEM.IsHexDigit jsr IsDigit
bcc .8 bcc .8
cmp #'A' cmp #'A'

View File

@ -310,9 +310,6 @@ K.MKFIFO >STYA ZPPtr1 pathname buffer
jsr K.pipe jsr K.pipe
bcs STAT.Access2Mode.RTS bcs STAT.Access2Mode.RTS
sta K.S.STAT+S.STAT.DEV hFD
pha
ldy #0 ldy #0
.1 lda STAT.FIFO,y .1 lda STAT.FIFO,y
@ -321,7 +318,7 @@ K.MKFIFO >STYA ZPPtr1 pathname buffer
cpy #9 cpy #9
bne .1 bne .1
pla lda IO.hFD
jsr MATH.AToHexAX jsr MATH.AToHexAX
sta (ZPPtr1),y sta (ZPPtr1),y
@ -352,7 +349,7 @@ K.MKFIFO >STYA ZPPtr1 pathname buffer
K.MkNod >STYA ZPPtr1 pathname K.MkNod >STYA ZPPtr1 pathname
>PULLW K.S.STAT+S.STAT.MODE >PULLW K.S.STAT+S.STAT.MODE
>PULLB K.S.STAT+S.STAT.DEV >PULLB IO.hFD
K.MkNod.I ldx #2 K.MkNod.I ldx #2
@ -377,7 +374,7 @@ K.MkNod.I ldx #2
.3 ldx #$ff SELF MODIFIED .3 ldx #$ff SELF MODIFIED
sta Nod.Table.hPath-2,x sta Nod.Table.hPath-2,x
lda K.S.STAT+S.STAT.DEV lda IO.hFD
sta Nod.Table.hFD-2,x sta Nod.Table.hFD-2,x
txa hNODE txa hNODE
@ -407,17 +404,10 @@ K.Pipe sta .1+1 SIZE HI
stx .8+1 save PIPE buffer stx .8+1 save PIPE buffer
>LDYAI S.FD.PIPE ldx #2
ldx #S.MEM.F.INIT0+S.MEM.F.FD jsr IO.MkFD
jsr MEM.GetMem.YAX
bcs .9 bcs .9
>STYA pFD
lda #S.FD.T.PIPE
sta (pFD)
.1 lda #$ff SELF MODIFIED .1 lda #$ff SELF MODIFIED
ldy #S.FD.PIPE.Free+1 ldy #S.FD.PIPE.Free+1
sta (pFD),y sta (pFD),y

View File

@ -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 sta K.PrintF.PadC no, this is the first 0, so make it K.PrintF.PadC
bra .2 bra .2
.4 jsr MEM.IsDigit .4 jsr IsDigit
bcs .7 no TBL1, no digit....abort bcs .7 no TBL1, no digit....abort
.5 and #$0F we have a digit .5 and #$0F we have a digit

View File

@ -20,9 +20,7 @@ ZPTmpChar .BS 1
*-------------------------------------- *--------------------------------------
bActive .BS 1 bActive .BS 1
CsiHeader .BS 1 CsiHeader .BS 1
bCsiInNum .BS 1
CsiParamCnt .BS 1 CsiParamCnt .BS 1
CsiParams .BS 4 CsiParams .BS 4
.ED .ED
*-------------------------------------- *--------------------------------------
@ -509,7 +507,7 @@ DRV.TERM.CSI ldy #S.DCB.TTY.INBUFFER
cpy #S.DCB.TTY.INBUFFER.MAX-1 buffer full? cpy #S.DCB.TTY.INBUFFER.MAX-1 buffer full?
bne .8 bne .8
jmp RESET.MODE jsr RESET.MODE
.8 clc .8 clc
rts rts
@ -517,93 +515,58 @@ DRV.TERM.CSI ldy #S.DCB.TTY.INBUFFER
DRV.TERM.CSI.Exec DRV.TERM.CSI.Exec
stz CsiHeader stz CsiHeader
stz CsiParamCnt stz CsiParamCnt
stz bCsiInNum
ldy #S.DCB.TTY.INBUFFER+1 EscSeq Ptr lda #S.DCB.TTY.INBUFFER+1 EscSeq Ptr
lda (ZPDCBPtr),y clc
dey adc ZPDCBPtr
sta ZPPtr2
lda /S.DCB.TTY.INBUFFER+1
adc ZPDCBPtr+1
sta ZPPtr2+1
lda (ZPPtr2)
cmp #'?' cmp #'?'
bne .10 bne .2
sta CsiHeader sta CsiHeader
iny
.1 jsr MEM.NextCharPtr2
.10 stz ZPTmpWord .2 jsr MATH.Dec2ACC32
stz ZPTmpWord+1 bcs .5
.1 iny jsr MEM.AddYToPtr2
lda (ZPDCBPtr),y
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 lda #255
ldx ZPTmpWord+1 ldx ACC32+1
bne .21 bne .3
lda ZPTmpWord lda ACC32
.21 ldx CsiParamCnt
.3 ldx CsiParamCnt
sta CsiParams,x sta CsiParams,x
inc CsiParamCnt inc CsiParamCnt
.3 lda (ZPDCBPtr),y lda (ZPPtr2)
cmp #';' cmp #';'
beq .10 beq .1
pha .5 jsr RESET.MODE
jsr RESET.MODE lda (ZPPtr2)
pla
ldx #CsiCodes.Cnt-1 ldx #CsiCodes.Cnt-1
.4 cmp CsiCodes,x .6 cmp CsiCodes,x
beq .5 beq .7
dex dex
bne .4 bne .6
clc clc
rts rts
.5 txa .7 txa
asl asl
tax tax
jmp (.8,x) jmp (.8,x)
@ -962,15 +925,14 @@ COUT.IAC.EXIT
RESET.MODE lda #0 RESET.MODE lda #0
ldy #S.DCB.TTY.MODE ldy #S.DCB.TTY.MODE
sta (ZPDCBPtr),y sta (ZPDCBPtr),y
clc
rts rts
*-------------------------------------- *--------------------------------------
RESET ldy #1 RESET ldy #S.DCB.TTY.MODE
.1 iny .1 lda RESET.VALUES-S.DCB.TTY.MODE,y
lda RESET.VALUES-2,y
sta (ZPDCBPtr),y sta (ZPDCBPtr),y
cpy #S.DCB.TTY.INBUFFER iny
cpy #S.DCB.TTY.INBUFFER+1
bne .1 bne .1
jmp DRV.TERM.CLRSCR jmp DRV.TERM.CLRSCR
@ -1298,6 +1260,61 @@ DRV.TERM.Title.OFF
sta (ZPDCBPtr),y sta (ZPDCBPtr),y
jmp DRV.TERM.LINE0CPY 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 MAN
SAVE USR/SRC/SYS/KERNEL.S.TERM SAVE USR/SRC/SYS/KERNEL.S.TERM
LOAD USR/SRC/SYS/KERNEL.S LOAD USR/SRC/SYS/KERNEL.S

View File

@ -267,33 +267,7 @@ GetCharAtCurPos ldy #S.DCB.TTY.CV
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
DRV.TERM.SETUP.L1X * TEMP
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
*-------------------------------------- *--------------------------------------
RESET.VALUES .DA #0 S.DCB.TTY.MODE RESET.VALUES .DA #0 S.DCB.TTY.MODE
.DA #0 S.DCB.TTY.CH .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.OUTBUFFER S.DCB.TTY.OUTHEAD
.DA #S.DCB.TTY.INBUFFER S.DCB.TTY.INBUFFER .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 DRV.TERM.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ
.DA #0,#0,#0 .DA #0,#0,#0
>PSTR "A2osX VT100 TERM" >PSTR "A2osX VT100 TERM"
@ -356,6 +298,11 @@ DRV.TERM.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ
.DA #0 .DA #0
.DA K.VER .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 BUF.BASEL .DA #0
.DA #80 .DA #80
.DA #160 .DA #160

View File

@ -47,6 +47,7 @@ A2osX.D1 .PH $D000
.INB USR/SRC/SYS/KERNEL.S.STDLIB .INB USR/SRC/SYS/KERNEL.S.STDLIB
.INB USR/SRC/SYS/KERNEL.S.DEV .INB USR/SRC/SYS/KERNEL.S.DEV
.INB USR/SRC/SYS/KERNEL.S.FIO .INB USR/SRC/SYS/KERNEL.S.FIO
.INB USR/SRC/SYS/KERNEL.S.PFT
.EP .EP
A2osX.D2 .PH $D000 A2osX.D2 .PH $D000
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
@ -64,7 +65,6 @@ A2osX.E0 .PH $E000
.INB USR/SRC/SYS/KERNEL.S.MATH .INB USR/SRC/SYS/KERNEL.S.MATH
.INB USR/SRC/SYS/KERNEL.S.TERMLC .INB USR/SRC/SYS/KERNEL.S.TERMLC
********* TMP ***** go to A2osX.D1 ********* TMP ***** go to A2osX.D1
.INB USR/SRC/SYS/KERNEL.S.PFT
.INB USR/SRC/SYS/KERNEL.S.IO .INB USR/SRC/SYS/KERNEL.S.IO
********* TMP ***** go to A2osX.D2 ********* TMP ***** go to A2osX.D2
.INB USR/SRC/SYS/KERNEL.S.PWD .INB USR/SRC/SYS/KERNEL.S.PWD