|
|
DataMuseum.dkPresents historical artifacts from the history of: Bogika Butler |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Bogika Butler Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 2560 (0xa00)
Types: TextFile
Names: »IPREFACE.PAS«
└─⟦08e5746f0⟧ Bits:30009789/_.ft.Ibm2.50007359.imd Mogens Pelles Zilog 80,000 / EOS projekt
└─⟦this⟧ »IPREFACE.PAS«
PROCEDURE InitPreface;
VAR
d0: ExceptionVectorAreaIndexType;
(* working register D0 *)
BEGIN (* InitPreface *)
(*** Round up First_OS in KV_BotLd to align with next page *)
KV_BotLd := ((KV_BotLd + 255) div 256) * 256;
(*** Set up vector table etc. Does this match the initialization
in knelop ??? *)
(*** ??? *** Both tables initialized here are defined in Sc.sa.
Why are they not initialized there ??? They do not appear to
used in any way whatever by the intervening MMPROCS
initialization section. Is the stack space computation
algorithm involved? *)
FOR d0 := 2 TO 255 DO
BEGIN (* entry 0 and 1 initialized prior to boot loading *)
Driv_Tab(.d0.) := 0; (* channel := free *)
KV_InVec(.d0.) := addr(RteDummy);
(* interrupt address := dummy interrupt *)
Stak_Tab(.d0.) := 0; (* channel := free *)
END;
Driv_Tab(.32+9.) := -1;
(* channel 32+9 (trap #9) := reserved *)
KV_InVec(.32+9.) := addr(Test_Prt);
(* assign testprint procedure to trap #9 *)
Stack_Tab(.32+9.) := -1;
(* channel 32+9 (trap #9) := reserved *)
(**** Initialize test print *)
TstCount := 0;
TstStatus := 0;
(**** Initialize printer *)
PrtContA := 16#00;
(* select data direction register for a-part *)
PrtBuf := 16#FF;
(* all lines used for output *)
PrtContA := 16#3C;
(* assign control bits to output part *)
PrtContB := 16#00;
(* select data direction register for b-part *)
PrtStatu := 16#08;
(* all lines used for input but bit 3 ??? *)
PrtContB := 16#3C;
(* assign control bits to input part *)
NewLine;
PrtChar('E');
PrtChar('O');
PrtChar('S');
NewLine;
(**** Prepare the stack space computation algorithm *)
Stak_Tab(.0.) := Trp7Stak * 2**16 + 0; (* 0 is interrupt priority *)
Driv_Tab(.0.) := Stak_Tab(.0.); (* := used := dummy value > 0 *)
Stak_Tab(.1.) := -1; (* reserved. Entry 1 cannot be used *)
Driv_Tab(.1.) := -1; (* channel(1) := reserved *)
(*
Prt_Mem('End of preface', KV_InVec, KV_InVec - TstStatus);
*)
END; (* InitPreface *)
«eof»