This is the log book for the TRICS software ================================================================================ TRGBOOK:TRICS.LBK_V5 Archived Section Of TRICS V6.X notes for 17-FEB-1994 through 31-AUG-1993 ================================================================================ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 17-18-FEB-1994 Philippe: - modify MOD222_TREE_EXECUTE.PAS Allow tree_cat2/tree_cat3 to use Cbus 2 and 3. - Modify SITE_DEPENDENT.CST increase the cbus and the pause timeout constant from 500,000 to 2,000,000 "wait loops". This will roughly restore the 5s timeout that we had with the uVAXII. - Modify MOD206_TST_CTFE_PROMS.PAS Upgrade read_global_responses to read energy counts as signed integers Upgrade to keep track of Tier #1 truncation, thus allowing to test all eta-phi coverage at once. create increase/decrease_tier1_quant, find_t1_truncation, check_t1_trunc_crossing, modify compare_actual_to_expected the algorithm in/decrease_tier1_quant along with in/decrease_offsets redo from scratch find_t1_truncation before ramping each PROM, and this includes noticing which quantity might roll over its tier#1 soon check_t1_trunc_crossing after each step increment in compare_actual_to_expected, take into account all four quantities: act_resp: global count read t1_trunc: expected tier #1 truncation contribution resp_offset: expected global PROM offset excluding the prom being tested, and assuming there were no truncation exp_resp: expected contribution from this single prom. quit passing some of the arguments (make them global variables) to increase_offsets, check_actual_and_fix_expected, increase/decrease_offsets, compare_actual_to_expected - Modify MOD053_TCS_IO_SPY_HANDLING.PAS Use a local copy of reg_drv11j in proced_tcs_read_db_spy instead of the general purpose one, because it is hard to prevent other processes from modifying it. This fixes the ongoing problem (since the dual comint upgrade) of "E-MPL/STL% Pilot captured Spy, but not Assistant". This was happening when some triggers were running while TCC was programming registers (e.g. random test!), not when oly sptr#31 was running. A write register by the test task while refresh_mpool was waiting for a next event to be captyured in the spy was changing drv11j_reg from pilot to assistant. refresh_mpool would thus read the assistant (thinking it is reading the pilot), and find it already read when it eventually tried to read it for good. The pilot was never read. What made me understand what was going on was that the "spy full" led on the pilot was staying on until the next refresh loop. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 10-FEB-1994 Philippe: - Upgrade COPY_TRICS.COM to allow difference - Create ARCHIVE_TRICS.COM for full directory archive (to MSUD01) - now save the 2 site specific files (SITE_DEPENDENT.CST and TRICS_VMN.DAT) in three files: .XXX, .XXX_MSU, and .XXX_DZERO. The .XXX file is the MSU file at MSU and DZERO file at DZERO. The archived .XXX and the (latest system) files are the Dzero files. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2-FEB-1994 Philippe: - Modify MOD053_TCS_IO_SPY_HANDLING.PAS problem with "spy timeout, but spy full line set" experienced at Dzero as soon as we installed the dual comint system showed up at Dzero and not at MSU because we were using sptrg#31 to force events, but the first call to proced_tcs_read_db_spy (that was timing out) was disabling the interrupts from the spy. When the second call (after forcing a data block) was made, the interrupt was disarmed. The call to proced_tcs_dis_int in proced_tcs_read_db_spy was not necessary, and has been removed. Indeed, this is (and should be) done in the interrupt service routine. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 27-JAN-1994 Philippe: MSU EWORK4: - Modify TABLE_DBLOCK_967.TYP Change name of variables from "super tower" to "large tile" This file now depends on complex types defined in TABLE_DBLOCK_SPY.TYP and can no longer be included in MOD_COMMON_HARD_IO - Modify TABLE_DBLOCK_SPY.TYP remove definition of p_dblock_low/high and array_data_block_spy: they are now directly defined in MOD011_COMMON_HARD_IO.PAS, which no longer uses this include file define type comint_prom_pilot/assist with list of sections in COMINT PROMs define type data_block_spy_pilot/assist with dual access word and detail - Modify MOD011_COMMON_HARD_IO.PAS add direct definition of p_dblock_low/high and array_data_block_spy, extracted from TABLE_DBLOCK_SPY.TYP no longer export type data_block_spy - Modify MOD053_TCS_IO_SPY_HANDLING.PAS proced_tcs_request_spy now has arrays of error flags, and handle requests, state checking and device interrupt for both COMINT/DRV. Add separate error messages for assistant modify proced_tcs_read_db_spy, add argument COMINT with value pilot/assist and read only one spy, while using proper drv register and device add spyp type to all messages disable interrupts right away now import mod_tcs_io_comint_handling for pause/resume during request spy. It would be sufficient to pause the framework at the last second, right before sending the request pulse, but we call the pause outside the DISABLE/ENABLE_SWITCH code block so that an error message can be displayed without causing a screen semaphore lock-up. Another method would be to call lock_console before entering the disable_switch section; unlock_console may be called immediately after. - Modify MOD227_PHAT_EXECUTE.PAS only read pilot spy from PHAT message - Modify MOD404_HANDLE_MONIT_POOL.PAS now include TABLE_DBLOCK_SPY.TYP now use 2 arrays to store pilot and assistant spy mail messaga gives length in items of both comint proms, and note 967 Call proced_tcs_read_db_spy twice, for pilot and assistant spy. No wait period allowed on assistant comint spy identify cases were one of the spy was successful, not the other splice the pieces of the 2 spies into the data block of note 967 format - Modify MOD033_HANDLE_CONSOLE.PAS Change screen semaphore timeout handling. add an entry to the exception mailbox: which message caused the timeout ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 26-JAN-1994 Philippe: MSU EWORK4: - Modify MOD011_COMMON_HARD_IO.PAS extend cbus field of cbus_parameter record from 1 to 2 bits. - Modify MOD050_INLINE_HARD_IO.PAS Add comments to send_data_nad_get_cbus (specify pilot, assistant) Remove loop for waiting on assitant comint, it sould be free right away fix bug in inline_end_io_cycle, release cbus from both COMINT (reg_drv11j_pilot and reg_drv11j_assist), not just the one used in the cbus IO cycle (reg_drv11j). - Modify MOD011_COMMON_HARD_IO.PAS extend field "cbus" of record "cbus_param_list" from 1 to 2-bit field (the assignment of card CBUS address to IO parameters was truncated to one bit) - Modify MOD227_PHAT_EXECUTE.PAS fix modif_hdb argument checking of cbus values to allow up to cbus = 3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 25-JAN-1994 Philippe: MSU EWORK4: - start TRICS V5.3-0 in directory EWORK4: new version in SITE_DEPENDENT.CST - Modify MOD071_DEF_HARDWARE_TABLES.PAS Move L1, L1.5 FWks, Caltrig Readout,... to Cbus #2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 24-JAN-1994 Philippe: MSU EWORK3: - Modify MOD404_HANDLE_MONIT_POOL.PAS remove INLINE attribute from most of the subroutines contained in the file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 14-JAN-1994 Philippe: Dzero - Modify MOD206_TST_CTFE_PROMS.PAS fix report when there is an error for Px or Py while the PROM has a negative contribution - Modify MOD404_HANDLE_MONIT_POOL.PAS remove 200 counts from Tier#3 sums in the data block for EM and HD, 1st lookup and seconde lookup, both for current and previous. - Modify MOD207_TST_GET_PARAM.PAS change prompt e_20_24 (should have been 21_24 anyway) to e_17_20 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 21-DEC-1993 Philippe: Dzero - Modify MOD203_TST_CALTRG_RANDOM.PAS read all IMLRO 3 and 2 byte sums as signed numbers. signed_24bit = [LONG] -8388608..8388607 ; {24 bit signed number} ^-- didn't work, use --v signed_24bit = [LONG] PACKED RECORD three_byte : [POS(0)] -8388608..8388607 ; {24 bit signed number} unused : [POS(24)] 0..255 ; END ; rename the local_1,2,3 variables to tmp_*_c for eta, phi and sign cell in routines check_and_fix_expected and find_t1_truncation find_t1_truncation now computes the t1 truncation for px and py using the sign of Px and Py - Modify MOD206_TST_CTFE_PROMS.PAS Add Px_sign and Py_sign increase/decrease_offset correctly update the expected offset compare_actual_to_expected correctly compare actual to offset +/- expect Add the full Yes/No/Redo/Resynch option when an error is detected - Modify MOD201_TST_INIT.PAS Modify initial value loaded by init_mtg_for_caltrg for CT MTG TSS Ch#29 use 6 instead of tss_sel_rom to play the prom pattern and update the IMLRO readout. This is a L15MTG05. Notice mismatch of the CTMTG timing signal definitions for ch 30 and 31 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 20-DEC-1993 Philippe: Dzero - Modify MOD203_TST_CALTRG_RANDOM.PAS check_t1_sum_and_fix_expected drop the MOD 4096 in the IF statement comparing count_read to t1_sum[eta_pol,eta_cell,phi_cell,page_num,*]. This is because there is no truncation reading (seeking) the T1 sum. The truncation is getting into Tier #2. This was causing extra error messages on resynch. Fix initialization sums, set px_sign,Py_sign to correct value. - Modify MOD206_TST_CTFE_PROMS.PAS move the assignment of pol_cell, eta_cell, phi_cell from the loop 'finding the initial response of the PROM to ADC count of zero' (it was useless) to the loop 'scanning the channels' (it is used by display_cat_inputs). eliminate temporary variable e_fe, replace with eta_cell. - notes, analysing tests from 15-dec Random Test: px or py first gets ahead by 8912, at that time there always is a tier#1 truncation of 4096 or 8192. Then if the test is continued, the px or py comes back by -8912, at that time, there alwyas is no tier#1 truncation, and the value picked is 'small' still need to read Px/Py as signed numbers PROM Test: The problem is with the px/py signed sum. for certain values of Phi, the sum must be decreased instead of increased. still problem with Tier#1 truncation. weird inputs to cat2 displayed comes from bug in code, cf above. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 20-DEC-1993 Philippe: DZero - Modify MOD105_HANDLE_CAT_CARDS.PAS problem with tree correction was that it mis-detected an overflow and immediately bailed out update_cat3_correction now allows 0 as a corection value (for routine MOD130_INIT_THRESHOLDS.PAS\zero_tree_corections) - Modify MPOOL_SERVER.PAS decrease the wait period before starting from 2.5 mn to 1 mn. - Modify MOD207_TST_GET_PARAM.PAS change 'all_etas' and 'all_phis' options to use firstetamagn, lastetamagn, firstphival, lastphival - propagate to DESCRIP.MMS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 15-DEC-1993 Philippe: DZero: need to check do_find_dac_byte in MOD226_COOR_CALTRG_EXECUTE.PAS, to see how it sets the CalTrig latch/shift. Because Find_DAC was affected during a pause/resume. This is because of a COOR initialize in the middle of find_dac. - try to use caltrig_random to initialize trigger towers. use the option 'all_etas' get an access violation Job 8, process 16, program TRICS_V52 raised exception. %SYSTEM-F-ACCVIO, access violation, reason mask=00, virtual address=00000110, P1 Module MOD_HANDLE_TRGTWR 157: EMEt_ref : >>158: energy_threshold := energy_threshold 159: - p_trgtwr^.lookup[EM_PROM,PROM_page_1].zeresp ; 160: HDEt_veto : 161: energy_threshold := energy_threshold 162: - p_trgtwr^.lookup[HD_PROM,PROM_page_1].zeresp ; Edebug 8,16>ex eta_mag Loading symbols for module "MOD_HANDLE_TRGTWR". ETA_MAG: 21 (00000015) This is because all_etas meant out ot eta = 24, but these trgtwr pointers were never initialized - run front-end test on CTFE at eta +1..+4 phi 1 and get weird results, this needs to be checked at MSU - run lookup test. First problem is that it does not seem to zero the final CAT3 correction registers, and thus starts off with weird unexpected values. - create TRICS COM file ZERO_TREE_CORRECTION.DAT and now lookup prom test gets in trouble when it reaches the 12-bit limit into tier #2 and rolls over. EM PROM answer is -4080 instead of 16 global is now 0 EM CAT inputs are 1020,1020,1020,1020, 16, 0, 0, 0 next loop says EM PROM answer is -4079 instead of 17 global is now 1 EM CAT inputs are 1020,1020,1020,1020, 17, 0, 0, 0 note that the difference is 4096 - $ SITE GET fails when a file of the same name does not exist locally - run CHTCR tests. value loaded in the caltrig mtg latch/shift is out-dated. MOD201_TST_INIT.PAS\init_mtg_for_caltrg loads tss_sel_rom. The correct value is now 6 This is done correctly in MOD226_COOR_CALTRG_EXECUTE.PAS\do_find_dac_byte -> review and use a parameter Also fails to test Tot Et channels - is it because it uses page 8 and is not successful in changing the output of HD page 8 by changing the input simulated value? - run random test get incorrect Px and Py inputs to Tier #2. also obvious problem with Px and Py signed final sum. - Modify MOD204_TST_CHTCR_PROMS.PAS hardware_test_chtcr_proms uses page 4 for 1st and second lookup, and page 8 for momentum. - Modify MOD201_TST_INIT.PAS init_mtg_for_caltrg loads 6 instead of tss_sel_rom in the latch/shift channel of the caltrig MTG for playing the ROM pattern on this L15MTG06 - Modify MOD130_INIT_THRESHOLDS.PAS add procedure zero_tree_corrections - Modify MOD203_TST_CALTRG_RANDOM.PAS MOD204_TST_CHTCR_PROMS.PAS MOD206_TST_CTFE_PROMS.PAS call zero_tree_corrections - Modify DESCRIP.MMS update the entries for MOD203_TST_CALTRG_RANDOM.PAS MOD204_TST_CHTCR_PROMS.PAS MOD206_TST_CTFE_PROMS.PAS to also depend on MOD130_INIT_THRESHOLDS.PAS - Modify MOD203_TST_CALTRG_RANDOM.PAS compute the new variables Px_Sign and Py_Sign to pass to the routines increment/decrement_global_quantities - reboot, chtcr test seems to work fine now. - still problem with zeroing tree correction, needs to be re loaded by hand - problem with reading final Px Py as a signed number. load the correction register with a big number by hand to avoid dithering around zero. Set bit 23 out of 24-bit correction register (i.e. 4194304) write (Px) 0 153 37 49 16 and (Py) 0 153 39 49 16 - run, and get E-HRD/TST%rand% Global Py Momentum Sum is 4199284 instead of 4191092, T1 trunc 6 E-HRD/TST%rand% Pick was 104,EM,NEG,E_15,P_26,LUP_3-3-8,EMET_REF,REF_1,155,CMP_2 P-HTT/PAR%rand% Loop 2412/100000, Error Count 1. Continue? Same Loop? ReSynch? Note that the difference is 8192 resynch E-HRD/TST%rand% Global EM Twr Count REF_0 Page#7 is 127 instead of 129 E-HRD/TST%rand% Global Py Momentum Sum Page#8 is 4199284 instead of 4195188 only page #8 needed resynch for Py, even though all pages were tested. is the problem with em tower count related? E-HRD/TST%rand% Done Re-Synchronizing, Redoing Same Loop ok for this loop, now E-HRD/TST%rand% Global EM Tower Count REF_0 is 129 instead of 127 E-HRD/TST%rand% Pick was 202,HD,POS,E_16,P_19,LUP_7-8-7,EMET_REF,REF_1,66,CMP_1 P-HTT/PAR%rand% Loop 2416/100000, Error Count 2. Continue? Same Loop? ReSynch? above tests are in TRICS_17DEC93.LOG;1 below are in TRICS_17DEC93.LOG;2 - run on positive etas only E-HRD/TST%rand% Global Px Momentum Sum is 4198548 instead of 4190356, T1 trunc6 E-HRD/TST%rand% Pick was 111,HD,POS,E_3,P_8,LUP_3-5-7,EMET_REF,REF_0,243,CMP_3 P-HTT/PAR%rand% Loop 1890/10000, Error Count 1. Continue? Same Loop? ReSynch? Again the difference is 8192, but this now is Px on negative etas only E-HRD/TST%rand% Global Px Momentum Sum is 4193953 instead of 4185761, T1 trunc 2 E-HRD/TST%rand% Pick was 48,EM,NEG,E_13,P_14,LUP_7-1-8,EMET_REF,REF_0,170,CMP_1 P-HTT/PAR%rand% Loop 2195/10000, Error Count 1. Continue? Same Loop? ReSynch? resynch E-HRD/TST%rand% Global Px Momentum Sum is 4193852 instead of 4202044, T1 trunc0 E-HRD/TST%rand% Pick was 8,EM,NEG,E_1,P_16,LUP_1-6-8,EMET_REF,REF_0,236,CMP_3 P-HTT/PAR%rand% Loop 2208/10000, Error Count 2. Continue? Same Loop? ReSynch? The difference is 8192 then -8192 ! run on +1..4 only E-HRD/TST%rand% Global Py Momentum Sum is 4194050 instead of 4185858, T1 trunc2 E-HRD/TST%rand% Pick was 77,EM,POS,E_3,P_32,LUP_4-6-8,EMET_REF,REF_0,203,CMP_1 P-HTT/PAR%rand% Loop 672/10000, Error Count 1. Continue? Same Loop? ReSynch? Again the difference is 8192 run on -1..4 only E-HRD/TST%rand% Global EM 2nd Energy sum is 459 instead of 3723, T1 trunc = 0 E-HRD/TST%rand% Global HD 2nd Energy Sum is 11840 instead of 3136, T1 trunc = 0 P-HTT/PAR%rand% Loop 5/10000, Error Count 2. Continue? Same Loop? ReSynch? error #1 was not reproducible with 'again' ??? but coor had paused the framework during the intial synchronization. run on +/-5..8 E-HRD/TST%rand% Global Px Momentum Sum is 4198915 instead of 4190723, T1 trunc6 E-HRD/TST%rand% Pick was 150,HD,NEG,E_8,P_15,LUP_2-6-8,EMET_REF,REF_0,50,CMP_2 P-HTT/PAR%rand% Loop 1133/10000, Error Count 1. Continue? Same Loop? ReSynch? Again the difference is 8192 Try running lookup prom test. run on +/-|1..2| to avoid tier #2 truncation problems. E-HRD/TST%lookup% Px PROM answer is -1 instead of 1 global is now 4196650 E-HRD/TST%lookup% PX CAT inputs are 0, 1, 1, 2, 1, 1, 2, 3 E-HRD/TST%lookup% Error Detected at POS,E_1,P_9 page #1 EM 4 & HD 0 run on -1..2 only E-HRD/TST%lookup% Px PROM answer is -1 instead of 1 global is now 4196650 E-HRD/TST%lookup% PX CAT inputs are 0, 1, 1, 2, 1, 1, 2, 3 E-HRD/TST%lookup% Error Detected at NEG,E_1,P_9 page #1 EM 4 & HD 0 run on +/-5..6 E-HRD/TST%lookup% Px PROM answer is -1 instead of 1 global is now 4196201 E-HRD/TST%lookup% PX CAT inputs are 0, 0, 0, 0, 0, 0, 0, 0 E-HRD/TST%lookup% Error Detected at POS,E_5,P_9 page #1 EM 2 & HD 0 all of the above understood: energy at P_9 makes global px decrease run on all etas, phi 1..8 E-HRD/TST%lookup% HD PROM answer is -3927 instead of 169 global is now 14481 E-HRD/TST%lookup% HD CAT inputs are 3, 3, 3, 3, 3, 3, 3, 3 E-HRD/TST%lookup% Error Detected at POS,E_1,P_6 page #1 EM 255 & HD 209 difference of -4096 run on all etas, phi 1..4 page #1 ok E-HRD/TST%lookup% EM PROM answer is -193 instead of 6 global is now 18197 E-HRD/TST%lookup% EM CAT inputs are 1020,1020,1020,1020, 12, 12, 12, 12 E-HRD/TST%lookup% Px PROM answer is -97 instead of 5 global is now 4215882 E-HRD/TST%lookup% PX CAT inputs are 1020,1020,1020,1020, 8, 4, 4, 0 E-HRD/TST%lookup% Py PROM answer is -11 instead of 0 global is now 4205578 E-HRD/TST%lookup% PY CAT inputs are 132, 392, 634, 852, 8, 8, 8, 12 E-HRD/TST%lookup% Error Detected at POS,E_5,P_1 page #2 EM 1 & HD 0 note that the test fails on page #2 now run on all etas, phi 1..3 page #1 ok E-HRD/TST%lookup% EM PROM answer is -193 instead of 6 global is now 24004 E-HRD/TST%lookup% EM CAT inputs are 1020,1020,1020, 12, 12, 12, 12, 12 E-HRD/TST%lookup% Px PROM answer is -97 instead of 5 global is now 4214207 E-HRD/TST%lookup% PX CAT inputs are 1020,1020,1020, 8, 8, 4, 4, 0 E-HRD/TST%lookup% Py PROM answer is -11 instead of 0 global is now 4200829 E-HRD/TST%lookup% PY CAT inputs are 132, 392, 634, 8, 8, 8, 8, 12 E-HRD/TST%lookup% Error Detected at POS,E_5,P_1 page #2 EM 1 & HD 0 run on POS,E_5,P_1 by itself, no problem run on all etas, phi 1 page #1 ok E-HRD/TST%lookup% EM PROM answer is -193 instead of 6 global is now 11042 E-HRD/TST%lookup% EM CAT inputs are 1020, 12, 12, 12, 12, 12, 12, 12 E-HRD/TST%lookup% Px PROM answer is -97 instead of 5 global is now 4201573 E-HRD/TST%lookup% PX CAT inputs are 1020, 8, 8, 8, 8, 4, 4, 0 E-HRD/TST%lookup% Py PROM answer is -11 instead of 0 global is now 4195117 E-HRD/TST%lookup% PY CAT inputs are 132, 4, 4, 8, 8, 8, 8, 12 E-HRD/TST%lookup% Error Detected at POS,E_5,P_1 page #2 EM 1 & HD 0 run on all etas, phi 2 page #1 ok E-HRD/TST%lookup% EM PROM answer is -193 instead of 6 global is now 11042 E-HRD/TST%lookup% EM CAT inputs are 12,1020, 12, 12, 12, 12, 12, 12 E-HRD/TST%lookup% Px PROM answer is -93 instead of 4 global is now 4201447 E-HRD/TST%lookup% PX CAT inputs are 12,1020, 8, 8, 8, 4, 4, 0 E-HRD/TST%lookup% Py PROM answer is -29 instead of 1 global is now 4196698 E-HRD/TST%lookup% PY CAT inputs are 0, 392, 4, 8, 8, 8, 8, 12 E-HRD/TST%lookup% Error Detected at POS,E_5,P_2 page #2 EM 1 & HD 0 note that the cat inputs displayed are weird, and do not seem to correspond to the prom answer. - Modify MOD095_INIT_LSM.PAS The problem was in the computation of the sum_zeresp to figure the tree_offsets, the code was copied and insufficiently updated, so that it was using EMEt lookup 4 times to compute the tree offsets. It loaded the same tree correction in Tier 3 for EM Et, EM L2, HD Et, HD L2. All the Global Energy sums were off except for EM Et. This error was introduced 24-feb-93, but never noticed because the TRICS_INIT_AUXI.DAT at DZero was overriding the correction values loaded in the Tier 3 CAT3 - Modify MOD105_HANDLE_CAT_CARDS.PAS fix examine_cat3_operand, first register read for given operand was systematically shifted up by one count. operand #1 should use inopreg[0], and so on. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 13-DEC-1993 Philippe: MSU second TCC VAXstation 4000 M60 - Modify MOD060_HANDLE_PQBA.PAS Unmask initialize dma register for comparison with behavior of other pQBA note:= will have to be restored later ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 9-DEC-1993 Philippe: MSU - EWORK3: - Modify COM:TRIGGER_NODE.COM to use the the disk boot method everywhere (was doing this at MSU only). use [SYS0.SYSEXE]SYSBOOT.EXE - Modify INITIALIZE_TIME.PAS Write D0HSC address in KER$GQ_HOST_ADDRESS[2] at DZero for Disk Boot Note that it was already writing MSUD01 address at MSU. - Modify MOD033_HANDLE_CONSOLE.PAS increase the wait for semaphore timeout to 15 seconds ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2-DEC-1993 Philippe: MSU - Modify MOD226_COOR_CALTRG_EXECUTE.PAS fix coor_twr_range, the large tile upgrade had forgotten to readjust the Large Tile upper and lower range boundaries in the code for the message modifying the trigger tower range on the fly. - propagate to ework1, etrics, and DZero ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 30-NOV-1993 Philippe: MSU The new pascal code to handle the master pqba device would always cause a 'Q-Bus interrupt count overflow' error. Following operation of the ISR routine to notice that the loop counter starts at zero and causes an error immediately. - Modify MOD060_HANDLE_PQBA.PAS initialize the overflow_cnt field of the isr_comm_region to a number greater than zero. Chose 5 for now. note: to set a debugger break point in an interrupt service routine, the qualifier /KERNEL must be used ( Edebug 8,3> set break/ker pqba_isr ) BUT remote debugging is not possible, only local debugging. This also means that there is no symbolic (source code) debugging, only VAX instructions and registers. This is simple with pqba_isr, which is a MACRO. Otherwise use EPASCAL/LIST/MACHINE_CODE [/DEBUG=ALL/NOOP] to generate symbolic macro code that can be followed along with the debugger steps. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 29-NOV-1993 Philippe: MSU - Modify COPY_TRICS.COM the only ZRL file left is the Int Serv Routine Macro PQBA_ISR10D.MAC There is no more C code. - Modify TRICS_V52.DAT remove job PQBA_DEVICE10D - Modify MOD060_HANDLE_PQBA.PAS On the QBus version of the Kernel, the CREATE_DEVICE routine would return the virtual address of the pQBA device CSR register in the argument REGISTERS for CREATE_DEVICE, and would also pass this address to the ISR when a device interrupt occurs. But the VAXstatsion 4000 version of the Kernel returns zero for the device address, and passes zero to the ISR. I haven't seen any reference to this anywhere in the ELN documentation, maybe it is a bug. I noticed that the Epascal drivers for the 4000 (e.g. DZSDRIVER.PAS) get a system pointer to the CSR registers using KER$ALLOCATE_SYSTEM_REGION and pass it to the ISR in the communication region. CREATE_DEVICE does not return the register base address for the 4000 So we have to retrieve the EBUILD device descritpion by hand. This is stored in the System Configuration Record (SCR). The kernel parameter KER$GA_DEVICE_LIST holds an offset from itself to the first SCR. The structure of the SCR is described in section 2.5 and B.21 of the VAXELN Internals manual that was part of the VAXELN V4.0 documentation. CREATE_DEVICE does not prepare the ISR argument with the CSR address. The argument list passed to the ISR is prepared in the Interrupt Dispatch Block (IDB) prepared by the Kernel for the device during the call to CREATE_DEVICE. The structure of the IDB list is described in section B.9 of the VAXELN Internals manual. So we need to copy by hand the System pointer to pQBA in the kernel's IDB. We need to enter the Int Service Routine for the pilot and assistant DRV11J into the dispatch table that the ISR macro PQBA_ISR10D will use to redirect the QBus interrupts. More precisely, we use the pointer to the Interrupt Dispatcher code of the Interrupt dispatch Block for the DRV11J, and we place it in the subfield dispatch_ptr of the ISR communication region. dispatch_ptr is an array of pointers the first entry is for vector %x100, the second for %x104, and the last for %x1FC. For the same reason as above, we need to copy the system pointer to the DRV CSR registers into the kernel's IDB for the DRV. Each interrupt dispatcher code generated by the Kernel ends with a REI (Return from Exception or Interrupt) instruction. We need to change the return opcode from REI to RSB for all the Q-Bus interrupts redirected by the pQBA ISR. Use REI only once at the end of the pQBA Interrrupt dispatch code. Note that we use RSB because PQBA_ISR10D.MAC uses JSB. It would be RET for CALLS or CALLG. We look for the last instruction in the interrupt dispatch block, starting at the end of the dispatcher code and searching for a REI opcode. The Interrupt Dispatcher code of the IDB looks like the following MOVQ R0, -(SP) ; save R0, R1 in interrupt stack CALLG arg, @#addr ; 'arg' is a pointer to the argument list ; prepared in the IDB right below. ; There are 3 parameters: ; - the system virtual address ; of the CSR ; - the system virtual address ; of the communication region, ; - and the system virtual address ; of this IDB (for SIGNAL_DEVICE) ; 'addr' is the address of the ISR passed ; to CREATE_DEVICE MOVQ (SP)+, R0 ; restore R0, R1 from interrupt stack REI ; return from Exception or Interrupt ; This is the opcode that need to be ; changed in the redirected IDB code. The reason we go through the official mechanism of the IDBs (instead of, for example, simply calling the DRV ISR from an Epascal version of the pQBA ISR) is so that SIGNAL_DEVICE can properly signal the redirected device instead of the pQBA device. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 22-24-NOV-1993 Philippe: MSU - undo change in MOD011_COMMON_HARD_IO remove zrl_dev_array and return to type DEVICE - Modify MOD051_TCS_IO_DRV11J_HANDLING.PAS Undo call to ZRL p_create_pqba_device, return to ELN CREATE_DEVICE Export p_isr_vect_pilot, and p_isr_vect_assist Create routine connect_to_ebuild_dev_addr - Scan the system builder table of system configuration record for a particular device descriptor and retrieve its device register address - Then connect the register pointer to the memory address. Include defintion file ELN$:KERNELDEF.PAS Declare as external variable KER$GA_DEVICE_LIST Return Interrupt Service Routine to type INTERRUPT_SERVICE - create module MOD060_HANDLE_PQBA.PAS With routine init_pQBA_device_and_DRV11Js create process PQBA CTRL at higher priority (+2) Process Block block_pQBA_device_control This mostly is the EPASCAL translation of PQBA_DEVICE10D.C but uses TRICS screen and logfile messages for tracing This will get rid of all C code Use ELN CREATE_DEVICE to create master PQBA device Then use connect_to_ebuild_dev_addr to connect to the pQBAs registers Initialize the pQBA master device Call proced_tcs_define_drv11j to create DRV11J devices Enter the DRV11J vectors in the pQBA_ISR dispatch table Initialize DRV11Js and COMINTs after proced_tcs_define_drv11j re-Initialize DRV11Js and COMINTs after ISR flagged error and pQBA reset - Modify TRICS_V52_LINK.OPT Undo previous modifications, remove PQBA/LIB and ELN$:CRTLOBJECT/LIB There is no more C code, threfore no more C libraries. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 18-NOV-1993 Philippe: MSU - Modify MOD031_HANDLE_REMCONS.PAS When an error happens during signal remcons_ready, check it is not semaphore count overflow before sending control to debugger. A count overflow happens when a remote console process gets REstarted, since it was already signaled by the previous remcons process. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 15-16-NOV-1993 Philippe: MSU - Modify MOD245_PHAT_DISPATCH.PAS add message PHAT READPQBA - Modify MOD227_PHAT_EXECUTE.PAS add PROCEDURE phat_readpqba to read pqba registers QEAR, INT0, INT1, RESET Note that reset reads back as 0, and not as the documentation suggests as 1 in all upper bits 1:31 - Modify PQBA_DEVICE10D.C remove all writes to the DMA enable register (our pQBA doesn't do DMA) since it wipes out the content of the INT0 and INT1 registers ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 11-12-NOV-1993 Philippe: MSU - start TRICS V5.2-0 new directory EWORK3 for VAXstation 4000 code. use code in EWORK1 as seed. The current state of the code directories is ETRICS: V5.0 uVAXII, single DRV, Large Tiles, FMLN/MPt, same as @ D0 EWORK1: V5.1-0 uVAXII, dual DRV EWORK3: V5.2-0 4000M60, dual DRV - The 127Mb disk was initialized using EENV:INIT_DISK.DAT_4000M60. allcoates 10,000 headers - update MOD011_COMMON_HARD_IO.PAS change declaration of dev_drv11j_pilot/assist from ARRAY [0..3] OF DEVICE to zrl_dev_array(4) - update MOD051_TCS_IO_DRV11J_HANDLING.PAS Use a global variable to remember isr_vect returned by the call to CREATE DEVICE (onw p_create_pqba_device). i.e. retrieve what was entered in EBUILD. Then use this variable to program the interrupt vector in the DRV11Js in the routine proced_tcs_initialize_drv11j. One must be careful, because this is a pointer in USER virtual space to the SYSTEM space location of this interrupt vector. One must also be careful that the actual programming of the DRV11J only needs the relative vector number (longword offset) which results in dropping the lower 2 bits. Note as described below that the vector needed to be changed from normal DRV11j setting, to satisfy ZRL requirements. Convert call to CREATE_DEVICE to call to ZRL's p_create_pqba_device use varying_strings for device name Change declaration for intserv_tcs_drv11j from INTERRUPT_SERVICE to now simply PROCEDURE. This is because the real Int Service Routine is now part of ZRL software. It will be is called first with a single Interrupt vector in the 4000M60. This ZRL routine must poke at the pQBA to find out what the actual Q-Bus vector was, then it must check its tables and dispatch to the appropriate user interrupt service routine (i.e. intserv_tcs_drv11j) as told in the setup call to p_create_pqba_device. Change SIGNAL_DEVICE to KER$SIGNAL_DEVICE in intserv_tcs_drv11j - Modify DESCRIP.MMS add job PQBA_DEVICE10D add PQBA_DEVICE10D.EXE to TRICS_*.SYS new PQBA_DEVICE10D.EXE depends on PQBA_DEVICE10D.OBJ new PQBA_DEVICE10D.OBJ depends on PQBA_DEVICE10D.C add module PQBA_DEFS10C, definitions for ZRL routines new PQBA_DEFS10C.OBJ depends on PQBA_DEFS10C.PAS add mod011_common_hard_io.obj depends on pQBA_Defs=PQBA_DEFS10C.OBJ add mod052_tcs_io_comint_handling.obj depends on pQBA_Defs add methods for C files new cc for C compiler new .C in list of SUFFIXES new method for .C.OBJ prevent stop on errors during link (multiple defined symbols caused by CRTLSHARE). Use a dash "-" which is a special MMS flag. - New ZRL files are PQBA_DEVICE10D.C and PQBA.OLB be careful that calls to printf need to be removed from PQBA_DEVICE10D.C until after call to initialization done, when using the DECwindow console emulator. Otherwise the system hangs, waiting for completion of the screen IO request, while the console emulator hasn't yet started. It might be possible to lower the priority of PQBA_DEVICE10D if this is what is preventing the console driver from starting in parallel. - modify COPY_TRICS.COM add copy ZRL files PQBA*.C and PQBA*.OLB - create PQBA_DEVICE10D_LINK.OPT with PQBA library and ELN$:CRTLSHARE - modify TRICS_V52_LINK.OPT add PQBA library add ELN$:CRTLSHARE/LIB which causes the following message %LINK-W-MULDEF, symbol WRITE multiply defined in module DCIO file $1$DUA3:[ELN]DCIO.EXE;1 %LINK-W-MULDEF, symbol READ multiply defined in module DCIO file $1$DUA3:[ELN]DCIO.EXE;1 Different messages are generated for other relative order for CRTLSHARE - Modify TRICS_V52.DAT TRICS_V52.DAT_GFB has system parameters for DECWindow display TRICS_V52.DAT has system parameters for VT320 console change address of DRV11J Pilot was %O764160 in uVAXII (i.e. %X0003E870) now %X38400870 mapped through pQBA Assist was %O764140 in uVAXII (i.e. %X0003E860) now %X38400860 mapped through pQBA add device PQBA /vector=%X3F4 /noautoload To access SCSI disk, add a DUA device with vector %X3FC, and autoload file ELN$:PKCDRIVER add volume DUA0 in system characteristic for automatic mounting at boot time ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 13-OCT-1993 Philippe: MSU - Modify MOD106_HANDLE_FMLN.PAS verify_fmln_momentum_lookup add error messages to describe/diagnose value checking problem - Modify MOD054_TCS_IO_CBUS_HANDLING.PAS proced_tcs_read_FMLN_cbus fix bug in MPT readout (incomplete attempt 11-OCT-1993) in Pos Px Loop - Modify SITE_DEPENDENT.CST to show updated version number 5.1-0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 13-OCT-1993 Philippe: MSU - Modify MOD106_HANDLE_FMLN.PAS fix logic in yesterday's new error messages !***- There is at least one problem/limitation. It was there before the move to dual drv11j. The internal counter increments too much if the data block builder is running, as the FMLN card is deselected. This is true only during the verify phase. The writing phase is not affected. - Move to 5.1-0 for differenciating dual drv from single drv versions !***- Notice problem with starting the remote console a second time. The remote fixed console hangs after the first message. The old remote console process(es) 18 haven't been deleted. There is a synchronization problem that the main Nov processes shut the redirect flag as soon as the remote console reset it 93 to true. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 12-OCT-1993 Philippe: MSU - Modify MOD106_HANDLE_FMLN.PAS verify_fmln_momentum_lookup remove checking of saturation point but checking the values up to that point is sufficient to catch problems with saturation point to high or to low. add announce messages to all fmln read and write routines - This concludes the test of fmln threshold and mpt programming using the old single drv11j code. Now come back to ework1 and dual drv11j. There is (at least) an internal counter problem. Now improve the error reporting of fmln checking before trying to diagnose the problem any further. - Modify MOD054_TCS_IO_CBUS_HANDLING.PAS proced_tcs_read_FMLN_cbus add error messages to describe/diagnose rule checking problem - Modify MOD106_HANDLE_FMLN.PAS verify_fmln_thresholds add error messages to describe/diagnose value checking problem ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 11-OCT-1993 Philippe: MSU - Modify MOD227_PHAT_EXECUTE.PAS Change Mod HDB message from Info to System. - Fix MOD106_HANDLE_FMLN.PAS verify_fmln_momentum_lookup fix function address to aim at read "comparator" outputs (was write fa) - Fix MOD054_TCS_IO_CBUS_HANDLING.PAS proced_tcs_read_FMLN_cbus fix read mspt section add a pulse write line before reading Px = -256 fix negative Py to read only down to -1 (was 0) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7-OCT-1993 Philippe: MSU - Update the ETRICS: directory with files from EWORK1: MOD106_HANDLE_FMLN.PAS and MOD054_TCS_IO_CBUS_HANDLING.PAS (after removing the dual COMINT stuff) and add inline_send_new_data to MOD050_INLINE_HARD_IO.PAS - Build a system in ETRICS: to study the problems with fmln programming independently of the dual comint upgrade - test this combination of fmln software, thresholds work fine. It seems that the missing Pt reads back as all zeroes... ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6-OCT-1993 Philippe: MSU - Test the dual drv11j changes, no problem noticed - test the fmln software, nothing works, even verifying thresholds that used to work. reload old system that has no problem writing checking this fmln for thresholds. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5-OCT-1993 Philippe: MSU - Modify MOD227_PHAT_EXECUTE.PAS phat_read11jr call proced_tcs_read_drv11j_intr_reg twice, for pilot and assist phat_monitor add reg_drv11j_pilot argument to proced_tcs_read_status phat_old_menu initialilze both drv11j upon return from old MENU - Modify MOD501_HANDLE_DBLE_BUFF.PAS block_watch_double_buffering add argument reg_drv11j_pilot to proced_tcs_enb_int update name of device dev_drv11j_pilot - Modify MOD501_HANDLE_DBLE_BUFF.PAS block_watch_double_buffering add argument reg_drv11j_pilot to call to proced_tcs_enb_int update argument name for device for dev_drv11j_pilot - Modify TRICS_V50.PAS define and initialize both DRV11J disable interrupts on both DRV11J - Prepare a Q-Bus A A A A A A A A A A A A A A A A Address 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 Pilot /-7-\ /-6-\ /-4-\ /-1-\ /-6-\ /-0-\ Octal 1 1 1 1 1 0 1 0 0 0 0 1 1 1 0 0 0 0 Binary Not W W W W W W W W W \sel/ Jumper Number Decoded 1 2 3 4 5 6 7 8 9 reg (cf page 2-5 of DRV book) I I I I Jumper Installed R R R R R Jumper Removed Assistant /-7-\ /-6-\ /-4-\ /-1-\ /-4-\ /-0-\ 1 1 1 1 1 0 1 0 0 0 0 1 1 0 0 0 0 0 Not W W W W W W W W W \sel/ Jumper Number Decoded 1 2 3 4 5 6 7 8 9 reg (cf. page 2-5 of DRV book) I I I Jumper Installed R R R R R R Jumper Removed \\_____ _____// | | | | +---------------------------------+ | /|_________________|\ | | | J2 Port C and D | | | --------------------- | | | | | | /|_________________|\ | | | J1 Port A and B | | | --------------------- | | | | | | | | (J4) W11 | | | | | Pilot DRV11J needs jumpers at | | W2, W7, W8, and W9 | W3 | (also W10 and W11) | W1 W4 W8 W9 | | W2 W5 W7 W6 | Assistant DRV11J needs jumpers at | | W2, W7, and W8 | (J3) W10 | (also W10 and W11) |- ---- -| | | | | +--------------+ +-------------+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4-OCT-1993 Philippe: MSU - Modify MOD011_COMMON_HARD_IO.PAS add enumerated type Pilot/Assist add type array_two_flags - Modify MOD050_INLINE_HARD_IO.PAS inline_init_io_cycle inline_end_io_cycle replace BOOLEAN timeout_flag with array for pilot/assistant inline_send_data_and_get_cbus keep separate flag for pilot and assistant use directly reg_drv11j_pilot and _assist for requesting cbus use reg_drv11j for setting up data. It must have been set outside of these routines to be either reg_drv11j_pilot or reg_drv11j_assist inline_send_address inline_set_cbus_write inline_set_cbus_read inline_pulse_cbus_strobe inline_read_data inline_rewrite_cbus inline_increment_fa inline_send_new_fa use reg_drv11j which must have been set outside of these routines to be either reg_drv11j_pilot or reg_drv11j_assist - Modify MOD053_TCS_IO_SPY_HANDLING.PAS proced_tcs_request_spy import and use array_two_flags ! *** find potential bug: the read_spy routine was using the inline_init_io_cycle to gain access to disable switching but directly used ENABLE_SWITCH at the end. This should however not have been able to cause any problem. Now use both inline_init_io_cycle and inline_end_io_cycle. proced_tcs_read_db_spy replace DIS/ENABLE_SWITCH, with inline_init_io_cycle/inline_end_io_cycle add routine inline_send_new_data - Modify MOD054_TCS_IO_CBUS_HANDLING.PAS all routines select value for reg_drv11j depending on param^.cbus proced_tcs_read_FMLN_cbus proced_tcs_write_FMLN_cbus replace WRITE_REGISTER to update data with call to inline_send_new_data - Modify MOD055_TCS_IO_SCALER_HANDLING.PAS MOD056_TCS_IO_PRESCALER_HANDLING.PAS MOD058_TCS_IO_TWB_HANDLING.PAS all routines select value for reg_drv11j depending on param^.cbus - Modify MOD059_MENU_IO_HANDLING.PAS drvread drvwrite directly point to reg_drv11j_pilot all other routines select a value for reg_drv11j depending on p_cbus^ ! *** The code in MENU, especially the read/write register... need to be updated to allow cbus values 0..3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1-OCT-1993 Philippe: MSU - Modify MOD053_TCS_IO_SPY_HANDLING.PAS proced_tcs_request_spy and proced_tcs_read_db_spy replace drv11j with reg_drv11j_pilot. And pass this new argument to proced_tcs_enb/dis_int ! *** the read spy has NOT been modified yet to read both half and splice the data block - Modify MOD050_INLINE_HARD_IO.PAS inline_send_data_and_get_cbus request pilot comint cbus first, then assistant after wait for receiving pilot cbus ! *** There is a potential difficulty here. We don't want to request the assistant cbus right along with the pilot. We could be asking the (pilot and the) assistant to hold its data block request after the pilot has already started a new data block but before the pilot told the assistant to get started on it. This would prevent/delay the assistant from doing its 1/2 of the job. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 30-SEP-1993 Philippe: MSU - Modify MOD052_TCS_IO_COMINT_HANDLING.PAS proced_tcs_read_status add argument: pointer to drv11j proced_tcs_toggle_buffer now directly point to reg_drv11j_pilot proced_tcs_release_dbbuilder and proced_tcs_disable_db_builder and proced_tcs_resume and proced_tcs_reset_comint now directly point to both reg_drv11j_pilot and reg_drv11j_assist proced_tcs_allocate_cbus Delete this routine that is not used (confusing name and potential difficulty, cf. inline_send_data_and_get_cbus\MOD050_INLINE_HARD_IO.PAS) proced_tcs_pause now directly point to both reg_drv11j_pilot and reg_drv11j_assist (actually, the assistant is NOT connected to a TRG-ACQ-SYNCH cable, but the front-end busy status can be read back) but check both Pilot AND assistant ! *** The timeout is implemented as a loop count and is going to shrink when we go to a faster CPU (4000/60) ! *** There is a potential difficulty here. The code was using the variable outdbrc.comctrl to remember the control byte. It could change one bit at a time, when writing a new word, without destroying the other bits. We could duplicate this variable (outdbrc_pilot and outdbrc_assist). This doesn't need to be done as long as: we do the same action on both cards or we change a line and bring it back to the same state within a DISABLE_SWITCH/ENABLE_SWITCH structure (e.g. toggle buffer) or we change a line that has no effect on the other card (no case here) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 28-SEP-1993 Philippe: MSU - Modify MOD011_COMMON_HARD_IO.PAS remove declaration of ISR communication region - Modify MOD051_TCS_IO_DRV11J_HANDLING.PAS proced_tcs_define_drv11j now defines both drv11j cards. i.e. call CREATE DEVICE twice use separate device names, variables, but same Interrupt Service Routine remove optional argument about vector number, communication region intserv_tcs_drv11j replace communication region by anytype argument must still be present, even though it isn't used. proced_tcs_initialize_drv11j now initialize both drv11j cards. proced_tcs_read_drv11j_intr_reg add argument: pointer to drv11j proced_tcs_enb_int add argument: pointer to drv11j remove unused (!?!) statement writing to the ISR message region p_isr_mess^.port[chan] := FALSE ; proced_tcs_dis_int add argument: pointer to drv11j ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 28-SEP-1993 Philippe: MSU - edit TRICS_V50.DAT ($ EBUILD) Add DRV11J_PILOT and DRV11J_ASSIST (leave DRV11J in for now) copy of DRV11J new card address %O764160 %O764140 (-20 octal as in DRV11J book) vector %O340 %O350 (+10 octal as in Microvax Handbook) Int Prio 4 - Modify MOD051_TCS_IO_DRV11J_HANDLING.PAS Cosmetic comments in vector programming - Modify MOD011_COMMON_HARD_IO.PAS Add 2 pointers reg_drv11j_pilot, and reg_drv11j_assist for pilot and assistant DRV11J/COMINT, they will receive and save the real pointers. Keep the drv11j pointer (renamed reg_drv11j) as a general use pointer that will be set to one or the other of the 2 real pointers. rename and Double the dev DEVICE to dev_drv11j_pilot and dev_drv11j_assist ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 24-SEP-1993 Philippe: MSU - Write TEST_FMLN_LOOKUPS to verify programming of FMLN threshold and momentum lookups. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 22-23-SEP-1993 Philippe: MSU - Modify MOD106_HANDLE_FMLN.PAS Add comments in program_fmln_momentum_lookup ! *** Restore checking address generator at midpoint in verify_fmln_thresholds Fill in the code for verify_fmln_momentum_lookup - Modify MOD054_TCS_IO_CBUS_HANDLING.PAS add comments in proced_tcs_write_FMLN_cbus and proced_tcs_read_FMLN_cbus proced_tcs_read_FMLN_cbus already had code to read byte wide programming, only fix so that saturation starting at 0 is reported as 0 instead of -1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 20-SEP-1993 Philippe: MSU - Modify MOD106_HANDLE_FMLN.PAS replace testing of square[1] = 0 with explicit new boolean flag first_call ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 17-SEP-1993 Philippe: - DZero: rename the files in directory EWORK1 (trics_v40) to ETRICS saved for backup and make room for next trics. - MSUD01::dua1:[archive.trics_v40] gets a copy of latest dzero's v4.0 files - MSU: copy the directory EWORK1 (trics_v50) to ETRICS EWORK1 ready for work on TWO COMINT - copy MSU::EWORK1: to DZERO::EWORK1: already has large tiles and before working on TWO COMINT system ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8-SEP-1993 Philippe: MSU - Modify MPOOL_SERVER.PAS Increase the time delay between sending successive refset subsections from .1s to .2s Add sending the LT_refset section after the other refsets ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3-SEP-1993 Philippe: MSU - Modify MPOOL_DATA.TYP add LT_pattern to refset_section - Modify MOD404_HANDLE_MONIT_POOL.PAS fill LT_pattern from copy_twr_and_refset_programming ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1-2-SEP-1993 Philippe: MSU - Modify MOD226_COOR_CALTRG_EXECUTE.PAS fix algorithm for tower_range_ok_for_lgtile - Observe the behavior of the error mailbox system when a process (dispatch) is caught in an exception loop (loating divide by zero). The node is "stuck" in a tight loop in and out of the exception handler without displaying any message. - modify MOD128_INIT_TRGTWR.PAS make fill_adc_scale initialize LgTile.Energy_Scale - Modify TRICS_V50.PAS, MOD223_COOR_GLOBAL_EXECUTE.PAS, MOD201_TST_INIT.PAS add call to init_all_LgTile after call to init_all_trgtwr - Modify MOD095_INIT_LSM.PAS fix large tile zero energy response initialization - Modify MOD119_HANDLE_TRGTWR.PAS fix large tile ref set scaling - Modify - Modify - Modify ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 31-AUG-1993 Philippe: MSU - Modify TABLE_CBUS_CARDS.TYP add record definition for LT_list_prog_andor_card with 8 ref sets (instead of 4 ref set for EM and TOT) - Modify MOD071_DEF_HARDWARE_TABLES.PAS add card LT_list_aoc, and data base initialization - Modify MOD123_INIT_CBUS_CARDS.PAS add initialization of the LT_list_aoc - Modify SITE_DEPENDENT.CST Move to version 4.0 -> 5.0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~