diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 346d915b..d5955913 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 4dcf0fb4..f374a99c 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/BIN/LSDEV.S.txt b/BIN/LSDEV.S.txt index 3313e7ac..344757db 100644 --- a/BIN/LSDEV.S.txt +++ b/BIN/LSDEV.S.txt @@ -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 diff --git a/BIN/MEMDUMP.S.txt b/BIN/MEMDUMP.S.txt index e5870a59..a03c5116 100644 --- a/BIN/MEMDUMP.S.txt +++ b/BIN/MEMDUMP.S.txt @@ -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 *-------------------------------------- diff --git a/BIN/PS.S.txt b/BIN/PS.S.txt index 78e24e83..0e4daef8 100644 --- a/BIN/PS.S.txt +++ b/BIN/PS.S.txt @@ -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 *-------------------------------------- diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index e8bdc11c..8b66b9dc 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -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 diff --git a/INC/MACROS.I.txt b/INC/MACROS.I.txt index ba7496a5..8136ab18 100644 --- a/INC/MACROS.I.txt +++ b/INC/MACROS.I.txt @@ -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 *-------------------------------------- diff --git a/LIB/LIBTCPIP.S.ARP.txt b/LIB/LIBTCPIP.S.ARP.txt index 58da8f11..7d6514b1 100644 --- a/LIB/LIBTCPIP.S.ARP.txt +++ b/LIB/LIBTCPIP.S.ARP.txt @@ -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 *-------------------------------------- diff --git a/LIB/LIBTCPIP.S.DNS.txt b/LIB/LIBTCPIP.S.DNS.txt index 2100d19f..8df14232 100644 --- a/LIB/LIBTCPIP.S.DNS.txt +++ b/LIB/LIBTCPIP.S.DNS.txt @@ -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 *-------------------------------------- diff --git a/LIB/LIBTCPIP.S.txt b/LIB/LIBTCPIP.S.txt index 771fb071..a79230c7 100644 --- a/LIB/LIBTCPIP.S.txt +++ b/LIB/LIBTCPIP.S.txt @@ -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 diff --git a/SBIN/TCPIP.S.CFG.txt b/SBIN/TCPIP.S.CFG.txt deleted file mode 100644 index 3587defe..00000000 --- a/SBIN/TCPIP.S.CFG.txt +++ /dev/null @@ -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 diff --git a/SBIN/TCPIP.S.txt b/SBIN/TCPIP.S.txt deleted file mode 100644 index 889f51cf..00000000 --- a/SBIN/TCPIP.S.txt +++ /dev/null @@ -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 diff --git a/SBIN/TCPIPD.S.CFG.txt b/SBIN/TCPIPD.S.CFG.txt index 17beb41a..1c1a8291 100644 --- a/SBIN/TCPIPD.S.CFG.txt +++ b/SBIN/TCPIPD.S.CFG.txt @@ -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 diff --git a/SBIN/TCPIPD.S.txt b/SBIN/TCPIPD.S.txt index da9b4978..1df977b2 100644 --- a/SBIN/TCPIPD.S.txt +++ b/SBIN/TCPIPD.S.txt @@ -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" *-------------------------------------- diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index 0d44d987..e5926a20 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -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 diff --git a/SYS/KERNEL.S.CTRL.txt b/SYS/KERNEL.S.CTRL.txt new file mode 100644 index 00000000..f4d19baa --- /dev/null +++ b/SYS/KERNEL.S.CTRL.txt @@ -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 diff --git a/SYS/KERNEL.S.JMP.txt b/SYS/KERNEL.S.JMP.txt index cccd9112..ea1dbb2c 100644 --- a/SYS/KERNEL.S.JMP.txt +++ b/SYS/KERNEL.S.JMP.txt @@ -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 diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index 132ebd10..754b9a2b 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -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 diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index ebe6b78a..273f179a 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -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