mirror of https://github.com/A2osX/A2osX.git
Kernel 0.94
This commit is contained in:
parent
d1d514c00d
commit
4dbbfb31cb
Binary file not shown.
|
@ -8,15 +8,21 @@ NEW
|
|||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/KERNEL.I
|
||||
*--------------------------------------
|
||||
PAGELEN .EQ 22
|
||||
.INB INC/IO.I
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR ZPBIN
|
||||
ZS.START
|
||||
ZPPTR1 .BS 2
|
||||
ZPPTR2 .BS 2
|
||||
ZPPSPtr .BS 2
|
||||
MEM.COUNT .BS 1
|
||||
USED.COUNT .BS 1
|
||||
bSTOP .BS 1
|
||||
|
||||
ZPReadAux sta SETREADAUX
|
||||
lda (ZPPTR1),y
|
||||
sta CLRREADAUX
|
||||
rts
|
||||
ZS.END
|
||||
.ED
|
||||
*--------------------------------------
|
||||
|
@ -43,6 +49,7 @@ CS.START cld
|
|||
L.MSG0 .DA MSG0
|
||||
L.MSG1.INV .DA MSG1.INV
|
||||
L.MSG1 .DA MSG1
|
||||
L.MSG1X .DA MSG1X
|
||||
L.MSG1.BIN .DA MSG1.BIN
|
||||
L.MSG1.STR .DA MSG1.STR
|
||||
L.MSG1.HEX .DA MSG1.HEX
|
||||
|
@ -51,33 +58,38 @@ L.MSG3 .DA MSG3
|
|||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT clc
|
||||
rts
|
||||
CS.INIT.RTS rts
|
||||
*--------------------------------------
|
||||
CS.RUN >LEA.G MemStat
|
||||
CS.RUN ldx #ZPCodeLen-1
|
||||
|
||||
.1 lda ZPCode,x
|
||||
sta ZPReadAux,x
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
>LEA.G MemStat
|
||||
>SYSCALL GetMemStat
|
||||
|
||||
>LDYAI Mem.Table+S.MEM
|
||||
>STYA ZPPTR1
|
||||
jsr CS.RUN.INIT
|
||||
|
||||
>LDYA L.MSG0
|
||||
>SYSCALL PutS
|
||||
>INC.G MEM.COUNT skip slot 0
|
||||
|
||||
CS.RUN.LOOP >LDA.G bSTOP
|
||||
CS.RUN.LOOP inc MEM.COUNT skip slot 0
|
||||
|
||||
lda bSTOP
|
||||
beq .1
|
||||
|
||||
.10 >SYSCALL GetChar
|
||||
cmp #3 Ctrl-C ?
|
||||
beq CS.RUN.LOOP.RTS
|
||||
|
||||
cmp #C.SPACE
|
||||
bne .10
|
||||
bcs CS.INIT.RTS
|
||||
|
||||
>STZ.G bSTOP
|
||||
cmp #3 Ctrl-C
|
||||
beq CS.INIT.RTS
|
||||
|
||||
cmp #$13 Ctrl-S
|
||||
|
||||
stz bSTOP
|
||||
.1 lda (ZPPTR1)
|
||||
bpl .2
|
||||
|
||||
>INC.G USED.COUNT
|
||||
inc USED.COUNT
|
||||
|
||||
.2 jsr CS.RUN.PRINTMEM
|
||||
lda ZPPTR1
|
||||
|
@ -86,19 +98,79 @@ CS.RUN.LOOP >LDA.G bSTOP
|
|||
sta ZPPTR1
|
||||
bcc .3
|
||||
inc ZPPTR1+1
|
||||
.3 >INC.G MEM.COUNT
|
||||
|
||||
.3 lda MEM.COUNT
|
||||
>CMP.G MemStat+S.MSTAT.MLast
|
||||
beq CS.RUN.FOOTER
|
||||
bra CS.RUN.LOOP
|
||||
bne CS.RUN.LOOP
|
||||
|
||||
CS.RUN.LOOP.RTS rts
|
||||
jsr CS.RUN.MSTAT
|
||||
|
||||
jsr CS.RUN.INIT
|
||||
|
||||
CS.RUN.LOOPX inc MEM.COUNT skip slot 0
|
||||
|
||||
lda bSTOP
|
||||
beq .1
|
||||
|
||||
CS.RUN.FOOTER >SYSCALL GetChar
|
||||
bcs CS.RUN.LOOP.RTS
|
||||
.10 >SYSCALL GetChar
|
||||
bcs CS.INIT.RTS
|
||||
|
||||
>PUSHW L.MSG2
|
||||
>PUSHB.G USED.COUNT
|
||||
>PUSHB.G MEM.COUNT
|
||||
cmp #3 Ctrl-C ?
|
||||
beq CS.INIT.RTS
|
||||
|
||||
cmp #$13 Ctrl-S
|
||||
bne .10
|
||||
|
||||
stz bSTOP
|
||||
|
||||
.1 ldy #S.MEM.F
|
||||
jsr ZPReadAux
|
||||
bpl .2
|
||||
|
||||
inc USED.COUNT
|
||||
|
||||
.2 jsr CS.RUN.PRINTMEMX
|
||||
|
||||
lda ZPPTR1
|
||||
clc
|
||||
adc #S.MEM
|
||||
sta ZPPTR1
|
||||
bcc .3
|
||||
inc ZPPTR1+1
|
||||
|
||||
.3 lda MEM.COUNT
|
||||
>CMP.G MemStat+S.MSTAT.XLast
|
||||
bne CS.RUN.LOOPX
|
||||
|
||||
CS.RUN.XSTAT >PUSHW L.MSG2
|
||||
>PUSHB USED.COUNT
|
||||
>PUSHB MEM.COUNT
|
||||
>PUSHBI 2
|
||||
>SYSCALL PrintF
|
||||
|
||||
>PUSHW L.MSG3
|
||||
>PUSHW.G MemStat+S.MSTAT.XH
|
||||
>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
|
||||
sec
|
||||
rts
|
||||
|
||||
*--------------------------------------
|
||||
CS.RUN.MSTAT >PUSHW L.MSG2
|
||||
>PUSHB USED.COUNT
|
||||
>PUSHB MEM.COUNT
|
||||
>PUSHBI 2
|
||||
>SYSCALL PrintF
|
||||
|
||||
|
@ -121,9 +193,19 @@ CS.RUN.FOOTER >SYSCALL GetChar
|
|||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.INIT >LDYAI Mem.Table+S.MEM skip slot 0
|
||||
>STYA ZPPTR1
|
||||
|
||||
>LDYA L.MSG0
|
||||
>SYSCALL PutS
|
||||
|
||||
stz MEM.COUNT
|
||||
stz USED.COUNT
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.PRINTMEM >PUSHW L.MSG1
|
||||
|
||||
>PUSHB.G MEM.COUNT
|
||||
>PUSHB MEM.COUNT
|
||||
|
||||
lda (ZPPTR1) Get flags
|
||||
ldy #MEM.FLAGS+7
|
||||
|
@ -146,6 +228,7 @@ CS.RUN.PRINTMEM >PUSHW L.MSG1
|
|||
|
||||
ldy #S.MEM.OWNERPID
|
||||
lda (ZPPTR1),y
|
||||
tax
|
||||
>PUSHA
|
||||
|
||||
ldy #S.MEM.REFCNT
|
||||
|
@ -169,8 +252,7 @@ CS.RUN.PRINTMEM >PUSHW L.MSG1
|
|||
lda (ZPPTR1) Get flags
|
||||
bpl .12
|
||||
|
||||
ldy #S.MEM.OWNERPID
|
||||
lda (ZPPTR1),y
|
||||
txa
|
||||
jsr CS.RUN.CHECKPS
|
||||
bcc .12
|
||||
|
||||
|
@ -193,12 +275,17 @@ CS.RUN.PRINTMEM.DATA
|
|||
iny
|
||||
lda (ZPPTR1),y
|
||||
sta ZPPTR2+1
|
||||
ldy #$0
|
||||
|
||||
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
|
||||
|
||||
iny
|
||||
bne .1
|
||||
|
||||
|
@ -210,7 +297,8 @@ CS.RUN.PRINTMEM.DATA
|
|||
>PUSHW ZPPTR2 String
|
||||
>PUSHBI 3
|
||||
|
||||
bra CS.RUN.PRINTMEM.OUT
|
||||
>SYSCALL PrintF
|
||||
rts
|
||||
|
||||
.2 >PUSHW L.MSG1.HEX
|
||||
|
||||
|
@ -223,7 +311,9 @@ CS.RUN.PRINTMEM.DATA
|
|||
|
||||
>PUSHBI 16
|
||||
|
||||
bra CS.RUN.PRINTMEM.OUT
|
||||
>SYSCALL PrintF
|
||||
rts
|
||||
|
||||
CS.RUN.PRINTMEM.BIN
|
||||
>PUSHW L.MSG1.BIN
|
||||
|
||||
|
@ -232,25 +322,83 @@ CS.RUN.PRINTMEM.BIN
|
|||
>SYSCALL GetMemPtr
|
||||
>PUSHYA
|
||||
>PUSHBI 2
|
||||
|
||||
CS.RUN.PRINTMEM.OUT
|
||||
>SYSCALL PrintF
|
||||
>INC.G LINE.COUNT
|
||||
cmp #PAGELEN
|
||||
beq .9
|
||||
rts
|
||||
.9 lda #$FF
|
||||
>STA.G bSTOP
|
||||
inc
|
||||
>STA.G LINE.COUNT
|
||||
*--------------------------------------
|
||||
CS.RUN.PRINTMEMX
|
||||
>PUSHW L.MSG1X
|
||||
|
||||
>PUSHB MEM.COUNT
|
||||
|
||||
ldy #S.MEM.F Get flags
|
||||
jsr ZPReadAux
|
||||
|
||||
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
|
||||
|
||||
ldy #S.MEM.OWNERPID
|
||||
jsr ZPReadAux
|
||||
tax
|
||||
>PUSHA
|
||||
|
||||
ldy #S.MEM.REFCNT
|
||||
jsr ZPReadAux
|
||||
>PUSHA
|
||||
|
||||
ldy #S.MEM.PTR+1
|
||||
jsr ZPReadAux
|
||||
>PUSHA
|
||||
dey
|
||||
jsr ZPReadAux
|
||||
>PUSHA
|
||||
|
||||
ldy #S.MEM.LEN+1
|
||||
jsr ZPReadAux
|
||||
>PUSHA
|
||||
dey
|
||||
jsr ZPReadAux
|
||||
>PUSHA
|
||||
|
||||
ldy #S.MEM.F
|
||||
jsr ZPReadAux Get flags
|
||||
bpl .12
|
||||
|
||||
txa
|
||||
jsr CS.RUN.CHECKPS
|
||||
bcc .12
|
||||
|
||||
>PUSHW L.MSG1.INV
|
||||
>PUSHBI 0
|
||||
>SYSCALL PrintF
|
||||
|
||||
.12 >PUSHBI 9
|
||||
>SYSCALL PrintF
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.CHECKPS ldx #0
|
||||
|
||||
.1 cmp PS.Table.PID,x
|
||||
beq .8
|
||||
|
||||
inx
|
||||
cpx K.PS.MAX
|
||||
bne .1
|
||||
|
||||
rts CS
|
||||
|
||||
.8 clc
|
||||
|
@ -263,9 +411,16 @@ CS.QUIT clc
|
|||
rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
ZPCode sta SETREADAUX
|
||||
lda (ZPPTR1),y
|
||||
sta CLRREADAUX
|
||||
rts
|
||||
ZPCodeLen .EQ *-ZPCode
|
||||
*--------------------------------------
|
||||
MSG0 .AZ "hMem Flags PID REF PTR LEN BINPATH/DATA"
|
||||
MSG1.INV .AZ "\e[7m"
|
||||
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.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"
|
||||
|
@ -273,16 +428,12 @@ MSG2 .AZ "\r\nAllocated hMem:%d, Total:%d\r\n"
|
|||
MSG3 .AS "High Memory: $%H\r\n"
|
||||
.AS "Free ULimit: $%H\r\n"
|
||||
.AS "Low Memory: $%H\r\n"
|
||||
.AZ "\r\nFree Memory: %D Bytes.\r\n"
|
||||
.AZ "\r\nFree Memory: %D Bytes.\r\n\r\n"
|
||||
MSG.FLAGS .AS "UZXAfcds"
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR 0
|
||||
DS.START
|
||||
LINE.COUNT .BS 1
|
||||
MEM.COUNT .BS 1
|
||||
USED.COUNT .BS 1
|
||||
bSTOP .BS 1
|
||||
MemStat .BS S.MSTAT
|
||||
MEM.FLAGS .BS 9
|
||||
DS.END
|
||||
|
|
|
@ -220,11 +220,25 @@ MEM.GetMem.YAX stx MEM.ReqFlags
|
|||
inc Mark this slot used by one process
|
||||
ldy #S.MEM.REFCNT
|
||||
sta (ZPMemMgrSPtr),y
|
||||
|
||||
lda RDREADAUX
|
||||
pha
|
||||
|
||||
sta CLRREADAUX
|
||||
|
||||
ldy #S.PS.PID
|
||||
lda (pPS),y
|
||||
|
||||
ldy #S.MEM.OWNERPID
|
||||
sta (ZPMemMgrSPtr),y
|
||||
clc
|
||||
|
||||
pla
|
||||
bpl .80
|
||||
|
||||
sta SETREADAUX
|
||||
|
||||
.80 clc
|
||||
|
||||
jmp MEM.GetMEMPTR
|
||||
* A = HI PTR,Y = LO PTR,X = Current hMem
|
||||
.9 rts
|
||||
|
@ -336,7 +350,7 @@ K.FreeMem.ERR >PUSHWI K.FreeMem.MSG
|
|||
.1 >SYSCALL2 printf
|
||||
|
||||
lda #E.INVH
|
||||
* >DEBUG
|
||||
>DEBUG
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -366,6 +380,7 @@ K.FreeMem tay
|
|||
* bpl * ***MUST BE ALLOCATED***
|
||||
lda #0 mark BINPATH slot as free
|
||||
sta (ZPMemMgrSPtr)
|
||||
|
||||
.1 lda Mem.LastSlot
|
||||
beq .8
|
||||
|
||||
|
@ -390,6 +405,7 @@ K.FreeMem tay
|
|||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.80 >LDYA Mem.HiMem
|
||||
>STYA Mem.Free
|
||||
clc
|
||||
|
|
|
@ -384,7 +384,7 @@ PS.LoadBIN jsr BIN.Load K.Buf256= "${ROOT}BIN/SH\0", K.IOBuf=/.../SCRIPT
|
|||
ldy #S.PS.hSS
|
||||
sta (PS.NewPSPtr),y save SS hMem in S.PS
|
||||
clc Potentially CS from ADC (ZPPtr4),y
|
||||
jmp Mem.SetOwner Set Ownership
|
||||
jmp Mem.SetOwner Set Ownership
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
PS.LoadGetHeader
|
||||
|
|
|
@ -445,10 +445,12 @@ SLIST.AddBlockByte
|
|||
sta (ZPSListDBlkPtr),y
|
||||
inc SLIST.BytePtr
|
||||
bne .8
|
||||
|
||||
phx
|
||||
>LDYAI 256
|
||||
jsr K.GetMem
|
||||
bcs .9
|
||||
|
||||
>STYA ZPSListDBlkPtr
|
||||
txa
|
||||
|
||||
|
@ -458,6 +460,7 @@ SLIST.AddBlockByte
|
|||
|
||||
* stz SLIST.BytePtr
|
||||
plx
|
||||
|
||||
.8 ply
|
||||
clc
|
||||
rts
|
||||
|
|
|
@ -137,6 +137,7 @@ K.FPutS jsr PFT.CheckNodeA set IO.hFD
|
|||
* ldy #0
|
||||
dey
|
||||
ldx #0
|
||||
|
||||
.1 lda (ZPPtr2),y
|
||||
beq .2
|
||||
iny
|
||||
|
@ -153,8 +154,8 @@ K.FPutS jsr PFT.CheckNodeA set IO.hFD
|
|||
jsr UNISTD.Write
|
||||
bcc K.PutS.RET2
|
||||
tay
|
||||
bpl K.PutS.RET2 IO Erorr
|
||||
inc 0 = BLOCKING
|
||||
bpl K.PutS.RET2 IO Error
|
||||
inc FF-> 0 = BLOCKING
|
||||
* sec
|
||||
K.FPutS.RTS rts
|
||||
*/--------------------------------------
|
||||
|
@ -428,7 +429,7 @@ K.FWrite jsr PFT.CheckNodeA
|
|||
bcc K.FWrite.RTS
|
||||
|
||||
K.FWrite.9 tay
|
||||
bpl K.FWrite.RTS
|
||||
bpl K.FWrite.RTS IO Error
|
||||
|
||||
dec pStack FF = NODATA
|
||||
dec pStack
|
||||
|
|
|
@ -87,10 +87,11 @@ K.PrintF ldy #S.PS.hStdOut
|
|||
K.FPrintf clc
|
||||
jsr STDIO.GetFormat
|
||||
|
||||
iny
|
||||
lda (pStack),y hFILE
|
||||
sta PrintF.hFILE
|
||||
|
||||
iny
|
||||
|
||||
bra K.PrintF.1
|
||||
*--------------------------------------
|
||||
K.SPrintf stz PrintF.hFILE
|
||||
|
@ -174,6 +175,7 @@ K.PrintF.1 sty STDIO.Exit.Cnt+1 Total bytes to POP
|
|||
|
||||
jsr MATH.Hex2ACC32
|
||||
bcs .99
|
||||
|
||||
jsr SHARED.AddYToPtr2
|
||||
.14 lda ACC32
|
||||
bra .20
|
||||
|
@ -182,10 +184,13 @@ K.PrintF.1 sty STDIO.Exit.Cnt+1 Total bytes to POP
|
|||
.20 jsr PrintF.COut
|
||||
bcc .11
|
||||
*--------------------------------------
|
||||
.99 jmp STDIO.Exit
|
||||
.99 lda #E.BADARG
|
||||
sec
|
||||
jmp STDIO.Exit
|
||||
*--------------------------------------
|
||||
.8 ldx PrintF.hFILE
|
||||
beq .80 Writing to buffer, append \0
|
||||
|
||||
>PUSHW PrintF.Cnt Writing to File/dev...
|
||||
>PUSHWI K.IOBuf
|
||||
|
||||
|
@ -194,16 +199,16 @@ K.PrintF.1 sty STDIO.Exit.Cnt+1 Total bytes to POP
|
|||
bcc .81
|
||||
|
||||
tay
|
||||
bne .99
|
||||
|
||||
bne .9
|
||||
|
||||
>RET 4 0=BLOCKING
|
||||
|
||||
.80 ldy PrintF.Cnt A=0, Writing to buffer, append \0
|
||||
sta (pIOBuf),y
|
||||
|
||||
clc
|
||||
.81 >LDYA PrintF.Cnt
|
||||
* clc
|
||||
jmp STDIO.Exit
|
||||
.9 jmp STDIO.Exit
|
||||
*--------------------------------------
|
||||
PrintFTBL1 .AS "bdDuefhHiILsS"
|
||||
PrintFTBL1.Cnt .EQ *-PrintFTBL1
|
||||
|
@ -453,10 +458,11 @@ K.ScanF ldy #S.PS.hStdIn
|
|||
K.FScanF clc
|
||||
jsr STDIO.GetFormat
|
||||
|
||||
iny
|
||||
lda (pStack),y hFILE
|
||||
sta PrintF.hFILE
|
||||
|
||||
iny
|
||||
|
||||
bra K.SScanF.1
|
||||
*--------------------------------------
|
||||
K.SScanF stz PrintF.hFILE
|
||||
|
@ -584,23 +590,28 @@ K.SScanF.S ldy #$ff
|
|||
K.SScanF.Fwd jmp SHARED.AddYToPtr1 Y=char count parsed
|
||||
*--------------------------------------
|
||||
STDIO.GetFormat lda (pStack) Bytecount
|
||||
inc
|
||||
|
||||
tay
|
||||
sty STDIO.GetStackByte.ptr+1
|
||||
|
||||
iny
|
||||
|
||||
lda (pStack),y format LO
|
||||
sta ZPPtr2
|
||||
iny
|
||||
lda (pStack),y format HI
|
||||
sta ZPPtr2+1
|
||||
iny
|
||||
|
||||
bcc .1
|
||||
|
||||
iny
|
||||
lda (pStack),y str LO
|
||||
sta pIOBuf
|
||||
iny
|
||||
lda (pStack),y str HI
|
||||
sta pIOBuf+1
|
||||
iny
|
||||
|
||||
rts
|
||||
|
||||
.1 lda #K.IOBuf
|
||||
|
@ -611,32 +622,33 @@ STDIO.GetFormat lda (pStack) Bytecount
|
|||
rts
|
||||
*--------------------------------------
|
||||
STDIO.GetStackByte
|
||||
lda (pStack)
|
||||
phy
|
||||
STDIO.GetStackByte.ptr
|
||||
ldy #$ff SELF MODIFIED
|
||||
beq .9
|
||||
|
||||
phy
|
||||
|
||||
tay
|
||||
dec
|
||||
sta (pStack)
|
||||
lda (pStack),y
|
||||
|
||||
dey
|
||||
sty STDIO.GetStackByte.ptr+1
|
||||
|
||||
ply
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #E.STACK
|
||||
|
||||
ply
|
||||
sec
|
||||
STDIO.GetStackByte.RTS
|
||||
rts
|
||||
*--------------------------------------
|
||||
STDIO.Exit php
|
||||
pha
|
||||
|
||||
lda pStack
|
||||
sec +Bytecount byte
|
||||
clc
|
||||
STDIO.Exit.Cnt adc #$ff SELF MODIFIED
|
||||
sta pStack
|
||||
|
||||
pla
|
||||
plp
|
||||
rts
|
||||
|
|
Loading…
Reference in New Issue