EXECUTE_LIST Functionality 31-Jan-97 (MDM) The following is a description of the generic mosaic subroutine sequence. It is meant as input to Dick for writing the sequence compiler. The register assignments I gave are not final and need to be assigned by Dnyanesh. Dnyanesh also needs to review this proposal to see if it matches how he was writing the routine. I have arbitrarily assigned registers 100 to 150 for EXECUTE_LIST Sample Users Source Code: set_frame_list(cjs.stdfull1216,cjs.stdfull1550, cjs.stdfull1600,cjs.stdfull1700, cjs.stdfull_vis,cjs.stdfull171, cjs.stdfull195,cjs.stdfull284); set_target_list($list$fullmosaic); execute_lists(0s,0s,@saa_pause); michelson-morrison 35% cat !!$ cat trace43.txt EXECUTE_LIST Functionality 31-Jan-97 (MDM) The following is a description of the generic mosaic subroutine sequence. It is meant as input to Dick for writing the sequence compiler. The register assignments I gave are not final and need to be assigned by Dnyanesh. Dnyanesh also needs to review this proposal to see if it matches how he was writing the routine. I have arbitrarily assigned registers 100 to 150 for EXECUTE_LIST Sample Users Source Code: set_frame_list(cjs.stdfull1216,cjs.stdfull1550, cjs.stdfull1600,cjs.stdfull1700, cjs.stdfull_vis,cjs.stdfull171, cjs.stdfull195,cjs.stdfull284); set_target_list($list$fullmosaic); execute_lists(0s,0s,@saa_pause); SET_FRAME_LIST: =============== The list of frames gets converted to 16 bit IDs by lookup. We need to set a register with how many frames there are, and then the IDs. There will be a SETREGS command available soon. There will be a maximum of 16 frames in a "set_frame_list" instruction. This requires 17 registers be held in reserve. In the example above, it translates to SETREGS 105 9 \\ start reg=105, 9 values 8 \\ 8 frames 0 0 0 0 \\ Frame1,2,3,4 ID 0 0 0 0 \\ Frame5,6,7,8 ID SET_TARGET_LIST: ================ The list of targets gets converted to 16 bit IDs by lookup. Everything in SET_FRAME_LIST applies here too. There will be a maximum of 24 pointings in a list. In the example above, it translates to SETREGS 125 25 \\ start reg=125, 25 values 24 \\ 24 targets 0 0 0 0 ... \\ Target IDs. EXECUTE_LISTS: ============== The "execute_lists" instruction gets translated into setting some registers and then calling a sequence. In the example above, it translates to SETREGS 100 3 \\ start reg=100, 3 values 0 \\ wait between frames parameter \\ the first positional param 0 \\ wait between targets parameter \\ the second positional param 0x01 \\ optional keywords (see below) CALLSEQ 0x5555 \\ the sequence ID of the subroutine The optional keyword parameters on the EXECUTE_LIST instruction are shown in the table below. The default is not to set the bit (ie, no action) Name: Bit Description ---------- --- ------------ @saa_pause 0 Pause taking frames when in SAA @saa_exit 1 Premature exit from subroutine for SAA @fl_exit 2 Premature exit from subroutine for flare @sf_exit 3 Premature exit from subroutine for super flare -------------------------------------------------------------------- LIST EXPANSION: =============== It is possible to specify a list of targets or frames by using the $list$xxxxxx option. The expansion of the list will be done by reading a file which maps the list name to a list of mnemonics. The file is: /tsw/obs_dev/dbase/list_expand.tab A sample line is: westcap = (fixed42.pos05, fixed42.pos15, fixed42.pos16) ID MAPPING: =========== Currently there is an ID mapping file per user. One sample file is: /tsw/obs_dev/cjs/id_mapping.tab A sample line is: fixed42.pos36 = 0x004c