COMPILATION LISTING OF SEGMENT ncp_order_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 07/02/84 1320.4 mst Mon Options: optimize list 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 ncp_order_: 12 procedure (); 13 14 /* "ncp_order_" -- this procedure contains some of the entry points */ 15 /* into the NCP which are user-accessible. In general, these entry */ 16 /* points are order calls, i.e., they are functions which do not have */ 17 /* own entry points into the NCP, and are multiplexed via an order-code. */ 18 19 /* Originally coded by Edwin W. Meyer on 111771. */ 20 /* Last modified by D. M. Wells in February, 1974 for conversion to */ 21 /* Version II PL/1 */ 22 23 /* * * * * PARAMETER DECLARATIONS * * * * * * * */ 24 25 declare 26 (P_sock_state fixed binary (6), 27 P_request_code fixed binary (10), 28 P_error_code fixed binary (35), /* a standard Multics error code */ 29 P_sock_indx bit (36), 30 P_info_ptr pointer) 31 parameter; 32 33 /* * * * * AUTOMATIC STORAGE DECLARATIONS * * * */ 34 35 declare 36 (user_request_code fixed binary (10), 37 (hpr, npr, procp) pointer, 38 sock_ptr pointer) 39 automatic; 40 41 declare 42 1 global_data aligned automatic like gdt; 43 44 /* * * * * BASED & TEMPLATE DECLARATIONS * * * * */ 45 46 declare 47 (based_fixed_bin8 fixed binary (8), 48 based_fixed_bin17 fixed binary (17), 49 based_fixed_bin71 fixed binary (71), 50 based_bit36 bit (36)) 51 based; 52 53 declare 54 1 host_array (1) aligned based like host; 55 56 /* * * * * EXTERNAL STATIC DECLARATIONS * * * * */ 57 58 declare 59 ncp_tables_$tracing_info bit (36) aligned 60 external static; 61 62 declare 63 (ncp_tables_$host_tbl, 64 ncp_tables_$ncp_data) 65 external static; 66 67 declare 68 (error_table_$invalid_elsize, 69 error_table_$net_invalid_state, 70 error_table_$undefined_order_request) 71 fixed binary (35) external static; 72 73 /* * * * * ENTRY & PROCEDURE DECLARATIONS * * * */ 74 75 declare 76 condition_ constant entry (char (*), entry), 77 ncp_access_$change_socket_state constant entry (ptr, fixed bin (6), fixed bin (35)), 78 ncp_access_$deactivate_socket constant entry (ptr, fixed bin (35)), 79 ncp_access_$process_rq constant entry (ptr), 80 ncp_error_$any_other_handler constant entry, 81 ncp_lock_$lock_unlock constant entry (ptr, fixed bin (35)), 82 ncp_tbop_$process_call constant entry (ptr), 83 ncp_trace_ constant entry options (variable), 84 ncp_util_$enter_user_NCP_environment constant entry (ptr, ptr, fixed bin (35)), 85 ncp_util_$exit_NCP_environment constant entry (ptr, ptr, fixed bin (35)), 86 ncp_util_$find_socket_from_index constant entry (bit (36), bit (1), ptr, fixed bin (35)), 87 ncp_util_$send_control_message constant entry (ptr, ptr, fixed bin (24), fixed bin (35)); 88 89 declare 90 (addr, binary, bit, hbound, lbound, null) 91 builtin; 92 93 /* * * * * INCLUDE FILES * * * * * * * * * * * */ 94 95 1 2 /* BEGIN include file "ncp_connection_dcls.incl.pl1" -- */ 1 3 1 4 /* This include file contains declarations for the structures */ 1 5 /* maintained by the NCP which contain information about Host-Host */ 1 6 /* connections. Currently, this is the information about sockets, */ 1 7 /* hosts, and requests-for-connection. */ 1 8 1 9 /* Originally created by D. M. Wells, Summer, 1975. */ 1 10 /* Modified by B. Greenberg, Spring '78 for new leader support */ 1 11 /* Modified by C. Hornig, July 1979 for new host number format */ 1 12 1 13 declare 1 14 1 socket aligned based, /* information we keep on a per-socket basis */ 1 15 2 event_channel fixed binary (71), /* event channel of using process */ 1 16 2 overseer_event_channel fixed binary (71), /* event chanel of overseer process */ 1 17 2 lock bit (36) aligned, /* lock to prevent simultaneous updating */ 1 18 2 process_id bit (36) aligned, /* process id of using process */ 1 19 2 overseer_process_id bit (36) aligned, /* process id of overseer process */ 1 20 2 bit_allocation fixed binary (32), /* bit allocation outstanding on attached link */ 1 21 2 msg_allocation fixed binary (16), /* message allocation outstanding on link */ 1 22 1 23 2 local_socket unaligned like socket.foreign_socket, /* identification of local socket */ 1 24 2 foreign_socket unaligned, /* identification of foreign socket */ 1 25 3 host, /* id of this host */ 1 26 4 net bit (8), /* network id */ 1 27 4 host bit (8), /* port on imp */ 1 28 4 imp bit (16), /* imp id */ 1 29 3 socket_num bit (32), /* actual socket number */ 1 30 3 pad bit (8), 1 31 1 32 2 rfc_queue fixed binary (17) unaligned, /* RFC table index of next block for this */ 1 33 /* socket, 0 if queue is empty */ 1 34 2 link_number fixed binary (17) unaligned, /* number of link assigned for connection */ 1 35 1 36 2 host_entry_index fixed binary (17) unaligned, /* index in host table of foreign */ 1 37 /* host involved in connection */ 1 38 2 impdim_index fixed binary (17) unaligned, /* index by which IMPDIM knows about connection */ 1 39 2 state bit (6) unaligned, /* finite-state-machine information */ 1 40 2 byte_size bit (8) unaligned, /* byte-size of connections */ 1 41 2 send_gender bit (1) unaligned, /* on iff this is a transmit socket */ 1 42 2 allow_interrupts bit (1) unaligned, /* on iff INS and INR should be signalled to user */ 1 43 2 deactivate bit (1) unaligned, /* on iff this socket should be deactivated when */ 1 44 /* matching network messages are finally received */ 1 45 2 allow_rfc_queuing bit (1) unaligned, /* on iff we should allow multiple outstanding */ 1 46 /* RFC's for this socket */ 1 47 2 extra_bits bit (12) unaligned, 1 48 1 49 2 overseer_validation_level bit (3) unaligned, /* ring of highest overseer control */ 1 50 2 validation_level bit (3) unaligned, /* ring of highest operator control */ 1 51 1 52 2 overseer_lock_id bit (36) aligned, /* lock id of the overseer process */ 1 53 2 umodes bit (36) aligned, /* 36 bits that the users can play with */ 1 54 2 time_state_changed fixed binary (71), /* time that the socket state last changed */ 1 55 2 signal_event_channel fixed binary (71), /* chanel to signal over when get INS or INR */ 1 56 2 socket_index bit (36) aligned, /* the handle we gave user for future reference */ 1 57 2 history aligned, /* state of socket over recent past history */ 1 58 3 num_state_changes fixed binary (11) unaligned, /* small field, so only keep mod */ 1 59 3 prev_state (0 : 3) fixed binary (5) unaligned; /* past N states, kept in rotation */ 1 60 1 61 declare 1 62 1 host aligned based, /* information we retain about a foreign host */ 1 63 2 lock bit (36) aligned, /* lock to prevent simultaneous updating */ 1 64 2 rcv_link_index fixed binary (17) unaligned, /* impdim index of read link for control msgs */ 1 65 2 xmit_link_index fixed binary (17) unaligned, /* impdim index of write link for control msgs */ 1 66 2 read_links_assigned bit (32) unaligned, /* a bit is on iff we have assigned that link */ 1 67 2 read_link_padd bit (4) unaligned, 1 68 2 xhost_number_pad bit (9) unaligned, 1 69 2 host_state bit (6) unaligned, /* stae of communications with this host */ 1 70 2 previous_host_state bit (6) unaligned, /* last state of this host */ 1 71 2 state_pad bit (15) unaligned, 1 72 2 time_state_changed fixed binary (71), /* time when host state last changed */ 1 73 2 read_links_used bit (32) unaligned, /* bit is on if link has been used "recently" */ 1 74 2 read_link_used_pad bit (4) unaligned, 1 75 2 num_connections fixed binary (17) unaligned, /* times we attached links for this host */ 1 76 2 hash_index fixed binary (17) unaligned, /* table index of this host entry */ 1 77 2 host_number fixed bin (32) aligned, /* host number of this host */ 1 78 2 host_number_pad fixed bin (35); 1 79 1 80 declare 1 81 1 rcvd_rfc aligned based, /* info about a rcvd Request for Connection */ 1 82 2 foreign_socket unaligned like socket.foreign_socket, /* foreign socket in RFC msg */ 1 83 2 foreign_hosts_choice fixed binary (17) unaligned, /* link or size that other host chose */ 1 84 2 next_entry fixed binary (17) unaligned, /* next RFC entry in queue for socket */ 1 85 2 padding (1) fixed binary (35); 1 86 1 87 declare 1 88 1 host_address based aligned, /* Form of a host address */ 1 89 2 net bit (8) unaligned, /* Netwwork ID */ 1 90 2 host bit (8) unaligned, /* Host Port */ 1 91 2 imp bit (16) unaligned; /* IMP ID */ 1 92 /* Duplicated because of PL/I multi-like restriction */ 1 93 1 94 /* END of include file ncp_connection_dcls.incl.pl1 */ 1 95 95 96 2 2 /* "ncp_constants_dcls.incl.pl1" -- include file to */ 2 3 /* declare some constants used throughout the Multics Network */ 2 4 /* Control Program (NCP). */ 2 5 2 6 /* Originally created by D. M. Wells, 1975, May 19. */ 2 7 2 8 declare 2 9 (NCP_DOWN initial (0), /* the NCP has been shutdown normally */ 2 10 NCP_UP_IMP_DOWN initial (1), /* the NCP is up, but the IMP is unreachable */ 2 11 NCP_UP initial (2), /* the NCP is up and running normally */ 2 12 NCP_CRASHED initial (-1)) /* the NCP has crashed itself */ 2 13 fixed binary (3) internal static options (constant); 2 14 2 15 declare 2 16 (READ_GENDER initial ("0"b), /* Read sockets are even numbers */ 2 17 WRITE_GENDER initial ("1"b)) /* Write sockets ar odd numbers */ 2 18 bit (1) internal static options (constant); 2 19 2 20 declare 2 21 (HOST_OFF initial (0), /* this host is not enabled for communications */ 2 22 HOST_UP initial (1), /* Host is up and everything ok */ 2 23 HOST_RST initial (2), /* a Host-Host RST command has been sent */ 2 24 HOST_DOWN initial (3), /* Foreign host is down */ 2 25 HOST_ON initial (4)) /* Foreign host is enabled, but not RST yet */ 2 26 fixed binary (6) internal static options (constant); 2 27 2 28 declare 2 29 (SOCK_UNASSIGNED initial (0), /* This socket entry is not in use currently */ 2 30 SOCK_ASSIGNED initial (1), /* Socket has been assigned and is quiescent */ 2 31 SOCK_LISTENING initial (2), /* Socket is listening for incoming-RFCs */ 2 32 SOCK_RFC_RCVD initial (3), /* Socket has received RFC from foreign socket */ 2 33 SOCK_RFC_ABORTED initial (4), /* CLS received for unacknowledged RFC */ 2 34 SOCK_RFC_SENT initial (5), /* RFC sent to foreign socket, but no reply */ 2 35 SOCK_CONNECTED initial (6), /* Socket is connected to foreign socket */ 2 36 SOCK_CLS_WAIT initial (7), /* CLS issued, waiting for reply CLS */ 2 37 /* State 8 is not currently defined */ 2 38 SOCK_DATA_WAIT initial (9), /* User requested close, but data still here */ 2 39 SOCK_RFNM_WAIT initial (10), /* User requested close, but waiting on last RFNM */ 2 40 SOCK_CLS_READ initial (11), /* CLS received, but data still in buffers */ 2 41 /* State 12 is not currently defined */ 2 42 SOCK_BROKEN initial (13), /* Socket has been involved in some NCP anomaly */ 2 43 SOCK_RESET initial (14)) /* Socket was connected to host that was reset */ 2 44 fixed binary (6) internal static options (constant); 2 45 2 46 declare 2 47 (SOCK_INDX_MASK initial ("000000777777"b3), /* mask to get out actual array index */ 2 48 SOCK_UNIQUE_MASK initial ("377777000000"b3)) /* mask to get out incrementing part of indx */ 2 49 bit (36) internal static options (constant); 2 50 2 51 declare 2 52 (ANY_TRACING initial ("400000000000"b3), /* if any tracing is occurring */ 2 53 PRINTER_TRACING initial ("200000000000"b3), /* if tracing to the ptr is happening */ 2 54 SYSERR_LOG_TRACING initial ("100000000000"b3), /* if tracing to syserr log mechanism */ 2 55 2 56 TRACE_CTL_MSGS initial ("004000000000"b3), /* if host-host ctl msgs should be trcd */ 2 57 TRACE_PROCESS_INFO initial ("002000000000"b3), /* if process control should be trcd */ 2 58 TRACE_DATA_FLOW initial ("001000000000"b3), /* if flow of user data to be traced */ 2 59 2 60 TRACE_NCP_RING initial ("000400000000"b3), /* if ncp_ring_ should be traced */ 2 61 TRACE_NCP_ACCESS initial ("000200000000"b3), /* if ncp_access_ should be traced */ 2 62 TRACE_NCP_DAEMON initial ("000100000000"b3), /* if ncp_daemon_ should be traced */ 2 63 TRACE_NCP_CONTROL initial ("000040000000"b3), /* if ncp_control_ should be traced */ 2 64 TRACE_NCP_TBOP initial ("000020000000"b3), /* if ncp_tbop_ should be traced */ 2 65 TRACE_NCP_IO initial ("000010000000"b3)) /* if ncp_io_ should be traced */ 2 66 bit (36) aligned internal static options (constant); 2 67 2 68 /* end of include file "ncp_constants_dcls.incl.pl1 */ 2 69 96 97 3 2 /* BEGIN include file ncp_data_dcls.incl.pl1 -- */ 3 3 3 4 /* This include file contains declarations of structures kept */ 3 5 /* in the NCP data base which aren't associated directly with */ 3 6 /* Network connections or process control. */ 3 7 3 8 /* Originally created by D. M. Wells, Jan., 1976 by altering a */ 3 9 /* previously existing include file. */ 3 10 declare 3 11 1 ncp_dt aligned based, /* Information about global state of NCP */ 3 12 2 ncp_ev_chan fixed binary (71), /* event channel id of NCP Daemon process */ 3 13 2 ncp_procid bit (36), /* process id of NCP Daemon process */ 3 14 2 ncp_up fixed binary (2), /* -1 crashed, 0 uninit, 1 imp down, 2 up */ 3 15 2 htbl_size fixed binary (17), /* max size of host table in entries */ 3 16 2 rtbl_size fixed binary (17), /* max size of RFC table in entries */ 3 17 2 stbl_size fixed binary (17), /* max size of socket table in entries */ 3 18 2 size_pad fixed binary (17), 3 19 3 20 2 htbl_gent fixed binary (17), /* max host entry used */ 3 21 2 rtbl_gent fixed binary (17), /* max RFC entry used */ 3 22 2 stbl_gent fixed binary (17), /* max socket entry used */ 3 23 2 gent_pad fixed binary (17), 3 24 3 25 2 htbl_lock bit (36) aligned, /* lock for host table */ 3 26 2 rtbl_lock bit (36) aligned, /* lock for RFC table */ 3 27 2 stbl_lock bit (36) aligned, /* lock for socket table */ 3 28 2 lock_pad bit (36) aligned, 3 29 3 30 2 state_change_reason character (32) unaligned, /* reason for last state change */ 3 31 3 32 2 ncp_devx fixed binary (12), /* IOAM devx of NCP pseudo-device */ 3 33 2 ncp_state_changes fixed binary (17), /* number of times NCP has changed state */ 3 34 2 spacen1 (14) fixed fixed binary (35), 3 35 3 36 2 host_id fixed binary (32), /* network identifier of this Multics System */ 3 37 2 crash_on_ncp_error bit (1) aligned, /* on if should crash to trap ncp error */ 3 38 2 imp_state char (8) aligned, 3 39 2 time_imp_state_changed fixed binary (71), 3 40 2 time_ncp_state_changed fixed binary (71), 3 41 3 42 2 imp_special_message bit (32), 3 43 2 imp_state_change_count fixed binary (17), 3 44 2 spacen3 (3) fixed binary (17), 3 45 2 ptbl_size fixed binary (17), /* number of entries in process table */ 3 46 2 ptbl_gent fixed binary (17), /* index of highest slot in use */ 3 47 2 ptbl_lock bit (36) aligned, /* lock word for "proc_tb" */ 3 48 3 49 2 access_dirname character (168) unaligned, /* dir of access defining segment */ 3 50 2 access_ename character (32) unaligned; /* entry of access defining segment */ 3 51 3 52 declare 3 53 1 meter_dt aligned based, /* various meters kept by the NCP */ 3 54 2 prev_user_call_time fixed binary (71), 3 55 2 prev_daemon_call_time fixed binary (71), 3 56 2 accu_time_in_ncp fixed binary (71), 3 57 2 accu_time_since_user_call fixed binary (71), 3 58 3 59 2 nprocs_in_ncp fixed binary (17), 3 60 2 nprocs_inconsistent bit (1), 3 61 2 ndaemon_calls fixed binary (17), 3 62 2 ncalls (5) fixed binary (17), 3 63 3 64 2 net_error_count fixed binary (17), 3 65 2 ncp_wakeup_count (7) fixed binary (17), 3 66 3 67 2 call_count (0: 31) fixed binary (17), 3 68 3 69 2 ctl_mess_count (0: 15) fixed binary (17), 3 70 3 71 2 tbop_mf_count (48) fixed binary (17), 3 72 3 73 2 eco_time fixed binary (71), 3 74 2 erp_time fixed binary (71), 3 75 2 eco_host fixed binary (16), 3 76 2 erp_host fixed binary (16), 3 77 2 num_activations fixed binary (30), /* number of socket activations performed */ 3 78 2 num_processes fixed binary (30); /* number of processes using the NCP */ 3 79 3 80 /* END include file ncp_data_dcls.incl.pl1 -- */ 3 81 97 98 4 2 /* BEGIN include file ncp_process_dcls.incl.pl1 -- */ 4 3 4 4 /* This include file contains declarations of per-process data. */ 4 5 4 6 /* Originally created by D. M. Wells, Jan, 1976 from a previously */ 4 7 /* existing include file. */ 4 8 4 9 declare 4 10 1 gdt aligned based, /* this holds data to/from outside world */ 4 11 2 init_sw fixed binary (30), /* set to 620998 iff initialized properly. */ 4 12 /* This particular value has no significance */ 4 13 2 error_code fixed binary (35), /* a code returned by internal modules */ 4 14 2 request_code fixed binary (12), /* type of request to be performed (input) */ 4 15 2 ncp_idx bit (36) unaligned, /* handle of socket to be manipulated (input) */ 4 16 2 state fixed binary (6), /* state of the socket (output) */ 4 17 2 privilege_code fixed binary (2), /* = 0 unpriv, = 1 priv, = 2 daemon */ 4 18 2 nbytes fixed binary (24), /* number of bytes of data presented (input) */ 4 19 2 nelemt fixed binary (24), /* number of bytes transmitted (output) */ 4 20 4 21 2 areap pointer, /* pointer to a supplied area (input) */ 4 22 2 fsoc bit (64) unaligned, /* foreign socket associated with this request */ 4 23 2 fsoc_pad bit (8) unaligned, 4 24 2 abort_location label, /* label to goto on procedure abort */ 4 25 4 26 2 host_tbl_index fixed binary (17), /* host_tbl index of foreign host */ 4 27 2 proc_id_arg bit (36), /* process id argument */ 4 28 2 entry_time fixed binary (71), /* time NCP was entered by this call */ 4 29 2 entry_type fixed binary (17), /* 1, 2 daemon; 3 userid; 4 process_rq; */ 4 30 /* 5 global_chnchn; 6 socket_state; 7 micro */ 4 31 2 nprocs_sw fixed binary (30), /* = 459248 if nprocs cell was properly set */ 4 32 2 event_chn fixed binary (71), /* event_channel argument */ 4 33 4 34 2 proc_tbp pointer, /* pointer to this process's static info block */ 4 35 2 global_queue aligned, /* impdim global queue info struct */ 4 36 3 gq_type fixed binary (17), /* imp_global_state substructure begins here */ 4 37 3 gq_imp_state character (8) unaligned, /* state of our IMP (up, down?) */ 4 38 3 gq_message bit (32) aligned, /* special message sent by IMP */ 4 39 4 40 3 gq_imp_index fixed binary (17), /* imp_dim index of this link */ 4 41 3 gq_host_id fixed binary (32), /* host identifier of a foreign host */ 4 42 3 gq_link fixed binary (8), /* link number of this link */ 4 43 3 gq_status aligned, /* of this link returned by imp_global_state */ 4 44 4 sba (0 : 17) bit (1) unaligned, /* status bits from imp dim */ 4 45 4 46 2 spaceg2 (14) fixed binary (17); 4 47 4 48 declare 4 49 1 pdt aligned based, /* information about each process using NCP */ 4 50 2 gdtp pointer, /* points to this call's global_data base */ 4 51 2 returnp label, /* return label for non-local error goto */ 4 52 4 53 2 multuid character (32) unaligned, /* process group id */ 4 54 4 55 2 netuid bit (24), /* Network id of this process */ 4 56 2 lockid bit (36), /* lock id of process, = ""b iff unassigned */ 4 57 2 processid bit (36), /* process id of this process */ 4 58 2 error_recur fixed binary (17), /* number of ncp error recursions */ 4 59 2 global_ev_chn fixed binary (71), /* this process gets changes of NCP state */ 4 60 2 num_activations fixed binary (17), 4 61 2 proc_devx fixed binary (12), 4 62 2 spacep2 (2) fixed binary (17); 4 63 4 64 declare 4 65 1 error_snapshot aligned based, /* snapshot of process info for an NCP error */ 4 66 2 ewho character (32) unaligned, /* process group id of detecting process */ 4 67 2 econdition character (32) unaligned, /* condition signalled */ 4 68 4 69 2 etime fixed binary (71), /* time of error */ 4 70 2 error_number fixed binary (17), 4 71 2 spacee1 (5) fixed binary (17), 4 72 4 73 2 mc_cond (32) bit (36) aligned, /* machine conditions */ 4 74 2 if_data (8) fixed binary (17), /* space for software supplied data */ 4 75 2 proc_slot aligned like pdt, /* copy of proc_tbl entry for this process */ 4 76 2 gdt_data aligned like gdt, /* copy of ncp_global_data at time of error */ 4 77 2 associated_data (24) bit (36) aligned; /* add'l info -- usually copy of socket entry */ 4 78 4 79 /* END include file ncp_process_dcls.incl.pl1 -- */ 4 80 98 99 100 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 101 102 ncp_order: 103 entry (P_sock_indx, P_request_code, P_info_ptr, P_sock_state, P_error_code); 104 105 P_error_code = 0; 106 P_sock_state = 0; 107 108 global_data.ncp_idx = P_sock_indx; 109 global_data.areap = P_info_ptr; 110 111 user_request_code = P_request_code; 112 global_data.request_code = user_request_code; 113 114 call make_global_data_valid (); 115 call condition_ ("any_other", ncp_error_$any_other_handler); 116 117 call begin_metering (); 118 119 call process_order (user_request_code, "0"b); 120 121 call complete_metering (); 122 123 P_sock_state = global_data.state; 124 P_error_code = global_data.error_code; 125 126 return; 127 128 /* * * * * * * * * * * * * * * * * * * * * * * * */ 129 130 ncp_priv_order: 131 entry (P_sock_indx, P_request_code, P_info_ptr, P_sock_state, P_error_code); 132 133 P_error_code = 0; 134 P_sock_state = 0; 135 136 137 global_data.ncp_idx = P_sock_indx; 138 global_data.areap = P_info_ptr; 139 140 user_request_code = P_request_code; 141 global_data.request_code = user_request_code; 142 143 call make_global_data_valid (); 144 call condition_ ("any_other", ncp_error_$any_other_handler); 145 146 call begin_metering (); 147 148 call process_order (user_request_code, "1"b); 149 150 call complete_metering (); 151 152 P_sock_state = global_data.state; 153 P_error_code = global_data.error_code; 154 155 return; 156 157 /* * * * * * * * * * * * * * * * * * * * * * * * */ 158 159 return_to_caller: 160 P_error_code = global_data.error_code; 161 162 return; 163 164 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 165 166 process_order: 167 procedure (p_request, p_privilege); 168 169 /* * * * * PARAMETER DECLARATIONS * * * * * * * */ 170 171 declare 172 (p_request fixed binary (10), 173 p_privilege bit (1)) 174 parameter; 175 176 /* * * * * AUTOMATIC STORAGE DECLARATIONS * * * */ 177 178 declare 179 (sock_byte_size fixed binary (8), 180 request fixed binary (10), 181 event_channel fixed binary (71), 182 user_modes bit (36), 183 host_ptr pointer) 184 automatic; 185 186 declare 187 1 INX_msg automatic, 188 2 op_code bit (8) unaligned, 189 2 link_num bit (8) unaligned; 190 191 /* * * * * * * * * * * * * * * * * * * * * * * * */ 192 193 global_data.error_code = 0; 194 global_data.state = 0; 195 global_data.privilege_code = binary (p_privilege, 1); 196 197 request = p_request; 198 199 if ncp_tables_$tracing_info ^= ""b 200 then call ncp_trace_ (TRACE_NCP_TBOP, "Order ^d for socket ^w", request, global_data.ncp_idx); 201 202 if (request < lbound (process_request, 1)) | (request > hbound (process_request, 1)) 203 then request = -1; 204 205 goto process_request (request); 206 207 /* * * * * * * * * * * * * * * * * * */ 208 209 user_not_privileged: /* non-privileged users of privileged functions come here */ 210 process_request (-1): /* -1 -- we cause all undefined order codes to go here */ 211 global_data.error_code = error_table_$undefined_order_request; 212 return; 213 214 /* * * * * * * * * * * * * * * * * * * */ 215 216 process_request ( 0): /* 0 -- listen for RFC's to come in on this socket */ 217 sock_ptr = find_and_lock_socket (global_data.ncp_idx, "0"b); 218 if sock_ptr = null () 219 then return; 220 221 if (global_data.state ^= SOCK_ASSIGNED) 222 then do; 223 call unlock_socket (); 224 global_data.error_code = error_table_$net_invalid_state; 225 return; 226 end; 227 228 call ncp_access_$change_socket_state (sock_ptr, SOCK_LISTENING, (0)); 229 global_data.state = binary (sock_ptr -> socket.state); 230 231 call unlock_socket (); 232 233 return; 234 235 /* * * * * * * * * * * * * * * * * * * * * * * */ 236 237 process_request ( 1): /* 1 -- reject */ 238 process_request ( 2): /* 2 -- accept */ 239 process_request ( 3): /* 3 -- close */ 240 process_request ( 4): /* 4 -- force-deactivate */ 241 global_data.request_code = p_request + 3; 242 global_data.entry_type = 7; 243 244 call ncp_tbop_$process_call (procp); 245 246 return; 247 248 /* * * * * * * * * * * * * * * * * * * */ 249 250 process_request ( 5): /* 5 -- send-interrupt */ 251 sock_ptr = find_and_lock_socket (global_data.ncp_idx, "0"b); 252 if sock_ptr = null () 253 then return; 254 255 if (global_data.state ^= SOCK_CONNECTED) 256 then do; 257 call unlock_socket (); 258 global_data.error_code = error_table_$net_invalid_state; 259 return; 260 end; 261 262 if sock_ptr -> socket.send_gender 263 then INX_msg.op_code = bit (binary (8, 8)); 264 else INX_msg.op_code = bit (binary (7, 8)); 265 266 INX_msg.link_num = bit (binary (sock_ptr -> socket.link_number, 8)); 267 268 hpr = addr (ncp_tables_$host_tbl); 269 host_ptr = addr (hpr -> host_array (sock_ptr -> socket.host_entry_index)); 270 271 call ncp_util_$send_control_message (host_ptr, addr (INX_msg), 2, global_data.error_code); 272 273 call unlock_socket (); 274 275 return; 276 277 /* * * * * * * * * * * * * * * * * * * */ 278 279 process_request ( 6): /* 6 -- allow-interrupts */ 280 if global_data.areap = null () 281 then event_channel = 0; /* user gave no event channel, use null one */ 282 else event_channel = global_data.areap -> based_fixed_bin71; 283 284 sock_ptr = find_and_lock_socket (global_data.ncp_idx, "0"b); 285 if sock_ptr = null () 286 then return; 287 288 sock_ptr -> socket.signal_event_channel = event_channel; 289 sock_ptr -> socket.allow_interrupts = "1"b; 290 291 call unlock_socket (); 292 293 return; 294 295 /* * * * * * * * * * * * * * * * * * * */ 296 297 process_request ( 7): /* 7 -- disallow-interrupts */ 298 sock_ptr = find_and_lock_socket (global_data.ncp_idx, "0"b); 299 if sock_ptr = null () 300 then return; 301 302 sock_ptr -> socket.allow_interrupts = "0"b; 303 sock_ptr -> socket.signal_event_channel = 0; 304 305 call unlock_socket (); 306 307 return; 308 309 /* * * * * * * * * * * * * * * * * * * */ 310 311 process_request ( 8): /* 8 -- set-bytesize */ 312 sock_byte_size = global_data.areap -> based_fixed_bin8; 313 if (sock_byte_size <= 0) | (sock_byte_size >= 256) 314 then do; 315 global_data.error_code = error_table_$invalid_elsize; 316 return; 317 end; 318 319 sock_ptr = find_and_lock_socket (global_data.ncp_idx, "0"b); 320 if sock_ptr = null () 321 then return; 322 323 if (global_data.state ^= SOCK_ASSIGNED) & (global_data.state ^= SOCK_LISTENING) & (global_data.state ^= SOCK_CLS_WAIT) 324 & (global_data.state ^= SOCK_DATA_WAIT) & (global_data.state ^= SOCK_RFNM_WAIT) 325 then do; 326 call unlock_socket (); 327 global_data.error_code = error_table_$net_invalid_state; 328 return; 329 end; 330 331 sock_ptr -> socket.byte_size = bit (binary (sock_byte_size, 8)); 332 333 call unlock_socket (); 334 335 return; 336 337 /* * * * * * * * * * * * * * * * * * * * * * * * */ 338 339 process_request ( 9): /* 9 -- get-bytesize */ 340 sock_ptr = find_and_lock_socket (global_data.ncp_idx, "0"b); 341 if sock_ptr = null () 342 then return; 343 344 sock_byte_size = binary (sock_ptr -> socket.byte_size, 8); 345 346 call unlock_socket (); 347 348 global_data.areap -> based_fixed_bin8 = sock_byte_size; 349 350 return; 351 352 /* * * * * * * * * * * * * * * * * * * */ 353 354 process_request (10): /* 10 -- allow-RFC-queuing */ 355 sock_ptr = find_and_lock_socket (global_data.ncp_idx, "0"b); 356 if sock_ptr = null () 357 then return; 358 359 sock_ptr -> socket.allow_rfc_queuing = "1"b; 360 361 call unlock_socket (); 362 363 return; 364 365 /* * * * * * * * * * * * * * * * * * * */ 366 367 process_request (11): /* 11 -- disallow-RFC-queuing */ 368 sock_ptr = find_and_lock_socket (global_data.ncp_idx, "0"b); 369 if sock_ptr = null () 370 then return; 371 372 sock_ptr -> socket.allow_rfc_queuing = "0"b; 373 374 call unlock_socket (); 375 376 return; 377 378 /* * * * * * * * * * * * * * * * * * * */ 379 380 process_request (12): /* 12 -- clear-connection */ 381 sock_ptr = find_and_lock_socket (global_data.ncp_idx, p_privilege); 382 if sock_ptr = null () 383 then return; 384 385 if (global_data.state ^= SOCK_CLS_WAIT) & (global_data.state ^= SOCK_DATA_WAIT) & (global_data.state ^= SOCK_RFNM_WAIT) 386 then do; 387 global_data.error_code = error_table_$net_invalid_state; 388 call unlock_socket (); 389 return; 390 end; 391 392 if sock_ptr -> socket.deactivate 393 then call ncp_access_$deactivate_socket (sock_ptr, (0)); 394 else call ncp_access_$change_socket_state (sock_ptr, SOCK_ASSIGNED, (0)); 395 396 global_data.state = binary (sock_ptr -> socket.state); /* notice that if deac then zero */ 397 398 call unlock_socket (); 399 400 return; 401 402 /* * * * * * * * * * * * * * * * * * */ 403 404 process_request (13): /* 13 -- */ 405 process_request (14): /* 14 -- */ 406 process_request (15): /* 15 -- */ 407 process_request (16): /* 16 -- */ 408 process_request (17): /* 17 -- */ 409 process_request (18): /* 18 -- */ 410 process_request (19): /* 19 -- */ 411 process_request (20): /* 20 -- */ 412 process_request (21): /* 21 -- */ 413 process_request (22): /* 22 -- */ 414 process_request (23): /* 23 -- */ 415 process_request (24): /* 24 -- */ 416 process_request (25): /* 25 -- */ 417 process_request (26): /* 26 -- */ 418 goto process_request (-1); /* none of these are valid */ 419 420 /* * * * * * * * * * * * * * * * * * * */ 421 422 process_request (27): /* 27 -- get-user-modes */ 423 sock_ptr = find_and_lock_socket (global_data.ncp_idx, "0"b); 424 if sock_ptr = null () 425 then return; 426 427 user_modes = sock_ptr -> socket.umodes; 428 429 call unlock_socket (); 430 431 global_data.areap -> based_bit36 = user_modes; 432 433 return; 434 435 /* * * * * * * * * * * * * * * * * * * */ 436 437 process_request (28): /* 28 -- set-user-modes */ 438 user_modes = global_data.areap -> based_bit36; 439 440 sock_ptr = find_and_lock_socket (global_data.ncp_idx, "0"b); 441 if sock_ptr = null () 442 then return; 443 444 sock_ptr -> socket.umodes = user_modes; 445 446 call unlock_socket (); 447 448 return; 449 450 /* * * * * * * * * * * * * * * * * * * */ 451 452 process_request (29): /* 29 -- */ 453 process_request (30): /* 30 -- */ 454 process_request (31): /* 31 -- */ 455 process_request (32): /* 32 -- */ 456 process_request (33): /* 33 -- */ 457 process_request (34): /* 34 -- */ 458 process_request (35): /* 35 -- */ 459 process_request (36): /* 36 -- */ 460 process_request (37): /* 37 -- */ 461 process_request (38): /* 38 -- */ 462 process_request (39): /* 39 -- */ 463 process_request (40): /* 40 -- */ 464 goto process_request (-1); 465 466 /* * * * * * * * * * * * * * * * * * * */ 467 468 process_request (41): /* 41 -- send ECO to foreign host */ 469 if ^ p_privilege 470 then goto user_not_privileged; 471 472 global_data.request_code = 29; 473 global_data.entry_type = 4; 474 475 global_data.gq_host_id = global_data.areap -> based_fixed_bin17; 476 477 call ncp_access_$process_rq (procp); 478 479 return; 480 481 /* * * * * * * * * * * * * * * * * * * */ 482 483 process_request (42): /* 42 -- crash on NCP error */ 484 if ^ p_privilege 485 then goto user_not_privileged; 486 487 npr = addr (ncp_tables_$ncp_data); 488 npr -> ncp_dt.crash_on_ncp_error = "1"b; 489 490 return; 491 492 /* * * * * * * * * * * * * * * * * * * */ 493 494 process_request (43): /* 43 -- */ 495 process_request (44): /* 44 -- */ 496 process_request (45): /* 45 -- */ 497 process_request (46): /* 46 -- */ 498 process_request (47): /* 47 -- */ 499 process_request (48): /* 48 -- */ 500 process_request (49): /* 49 -- */ 501 process_request (50): /* 50 -- */ 502 goto process_request (-1); /* none of these mean anything */ 503 504 /* * * * * * * * * * * * * * * * * * * */ 505 506 end; /* end process_order */ 507 508 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 509 510 begin_metering: 511 procedure (); 512 513 /* * * * * * * * * * * * * * * * * * * * * * * * */ 514 515 call ncp_util_$enter_user_NCP_environment (procp, addr (global_data), global_data.error_code); 516 if global_data.error_code ^= 0 517 then goto return_to_caller; 518 519 return; 520 521 /* * * * * * * * * * * * * * * * * * * * * * * * */ 522 523 complete_metering: 524 entry (); 525 526 call ncp_util_$exit_NCP_environment (procp, addr (global_data), (0)); 527 528 return; 529 530 end; /* end begin_metering */ 531 532 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 533 534 make_global_data_valid: 535 procedure (); 536 537 /* * * * * * * * * * * * * * * * * * * * * * * * */ 538 539 global_data.proc_tbp = null; /* null out */ 540 global_data.error_code = 0; /* init to "no error" */ 541 global_data.init_sw, global_data.nprocs_sw = 0; /* set to "uninited" */ 542 global_data.abort_location = return_to_caller; 543 544 global_data.host_tbl_index = 0; 545 546 return; 547 548 end; /* end make_global_data_valid */ 549 550 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 551 552 find_and_lock_socket: 553 procedure (p_socket_indx, p_privilege) returns (ptr); 554 555 /* * * * * PARAMETER DECLARATIONS * * * * * * * */ 556 557 declare 558 (p_privilege bit (1), 559 p_socket_indx bit (36)) 560 parameter; 561 562 /* * * * * AUTOMATIC STORAGE DECLARATIONS * * * */ 563 564 declare 565 entry_ptr pointer 566 automatic; 567 568 /* * * * * * * * * * * * * * * * * * * * * * * * */ 569 570 call ncp_util_$find_socket_from_index (p_socket_indx, p_privilege, entry_ptr, global_data.error_code); 571 if global_data.error_code ^= 0 572 then return (null ()); 573 574 global_data.state = binary (entry_ptr -> socket.state, 6); 575 576 return (entry_ptr); 577 578 end; /* end find_and_lock_socket */ 579 580 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 581 582 unlock_socket: 583 procedure (); 584 585 /* * * * * * * * * * * * * * * * * * * * * * * * */ 586 587 call ncp_lock_$lock_unlock (addr (sock_ptr -> socket.lock), (0)); 588 589 return; 590 591 end; /* end unlock_socket */ 592 593 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 594 595 end; /* end ncp_order_ */ SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/02/84 1129.5 ncp_order_.pl1 >dumps>old_dumps>hardcore>ncp_order_.pl1 95 1 09/05/79 2206.3 ncp_connection_dcls.incl.pl1 >ldd>include>ncp_connection_dcls.incl.pl1 96 2 10/07/77 1700.0 ncp_constants_dcls.incl.pl1 >ldd>include>ncp_constants_dcls.incl.pl1 97 3 07/24/78 1704.7 ncp_data_dcls.incl.pl1 >ldd>include>ncp_data_dcls.incl.pl1 98 4 07/24/78 1704.7 ncp_process_dcls.incl.pl1 >ldd>include>ncp_process_dcls.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. INX_msg 000210 automatic structure level 1 packed unaligned dcl 186 set ref 271 271 P_error_code parameter fixed bin(35,0) dcl 25 set ref 102 105* 124* 130 133* 153* 159* P_info_ptr parameter pointer dcl 25 ref 102 109 130 138 P_request_code parameter fixed bin(10,0) dcl 25 ref 102 111 130 140 P_sock_indx parameter bit(36) unaligned dcl 25 ref 102 108 130 137 P_sock_state parameter fixed bin(6,0) dcl 25 set ref 102 106* 123* 130 134* 152* SOCK_ASSIGNED 000073 constant fixed bin(6,0) initial dcl 2-28 set ref 221 323 394* SOCK_CLS_WAIT constant fixed bin(6,0) initial dcl 2-28 ref 323 385 SOCK_CONNECTED constant fixed bin(6,0) initial dcl 2-28 ref 255 SOCK_DATA_WAIT constant fixed bin(6,0) initial dcl 2-28 ref 323 385 SOCK_LISTENING 000076 constant fixed bin(6,0) initial dcl 2-28 set ref 228* 323 SOCK_RFNM_WAIT constant fixed bin(6,0) initial dcl 2-28 ref 323 385 TRACE_NCP_TBOP 000064 constant bit(36) initial dcl 2-51 set ref 199* abort_location 14 000112 automatic label variable level 2 dcl 41 set ref 542* addr builtin function dcl 89 ref 268 269 271 271 487 515 515 526 526 587 587 allow_interrupts 17(15) based bit(1) level 2 packed unaligned dcl 1-13 set ref 289* 302* allow_rfc_queuing 17(17) based bit(1) level 2 packed unaligned dcl 1-13 set ref 359* 372* areap 10 000112 automatic pointer level 2 dcl 41 set ref 109* 138* 279 282 311 348 431 437 475 based_bit36 based bit(36) unaligned dcl 46 set ref 431* 437 based_fixed_bin17 based fixed bin(17,0) dcl 46 ref 475 based_fixed_bin71 based fixed bin(71,0) dcl 46 ref 282 based_fixed_bin8 based fixed bin(8,0) dcl 46 set ref 311 348* binary builtin function dcl 89 ref 195 229 262 264 266 331 344 396 574 bit builtin function dcl 89 ref 262 264 266 331 byte_size 17(06) based bit(8) level 2 packed unaligned dcl 1-13 set ref 331* 344 condition_ 000024 constant entry external dcl 75 ref 115 144 crash_on_ncp_error 51 based bit(1) level 2 dcl 3-10 set ref 488* deactivate 17(16) based bit(1) level 2 packed unaligned dcl 1-13 ref 392 entry_ptr 000234 automatic pointer dcl 564 set ref 570* 574 576 entry_type 24 000112 automatic fixed bin(17,0) level 2 dcl 41 set ref 242* 473* error_code 1 000112 automatic fixed bin(35,0) level 2 dcl 41 set ref 124 153 159 193* 209* 224* 258* 271* 315* 327* 387* 515* 516 540* 570* 571 error_table_$invalid_elsize 000016 external static fixed bin(35,0) dcl 67 ref 315 error_table_$net_invalid_state 000020 external static fixed bin(35,0) dcl 67 ref 224 258 327 387 error_table_$undefined_order_request 000022 external static fixed bin(35,0) dcl 67 ref 209 event_channel 000202 automatic fixed bin(71,0) dcl 178 set ref 279* 282* 288 foreign_socket 13 based structure level 2 packed unaligned dcl 1-13 gdt based structure level 1 dcl 4-9 global_data 000112 automatic structure level 1 dcl 41 set ref 515 515 526 526 global_queue 32 000112 automatic structure level 2 dcl 41 gq_host_id 37 000112 automatic fixed bin(32,0) level 3 dcl 41 set ref 475* hbound builtin function dcl 89 ref 202 host based structure level 1 dcl 1-61 host_array based structure array level 1 dcl 53 set ref 269 host_entry_index 16 based fixed bin(17,0) level 2 packed unaligned dcl 1-13 ref 269 host_ptr 000206 automatic pointer dcl 178 set ref 269* 271* host_tbl_index 20 000112 automatic fixed bin(17,0) level 2 dcl 41 set ref 544* hpr 000102 automatic pointer dcl 35 set ref 268* 269 init_sw 000112 automatic fixed bin(30,0) level 2 dcl 41 set ref 541* lbound builtin function dcl 89 ref 202 link_num 0(08) 000210 automatic bit(8) level 2 packed unaligned dcl 186 set ref 266* link_number 15(18) based fixed bin(17,0) level 2 packed unaligned dcl 1-13 ref 266 lock 4 based bit(36) level 2 dcl 1-13 set ref 587 587 ncp_access_$change_socket_state 000026 constant entry external dcl 75 ref 228 394 ncp_access_$deactivate_socket 000030 constant entry external dcl 75 ref 392 ncp_access_$process_rq 000032 constant entry external dcl 75 ref 477 ncp_dt based structure level 1 dcl 3-10 ncp_error_$any_other_handler 000034 constant entry external dcl 75 ref 115 115 144 144 ncp_idx 3 000112 automatic bit(36) level 2 packed unaligned dcl 41 set ref 108* 137* 199* 216* 250* 284* 297* 319* 339* 354* 367* 380* 422* 440* ncp_lock_$lock_unlock 000036 constant entry external dcl 75 ref 587 ncp_tables_$host_tbl 000012 external static fixed bin(17,0) dcl 62 set ref 268 ncp_tables_$ncp_data 000014 external static fixed bin(17,0) dcl 62 set ref 487 ncp_tables_$tracing_info 000010 external static bit(36) dcl 58 ref 199 ncp_tbop_$process_call 000040 constant entry external dcl 75 ref 244 ncp_trace_ 000042 constant entry external dcl 75 ref 199 ncp_util_$enter_user_NCP_environment 000044 constant entry external dcl 75 ref 515 ncp_util_$exit_NCP_environment 000046 constant entry external dcl 75 ref 526 ncp_util_$find_socket_from_index 000050 constant entry external dcl 75 ref 570 ncp_util_$send_control_message 000052 constant entry external dcl 75 ref 271 npr 000104 automatic pointer dcl 35 set ref 487* 488 nprocs_sw 25 000112 automatic fixed bin(30,0) level 2 dcl 41 set ref 541* null builtin function dcl 89 ref 218 252 279 285 299 320 341 356 369 382 424 441 539 571 op_code 000210 automatic bit(8) level 2 packed unaligned dcl 186 set ref 262* 264* p_privilege parameter bit(1) unaligned dcl 557 in procedure "find_and_lock_socket" set ref 552 570* p_privilege parameter bit(1) unaligned dcl 171 in procedure "process_order" set ref 166 195 380* 468 483 p_request parameter fixed bin(10,0) dcl 171 ref 166 197 237 p_socket_indx parameter bit(36) unaligned dcl 557 set ref 552 570* pdt based structure level 1 dcl 4-48 privilege_code 5 000112 automatic fixed bin(2,0) level 2 dcl 41 set ref 195* proc_tbp 30 000112 automatic pointer level 2 dcl 41 set ref 539* procp 000106 automatic pointer dcl 35 set ref 244* 477* 515* 526* request 000201 automatic fixed bin(10,0) dcl 178 set ref 197* 199* 202 202 202* 205 request_code 2 000112 automatic fixed bin(12,0) level 2 dcl 41 set ref 112* 141* 237* 472* send_gender 17(14) based bit(1) level 2 packed unaligned dcl 1-13 ref 262 signal_event_channel 24 based fixed bin(71,0) level 2 dcl 1-13 set ref 288* 303* sock_byte_size 000200 automatic fixed bin(8,0) dcl 178 set ref 311* 313 313 331 344* 348 sock_ptr 000110 automatic pointer dcl 35 set ref 216* 218 228* 229 250* 252 262 266 269 284* 285 288 289 297* 299 302 303 319* 320 331 339* 341 344 354* 356 359 367* 369 372 380* 382 392 392* 394* 396 422* 424 427 440* 441 444 587 587 socket based structure level 1 dcl 1-13 state 17 based bit(6) level 2 in structure "socket" packed unaligned dcl 1-13 in procedure "ncp_order_" ref 229 396 574 state 4 000112 automatic fixed bin(6,0) level 2 in structure "global_data" dcl 41 in procedure "ncp_order_" set ref 123 152 194* 221 229* 255 323 323 323 323 323 385 385 385 396* 574* umodes 21 based bit(36) level 2 dcl 1-13 set ref 427 444* user_modes 000204 automatic bit(36) unaligned dcl 178 set ref 427* 431 437* 444 user_request_code 000100 automatic fixed bin(10,0) dcl 35 set ref 111* 112 119* 140* 141 148* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ANY_TRACING internal static bit(36) initial dcl 2-51 HOST_DOWN internal static fixed bin(6,0) initial dcl 2-20 HOST_OFF internal static fixed bin(6,0) initial dcl 2-20 HOST_ON internal static fixed bin(6,0) initial dcl 2-20 HOST_RST internal static fixed bin(6,0) initial dcl 2-20 HOST_UP internal static fixed bin(6,0) initial dcl 2-20 NCP_CRASHED internal static fixed bin(3,0) initial dcl 2-8 NCP_DOWN internal static fixed bin(3,0) initial dcl 2-8 NCP_UP internal static fixed bin(3,0) initial dcl 2-8 NCP_UP_IMP_DOWN internal static fixed bin(3,0) initial dcl 2-8 PRINTER_TRACING internal static bit(36) initial dcl 2-51 READ_GENDER internal static bit(1) initial unaligned dcl 2-15 SOCK_BROKEN internal static fixed bin(6,0) initial dcl 2-28 SOCK_CLS_READ internal static fixed bin(6,0) initial dcl 2-28 SOCK_INDX_MASK internal static bit(36) initial unaligned dcl 2-46 SOCK_RESET internal static fixed bin(6,0) initial dcl 2-28 SOCK_RFC_ABORTED internal static fixed bin(6,0) initial dcl 2-28 SOCK_RFC_RCVD internal static fixed bin(6,0) initial dcl 2-28 SOCK_RFC_SENT internal static fixed bin(6,0) initial dcl 2-28 SOCK_UNASSIGNED internal static fixed bin(6,0) initial dcl 2-28 SOCK_UNIQUE_MASK internal static bit(36) initial unaligned dcl 2-46 SYSERR_LOG_TRACING internal static bit(36) initial dcl 2-51 TRACE_CTL_MSGS internal static bit(36) initial dcl 2-51 TRACE_DATA_FLOW internal static bit(36) initial dcl 2-51 TRACE_NCP_ACCESS internal static bit(36) initial dcl 2-51 TRACE_NCP_CONTROL internal static bit(36) initial dcl 2-51 TRACE_NCP_DAEMON internal static bit(36) initial dcl 2-51 TRACE_NCP_IO internal static bit(36) initial dcl 2-51 TRACE_NCP_RING internal static bit(36) initial dcl 2-51 TRACE_PROCESS_INFO internal static bit(36) initial dcl 2-51 WRITE_GENDER internal static bit(1) initial unaligned dcl 2-15 error_snapshot based structure level 1 dcl 4-64 host_address based structure level 1 dcl 1-87 meter_dt based structure level 1 dcl 3-52 rcvd_rfc based structure level 1 dcl 1-80 NAMES DECLARED BY EXPLICIT CONTEXT. begin_metering 001176 constant entry internal dcl 510 ref 117 146 complete_metering 001217 constant entry internal dcl 523 ref 121 150 find_and_lock_socket 001252 constant entry internal dcl 552 ref 216 250 284 297 319 339 354 367 380 422 440 make_global_data_valid 001237 constant entry internal dcl 534 ref 114 143 ncp_order 000133 constant entry external dcl 102 ncp_order_ 000120 constant entry external dcl 11 ncp_priv_order 000221 constant entry external dcl 130 process_order 000311 constant entry internal dcl 166 ref 119 148 process_request 000000 constant label array(-1:50) dcl 209 set ref 202 202 205 404 452 494 return_to_caller 000305 constant label dcl 159 ref 516 542 unlock_socket 001307 constant entry internal dcl 582 ref 223 231 257 273 291 305 326 333 346 361 374 388 398 429 446 user_not_privileged 000370 constant label dcl 209 ref 468 483 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1660 1734 1361 1670 Length 2234 1361 54 263 276 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ncp_order_ 242 external procedure is an external procedure. process_order internal procedure shares stack frame of external procedure ncp_order_. begin_metering internal procedure shares stack frame of external procedure ncp_order_. make_global_data_valid internal procedure shares stack frame of external procedure ncp_order_. find_and_lock_socket internal procedure shares stack frame of external procedure ncp_order_. unlock_socket internal procedure shares stack frame of external procedure ncp_order_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ncp_order_ 000100 user_request_code ncp_order_ 000102 hpr ncp_order_ 000104 npr ncp_order_ 000106 procp ncp_order_ 000110 sock_ptr ncp_order_ 000112 global_data ncp_order_ 000200 sock_byte_size process_order 000201 request process_order 000202 event_channel process_order 000204 user_modes process_order 000206 host_ptr process_order 000210 INX_msg process_order 000234 entry_ptr find_and_lock_socket THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. condition_ ncp_access_$change_socket_state ncp_access_$deactivate_socket ncp_access_$process_rq ncp_error_$any_other_handler ncp_lock_$lock_unlock ncp_tbop_$process_call ncp_trace_ ncp_util_$enter_user_NCP_environment ncp_util_$exit_NCP_environment ncp_util_$find_socket_from_index ncp_util_$send_control_message THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$invalid_elsize error_table_$net_invalid_state error_table_$undefined_order_request ncp_tables_$host_tbl ncp_tables_$ncp_data ncp_tables_$tracing_info CONSTANTS 001326 aa 777776777777 001327 aa 777773777777 001330 aa 000006000000 001331 aa 000000000000 001332 aa 600000000041 001333 aa 000115000000 001334 aa 600000000041 001335 aa 000317000000 001336 aa 600000000041 001337 aa 000110000000 001340 aa 000006000000 001341 aa 000000000000 001342 aa 600000000041 001343 aa 000115000000 001344 aa 600000000041 001345 aa 000316000000 001346 aa 600000000041 001347 aa 000110000000 001350 aa 000004000000 001351 aa 000000000000 001352 aa 600000000041 001353 aa 000100000000 001354 aa 600000000041 001355 aa 000247000000 001356 aa 077777000043 001357 aa 000001000000 000064 aa 000020000000 001360 aa 777777777777 000065 aa 524000000026 000066 aa 514000000044 000067 aa 516000000001 000070 aa 500000000000 000071 aa 524000000011 000072 aa 464000000000 000073 aa 000000000001 000074 aa 516000000044 000075 aa 404000000043 000076 aa 000000000002 000077 aa 404000000012 000100 aa 404000000006 000102 aa 000000000000 000103 aa 000000000000 000104 aa 077777000043 000105 aa 000001000000 000106 aa 141 156 171 137 any_ 000107 aa 157 164 150 145 othe 000110 aa 162 000 000 000 r 000111 aa 117 162 144 145 Orde 000112 aa 162 040 136 144 r ^d 000113 aa 040 146 157 162 for 000114 aa 040 163 157 143 soc 000115 aa 153 145 164 040 ket 000116 aa 136 167 000 000 ^w LABEL ARRAYS 000000 aa 000370 7100 04 tra 248,ic 000370 000001 aa 000373 7100 04 tra 251,ic 000374 000002 aa 000435 7100 04 tra 285,ic 000437 000003 aa 000434 7100 04 tra 284,ic 000437 000004 aa 000433 7100 04 tra 283,ic 000437 000005 aa 000432 7100 04 tra 282,ic 000437 000006 aa 000447 7100 04 tra 295,ic 000455 000007 aa 000557 7100 04 tra 367,ic 000566 000010 aa 000607 7100 04 tra 391,ic 000617 000011 aa 000626 7100 04 tra 406,ic 000637 000012 aa 000702 7100 04 tra 450,ic 000714 000013 aa 000723 7100 04 tra 467,ic 000736 000014 aa 000740 7100 04 tra 480,ic 000754 000015 aa 000755 7100 04 tra 493,ic 000772 000016 aa 001051 7100 04 tra 553,ic 001067 000017 aa 001050 7100 04 tra 552,ic 001067 000020 aa 001047 7100 04 tra 551,ic 001067 000021 aa 001046 7100 04 tra 550,ic 001067 000022 aa 001045 7100 04 tra 549,ic 001067 000023 aa 001044 7100 04 tra 548,ic 001067 000024 aa 001043 7100 04 tra 547,ic 001067 000025 aa 001042 7100 04 tra 546,ic 001067 000026 aa 001041 7100 04 tra 545,ic 001067 000027 aa 001040 7100 04 tra 544,ic 001067 000030 aa 001037 7100 04 tra 543,ic 001067 000031 aa 001036 7100 04 tra 542,ic 001067 000032 aa 001035 7100 04 tra 541,ic 001067 000033 aa 001034 7100 04 tra 540,ic 001067 000034 aa 001034 7100 04 tra 540,ic 001070 000035 aa 001055 7100 04 tra 557,ic 001112 000036 aa 001076 7100 04 tra 574,ic 001134 000037 aa 001075 7100 04 tra 573,ic 001134 000040 aa 001074 7100 04 tra 572,ic 001134 000041 aa 001073 7100 04 tra 571,ic 001134 000042 aa 001072 7100 04 tra 570,ic 001134 000043 aa 001071 7100 04 tra 569,ic 001134 000044 aa 001070 7100 04 tra 568,ic 001134 000045 aa 001067 7100 04 tra 567,ic 001134 000046 aa 001066 7100 04 tra 566,ic 001134 000047 aa 001065 7100 04 tra 565,ic 001134 000050 aa 001064 7100 04 tra 564,ic 001134 000051 aa 001063 7100 04 tra 563,ic 001134 000052 aa 001063 7100 04 tra 563,ic 001135 000053 aa 001106 7100 04 tra 582,ic 001161 000054 aa 001121 7100 04 tra 593,ic 001175 000055 aa 001120 7100 04 tra 592,ic 001175 000056 aa 001117 7100 04 tra 591,ic 001175 000057 aa 001116 7100 04 tra 590,ic 001175 000060 aa 001115 7100 04 tra 589,ic 001175 000061 aa 001114 7100 04 tra 588,ic 001175 000062 aa 001113 7100 04 tra 587,ic 001175 000063 aa 001112 7100 04 tra 586,ic 001175 BEGIN PROCEDURE ncp_order_ ENTRY TO ncp_order_ STATEMENT 1 ON LINE 11 ncp_order_: procedure (); 000117 da 000255200000 000120 aa 000400 6270 00 eax7 256 000121 aa 7 00034 3521 20 epp2 pr7|28,* 000122 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000123 aa 000000000000 000124 aa 000000000000 STATEMENT 1 ON LINE 102 ncp_order: entry (P_sock_indx, P_request_code, P_info_ptr, P_sock_state, P_error_code); 000125 aa 000013 7100 04 tra 11,ic 000140 ENTRY TO ncp_order STATEMENT 1 ON LINE 102 ncp_order: entry (P_sock_indx, P_request_code, P_info_ptr, P_sock_state, P_error_code); 000126 at 000005000074 000127 tt 000077000072 000130 tt 000100000075 000131 ta 000126000000 000132 da 000263300000 000133 aa 000400 6270 00 eax7 256 000134 aa 7 00034 3521 20 epp2 pr7|28,* 000135 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000136 aa 000012000000 000137 aa 000000000000 STATEMENT 1 ON LINE 105 P_error_code = 0; 000140 aa 6 00032 3735 20 epp7 pr6|26,* 000141 aa 7 00012 4501 20 stz pr7|10,* P_error_code STATEMENT 1 ON LINE 106 P_sock_state = 0; 000142 aa 7 00010 4501 20 stz pr7|8,* P_sock_state STATEMENT 1 ON LINE 108 global_data.ncp_idx = P_sock_indx; 000143 aa 7 00002 3715 20 epp5 pr7|2,* 000144 aa 003 100 060 500 csl (pr),(pr),fill(0),bool(move) 000145 aa 5 00000 00 0044 descb pr5|0,36 P_sock_indx 000146 aa 6 00115 00 0044 descb pr6|77,36 global_data.ncp_idx STATEMENT 1 ON LINE 109 global_data.areap = P_info_ptr; 000147 aa 7 00006 3535 20 epp3 pr7|6,* P_info_ptr 000150 aa 3 00000 3535 20 epp3 pr3|0,* P_info_ptr 000151 aa 6 00122 2535 00 spri3 pr6|82 global_data.areap STATEMENT 1 ON LINE 111 user_request_code = P_request_code; 000152 aa 7 00004 2361 20 ldq pr7|4,* P_request_code 000153 aa 6 00100 7561 00 stq pr6|64 user_request_code STATEMENT 1 ON LINE 112 global_data.request_code = user_request_code; 000154 aa 6 00114 7561 00 stq pr6|76 global_data.request_code STATEMENT 1 ON LINE 114 call make_global_data_valid (); 000155 aa 001062 6700 04 tsp4 562,ic 001237 STATEMENT 1 ON LINE 115 call condition_ ("any_other", ncp_error_$any_other_handler); 000156 aa 777730 2370 04 ldaq -40,ic 000106 = 141156171137 157164150145 000157 aa 6 00244 7571 00 staq pr6|164 000160 aa 162000 2350 03 lda 58368,du 000161 aa 6 00246 7551 00 sta pr6|166 000162 aa 6 00044 3701 20 epp4 pr6|36,* 000163 la 4 00034 3521 20 epp2 pr4|28,* ncp_error_$any_other_handler 000164 aa 6 00250 2521 00 spri2 pr6|168 cp.167 000165 aa 001171 2370 04 ldaq 633,ic 001356 = 077777000043 000001000000 000166 aa 6 00252 7571 00 staq pr6|170 cp.167 000167 aa 6 00244 3521 00 epp2 pr6|164 000170 aa 6 00256 2521 00 spri2 pr6|174 000171 aa 6 00250 3521 00 epp2 pr6|168 cp.167 000172 aa 6 00260 2521 00 spri2 pr6|176 000173 aa 777676 3520 04 epp2 -66,ic 000071 = 524000000011 000174 aa 6 00262 2521 00 spri2 pr6|178 000175 aa 777673 3520 04 epp2 -69,ic 000070 = 500000000000 000176 aa 6 00264 2521 00 spri2 pr6|180 000177 aa 6 00254 6211 00 eax1 pr6|172 000200 aa 010000 4310 07 fld 4096,dl 000201 la 4 00024 3521 20 epp2 pr4|20,* condition_ 000202 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 117 call begin_metering (); 000203 aa 000773 6700 04 tsp4 507,ic 001176 STATEMENT 1 ON LINE 119 call process_order (user_request_code, "0"b); 000204 aa 000000 2350 07 lda 0,dl 000205 aa 6 00247 7551 00 sta pr6|167 000206 aa 001142 3520 04 epp2 610,ic 001350 = 000004000000 000207 aa 000102 6700 04 tsp4 66,ic 000311 STATEMENT 1 ON LINE 121 call complete_metering (); 000210 aa 001007 6700 04 tsp4 519,ic 001217 STATEMENT 1 ON LINE 123 P_sock_state = global_data.state; 000211 aa 6 00116 2361 00 ldq pr6|78 global_data.state 000212 aa 6 00032 3735 20 epp7 pr6|26,* 000213 aa 7 00010 7561 20 stq pr7|8,* P_sock_state STATEMENT 1 ON LINE 124 P_error_code = global_data.error_code; 000214 aa 6 00113 2361 00 ldq pr6|75 global_data.error_code 000215 aa 7 00012 7561 20 stq pr7|10,* P_error_code STATEMENT 1 ON LINE 126 return; 000216 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO ncp_priv_order STATEMENT 1 ON LINE 130 ncp_priv_order: entry (P_sock_indx, P_request_code, P_info_ptr, P_sock_state, P_error_code); 000217 ta 000126000000 000220 da 000272300000 000221 aa 000400 6270 00 eax7 256 000222 aa 7 00034 3521 20 epp2 pr7|28,* 000223 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000224 aa 000012000000 000225 aa 000000000000 STATEMENT 1 ON LINE 133 P_error_code = 0; 000226 aa 6 00032 3735 20 epp7 pr6|26,* 000227 aa 7 00012 4501 20 stz pr7|10,* P_error_code STATEMENT 1 ON LINE 134 P_sock_state = 0; 000230 aa 7 00010 4501 20 stz pr7|8,* P_sock_state STATEMENT 1 ON LINE 137 global_data.ncp_idx = P_sock_indx; 000231 aa 7 00002 3715 20 epp5 pr7|2,* 000232 aa 003 100 060 500 csl (pr),(pr),fill(0),bool(move) 000233 aa 5 00000 00 0044 descb pr5|0,36 P_sock_indx 000234 aa 6 00115 00 0044 descb pr6|77,36 global_data.ncp_idx STATEMENT 1 ON LINE 138 global_data.areap = P_info_ptr; 000235 aa 7 00006 3535 20 epp3 pr7|6,* P_info_ptr 000236 aa 3 00000 3535 20 epp3 pr3|0,* P_info_ptr 000237 aa 6 00122 2535 00 spri3 pr6|82 global_data.areap STATEMENT 1 ON LINE 140 user_request_code = P_request_code; 000240 aa 7 00004 2361 20 ldq pr7|4,* P_request_code 000241 aa 6 00100 7561 00 stq pr6|64 user_request_code STATEMENT 1 ON LINE 141 global_data.request_code = user_request_code; 000242 aa 6 00114 7561 00 stq pr6|76 global_data.request_code STATEMENT 1 ON LINE 143 call make_global_data_valid (); 000243 aa 000774 6700 04 tsp4 508,ic 001237 STATEMENT 1 ON LINE 144 call condition_ ("any_other", ncp_error_$any_other_handler); 000244 aa 777642 2370 04 ldaq -94,ic 000106 = 141156171137 157164150145 000245 aa 6 00244 7571 00 staq pr6|164 000246 aa 162000 2350 03 lda 58368,du 000247 aa 6 00246 7551 00 sta pr6|166 000250 aa 6 00044 3701 20 epp4 pr6|36,* 000251 la 4 00034 3521 20 epp2 pr4|28,* ncp_error_$any_other_handler 000252 aa 6 00250 2521 00 spri2 pr6|168 cp.167 000253 aa 001103 2370 04 ldaq 579,ic 001356 = 077777000043 000001000000 000254 aa 6 00252 7571 00 staq pr6|170 cp.167 000255 aa 6 00244 3521 00 epp2 pr6|164 000256 aa 6 00256 2521 00 spri2 pr6|174 000257 aa 6 00250 3521 00 epp2 pr6|168 cp.167 000260 aa 6 00260 2521 00 spri2 pr6|176 000261 aa 777610 3520 04 epp2 -120,ic 000071 = 524000000011 000262 aa 6 00262 2521 00 spri2 pr6|178 000263 aa 777605 3520 04 epp2 -123,ic 000070 = 500000000000 000264 aa 6 00264 2521 00 spri2 pr6|180 000265 aa 6 00254 6211 00 eax1 pr6|172 000266 aa 010000 4310 07 fld 4096,dl 000267 la 4 00024 3521 20 epp2 pr4|20,* condition_ 000270 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 146 call begin_metering (); 000271 aa 000705 6700 04 tsp4 453,ic 001176 STATEMENT 1 ON LINE 148 call process_order (user_request_code, "1"b); 000272 aa 400000 2350 03 lda 131072,du 000273 aa 6 00247 7551 00 sta pr6|167 000274 aa 001054 3520 04 epp2 556,ic 001350 = 000004000000 000275 aa 000014 6700 04 tsp4 12,ic 000311 STATEMENT 1 ON LINE 150 call complete_metering (); 000276 aa 000721 6700 04 tsp4 465,ic 001217 STATEMENT 1 ON LINE 152 P_sock_state = global_data.state; 000277 aa 6 00116 2361 00 ldq pr6|78 global_data.state 000300 aa 6 00032 3735 20 epp7 pr6|26,* 000301 aa 7 00010 7561 20 stq pr7|8,* P_sock_state STATEMENT 1 ON LINE 153 P_error_code = global_data.error_code; 000302 aa 6 00113 2361 00 ldq pr6|75 global_data.error_code 000303 aa 7 00012 7561 20 stq pr7|10,* P_error_code STATEMENT 1 ON LINE 155 return; 000304 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 159 return_to_caller: P_error_code = global_data.error_code; 000305 aa 6 00113 2361 00 ldq pr6|75 global_data.error_code 000306 aa 6 00032 3735 20 epp7 pr6|26,* 000307 aa 7 00012 7561 20 stq pr7|10,* P_error_code STATEMENT 1 ON LINE 162 return; 000310 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 595 end; BEGIN PROCEDURE process_order ENTRY TO process_order STATEMENT 1 ON LINE 166 process_order: procedure (p_request, p_privilege); 000311 aa 6 00172 6501 00 spri4 pr6|122 000312 aa 6 00174 2521 00 spri2 pr6|124 STATEMENT 1 ON LINE 193 global_data.error_code = 0; 000313 aa 6 00113 4501 00 stz pr6|75 global_data.error_code STATEMENT 1 ON LINE 194 global_data.state = 0; 000314 aa 6 00116 4501 00 stz pr6|78 global_data.state STATEMENT 1 ON LINE 195 global_data.privilege_code = binary (p_privilege, 1); 000315 aa 2 00004 3735 20 epp7 pr2|4,* 000316 aa 003 100 060 500 csl (pr),(pr),fill(0),bool(move) 000317 aa 7 00000 00 0001 descb pr7|0,1 p_privilege 000320 aa 6 00056 00 0044 descb pr6|46,36 000321 aa 6 00056 2351 00 lda pr6|46 000322 aa 000107 7730 00 lrl 71 000323 aa 6 00117 7561 00 stq pr6|79 global_data.privilege_code STATEMENT 1 ON LINE 197 request = p_request; 000324 aa 2 00002 2361 20 ldq pr2|2,* p_request 000325 aa 6 00201 7561 00 stq pr6|129 request STATEMENT 1 ON LINE 199 if ncp_tables_$tracing_info ^= ""b then call ncp_trace_ (TRACE_NCP_TBOP, "Order ^d for socket ^w", request, global_data.ncp_idx); 000326 aa 6 00044 3701 20 epp4 pr6|36,* 000327 la 4 00010 2351 20 lda pr4|8,* ncp_tables_$tracing_info 000330 aa 000030 6000 04 tze 24,ic 000360 000331 aa 000 100 100 404 mlr (ic),(pr),fill(000) 000332 aa 777560 00 0030 desc9a -144,24 000111 = 117162144145 000333 aa 6 00266 00 0030 desc9a pr6|182,24 000334 aa 777530 3520 04 epp2 -168,ic 000064 = 000020000000 000335 aa 6 00276 2521 00 spri2 pr6|190 000336 aa 6 00266 3521 00 epp2 pr6|182 000337 aa 6 00300 2521 00 spri2 pr6|192 000340 aa 6 00201 3521 00 epp2 pr6|129 request 000341 aa 6 00302 2521 00 spri2 pr6|194 000342 aa 6 00115 3521 00 epp2 pr6|77 global_data.ncp_idx 000343 aa 6 00304 2521 00 spri2 pr6|196 000344 aa 777522 3520 04 epp2 -174,ic 000066 = 514000000044 000345 aa 6 00306 2521 00 spri2 pr6|198 000346 aa 777517 3520 04 epp2 -177,ic 000065 = 524000000026 000347 aa 6 00310 2521 00 spri2 pr6|200 000350 aa 777527 3520 04 epp2 -169,ic 000077 = 404000000012 000351 aa 6 00312 2521 00 spri2 pr6|202 000352 aa 777522 3520 04 epp2 -174,ic 000074 = 516000000044 000353 aa 6 00314 2521 00 spri2 pr6|204 000354 aa 6 00274 6211 00 eax1 pr6|188 000355 aa 020000 4310 07 fld 8192,dl 000356 la 4 00042 3521 20 epp2 pr4|34,* ncp_trace_ 000357 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 202 if (request < lbound (process_request, 1)) | (request > hbound (process_request, 1)) then request = -1; 000360 aa 6 00201 2361 00 ldq pr6|129 request 000361 aa 000777 1160 04 cmpq 511,ic 001360 = 777777777777 000362 aa 000003 6040 04 tmi 3,ic 000365 000363 aa 000062 1160 07 cmpq 50,dl 000364 aa 000003 6044 04 tmoz 3,ic 000367 000365 aa 000001 3360 07 lcq 1,dl 000366 aa 6 00201 7561 00 stq pr6|129 request STATEMENT 1 ON LINE 205 goto process_request (request); 000367 ta 000001 7100 06 tra 1,ql STATEMENT 1 ON LINE 209 user_not_privileged: /* non-privileged users of privileged functions come here */ process_request (-1): /* -1 -- we cause all undefined order codes to go here */ global_data.error_code = error_table_$undefined_order_request; 000370 aa 6 00044 3701 20 epp4 pr6|36,* 000371 la 4 00022 2361 20 ldq pr4|18,* error_table_$undefined_order_request 000372 aa 6 00113 7561 00 stq pr6|75 global_data.error_code STATEMENT 1 ON LINE 212 return; 000373 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 216 process_request ( 0): /* 0 -- listen for RFC's to come in on this socket */ sock_ptr = find_and_lock_socket (global_data.ncp_idx, "0"b); 000374 aa 000000 2350 07 lda 0,dl 000375 aa 6 00316 7551 00 sta pr6|206 000376 aa 000742 3520 04 epp2 482,ic 001340 = 000006000000 000377 aa 000653 6700 04 tsp4 427,ic 001252 STATEMENT 1 ON LINE 218 if sock_ptr = null () then return; 000400 aa 6 00110 2371 00 ldaq pr6|72 sock_ptr 000401 aa 777503 6770 04 eraq -189,ic 000104 = 077777000043 000001000000 000402 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000403 aa 000002 6010 04 tnz 2,ic 000405 000404 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 221 if (global_data.state ^= SOCK_ASSIGNED) then do; 000405 aa 6 00116 2361 00 ldq pr6|78 global_data.state 000406 aa 000001 1160 07 cmpq 1,dl 000407 aa 000006 6000 04 tze 6,ic 000415 STATEMENT 1 ON LINE 223 call unlock_socket (); 000410 aa 000677 6700 04 tsp4 447,ic 001307 STATEMENT 1 ON LINE 224 global_data.error_code = error_table_$net_invalid_state; 000411 aa 6 00044 3701 20 epp4 pr6|36,* 000412 la 4 00020 2361 20 ldq pr4|16,* error_table_$net_invalid_state 000413 aa 6 00113 7561 00 stq pr6|75 global_data.error_code STATEMENT 1 ON LINE 225 return; 000414 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 226 end; STATEMENT 1 ON LINE 228 call ncp_access_$change_socket_state (sock_ptr, SOCK_LISTENING, (0)); 000415 aa 6 00316 4501 00 stz pr6|206 000416 aa 6 00110 3521 00 epp2 pr6|72 sock_ptr 000417 aa 6 00276 2521 00 spri2 pr6|190 000420 aa 777456 3520 04 epp2 -210,ic 000076 = 000000000002 000421 aa 6 00300 2521 00 spri2 pr6|192 000422 aa 6 00316 3521 00 epp2 pr6|206 000423 aa 6 00302 2521 00 spri2 pr6|194 000424 aa 6 00274 6211 00 eax1 pr6|188 000425 aa 014000 4310 07 fld 6144,dl 000426 aa 6 00044 3701 20 epp4 pr6|36,* 000427 la 4 00026 3521 20 epp2 pr4|22,* ncp_access_$change_socket_state 000430 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 229 global_data.state = binary (sock_ptr -> socket.state); 000431 aa 6 00110 3735 20 epp7 pr6|72,* sock_ptr 000432 aa 7 00017 2351 00 lda pr7|15 socket.state 000433 aa 000102 7730 00 lrl 66 000434 aa 6 00116 7561 00 stq pr6|78 global_data.state STATEMENT 1 ON LINE 231 call unlock_socket (); 000435 aa 000652 6700 04 tsp4 426,ic 001307 STATEMENT 1 ON LINE 233 return; 000436 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 237 process_request ( 1): /* 1 -- reject */ process_request ( 2): /* 2 -- accept */ process_request ( 3): /* 3 -- close */ process_request ( 4): /* 4 -- force-deactivate */ global_data.request_code = p_request + 3; 000437 aa 6 00174 3735 20 epp7 pr6|124,* 000440 aa 7 00002 2361 20 ldq pr7|2,* p_request 000441 aa 000003 0760 07 adq 3,dl 000442 aa 6 00114 7561 00 stq pr6|76 global_data.request_code STATEMENT 1 ON LINE 242 global_data.entry_type = 7; 000443 aa 000007 2360 07 ldq 7,dl 000444 aa 6 00136 7561 00 stq pr6|94 global_data.entry_type STATEMENT 1 ON LINE 244 call ncp_tbop_$process_call (procp); 000445 aa 6 00106 3521 00 epp2 pr6|70 procp 000446 aa 6 00270 2521 00 spri2 pr6|184 000447 aa 6 00266 6211 00 eax1 pr6|182 000450 aa 004000 4310 07 fld 2048,dl 000451 aa 6 00044 3701 20 epp4 pr6|36,* 000452 la 4 00040 3521 20 epp2 pr4|32,* ncp_tbop_$process_call 000453 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 246 return; 000454 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 250 process_request ( 5): /* 5 -- send-interrupt */ sock_ptr = find_and_lock_socket (global_data.ncp_idx, "0"b); 000455 aa 000000 2350 07 lda 0,dl 000456 aa 6 00316 7551 00 sta pr6|206 000457 aa 000661 3520 04 epp2 433,ic 001340 = 000006000000 000460 aa 000572 6700 04 tsp4 378,ic 001252 STATEMENT 1 ON LINE 252 if sock_ptr = null () then return; 000461 aa 6 00110 2371 00 ldaq pr6|72 sock_ptr 000462 aa 777422 6770 04 eraq -238,ic 000104 = 077777000043 000001000000 000463 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000464 aa 000002 6010 04 tnz 2,ic 000466 000465 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 255 if (global_data.state ^= SOCK_CONNECTED) then do; 000466 aa 6 00116 2361 00 ldq pr6|78 global_data.state 000467 aa 000006 1160 07 cmpq 6,dl 000470 aa 000006 6000 04 tze 6,ic 000476 STATEMENT 1 ON LINE 257 call unlock_socket (); 000471 aa 000616 6700 04 tsp4 398,ic 001307 STATEMENT 1 ON LINE 258 global_data.error_code = error_table_$net_invalid_state; 000472 aa 6 00044 3701 20 epp4 pr6|36,* 000473 la 4 00020 2361 20 ldq pr4|16,* error_table_$net_invalid_state 000474 aa 6 00113 7561 00 stq pr6|75 global_data.error_code STATEMENT 1 ON LINE 259 return; 000475 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 260 end; STATEMENT 1 ON LINE 262 if sock_ptr -> socket.send_gender then INX_msg.op_code = bit (binary (8, 8)); 000476 aa 6 00110 3735 20 epp7 pr6|72,* sock_ptr 000477 aa 7 00017 2351 00 lda pr7|15 socket.send_gender 000500 aa 000010 3150 03 cana 8,du 000501 aa 000011 6000 04 tze 9,ic 000512 000502 aa 000010 2350 07 lda 8,dl 000503 aa 000002 6050 04 tpl 2,ic 000505 000504 aa 000000 5310 00 neg 0 000505 aa 000034 7350 00 als 28 000506 aa 6 00210 6751 00 era pr6|136 INX_msg.op_code 000507 aa 0 00020 3751 00 ana pr0|16 = 776000000000 000510 aa 6 00210 6551 00 ersa pr6|136 INX_msg.op_code 000511 aa 000010 7100 04 tra 8,ic 000521 STATEMENT 1 ON LINE 264 else INX_msg.op_code = bit (binary (7, 8)); 000512 aa 000007 2350 07 lda 7,dl 000513 aa 000002 6050 04 tpl 2,ic 000515 000514 aa 000000 5310 00 neg 0 000515 aa 000034 7350 00 als 28 000516 aa 6 00210 6751 00 era pr6|136 INX_msg.op_code 000517 aa 0 00020 3751 00 ana pr0|16 = 776000000000 000520 aa 6 00210 6551 00 ersa pr6|136 INX_msg.op_code STATEMENT 1 ON LINE 266 INX_msg.link_num = bit (binary (sock_ptr -> socket.link_number, 8)); 000521 aa 7 00015 2351 00 lda pr7|13 socket.link_number 000522 aa 000022 7350 00 als 18 000523 aa 000066 7330 00 lrs 54 000524 aa 000003 6050 04 tpl 3,ic 000527 000525 aa 0 00110 6761 00 erq pr0|72 = 777777777777 000526 aa 000001 0760 07 adq 1,dl 000527 aa 000100 7370 00 lls 64 000530 aa 000010 7730 00 lrl 8 000531 aa 6 00210 6751 00 era pr6|136 INX_msg.link_num 000532 aa 001774 3750 03 ana 1020,du 000533 aa 6 00210 6551 00 ersa pr6|136 INX_msg.link_num STATEMENT 1 ON LINE 268 hpr = addr (ncp_tables_$host_tbl); 000534 aa 6 00044 3701 20 epp4 pr6|36,* 000535 la 4 00012 3715 20 epp5 pr4|10,* ncp_tables_$host_tbl 000536 aa 6 00102 6515 00 spri5 pr6|66 hpr STATEMENT 1 ON LINE 269 host_ptr = addr (hpr -> host_array (sock_ptr -> socket.host_entry_index)); 000537 aa 7 00016 2351 00 lda pr7|14 socket.host_entry_index 000540 aa 000066 7330 00 lrs 54 000541 aa 000012 4020 07 mpy 10,dl 000542 aa 5 77766 3535 06 epp3 pr5|-10,ql host_array 000543 aa 6 00206 2535 00 spri3 pr6|134 host_ptr STATEMENT 1 ON LINE 271 call ncp_util_$send_control_message (host_ptr, addr (INX_msg), 2, global_data.error_code); 000544 aa 6 00210 3515 00 epp1 pr6|136 INX_msg 000545 aa 6 00320 2515 00 spri1 pr6|208 000546 aa 000002 2360 07 ldq 2,dl 000547 aa 6 00317 7561 00 stq pr6|207 000550 aa 6 00206 3521 00 epp2 pr6|134 host_ptr 000551 aa 6 00276 2521 00 spri2 pr6|190 000552 aa 6 00320 3521 00 epp2 pr6|208 000553 aa 6 00300 2521 00 spri2 pr6|192 000554 aa 6 00317 3521 00 epp2 pr6|207 000555 aa 6 00302 2521 00 spri2 pr6|194 000556 aa 6 00113 3521 00 epp2 pr6|75 global_data.error_code 000557 aa 6 00304 2521 00 spri2 pr6|196 000560 aa 6 00274 6211 00 eax1 pr6|188 000561 aa 020000 4310 07 fld 8192,dl 000562 la 4 00052 3521 20 epp2 pr4|42,* ncp_util_$send_control_message 000563 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 273 call unlock_socket (); 000564 aa 000523 6700 04 tsp4 339,ic 001307 STATEMENT 1 ON LINE 275 return; 000565 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 279 process_request ( 6): /* 6 -- allow-interrupts */ if global_data.areap = null () then event_channel = 0; 000566 aa 6 00122 2371 00 ldaq pr6|82 global_data.areap 000567 aa 777315 6770 04 eraq -307,ic 000104 = 077777000043 000001000000 000570 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000571 aa 000004 6010 04 tnz 4,ic 000575 000572 aa 777310 2370 04 ldaq -312,ic 000102 = 000000000000 000000000000 000573 aa 6 00202 7571 00 staq pr6|130 event_channel 000574 aa 000003 7100 04 tra 3,ic 000577 STATEMENT 1 ON LINE 282 else event_channel = global_data.areap -> based_fixed_bin71; 000575 aa 6 00122 2371 20 ldaq pr6|82,* based_fixed_bin71 000576 aa 6 00202 7571 00 staq pr6|130 event_channel STATEMENT 1 ON LINE 284 sock_ptr = find_and_lock_socket (global_data.ncp_idx, "0"b); 000577 aa 000000 2350 07 lda 0,dl 000600 aa 6 00317 7551 00 sta pr6|207 000601 aa 000527 3520 04 epp2 343,ic 001330 = 000006000000 000602 aa 000450 6700 04 tsp4 296,ic 001252 STATEMENT 1 ON LINE 285 if sock_ptr = null () then return; 000603 aa 6 00110 2371 00 ldaq pr6|72 sock_ptr 000604 aa 777300 6770 04 eraq -320,ic 000104 = 077777000043 000001000000 000605 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000606 aa 000002 6010 04 tnz 2,ic 000610 000607 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 288 sock_ptr -> socket.signal_event_channel = event_channel; 000610 aa 6 00202 2371 00 ldaq pr6|130 event_channel 000611 aa 6 00110 3735 20 epp7 pr6|72,* sock_ptr 000612 aa 7 00024 7571 00 staq pr7|20 socket.signal_event_channel STATEMENT 1 ON LINE 289 sock_ptr -> socket.allow_interrupts = "1"b; 000613 aa 000004 2350 03 lda 4,du 000614 aa 7 00017 2551 00 orsa pr7|15 socket.allow_interrupts STATEMENT 1 ON LINE 291 call unlock_socket (); 000615 aa 000472 6700 04 tsp4 314,ic 001307 STATEMENT 1 ON LINE 293 return; 000616 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 297 process_request ( 7): /* 7 -- disallow-interrupts */ sock_ptr = find_and_lock_socket (global_data.ncp_idx, "0"b); 000617 aa 000000 2350 07 lda 0,dl 000620 aa 6 00317 7551 00 sta pr6|207 000621 aa 000507 3520 04 epp2 327,ic 001330 = 000006000000 000622 aa 000430 6700 04 tsp4 280,ic 001252 STATEMENT 1 ON LINE 299 if sock_ptr = null () then return; 000623 aa 6 00110 2371 00 ldaq pr6|72 sock_ptr 000624 aa 777260 6770 04 eraq -336,ic 000104 = 077777000043 000001000000 000625 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000626 aa 000002 6010 04 tnz 2,ic 000630 000627 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 302 sock_ptr -> socket.allow_interrupts = "0"b; 000630 aa 000477 2350 04 lda 319,ic 001327 = 777773777777 000631 aa 6 00110 3735 20 epp7 pr6|72,* sock_ptr 000632 aa 7 00017 3551 00 ansa pr7|15 socket.allow_interrupts STATEMENT 1 ON LINE 303 sock_ptr -> socket.signal_event_channel = 0; 000633 aa 777247 2370 04 ldaq -345,ic 000102 = 000000000000 000000000000 000634 aa 7 00024 7571 00 staq pr7|20 socket.signal_event_channel STATEMENT 1 ON LINE 305 call unlock_socket (); 000635 aa 000452 6700 04 tsp4 298,ic 001307 STATEMENT 1 ON LINE 307 return; 000636 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 311 process_request ( 8): /* 8 -- set-bytesize */ sock_byte_size = global_data.areap -> based_fixed_bin8; 000637 aa 6 00122 2361 20 ldq pr6|82,* based_fixed_bin8 000640 aa 6 00200 7561 00 stq pr6|128 sock_byte_size STATEMENT 1 ON LINE 313 if (sock_byte_size <= 0) | (sock_byte_size >= 256) then do; 000641 aa 000003 6044 04 tmoz 3,ic 000644 000642 aa 000400 1160 07 cmpq 256,dl 000643 aa 000005 6040 04 tmi 5,ic 000650 STATEMENT 1 ON LINE 315 global_data.error_code = error_table_$invalid_elsize; 000644 aa 6 00044 3701 20 epp4 pr6|36,* 000645 la 4 00016 2361 20 ldq pr4|14,* error_table_$invalid_elsize 000646 aa 6 00113 7561 00 stq pr6|75 global_data.error_code STATEMENT 1 ON LINE 316 return; 000647 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 317 end; STATEMENT 1 ON LINE 319 sock_ptr = find_and_lock_socket (global_data.ncp_idx, "0"b); 000650 aa 000000 2350 07 lda 0,dl 000651 aa 6 00317 7551 00 sta pr6|207 000652 aa 000456 3520 04 epp2 302,ic 001330 = 000006000000 000653 aa 000377 6700 04 tsp4 255,ic 001252 STATEMENT 1 ON LINE 320 if sock_ptr = null () then return; 000654 aa 6 00110 2371 00 ldaq pr6|72 sock_ptr 000655 aa 777227 6770 04 eraq -361,ic 000104 = 077777000043 000001000000 000656 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000657 aa 000002 6010 04 tnz 2,ic 000661 000660 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 323 if (global_data.state ^= SOCK_ASSIGNED) & (global_data.state ^= SOCK_LISTENING) & (global_data.state ^= SOCK_CLS_WAIT) & (global_data.state ^= SOCK_DATA_WAIT) & (global_data.state ^= SOCK_RFNM_WAIT) then do; 000661 aa 6 00116 2361 00 ldq pr6|78 global_data.state 000662 aa 000001 1160 07 cmpq 1,dl 000663 aa 000016 6000 04 tze 14,ic 000701 000664 aa 000002 1160 07 cmpq 2,dl 000665 aa 000014 6000 04 tze 12,ic 000701 000666 aa 000007 1160 07 cmpq 7,dl 000667 aa 000012 6000 04 tze 10,ic 000701 000670 aa 000011 1160 07 cmpq 9,dl 000671 aa 000010 6000 04 tze 8,ic 000701 000672 aa 000012 1160 07 cmpq 10,dl 000673 aa 000006 6000 04 tze 6,ic 000701 STATEMENT 1 ON LINE 326 call unlock_socket (); 000674 aa 000413 6700 04 tsp4 267,ic 001307 STATEMENT 1 ON LINE 327 global_data.error_code = error_table_$net_invalid_state; 000675 aa 6 00044 3701 20 epp4 pr6|36,* 000676 la 4 00020 2361 20 ldq pr4|16,* error_table_$net_invalid_state 000677 aa 6 00113 7561 00 stq pr6|75 global_data.error_code STATEMENT 1 ON LINE 328 return; 000700 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 329 end; STATEMENT 1 ON LINE 331 sock_ptr -> socket.byte_size = bit (binary (sock_byte_size, 8)); 000701 aa 6 00200 2351 00 lda pr6|128 sock_byte_size 000702 aa 000002 6050 04 tpl 2,ic 000704 000703 aa 000000 5310 00 neg 0 000704 aa 000034 7350 00 als 28 000705 aa 000006 7710 00 arl 6 000706 aa 6 00110 3735 20 epp7 pr6|72,* sock_ptr 000707 aa 7 00017 6751 00 era pr7|15 socket.byte_size 000710 aa 007760 3750 03 ana 4080,du 000711 aa 7 00017 6551 00 ersa pr7|15 socket.byte_size STATEMENT 1 ON LINE 333 call unlock_socket (); 000712 aa 000375 6700 04 tsp4 253,ic 001307 STATEMENT 1 ON LINE 335 return; 000713 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 339 process_request ( 9): /* 9 -- get-bytesize */ sock_ptr = find_and_lock_socket (global_data.ncp_idx, "0"b); 000714 aa 000000 2350 07 lda 0,dl 000715 aa 6 00317 7551 00 sta pr6|207 000716 aa 000412 3520 04 epp2 266,ic 001330 = 000006000000 000717 aa 000333 6700 04 tsp4 219,ic 001252 STATEMENT 1 ON LINE 341 if sock_ptr = null () then return; 000720 aa 6 00110 2371 00 ldaq pr6|72 sock_ptr 000721 aa 777163 6770 04 eraq -397,ic 000104 = 077777000043 000001000000 000722 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000723 aa 000002 6010 04 tnz 2,ic 000725 000724 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 344 sock_byte_size = binary (sock_ptr -> socket.byte_size, 8); 000725 aa 6 00110 3735 20 epp7 pr6|72,* sock_ptr 000726 aa 7 00017 2351 00 lda pr7|15 socket.byte_size 000727 aa 000006 7350 00 als 6 000730 aa 000100 7730 00 lrl 64 000731 aa 6 00200 7561 00 stq pr6|128 sock_byte_size STATEMENT 1 ON LINE 346 call unlock_socket (); 000732 aa 000355 6700 04 tsp4 237,ic 001307 STATEMENT 1 ON LINE 348 global_data.areap -> based_fixed_bin8 = sock_byte_size; 000733 aa 6 00200 2361 00 ldq pr6|128 sock_byte_size 000734 aa 6 00122 7561 20 stq pr6|82,* based_fixed_bin8 STATEMENT 1 ON LINE 350 return; 000735 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 354 process_request (10): /* 10 -- allow-RFC-queuing */ sock_ptr = find_and_lock_socket (global_data.ncp_idx, "0"b); 000736 aa 000000 2350 07 lda 0,dl 000737 aa 6 00317 7551 00 sta pr6|207 000740 aa 000370 3520 04 epp2 248,ic 001330 = 000006000000 000741 aa 000311 6700 04 tsp4 201,ic 001252 STATEMENT 1 ON LINE 356 if sock_ptr = null () then return; 000742 aa 6 00110 2371 00 ldaq pr6|72 sock_ptr 000743 aa 777141 6770 04 eraq -415,ic 000104 = 077777000043 000001000000 000744 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000745 aa 000002 6010 04 tnz 2,ic 000747 000746 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 359 sock_ptr -> socket.allow_rfc_queuing = "1"b; 000747 aa 000001 2350 03 lda 1,du 000750 aa 6 00110 3735 20 epp7 pr6|72,* sock_ptr 000751 aa 7 00017 2551 00 orsa pr7|15 socket.allow_rfc_queuing STATEMENT 1 ON LINE 361 call unlock_socket (); 000752 aa 000335 6700 04 tsp4 221,ic 001307 STATEMENT 1 ON LINE 363 return; 000753 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 367 process_request (11): /* 11 -- disallow-RFC-queuing */ sock_ptr = find_and_lock_socket (global_data.ncp_idx, "0"b); 000754 aa 000000 2350 07 lda 0,dl 000755 aa 6 00317 7551 00 sta pr6|207 000756 aa 000352 3520 04 epp2 234,ic 001330 = 000006000000 000757 aa 000273 6700 04 tsp4 187,ic 001252 STATEMENT 1 ON LINE 369 if sock_ptr = null () then return; 000760 aa 6 00110 2371 00 ldaq pr6|72 sock_ptr 000761 aa 777123 6770 04 eraq -429,ic 000104 = 077777000043 000001000000 000762 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000763 aa 000002 6010 04 tnz 2,ic 000765 000764 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 372 sock_ptr -> socket.allow_rfc_queuing = "0"b; 000765 aa 000341 2350 04 lda 225,ic 001326 = 777776777777 000766 aa 6 00110 3735 20 epp7 pr6|72,* sock_ptr 000767 aa 7 00017 3551 00 ansa pr7|15 socket.allow_rfc_queuing STATEMENT 1 ON LINE 374 call unlock_socket (); 000770 aa 000317 6700 04 tsp4 207,ic 001307 STATEMENT 1 ON LINE 376 return; 000771 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 380 process_request (12): /* 12 -- clear-connection */ sock_ptr = find_and_lock_socket (global_data.ncp_idx, p_privilege); 000772 aa 6 00115 3521 00 epp2 pr6|77 global_data.ncp_idx 000773 aa 6 00276 2521 00 spri2 pr6|190 000774 aa 6 00174 3735 20 epp7 pr6|124,* 000775 aa 7 00004 3521 20 epp2 pr7|4,* p_privilege 000776 aa 6 00300 2521 00 spri2 pr6|192 000777 aa 6 00110 3521 00 epp2 pr6|72 sock_ptr 001000 aa 6 00302 2521 00 spri2 pr6|194 001001 aa 6 00274 3521 00 epp2 pr6|188 001002 aa 014000 4310 07 fld 6144,dl 001003 aa 2 00000 7571 00 staq pr2|0 001004 aa 000246 6700 04 tsp4 166,ic 001252 STATEMENT 1 ON LINE 382 if sock_ptr = null () then return; 001005 aa 6 00110 2371 00 ldaq pr6|72 sock_ptr 001006 aa 777076 6770 04 eraq -450,ic 000104 = 077777000043 000001000000 001007 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001010 aa 000002 6010 04 tnz 2,ic 001012 001011 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 385 if (global_data.state ^= SOCK_CLS_WAIT) & (global_data.state ^= SOCK_DATA_WAIT) & (global_data.state ^= SOCK_RFNM_WAIT) then do; 001012 aa 6 00116 2361 00 ldq pr6|78 global_data.state 001013 aa 000007 1160 07 cmpq 7,dl 001014 aa 000012 6000 04 tze 10,ic 001026 001015 aa 000011 1160 07 cmpq 9,dl 001016 aa 000010 6000 04 tze 8,ic 001026 001017 aa 000012 1160 07 cmpq 10,dl 001020 aa 000006 6000 04 tze 6,ic 001026 STATEMENT 1 ON LINE 387 global_data.error_code = error_table_$net_invalid_state; 001021 aa 6 00044 3701 20 epp4 pr6|36,* 001022 la 4 00020 2361 20 ldq pr4|16,* error_table_$net_invalid_state 001023 aa 6 00113 7561 00 stq pr6|75 global_data.error_code STATEMENT 1 ON LINE 388 call unlock_socket (); 001024 aa 000263 6700 04 tsp4 179,ic 001307 STATEMENT 1 ON LINE 389 return; 001025 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 390 end; STATEMENT 1 ON LINE 392 if sock_ptr -> socket.deactivate then call ncp_access_$deactivate_socket (sock_ptr, (0)); 001026 aa 6 00110 3735 20 epp7 pr6|72,* sock_ptr 001027 aa 7 00017 2351 00 lda pr7|15 socket.deactivate 001030 aa 000002 3150 03 cana 2,du 001031 aa 000014 6000 04 tze 12,ic 001045 001032 aa 6 00317 4501 00 stz pr6|207 001033 aa 6 00110 3521 00 epp2 pr6|72 sock_ptr 001034 aa 6 00270 2521 00 spri2 pr6|184 001035 aa 6 00317 3521 00 epp2 pr6|207 001036 aa 6 00272 2521 00 spri2 pr6|186 001037 aa 6 00266 6211 00 eax1 pr6|182 001040 aa 010000 4310 07 fld 4096,dl 001041 aa 6 00044 3701 20 epp4 pr6|36,* 001042 la 4 00030 3521 20 epp2 pr4|24,* ncp_access_$deactivate_socket 001043 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 001044 aa 000015 7100 04 tra 13,ic 001061 STATEMENT 1 ON LINE 394 else call ncp_access_$change_socket_state (sock_ptr, SOCK_ASSIGNED, (0)); 001045 aa 6 00317 4501 00 stz pr6|207 001046 aa 6 00110 3521 00 epp2 pr6|72 sock_ptr 001047 aa 6 00276 2521 00 spri2 pr6|190 001050 aa 777023 3520 04 epp2 -493,ic 000073 = 000000000001 001051 aa 6 00300 2521 00 spri2 pr6|192 001052 aa 6 00317 3521 00 epp2 pr6|207 001053 aa 6 00302 2521 00 spri2 pr6|194 001054 aa 6 00274 6211 00 eax1 pr6|188 001055 aa 014000 4310 07 fld 6144,dl 001056 aa 6 00044 3701 20 epp4 pr6|36,* 001057 la 4 00026 3521 20 epp2 pr4|22,* ncp_access_$change_socket_state 001060 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 396 global_data.state = binary (sock_ptr -> socket.state); 001061 aa 6 00110 3735 20 epp7 pr6|72,* sock_ptr 001062 aa 7 00017 2351 00 lda pr7|15 socket.state 001063 aa 000102 7730 00 lrl 66 001064 aa 6 00116 7561 00 stq pr6|78 global_data.state STATEMENT 1 ON LINE 398 call unlock_socket (); 001065 aa 000222 6700 04 tsp4 146,ic 001307 STATEMENT 1 ON LINE 400 return; 001066 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 404 process_request (13): /* 13 -- */ process_request (14): /* 14 -- */ process_request (15): /* 15 -- */ process_request (16): /* 16 -- */ process_request (17): /* 17 -- */ process_request (18): /* 18 -- */ process_request (19): /* 19 -- */ process_request (20): /* 20 -- */ process_request (21): /* 21 -- */ process_request (22): /* 22 -- */ process_request (23): /* 23 -- */ process_request (24): /* 24 -- */ process_request (25): /* 25 -- */ process_request (26): /* 26 -- */ goto process_request (-1); 001067 aa 776711 7100 04 tra -567,ic 000000 STATEMENT 1 ON LINE 422 process_request (27): /* 27 -- get-user-modes */ sock_ptr = find_and_lock_socket (global_data.ncp_idx, "0"b); 001070 aa 000000 2350 07 lda 0,dl 001071 aa 6 00317 7551 00 sta pr6|207 001072 aa 000236 3520 04 epp2 158,ic 001330 = 000006000000 001073 aa 000157 6700 04 tsp4 111,ic 001252 STATEMENT 1 ON LINE 424 if sock_ptr = null () then return; 001074 aa 6 00110 2371 00 ldaq pr6|72 sock_ptr 001075 aa 777007 6770 04 eraq -505,ic 000104 = 077777000043 000001000000 001076 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001077 aa 000002 6010 04 tnz 2,ic 001101 001100 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 427 user_modes = sock_ptr -> socket.umodes; 001101 aa 6 00110 3735 20 epp7 pr6|72,* sock_ptr 001102 aa 7 00021 2351 00 lda pr7|17 socket.umodes 001103 aa 6 00204 7551 00 sta pr6|132 user_modes STATEMENT 1 ON LINE 429 call unlock_socket (); 001104 aa 000203 6700 04 tsp4 131,ic 001307 STATEMENT 1 ON LINE 431 global_data.areap -> based_bit36 = user_modes; 001105 aa 6 00122 3735 20 epp7 pr6|82,* global_data.areap 001106 aa 003 100 060 500 csl (pr),(pr),fill(0),bool(move) 001107 aa 6 00204 00 0044 descb pr6|132,36 user_modes 001110 aa 7 00000 00 0044 descb pr7|0,36 based_bit36 STATEMENT 1 ON LINE 433 return; 001111 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 437 process_request (28): /* 28 -- set-user-modes */ user_modes = global_data.areap -> based_bit36; 001112 aa 6 00122 3735 20 epp7 pr6|82,* global_data.areap 001113 aa 003 100 060 500 csl (pr),(pr),fill(0),bool(move) 001114 aa 7 00000 00 0044 descb pr7|0,36 based_bit36 001115 aa 6 00204 00 0044 descb pr6|132,36 user_modes STATEMENT 1 ON LINE 440 sock_ptr = find_and_lock_socket (global_data.ncp_idx, "0"b); 001116 aa 000000 2350 07 lda 0,dl 001117 aa 6 00317 7551 00 sta pr6|207 001120 aa 000210 3520 04 epp2 136,ic 001330 = 000006000000 001121 aa 000131 6700 04 tsp4 89,ic 001252 STATEMENT 1 ON LINE 441 if sock_ptr = null () then return; 001122 aa 6 00110 2371 00 ldaq pr6|72 sock_ptr 001123 aa 776761 6770 04 eraq -527,ic 000104 = 077777000043 000001000000 001124 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001125 aa 000002 6010 04 tnz 2,ic 001127 001126 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 444 sock_ptr -> socket.umodes = user_modes; 001127 aa 6 00204 2351 00 lda pr6|132 user_modes 001130 aa 6 00110 3735 20 epp7 pr6|72,* sock_ptr 001131 aa 7 00021 7551 00 sta pr7|17 socket.umodes STATEMENT 1 ON LINE 446 call unlock_socket (); 001132 aa 000155 6700 04 tsp4 109,ic 001307 STATEMENT 1 ON LINE 448 return; 001133 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 452 process_request (29): /* 29 -- */ process_request (30): /* 30 -- */ process_request (31): /* 31 -- */ process_request (32): /* 32 -- */ process_request (33): /* 33 -- */ process_request (34): /* 34 -- */ process_request (35): /* 35 -- */ process_request (36): /* 36 -- */ process_request (37): /* 37 -- */ process_request (38): /* 38 -- */ process_request (39): /* 39 -- */ process_request (40): /* 40 -- */ goto process_request (-1); 001134 aa 776644 7100 04 tra -604,ic 000000 STATEMENT 1 ON LINE 468 process_request (41): /* 41 -- send ECO to foreign host */ if ^ p_privilege then goto user_not_privileged; 001135 aa 6 00174 3735 20 epp7 pr6|124,* 001136 aa 7 00004 3715 20 epp5 pr7|4,* 001137 aa 000 000 066 500 cmpb (pr),(),fill(0) 001140 aa 5 00000 00 0001 descb pr5|0,1 p_privilege 001141 aa 000000 00 0000 descb 0,0 001142 aa 777226 6000 04 tze -362,ic 000370 STATEMENT 1 ON LINE 472 global_data.request_code = 29; 001143 aa 000035 2360 07 ldq 29,dl 001144 aa 6 00114 7561 00 stq pr6|76 global_data.request_code STATEMENT 1 ON LINE 473 global_data.entry_type = 4; 001145 aa 000004 2360 07 ldq 4,dl 001146 aa 6 00136 7561 00 stq pr6|94 global_data.entry_type STATEMENT 1 ON LINE 475 global_data.gq_host_id = global_data.areap -> based_fixed_bin17; 001147 aa 6 00122 2361 20 ldq pr6|82,* based_fixed_bin17 001150 aa 6 00151 7561 00 stq pr6|105 global_data.gq_host_id STATEMENT 1 ON LINE 477 call ncp_access_$process_rq (procp); 001151 aa 6 00106 3521 00 epp2 pr6|70 procp 001152 aa 6 00270 2521 00 spri2 pr6|184 001153 aa 6 00266 6211 00 eax1 pr6|182 001154 aa 004000 4310 07 fld 2048,dl 001155 aa 6 00044 3701 20 epp4 pr6|36,* 001156 la 4 00032 3521 20 epp2 pr4|26,* ncp_access_$process_rq 001157 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 479 return; 001160 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 483 process_request (42): /* 42 -- crash on NCP error */ if ^ p_privilege then goto user_not_privileged; 001161 aa 6 00174 3735 20 epp7 pr6|124,* 001162 aa 7 00004 3715 20 epp5 pr7|4,* 001163 aa 000 000 066 500 cmpb (pr),(),fill(0) 001164 aa 5 00000 00 0001 descb pr5|0,1 p_privilege 001165 aa 000000 00 0000 descb 0,0 001166 aa 777202 6000 04 tze -382,ic 000370 STATEMENT 1 ON LINE 487 npr = addr (ncp_tables_$ncp_data); 001167 aa 6 00044 3701 20 epp4 pr6|36,* 001170 la 4 00014 3535 20 epp3 pr4|12,* ncp_tables_$ncp_data 001171 aa 6 00104 2535 00 spri3 pr6|68 npr STATEMENT 1 ON LINE 488 npr -> ncp_dt.crash_on_ncp_error = "1"b; 001172 aa 400000 2350 03 lda 131072,du 001173 aa 3 00051 7551 00 sta pr3|41 ncp_dt.crash_on_ncp_error STATEMENT 1 ON LINE 490 return; 001174 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 494 process_request (43): /* 43 -- */ process_request (44): /* 44 -- */ process_request (45): /* 45 -- */ process_request (46): /* 46 -- */ process_request (47): /* 47 -- */ process_request (48): /* 48 -- */ process_request (49): /* 49 -- */ process_request (50): /* 50 -- */ goto process_request (-1); 001175 aa 776603 7100 04 tra -637,ic 000000 STATEMENT 1 ON LINE 506 end; END PROCEDURE process_order BEGIN PROCEDURE begin_metering ENTRY TO begin_metering STATEMENT 1 ON LINE 510 begin_metering: procedure (); 001176 aa 6 00212 6501 00 spri4 pr6|138 STATEMENT 1 ON LINE 515 call ncp_util_$enter_user_NCP_environment (procp, addr (global_data), global_data.error_code); 001177 aa 6 00112 3735 00 epp7 pr6|74 global_data 001200 aa 6 00322 6535 00 spri7 pr6|210 001201 aa 6 00106 3521 00 epp2 pr6|70 procp 001202 aa 6 00326 2521 00 spri2 pr6|214 001203 aa 6 00322 3521 00 epp2 pr6|210 001204 aa 6 00330 2521 00 spri2 pr6|216 001205 aa 6 00113 3521 00 epp2 pr6|75 global_data.error_code 001206 aa 6 00332 2521 00 spri2 pr6|218 001207 aa 6 00324 6211 00 eax1 pr6|212 001210 aa 014000 4310 07 fld 6144,dl 001211 aa 6 00044 3701 20 epp4 pr6|36,* 001212 la 4 00044 3521 20 epp2 pr4|36,* ncp_util_$enter_user_NCP_environment 001213 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 516 if global_data.error_code ^= 0 then goto return_to_caller; 001214 aa 6 00113 2361 00 ldq pr6|75 global_data.error_code 001215 aa 777070 6010 04 tnz -456,ic 000305 STATEMENT 1 ON LINE 519 return; 001216 aa 6 00212 6101 00 rtcd pr6|138 ENTRY TO complete_metering STATEMENT 1 ON LINE 523 complete_metering: entry (); 001217 aa 6 00212 6501 00 spri4 pr6|138 STATEMENT 1 ON LINE 526 call ncp_util_$exit_NCP_environment (procp, addr (global_data), (0)); 001220 aa 6 00112 3735 00 epp7 pr6|74 global_data 001221 aa 6 00322 6535 00 spri7 pr6|210 001222 aa 6 00334 4501 00 stz pr6|220 001223 aa 6 00106 3521 00 epp2 pr6|70 procp 001224 aa 6 00326 2521 00 spri2 pr6|214 001225 aa 6 00322 3521 00 epp2 pr6|210 001226 aa 6 00330 2521 00 spri2 pr6|216 001227 aa 6 00334 3521 00 epp2 pr6|220 001230 aa 6 00332 2521 00 spri2 pr6|218 001231 aa 6 00324 6211 00 eax1 pr6|212 001232 aa 014000 4310 07 fld 6144,dl 001233 aa 6 00044 3701 20 epp4 pr6|36,* 001234 la 4 00046 3521 20 epp2 pr4|38,* ncp_util_$exit_NCP_environment 001235 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 528 return; 001236 aa 6 00212 6101 00 rtcd pr6|138 STATEMENT 1 ON LINE 530 end; END PROCEDURE begin_metering BEGIN PROCEDURE make_global_data_valid ENTRY TO make_global_data_valid STATEMENT 1 ON LINE 534 make_global_data_valid: procedure (); 001237 aa 6 00220 6501 00 spri4 pr6|144 STATEMENT 1 ON LINE 539 global_data.proc_tbp = null; 001240 aa 776644 2370 04 ldaq -604,ic 000104 = 077777000043 000001000000 001241 aa 6 00142 7571 00 staq pr6|98 global_data.proc_tbp STATEMENT 1 ON LINE 540 global_data.error_code = 0; 001242 aa 6 00113 4501 00 stz pr6|75 global_data.error_code STATEMENT 1 ON LINE 541 global_data.init_sw, global_data.nprocs_sw = 0; 001243 aa 6 00112 4501 00 stz pr6|74 global_data.init_sw 001244 aa 6 00137 4501 00 stz pr6|95 global_data.nprocs_sw STATEMENT 1 ON LINE 542 global_data.abort_location = return_to_caller; 001245 aa 777040 3520 04 epp2 -480,ic 000305 = 600113236100 001246 aa 6 00126 2521 00 spri2 pr6|86 global_data.abort_location 001247 aa 6 00130 6521 00 spri6 pr6|88 global_data.abort_location STATEMENT 1 ON LINE 544 global_data.host_tbl_index = 0; 001250 aa 6 00132 4501 00 stz pr6|90 global_data.host_tbl_index STATEMENT 1 ON LINE 546 return; 001251 aa 6 00220 6101 00 rtcd pr6|144 STATEMENT 1 ON LINE 548 end; END PROCEDURE make_global_data_valid BEGIN PROCEDURE find_and_lock_socket ENTRY TO find_and_lock_socket STATEMENT 1 ON LINE 552 find_and_lock_socket: procedure (p_socket_indx, p_privilege) returns (ptr); 001252 aa 6 00226 6501 00 spri4 pr6|150 001253 aa 6 00230 2521 00 spri2 pr6|152 STATEMENT 1 ON LINE 570 call ncp_util_$find_socket_from_index (p_socket_indx, p_privilege, entry_ptr, global_data.error_code); 001254 aa 2 00002 3521 20 epp2 pr2|2,* p_socket_indx 001255 aa 6 00340 2521 00 spri2 pr6|224 001256 aa 6 00230 3735 20 epp7 pr6|152,* 001257 aa 7 00004 3521 20 epp2 pr7|4,* p_privilege 001260 aa 6 00342 2521 00 spri2 pr6|226 001261 aa 6 00234 3521 00 epp2 pr6|156 entry_ptr 001262 aa 6 00344 2521 00 spri2 pr6|228 001263 aa 6 00113 3521 00 epp2 pr6|75 global_data.error_code 001264 aa 6 00346 2521 00 spri2 pr6|230 001265 aa 6 00336 6211 00 eax1 pr6|222 001266 aa 020000 4310 07 fld 8192,dl 001267 aa 6 00044 3701 20 epp4 pr6|36,* 001270 la 4 00050 3521 20 epp2 pr4|40,* ncp_util_$find_socket_from_index 001271 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 571 if global_data.error_code ^= 0 then return (null ()); 001272 aa 6 00113 2361 00 ldq pr6|75 global_data.error_code 001273 aa 000005 6000 04 tze 5,ic 001300 001274 aa 776610 2370 04 ldaq -632,ic 000104 = 077777000043 000001000000 001275 aa 6 00230 3735 20 epp7 pr6|152,* 001276 aa 7 00006 7571 20 staq pr7|6,* 001277 aa 6 00226 6101 00 rtcd pr6|150 STATEMENT 1 ON LINE 574 global_data.state = binary (entry_ptr -> socket.state, 6); 001300 aa 6 00234 3735 20 epp7 pr6|156,* entry_ptr 001301 aa 7 00017 2351 00 lda pr7|15 socket.state 001302 aa 000102 7730 00 lrl 66 001303 aa 6 00116 7561 00 stq pr6|78 global_data.state STATEMENT 1 ON LINE 576 return (entry_ptr); 001304 aa 6 00230 3715 20 epp5 pr6|152,* 001305 aa 5 00006 6535 20 spri7 pr5|6,* 001306 aa 6 00226 6101 00 rtcd pr6|150 STATEMENT 1 ON LINE 578 end; END PROCEDURE find_and_lock_socket BEGIN PROCEDURE unlock_socket ENTRY TO unlock_socket STATEMENT 1 ON LINE 582 unlock_socket: procedure (); 001307 aa 6 00236 6501 00 spri4 pr6|158 STATEMENT 1 ON LINE 587 call ncp_lock_$lock_unlock (addr (sock_ptr -> socket.lock), (0)); 001310 aa 6 00110 3735 20 epp7 pr6|72,* sock_ptr 001311 aa 7 00004 3735 00 epp7 pr7|4 socket.lock 001312 aa 6 00350 6535 00 spri7 pr6|232 001313 aa 6 00352 4501 00 stz pr6|234 001314 aa 6 00350 3521 00 epp2 pr6|232 001315 aa 6 00356 2521 00 spri2 pr6|238 001316 aa 6 00352 3521 00 epp2 pr6|234 001317 aa 6 00360 2521 00 spri2 pr6|240 001320 aa 6 00354 6211 00 eax1 pr6|236 001321 aa 010000 4310 07 fld 4096,dl 001322 aa 6 00044 3701 20 epp4 pr6|36,* 001323 la 4 00036 3521 20 epp2 pr4|30,* ncp_lock_$lock_unlock 001324 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 589 return; 001325 aa 6 00236 6101 00 rtcd pr6|158 STATEMENT 1 ON LINE 591 end; END PROCEDURE unlock_socket END PROCEDURE ncp_order_ ----------------------------------------------------------- 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