· Text 2842 · w8 · inlagg
Håller just på och tittar på att skriva en multitask handler för
ABC800, några som intresserade och har ideér ?
Så här lång har jag tänkt hitills:
Max 16st samtidgt gående processer, 8st jobbköer (=hur lång tid varje
process får tilldelat sig varje gång den är aktiv).
För varje process lagras följande data: Stackpekare 2 byte
Startadress 2 byte
Statusbyte 1 byte
Tidsbyte 1 byte
Statusbyten: bit 0 process nr upptagen/ledig
1 aktiv/vilande process
2 tidsuppstarts flagga
3
4
5 jobbkö
6 tillhörighet
7 -"-
Så här skriver man ett prog:
PROGEX ORG startadr
LD SP,stackadr
.
.
LD A,0
RST 30H ; Kan man använda RST 30H för eget
; bruk.
Alla anrop till task-hanteraren är tänkta att ske genom RST 30H, samt
att A registret = önskad funktion.
Följande funktioner är planerade: RST 30H
A=0 terminerar processen som gör anropet
A=1 startar jobb, HL=startadress, B=jobbkö
A=2 startar jobb, HL=startadress, B=jobbkö, C=sekund då jobbet skall
starta, jobbet startar på rätt sekund angivelse och stoppar
när det är färdigt för att åter starta nästa gång då sekund
villkoret är uppfyllt (man får ett jobb som startar med 1s mellan-
rum).
A=3 Slå ihjäl process B=PID (Process ID)
A=4 Söv ned process (den egna processen)
A=5 Söv ned process, B=PID
A=6 Väck upp process, B=PID
alla anrop för att starta process kommer att returnera A=PID Nr (1-16)
där PID Nr=0 betyder att processen ej gick att starta.
Är det någon som har förslag på fler funktioner ?
De processer som kan startas är endast assembler program som INTE gör
någon filhantering (det krockar om flera processer kör filhantering).
Ska man kunna starta processer i extern minne (typ 806/802) ?