1 /* BEGIN include file toehold_save_dcls_.incl.pl1 */ 2 3 4 /****^ HISTORY COMMENTS: 5 1) change(83-08-01,Margulies), approve(), audit(), install(): 6 Initial coding by Margulies and Loepere. 7 2) change(85-01-09,Fawcett), approve(85-09-09,MCR6979), 8 audit(86-01-31,GDixon), install(86-03-21,MR12.0-1033): 9 Support of FIPS 3380 cylinder size. 10 END HISTORY COMMENTS */ 11 12 13 /* structures that desribe data in the toehold and the save partition */ 14 /* format: style4,indattr,ifthenstmt,ifthen,idind33,^indcomtxt */ 15 16 /* WARNING - this include file has an alm counterpart maintained by 17 convert_include_file, as well as a simplified version (toe_hold.incl.pl1) 18 and its convert_include_file maintained alm counterpart. 19 Exclude prn, prv and pad when converting to the alm version. */ 20 21 dcl toehold_ptr ptr; 22 dcl toehold$ (2048) bit (36) external; 23 24 dcl 1 toehold aligned based (toehold_ptr), 25 2 entry_sequences (0:15) bit (72) aligned, 26 2 flagbox (64) bit (36) aligned, 27 2 handler_mc aligned like mc, 28 2 paths (4) like io_path, 29 2 n_paths_used fixed bin, 30 2 memory_state fixed bin, 31 2 bce_dbr bit (72) aligned, 32 2 bce_mode_reg bit (36) aligned, /* double word pair with bce_cache_mode_reg */ 33 2 bce_cache_mode_reg bit (36) aligned, 34 2 esd_segnum fixed bin (15), 35 36 2 dcw_list_size fixed bin (17) unaligned, /* the size of the dcw_list used by toehold.alm (upper half) */ 37 2 dcws_per_cyl fixed bin (17) unaligned, /* number of dcws needed to write 1 pages on 1 cyl*/ 38 2 seeks_used fixed bin, /* number of cyls needed to write 512 records */ 39 /* plus 1 for seek at 256K boundary. */ 40 2 save_dcws (260) fixed bin (35), /* Region for dcw_list adjusted to RPV devtype. */ 41 /* Writes Multics low memory (512K) into bce */ 42 /* partition prior to invoking bce; or reads */ 43 /* from partition back into memory prior to */ 44 /* return to Multics. */ 45 2 handler_dcws (260) fixed bin (35), /* Region for dcw_list adjusted to RPV devtype. */ 46 /* Reads/writes bce low memory from/to bce */ 47 /* partition when invoking/returning from bce. */ 48 49 2 pad2 (255) bit (36) aligned, 50 2 handler_code (288) fixed bin (71), 51 2 multics_state like mc_state; 52 ^L 53 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 54 /* */ 55 /* 512 records (pages) of low-order memory must be exchanged between memory */ 56 /* and disk when Multics transfers to bce or vice versa. Device types hold */ 57 /* different numbers of records per cylinder (see fs_dev_types.incl.pl1). */ 58 /* Thus, a different number of cylinders is needed to hold 512 records for */ 59 /* each type of device. Because there must be a dcw for every 4 records */ 60 /* (pages) of data written to disk, the shape of the dcw_list varies */ 61 /* depending upon the type of device used for the RPV. */ 62 /* */ 63 /* A second consideration is that there must be a separate seek operation */ 64 /* after writing the 256th page of the low memory region in absolute mode. */ 65 /* */ 66 /* Also the iom_mailbox and toehold area is not saved nor is it restored. */ 67 /* This skip of memory locations causes an additional seek. */ 68 /* */ 69 /* Thus, room for an extra two seeks must be added to the cylinder counts */ 70 /* computed below. */ 71 /* */ 72 /* Note that a separate connect operation is done for each seek. */ 73 /* */ 74 /* The table below shows the shape for each supported device type. */ 75 /* recs_per_cyl comes from fs_dev_types.incl.pl1. */ 76 /* cyls_per_512k = ceil (512 / recs_per_cyl) */ 77 /* seeks_per_512k = cyls_per_512k + 1 seek_at_256k_boundary */ 78 /* + 1 seek_after_skip 79 /* dcws_per_cyl = ceil (recs_per_cyl / 4 recs_per_dcw) */ 80 /* currentsize(dcw_list) is the PL/I builtin function result. This */ 81 /* size must fit within the 260 words allocated */ 82 /* above for save_dcws and handler_dcws. */ 83 /* */ 84 /* DEVICE RECORDS CYL PER SEEKS DCWS PER currentsize */ 85 /* TYPE PER CYL 512K PER 512K CYL (dcw_list) */ 86 /* ------ ------- ------- -------- -------- ----------- */ 87 /* 400,451, */ 88 /* 500 47 11 13 12 208 =13*(12+4) */ 89 /* */ 90 /* 501 80 7 9 20 216 = 9*(20+4) */ 91 /* */ 92 /* 3380 127 5 7 32 252 = 7*(32+4) */ 93 /* */ 94 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 95 96 dcl dcw_list_ptr ptr; 97 dcl 1 dcw_list (toehold.seeks_used) aligned based (dcw_list_ptr), 98 2 seek_addresses fixed bin (35), /* This array overlays toehold.save_dcws and */ 99 2 seek_idcw bit (36) aligned, /* .handler_dcws */ 100 2 seek_dcw bit (36) aligned, 101 2 data_idcw bit (36) aligned, 102 2 data_dcws (toehold.dcws_per_cyl) bit (36) aligned; 103 104 %page; %include bce_partition_layout; 105 %page; %include toe_hold; 106 107 /* END include file toehold_save_dcls_.incl.pl1 */