mirror of
https://github.com/A2osX/A2osX.git
synced 2024-08-14 13:29:02 +00:00
TskMgr:code rewrited with different "Init" Handling
This commit is contained in:
parent
16fb83c9f7
commit
07813cc5d6
BIN
A2OSX.BOOT.po
BIN
A2OSX.BOOT.po
Binary file not shown.
BIN
A2OSX.SRC.po
BIN
A2OSX.SRC.po
Binary file not shown.
@ -28,9 +28,9 @@ STARTPROC DHCPCLNT
|
|||||||
#MOUNT CIFS 192.168.1.5:/MSSHARE /MNT/MSSHARE
|
#MOUNT CIFS 192.168.1.5:/MSSHARE /MNT/MSSHARE
|
||||||
# End Network Section
|
# End Network Section
|
||||||
# GUI Section
|
# GUI Section
|
||||||
INSDRV DHGR.DRV
|
#INSDRV DHGR.DRV
|
||||||
INSDRV MOUSE.DRV
|
#INSDRV MOUSE.DRV
|
||||||
STARTPROC DESKTOP
|
#STARTPROC DESKTOP
|
||||||
# End GUI Section
|
# End GUI Section
|
||||||
ECHO *** End A2osX Startup file ***
|
ECHO *** End A2osX Startup file ***
|
||||||
MAN
|
MAN
|
||||||
|
@ -432,6 +432,7 @@ S.PS.F.HOLD .EQ %01000000
|
|||||||
S.PS.F.EVENT .EQ %00100000
|
S.PS.F.EVENT .EQ %00100000
|
||||||
S.PS.F.ENV .EQ %00010000
|
S.PS.F.ENV .EQ %00010000
|
||||||
S.PS.F.SLEEP .EQ %00001000
|
S.PS.F.SLEEP .EQ %00001000
|
||||||
|
S.PS.F.INIT .EQ %00000100
|
||||||
S.PS.ID .EQ 1
|
S.PS.ID .EQ 1
|
||||||
S.PS.PID .EQ 2
|
S.PS.PID .EQ 2
|
||||||
S.PS.hCS .EQ 3
|
S.PS.hCS .EQ 3
|
||||||
|
@ -17,7 +17,7 @@ DevMgr.HiMem .EQ $FFFA Protect IRQ vectors in Aux LC
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.GetDevByIDA cmp DevMgr.LastDevID
|
S.GetDevByIDA cmp DevMgr.LastDevID
|
||||||
beq .1
|
beq .1
|
||||||
bcs .9
|
bcs S.GetDevDNF
|
||||||
|
|
||||||
.1 stz S.GetDevByIDA.T
|
.1 stz S.GetDevByIDA.T
|
||||||
|
|
||||||
@ -36,8 +36,6 @@ S.GetDevByIDA cmp DevMgr.LastDevID
|
|||||||
adc /DevMgr.Table
|
adc /DevMgr.Table
|
||||||
rts CC
|
rts CC
|
||||||
|
|
||||||
.9 lda #DEVMGR.ERRDNF
|
|
||||||
rts CS
|
|
||||||
S.GetDevByIDA.T .BS 1
|
S.GetDevByIDA.T .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* GetDevIDByNameA
|
* GetDevIDByNameA
|
||||||
@ -87,15 +85,14 @@ S.GetDevByNameYA
|
|||||||
inx
|
inx
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
.9 lda #DEVMGR.ERRDNF
|
S.GetDevDNF lda #DEVMGR.ERRDNF
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.GetDevInfoA jsr S.GetDevByIDA
|
S.GetDevInfoA jsr S.GetDevByIDA
|
||||||
bcs .9
|
bcs S.GetDevDNF
|
||||||
>STYA ZPQuickPtr1
|
>STYA ZPQuickPtr1
|
||||||
ldx #DEVMGR.GETINFO
|
ldx #DEVMGR.GETINFO
|
||||||
jmp (ZPQuickPtr1)
|
jmp (ZPQuickPtr1)
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DevMgr.Free .BS 2
|
DevMgr.Free .BS 2
|
||||||
DevMgr.DevID .BS 1
|
DevMgr.DevID .BS 1
|
||||||
|
@ -5,88 +5,44 @@ INC 1
|
|||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* S.ExecProcessNewEnvYA
|
* S.SelectProcessA
|
||||||
* S.ExecProcessYA (Blocking Parent PID)
|
* In : A=PSID
|
||||||
* S.CreateProcessNewEnvYA
|
|
||||||
* S.CreateProcessYA (Non Blocking)
|
|
||||||
* in :
|
|
||||||
* Y,A = PTR To Cmd Line
|
|
||||||
* out :
|
|
||||||
* A = Child PSID
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.ExecProcessNewEnvYA
|
S.SelectProcessA
|
||||||
ldx #S.PS.F.ENV
|
tay
|
||||||
.HS 2C bit abs
|
bne S.SelectProcessN
|
||||||
*--------------------------------------
|
S.SelectProcess0
|
||||||
S.ExecProcessYA ldx #0
|
>LDYAI TskMgr.Table Make PS #0 as current process
|
||||||
jsr S.CreateProcess
|
>STYA pPs
|
||||||
bcs .9 terminated, do not set PID as HOLD
|
bra S.SelectProcessDev
|
||||||
|
S.SelectProcessN
|
||||||
|
jsr S.GetPSByIDA
|
||||||
|
bcs *
|
||||||
|
>STYA pPs
|
||||||
|
|
||||||
ldy #S.PS.CID
|
S.SelectProcess ldy #S.PS.hCS
|
||||||
sta (pPs),y
|
|
||||||
|
|
||||||
pha Save Child PID
|
|
||||||
lda (pPs)
|
|
||||||
ora #S.PS.F.HOLD
|
|
||||||
sta (pPs)
|
|
||||||
pla Get Back PID
|
|
||||||
|
|
||||||
clc
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
S.CreateProcessNewEnvYA
|
|
||||||
ldx #S.PS.F.ENV
|
|
||||||
.HS 2C bit abs
|
|
||||||
*--------------------------------------
|
|
||||||
S.CreateProcessYA
|
|
||||||
ldx #0
|
|
||||||
S.CreateProcess stx S.CreateChildProcess.Flags
|
|
||||||
|
|
||||||
jsr S.ExpandPStrYA
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
stx S.CreateProcess.hCmdLine
|
|
||||||
>STYA S.CreateProcess.CmdLine
|
|
||||||
|
|
||||||
jsr S.CreateChildProcess
|
|
||||||
bcs .98
|
|
||||||
|
|
||||||
sta S.CreateProcess.CPSID
|
|
||||||
jsr S.SelectProcessA
|
|
||||||
|
|
||||||
jsr S.InitProcess
|
|
||||||
bcs .97 Init Failed or exit?
|
|
||||||
|
|
||||||
ldy #S.PS.PID switch back to Parent Process
|
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
|
jsr S.GetMemPtrA
|
||||||
|
>STYA pCode
|
||||||
|
|
||||||
jsr S.SelectProcessA
|
ldy #S.PS.hDS
|
||||||
|
|
||||||
lda S.CreateProcess.CPSID
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.97 pha save error code
|
|
||||||
ldy #S.PS.PID switch back to Parent Process
|
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
jsr S.SelectProcessA
|
beq S.SelectProcessDev
|
||||||
|
|
||||||
lda S.CreateProcess.CPSID
|
jsr S.GetMemPtrA
|
||||||
jsr S.FreeProcessA
|
>STYA pData
|
||||||
pla get back error code
|
|
||||||
|
|
||||||
.98 pha
|
S.SelectProcessDev
|
||||||
lda S.CreateProcess.hCmdLine
|
ldy #S.PS.hOUTDEV
|
||||||
jsr S.FreeMemA
|
lda (pPs),y
|
||||||
pla
|
beq .8
|
||||||
|
|
||||||
.99 sec
|
jsr S.GetDevByIDA
|
||||||
|
>STYA pDev
|
||||||
|
|
||||||
|
.8 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.CreateProcess.hCmdLine .BS 1
|
|
||||||
S.CreateProcess.CmdLine .BS 2
|
|
||||||
S.CreateProcess.CPSID .BS 1
|
|
||||||
*--------------------------------------
|
|
||||||
* S.GetPSByIDA
|
* S.GetPSByIDA
|
||||||
* In :
|
* In :
|
||||||
* A = PID
|
* A = PID
|
||||||
@ -148,16 +104,71 @@ S.Sleep pla get PC LO
|
|||||||
clc No error,
|
clc No error,
|
||||||
rts back to Kernel
|
rts back to Kernel
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* PRIVATE
|
* S.ExecProcessNewEnvYA
|
||||||
|
* S.ExecProcessYA (Blocking Parent PID)
|
||||||
|
* S.CreateProcessNewEnvYA
|
||||||
|
* S.CreateProcessYA (Non Blocking)
|
||||||
|
* in :
|
||||||
|
* Y,A = PTR To Cmd Line
|
||||||
|
* out :
|
||||||
|
* A = Child PSID
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* S.CreateChildProcess
|
S.ExecProcessNewEnvYA
|
||||||
|
ldx #S.PS.F.ENV+S.PS.F.HOLD
|
||||||
|
.HS 2C bit abs
|
||||||
|
S.ExecProcessYA ldx #S.PS.F.HOLD
|
||||||
|
.HS 2C bit abs
|
||||||
|
S.CreateProcessNewEnvYA
|
||||||
|
ldx #S.PS.F.ENV
|
||||||
|
.HS 2C bit abs
|
||||||
|
S.CreateProcessYA
|
||||||
|
ldx #0
|
||||||
|
stx S.CreateProcess.Flags
|
||||||
|
|
||||||
|
jsr S.ExpandPStrYA
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
stx S.CreateProcess.hCmdLine
|
||||||
|
>STYA S.CreateProcess.CmdLine
|
||||||
|
|
||||||
|
jsr S.CreateProcess.Child
|
||||||
|
bcs .98
|
||||||
|
|
||||||
|
sta S.CreateProcess.CPSID
|
||||||
|
|
||||||
|
jsr S.CreateProcess.Init
|
||||||
|
bcs .97
|
||||||
|
|
||||||
|
lda S.CreateProcess.CPSID
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.97 pha save error code
|
||||||
|
lda S.CreateProcess.CPSID
|
||||||
|
jsr S.FreeProcessA
|
||||||
|
pla get back error code
|
||||||
|
|
||||||
|
.98 pha
|
||||||
|
lda S.CreateProcess.hCmdLine
|
||||||
|
jsr S.FreeMemA
|
||||||
|
pla
|
||||||
|
|
||||||
|
.99 sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
S.CreateProcess.Flags .BS 1
|
||||||
|
S.CreateProcess.hCmdLine .BS 1
|
||||||
|
S.CreateProcess.CmdLine .BS 2
|
||||||
|
S.CreateProcess.CPSID .BS 1
|
||||||
|
*--------------------------------------
|
||||||
|
* S.CreateProcess.Child
|
||||||
* in :
|
* in :
|
||||||
* out :
|
* out :
|
||||||
* A = PSID
|
* A = PSID
|
||||||
* we cannot use ZPQuickPtrs1 & 2
|
* we cannot use ZPQuickPtrs1 & 2
|
||||||
* because of calling S.NewPStrYA & S.DupEnvA
|
* because of calling S.NewPStrYA & S.DupEnvA
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.CreateChildProcess
|
S.CreateProcess.Child
|
||||||
>LDYAI TskMgr.Table+S.PS.SIZE
|
>LDYAI TskMgr.Table+S.PS.SIZE
|
||||||
>STYA ZPQuickPtr3
|
>STYA ZPQuickPtr3
|
||||||
|
|
||||||
@ -179,17 +190,13 @@ S.CreateChildProcess
|
|||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.2 cpx #K.PS.MAX
|
.2 cpx #K.PS.MAX
|
||||||
bne .30
|
bne .3
|
||||||
|
|
||||||
lda #TSKMGR.ERROOH
|
lda #TSKMGR.ERROOH
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.30 inc TSKMGR.SIZE
|
.3 inc TSKMGR.SIZE
|
||||||
|
|
||||||
.3 lda #S.PS.F.INUSE
|
|
||||||
ora S.CreateChildProcess.Flags
|
|
||||||
sta (ZPQuickPtr3)
|
|
||||||
|
|
||||||
.4 inc TSKMGR.LASTID Get a PSID not alredy running
|
.4 inc TSKMGR.LASTID Get a PSID not alredy running
|
||||||
beq .4 not = 0
|
beq .4 not = 0
|
||||||
@ -203,20 +210,23 @@ S.CreateChildProcess
|
|||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
ldy #S.PS.hCS
|
ldy #S.PS.hCS
|
||||||
|
|
||||||
.5 sta (ZPQuickPtr3),y Blank Everything in this S.PS
|
.5 sta (ZPQuickPtr3),y Blank Everything in this S.PS
|
||||||
iny
|
iny
|
||||||
cpy #S.PS.SIZE
|
cpy #S.PS.SIZE
|
||||||
bne .5
|
bne .5
|
||||||
|
|
||||||
lda S.CreateChildProcess.Flags
|
lda #S.PS.F.ENV
|
||||||
and #S.PS.F.ENV need to create ENV & Prefix ?
|
bit S.CreateProcess.Flags need to create ENV & Prefix ?
|
||||||
beq .6
|
beq .6 no...
|
||||||
|
|
||||||
|
sta (ZPQuickPtr3) Mark this PS with ENV flag
|
||||||
|
|
||||||
ldy #S.PS.hPREFIX copy hPREFIX...
|
ldy #S.PS.hPREFIX copy hPREFIX...
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
jsr S.GetMemPtrA
|
jsr S.GetMemPtrA
|
||||||
jsr S.NewPStrYA
|
jsr S.NewPStrYA
|
||||||
bcs .99
|
bcs .9
|
||||||
|
|
||||||
txa
|
txa
|
||||||
ldy #S.PS.hPREFIX
|
ldy #S.PS.hPREFIX
|
||||||
@ -225,7 +235,7 @@ S.CreateChildProcess
|
|||||||
ldy #S.PS.hENV ...and hENV from parent PS
|
ldy #S.PS.hENV ...and hENV from parent PS
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
jsr S.DupEnvA
|
jsr S.DupEnvA
|
||||||
bcs .99
|
bcs .9
|
||||||
|
|
||||||
ldy #S.PS.hENV
|
ldy #S.PS.hENV
|
||||||
sta (ZPQuickPtr3),y
|
sta (ZPQuickPtr3),y
|
||||||
@ -240,6 +250,7 @@ S.CreateChildProcess
|
|||||||
sta (ZPQuickPtr3),y
|
sta (ZPQuickPtr3),y
|
||||||
|
|
||||||
.8 ldy #S.PS.hINDEV
|
.8 ldy #S.PS.hINDEV
|
||||||
|
|
||||||
.81 lda (pPs),y
|
.81 lda (pPs),y
|
||||||
sta (ZPQuickPtr3),y
|
sta (ZPQuickPtr3),y
|
||||||
iny
|
iny
|
||||||
@ -252,21 +263,27 @@ S.CreateChildProcess
|
|||||||
ldy #S.PS.PID
|
ldy #S.PS.PID
|
||||||
sta (ZPQuickPtr3),y
|
sta (ZPQuickPtr3),y
|
||||||
|
|
||||||
|
ldy #S.PS.CID
|
||||||
|
lda TSKMGR.LASTID
|
||||||
|
sta (pPs),y
|
||||||
|
|
||||||
|
lda #S.PS.F.HOLD
|
||||||
|
bit S.CreateProcess.Flags
|
||||||
|
beq .82
|
||||||
|
|
||||||
|
ora (pPs)
|
||||||
|
sta (pPs) HOLD parent PS if ExecProcess
|
||||||
|
|
||||||
|
.82 lda #S.PS.F.INUSE+S.PS.F.INIT
|
||||||
|
ora (ZPQuickPtr3)
|
||||||
|
sta (ZPQuickPtr3) Make this PS Init....
|
||||||
|
|
||||||
lda TSKMGR.LASTID
|
lda TSKMGR.LASTID
|
||||||
clc Exit with A=PSID
|
clc Exit with A=PSID
|
||||||
rts
|
.9 rts
|
||||||
|
|
||||||
.99 sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.CreateChildProcess.Flags
|
S.CreateProcess.Init
|
||||||
.BS 1
|
>LDYA S.CreateProcess.CmdLine
|
||||||
*--------------------------------------
|
|
||||||
* S.InitProcess
|
|
||||||
* In :
|
|
||||||
* A = hMem To Full Cmd Line
|
|
||||||
*--------------------------------------
|
|
||||||
S.InitProcess >LDYA S.CreateProcess.CmdLine
|
|
||||||
jsr S.PStr2StrArrayYA
|
jsr S.PStr2StrArrayYA
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
@ -275,7 +292,7 @@ S.InitProcess >LDYA S.CreateProcess.CmdLine
|
|||||||
|
|
||||||
txa
|
txa
|
||||||
ldy #S.PS.hCMDLINE
|
ldy #S.PS.hCMDLINE
|
||||||
sta (pPs),y
|
sta (ZPQuickPtr3),y
|
||||||
|
|
||||||
pla Restore PTR...
|
pla Restore PTR...
|
||||||
ply
|
ply
|
||||||
@ -283,83 +300,34 @@ S.InitProcess >LDYA S.CreateProcess.CmdLine
|
|||||||
jsr S.LoadBinYA A = BinPath hMem
|
jsr S.LoadBinYA A = BinPath hMem
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA pCode save PTR to Code Segment
|
>STYA ZPQuickPtr4 save PTR to Code Segment
|
||||||
txa
|
txa
|
||||||
ldy #S.PS.hCS
|
ldy #S.PS.hCS
|
||||||
sta (pPs),y save CS hMem in TSKSLOT
|
sta (ZPQuickPtr3),y save CS hMem in TSKSLOT
|
||||||
|
|
||||||
ldy #H.BIN.BIN.DS.SIZE+1
|
ldy #H.BIN.BIN.DS.SIZE+1
|
||||||
lda (pCode),y Load DS.SIZE HI
|
lda (ZPQuickPtr4),y Load DS.SIZE HI
|
||||||
tax
|
tax
|
||||||
dey
|
dey
|
||||||
ora (pCode),y
|
ora (ZPQuickPtr4),y
|
||||||
|
|
||||||
beq .2 DS.SIZE=0...
|
beq .2 DS.SIZE=0...
|
||||||
|
|
||||||
lda (pCode),y
|
lda (ZPQuickPtr4),y
|
||||||
>PUSHAX Push DS.SIZE
|
>PUSHAX Push DS.SIZE
|
||||||
>PUSHBI S.MEM.F.INIT0 Clear DS
|
>PUSHBI S.MEM.F.INIT0 Clear DS
|
||||||
jsr S.GetMem
|
jsr S.GetMem
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA pData
|
|
||||||
txa
|
txa
|
||||||
ldy #S.PS.hDS
|
ldy #S.PS.hDS
|
||||||
sta (pPs),y save DS hMem in TSKSLOT
|
sta (ZPQuickPtr3),y save DS hMem in TSKSLOT
|
||||||
|
|
||||||
.2 lda (pCode)
|
.2
|
||||||
cmp #H.BIN.HEADER.BIN65
|
|
||||||
bne *
|
|
||||||
|
|
||||||
ldx #TSKMGR.INIT
|
clc
|
||||||
jsr pCodeJmp Call INIT function
|
|
||||||
bcc .9
|
|
||||||
|
|
||||||
pha save error code
|
|
||||||
ldx #TSKMGR.QUIT
|
|
||||||
jsr pCodeJmp Call QUIT function
|
|
||||||
pla get back error code
|
|
||||||
sec
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* S.SelectProcessA
|
|
||||||
* In : A=PSID
|
|
||||||
*--------------------------------------
|
|
||||||
S.SelectProcessA
|
|
||||||
tay
|
|
||||||
bne S.SelectProcessN
|
|
||||||
S.SelectProcess0
|
|
||||||
>LDYAI TskMgr.Table Make PS #0 as current process
|
|
||||||
>STYA pPs
|
|
||||||
bra S.SelectProcessDev
|
|
||||||
S.SelectProcessN
|
|
||||||
jsr S.GetPSByIDA
|
|
||||||
bcs *
|
|
||||||
>STYA pPs
|
|
||||||
|
|
||||||
S.SelectProcess ldy #S.PS.hCS
|
|
||||||
lda (pPs),y
|
|
||||||
jsr S.GetMemPtrA
|
|
||||||
>STYA pCode
|
|
||||||
|
|
||||||
ldy #S.PS.hDS
|
|
||||||
lda (pPs),y
|
|
||||||
beq S.SelectProcessDev
|
|
||||||
|
|
||||||
jsr S.GetMemPtrA
|
|
||||||
>STYA pData
|
|
||||||
|
|
||||||
S.SelectProcessDev
|
|
||||||
ldy #S.PS.hOUTDEV
|
|
||||||
lda (pPs),y
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
jsr S.GetDevByIDA
|
|
||||||
>STYA pDev
|
|
||||||
|
|
||||||
.8 clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
* S.FreeProcessA
|
* S.FreeProcessA
|
||||||
* In : A = PID to free
|
* In : A = PID to free
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -7,18 +7,17 @@ AUTO 6
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* S.TskMgrRun
|
* S.TskMgrRun
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.TskMgrRun >LDYAI TskMgr.Table+S.PS.SIZE
|
S.TskMgrRun >LDYAI TskMgr.Table+S.PS.SIZE skip PS 0
|
||||||
>STYA pPs
|
>STYA pPs
|
||||||
|
|
||||||
lda TSKMGR.SIZE
|
lda TSKMGR.SIZE
|
||||||
|
dec skip PS 0
|
||||||
sta TSKMGR.COUNT
|
sta TSKMGR.COUNT
|
||||||
|
beq .8 no process....
|
||||||
|
|
||||||
.1 dec TSKMGR.COUNT skip PS 0
|
.1 lda (pPs) get S.PS.F
|
||||||
beq .8
|
|
||||||
|
|
||||||
lda (pPs) get S.PS.F
|
|
||||||
bit #S.PS.F.INUSE In use ?
|
bit #S.PS.F.INUSE In use ?
|
||||||
beq .5
|
beq .7
|
||||||
|
|
||||||
bit #S.PS.F.HOLD Waiting for Another Task to Terminate?
|
bit #S.PS.F.HOLD Waiting for Another Task to Terminate?
|
||||||
beq .2
|
beq .2
|
||||||
@ -26,7 +25,7 @@ S.TskMgrRun >LDYAI TskMgr.Table+S.PS.SIZE
|
|||||||
ldy #S.PS.CID
|
ldy #S.PS.CID
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
jsr S.GetPSByIDA
|
jsr S.GetPSByIDA
|
||||||
bcc .5 yes, running....
|
bcc .7 yes, running....
|
||||||
|
|
||||||
lda (pPs) get S.PS.F
|
lda (pPs) get S.PS.F
|
||||||
and #$FF^S.PS.F.HOLD unmark as HOLD
|
and #$FF^S.PS.F.HOLD unmark as HOLD
|
||||||
@ -35,7 +34,16 @@ S.TskMgrRun >LDYAI TskMgr.Table+S.PS.SIZE
|
|||||||
.2 jsr S.SelectProcess
|
.2 jsr S.SelectProcess
|
||||||
|
|
||||||
lda (pPS)
|
lda (pPS)
|
||||||
bit #S.PS.F.SLEEP Is this PS sleeping?
|
bit #S.PS.F.INIT
|
||||||
|
beq .20
|
||||||
|
|
||||||
|
and #$FF^S.PS.F.INIT unmark as INIT
|
||||||
|
sta (pPS)
|
||||||
|
|
||||||
|
ldx #TSKMGR.INIT
|
||||||
|
bra .31
|
||||||
|
|
||||||
|
.20 bit #S.PS.F.SLEEP Is this PS sleeping?
|
||||||
beq .3 no, call TSKMGR.RUN
|
beq .3 no, call TSKMGR.RUN
|
||||||
|
|
||||||
and #$FF^S.PS.F.SLEEP unmark as SLEEP
|
and #$FF^S.PS.F.SLEEP unmark as SLEEP
|
||||||
@ -55,8 +63,8 @@ S.TskMgrRun >LDYAI TskMgr.Table+S.PS.SIZE
|
|||||||
bra .4
|
bra .4
|
||||||
|
|
||||||
.3 ldx #TSKMGR.RUN
|
.3 ldx #TSKMGR.RUN
|
||||||
jsr pCodeJmp Call RUN function
|
.31 jsr pCodeJmp Call INIT/RUN function
|
||||||
.4 bcc .5 RUN said CS=QUIT?
|
.4 bcc .7 INIT/RUN said CS=QUIT?
|
||||||
|
|
||||||
ldx #TSKMGR.QUIT yes, quit this process
|
ldx #TSKMGR.QUIT yes, quit this process
|
||||||
jsr pCodeJmp Call QUIT function
|
jsr pCodeJmp Call QUIT function
|
||||||
@ -66,12 +74,14 @@ S.TskMgrRun >LDYAI TskMgr.Table+S.PS.SIZE
|
|||||||
jsr S.FreeProcessA
|
jsr S.FreeProcessA
|
||||||
bcs *
|
bcs *
|
||||||
|
|
||||||
.5 lda pPs
|
.7 lda pPs
|
||||||
clc
|
clc
|
||||||
adc #S.PS.SIZE
|
adc #S.PS.SIZE
|
||||||
sta pPs
|
sta pPs
|
||||||
bcc .1
|
bcc .71
|
||||||
inc pPs+1
|
inc pPs+1
|
||||||
|
|
||||||
|
.71 dec TSKMGR.COUNT
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
|
Loading…
Reference in New Issue
Block a user