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
|
.1 ldy #S.PS.ARGC
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
cmp #2
|
cmp #1
|
||||||
bcs .2
|
bcs .2
|
||||||
jmp CS.RUN.DUMP
|
jmp CS.RUN.DUMP
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG
|
|||||||
|
|
||||||
ldy #S.PS.ARGC
|
ldy #S.PS.ARGC
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
cmp #2
|
cmp #1
|
||||||
beq CS.RUN.QUERY
|
beq CS.RUN.QUERY
|
||||||
|
|
||||||
cmp #3
|
cmp #3
|
||||||
|
@ -63,7 +63,6 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ?
|
|||||||
|
|
||||||
CS.RUN.IPOK ldy #S.PS.ARGC
|
CS.RUN.IPOK ldy #S.PS.ARGC
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
cmp #1
|
|
||||||
bne .1
|
bne .1
|
||||||
jmp CS.RUN.DUMP
|
jmp CS.RUN.DUMP
|
||||||
|
|
||||||
|
@ -42,8 +42,7 @@ L.MSG.ERR .DA MSG.ERR
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT ldy #S.PS.ARGC
|
CS.INIT ldy #S.PS.ARGC
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
cmp #2
|
beq .90
|
||||||
bcc .90
|
|
||||||
|
|
||||||
.1 >INC.G ArgIndex
|
.1 >INC.G ArgIndex
|
||||||
|
|
||||||
|
@ -49,7 +49,6 @@ CS.INIT >LDYA L.LIBCRYPT
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN ldy #S.PS.ARGC
|
CS.RUN ldy #S.PS.ARGC
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
dec
|
|
||||||
beq .99
|
beq .99
|
||||||
|
|
||||||
.1 >INC.G ArgIndex
|
.1 >INC.G ArgIndex
|
||||||
|
@ -46,7 +46,7 @@ CS.INIT clc
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN ldy #S.PS.ARGC
|
CS.RUN ldy #S.PS.ARGC
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
cmp #2
|
cmp #1
|
||||||
bcs CS.RUN.SET
|
bcs CS.RUN.SET
|
||||||
|
|
||||||
CS.RUN.READ jsr NSC.Init
|
CS.RUN.READ jsr NSC.Init
|
||||||
|
@ -54,7 +54,7 @@ CL.CHARIN tax
|
|||||||
|
|
||||||
.1 cpx #$7f
|
.1 cpx #$7f
|
||||||
bne .2
|
bne .2
|
||||||
jmp CL.DEL
|
jmp CL.SUPPR
|
||||||
|
|
||||||
.2 jmp CL.Insert
|
.2 jmp CL.Insert
|
||||||
|
|
||||||
@ -68,12 +68,12 @@ CL.CHARIN.CTRL cpx #C.CR
|
|||||||
>LDYA L.MSG.ECHOCRLF
|
>LDYA L.MSG.ECHOCRLF
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
|
||||||
>LDA.G CL.Ptr
|
* >LDA.G CL.Ptr
|
||||||
tay
|
* tay
|
||||||
lda #0
|
* lda #0
|
||||||
sta (ZPCLBuf),y
|
* sta (ZPCLBuf),y
|
||||||
tya
|
* tya
|
||||||
>STA.G CL.Len
|
* >STA.G CL.Len
|
||||||
|
|
||||||
lda #$ff
|
lda #$ff
|
||||||
>STA.G CL.bExec
|
>STA.G CL.bExec
|
||||||
@ -96,7 +96,7 @@ CL.CHARIN.CTRL cpx #C.CR
|
|||||||
.12 cpx #24 Ctrl-X
|
.12 cpx #24 Ctrl-X
|
||||||
bne .13
|
bne .13
|
||||||
|
|
||||||
jmp CL.SUPPR
|
jmp CL.DEL
|
||||||
|
|
||||||
.13 clc
|
.13 clc
|
||||||
rts
|
rts
|
||||||
@ -478,9 +478,9 @@ CL.CheckCmd.RTS
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* TXT : add "/PATH/SHELL" "/PATH/CMD"
|
* TXT : add "/PATH/SHELL" "/PATH/CMD"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CL.CheckCmd.TXT >LDYA L.SHELL
|
*CL.CheckCmd.TXT >LDYA L.SHELL
|
||||||
jsr CL.AddYAToArgV
|
* jsr CL.AddYAToArgV
|
||||||
bcs CL.CheckCmd.90
|
* bcs CL.CheckCmd.90
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* BIN : add "/PATH/CMD"
|
* BIN : add "/PATH/CMD"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -96,12 +96,10 @@ L.MSG.BATCHERR .DA MSG.BATCHERR
|
|||||||
L.MSG.ERROR .DA MSG.ERROR
|
L.MSG.ERROR .DA MSG.ERROR
|
||||||
L.MSG.PRINTENV .DA MSG.PRINTENV
|
L.MSG.PRINTENV .DA MSG.PRINTENV
|
||||||
L.MSG.PID .DA MSG.PID
|
L.MSG.PID .DA MSG.PID
|
||||||
L.SHELL .DA SHELL
|
|
||||||
L.ENV.ROOT .DA ENV.ROOT
|
L.ENV.ROOT .DA ENV.ROOT
|
||||||
L.ENV.PATH .DA ENV.PATH
|
L.ENV.PATH .DA ENV.PATH
|
||||||
L.ENV.PWD .DA ENV.PWD
|
L.ENV.PWD .DA ENV.PWD
|
||||||
L.ENV.PS1 .DA ENV.PS1
|
L.ENV.PS1 .DA ENV.PS1
|
||||||
L.ENV.SHELL .DA ENV.SHELL
|
|
||||||
L.ENV.HOME .DA ENV.HOME
|
L.ENV.HOME .DA ENV.HOME
|
||||||
L.FMT.DATE .DA FMT.DATE
|
L.FMT.DATE .DA FMT.DATE
|
||||||
L.FMT.TIME .DA FMT.TIME
|
L.FMT.TIME .DA FMT.TIME
|
||||||
@ -173,12 +171,6 @@ CS.RUN jsr CMD.Init
|
|||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
beq .1 no arg, continue starting interactive
|
beq .1 no arg, continue starting interactive
|
||||||
|
|
||||||
>PUSHW L.ENV.SHELL
|
|
||||||
lda #0
|
|
||||||
>SYSCALL ArgV
|
|
||||||
>SYSCALL setenv
|
|
||||||
bcs CS.INIT.RTS
|
|
||||||
|
|
||||||
lda #1
|
lda #1
|
||||||
>SYSCALL ArgV
|
>SYSCALL ArgV
|
||||||
|
|
||||||
@ -566,13 +558,11 @@ MSG.PID .AZ "PID=%d\r\n"
|
|||||||
FMT.DATE .AZ "%A (%w), %B %d %Y"
|
FMT.DATE .AZ "%A (%w), %B %d %Y"
|
||||||
FMT.TIME .AZ "%H:%M:%S (%I:%M:%S%p)"
|
FMT.TIME .AZ "%H:%M:%S (%I:%M:%S%p)"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SHELL .AZ "${ROOT}SBIN/SHELL"
|
|
||||||
ENV.ROOT .AZ "ROOT"
|
ENV.ROOT .AZ "ROOT"
|
||||||
ENV.PATH .AZ "PATH"
|
ENV.PATH .AZ "PATH"
|
||||||
ENV.PWD .AZ "PWD"
|
ENV.PWD .AZ "PWD"
|
||||||
ENV.PS1 .AZ "PS1"
|
ENV.PS1 .AZ "PS1"
|
||||||
ENV.HOME .AZ "HOME"
|
ENV.HOME .AZ "HOME"
|
||||||
ENV.SHELL .AZ "SHELL"
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* https://www.tldp.org/LDP/abs/html/io-redirection.html
|
* 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
|
CS.RUN.IPOK ldy #S.PS.ARGC
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
cmp #2
|
cmp #1
|
||||||
bcc .9
|
bcc .9
|
||||||
|
|
||||||
ldy #S.IPCFG.IP+3
|
ldy #S.IPCFG.IP+3
|
||||||
|
@ -47,7 +47,7 @@ CS.INIT clc
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN ldy #S.PS.ARGC
|
CS.RUN ldy #S.PS.ARGC
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
cmp #3
|
cmp #2
|
||||||
|
|
||||||
bcc .9
|
bcc .9
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ L.MSG.LOAD .DA MSG.LOAD
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN ldy #S.PS.ARGC
|
CS.RUN ldy #S.PS.ARGC
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
cmp #2
|
cmp #1
|
||||||
bcc .9
|
bcc .9
|
||||||
|
|
||||||
lda #1 get PTR to ARG[1] (Driver name)
|
lda #1 get PTR to ARG[1] (Driver name)
|
||||||
|
@ -35,7 +35,10 @@ CS.START cld
|
|||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
L.MSG.LOGIN .DA MSG.LOGIN
|
L.MSG.LOGIN .DA MSG.LOGIN
|
||||||
L.MSG.PASSWORD .DA MSG.PASSWORD
|
L.MSG.PASSWORD .DA MSG.PASSWORD
|
||||||
|
L.ENV.SHELL .DA ENV.SHELL
|
||||||
L.SHELL .DA SHELL
|
L.SHELL .DA SHELL
|
||||||
|
L.ENV.HOME .DA ENV.HOME
|
||||||
|
L.HOME .DA HOME
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT clc
|
CS.INIT clc
|
||||||
@ -92,11 +95,27 @@ CS.RUN lda #0
|
|||||||
>SYSCALL PutChar
|
>SYSCALL PutChar
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
jsr CS.RUN.SETENV
|
||||||
|
bcs .9
|
||||||
>PUSHBI S.PS.F.HOLD
|
>PUSHBI S.PS.F.HOLD
|
||||||
>LDYA L.SHELL
|
>LDYA L.SHELL
|
||||||
>SYSCALL ExecL
|
>SYSCALL ExecL
|
||||||
rts
|
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
|
CS.DOEVENT
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
@ -184,7 +203,10 @@ INPUT.LINEIN ldy #INPUT.Status
|
|||||||
CS.END
|
CS.END
|
||||||
MSG.LOGIN .AZ "\r\nlogin:"
|
MSG.LOGIN .AZ "\r\nlogin:"
|
||||||
MSG.PASSWORD .AZ "\r\npassword:"
|
MSG.PASSWORD .AZ "\r\npassword:"
|
||||||
|
ENV.SHELL .AZ "SHELL"
|
||||||
|
ENV.HOME .AZ "HOME"
|
||||||
SHELL .AZ "${ROOT}SBIN/SHELL"
|
SHELL .AZ "${ROOT}SBIN/SHELL"
|
||||||
|
HOME .AZ "${ROOT}ROOT"
|
||||||
.HS 00
|
.HS 00
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.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
|
>LDYAI MSG.Prefix
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
|
||||||
* lda KBD
|
lda KBD
|
||||||
* bpl .1
|
bpl .1
|
||||||
* sta KBDSTROBE
|
sta KBDSTROBE
|
||||||
* cmp #$84 CTRL-D for Maintenace mode
|
cmp #$84 CTRL-D for Maintenace mode
|
||||||
* bne .1
|
bne .1
|
||||||
|
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
>LDYAI MSG.CTRLD
|
>LDYAI MSG.CTRLD
|
||||||
|
@ -741,6 +741,43 @@ MEM.PutCharPtr2 sta (ZPPtr2)
|
|||||||
bne .8
|
bne .8
|
||||||
inc ZPPtr2+1
|
inc ZPPtr2+1
|
||||||
.8 rts
|
.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
|
* 6502/65C02/65816 OPCODES
|
||||||
* Bit 3 : 1 = absolute addressing
|
* Bit 3 : 1 = absolute addressing
|
||||||
|
@ -59,14 +59,11 @@ K.ExecV >STYA PS.ArgV
|
|||||||
|
|
||||||
PS.Exec stz PS.Load.hBIN
|
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
|
bcs .9
|
||||||
|
|
||||||
sta .8+1
|
|
||||||
|
|
||||||
jsr PS.Load
|
jsr PS.Load
|
||||||
bcs .90
|
bcs .90
|
||||||
|
|
||||||
jsr PS.AddArgV
|
jsr PS.AddArgV
|
||||||
bcc .8
|
bcc .8
|
||||||
|
|
||||||
@ -82,7 +79,7 @@ PS.Exec stz PS.Load.hBIN
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.8 lda #$ff self modified
|
.8 lda PS.Load.hMem
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* PS.CreateChild
|
* PS.CreateChild
|
||||||
@ -131,6 +128,7 @@ PS.CreateChild ldx CORE.PSCount
|
|||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>STYA ZPPtr3
|
>STYA ZPPtr3
|
||||||
|
stx PS.Load.hMem
|
||||||
txa
|
txa
|
||||||
plx
|
plx
|
||||||
sta PS.Table.hPS,x
|
sta PS.Table.hPS,x
|
||||||
@ -217,17 +215,17 @@ PS.Load >PUSHWI K.S.STAT
|
|||||||
cmp #S.FI.T.BIN
|
cmp #S.FI.T.BIN
|
||||||
beq PS.LoadBIN
|
beq PS.LoadBIN
|
||||||
cmp #S.FI.T.TXT
|
cmp #S.FI.T.TXT
|
||||||
beq .10
|
|
||||||
cmp #S.FI.T.SYS
|
|
||||||
bne .98
|
bne .98
|
||||||
|
|
||||||
bra *
|
* beq .10
|
||||||
|
* cmp #S.FI.T.SYS
|
||||||
|
* bra *
|
||||||
|
|
||||||
.10 jsr PS.LoadGetHeader
|
.10 jsr PS.LoadGetHeader
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>LDYAI PS.Load.ROOT
|
>LDYAI PS.Load.ROOT
|
||||||
jsr K.GetEnv
|
jsr K.GetEnv ZPPtr3 Trashed
|
||||||
bcs .97
|
bcs .97
|
||||||
|
|
||||||
>STYA .21+1
|
>STYA .21+1
|
||||||
@ -235,8 +233,8 @@ PS.Load >PUSHWI K.S.STAT
|
|||||||
ldx #$ff
|
ldx #$ff
|
||||||
|
|
||||||
.2 inx
|
.2 inx
|
||||||
.21 lda $ffff,x
|
.21 lda $ffff,x SELF MODIFIED
|
||||||
sta K.Buf256,x
|
sta K.IOBuf,x
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
@ -251,10 +249,19 @@ PS.Load >PUSHWI K.S.STAT
|
|||||||
.4 iny
|
.4 iny
|
||||||
inx
|
inx
|
||||||
lda K.IOBuf+128-1,y
|
lda K.IOBuf+128-1,y
|
||||||
sta K.Buf256-1,x
|
sta K.IOBuf-1,x
|
||||||
bne .4
|
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
|
>SYSCALL NewStr
|
||||||
bcs .99
|
bcs .99
|
||||||
stx PS.Load.hBIN
|
stx PS.Load.hBIN
|
||||||
@ -271,7 +278,7 @@ PS.LoadBIN >LDYA PS.ArgV
|
|||||||
PS.LoadBIN.YA jsr BIN.Load
|
PS.LoadBIN.YA jsr BIN.Load
|
||||||
bcs .9
|
bcs .9
|
||||||
>STYA ZPPtr4 save PTR to Code Segment
|
>STYA ZPPtr4 save PTR to Code Segment
|
||||||
|
|
||||||
phy
|
phy
|
||||||
ldy #S.PS.ZP.CODE+1
|
ldy #S.PS.ZP.CODE+1
|
||||||
sta (ZPPtr3),y save pCode HI...
|
sta (ZPPtr3),y save pCode HI...
|
||||||
@ -364,7 +371,7 @@ PS.LoadGetHeader
|
|||||||
>PUSHBI O.RDONLY
|
>PUSHBI O.RDONLY
|
||||||
>LDYA PS.ArgV
|
>LDYA PS.ArgV
|
||||||
>SYSCALL fopen
|
>SYSCALL fopen
|
||||||
bcs .99
|
bcs PS.LoadGetHeader.RTS
|
||||||
sta .1+1
|
sta .1+1
|
||||||
|
|
||||||
>PUSHWI 128
|
>PUSHWI 128
|
||||||
@ -378,12 +385,14 @@ PS.LoadGetHeader
|
|||||||
>SYSCALL fclose
|
>SYSCALL fclose
|
||||||
pla
|
pla
|
||||||
plp
|
plp
|
||||||
.99 rts
|
PS.LoadGetHeader.RTS
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PS.Load.ROOT .AZ "ROOT"
|
PS.Load.ROOT .AZ "ROOT"
|
||||||
PS.Load.HEADER .AZ "#!/"
|
PS.Load.HEADER .AZ "#!/"
|
||||||
PS.Load.hBIN .BS 1
|
PS.Load.hBIN .BS 1
|
||||||
PS.Load.ArgSize .BS 2
|
PS.Load.ArgSize .BS 2
|
||||||
|
PS.Load.hMem .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* hBIN + PS.ArgV -> #S.PS.hARGV
|
* hBIN + PS.ArgV -> #S.PS.hARGV
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -394,19 +403,25 @@ PS.AddArgV stz PS.Load.ArgSize
|
|||||||
beq .10
|
beq .10
|
||||||
|
|
||||||
jsr K.GetMemPtr
|
jsr K.GetMemPtr
|
||||||
|
jsr K.strlen
|
||||||
|
iny +1 for \0
|
||||||
>STYA PS.Load.ArgSize
|
>STYA PS.Load.ArgSize
|
||||||
|
ldx #0 ARGC-1
|
||||||
|
.HS 2C
|
||||||
|
|
||||||
|
.10 ldx #$ff ARGC-1
|
||||||
>LDYA PS.ArgV
|
>LDYA PS.ArgV
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
>STYA ZPPtr2
|
|
||||||
|
|
||||||
.1 lda (ZPPtr2)
|
.1 lda (ZPPtr1)
|
||||||
beq .4
|
beq .4
|
||||||
|
|
||||||
|
inx
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
.2 iny
|
.2 iny
|
||||||
lda (ZPPtr2),y
|
lda (ZPPtr1),y
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
tya
|
tya
|
||||||
@ -417,84 +432,46 @@ PS.AddArgV stz PS.Load.ArgSize
|
|||||||
|
|
||||||
inc PS.Load.ArgSize+1
|
inc PS.Load.ArgSize+1
|
||||||
|
|
||||||
.3 tya
|
.3 jsr PS.AddYp1ToPtr1
|
||||||
sec
|
|
||||||
adc ZPPtr2
|
|
||||||
sta ZPPtr2
|
|
||||||
bcc .1
|
|
||||||
inc ZPPtr2+1
|
|
||||||
bra .1
|
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
|
iny
|
||||||
bne .5
|
bne .5
|
||||||
inc
|
inc
|
||||||
|
|
||||||
jsr K.GetMem
|
.5 jsr K.GetMem
|
||||||
bcs .9
|
bcs PS.LoadGetHeader.RTS
|
||||||
|
|
||||||
|
>STYA ZPPtr2 Target Buffer
|
||||||
|
txa
|
||||||
|
|
||||||
|
|
||||||
bcs .9
|
|
||||||
ldy #S.PS.hARGV
|
ldy #S.PS.hARGV
|
||||||
sta (ZPPtr3),y
|
sta (ZPPtr3),y
|
||||||
|
|
||||||
dey S.PS.ARGC
|
lda PS.Load.hBIN
|
||||||
txa
|
beq .6
|
||||||
dec don't include $0
|
|
||||||
sta (ZPPtr3),y
|
|
||||||
|
|
||||||
* 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
|
.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
|
* PS.DupEnv
|
||||||
* In:
|
* In:
|
||||||
* A = ENV hMem To Duplicate
|
* A = ENV hMem To Duplicate
|
||||||
@ -507,22 +484,27 @@ PS.DupEnv jsr K.GetMemPtr
|
|||||||
|
|
||||||
>LDYAI K.ENV.SIZE
|
>LDYAI K.ENV.SIZE
|
||||||
|
|
||||||
PS.DupStrV jsr K.GetMem
|
jsr K.GetMem
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPPtr2
|
>STYA ZPPtr2 Target Buffer
|
||||||
phx save hMem
|
phx save hMem
|
||||||
|
|
||||||
jsr PS.SetMemOwner Set Ownership
|
jsr PS.SetMemOwner Set Ownership
|
||||||
|
|
||||||
ldx #0 Count
|
|
||||||
|
|
||||||
.1 lda (ZPPtr1)
|
.1 lda (ZPPtr1)
|
||||||
sta (ZPPtr2)
|
sta (ZPPtr2)
|
||||||
beq .8 Ending \0
|
beq .8 Ending \0
|
||||||
|
|
||||||
inx
|
jsr PS.AddPtr1ToStrV
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.8 pla hMem
|
||||||
|
|
||||||
|
clc
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
PS.AddPtr1ToStrV
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
.2 iny
|
.2 iny
|
||||||
@ -530,26 +512,26 @@ PS.DupStrV jsr K.GetMem
|
|||||||
sta (ZPPtr2),y
|
sta (ZPPtr2),y
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
|
jsr PS.AddYp1ToPtr1
|
||||||
|
|
||||||
tya
|
tya
|
||||||
sec
|
|
||||||
adc ZPPtr1
|
|
||||||
sta ZPPtr1
|
|
||||||
bcc .3
|
|
||||||
|
|
||||||
inc ZPPtr1+1
|
|
||||||
|
|
||||||
.3 tya
|
|
||||||
sec
|
sec
|
||||||
adc ZPPtr2
|
adc ZPPtr2
|
||||||
sta ZPPtr2
|
sta ZPPtr2
|
||||||
bcc .1
|
bcc .8
|
||||||
inc ZPPtr2+1
|
inc ZPPtr2+1
|
||||||
bra .1
|
|
||||||
|
.8 rts
|
||||||
|
*--------------------------------------
|
||||||
|
PS.AddYp1ToPtr1 tya
|
||||||
|
sec
|
||||||
|
adc ZPPtr1
|
||||||
|
sta ZPPtr1
|
||||||
|
bcc .8
|
||||||
|
|
||||||
.8 pla hMem
|
inc ZPPtr1+1
|
||||||
|
|
||||||
clc
|
.8 rts
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PS.SetMemOwner lda CORE.LastPSID
|
PS.SetMemOwner lda CORE.LastPSID
|
||||||
ldy #S.MEM.OWNERPID
|
ldy #S.MEM.OWNERPID
|
||||||
@ -567,43 +549,6 @@ K.GetPSStatus jsr CORE.GetPSByID
|
|||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
lda (ZPPtr1)
|
lda (ZPPtr1)
|
||||||
.9 rts
|
.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
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.PS
|
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.PS
|
||||||
.INB USR/SRC/SYS/KERNEL.S.ARG
|
.INB USR/SRC/SYS/KERNEL.S.ARG
|
||||||
.INB USR/SRC/SYS/KERNEL.S.ENV
|
.INB USR/SRC/SYS/KERNEL.S.ENV
|
||||||
.INB USR/SRC/SYS/KERNEL.S.MATH
|
|
||||||
.EP
|
.EP
|
||||||
A2osX.E0 .PH $E000
|
A2osX.E0 .PH $E000
|
||||||
.INB USR/SRC/SYS/KERNEL.S.JMP
|
.INB USR/SRC/SYS/KERNEL.S.JMP
|
||||||
@ -55,6 +54,8 @@ A2osX.E0 .PH $E000
|
|||||||
********* TMP ***** go to A2osX.D1
|
********* TMP ***** go to A2osX.D1
|
||||||
.INB USR/SRC/SYS/KERNEL.S.FIO
|
.INB USR/SRC/SYS/KERNEL.S.FIO
|
||||||
.INB USR/SRC/SYS/KERNEL.S.IO
|
.INB USR/SRC/SYS/KERNEL.S.IO
|
||||||
|
********* TMP ***** go to A2osX.D2
|
||||||
|
.INB USR/SRC/SYS/KERNEL.S.MATH
|
||||||
.LIST ON
|
.LIST ON
|
||||||
DevMgr.FreeMem .EQ *
|
DevMgr.FreeMem .EQ *
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
|
Loading…
x
Reference in New Issue
Block a user