1 " ***********************************************************
2 " * *
3 " * Copyright, C Honeywell Bull Inc., 1987 *
4 " * *
5 " * Copyright, C Honeywell Information Systems Inc., 1984 *
6 " * *
7 " ***********************************************************
8
9 " HISTORY COMMENTS:
10 " 1) change86-06-24DGHowe, approve86-06-24MCR7396,
11 " audit86-11-18Schroth, install86-11-20MR12.0-1222:
12 " intialized the stack ring 0 heap_header_ptr to null
13 " END HISTORY COMMENTS
14
15
16 name bootload_1
17
18 " Initialize PL/1 environment for collection 1.
19 " Written by C. Hornig, November 1982.
20
21 " This program is transfered to at location zero by bootload_1.
22 " As a special favor, PR5 -> the LOT.
23 " Fixed June 1983 by KPL to set isot_ptr
24 " Renamed from bootload_2, '83 by KPL
25 " Modifed April 15/86 by Doug Howe to initialize heap header ptr
26 " in the stack header.
27
28 begin:
29 epaq * " get our segment number
30 lprplp lb|0,au " get linkage ptr
31 eppsb inzr_stk0$ " find the stack segment
32 eppbb prds$
33
34 eppbp prds$processor_stack " initialize the prds
35 spribp bb|stack_header.stack_begin_ptr
36 spribp bb|stack_header.stack_end_ptr
37
38 eppbp sb|stack_header.stack_begin_ptr+1,*
39 " get beginning offset
40 spribp sb|stack_header.stack_begin_ptr " save it
41 spribp sb|stack_header.stack_end_ptr
42
43 eppbp lot$ " set the lot ptrs
44 spribp bb|stack_header.lot_ptr
45 spribp sb|stack_header.lot_ptr
46 spribp bb|stack_header.isot_ptr " and isot as a favor
47 spribp sb|stack_header.isot_ptr
48
49 eppbp =its-22,* " signal ptr terminates process
50 spribp bb|stack_header.signal_ptr
51 spribp sb|stack_header.signal_ptr
52
53 eppbp pl1_operators_$operator_table Get a ptr to PL/I operators table.
54 spribp sb|stack_header.pl1_operators_ptr Store in inzr_stk0
55 spribp bb|stack_header.pl1_operators_ptr Store in prds.
56
57 eppbp pl1_operators_$operator_table+call_offset,*
58 spribp sb|stack_header.call_op_ptr
59 spribp bb|stack_header.call_op_ptr
60
61 eppbp pl1_operators_$operator_table+push_offset,*
62 spribp sb|stack_header.push_op_ptr
63 spribp bb|stack_header.push_op_ptr
64
65 eppbp pl1_operators_$operator_table+return_offset,*
66 spribp sb|stack_header.return_op_ptr
67 spribp bb|stack_header.return_op_ptr
68
69 eppbp pl1_operators_$operator_table+return_no_pop_offset,*
70 spribp sb|stack_header.ret_no_pop_op_ptr
71 spribp bb|stack_header.ret_no_pop_op_ptr
72
73 eppbp pl1_operators_$operator_table+entry_offset,*
74 spribp sb|stack_header.entry_op_ptr
75 spribp bb|stack_header.entry_op_ptr
76
77 " initialize the heap header in the stack header to null
78
79 eppbp =its-11,*
80 spribp sb|stack_header.heap_header_ptr
81 spribp bb|stack_header.heap_header_ptr
82
83 eppap no_args " no arguments
84 eppsp =its-11,* " null stack pointer
85 tra initializer$initializer " call PL/1
86
87 even
88 no_args: zero 0,4
89 zero 0,0
90 " ^L
91 include stack_header
92
93 end bootload_1
94 ^@