mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-23 04:29:01 +00:00
Kernel 0.92
This commit is contained in:
parent
d9a3b4eb87
commit
fe897c3257
@ -62,7 +62,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG
|
||||
|
||||
.1 ldy #S.PS.ARGC
|
||||
lda (pPs),y
|
||||
cmp #2
|
||||
cmp #1
|
||||
bcs .2
|
||||
jmp CS.RUN.DUMP
|
||||
|
||||
@ -81,7 +81,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG
|
||||
|
||||
ldy #S.PS.ARGC
|
||||
lda (pPs),y
|
||||
cmp #2
|
||||
cmp #1
|
||||
beq CS.RUN.QUERY
|
||||
|
||||
cmp #3
|
||||
|
@ -63,7 +63,6 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ?
|
||||
|
||||
CS.RUN.IPOK ldy #S.PS.ARGC
|
||||
lda (pPs),y
|
||||
cmp #1
|
||||
bne .1
|
||||
jmp CS.RUN.DUMP
|
||||
|
||||
|
@ -42,8 +42,7 @@ L.MSG.ERR .DA MSG.ERR
|
||||
*--------------------------------------
|
||||
CS.INIT ldy #S.PS.ARGC
|
||||
lda (pPs),y
|
||||
cmp #2
|
||||
bcc .90
|
||||
beq .90
|
||||
|
||||
.1 >INC.G ArgIndex
|
||||
|
||||
|
@ -49,7 +49,6 @@ CS.INIT >LDYA L.LIBCRYPT
|
||||
*--------------------------------------
|
||||
CS.RUN ldy #S.PS.ARGC
|
||||
lda (pPs),y
|
||||
dec
|
||||
beq .99
|
||||
|
||||
.1 >INC.G ArgIndex
|
||||
|
@ -46,7 +46,7 @@ CS.INIT clc
|
||||
*--------------------------------------
|
||||
CS.RUN ldy #S.PS.ARGC
|
||||
lda (pPs),y
|
||||
cmp #2
|
||||
cmp #1
|
||||
bcs CS.RUN.SET
|
||||
|
||||
CS.RUN.READ jsr NSC.Init
|
||||
|
@ -54,7 +54,7 @@ CL.CHARIN tax
|
||||
|
||||
.1 cpx #$7f
|
||||
bne .2
|
||||
jmp CL.DEL
|
||||
jmp CL.SUPPR
|
||||
|
||||
.2 jmp CL.Insert
|
||||
|
||||
@ -68,12 +68,12 @@ CL.CHARIN.CTRL cpx #C.CR
|
||||
>LDYA L.MSG.ECHOCRLF
|
||||
>SYSCALL printf
|
||||
|
||||
>LDA.G CL.Ptr
|
||||
tay
|
||||
lda #0
|
||||
sta (ZPCLBuf),y
|
||||
tya
|
||||
>STA.G CL.Len
|
||||
* >LDA.G CL.Ptr
|
||||
* tay
|
||||
* lda #0
|
||||
* sta (ZPCLBuf),y
|
||||
* tya
|
||||
* >STA.G CL.Len
|
||||
|
||||
lda #$ff
|
||||
>STA.G CL.bExec
|
||||
@ -96,7 +96,7 @@ CL.CHARIN.CTRL cpx #C.CR
|
||||
.12 cpx #24 Ctrl-X
|
||||
bne .13
|
||||
|
||||
jmp CL.SUPPR
|
||||
jmp CL.DEL
|
||||
|
||||
.13 clc
|
||||
rts
|
||||
@ -478,9 +478,9 @@ CL.CheckCmd.RTS
|
||||
*--------------------------------------
|
||||
* TXT : add "/PATH/SHELL" "/PATH/CMD"
|
||||
*--------------------------------------
|
||||
CL.CheckCmd.TXT >LDYA L.SHELL
|
||||
jsr CL.AddYAToArgV
|
||||
bcs CL.CheckCmd.90
|
||||
*CL.CheckCmd.TXT >LDYA L.SHELL
|
||||
* jsr CL.AddYAToArgV
|
||||
* bcs CL.CheckCmd.90
|
||||
*--------------------------------------
|
||||
* BIN : add "/PATH/CMD"
|
||||
*--------------------------------------
|
||||
|
@ -96,12 +96,10 @@ L.MSG.BATCHERR .DA MSG.BATCHERR
|
||||
L.MSG.ERROR .DA MSG.ERROR
|
||||
L.MSG.PRINTENV .DA MSG.PRINTENV
|
||||
L.MSG.PID .DA MSG.PID
|
||||
L.SHELL .DA SHELL
|
||||
L.ENV.ROOT .DA ENV.ROOT
|
||||
L.ENV.PATH .DA ENV.PATH
|
||||
L.ENV.PWD .DA ENV.PWD
|
||||
L.ENV.PS1 .DA ENV.PS1
|
||||
L.ENV.SHELL .DA ENV.SHELL
|
||||
L.ENV.HOME .DA ENV.HOME
|
||||
L.FMT.DATE .DA FMT.DATE
|
||||
L.FMT.TIME .DA FMT.TIME
|
||||
@ -173,12 +171,6 @@ CS.RUN jsr CMD.Init
|
||||
lda (pPS),y
|
||||
beq .1 no arg, continue starting interactive
|
||||
|
||||
>PUSHW L.ENV.SHELL
|
||||
lda #0
|
||||
>SYSCALL ArgV
|
||||
>SYSCALL setenv
|
||||
bcs CS.INIT.RTS
|
||||
|
||||
lda #1
|
||||
>SYSCALL ArgV
|
||||
|
||||
@ -566,13 +558,11 @@ MSG.PID .AZ "PID=%d\r\n"
|
||||
FMT.DATE .AZ "%A (%w), %B %d %Y"
|
||||
FMT.TIME .AZ "%H:%M:%S (%I:%M:%S%p)"
|
||||
*--------------------------------------
|
||||
SHELL .AZ "${ROOT}SBIN/SHELL"
|
||||
ENV.ROOT .AZ "ROOT"
|
||||
ENV.PATH .AZ "PATH"
|
||||
ENV.PWD .AZ "PWD"
|
||||
ENV.PS1 .AZ "PS1"
|
||||
ENV.HOME .AZ "HOME"
|
||||
ENV.SHELL .AZ "SHELL"
|
||||
*--------------------------------------
|
||||
* https://www.tldp.org/LDP/abs/html/io-redirection.html
|
||||
*--------------------------------------
|
||||
|
@ -73,7 +73,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ?
|
||||
|
||||
CS.RUN.IPOK ldy #S.PS.ARGC
|
||||
lda (pPs),y
|
||||
cmp #2
|
||||
cmp #1
|
||||
bcc .9
|
||||
|
||||
ldy #S.IPCFG.IP+3
|
||||
|
@ -47,7 +47,7 @@ CS.INIT clc
|
||||
*--------------------------------------
|
||||
CS.RUN ldy #S.PS.ARGC
|
||||
lda (pPs),y
|
||||
cmp #3
|
||||
cmp #2
|
||||
|
||||
bcc .9
|
||||
|
||||
|
@ -38,7 +38,7 @@ L.MSG.LOAD .DA MSG.LOAD
|
||||
*--------------------------------------
|
||||
CS.RUN ldy #S.PS.ARGC
|
||||
lda (pPs),y
|
||||
cmp #2
|
||||
cmp #1
|
||||
bcc .9
|
||||
|
||||
lda #1 get PTR to ARG[1] (Driver name)
|
||||
|
@ -35,7 +35,10 @@ CS.START cld
|
||||
.DA CS.QUIT
|
||||
L.MSG.LOGIN .DA MSG.LOGIN
|
||||
L.MSG.PASSWORD .DA MSG.PASSWORD
|
||||
L.ENV.SHELL .DA ENV.SHELL
|
||||
L.SHELL .DA SHELL
|
||||
L.ENV.HOME .DA ENV.HOME
|
||||
L.HOME .DA HOME
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT clc
|
||||
@ -92,11 +95,27 @@ CS.RUN lda #0
|
||||
>SYSCALL PutChar
|
||||
bcs .9
|
||||
|
||||
jsr CS.RUN.SETENV
|
||||
bcs .9
|
||||
>PUSHBI S.PS.F.HOLD
|
||||
>LDYA L.SHELL
|
||||
>SYSCALL ExecL
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.SETENV >PUSHW L.ENV.HOME
|
||||
>LDYA L.HOME
|
||||
>SYSCALL setenv
|
||||
bcs .9
|
||||
|
||||
>PUSHW L.ENV.SHELL
|
||||
>LDYA L.SHELL
|
||||
>SYSCALL setenv
|
||||
bcs .9
|
||||
|
||||
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.DOEVENT
|
||||
sec
|
||||
rts
|
||||
@ -184,7 +203,10 @@ INPUT.LINEIN ldy #INPUT.Status
|
||||
CS.END
|
||||
MSG.LOGIN .AZ "\r\nlogin:"
|
||||
MSG.PASSWORD .AZ "\r\npassword:"
|
||||
ENV.SHELL .AZ "SHELL"
|
||||
ENV.HOME .AZ "HOME"
|
||||
SHELL .AZ "${ROOT}SBIN/SHELL"
|
||||
HOME .AZ "${ROOT}ROOT"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
|
171
SYS/KERNEL.S.DEF.txt
Normal file
171
SYS/KERNEL.S.DEF.txt
Normal file
@ -0,0 +1,171 @@
|
||||
NEW
|
||||
PREFIX
|
||||
AUTO 4,1
|
||||
*--------------------------------------
|
||||
ZPKERNEL .EQ $0
|
||||
ZPMEMMGR .EQ $10
|
||||
*--------------------------------------
|
||||
ZPPtr1 .EQ ZPKERNEL
|
||||
ZPPtr2 .EQ ZPKERNEL+2
|
||||
ZPPtr3 .EQ ZPKERNEL+4
|
||||
ZPPtr4 .EQ ZPKERNEL+6
|
||||
|
||||
pFD .EQ ZPKERNEL+10
|
||||
pDRV .EQ ZPKERNEL+12
|
||||
pIOCTL .EQ ZPKERNEL+12
|
||||
pIOBuf .EQ ZPKERNEL+14
|
||||
*--------------------------------------
|
||||
SYS.BASL0 .EQ $800
|
||||
*--------------------------------------
|
||||
* AuxMove / XFer
|
||||
*--------------------------------------
|
||||
A1L .EQ $3C
|
||||
A2L .EQ $3E
|
||||
A4L .EQ $42
|
||||
|
||||
XFer.JMP .EQ $3ED
|
||||
|
||||
AuxMove .EQ $C311
|
||||
XFer .EQ $C314 CS:M->X, VS:Use Aux ZP
|
||||
*--------------------------------------
|
||||
* $42-$47 ProDOS Block Device Drivers Main
|
||||
*--------------------------------------
|
||||
DRV.BLK.Cmd .EQ $42
|
||||
DRV.BLK.UnitNum .EQ $43
|
||||
DRV.BLK.Buf .EQ $44
|
||||
DRV.BLK.BlkNum .EQ $47
|
||||
*--------------------------------------
|
||||
* $5E-$C8 RESERVED APPLESOFT Main/Aux (ROM Call, no need to switch back MainZP)
|
||||
*--------------------------------------
|
||||
SIGNFLG .EQ $16 COS,SIN,TAN
|
||||
INDEX .EQ $5E ->$5F
|
||||
FORPNT .EQ $85 ->$86
|
||||
FAC .EQ $9D ->$A1
|
||||
FAC.SIGN .EQ $A2
|
||||
ARG .EQ $A5 -> $A9 (5 bytes)
|
||||
ARG.SIGN .EQ $AA
|
||||
*FAC.EXTENSION .EQ $AC
|
||||
TXTPTR .EQ $B8
|
||||
*--------------------------------------
|
||||
* ROM Entry Point
|
||||
*--------------------------------------
|
||||
ROM.FSUB .EQ 0
|
||||
ROM.FADD .EQ 2
|
||||
ROM.LTOF .EQ 4
|
||||
ROM.LOG .EQ 6
|
||||
ROM.FMULT .EQ 8
|
||||
ROM.SETARG .EQ 10
|
||||
ROM.FDIV .EQ 12
|
||||
ROM.SETFAC .EQ 14
|
||||
|
||||
ROM.GETFAC .EQ 16 Copy FAC to (FORPNT)
|
||||
ROM.FCOMP .EQ 18
|
||||
ROM.QINT .EQ 20
|
||||
ROM.FIN .EQ 22
|
||||
ROM.FOUT .EQ 24
|
||||
ROM.SQR .EQ 26
|
||||
ROM.PWR .EQ 28
|
||||
ROM.EXP .EQ 30
|
||||
|
||||
ROM.COS .EQ 32
|
||||
ROM.SIN .EQ 34
|
||||
ROM.TAN .EQ 36
|
||||
ROM.ATAN .EQ 38
|
||||
*--------------------------------------
|
||||
* Memory Map
|
||||
*--------------------------------------
|
||||
A2osX.SaveSM .EQ $100 Aux
|
||||
A2osX.SaveSX .EQ $101 Aux
|
||||
*--------------------------------------
|
||||
* Main $200 -> 2FF : (Used By ProDOS,Clock DRV....)
|
||||
* Main $300 -> 3EF : <free>
|
||||
* Main $3F0 -> 3FF : SYS Vectors (reset,IRQ...)
|
||||
* Aux $200 -> 3FD : /RAM Driver
|
||||
* Aux $3FE -> 3FF : IRQ Vector
|
||||
*--------------------------------------
|
||||
K.S.STAT .EQ $0300 S.STAT for internal kernel operations
|
||||
*K.S.DIB .EQ $0340 S.DIB=25 or higher depends on dev type
|
||||
K.S.IOCTL .EQ $0360 9 bytes
|
||||
K.MLI.PATH .EQ $0369 64+1
|
||||
K.MLI.PARAMS .EQ $03AA Main, 18 bytes min for GetFileInfo (ATLK needs MORE!!!...32 max for now)
|
||||
*--------------------------------------
|
||||
K.STACKTOP .EQ $03ED XFer !!! down to $3E0
|
||||
*--------------------------------------
|
||||
*** $3F0-$3FF IRQ Handler.... ***
|
||||
*--------------------------------------
|
||||
* Main/Aux $400 -> $7FF : TXT PAGE1 Console Screen
|
||||
* Main/Aux $800 -> $BFF : TXT PAGE2 System Screen
|
||||
*--------------------------------------
|
||||
* free $0C00->$17FF = $C00 (3072) Aux
|
||||
*--------------------------------------
|
||||
Dev.Table.hPath .EQ $0C00 K.Dev.MAX
|
||||
Dev.Table.hFD .EQ $0C20 K.Dev.MAX
|
||||
*--------------------------------------
|
||||
Nod.Table.hPath .EQ $0C40 K.NOD.MAX
|
||||
Nod.Table.hFD .EQ $0C60 K.NOD.MAX
|
||||
*--------------------------------------
|
||||
PS.Table.PID .EQ $0C80 K.PS.MAX
|
||||
PS.Table.hPS .EQ $0CA0 K.PS.MAX
|
||||
PS.Table.Hits .EQ $0CC0 K.PS.MAX
|
||||
PS.Table.Stats .EQ $0CE0 K.PS.MAX
|
||||
*--------------------------------------
|
||||
OF.Table.hPath .EQ $0D00 K.OF.MAX
|
||||
OF.Table.hFD .EQ $0D20 K.OF.MAX
|
||||
*--------------------------------------
|
||||
Evt.Table .EQ $0D60 K.EVT.MAX*S.EVT.SIZE=4*8=32b
|
||||
*--------------------------------------
|
||||
Flt.Table .EQ $0D80 K.FLT.MAX*S.FLT.SIZE=4*32=128b
|
||||
*--------------------------------------
|
||||
K.Buf256 .EQ $0E00
|
||||
*--------------------------------------
|
||||
K.IOBuf .EQ $0F00
|
||||
*--------------------------------------
|
||||
*** Z80 Reserved $1000-10FF***
|
||||
*--------------------------------------
|
||||
Z80CODE .EQ $1000 (00000h) Up To $10FF
|
||||
Z80STACK .EQ $10FF (000FFh) Down to $1000
|
||||
*--------------------------------------
|
||||
* CORE $1100->$17FF = $700 Main
|
||||
*--------------------------------------
|
||||
* MemMgr : $1800->$1FFF MAIN/AUX (2 kBytes)
|
||||
*--------------------------------------
|
||||
Mem.Table .EQ $1800 Slot 0 is Reserved
|
||||
Mem.LoMem .EQ $1800
|
||||
Mem.Free .EQ $1802
|
||||
Mem.HiMem .EQ $1804
|
||||
Mem.LastSlot .EQ $1806
|
||||
*--------------------------------------
|
||||
Mem.MLoMem .EQ $2000
|
||||
Mem.MHiMem .EQ $BD00
|
||||
Mem.XLoMem .EQ $2000
|
||||
Mem.XHiMem .EQ $C000
|
||||
*--------------------------------------
|
||||
DevMgr.HiMem .EQ $FFFA Protect IRQ vectors in Aux LC
|
||||
*--------------------------------------
|
||||
H.BIN.T .EQ 0
|
||||
H.BIN.T.DRV65 .EQ $4CD8 6502:cld,jmp abs
|
||||
H.BIN.T.LIB65 .EQ $7CD8 6502:cld,jmp (abs,x)
|
||||
H.BIN.T.BIN65 .EQ $7CD8 6502:cld,jmp (abs,x)
|
||||
*H.BIN.T.LIB80 .EQ $A28D Z80:
|
||||
*H.BIN.T.BIN80 .EQ $A28D Z80:
|
||||
H.BIN.JMP .EQ 2
|
||||
H.BIN.CPU .EQ 4
|
||||
H.BIN.CPU.6502 .EQ $60
|
||||
H.BIN.CPU.65C02 .EQ $61
|
||||
H.BIN.CPU.65R02 .EQ $62
|
||||
H.BIN.CPU.65816 .EQ $63
|
||||
H.BIN.V .EQ 5
|
||||
H.BIN.F .EQ 6
|
||||
H.BIN.CS.SIZE .EQ 8
|
||||
H.BIN.DS.SIZE .EQ 10
|
||||
H.BIN.SS.SIZE .EQ 12
|
||||
H.BIN.ZP.SIZE .EQ 13
|
||||
*
|
||||
H.BIN.EXE.REL.TABLE .EQ 16
|
||||
*
|
||||
H.BIN.DRV.REL.TABLE .EQ 2 Including main jmp
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE INC/KERNEL.I
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
ASM
|
@ -138,11 +138,11 @@ Kernel.Init3 sta SETALTZP
|
||||
>LDYAI MSG.Prefix
|
||||
>SYSCALL printf
|
||||
|
||||
* lda KBD
|
||||
* bpl .1
|
||||
* sta KBDSTROBE
|
||||
* cmp #$84 CTRL-D for Maintenace mode
|
||||
* bne .1
|
||||
lda KBD
|
||||
bpl .1
|
||||
sta KBDSTROBE
|
||||
cmp #$84 CTRL-D for Maintenace mode
|
||||
bne .1
|
||||
|
||||
>PUSHBI 0
|
||||
>LDYAI MSG.CTRLD
|
||||
|
@ -741,6 +741,43 @@ MEM.PutCharPtr2 sta (ZPPtr2)
|
||||
bne .8
|
||||
inc ZPPtr2+1
|
||||
.8 rts
|
||||
*/--------------------------------------
|
||||
* # GetPSStat
|
||||
* **In:**
|
||||
* Y,A = Ptr to K.PS.MAX*2+1 bytes buffer
|
||||
* ## RETURN VALUE
|
||||
* Buffer filled with PS stats
|
||||
*\--------------------------------------
|
||||
K.GetPSStat >STYA ZPPtr1
|
||||
|
||||
ldx #0
|
||||
|
||||
ldy #1
|
||||
lda CORE.InKernelStats
|
||||
sta (ZPPtr1),y
|
||||
|
||||
iny
|
||||
|
||||
.1 lda PS.Table.PID,x
|
||||
beq .2
|
||||
|
||||
lda PS.Table.hPS,x
|
||||
sta (ZPPtr1),y
|
||||
iny
|
||||
|
||||
lda PS.Table.Stats,x
|
||||
sta (ZPPtr1),y
|
||||
iny
|
||||
|
||||
.2 inx
|
||||
cpx #K.PS.MAX
|
||||
bne .1
|
||||
|
||||
.9 tya
|
||||
lsr
|
||||
dec
|
||||
sta (ZPPtr1)
|
||||
rts
|
||||
*--------------------------------------
|
||||
* 6502/65C02/65816 OPCODES
|
||||
* Bit 3 : 1 = absolute addressing
|
||||
|
@ -59,14 +59,11 @@ K.ExecV >STYA PS.ArgV
|
||||
|
||||
PS.Exec stz PS.Load.hBIN
|
||||
|
||||
jsr PS.CreateChild Child S.PS at ZPPtr3
|
||||
jsr PS.CreateChild Child S.PS at ZPPtr3,PS.Load.hMem
|
||||
bcs .9
|
||||
|
||||
sta .8+1
|
||||
|
||||
jsr PS.Load
|
||||
bcs .90
|
||||
|
||||
jsr PS.AddArgV
|
||||
bcc .8
|
||||
|
||||
@ -82,7 +79,7 @@ PS.Exec stz PS.Load.hBIN
|
||||
sec
|
||||
rts
|
||||
|
||||
.8 lda #$ff self modified
|
||||
.8 lda PS.Load.hMem
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* PS.CreateChild
|
||||
@ -131,6 +128,7 @@ PS.CreateChild ldx CORE.PSCount
|
||||
bcs .99
|
||||
|
||||
>STYA ZPPtr3
|
||||
stx PS.Load.hMem
|
||||
txa
|
||||
plx
|
||||
sta PS.Table.hPS,x
|
||||
@ -217,17 +215,17 @@ PS.Load >PUSHWI K.S.STAT
|
||||
cmp #S.FI.T.BIN
|
||||
beq PS.LoadBIN
|
||||
cmp #S.FI.T.TXT
|
||||
beq .10
|
||||
cmp #S.FI.T.SYS
|
||||
bne .98
|
||||
|
||||
bra *
|
||||
|
||||
* beq .10
|
||||
* cmp #S.FI.T.SYS
|
||||
* bra *
|
||||
|
||||
.10 jsr PS.LoadGetHeader
|
||||
bcs .99
|
||||
|
||||
>LDYAI PS.Load.ROOT
|
||||
jsr K.GetEnv
|
||||
jsr K.GetEnv ZPPtr3 Trashed
|
||||
bcs .97
|
||||
|
||||
>STYA .21+1
|
||||
@ -235,8 +233,8 @@ PS.Load >PUSHWI K.S.STAT
|
||||
ldx #$ff
|
||||
|
||||
.2 inx
|
||||
.21 lda $ffff,x
|
||||
sta K.Buf256,x
|
||||
.21 lda $ffff,x SELF MODIFIED
|
||||
sta K.IOBuf,x
|
||||
bne .2
|
||||
|
||||
ldy #0
|
||||
@ -251,10 +249,19 @@ PS.Load >PUSHWI K.S.STAT
|
||||
.4 iny
|
||||
inx
|
||||
lda K.IOBuf+128-1,y
|
||||
sta K.Buf256-1,x
|
||||
sta K.IOBuf-1,x
|
||||
bne .4
|
||||
|
||||
>LDYAI K.Buf256
|
||||
>PUSHWI K.S.STAT
|
||||
>LDYAI K.IOBuf
|
||||
>SYSCALL stat BANK 1
|
||||
bcs .99
|
||||
|
||||
lda PS.Load.hMem Restore ZPPtr3 trashed by GetEnv
|
||||
jsr K.GetMemPtr
|
||||
>STYA ZPPtr3
|
||||
|
||||
>LDYAI K.IOBuf
|
||||
>SYSCALL NewStr
|
||||
bcs .99
|
||||
stx PS.Load.hBIN
|
||||
@ -271,7 +278,7 @@ PS.LoadBIN >LDYA PS.ArgV
|
||||
PS.LoadBIN.YA jsr BIN.Load
|
||||
bcs .9
|
||||
>STYA ZPPtr4 save PTR to Code Segment
|
||||
|
||||
|
||||
phy
|
||||
ldy #S.PS.ZP.CODE+1
|
||||
sta (ZPPtr3),y save pCode HI...
|
||||
@ -364,7 +371,7 @@ PS.LoadGetHeader
|
||||
>PUSHBI O.RDONLY
|
||||
>LDYA PS.ArgV
|
||||
>SYSCALL fopen
|
||||
bcs .99
|
||||
bcs PS.LoadGetHeader.RTS
|
||||
sta .1+1
|
||||
|
||||
>PUSHWI 128
|
||||
@ -378,12 +385,14 @@ PS.LoadGetHeader
|
||||
>SYSCALL fclose
|
||||
pla
|
||||
plp
|
||||
.99 rts
|
||||
PS.LoadGetHeader.RTS
|
||||
rts
|
||||
*--------------------------------------
|
||||
PS.Load.ROOT .AZ "ROOT"
|
||||
PS.Load.HEADER .AZ "#!/"
|
||||
PS.Load.hBIN .BS 1
|
||||
PS.Load.ArgSize .BS 2
|
||||
PS.Load.hMem .BS 1
|
||||
*--------------------------------------
|
||||
* hBIN + PS.ArgV -> #S.PS.hARGV
|
||||
*--------------------------------------
|
||||
@ -394,19 +403,25 @@ PS.AddArgV stz PS.Load.ArgSize
|
||||
beq .10
|
||||
|
||||
jsr K.GetMemPtr
|
||||
jsr K.strlen
|
||||
iny +1 for \0
|
||||
>STYA PS.Load.ArgSize
|
||||
ldx #0 ARGC-1
|
||||
.HS 2C
|
||||
|
||||
.10 ldx #$ff ARGC-1
|
||||
>LDYA PS.ArgV
|
||||
>STYA ZPPtr1
|
||||
>STYA ZPPtr2
|
||||
|
||||
.1 lda (ZPPtr2)
|
||||
.1 lda (ZPPtr1)
|
||||
beq .4
|
||||
|
||||
inx
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 iny
|
||||
lda (ZPPtr2),y
|
||||
lda (ZPPtr1),y
|
||||
bne .2
|
||||
|
||||
tya
|
||||
@ -417,84 +432,46 @@ PS.AddArgV stz PS.Load.ArgSize
|
||||
|
||||
inc PS.Load.ArgSize+1
|
||||
|
||||
.3 tya
|
||||
sec
|
||||
adc ZPPtr2
|
||||
sta ZPPtr2
|
||||
bcc .1
|
||||
inc ZPPtr2+1
|
||||
.3 jsr PS.AddYp1ToPtr1
|
||||
bra .1
|
||||
|
||||
.4 >LDYA PS.Load.ArgSize
|
||||
.4 txa
|
||||
ldy #S.PS.ARGC
|
||||
sta (ZPPtr3),y
|
||||
|
||||
>LDYA PS.Load.ArgSize Add 1 for ending 0
|
||||
iny
|
||||
bne .5
|
||||
inc
|
||||
|
||||
jsr K.GetMem
|
||||
bcs .9
|
||||
.5 jsr K.GetMem
|
||||
bcs PS.LoadGetHeader.RTS
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bcs .9
|
||||
>STYA ZPPtr2 Target Buffer
|
||||
txa
|
||||
ldy #S.PS.hARGV
|
||||
sta (ZPPtr3),y
|
||||
|
||||
dey S.PS.ARGC
|
||||
txa
|
||||
dec don't include $0
|
||||
sta (ZPPtr3),y
|
||||
lda PS.Load.hBIN
|
||||
beq .6
|
||||
|
||||
* clc
|
||||
jsr K.GetMemPtr
|
||||
>STYA ZPPtr1
|
||||
jsr PS.AddPtr1ToStrV
|
||||
|
||||
.6 >LDYA PS.ArgV
|
||||
>STYA ZPPtr1
|
||||
|
||||
.7 lda (ZPPtr1)
|
||||
sta (ZPPtr2)
|
||||
beq .8 Ending \0
|
||||
|
||||
jsr PS.AddPtr1ToStrV
|
||||
bra .7
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* PS.DupArgs
|
||||
* In:
|
||||
* Y,A = Ptr To Args[]
|
||||
* Out:
|
||||
* A = hMem
|
||||
* X = Count
|
||||
*--------------------------------------
|
||||
PS.DupArgs >STYA ZPPtr1
|
||||
|
||||
>STYA ZPPtr2
|
||||
|
||||
lda #1
|
||||
sta .7+1
|
||||
lda #0
|
||||
sta .8+1 len = 1 for array ending 0
|
||||
|
||||
.1 lda (ZPPtr2)
|
||||
beq .7
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 iny
|
||||
lda (ZPPtr2),y
|
||||
bne .2
|
||||
|
||||
tya
|
||||
sec
|
||||
adc .7+1
|
||||
sta .7+1
|
||||
bcc .3
|
||||
|
||||
inc .8+1
|
||||
|
||||
.3 tya
|
||||
sec
|
||||
adc ZPPtr2
|
||||
sta ZPPtr2
|
||||
bcc .1
|
||||
inc ZPPtr2+1
|
||||
bra .1
|
||||
|
||||
.7 ldy #$ff SELF MODIFIED
|
||||
.8 lda #$ff SELF MODIFIED
|
||||
|
||||
bra PS.DupStrV
|
||||
*--------------------------------------
|
||||
* PS.DupEnv
|
||||
* In:
|
||||
* A = ENV hMem To Duplicate
|
||||
@ -507,22 +484,27 @@ PS.DupEnv jsr K.GetMemPtr
|
||||
|
||||
>LDYAI K.ENV.SIZE
|
||||
|
||||
PS.DupStrV jsr K.GetMem
|
||||
jsr K.GetMem
|
||||
bcs .9
|
||||
|
||||
>STYA ZPPtr2
|
||||
>STYA ZPPtr2 Target Buffer
|
||||
phx save hMem
|
||||
|
||||
jsr PS.SetMemOwner Set Ownership
|
||||
|
||||
ldx #0 Count
|
||||
|
||||
.1 lda (ZPPtr1)
|
||||
sta (ZPPtr2)
|
||||
beq .8 Ending \0
|
||||
|
||||
inx
|
||||
jsr PS.AddPtr1ToStrV
|
||||
bra .1
|
||||
|
||||
.8 pla hMem
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
PS.AddPtr1ToStrV
|
||||
ldy #0
|
||||
|
||||
.2 iny
|
||||
@ -530,26 +512,26 @@ PS.DupStrV jsr K.GetMem
|
||||
sta (ZPPtr2),y
|
||||
bne .2
|
||||
|
||||
jsr PS.AddYp1ToPtr1
|
||||
|
||||
tya
|
||||
sec
|
||||
adc ZPPtr1
|
||||
sta ZPPtr1
|
||||
bcc .3
|
||||
|
||||
inc ZPPtr1+1
|
||||
|
||||
.3 tya
|
||||
sec
|
||||
adc ZPPtr2
|
||||
sta ZPPtr2
|
||||
bcc .1
|
||||
bcc .8
|
||||
inc ZPPtr2+1
|
||||
bra .1
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
PS.AddYp1ToPtr1 tya
|
||||
sec
|
||||
adc ZPPtr1
|
||||
sta ZPPtr1
|
||||
bcc .8
|
||||
|
||||
.8 pla hMem
|
||||
inc ZPPtr1+1
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
PS.SetMemOwner lda CORE.LastPSID
|
||||
ldy #S.MEM.OWNERPID
|
||||
@ -567,43 +549,6 @@ K.GetPSStatus jsr CORE.GetPSByID
|
||||
>STYA ZPPtr1
|
||||
lda (ZPPtr1)
|
||||
.9 rts
|
||||
*/--------------------------------------
|
||||
* # GetPSStat
|
||||
* **In:**
|
||||
* Y,A = Ptr to K.PS.MAX*2+1 bytes buffer
|
||||
* ## RETURN VALUE
|
||||
* Buffer filled with PS stats
|
||||
*\--------------------------------------
|
||||
K.GetPSStat >STYA ZPPtr1
|
||||
|
||||
ldx #0
|
||||
|
||||
ldy #1
|
||||
lda CORE.InKernelStats
|
||||
sta (ZPPtr1),y
|
||||
|
||||
iny
|
||||
|
||||
.1 lda PS.Table.PID,x
|
||||
beq .2
|
||||
|
||||
lda PS.Table.hPS,x
|
||||
sta (ZPPtr1),y
|
||||
iny
|
||||
|
||||
lda PS.Table.Stats,x
|
||||
sta (ZPPtr1),y
|
||||
iny
|
||||
|
||||
.2 inx
|
||||
cpx #K.PS.MAX
|
||||
bne .1
|
||||
|
||||
.9 tya
|
||||
lsr
|
||||
dec
|
||||
sta (ZPPtr1)
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.PS
|
||||
|
@ -46,7 +46,6 @@ A2osX.D2 .PH $D000
|
||||
.INB USR/SRC/SYS/KERNEL.S.PS
|
||||
.INB USR/SRC/SYS/KERNEL.S.ARG
|
||||
.INB USR/SRC/SYS/KERNEL.S.ENV
|
||||
.INB USR/SRC/SYS/KERNEL.S.MATH
|
||||
.EP
|
||||
A2osX.E0 .PH $E000
|
||||
.INB USR/SRC/SYS/KERNEL.S.JMP
|
||||
@ -55,6 +54,8 @@ A2osX.E0 .PH $E000
|
||||
********* TMP ***** go to A2osX.D1
|
||||
.INB USR/SRC/SYS/KERNEL.S.FIO
|
||||
.INB USR/SRC/SYS/KERNEL.S.IO
|
||||
********* TMP ***** go to A2osX.D2
|
||||
.INB USR/SRC/SYS/KERNEL.S.MATH
|
||||
.LIST ON
|
||||
DevMgr.FreeMem .EQ *
|
||||
.LIST OFF
|
||||
|
Loading…
x
Reference in New Issue
Block a user