Files
Digital-Research-Source-Code/MPM OPERATING SYSTEMS/MPM-86/MPM-86 2.0 SOURCES/02/RTMIF.RTM
Sepp J Morris 31738079c4 Upload
Digital Research
2020-11-06 18:50:37 +01:00

103 lines
2.5 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;*****************************************************
;*
;* RTM Interface Routines
;*
;*****************************************************
cseg
org 0
jmp init ;RTM initialization
jmp entry ;RTM entry point
sysdat dw 0 ;SYSDAT segment
supervisor equ offset $
rw 2 ;SUP entry point
db 'COPYRIGHT (C) 1981,'
db ' DIGITAL RESEARCH '
serial db '654321'
;==== ===========================
init: ; RTM module Initialization
;==== ===========================
mov sysdat,ds ;save sysdat
mov bx,offset supmod ;init supif
mov si,offset supervisor
mov ax,[bx]
mov cs:[si],ax
mov ax,2[bx]
mov cs:2[si],ax
mov bx,(offset dispatcher) ;init interrupt pdisp
mov word ptr [bx],offset fdisp
mov word ptr 2[bx],cs
mov bx,(offset rtm_pdisp) ;init intermodule pdisp
mov word ptr [bx],offset farpdisp
mov word ptr 2[bx],cs
;create tick and idle process
mov bx,offset tickpd ;Tick
mov ax,p_uda[bx]
add ax,sysdat
push es ! mov es,ax
mov si,supervisor
mov ax,cs:2[si]
mov u_initcs,ax ! pop es
mov bx,offset idlepd ;IDLE
mov ax,p_uda[bx]
add ax,sysdat
push es ! mov es,ax
mov si,supervisor
mov ax,cs:2[si]
mov u_initcs,ax ! pop es
mov dx,bx ! call proc_creat
;init is now a process and can run
;concurrently with idle process
retf
;*****************************************************
;*
;* RTM Function Table
;*
;*****************************************************
function dw sysreset_entry ;0
dw poll_entry ;1
dw flag_wait_entry ;2
dw flag_set_entry ;3
dw makeq_entry ;4
dw openq_entry ;5
dw deleteq_entry ;6
dw readq_entry ;7
dw creadq_entry ;8-conditional readq
dw writeq_entry ;9
dw cwriteq_entry ;10-conditional writeq
dw delay_entry ;11
dw dispatch_entry ;12
dw terminate_entry ;13
dw creat_proc_entry;14
dw set_prior_entry ;15
dw pd_entry ;16-get PD address
dw abort_spec_entry;17-abort process
dw sleep_entry ;18
dw wakeup_entry ;19
dw findpdname_entry;20
;===== =================
entry: ; RTM Entry Point
;===== =================
mov ch,0 ! shl cx,1 ! mov si,cx
call cs:function[si]
rtm_ret:retf
;===== ===============
mpmif: ; MPM Interface
;===== ===============
callf cs:dword ptr .supervisor ! ret
;====== ================
xiosif: ; XIOS Interface
;====== ================
mov si,mod_entry
callf dword ptr xiosmod[si] ! ret