This file contains several macros used when generating gate segments. The macros that are defined are: gate_info general setup code for normal gates hardcore_gate_info general setup code for hardcore gates gate to define a normal gate hgate to define a hardcore gate fgate to define a fast hardcore gate "014 HGATE to define a hardcore gate entry ¯o hgate segdef &1 use transfer_vector &1: tra &1.e use main zero &4*2,&1.t &1.e: tsx0 setup "setup handlers short_call <&2>|[&3](ap|0) eppbp lp|&1.t tra return_code use linkage even &1.t: bss ,6 &end GATE to define a normal gate entry ¯o gate segdef &1 use transfer_vector &1: tra &1.e use main arg &4*2 &1.e: tsx0 setup short_call <&2>|[&3](ap|0) return &end FGATE to define a fast hardcore gate ¯o fgate segdef &1 use transfer_vector &1: tra &1.e use main zero 0 &1.e: epplp my_lp,* tra <&2>|[&3] &end HARDCORE_GATE_INFO general info for hardcore gates ¯o hardcore_gate_info tempd arglist(3),time1,time2,temp temp pf use transfer_vector equ reloc_0,* use main use linkage join /text/transfer_vector,main join /link/linkage segref signal_,signal_ use main segdef my_lp even my_lp: bss ,2 setup: push epplp my_lp,* sprilp sp|stack_frame.lp_ptr ldx1 -2,0 "get number of args expected tze get_meters "if zero, none or doesn't matter cmpx1 ap|0 "compare against number given tnz call_signal "args don't match, call signal_("gate_error") get_meters: rccl |[clock_],* calculate times sbaq |[cpu_time] staq time1 sbaq |[virtual_delta] staq time2 lda |[page_waits] sta pf tra 0,0 return_code: rccl |[clock_],* calculate times sbaq |[cpu_time] staq temp sbaq time1 adaq bp|0 staq bp|0 ldaq temp sbaq |[virtual_delta] sbaq time2 adaq bp|2 staq bp|2 lda |[page_waits] sbla pf asa bp|4 aos bp|5 return call_signal: call signal_(signal_arglist) oct 0 even signal_arglist: zero 2,4 zero 2,0 arg ge_name arg arg ge_desc arg ge_name: aci "gate_error" ge_desc: oct 525000000012 " &end HARDCORE_GATE_END to define the location for the call limiter ¯o hardcore_gate_end segdef tv_end use transfer_vector tv_end: vfd 14/(*-reloc_0) &end GATE_INFO general info for normal gates ¯o gate_info use transfer_vector use main join /text/transfer_vector,main segref signal_,signal_ use main setup: push epaq * "get linkage pointer epbplp sp|stack_frame.prev_sp,* must use outer ring LOT lprplp lp|stack_header.lot_ptr,*au sprilp sp|stack_frame.lp_ptr sprplp sp|2 store pointer in order to set ring number in lprplp sp|2 lp to current ring ... ldx1 0,0 "get number of args expected tze 1,0 "if zero, none or doesn't matter cmpx1 ap|0 "compare against number given tze 1,0 "args match, call procedure call signal_(signal_arglist) oct 0 even signal_arglist: zero 2,4 zero 2,0 arg ge_name arg arg ge_desc arg ge_name: aci "gate_error" ge_desc: oct 525000000012 " &end ----------------------------------------------------------- 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