KERNEL:Fixed many memleaks & MEM related problems, FILEENUM BINs: fixes around wildcards search

This commit is contained in:
burniouf 2021-08-01 15:45:15 +02:00
parent 25c601906e
commit 3007637129
20 changed files with 472 additions and 368 deletions

Binary file not shown.

Binary file not shown.

View File

@ -15,9 +15,10 @@ NEW
.OR ZPBIN .OR ZPBIN
ZS.START ZS.START
ZPPtr1 .BS 2 ZPPtr1 .BS 2
ZPBuf .BS 2
ZPBufPtr .BS 2 ZPBufPtr .BS 2
ArgCount .BS 1
ArgIndex .BS 1 ArgIndex .BS 1
ArgFile .BS 1
OptionIdx .BS 1 OptionIdx .BS 1
hBuf .BS 1 hBuf .BS 1
FieldNum .BS 1 FieldNum .BS 1
@ -45,7 +46,7 @@ CS.START cld
*-------------------------------------- *--------------------------------------
.1 .DA CS.INIT .1 .DA CS.INIT
.DA CS.RUN .DA CS.RUN
.DA CS.DOEVENT .DA CS.DOEVENT
.DA CS.QUIT .DA CS.QUIT
L.MSG.USAGE .DA MSG.USAGE L.MSG.USAGE .DA MSG.USAGE
L.MSG.CRLF .DA MSG.CRLF L.MSG.CRLF .DA MSG.CRLF
@ -64,21 +65,29 @@ CS.RUN lda #C.SPACE
cmp #'-' cmp #'-'
beq .1 beq .1
lda ArgCount lda ArgIndex
sta ArgIndex sta ArgFile
bra .10 bra .10
.1 ldy #1 .1 ldy #1
lda (ZPPtr1),y lda (ZPPtr1),y
ldx #OptionList.Cnt-1 ldx #OptionList.Cnt-1
.2 cmp OptionList,x .2 cmp OptionList,x
beq .3 beq .3
dex dex
bpl .2 bpl .2
bra .97 .97 lda #E.SYN
.98 pha
>PUSHW L.MSG.USAGE
>PUSHBI 0
>SYSCALL PrintF
pla
sec
.9 rts
.3 txa .3 txa
lsr lsr
@ -89,6 +98,7 @@ CS.RUN lda #C.SPACE
jsr CS.RUN.NextArg jsr CS.RUN.NextArg
bcs .97 bcs .97
lda (ZPPtr1) lda (ZPPtr1)
sta Separator sta Separator
bra .10 bra .10
@ -106,24 +116,17 @@ CS.RUN lda #C.SPACE
tya tya
ldx OptionIdx ldx OptionIdx
sta FieldNum-1,x sta FieldNum-1,x
bra .10 scan for any other args bra .10 scan for any other args
.97 lda #E.SYN
.98 pha
>PUSHW L.MSG.USAGE
>PUSHBI 0
>SYSCALL PrintF
pla
sec
.9 rts
.8 >LDYAI 256 .8 >LDYAI 256
>SYSCALL GetMem >SYSCALL GetMem
bcs .9 bcs .9
>STYA ZPBuf
>STYA ZPBufPtr >STYA ZPBufPtr
stx hBuf stx hBuf
lda ArgIndex
lda ArgFile
beq .80 beq .80
>PUSHW ZPBufPtr >PUSHW ZPBufPtr
@ -133,7 +136,7 @@ CS.RUN lda #C.SPACE
jsr CS.RUN.OUT jsr CS.RUN.OUT
bcs .9 bcs .9
lda #0 Exit with no Error lda #0 Exit with no Error
sec sec
rts rts
@ -147,34 +150,38 @@ CS.RUN lda #C.SPACE
lda (ZPPtr1) lda (ZPPtr1)
cmp #S.FD.T.PIPE cmp #S.FD.T.PIPE
bne .97 bne CS.RUN.LOOP
ldy #S.PS.hStdIn ldy #S.PS.hStdIn
lda (pPS),y lda (pPS),y
sta hToClose sta hToClose
*-------------------------------------- *--------------------------------------
CS.RUN.LOOP >SLEEP CS.RUN.LOOP >SLEEP
ldy #S.PS.hStdIn ldy #S.PS.hStdIn
lda (pPS),y lda (pPS),y
>PUSHA >PUSHA
>PUSHW ZPBufPtr
>PUSHWI 256 >LDYA ZPBuf
>STYA ZPBufPtr
>PUSHYA
>PUSHWI 255
>SYSCALL FGetS >SYSCALL FGetS
bcs .8 bcs .8
lda (ZPBufPtr) lda (ZPBufPtr)
beq CS.RUN.LOOP beq CS.RUN.LOOP
jsr CS.RUN.OUT jsr CS.RUN.OUT
bcc CS.RUN.LOOP bcc CS.RUN.LOOP
.8 cmp #MLI.E.EOF .8 cmp #MLI.E.EOF
bne .90 bne .90
lda #0 lda #0
.90 sec .90 sec
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.OUT ldx FieldNum CS.RUN.OUT ldx FieldNum
beq CS.RUN.OUT.MN beq CS.RUN.OUT.MN
@ -244,12 +251,12 @@ CS.RUN.OUT.MN ldy #0
cpy EndChar cpy EndChar
beq .4 beq .4
iny iny
bra .3 bra .3
.4 lda #0 .4 lda #0
sta (ZPBufPtr),y sta (ZPBufPtr),y
.8 ldy StartChar .8 ldy StartChar
beq .80 beq .80
@ -262,10 +269,11 @@ CS.RUN.OUT.MN ldy #0
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.NextArg inc ArgCount CS.RUN.NextArg inc ArgIndex
lda ArgCount lda ArgIndex
>SYSCALL ArgV >SYSCALL ArgV
bcs .9 bcs .9
>STYA ZPPtr1 >STYA ZPPtr1
.9 rts .9 rts
@ -283,7 +291,7 @@ CS.QUIT lda hToClose
beq .1 beq .1
>SYSCALL FClose Close the pipe >SYSCALL FClose Close the pipe
.1 lda hBuf .1 lda hBuf
beq .8 beq .8

View File

@ -186,7 +186,7 @@ CS.RUN.LOOP stz bPass2
bcs .6 bcs .6
jsr FilterMatch jsr FilterMatch
bcs .8 no match, skip.... bcs .5 no match, skip....
bit bAllmostAll bit bAllmostAll
bmi .4 bmi .4
@ -820,7 +820,7 @@ OptionList .AS "ACFLRacflr"
OptionVars .DA #bAllmostAll,#bColumn,#bFullPath,#bLong,#bRecurse,#bAllmostAll,#bColumn,#bFullPath,#bLong,#bRecurse OptionVars .DA #bAllmostAll,#bColumn,#bFullPath,#bLong,#bRecurse,#bAllmostAll,#bColumn,#bFullPath,#bLong,#bRecurse
*-------------------------------------- *--------------------------------------
MSG.USAGE .AS "Usage : LS [-A] [-C] [-F] [-L] [-R] [filespec]\r\n" MSG.USAGE .AS "Usage : LS [-A] [-C] [-F] [-L] [-R] [filespec]\r\n"
.AS " -A : Show dot files\r\n" .AS " -A : Show all files\r\n"
.AS " -C : List in multiple columns\r\n" .AS " -C : List in multiple columns\r\n"
.AS " -F : Show full paths\r\n" .AS " -F : Show full paths\r\n"
.AS " -L : Use long listing format\r\n" .AS " -L : Use long listing format\r\n"

View File

@ -17,6 +17,7 @@ ZPPTR1 .BS 2
ZPPTR2 .BS 2 ZPPTR2 .BS 2
MEM.COUNT .BS 1 MEM.COUNT .BS 1
USED.COUNT .BS 1 USED.COUNT .BS 1
LINE.COUNT .BS 1
bSTOP .BS 1 bSTOP .BS 1
ZPReadAux sta SETREADAUX ZPReadAux sta SETREADAUX
@ -35,7 +36,7 @@ CS.START cld
.DA #0 .DA #0
.DA CS.END-CS.START Code Size (without Constants) .DA CS.END-CS.START Code Size (without Constants)
.DA DS.END-DS.START Data SegmentSize .DA DS.END-DS.START Data SegmentSize
.DA #32 Stack Size .DA #64 Stack Size
.DA #ZS.END-ZS.START Zero Page Size .DA #ZS.END-ZS.START Zero Page Size
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
@ -48,10 +49,10 @@ CS.START cld
L.MSG0 .DA MSG0 L.MSG0 .DA MSG0
L.MSG1.INV .DA MSG1.INV L.MSG1.INV .DA MSG1.INV
L.MSG1 .DA MSG1 L.MSG1 .DA MSG1
L.MSG1X .DA MSG1X
L.MSG1.BIN .DA MSG1.BIN L.MSG1.BIN .DA MSG1.BIN
L.MSG1.STR .DA MSG1.STR L.MSG1.STR .DA MSG1.STR
L.MSG1.HEX .DA MSG1.HEX L.MSG1.HEX .DA MSG1.HEX
L.MSG1X .DA MSG1X
L.MSG2 .DA MSG2 L.MSG2 .DA MSG2
L.MSG3 .DA MSG3 L.MSG3 .DA MSG3
.DA 0 .DA 0
@ -73,18 +74,9 @@ CS.RUN ldx #ZPCodeLen-1
CS.RUN.LOOP inc MEM.COUNT skip slot 0 CS.RUN.LOOP inc MEM.COUNT skip slot 0
lda bSTOP jsr CS.RUN.CheckStop
beq .1
.10 >SYSCALL GetChar
bcs CS.INIT.RTS bcs CS.INIT.RTS
cmp #3 Ctrl-C
beq CS.INIT.RTS
cmp #$13 Ctrl-S
stz bSTOP
.1 lda (ZPPTR1) .1 lda (ZPPTR1)
bpl .2 bpl .2
@ -102,26 +94,15 @@ CS.RUN.LOOP inc MEM.COUNT skip slot 0
>CMP.G MemStat+S.MSTAT.MLast >CMP.G MemStat+S.MSTAT.MLast
bne CS.RUN.LOOP bne CS.RUN.LOOP
jsr CS.RUN.MSTAT jsr CS.RUN.SUMMARY
jsr CS.RUN.INIT jsr CS.RUN.INIT
CS.RUN.LOOPX inc MEM.COUNT skip slot 0 CS.RUN.LOOPX inc MEM.COUNT skip slot 0
lda bSTOP jsr CS.RUN.CheckStop
beq .1
.10 >SYSCALL GetChar
bcs CS.INIT.RTS bcs CS.INIT.RTS
cmp #3 Ctrl-C ?
beq CS.INIT.RTS
cmp #$13 Ctrl-S
bne .10
stz bSTOP
.1 ldy #S.MEM.F .1 ldy #S.MEM.F
jsr ZPReadAux jsr ZPReadAux
bpl .2 bpl .2
@ -141,39 +122,33 @@ CS.RUN.LOOPX inc MEM.COUNT skip slot 0
>CMP.G MemStat+S.MSTAT.XLast >CMP.G MemStat+S.MSTAT.XLast
bne CS.RUN.LOOPX bne CS.RUN.LOOPX
CS.RUN.XSTAT >PUSHW L.MSG2 jsr CS.RUN.SUMMARY
>PUSHB USED.COUNT
>PUSHB MEM.COUNT
>PUSHBI 2
>SYSCALL PrintF
>PUSHW L.MSG3 jsr CS.RUN.MSTAT
>PUSHW.G MemStat+S.MSTAT.XH jsr CS.RUN.XSTAT
>PUSHW.G MemStat+S.MSTAT.XF
>PUSHW.G MemStat+S.MSTAT.XL
>LDA.G MemStat+S.MSTAT.XF
sec
>SBC.G MemStat+S.MSTAT.XL
pha
>LDA.G MemStat+S.MSTAT.XF+1
>SBC.G MemStat+S.MSTAT.XL+1
ply
>PUSHYA
>PUSHBI 8
>SYSCALL PrintF
lda #0 lda #0
sec sec
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.MSTAT >PUSHW L.MSG2 CS.RUN.INIT >LDYAI Mem.Table+S.MEM skip slot 0
>STYA ZPPTR1
>PUSHW L.MSG0
>PUSHBI 0
jsr CS.RUN.PrintF
stz MEM.COUNT
stz USED.COUNT
rts
*--------------------------------------
CS.RUN.SUMMARY >PUSHW L.MSG2
>PUSHB USED.COUNT >PUSHB USED.COUNT
>PUSHB MEM.COUNT >PUSHB MEM.COUNT
>PUSHBI 2 >PUSHBI 2
>SYSCALL PrintF jmp CS.RUN.PrintF
*--------------------------------------
>PUSHW L.MSG3 CS.RUN.MSTAT >PUSHW L.MSG3
>PUSHW.G MemStat+S.MSTAT.MH >PUSHW.G MemStat+S.MSTAT.MH
>PUSHW.G MemStat+S.MSTAT.MF >PUSHW.G MemStat+S.MSTAT.MF
>PUSHW.G MemStat+S.MSTAT.ML >PUSHW.G MemStat+S.MSTAT.ML
@ -186,21 +161,22 @@ CS.RUN.MSTAT >PUSHW L.MSG2
ply ply
>PUSHYA >PUSHYA
>PUSHBI 8 >PUSHBI 8
>SYSCALL PrintF jmp CS.RUN.PrintF
lda #0
sec
rts
*-------------------------------------- *--------------------------------------
CS.RUN.INIT >LDYAI Mem.Table+S.MEM skip slot 0 CS.RUN.XSTAT >PUSHW L.MSG3
>STYA ZPPTR1 >PUSHW.G MemStat+S.MSTAT.XH
>PUSHW.G MemStat+S.MSTAT.XF
>LDYA L.MSG0 >PUSHW.G MemStat+S.MSTAT.XL
>SYSCALL PutS >LDA.G MemStat+S.MSTAT.XF
sec
stz MEM.COUNT >SBC.G MemStat+S.MSTAT.XL
stz USED.COUNT pha
rts >LDA.G MemStat+S.MSTAT.XF+1
>SBC.G MemStat+S.MSTAT.XL+1
ply
>PUSHYA
>PUSHBI 8
jmp CS.RUN.PrintF
*-------------------------------------- *--------------------------------------
CS.RUN.PRINTMEM >PUSHW L.MSG1 CS.RUN.PRINTMEM >PUSHW L.MSG1
@ -255,9 +231,7 @@ CS.RUN.PRINTMEM >PUSHW L.MSG1
jsr CS.RUN.CHECKPS jsr CS.RUN.CHECKPS
bcc .12 bcc .12
>PUSHW L.MSG1.INV jsr CS.RUN.PrintINV
>PUSHBI 0
>SYSCALL PrintF
.12 >PUSHBI 9 .12 >PUSHBI 9
>SYSCALL PrintF >SYSCALL PrintF
@ -296,7 +270,7 @@ CS.RUN.PRINTMEM.DATA
>PUSHW ZPPTR2 String >PUSHW ZPPTR2 String
>PUSHBI 3 >PUSHBI 3
>SYSCALL PrintF jsr CS.RUN.PrintF
rts rts
.2 >PUSHW L.MSG1.HEX .2 >PUSHW L.MSG1.HEX
@ -310,7 +284,7 @@ CS.RUN.PRINTMEM.DATA
>PUSHBI 16 >PUSHBI 16
>SYSCALL PrintF jsr CS.RUN.PrintF
rts rts
CS.RUN.PRINTMEM.BIN CS.RUN.PRINTMEM.BIN
@ -321,7 +295,7 @@ CS.RUN.PRINTMEM.BIN
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>PUSHYA >PUSHYA
>PUSHBI 2 >PUSHBI 2
>SYSCALL PrintF jsr CS.RUN.PrintF
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.PRINTMEMX CS.RUN.PRINTMEMX
@ -381,12 +355,10 @@ CS.RUN.PRINTMEMX
jsr CS.RUN.CHECKPS jsr CS.RUN.CHECKPS
bcc .12 bcc .12
>PUSHW L.MSG1.INV jsr CS.RUN.PrintINV
>PUSHBI 0
>SYSCALL PrintF
.12 >PUSHBI 9 .12 >PUSHBI 9
>SYSCALL PrintF jsr CS.RUN.PrintF
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.CHECKPS ldx #0 CS.RUN.CHECKPS ldx #0
@ -403,6 +375,63 @@ CS.RUN.CHECKPS ldx #0
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.CheckStop
lda bSTOP
beq .2
.1 >SLEEP
>SYSCALL GetChar
bcs .9
cmp #3 Ctrl-C
beq .9 CS
stz bSTOP
clc
rts
.2 ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL FEOF
bcs .9
tay
bne .8 no char
>SYSCALL GetChar
bcs .9
cmp #3 Ctrl-C
beq .9 CS
cmp #$13 Ctrl-S
bne .8
dec bSTOP
.8 clc
.9 rts
*--------------------------------------
CS.RUN.PrintINV >PUSHW L.MSG1.INV
>PUSHBI 0
>SYSCALL PrintF
rts
*--------------------------------------
CS.RUN.PrintF >SYSCALL PrintF
bcs .9
inc LINE.COUNT
lda LINE.COUNT
cmp #23
bcc .8
dec bSTOP
stz LINE.COUNT
.8
.9 rts
*--------------------------------------
CS.DOEVENT sec CS.DOEVENT sec
rts rts
*-------------------------------------- *--------------------------------------
@ -416,18 +445,18 @@ ZPCode sta SETREADAUX
rts rts
ZPCodeLen .EQ *-ZPCode ZPCodeLen .EQ *-ZPCode
*-------------------------------------- *--------------------------------------
MSG0 .AZ "hMem Flags PID REF PTR LEN BINPATH/DATA" MSG0 .AZ "hMem Flags PID REF PTR LEN BINPATH/DATA\r\n"
MSG1.INV .AZ "\e[7m" MSG1.INV .AZ "\e[7m"
MSG1 .AZ "$%h %s %3d %3d $%H %5D " MSG1 .AZ "$%h %s %3d %3d $%H %5D "
MSG1X .AZ "$%h %s %3d %3d $%H %5D\e[0m\r\n"
MSG1.BIN .AZ "{%s}\e[0m\r\n" MSG1.BIN .AZ "{%s}\e[0m\r\n"
MSG1.STR .AZ "[%03d:%s]\e[0m\r\n" MSG1.STR .AZ "[%03d:%s]\e[0m\r\n"
MSG1.HEX .AZ "?HEX:%h%h.%h%h.%h%h.%h%h.%h%h.%h%h.%h%h.%h%h\e[0m\r\n" MSG1.HEX .AZ "?HEX:%h%h.%h%h.%h%h.%h%h.%h%h.%h%h.%h%h.%h%h\e[0m\r\n"
MSG2 .AZ "\r\nAllocated hMem:%d, Total:%d\r\n" MSG1X .AZ "$%h %s %3d %3d $%H %5D\e[0m\r\n"
MSG3 .AS "High Memory: $%H\r\n" MSG2 .AZ "Allocated hMem:%d, Total:%d\r\n"
MSG3 .AS "\r\nHigh Memory: $%H\r\n"
.AS "Free ULimit: $%H\r\n" .AS "Free ULimit: $%H\r\n"
.AS "Low Memory: $%H\r\n" .AS "Low Memory: $%H\r\n"
.AZ "\r\nFree Memory: %D Bytes.\r\n\r\n" .AZ "Free Memory: %D Bytes.\r\n\r\n"
MSG.FLAGS .AS "UZXAfcds" MSG.FLAGS .AS "UZXAfcds"
MSG.FLAGSX .AS "UZXAidep" MSG.FLAGSX .AS "UZXAidep"
*-------------------------------------- *--------------------------------------

View File

@ -442,47 +442,37 @@ CORE.ArgV.Add lda #C.SPACE
iny iny
.1 jsr CORE.GetNextChar .1 jsr CORE.GetNextChar
bcs .5 bcs .7
.2 cmp ZPTmpW .2 cmp ZPTmpW
bne .3 bne .3
jsr CORE.GetNextChar jsr CORE.GetNextChar
bra .5 bra .7
.3 ldx ZPTmpW .3 ldx ZPTmpW
cpx #C.SPACE cpx #C.SPACE
bne .40 bne .6
jsr CORE.IsEndCmd jsr CORE.IsEndCmd
bcc .5 bcc .7
.40 sta (ZPArgVBufPtr),y .6 sta (ZPArgVBufPtr),y
iny iny
.4 jsr CORE.GetNextChar jsr CORE.GetNextChar
bcc .2 bcc .2
.5 lda #0 .7 lda #0
sta (ZPArgVBufPtr),y sta (ZPArgVBufPtr),y
>LDYA ZPArgVBufPtr >LDYA ZPArgVBufPtr
>STYA ZPArgVBufPrev >STYA ZPArgVBufPrev
>PUSHYA >PUSHYA
>PUSHWZ >PUSHW ZPArgVBufPtr
>SYSCALL Expand >SYSCALL Expand
bcs .9 bcs .9
phx
>STYA ZPPtr1
ldy #$ff
.7 iny
lda (ZPPtr1),y
sta (ZPArgVBufPtr),y
bne .7
tya tya
beq .8 Empty string.... beq .8 Empty string....
@ -492,9 +482,9 @@ CORE.ArgV.Add lda #C.SPACE
bcc .8 bcc .8
inc ZPArgVBufPtr+1 inc ZPArgVBufPtr+1
clc
.8 pla .8
>SYSCALL FreeMem
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CORE.ArgV.Next lda (ZPArgVBufPtr) CORE.ArgV.Next lda (ZPArgVBufPtr)

View File

@ -226,7 +226,8 @@ CS.RUN.DUMP lda ArgFile
>PUSHW.G StatBuf+S.STAT.GID >PUSHW.G StatBuf+S.STAT.GID
>PUSHL.G StatBuf+S.STAT.SIZE >PUSHL.G StatBuf+S.STAT.SIZE
>PUSHL.G StatBuf+S.STAT.BLOCKS >PUSHL.G StatBuf+S.STAT.BLOCKS
>PUSHBI 12 >PUSHW.G StatBuf+S.STAT.BLKSIZE
>PUSHBI 14
>SYSCALL PrintF >SYSCALL PrintF
>PUSHW L.MSG.CMATimes >PUSHW L.MSG.CMATimes
@ -421,7 +422,7 @@ MSG.Mod .AZ "Mod : %s\r\n"
MSG.UIDGIDSIZE .AS "UID : %10D\r\n" MSG.UIDGIDSIZE .AS "UID : %10D\r\n"
.AS "GID : %10D\r\n" .AS "GID : %10D\r\n"
.AS "Size : %10u\r\n" .AS "Size : %10u\r\n"
.AZ "Blocks : %10u\r\n" .AZ "Blocks : %10u (%D)\r\n"
MSG.CMATimes .AS "Created : %s\r\n" MSG.CMATimes .AS "Created : %s\r\n"
.AS "Modified : %s\r\n" .AS "Modified : %s\r\n"
.AZ "Accessed : %s\r\n" .AZ "Accessed : %s\r\n"

View File

@ -13,6 +13,7 @@ DCLK.START php
lda $C400 lda $C400
stz $C0C0 stz $C0C0
stz $C0C1
ldy #8 ldy #8
stz $C0C2 stz $C0C2

View File

@ -330,7 +330,9 @@ LDR.ReadRoot lda LDR.MLIOL.P+1 place boot devnum in globals
bcc .1 if ok, read next block. bcc .1 if ok, read next block.
.FIN .FIN
.8 jmp $800 jmp to "load interpreter" code .8
* >DEBUG
jmp $800 jmp to "load interpreter" code
.9 ldx #LDR.MSG.ROOTERR .9 ldx #LDR.MSG.ROOTERR
jsr LDR.PrintX jsr LDR.PrintX
@ -354,9 +356,9 @@ DS121x.DATA1 .EQ idxl
DS121x.DATA2 .EQ A1L DS121x.DATA2 .EQ A1L
*-------------------------------------- *--------------------------------------
LDR.ClkDevScan jsr LDR.IsIIc LDR.ClkDevScan jsr LDR.IsIIc
bcc LDR.ClkDevNCLK bcc LDR.ClkDevNCLK //c only
php LDR.ClkDevDCLK php
sei sei
lda $CFFF lda $CFFF
@ -374,9 +376,10 @@ LDR.ClkDevScan jsr LDR.IsIIc
ldx #8 ldx #8
.2 sta $C0C3 .2 stz $C0C0
stz $C0C0
sta $C0C3
lsr lsr
dex dex
bne .2 bne .2
@ -388,6 +391,8 @@ LDR.ClkDevScan jsr LDR.IsIIc
.4 ldy #8 .4 ldy #8
stz $C0C0
.5 lda $C0C3 .5 lda $C0C3
lsr lsr
@ -398,6 +403,7 @@ LDR.ClkDevScan jsr LDR.IsIIc
dex dex
bne .4 bne .4
stz $C0C0
pla pla
sta $C0C3 sta $C0C3
@ -408,12 +414,12 @@ LDR.ClkDevScan jsr LDR.IsIIc
.6 lda DS121x.DATA1-1,x .6 lda DS121x.DATA1-1,x
cmp DS121x.ValidLO-1,x cmp DS121x.ValidLO-1,x
bcc LDR.ClkDevNCLK bcc .9
cmp DS121x.ValidHI-1,x cmp DS121x.ValidHI-1,x
bcc .7 bcc .7
bne LDR.ClkDevNCLK bne .9
.7 dex .7 dex
bne .6 bne .6
@ -424,10 +430,10 @@ LDR.ClkDevScan jsr LDR.IsIIc
ldx PAKME.DCLK ldx PAKME.DCLK
ldy PAKME.DCLK+1 ldy PAKME.DCLK+1
jmp LDR.SetupCLK jmp LDR.SetupCLK
*--------------------------------------
LDR.ClkDevNCLK cld
php .9 cld
*--------------------------------------
LDR.ClkDevNCLK php
sei sei
lda RDCXROM lda RDCXROM

View File

@ -275,46 +275,43 @@ CS.RUN.DumpFile >PUSHYA
>PUSHBI S.FI.T.TXT >PUSHBI S.FI.T.TXT
>PUSHWZ Aux type >PUSHWZ Aux type
>SYSCALL FOpen >SYSCALL FOpen
bcs .9 bcs .99
stx ZPhFile stx ZPhFile
>LDYAI 256 >LDYAI 256
>SYSCALL GetMem >SYSCALL GetMem
bcs .99 bcs .9
>STYA ZPBufPtr >STYA ZPBufPtr
stx ZPhBuf stx ZPhBuf
.1 >PUSHB ZPhFile .1 >PUSHB ZPhFile
>PUSHW ZPBufPtr >PUSHW ZPBufPtr
>PUSHWI 256 >PUSHWI 255
>SYSCALL FGetS >SYSCALL FGetS
bcs .7 bcs .8
>PUSHW ZPBufPtr >PUSHW ZPBufPtr
>PUSHWZ >PUSHW ZPBufPtr
>SYSCALL Expand >SYSCALL Expand
bcc .2
.99 php >LDYA ZPBufPtr
pha
jsr .8
pla
plp
.9 rts
.2 phx
>SYSCALL PutS >SYSCALL PutS
pla
>SYSCALL FreeMem
bra .1 bra .1
.7 lda ZPhBuf .8 lda ZPhBuf
>SYSCALL FreeMem >SYSCALL FreeMem
clc
.8 lda ZPhFile .9 php
pha
lda ZPhFile
>SYSCALL FClose >SYSCALL FClose
rts pla
plp
.99 rts
*-------------------------------------- *--------------------------------------
CS.DOEVENT sec CS.DOEVENT sec
rts rts

View File

@ -6,7 +6,7 @@ NEW
.TF sbin/networkd .TF sbin/networkd
*-------------------------------------- *--------------------------------------
LIB.MAX .EQ 4 LIB.MAX .EQ 4
DBG .EQ 2 DBG .EQ 0
*-------------------------------------- *--------------------------------------
.INB inc/macros.i .INB inc/macros.i
.INB inc/a2osx.i .INB inc/a2osx.i
@ -21,10 +21,10 @@ DBG .EQ 2
.DUMMY .DUMMY
.OR ZPBIN .OR ZPBIN
ZS.START ZS.START
pNETCFG .BS 2
pBuf .BS 2 pBuf .BS 2
pNETCFG .BS 2
hEtcNetwork .BS 1 hEtcNetwork .BS 1
hLineBuf .BS 1 hBuf .BS 1
hFrameIn .BS 1 hFrameIn .BS 1
ZS.END .ED ZS.END .ED
*-------------------------------------- *--------------------------------------
@ -41,7 +41,7 @@ CS.START cld
.DO DBG=1 .DO DBG=1
.DA #128 Stack Size .DA #128 Stack Size
.ELSE .ELSE
.DA #64 Stack Size .DA #32 Stack Size
.FIN .FIN
.DA #ZS.END-ZS.START Zero Page Size .DA #ZS.END-ZS.START Zero Page Size
.DA 0 .DA 0
@ -61,7 +61,6 @@ L.MSG.OK .DA MSG.OK
L.MSG.ERR .DA MSG.ERR L.MSG.ERR .DA MSG.ERR
L.DEVNAME .DA DEVNAME L.DEVNAME .DA DEVNAME
L.IOCTL .DA IOCTL L.IOCTL .DA IOCTL
L.DCB.NIC .DA DCB.NIC
L.ETCNETWORK .DA ETCNETWORK L.ETCNETWORK .DA ETCNETWORK
.DO DBG=1 .DO DBG=1
L.MSG.DBG .DA MSG.DBG L.MSG.DBG .DA MSG.DBG
@ -70,18 +69,46 @@ L.MSG.DBG.REJECT .DA MSG.DBG.REJECT
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT lda DevID CS.INIT lda DevID
bne .99 bne .8
jsr CS.INIT.DEV >LDYAI 64
bcs .9 >SYSCALL GetMem
bcs .99
jsr CS.INIT.LIBS >STYA pBuf
bcs .9 stx hBuf
jsr CS.INIT.CONF >STYA IOCTL+S.IOCTL.BUFPTR for CS.INIT.DEV
.9 rts
jsr CS.INIT.DEV
bcs .90
.99 >LDYA L.MSG.RUNNING lda LibCnt
.1 inc
>SYSCALL ArgV
bcs .2
jsr CS.INIT.LIB
bcs .90
inc LibCnt
lda LibCnt
cmp #LIB.MAX
bne .1
.2 jsr CS.INIT.CONF
.90 php
pha
lda hBuf
>SYSCALL FreeMem
pla
plp
.99 rts
.8 >LDYA L.MSG.RUNNING
>SYSCALL PutS >SYSCALL PutS
lda #0 lda #0
sec sec
@ -110,24 +137,22 @@ CS.INIT.DEV >PUSHW L.DEVNAME
>PUSHBI 2 >PUSHBI 2
>SYSCALL PrintF >SYSCALL PrintF
>LDYA L.DCB.NIC
>STYA IOCTL+S.IOCTL.BUFPTR
lda #S.IOCTL.S.GETDCB lda #S.IOCTL.S.GETDCB
sta IOCTL+S.IOCTL.S sta IOCTL+S.IOCTL.S
>PUSHB DevID ldx #IOCTL.STATUS
>PUSHBI IOCTL.STATUS *--------------------------------------
CS.IOCTL lda DevID
>PUSHA
txa
>PUSHA
>PUSHW L.IOCTL >PUSHW L.IOCTL
>SYSCALL IOCTL >SYSCALL IOCTL
rts rts
*-------------------------------------- *--------------------------------------
CS.INIT.LIBS lda LibCnt * pBuf = DCB.NIC
*--------------------------------------
.1 inc CS.INIT.LIB phy
>SYSCALL ArgV
bcs .8
phy
pha pha
>PUSHW L.MSG.LIB >PUSHW L.MSG.LIB
pla pla
@ -141,18 +166,44 @@ CS.INIT.LIBS lda LibCnt
>SYSCALL LoadLib >SYSCALL LoadLib
jsr CS.RUN.CheckErr jsr CS.RUN.CheckErr
bcs CS.INIT.LIBS.9 bcs .9
ldy LibCnt ldy LibCnt
sta hLIBs,y sta hLIBs,y
tay tay
ldx #LIBNET.GETCFG ldx #LIBNET.GETCFG
jsr A2osX.LIBCALL jsr A2osX.LIBCALL
bcs CS.INIT.LIBS.9 bcs .9
>STYA pNETCFG >STYA pNETCFG
jsr CS.INIT.SETUP.NETCFG lda DevID
ldy #S.NETCFG.DevID
sta (pNETCFG),y
ldy #S.DCB.NIC.FLAGS
lda (pBuf),y
ldy #S.NETCFG.DevFlags
sta (pNETCFG),y
ldx #6
ldy #S.DCB.NIC.MAC
.2 lda (pBuf),y
pha
iny
dex
bne .2
ldx #6
ldy #S.NETCFG.MAC+5
.3 pla
sta (pNETCFG),y
dey
dex
bne .3
>PUSHW pNETCFG >PUSHW pNETCFG
@ -161,59 +212,25 @@ CS.INIT.LIBS lda LibCnt
ldx #LIBNET.SETCFG ldx #LIBNET.SETCFG
jsr A2osX.LIBCALL jsr A2osX.LIBCALL
bcs CS.INIT.LIBS.9
inc LibCnt * clc
lda LibCnt
cmp #LIB.MAX
bne .1
.8 clc .9 rts
CS.INIT.LIBS.9 rts
*-------------------------------------- *--------------------------------------
CS.INIT.SETUP.NETCFG CS.INIT.CONF >PUSHW L.ETCNETWORK
lda DevID
ldy #S.NETCFG.DevID
sta (pNETCFG),y
iny S.NETCFG.DevFlags
lda DCB.NIC+S.DCB.NIC.FLAGS
sta (pNETCFG),y
ldx #5
ldy #S.NETCFG.MAC+5
.2 lda DCB.NIC+S.DCB.NIC.MAC,x
sta (pNETCFG),y
dey
dex
bpl .2
rts
*--------------------------------------
CS.INIT.CONF >LDYAI 64
>SYSCALL GetMem
bcs CS.INIT.LIBS.9
>STYA pBuf
stx hLineBuf
>PUSHW L.ETCNETWORK
>PUSHBI O.RDONLY+O.TEXT >PUSHBI O.RDONLY+O.TEXT
>PUSHBI S.FI.T.TXT >PUSHBI S.FI.T.TXT
>PUSHWZ >PUSHWZ
>SYSCALL FOpen >SYSCALL FOpen
bcs .98 bcs .9
sta hEtcNetwork sta hEtcNetwork
.1 >PUSHB hEtcNetwork .1 >PUSHB hEtcNetwork
>PUSHW pBuf >PUSHW pBuf
>PUSHWI 64 >PUSHWI 63
>SYSCALL FGetS >SYSCALL FGetS
bcs .80 bcs .8
>PUSHW L.MSG.EXEC >PUSHW L.MSG.EXEC
>PUSHW pBuf >PUSHW pBuf
@ -227,25 +244,15 @@ CS.INIT.CONF >LDYAI 64
>SLEEP >SLEEP
bra .1 bra .1
.98 pha .8 lda hEtcNetwork
jsr .81
pla
sec
rts
.80 lda hEtcNetwork
>SYSCALL FClose >SYSCALL FClose
.81 lda hLineBuf
>SYSCALL FreeMem
* clc * clc
rts
.9 rts
*-------------------------------------- *--------------------------------------
CS.RUN >PUSHB DevID CS.RUN ldx #IOCTL.READ
>PUSHBI IOCTL.READ jsr CS.IOCTL
>PUSHW L.IOCTL
>SYSCALL IOCTL
bcs .8 No Frame bcs .8 No Frame
sta hFrameIn sta hFrameIn
@ -288,12 +295,12 @@ CS.RUN >PUSHB DevID
.2 .DO DBG=1 .2 .DO DBG=1
jsr CS.RUN.FILTER jsr CS.RUN.FILTER
bcs .33 bcs .33
>LDYA L.MSG.DBG.REJECT >LDYA L.MSG.DBG.REJECT
>SYSCALL puts >SYSCALL puts
.33 .FIN .33 .FIN
lda hFrameIn lda hFrameIn
>SYSCALL FreeMem >SYSCALL FreeMem
jmp CS.RUN jmp CS.RUN
@ -305,8 +312,10 @@ CS.RUN >PUSHB DevID
CS.RUN.FILTER lda (pBuf) CS.RUN.FILTER lda (pBuf)
cmp #$ff cmp #$ff
beq .9 beq .9
dec dec
beq .9 beq .9
ldy #S.ETH.EII.TYPE+1 ldy #S.ETH.EII.TYPE+1
lda (pBuf),y lda (pBuf),y
bne .9 bne .9
@ -370,10 +379,8 @@ CS.QUIT ldx #0
.7 lda DevID .7 lda DevID
beq .8 beq .8
>PUSHA ldx #IOCTL.CLOSE
>PUSHBI IOCTL.CLOSE jsr CS.IOCTL
>PUSHWZ
>SYSCALL IOCTL
.8 clc .8 clc
rts rts
@ -385,8 +392,10 @@ MSG.DEV.KO .AZ "NETWORKD:No Device Found, exiting."
MSG.DEV.OK .AZ "NETWORKD:Bound To Device : %s\r\n" MSG.DEV.OK .AZ "NETWORKD:Bound To Device : %s\r\n"
MSG.LIB .AZ "NETWORKD:Loading %s..." MSG.LIB .AZ "NETWORKD:Loading %s..."
MSG.EXEC .AZ "NETWORKD:Running %s..." MSG.EXEC .AZ "NETWORKD:Running %s..."
*--------------------------------------
MSG.OK .AZ "[OK]" MSG.OK .AZ "[OK]"
MSG.ERR .AZ "[%h]\r\n" MSG.ERR .AZ "[%h]\r\n"
*--------------------------------------
ETCNETWORK .AZ "${BOOT}etc/network" ETCNETWORK .AZ "${BOOT}etc/network"
.DO DBG=1 .DO DBG=1
MSG.DBG .AS "FRM ETH:%h%h%h%h%h%h.%h%h%h%h%h%h.%h%h\r\n" MSG.DBG .AS "FRM ETH:%h%h%h%h%h%h.%h%h%h%h%h%h.%h%h\r\n"
@ -400,7 +409,6 @@ LibCnt .BS 1
hLIBs .BS LIB.MAX+1 for ending 0 if MAX libs hLIBs .BS LIB.MAX+1 for ending 0 if MAX libs
DEVNAME .AZ "/dev/eth1" DEVNAME .AZ "/dev/eth1"
IOCTL .BS S.IOCTL IOCTL .BS S.IOCTL
DCB.NIC .BS S.DCB.NIC
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
.OR 0 .OR 0

View File

@ -36,20 +36,22 @@ ExcludeMatch sec
tax tax
beq FilterMatch.RTS No filter....exit with CS excluded beq FilterMatch.RTS No filter....exit with passed carry
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>STYA ZPPtr2 >STYA ZPPtr2
ldy #S.STAT.FSID ldy #S.STAT.FSID
lda (ZPFileStat),y lda (ZPFileStat),y if 0, Regular ProDOS....
tax if 0, Regular ProDOS.... pha save FSID for comapring later
bne .10 bne .10
>LDYA ZPPtr2 ... so CI compare >LDYA ZPPtr2 ... so CI compare
>SYSCALL StrUpr >SYSCALL StrUpr
.10 lda (ZPPtr2) Get first pattern byte .10 plx get back FSID
lda (ZPPtr2) Get first pattern byte
beq .8 Match always if empty beq .8 Match always if empty
ldy #0 ldy #0
@ -216,7 +218,7 @@ InitSrcDirYA >PUSHYA
>STA.G hFilter >STA.G hFilter
lda #0 lda #0
sta (ZPPtr2) sta (ZPPtr2) cut path at last '/' to remove wildcards
.5 >LDYAI 256 .5 >LDYAI 256
>SYSCALL GetMem Get a 256 buffer to store BasePath >SYSCALL GetMem Get a 256 buffer to store BasePath

View File

@ -61,8 +61,10 @@ K.ArgV tax save requested arg#
.1 lda (ZPPtr2) end of ARGV[] ? .1 lda (ZPPtr2) end of ARGV[] ?
beq .9 yes, not found.... beq .9 yes, not found....
dex dex
bmi .7 bmi .7
.3 jsr SHARED.GetCP2 skip str .3 jsr SHARED.GetCP2 skip str
bne .3 bne .3
@ -115,6 +117,7 @@ K.Arg2ArgV >PULLW ZPPtr2 Get target buffer
.3 cmp #C.SPACE .3 cmp #C.SPACE
bne .6 regular char ...store... bne .6 regular char ...store...
tya tya
bmi .4 between quotes... store space... bmi .4 between quotes... store space...

View File

@ -202,8 +202,7 @@ BIN.Load.1 >PUSHWI K.Buf256
jsr BIN.CompCSEndYA jsr BIN.CompCSEndYA
jsr BIN.RelExe jsr BIN.RelExe
>LDYAI K.Buf256 get back bin path jsr STRING.DupBuf256 get back bin path & jsr K.strdup make a copy of this string
jsr K.strdup make a copy of this string
bcs BIN.Load.Free bcs BIN.Load.Free
jsr Mem.SetOwnerPS0 Make BINPATH owned by PS0 jsr Mem.SetOwnerPS0 Make BINPATH owned by PS0

View File

@ -270,7 +270,7 @@ DEV.MkFDy sta .8+1 A = S.FD.T
>STYA pFD >STYA pFD
stx IO.hFD stx IO.hFD
pha jsr Mem.SetOwnerPS0
txa txa
@ -282,7 +282,7 @@ DEV.MkFDy sta .8+1 A = S.FD.T
.8 lda #$ff SELF MODIFIED .8 lda #$ff SELF MODIFIED
sta (pFD) sta (pFD)
pla Y,A = pFD, X = hFILE >LDYA pFD Y,A = pFD, X = hFILE
* clc * clc
.9 rts .9 rts
@ -292,14 +292,14 @@ DEV.GetFreeFD lda #0
DEV.GetFD ldx #1 DEV.GetFD ldx #1
.1 cmp hFDs-1,x .1 cmp hFDs-1,x
beq .8 beq DEV.GetFD.8
inx inx
cpx #K.hFD.MAX+1 cpx #K.hFD.MAX+1
bne .1 bne .1
tax tax
beq .9 beq DEV.GetFD.8
lda #E.INVH lda #E.INVH
.HS 2C BIT ABS .HS 2C BIT ABS
@ -307,16 +307,13 @@ DEV.GetFD ldx #1
* sec * sec
rts rts
.8 clc DEV.GetFD.8 clc
rts rts
*-------------------------------------- *--------------------------------------
DEV.hFDFree lda IO.hFD DEV.hFDFree lda IO.hFD
beq .8 beq DEV.GetFD.8
jmp K.FreeMem jmp K.FreeMem
.8 clc
rts
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/sys/kernel.s.dev SAVE usr/src/sys/kernel.s.dev

View File

@ -341,7 +341,10 @@ FS.ClrStat ldx #S.STAT-1
lda A2osX.FSID lda A2osX.FSID
sta K.S.STAT+S.STAT.FSID sta K.S.STAT+S.STAT.FSID
lda #2
sta K.S.STAT+S.STAT.BLKSIZE+1 = 512 bytes
rts rts
*-------------------------------------- *--------------------------------------
FS.GFI.Src .DA #S.FI.T,#S.FI.AUXTYPE,#S.FI.AUXTYPE+1 FS.GFI.Src .DA #S.FI.T,#S.FI.AUXTYPE,#S.FI.AUXTYPE+1

View File

@ -291,7 +291,9 @@ MEM.NextSlot lda ZPMemMgrSPtr
adc #S.MEM adc #S.MEM
sta ZPMemMgrSPtr sta ZPMemMgrSPtr
bcc .8 bcc .8
inc ZPMemMgrSPtr+1 inc ZPMemMgrSPtr+1
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
MEM.Init0 phx MEM.Init0 phx
@ -351,6 +353,7 @@ K.FreeMem.ERR >PUSHWI .1
*-------------------------------------- *--------------------------------------
K.FreeMem tay K.FreeMem tay
beq K.FreeMem.ERR Slot=0, reserved by Kernel beq K.FreeMem.ERR Slot=0, reserved by Kernel
cmp Mem.LastSlot cmp Mem.LastSlot
bcc .10 bcc .10

View File

@ -11,26 +11,8 @@ NEW
* ## RETURN VALUE * ## RETURN VALUE
* A = Child PSID * A = Child PSID
*\-------------------------------------- *\--------------------------------------
K.ExecL >PULLB PS.Flags K.ExecL clc
.HS B0 BCS
>LDYAI 256
jsr K.GetMem
bcs .99
stx .90+1
>STYA PS.ArgV
>PUSHYA
jsr K.Arg2ArgV cmdline on stack, push buffer
bcs .9
jsr PS.Exec
.9 php
pha
.90 lda #$ff SELF MODIFIED
jsr K.FreeMem
pla
plp
.99 rts
*/-------------------------------------- */--------------------------------------
* # ExecV * # ExecV
* ## C / CSH * ## C / CSH
@ -42,11 +24,58 @@ K.ExecL >PULLB PS.Flags
* ## RETURN VALUE * ## RETURN VALUE
* A = Child PSID * A = Child PSID
*\-------------------------------------- *\--------------------------------------
K.ExecV >PULLB PS.Flags K.ExecV sec
>PULLW PS.ArgV php
>PULLB PS.Flags
>LDYAI 256
jsr K.GetMem
bcs .99
stx .90+1
>STYA PS.ArgV
plp
bcc .2
>PULLW ZPPtr1 pull arg[] from stack
ldy #$FF copy to target buffer
.1 iny
lda (ZPPtr1),y
sta (PS.ArgV),y
bne .1
iny
lda (ZPPtr1),y
sta (PS.ArgV),y
bne .1
bra .8
.2 >PUSHW PS.ArgV
jsr K.Arg2ArgV cmdline on stack, push target buffer
bcs .9
.8 jsr PS.Exec
.9 php
pha
.90 lda #$ff SELF MODIFIED
jsr K.FreeMem
pla
plp
rts
.99 plp
sec
>RET 2
*--------------------------------------
PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
bcs .9 bcs .9
sta .8+1 sta .8+1
stz K.IOBuf If !=0 after PS.Load, it's a script stz K.IOBuf If !=0 after PS.Load, it's a script
@ -141,14 +170,10 @@ K.Fork jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
ldy #S.PS.hARGV ldy #S.PS.hARGV
sta (PS.NewPSPtr),y sta (PS.NewPSPtr),y
dey
lda (ZPPtr1),y S.PS.ARGC
sta (PS.NewPSPtr),y
ldy #S.PS.ARGC dey S.PS.ARGC
sta (PS.NewPSPtr),y
iny S.PS.hARGV lda (ZPPtr1),y
txa
sta (PS.NewPSPtr),y sta (PS.NewPSPtr),y
ldy #S.PS.A ldy #S.PS.A
@ -228,6 +253,7 @@ PS.CreateChild ldx #0
lda CORE.LastPSID lda CORE.LastPSID
ldy #S.PS.PID ldy #S.PS.PID
sta (PS.NewPSPtr),y sta (PS.NewPSPtr),y
lda #S.PS.F.NOHUP lda #S.PS.F.NOHUP
bit PS.Flags bit PS.Flags
beq .5 beq .5
@ -244,7 +270,7 @@ PS.CreateChild ldx #0
dey #S.PS.PPID dey #S.PS.PPID
sta (PS.NewPSPtr),y sta (PS.NewPSPtr),y
ldy #S.PS.hCWD copy hPREFIX... ldy #S.PS.hCWD copy hPREFIX...
lda (ZPPtr1),y lda (ZPPtr1),y
jsr K.GetMemPtr jsr K.GetMemPtr
@ -290,8 +316,10 @@ PS.CreateChild ldx #0
lda #S.PS.F.HOLD lda #S.PS.F.HOLD
bit PS.Flags bit PS.Flags
beq .8 beq .8
ora (ZPPtr1) ora (ZPPtr1)
sta (ZPPtr1) HOLD parent PS sta (ZPPtr1) HOLD parent PS
lda CORE.LastPSID lda CORE.LastPSID
ldy #S.PS.CPID ldy #S.PS.CPID
sta (ZPPtr1),y sta (ZPPtr1),y
@ -324,8 +352,8 @@ PS.Load ldy #$ff
>LDYA PS.ArgV found /, some path specified, no search >LDYA PS.ArgV found /, some path specified, no search
jsr PS.STAT.YA jsr PS.STAT.YA
bcc .6 REAL path in K.Buf256 bcc .6 REAL path in K.Buf256
.99 rts rts file not found
.2 >LDYA PS.ArgV .2 >LDYA PS.ArgV
@ -334,7 +362,7 @@ PS.Load ldy #$ff
>LDYA PS.ArgV >LDYA PS.ArgV
jsr PS.Find.CWD jsr PS.Find.CWD
bcs .99 bcs PS.RTS
.6 lda K.S.STAT+S.STAT.P.TYPE .6 lda K.S.STAT+S.STAT.P.TYPE
cmp #S.FI.T.BIN cmp #S.FI.T.BIN
@ -358,7 +386,7 @@ PS.Load ldy #$ff
>LDYAI PS.SHUTDOWN >LDYAI PS.SHUTDOWN
jsr PS.Find.PATH jsr PS.Find.PATH
bcs .99 bcs PS.RTS
.8 jmp PS.LoadBIN .8 jmp PS.LoadBIN
*-------------------------------------- *--------------------------------------
@ -389,6 +417,7 @@ PS.Load.SCRIPT jsr PS.Buf2IO
.3 lda K.IOBuf+128,y Check HEADER= "#!/" .3 lda K.IOBuf+128,y Check HEADER= "#!/"
cmp PS.Load.HEADER,y cmp PS.Load.HEADER,y
bne PS.Load.IBIN bne PS.Load.IBIN
iny iny
cpy #3 cpy #3
bne .3 bne .3
@ -404,14 +433,12 @@ PS.Load.SCRIPT jsr PS.Buf2IO
sta K.Buf256-1,x K.Buf256 = "${ROOT}BIN/SHELL\0" sta K.Buf256-1,x K.Buf256 = "${ROOT}BIN/SHELL\0"
.5 >LDYAI K.Buf256 .5 jsr PS.STAT.256
jsr PS.STAT.YA
bcs PS.RTS bcs PS.RTS
lda K.S.STAT+S.STAT.P.TYPE lda K.S.STAT+S.STAT.P.TYPE
cmp #S.FI.T.BIN cmp #S.FI.T.BIN
beq PS.LoadBIN bne PS.Load.IBIN
jmp PS.Load.IBIN
*-------------------------------------- *--------------------------------------
PS.LoadBIN jsr BIN.Load K.Buf256= "${ROOT}BIN/SH\0", K.IOBuf=/.../SCRIPT PS.LoadBIN jsr BIN.Load K.Buf256= "${ROOT}BIN/SH\0", K.IOBuf=/.../SCRIPT
bcs .9 bcs .9
@ -420,13 +447,13 @@ PS.LoadBIN jsr BIN.Load K.Buf256= "${ROOT}BIN/SH\0", K.IOBuf=/.../SCRIPT
phy phy
ldy #S.PS.ZP.CODE+1 ldy #S.PS.ZP.CODE+1
sta (PS.NewPSPtr),y save pCode HI... sta (PS.NewPSPtr),y save pCode HI...
dey dey
pla pla
sta (PS.NewPSPtr),y save pCode LO... sta (PS.NewPSPtr),y save pCode LO...
txa txa
ldy #S.PS.hCS ldy #S.PS.hCS
sta (PS.NewPSPtr),y save CS hMem in S.PS sta (PS.NewPSPtr),y save CS hMem in S.PS
* jsr MEM.GetMemByID * jsr MEM.GetMemByID
* jsr Mem.SetOwner Set Ownership * jsr Mem.SetOwner Set Ownership
@ -434,6 +461,7 @@ PS.LoadBIN jsr BIN.Load K.Buf256= "${ROOT}BIN/SH\0", K.IOBuf=/.../SCRIPT
ldy #H.BIN.F Get Bin S.PS.F ldy #H.BIN.F Get Bin S.PS.F
lda (ZPPtr4),y lda (ZPPtr4),y
beq .1 beq .1
ldy #S.PS.F update PS S.PS.F ldy #S.PS.F update PS S.PS.F
ora (PS.NewPSPtr),y ora (PS.NewPSPtr),y
sta (PS.NewPSPtr),y sta (PS.NewPSPtr),y
@ -443,7 +471,6 @@ PS.LoadBIN jsr BIN.Load K.Buf256= "${ROOT}BIN/SH\0", K.IOBuf=/.../SCRIPT
tax tax
dey dey
ora (ZPPtr4),y ora (ZPPtr4),y
beq .2 DS.SIZE=0... beq .2 DS.SIZE=0...
lda (ZPPtr4),y lda (ZPPtr4),y
@ -510,9 +537,7 @@ PS.LoadGetHeader
>SYSCALL2 fopen >SYSCALL2 fopen
bcs .9 bcs .9
sta .1+1 >PUSHA a = hFILE
>PUSHA
>PUSHWI K.IOBuf+128 >PUSHWI K.IOBuf+128
>PUSHWI 128 >PUSHWI 128
@ -520,7 +545,7 @@ PS.LoadGetHeader
php php
pha pha
.1 lda #$FF SELF MODIFIED lda IO.hFILE set by fopen / fread
>SYSCALL2 fclose >SYSCALL2 fclose
pla pla
plp plp
@ -590,16 +615,15 @@ PS.AddArgV ldy #$ff In both cases, remove ARGV[0]
ldy #S.PS.ARGC ldy #S.PS.ARGC
sta (PS.NewPSPtr),y sta (PS.NewPSPtr),y
>LDYA PS.ArgSize Add 1 for ending 0 lda PS.ArgSize
iny clc
bne .5 adc #2 Add 2 for ending \0\0
inc tay
.5 iny Add ONE MORE ?????!!!! lda PS.ArgSize+1
bne .51 adc #0
inc
jsr K.GetMem
.51 jsr K.GetMem
bcs .9 bcs .9
>STYA ZPPtr2 Target Buffer >STYA ZPPtr2 Target Buffer
@ -607,6 +631,8 @@ PS.AddArgV ldy #$ff In both cases, remove ARGV[0]
ldy #S.PS.hARGV ldy #S.PS.hARGV
sta (PS.NewPSPtr),y sta (PS.NewPSPtr),y
jsr Mem.SetOwner Set Ownership
>LDYAI K.Buf256 >LDYAI K.Buf256
jsr PS.AddYAToStrV jsr PS.AddYAToStrV
lda K.IOBuf lda K.IOBuf
@ -716,7 +742,9 @@ K.Kill.2 ldy #S.PS.hSession
lda (ZPPtr1),y lda (ZPPtr1),y
beq .12 beq .12
phx
jsr K.FreeMem jsr K.FreeMem
plx
.12 dex .12 dex
bpl .11 bpl .11
@ -738,7 +766,9 @@ K.Kill.2 ldy #S.PS.hSession
inx inx
cpx CORE.PSCount cpx CORE.PSCount
bne .2 bne .2
bra * bra *
.3 stz PS.Table.PID,x .3 stz PS.Table.PID,x
lda PS.TABLE.hPS,x lda PS.TABLE.hPS,x
stz PS.TABLE.hPS,x stz PS.TABLE.hPS,x
@ -957,9 +987,8 @@ PS.Find.CWD >STYA PS.Find.4+1 filename to find
>STYA PS.Find.2+1 >STYA PS.Find.2+1
stz PS.Find.98+1 stz PS.Find.98+1
bra PS.Find bra PS.Find
*--------------------------------------
PS.Find.LIB ldx #0 PS.Find.LIB ldx #0
.HS 2C BIT ABS .HS 2C BIT ABS
PS.Find.DRV ldx #2 PS.Find.DRV ldx #2
@ -1009,8 +1038,7 @@ PS.Find.4 lda $ffff,y Self Modified, Append Filename...
inx inx
bra PS.Find.4 bra PS.Find.4
PS.Find.5 >LDYAI K.Buf256 PS.Find.5 jsr PS.STAT.256
jsr PS.STAT.YA
bcs PS.Find.1 Failed...retry next path... bcs PS.Find.1 Failed...retry next path...
lda K.S.STAT+S.STAT.MODE+1 lda K.S.STAT+S.STAT.MODE+1
@ -1022,7 +1050,7 @@ PS.Find.5 >LDYAI K.Buf256
clc clc
PS.Find.RTS rts PS.Find.RTS rts
PS.Find.98 lda #$ff SELF MODIFIED : Discard Search list PS.Find.98 lda #$ff SELF MODIFIED : Discard Search list
beq .1 beq .1
jsr K.FreeMem jsr K.FreeMem
@ -1040,6 +1068,8 @@ PS.Buf2IO ldx #$ff
rts rts
*-------------------------------------- *--------------------------------------
PS.STAT.256 >LDYAI K.Buf256
PS.STAT.YA >PUSHYA PS.STAT.YA >PUSHYA
>PUSHWI K.S.STAT >PUSHWI K.S.STAT
>SYSCALL2 Stat >SYSCALL2 Stat

View File

@ -69,8 +69,8 @@ K.StrToUL clc Unsigned
jsr K.AToL.I jsr K.AToL.I
bcs K.StrToUL.rts bcs K.StrToUL.rts
* clc * clc
adc ZPPtr2 adc ZPPtr2
sta (ZPPtr1) sta (ZPPtr1)
lda #0 lda #0
@ -103,7 +103,7 @@ K.AToL.I jsr MATH.Dec2ACC32
dex dex
bpl .3 bpl .3
tya Y = A = Count processed tya Y = A = Count processed
* clc * clc
.9 .9
rts rts
@ -159,8 +159,8 @@ K.realpath ldy #3
>STYA ZPPtr1 >STYA ZPPtr1
stx .99+1 save expanded buffer hMem stx .99+1 save expanded buffer hMem
>PULLW K.realpath.DST resolvedpath >PULLW K.realpath.DST resolved path
inc pStack discard path inc pStack discard path
inc pStack inc pStack
@ -200,7 +200,7 @@ K.realpath ldy #3
* X=LEN, K.Buf256 = /dir1/./../file(/)\0 * X=LEN, K.Buf256 = /dir1/./../file(/)\0
*-------------------------------------- *--------------------------------------
ldx #0 will skip leading / ldx #0 will skip leading /
.5 ldy #0 reset dot counter=0 .5 ldy #0 reset dot counter=0
.6 inx .6 inx
@ -228,7 +228,7 @@ K.realpath ldy #3
bra .80 bra .80
.9 dey "/.." ? .9 dey "/.." ?
bne .99 "/..." ??!!...syntax error bne .99 "/..." ??!!...syntax error
dex dex
dex dex
@ -239,7 +239,7 @@ K.realpath ldy #3
jsr K.RealPath.RemoveAtX remove "/.." jsr K.RealPath.RemoveAtX remove "/.."
.10 dex .10 dex
lda K.Buf256,x go to "/dir" lda K.Buf256,x go to "/dir"
cmp #'/' cmp #'/'
bne .10 bne .10
@ -257,11 +257,11 @@ K.realpath ldy #3
>LDYAI MLI.MAXPATH+1 >LDYAI MLI.MAXPATH+1
jsr K.getmem jsr K.getmem
bcs .90 bcs .90
.85 >STYA ZPPtr1 .85 >STYA ZPPtr1
ldy #$ff ldy #$ff
.83 iny .83 iny
lda K.Buf256,y lda K.Buf256,y
sta (ZPPtr1),y sta (ZPPtr1),y
@ -315,8 +315,11 @@ K.RealPath.RemoveAtX
* `>PUSHW expanded` * `>PUSHW expanded`
* `>SYSCALL expand` * `>SYSCALL expand`
* ## RETURN VALUE * ## RETURN VALUE
* Y,A = PTR to Expanded String * if expanded == null
* X = hMem to Expanded String (C-String) * Y,A = PTR to Expanded String
* X = hMem to Expanded String
* if expanded != null
* Y,A = strlen
*\-------------------------------------- *\--------------------------------------
K.Expand ldy #2 K.Expand ldy #2
lda (pStack),y lda (pStack),y
@ -324,12 +327,12 @@ K.Expand ldy #2
iny iny
lda (pStack),y lda (pStack),y
ply ply
jsr K.strdup jsr K.strdup
bcc .1 bcc .1
jmp .9 jmp .9
.1 phx Save temp string... .1 phx Save temp string...
>STYA TXTPTR >STYA TXTPTR
@ -341,7 +344,7 @@ K.Expand ldy #2
beq .80 beq .80
jsr SHARED.TXTPTRn jsr SHARED.TXTPTRn
.11 cmp #''' .11 cmp #'''
bne .21 bne .21
@ -364,8 +367,8 @@ K.Expand ldy #2
lda #'$' End of string, output $ lda #'$' End of string, output $
bra .22 bra .22
.24 .24
* sec * sec
ror ENV.bExp Toggle Expanded flag ror ENV.bExp Toggle Expanded flag
stz ENV.VarEndChar stz ENV.VarEndChar
@ -382,7 +385,7 @@ K.Expand ldy #2
.35 jsr SHARED.TXTPTRn skip $x .35 jsr SHARED.TXTPTRn skip $x
bra .10 bra .10
.40 jsr ENV.ExpandStrVar .40 jsr ENV.ExpandStrVar
bcc .70 bcc .70
@ -395,14 +398,14 @@ K.Expand ldy #2
bcs .70 bcs .70
ldx ENV.BufPtr ldx ENV.BufPtr
.51 lda K.Buf256,x .51 lda K.Buf256,x
beq .52 beq .52
inx inx
bra .51 bra .51
.52 stx ENV.BufPtr .52 stx ENV.BufPtr
.70 lda (TXTPTR) .70 lda (TXTPTR)
beq .72 beq .72
@ -411,7 +414,7 @@ K.Expand ldy #2
jsr SHARED.TXTPTRn jsr SHARED.TXTPTRn
bra .70 bra .70
.72 lda ENV.VarEndChar .72 lda ENV.VarEndChar
bne .35 skip "}" and loop bne .35 skip "}" and loop
bra .10 bra .10
@ -422,14 +425,35 @@ K.Expand ldy #2
pla discard temp string pla discard temp string
jsr K.FreeMem jsr K.FreeMem
>LDYAI K.Buf256 dup in case of '' processing
jsr K.strdup
bcs .9
bit ENV.bExp Did we expand something ? bit ENV.bExp Did we expand something ?
bpl .9 bpl .81
jsr STRING.DupBuf256
bcs .9
jmp .1 jmp .1
.81 ldy #1
lda (pStack),y
beq .83
sta ZPPtr1+1
lda (pStack)
sta ZPPtr1
ldy #$ff
.82 iny
lda K.Buf256,y
sta (ZPPtr1),y
bne .82
* Y = len, A = 0
bra .9
.83 jsr STRING.DupBuf256
.9 >RET 4 .9 >RET 4
*-------------------------------------- *--------------------------------------
ENV.SysVar jsr ZP.IsDigit $0 ... $9 ? ENV.SysVar jsr ZP.IsDigit $0 ... $9 ?
@ -451,7 +475,7 @@ ENV.SysVar jsr ZP.IsDigit $0 ... $9 ?
beq .3 beq .3
dex dex
bpl .2 bpl .2
sec sec
rts rts
@ -464,14 +488,14 @@ ENV.SysVar jsr ZP.IsDigit $0 ... $9 ?
ENV.SysVarsNum jsr MATH.A2STR10NP ENV.SysVarsNum jsr MATH.A2STR10NP
ldy #0 ldy #0
.1 lda FOUTBuf,y .1 lda FOUTBuf,y
beq ENV.SysVarsNum.8 beq ENV.SysVarsNum.8
iny iny
jsr ENV.AddAToBuf jsr ENV.AddAToBuf
bra .1 bra .1
ENV.SysVarsNum.8 ENV.SysVarsNum.8
clc clc
rts rts
@ -544,15 +568,15 @@ ENV.AddYAToBuf >STYA ZPPtr3
*-------------------------------------- *--------------------------------------
ENV.AddP3ToBuf ldx ENV.BufPtr ENV.AddP3ToBuf ldx ENV.BufPtr
ldy #$ff ldy #$ff
dex dex
.1 iny .1 iny
inx inx
lda (ZPPtr3),y lda (ZPPtr3),y
sta K.Buf256,x sta K.Buf256,x
bne .1 bne .1
stx ENV.BufPtr stx ENV.BufPtr
rts rts
*-------------------------------------- *--------------------------------------
@ -562,7 +586,7 @@ ENV.AddAToBuf ldx ENV.BufPtr
rts rts
*-------------------------------------- *--------------------------------------
ENV.NextEnvP3 jsr ENV.GetP3LenY ENV.NextEnvP3 jsr ENV.GetP3LenY
tya tya
sec sec
adc ZPPtr3 adc ZPPtr3

View File

@ -91,6 +91,9 @@ K.StrCpy clc
* CS : error * CS : error
* A = SYS error code * A = SYS error code
*\-------------------------------------- *\--------------------------------------
STRING.DupBuf256
>LDYAI K.Buf256
K.StrDup >STYA .1+1 K.StrDup >STYA .1+1
>STYA .4+1 >STYA .4+1