VERSIONS(DOCS) Optical Printer Control System VERSIONS(DOCS) OPCS SOFTWARE VERSION INFORMATION --------------------------------- 1.37a - spacebar for allstop, double_check_hardware(). 1.37b - cam >-2 bugfix, debug info commented out (ONEIL 1/3/89) 1.37c - better /etc/crash handling, LPT1/LPT2 hardware checks 1.37d - step modified with optional arguments,log handles #----- 1.38 - Local/Public motor subs, contrived msg, (needs init code) 1.40 - Lock command added, check buckle during shoot, allstop/buck checked in C, DBX saves/restores counters. 1.40a - Fixes to allstop handler, and DBXSAVE->COUNTER is now 'int' 1.50 - Commands and code added for DUAL projectors. 2.00 - Parallel/steps/direction, 8 motor max, concurrent shooting. 2.00a - fix to shutdrvr.asm for projectors going 1/2 out of phase 2.00b - fix to OPCSBIG (added NULL in pattern init), dutycycle, deen 2.00c - fix to SEEK..ShootRatio() contained wrong ratio 2.01 - ramping, fast seek, pro2display bugfix, dirxor bugfix 2.01a - key, load, lineup, less runbar calls, step abc no counter 2.01b - buckle check BEFORE running motors, load removed VCE 103 RELEASE 2.10 - Large model, float interps, time interp, all 8 motors run 2.10a - timeinterp uses pps instead of seconds 2.10b - feed, step uses interps (ffocus, etc), PreCamEvent() 2.10c - floor(), fixes to step_cmd, opcsline.c, opcseval.c 2.10d - fixes to opcsinterp.c (free samp), jog added, fix ppr=1 slow added * for a chan spec, Chan2Bin() 'total' now a ptr, bug fix in GetFaderValue() to check for defs->interp==NULL, res2,rat2,seek2,chk2 have been phased out. 2.10e - timeinterp uses seconds/cycles, feed allows floats for interp channels. 2.10f - fixes to opcsinterp.c Lookup2Steps(using a [high] value would produce huge numbers) and to opcsramp (0xff instead of 0xffff). CS_WAIT has STI now. (bug came up in 103.00) 3.00 - 12 channels supported, added +/- ratio to KEY. MANY subroutines have been modified in OPCSRAMP.C, and allstop() handling was greatly modified. Fix to SlopCorrection(). Fix to EvalFrameSpec: changed (int) typecast to (Frame). Added counter/rat sets to key_cmd, et al. Put back load_cmd. 3.00a - JOG has inching, frame windoffs. (needs set-keys, slaving) Motor routines called w/func ptrs for counter updates. Slop routine bugfix. opcs has arg for different OPCSDEFS.OPC file. 3.00b - Fix to seek() [seek 1 1 1 then seek 1 would run 1 1 1] 3.00c - Fix:'motors off cam 12 motors off' screws up old counts. Added $1 $2 variable passing to RUNCMD. VCE 102 RELEASE. 3.00d - REP >54 and REP PRO >54, added fpf_eval_num_expr(), fixed 'K' in bignum. 3.00e - EFW Bugfixes: o PANIC/ABORT in a RUN file would continue anyway with next line. err=execute_string() in OPCSCMDS. 3.00f - OPCSDEFS.C modified out redundant 'IsBadMotor()' calls. k1.00 - Completely modified for use with kuper card and EMC subs. k1.02f - run()'s ReadLine() modified: 199 changed to MAXLINECHARS, ReadLine() modified to handle 'Line too long' errors. Added ALT+chan letter to JOG. Fix run() to break when skipping if EOF reached. Jog comes up with 'D' as default instead of 'A' k1.03 - Added 'respond', centralized the ALLSTOP handlers to the subroutines in OPCSSUBS, put in IFDEF OPCS clause for code in motorsubs.c, Evalnum: hex() function added, opcsjog: key->changed=0 when called. Seek added to KEY(OPCS). k1.04 - is_all_stop_key() checks for allstop key even if 'motors off'. execute_args() now checks custom commands for all arguments. k1.05 - Added keydef(OPCSDEFS), JogRelease() etc. k1.06 - 04-08-92 Bug fix in motorsubs.c: RampDownNow(): ONTHEFLYRAMPDOWN. Bug fix: JOG: crawl FWD/REV now updates large display, improved bar() subroutine for faster display. k1.07 - 04-13-92 Added frange(OPCSDEFS) command at Tony's request. k1.08 - 04-21-92 prophase added, spd(DEFS) handles '-' for any args. k1.09 - 04-22-92 SPD BUGFIX: opcsdefs wasn't passing speed scale to kuper subs BIG BUG FIX --> in shutter: ContShut(): slow speeds caused no ramping (ok), but an allstop failed (stopped out of home) because rdsamp/allstop checking weird. Put allstop opportunity AFTER vels get sent. ALSO: ShutterStop() wasn't checking for non-ramp case properly, and incorrectly computed if in midst of rampdown (added /32, and more reliable check. TESTED) Symptoms were stalls. ALSO: ContShutter() wasn't pointing ASADDR to velstop stack values (non-ramp), caused intermittent stall if ASTOP occurred during ShutterFlush() (which uses ASADDR if someone hits allstop) k1.10 - 05-29-92 Added softlatch to handle kuper's I/O port card (which can be written to, but not read). Added 'rat 4 4' to shoot 4, advance 4, shoot 4, etc. k1.10a - 07-24-92 ALT-letter works a little better. k1.10b - 08-06-92 key wont cls after called from script k1.10c - Bugfix for (176'-32) vs (176'0-32) in evalnum. k1.10d - key: projector run keys don't check buckview now. k1.10e - rat 1 0 1: fix to run in tandem k1.11e - -x flag added to fdi/fdo/dxi/dxo k1.12 - FINAL FIX for stupid screen scroll problem (mdrive.asm) k1.12a - added feet/frames to logcounters k1.12b - added 'logformat' command k1.12c - 04/02/98 added defs: pro2display, set/clr/xorbit k1.12d - 04/07/98 BUGFIX: pro2display disables ratio too BUGFIX: Enabled runbar() again (been off how long?!) Status line is now: <-0 RUNBAR 24-><-25 SCRIPT 52-><-53 FADE/DX 79-> k1.12e - 04/10/98 Added defs: '@', 'echo' 'buckle' 'viewer' 'filter' 'keyfunc' Obsolete: 'buckview' 'deenergize' 'keydef' Added opcs: 'autofilt' Seek now ignores viewer, but still senses buckles Redraws allstop msgs w/out flashing after cont/abt. Added autofilt(OPCS) and filter(OPCSDEFS) Made man pages for logformat, and all new commands Added +-*/ to SPD(OPCS): OK Added '-all' flag to SHOW(OPCS): OK k1.12f - 05/13/98 Added faderdisplay [on|off] for cinetech K1.13 - 06/18/98 BUG FIX - 'FDI 2 CAM 10' would stop/go shoot last 8 BUG FIX - 'SHU 50 RESET D 0 SEEK 1 1' moves fader?! Created SetCounter() that updates both counter and defs->fader. BUG FIX - mods to shutter.c so key release while in key(OPCS) mode dumps part of ring buffer, making motors stop quicker. [ Added DumpHalfStack() ] ENH: Added cam/pro variables to evalnum ENH: Added 'DO UNTIL (CAM=12) ..', modified manpage DOC: Added manpage for debugger(OPCSDEFS) ENH: home program now has a 'default' clause, so 'home' without args can be _controlled_ ENH: Added spdinterp(DEFS) to allow zoom to affect exposure automatically. Introduced: ease.exe and gr.exe for doing pans/zooms. K1.13a - 07/11/98 BUGFIX: ease had trouble with numbers >+-32768. Problem was Round() returned an int, and easediff variables were int instead of Pos. ENH: home now has 'reset [chan] [val]' ENH: gr has 'v' to plot vels ENH: pending feeds are now shown in the runbar BUGFIX: BAD BUG in shutter.c since k1.13: 'cam 110' didn't actually shoot 110 frames, and left motor out of sync. Bug was in DumpVels() being called under non- allstop situations. ENH: runcmd now allows -1 as #args for variable args. Also, existence of .HLP files are checked, and printed during errors in number of arguments. ENH: $* now expands ALL variables. K1.13b - 02/05/99 BUGFIX: ARGH! All math functions were offset!! ALL WERE WRONG! BUGFIX: seek 10 10 - seek 10 10 seek 10 10 - ------------ This would run at NON-slew spd BUGFIX: (6*(3'0)) and (6+4'0) doesn't work! Unfortunatly all this stuff was broken; parser numeric parser was checking for ' anywhere in the ENTIRE FORMULA, and not stopping at end of numeric value. ENH: Added (?) to print actual evalnum help K1.13c - 12/19/00 BUGFIX: seek couldn't handle different PPR values K1.13d - 03/15/02 Fixed 'mov' docs; references to 'h' channel changed to 'f' 8255.exe modified to let user change outputs (v2) No changes to OPCS that I know of otherwise. K1.14 - 04/27/03 o Adding new OPCS command 'velrep', added VelRep.C. (For Technicolor) o Modified 'man rtmc48' to include kuper diagram. o Fixed bugs in evalnum.c as per linux port o Fixed bug in opcssubs.c as per linux port K1.15 - 04/16/08 o velrep would crash if filename didn't exist, or on other file related errors. velrep 'Free' routines were not checking for NULL. o velrep docs modified to indicate the + postfix would either increment OR decrement the frame counter based on the velocity's sign (direction). o home: added OPCSDEBUG to help and man page o velrep mem leak: wasn't free()ing stop/goto/loop labels o go mem leak: seems like hfree() wasn't freeing the halloc()s correctly, causing mem to slowly leak. Solution: FreeRingBuffer() hfree() commented out, run hfree() only on opcs_exit() o To make room for more ram: rtmc48/mdrive: Made environment smaller: 25000 -> 20000 (Only need 19660) Run 'defs' or 'show -d' to determine Environment size. Changed MAXSCRIPTS from 20 to 16 velrep: Added CHUNKSIZE to realloc()s to prevent mem fragmentation.