1 /****^  ***********************************************************
 2         *                                                         *
 3         * Copyright, (C) Honeywell Bull Inc., 1987                *
 4         *                                                         *
 5         * Copyright, (C) Honeywell Information Systems Inc., 1982 *
 6         *                                                         *
 7         * Copyright (c) 1972 by Massachusetts Institute of        *
 8         * Technology and Honeywell Information Systems, Inc.      *
 9         *                                                         *
10         *********************************************************** */
11 
12 
13 /* Written anonymously in time immemorial. */
14 /* Modified for salvager_severities BIM 831118 */
15 
16 dir_dump: proc (a_dp, a_cur_len);
17                                                             /* dump directory during salvage */
18 dcl (dp, a_dp, print_ptr) ptr,
19     i fixed bin (18),
20     (cur_len, a_cur_len, start) fixed bin (17),
21      for_vtoce bit (1) aligned,
22      w (8) fixed bin (35) based (print_ptr),
23      zero_line bit (36*8) based (print_ptr),
24     (t_line, char_fmt) char (32) aligned,
25      1 pad_stg aligned int static,
26           2 pd1 bit (4*36) init ((16) "001111111"b),
27           2 pd2 bit (4*36) init ((16) "001111111"b),
28      tb_line bit (8*36) based (addr (t_line)),
29      salv_err_msg ext entry options (variable),
30     (addr, fixed, rel, ptr, translate, unspec, collate, substr) builtin;
31 
32 dcl  first bit (1) aligned int static init ("1"b);
33 dcl map_string char (128) int static;                       /* ascii translation table for dir printeng */
34 
35 %include salv_data;
36 %include salvager_severities;
37 
38           dp = a_dp;
39           cur_len = a_cur_len * 1024;                       /* express in words */
40           for_vtoce = "0"b;
41 
42 doub:
43 
44 /* Setup mask for dump_dir. */
45 
46           if first then do;
47                map_string = collate ();
48                substr (map_string, 1, 32) = (32) ".";
49                substr (map_string, 128, 1) = ".";
50                first = "0"b;
51           end;
52           if salv_data$on_line then return;
53           if ^salv_data$dump then return;
54 
55           start = fixed (rel (dp));
56 
57           do i = start to (cur_len + start) -8 by 8;        /* print 8 word lines */
58                print_ptr = ptr (dp, i);
59                if zero_line ^= "0"b then do;
60                     call salv_err_msg (SALV_DEBUG, "^6o^4x^w^2x^w^2x^w^2x^w^2x^w^2x^w^2x^w^2x^w",
61                          i, w (1), w (2), w (3), w (4), w (5), w (6), w (7), w (8));
62                     tb_line = zero_line & unspec (pad_stg); /* set up for char printout */
63                     char_fmt = translate (t_line, map_string);
64                     call salv_err_msg (SALV_DEBUG, "^88x^a", char_fmt);
65                end;
66 loop_c:   end;
67 
68           return;
69 
70 vtoce:    entry(a_vtocep);                                  /* dump only vtoce */
71                                                             /* now to print out vtoce */
72 dcl a_vtocep ptr;
73 
74           for_vtoce = "1"b;
75           dp = a_vtocep;
76           cur_len = 192;                                    /* vtoce is 192 words */
77           goto doub;
78 
79 
80      end dir_dump;