Digital Research
This commit is contained in:
2020-11-06 18:50:37 +01:00
parent 621ed8ccaf
commit 31738079c4
8481 changed files with 1888323 additions and 0 deletions

View File

@@ -0,0 +1,171 @@
$title ('MP/M 1.1 Tick Process')
name tick
cseg
;tick:
;do;
;/*
; Copyright (C) 1979, 1980
; Digital Research
; P.O. Box 579
; Pacific Grove, CA 93950
;
; Revised:
; 18 Jan 80 by Thomas Rolander
;*/
;$include (common.lit)
;$nolist
;$include (proces.lit)
;$nolist
;$include (xdos.lit)
;$nolist
;$include (xdos.ext)
;$nolist
;$include (bdosi.ext)
;$nolist
;$include (datapg.ext)
;$nolist
; xdos:
extrn xdos
; procedure (func,info) address external;
; declare func byte;
; declare info address;
; end xdos;
; stpclk:
extrn stpclk
; procedure external;
; end stpclk;
; declare dlr address external;
extrn dlr
; declare drl address exteranl;
extrn drl
dseg
;/*
; Tick Process Data Segment
;*/
; declare tick$pd process$descriptor public
; initial (0,rtr$status,10,tick$entrypt,
; 'Tick ',0,0ffh,0,0,0);
tickpd:
public tickpd
extrn clockpd
dw clockpd ; pl
db 0 ; status
db 10 ; priority
dw tickentrypt ; stkptr
db 'Tick ' ; name
db $-$ ; console
db 0ffh ; memseg (system)
dw $-$ ; b
dw $-$ ; thread
dw $-$ ; disk set DMA
db $-$ ; disk select / user code
dw $-$ ; dcnt
db $-$ ; searchl
dw $-$ ; searcha
ds 2 ; drvact
ds 20 ; registers
ds 2 ; scratch
; declare tick$stk (10) address
; initial (restarts,.tick);
tickstk:
dw 0c7c7h,0c7c7h,0c7c7h
dw 0c7c7h,0c7c7h,0c7c7h
dw 0c7c7h,0c7c7h,0c7c7h
tickentrypt:
dw tick
; declare ret byte;
; declare pdadr address;
; declare pd based pdadr process$descriptor;
cseg
;/*
; tick:
;*/
; tick:
tick:
; procedure;
; do forever;
@4:
; ret = xdos (flag$wait,1);
MVI E,1
MVI C,84H
CALL XDOS
; if dlr <> 0 then
LHLD DLR
MOV A,H
ORA L
JZ @4
; do;
; pdadr = dlr;
XCHG
; if (pd.b := pd.b - 1) = 0 then
LXI H,10H
DAD D
DCR M
JNZ @2
INX H
MOV A,M
ORA A
JZ @6
DCR M
JMP @2
; do while (pdadr <> 0) and (pd.b = 0);
@6: ; DE = pdadr, HL = pd.b
MOV A,D
ORA E
JZ @2
LXI H,10H
DAD D
MOV A,M
INX H
ORA M
JNZ @2
; dlr = pd.pl;
XCHG
MOV E,M
INX H
MOV D,M
XCHG
SHLD DLR
; pd.pl = drl;
LHLD DRL
XCHG
MOV M,D
DCX H
MOV M,E
; drl = pdadr;
SHLD DRL
; pdadr = dlr;
LHLD DLR
XCHG
; end;
JMP @6
@7:
@2:
; if dlr = 0 then call stp$clk;
LHLD DLR
MOV A,H
ORA L
CZ STPCLK
; end;
; end;
JMP @4
; end tick;
;end tick;
END