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 " MSG1 >CSTR "%03d %s %b %4s $%H "
MSG2.B >CSTR "$%h/$%h %16S %03d.%03d %10u" MSG2.B >CSTR "$%h/$%h %16S %03d.%03d %10u"
MSG2.C >CSTR "$%h/$%h %16S %03d.%03d n/a" MSG2.C >CSTR "$%h/$%h %16S %03d.%03d n/a"
MSG.SFLAGS .AS "BWRLNEIO" MSG.SFLAGS .AS "BWRLNEIO"
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
.OR 0 .OR 0

View File

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

View File

@ -10,8 +10,9 @@ AUTO 6
*-------------------------------------- *--------------------------------------
.INB /A2OSX.BUILD/INC/MACROS.I .INB /A2OSX.BUILD/INC/MACROS.I
.INB /A2OSX.BUILD/INC/A2OSX.I .INB /A2OSX.BUILD/INC/A2OSX.I
.INB /A2OSX.BUILD/INC/KERNEL.I
*-------------------------------------- *--------------------------------------
ZPPTR1 .EQ ZPBIN ZPPtr .EQ ZPBIN
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
*-------------------------------------- *--------------------------------------
@ -45,43 +46,56 @@ CS.RUN >LDYA pData
>LDYA L.MSG0 >LDYA L.MSG0
>SYSCALL PrintF.YA >SYSCALL PrintF.YA
lda (pData) PS.COUNT >LDA.G PS.Count
beq .8 beq .8
.1 >LDA.G PS.Index .1 >INC.G PS.Index
inc
sta (pData),y
tay tay
lda (pData),y PID lda (pData),y PID
>SYSCALL GetMemPtr.A >SYSCALL GetMemPtr.A
>STYA ZPPTR1 >STYA ZPPtr
ldy #S.PS.hARGS ldy #S.PS.hARGS
lda (ZPPTR1),y lda (ZPPtr),y
>SYSCALL GetMemPtr.A >SYSCALL GetMemPtr.A
>PUSHYA >PUSHYA
ldy #S.PS.PPID ldy #S.PS.PPID
lda (ZPPTR1),y lda (ZPPtr),y
>PUSHA Parent PID >PUSHA Parent PID
lda (ZPPTR1) push flags lda (ZPPtr) Get flags
>PUSHA
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 ldy #S.PS.PID
lda (ZPPTR1),y lda (ZPPtr),y
>PUSHA PID >PUSHA PID
>LDYA L.MSG1 >LDYA L.MSG1
>SYSCALL PrintF.YA >SYSCALL PrintF.YA
.7 lda (pData) PS.COUNT .7 >DEC.G PS.COUNT
dec
sta (pData)
bne .1 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 sec we do not want to stay in memory
rts rts
*-------------------------------------- *--------------------------------------
@ -93,7 +107,8 @@ CS.QUIT clc
*-------------------------------------- *--------------------------------------
CS.END CS.END
MSG0 >CSTR "ID Flags PID Command Line\r\n" 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 .DUMMY
.OR 0 .OR 0
@ -101,6 +116,7 @@ DS.START
PS.COUNT .BS 1 PS.COUNT .BS 1
PS.DATA .BS K.PS.MAX PS.DATA .BS K.PS.MAX
PS.Index .BS 1 PS.Index .BS 1
PS.FLAGS .BS 9
DS.END DS.END
.ED .ED
*-------------------------------------- *--------------------------------------

View File

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

View File

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

View File

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

View File

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

View File

@ -63,12 +63,12 @@ CS.START cld
.DA ARP.CLEAR .DA ARP.CLEAR
.DA ARP.QUERY .DA ARP.QUERY
.DA ARP.ADD .DA ARP.ADD
.DA ARP.GetC.ACHE .DA ARP.GetCACHE
.DA DNS.CLEAR .DA DNS.CLEAR
.DA DNS.QUERY .DA DNS.QUERY
.DA DNS.ADD .DA DNS.ADD
.DA DNS.GetC.ACHE .DA DNS.GetCACHE
.DA HST.GETBYNAME .DA HST.GETBYNAME
.DA HST.GETBYADDR .DA HST.GETBYADDR
@ -143,7 +143,7 @@ POLL ldx #DEVMGR.READBLOCK
stx hFrameIn stx hFrameIn
>STYA ZPFrameInPtr >STYA ZPFrameInPtr
lda (ZPFrameInPtr) Get Frame Len lda (ZPFrameInPtr) Get Frame Len
sta ZPFrameInLen sta ZPFrameInLen
ldy #1 ldy #1
lda (ZPFrameInPtr),y 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 >SYSCALL PrintF.YA
jsr CFG.Read.HOSTNAME jsr CFG.Read.HOSTNAME
bcc .1 jsr CFG.Read.Result
>PUSHA
>LDYA L.MSG.CFG.KO
bra .2
.1 >LDYA L.MSG.CFG.OK
.2 >SYSCALL PrintF.YA
>PUSHW L.TCPIP.CONF >PUSHW L.TCPIP.CONF
>LDYA L.MSG.CFG >LDYA L.MSG.CFG
>SYSCALL PrintF.YA >SYSCALL PrintF.YA
jsr CFG.Read.TCPIP.CONF jsr CFG.Read.TCPIP.CONF
bcc .3 jsr CFG.Read.Result
>PUSHA
>LDYA L.MSG.CFG.KO
bra .4
.3 >LDYA L.MSG.CFG.OK
.4 >SYSCALL PrintF.YA
>PUSHW L.HOSTS >PUSHW L.HOSTS
>LDYA L.MSG.CFG >LDYA L.MSG.CFG
>SYSCALL PrintF.YA >SYSCALL PrintF.YA
rts
jsr CFG.Read.HOSTS jsr CFG.Read.HOSTS
bcc .5 *--------------------------------------
CFG.Read.Result bcc .1
>PUSHA >PUSHA
>LDYA L.MSG.CFG.KO >LDYA L.MSG.CFG.KO
bra .6 bra .2
.5 >SYSCALL PrintF.YA .1 >LDYA L.MSG.CFG.OK
.6 >LDYA L.MSG.CFG.OK .2 >SYSCALL PrintF.YA
>SYSCALL PrintF.YA
rts rts
*-------------------------------------- *--------------------------------------
CFG.Read.HOSTNAME CFG.Read.HOSTNAME
stz CFG.hCfgFile
stz CFG.hCfgPath
>LDYA L.HOSTNAME >LDYA L.HOSTNAME
>SYSCALL ExpandStr.YA jsr CFG.Read.LoadFile
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 bcs .9
stx CFG.hCfgFile
>STYA CFG.FileLen
txa
>SYSCALL GetMemPtr.A
>STYA ZPIPCfgPtr
* read 15 chars MAX, until CR or EOF * read 15 chars MAX, until CR or EOF
@ -96,31 +66,12 @@ CFG.Read.HOSTNAME
.9 jsr CFG.Read.CleanUp .9 jsr CFG.Read.CleanUp
sec sec
.99 rts rts
*-------------------------------------- *--------------------------------------
CFG.Read.TCPIP.CONF CFG.Read.TCPIP.CONF
stz CFG.hCfgFile
stz CFG.hCfgPath
>LDYA L.TCPIP.CONF >LDYA L.TCPIP.CONF
>SYSCALL ExpandStr.YA jsr CFG.Read.LoadFile
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 bcs .9
stx CFG.hCfgFile
>STYA CFG.FileLen
txa
>SYSCALL GetMemPtr.A
>STYA ZPIPCfgPtr
.1 jsr CFG.GetLine .1 jsr CFG.GetLine
bcs .8 bcs .8
@ -150,7 +101,7 @@ CFG.Read.TCPIP.CONF
.9 jsr CFG.Read.CleanUp .9 jsr CFG.Read.CleanUp
sec sec
.99 rts rts
.3 jsr CFG.ScanIP .3 jsr CFG.ScanIP
bcs .1 bcs .1
@ -177,23 +128,41 @@ CFG.Read.TCPIP.CONF
clc clc
rts 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 4 S.FILEINFO.TYPE.TXT
>PUSHBI SYS.FOpen.R >PUSHBI SYS.FOpen.R
>PUSHW L.HOSTS pla
>PUSHYA
>SYSCALL LoadFile >SYSCALL LoadFile
bcs .99 bcs .9
stx CFG.hCfgFile stx CFG.hCfgFile
>STYA CFG.FileLen >STYA CFG.FileLen
txa txa
>SYSCALL GetMemPtr.A >SYSCALL GetMemPtr.A
>STYA ZPIPCfgPtr >STYA ZPIPCfgPtr
.9 rts
.89 lda CFG.hCfgFile
>SYSCALL FreeMem.A
clc
.99 rts
*-------------------------------------- *--------------------------------------
CFG.Read.CleanUp CFG.Read.CleanUp
pha pha

View File

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

View File

@ -25,7 +25,7 @@ CORE.Run lda CORE.PSCount
ldy #S.PS.CPID ldy #S.PS.CPID
lda (pPs),y lda (pPs),y
jsr CORE.GetPSByID.A jsr CORE.GetPSStatus.A
bcc .8 yes, still running.... bcc .8 yes, still running....
lda (pPs) get S.PS.F again lda (pPs) get S.PS.F again
@ -301,7 +301,7 @@ CORE.PSFree.A sta .1+1 Save PS ID
jsr .8 jsr .8
lda (ZPPtr1) get S.PS.F 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 beq .1
ldy #S.PS.hENV ldy #S.PS.hENV
@ -331,11 +331,17 @@ CORE.PSFree.A sta .1+1 Save PS ID
* X unmodofied * X unmodofied
*-------------------------------------- *--------------------------------------
CORE.GetPSByID.A 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 ldy CORE.PSCount
beq .9 beq .9
.1 cmp PS.Table.PID-1,y .1 cmp PS.Table.PID-1,y
beq .2 beq .8
dey dey
bne .1 bne .1
@ -343,8 +349,8 @@ CORE.GetPSByID.A
sec sec
rts rts
.2 lda PS.TABLE.hMem-1,y .8 clc
jmp K.GetMemPtr.A rts
*-------------------------------------- *--------------------------------------
CORE.DumpEvent ldy #S.EVT-1 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 K.CreateProcess.YA
.DA 0 .DA 0
.DA 0 .DA 0
.DA 0 .DA K.GetPSStatus.A
.DA K.GetPSList.YA .DA K.GetPSList.YA
.DA * $B0 .DA * $B0

View File

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

View File

@ -48,18 +48,7 @@ A2osX.E0 .PH $E000
.INB /A2OSX.SRC/SYS/KERNEL.S.D01 .INB /A2OSX.SRC/SYS/KERNEL.S.D01
.EP .EP
A2osX.E0.E .EQ * A2osX.E0.E .EQ *
* CONTROL SECTION : .INB /A2OSX.SRC/SYS/KERNEL.S.CTRL
.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 MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S SAVE /A2OSX.SRC/SYS/KERNEL.S
ASM ASM