DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

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

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦e10f2c335⟧ TextFile

    Length: 4608 (0x1200)
    Types: TextFile
    Names: »tinitboot«

Derivation

└─⟦2c55ea56f⟧ Bits:30001844 SW-save af projekt 1000, Alarm-system
    └─⟦6b41451d2⟧ 
        └─⟦this⟧ »tinitboot« 

TextFile

,generates binitboot to revision 5
job bbl 2 600,
perm mini 100 1,
temp disc 5000 50,
size 92000,
time 6 0
mode list.yes
(
  binitboot = set 1 mini
  if ok.no
  finis
  platonenv = set bs dummyenv
  binitboot = pascal80 short.yes list.yes codelist.yes 
  if ok.no
  finis
  pliblookup binitboot
  scope user binitboot
  finis
)

process initboot;
(*$5 1 0*) (*$5 2 0*) (*$6 11 0*)
beginbody 100:
; the micro program has initialized the following registers
; at autoload:
; reg(0..7)    := ffff;
; reg(10..2567):= ffff;
; regset(1).lm := ffff
;          .ps := 0000
;          .pb := 00c0
;          .lu := ffff
;          .sf := ffff
;          .pr := ffff
;          .ib := 00d0
;          .ic := 0002
;
b. c#,d#,auto,exit.

c#0  = 2048    ; size of initboot stack
c#1  = -2048   ; first of initboot stack
c#10 = 28      ; ram bitmap index0
c#11 = 29      ; ram bitmap index1
c#12 = 174     ; first * 16 + last
c#20 = 10      ; index of regset(1).pb
c#21 = 12      ; index of regset(1).sf
c#22 = 13      ; index of regset(1).pr
c#30 = 3       ; displacement from exitlabel to top of initboot
c#31 = 26      ; exception point displacement in descriptorsegment
c#32 = 36      ; last_param_offset in descriptorsegment
c#33 = 0       ; descriptorsegmentlength displacement
c#34 = 22      ; entrypoint displacement in descriptorsegment
; global variables
d#0 = -1       ; rambitmap : set of 0..15
d#1 = d#0+2    ; processbase : integer
d#2 = d#1+2    ;top of global variables
auto:                             ;auto_entry:
     ;init regset(1)
     stnhb c#0                    ; init lu , last used
     rechw c#1 + 1                ; init sf , local frame
     revpw                        ;
     rechw c#21                   ;
     crput                        ;
     rechw c#22                   ; init pr , global frame
     crput                        ;
     renhb d#2+1                  ; get room for global variables
     rechw c#20                   ; get pb
     crget
     stvgw d#1                    ;
     rechw c#10                   ; get ram0
     crram                        ;
     stvgb d#0                    ;
     rechw c#11                   ; get ram1
     crram                        ;
     stvgb d#0 + 1                ;

b. l#.
     rechw 16                     ; compute max ram number
l#0: reasd -1                     ; module no := module no -1
     revpw                        ;
     revgw d#0                    ;
     rechw 2                      ;
     settm                        ;
     jmzeq l#0                    ;
     stvgf d#1 , c#12             ;
e.

     revgw d#1                    ;
     rechw c#20                   ;
     crput                        ;
     stnhb d#2+1                  ; pop nonsens global variables
     reaad exit                   ;
     reasd c#30+1                 ; make address next even
     rechw -2                     ;
     and                          ;
     revpd                        ; double tos
     revsw c#32                   ; move lu to last param
     reasd -4                     ;
     renpb                        ;
     revgd d#0                    ;
     revpd                        ;
     stvgd chainhead              ; chainhead := top of initbootcode
                                  ; this address is picked up by boot
     rechw -1                     ; maxstack := -1
     stvgw maxstack               ;
     rechw 16384                  ;
     revpw                        ;
     revpw                        ;
     stvgw semchain               ; own.semchain:=nill;
     stvgw refchain               ;
     stvgw shadowchain            ;
     revpd                        ;
     revsd c#31                   ; own.exceptionpoint := descriptor.exceptionpoint
     stvgd expoint                ;
     revsd c#34                   ; goto entrypoint
     jmppd                        ;
exit:
;gf = lf  and  lu =  last param offset by exit of this open routine
e.; end bootinit
entry:
exit:
exception: jmprw exception
endbody;. 

▶EOF◀