Kernel 0.9.1 : MemMgr & MEMDUMP enhancement, TCPIP bugfix

This commit is contained in:
Rémy GIBERT 2017-10-06 17:25:14 +02:00
parent 4c5584db40
commit 98c99b0ad2
19 changed files with 216 additions and 782 deletions

Binary file not shown.

Binary file not shown.

View File

@ -189,7 +189,7 @@ MSG0 >CSTR "ID Status Flags Name Addr. Typ/Sub IDString Version
MSG1 >CSTR "%03d %s %b %4s $%H "
MSG2.B >CSTR "$%h/$%h %16S %03d.%03d %10u"
MSG2.C >CSTR "$%h/$%h %16S %03d.%03d n/a"
MSG.SFLAGS .AS "BWRLNEIO"
MSG.SFLAGS .AS "BWRLNEIO"
*--------------------------------------
.DUMMY
.OR 0

View File

@ -26,7 +26,7 @@ CS.START cld
.DA 0
.DA CS.END-CS.START CS
.DA DS.END-DS.START DS
.DA #16 SS
.DA #32 SS
.DA #4 ZP
.DA 0
*--------------------------------------
@ -37,6 +37,7 @@ CS.START cld
.DA CS.DOEVENT
.DA CS.QUIT
L.MSG0 .DA MSG0
L.MSG1.INV .DA MSG1.INV
L.MSG1 .DA MSG1
L.MSG1.BIN .DA MSG1.BIN
L.MSG1.STR .DA MSG1.STR
@ -48,17 +49,14 @@ L.MSG5 .DA MSG5
L.MSG.FREE .DA MSG.FREE
.DA 0
*--------------------------------------
CS.INIT ldy #MEM.COUNT Skip SLOT0
lda (pData),y
inc
sta (pData),y
CS.INIT >INC.G MEM.COUNT Skip SLOT0
>LEA.G MemStat
>SYSCALL GetMemStat.YA
lda (pPs)
ora #S.PS.F.EVENT Now accept events
sta (pPs)
* lda (pPs)
* ora #S.PS.F.EVENT Now accept events
* sta (pPs)
clc
rts
*--------------------------------------
@ -96,24 +94,17 @@ CS.RUN >SYSCALL GetChar
>LDYA L.MSG0
>SYSCALL PrintF.YA
.1 ldy #MEM.COUNT
lda (pData),y
.1 >LDA.G MEM.COUNT
>SYSCALL GetMemByID.A
>STYA ZPPTR1
lda (ZPPTR1)
bpl .2
ldy #USED.COUNT
lda (pData),y
inc
sta (pData),y
>INC.G USED.COUNT
.2 jsr CS.RUN.PRINTMEM
ldy #MEM.COUNT
lda (pData),y
inc
sta (pData),y
>INC.G MEM.COUNT
.8 clc
rts
@ -175,21 +166,19 @@ CS.RUN >SYSCALL GetChar
sec
rts
*--------------------------------------
CS.RUN.PRINTMEM ldy #S.MEM.LEN
CS.RUN.PRINTMEM ldy #S.MEM.LEN+1
lda (ZPPTR1),y
pha
iny
>PUSHA
dey
lda (ZPPTR1),y
ply
>PUSHYA
>PUSHA
ldy #S.MEM.PTR
ldy #S.MEM.PTR+1
lda (ZPPTR1),y
pha
iny
>PUSHA
dey
lda (ZPPTR1),y
ply
>PUSHYA
>PUSHA
ldy #S.MEM.REFCNT
lda (ZPPTR1),y
@ -199,43 +188,70 @@ CS.RUN.PRINTMEM ldy #S.MEM.LEN
lda (ZPPTR1),y
>PUSHA
lda (ZPPTR1)
lda (ZPPTR1) Get flags
ldy #MEM.FLAGS+7
ldx #7
.20 lsr
pha
lda #'-'
bcc .30
lda MSG.FLAGS,x
.30 sta (pData),y
pla
dey
dex
bpl .20
>PUSHEA.G MEM.FLAGS
>LDA.G MEM.COUNT
>PUSHA
ldy #MEM.COUNT
lda (pData),y
>PUSHA
lda (ZPPTR1) Get flags
bpl .12
>LDYA L.MSG1
ldy #S.MEM.OWNERPID
lda (ZPPTR1),y
>SYSCALL GetPSStatus.A
bcc .12
>LDYA L.MSG1.INV
>SYSCALL PrintF.YA
lda (ZPPTR1) Free ? assume raw data...
bpl .10
.12 >LDYA L.MSG1
>SYSCALL PrintF.YA
ldy #S.MEM.BIN
lda (ZPPTR1),y
bne .7
****** DATA
.10 ldy #S.MEM.PTR
ldy #S.MEM.PTR
lda (ZPPTR1),y
sta ZPPTR2
iny
lda (ZPPTR1),y
sta ZPPTR2+1
lda (ZPPTR2)
tay
ldy #$0
.1 lda (ZPPTR2),y Check if it looks like a printable string
beq .11
bmi .2
cmp #$20
bcc .2 not printable....->hex
dey
iny
bne .1
.11 tya
beq .2 Startig with 0...assume BIN
>PUSHW ZPPTR2 String
>PUSHB (ZPPTR2) Len
tya Len
>PUSHA
>LDYA L.MSG1.STR
>SYSCALL PrintF.YA
bra .8
.2 ldy #15
@ -244,32 +260,26 @@ CS.RUN.PRINTMEM ldy #S.MEM.LEN
dey
bpl .3
>LDYA L.MSG1.HEX
>SYSCALL PrintF.YA
>LDYA L.MSG1.HEX
bra .8
****** BIN
.7 >SYSCALL GetMemPtr.A
>PUSHYA
>LDYA L.MSG1.BIN
>SYSCALL PrintF.YA
.8 >SYSCALL PrintF.YA
.8 ldy #LINE.COUNT
lda (pData),y
inc
sta (pData),y
>INC.G LINE.COUNT
cmp #PAGELEN
bne .9
beq .9
rts
lda #$FF
ldy #bSTOP
sta (pData),y
.9 lda #$FF
>STA.G bSTOP
ldy #LINE.COUNT
lda #0
sta (pData),y
inc
>STA.G LINE.COUNT
.9 rts
rts
*--------------------------------------
CS.DOEVENT sec
rts
@ -279,15 +289,17 @@ CS.QUIT clc
*--------------------------------------
CS.END
MSG0 >CSTR " # Flags PID REF PTR LEN BINPATH/DATA\r\n"
MSG1 >CSTR "%03d %b %03d %03d $%H %05D "
MSG1.BIN >CSTR "!BIN:%41s\r\n"
MSG1.STR >CSTR "[%02h]:%41s\r\n"
MSG1.HEX >CSTR "?HEX:%h%h%h%h.%h%h%h%h.%h%h%h%h.%h%h%h%h\r\n"
MSG1.INV >CSTR "\e[7m"
MSG1 >CSTR "%03d %s %03d %03d $%H %05D "
MSG1.BIN >CSTR "{BIN:%s}\e[0m\r\n"
MSG1.STR >CSTR "[%03d:%s]\e[0m\r\n"
MSG1.HEX >CSTR "?HEX:%h%h.%h%h.%h%h.%h%h.%h%h.%h%h.%h%h.%h%h\e[0m\r\n"
MSG2 >CSTR "\r\nAllocated hMem:%d, Total:%d\r\n"
MSG3 >CSTR "High Memory: $%H\r\n"
MSG4 >CSTR "Free ULimit: $%H\r\n"
MSG5 >CSTR "Low Memory: $%H\r\n"
MSG.FREE >CSTR "\r\nFree Memory: %D Bytes.\r\n"
MSG.FLAGS .AS "UZCNA--"
*--------------------------------------
.DUMMY
.OR 0
@ -297,6 +309,7 @@ MEM.COUNT .BS 1
USED.COUNT .BS 1
bSTOP .BS 1
MemStat .BS S.MEMSTAT
MEM.FLAGS .BS 9
DS.END
.ED
*--------------------------------------

View File

@ -10,8 +10,9 @@ AUTO 6
*--------------------------------------
.INB /A2OSX.BUILD/INC/MACROS.I
.INB /A2OSX.BUILD/INC/A2OSX.I
.INB /A2OSX.BUILD/INC/KERNEL.I
*--------------------------------------
ZPPTR1 .EQ ZPBIN
ZPPtr .EQ ZPBIN
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
@ -45,43 +46,56 @@ CS.RUN >LDYA pData
>LDYA L.MSG0
>SYSCALL PrintF.YA
lda (pData) PS.COUNT
>LDA.G PS.Count
beq .8
.1 >LDA.G PS.Index
inc
sta (pData),y
.1 >INC.G PS.Index
tay
lda (pData),y PID
>SYSCALL GetMemPtr.A
>STYA ZPPTR1
>STYA ZPPtr
ldy #S.PS.hARGS
lda (ZPPTR1),y
lda (ZPPtr),y
>SYSCALL GetMemPtr.A
>PUSHYA
ldy #S.PS.PPID
lda (ZPPTR1),y
lda (ZPPtr),y
>PUSHA Parent PID
lda (ZPPTR1) push flags
>PUSHA
lda (ZPPtr) Get flags
ldy #PS.FLAGS+7
ldx #7
.2 lsr
pha
lda #'-'
bcc .3
lda MSG.FLAGS,x
.3 sta (pData),y
pla
dey
dex
bpl .2
>PUSHEA.G PS.FLAGS
ldy #S.PS.PID
lda (ZPPTR1),y
lda (ZPPtr),y
>PUSHA PID
>LDYA L.MSG1
>SYSCALL PrintF.YA
.7 lda (pData) PS.COUNT
dec
sta (pData)
.7 >DEC.G PS.COUNT
bne .1
.8 lda #0 tell Kernel that all done ok, but
.8
* lda #0 tell Kernel that all done ok, but
sec we do not want to stay in memory
rts
*--------------------------------------
@ -93,7 +107,8 @@ CS.QUIT clc
*--------------------------------------
CS.END
MSG0 >CSTR "ID Flags PID Command Line\r\n"
MSG1 >CSTR "%03d %b %03d %S\r\n"
MSG1 >CSTR "%03d %s %03d %s\r\n"
MSG.FLAGS .AS "-IHSED--"
*--------------------------------------
.DUMMY
.OR 0
@ -101,6 +116,7 @@ DS.START
PS.COUNT .BS 1
PS.DATA .BS K.PS.MAX
PS.Index .BS 1
PS.FLAGS .BS 9
DS.END
.ED
*--------------------------------------

View File

@ -191,7 +191,7 @@ SYS.CreateProcessNewEnvYA .EQ $A4
SYS.CreateProcessYA .EQ $A6
* .EQ $A8
* .EQ $AA
* .EQ $AC
SYS.GetPSStatus.A .EQ $AC
SYS.GetPSList.YA .EQ $AE
*SYS.GetArgC .EQ $B0
@ -244,12 +244,12 @@ SYSMGR.ERRFTB .EQ $CC File Too Big Error
* MEM STRUCT
*--------------------------------------
S.MEM.F .EQ 0
S.MEM.F.AUX .EQ %10000000 Request Stock Object
S.MEM.F.AUX .EQ %10000000 Request Stock Object in AUX mem
S.MEM.F.INUSE .EQ %10000000 (Internal Flag)
S.MEM.F.INIT0 .EQ %01000000 Fill with "0"
S.MEM.F.CODE .EQ %00100000
S.MEM.F.NOMOVE .EQ %00010000
S.MEM.F.ALIGN .EQ %00001000
S.MEM.F.INUSE .EQ %10000000 (Internal Flag)
S.MEM.REFCNT .EQ 1
S.MEM.OWNERPID .EQ 2
S.MEM.BIN .EQ 3
@ -369,12 +369,11 @@ S.DEVSTAT .EQ 25
* PS STRUCT
*--------------------------------------
S.PS.F .EQ 0
S.PS.F.INUSE .EQ %10000000
S.PS.F.INIT .EQ %01000000
S.PS.F.HOLD .EQ %00100000
S.PS.F.SLEEP .EQ %00010000
S.PS.F.EVENT .EQ %00001000
S.PS.F.ENV .EQ %00000100
S.PS.F.DUPENV .EQ %00000100
S.PS.PPID .EQ 1
S.PS.PID .EQ 2
S.PS.CPID .EQ 3

View File

@ -128,9 +128,10 @@ AUTO 6
.EM
*--------------------------------------
.MA PUSHW.G
>LDA.G ]1+1
ldy #]1+1
lda (pData),y
>PUSHA
>LDA.G ]1
dey
>PUSHA
.EM
*--------------------------------------

View File

@ -86,13 +86,13 @@ ARP.ADD.I sta ARP.TmpCache
clc
rts
*/--------------------------------------
* # ARP.GetC.Ache
* # ARP.GetCAche
* Return a Ptr to ARP Cache Table
* ## In:
* ## Out:
* Y,A = PTR to ARP.CACHE
*\--------------------------------------
ARP.GetC.Ache >LDYA L.ARP.CACHE
ARP.GetCAche >LDYA L.ARP.CACHE
clc
rts
*--------------------------------------

View File

@ -175,13 +175,13 @@ DNS.ADD.I sta DNS.TmpCache
clc
.9 rts
*/--------------------------------------
* # DNS.GetC.Ache
* # DNS.GetCAche
* Return a Ptr to DNS Cache Table
* ## In:
* ## Out:
* Y,A = PTR to DNS.CACHE
*\--------------------------------------
DNS.GetC.Ache >LDYA L.DNS.CACHE
DNS.GetCAche >LDYA L.DNS.CACHE
clc
rts
*--------------------------------------

View File

@ -63,12 +63,12 @@ CS.START cld
.DA ARP.CLEAR
.DA ARP.QUERY
.DA ARP.ADD
.DA ARP.GetC.ACHE
.DA ARP.GetCACHE
.DA DNS.CLEAR
.DA DNS.QUERY
.DA DNS.ADD
.DA DNS.GetC.ACHE
.DA DNS.GetCACHE
.DA HST.GETBYNAME
.DA HST.GETBYADDR
@ -143,7 +143,7 @@ POLL ldx #DEVMGR.READBLOCK
stx hFrameIn
>STYA ZPFrameInPtr
lda (ZPFrameInPtr) Get Frame Len
lda (ZPFrameInPtr) Get Frame Len
sta ZPFrameInLen
ldy #1
lda (ZPFrameInPtr),y

View File

@ -1,373 +0,0 @@
PR#3
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
CFG.Read >PUSHW L.HOSTNAME
>LDYA L.MSG.CFG
>SYSCALL PrintF.YA
jsr CFG.Read.HOSTNAME
bcc .1
>PUSHA
>LDYA L.MSG.CFG.KO
bra .2
.1 >LDYA L.MSG.CFG.OK
.2 >SYSCALL PrintF.YA
>PUSHW L.TCPIP.CONF
>LDYA L.MSG.CFG
>SYSCALL PrintF.YA
jsr CFG.Read.TCPIP.CONF
bcc .3
>PUSHA
>LDYA L.MSG.CFG.KO
bra .4
.3 >LDYA L.MSG.CFG.OK
.4 >SYSCALL PrintF.YA
>PUSHW L.HOSTS
>LDYA L.MSG.CFG
>SYSCALL PrintF.YA
jsr CFG.Read.HOSTS
bcc .5
>PUSHA
>LDYA L.MSG.CFG.KO
bra .6
.5 >SYSCALL PrintF.YA
.6 >LDYA L.MSG.CFG.OK
>SYSCALL PrintF.YA
rts
*--------------------------------------
CFG.Read.HOSTNAME
stz CFG.hCfgFile
stz CFG.hCfgPath
>LDYA L.HOSTNAME
>SYSCALL ExpandStr.YA
bcs .99
stx CFG.hCfgPath
pha
>PUSHWI 0 Aux type
>PUSHBI 4 S.FILEINFO.TYPE.TXT
>PUSHBI SYS.FOpen.R
pla
>PUSHYA
>SYSCALL LoadFile
bcs .9
stx CFG.hCfgFile
>STYA CFG.FileLen
txa
>SYSCALL GetMemPtr.A
>STYA ZPIPCfgPtr
* read 15 chars MAX, until CR or EOF
ldx #$15
lda CFG.FileLen+1
bne .1 File is more than 256....?
ldx CFG.FileLen
beq .9 len is 0 !!!
.1 ldy #0
.2 lda (ZPIPCfgPtr),y
cmp #13
beq .8 A CR, end of name
iny
sta IPCFG+S.IPCFG.HOSTNAME,y
dex
bne .2
.8 sty IPCFG+S.IPCFG.HOSTNAME
jsr CFG.Read.CleanUp
clc
rts
.9 jsr CFG.Read.CleanUp
sec
.99 rts
*--------------------------------------
CFG.Read.TCPIP.CONF
stz CFG.hCfgFile
stz CFG.hCfgPath
>LDYA L.TCPIP.CONF
>SYSCALL ExpandStr.YA
bcs .99
stx CFG.hCfgPath
pha
>PUSHWI 0 Aux type
>PUSHBI 4 S.FILEINFO.TYPE.TXT
>PUSHBI SYS.FOpen.R
pla
>PUSHYA
>SYSCALL LoadFile
bcs .9
stx CFG.hCfgFile
>STYA CFG.FileLen
txa
>SYSCALL GetMemPtr.A
>STYA ZPIPCfgPtr
.1 jsr CFG.GetLine
bcs .8
jsr CFG.GetKeyword
bcs .1
lda CFG.Keyword
bne .3
ldy UsrBuf256
lda UsrBuf256+1,y
cmp #35 DOMAIN too long!!!
bcs .1
sta IPCFG+S.IPCFG.DOMAIN
ldx #0
.2 lda UsrBuf256+2,y
sta IPCFG+S.IPCFG.DOMAIN,x
beq .1
inx
iny
bne .2
bra .1
.9 jsr CFG.Read.CleanUp
sec
.99 rts
.3 jsr CFG.ScanIP
bcs .1
ldy CFG.Keyword
lda CFG.Keyword.Map,y
tax
ldy #0
.4 lda CFG.IP+1,y
sta IPCFG,x
inx
iny
cpy #4
bne .4
lda CFG.Keyword
cmp #1
bne .1
lda #S.IPCFG.STATUS.OK
sta IPCFG
bra .1
.8 jsr CFG.Read.CleanUp
clc
rts
*--------------------------------------
CFG.Read.HOSTS >PUSHWI 0 Aux type
>PUSHBI 4 S.FILEINFO.TYPE.TXT
>PUSHBI SYS.FOpen.R
>PUSHW L.HOSTS
>SYSCALL LoadFile
bcs .99
stx CFG.hCfgFile
>STYA CFG.FileLen
txa
>SYSCALL GetMemPtr.A
>STYA ZPIPCfgPtr
.89 lda CFG.hCfgFile
>SYSCALL FreeMem.A
clc
.99 rts
*--------------------------------------
CFG.Read.CleanUp
pha
lda CFG.hCfgPath
beq .1
>SYSCALL FreeMem.A
.1 lda CFG.hCfgFile
beq .8
>SYSCALL FreeMem.A
.8 pla
rts
*--------------------------------------
CFG.GetLine stz UsrBuf256
ldx #0
ldy #0
.1 jsr CFG.GetChar
bne .2 end of file?
txa
bne .8
sec
rts
.2 cmp #$0D
beq .8 end of line
inx
sta UsrBuf256,x
cmp #'='
bne .3
txa
dec
tay
.3 cpx #64 line too long ?
bne .1
sec
rts
.8 tya = found ?
beq .9
sta UsrBuf256
txa
sec
sbc UsrBuf256
sta UsrBuf256+1,y
stz UsrBuf256+1,x End with 0 for ScanIP
clc
rts
.9 sec
rts
*--------------------------------------
CFG.GetChar lda CFG.FileLen
bne .1
lda CFG.FileLen+1
beq .9
dec CFG.FileLen+1
.1 dec CFG.FileLen
lda (ZPIPCfgPtr)
inc ZPIPCfgPtr
bne .9
inc ZPIPCfgPtr+1 NZ
.9 rts
*--------------------------------------
CFG.GetKeyword stz CFG.Keyword
ldx #0
.1 phx
ldy #0
.2 lda CFG.Keywords,x
cmp UsrBuf256,y
bne .3
cpy UsrBuf256
beq .4
inx
iny
bne .2
plx
sec
rts
.3 inc CFG.Keyword
plx
txa
sec
adc CFG.Keywords,x
tax
lda CFG.Keywords,x
bne .1
sec
rts
.4 plx
clc
rts
*--------------------------------------
CFG.ScanIP stz CFG.IP
ldx UsrBuf256
.1 ldy #0
.11 lda UsrBuf256+2,x
beq .3
cmp #'0'
bcc .2
cmp #'9'+1
bcs .2
cpy #3
beq .9
iny
sta CFG.StrBuf,y
inx
bra .11
.2 cmp #'.'
bne .9
.3 sty CFG.StrBuf
lda CFG.IP
cmp #4
beq .9
jsr CFG.Dec2Hex
bcs .9
lda CFG.HexByte
inc CFG.IP
ldy CFG.IP
sta CFG.IP,y
inx
lda UsrBuf256+1,x
bne .1
clc
rts
.9 sec
rts
*--------------------------------------
CFG.Dec2Hex sec
ldy CFG.StrBuf
beq .9
lda CFG.StrBuf+1
and #$0f
sta CFG.HexByte
ldy #1
.1 cpy CFG.StrBuf
beq .8
iny
lda CFG.HexByte
asl CFG.HexByte
bcs .9
asl CFG.HexByte
bcs .9
adc CFG.HexByte
bcs .9
asl
bcs .9
sta CFG.HexByte
lda CFG.StrBuf,y
and #$0f
adc CFG.HexByte
sta CFG.HexByte
bcc .1
.9 rts
.8 clc
rts
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SBIN/TCPIP.S.CFG
LOAD /A2OSX.SRC/SBIN/TCPIP.S
ASM

View File

@ -1,221 +0,0 @@
PR#3
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6
.LIST OFF
.OP 65C02
.OR $2000
.TF /A2OSX.BUILD/SBIN/TCPIP
*--------------------------------------
.INB /A2OSX.BUILD/INC/MACROS.I
.INB /A2OSX.BUILD/INC/A2OSX.I
.INB /A2OSX.BUILD/INC/LIBTCPIP.I
*--------------------------------------
ZPIPCfgPtr .EQ ZPBIN
ZPIPDevPtr .EQ ZPBIN+2
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
CS.START cld
jmp (.1,x)
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA 0
.DA CS.END-CS.START Code Length To Relocate
.DA 0
.DA 0
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.QUIT
L.LIBTCPIP .DA LIBTCPIP
L.DEVNAME .DA DEVNAME
L.MSG.DEV.KO .DA MSG.DEV.KO
L.MSG.DEV.OK .DA MSG.DEV.OK
L.MSG.CFG .DA MSG.CFG
L.MSG.CFG.KO .DA MSG.CFG.KO
L.MSG.CFG.OK .DA MSG.CFG.OK
L.HOSTNAME .DA HOSTNAME
L.TCPIP.CONF .DA TCPIP.CONF
L.HOSTS .DA HOSTS
L.IPCFG .DA IPCFG
.DA 0
*--------------------------------------
CS.INIT >LDYA L.LIBTCPIP
>SYSCALL LoadLibYA
bcs .99
sta hLIBTCPIP
jsr CS.INIT.DEV
bcs .99
jsr CFG.Read continue even if error opening CFG file
lda IPCFG+S.IPCFG.HOSTNAME
bne .4
ldy DefaultHostName
.2 lda DefaultHostName,y
sta IPCFG+S.IPCFG.HOSTNAME,y
dey
bpl .2
.3 lda A2osX.TIMER16
jsr A2CharAX
sta IPCFG+S.IPCFG.HOSTNAME+7
stx IPCFG+S.IPCFG.HOSTNAME+8
lda A2osX.TIMER16+1
jsr A2CharAX
sta IPCFG+S.IPCFG.HOSTNAME+9
stx IPCFG+S.IPCFG.HOSTNAME+10
.4 >PUSHW L.IPCFG
>LIBCALL hLIBTCPIP,LIBTCPIP.SET.IPCFG
lda (pPs)
ora #S.PS.F.EVENT Now accept events
sta (pPs)
clc
.99 rts
*--------------------------------------
CS.INIT.DEV >LDYA L.DEVNAME
>SYSCALL GetDevByNameYA
bcc .1
inc DEVNAME+4
lda DEVNAME+4
cmp #'8'
bne CS.INIT.DEV
>LDYA L.MSG.DEV.KO
>SYSCALL PrintF.YA
lda #$28 MLI.ERR.NODEV
sec
rts
.1 >STYA ZPIPDevPtr
>STYA NetDevJmp+1
stx hNetDev
stx IPCFG+S.IPCFG.HDEV
>PUSHW L.DEVNAME
>LDYA L.MSG.DEV.OK
>SYSCALL PrintF.YA
ldx #DEVMGR.OPEN
jsr NetDevJmp
bcs .9
ldx #DEVMGR.STATUS
jsr NetDevJmp
bcs .9
>STYA ZPIPDevPtr
ldy #S.DEVSTAT+2 MAC
ldx #S.IPCFG.MAC
.2 lda (ZPIPDevPtr),y
sta IPCFG,x
iny
inx
cpx #S.IPCFG.MAC+6
bne .2
clc
rts
.9 sec
rts
*--------------------------------------
CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.POLL
clc
rts
*--------------------------------------
CS.DOEVENT lda (pEvent)
bpl .9
>LIBCALL hLIBTCPIP,LIBTCPIP.PULSEA
.9 sec never discard TIME event
rts
*--------------------------------------
CS.QUIT lda IPCFG+S.IPCFG.HDEV
beq .1
ldx #DEVMGR.CLOSE
jsr NetDevJmp
.1 lda hLIBTCPIP
>SYSCALL UnloadLibA
clc
rts
*--------------------------------------
A2CharAX pha
lsr
lsr
lsr
lsr
and #$0F
ora #$30
cmp #'9'+1
bcc .1
adc #6
.1 tax
pla
and #$0F
ora #$30
cmp #'9'+1
bcc .8
adc #6
.8 rts
*--------------------------------------
NetDevJmp jmp *
*--------------------------------------
.INB /A2OSX.SRC/SBIN/TCPIP.S.CFG
*--------------------------------------
CS.END
*--------------------------------------
LIBTCPIP >PSTR "libtcpip.o"
DEVNAME >PSTR "ETH1"
MSG.DEV.KO >CSTR "TCPIP:No Device Found, exiting.\r\n"
MSG.DEV.OK >CSTR "TCPIP:Bound To Device : %S\r\n"
MSG.CFG >CSTR "TCPIP:Reading %S..."
MSG.CFG.KO >CSTR "Failed!!! [%h]\r\n"
MSG.CFG.OK >CSTR "OK.\r\n"
*--------------------------------------
HOSTNAME >PSTR "${A2OSX}ETC/HOSTNAME"
TCPIP.CONF >PSTR "${A2OSX}ETC/TCPIP.CONF"
HOSTS >PSTR "${A2OSX}ETC/HOSTS"
DefaultHostName >PSTR "a2osx-XXXX"
CFG.Keywords >PSTR "DOMAIN"
>PSTR "IP"
>PSTR "MASK"
>PSTR "GW"
>PSTR "DNS1"
>PSTR "DNS2"
CFG.Keyword.Map .DA #0 End Of Keyword table and NA Keyword
.DA #S.IPCFG.IP
.DA #S.IPCFG.MASK
.DA #S.IPCFG.GW
.DA #S.IPCFG.DNS1
.DA #S.IPCFG.DNS2
hLIBTCPIP .BS 1
hNetDev .BS 1
IPCFG .BS S.IPCFG
CFG.hCfgFile .BS 1
CFG.hCfgPath .BS 1
CFG.FileLen .BS 2
CFG.Keyword .BS 1
CFG.StrBuf .BS 4
CFG.HexByte .BS 1
CFG.IP .BS 5
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SBIN/TCPIP.S
ASM

View File

@ -10,63 +10,33 @@ CFG.Read >PUSHW L.HOSTNAME
>SYSCALL PrintF.YA
jsr CFG.Read.HOSTNAME
bcc .1
>PUSHA
>LDYA L.MSG.CFG.KO
bra .2
.1 >LDYA L.MSG.CFG.OK
.2 >SYSCALL PrintF.YA
jsr CFG.Read.Result
>PUSHW L.TCPIP.CONF
>LDYA L.MSG.CFG
>SYSCALL PrintF.YA
jsr CFG.Read.TCPIP.CONF
bcc .3
>PUSHA
>LDYA L.MSG.CFG.KO
bra .4
.3 >LDYA L.MSG.CFG.OK
.4 >SYSCALL PrintF.YA
jsr CFG.Read.Result
>PUSHW L.HOSTS
>LDYA L.MSG.CFG
>SYSCALL PrintF.YA
rts
jsr CFG.Read.HOSTS
bcc .5
*--------------------------------------
CFG.Read.Result bcc .1
>PUSHA
>LDYA L.MSG.CFG.KO
bra .6
.5 >SYSCALL PrintF.YA
.6 >LDYA L.MSG.CFG.OK
>SYSCALL PrintF.YA
bra .2
.1 >LDYA L.MSG.CFG.OK
.2 >SYSCALL PrintF.YA
rts
*--------------------------------------
CFG.Read.HOSTNAME
stz CFG.hCfgFile
stz CFG.hCfgPath
>LDYA L.HOSTNAME
>SYSCALL ExpandStr.YA
bcs .99
stx CFG.hCfgPath
pha
>PUSHWI 0 Aux type
>PUSHBI 4 S.FILEINFO.TYPE.TXT
>PUSHBI SYS.FOpen.R
pla
>PUSHYA
>SYSCALL LoadFile
jsr CFG.Read.LoadFile
bcs .9
stx CFG.hCfgFile
>STYA CFG.FileLen
txa
>SYSCALL GetMemPtr.A
>STYA ZPIPCfgPtr
* read 15 chars MAX, until CR or EOF
@ -96,31 +66,12 @@ CFG.Read.HOSTNAME
.9 jsr CFG.Read.CleanUp
sec
.99 rts
rts
*--------------------------------------
CFG.Read.TCPIP.CONF
stz CFG.hCfgFile
stz CFG.hCfgPath
>LDYA L.TCPIP.CONF
>SYSCALL ExpandStr.YA
bcs .99
stx CFG.hCfgPath
pha
>PUSHWI 0 Aux type
>PUSHBI 4 S.FILEINFO.TYPE.TXT
>PUSHBI SYS.FOpen.R
pla
>PUSHYA
>SYSCALL LoadFile
jsr CFG.Read.LoadFile
bcs .9
stx CFG.hCfgFile
>STYA CFG.FileLen
txa
>SYSCALL GetMemPtr.A
>STYA ZPIPCfgPtr
.1 jsr CFG.GetLine
bcs .8
@ -150,7 +101,7 @@ CFG.Read.TCPIP.CONF
.9 jsr CFG.Read.CleanUp
sec
.99 rts
rts
.3 jsr CFG.ScanIP
bcs .1
@ -177,23 +128,41 @@ CFG.Read.TCPIP.CONF
clc
rts
*--------------------------------------
CFG.Read.HOSTS >PUSHWI 0 Aux type
CFG.Read.HOSTS >LDYA L.HOSTS
jsr CFG.Read.LoadFile
bcs .9
.9 jsr CFG.Read.CleanUp
sec
rts
*--------------------------------------
CFG.Read.LoadFile
stz CFG.hCfgFile
stz CFG.hCfgPath
>SYSCALL ExpandStr.YA
bcs .9
stx CFG.hCfgPath
pha
>PUSHWI 0 Aux type
>PUSHBI 4 S.FILEINFO.TYPE.TXT
>PUSHBI SYS.FOpen.R
>PUSHW L.HOSTS
pla
>PUSHYA
>SYSCALL LoadFile
bcs .99
bcs .9
stx CFG.hCfgFile
>STYA CFG.FileLen
txa
>SYSCALL GetMemPtr.A
>STYA ZPIPCfgPtr
.89 lda CFG.hCfgFile
>SYSCALL FreeMem.A
clc
.99 rts
.9 rts
*--------------------------------------
CFG.Read.CleanUp
pha

View File

@ -83,7 +83,7 @@ CS.INIT >LDYA L.LIBTCPIP
lda (pPs)
ora #S.PS.F.EVENT Now accept events
sta (pPs)
clc
.99 rts
*--------------------------------------
@ -141,7 +141,6 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.POLL
*--------------------------------------
CS.DOEVENT lda (pEvent)
bpl .9
>LIBCALL hLIBTCPIP,LIBTCPIP.PULSEA
.9 sec never discard TIME event
@ -186,7 +185,7 @@ LIBTCPIP >CSTR "libtcpip.o"
DEVNAME >CSTR "ETH1"
MSG.DEV.KO >CSTR "TCPIPD:No Device Found, exiting.\r\n"
MSG.DEV.OK >CSTR "TCPIPD:Bound To Device : %s\r\n"
MSG.CFG >CSTR "TCPIPD:Reading %S..."
MSG.CFG >CSTR "TCPIPD:Reading %s..."
MSG.CFG.KO >CSTR "Failed!!! [%h]\r\n"
MSG.CFG.OK >CSTR "OK.\r\n"
*--------------------------------------

View File

@ -25,7 +25,7 @@ CORE.Run lda CORE.PSCount
ldy #S.PS.CPID
lda (pPs),y
jsr CORE.GetPSByID.A
jsr CORE.GetPSStatus.A
bcc .8 yes, still running....
lda (pPs) get S.PS.F again
@ -301,7 +301,7 @@ CORE.PSFree.A sta .1+1 Save PS ID
jsr .8
lda (ZPPtr1) get S.PS.F
and #S.PS.F.ENV do we have to discard duplicated env & prefix ?
and #S.PS.F.DUPENV do we have to discard duplicated env & prefix ?
beq .1
ldy #S.PS.hENV
@ -331,11 +331,17 @@ CORE.PSFree.A sta .1+1 Save PS ID
* X unmodofied
*--------------------------------------
CORE.GetPSByID.A
jsr CORE.GetPSStatus.A
bcs .9
lda PS.TABLE.hMem-1,y
jmp K.GetMemPtr.A
.9 rts
CORE.GetPSStatus.A
ldy CORE.PSCount
beq .9
.1 cmp PS.Table.PID-1,y
beq .2
beq .8
dey
bne .1
@ -343,8 +349,8 @@ CORE.GetPSByID.A
sec
rts
.2 lda PS.TABLE.hMem-1,y
jmp K.GetMemPtr.A
.8 clc
rts
*--------------------------------------
CORE.DumpEvent ldy #S.EVT-1

21
SYS/KERNEL.S.CTRL.txt Normal file
View File

@ -0,0 +1,21 @@
PR#3
PREFIX /A2OSX.BUILD
LOMEM $A00
INC 1
AUTO 6
* CONTROL SECTION :
.LIST ON
A2osX.D1.S .EQ A2osX.D2-A2osX.D1
A2osX.D2.S .EQ A2osX.E0-A2osX.D2
A2osX.E0.S .EQ A2osX.E0.E-A2osX.E0
.DO A2osX.D1.S>$1000
* ERROR:BNK1 too big
.FIN
.DO A2osX.D2.S>$1000
* ERROR:BNK2 too big
.FIN
.LIST OFF
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.CTRL
LOAD /A2OSX.SRC/SYS/KERNEL.S
ASM

View File

@ -106,7 +106,7 @@ K.SYSCALL.JMP .DA 0 $00
.DA K.CreateProcess.YA
.DA 0
.DA 0
.DA 0
.DA K.GetPSStatus.A
.DA K.GetPSList.YA
.DA * $B0

View File

@ -14,13 +14,13 @@ AUTO 6
* A = Child PSID
*\--------------------------------------
K.ExecProcessNewEnv.YA
ldx #S.PS.F.ENV+S.PS.F.HOLD
ldx #S.PS.F.DUPENV+S.PS.F.HOLD
.HS 2C bit abs
K.ExecProcess.YA
ldx #S.PS.F.HOLD
.HS 2C bit abs
K.CreateProcessNewEnv.YA
ldx #S.PS.F.ENV
ldx #S.PS.F.DUPENV
.HS 2C bit abs
K.CreateProcess.YA
ldx #0
@ -104,7 +104,7 @@ PS.CreateChild ldx #0
lda CORE.LastPSID
sta (ZPPtr3),y
lda #S.PS.F.ENV
lda #S.PS.F.DUPENV
bit K.CreateProcess.Flags need to create ENV & Prefix ?
beq .6 no...
@ -116,6 +116,10 @@ PS.CreateChild ldx #0
jsr K.NewStr.YA
bcs .9
lda CORE.LastPSID Set this copy ownership
ldy #S.MEM.OWNERPID
sta (ZPMEMMGR),y
txa
ldy #S.PS.hPREFIX
sta (ZPPtr3),y
@ -158,7 +162,7 @@ PS.CreateChild ldx #0
ora (pPs)
sta (pPs) HOLD parent PS if ExecProcess
.82 lda #S.PS.F.INUSE+S.PS.F.INIT
.82 lda #S.PS.F.INIT
ora (ZPPtr3)
sta (ZPPtr3) Make this PS Init....
@ -337,6 +341,10 @@ PS.DupEnv.A jsr K.GetMemPtr.A
>STYA ZPPtr2
lda CORE.LastPSID Set this copy ownership
ldy #S.MEM.OWNERPID
sta (ZPMEMMGR),y
ldy #0
.1 lda (ZPPtr1),y
@ -358,10 +366,17 @@ PS.DupEnv.A jsr K.GetMemPtr.A
inc ZPPtr2+1
bra .1
.8 txa
.8 txa hMem
clc
.9 rts
*--------------------------------------
K.GetPSStatus.A jsr CORE.GetPSByID.A
bcs .9
>STYA ZPPtr1
lda (ZPPtr1)
.9 rts
*--------------------------------------
K.GetPSList.YA >STYA ZPPtr1
ldx #0

View File

@ -48,18 +48,7 @@ A2osX.E0 .PH $E000
.INB /A2OSX.SRC/SYS/KERNEL.S.D01
.EP
A2osX.E0.E .EQ *
* CONTROL SECTION :
.LIST ON
A2osX.D1.S .EQ A2osX.D2-A2osX.D1
A2osX.D2.S .EQ A2osX.E0-A2osX.D2
A2osX.E0.S .EQ A2osX.E0.E-A2osX.E0
.DO A2osX.D1.S>$1000
* ERROR:BNK1 too big
.FIN
.DO A2osX.D2.S>$1000
* ERROR:BNK2 too big
.FIN
.LIST OFF
.INB /A2OSX.SRC/SYS/KERNEL.S.CTRL
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S
ASM