|
|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 4608 (0x1200)
Types: TextFile
Names: »tinitboot«
└─⟦2c55ea56f⟧ Bits:30001844 SW-save af projekt 1000, Alarm-system
└─⟦6b41451d2⟧
└─⟦this⟧ »tinitboot«
,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◀