1 " ***********************************************************
 2 " *                                                         *
 3 " * Copyright, (C) Honeywell Bull Inc., 1987                *
 4 " *                                                         *
 5 " * Copyright, (C) Honeywell Information Systems Inc., 1982 *
 6 " *                                                         *
 7 " ***********************************************************
 8 
 9 " BOOTLOAD_FLAGBOX
10 "
11 " This program initializes the segment "flagbox", used for communication
12 " between bce/Multics.
13 "
14 " 11/04/80, W. Olin Sibert
15 " 83-84, Keith Loepere for the MR11 bce.
16 
17           name      bootload_flagbox
18           decor     L68
19 
20           include   bootload_equs
21           include   flagbox
22           include   toe_hold
23 " ^L
24 "
25 " This code is executed just after we have created the bootload DSEG,
26 " before anything else is done.
27 
28           segdef    preinit
29 
30 preinit:  Bpush
31           epp       seg,template_slt_$toehold_ptr,*
32           epp       seg2,template_slt_$bos_toehold_ptr,*
33 
34           mlr       (),(pr),fill(000)   " Clear out the flagbox
35           desc9a    0,0
36           desc9a    seg|fgbx.flags_word,fgbx_size*4
37 
38           sdbr      seg|fgbx.hc_dbr
39 
40           ldx7      template_slt_$slt_ptr
41           stx7      seg|fgbx.slt_segno
42 
43           szn       bootload_info$assume_config_deck " see if info from
44           tze       bos_absent          " IOM suggests BOS
45 
46 " We were booted either from BOS or an IIOC.  Check for BOS sentinel.
47 
48           cmpc      (pr),()
49           desc9a    seg2|20,32                    " BOS sentinel in flagbox
50           desc9a    test_sentinel,32
51           tnz       bos_absent
52 
53           stz       bootload_info$cold_disk_mpc   " BOS loaded this
54 
55           mlr       (),(pr)                       " save BOS entries
56           desc9a    BOS_entries,3*2*4
57           desc9a    seg|TOE_HOLD_BOS_ENTRY*2,3*2*4
58           tra       return
59 
60 bos_absent:
61           stz       bootload_info$assume_config_deck
62 
63           lda       =o400000,du
64           sta       bootload_info$cold_disk_mpc   " we must load
65 
66           ldaq      seg|TOE_HOLD_CRASH_ENTRY*2    " make goto BOS -> goto bce
67           staq      seg|TOE_HOLD_BOS_ENTRY*2
68           staq      seg|TOE_HOLD_BOS_NO_SAVE_ENTRY*2
69           staq      seg|TOE_HOLD_BOS_MULTICS_ENTRY*2
70 
71 return:   ldaq      seg|TOE_HOLD_CRASH_ENTRY      " make 10000 -> goto bce
72           staq      seg2|0
73           staq      seg2|2
74           staq      seg2|4
75           Breturn
76 
77           bool      bos_origsetup,10000
78           bool      bos_switchentry,7
79           bool      bos_bos_entry,10
80           bool      bos_mulentry,11
81           bool      bos_tscu,370
82 
83           inhibit   on                            <><><>ON<><><>
84 BOS_entries:
85           scu       bos_origsetup+bos_tscu
86           ret       bos_origsetup+bos_switchentry
87 
88           scu       bos_origsetup+bos_tscu
89           ret       bos_origsetup+bos_bos_entry
90 
91           scu       bos_origsetup+bos_tscu
92           ret       bos_origsetup+bos_mulentry
93 
94           inhibit   off                           <><><>OFF<><><>
95 
96 test_sentinel:
97           aci       "Flagbox & Toehold Valid",32
98           end