DataMuseum.dk

Presents historical artifacts from the history of:

Bogika Butler

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Bogika Butler

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦416572908⟧ TextFile

    Length: 2560 (0xa00)
    Types: TextFile
    Names: »IPREFACE.PAS«

Derivation

└─⟦08e5746f0⟧ Bits:30009789/_.ft.Ibm2.50007359.imd Mogens Pelles Zilog 80,000 / EOS projekt
    └─⟦this⟧ »IPREFACE.PAS« 

TextFile

   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»