############################################################################### HOWTO add new stimtype to mapper.c ############################################################################### 1) #define new stimtype number, update EMPTYSTIMS/MAXSTIMS 2) add/init/doc new global var(s) if any new parms 3) new drawstim() function declaration 4) new drawstim() function body 5) usage() line for new stimtype num 6) usage() lines for new parms 7) printdefs() lines new parms 8) group of defaults for new stimtype so runs w/only stimtype num 9) get{st,f,f2,i,i2,fq,tm} for new cmdline parms 10) add drawstim() function to eventloop 11) $MAPPER_DIR/lib/scripts/newscript (highlights relevant parms) 12) write new help panel 13) new randblock, see: drawNEWrndblk() for drawfunct and init ############################################################################### HOWTO make Mac/Linux dist, multi-arch install ############################################################################### ##### HOWTO save source mk0 dist # source, min images mk0 dist3 # source, incl all images/sounds ###### HOWTO make single arch for binary install tar xvfz mappersrc.tgz mk0 onearch ###### HOWTO make multi-arch for binary install ### (1) on Mac 10.6 tar xvfz mappersrc.tgz cd mappersrc mk0 onearch cd .. tar cvfz - mappersrc > mappersrc.tgz [Finder cp mappersrc.tgz to shared 32-bit VM dir] ### (2) on CentOS 5.9 32-bit tar xvfz mappersrc.tgz cd mappersrc mk0 onearch cd .. tar cvfz - mappersrc > mappersrc.tgz [Finder cp mappersrc.tgz to shared 64-bit VM dir] ### (3) on CentOS 5.9 64-bit tar xvfz mappersrc.tgz cd mappersrc rm -rf /tmp/mapper mk0 onearch cd .. ### (4) DONE [Finder cp completed mapper.tgz] ### HOWTO add all images/sounds to binary install tar xvfz mapper.tgz # from final step above cd mapper/lib tar xvfz /tmp/libsndimg.tgz cd ../.. tar cvfz - mapper > mapper.tgz ################################################################################ mapper: X11/OpenGL fMRI stim--Marty Sereno (orig SGI GL pol/ecc/rot:Anders Dale) ################################################################################ 95/04/01: begin IrixGL stim.c (Anders Dale, Sereno) IrixGL pol,ecc,rotdil,lcms 96/01/01: Anders Dale: attention/Kaniza/interhem (IrixGL), not included here 96/06/01: begin Sereno IrixGL stim.c: pol/ecc color modes 97/11/01: savergb code (from Sereno ~/stim/retin/src/stim.c) 99/09/01: rand fixation colorchanges for scanning 4YO kid 00/01/01: better window centering like eyemove.c 00/03/01: live video interrupt (Irix GL) for communicate w/deaf (TODO: OpenGL) 00/12/01: pol + lett/num task, ecc + lett/num task 01/04/01: fix reversed pol,ecc (finally!) 02/08/01: last Sereno IRIX GL stim.c - - - - - - - - - - - - [begin port to OpenGL] - - - - - - - - - - - - - - - - 01/11/01: --begin mapper.c: Sereno OpenGL/Xlib port of stim.c 01/12/01: --IRIX GLUT, Mac glut (fullscreen/gamemode too flaky, *abandon*) 02/05/01: --pol wordlist (tmp GL regress: PostScript font eng, none in OpenGL) --option-ify, OpenGL/Xlib display, pol/ecc --Linux port, fix noborders, Linux/NVIDIA: setenv __GL_SYNC_TO_VBLANK 1 --lcms, rotdil, rewrite glass, untangle some args, fix colors --adjust b/w contrast, adjust col contrast/centerpt 03/05/05: --begin port to plain Xlib --Darwin => works, except for menu bar --Linux override_redirect (vs. noborders) to fix RH8.0 panel, leftclick --Mac override_redirect unfortunately still leaves menu bar in 10.3+ --add Don's new coherent motion wedge 03/11/01: --Core OpenGL fullscreen (not now: keep 1 Mac/Linux/(IRIX) codebase) --/Developer/Documentation/GraphicsImaging/Conceptual/OpenGL/ --/chap3/chapter_3_section_3.html 03/12/01: --add vection stim, fix twoperiod (N.B. old scripts go double speed) 04/01/01: --settle on raw Xlib fullscreen --write IRIX GL-like openwindow() for OpenGL/Xlib --Display => 1024x768 --verify same on mirror --XDarwin -> fullscreen (cmd-opt-a toggles, gets rid of Dock) --fn-F1 to reset - - - - - - - - - - - - [3 year gap] - - - -- - - - - - - - - - - - - - - - - - 07/04/01: --London, begin ports of other standalone stims, fix Mac glXSwapBuffer --add orient.c into mapper (port to OpenGL) --glXSwapBuffer swaps buffer but doesn't waitTOF --added polar wobble, fixed sqrt neg, mask uneven edges of quads w/nurb --ATI_Displays.app: vsync ON => no effect --waitTOF fix: swapInterval=1, #include , ld ... -framework OpenGL CGLSetParameter(CGLGetCurrentContext(),kCGLCPSwapInterval,&swapInterval); --fixed waitTOF syncs to remote 59.98 Hz display (laptop 60 Hz tears!) --run w/2x period because two attn sweeps per hemifield per 360 deg --compile for both PPC and Intel (can't cross-compile on ppc/knossos17b) --all architectures: -arch ppc -arch ppc64 -arch i386 -arch x86_64 07/07/01: --begin add new stims --start orient bars horiz, not vertical --add central disk (like orig Tong/Rees) --add radial wobble borders of doughnut --add occasional target jerk for task --add polar stim w/2 CW (or CCW) wedges on dia to directly sim orient --add polar stim w/CW+CCW wedges starting VM+ or VM- (published) 07/07/05: --begin compile freetype and ftgl (orig vers: now do inside mapper dir) # FreeType (bare unix style compile/install in /usr/local subdir) http://sourceforge.net/project/showfiles.php?group_id=3157 => freetype-2.3.5.tgz ./configure --prefix=/usr/local/freetype-2.3.5 make su - make install # FTGL (bare unix style compile/install in /usr/local subdir) http://homepages.paradise.net.nz/henryj/code/ => ftgl-2.1.2.tgz cd /usr/include su - ln -s /System/Library/Frameworks/OpenGL.framework/Versions/A/Headers GL [back to non-root] setenv FT2_CONFIG /usr/local/freetype-2.3.5/bin/freetype-config ./configure \ --prefix=/usr/local/ftgl-2.1.2 \ --without-glut \ --with-ft-prefix=/usr/local/freetype-2.3.5 \ --with-gl-lib=/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries make su - cd ~/Developer/ftgl/FTGL/unix/docs tar xvfz ../../docs/html.tar.gz make install 07/07/10: --begin fonts, USB DIO --change to compile mapper bare C code with g++, fix cast warnings --add ftgl c++ code, fix Makefile, add ifdefs to omit c++ code if just gcc --pollet working --ecclet working --polwords working (back to the future of 2001 :-}) --omit zero's and oh's --strip CRs and newlines from words --change deg_per_lett args to time --fix centerpolflag, make centered polar default --fix -twoperiod --pol/ecclet can write stim/resp to logfile --orient stencil code working (after stupid "if (i=j)" bug!) --bars rotating in 4 quadrants (to destroy phase diffs -- all on at radial) --pollet: can jitter polar angle of letters for wide rays --add lett/num task to dual polar stimuli --ecclet: can jitter ecc of letters for wide rings 07/07/20: --begin add TTL->USB code --initial code fails g++ compile --look at Preetha's excellent windows code (incl. AccesLoader functions) --matlab: mex waitforusb.c aiousb.c --fixes for g++: vi aiousb.c: malloc=>(UInt8 *)malloc, (LPVOID)&udev=>(LPVOID *)&udev #include "aiousb2.c" link: ... -framework CoreFoundation -framework IOKit first run AccesLoader (waits for attach, writes firmware to it, exits) works! pulsecnt=3 skips two flashes, starts on third --csh to run AccesLoader only once (cmdline check dev: system_profiler) --zz.csh.command double-click only if Terminal forks /bin/tcsh (vs. login) --fix Rob's Applescript to use bundle-included binaries called via csh --write USB documentation --HOWTO get info in C from already-setup-by-AccesLoader device UInt16 productID, nameSize=200; UInt8 DIOBytes, counters; char name[200]; queryDeviceInfo(devind,&productID,nameSize,name,&DIOBytes,&counters); printf("devind=%d productID=%d name=%s DIOBytes=%d counters=%d\n", devind,productID,name,DIOBytes,counters); --applescript to find directory where app is, use it in shell script tell application "Finder" to get folder of (path to me) as Unicode text set workingDir to POSIX path of result tell application "Terminal" do script with command \ "(cd " & workingDir & "; ./setupUSB.app/Contents/ MacOS/noarch/setupUSB)" end tell 07/07/25: --begin scripts for install, dark dots, fixation mesh, thinmot/ODR stims --fix logfile dates/writing/directory-existence-tests --truncate numrad (make all polygons anyway for same coords, don't show some) --small black,white fixation dot option --add drawpoldots/draweccdots masked wedge/ring (thinmot.c) --add spatial frequency ramp (sf.c) --add ODR/distractor code (attend.c) --allscripts: quickie tk to run all scripts (needs X tk -> source lines below) --anywhere multi-arch install set tcldir = /Users/sereno/Developer/Mapper-xlib/tcltktix set arch = Darwin-ppc set path = ( $tcldir/bin/$arch $path ) setenv DYLD_LIBRARY_PATH $tcldir/lib/${arch}:$DYLD_LIBRARY_PATH setenv TCL_LIBRARY $tcldir/lib/noarch/tcl8.4 setenv TK_LIBRARY $tcldir/lib/noarch/tk8.4 setenv TIX_LIBRARY $tcldir/lib/noarch/tix8.1 --debug: sf min/maxcyc w/RAND, dotnoBG ecc, centered CW dotsbg --add fixate mesh from Chris Tyler (N.B.: release from retin adapt maybe bad) --rewrite drawrotdil1->0 (dilperiod not doubled, speed not dilfreq-dependent) --neg bwcontrast makes dark dots --waitforpulse=-1 means wait for Fn-F1 key --F2key now sets up wait for F1, even w/waitforpulse=0 (start immediately) --compile libtiff, manually lipo to get fat libs --explicit mac libtiff/include paths, Linux libtiff there (just -libtiff) --add poltextyfact to y-squish polar text for better readability --add random-pol-words vs. OFF (polperiod=>rot, twoperiod=>ON/OFF) --add $env resolution control to scripts, fix allscripts/run 07/08/00: --begin setuptcl: mactcl ppc/i386 in self-contained executable tcltktix inst --cmdline in directory: cd ~/Developer/Mapper-xlib/tcltktix/bin/noarch ./setuptcl [or 'csh setuptcl'] => 'don't exec' err, pointer to help ./setuptcl -help => see help source setuptcl => works --cmdline using absolute path exec or exec w/abs path => same as above source w/abs path => now error: csh var 'setuptcl' unset --in .cshrc (vers 1) set setuptcl = ~/Developer/Mapper-xlib/tcltktix/bin/noarch/setuptcl source $setuptcl; unset setuptcl --in .cshrc (vers 2) alias mytcl 'set setuptcl = ; source $setuptcl' --in .cshrc (vers 3) pushd source setuptcl popd 07/08/01: --begin fat libs, read/disp tiffs --option -fixword: to stop between-letter wiggling during slow movement --basic read and display of tiffs working --made 'fat' (lib,lib64) libtiffs for Linux, fixed mk/Makefiles 08/06/01: --display of basic HKEXPT scenario file working --tiff rasters saved in ragged array now working --redesigned tiff/exptframe/exptline structures from nmovie.c orig --internal xoff/yoff: pix -> float --allow, but don't require, bg image --14Jun2008: basic hilly working --one call to ftgl Render() slows glDrawPixels to crawl (GL state reset?) --[look at ftgl source -> it *does* reset, though glGet doesn't show change!] --fix: glPixelTransferi(GL_RED/GREEN/BLUE/ALPHA_SCALE, 1) after ftgl Render() --basic options tested on Linux => fine (faster than laptop) --vs. Cogent (+timing, +Mac, +noMatlab, -genscript) => more complex, use C --fix hkexpt,run,allscripts scripts --expts in Mapper-xlib/scripts/hkexpt-/hkexpt.txt,bgimg.tiff,.tiff --pgi working again: 18Jun2008 --'skylab' colormap documented (leave for just text 0=black,1=white) --add pgi file command: setrgbcolor 230 20 40 --checked: GL_ALPHA_TEST, GL_DEPTH_TEST both off at start --libtiff can't read Photoshop tiffs(!) but GraphicConvertor "SaveAs Tiff" OK --precompiled ImageMagick utterly fails; compile against tiff 3.8.2 => works --rewrite mkexpts.tcl script generator to use ImageMagick binaries (was IRIX) --write polar 2bak tcl gen script (mkfaces was only central match-to-sample!) --[maybe 2bak from Don's peritarg.cpp?] --TIFFReadRGBAStrip->TIFFReadRGBAImage: solves read ImageMagick output prob! --24Jun2008 mapper.c readexpt comments fixed 08/08/01: --begin wandering aperture, stereo stims, mouse control, save frames --add wandering aperture (to shuffled grid) of brownian dots --change wandering to readclock (from frame-based) (slowed w/proj) --bug: change saverect to pos y -> up (only parsepgi had been changed) --don't 2.0*flowfreq (2.0*freq correct for flickerfreq/twofreq/dilfreq) --initial port of vect/vect2 stimuli (old GL mapper stimtype 46,47) --add local fallbacks for ttf font so expt always works --put back orig vect1 (rename new: vechorver2) --add mouse control of wander mask --add stereo version of canal plane stims using unfilled quads --rationalize freq args lcms: flickerfreq -> flowfreq (not x2!) rotdils/glass: dilfreq -> flowfreq (TODO:rotdil2) vect: dilfreq -> wobblefreq (not x2!) add -randperiod for texture/dot refresh (now just for vec1,2,3) add blockperiod for vec3 types (not x2!) --add fair two-sided cosinusoid wobble for vec --improve parm inits, scripts, usage --make self-extracting bin+runwithargs and tarball+runscript (fails10.4->.5) --put back mouse position w/error exits --add writetiff, frame2tiff --flip bottom-up GL raster to default top-down tiff (some readers ignore tag) --save num tiff frames of any stim at a selected framerate --e.g., mapper -s 12 -saveframes 480 15 => half of 64 sec cycle at 15fps --display size -> global (getxydisp crashes after 30 calls!) --add strip tiff transparency option --glReadPixels debugged for DarwinPPC/i386 (NXGetLocalArchInfo), Linux --add jittering pol,pollet (smoothed rand polar angle deviations) --min disparity set to 0.003 to avoid red/blue artifacts near zero --reabsorb drawpolar2() back into drawpolar() --add disparity to drawpolar() --add divergent stereo polar w/border, new parameters --add mouse control (fullscreen) to most pol/ecc/let, debug mouse centering 08/09/01: --finish HKEXPT, shifters, extreme close stereo, stereo depth ripples --add divergent stereo "Ready" screen --fix pol/ecclet text auto center at other winxy (e.g., 1400x1050), "Ready" --fix rotdil32sn to same dotspeed (veloc no longer flowperiod=0.5 dependent!) --standard usable disparity ~6 mm for 6 cm interoc at 20 cm viewing --zero disparity approaches interocular dist w/extreme closeup (4 cm) --greatly increase disparity for extreme closeup vection sphere scripts --add shifter test (4 quadrants out-of-phase pol w/overall phase offsetable) --add back-and-forth jerk to shifter test, one quadrant or all --task: attend UR, incr all pi/2 each run, vectavg norm ph, survive->shifter --finally fixed flicker bug: flickerphase -1,-3 (not 1,-1) when t neg --add wandering pol/pollet w/central fix for object-cent shifter --fix min/maxlett bug, option them --allow pgi comments, better hkexpt doc, increase subframes to 100 --add depthripples to rotdil, slow/dense better stereo --dot surface slides over depth ripples --dotjittcent>0 => stereo surface decays (centx,y not added before calc disp) --depthripples=0.25 makes bowl/protrusion --add dotstereotype parm, fixed-disp ecc-scaled volume --non-ecc fixed-disp volume easier to see w/random --dotstereotype 0-5: cone/ripples/vol each with ecc or ecc+flowcent dispfunc --added error checking to command line args (finally :-} ) --write hkexpt finish time to log --tested w/30,720 16.667 msec frames => finishes correctly --final font debug (use ascender/descender, pixmap font measure are in pix!) --add/finish lblo (text grab point) support --fix saveframes bug (was saving before fixation drawn) --make std /usr/local install and run-from-srcdir compatible --MapperEnv.csh, SrcMapperEnv.csh --fix mk dist/self/inst --hkexpt-example with auto create scan-specific logdir --mapper runs in Terminal w/setenv DISPLAY :0, xdpyinfo on path, but no kill --shell var $_ tells arg to source, but const when sourcing file sources file --[Src]MapperEnv checks for xdpyinfo on path, also func checks bad return --function-ify get jerkoffset, add jerkoffset task to wanderpol --size=? hkexpt opt: text|tiff height pix (def=-1:text=exptfont,tiff=native) --add vec vs. scrambled w/smooth texture transition --lipo fat AccesLoader, change compiledir i386/ppc/fat => Darwin-i386/ppc/fat set ppc = ~/Developer/Mapper-lib/AccesUSB/bin/Darwin-ppc/AccesLoader set i386 = ~/Developer/Mapper-lib/AccesUSB/bin/Darwin-i386/AccesLoader set fat = ~/Developer/Mapper-lib/AccesUSB/bin/Darwin-fat/AccesLoader lipo -create -arch ppc $ppc -arch i386 $i386 -output $fat --leave Darwin-specific /usr/local/aiousb, setupUSB.app as is (ppc/i386) --fix vection nologfile crasher --documented scripts in lib/scripts/NOTES.txt --add left-justified row labels for allscripts --movies: -saveframes 1200,1920 60, Export for Web..., Desktop --make F1-reset also restart saveframes (for re-rand) --add stereoline parm, expose working [no]antialias --fix F2 wait-again settimer bug introduced mapper13r.c (Sep02'08) --add wobblefreq/wobbleamp to polar/polarline --include , not (linux strings.h doesn't incl strings.h) --add twocond pursue seq vs. playback passive equiv seq (long debug!) --add F5key->showborder to drawpursue --add fixline(width) parm (esp. for pursuit) --vec vs. scrambled: add stereoline to stereo/nostereo, add filled stereo tex --add polarmask to hkexpt (controlled by existing minrad,maxrad,polwidth) --fix crasher: logfileflag==true && -parm missing arg (xit check NULL, too) 08/11/01: --being all-in-one selfuntar/install/run --quietflag (usage/printdefs/logfilehead) if binary name doesn't end in mapper --add setupUSB option to selfuntar: csh zz.csh pollet1 [usb] --linux+mac selfuntar (linux i386 + fat) --fix pulsecnt>0 disables F2 reset-to-wait when USB support not compiled in --onintr in selfuntar for cleanup after interrupt 08/11/10: --stable release (mapper14f.c) --begin renicemapper, startmouse, rewrite USB --add dilating numbers ramp with 1up/down task --add vel-dep brighten (dim static) to passive mv dots (vs. pursue on static) --add USB->TTL pulse out, separate out setupACCESdev() --hkexpt: drawexpt writes out codes to USB->TTL box --glXSwapBuffers: intel 1-2 frames behind ppc --add glFlush after glXSwapBuffers => ppc: adv 9ms, intel: no effect --add glFinish after glXSwapBuffers => ppc: adv 18ms, intel: adv 19ms --justSwap: USB/TTL->LCDfirst/full: ppc:38/44ms intel:55/65ms --glFlush: USB/TTL->LCDfirst/full: ppc:29/35ms intel:55/65ms --glFinish: USB/TTL->LCDfirst/full: ppc:20/26ms intel:38/45ms (ppc: some +1fr) --add fixtype -1 => NOFIX --projector (glFlush/XGA): USB/TTL->LCDfirst/full: ppc:unstable intel:55/66ms --projector (glFlush/SVGA):USB/TTL->LCDfirst/full: ppc:32/44ms intel:55/66ms --add hkcode<->bits convertor options --sudo hell: renicemapper script, /etc/sudoers, 5 min timer (!), sudo -K --(1) set allowed = `sudo -l &` => shunt passwd prompt w/def /etc/sudoers --(2) catch {eval exec $mapperscript} ret -> avoid allscripts sudohang/tclerr --mv sudo'able renicemapper to /usr/local/bin to avoid local security hole --compile AccesLoader w/makefile (rearrange Mapper-xlib/Acces codetree) --my usecnap doesn't work on Mac! => omit, use usleep --new ACCESbox input ports start hi -> uncovers no bitmask in pulsecnt: added --ACCESbox: LED const => firmware loaded, LED blinking => port activity --#ifdef ACC_LOAD: acces.c (AccesLoader+data), no CFRunLoopRun, 2.5s usleep --re-rearrange Mapper-xlib/Acces codetree, remake 2.5M dmg (update: mount,cp) --if mousectrl, F3 toggles whether F1/F2 reset re-centers (incl "Ready"!) --funct-ify one-sided getpoljerk, add to pol, task report jerk direction --parm-ify minfrms2nextj,jerkframes (orient best at 1 frm, pol better at 2) --detect jerk direction task should be left/right or up/down, not CCW/CW --fix unused/use-w/o-init/no-return/declare/ifassign to clear -Wall, -ansi --funct-ify polarmask (was in drawexpt), add to drawrotdil0 --add detect reddish event and logfile to drawrotdil0, fix logfile formatting --add ipsi-only polar (+period:up->lo, +ipsirange:left,0=off) --make ipsirange work for pollet, too; make scripts --add sinusoidal disparity bump targets --sinusoidal disparity wobble (random phase w.r.t. wobble -- could fix) --annotate global variables, rename some for consistency, uniqueness --add oritarg and (pol)wobble to ecc (could rename wobblefreq polwobblefreq) --include and in Darwin (why no warnings before?) --add expfrac: flatten ecc exp tranform (DONE:affect ecclet, pol/pollet, too) --add twocond eccen stimtype --add -startmouse for periph stims (solve cent2mouse for mousex,y) --add iso mouse control w/opt clamp2sq (XWarp slows bords), not needed w/accel --add options to ctrl in/out ACCES ports: -usboutdev/port, -usbindev/port/bit --rewrite port options: -usbtrigbit, -usbcodeport, -addport2set --usbbitsstate => requested port state, print out configs done --find/count both initialized and uninitialized ACCES devs --rename logtransflag -> exptransflag --third rewrite of read/write port config -- finally reasonable --disable usb functs if no USB-DIO-32 devs found --add loadaccesdev parm, def compile w/ACC_LOAD, fix -Wall, def=no init --finally find/fix longstanding F2-reset-to-wait-for-pulses breakwaitflag bug --add ecc central/peripheral/OFF rand block design --add parms: -proboffcond, -[no]stoprepeats --usbVendor: 0x1605 => %d decimal 5637 --failed 3-day attempt to debug ACCES code for addressing more than 1 device AccesLoader/loadaccesdev() load both ACCES devices in one go devAdded called twice for one dev (do while), fails on second break from rawAdded successfully inits just one dev (no acces diff) devAdded: count < gNumDevices-1 => table allows func call, no 2nd access vi /Developer/Examples/IOKit/usb/Ezloader\ Example/main.c --sendusbarraybit(), either to 1 or 0 (port latches) 09/04/20: --begin polar air, fix dots, fixgrid, ecc/pollett+rotdil, smoothflow stim --add polarair, parms w/visual feedback --nosetupusb bypasses any other port commands for non-USB test --allow delay (or advance) outbit timing vs. visual (LCDdelay, airpuff delay) --add default bitarray outport -- 1 port (D), 8bits --run stdvdisc => fix can't hold vergence steady w/wobbledisp, disptargs --add wigglefixflag, wigglefixamp, wigglefixlam (reading paps on fix drifts) --wiggle fix unnecessary for moving, slow drift could stop lcms fadeout --add 45deg -fixgrid => works! completely stable fixation! --abandon occlude mesh inside stereo bord (far drawpolar somehow gets behind) --mapper14q.c: add -fixdots zerodisp ellipse => better than border --new stdvdisc{nearfar,farnear} scripts => no border, bigger maxrad --rm static dotx,y overlap, fixdots only works w/one div stereo stimtype --fix selfuntar after port upgrades (default skip 4 if add usb arg) --add paths to selfuntar (xdpyinfo and . maybe not on user path) --check for error return from xdpyinfo (system_profiler too if ACC_LOAD) --selfuntar sleep 2 *after* run script calls mapper in bg so dir still there --add pollet+rotdil stimtype (for prostriata) --add rotdil eccen mask func --add ecclet+rotdil stimtype (for prostriata) --add ecclet wrap opt: clamp beyond-maxlett r (2nd half ring wrap) to minlett --cleanup missing printdefs, fixline: geti->getf --correct wanderpol retin bias w/glTranslate func(th0), still has orient --enable logging for wanderpol (all there, just missing an init) --make rotdilextrafac a visible parm --setenv MAPPERPROG ../../mapper-Linux-i386 now finds ../../lib/fonts --smooth rot2dil working, max rot/dilspeed independent of flow length --scale exptrans-scaled dil driver by derivative exptrans @ maxrad (=rotmax) --add 5 additional coltypes to drawrot2dil (new makecolor() returns r,g,b) --put SrcMapperEnv.csh in dist, fix it so it works if sourced in srcdir --add dotcornerjitt parm --add stationary targ task in smooth flow --make neg polperiod reverse ROT-only, DIL-only, SPIRAL, ALL4 (def:CCW,OUT) --add mouse control to rotdil,ecc/polletdil --add allow clamp ecc,pol letts+nums to screen (for periph/partial/mousectrl) --add -smoothflowtype (detach dot{rot,dil}, rm smoothrot2dilflag), renamefunc 09/06/06: --flat rotvel w/radius w/noexptrans and -smoothflowtype (inner looks faster) --add tanh getsmootheccwrap(r0), -smoothwrapfrac --add -smoothwrapshri to shrink ecc range to avoid split wrap w/o rewrite --make smootheccwrap work w/{ecc/pol}letdil mask (redo -rotdilextrafac) --slight fix MapperEnv.csh (source cwd works now), setuptcl (no var stomp) --make smootheccwrap scripts: eccletdil{1,2}sm --rm extra re-rand static jitts and lastphase in drawpolarair --re-arrange #defines for clarity --add smootheccwrap 1/cosh^2 checkerboard dimming (deriv. tanh displacement) --new makecolorf ubyte->float, malloc chkcol structs, rm stat epi{rgb} arrays --make draw{polars,eccen,orient,etc} use new makecolorsf, rm makecolorsi --extract setchkcolor() funct (N.B.: called every polygon), calls eccwrapdim --add eccwrapdim to ecc-windowed rotdil0 and ecclet (for ecc/polletdil) --convert other glColor3ub's to glColor3f (except hkexpt), rm ubtextcol --update glasspatt, Brownian wedge, masked movingdots to use getbwdotcolor() --expose -oppwedgewidth (nwedges) numtheta's per opp dir wedges in lcms --add coltype -1 to makecolor[s]f => one-sided getbwdotcolor (for smoothflow) --rm old-style B/W draw{pol,ecc,smooth} color code (makecolor[s]f for all) --add coltypes to lcms (color but not luminance jerk at in<->out transitions) --Linux test: barcnt bug -- makecolorsf free/remalloc if color count changes --Linux test: randvecoff() bug -- lastf not init'd --fix run,allscripts to accept more resolution requests (-XGA, -SXGA+, -WUXGA) --add 6 stereo left/right eye color parms, keyboard ctrl of, print curr parms --disable mirror/180rot keys (bitmap fonts don't transform) to avoid accident --smoothflow performance (N.B.: no projector redrive w/DVI, only works w/VGA) disable: attach USB mouse/keyboard, close laptop, wake w/extern keyboard enable: sleep, detach extern display, open lid, detach mouse/keyboard --neg twoperiod revs blkphase (phasecancel): lcms/rotdil/vec's/ecc2/purspass 09/07/30: --14w: ORBLETDIL stimtype (checks in circ eyemove aperture + rotdil + numtask) --14x: hkexpt grabpoint lblo= now affects tiffs, not just text (for autocent) --change HKEXPT stimtype from 61->60, fix hkexpt scripts, better hkexpt help --hkexpt-polfaces: scenario/standalone-csh generator (ready for hand-o-topy) --fix ecc img scale/position to use exponential scaling --uncompress/recompress every-frame scenario files (120K lines, 30K events) --mkexpts.tcl generates auto-scan-specific-logfile-setup csh code --mkexpts.tcl uses {Src}MapperEnv.csh, include it in dist (not yet inst) --new MAPPERPROG default chain: local, already setenv'd, twoup (../../mapper) --rename polfaces mkexpts.tcl vars to reflect gen ecc-scaled polimg displayer --14x: 100->260 pre-alloced lineptrs/frame adds 19M RAM (4->100 adds 17M RAM) --14y: malloc version looks ahead to find how many continuation lines needed --increase max events to 1024sec(=17 min) of 60 unique frms/sec (TODO:malloc) --14z: lblo [bg]tiff cent added to x/yoff at loadexpt (prev lblo in drawexpt) --15a: hkexpt optional 16ms poll/log for 8 TTL resp 0bits: 5v,0v,0v: resp=low --config hkexpt TTL response monitor/log: -usbrespport --15b: smoothwrapfrac!=0.0 also turns on polipsi smoothwrap if ipsirange!=0.0 --smoothwrap polipsi scripts 09/09/01: --tested upside-down face targets for hkexpt-polfaces => good, hard task --new flag (-hkcode2ttl) so if off hkcodes get logged w/o sending to USB->TTL --fix polfaces mkexpt.tcl to generate hkcodes first target frame only --rename setupUSB[arg]=>loadUSB[arg], fix/rename SetupUSB.app=>loadUSB.app --also mk, selfuntar, scripts, AccesUSB.dmg, loadUSB.app/Contents/Info.plist --better logical grouping of USB inits/errs, more USB errs --avoid repeated smoothwrap cosh's for same time t (e.g., else per-check) --add up/down arrow key scaling waiting/running stim up/down --better coords help (-winxy scales all but hkexpt abs pix args) --log arrow-key-controlled overall stim scale (new global) --use currstimscale to reset various maxmask's --move arrow key text scaling and centering into drawstr --make arrow key scaling work for hkexpt images --15c: stimrunningflag so scalekeys redraw/update readyscreen only while wait --airpuffbyteflag to send byte (instead of bit) for Ruey-Song's box (TODO:ON) --quiet, limited-stimtype distros so config'able scripts can be distributed --fix grid/mesh limits when using arrow key scale --allscripts->wish (wish8.4 not in Fedora 11), ln -s mac tcltktix binaries --make README4, a subset of README --2G RAM holds 6760 unique 320x240 tiffs (112s at 60Hz, ~1/5 of a xena run) 09/11/01: --flag/code to enable using tiff transparency when drawing hkexpt tiffs --POLLTDLIM stimtype => polletdil plus imgs (ECCLTDLIM TODO) --write onset time of tiff matching targ infix (-targtiffinfix) to log --up/down-from-current-spatial-freq task for sframp --option -firstframetime to start saving tiff frames at t!=0 --parm-ify MAXDOTXY to be able to expand a little for far eccen --turn on logfile in smoothflow scripts --draweccletdilimg w/new exptrans eccwidth code -- calc in/out, take half --single drawpollet/drawecclet functions -- old draw{pol/ecc}let->letter --extend/hackdrawpolarair to include randright-vs-randleft, test --extend/hack drawpolarair to include rand-vs-OFF (diff mechanism), test --rename parm: -port2viddelay => -delayttlport 10/02/25: --new air tube number assumption: first tube (TTL=0) => R forehead --change polarair start point to be like pol (start 0 deg) --add 1-back task to randVSoff and rightVSleft air puffs --new parm to define ON USB->TTL pulses/bytes either high or low (+init/Esc) --on Esc, clamp any output ports back to OFF (respect settable pulse sign) --mk: mk mapper moves bins into subdirs (like mk inst), fix mk inst --delete SrcMapperEnv: MapperEnv now works for this with bin subdirs there --fix crash if no tiffs found in readtiffs directory --force port setup/zero w/bitarrayflag for stimtype=JUSTBG (for airpuff init) --setusb{trig,code,resp} unset prev only if not already updated by other opts --fix leftVSright airpuffs bug --mk: make local shared/static Darwin/Linux libtiff/freetype/ftgl (big job!) --mk: compile extlibs in subdir to avoid overlapping myinst --mk: add hkexpt-polfaces/tiffs/[6 faces] so def inst polletdilim1 works --mk: tar finished multi-arch libs, fix mk acces, add loadUSB to bin/noarch --mk: current: shared freetype, static ftgl/libtiff --mk: strip tiff rsrc (cp, tar conv to ._, breaks my tiff read) --mk: 'mk dist' now works on freshly untar'd mappersrc.tgz (AccesUSB,renice) 10/04/06: --15k: hkexpt airpuffs ( ttl|air=4) 1 per event (vs. Cogent 8bits) --rearranged, extended hkexpt documentation --ftgl-2.1.2 Mac10.6 mk fail -> update mapper/mk/Makefiles to ftgl-2.1.3-rc5 --static (libtiff/freetype/ftgl) compiles now, but still req's X11 FT --full static (1.4->3M), mv aside /usr/X11R6/freetype.6.3.dylib before make --full static (1.4->3M), LDFLAGS = -Wl,-search_paths_first, -LFT before -LX11 --last works without DYLD_LIBRARY_PATH, but leave loc FT dylib for now --N.B.: full static FT link still broken on Linux --skip untar'd nuisance ._*.tiff metatdata in readtiffs() --Makefile-Darwin-x64_86 (10.6 compiler builds 64bit def, even on 32b kernel) --'mk forkclean' to get rid of nuisance ._* metatdata files created by untar --N.B.: 10.6 no longer cross-compiles ppc! => keep an Intel 10.5 machine --stop ppc/fat cross-compile attempt on i386 if needed ppc libs missing --Makefile idiocy: inline comment accepted but space before # subst into var! --'mk onearch' finally (!) generates a working mapper on 10.6 --F1/F2 turn OFF all USB outbytes, too (was just by Esc) --15m: drawrotrandair: twoper, flowper(=rotper,maybe not divisible), just CCW --rotrandair scripts (stimtype=103); all air scripts work w/-nosetupusb --drawwordspacelett: eccscale rand xy words vs. samefreq spaced letters +1back --15n: wordspacelett scripts (TODO: need words files!) --scripts descriptions in lib/scripts/NOTES.txt fixed to match allscripts --reduce live size hkexpt struct by merging imgfile/pgifile/text members --gather name string lengths in one define --fix longstanding: drawpolarjitt off edge array, pol2opplet letter drawing --rename polposspercyc->airtubes (polposspercyc now loc var) --15o: new parms for air tube grid dimensions, airtube re-numbering Polar 1 12 4x3 Grid Forehead (quadrants) 2 11 (vertical) 1 12 10 3 10 2 11 9 looking 4 9 looking 3 5 8 down on 5 8 down on 4 6 7 face 6 7 face Chin --arbitrary bitarraynum->airtube map now used just in: UPDNPHAIR,R2LPHAIR --air tube map defaults using getairtuberast by passing copy of part of argv --NxM phase-encoded line stim for 2D: up/down, left/right --make updown1/updown2/rightleft1/rightleft2 scripts, update allscripts --add *non*-shuffled wordlist vs. spacedletts stimtype (sentence/spacedletts) --test-lines: slow hkexpt horiz/vert airpuff lines to allow subj to adj tubes --fix introduced off-the-edge in wordscharfreqs, revealed by Linux compile --make numdil2 (reverse) work --overload gapdur (orig just text) to affect for now, only line airpuff stims --drawphasehalfpointsair: 1st or 2nd second half of air tubes, phase-encoded --test-half hkexpt script, add button to allscripts to kill stray run/mapper --add -polstartoffset -- now just lcms (for flip hemifield ipsi stim) --ipsi stim lcms scripts, longer cycle polletdilim{1,2}-96 --add airtube renumbering to polarair/rightleft/rotrandair --phase encoded line stims (polair using hacked -airtuberast) --hands vs. face (rightleft using hacked -airtuberast) --debug polar/rightleft disp (messy: should be 3 separate functs, omit delay) --catch long-standing crash if -stimtype doesn't exist... --rename option -airtuberast to -airtubemap to reflect extended function --XK_m: toggle mousectrl -- for {pol/ecc}{let}{dil}, odd results other stim --fix critical bash fail: run "which" via system() to chk xdypinfo --mk: no Ubuntu uname -i,-p (Linux: fallbak uname -m; Mac: avoid multiwrd -m) --mapper: regularize var declare formatting --fix introduced -printdefs crash (airtube map not defaulted) --draw{pol/ecc}letter: log more info, add -[no]verboselog --onescript: parse mapper script to make tk interface to adjust variables --onescript: handle flag options --allscripts: call onescript, too, if edit (vi) checkbutton --promote -greenbluedim to parm for flowfield targets 10/05/23: --15p: cent2polorb(), rewrite orbletdil, pol/ecc/let/rotdil/fix now self-orbs --allscripts: vi or xedit, env __GL_SYNC_TO_VBLANK=1, fix linux ps -a.. err --differentiate orbperiod from polperiod --circ/pol/ecc maxmask now consider rotdilextrafac/orbrad/mousectrl (+scale) --rewrite draw{pol/ecc}img to be time-based (were frame-based) --maxtiffspeed re-defined as {gldist,deg}/sec (was per-frame increment) --./mk dist now includes all the faces --parm-ify minfontsize,eccfontscale, fix defaults,scripts --fix eccletdil[im]{1,2}sm scripts --wrap parms to multiple cols in onescript, display stimtype --fix eccenmask mousectrl maxmask --add draworbletdilimg(), add poljitt arg to drawpolimg() --15q: add smoothflow glass stimtype, fix ecc vs. pol velocity w/maxrad!=1 --drawimg() similar to drawstr() (TODO: add lblo arg) --fixed orbletdilim rotdilextrafac --draworbimg tiffscale can't use polwidth (2Pi) => scale to 24deg wedge --radian/deg bug in reset polwidth in draworbletdilimg --orbletdilim: overload -blockperiod for -twoperiod (already used by rotdil) --15r: draworbimgs: simultaneous tiffs (onsets/offsets coincident for now) --hack1: add to currbegin[i] => fails every other --hack2: subtract offset from t at top => fails after first OFF --abandon both (long time waster!) --tried texture font again -> renders large shaded rects instead of glyphs --discovered 3s cumul error @8 min in timing of drawpolword wordlist (th OK) --rewrote currdur/markov drawpolword -> fmod-funct-of-t --rewrote draw{ecc,pol}lett and draw{ecc,pol}img like above --staggered draworbimg onsets now easy, added -[no]staggertiffs parm --add lblo arg to make drawimg() completely parallel to drawstr() --looming images front vs. behind fixgrid barrier --[problem: barrier strength correlated moving edges and contrast reduction] --add dilate-behind vs. contract-front --check if ntpd running, warn may reset reset gettimeofday() + HOWTO stop --fix second font search path for new bin/$arch mapper install --15t: generalized randblock functs: getcondnames(), getlogcondition() --drawbarrierrndblk(), printdefs, stim defs/scripts --template for new C-code random block: drawNEWrndblk() --15u: add second font, font1vs2 stims, -font2to1scale (TODO:prune lib/fonts) --add third font, -font3to1scale, new hkexpt parm font=0/1/2 + respect scale --hkexpt: disp doublequote w/backslash-doublequote ("\", quoted/unquoted OK) --learn how to convert UTF-8 char codes to ASCII strings (wcstombs,mbstowcs) ----------------------------------------------------------------------------- UTF-8 varlength encode: a=bits_byte1, b=bits_opt_byte2, c=bits_opt_part_byte3 ----------------------------------------------------------------------------- 1byte : 0aaaaaaa => ASCII back compat or [2bytes]: 110bbbaa 10aaaaaa => no higher bytes can be ASCII or [3bytes]: 1110bbbb 10bbbbaa 10aaaaaa => end of string still '\0' or [4bytes]: 11110ccc 10ccbbbb 10bbbbaa 10aaaaaa=> 1=128 2=2048 3=65536 4=2097152 ----------------------------------------------------------------------------- /* to add utf 8 to another stim */ char str[200], mapperlocale[200]="en_US.UTF-8"; wchar_t wstr[200]; int decimalcodepoint; static int initlocaleflag=0; if (!initlocaleflag) { changelocale(mapperlocale); initlocaleflag = 1; } wstr[0] = (wchar_t)decimalcodepoint; [... read/save more decimalcodepoint chars] wstr[n] = 0x0000; wbytes = wcstombs(str,wstr,MAXNAMELEN-4); drawstr(str,xoff,yoff,fontsize,lblo,font); ----------------------------------------------------------------------------- --hkexpt accepts, displays utf8 decimal codepoints: utf8d=67,729[...] [opts] --changelocale() funct, -mapperlocale only used if utf8 requested --warn when substituting font=0 for not-loaded font 10/08/15: --add hkexpt-artic to distribution (could just cd into subdir, run generated) --should be able to have allscripts manipulate PULSECNT, USB/F1, size --turn on log (for keypress) w/polword even if no mapper task --15w: randblk: off/wordR/wordL/wordL+aud/wordR+aud (newword,block/pos async) --externally force condition order with -condlist --end of -condlist logs/ends expt -> "Done" --clean close/destroy glxcontext/xwin on exit in xit --setuptcl fixed to pre-append path/ldpath when path/ldpath already there --better help for -condnames (only if subset of stimtype-defined wanted) 10/10/19: --[back after 2 months hacking tksurfer/tkmedit/tkregister] --compile /Developer/Examples/CoreAudio/Services/AudioFileTools/afplay.cpp --put afplay into $MAPPERDIR/$onearch/bin --2.5s ISI rand 1 of 8 pnts on finger, 20 sec/finger, 4 fingers --15x: drawpainmap w/audio cues plus TTL laser pulse for pain mapping --re-use -ipsirange (plus->leftvisfield) to restrict words vs. foreign font --add -pulsedelayfracISI: cue, percent-of-ISI-delay, laser TTL --add randomization, logfile (at TTL pulse offset) to drawpainmap 10/11/14: --release mapper15y.c --add generalized audio cue file dir and filename list reading (not yet used) --add tcl/tk/tix tarballs, mk tcl from csurf: mappersrc.tgz: 11M->17M --add left/right cue to -blockperiod orbletdilim (-rightleftcuedur) --left in commented-out ecc-dep spatial freq draworient in-progress hack --change to single Makefile w/logic (like csurf Makefiles) --paste new onearch into mk (also put new onearch in ~/bin/noarch!) --15z: add periodic auditory cue stim controlled by blockperiod (cues wrap) --put painmap sndfiles into subdir of def sndfiledir --symlink in ~/bin/noarch to $MAPPER_DIR/mk so no csurf mk even w/o . first --N.B.: mapper mk equals csurf mk *and* mk0, leave mapper mk in MAPPER_DIR --move -sndfiledir glob from -getsndfilenames into separate get function 11/02/05: --release mapper16a.c --16a: reversable ON/OFF pain w/shuffled non-overlapping partial finger blks --add -peripheccmask for Z.Li steady state expt --add POLRVSL L/R polar hemifields for dLGN --16b: add PLDIRVSL L/R polletdilim hemifields for dLGN --polar: non-0 chktargprob => 1 chktarg, col avg last lt/dk, size, poltarg1,2 11/05/12: --fix extra colon in {DY}LD_LIBRARY_PATH in MapperEnv.csh, setuptcl --onearch script renamed to getonearch to un-overlap varname --getonearch name used by MapperEnv.csh, now same as csurf getonearch --make Darwin freetype static, no DYLD necessary (mismatch broke new tk) --mapper16c: paste NOTES.txt into mapper.c 11/05/15: --fixed Linux static freetype: -lftgl *before* -lfreetype (Mac OK either way) --verhor1,verhor2: poldilim (nolett!) vert vs. horiz meridians (stimtype==29) --N.B.: set initdoneflag2=1 if draw{pol,ecc,orb}img called last each frame! --reset tiffdir to $MAPPER_DIR/lib/imagesfiles/test if def ./tiffs not found 11/06/22: --stimtype 34: pol+dil+img *without* lett (stop re-init: set initdoneflag2=1) --fix readtiffs to return count, not last index (was skip last img) --draw{pol,ecc}imgs: rand non-repeat change to re-shuffle list (orbimg left) --drawimg: clamp origin images onscreen (glRasterPos2f blanks offscreen orig) --drawimg: clamp right/top of images onscreen (even tho crop OK) for symmetry --16e: char const-ify for clean 10.6 compile 12/01/17: --[5 month gap] --fixation dim(bright) targets/logfile at random intervals (except stereo) --fixation targ prob correct (x2) -- TODO: fix other targ probs and scripts! --temporal freq ramp, w/square wave spatial circ grating, contrast rev --add unused -conddurlist parallel to -condlist (else dur from -blockperiod) --drawtempfreqrampsin(), init calls savepolar(): save coords one checkerboard --parm: -sinfrac to slow passage through high temporal freqs --noclamp: set valid rasterpos + glBitmap(0,0,0,0,xMove,yMove,NULL) -> fails? --tried preinitdoneflag but F2/F1 overhead dominates, deleted --new var ramp{period/freq} to un-overload polfreq 12/05/13: --[2 month gap] --drawrealmotpolimgs(): 1 img of set doesn't follow bgimg wander (cf Galletti) --drawrealmotpolimgs targets: -imtarg , fixed 5frms dur, logfile --parm: -offspercyc (currently just ecc checkerboard stimtypes) --drawpursuepassimgs() -- like pursue/passive but w/transp imgs, intlv'd list --fixed ecc w/OFFs script to not wrap --ecc-dep linear eccwidth (ecc,eccmask) fix too-thk center (TODO:exp scale!!) 12/06/25: --randblock: OFF vs. fullfield-visual vs. random-air-puffs --aflowperiod/flowperiod to distinguish air flows, fixed scripts --glBitmap hack finally works (it's in pix!): bitmaps w/orig off bottom,left --parm:-avoidvm ,-vhemi <0=left,1=right,2=bot,3=top,4=both> (OFFVISAIR) --OFF2AIR: randblk: 1=off vs. 1=airhalf1 vs. 2=airhalf2 --add -gridperinteroc to allow adj -fixgrid mesh density --add drawbarrierrndblk OFF(!), 5->3 conds, log targets, always print cond 12/08/17: --add -sndprog option, macdef: mybin/afplay then /usr/bin/afplay (Linux:empty) --cleanup argvtmp: malloc ARGVTMPSIZE=25 empty sim opt args at beginning --change drawperiodicaudcue/PERIAUD1: start same clockpos both directions --mk aud stims: select txt: TextEdit -> Services -> Add to iTunes as Spoken.. --corrected puffdur for drawoffvisair (was 1 frame because 'last' var in test) --correct RTLT errcheck: only half airtubes used (vs. RNDOFFAIR) --DISTRO%d defines so mk0->Makefile can switch them on and off 12/09/17: --draworbletdilimgaud, re-use funct retrig by initdoneflag3=0 by drawpollett 12/01/15: --getlogcondition "Done" returns -1, use to abort rest of drawfunct after wait --rndblk stereoflow: flowsurf, scramsurf, flowvol, scramvol, off w/dimtargs --stereoflow start OFF, -fixdisp (not used), -fixarr, fixdepth, dim ReadyDone 13/02/20: --accept utf8 hex codepoints (utf8h=062b,... in add'n to decimal codepoints) 13/04/11: --mkdotarrays(): malloc dots (redo no-op unless numdots has changed) --hotkeys o,O for live adjust interocular dist for prism glasses --hotkeys v,V (-vertdisp) for live adjust right eye stim up/down (for prism) --mk0: fix mk0 freetype/tiff .so exist test (now static) -> was blocking make --MapperEnv.csh: comment out empty add local freetype lib code (now static) --setuptcl: fix tcl version: 8.4->8.5 (working just here because legacy 8.4!) --parm: -offsperrun (currently just ecc checkerboard stimtypes) --parm: -runperiod (currently only used for above) --[knossos17d-compiled wish8.5.8 req's libft6ver14 but Tessa's laptop had 13] --mk0: turn off tk xft to drop compile-time freetype sharedlib dependence --mk0: 13h: tcltk->8.5.12, freetype->2.4.11 (req -lbz2) --Makefile: add -lbz2 for newer freetype, update LIB_FT, INC_FT 13/05/02: --realmot: -bgspercyc, -bgcnt to cycle through bg imgs at begin list --realmot: -imspercyc to refresh objects 13/05/23: --add glTranslate to drawfixation arcObj circle (bug: was ignore drawfix x,y) --wanderpol w/hand-centered: 3fix: central, orb handtarg, cent-checkerboard --wanderpol w/hand-centered orb working (don't mv grid, just mv hand targ) --N.B.: currently has periodic avg hand position (compare w/run w/disk off) --draw visual fix + eccen hand-init position for hand-centered --add drawpolworddilimg (like drawpolletdilimg) 13/05/25: --16i: rename vars: wordlist->linelist, wordcnt->wordlinecnt --parsewords(): parse/measure/re-save multi-word-per-line wordlist file --paragraphs[line][word][chars], widthsperline[line][word], wordsperline[line] --drawparafontoffrndblk(): draw 1 word w/textboxes/same-font2/OFF, targs skip to next full textfile line at block boundary autocent horiz w/avg linelength, adj w/maxrad!=1 add gapdur (harder to read! -> def:gap=0.0) new flag to adjust duration by word length add fonttargprob parm, min dur w/mod MINWIDTHFRAC just a define for now do startup scale w/diff GL size, unscale moving fix separate currline ctrs to re-show English as other make options: -minwidthfrac, -xspacefrac new option: -fixdurmodfrac fix wordphase if fixdurwidthmodflag 13/07/09: --wrote getfreqlist() for multi freq --add Mariam's col texttargs (gettargtimelist(), targtimeslist, texttargcol) -- \r + \n's in csh script crash it! => make simple tr wrapper script in bin --clean up openglxwindow to be more like tksurfer.c, rm WaitForNotify --drawmultifreqpolar() working 13/07/25: --Stephen Wilson's VWFA localizer written in fmod/phase style --second pre-event loop halt for explicit start -saveframes (warn it is on!) --add srandom seed parm for controlled initial wordlist shuffle --16j: (14K): add initdoneflag2 so getlogcondition re-inits to cmdline blkord! --add -fixlett task for kids (sam's one-at-a-time letters at fixation) --fixed wrap/shuffle bug in Stephen Wilson stim 13/08/09: --"ps .. | grep" => "ps .. |& grep" to catch "ignore DYLD" error for setuid ps --new stimtype=28: pol + ecc + rotdil + im (N.B.: img not done) --works with continuous movement or trbased --trbased => phase-encoded jumps on new TR --add to: draw{polar,eccen}, {eccen,polar,both}mask, draw{pol,ecc,both}img --drawrotdil0->bothmask() only if stimtype && eccwidth!=0 && polwidth!=0 --N.B.: for ecc+pol, not power of 2 TR's except for freq=2:1 (3:1, etc)! --prepostfix => pre/post fix-only periods, N.B. time restarts after pre --runperiod *doesn't* include prepostfix times: tot = pre + runperiod + post --add global-F1,2 reset predoneflag (pre/post periods are unique) --add "$argv &" to end of all 400 mapper scripts for quick cmdline mods --drawbothimg (alternates wedge/ring), add -trbased to it --add -[no]eccwrap (skipeccwrapflag) => wrap turns into gap --add -noeccwrapnogap (skipeccwrapnogapflag) => start same, hit maxrad at end --add skipeccwrap{nogap}flag code to draw{ecc,both}img, {ecc,both}mask --add -mintiffsize to draw{pol,ecc,both,orb}img --16k: (14.4K) mk pol -trbased like ecc (stepped time [not th], recalc fmod) --slight reorder usage (tedious cp reorder to getopts/printdefs) 13/08/16: --stimtype to play single auditory file --final cleanup skipeccwarp{nogap}flag rotdil mask, override smoothwrap --use /usr/bin/play Linux sndprog (kill sox), drawpara blockperiod -> float --allscripts: first look for gedit, then xedit (no xedit on CentOS!) --MapperEnv.csh: fix add font path like FreeSurferEnv.csh --lib/scripts/onescript: skip comments, better 'which' use, subst $MAPPER_DIR --allscripts: dump errors when directly calling gedit w/macports not on path --option -maskimgs to put imgs and letters behind rotdil masks --[3 month gap] --fix def sndprog pathbug (mac /usr/bin/afplay, linux /usr/bin/play swapped) --onescript: parse continuation lines of additional values for one option 14/01/13: --hack fix for onescript (catch space sometimes appended to replaced "yes") --hack fix for occasional no* arg line treated as continuation line --make x's not +'s for stereo fixation (left vert disp, if'd out) --opt -wanderfix (period:blockperiod count:gridsize, spacing:maxgrid) --stimtype=IMDIL: dilate/contract 4 imgs in each quadrant -- tracers{1,2} --stimtype=IMDIL: scalefrac, avoid repeats, reshuffle, max one target --hack fix for occasional no* arg line treated as continuation line --stimtype=MONBINRIV: RBstereo: off/monL/monR/bin/rivL,rivR --if -trbased is on, also stop img sweeps along ring and/or wedge --redraw fixmesh later for pol/ecc (N.B.: goes over checks!) --stimtype=MONBINRIV: use (redefined!) avgcolbright,colcontrast --allscripts: R-click for edit/interactive run script (w/o tick "edit") --draworb{let}dilimg: asymmetric OFF for HDR (-blockperiod,-trunc2off,-onfrac) --draworbimgs: set initdoneflag2 (done by drawlett) to stop re-init loop --draworbimgs stopped if -trbased (prev stop: draw{ecc,pol,both}img) ================= mapper-{mac,linux}-140131.tgz ====================== --begin conv shell scripts to sh 14/02/01: --mk0: dumps out source file notes to UPDATES.txt --convmappercsh2sh: sm tcl script to convert mapper csh scripts to sh --port getonearch to sh (save getonearch.csh) --port MapperEnv.csh -> MapperEnv.sh --MapperEnv.{sh,csh}: incl tcl setup->avoid sourcing csh/sh setuptcl versions --move mk0 to mk0.csh, port mk0 to sh (can now compile w/o csh) --move loadUSB to bin/noarch/loadUSB.csh, port loadUSB to sh --move run to bin/noarch/run.csh, port run to sh --move AccesUSB/AccesLoader/mk to mk.csh, port mk to sh --update mk0, mk0.csh --onescript: hack fix for occasional no* argline treated as continuation line --move selfuntarANNOT bin/noarch/selfuntar.csh, port to sh --save current lib/scripts to lib/scripts.csh (csh vers stale: 4 Feb 2014) --port all csh scripts to sh w/convmappercsh2sh (OK to run from csh) --hkexpt-{artic,example,polface2bak,polfaces,utils,transparent} def mk sh --mk0: add csh version lib scripts (stale from Feb2014!) to dist tarfile --mk0: don't wait for resp to begin compiling tcl --drawfixation: warn -wanderfix ignored if blockperiod is default(=Inf) --fix broken extra-args line of all sh mapper scripts: $argv & -> $@ & 14/03/11: --stimtype=82=ECCEDGE: ON vs. OFF far periph (twoperiod, min/maxrad) --stimtype=79=MONBINRV2: divergent amblyopic stim --add offavgbright parm (for diff than bgwingray) --MONBINRV2 fix stability: '+' in left vs. 'x' in right, thick white borders --add -twocondperiph: twofreq: ecc + periph ring (numtheta2,numrad2,minrad2) --re-def numtheta2,numrad2: control ring, not wedge (consistent w/ring 2cond) --add -stereobdgap (higher contrast for better fixation stablity) --added divergent fix one stroke of 'x' in each eye => harder! comment out --fix twocondperiph logic: req. twoperiod2, minrad2, set/restore minrad --verhorp1,2 scripts add diff freq periph ring --update allscripts (ct2*, verhorp*) --add -tiffrad for masked tiffs --add -[no]test to visualize pol/ecc/polecc tiff mask --add -stimtype 83/84/85: pol/ecc/polecc mask tiffs --add 100M of XGA landscape tiffs --add scripts: eccmsk1,2 polmsk1,2 poleccmsk1,2 --add post-drawfunction fixmesh flag --add ken burns (maxtiffspeed) to eccpolmsk 14/04/17: --add parm -arrowkeyhits (pos/neg) --new fixtypes=14,15: minrad white circ w/fixrad black center, and reversed --MONBINRV2 special no-"Ready" divergent stereo avgcolbright bg start screen --new stimtype just eccpol (PLEC=86) so fixmesh behind --prscales(): print curr state interactive scale/vertdisp/interocdist adj --prscales(): if !stimrunning, re-wait (does redraw -> shows adjusted parms) --add -startstimscale to init currstimscale and do glScale --run accepts -vertdisp, -interocdist, -startstimscale --allscripts can send -vertdisp, -interocdist, -startstimscale to run --allscripts always defaulted entries: vdisp:0.0 interoc:def --ct2eccpol1,2: twice as many targets --collapse coltype=5 into generalized randcol checks coltype=1 --fixtarg now also affects dichoptic ambylopic stim (still not RG stereo) --add -fixgridmaskflag to mask dichoptic edge of fixgrid (zoom-sensitive) --added clearready() "Done" to divergent stereo stim --Makefile: add #include for getlogcondition isdigit() 14/05/14: --in drawfixgrid(): add corner triangles option (-[no]fixcornertri) --fixlett now on top of other fixation (at blink, does fix dim) --allscripts: space out the output res radio buttons and add title 14/08/12: --begin hkexpt sounds, harmonize opt logic across image/sound/word files --add -sndsoalist: optional SOA's starting from t=0 for soundfiles --fix realmot scripts to include primary polperiod parm --add -sndbgtrack option (applies to any stim) --make -sndfilenames apply to any stim --16km: fix killsnd, fix play one soundfile --HKEXPT read/drawexpt: add snd= option, playnamedaudfile() --16kn: fix possible targ repeat in drawbarrierndblk --make -tiffdir/gettiffiledir() glob like -sndfiledir/getsndfiledir() does --readexpt: -tiffdir/-sndfiledir work w/HKEXPT --if snd=,rgb=/ or snd=,rgb=./, -tiffdir ignored --16ko: update -tiffdir/-sndfiledir/hkexpt help --move wordfiles into subdirs like soundfiles and imagesfile --new -worddir/getwordfiledir() glob like -sndfiledir/getsndfiledir() does --also ignore sndfiledir if sndfile path begins with '.' (was just '/') --rm TIFFDIR inits in default-setting --init/report "test" subdir for tiff/word/snd for default/printdefs --test exist tiff/word/snd dir at reset dir time, if missing revert to "test" --readwords pre-appends worddir to wordfile except if -wordfile is abs/rel --add -worddir (wordfiles subdir) to all -wordfile lib/scripts --add -insttmp3 to include all tiffs/snds in lib (N.B.: my mac only) --get vi: cd $MAPPER_DIR/lib/scripts; grep tiffdir * | awk -F : '{print $1}' --rm abs paths from all -tiffdir scripts --change //hkexpt-polfaces/tiff => polfaces --test all scripts: finish bash port of test-lines, fix a few typos --N.B.: new dir/file breaks old scripts w/new lib, new lib w/old mapper --16kp: tiff/work/snd dir/file name processing now all consistent --mk0: one2twelve,polfaces->test, dist {image,sound,word}files=test+NOTES.txt --update README.txt --make getfullfontfilename like {image/sound/word}files: abs/rel, then glob --clean out ../fonts/zz.ttf in defaults -> bare fontfile --cd lib/scripts; vi `grep fontfile * | grep -v '#' | awk -F : '{print $1}'` --16kq: clean out abs/relative -fontfiles from scripts to allow glob --mapper-{mac,linux}-140827.tgz --add dist/precompiled/lib/Linux-{i386,x86_64}/libjpeg.so.62 --MapperEnv.{csh,sh}: add linux LD_LIBARY_PATH to libjpeg for run on newer --ignore neg polfreq in drawperiodicaudcue, fix file order bodymap2 --allscripts: print date/time list of scripts run this session on kill window --16kr: add drawblendtransparency flat (drawimg, drawexpt) --'stimtype' 99: write centered Gaussian mask tiff --cp drawimg glBitmap hack to drawexpt for offscreen tiff origin (was blank!) --add -fwhmheight to make ellipsoidal transparent mask, put in tiffname --update tcl/tk 8.5.12 -> 8.5.17 --rename: drawpolecctiffmask() -> draweccpoltiffmask() like others --new funct: isprepostper(t), now just in: draweccpol{{},dilimg,tiffmask} --mv isprepostper to eventloop all stims: non-0 prepostfix, post req's runper --block -prepostfix!=0.0 with POLFREQ or offsperrun!=0 (runfreq overloaded) --run: add unnamed SXGA++ => 1440x1080 (4x3 w/HDMI height) --allscripts: pop-up panel for R-click on resolution radiobutton --fix RNDOFFAIR parm check to allow correct number of pulses (2x as many) --fix RNDOFFAIR to work correctly with an odd number of airtubes/polpos --block odd num airtubes RTLTAIR --[hiatus: early summer 2015] 15/08/14: --16kw: begin report correct, final splash, presaccade calib, loadUSB, self --add lib/imagefiles/splash/brainlift.tiff to dist --add opt: -reportpercent : turn on percent corr report + final splash --add opt: -maxcorrectRT --add lblo=3=LOWER_CENTER grab point for splash tiff (hkexpt/text, too) --at "Done", report precent correct anykey within maxcorrectRT of FixEvent --rename waitforF1key() -> waitforF1orF2key(), reset to "Ready" after --log begin/end of pre/period/post periods, log user feedback ==================== mapper-{mac,linux}-150815.tgz ========================= --add opt: -fixfontsize (was using possibly overlapping -avgfontsize) --add arg to opt: -reportpercent --wire -exptfontsize into control final report fontsize --add opt: -presaccadedur => add init cent/UR/UL/cent saccade any stim --presaccade dist (d=0.7) hard-coded for now --block task/fixmesh/centralfix on presaccade --debug F2 re-arm, stale t (not reset) pass to drawfixation -> extra FixEvent --allscripts: user-defined omits hkexpt, allow label/script starting with CAP --fixtarg (dim) errs now reported like fixlett --mappersrc: rearrange AccesUSB source tree, add $MAPPER_DIR/Applications --mk0{.csh}: fix for new source tree, inst adds setupUSB.app --add 64-bit AccesLoader to setupUSB.app, fix missing "!" in setupUSB shebang --fix stray 'set' in bash bin/noarch/loadUSB --make loadUSB.app use bash loadUSB, delete setupUSB.app, harmonize buc02 --[hiatus: early fall 2015] --fix bad path in mk0 acces: cd $srcdir/AccesUSB/Mac/AccesLoader --mk0{.csh} self: fix bad paths, better awk --fix selfuntar{.csh} bugs: bad paths, better awk --fix loadUSB{.csh} w/explicit AccesLoader arg --selfupdate{.csh} rm's empty script from mmap src > src, reverts to default --mk0{.csh}: intercalate contained scriptlist line between script, tarfile --selfuntar{.csh}: help now prints scriptlist from intercalated line 15/12/10: --begin opt trigger stim w/USB keyboard "5" --add -fivekeytriggerflag, zero/save/re-use pulsecnt --change -imtarg f={-1,1}> to isoluminant R/G tweak (rand sign) --run{.csh}: add -fivekeytrigger option --allscripts: add "wait 5key" (passed to run) --onescript: now works if script on path but not in pwd ==================== mapper-{mac,linux}-151211.tgz ========================= --16ku: add -imtargfrms --allscripts: entry for stray key before start, anywhere focus there 16/03/19: --REALMOT: optional 2nd inner ring scaled obj's: tworingflag => -[no]tworing --scripts/allscripts: realmot{1,2}in --MapperEnv.{c}sh: define MAPPER_LIBRARY_PATH --allscripts: use $MAPPER_LIBRARY_PATH so X11 tk works on MacOSX 10.11 --non1.0 glPixelTransferf -> img trans and/or glDrawPixels crash MacOSX 10.11 --N.B.: glPixelTransferf was still working on MacOSX 10.9 --mk0{.csh}: mk0 dist3 -> include all imagefiles,soundfiles --mk0{.csh}: insttmp: rm make link 64bit (32bit compile there, mangles) --mk0{.csh}: harmonize dist/inst cp code --convert drawrealmot glPixelTransferf -> glMatrixMode(GL_COLOR)+glScalef --glClear bgwindow to black on MacOSX 10.11 leaves it white --openglxwindow: draw black bgwindow rectangle in X instead of OpenGL --allscripts: MacOSX 10.11 appnap hack working for xterm and Terminal, args --printeventtype debug (omit Mac-specific GenericEvent) --onescript (libpath), allscripts win a few pix down (below Mac automenubar) --if MAPPER_DIR undefined, assume pwd --Mac allscripts checks MAPPER_LIBRARY_PATH def ==================== mapper-{mac,linux}-160325.tgz ========================= --16kx: drawpolimg now does simulcnt>1 and uses staggertiffsflag --exptransobj (currently only drawpolimg, to retain old defs -- chkON/objOFF) --printeventtype => tkmedit:printXevent (count, Mac-specific Generic) 16/05/02: --add -exptend to truncate any expt (use -runperiod instead if -prepostper) --block Mac allscripts from running unless it is in an xterm 16/07/02: --begin add stimnum helpfiles to: lib/help/s$num --allscripts: R-click help, mv interactive/edit parms to middle-click --mk0{.csh} include R-click help files dist/inst --16ky: back in SD 16/12/01: --add -apostrophetriggerflag (TODO: catch all keys, generalize this hack) 17/03/23: --mk0{.csh}: fix distro so only have to change DISTRO in Makefile --all lib/scripts (made fixscriptline tcl script to do this): change: allowed=`sudo -l -p "(ignore password request)" &` to: allowed=`sudo -l -n &` => kill annoying passwd requests with -n (non-interactive) --renicemapper: fix Bourne shell also re-pipe stderr: "|&" to "2>&1 |" --renicemapper: fix Bourne shell also re-direct stderr: ">&" to "> file 2>&1" ==================== mapper-{mac,linux}-170404.tgz ========================= 17/04/05: --mk0{.csh}: incl helpfiles in inst (now only four) --lib/scripts: if Mac inst, cp renicemapperON renicemapper --warn (vs. exit) on xdpyinfo display larger than 4000x3000 --allscripts: add help-by-stimtype-num entry/button lower right 17/07/24: --new general distro 14 for Kerrin: pol/ecc, +let, +dil, rotdil, lcms --selfuntar: bashism ">& /dev/null" to sh: "> /dev/null 2>&1" for Ubuntu16.04 --default Ubuntu is missing libjpeg62, now included in SelfUnpack .zip file 17/10/26: --stimtype=MULTIECC=87: multiple rings --stimtype=MULTIPOL=88: multiple wedges --stimtype=MULTECCLT=97: multiple rings + lett --stimtype=MULTPOLLT=98: multiple wedges + lett --add thoff to polletter(double t, float thoff), parallel to drawpolar --drawpolars() uses thoff to not bork static drawpolar() flickerfreq --add toff arg to draweccen() to un-bork flickerfreq with multiple rings --add toff arg to draweccletter() to un-bork static text stream times w/mult --each new thoff instance of drawpolar self-colorwraps --stimtype=MULPLLTDL=118: multiple wedges + lett + flow --stimtype=MULECLTDL=117: multiple rings + lett + flow --add logfile to 97,98,117,118 --fix expanding masks: stimtype=MULECLTDL=117 --12 new scripts: multi{pol,ecc}{let}{dil}{1,2} 18/03/03: --MapperEnv.{c}sh: strip colon from single-entry {DY}LD_LIBRARY_PATH --allscripts: better cmdline help (-h,-help) --missing logfile writes log instead to cwd if writable --missing DIO-USB-32 (stimtype=0 only) defaults to -fivekeytrigger --allscripts: butt config file line1 must begin: "# allscripts button config" --toggletriggerflag in waitforusbtrigbits() to allow up/down trigger --toggletriggerflag also in waitforusbtrigbytes() --allscripts: add "toggletrig" (update runstim proc args) --run: add -toggletrigger to sh/csh --allscripts: add "apostr" (update runstim proc args) --run: add -apostrophetrigger (sh/csh versions) --allscripts: 4 trigger options now mutually exclusive --lib/help/{wait,five,apos,dio,tog,skip,done} --allscripts: add upper right "help" and "use" buttons --lib/help/{help,use}; mk0 refreshes "use" helpfile --allscripts: add toggle use TextEdit 18/07/08: --rm some unnecessary static's from drawvechorver() (some still required) --parm: -[no]doubleframerate framework works: now only knows drawvechorver()! --N.B.: drawpolarstereodiv() already useable for side-by-side 120Hz stereo --drawpolarstereodiv() respects packstereoupdownflag --drawsfixdots() respects packstereoupdownflag --allscripts: add button for vi-in-xterm 18/11/13: --add stimtype=TESTDIO32=113: go through all 32 bits slowly --print error, but don't exit, on -loadaccesdev fail (previously silent) --report requested bit array states, report initial output bit values --allscripts: update defaults: use fivekey, no toggle trigger, skip 8 --HOWTO zero unused valve ports: more -addport2set than used 18/11/13: --cleanup init *tiffmask() 19/02/27: --stimtype=114: periodic centered vis images, neg polperiod => start w/last --add orbrad/orbperiod to drawsmoothflow, fix fixation [started to dup periodic auditory, remembered existing, removed :-} ] --add gap=puffdur to drawtestDIO32() --allscripts: add "scale:" entry (run already had -startstimscale opt) 19/04/28: --new helpfiles: Fn-F1, vdisp, interoc, scale, s113, s12 --new helpfiles: s69, s2, s3, s4, s10, s30, s39, s74, s83, s84, s85 --mapper.c: clamp startstimscale 0.1-10 (white screen above 14.6x?!) --allscripts: clamp startstimscale 0.1-10 --new helpfiles: s5, s6, s7, s8, s9, s100 --allscripts: fix grep stimtype to be more specific --mk0{.csh} help: cat all help to one file like csurf, onearch does this --fix bad wordfile for default run: mapper -s 16,63 --new helpfiles: s11, s13, s14, s115, s16, s63, s17, s18, s19, s20, s21 --R-click "help" for all help in one window --new helpfiles: s22, s23, s24, s25, s26, s27, s28, s29, s31, s32, s33 --new helpfiles: std->expanded, s34, s35, s36, s37, s38, s40 --fix isprepostper() crasher for Leipzig: wasn't checking if logfile open --alt first/required opt: -helpstim/-h to print help for stimtype (if there) --convert drawvec3canal() to use getlogcondition() --standalone helpstim/helpstim.tcl to make popup help 19/06/01: --drawglass respects -scaldotsflag and -scalefrac --fix smoothflowtype CW spirals (smoothtype=5 was dup of 4) 19/08/21: --add drawoff3airrndblk() for block design air/leg map (show airtube nums) --made new scripts: blkair1-4, lib/scripts/mkexpts/blkair/mkexpts --stimtype=120=ROTOFFAIR: hack ROTRNDAIR, tried rand rev dir, then rm'd --new helpfiles: s43, s44, s45, s46, s47, s48, s49, s50, s51, s52 --new helpfiles: s53, s54, s55, s56, s57, s58, s59, s60, s61, s62, s64, nousb --allscripts: add "nousb" tick to run USB-output-requiring stim anyway --allscripts: add now-req'd first config line to allscripts -printconfig outp --wrap wordlist to fix crash on overflow stimtype=65,66,67 --new helpfiles: s65, s66, s67, s68, s70, s71, s72 --stimtype=73=TFRAMPSIN: print sec-by-sec flicker periods for 1st rampcycle --add 0.005 to puffdur before testing count to avoid nonworking boundary cond --allow all rndblk to run, make warning louder --uniform warning across all getlogcondition users if no opt -> intern-only! --update tcl/tk 8.5.17 -> 8.5.18 (so same as csurf, so no crash!) --mkcsurf1Ds: rename, add full check, force overwrite, mk0 incl'd bin/noarch --new parm: randlineflag for phase-encoded lines (one direction for now!) --helpstim.tcl: destroy . to fix wish'es that were left running in bg 20/01/02: --version 16kz: --add variable length paragraphs by parsing wordfile for " " --parsewords blocks non-ascii char crasher, reports (non-comment) line number --wire -angleoff, -pol4toffset into quad orient offset, defaults: 90/45 --replace failing line in all lib/scripts (faulty csh->sh translation!): if [ `echo $allowed | grep -c renicemapper` ]; then => if [ `echo $allowed | grep -c renicemapper` -ge 1 ]; then --N.B.: `sudo -l -n &` is 10.6.8 err!! (10.12=OK) so never renices on 10.6.8! 10.6.8: sudo -l -n => err (can't have both opts!) => so never runs renice 10.12: sudo -l -n => works if in sudoers, else err (b/c passwd req'd!) --just use -l with perl timeout to kill passwd request hangs if not sudoers allowed=`perl -e 'alarm shift @ARGV; exec @ARGV' 1 sudo -l` --but can't kill on CentOS5.9! (doalarm.c can't kill there either) --all scripts back to sudo -l -n (only broken 10.6.8) no sudoers: sudo -l -n gives err, script skips run renicemapper yes sudoers: sudo -l -n works (except on Mac 10.6.8!) --new fixscriptsrenice to toggle between working 10.6.8 sudo -l and default 20/04/21: --add -tiffoutdir (e.g., self-unpack), default still pwd --fix SelfUnpackMappingMac distro w/new -tiffoutdir option, README --mk0: add FreeSurfer.zsh link to insttmp --MapperEnv.{sh,csh}: copy/use 75dpi-helvetica X11 fonts (so Linux=Mac) --get rid of annoying harmless system_profiler error: ... -detailLevel mini |grep ... => ... -detailLevel mini 2>/dev/null |grep ... 21/02/18: --add def -condlist 1 2 to -s 74 so paragraphs stim works w/no add'l args --recognize markup in either fixed or variable length blocks --better comments on drawparafontoffrndblk() tricks --update lib/help/s74 21/03/24: --stimtype 74 also accepts ,

for , --catch off-edge access wordsperblocks[] when wordfile blocks > condlistcnt --add shuffwordsflag (-[no]shuffwords) to stim=75 for unshuff'd RSVP sentences --add phasepara1, phasesent1, phasesent1hdr to allscripts --fix s75 help 21/10/17: --just realized drawpolword() works w/wide chars :-} (since 2010 b/c freetype) --TODO: stims *not* yet UTFworking: 74:paras (b/c word parsing), {ecc/pol}let 22/03/07: --Linux mapper broken (just black) since CentOS 7 b/c of broken XRaiseWindow! --can use _NET_WM_STATE_FULLSCREEN to remove decorations from bgwindow --add tksurfer raisewin() using _NET_ACTIVE_WINDOW (didn't work!) --version 16ma: --add -[no]captkeytrigger, floss/generalize key trigger code --put centerwin() back into openglxwindow --new fullscreen openglxwindow: start black, glxwindow on top, avoid raise! --bin/noarch/getonearch: recognize/classify M1 Mac's! (sheesh) --new Nvidia default __GL_SYNC_TO_VBLANK=1, but need 0 to avoid jumpy CentOS7! --bin/noarch/{run,onescript,selfuntar}: don't set to allow shell override ==================== mapper-{mac,linux}-220311.tgz ========================= 22/03/16: --Ubuntu also broken because of no jpeg62 (not even a black window) --add jpeg62 lib to Linux mmap, selfuntar sets LD_LIBRARY_PATH to use 22/05/11: --begin libusb/libaiousb flail --fxloadaccesdevflag, init err check prevents simultaneous loadaccesdevflag --if above, setupACCESdevs calls fxloadACCESdev => system() fxload --compile Mac 10.6.8 cmake with newer C11 compiler in MacPorts --bin/noarch/run,loadUSB can use fxload vs. AccesLoader (now set to fxload) --mk0: add mk0 fxload, add to mk0 onearch --compile static libusb-1.0.a (600k) (see summary below) --compile static libaiousb.a on 10.6.8 (400K) (see summary below) --fix ACC_LIBUSB logic --mk0 (13z): cpusblibs cp /usr/local libusb/libaiousb libs to dist/precompiled --csh version of mk0, mk0.csh13x, now stale, moved to old --mapper.c: make onearch var global for fxload's --ACC_LIBUSB ifdefs for pointer->var for DIO_Write{1,8} --ACC_LIBUSB ifdefs for (unsigned char *) cast for for DIO_Read1 bool 22/05/31: ----------------------------------------------------------------------------- NOTES: Mac-only AIOUSB funct prototypes: accesdevcnt = queryDevices(); dioConfig(devnum, tristateflag, outmask, pbytes); /*cfgs 4 ports each dev*/ DIO_Read1(devnum, bitnum, &boolbit); DIO_Read8(devnum, bytenum, &pbyte); DIO_Write1(devnum, bitnum, &databit); DIO_Write8(devnum, bytenum, &pbyte); Mac/Linux AIOUSB functs: unsigned long result = AIOUSB_Init(); unsigned long deviceMask = GetDevices(); /**< @ref GetDevices */ AIOUSB_ListDevices(); AIORESULT DIO_Configure(unsigned long DeviceIndex, unsigned char bTristate, void *pOutMask, void *pData) AIORESULT DIO_Read1(unsigned long DeviceIndex, unsigned long BitIndex, unsigned char *bit) AIORESULT DIO_Read8(unsigned long DeviceIndex, unsigned long ByteIndex, unsigned char *pdat) AIORESULT DIO_Write1(unsigned long DeviceIndex, unsigned long BitIndex, unsigned char bData) AIORESULT DIO_Write8(unsigned long DeviceIndex, unsigned long ByteIndex, unsigned char Data) AIOUSB_Exit(); ----------------------------------------------------------------------------- --Mac 10.6.8 => gcc 4.2.1 --$MAPPER_DIR/AccesUSB/Mac3-2022/NOTES.txt --lib{aio}usb requires C11 support --compile gcc-4.9.4 (min w/req'd _Thread_local support) --compile fxload => works on MacOS 10.15 --compile cmake (MacPorts) --compile libusb, libaiousb (libusb req's swig, pcre) --couldn't overcome 10.6.8 ld failure to link libaiousb.a functions (days) --decided not to try to fish out min functs from libaiousb code --CentOS 5.9 => gcc 4.2.1 --Linux: libusb also needs C11 so would have to compile at least gcc-4.9.4 --might work for fxload, but useless without functions --maybe same link prob for libaiousb functs --Linux needs rewrite to detect init'd/uninit'd USB devices --ABANDON libusb/libaiousb for Mac 10.6.8, CentOS 5.9 --Mac 10.6.8: keep original, working Mac-only USB support --Linux CentOS 5.9: abandon USB support --BIG TODO: set up newer compile machines: --Mac 10.6.8 -> 10.15.7 --Linux CentOS 5.9 -> CentOS8 (Rocky8/AlmaLinux8: CentOS7 still gcc 4.8.5) ----------------------------------------------------------------------------- --fix stray CSURF_DIR for fonts in MapperEnv.csh 22/07/02: --readtiffs() now sorts using scandir() (prev: accidental sort w/readdir()) IN PROGRESS/TODO: TODO: add Hilly/Kutas to standard selfunpack (need to unpack example *.scn) IN PROG: segfault on Esc from -s 74 w/wordsperblock=0 (non-zero OK) --not due to calls in xit() or logfile write/close, even exit(0) crashes !! --gets into xit before crash (must be X problem, like write offscreen crash) --intermittent! fixed? IN PROG: reading same para, start in different position each time --if implemented as wrapped para's, times would subtly differ --would need to calc one set of fixation durs and re-use # any way to get vlc to write to a glx window? cvlc zz.mp4 -vout glx (?) https://wiki.videolan.org/Video_Output/ https://wiki.videolan.org/Hacker_Guide/Video_Output/ TODO: stereo version of eccpol stimuli for GoogleDaydream varying disparity TODO: mk framework HDMI stereo stim w/small OpenGL window for GoogleDaydream TODO: go thru to make all stimtypes work w/no opts TODO: statically compile libjpeg to avoid Ubuntu mess? TODO: finish lib/help helpfiles TODO: run