COMPILATION LISTING OF SEGMENT gf_int_ Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/18/82 1633.5 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 gf_int_attach: proc (iocb_ptr, option_array, com_err_sw, code); 12 13 /* IOX version of gf_int_ IO module. 14* This IO module is a "wrapper" for the gr_print_ subroutine. It can be used to 15* catch graphic code written down some switch. It causes an "english" interpretation of 16* the graphic code contents to be printed out to user_output. 17* Converted to IOX 03/31/75 by C. D. Tavares */ 18 19 dcl iocb_ptr pointer parameter, 20 option_array char (*) dimension (*) varying parameter, 21 com_err_sw bit (1) aligned parameter, 22 code fixed bin (35) parameter; 23 24 dcl (error_table_$invalid_device, 25 error_table_$not_detached, 26 error_table_$bad_mode, 27 error_table_$noarg) fixed bin (35) external; 28 1 1 1 2 dcl 1 iocb aligned based (iocb_ptr), 1 3 /* I/O control block. */ 1 4 2 iocb_version fixed init (1), /* Version number of structure. */ 1 5 2 name char (32), /* I/O name of this block. */ 1 6 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 1 7 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 1 8 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 1 9 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 1 10 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 1 11 2 reserved bit (72), /* Reserved for future use. */ 1 12 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 1 13 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 1 14 /* open(p,mode,not_used,s) */ 1 15 2 close entry (ptr, fixed (35)),/* close(p,s) */ 1 16 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 17 /* get_line(p,bufptr,buflen,actlen,s) */ 1 18 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 19 /* get_chars(p,bufptr,buflen,actlen,s) */ 1 20 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 1 21 /* put_chars(p,bufptr,buflen,s) */ 1 22 2 modes entry (ptr, char (*), char (*), fixed (35)), 1 23 /* modes(p,newmode,oldmode,s) */ 1 24 2 position entry (ptr, fixed, fixed (21), fixed (35)), 1 25 /* position(p,u1,u2,s) */ 1 26 2 control entry (ptr, char (*), ptr, fixed (35)), 1 27 /* control(p,order,infptr,s) */ 1 28 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 29 /* read_record(p,bufptr,buflen,actlen,s) */ 1 30 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 1 31 /* write_record(p,bufptr,buflen,s) */ 1 32 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 1 33 /* rewrite_record(p,bufptr,buflen,s) */ 1 34 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 1 35 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 1 36 /* seek_key(p,key,len,s) */ 1 37 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 1 38 /* read_key(p,key,len,s) */ 1 39 2 read_length entry (ptr, fixed (21), fixed (35)); 1 40 /* read_length(p,len,s) */ 1 41 29 30 31 dcl 1 switch_data_block aligned based (iocb.attach_descrip_ptr), 32 2 attach_description char (64) varying, 33 2 open_description char (64) varying; 34 35 dcl get_system_free_area_ ext entry returns (ptr), 36 free_ptr pointer static initial (null), 37 sys_area area based (free_ptr); 38 39 dcl com_err_ ext entry options (variable), 40 explanation char (64); 41 42 dcl (null, length, substr, addr, hbound, char) builtin; 43 44 if iocb.attach_descrip_ptr ^= null then do; /* switch already attached */ 45 code = error_table_$not_detached; /* complain */ 46 explanation = ""; 47 goto attach_error; 48 end; 49 50 if hbound (option_array, 1) ^= 1 then do; 51 code = error_table_$noarg; 52 explanation = "Wanted 1 arg, got " || char (hbound (option_array, 1)); 53 goto attach_error; 54 end; 55 56 if option_array (1) ^= "user_output" then do; 57 code = error_table_$invalid_device; 58 explanation = "This module restricted to use over user_output."; 59 goto attach_error; 60 end; 61 62 if free_ptr = null then free_ptr = get_system_free_area_ (); 63 64 allocate switch_data_block in (sys_area) set (iocb.attach_descrip_ptr); 65 66 switch_data_block.attach_description = "gf_int_ " || option_array (1); 67 iocb.open = gf_int_open; 68 iocb.detach_iocb = gf_int_detach; 69 70 call iox_$propagate (iocb_ptr); 71 72 return; 73 74 attach_error: 75 if com_err_sw then call com_err_ (code, "gf_int_", explanation); 76 return; 77 78 gf_int_open: entry (iocb_ptr, mode, append, code); 79 80 dcl mode fixed bin parameter, 81 append bit (1) aligned parameter; 82 2 1 /* Begin include file ..... iox_modes.incl.pl1 */ 2 2 2 3 /* Written by C. D. Tavares, 03/17/75 */ 2 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 2 5 2 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 2 7 ("stream_input", "stream_output", "stream_input_output", 2 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 2 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 2 10 "direct_input", "direct_output", "direct_update"); 2 11 2 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 2 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 2 14 2 15 dcl (Stream_input initial (1), 2 16 Stream_output initial (2), 2 17 Stream_input_output initial (3), 2 18 Sequential_input initial (4), 2 19 Sequential_output initial (5), 2 20 Sequential_input_output initial (6), 2 21 Sequential_update initial (7), 2 22 Keyed_sequential_input initial (8), 2 23 Keyed_sequential_output initial (9), 2 24 Keyed_sequential_update initial (10), 2 25 Direct_input initial (11), 2 26 Direct_output initial (12), 2 27 Direct_update initial (13)) fixed bin int static options (constant); 2 28 2 29 /* End include file ..... iox_modes.incl.pl1 */ 83 84 85 dcl iox_$propagate ext entry (pointer); 86 87 if mode ^= Stream_output then do; 88 code = error_table_$bad_mode; 89 return; 90 end; 91 92 actual_iocb_ptr -> iocb.put_chars = gf_int_write; 93 94 open_description = "stream_output"; 95 iocb.open_descrip_ptr = addr (open_description); 96 97 iocb.close = gf_int_close; 98 99 call iox_$propagate (actual_iocb_ptr); 100 code = 0; 101 return; 102 103 gf_int_close: entry (iocb_ptr, code); 104 105 actual_iocb_ptr -> iocb.open = gf_int_open; 106 actual_iocb_ptr -> iocb.detach_iocb = gf_int_detach; 107 actual_iocb_ptr -> iocb.open_descrip_ptr = null; 108 109 call iox_$propagate (actual_iocb_ptr); 110 code = 0; 111 return; 112 113 114 gf_int_detach: entry (iocb_ptr, code); 115 116 free iocb.attach_descrip_ptr -> switch_data_block in (sys_area); 117 iocb.attach_descrip_ptr = null; 118 119 call iox_$propagate (iocb_ptr); 120 121 code = 0; 122 return; 123 124 gf_int_write: entry (iocb_ptr, wksp, nelem, code); 125 126 dcl nelem fixed bin (21) parameter, 127 wksp pointer parameter; 128 129 dcl charstring char (nelem) based (wksp), 130 gr_print_ external entry (char (*)); 131 132 call gr_print_ (charstring); 133 code = 0; 134 return; 135 136 gf_int_module: entry (aa, ab, ac, ad, stat, ae); 137 138 dcl (aa, ab, ac, ad, ae) fixed bin, 139 stat bit (72) aligned; 140 141 dcl error_table_$not_attached ext bit (36) aligned static; 142 143 call com_err_ (0, "gf_int_", "This I/O module is now an iox_-type module. 144 Use iox_$attach and iox_$open, or io attach and io open."); 145 146 stat = error_table_$not_attached; 147 substr (stat, 54, 1) = "1"b; /* transaction aborted */ 148 substr (stat, 52, 1) = "1"b; /* detached */ 149 return; 150 151 end gf_int_attach; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/18/82 1627.7 gf_int_.pl1 >dumps>old>recomp>gf_int_.pl1 29 1 07/02/81 1905.0 iocbv.incl.pl1 >ldd>include>iocbv.incl.pl1 83 2 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. Stream_output constant fixed bin(17,0) initial dcl 2-15 ref 87 aa parameter fixed bin(17,0) dcl 138 ref 136 ab parameter fixed bin(17,0) dcl 138 ref 136 ac parameter fixed bin(17,0) dcl 138 ref 136 actual_iocb_ptr 12 based pointer level 2 dcl 1-2 set ref 92 99* 105 106 107 109* ad parameter fixed bin(17,0) dcl 138 ref 136 addr builtin function dcl 42 ref 95 ae parameter fixed bin(17,0) dcl 138 ref 136 append parameter bit(1) dcl 80 ref 78 attach_descrip_ptr 14 based pointer level 2 dcl 1-2 set ref 44 64* 66 94 95 116 117* attach_description based varying char(64) level 2 dcl 31 set ref 66* char builtin function dcl 42 ref 52 charstring based char unaligned dcl 129 set ref 132* close 36 based entry variable level 2 dcl 1-2 set ref 97* code parameter fixed bin(35,0) dcl 19 set ref 11 45* 51* 57* 74* 78 88* 100* 103 110* 114 121* 124 133* com_err_ 000024 constant entry external dcl 39 ref 74 143 com_err_sw parameter bit(1) dcl 19 ref 11 74 detach_iocb 26 based entry variable level 2 dcl 1-2 set ref 68* 106* error_table_$bad_mode 000016 external static fixed bin(35,0) dcl 24 ref 88 error_table_$invalid_device 000012 external static fixed bin(35,0) dcl 24 ref 57 error_table_$noarg 000020 external static fixed bin(35,0) dcl 24 ref 51 error_table_$not_attached 000032 external static bit(36) dcl 141 ref 146 error_table_$not_detached 000014 external static fixed bin(35,0) dcl 24 ref 45 explanation 000100 automatic char(64) unaligned dcl 39 set ref 46* 52* 58* 74* free_ptr 000010 internal static pointer initial dcl 35 set ref 62 62* 64 116 get_system_free_area_ 000022 constant entry external dcl 35 ref 62 gr_print_ 000030 constant entry external dcl 129 ref 132 hbound builtin function dcl 42 ref 50 52 iocb based structure level 1 dcl 1-2 iocb_ptr parameter pointer dcl 19 set ref 11 44 64 66 67 68 70* 78 92 94 95 95 97 99 103 105 106 107 109 114 116 117 119* 124 iox_$propagate 000026 constant entry external dcl 85 ref 70 99 109 119 mode parameter fixed bin(17,0) dcl 80 ref 78 87 nelem parameter fixed bin(21,0) dcl 126 ref 124 132 132 null builtin function dcl 42 ref 44 62 107 117 open 32 based entry variable level 2 dcl 1-2 set ref 67* 105* open_descrip_ptr 20 based pointer level 2 dcl 1-2 set ref 95* 107* open_description 21 based varying char(64) level 2 dcl 31 set ref 94* 95 option_array parameter varying char array dcl 19 ref 11 50 52 56 66 put_chars 52 based entry variable level 2 dcl 1-2 set ref 92* stat parameter bit(72) dcl 138 set ref 136 146* 147* 148* substr builtin function dcl 42 set ref 147* 148* switch_data_block based structure level 1 dcl 31 set ref 64 116 sys_area based area(1024) dcl 35 ref 64 116 wksp parameter pointer dcl 126 ref 124 132 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Direct_input internal static fixed bin(17,0) initial dcl 2-15 Direct_output internal static fixed bin(17,0) initial dcl 2-15 Direct_update internal static fixed bin(17,0) initial dcl 2-15 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 2-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 2-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 2-15 Sequential_input internal static fixed bin(17,0) initial dcl 2-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 2-15 Sequential_output internal static fixed bin(17,0) initial dcl 2-15 Sequential_update internal static fixed bin(17,0) initial dcl 2-15 Stream_input internal static fixed bin(17,0) initial dcl 2-15 Stream_input_output internal static fixed bin(17,0) initial dcl 2-15 iox_modes internal static char(24) initial array dcl 2-6 length builtin function dcl 42 short_iox_modes internal static char(4) initial array dcl 2-12 NAMES DECLARED BY EXPLICIT CONTEXT. attach_error 000316 constant label dcl 74 ref 47 53 59 gf_int_attach 000116 constant entry external dcl 11 gf_int_close 000433 constant entry external dcl 103 ref 97 gf_int_detach 000475 constant entry external dcl 114 ref 68 106 gf_int_module 000573 constant entry external dcl 136 gf_int_open 000351 constant entry external dcl 78 ref 67 105 gf_int_write 000535 constant entry external dcl 124 ref 92 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1042 1076 650 1052 Length 1316 650 34 204 172 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME gf_int_attach 139 external procedure is an external procedure. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 free_ptr gf_int_attach STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME gf_int_attach 000100 explanation gf_int_attach THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_ext_out_desc call_ext_out return shorten_stack ext_entry ext_entry_desc alloc_based free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ get_system_free_area_ gr_print_ iox_$propagate THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_mode error_table_$invalid_device error_table_$noarg error_table_$not_attached error_table_$not_detached LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000111 44 000134 45 000142 46 000144 47 000147 50 000150 51 000154 52 000156 53 000200 56 000202 57 000216 58 000220 59 000223 62 000224 64 000236 66 000247 67 000276 68 000303 70 000306 72 000315 74 000316 76 000343 78 000344 87 000361 88 000365 89 000370 92 000371 94 000400 95 000406 97 000410 99 000416 100 000425 101 000426 103 000427 105 000443 106 000453 107 000456 109 000460 110 000471 111 000472 114 000473 116 000505 117 000512 119 000517 121 000526 122 000527 124 000530 132 000545 133 000563 134 000564 136 000565 143 000600 146 000627 147 000636 148 000640 149 000642 ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved