-
Notifications
You must be signed in to change notification settings - Fork 0
/
find_rpv_subsystem.list
1557 lines (1531 loc) · 90.9 KB
/
find_rpv_subsystem.list
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
COMPILATION LISTING OF SEGMENT find_rpv_subsystem
Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989
Compiled at: Bull HN, Phoenix AZ, System-M
Compiled on: 11/11/89 0958.2 mst Sat
Options: optimize map
1 /****^ ***********************************************************
2* * *
3* * Copyright, (C) Honeywell Bull Inc., 1987 *
4* * *
5* * Copyright, (C) Honeywell Information Systems Inc., 1984 *
6* * *
7* *********************************************************** */
8
9 /* find_rpv_subsystem -- use sys_boot_info (or ask the operator) */
10 /* to locate the RPV when there is no config deck. BIM 8/82 */
11 /* Modified 2/83 by Keith Loepere to use bce_command_processor_ and
12* environment */
13 /* Modified '83 by Keith Loepere for skipping firmware load on command. */
14 /* Modified 3/84 by Keith Loepere to use hc_load_mpc$test_controller */
15 /* Modified September of 1984 by Allen Ball to ask a better question. */
16
17 /****^ HISTORY COMMENTS:
18* 1) change(85-09-09,Farley), approve(85-09-09,MCR6979),
19* audit(86-01-17,CLJones), install(86-03-21,MR12.0-1033):
20* FIPS support.
21* 2) change(86-01-09,Fawcett), approve(86-04-11,MCR7383),
22* audit(86-06-02,GDixon), install(86-07-17,MR12.0-1097):
23* Add subvolume support for MSU3380 and MSU3390.
24* 3) change(86-04-22,Farley), approve(86-07-18,MCR7439),
25* audit(86-08-18,Fawcett), install(86-10-20,MR12.0-1189):
26* Changed to initialize all possible ss_info.flags.
27* 4) change(87-10-19,Farley), approve(88-02-26,MCR7796),
28* audit(88-03-04,Fawcett), install(88-03-15,MR12.2-1035):
29* Added use of sys_boot_info$default_rpv_data. If data in non-null then
30* operator will be queried for authentication. If data is acceptable then
31* standard rpv input request will be skipped.
32* 5) change(87-10-21,Farley), approve(88-02-26,MCR7796),
33* audit(88-03-04,Fawcett), install(88-03-15,MR12.2-1035):
34* Added validity checking of the sys_boot_info values when
35* sys_boot_info$boot_without_query is set.
36* END HISTORY COMMENTS */
37
38 /* format: style2 */
39
40 find_rpv_subsystem:
41 procedure;
42
43 /* Tasks are:
44* 1) find the rpv, using sys_boot_info if the data is valid.
45* 2) call init_early_config$disk to reflect the data.
46* 3) boot RPV firmware.
47**/
48
49 declare error_table_$bad_command_name
50 fixed bin (35) ext static;
51 declare error_table_$device_not_active
52 fixed bin (35) ext static;
53 declare sys_boot_info$default_rpv_data
54 char (24) unaligned external static;
55 declare sys_boot_info$rpv_cold_boot
56 bit (1) aligned external static;
57 declare sys_boot_info$boot_without_query
58 bit (1) aligned external static;
59 declare sys_boot_info$disk_device_has_sv
60 bit (1) aligned external static;
61 declare sys_boot_info$disk_device_sv
62 fixed bin (17) external static;
63 declare sys_boot_info$disk_device_number
64 fixed bin (6) external static;
65 declare sys_boot_info$disk_model_number
66 fixed bin external static;
67 declare sys_boot_info$disk_mpc_chanid
68 char (8) external static;
69 declare sys_boot_info$disk_mpc_model_number
70 fixed bin external static;
71
72 declare bce_query ext entry options (variable);
73 declare bce_query$yes_no entry options (variable);
74 declare boot_rpv_subsystem entry (char (*), fixed bin (35));
75 declare com_err_ entry options (variable);
76 declare hc_load_mpc$test_controller
77 entry (char (8) aligned, fixed bin (35));
78 declare ioa_ entry options (variable);
79 declare ioa_$rsnnl entry options (variable);
80 declare init_early_config$disk entry external;
81 declare syserr entry options (variable);
82 declare cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35));
83
84 declare answer char (32);
85 declare pz999 pic "z999" based;
86 declare cold_boot bit (1) aligned;
87 declare yes_no bit (1);
88 declare loaded_firmware bit (1) aligned;
89 declare skip_firmware_load bit (1) aligned;
90 declare ipc_controller bit (1) aligned init ("0"b);
91 declare controllerx fixed bin;
92 declare controller_fwid char (32);
93 declare code fixed bin (35);
94 declare ME char (32) init ("find_rpv_subsystem") internal static options (constant);
95
96 declare (addr, convert, hbound, index, null, search, string, substr, translate)
97 builtin; /* format: off */
98 /* Begin include file ...... fs_dev_types.incl.pl1 */
1 2
1 3 /****^ HISTORY COMMENTS:
1 4* 1) change(85-09-09,Farley), approve(85-09-09,MCR6979),
1 5* audit(86-01-17,CLJones), install(86-03-21,MR12.0-1033):
1 6* Add support for FIPS
1 7* 3380.
1 8* 2) change(86-04-21,Fawcett), approve(86-04-21,MCR7383),
1 9* audit(86-05-15,Coppola), install(86-07-18,MR12.0-1098):
1 10* Add the support for subvolumes for the MSU3380 and MSU3390.
1 11* 3) change(86-10-02,Fawcett), approve(86-10-02,PBF7383),
1 12* audit(86-10-23,Farley), install(86-10-28,MR12.0-1200):
1 13* Changed 3390 to 3381, "d338" to "3380" & "d339" to "3381".
1 14* END HISTORY COMMENTS */
1 15
1 16 /* Modified 5/19/76 by N. I. Morris */
1 17 /* Modified 12/27/78 by Michael R. Jordan to correct MSS0500 information */
1 18 /* Modified 4/79 by R.J.C. Kissel to add msu0501 information. */
1 19 /* Modified '82 by BIM for needs_alt_part */
1 20 /* Modified 4/84 by Chris Jones for FIPS disks */
1 21 /* Modified 12/84 by Paul Farley for FIPS disks formatted for 512wd sectors */
1 22 /* Modified 1/85 by Paul Farley to decrease the size of the 3380, until the
1 23* volmap and record stock can be expanded. */
1 24
1 25 /*
1 26********************************************************************************
1 27** *
1 28** WARNING: *
1 29** *
1 30** There exists fs_dev_types.incl.alm that must me updated when a new device *
1 31** type is added. *
1 32** *
1 33** There are other include files that contain arrays indexed by the device *
1 34** index obtained by references to MODELX or MODELN in this include file. *
1 35** These must be modified when a new device type is added: *
1 36** disk_pack.incl.pl1 *
1 37** fs_dev_types_sector.incl.pl1 (included in this include) *
1 38** *
1 39********************************************************************************
1 40**/
1 41
1 42
1 43 dcl (maxdevt init (9), /* maximum legal devt */
1 44 bulkdevt init (1), /* bulk store devt */
1 45 msu0500devt init (2), /* MSU0500 device type */
1 46 msu0451devt init (3), /* MSU0451 device type */
1 47 msu0450devt init (3), /* MSU0450 device type */
1 48 msu0400devt init (4), /* MSU0400 device type */
1 49 dsu191devt init (4), /* DSU191 device type */
1 50 dsu190devt init (5), /* DSU190 device type */
1 51 dsu181devt init (6), /* DSU181 device type */
1 52 msu0501devt init (7), /* MSU0501 device type */
1 53 fips3380devt init (8), /* 3380D FIPS device type */
1 54 fips3381devt init (9) /* 3380E FIPS device type */
1 55 ) fixed bin (4) static options (constant);
1 56
1 57 dcl MODEL (12) fixed bin static options (constant) init /* Known device model numbers */
1 58 (0, 500, 451, 450, 400, 402, 191, 190, 181, 501, 3380, 3381);
1 59
1 60 dcl MODELX (12) fixed bin static options (constant) init /* translation from model number to device type */
1 61 (1, 2, 3, 3, 4, 4, 4, 5, 6, 7, 8, 9);
1 62
1 63 dcl MODELN (9) fixed bin static options (constant) init /* translation from device type to model number */
1 64 (0, 500, 451, 400, 190, 181, 501, 3380, 3381);
1 65
1 66 dcl device_names (9) char (4) aligned static options (constant) init /* device names indexed by device type */
1 67 ("bulk", "d500", "d451", "d400", "d190", "d181", "d501", "3380", "3381");
1 68
1 69 dcl first_dev_number (9) fixed bin (17) static options (constant) init /* First valid device_number */
1 70 (1, 1, 1, 1, 1, 1, 1, 0, 0);
1 71
1 72 dcl fips_type_disk (9) bit (1) unal static options (constant) init /* ON => FIPS disk */
1 73 ("0"b,"0"b,"0"b,"0"b,"0"b,"0"b,"0"b,"1"b,"1"b);
1 74
1 75 dcl media_removable (9) bit (1) static options (constant) init /* ON => demountable pack on device */
1 76 ("0"b, "0"b, "1"b, "1"b, "1"b, "1"b, "0"b, "0"b, "0"b);
1 77
1 78 dcl shared_spindle (9) bit (1) static options (constant) init /* ON => 2 devices per spindle */
1 79 ("0"b, "1"b, "0"b, "0"b, "0"b, "0"b, "1"b, "0"b, "0"b);
1 80
1 81 dcl needs_alt_part (9) bit (1) static options (constant) init /* ON => needs alternate partition to run alternate tracks */
1 82 ("0"b, "0"b, "1"b, "1"b, "1"b, "1"b, "0"b, "0"b, "0"b);
1 83
1 84 dcl seek_command (9) bit (6) init /* Seek command: 00 => N/A, 30 => Seek_512, 34 => seek_64 */
1 85 ("00"b3,"34"b3,"34"b3,"34"b3,"34"b3,"34"b3,"34"b3,"30"b3, "30"b3);
1 86
1 87 dcl rec_per_dev (9) fixed bin (21) static options (constant) init /* table of # of records on each device */
1 88 (0, 38258, 38258, 19270, 14760, 4444, 67200, 112395, 224790);
1 89
1 90 dcl rec_per_sv (9) fixed bin static options (constant) init /* table of # of records on each subvol */
1 91 (0, 38258, 38258, 19270, 14760, 4444, 67200, 56134, 74930);
1 92
1 93 dcl number_of_sv (9) fixed bin static options (constant) init /* table of subvolumes */
1 94 (0, 0, 0, 0, 0, 0, 0, 2, 3);
1 95
1 96 dcl valid_sv_string char (3) static options (constant) init /* string of valid subvolume names */
1 97 ("abc");
1 98
1 99 dcl valid_sv_array (0:2) char (1) static options (constant) /* array of valid subvolume names */
1 100 init ("a","b","c");
1 101
1 102 dcl cyl_per_dev (9) fixed bin static options (constant) init /* table of # of cylinders on each device */
1 103 (0, 814, 814, 410, 410, 202, 840, 885, 1770);
1 104
1 105 dcl cyl_per_sv (9) fixed bin static options (constant) init /* table of # of cylinders on each subvolume */
1 106 (0, 814, 814, 410, 410, 202, 840, 442, 590);
1 107
1 108 dcl rec_per_cyl (9) fixed bin static options (constant) init /* table of # of records per cylinder on each device */
1 109 (0, 47, 47, 47, 36, 22, 80, 127, 127);
1 110
1 111 dcl tracks_per_cyl (9) fixed bin static options (constant) init /* table of # of tracks per cylinder on each device */
1 112 (0, 19, 19, 19, 19, 20, 20, 15, 15);
1 113
1 114
1 115 dcl first_rec_num (9) fixed bin static options (constant) init /* table of # of first record on each device */
1 116 (0, 0, 0, 0, 0, 0, 0, 0, 0);
1 117
1 118 dcl last_rec_num (9) fixed bin (18) static options (constant) init /* table of # of last record on each device */
1 119 (0, 38257, 38116, 19128, 14651, 4399, 67199, 112394, 224789);
1 120
1 121 dcl last_sv_rec_num (9) fixed bin (18) static options (constant) init /* table of # of last record on each subvolume */
1 122 (0, 38257, 38116, 19128, 14651, 4399, 67199, 56133, 74929);
1 123
1 124 dcl first_sect_num (9) fixed bin (24) static options (constant) init /* table of # of first sector for each device */
1 125 (0, 0, 0, 0, 0, 0, 0, 0, 0);
1 126
1 127 dcl last_sect_num (9) fixed bin (24) static options (constant) init /* table of # last sector number for each device */
1 128 (0, 618639, 616359, 309319, 239722, 71999, 1075199, 225674, 451349);
1 129
1 130 dcl first_alt_sect_num (9) fixed bin (24) static options (constant) init /* table of # of first sector of alt partition */
1 131 (0, 638400, 616360, 309320, 239723, 72000, 1075200, 225675, 451350);
1 132
1 133 dcl last_alt_sect_num (9) fixed bin (24) static options (constant) init /* table of # of last sector of alt partition */
1 134 (0, 639919, 618639, 311599, 241489, 72719, 1077759, 225930, 451605);
1 135
1 136 dcl last_physical_sect_num (9) fixed bin (24) static options (constant) init /* table of # of last sector on device (includes T&D cylinders) */
1 137 (0, 639919, 619399, 312359, 242249, 72359, 1077759, 225674, 451859);
1 138
1 139 dcl dev_time (9) float bin (27) static options (constant) init /* table of average access times for each device */
1 140 (384e0, 33187e0, 33187e0, 34722e0, 46935e0, 52631e0, 33187e0, 26260e0, 26260e0);
1 141
2 1 /* Begin fs_dev_types_sector.incl.pl1 */
2 2
2 3
2 4 /****^ HISTORY COMMENTS:
2 5* 1) change(86-04-21,Fawcett), approve(86-04-21,MCR7383),
2 6* audit(86-05-12,Coppola), install(86-07-18,MR12.0-1098):
2 7* Add the sector differance for devices that do 64 word IO and devices that
2 8* do 512 word IO.
2 9* END HISTORY COMMENTS */
2 10
2 11 /* Created by R. A. Fawcett for 512 word IO. for procedures that do not
2 12* need all the data in fs_dev_types. This is also included in
2 13* fs_dev_types.incl.pl1 */
2 14
2 15 dcl sect_per_cyl (9) fixed bin static options (constant) init /* table of # of sectors per cylinder on each device */
2 16 (0, 760, 760, 760, 589, 360, 1280, 255, 255);
2 17
2 18 dcl sect_per_sv (9) fixed bin (24) static options (constant) init /* table of # of sectors per cylinder on each subvolume */
2 19 (0, 0, 0, 0, 0, 0, 0, 112710, 150450);
2 20
2 21 dcl sect_per_rec (9) fixed bin static options (constant) init
2 22 /* table of # of sectors per record on each device */
2 23 /* coresponding array in disk_pack.incl.pl1 called SECTORS_PER_RECORD */
2 24 (0, 16, 16, 16, 16, 16, 16, 2, 2);
2 25
2 26 dcl sect_per_vtoc (9) fixed bin static options (constant) init
2 27 (0, 3, 3, 3, 3, 3, 3, 1, 1);
2 28
2 29 dcl vtoc_per_rec (9) fixed bin static options (constant) init
2 30 /* corespending array in disk_pack.incl.pl1 named VTOCES_PER_RECORD */
2 31 (0, 5, 5, 5, 5, 5, 5, 2, 2);
2 32
2 33 dcl sect_per_track (9) fixed bin static options (constant) init /* table of # of sectors per track on each device */
2 34 (0, 40, 40, 40, 31, 18, 64, 17, 17);
2 35
2 36 dcl words_per_sect (9) fixed bin static options (constant) init /* table of # of words per sector on each device */
2 37 (0, 64, 64, 64, 64, 64, 64, 512, 512);
2 38
2 39 /* End fs_dev_types_sector.incl.pl1 */
2 40
1 142
1 143
1 144 /* End of include file ...... fs_dev_types.incl.pl1 */
98
99 /* START OF: io_chnl_util_dcls.incl.pl1 * * * * * * * * * * * * * * * * */
3 2
3 3 /* Written by Charles Hornig, 1st quarter 1981 */
3 4 /* Canonicalization entry added by Chris Jones, January 1984 */
3 5
3 6 /* chanid = canonicalize_chanid (chanid); */
3 7 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */
3 8 dcl io_chnl_util$canonicalize_chanid
3 9 entry (char (8) aligned) returns (char (8) aligned);
3 10
3 11 /* call iom_to_name (iomno, channo, name, code); */
3 12 dcl io_chnl_util$iom_to_name
3 13 entry (fixed bin (3), fixed bin (7), char (8) aligned, fixed bin (35));
3 14
3 15 /* call name_to_iom (name, iomno, channo, code); */
3 16 dcl io_chnl_util$name_to_iom
3 17 entry (char (8) aligned, fixed bin (3), fixed bin (7), fixed bin (35));
3 18
3 19 /* END OF: io_chnl_util_dcls.incl.pl1 * * * * * * * * * * * * * * * * */
99
100 /* Begin include file config_data_dcls.incl.pl1 BIM 9/82 */
4 2
4 3 /****^ HISTORY COMMENTS:
4 4* 1) change(85-09-09,Farley), approve(85-09-09,MCR6979),
4 5* audit(86-01-17,CLJones), install(86-03-21,MR12.0-1033):
4 6* Add changes made to
4 7* config_data_.cds.
4 8* 2) change(86-10-21,Fawcett), approve(86-10-21,PBF7381),
4 9* audit(86-10-23,Farley), install(86-10-28,MR12.0-1200):
4 10* Corrected the number of tape drive models supported.
4 11* END HISTORY COMMENTS */
4 12
4 13 /* format: style3 */
4 14 /* Modified 830523 to add console io_type and line_leng fields for different
4 15* operator's consoles and to fix a size bug... -E. A. Ranzenbach */
4 16 /* Modified 841101 by Paul Farley to add changes made to config_data_.cds */
4 17
4 18 /* WARNING WARNING */
4 19
4 20 /* Due to the awful PL/I restriction that prohibits any expressions */
4 21 /* in external variable extents, the arrays here have integers for */
4 22 /* extents. Changes to config_data_.cds should be reflected here, */
4 23 /* Because the declares in config_data_.cds use the "like" attribute. */
4 24 /* Just in case, though, do NOT use hbound. Use the .count fields */
4 25 /* in the structures instead. */
4 26
4 27 declare config_data_$chnl_cardx
4 28 fixed binary external static;
4 29 declare config_data_$clok_cardx
4 30 fixed binary external static;
4 31 declare config_data_$cpu_cardx
4 32 fixed binary external static;
4 33 declare config_data_$fnp_cardx
4 34 fixed binary external static;
4 35 declare config_data_$intk_cardx
4 36 fixed binary external static;
4 37 declare config_data_$iom_cardx
4 38 fixed binary external static;
4 39 declare config_data_$mem_cardx
4 40 fixed binary external static;
4 41 declare config_data_$mpc_msp_cardx
4 42 fixed binary external static;
4 43 declare config_data_$mpc_mtp_cardx
4 44 fixed binary external static;
4 45 declare config_data_$ipc_fips_cardx
4 46 fixed binary external static;
4 47 declare config_data_$mpc_urp_cardx
4 48 fixed binary external static;
4 49 declare config_data_$mpc_cardx
4 50 fixed binary external static;
4 51 declare config_data_$mpcs_msp_cardx
4 52 fixed binary external static;
4 53 declare config_data_$mpcs_mtp_cardx
4 54 fixed binary external static;
4 55 declare config_data_$mpcs_urp_cardx
4 56 fixed binary external static;
4 57 declare config_data_$mpcs_cardx
4 58 fixed binary external static;
4 59 declare config_data_$parm_cardx
4 60 fixed binary external static;
4 61 declare config_data_$part_cardx
4 62 fixed binary external static;
4 63 declare config_data_$prph_dsk_cardx
4 64 fixed binary external static;
4 65 declare config_data_$prph_prt_cardx
4 66 fixed binary external static;
4 67 declare config_data_$prph_rdr_cardx
4 68 fixed binary external static;
4 69 declare config_data_$prph_pun_cardx
4 70 fixed binary external static;
4 71 declare config_data_$prph_ccu_cardx
4 72 fixed binary external static;
4 73 declare config_data_$prph_tap_cardx
4 74 fixed binary external static;
4 75 declare config_data_$prph_opc_cardx
4 76 fixed binary external static;
4 77 declare config_data_$prph_cardx
4 78 fixed binary external static;
4 79 declare config_data_$root_cardx
4 80 fixed binary external static;
4 81 declare config_data_$salv_cardx
4 82 fixed binary external static;
4 83 declare config_data_$schd_cardx
4 84 fixed binary external static;
4 85 declare config_data_$sst_cardx
4 86 fixed binary external static;
4 87 declare config_data_$stok_cardx
4 88 fixed binary external static;
4 89 declare config_data_$tbls_cardx
4 90 fixed binary external static;
4 91 declare config_data_$udsk_cardx
4 92 fixed binary external static;
4 93
4 94 declare 1 config_data_$config_cards
4 95 aligned external static,
4 96 2 count fixed binary,
4 97 2 per_card (32) aligned,
4 98 3 name char (4) aligned,
4 99 3 second_field char (4) aligned,
4 100 3 flags aligned,
4 101 4 match_second bit (1) unaligned, /* PRPH FOO */
4 102 4 match_only_3 bit (1) unaligned; /* XXXn type */
4 103
4 104 declare 1 config_data_$mpc_msp_model_names
4 105 aligned external static,
4 106 2 count fixed binary,
4 107 2 names (9) aligned,
4 108 3 model fixed binary,
4 109 3 name character (8),
4 110 3 fw_tag character (16),
4 111 3 valid_drives (16) fixed binary unaligned;
4 112
4 113 declare 1 config_data_$mpc_mtp_model_names
4 114 aligned external static,
4 115 2 count fixed binary,
4 116 2 names (7) aligned,
4 117 3 model fixed binary,
4 118 3 name character (8),
4 119 3 fw_tag character (16),
4 120 3 valid_drives (16) fixed binary unaligned;
4 121
4 122 declare 1 config_data_$mpc_urp_model_names
4 123 aligned external static,
4 124 2 count fixed binary,
4 125 2 names (6) aligned,
4 126 3 model fixed binary,
4 127 3 name character (8),
4 128 3 fw_tag character (16); /* "EURC" for EURC */
4 129
4 130 declare 1 config_data_$ipc_msp_model_names
4 131 aligned external static,
4 132 2 count fixed binary,
4 133 2 names (1) aligned,
4 134 3 model fixed binary,
4 135 3 name character (8),
4 136 3 fw_tag character (16),
4 137 3 valid_drives (16) fixed binary unaligned;
4 138
4 139 declare 1 config_data_$ipc_mtp_model_names
4 140 aligned external static,
4 141 2 count fixed binary,
4 142 2 names (1) aligned,
4 143 3 model fixed binary,
4 144 3 name character (8),
4 145 3 fw_tag character (16),
4 146 3 valid_drives (16) fixed binary unaligned;
4 147
4 148 declare 1 config_data_$disk_drive_model_names
4 149 aligned external static,
4 150 2 count fixed binary,
4 151 2 names (5) aligned,
4 152 3 model fixed binary,
4 153 3 name character (8),
4 154 3 device_0_valid bit (1);
4 155
4 156 declare 1 config_data_$tape_drive_model_names
4 157 aligned external static,
4 158 2 count fixed binary,
4 159 2 names (9) aligned,
4 160 3 model fixed binary,
4 161 3 name character (8),
4 162 3 device_0_valid bit (1);
4 163
4 164 declare 1 config_data_$printer_model_names
4 165 aligned external static,
4 166 2 count fixed binary,
4 167 2 names (5) aligned,
4 168 3 model fixed binary,
4 169 3 name character (8);
4 170
4 171 declare 1 config_data_$reader_model_names
4 172 aligned external static,
4 173 2 count fixed binary,
4 174 2 names (4) aligned,
4 175 3 model fixed binary,
4 176 3 name character (8);
4 177
4 178 declare 1 config_data_$ccu_model_names
4 179 aligned external static,
4 180 2 count fixed binary,
4 181 2 names (1) aligned,
4 182 3 model fixed binary,
4 183 3 name character (8);
4 184
4 185 declare 1 config_data_$punch_model_names
4 186 aligned external static,
4 187 2 count fixed binary,
4 188 2 names (3) aligned,
4 189 3 model fixed binary,
4 190 3 name character (8);
4 191
4 192 declare 1 config_data_$console_model_names
4 193 aligned external static,
4 194 2 count fixed binary,
4 195 2 names (3) aligned,
4 196 3 model fixed binary,
4 197 3 name character (8),
4 198 3 line_leng fixed bin (17),
4 199 3 io_type character (4);
4 200
4 201 /* End include file config_data_dcls.incl.pl1 */
100
101 /* BEGIN INCLUDE FILE syserr_constants.incl.pl1 ... 11/11/80 W. Olin Sibert */
5 2 /* 85-02-12, EJ Sharpe - Added sorting class constants, removed AIM_MESSAGE, added new action code names. */
5 3 /* 85-04-24, G. Palter - Renamed SYSERR_UNUSED_10 to SYSERR_RING1_ERROR to reflect its actual use. */
5 4
5 5 /* This include file has an ALM version. Keep 'em in sync! */
5 6
5 7 dcl (
5 8
5 9 /* The following constants define the message action codes. This indicates
5 10*how a message is to be handled. */
5 11
5 12 SYSERR_CRASH_SYSTEM init (1),
5 13 CRASH init (1), /* Crash the system, and bleat plaintively. */
5 14
5 15 SYSERR_TERMINATE_PROCESS init (2),
5 16 TERMINATE_PROCESS init (2), /* Terminate the process, print the message, and beep. */
5 17
5 18 SYSERR_PRINT_WITH_ALARM init (3),
5 19 BEEP init (3), /* Beep and print the message on the console. */
5 20
5 21 SYSERR_PRINT_ON_CONSOLE init (0),
5 22 ANNOUNCE init (0), /* Just print the message on the console. */
5 23
5 24 SYSERR_LOG_OR_PRINT init (4),
5 25 LOG init (4), /* Log the message, or print it if it can't be logged */
5 26
5 27 SYSERR_LOG_OR_DISCARD init (5),
5 28 JUST_LOG init (5), /* Just try to log the message, and discard it if it can't be */
5 29
5 30
5 31 /* The following constants are added to the normal severities to indicate
5 32*different sorting classes of messages. */
5 33
5 34 SYSERR_SYSTEM_ERROR init (00), /* indicates a standard level system error */
5 35 SYSERR_RING1_ERROR init (10), /* indicates an error detected in ring 1 (mseg_, RCP) */
5 36 SYSERR_COVERT_CHANNEL init (20), /* indicates covert channel audit trail message */
5 37 SYSERR_UNSUCCESSFUL_ACCESS init (30), /* indicates access denial audit trail message */
5 38 SYSERR_SUCCESSFUL_ACCESS init (40) /* indicates access grant audit trail message */
5 39 ) fixed bin internal static options (constant);
5 40
5 41 /* END INCLUDE FILE syserr_constants.incl.pl1 */
101
102 /* format: on */
103
104
105 RETRY:
106 skip_firmware_load = "0"b;
107 loaded_firmware = "0"b;
108 cold_boot = "0"b;
109 if ^sys_boot_info$boot_without_query
110 then call QUERY; /* will set loaded_firmware */
111 else do;
112
113 /**** Data already in sys_boot_info. Verify its correctness and continue if
114* all is well. Otherwise reset boot_without_query and query the operator
115* for the proper response. */
116
117 if ^CHECK_CHANNEL (sys_boot_info$disk_mpc_chanid)
118 then go to RESET_N_RETRY;
119
120 if sys_boot_info$disk_mpc_model_number = -1
121 then answer = "ipc";
122 else answer = convert (pz999, sys_boot_info$disk_mpc_model_number);
123 if ^CHECK_MPC_MODEL (answer, controllerx)
124 then go to RESET_N_RETRY;
125
126 answer = convert (pz999, sys_boot_info$disk_model_number);
127 if ^CHECK_DRIVE_MODEL (answer)
128 then go to RESET_N_RETRY;
129
130 call ioa_$rsnnl ("^d^[^a^;^s^]", answer, 0, sys_boot_info$disk_device_number,
131 sys_boot_info$disk_device_has_sv, valid_sv_array (sys_boot_info$disk_device_sv));
132 if ^CHECK_DRIVE_NUMBER (answer)
133 then go to RESET_N_RETRY;
134
135 loaded_firmware = LOAD_MPC ();
136 if ^loaded_firmware
137 then do;
138 call ioa_ ("^a: Firmware load failed. If RPV parameters were incorrect, then reenter", ME);
139 call ioa_ (" To give up respond ""shut"".");
140 end;
141 end;
142
143 if ^loaded_firmware /* global set in QUERY */
144 then do;
145 RESET_N_RETRY:
146 sys_boot_info$boot_without_query = "0"b;
147 go to RETRY;
148 end;
149
150 /* Arrive here on success */
151
152
153 sys_boot_info$rpv_cold_boot = cold_boot; /* Advertise */
154 call init_early_config$disk; /* We got it right, record it */
155
156 return;
157
158
159 QUERY:
160 procedure;
161
162 cold_boot = ""b;
163
164
165 if QUERY_BRIEF ()
166 then return; /* one-line response given */
167
168 ASK_AGAIN:
169 cold_boot = "0"b;
170 COLD_ASK_CHANNEL:
171 call bce_query (answer, "^a: Enter RPV subsystem base channel, as Icc^[, or ""cold""^]. ", ME, ^cold_boot);
172 if (answer = "cold" | answer = """cold""") & ^cold_boot
173 then do;
174 if CHECK_COLD ()
175 then cold_boot = "1"b;
176 go to COLD_ASK_CHANNEL;
177 end;
178
179 else if answer = "shut" | answer = """shut"""
180 then go to SHUTDOWN_REQUESTED;
181
182 if ^CHECK_CHANNEL (answer) /* side effect -- set sys_boot_info */
183 then go to COLD_ASK_CHANNEL;
184
185 RE_ASK_SUBSYSTEM:
186 call bce_query (answer, "^a: Enter RPV subsystem MPC model: ", ME);
187
188 if ^CHECK_MPC_MODEL (answer, controllerx)
189 then go to RE_ASK_SUBSYSTEM;
190
191 if ^LOAD_MPC () /* get success before bothering with other questions */
192 then go to ASK_AGAIN;
193
194 RE_ASK_DRIVE_MODEL:
195 call bce_query (answer, "^a: Enter RPV disk drive model: ", ME);
196
197 if ^CHECK_DRIVE_MODEL (answer)
198 then go to RE_ASK_DRIVE_MODEL;
199
200 RE_ASK_DRIVE:
201 call bce_query (answer, "^a: Enter RPV drive device number: ", ME);
202
203 if ^CHECK_DRIVE_NUMBER (answer)
204 then go to RE_ASK_DRIVE;
205 call bce_query$yes_no (yes_no,
206 "^a: RPV is a model ^d drive, number ^d^[^a^;^1s^] on ^[MPC ^a (Model ^a)^;ipc ^a^1s^]^[, and this is a COLD boot^].^/ Is this correct? ",
207 ME, sys_boot_info$disk_model_number, sys_boot_info$disk_device_number, sys_boot_info$disk_device_has_sv,
208 valid_sv_array (sys_boot_info$disk_device_sv), (sys_boot_info$disk_mpc_model_number ^= -1),
209 sys_boot_info$disk_mpc_chanid, config_data_$mpc_msp_model_names.names (controllerx).name, cold_boot);
210 if ^yes_no
211 then go to ASK_AGAIN;
212
213 return;
214
215
216 QUERY_BRIEF:
217 procedure returns (bit (1) aligned);
218
6 1 /* Begin include file bce_subsystem_info_.incl.pl1 BIM 11/82 */
6 2
6 3 /* format: style3 */
6 4
6 5 /* Deleted unused items, Keith Loepere, 5/84 */
6 6
6 7
6 8 /****^ HISTORY COMMENTS:
6 9* 1) change(86-04-22,Farley), approve(86-07-18,MCR7439),
6 10* audit(86-10-08,Fawcett), install(86-10-20,MR12.0-1189):
6 11* Added request_handling_opr_aborts flag for save/restore.
6 12* END HISTORY COMMENTS */
6 13
6 14 declare ss_info_ptr pointer;
6 15 declare 1 ss_info aligned based (ss_info_ptr),
6 16 2 request_table_ptr
6 17 pointer,
6 18 2 abort_label label,
6 19 2 name char (32) unaligned,
6 20 2 arg_list_ptr pointer,
6 21 2 info_ptr pointer,
6 22 2 flags aligned,
6 23 3 forbid_semicolons bit (1) unaligned,
6 24 3 request_handling_opr_aborts bit (1) unaligned;
6 25
6 26 /* End include file bce_subsystem_info_ */
219
220 declare bce_command_processor_ entry (character (*), entry (ptr, char (*), fixed bin (35)) returns (entry), ptr,
221 fixed binary (35));
222 declare cu_$arg_count_rel entry (fixed bin, ptr, fixed bin (35));
223 declare cu_$arg_ptr_rel entry (fixed bin, ptr, fixed bin (21), fixed bin (35), ptr);
224 declare line char (132);
225 declare code fixed bin (35);
226 declare 1 my_ss_info aligned like ss_info;
227
228 ss_info_ptr = addr (my_ss_info);
229 ss_info.request_table_ptr = null (); /* we find our own commands */
230 ss_info.abort_label = RETURN_FAILURE;
231 ss_info.name = "find_rpv_subsystem";
232 ss_info.arg_list_ptr = null ();
233 ss_info.info_ptr = null ();
234 string (ss_info.flags) = ""b;
235 ss_info.flags.forbid_semicolons = "1"b;
236
237 if sys_boot_info$default_rpv_data ^= ""
238 then do;
239 line = sys_boot_info$default_rpv_data;
240 call bce_query$yes_no (yes_no, "^a: Default RPV data is ""^a""^/Is this correct? ", ME, line);
241 if yes_no
242 then go to EXPAND_LINE;
243 else line = "";
244 end;
245 AGAIN:
246 call bce_query (line, "^a: Enter RPV data: ", ME);
247 EXPAND_LINE:
248 call bce_command_processor_ (line, CF, ss_info_ptr, code);
249 if code = 100 /* null line */
250 then do;
251 call ioa_ ("null line");
252 go to AGAIN;
253 end;
254 if code ^= 0
255 then do;
256 call com_err_ (code, ME, "Type ""help"" for help.");
257 go to AGAIN;
258 end;
259
260 /* Control arrives at one of the following labels by non-local goto */
261
262 RETURN_SUCCESS:
263 if ^LOAD_MPC ()
264 then go to AGAIN;
265 else return ("1"b);
266
267 RETURN_FAILURE:
268 return ("0"b);
269
270
271 CF:
272 procedure (Info_ptr, Command, Code) returns (entry);
273 declare Command character (*);
274 declare Code fixed binary (35);
275 declare Info_ptr ptr;
276
277 Code = 0;
278 if Command = "help" | Command = "?"
279 then return (HELP);
280 else if Command = "query"
281 then go to RETURN_FAILURE;
282 else if Command = "rpv"
283 then return (WARM);
284 else if Command = "cold"
285 then return (COLD);
286 else if Command = "shut"
287 then go to SHUTDOWN_REQUESTED;
288 else if Command = "skip_load" | Command = "skip"
289 then return (SKIP);
290 else do;
291 Code = error_table_$bad_command_name;
292 return (null_entry_);
293 end;
294 end CF;
295
296
297 HELP:
298 procedure (Arg_list_ptr) options (non_quick);
299 declare Arg_list_ptr ptr;
300
301 call ioa_ ("For an ordinary boot, enter:");
302 call ioa_ (" rpv Icc MPC_Model Drive_Model Drive_Number");
303 call ioa_ (" Where: I is the iom tag, cc is the base channel in decimal,");
304 call ioa_ (" MPC_Model is MPC Model, ");
305 call ioa_ (" Drive_Model is RPV drive model number, and ");
306 call ioa_ (" Drive_Number is the RPV device number.");
307 call ioa_ ("^/For a cold boot, enter:");
308 call ioa_ (" cold Icc MPC_Model Drive_Model Drive_Number");
309 call ioa_ ("^/To skip the firmware loading of the MPC, enter");
310 call ioa_ (" skip_load or skip");
311 call ioa_ ("^/If this still is not clear, enter ""query"" for a setp-by-step query");
312 go to AGAIN;
313 end HELP;
314
315 SKIP:
316 procedure (Arg_list_ptr) options (non_quick);
317 declare Arg_list_ptr pointer;
318
319 skip_firmware_load = "1"b;
320 go to AGAIN;
321 end SKIP;
322
323 WARM:
324 procedure (Info_ptr);
325 declare Info_ptr pointer;
326 declare ap pointer;
327 declare al fixed bin (21);
328 declare arg character (al) based (ap);
329 declare arg_count fixed bin;
330 declare arg_list_ptr pointer;
331 declare cold bit (1) aligned;
332
333 cold = "0"b;
334 go to COMMON;
335
336 COLD:
337 entry (Info_ptr);
338
339 cold = "1"b;
340 COMMON:
341 arg_list_ptr = Info_ptr -> ss_info.arg_list_ptr;
342 call cu_$arg_count_rel (arg_count, arg_list_ptr, (0));
343 if arg_count ^= 4
344 then
345 SYNTAX:
346 do;
347 call ioa_ ("Invalid syntax. Type ""help"" for help.");
348 go to AGAIN;
349 end;
350
351 call cu_$arg_ptr_rel (1, ap, al, (0), arg_list_ptr);
352 if ^CHECK_CHANNEL (arg)
353 then go to AGAIN;
354
355 call cu_$arg_ptr_rel (2, ap, al, (0), arg_list_ptr);
356 if ^CHECK_MPC_MODEL (arg, controllerx)
357 then go to AGAIN;
358
359 call cu_$arg_ptr_rel (3, ap, al, (0), arg_list_ptr);
360 if ^CHECK_DRIVE_MODEL (arg)
361 then go to AGAIN;
362
363 call cu_$arg_ptr_rel (4, ap, al, (0), arg_list_ptr);
364 if ^CHECK_DRIVE_NUMBER (arg)
365 then go to AGAIN;
366
367 if cold
368 then if ^CHECK_COLD ()
369 then go to AGAIN;
370 else cold_boot = "1"b;
371 go to RETURN_SUCCESS;
372 end WARM;
373
374 COMMON:
375 end QUERY_BRIEF;
376
377 CHECK_COLD:
378 procedure returns (bit (1) aligned);
379 declare yes_no bit (1) aligned;
380 call bce_query$yes_no (yes_no,
381 "^a: Booting cold will destroy all data on the RPV.^/ Are you sure that you want to boot cold? ", ME);
382 return (yes_no);
383 end CHECK_COLD;
384 end QUERY;
385
386 CHECK_CHANNEL:
387 procedure (Chanid) returns (bit (1) aligned);
388 declare Chanid character (*);
389
390 sys_boot_info$disk_mpc_chanid = translate (Chanid, "ABCD", "abcd");
391
392 call io_chnl_util$name_to_iom ((sys_boot_info$disk_mpc_chanid), (0), (0), code);
393 if code ^= 0 /* not an error table code */
394 then do;
395 call ioa_ ("^a is not a valid channel.", Chanid);
396 call ioa_ (" Use Icc, where I is the IOM tag (A, B, C, or D), and");
397 call ioa_ (" cc is the channel number, in decimal.");
398 return ("0"b);
399 end;
400 return ("1"b);
401 end CHECK_CHANNEL;
402
403
404 CHECK_MPC_MODEL:
405 procedure (Model, Controllerx) returns (bit (1) aligned);
406 declare Model char (*);
407 declare Controllerx fixed bin;
408 declare x fixed bin;
409
410 sys_boot_info$disk_mpc_model_number = cv_dec_check_ (Model, code);
411
412 if code ^= 0
413 then do;
414 if Model = "ipc"
415 then do;
416 sys_boot_info$disk_mpc_model_number = -1;
417 /* not firmware to load */
418 ipc_controller = "1"b;
419 skip_firmware_load = "1"b;
420 Controllerx = 1;
421 return ("1"b);
422 end;
423 else do;
424 call ioa_ ("^a is not a decimal number or ipc.", Model);
425 call ioa_ ("An example of MPC model numbers is: MSP0600 -> 600 .");
426 return ("0"b);
427 end;
428 end;
429
430 do x = 1 to config_data_$mpc_msp_model_names.count;
431 if sys_boot_info$disk_mpc_model_number = config_data_$mpc_msp_model_names.names (x).model
432 then do;
433 Controllerx = x;
434 controller_fwid = config_data_$mpc_msp_model_names.names (Controllerx).fw_tag;
435 ipc_controller = "0"b;
436 return ("1"b);
437 end;
438 end;
439
440
441 call ioa_ ("^a: ^d is not a known disk MPC model number.", ME, sys_boot_info$disk_mpc_model_number);
442 return ("0"b);
443 end CHECK_MPC_MODEL;
444
445
446 CHECK_DRIVE_MODEL:
447 procedure (Model) returns (bit (1) aligned);
448 declare Model char (*);
449 declare x fixed bin;
450
451 sys_boot_info$disk_model_number = cv_dec_check_ (Model, code);
452 if code ^= 0
453 then do;
454 bad_drive_model:
455 call ioa_ ("^a is not a valid decimal number.", Model);
456 call ioa_ ("An example of a drive model number is: MSU0451 -> 451.");
457 return ("0"b);
458 end;
459 do x = 1 to hbound (MODELN, 1) while (MODELN (x) ^= sys_boot_info$disk_model_number);
460 end;
461 if x > hbound (MODELN, 1)
462 then goto bad_drive_model;
463 if number_of_sv (x) > 1
464 then sys_boot_info$disk_device_has_sv = "1"b;
465 if ipc_controller
466 then do x = 1 to hbound (config_data_$ipc_msp_model_names.valid_drives, 2);
467 if sys_boot_info$disk_model_number
468 = config_data_$ipc_msp_model_names.names (controllerx).valid_drives (x)
469 then return ("1"b);
470 end;
471
472 else do x = 1 to hbound (config_data_$mpc_msp_model_names.valid_drives, 2);
473 if sys_boot_info$disk_model_number
474 = config_data_$mpc_msp_model_names.names (controllerx).valid_drives (x)
475 then return ("1"b);
476 end;
477
478 call ioa_ ("Drive model ^d is not supported on MPC model ^d.", sys_boot_info$disk_model_number,
479 sys_boot_info$disk_mpc_model_number);
480 return ("0"b);
481
482 end CHECK_DRIVE_MODEL;
483
484
485 CHECK_DRIVE_NUMBER:
486 procedure (Number) returns (bit (1) aligned);
487 declare Number char (*);
488 declare starting_dev fixed bin;
489 declare last_dev fixed bin;
490 declare x fixed bin;
491 declare max_sv fixed bin;
492 declare number char (8);
493 declare valid_sv_subarray (max_sv) char (1) based (addr (valid_sv_string));
494 if sys_boot_info$disk_device_has_sv
495 then do;
496 do x = 1 to hbound (MODELN, 1) while (MODELN (x) ^= sys_boot_info$disk_model_number);
497 end;
498 max_sv = number_of_sv (x);
499 x = search (Number, substr (valid_sv_string, 1, max_sv));
500 if x = 0
501 then do;
502 call ioa_ ("^d devices have ^d subvolumes ^a^( or ^a^)", sys_boot_info$disk_model_number,
503 max_sv, valid_sv_subarray);
504 call ioa_ ("An example: 05b would indicate subvolume 2");
505 return ("0"b);
506 end;
507 else do;
508 number = substr (Number, 1, (x - 1));
509 sys_boot_info$disk_device_sv = index (valid_sv_string, substr (Number, x, 1)) - 1;
510 end;
511 end;
512 else number = Number;
513 sys_boot_info$disk_device_number = cv_dec_check_ (number, code);
514 if code ^= 0
515 then do;
516 call ioa_ ("^a is not a valid decimal number.", Number);
517 return ("0"b);
518 end;
519 last_dev = 0;
520
521 /* The sys_boot_info$disk_model_number has been validated by CHECK_DRIVE_MODEL
522* before this code is executed */
523