FSTAK F%AZq@OzP px  'HD:.Developing Stacks:Home Browser:Home^ G&G&^ DDh^RF^zG&G&2ft^DDh^Eh.""""""""̪3̪3 @"""""D"DĀ hC0&0 "U""U"U"UU"Uwwww݀UUUUH0 D9D"AA"A>"t"%2d$LA*@ @ "t"G"q]APP Browser Home Stack Version 1.0 Copyright 1989,1990 by Apple Computer, Inc. All Rights Reserved THE MESSAGE HANDLERS USED IN THIS SCRIPT: startUp,getHomeInfo,resume,help,hyperTalk,nav c,b,s,mw,vw,se,ss,xy,disallowInterruption,allowInterruption setUserLevelFive,restoreUserLevel,searchScript,checkForMissingFonts THE FUNCTION HANDLERS USED IN THIS SCRIPT: checkHCFont XCMD'S USED BY THIS SCRIPT: FontExists XFCN Form: FontExists(,) It returns true if the font/point size is installed or false if not. function stripPath path -- given the path, returns the short stack name get length(path) repeat with i = it down to 1 if char i of path = ":" then return char (i+1) to it of path end repeat end stripPath on statusVCR p1,p2 if p1 = "InSeg" then beep 1 if p1 = "OutSeg" then beep if p1 = "OutSeg" then vcrCMD mpause if p1 is not qDone then put p1 into fld "status" return "done" end statusVCR on openstack start using stack "OnTrack Setup" initOnTrack start using stack "ResCopy 2.0" end openstack on closestack stop using stack "OnTrack Setup" end closestack ----- Startup/Resume Scripts: --------------------------------------------- on startUp -- Requires handler: getHomeInfo -- gets and sets the user's preferences getHomeInfo checkForMissingFonts pass startUp -- so others can use it end startUp on getHomeInfo -- Needs: User preferences card of the home stack -- configures HyperCard to the user specified preferences global Stacks,Applications,Documents,UserName if short name of this stack is not "Home" then -- lock screen set lockRecent to true set lockMessages to true push this card -- remember where we are go home -- will take us to the home stack in case we're not there put false into stackIsHome else put true into stackIsHome put (cd fld "User Name" of cd "User Preferences") into UserName set the userLevel to cd fld "User Level" of cd "User Preferences" -- hidden field set the powerKeys to hilite of cd btn id 3 of cd "User Preferences" -- Power Keys set the textArrows to hilite of cd btn id 2 of cd "User Preferences" -- Arrow keys in text set the blindTyping to hilite of cd btn id 1 of cd "User Preferences" -- Blind Typing -- load the search path globals put bg fld "Paths" of cd "Stacks" into Stacks put bg fld "Paths" of cd "Applications" into Applications put bg fld "Paths" of cd "Documents" into Documents if not stackIsHome then pop card -- return to where we were set lockRecent to false -- clean up for exit set lockMessages to false unlock screen end if end getHomeInfo on resume -- Requires handler: getHomeInfo -- gets and sets user preferences upon returning getHomeInfo pass resume -- so others can use it end resume ----- Help Scripts -------------------------------------------- on help theTopic -- Note: typing "help " into msg box will locate -- the in "HyperCard Help" put "HyperCard Help" into theStack if ":" & theStack & return is in the stacks then if the longWindowTitles then show window line (the number of lines of char 1 to offset(":" & theStack & return, the stacks) of the stacks) of the stacks else show window theStack else go to stack theStack in a new window -- try in a new window if the result = "Cancel" then exit to hyperCard else if the result empty then go to stack theStack end if if the result is empty then findInTitle theTopic -- in the help stack end help on hyperTalk theTopic -- Note: typing "hyperTalk " into msg box will locate -- the in "HyperTalk Reference" put "HyperTalk Reference" into theStack if ":" & theStack & return is in the stacks then if the longWindowTitles then show window line (the number of lines of char 1 to offset(":" & theStack & return, the stacks) of the stacks) of the stacks else show window theStack else go to stack theStack in a new window -- try in a new window if the result = "Cancel" then exit to hyperCard else if the result empty then go to stack theStack end if if the result is empty then findInTitle theTopic -- in the help stack end hyperTalk ----- Menu Scripts: --------------------------------------------- on createTheMenus resuming -- Requires function handlers: homeMenuItems,homeMenuMsgs -- creates the "Home" menu - called from the bkgnds of this stack if resuming is "true" and "Home" is in the menus then delete menu "Home" -- not our home menu if "Home" is in the menus then exit createTheMenus -- show menuBar -- needed by the "Home" menu create menu "Home" -- put homeMenuItems() into menu "Home" with menuMsgs homeMenuMsgs() -- end createTheMenus function homeMenuItems -- return "New Link to Stack...,New Link to Application...," & "New Link to Document...,-,Rename This Card...,Reorder Cards...," & "-,Home Cards,Preferences,Search Paths" end homeMenuItems function homeMenuMsgs return "NewLink stack,NewLink application,NewLink document,empty," & "RenameCard,ReorderCards,empty,goHomeCards,go card" && quote & "User Preferences" & quote & ",go card" && quote & "Stacks" & quote end homeMenuMsgs on goHomeCards global WhichHomeCard if WhichHomeCard is empty then put (short name of first card) into WhichHomeCard go card WhichHomeCard -- couldn't find requested card if the result is not empty then go first card of bg "Home Cards" end goHomeCards ----- Utility Scripts -------------------------------------------- on nav -- Requires XCMD: palette "Navigator" palette "Navigator" -- type "nav" into message box end nav on c -- Requires handlers: setUserLevelFive,restoreUserLevel put the tool into saveTool choose browse tool setUserLevelFive -- so the menu item will be there doMenu "Card Info..." -- type "c" into message box restoreUserLevel choose saveTool end c on b -- Requires handlers: setUserLevelFive,restoreUserLevel put the tool into saveTool choose browse tool setUserLevelFive -- so the menu item will be there doMenu "Bkgnd Info..." -- type "b" into message box restoreUserLevel choose saveTool end b on s -- Requires handlers: setUserLevelFive,restoreUserLevel put the tool into saveTool choose browse tool setUserLevelFive -- so the menu item will be there doMenu "Stack Info..." -- type "s" into message box restoreUserLevel choose saveTool end s on mw -- Requires XWindow: Message Watcher show window "Message Watcher" -- type "mw" into message box end mw on vw -- Requires XWindow: Variable Watcher show window "Variable Watcher" -- type "vw" into message box end vw on se -- Requires XWindow: Script Editor ask "Set script editor font type to:" with "Monaco" -- default value if the result is "Cancel" or it is empty then exit se set scriptTextFont to it ask "Set script editor font size to:" with "9" -- default value if the result is "Cancel" or it is empty then exit se set scriptTextSize to it end se on ss pattern,stackName -- Requires handler: searchScript searchScript pattern,stackName -- type "ss" into message box end ss on xy -- type "xy" into message box to obtain mouse coordinates set cursor to cross repeat until the mouseClick put the mouseLoc && " horz:" & the mouseH && " vert:" & the mouseV end repeat end xy on disallowInterruption -- so can't stop scripts while running set cantAbort of this stack to true end disallowInterruption on allowInterruption -- so can stop scripts while running set cantAbort of this stack to false end allowInterruption on setUserLevelFive -- some things need this userLevel global SvLvl put the userLevel into SvLvl set the userLevel to 5 end setUserLevelFive on restoreUserLevel -- use after setUserLevelFive global SvLvl if SvLvl is a number then set the userLevel to SvLvl end restoreUserLevel on searchScript pattern,stackName -- Requires handlers: setUserLevelFive,restoreUserLevel -- search ALL scripts of a stack for a 'pattern' of characters global ScriptFindString -- HyperTalk global variable set lockRecent to true setUserLevelFive -- saves current level and sets level 5 push card -- remember where we are if pattern is empty then -- get search string from the user ask "Search for what string?" with ScriptFindString -- if (it is empty) or (the result is "Cancel") then exit searchScript put it into pattern -- otherwise use it as the search pattern end if -- put in HyperTalk global so just use CMD-F in editor for easy find put pattern into ScriptFindString set lockMessages to true -- avoid open messages if stackName is not empty then go to stack stackName -- Note: if stackName is empty then we search the current stack set cursor to busy -- search the stack script of the stack if the script of this stack contains pattern then edit script of this stack -- search the background scripts and objects of the stack repeat with curBkgnd = 1 to the number of bkgnds set cursor to busy go to card 1 of bkgnd curBkgnd if the script of this bkgnd contains pattern then edit script of bkgnd curBkgnd repeat with curBgBtn = 1 to the number of bkgnd buttons set cursor to busy if the script of bkgnd button curBgBtn contains pattern then edit script of bkgnd button curBgBtn end repeat repeat with curBgField = 1 to the number of bkgnd fields set cursor to busy if the script of bkgnd field curBgField contains pattern then edit script of bkgnd field curBgField end repeat end repeat -- search the card scripts and objects of the stack repeat with curCard = 1 to the number of cards set cursor to busy go card curCard if the script of this card contains pattern then edit script of this card repeat with curCdBtn = 1 to the number of card buttons set cursor to busy if the script of card button curCdBtn contains pattern then edit script of card button curCdBtn end repeat repeat with curCdFld = 1 to the number of card fields set cursor to busy if the script of card field curCdFld contains pattern then edit script of card field curCdFld end repeat end repeat pop card -- return to where we were set lockMessages to false set lockRecent to false restoreUserLevel -- set userLevel back to whatever it was answer "Search script done!" -- end searchScript ----- Font Adjustment Scripts: ---------------------------------- function checkHCFont theFont,pointSizes -- Requires XFCN: FontExists -- returns a list of font sizes needed but not in the system put empty into missing -- steps through each point size passed in repeat with count = 1 to the number of items in pointSizes put item count of pointSizes into theCurrentPtSize if not FontExists(theFont,theCurrentPtSize) -- if can't find it then put theCurrentPtSize into last item of missing end repeat if missing is not empty then put theFont & space before missing put return after missing end if return missing end checkHCFont on checkForMissingFonts -- Requires handler: checkHCFont -- check to see if the fonts needed for the stacks are -- installed in the system. Inform the user if they're not. get checkHCFont("Courier","10,12") & checkHCFont("Geneva","10,14") & checkHCFont("Palatino","10,12,14,18,24") & checkHCFont("Helvetica","18,24") -- these are fonts needed by this stack if it is empty then exit checkForMissingFonts else put it into missingFonts beep 1 -- this dialog informs the user which fonts are missing answer "These font(s) are missing from your system:" & return & return & missingFonts & return & "For text to display correctly in the stacks, make sure you have" && "installed the fonts included with HyperCard." -- end checkForMissingFonts on doStacksMenu set the cursor to watch if there is no menu "Stacks" then create menu "Stacks" -- else exit to hyperCard put empty into theMenu put empty into theMsgs put the stacks into theStacks put number of lines in theStacks into theLines repeat with count = 1 to theLines get stripPath(line count of theStacks) put it & return after theMenu put "go stack" && quote & it & quote & return after theMsgs end repeat put "-" & return & "Dismiss This Menu" after theMenu -- put "-" & return & "delete menu" && quote & "Stacks" & quote after theMsgs put theMenu into menu "Stacks" with menumsgs theMsgs -- end doStacksMenu function pointInRect p, r put false into inR if item 1 of p >= item 1 of r then if item 1 of p <= item 3 of r then if item 2 of p >= item 2 of r then if item 2 of p <= item 4 of r then put true into inR end if end if end if return inR end pointInRect on TVOn global ThisBoard,TVStatus mtvSetUp put the rect of card button "SmallScreen" into scrap put item 1 of scrap into rectLeft put item 2 of scrap into rectTop put item 3 of scrap into rectRight put item 4 of scrap into rectBottom mtvOpen "ThisBoard",rectLeft,rectTop,rectRight,rectBottom,FALSE,"2","Egad",TRUE,TRUE mtvPower TRUE mtvHue 50 mtvSaturation 50 mtvDisplay DVCMicroColor mtvPicture TRUE mtvTakeEffect put "TRUE" into TVStatus end TVOn on TVOff mtvCleanUp put "FALSE" into TVStatus end TVOff on mtvSetUp put microTV (0) into Result end mtvSetUp on mtvCleanUp put microTV (-1) into Result end mtvCleanUp on mtvOpen put microTV (1,param(1),param(2),param(3),param(4),param(5),param(6),param(7),param(8),param(9),param(10)) into Result end mtvOpen on mtvClose put microTV (2,param(1)) into Result end mtvClose on mtvPower put microTV (3,param(1)) into Result end mtvPower on mtvSetDisplayRect put microTV (4,param(1),param(2),param(3),param(4),param(5),param(6)) into Result end mtvSetDisplayRect on mtvChannel put microTV (5,param(1),param(2)) into Result end mtvChannel on mtvVolume put microTV (6,param(1)) into Result end mtvVolume on mtvNVolume put microTV (7,param(1)) into Result end mtvNVolume on mtvUseRF put microTV (8,param(1)) into Result end mtvUseRF on mtvSetFrequency put microTV (9,param(1),param(2)) into Result end mtvSetFrequency on mtvGrabFrame put microTV (10) into Result end mtvGrabFrame on mtvGrab24Frame put microTV (11) into Result end mtvGrab24Frame on mtvSetBoard put microTV (12,param(1),param(2)) into Result end mtvSetBoard on mtvBrightness put microTV (13,param(1)) into Result end mtvBrightness on mtvContrast put microTV (14,param(1)) into Result end mtvContrast on mtvSaturation put microTV (15,param(1)) into Result end mtvSaturation on mtvHue put microTV (16,param(1)) into Result end mtvHue on mtvSharpness put microTV (17,param(1)) into Result end mtvSharpness on mtvDisplay put microTV (18,param(1)) into Result end mtvDisplay on mtvChannelTable put microTV (19,param(1),param(2)) into Result end mtvChannelTable on mtvTakeEffect put microTV (20) into Result end mtvTakeEffect on mtvGetUnitCatalog global Result put microTV (21,param(1)) into Result end mtvGetUnitCatalog on mtvColorSignalDetect global Result put microTV (22) into Result end mtvColorSignalDetect on mtvDoubleBuffer put microTV (23,param(1)) into Result end mtvDoubleBuffer on mtvGetBuffers global Result put microTV (24) into Result end mtvGetBuffers on mtvLockBuffers put microTV (25,param(1),param(2)) into Result end mtvLockBuffers on mtvInstallBuffers put microTV (26,param(1),param(2),param(3)) into Result end mtvInstallBuffers on mtvCompareLevel put microTV (27,param(1)) into Result end mtvCompareLevel on mtvTestSelect put microTV (28,param(1)) into Result end mtvTestSelect on mtvTestLevel global Result put microTV (29) into Result end mtvTestLevel on mtvGetInfo global Result put microTV (30,param(1)) into Result end mtvGetInfo on mtvGetInfo2 global Result put microTV (31,param(1)) into Result end mtvGetInfo2 on mtvSelectSource put microTV (32,param(1),param(2)) into Result end mtvSelectSource on mtvGetWindowPtr global Result put microTV (33) into Result end mtvGetWindowPtr on mtvSendEvents put microTV (34,param(1),param(2),param(3)) into Result end mtvSendEvents on mtvSetPixMapOrigin put microTV (35,param(1),param(2),param(3),param(4)) into Result end mtvSetPixMapOrigin on mtvSetOrigin put microTV (36,param(1),param(2)) into Result end mtvSetOrigin on mtvPicture put microTV (37,param(1)) into Result end mtvPicture on mtvCableDecode put microTV (38,param(1)) into Result end mtvCableDecode on mtvGrabDitherFrame put microTV (39) into Result end mtvGrabDitherFrame on mtvGrabBWFrame put microTV (40) into Result end mtvGrabBWFrame esult end mtvGrabBWFrame esult end mtvGrabBWFrame end mtvCableDecode on mtvChannel -- state-tuple newChannel MAST(f(p'w'(WS >%jI%(_x='m;fCa* x8=Q'h(]L@@[P$@@3HD@  J 2 0@,1@D @  A"AO@ "@@P, P^<@̓7" ($8|)@ @,d oJ NBX4HD= T"i]}r_}W]ϻ}$ @A8x_?߿>Р?=swNVˮ1[0ge&4+H @EɁ+X leK#F1R<HB P V)M ghB BPQPo&2_Ƽ׮u9wDLL_6IRp%#|$K@@ ;Owo_| w^Ow=bH^9^Ͻw?6^9  " !BKGD @MS Q2(F 5@ Stacks" ! 5B!K  Projectson mouseDown -- go to the stack associated with the click select the clickLine put the value of the clickLine into StackName wait until the mouse is up if the mouseLoc is not within rect of me then select empty exit mouseDown end if go stack StackName in new window end mouseDown "I I2 (H}L@ Stacks)"k0 Deleteon mouseUp -- Requires handler: deleteHCLine -- delete a line from this list set hilite of me to true deleteHCLine "Stacks" set hilite of me to false end mouseUpt0 Open stack in new windowon mouseUp set hilite of me to not hilite of me end mouseUp"~C!5   Stackson mouseDown -- Requires handler: goHCStack put value(the clickLine) into theStack if theStack is empty then set cursor to hand exit mouseDown end if set cursor to watch put word 2 of the clickLine into theLine -- the line number clicked -- select a full line select char 1 to ((number of chars in (line theLine of me)) + 1) of line theLine to (theLine + 1) of me wait until the mouse is up select empty if the mouseLoc is not within the rect of me then exit mouseDown goHCStack theStack end mouseDown:"K0i Addon mouseUp -- Requires handler: newLink -- add a new item to the stack list newLink "stack" end mouseUp &Q  TitleStacks ProjectsQLaboratory Toolbox Script from stack: Home (Browser) THE MESSAGE HANDLERS IN THIS SCRIPT: deleteHCLine,selectHCLine,goHCStack,newLink,updateHCPaths THE FUNCTION HANDLERS IN THIS SCRIPT: selectHCFile,lastHCItem,getHCPathName,stringIsInContainer,tabToComma commaToTab ----- Delete Line Script ----------------------------------------- on deleteHCLine theField -- Requires handlers: disallowInterruption,selectHCLine -- Requires handlers: allowInterruption,trackFieldSelection if bg fld theField is empty then exit deleteHCLine disallowInterruption repeat until the mouseClick if the mouseLoc is not within the rect of bg field theField then set cursor to hand else set cursor to 3 end repeat allowInterruption if the clickLoc is not within rect of bg field theField then exit deleteHCLine put the clickLine into lineClicked put word 2 of lineClicked into theLine put value(lineClicked) into theLineData if theLineData = empty then exit deleteHCLine -- confirm deletion of the selected item if the optionKey is not down then answer "Delete " & theLineData & " from this list?" with "Cancel" or "OK" -- if it "OK" then select empty exit deleteHCLine end if end if delete lineClicked -- delete it end deleteHCLine ----- Miscellaneous Scripts -------------------------------------- on selectHCLine theLine,theField select char 1 to ((number of chars in (line theLine of the target)) + 1) of (line theLine to (theLine + 1) of the target) end selectHCLine on goHCStack whatStack -- open in new window if "Open stack in new window" check box is checked if last character of whatStack = return then delete last character of whatStack set cursor to watch if hilite of bg btn id 48 then go stack whatStack in new window else go stack whatStack if the result empty and the result "Cancel" then answer "Couldn't open" && "" & whatStack & "" -- there's a problem end goHCStack ----- NewLink Scripts -------------------------------------------- on newLink fileType -- Requires handlers: selectHCFile,lastHCItem,getHCPathName,updateHCPaths -- Requires handlers: disallowInterruption,allowInterruption -- Requires function handler: selectHCFile,lastHCItem,getHCPathName,commaToTab -- Allows you to select a stack, application or document from a -- standard dialog for inclusion in the scrolling list -- if no file type is given, determine what type of file to link to if (fileType is not in "stack document application file") then answer "Create button linked to a stack or file?" with "Cancel" or "File" or "Stack" -- if it is empty or it is "Cancel" then exit newLink put it into fileType end if -- if it's a file determine what kind of file it is if fileType is "File" then -- answer "Create button linked to a document or application?" with "Cancel" or "Document" or "Application" -- if it is empty or it is "Cancel" then exit newLink put it into fileType end if disallowInterruption -- selects the stack, application, or document to link to put "a" into tag if fileType is "stack" then put "STAK" into filter else if filetype is "application" then put "APPL" into filter put "an" into tag else put empty into filter -- no way to show only documents put "Select" && tag && fileType && "to add to the list:" into prompt put selectHCFile(prompt,filter) into longFileName put lastHCItem(":",longFileName) into shortFileName set cursor to watch -- extract the file path from the full path name put getHCPathName(longFileName) into thePath -- if document is chosen, get application to open it. put empty into longAppName if fileType is "document" then put "Select the application to open" & return & "" & shortFileName & "" & ":" into prompt put selectHCFile(prompt,"APPL") into longAppName put lastHCItem(":",longAppName) into shortAppName put commaToTab(shortFileName) & "," & commaToTab(shortAppName) & return after bg fld "Apps For Docs" -- hidden field sort bg fld "Apps For Docs" end if put "s" after fileType put shortFileName & return after bg field fileType sort bg field fileType -- update the "Paths" field on the proper "Path" card updateHCPaths fileType,thePath if longAppName is NOT empty then -- for a document's app put getHCPathName(longAppName) into appPath updateHCPaths "applications",appPath end if allowInterruption end newLink function selectHCFile prompt,filter -- displays dialog for selection of a particular fileType if filter is not empty then answer file prompt of type filter else answer file prompt if (it is empty) or (the result = "Cancel") then exit to HyperCard return it -- otherwise return the selected file path end selectHCFile function lastHCItem delim,theText -- returns the portion of that follows the last if delim is in theText then put lastHCItem(delim,char offset(delim,theText) + 1 to length(theText) of theText) into theText end if return theText end lastHCItem function getHCPathName longName -- Requires function handler: lastHCItem -- return the path to the file put lastHCItem(":",longName) into fileName return char 1 to (length(longName) - length(fileName)) of longName end getHCPathName on updateHCPaths fileType,thePath -- Requires function handler: stringIsInContainer -- update the appropriate path card for the newly created button global Stacks,Applications,Documents -- put "s" after fileType -- so it will match card & global name do "get" && fileType -- put the appropriate global into "it" -- exit this handler if the global already contains the path if stringIsInContainer(thePath,it) then exit updateHCPaths lock screen set cursor to watch set lockmessages to true -- avoid open messages set lockrecent to true -- don't make any card miniatures push card -- remember where we are -- go to the correct path card in the home stack go card fileType of stack "Home" -- -- update the "Paths" field with the new path get bg field "Paths" of card fileType if (it empty) and (the last char of it return) then put return before thePath put thePath after bg field "Paths" of card fileType -- cause the appropriate global variable to be updated do "put bg field Paths into" && fileType pop card -- return to where we were end updateHCPaths function stringIsInContainer theString,theContainer -- check to see if theString is a full line of theContainer if (theString = first line of theContainer) or (theString = last line of theContainer) then return true else if theContainer contains return & theString & return then return true return false -- not found, so return false end stringIsInContainer function tabToComma theText repeat until numToChar(9) is not in theText put "," into char offset(numToChar(9),theText) of theText end repeat return theText end tabToComma function commaToTab theText repeat until "," is not in theText put numToChar(9) into char offset(",",theText) of theText end repeat return theText end commaToTab@BMAP VVBKGDMi=&&" Title Data FinderBKGDi=lM&&g Title Path ListBKGDlys%i=&&" Title DispatcherBMAPys   $ BKGD%8l\& Title6!:  InstrumentTypeson mouseDown -- go to the card associated with the click select the clickLine put the value of the clickLine into cardName wait until the mouse is up if the mouseLoc is not within rect of me then select empty exit mouseDown end if go card cardName end mouseDown  Instruments`BKGD8%&& Title`BKGD8&&  Title`BKGD&&! Title@BKGD40BKGD40:+Z &d Title4!:  ViewerTypeson mouseDown -- go to the stack associated with the click select the clickLine put the value of the clickLine into CardName wait until the mouse is up if the mouseLoc is not within rect of me then select empty exit mouseDown end if go card CardName end mouseDown Viewers`BKGD:+40&&p Title`BKGDS6:+ &" Title R Datefunction theFields return "field date,field time,field event,field StartFrm,field EndFrm" end theFields A  Timefunction theFields return "field date,field time,field event,field StartFrm,field EndFrm" end theFields v " Eventfunction theFields return "field date,field time,field event,field StartFrm,field EndFrm" end theFields  P startFrmfunction theFields return "field date,field time,field event,field StartFrm,field EndFrm" end theFields & ? ~ endFrmon mouseWithin if the selectedField is not empty then exit mouseWithin get the scroll of last item of theFields() if it the scroll of first item of theFields() then put the textHeight of last item of theFields() into baseLineSize lock screen repeat with count = 1 to (number of items in theFields() - 1) set scroll of (item count of theFields()) to it end repeat unlock screen end if end mouseWithin function theFields return "field date,field time,field event,field StartFrm,field EndFrm" end theFields  l} A4 on mouseDown put the textHeight of item 1 of theFields() into baseLineSize put the number of items in theFields() into numItems repeat until the mouse is up get (scroll of last item of theFields()) - baseLineSize lock screen repeat with count = 1 to numItems set scroll of (item count of theFields()) to it end repeat unlock screen end repeat end mouseDown function theFields return "field date,field time,field event,field StartFrm,field EndFrm" end theFields l }  on mouseDown put the textHeight of item 1 of theFields() into baseLineSize put the number of items in theFields() into numItems repeat until the mouse is up get (scroll of last item of theFields()) + baseLineSize lock screen repeat with count = 1 to numItems set scroll of (item count of theFields()) to it end repeat unlock screen end repeat end mouseDown function theFields return "field date,field time,field event,field StartFrm,field EndFrm" end theFields(  status ClipVieweron openStack mtvSetUp -- send mouseUp to card button "CreateNewScreens" end openStack on closeStack mtvCleanUp end closeStack on mtvSetUp put microTV (0) into Result end mtvSetUp on mtvCleanUp put microTV (-1) into Result end mtvCleanUp on mtvOpen put microTV (1,param(1),param(2),param(3),param(4),param(5),param(6),param(7),param(8),param(9),param(10)) into Result end mtvOpen on mtvClose put microTV (2,param(1)) into Result end mtvClose on mtvPower put microTV (3,param(1)) into Result end mtvPower on mtvSetDisplayRect put microTV (4,param(1),param(2),param(3),param(4),param(5),param(6)) into Result end mtvSetDisplayRect on mtvChannel put microTV (5,param(1),param(2)) into Result end mtvChannel on mtvVolume put microTV (6,param(1)) into Result end mtvVolume on mtvNVolume put microTV (7,param(1)) into Result end mtvNVolume on mtvUseRF put microTV (8,param(1)) into Result end mtvUseRF on mtvSetFrequency put microTV (9,param(1),param(2)) into Result end mtvSetFrequency on mtvGrabFrame put microTV (10) into Result end mtvGrabFrame on mtvGrab24Frame put microTV (11) into Result end mtvGrab24Frame on mtvSetBoard put microTV (12,param(1),param(2)) into Result end mtvSetBoard on mtvBrightness put microTV (13,param(1)) into Result end mtvBrightness on mtvContrast put microTV (14,param(1)) into Result end mtvContrast on mtvSaturation put microTV (15,param(1)) into Result end mtvSaturation on mtvHue put microTV (16,param(1)) into Result end mtvHue on mtvSharpness put microTV (17,param(1)) into Result end mtvSharpness on mtvDisplay put microTV (18,param(1)) into Result end mtvDisplay on mtvChannelTable put microTV (19,param(1),param(2)) into Result end mtvChannelTable on mtvTakeEffect put microTV (20) into Result end mtvTakeEffect on mtvGetUnitCatalog global Result put microTV (21,param(1)) into Result end mtvGetUnitCatalog on mtvColorSignalDetect global Result put microTV (22) into Result end mtvColorSignalDetect on mtvDoubleBuffer put microTV (23,param(1)) into Result end mtvDoubleBuffer on mtvGetBuffers global Result put microTV (24) into Result end mtvGetBuffers on mtvLockBuffers put microTV (25,param(1),param(2)) into Result end mtvLockBuffers on mtvInstallBuffers put microTV (26,param(1),param(2),param(3)) into Result end mtvInstallBuffers on mtvCompareLevel put microTV (27,param(1)) into Result end mtvCompareLevel on mtvTestSelect put microTV (28,param(1)) into Result end mtvTestSelect on mtvTestLevel global Result put microTV (29) into Result end mtvTestLevel on mtvGetInfo global Result put microTV (30,param(1)) into Result end mtvGetInfo on mtvGetInfo2 global Result put microTV (31,param(1)) into Result end mtvGetInfo2 on mtvSelectSource put microTV (32,param(1),param(2)) into Result end mtvSelectSource on mtvGetWindowPtr global Result put microTV (33) into Result end mtvGetWindowPtr on mtvSendEvents put microTV (34,param(1),param(2),param(3)) into Result end mtvSendEvents on mtvSetPixMapOrigin put microTV (35,param(1),param(2),param(3),param(4)) into Result end mtvSetPixMapOrigin on mtvSetOrigin put microTV (36,param(1),param(2)) into Result end mtvSetOrigin on mtvPicture put microTV (37,param(1)) into Result end mtvPicture on mtvCableDecode put microTV (38,param(1)) into Result end mtvCableDecode on mtvGrabDitherFrame put microTV (39) into Result end mtvGrabDitherFrame on mtvGrabBWFrame put microTV (40) into Result end mtvGrabBWFrame `BMAPS  r^%%@U9UD̢UU$UDULU7(-:~%@-@GF@@22_ #@@5^6 [@G"62BS3̢Kd8z3l`3W#D 84 3^; )43)@ 3LG G B@BU~[>G>hpB~ 3wtBKGD6=`& Title:!:  HandlerTypeson mouseDown -- go to the stack associated with the click select the clickLine put the value of the clickLine into HandlerName wait until the mouse is up if the mouseLoc is not within rect of me then select empty exit mouseDown end if go card HandlerName end mouseDown  HandlersBKGD=6N&p Title(zStatus BKGD0=  4&$ Title6Q Datefunction theFields return "field date,field time,field event,field StartFrm,field EndFrm" end theFields on mouseUp put word 2 of the clickline into n put n put line n of fld startFrm into inpt put line n of fld endFrm into outpt VCRcmd mPlaySegment,inpt,outpt end mouseUp 6@ Timefunction theFields return "field date,field time,field event,field StartFrm,field EndFrm" end theFields on mouseUp put word 2 of the clickline into n put n put line n of fld startFrm into inpt put line n of fld endFrm into outpt VCRcmd mPlaySegment,inpt,outpt end mouseUp 8v" Eventfunction theFields return "field date,field time,field event,field StartFrm,field EndFrm" end theFields on mouseUp put word 2 of the clickline into n put n put line n of fld startFrm into inpt put line n of fld endFrm into outpt VCRcmd mPlaySegment,inpt,outpt end mouseUp :P startFrmfunction theFields return "field date,field time,field event,field StartFrm,field EndFrm" end theFields on mouseUp put word 2 of the clickline into n put n put line n of fld startFrm into inpt put line n of fld endFrm into outpt VCRcmd mPlaySegment,inpt,outpt end mouseUp  ?} endFrmon mouseWithin if the selectedField is not empty then exit mouseWithin get the scroll of last item of theFields() if it the scroll of first item of theFields() then put the textHeight of last item of theFields() into baseLineSize lock screen repeat with count = 1 to (number of items in theFields() - 1) set scroll of (item count of theFields()) to it end repeat unlock screen end if end mouseWithin function theFields return "field date,field time,field event,field StartFrm,field EndFrm" end theFields on mouseUp put word 2 of the clickline into n put "Playing " & line n of field "event" into field "Status" put line n of fld startFrm into inpt put line n of fld endFrm into outpt VCRcmd mPlaySegment,inpt,outpt end mouseUp  l} A4 on mouseDown put the textHeight of item 1 of theFields() into baseLineSize put the number of items in theFields() into numItems repeat until the mouse is up get (scroll of last item of theFields()) - baseLineSize lock screen repeat with count = 1 to numItems set scroll of (item count of theFields()) to it end repeat unlock screen end repeat end mouseDown function theFields return "field date,field time,field event,field StartFrm,field EndFrm" end theFields  l}  on mouseDown put the textHeight of item 1 of theFields() into baseLineSize put the number of items in theFields() into numItems repeat until the mouse is up get (scroll of last item of theFields()) + baseLineSize lock screen repeat with count = 1 to numItems set scroll of (item count of theFields()) to it end repeat unlock screen end repeat end mouseDown function theFields return "field date,field time,field event,field StartFrm,field EndFrm" end theFields(d s status(M \  theTapeVideo ClipRecorderBMAP  P^##44444CO#33S9pSDDDDDDD0"-S6-@U9UD̢UU$UDULU7(-:~%@-@GF@@22_ #@@5^6 [@G"62BS3̢Kd8z3l`3W#D 84 3^; )43)@ 3LG G B@BU~[>G>hpB~ 3wtBKGD0KR   New Buttonon mouseUp go previous card end mouseUpN f  New Buttonon mouseUp go next card end mouseUp@BMAP  BKGDK*0P(:w} screen(*  Resultson openBackground push recent card end openBackground on idle put recvUpTo(empty,0,empty) into newInput if newInput is not empty then get rect of field "screen" get (item 4 of it) - (item 2 of it) put (it div (the textHeight of field "screen"))-1 into linesAvail get field "screen" & newInput put the number of lines in it into linesThere put it into field "screen" end if end idle on returnKey sendSPort message box & return put empty into message box end returnKey on test repeat until the mouse is down sendSPort "1234567890." & return & linefeed end repeat end test  BMAP   Ȧ`d`UUUUUTdUUUUUf'8%?$?"fe8C?b?8tS&' %L$L" 6 㟿 |">xD>&<㟿 ?ȟe"ADF4$m 6ț`0%"݀AD ݀6|lTA  O(p"yD2T PE@3P(Db (4+gfL6ff|`$#b%Bg|`&<"@bF #Be8"B1B&22 O8@~H@&f22m  6ě`4@$ H@`UUUUUTdUUUUU`d 0R` 3$sfR@BDCl r=P<5cy9bX@D@<."(‹ Т@rmB 6"b"I2$Sqpwb@y@0U X&P  uUUUUUUUUUUUUU@ e5UUUUUUUUUUUUU u B" "BF<F>(r(", F"z(c2/ F> SH Fz<V" ""( Vq!Ȁ u mmmmmmmm`BKGD*TK((}Status `BKGDTF*&&  Title`BKGDFH$I<TWindoidHandlerson ClicInText What,Where put "You cliked on " & What & " in window " & Where & "" end ClicInText on closeTextoid What put the text of window What into cd field "output" put "You closed window " & What & "" end closeTextoid on TabloidSelect What,Where put Where & " : " & What end TabloidSelect on closeTabloid Which put "You close windoid " & Which & "" end closeTabloid on controlKey What if there is a window "TheList" then send numToChar(What + 64) to window "TheList" end ControlKey on ListoidSelect What,Where put Where & " : " & What end ListoidSelect on closeListoid Which put "You close windoid " & Which & "" end closeListoid on controlKey What if there is a window "TheList" then send numToChar(What + 64) to window "TheList" end ControlKey@BMAPH$  BKGDI<KF^ & Title8!:  EditorTypeson mouseDown -- go to the stack associated with the click select the clickLine put the value of the clickLine into EditorName wait until the mouse is up if the mouseLoc is not within rect of me then select empty exit mouseDown end if go card EditorName end mouseDown EditorsBKGDKI<&&[ Title Editor: BKGDKN&[ Title(.d values Editor: on TabloidSelect What,Where put the selectedCell of window "Scattergram" into thePlace put the first word of thePlace into cd field "theRow" put the second word of thePlace into cd field "theCol" put What into cd field "Val" end TabloidSelect on closeTabloid Which -- put "You closed windoid " & Which & "" end closeTabloid BKGD|*&&T Title Editor: @BMAP|  BKGD*' N&[ Title(nx values Editor: BKGD' /**&"c Title,4 pz HypothesisdthЀ New Experimenton mouseUp put field "ProjectLabel" into ProjectName ask "What is the label of the New Experiment?" put it into ExperimentName if field "Experiments" is empty then put ExperimentName into field "Experiments" else put return & ExperimentName after last line of field "Experiments" end if go to card "Experiment" of stack "LaboratoryToolbox" --without dialog doMenu "copy card" doMenu "Back" doMenu "Paste Card" set the name of this card to ExperimentName put ExperimentName into card field "ExperimentLabel" put ProjectName into card field "ProjectLabel" end mouseUpZExperimentson mouseDown -- go to the card associated with the click select the clickLine put the value of the clickLine into theExperiment wait until the mouse is up if the mouseLoc is not within rect of me then select empty exit mouseDown end if visual effect shrink to top go card theExperiment end mouseDown lS&yw  Toolboxon mouseUp go stack "LaboratoryToolbox" in a new window end mouseUp.b"N ProjectLabel Project: Project`BMAP/  $ !p@ !  `@w(cG8q,IR$QE$ !f "`2S9p6S| endFrmon mouseWithin if the selectedField is not empty then exit mouseWithin get the scroll of last item of theFields() if it the scroll of first item of theFields() then put the textHeight of last item of theFields() into baseLineSize lock screen repeat with count = 1 to (number of items in theFields() - 1) set scroll of (item count of theFields()) to it end repeat unlock screen end if end mouseWithin function theFields return "field date,field time,field event,field StartFrm,field EndFrm" end theFields on mouseUp put word 2 of the clickline into n put "Playing " & line n of field "event" into field "Status" put line n of fld startFrm into inpt put line n of fld endFrm into outpt VCRcmd mPlaySegment,inpt,outpt end mouseUp  l} A4 on mouseDown put the textHeight of item 1 of theFields() into baseLineSize put the number of items in theFields() into numItems repeat until the mouse is up get (scroll of last item of theFields()) - baseLineSize lock screen repeat with count = 1 to numItems set scroll of (item count of theFields()) to it end repeat unlock screen end repeat end mouseDown function theFields return "field date,field time,field event,field StartFrm,field EndFrm" end theFields k|  on mouseDown put the textHeight of item 1 of theFields() into baseLineSize put the number of items in theFields() into numItems repeat until the mouse is up get (scroll of last item of theFields()) + baseLineSize lock screen repeat with count = 1 to numItems set scroll of (item count of theFields()) to it end repeat unlock screen end repeat end mouseDown function theFields return "field date,field time,field event,field StartFrm,field EndFrm" end theFields(] v status(M \  theTapeVideo ClipMaker`BMAP]  n^%%@U9UD̢UU$UDULU7(-:~%@-@GF@@22_ #@@5^6 [@G"62BS3̢Kd8z3l`3W#D 84 3^; )43)@ 3LG G B@BU~[>G>hpB~ 3wt9xE$BKGD}C\&&# TitleVideoTape LogBKGDC#Y}&  TitleLL DataTypeson mouseDown -- go to the card associated with the click select the clickLine wait until the mouse is up if the mouseLoc is not within rect of me then select empty exit mouseDown end if put the value of the clickLine into theLine visual effect shrink to top go card theLine end mouseDown *%z8DataTypeData Dictionary@BKGD#Y CBKGD@Q#Y@ T3r About Search Paths...on mouseUp -- Requires handler: toggleAboutInfo toggleAboutInfo true -- show the 'About Info' dialog end mouseUp ?\u G/ About Paths...on mouseUp -- Requires handler: toggleAboutInfo toggleAboutInfo true -- show the 'About Info' dialog end mouseUp =4 p right arrowon mouseUp visual effect wipe left if the commandKey is down then go last card else go next card end mouseUp<  p left arrowon mouseUp visual effect wipe right if the commandKey is down then go first card else go to card "DataDictionary" end mouseUp y+ pathson closeField -- the globals declared here are used by HyperCard for locating -- its stacks, applications, and documents -- puts the contents of this field into the appropriate global variable global Stacks,Applications,Documents if line 1 of me is empty then delete line 1 of me do "put me into" && the short name of this card end closeField on exitField closeField end exitField&%3V. title`0^uj ! Stackson mouseUp go to card (the short name of me) end mouseUp d1^u+ !Documentson mouseUp go to card (the short name of me) end mouseUp f2^quʐ ! Applicationson mouseUp go to card (the short name of me) end mouseUp @Z  About Paths...on mouseUp -- Requires handler: toggleAboutInfo toggleAboutInfo true -- show the 'About Info' dialog end mouseUp 5) 2  About this cardon mouseUp -- Requires handler: toggleAboutInfo toggleAboutInfo false -- hide the 'About Info' dialog end mouseUp4+ ?/ About Search Pathson mouseUp -- Requires handler: toggleAboutInfo toggleAboutInfo false -- hide the 'About Info' dialog end mouseUp": / &;/7 home>.<"  OKon mouseDown set the icon of me to "Clicked Close Box" end mouseDown on mouseUp -- Requires handler: toggleAboutInfo set the icon of me to "Close Box" toggleAboutInfo false -- put away the 'About Info' dialog end mouseUp on mouseStillDown if the mouseLoc is not within the rect of me then set the icon of me to "Close Box" else set the icon of me to "Clicked Close Box" end mouseStillDown 56   When you open a stack, document, or application, HyperCard attempts to locate the file you want by searching the folders listed on the appropriate Search Paths card. Each line in the list indicates the location of a folder, including the disk name (and folder and subfolder names, if any). This information is called a search path. Items in a search path are separated by a colon. If the file is not in any of the folders listed, HyperCard displays a directory dialog box and asks you to locate the file. Once you have done so, HyperCard records the files location on the appropriate Search Paths card. The next time you open the file, HyperCard will be able to find it automatically. You can also type folder names directly on this card. Use this format: my disk:HyperCard folder:my stacks:%vHyperCard uses the information below to find your stacks, documents, and applications. Click the one you want to see.: Search Paths;Laboratory Toolboxpaths Script of Stack: Home THE MESSAGE HANDLERS USED IN THIS SCRIPT: closeStack,openBackground,closeBackground,closeCard, suspendStack,resumeStack,updateHomeMenu,toggleAboutInfo on closeStack if (there is a menu "Home") and (the short name of this stack is "Home") then delete menu "Home" -- pass closeStack -- so others can use it end closeStack on openBackground -- Requires handlers: createTheMenus,updateHomeMenu -- make the "Home" menu if necessary createTheMenus -- update home menu for this bkgnd updateHomeMenu true pass openBackground -- so others can use it end openBackground on closeBackground -- Requires handlers: createTheMenus,updateHomeMenu -- make the "Home" menu if necessary createTheMenus -- update home menu for this bkgnd updateHomeMenu false pass closeBackground -- so others can use it end closeBackground on closeCard -- Requires handler: toggleAboutInfo global Stacks,Applications,Documents if visible of bkgnd fld "About This Card" is true then toggleAboutInfo false -- hide the 'About Info' dialog -- insure that the global variables get loaded properly do "put bg field id 6 into" && the short name of this card pass closeCard -- so others can use it end closeCard on suspendStack if (there is a menu "Home") and (the short name of this stack is "Home") then delete menu "Home" -- pass suspendStack -- so others can use it end suspendStack on resumeStack -- Requires handlers: createTheMenus,updateHomeMenu -- make the "Home" menu if necessary global Stacks,Applications,Documents createTheMenus true -- force new "Home" menu -- update home menu for this bkgnd updateHomeMenu true -- insure that the global variables get loaded properly do "put bg field id 6 into" && the short name of this card pass resumeStack -- so others can use it end resumeStack on updateHomeMenu status -- update the "Home" menu for this background if there is no menu "Home" then exit updateHomeMenu -- set checkMark of menuItem "Search Paths" of menu "Home" to status -- end updateHomeMenu on toggleAboutInfo status -- Requires handlers: disallowInterruption,allowInterruption -- show or hide the "card info" disallowInterruption if status is true then put "zoom open" into theEffect else put "zoom close" into theEffect lock screen -- so everthing will appear at once set visible of bkgnd fld "About This Card" to status set visible of bkgnd btn id 52 to status -- About Search Paths set visible of bkgnd btn id 62 to status -- 'checkbox' button "OK" unlock screen with theEffect allowInterruption end toggleAboutInfoBMAP @ @ @`DDDD D$@D%D%D%ĿU%Տ "" ?BKGDQ@h@ F3r About Search Paths...on mouseUp -- Requires handler: toggleAboutInfo toggleAboutInfo true -- show the 'About Info' dialog end mouseUp ?\u G/ About Paths...on mouseUp -- Requires handler: toggleAboutInfo toggleAboutInfo true -- show the 'About Info' dialog end mouseUp =4 p right arrowon mouseUp visual effect wipe left if the commandKey is down then go last card else go next card end mouseUp<  p left arrowon mouseUp visual effect wipe right if the commandKey is down then go first card else go prev card end mouseUp y+ pathson closeField -- the globals declared here are used by HyperCard for locating -- its stacks, applications, and documents -- puts the contents of this field into the appropriate global variable global Stacks,Applications,Documents if line 1 of me is empty then delete line 1 of me do "put me into" && the short name of this card end closeField on exitField closeField end exitField&%3V. title`0^uj ! Stackson mouseUp go to card (the short name of me) end mouseUp d1^u+ !Documentson mouseUp go to card (the short name of me) end mouseUp f2^quʐ ! Applicationson mouseUp go to card (the short name of me) end mouseUp @Z  About Paths...on mouseUp -- Requires handler: toggleAboutInfo toggleAboutInfo true -- show the 'About Info' dialog end mouseUp 5) 2  About this cardon mouseUp -- Requires handler: toggleAboutInfo toggleAboutInfo false -- hide the 'About Info' dialog end mouseUp4+ ?/ About Search Pathson mouseUp -- Requires handler: toggleAboutInfo toggleAboutInfo false -- hide the 'About Info' dialog end mouseUp": / &;v/5 home>.<"  OKon mouseDown set the icon of me to "Clicked Close Box" end mouseDown on mouseUp -- Requires handler: toggleAboutInfo set the icon of me to "Close Box" toggleAboutInfo false -- put away the 'About Info' dialog end mouseUp on mouseStillDown if the mouseLoc is not within the rect of me then set the icon of me to "Close Box" else set the icon of me to "Clicked Close Box" end mouseStillDown 56   When you open a stack, document, or application, HyperCard attempts to locate the file you want by searching the folders listed on the appropriate Search Paths card. Each line in the list indicates the location of a folder, including the disk name (and folder and subfolder names, if any). This information is called a search path. Items in a search path are separated by a colon. If the file is not in any of the folders listed, HyperCard displays a directory dialog box and asks you to locate the file. Once you have done so, HyperCard records the files location on the appropriate Search Paths card. The next time you open the file, HyperCard will be able to find it automatically. You can also type folder names directly on this card. Use this format: my disk:HyperCard folder:my stacks:%vHyperCard uses the information below to find your stacks, documents, and applications. Click the one you want to see.: Search Paths;Laboratory Toolboxpaths Script of Stack: Home THE MESSAGE HANDLERS USED IN THIS SCRIPT: closeStack,openBackground,closeBackground,closeCard, suspendStack,resumeStack,updateHomeMenu,toggleAboutInfo on closeStack if (there is a menu "Home") and (the short name of this stack is "Home") then delete menu "Home" -- pass closeStack -- so others can use it end closeStack on openBackground -- Requires handlers: createTheMenus,updateHomeMenu -- make the "Home" menu if necessary createTheMenus -- update home menu for this bkgnd updateHomeMenu true pass openBackground -- so others can use it end openBackground on closeBackground -- Requires handlers: createTheMenus,updateHomeMenu -- make the "Home" menu if necessary createTheMenus -- update home menu for this bkgnd updateHomeMenu false pass closeBackground -- so others can use it end closeBackground on closeCard -- Requires handler: toggleAboutInfo global Stacks,Applications,Documents if visible of bkgnd fld "About This Card" is true then toggleAboutInfo false -- hide the 'About Info' dialog -- insure that the global variables get loaded properly do "put bg field id 6 into" && the short name of this card pass closeCard -- so others can use it end closeCard on suspendStack if (there is a menu "Home") and (the short name of this stack is "Home") then delete menu "Home" -- pass suspendStack -- so others can use it end suspendStack on resumeStack -- Requires handlers: createTheMenus,updateHomeMenu -- make the "Home" menu if necessary global Stacks,Applications,Documents createTheMenus true -- force new "Home" menu -- update home menu for this bkgnd updateHomeMenu true -- insure that the global variables get loaded properly do "put bg field id 6 into" && the short name of this card pass resumeStack -- so others can use it end resumeStack on updateHomeMenu status -- update the "Home" menu for this background if there is no menu "Home" then exit updateHomeMenu -- set checkMark of menuItem "Search Paths" of menu "Home" to status -- end updateHomeMenu on toggleAboutInfo status -- Requires handlers: disallowInterruption,allowInterruption -- show or hide the "card info" disallowInterruption if status is true then put "zoom open" into theEffect else put "zoom close" into theEffect lock screen -- so everthing will appear at once set visible of bkgnd fld "About This Card" to status set visible of bkgnd btn id 52 to status -- About Search Paths set visible of bkgnd btn id 62 to status -- 'checkbox' button "OK" unlock screen with theEffect allowInterruption end toggleAboutInfoBMAP @ @ @`DDDD D$@D%D%D%ĿU%Տ "" ?BKGDh @SQ@ F3r About Search Paths...on mouseUp -- Requires handler: toggleAboutInfo toggleAboutInfo true -- show the 'About Info' dialog end mouseUp ?\u G/ About Paths...on mouseUp -- Requires handler: toggleAboutInfo toggleAboutInfo true -- show the 'About Info' dialog end mouseUp =4 p right arrowon mouseUp visual effect wipe left if the commandKey is down then go last card else go next card end mouseUp<  p left arrowon mouseUp visual effect wipe right if the commandKey is down then go first card else go prev card end mouseUp y+ pathson closeField -- the globals declared here are used by HyperCard for locating -- its stacks, applications, and documents -- puts the contents of this field into the appropriate global variable global Stacks,Applications,Documents if line 1 of me is empty then delete line 1 of me do "put me into" && the short name of this card end closeField on exitField closeField end exitField&%3V. title`0^uj ! Stackson mouseUp go to card (the short name of me) end mouseUp d1^u+ !Documentson mouseUp go to card (the short name of me) end mouseUp f2^quʐ ! Applicationson mouseUp go to card (the short name of me) end mouseUp @Z  About Paths...on mouseUp -- Requires handler: toggleAboutInfo toggleAboutInfo true -- show the 'About Info' dialog end mouseUp 5) 2  About this cardon mouseUp -- Requires handler: toggleAboutInfo toggleAboutInfo false -- hide the 'About Info' dialog end mouseUp4+ ?/ About Search Pathson mouseUp -- Requires handler: toggleAboutInfo toggleAboutInfo false -- hide the 'About Info' dialog end mouseUp": / &;/1 home>.<"  OKon mouseDown set the icon of me to "Clicked Close Box" end mouseDown on mouseUp -- Requires handler: toggleAboutInfo set the icon of me to "Close Box" toggleAboutInfo false -- put away the 'About Info' dialog end mouseUp on mouseStillDown if the mouseLoc is not within the rect of me then set the icon of me to "Close Box" else set the icon of me to "Clicked Close Box" end mouseStillDown 56   When you open a stack, document, or application, HyperCard attempts to locate the file you want by searching the folders listed on the appropriate Search Paths card. Each line in the list indicates the location of a folder, including the disk name (and folder and subfolder names, if any). This information is called a search path. Items in a search path are separated by a colon. If the file is not in any of the folders listed, HyperCard displays a directory dialog box and asks you to locate the file. Once you have done so, HyperCard records the files location on the appropriate Search Paths card. The next time you open the file, HyperCard will be able to find it automatically. You can also type folder names directly on this card. Use this format: my disk:HyperCard folder:my stacks:%vHyperCard uses the information below to find your stacks, documents, and applications. Click the one you want to see.: Search Paths;Laboratory Toolboxpaths Script of Stack: Home THE MESSAGE HANDLERS USED IN THIS SCRIPT: closeStack,openBackground,closeBackground,closeCard, suspendStack,resumeStack,updateHomeMenu,toggleAboutInfo on closeStack if (there is a menu "Home") and (the short name of this stack is "Home") then delete menu "Home" -- pass closeStack -- so others can use it end closeStack on openBackground -- Requires handlers: createTheMenus,updateHomeMenu -- make the "Home" menu if necessary createTheMenus -- update home menu for this bkgnd updateHomeMenu true pass openBackground -- so others can use it end openBackground on closeBackground -- Requires handlers: createTheMenus,updateHomeMenu -- make the "Home" menu if necessary createTheMenus -- update home menu for this bkgnd updateHomeMenu false pass closeBackground -- so others can use it end closeBackground on closeCard -- Requires handler: toggleAboutInfo global Stacks,Applications,Documents if visible of bkgnd fld "About This Card" is true then toggleAboutInfo false -- hide the 'About Info' dialog -- insure that the global variables get loaded properly do "put bg field id 6 into" && the short name of this card pass closeCard -- so others can use it end closeCard on suspendStack if (there is a menu "Home") and (the short name of this stack is "Home") then delete menu "Home" -- pass suspendStack -- so others can use it end suspendStack on resumeStack -- Requires handlers: createTheMenus,updateHomeMenu -- make the "Home" menu if necessary global Stacks,Applications,Documents createTheMenus true -- force new "Home" menu -- update home menu for this bkgnd updateHomeMenu true -- insure that the global variables get loaded properly do "put bg field id 6 into" && the short name of this card pass resumeStack -- so others can use it end resumeStack on updateHomeMenu status -- update the "Home" menu for this background if there is no menu "Home" then exit updateHomeMenu -- set checkMark of menuItem "Search Paths" of menu "Home" to status -- end updateHomeMenu on toggleAboutInfo status -- Requires handlers: disallowInterruption,allowInterruption -- show or hide the "card info" disallowInterruption if status is true then put "zoom open" into theEffect else put "zoom close" into theEffect lock screen -- so everthing will appear at once set visible of bkgnd fld "About This Card" to status set visible of bkgnd btn id 52 to status -- About Search Paths set visible of bkgnd btn id 62 to status -- 'checkbox' button "OK" unlock screen with theEffect allowInterruption end toggleAboutInfoBMAP  @ @ @`DDDD D$@D%D%D%ĿU%Տ "" ?BKGDS>@h9" &#L paths" / ,1:Oo Your Name:&4 .2 home,6_q User level:*7_q Settings:8  p left arrowon mouseUp visual effect wipe right if the commandKey is down then go first card else go prev card end mouseUp94 p right arrowon mouseUp visual effect wipe left if the commandKey is down then go last card else go next card end mouseUp4Homepreferences Script of Stack: Home THE MESSAGE HANDLERS USED IN THIS SCRIPT: closeStack,openBackground,closeBackground, suspendStack,resumeStack,updateHomeMenu on closeStack if (there is a menu "Home") and (the short name of this stack is "Home") then delete menu "Home" -- pass closeStack -- so others can use it end closeStack on openBackground -- Requires handlers: createTheMenus,updateHomeMenu -- make the "Home" menu if necessary createTheMenus -- update home menu for this bkgnd updateHomeMenu true pass openBackground -- so others can use it end openBackground on closeBackground -- Requires handlers: createTheMenus,updateHomeMenu -- make the "Home" menu if necessary createTheMenus -- update home menu for this bkgnd updateHomeMenu false pass closeBackground -- so others can use it end closeBackground on suspendStack if (there is a menu "Home") and (the short name of this stack is "Home") then delete menu "Home" -- pass suspendStack -- so others can use it end SuspendStack on resumeStack -- Requires handlers: createTheMenus,updateHomeMenu -- make the "Home" menu if necessary createTheMenus true -- force new "Home" menu -- update home menu for this bkgnd updateHomeMenu true pass resumeStack -- so others can use it end ResumeStack on updateHomeMenu status -- update the "Home" menu for this background if there is no menu "Home" then exit updateHomeMenu -- set checkMark of menuItem "Preferences" of menu "Home" to status -- end updateHomeMenu BMAP> @ @ @`DDDD D$@D%D%D%ĿU%Տ "" ?@CARD@3>#-Z Pop-up NoteFld 34on enterInField hide me send "hideShowPopUp" to card button id 34 end enterInField$U' &!  Show Navigatoron mouseUp -- palette "Navigator",the loc of me palette "Toolbox Navigator", "390,0" end mouseUp T%U} Quiton mouseUp doMenu "Quit Hypercard" end mouseUpN,Ww ResourceCopieron mouseUp ResCopy2 end mouseUp^-KC@ Dictionaryon mouseUp go to card "DataDictionary" end mouseUpX/JuӀA_ Instrumentson mouseUp go card "Instruments" end mouseUpP0Ju!Z Viewerson mouseUp go card "Viewers" end mouseUpR1IwETE Handlerson mouseUp go card "Handlers" end mouseUpP3IEw| Editorson mouseUp go card "Editors" end mouseUpN5L  Finderon mouseUp go card "Finder" end mouseUp7}Q GoCardon mousedown if the optionkey is down then edit script of target exit mousedown end if put the mouseloc into myPlace put item 1 of myPlace - 20 into horiz put item 2 of myPlace - 10 into vert get PopMenu(vert,horiz,"Project;Experiment;Trial;Dispatcher;Buttons;PathList;Chronology;Videotape Log;Help Card;Windoids") if it = 1 then go card "Project" else if it = 2 then go card "Experiment" else if it = 3 then go card "Trial" else if it = 4 then go card "Dispatcher" else if it = 5 then go card "Buttons" else if it = 6 then go card "PathList" else if it = 7 then go card "Chronology" else if it = 8 then go card "Videotape Log" else if it = 9 then go card "Help Card" else if it = 10 then go card "Windoids" end if end mousedown >8$ ImportCardon mousedown if the optionkey is down then edit script of target exit mousedown end if choose browse tool put the mouseloc into myPlace put item 1 of myPlace - 20 into horiz put item 2 of myPlace - 10 into vert get PopUpMenu("Instrument;Viewer;Handler;Editor;Data Definition;Whatever", 0, vert, horiz) if it = 1 then go card "InstrumentDefinition" doMenu "Paste Card" put the short name of this card into scratch go card "Instruments" put scratch & Return after field "InstrumentTypes" else if it = 2 then go card "ViewerDefinition" doMenu "Paste Card" put the short name of this card into scratch go card "Viewers" put scratch & Return after field "ViewerTypes" else if it = 3 then go card "HandlerDefinition" doMenu "Paste Card" put the short name of this card into scratch go card "Handlers" put scratch & Return after field "HandlerTypes" else if it = 4 then go card "Editors" go card "EditorDefinition" doMenu "Paste Card" put the short name of this card into scratch go card "Editors" put scratch & Return after field "EditorTypes" else if it = 5 then go card "DataDefinition" doMenu "Paste Card" put the short name of this card into scratch go card "DataDictionary" put scratch & Return after field "DataTypes" else if it = 6 then go card "Buttons" doMenu "Paste Card" end if end mousedown P9J΀s Creditson mouseUp go card "Credits" end mouseUph:Rw~ Helpon mouseUp go to stack "Lab Toolbox Help" in new window end mouseUpJ; New Projecton mouseUp ask "What is the label of the New Project?" put it into StackName if field "Projects" is empty then put StackName into field "Projects" else put return & StackName after last line of field "Projects" end if -- put cd field "ProjectStartup" into LetsStart create stack StackName in a new window go to card "Project" of stack "LaboratoryToolbox" doMenu "copy card" go to stack StackName -- edit script of this stack --put LetsStart after the Script of Stack StackName -- save script -- close script doMenu "Paste card" set the name of this card to "Project" put StackName into field "ProjectLabel" doMenu "First" doMenu "Cut Card" go to card "Chronology" of stack "LaboratoryToolbox" doMenu "Copy Card" go to card "Project" of stack StackName doMenu "Paste Card" set the name of this card to "Chronology" go to card "PathList" of stack "LaboratoryToolbox" doMenu "Copy Card" go to card "Chronology" of stack StackName doMenu "Paste Card" set the name of this card to "PathList" DoMenu "First" beep send openStack to stack StackName end mouseUpV<Px  Add a Stacks Menuon mouseUp doStacksMenu end mouseUp0=]\m ProjectStartup"> PCrDigiVideo Stack Listoid 1.6 (US) OnTrack Toolkit Support Tools eXternals 1.2.5 Tabloid 1.1 (US) Textoid 2.0 (US) Eat LunchCon openStack start using stack "LaboratoryToolbox" end openStack Version 1.0Homeon openCard sort field "Stacks" if line 1 of field "Stacks" is empty then delete line 1 of field "Stacks" end if if the last character of field "Stacks" is not return then put return after field "Stacks" end if sort field "Projects" if line 1 of field "Projects" is empty then delete line 1 of field "Projects" end if if the last character of field "Projects" is not return then put return after field "Projects" end if pass openCard end openCard CARDt]3 :& ) title" j- " .it " lr "  " C  Lj}@ firston mouseUp doMenu "first" end mouseUp My Moreon mouseUp Listoid "Where we got stuff:",cd fld "Sources","Rinaldoid",the Rect of cd button "Textoid" end mouseUp(6V Textoid(7 Sources I About OnTrackon mouseUp Listoid "You'll Need This:",cd fld "OnTrack","Rinaldoid",the Rect of cd button "Textoid" end mouseUp(m9 OnTrackCredits 1TgInstructor: Dr. Joseph Ayers Internet Address: lobster@nuhub.acs.northeastern.edu Teaching Assistant: Jan Witting Ӏ; ZThis stack is the product of a class project in the course Biological Laboratory Computing The Department of Biology and Marine Science Center Northeastern University, East Point, Nahant, MA 01908l  Students: Traci Garofalo Sal Genovese Don Girouard Sarah Jordan Karen Lee Ted Maney Joe Stebbins Special Thanks to: Steve McCabe, GW Instruments, Inc. Mark Abbate, Abbate Video Consultants Kelly Martin, Data Translation, Inc Marshall Houskeeper, Data Translation, Inc2Northeastern University, 1990 All Rights Reserved kWe have employed XCMDs and Handlers from the following Stacks in the development of the Laboratory Toolbox: Developer Stack 1.1 DigiVideo Stack dToolkit 2.0 HyperCard Help HyperTalk Reference Listoid 1.4 (US) Power Tools Readymade Buttons Readymade Fields ShowDialog XCMD 1.4 Stack Templates Support Tools eXternals 1.2.5 Tabloid 1.0 (US) Technical Notes Stack 3.1 Textoid 1.8 (US) VidClip Toolkit €TcTo use the video tape control features of this stack you'll need to purchase the OnTrack Toolkit from: Abbate Video Consultants 83 Main Street Norfolk, MA 02056 (508) 520-0199 Creditson closeCard if there is a window "Where we got stuff:" then close window "Where we got stuff:" end if end closeCardBMAP]  ?xDDDD~DD?D>D>D>D~D|D|AD|CDD8ࢅS<D@ 555?UCARDNP3MJ@S<< prevon mouseUp doMenu "prev" end mouseUpTUh@ nexton mouseUp go to card "Instruments" end mouseUpLj}@ firston mouseUp doMenu "first" end mouseUp*$9^ theTarget$,5 Search Treatmentson mouseUp put empty into cd field "findings" put empty into cd field "Projects" put empty into cd field "Experiments" put empty into cd field "Trials" put empty into cd field "curProject" put empty into cd field "curExperiment" put empty into cd field "curTrial" put cd field "theTarget" into theTarget put theTarget lock screen go card "Home" of stack "LaboratoryToolbox" if field "Projects" is empty then answer "There are no projects to search exit mouseup end if get field "Projects" go card "Finder" of stack "LaboratoryToolbox" put it into cd field "Projects" repeat with theProj = 1 to the number of lines in cd field "Projects" put line theProj of cd field "Projects" into theProject put theProject into cd fld "curProject" go to card "Project" of stack theProject put the result get field "Experiments" go card "Finder" of stack "LaboratoryToolbox" put it into cd field "Experiments" if cd field "Experiments" is not empty then repeat with theExp = 1 to the number of lines in cd field "Experiments" put line theExp of cd field "experiments" into theExperiment put theExperiment into cd fld "curExperiment" go card theExperiment of stack theProject get cd field "Trials" go card "Finder" of stack "LaboratoryToolbox" put it into cd field "Trials" if cd field "Trials" is not empty then repeat with theTrial = 1 to the number of lines in cd field "Trials" put line theTrial of cd field "Trials" into theTrial put theTrial into cd fld "curTrial" go card theTrial of stack theProject find theTarget in cd field "Treatment" put the result into findtest put findtest go card "Finder" of stack "LaboratoryToolbox" unlock screen if findtest <> "Not Found" then put theProject & ":" & theExperiment & ":" & theTrial & ":" & return after cd field "findings" go stack theProject in new window go card "Finder" of stack "LaboratoryToolbox" in new window end if lock screen end repeat end if end repeat end if end repeat beep end mouseUp ,;oodescription*p findings* y projects,  experiments( P trials, _oy curProject._o curExperiment*_oX curTrial6-G Search Journalson mouseUp put empty into cd field "findings" put empty into cd field "Projects" put empty into cd field "Experiments" put empty into cd field "Trials" put empty into cd field "curProject" put empty into cd field "curExperiment" put empty into cd field "curTrial" put cd field "theTarget" into theTarget put theTarget lock screen go card "Home" of stack "LaboratoryToolbox" if field "Projects" is empty then answer "There are no projects to search exit mouseup end if get field "Projects" go card "Finder" of stack "LaboratoryToolbox" put it into cd field "Projects" repeat with theProj = 1 to the number of lines in cd field "Projects" put line theProj of cd field "Projects" into theProject put theProject into cd fld "curProject" go to card "Project" of stack theProject put the result get field "Experiments" go card "Finder" of stack "LaboratoryToolbox" put it into cd field "Experiments" if cd field "Experiments" is not empty then repeat with theExp = 1 to the number of lines in cd field "Experiments" put line theExp of cd field "experiments" into theExperiment put theExperiment into cd fld "curExperiment" go card theExperiment of stack theProject get cd field "Trials" go card "Finder" of stack "LaboratoryToolbox" put it into cd field "Trials" if cd field "Trials" is not empty then repeat with theTrial = 1 to the number of lines in cd field "Trials" put line theTrial of cd field "Trials" into theTrial put theTrial into cd fld "curTrial" go card theTrial of stack theProject find theTarget in cd field "Journal" put the result into findtest put findtest go card "Finder" of stack "LaboratoryToolbox" unlock screen if findtest <> "Not Found" then put theProject & ":" & theExperiment & ":" & theTrial & ":" & return after cd field "findings" go stack theProject in new window go card "Finder" of stack "LaboratoryToolbox" in new window end if lock screen end repeat end if end repeat end if end repeat beep end mouseUp H-Y Search Objectson mouseUp put empty into cd field "findings" put empty into cd field "Projects" put empty into cd field "Experiments" put empty into cd field "Trials" put empty into cd field "curProject" put empty into cd field "curExperiment" put empty into cd field "curTrial" put cd field "theTarget" into theTarget put theTarget lock screen go card "Home" of stack "LaboratoryToolbox" if field "Projects" is empty then answer "There are no projects to search exit mouseup end if get field "Projects" go card "Finder" of stack "LaboratoryToolbox" put it into cd field "Projects" repeat with theProj = 1 to the number of lines in cd field "Projects" put line theProj of cd field "Projects" into theProject put theProject into cd fld "curProject" go to card "Project" of stack theProject put the result get field "Experiments" go card "Finder" of stack "LaboratoryToolbox" put it into cd field "Experiments" if cd field "Experiments" is not empty then repeat with theExp = 1 to the number of lines in cd field "Experiments" put line theExp of cd field "experiments" into theExperiment put theExperiment into cd fld "curExperiment" go card theExperiment of stack theProject get cd field "Trials" go card "Finder" of stack "LaboratoryToolbox" put it into cd field "Trials" if cd field "Trials" is not empty then repeat with theTrial = 1 to the number of lines in cd field "Trials" put line theTrial of cd field "Trials" into theTrial put theTrial into cd fld "curTrial" go card theTrial of stack theProject find theTarget in cd field "DataObjects" put the result into findtest put findtest go card "Finder" of stack "LaboratoryToolbox" unlock screen if findtest <> "Not Found" then put theProject & ":" & theExperiment & ":" & theTrial & ":" & return after cd field "findings" go stack theProject in new window go card "Finder" of stack "LaboratoryToolbox" in new window end if lock screen end repeat end if end repeat end if end repeat beep end mouseUp DThe Data Finder/Sorter performs searches and sorts on project data.createdGeflte Fish Geflte FishCarpCarp Horseradish HorseradishFinderBMAPP !!S`!B A~x~gA>>01 < @1F#1 #1ٷ0gc31W,ȹ2H+0+CARDjk3i= **K R PathNums KAu Pathson mouseWithin if the selectedField is not empty then exit mouseWithin get the scroll of last item of theFields() if it the scroll of first item of theFields() then put the textHeight of last item of theFields() into baseLineSize lock screen repeat with count = 1 to (number of items in theFields() - 1) set scroll of (item count of theFields()) to it end repeat unlock screen end if end mouseWithin function theFields return "card field PathNums,card field Paths" end theFields bv Project 717 845 930 951 1356 1463 1484 1549 1634 1656 1699 2216 `&7v Trial 717 845 930 951 1356 1463 1484 1549 1634 1656 1699 2216 ,%v Experiment`8HO Object 717 845 930 951 1356 1463 1484 1549 1634 1656 1699 2216 *8PHw ObjectNum Kd[u A4 on mouseDown put the textHeight of item 1 of theFields() into baseLineSize put the number of items in theFields() into numItems repeat until the mouse is up get (scroll of last item of theFields()) - baseLineSize lock screen repeat with count = 1 to numItems set scroll of (item count of theFields()) to it end repeat unlock screen end repeat end mouseDown function theFields return "card field PathNums,card field Paths" end theFields du  on mouseDown put the textHeight of item 1 of theFields() into baseLineSize put the number of items in theFields() into numItems repeat until the mouse is up get (scroll of last item of theFields()) + baseLineSize lock screen repeat with count = 1 to numItems set scroll of (item count of theFields()) to it end repeat unlock screen end repeat end mouseDown function theFields return "card field PathNums,card field Paths" end theFields =eJ Zero Entrieson mouseup put empty into cd fld "Paths" put empty into cd fld "PathNums" end mouseup N/e< Go Backon mouseup doMenu "Back" end mouseup PathListBMAPk Ix5>UUl8U32E$U"}U"AU#2eU8q8!mo6a͎FQ1&D_!DP!D2gsfF F F F$F#F$Fs\5U4%2A K(8KC(`5"&9`Y $I33(Y u" ~VBH CARDmn3l@ 2( Project,% Experiment&&7 Trial(8HX Object(8XH PathNumLB7Si GoBackon mouseUp doMenu "Back" end mouseUp!k  Instrumenton mouseDown global theProject, theExperiment, theTrial, theObject, theObjectPath, thePath, fileStatus, theLine -- go to the card associated with the click select the clickLine put the value of the clickLine into cardName wait until the mouse is up if the mouseLoc is not within rect of me then select empty exit mouseDown end if put cd field "Project" of cd "Dispatcher" into theProject put cd field "experiment" of cd "Dispatcher" into theExperiment put cd field "trial" of cd "Dispatcher" into theTrial put cd field "object" of cd "Dispatcher" into theObject put cd field "PathNum" of cd "dispatcher" into theLine put cd field "DataType" of cd "dispatcher" into theType if cardName = QuickCapture then go card "QuickCapture" put theObjectPath & theObject into theFileSpec put theFileSpec into cd field "fspec" else if cardName = QuickRGBCapture then go card "QuickRGBCapture" put theObjectPath & theObject into theFileSpec put theFileSpec into cd field "fspec" else if cardName = "Aaps PICS File Maker" then go card "Aaps PICS File Maker" put theObjectPath & theObject into theFileSpec put theFileSpec into cd field "fileSpec" else if cardName = "DT PICS File Maker" then go card "DT PICS File Maker" put theObjectPath & theObject into theFileSpec put theFileSpec into cd field "fileSpec" else if cardName = "MacAdios Digitize" then go card "MacAdios Digitize" put theObjectPath into cd fld "DiskName" put theObject into cd field "FileName" else if cardName = "MacAdios 8AIN" then go card "MacAdios 8AIN" put theObjectPath into cd fld "DiskName" put theObject into cd field "FileName" else if cardName = "MacAdios Digital I/O" then go card "MacAdios Digital I/O" put theObjectPath into cd fld "DiskName" put theObject into cd field "FileName" else if cardName = "HPLC Digitizer" then go card "HPLC Digitizer" put theObjectPath into cd fld "DiskName" put theObject into cd field "FileName" else go card cardName end if --send mouseUp to button AutoLoad end mouseDown 6!  Handleron mouseDown global theProject, theExperiment, theTrial, theObject, thePath, theObjectPath, fileStatus -- go to the card associated with the click select the clickLine put the value of the clickLine into cardName wait until the mouse is up if the mouseLoc is not within rect of me then select empty exit mouseDown end if put cd field "Project" of cd "Dispatcher" into theProject put cd field "experiment" of cd "Dispatcher" into theExperiment put cd field "trial" of cd "Dispatcher" into theTrial put cd field "object" of cd "Dispatcher" into theObject put cd field "PathNum" of cd "dispatcher" into theLine put cd field "DataType" of cd "dispatcher" into theType if cardName = "Video ClipMaker" then go card "Video ClipMaker" put theObjectPath into cd fld "thePath" put theObject into cd field "theObject" else if cardName = "Video ClipRecorder" then go card "Video ClipRecorder" put theObjectPath into cd fld "thePath" put theObject into cd field "theObject" else go card cardName end if --send mouseUp to button AutoLoad end mouseDown  !ku  Editoron mouseDown global theProject, theExperiment, theTrial, theObject, theObjectPath, thePath, fileStatus -- go to the card associated with the click select the clickLine put the value of the clickLine into cardName wait until the mouse is up if the mouseLoc is not within rect of me then select empty exit mouseDown end if put cd field "Project" of cd "Dispatcher" into theProject put cd field "experiment" of cd "Dispatcher" into theExperiment put cd field "trial" of cd "Dispatcher" into theTrial put cd field "object" of cd "Dispatcher" into theObject put cd field "PathNum" of cd "dispatcher" into theLine put cd field "DataType" of cd "dispatcher" into theType if cardName = "Array Manipulator" then go card "Array Manipulator" put theObjectPath into cd fld "DiskName" put theObject into cd field "FileName" else if cardName = "Array Math" then go card "Array Math" put theObjectPath into cd fld "DiskName" put theObject into cd field "FileName" else if cardName = "Derivative" then go card "Derivative" put theObjectPath into cd fld "DiskName" put theObject into cd field "FileName" else if cardName = "EMG Analyzer" then go card "EMG Analyzer" put theObjectPath into cd fld "DiskName" put theObject into cd field "FileName" else if cardName = "Integrator" then go card "Integrator" put theObjectPath into cd fld "DiskName" put theObject into cd field "FileName" else if cardName = "Peak" then go card "Peak" put theObjectPath into cd fld "DiskName" put theObject into cd field "FileName" else if cardName = "Statistics" then go card "Statistics" put theObjectPath into cd fld "DiskName" put theObject into cd field "FileName" else go card cardName end if --send mouseUp to button AutoLoad end mouseDown  !u  Applicationon mouseDown global theProject, theExperiment, theTrial, theObject, thePath, theObjectPath, fileStatus, theLine -- go to the card associated with the click select the clickLine put the value of the clickLine into AppName wait until the mouse is up if the mouseLoc is not within rect of me then select empty exit mouseDown end if put cd field "Project" of cd "Dispatcher" into theProject put cd field "experiment" of cd "Dispatcher" into theExperiment put cd field "trial" of cd "Dispatcher" into theTrial put cd field "object" of cd "Dispatcher" into theObject put cd field "PathNum" of cd "dispatcher" into theLine put cd field "DataType" of cd "dispatcher" into theType put line theLine of cd field "Paths" of cd "PathList" into thePath put theObjectPath & theObject into theStuff if fileStatus = "Create" then put theStuff into cd field "CurrentPath" select text of cd field "CurrentPath" doMenu "Copy Text" answer "The File Specification is stored on the clipboard" open AppName if the result is not empty then put the result end if else if fileStatus = "Cataloged" then open theStuff with AppName if the result is not empty then put the result end if end if --send mouseUp to button AutoLoad end mouseDown * IY} DataType BS5 Updateon mousedown if the optionkey is down then edit script of target exit mousedown end if put empty into cd field "Instrument" put field "InstrumentTypes" of cd "Instruments" into cd field "Instrument" put empty into cd field "Handler" put field "HandlerTypes" of cd "Handlers" into cd field "Handler" put empty into cd field "Editor" put field "EditorTypes" of cd "Editors" into cd field "Editor" end mousedown (Z Enteron mousedown if the optionkey is down then edit script of target exit mousedown end if put the mouseloc into myPlace put item 1 of myPlace - 20 into horiz put item 2 of myPlace - 10 into vert get PopUpMenu("Instrument;Handler;Editor;Application", 0, vert, horiz) put it into tField ask "What is the name of the new target?" put it into theName if tField = 1 then put theName & Return after cd field "Instrument" else if tField = 2 then put theName & Return after cd field "Handler" else if tField = 3 then put theName & Return after cd field "Editor" else if tField = 4 then put theName & Return after cd field "Application" end if end mousedown ,#= CurrentPathYnj Go To Trialon mouseUp global theTrail, theProject go card theTrial of stack theProject in new window end mouseUp1 ColorImage SuperScope MacPaint Motion:Documents:Debbie birdshit Pict2 File Geflte FishSalmon HorseradishAaps PICS File Maker DT PICS File Maker Function Generator HPLC Digitizer MacAdios 8AIN MacAdios Digital I/O MacAdios Digitize QuickCapture QuickRGBCapture `Color EVS-900 Controller S4Program Sony Controller Terminal Video ClipMaker Video ClipRecorder Array Derivative Array Integrator Array Manipulator Array Math Array Peaks Array Statistics EMG Analyzer Histogram Load and Save arrays Scattergram DispatcherBMAPn   @! !0 c U@ *@@@(    @1Q@q @1 q-qfHqBOqBH qfLq8G@11 #!'M9ه6(}xϯ(8@"3@<"3'$"ȏ]J8Q QQQQDQQDQ9Aa1 a qa $Ha $a $a$aq111QQLQHQQQAAA!@Q?ꪪ @c!0UUUUUUUUUU@@  !60 K @06ٛ0sbo,y/<o-w@2@@<4#4#3 2_ !uTEz~}C T "8pf`"(PDBs/nnqlaEH a)B000Y, 0Dg lg4- 3q qfWJ@(@ nIPn_.d_n+VdnhL.2@ 5 ~~ ~ n n ~a !~A  ~@ ~@~A#~G!. .~y~Ȍ~H~~~H~mg/PPc2fP""BP"~&?X""@D Xb"bgAE^?mq  2Fd@ H!D ~H"DD 4V$J (8qs 0G"apa$ddWØR8 pW8xG H8q7@`^ss 0A0@!^ǜ^$H^THOIOjppz @`1z @` j @ j M0j?"z D"z D z D z D"1jpraeRHB@ amVV Qkf!ߨBfb I""PQf߸( BHR]B)0 2ũ0SRT ( QpLu@T(`@ Bε   x`G9B8u(s kQpB8@p @ jH@B;VxJ x24:Tb  |21jtn t8PHD2F)x/TN@A3AT 2:&@P 2kh@E# Ax2@#@ Ac 0 "1ë$%R0ldAVn#A[u`#DP"0$D@A# ~1g0 D2b#) ) b>) + q>`00PHAI5b# Hx 2`# dD@ZlA5i&3&`J Vb߸i"$ A){`IHJi>"'"B  @*@ b`PYQM$ A`# i;s32U]\I"AIb2@2N#$U$x2Q- A{cA)22@ D@ m2N# 8JTb#cI* ) } ATh#/@BBRЀ"tԪHSr~ y>AB/ "%yjDSBEh"Z¤@VEg’J UI'©'(!UjT”ZVO@RTxmU߸QP "PDHB"i "@Qm.bz"BKU<{” X<[p$P).#’Q@K~@ }I%׼0.g26̊c #`#Bu'0" I0 |3g L($Bf{’ w_IP{ @Ԫ„eB*Pz* t`ĔJHuBP¥@jޠ?NB% {O" ª@5AWI";vE]h%H8|!o߿ИNAD’@HE~I(?unR$r(QnIhjި’zY!o 밄W1 `"ߨ ȍ3Ђbd@ 9:h Ho¿* R[@h¿~ ѯt{@ĺKQ&hի3x 6@kBn(E"N@BbHr" oh(q%Ŀڄ¿h)"B"FnB"bb܂,'!b$$ȂGe !CARDw{3*#,* p~i Reset Counteron mouseUp VCRcmd mRecal VCRcmd mStatus put the Result into cd field "Status" send mouseUp to button "GetCounter" end mouseUp0LRi Playon mouseUp TxS "2C","08", a, 5 sonycdrvr mReadStatus put the Result into field "Status" end mouseUp0.SL Stopon mouseUp TxS "0C","08", a, 5 sonycdrvr mReadStatus put the Result into field "Status" send mouseUp to button "GetCounter" end mouseUpI.nL Pauseon mouseUp VCRcmd mPause VCRcmd mREadStatus put the Result into field "Status" send mouseUp to button "GetCounter" end mouseUp 6T/~ New Buttonon mouseUp go to card "Aaps EVS-900 Controller" in stack "Lab Toolbox Help" in a new window end mouseUpJ @S<< prevon mouseUp doMenu "prev" end mouseUpJ Uh@ nexton mouseUp doMenu "Next" end mouseUpRj}@ firston mouseUp go card "Instruments" end mouseUpg,w~ GetCounteron mouseUp VCRcmd mReadPos put the Result into theFrame put theFrame into cd field "CurFrm" put FrmToHMS(theFrame) into cd field "CurHMS" put FrmToCTR(theFrame) into cd field "CurCtr" end mouseUpFZ GoToon mouseUp put cd field TargetHMS into theHMS put HMStoFrm(theHMS) into theFrm put theFrm into cd field "TargetFrm" put FrmtoCtr(theFrm) into cd field "TargetCTR" vcrCMD mSearchTo, theFRM VCRcmd mReadStatus put the Result into field "Status" send mouseUp to button "GetCounter" end mouseUpFZ GoToon mouseUp put cd field TargetCtr into theCtr put CtrtoFrm(theCtr) into theFrm put theFrm into cd field "TargetFrm" put FrmtoHMS(theFrm) into cd field "TargetHMS" vcrCMD mSearchTo, theFRM VCRcmd mReadStatus put the Result into field "Status" send mouseUp to button "GetCounter" end mouseUp0Z GoToon mouseUp put cd field TargetFrm into theFrm put FrmtoCtr(theFrm) into cd field "TargetCTR" put FrmtoHMS(theFrm) into cd field "TargetHMS" vcrCMD mSearchTo, theFRM VCRcmd mReadStatus put the Result into field "Status" send mouseUp to button "GetCounter" end mouseUpY do iton mouseUp do cd fld cmd1 VCRcmd mStatus put the Result into cd field "Status" end mouseUp ("/6~ CurHMS(9/M~ CurCtr(P/d~ CurFrm* Y TargetHMS* Y TargetCtr* Y TargetFrm&[ cmd1(}Status,  SmallScreen$r; Make Dithered PICSon mouseDown -- the microTV XCMD will report an error if the power is not on -- when it is asked for a screen capture. Rather that get waste -- time letting it tell report that the Power was off, this script -- checks tha global. global ProgressPointer, RemoveProgress set cursor to watch if cd field "fileSpec" is empty then ask file "What is the PICS filespec? put it into theFile put theFile into cd field "fileSpec" else put cd field "fileSpec" into theFile end if put cd field "numFrames" into theFrames CreateRes theFile put OpenRes (theFile) into refNum Progress 1, "Now capturing PICS frames" repeat with icount = 1 to theFrames progress 2, (icount/theFrames)*100 mtvGrabDitherFrame put GetScrap ("PICT") into scrapHandle put 127 + icount into resNum put "Frame" & icount into resName WriteRes refnum, scrapHandle, "PICT", resNum, resName vcrCMD mvari, 1 wait 30 mtvPicture FALSE mtvTakeEffect mtvPicture TRUE mtvTakeEffect end repeat progress 3 CloseRes(refNum) --put the rect of card button "SmallScreen" into scrap --put item 1 of scrap into rectLeft --put item 2 of scrap into rectTop --doMenu "paste Picture" --set dragspeed to 50 --drag from 0,0 to rectLeft,rectTop choose browse tool end mouseDown & Title&  ITitle*!`tr numFramesR#Jl/ New Buttonon mouseUp vcrCmd mvari, -1 end mouseUpR$JKli New Buttonon mouseUp vcrCmd mvari, 1 end mouseUp%=rT Make Color PICSon mouseDown -- the microTV XCMD will report an error if the power is not on -- when it is asked for a screen capture. Rather that get waste -- time letting it tell report that the Power was off, this script -- checks tha global. global ProgressPointer, RemoveProgress set cursor to watch if cd field "fileSpec" is empty then ask file "What is the PICS filespec? put it into theFile put theFile into cd field "fileSpec" else put cd field "fileSpec" into theFile end if put cd field "numFrames" into theFrames CreateRes theFile put OpenRes (theFile) into refNum Progress 1, "Now capturing PICS frames" repeat with icount = 1 to theFrames progress 2, (icount/theFrames)*100 mtvGrabFrame put GetScrap ("PICT") into scrapHandle put 127 + icount into resNum put "Frame" & icount into resName WriteRes refnum, scrapHandle, "PICT", resNum, resName vcrCMD mvari, 1 wait 30 mtvPicture FALSE mtvTakeEffect mtvPicture TRUE mtvTakeEffect end repeat progress 3 CloseRes(refNum) --put the rect of card button "SmallScreen" into scrap --put item 1 of scrap into rectLeft --put item 2 of scrap into rectTop --doMenu "paste Picture" --set dragspeed to 50 --drag from 0,0 to rectLeft,rectTop choose browse tool end mouseDown 'r  Show PICSon mouseUp -- the microTV XCMD will report an error if the power is not on -- when it is asked for a screen capture. Rather that get waste -- time letting it tell report that the Power was off, this script -- checks that global. global ThisBoard global ProgressPointer, RemoveProgress set cursor to watch if cd field "fileSpec" is empty then answer file "What is the PICS filespec? put it into theFile put theFile into cd field "fileSpec" else put cd field "fileSpec" into theFile end if put the rect of card button "SmallScreen" into theRect put 10 into loops put 9 into speed if TVStatus = "TRUE" then TVOff end if ShowPICs theFile,theRect,loops,speed if TVStatus = "FALSE" then TVOn end if choose browse tool end mouseUp *( fileSpecF)/5 TV Onon mouseUp send TVOn end mouseUpH*9/i TV Offon mouseUp send TVOff end mouseUp+y+} Go To Trialon mouseUp global theTrail, theProject go card theTrial of stack theProject in new window end mouseUpN,ڀ SelectDeckon mouseDown if the optionkey is down then edit script of target exit mousedown end if put the mouseloc into myPlace put item 1 of myPlace into horiz put item 2 of myPlace into vert get PopMenu(vert, horiz,"EV-C3;EV-S900;SLV-757;CCD-V5000") if it = 1 then VCRcmd mInit,EVC3,a,"",src else if it = 2 then VCRcmd mInit,EVS900,a,"",src else if it = 3 then VCRcmd mInit,SLV757,a,"",src else if it = 4 then VCRcmd mInit,CCDV5000,a,"",src end if VCRcmd mstatus put the Result into cd field "Status" send mouseUp to cd button "GetCounter" end mouseDown AtSearchPoint0 00:00:000EV-S900 ControllerAapps PICS File Maker105750 00:00:3520qErr err: SonySAapps PICS File Makeron OpenCard end OpenCard on CloseCard if TVStatus = "TRUE" then send TVOff end if VCRcmd mClose end CloseCard BMAP _q& ( L)    ~~ ~ n n ~a !~A  ~@ ~@~A#~G!. .~y~Ȍ~H~~~H~mg/PPc2fP""BP"~P""@Pb"bo÷3<7?U(U E $x68ك $ c LfL "H" $bx $ D "CHP _P((+ jppz @`1z @` j @ j M0j?"z D"z D z D z D"1jpraeRHB@ amVV Qkf!ߨBfb I""PQf߸( BHR]B)0 2ũ0SRT ( QpLu@T(`@ Bε   x`G9B8u(s kQpB8@p @ jH@B;VxJ x24:Tb  |21jtn t8PHD2F)x/TN@A3AT 2:&@P 2kh@E# Ax2@#@ Ac 0 "1ë$%R0ldAVn#A[u`#DP"0$D@A# ~1g0 D2b#) ) b>) + q>`00PHAI5b# Hx 2`# dD@ZlA5i&3&`J Vb߸i"$ A){`IHJi>"'"B  @*@ b`PYQM$ A`# i;s32U]\I"AIb2@2N#$U$x2Q- A{cA)22@ D@ m2N# 8JTb#cI* ) } ATh#/@BBRЀ"tԪHSr~ y>AB/ "%yjDSBEh"Z¤@VEg’J UI'©'(!UjT”ZVO@RTxmU߸QP "PDHB"i "@Qm.bz"BKU<{” X<[p$P).#’Q@K~@ }I%׼0.g26̊c #`#Bu'0" I0 |3g L($Bf{’ w_IP{ @Ԫ„eB*Pz* t`ĔJHuBP¥@jޠ?NB% {O" ª@5AWI";vE]h%H8|!o߿ИNAD’@HE~I(?unR$r(QnIhjި’zY!o 밄W1 `"ߨ ȍ3Ђbd@ 9:h Ho¿* R[@h¿~ ѯt{@ĺKQ&hի3x 6@kBn(E"N@BbHr" oh(q%Ŀڄ¿h)"B"FnB"bb܂,'!b$$ȂGe !`CARDS5YL3TT& 3TitleTUh@ nexton mouseUp go to card "Chronology" end mouseUp."0 WhichChannel&C^ SaveFileon mouseUp global theArray1,Er, howbig if theArray1 = 0 then put "There is no array to Save to Disk" exit mouseup end if put card field DiskName into disk put card field FileName into file put card Field "ArraySize" into howbig put howbig * 2 into size --this is the number of bytes put card field "GWICode" into ftype put 0 into Er put card field FileName&"/Ch0" into file BSave disk, --disk file, --file theArray1, --array pointer ftype, --GWI File Code size, --number of bytes Er --Er array put DisposeIntegerArray(theArray1) into ashcan put "BSave Returned" && Er end mouseUp ( 2B GWICode( We5 SampInt. k|L DisposeResult* M?\| ArraySize* %4 DiskName*8G FileName(CQ theBankR@S<< prevon mouseUp go card "Instruments" end mouseUpRj}@ firston mouseUp go card "Instruments" end mouseUp "= Digitizeon mouseUp global theArray1,Er, howbig put card Field "ArraySize" into howbig put NewIntegerArray(howbig) into theArray1 put newZeroArray(800) into Er -- create Er array, zero in all elements --next set the elements of the Er array: setIntegerElement Er,1,16 --display mode setIntegerElement Er,2,1 --options, SCSIio ignores this setIntegerElement Er,3,2 --operational 0=norm,1=update,2=demo,3=bench setIntegerElement Er,8,1 --points per pix, if negative pix per point setIntegerElement Er,10,0 --0=draw lines between points, 1=dots setIntegerElement Er,11,0 --1=grid,0= no grid setIntegerElement Er,12,1 --0=not clear before first trace,1=clear setIntegerElement Er,13,0 --0=not clear between traces,1=clear setIntegerElement Er,14,1 --0=dont save extra points setIntegerElement Er,16,0 --0=no trigger,2&3=externl,4&5=auto,8&9=norm setIntegerElement Er,17,0 --wave number for trigger, 0 to 7 setIntegerElement Er,19,0 --trigger threshold, see manual setIntegerElement Er,25,0 --interrupt 0=install, 1=de-install, 2=status put card field "SampInt" into interrupt --if interrupt < 6 then --put 6 into card field "SampInt" --end if setIntegerElement Er,24,interrupt --interrupt rate 1/60 sec setIntegerElement Er,40,1 --Dig Loops Low setIntegerElement Er,41,0 --Dig Loops High setIntegerElement Er,319,1 -- channel0 draw on/off setIntegerElement Er,256,2 -- plot display region left setIntegerElement Er,257,382 -- plot display region right setIntegerElement Er,258,130 -- plot display region top setIntegerElement Er,259,286 -- plot display region bottom setIntegerElement Er,266,2048 -- plot top value setIntegerElement Er,267,-2048 -- plot bottom value put card field "WhichChannel" into slot put 1 into period put card field "theBank" into bank Digitize bank, --bank -1, --trigger howbig, --points period, --period theArray1,0,0,0,0,0,0,0, --wave arrays 0-7, use 0 for unused slot, --Nubus Slot Er --Er array put "Dig " & getIntegerElement(Er,0) into card field "DisposeResult" --setIntegerElement Er,25,2 --interrupt 0=install, 1=de-install, 2=status --put getIntegerElement(Er,25) into card field "MultIndx" --put getIntegerElement(Er,48) into card field "PtsHi" --put getIntegerElement(Er,49) into card field "PtsLo" --set cursor to busy until mouse up wait until the mouse is up -- in case Digitiz was interupted by mouse end mouseUp '? h  New Buttonon mouseUp visual effect dissolve go card "HPLC Digitizer" in stack "Lab Toolbox Help" end mouseUpd.~ Get XCMDson mouseUp GetResources "Motion:GWI XCMD Sources:DataManipulationXCMD's:BSave","XCMD" GetResources "Motion:GWI XCMD Sources:DataManipulationXCMD's:BLoad","XCMD" GetResources "Motion:GWI XCMD Sources:TurboDriverXCMD's:Digitize","XCMD" GetResources "Motion:GWI XCMD Sources:DataManipulationXCMD's:FileLen","XCFN" GetResources "Motion:GWI XCMD Sources:ArrayXCMD/XCFN's:GetIntegerElement","XCMD" GetResources "Motion:GWI XCMD Sources:ArrayXCMD/XCFN's:SetIntegerElement","XCMD" GetResources "Motion:GWI XCMD Sources:ArrayXCMD/XCFN's:GetLong","XCFN" send OpenStack end mouseUpat Go To Trialon mouseUp global theTrail, theProject go card theTrial of stack theProject in new window end mouseUpScrolling Digitizer Instrument:02200115Dig 0Scrolling DigitizerBMAPYL @e%x:3 & S(S SP##PS Sfd3$ @ 1 /B$?cND?` `?x? ?e ?p4"  4y 4 4 x4A 84!! 8@0;dr0;439`4z<*O$ @OD Ostx tDB@ DBC unLJ Cl % %;# D3@tpC4 ?COLDOH@ODO?HODC84Da0D D1@DD@D S뻸⣁$$q T !ǀH@bpǀDPSp,88t ;xC p@3@PW|!!cpWB'2""@# 8DW b"!$ !DW"!'!(h'*@ 3l2@298Ww,qs8u p ~C"C  Yc  $ㄜ howwide then put pppx * howwide into howbig put howbig into card field "ArraySize" end if --next set the elements of the Er array: setIntegerElement Er,1,0 --display mode setIntegerElement Er,2,0 --options, SCSIio ignores this setIntegerElement Er,3,0 --operational 0=norm,1=update,2=demo,3=bench setIntegerElement Er,8,pppx --points per pix, if negative pix per point setIntegerElement Er,10,0 --0=draw lines between points, 1=dots setIntegerElement Er,11,0 --1=grid,0= no grid setIntegerElement Er,12,1 --0=not clear before first trace,1=clear setIntegerElement Er,13,1 --0=not clear between traces,1=clear setIntegerElement Er,14,1 --0=dont save extra points setIntegerElement Er,16,card field "Trigger" --0=no trigger,2&3=externl,4&5=auto,8&9=norm setIntegerElement Er,17,0 --wave number for trigger, 0 to 7 setIntegerElement Er,19,2047 --trigger threshold, see manual put card field "Loops" into loops setIntegerElement Er,40,loops --Dig Loops Low setIntegerElement Er,41,0 --Dig Loops High setIntegerElement Er,319,1 -- channel0 draw on/off setIntegerElement Er,256,2 -- plot display region left setIntegerElement Er,257,382 -- plot display region right setIntegerElement Er,258,130 -- plot display region top setIntegerElement Er,259,270 -- plot display region bottom setIntegerElement Er,266,4096 -- plot top value setIntegerElement Er,267,0 -- plot bottom value setIntegerElement Er,383,1 -- channe1l draw on/off setIntegerElement Er,320,2 -- plot display region left setIntegerElement Er,321,382 -- plot display region right setIntegerElement Er,322,208 -- plot display region top setIntegerElement Er,323,286 -- plot display region bottom setIntegerElement Er,330,2048 -- plot top value setIntegerElement Er,331,-2048 -- plot bottom value put card field "SampInt" into ISI put 10 into DeltaT put ISI div DeltaT into period put 40 into mode SCSIio --call the SCSIio XCMD with the following parameters: -(card field "SCSI Address"), --SCSI ID or Address 40, --mode howbig, --points (card field "loops"), --loops period, --period theArray1,0,0,0,0,0,0,0, --wave arrays 0-7, use 0 for unused Er --Er array put "Dig " & getIntegerElement(Er,0) into card field "DisposeResult" put DisposeIntegerArray(Er) into ashcan wait until the mouse is up -- in case Digitiz was interupted by mouse end mouseUp .2D/ display mode( EV/ GWICode. j}_ DisposeResult* W@j}ArraySize* (8} DiskName*EU} FileName&hz LoopsJ@S<< prevon mouseUp domenu "prev" end mouseUpRj}@ firston mouseUp go card "Instruments" end mouseUp Pop-up NoteFld 21on enterInField hide me send "hideShowPopUp" to card button id 21 end enterInFieldP5vKh  Press here for Helpfunction cardNameData -- this handler stores the name of the card to go to -- user. DO NOT MOVE THE POSITION OF THIS HANDLER! return "INFORMATION" end cardNameData on mouseUp if the optionKey is down then doLink else go to card cardNameData() if the result is not empty then answer "Can't find card" && "" & cardNameData() & "" -- end if end mouseUp on newButton doLink end newButton on doLink ask "Enter the name of the card you want this button to take you to:" -- if it is not empty then set cursor to watch updateCardNameData it put "Go to card" && "" & it & "" into theName -- set name of me to theName adjustBtnSize theName end if end doLink on adjustBtnSize theName if length(theName) * 10 > 60 then set width of me to length(theName) * 10 else set width of me to 60 end adjustBtnSize on updateCardNameData theName -- write name back to the data function handler in this script get script of me put quote & theName & quote into char offset(quote,it) to (offSet("end",it) - 2) of it set script of me to it end updateCardNameData9K SaveFileon mouseUp global theArray1,theArray2,Er, howbig if theArray1 = 0 or theArray2 = 0 then put "There is no array to Save to Disk" exit mouseup end if put card field DiskName into disk put card field FileName into file put card Field "ArraySize" into howbig put howbig * 2 into size --this is the number of bytes put card field "GWICode" into ftype put 0 into Er put card field FileName&"/Ch0" into file BSave disk, --disk file, --file theArray1, --array pointer ftype, --GWI File Code size, --number of bytes Er --Er array put card field FileName&"/Ch1" into file BSave disk, --disk file, --file theArray2, --array pointer ftype, --GWI File Code size, --number of bytes Er --Er array --put DisposeIntegerArray(theArray1) into ashcan -- put DisposeIntegerArray(theArray2) into ashcan put "BSave Returned" && Er end mouseUp (Wh/ SampInt( j'}9 Trigger#M^ Go To Trialon mouseUp global theTrail, theProject go card theTrial of stack theProject in new window end mouseUpSCSI Digital I/O-202HD40:GWStuff:Bugpoop228010502FG 701 Instrument:SCSI Digital I/OBMAPC 3i3|i: L :0`  ;;!@,;rHH  2arx A0ޝR ـC *2 R$IH"930`rB@30xf@124~"xP)H⪁B PB`R(I"@#AjCO`#r "&`% 3HR `3R Rґj@3Dl:xr2@ r' b 0((#2 $Hs]@)H#xDl8r"@2P"B`. " , 2 K@ OJ*/" 2/a/ϏpB2p3"g/02D X`t "l(Bu3ĚB0VBRUJC  L$)   ;@( 2@ -93 J 7a("(K) XXI+@Xԭ $HXq2I>@ q)+HH  M90 DX*)(BlXR$% W{'9{|8rTJ@) I$-H0*1F0 @ + +0+B$V 0Bd| +#  + 2` ]S` ]O> N R . S >P` #/ @!@ͱ@ x"@"DG2" A&LFR"xX/^<9 1 !0L@Xsy?s86p@*L@*!*!&x Sq2EfLdCARDM3 &:TitleHUh@ nexton mouseUp doMenu Next end mouseUp.1/ SCSI Address 2 4 Digitizeon mouseUp global theArray1,theArray2,Er, howbig put card Field "ArraySize" into shit put NewIntegerArray(shit) into theArray1 put NewIntegerArray(shit) into theArray2 put newZeroArray(800) into Er -- create Er array, zero in all elements put 380 into howwide put howbig div howwide into pppx if pppx = 0 then put 1 into pppx end if if howbig > howwide then put pppx * howwide into howbig --put howbig into card field "ArraySize" end if --next set the elements of the Er array: setIntegerElement Er,1,card field "display mode" --display mode setIntegerElement Er,2,0 --options, SCSIio ignores this setIntegerElement Er,3,0 --operational 0=norm,1=update,2=demo,3=bench setIntegerElement Er,8,pppx --points per pix, if negative pix per point setIntegerElement Er,10,0 --0=draw lines between points, 1=dots setIntegerElement Er,11,0 --1=grid,0= no grid setIntegerElement Er,12,1 --0=not clear before first trace,1=clear setIntegerElement Er,13,1 --0=not clear between traces,1=clear setIntegerElement Er,14,card field "save points" --0=dont save extra points setIntegerElement Er,16,card field "Trigger" --0=no trigger,2&3=externl,4&5=auto,8&9=norm setIntegerElement Er,17,0 --wave number for trigger, 0 to 7 setIntegerElement Er,19,2047 --trigger threshold, see manual put card field "Loops" into loops setIntegerElement Er,40,loops --Dig Loops Low setIntegerElement Er,41,0 --Dig Loops High setIntegerElement Er,319,1 -- channel0 draw on/off setIntegerElement Er,256,2 -- plot display region left setIntegerElement Er,257,382 -- plot display region right setIntegerElement Er,258,130 -- plot display region top setIntegerElement Er,259,207 -- plot display region bottom setIntegerElement Er,266,4096 -- plot top value setIntegerElement Er,267,0 -- plot bottom value setIntegerElement Er,383,1 -- channe1l draw on/off setIntegerElement Er,320,2 -- plot display region left setIntegerElement Er,321,382 -- plot display region right setIntegerElement Er,322,208 -- plot display region top setIntegerElement Er,323,286 -- plot display region bottom setIntegerElement Er,330,2048 -- plot top value setIntegerElement Er,331,-2048 -- plot bottom value --put card field "SampInt" into ISI --put 10 into DeltaT --put ISI into period put card field "period" into period SCSIio -- call the SCSIio XCMD with the following parameters: -(card field "SCSI Address"), --SCSI ID or Address 39+1, --mode shit, --points (card field "loops"), --loops period, --period theArray1,0,0,0,0,0,0,0, --wave arrays 0-7, use 0 for unused Er --Er array put "Dig " & getIntegerElement(Er,0) into card field "DisposeResult" --put DisposeIntegerArray(theArray1) into ashcan --put DisposeIntegerArray(theArray2) into ashcan --put 0 into theArray1 --put DisposeIntegerArray(theArray2) into field "DisposeResult" put DisposeIntegerArray(Er) into ashcan --put DisposeIntegerArray(theArray1) into field "DisposeResult" --put DisposeIntegerArray(theArray2) into field "DisposeResult" --put DisposeIntegerArray(Er) into card field "DisposeResult" wait until the mouse is up -- in case Digitiz was interupted by mouse end mouseUp 7J SaveFileon mouseUp global theArray1,theArray2,Er, howbig if theArray1 = 0 or theArray2 = 0 then put "There is no array to Save to Disk" exit mouseup end if put card field DiskName into disk put card field FileName into file put card Field "ArraySize" into howbig put howbig * 2 into size --this is the number of bytes put card field "GWICode" into ftype put 0 into Er put card field FileName&"/Ch0" into file BSave disk, --disk file, --file theArray1, --array pointer ftype, --GWI File Code size, --number of bytes Er --Er array --put card field FileName&"/Ch1" into file --BSave --disk, --disk --file, --file --theArray2, --array pointer --ftype, --GWI File Code --size, --number of bytes --Er --Er array --put DisposeIntegerArray(theArray1) into ashcan -- put DisposeIntegerArray(theArray2) into ashcan put "BSave Returned" && Er end mouseUp .2D. display mode( EV. GWICode. j}_ DisposeResult* M?`|ArraySize* $7}DiskName*8K|FileName&l~ LoopsR@S<< prevon mouseUp go card "Instruments" end mouseUpRj}@ firston mouseUp go card "Instruments" end mouseUptWzl h  helpon mouseUp visual effect barn door open very slow go second card end mouseUp (m}> Trigger(Xh. period,CyR save pointsM` Go To Trialon mouseUp global theTrail, theProject go card theTrial of stack theProject in new window end mouseUpMacAdios SCSI 8ain Instrument:292HD40:Conservation:Bugpoop1001041Dig 0MacAdios SCSI 8AINBMAP 7bD#6|n$ ( Dsx s" #P44XÎ#Sxx#"BS0p2?> S`2?/ #S$O #44ÎO$ < < <% L$ L>9 BBR RE&$ D3dfwb l"<9_Ϣ &>5g`"4 83ed,b%H$,8;< 0 1 0! < ? < < <; s U8C ("P"$s"$ $ q T !ǀH@bpǀ DP _p, 88t ; S @ D SB04 SBI$LSDBSxBS@BS@H$NS14;?@(380+$(@3DX |8gGN, ,a``W "Dg8ȑpp1 W!@gH! Q#0x&<9(HY|*-H D9 W ,8g8 ppc8` :P :Pp*O+CARD1B38*. &!6TitleTUh@ nexton mouseUp go to card "Chronology" end mouseUp.1/ WhichChannel *1C Digitizeon mouseUp global theArray1,theArray2,Er, howbig put card Field "ArraySize" into howbig put NewIntegerArray(howbig) into theArray1 put NewIntegerArray(howbig) into theArray2 put newZeroArray(800) into Er -- create Er array, zero in all elements put 380 into howwide put howbig div howwide into pppx if pppx = 0 then put 1 into pppx end if if howbig > howwide then put pppx * howwide into howbig put howbig into card field "ArraySize" end if --next set the elements of the Er array: setIntegerElement Er,1,card field "display mode" --display mode setIntegerElement Er,2,0 --options, SCSIio ignores this setIntegerElement Er,3,0 --operational 0=norm,1=update,2=demo,3=bench setIntegerElement Er,8,pppx --points per pix, if negative pix per point setIntegerElement Er,10,0 --0=draw lines between points, 1=dots setIntegerElement Er,11,0 --1=grid,0= no grid setIntegerElement Er,12,1 --0=not clear before first trace,1=clear setIntegerElement Er,13,1 --0=not clear between traces,1=clear setIntegerElement Er,14,0 --0=dont save extra points setIntegerElement Er,16,0 --0=no trigger,2&3=externl,4&5=auto,8&9=norm setIntegerElement Er,17,0 --wave number for trigger, 0 to 7 setIntegerElement Er,19,2047 --trigger threshold, see manual put card field "Loops" into loops setIntegerElement Er,40,loops --Dig Loops Low setIntegerElement Er,41,0 --Dig Loops High setIntegerElement Er,319,1 -- channel0 draw on/off setIntegerElement Er,256,2 -- plot display region left setIntegerElement Er,257,382 -- plot display region right setIntegerElement Er,258,130 -- plot display region top setIntegerElement Er,259,207 -- plot display region bottom setIntegerElement Er,266,256 -- plot top value setIntegerElement Er,267,-256 -- plot bottom value setIntegerElement Er,383,1 -- channe1l draw on/off setIntegerElement Er,320,2 -- plot display region left setIntegerElement Er,321,382 -- plot display region right setIntegerElement Er,322,208 -- plot display region top setIntegerElement Er,323,286 -- plot display region bottom setIntegerElement Er,330,256 -- plot top value setIntegerElement Er,331,-256 -- plot bottom value put card field "WhichChannel" into slot put card field "SampInt" into ISI put 10 into DeltaT put ISI div DeltaT into period put card field "theBank" into bank Digitize bank, --bank -1, --trigger howbig, --points period, --period theArray1,theArray2,0,0,0,0,0,0, --wave arrays 0-7, use 0 for unused slot, --Nubus Slot Er --Er array put "Dig " & getIntegerElement(Er,0) into card field "DisposeResult" --put DisposeIntegerArray(theArray1) into ashcan --put DisposeIntegerArray(theArray2) into ashcan --put 0 into theArray1 -- put DisposeIntegerArray(theArray2) into field "DisposeResult" put DisposeIntegerArray(Er) into ashcan -- put DisposeIntegerArray(theArray1) into field "DisposeResult" -- put DisposeIntegerArray(theArray2) into field "DisposeResult" -- put DisposeIntegerArray(Er) into ard field "DisposeResult" wait until the mouse is up -- in case Digitiz was interupted by mouse end mouseUp DV SaveFileon mouseUp global theArray1,theArray2,Er, howbig if theArray1 = 0 or theArray2 = 0 then put "There is no array to Save to Disk" exit mouseup end if put card field DiskName into disk put card field FileName into file put card Field "ArraySize" into howbig put howbig * 2 into size --this is the number of bytes put card field "GWICode" into ftype put 0 into Er put card field DiskName & card field FileName&"/Ch0" into file BSave disk, --disk file, --file theArray1, --array pointer ftype, --GWI File Code size, --number of bytes Er --Er array put card field DiskName & card field FileName&"/Ch1" into file BSave disk, --disk file, --file theArray2, --array pointer ftype, --GWI File Code size, --number of bytes Er --Er array put DisposeIntegerArray(theArray1) into ashcan put DisposeIntegerArray(theArray2) into ashcan put "BSave Returned" && Er end mouseUp .2D/ display mode( EV/ GWICode( Wh2 SampInt. j}_ DisposeResult* M?`|ArraySize* $7} DiskName*8K| FileName&l~ Loops(m? theBankR@S<< prevon mouseUp go card "Instruments" end mouseUpRj}@ firston mouseUp go card "Instruments" end mouseUpn h  MacAdios Digitize Helpon mouseUp go card "MacAdios Digitize Help" end mouseUpZ0 FIFO Digitizeon mouseUp global theArray1,theArray2,Er, howbig put empty into card field "DisposeResult" put card Field "ArraySize" into howbig put NewIntegerArray(howbig) into theArray1 put NewIntegerArray(howbig) into theArray2 put newZeroArray(800) into Er -- create Er array, zero in all elements put 380 into howwide put howbig div howwide into pppx if pppx = 0 then put 1 into pppx end if if howbig > howwide then put pppx * howwide into howbig put howbig into card field "ArraySize" end if --next set the elements of the Er array: put 0 into Iamfalse put 1 into Iamtrue put 0 into ErrorINDX put 1 into ModeINDX put 0 into ModeREG put 1 into ModeOSC put 2 into OptionsINDX put 0 into OptNone put 3 into OpModeINDX put 0 into OpModeNorm put 1 into OpModeUpdate put 4 into OpModeNoAbort put 8 into pppINDX put 10 into DotsINDX put 11 into GridINDX put 12 into FirstClearINDX put 13 into ClearINDX put 16 into TrigINDX put 0 into TrigNone put 2 into TrigExtPos put 3 into TrigExtNeg put 4 into TrigAutoPos put 5 into TrigAutoNeg put 8 into TrigNormPos put 9 into TrigNormNeg put 18 into TrDevTyINDX put 19 into TrThreshINDX put 60 into TrDelayINDX put 62 into FifoHiINDX put 63 into FifoLoINDX put 61 into FifoComINDX put 0 into Setup put -1 into InterSetup put 1 into FillArray put 2 into TranAvailable put 3 into AppAvailable put 48 into PtsHiINDX put 49 into PtsLowINDX put 0 into bank put -2 into trig setIntegerElement Er,1,card field "display mode" --display mode setIntegerElement Er,2,0 --options, SCSIio ignores this setIntegerElement Er,3,0 --operational 0=norm,1=update,2=demo,3=bench setIntegerElement Er,8,pppx --points per pix, if negative pix per point setIntegerElement Er,10,0 --0=draw lines between points, 1=dots setIntegerElement Er,11,1 --1=grid,0= no grid setIntegerElement Er,12,1 --0=not clear before first trace,1=clear setIntegerElement Er,13,1 --0=not clear between traces,1=clear setIntegerElement Er,14,1 --0=dont save extra points setIntegerElement Er,16,0 --0=no trigger,2&3=externl,4&5=auto,8&9=norm setIntegerElement Er,17,0 --wave number for trigger, 0 to 7 setIntegerElement Er,19,1024 --trigger threshold, see manual put card field "Loops" into loops setIntegerElement Er,40,loops --Dig Loops Low setIntegerElement Er,41,0 --Dig Loops High setIntegerElement Er,2*OpModeINDX,OpModeNorm setIntegerElement Er,2*TrigINDX,TrigNormPos setIntegerElement Er,2*TrDevTyINDX, 0 setIntegerElement Er,2*TrThreshINDX, 0 setIntegerElement Er,2*TrDelayINDX, -30 setIntegerElement Er,2*FifoHiINDX, 0 setIntegerElement Er,2*FifoLoINDX, 900 setIntegerElement Er,2*FifoComINDX, Setup -- channel0 draw on/off setIntegerElement Er,256,2 -- plot display region left setIntegerElement Er,257,382 -- plot display region right setIntegerElement Er,258,130 -- plot display region top setIntegerElement Er,259,207 -- plot display region bottom setIntegerElement Er,266,300 -- plot top value setIntegerElement Er,267,-300 -- plot bottom value setIntegerElement Er,383,1 -- channe1l draw on/off setIntegerElement Er,320,2 -- plot display region left setIntegerElement Er,321,382 -- plot display region right setIntegerElement Er,322,208 -- plot display region top setIntegerElement Er,323,286 -- plot display region bottom setIntegerElement Er,330,300 -- plot top value setIntegerElement Er,331,-300 -- plot bottom value put cd field "Bank" into bank put cd field "period" into period put cd field "Nubus Slot" into slot Digitize bank, --bank -2, --trigger howbig, --points period, --period theArray1,theArray2,0,0,0,0,0,0, --wave arrays 0-7, use 0 for unused slot, --Nubus Slot Er --Er array setIntegerElement Er, 2*FifoComINDX, FillArray Digitize bank, --bank -2, --trigger howbig, --points period, --period theArray1,theArray2,0,0,0,0,0,0, --wave arrays 0-7, use 0 for unused slot, --Nubus Slot Er --Er array setIntegerElement Er,2*OpModeINDX,OpModeUpdate Digitize bank, --bank -1, --trigger howbig, --points period, --period theArray1,theArray2,0,0,0,0,0,0, --wave arrays 0-7, use 0 for unused slot, --Nubus Slot Er --Er array put "Dig " & getIntegerElement(Er,0) into card field "DisposeResult" --put DisposeIntegerArray(theArray1) into ashcan --put DisposeIntegerArray(theArray2) into ashcan --put 0 into theArray1 -- put DisposeIntegerArray(theArray2) into field "DisposeResult" put DisposeIntegerArray(Er) into ashcan -- put DisposeIntegerArray(theArray1) into field "DisposeResult" -- put DisposeIntegerArray(theArray2) into field "DisposeResult" -- put DisposeIntegerArray(Er) into ard field "DisposeResult" wait until the mouse is up -- in case Digitiz was interupted by mouse end mouseUp Xi Go To Trialon mouseUp global theTrail, theProject go card theTrial of stack theProject in new window end mouseUpMacAdios Digitizer Instrument:61250Dig 0 HD40:Stuff:760300 End of WorldMacAdios Digitizer`BMAPB "6}c3y 3 3 x3A 3!! 3! 3 ! 6> 3$6 3F L$ < < <% L$ L>9 BBR RE&$RE!BBR)!B~R)!B@R'$%R%< < 1 <! < ? < < <; s U8C ("P"$s"$ $ q T !ǀH@bpǀ DP _p, 88t ; @  C@ "C@ RCBnj- CNdDDG"p C@DBH@B"! 1 C#DDBOB"? P 7#B 3& 2rpbXqp @(380K(@3DX |8G  ,a``W "DW#p1 w!@UNDQ#0KxT&K< 53%HY@8 @ś+ W |H0pc8` "@Tî "@ p"  CARDO38&7TitleR@S<< prevon mouseUp go card "Instruments" end mouseUpJUh@ nexton mouseUp doMenu "next" end mouseUpRj}@ firston mouseUp go card "Instruments" end mouseUp!z Stopon mouseUp put empty into cd field "DisposeResult" Put 28 into mode put NewIntegerArray(1) into multPtr put ((cd field "vernier"/10) * 256)into theMult setIntegerElement multPtr,0,theMult --fill the multiplier element put NewIntegerArray(1) into DtoAPtr setIntegerElement DtoAPtr,0,0 --fill the DtoA element put NewIntegerArray(1) into AmplitudePtr put 0 into theAmplitude setIntegerElement AmplitudePtr,0,theAmplitude --fill the Amplitude element if theAmplitude > 255 then put 254 into theAmplitude end if put NewIntegerArray(1) into OffsetPtr put 0 into theOffset setIntegerElement OffsetPtr,0,theOffset --fill the Offset element put cd fld "theRange" + cd fld "theShape" + cd fld "thePolarity" into theWave put NewIntegerArray(1) into WavePtr setIntegerElement WavePtr,0,theWave --fill the Wave element put NewIntegerArray(1) into ErrPtr setIntegerElement ErrPtr,0,0 --fill the Wave element SCSIio --call the SCSIio XCMD with the following parameters: 3, --SCSI ID or Address mode, --mode card field "points", --points card field "loops", --loops card field "period", --period multPtr, DtoAPtr, AmplitudePtr, OffsetPtr, WavePtr, 0,0,0, -- arrays 12,13,14, use 0 for unused ErrPtr --Er array put "FG " & getIntegerElement(ErrPtr,0) into card field "DisposeResult" end mouseUp ."5\ DisposeResult&8(J\ Loopst JW Rangeon mousedown if the optionkey is down then edit script of target exit mousedown end if put the mouseloc into myPlace put item 1 of myPlace - 20 into horiz put item 2 of myPlace - 10 into vert get PopMenu(vert,horiz,"1;10;100;1000;10000;100000") if it = 1 then put 1 into cd field "theRange" put "1" into cd field "FrequencyRange" else if it = 2 then put 1 into cd field "theRange" put "10" into cd field "FrequencyRange" else if it = 3 then put 2 into cd field "theRange" put "100" into cd field "FrequencyRange" else if it = 4 then put 3 into cd field "theRange" put "1k" into cd field "FrequencyRange" else if it = 5 then put 4 into cd field "theRange" put "10k" into cd field "FrequencyRange" else if it = 6 then put 5 into cd field "theRange" put "100k" into cd field "FrequencyRange" end if send mouseUp to button "MakeWaves" end mousedown 0 HYW FrequencyRangef `n Waveformon mousedown if the optionkey is down then edit script of target exit mousedown end if put the mouseloc into myPlace put item 1 of myPlace - 20 into horiz put item 2 of myPlace - 10 into vert get PopMenu(vert,horiz,"Sine;Triangle;Square") if it = 1 then put 8 into cd field "theShape" put "Sine" into cd field "WaveformType" else if it = 2 then put 16 into cd field "theShape" put "Triangle" into cd field "WaveformType" else if it = 3 then put 32 into cd field "theShape" put "Square" into cd field "WaveformType" end if send mouseUp to button "MakeWaves" end mousedown . ^oW WaveformType( 3DW Vernier*sW Amplitude(N)`] Points(d*v^ Period*HXYs theRange Polarityon mousedown if the optionkey is down then edit script of target exit mousedown end if put the mouseloc into myPlace put item 1 of myPlace - 20 into horiz put item 2 of myPlace - 10 into vert get PopMenu(vert,horiz,"Positive;Negative") if it = 1 then put 0 into cd field "thePolarity" put "Positive" into cd field "Polarity" else if it = 2 then put 64 into cd field "thePolarity" put "Negative" into cd field "Polarity" end if send mouseUp to button "MakeWaves" end mousedown *W Polarity,Xs thePolarity*^Xos theShape(W Offset y MakeWaveson mouseUp put empty into cd field "DisposeResult" Put 28 into mode put NewIntegerArray(1) into multPtr put ((cd field "vernier"/10) * 256)into theMult setIntegerElement multPtr,0,theMult --fill the multiplier element put NewIntegerArray(1) into DtoAPtr setIntegerElement DtoAPtr,0,0 --fill the DtoA element put NewIntegerArray(1) into AmplitudePtr put ((cd field "Amplitude"/20) * 256)into theAmplitude setIntegerElement AmplitudePtr,0,theAmplitude --fill the Amplitude element if theAmplitude > 255 then put 254 into theAmplitude end if put NewIntegerArray(1) into OffsetPtr put ((cd field "offset"/10) * 256)into theOffset setIntegerElement OffsetPtr,0,theOffset --fill the Offset element put cd fld "theRange" + cd fld "theShape" + cd fld "thePolarity" into theWave put NewIntegerArray(1) into WavePtr setIntegerElement WavePtr,0,theWave --fill the Wave element put NewIntegerArray(1) into ErrPtr setIntegerElement ErrPtr,0,0 --fill the Wave element SCSIio --call the SCSIio XCMD with the following parameters: 3, --SCSI ID or Address mode, --mode card field "points", --points card field "loops", --loops card field "period", --period multPtr, DtoAPtr, AmplitudePtr, OffsetPtr, WavePtr, 0,0,0, -- arrays 12,13,14, use 0 for unused ErrPtr --Er array put "FG " & getIntegerElement(ErrPtr,0) into card field "DisposeResult" if cd field "Duration" is not empty then beep put cd field "duration" into theTime wait for theTime seconds send mouseup to button "Stop" beep end if end mouseUp *W DurationFunction Generator Instrument:10Sine11115.0180 Positive5.0FG 0Function GeneratorBMAPO &S&b̍&0 5 <5$5  9$<EY"EQD"ET8"T b"Dx"0 <$@ @`B` fT<cf"p0$3"30fff<"C32FfjX?G)-Z%%(HHHHg(((6H`D$'f蕠f[ff/f ]e$?4C@,CqNDĀ $(H@ && DD?qC?mdz~2("d@  _"`!@(R8~`9s`Pn0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@CARD<`38<X&= TitleTUh@ nexton mouseUp go to card "Chronology" end mouseUpRj}@ firston mouseUp go card "Instruments" end mouseUpSf Channelon mousedown if the optionkey is down then edit script of target exit mousedown end if put item 1 of the loc of me into horiz put item 2 of the loc of me into vert get PopMenu(vert, horiz, "Red;Green;Blue") if it is 1 then put 0 into cd field "WhichChannel" end if if it is 2 then put 1 into cd field "WhichChannel" end if if it is 3 then put 2 into cd field "WhichChannel" end if end mousedown Sf; Focuson mouseUp put card field "WhichChannel" into theChannel put card field imagewidth into width put card field imageheight into height DTCapture Focus, theChannel, height, width, end mouseUp !3^ Save As Fileon mouseUp put card field "WhichChannel" into theChannel put card field imagewidth into width put card field imageheight into height -- ask "What is the output file name?" with cd fld "fspec" if cd fld "fspec" is empty then DTCapture SaveAsFile, theChannel, height, width else put cd fld "fspec" into filespec DTCapture SaveAsFile, theChannel, height, width, filespec end if end mouseUp R @S<< prevon mouseUp go card "Instruments" end mouseUp. Te9 WhichChannel, :M imageheight,9$Lh imagewidth& a4 fspecS@f Save To Clipboardon mouseUp put card field "WhichChannel" into theChannel put card field imagewidth into width put card field imageheight into height DTCapture SaveAsClip, theChannel, height, width end mouseUpg@z Save MiniClipboardon mouseUp put card field "WhichChannel" into theChannel DTCapture SaveAsMiniClip, theChannel, 108, 128 end mouseUp 1{ Go To Trialon mouseUp global theTrail, theProject go card theTrial of stack theProject in new window end mouseUp QuickCapture Instrument:2200300Motion:Programming:birdshitQuickCaptureBMAP` $kLnT`TH"'3 D4dp8yd6H1 d  e"V"VBA dy ( T0 T)$8p78*@T(P@!0"̉m90p|p>BD 2:Ǩz<3/@@ Sos L" |1DWO׀*@{ x$@N|8s>0$@B$!"x。qa CARDpq38 fX&= TitleTUh@ nexton mouseUp go to card "Chronology" end mouseUpRj}@ firston mouseUp go card "Instruments" end mouseUp9N; Focuson mouseUp put 0 into theChannel put card field imagewidth into width put card field imageheight into height DTCapture Focus, theChannel, height, width, end mouseUp "6` Save RGB Fileson mouseUp put card field imagewidth into width put card field imageheight into height put 1 into theChannel put cd fld "fspec"&"/Red" into filespec DTCapture SaveAsFile, theChannel, height, width, filespec put 0 into theChannel put cd fld "fspec"&"/Green" into filespec DTCapture SaveAsFile, theChannel, height, width, filespec put 2 into theChannel put cd fld "fspec"&"/Blue" into filespec DTCapture SaveAsFile, theChannel, height, width, filespec end mouseUpR @S<< prevon mouseUp go card "Instruments" end mouseUp, :M imageheight,:=M imagewidth&"b5; fspecQuickRGBCapture Instrument:200300HD40:Conservation:BugpoopQuickRGBCaptureBMAPq %MvpW`<W W W &@8t&`|f͐w"$ Bw'Bw$By DDsxxx@T THTÀ TB !ك。qa !GA4cIكaŀ"JG@~=CB"~bamr@ 0 +t @# ^gcÞq1# ! #` #`0&#@CARD5(340jNUh@ nexton mouseUp go card "Handlers" end mouseUpLj}@ firston mouseUp doMenu "first" end mouseUpt' 8h Create Vieweron mouseUp ask "What is the new viewer type?" if field "ViewerTypes" is empty then put it into field "ViewerTypes" else put return & it after last line of field "ViewerTypes" end if go to card "ViewerDefinition" doMenu "copy card" doMenu "paste card" set the name of this card to it put it into card field "title" end mouseUp"{R@S<< prevon mouseUp go card "Instruments" end mouseUp0&. ;   Viewers display acquired data for inspection. Image viewers emulate digital televisions to display bitmap and pixel map files. Tape Viewers allow button control of indexed video tapes. Digital Oscilloscope and Chart Recorders display digitized analog and sound data.1Bitmap ClipViewer MacScope PICS Pict2 Pixel Map Viewerson openCard sort field "ViewerTypes" if line 1 of field "ViewerTypes" is empty then delete line 1 of field "ViewerTypes" end if if the last character of field "ViewerTypes" is not return then put return after field "ViewerTypes" end if end openCard CARD;|3:+8&o@ TitleN@S<< prevon mouseUp go card "Viewers" end mouseUpTUh@ nexton mouseUp go to card "Chronology" end mouseUpNj}@ firston mouseUp go card "Viewers" end mouseUp"Px  Definition Viewer :ViewerDefinition CARD+Q3:+  d&o@ TitleN@S<< prevon mouseUp go card "Viewers" end mouseUpTUh@ nexton mouseUp go to card "Chronology" end mouseUpNj}@ firston mouseUp go card "Viewers" end mouseUp"Pt *8~KnumFrames5Lk Show PICSon mouseUp -- the microTV XCMD will report an error if the power is not on -- when it is asked for a screen capture. Rather that get waste -- time letting it tell report that the Power was off, this script -- checks that global. global ProgressPointer, RemoveProgress set cursor to watch if cd field "fileSpec" is empty then answer file "What is the PICS filespec? put it into theFile else put cd field "fileSpec" into theFile end if put the rect of card button "SmallScreen" into theRect put cd field "numFrames" into loops put cd field "speed" into speed ShowPICs theFile,theRect,loops,speed choose browse tool end mouseUp , p SmallScreen*  1 fileSpec 4A Load FileSpecon mouseUp answer file "What is the PICS filespec? put it into cd field "fileSpec" end mouseUp : 8;KySet Speedon mousedown if the optionkey is down then edit script of target exit mousedown end if put the mouseloc into myPlace put item 1 of myPlace into horiz put item 2 of myPlace into vert get PopMenu(vert, horiz,"1;2;3;4;5;6;7;8;9") put it into cd field "speed" end mousedown &9'J<speed6M  Plot PICSon mouseUp -- the microTV XCMD will report an error if the power is not on -- when it is asked for a screen capture. Rather that get waste -- time letting it tell report that the Power was off, this script -- checks that global. global ProgressPointer, RemoveProgress set cursor to watch if cd field "fileSpec" is empty then answer file "What is the PICS filespec? put it into theFile else put cd field "fileSpec" into theFile end if CreateRes(fileSpec) put OpenRes (fileSpec) into refNum if refNum = -1 then exit mouseUp end if put the rect of card button "SmallScreen" into theRect put cd field "numFrames" into loops put cd field "speed" into speed put numPICs(fileSpec) into thePICS repeat with thisPass = 1 to loops repeat with thisPict = 128 to 127 + thePICS PlotPICT "",thisPict, theFile, theRect, "noclipping" end repeat end repeat CloseRes refNum choose browse tool end mouseUp PICS Viewer :'  This viewer displays PICS files using the ShowPICs XCMD. It automatically determines the number of images and deletes the windows it creates after playing. The display Speed ranges from 1 (slow) to 9 (high). Loops is the number of times the display cycles through the file.5Motion:apepoop9PICSBMAPQ :J=J8P68P ٙHPP`xP,ّHPp8CARD 3:+8&o@ TitleN@S<< prevon mouseUp go card "Viewers" end mouseUpTUh@ nexton mouseUp go to card "Chronology" end mouseUpNj}@ firston mouseUp go card "Viewers" end mouseUp"Px  Definition Viewer :ViewerDefinitionCARDu(3 * T @S<< prevon mouseUp go to card "Instruments" end mouseUpN j}@ firston mouseUp go card "viewers" end mouseUpJ Uh@ nexton mouseUp doMenu "next" end mouseUp8C^k! ReCalon mouseUp global theTape ask "What is the label of the current tape?" put it into theTape put theTape into card field "theTape" VCRcmd mStop VCRcmd mReCal VCRcmd mReadstatus put the result into field "status" end mouseUp 8o^u Playfunction SemiColArray values put empty into array repeat with i = 1 to the number of lines in values put line i of values into valueLine repeat with k = 1 to the number of words in valueItem put valueLine & ";" after array end repeat end repeat repeat until last char of array <> ";" delete last char of array -- strip trailing semicol end repeat return array end SemiColArray on mousedown put field "Event" into values put SemiColArray (values) into itemList put the mouseloc into myPlace put item 1 of myPlace into horiz put item 2 of myPlace into vert get PopMenu(vert, horiz, itemList) put it into LineNum put line LineNum of field "startFrm" into theStart put line LineNum of field "endFrm" into theEnd VCRcmd mPlaySegment, theStart, theEnd end mousedown(    thePath,#r SmallScreen($cr  theTape*%8^<^ EVS900 initon mouseDown if the optionkey is down then edit script of target exit mousedown end if put the mouseloc into myPlace put item 1 of myPlace into horiz put item 2 of myPlace into vert get PopMenu( vert, horiz, "EV-C3;EV-S900;SLV-757;CCD-V5000") if it = 1 then VCRcmd mInit,EVC3,a,"",src else if it = 2 then VCRcmd mInit,EVS900,a,"",src else if it = 3 then VCRcmd mInit,SLV757,a,"",src else if it = 4 then VCRcmd mInit,CCDV5000,a,"",src end if vcrCmd mReadStatus put the result into field "status" end mouseDown v&0.z Get Logon mouseUp put empty into field "date" put empty into field "time" put empty into field "event" put empty into field "startFrm" put empty into field "endFrm" answer file "What is the file specification" put it into filespec open file filespec -- First read the header record read from file filespec until tab if it is empty then -- check for end of file close file filespec answer "This is an empty file" exit mouseUp else put empty into last char of it put it into cd field "theTape" end if read from file filespec until tab put empty into last char of it put it into theProject read from file filespec until tab put empty into last char of it put it into theExperiment read from file filespec until return put empty into last char of it put it into theTrial --Now read in the lines of the different fields put 1 into linenum repeat --do the first field and check for end of file read from file filespec until tab if it is empty then -- end of file close file filespec exit mouseUp end if put empty into last char of it put it & return after field "date" --now do field 2 read from file filespec until tab put empty into last char of it put it & return after field "time" --now do field 3 read from file filespec until tab put empty into last char of it put it & return after field "event" --now do field 4 read from file filespec until tab put empty into last char of it put it & return after field "startFrm" --now do field 4 read from file filespec until return put empty into last char of it put it & return after field "endFrm" add 1 to lineNum end repeat beep end mouseUp F'$4I TV Onon mouseUp send TVOn end mouseUpH($N4~ TV Offon mouseUp send TVOff end mouseUp**   theObjectHD40: TapeTestBlakes Revenge12/8/90 12/8/90 11:28 AM 11:30 AM Dogpoop1 Dogpoop2 0 84 84 210 qErr err: SonySClipViewer on OpenCard global vcrinfo,vcrinfoa, vcrinfob VCRcmd mInit,EVS900,a,"",src put "S" into item 4 of VCRInfoA put "08" into item 6 of VCRInfoA put vcrinfoA into vcrinfo VCRcmd mStatus put the Result into field "Status" end OpenCard on CloseCard if TVStatus = "TRUE" then send TVOFF end if end CloseCard CARDX3:+&o@ TitleN@S<< prevon mouseUp go card "Viewers" end mouseUpTUh@ nexton mouseUp go to card "Chronology" end mouseUpNj}@ firston mouseUp go card "Viewers" end mouseUp"Px Ob? Show Picton mouseUp put FileName("PICT") into FileSpec --set rect to 50,50,350,350 Picture FileSpec,File,Zoom end mouseUpPict2 Pixel Map Viewer :This viewer uses the picture XCMD to display grayscale pixel maps, color pixel maps and quickdraw pictures. It does not display TIFF files.Pict2 Pixel MapCARD23:+&o@ TitleTUh@ nexton mouseUp go to card "Chronology" end mouseUp Qc Show MacPainton mouseUp put FileName("PNTG") into FileSpec --set rect to 50,50,350,350 Picture FileSpec,File,Zoom end mouseUp"PxN@S<< prevon mouseUp go card "Viewers" end mouseUpNj}@ firston mouseUp go card "Viewers" end mouseUpBitmap Viewer :The Bitmap handler is selective for MacPaint files of type "PNTG". The handler execute the FileType() function to return a file path then displays the acquired file with the Picture XCMD.BitmapCARDabG38L&\ TitleRUh@ nexton mouseUp go to card "Handlers" end mouseUp ":р Displayon mouseUp put card Field "ArraySize" into howbig put card field "pointer1" into theArray1 put card field "pointer2" into theArray2 put newZeroArray(800) into Er -- create Er array, zero in all elements put 380 into howwide put howbig div howwide into pppx if pppx = 0 then put 1 into pppx end if if howbig > howwide then put pppx * howwide into howbig put howbig into card field "ArraySize" end if --next set the elements of the Er array: setIntegerElement Er,1,card field "display mode" --display mode setIntegerElement Er,2,0 --options, SCSIio ignores this setIntegerElement Er,3,1 --operational 0=norm,1=update,2=demo,3=bench setIntegerElement Er,8,pppx --points per pix, if negative pix per point setIntegerElement Er,10,0 --0=draw lines between points, 1=dots setIntegerElement Er,11,0 --1=grid,0= no grid setIntegerElement Er,12,1 --0=not clear before first trace,1=clear setIntegerElement Er,13,1 --0=not clear between traces,1=clear setIntegerElement Er,14,0 --0=dont save extra points setIntegerElement Er,16,0 --0=no trigger,2&3=externl,4&5=auto,8&9=norm setIntegerElement Er,17,0 --wave number for trigger, 0 to 7 setIntegerElement Er,19,2047 --trigger threshold, see manual setIntegerElement Er,40,1 --Dig Loops Low setIntegerElement Er,41,0 --Dig Loops High setIntegerElement Er,319,1 -- channel0 draw on/off setIntegerElement Er,256,2 -- plot display region left setIntegerElement Er,257,382 -- plot display region right setIntegerElement Er,258,130 -- plot display region top setIntegerElement Er,259,207 -- plot display region bottom setIntegerElement Er,266,250 -- plot top value setIntegerElement Er,267,-250 -- plot bottom value setIntegerElement Er,383,1 -- channe1l draw on/off setIntegerElement Er,320,2 -- plot display region left setIntegerElement Er,321,382 -- plot display region right setIntegerElement Er,322,208 -- plot display region top setIntegerElement Er,323,286 -- plot display region bottom setIntegerElement Er,330,250 -- plot top value setIntegerElement Er,331,-250 -- plot bottom value put card field "SampInt" into ISI put 10 into DeltaT put ISI div DeltaT into period --put card field "theBank" into bank Digitize bank, --bank -1, --trigger howbig, --points period, --period theArray1,theArray2,0,0,0,0,0,0, --wave arrays 0-7, use 0 for unused slot, --Nubus Slot Er --Er array put "Dig " & getIntegerElement(Er,0) into card field "DisposeResult" --put DisposeIntegerArray(theArray1) into ashcan --put DisposeIntegerArray(theArray2) into ashcan --put 0 into theArray1 -- put DisposeIntegerArray(theArray2) into field "DisposeResult" put DisposeIntegerArray(Er) into ashcan -- put DisposeIntegerArray(theArray1) into field "DisposeResult" -- put DisposeIntegerArray(theArray2) into field "DisposeResult" -- put DisposeIntegerArray(Er) into ard field "DisposeResult" wait until the mouse is up -- in case Digitiz was interupted by mouse end mouseUp >;Pۀ LoadFileson mouseUp Global disk,file1,file2,file,Er answer file "What is the File Spec for Channel 0" put it into thePath put the length of thePath into len put offset(":",thePath) - 1 into theTest put char 1 to theTest of thePath into disk put offset(":",thePath) + 1 into theTest put char theTest to len of thePath into File1 put disk into card field "DiskName" put file1 into card field "FileName1" answer file "What is the File Spec for Channel 1" put it into thePath put the length of thePath into len put offset(":",thePath) + 1 into theTest put char theTest to len of thePath into File2 put file2 into card field "FileName2" put 0 into Er put empty into messagebox put empty into card Field "ArraySize" put card field "FileName1" into file1 put FileLen (disk, file1, Er) div 2 into howbig put howbig * 2 into isize put "FileLen" & GetIntegerElement(Er,0) into card field "DisposeResult" put howbig into card Field "ArraySize" --this is the number of bytes put NewIntegerArray(howbig) into theArray1 put theArray1 into cd fld "Pointer1" BLoad disk, --disk file1, --file theArray1, --array pointer isize, --number of bytes Er --Er array put "Load " & getIntegerElement(Er,0) into card field "DisposeResult" put empty into card Field "ArraySize" put card field "FileName2" into file2 put FileLen (disk, file2, Er) div 2 into howbig put howbig * 2 into isize put "FileLen " & GetIntegerElement(Er,0) into card field "DisposeResult" put howbig into card Field "ArraySize" --this is the number of bytes put NewIntegerArray(howbig) into theArray2 put theArray2 into cd fld "Pointer2" BLoad disk, --disk file2, --file theArray2, --array pointer isize, --number of bytes Er --Er array put "Load " & getIntegerElement(Er,0) into card field "DisposeResult" end mouseUp .!3 display mode( 5F GWICode( HV$ SampInt. [oL DisposeResult* P>`| ArraySize* '| DiskName*(;| FileName1R@S<< prevon mouseUp go card "Instruments" end mouseUpRj}@ firston mouseUp go card "Instruments" end mouseUp*<O| FileName2*Xl pointer1*m pointer2 MacScopeViewer:025006459104Load 0MacScopeon openCard put empty into card field "DiskName" put empty into card field "FileName1" put empty into card field "FileName2" put empty into card Field "ArraySize" end openCardBMAPbG "j:<8lS$@@[@@[LG@[HKDOKHKL[<#C@ D1lGlsa1y#22H2$LD1""O"'Dq1"""H"$(S@ Aw<s3k # # H  p ;  d$@ CHG DH D@ qF~3"3! 3@$l@x8lCARD7`36N@S<< prevon mouseUp go card "Viewers" end mouseUpPUh@ nexton mouseUp go to card "Editors" end mouseUpLj}@ firston mouseUp doMenu "first" end mouseUpz' 8h Create Handleron mouseUp ask "What is the new handler type?" if field "HandlerTypes" is empty then put it into field "HandlerTypes" else put return & it after last line of field "HandlerTypes" end if go to card "HandlerDefinition" doMenu "copy card" doMenu "paste card" set the name of this card to it put it into card field "title" end mouseUp"{wC H~  Handlers Read and Write files to Disk and perform file conversions.Table handlers operate on tab delimited spreadsheet files. Image Handlers operate on Bitmap and Pixel map files. Array handlers operate on sensor, sound and analog files. Handlers also control peripheral devices such as electronic still video recorders, camcorders and VCR's. gColor EVS-900 Controller S4 Current Meter Sony Controller Terminal Video ClipMaker Video ClipRecorder Handlerson openCard sort field "HandlerTypes" if line 1 of field "HandlerTypes" is empty then delete line 1 of field "HandlerTypes" end if if the last character of field "HandlerTypes" is not return then put return after field "HandlerTypes" end if end openCard CARDCU3= &o@ TitleJ@S<< prevon mouseUp doMenu "prev" end mouseUpJUh@ nexton mouseUp doMenu "Next" end mouseUpPj}@ firston mouseUp go card "Handlers" end mouseUp Handler: DefinitionHandlerDefinition@CARD3*< T @S<< prevon mouseUp go to card "Instruments" end mouseUpL j}@ firston mouseUp doMenu "first" end mouseUpJ Uh@ nexton mouseUp doMenu "next" end mouseUp bF record clipon mouseUp --check to see if in record pause global theTape VCRcmd mStatus put the result into stat if not (stat contains "14") then send mouseUp to btn "Stdby" put the short date & return after fld "date" put the short time & return after fld "time" ask "Clip Label?" put it & return after fld "event" VCRcmd mPause --will be in record now VCRcmd mReadPos put the result into frm put frm & return after fld "startFrm" end mouseUpL F stop clipon mouseUp VCRcmd mStatus put the result into stat put stat into messagebox if not ( stat contains "04" ) then VCRcmd mStop beep put "You weren't recording anything" exit mouseUp end if VCRcmd mReadPos put the result into frm VCRcmd mPause put frm & return after fld "endFrm" end mouseUp F0^ EVS900 initon mouseDown if the optionkey is down then edit script of target exit mousedown end if put the mouseloc into myPlace put item 1 of myPlace into horiz put item 2 of myPlace into vert get PopMenu(vert, horiz,"EV-C3;EV-S900;SLV-757;CCD-V5000") if it = 1 then VCRcmd mInit,EVC3,a,"",src else if it = 2 then VCRcmd mInit,EVS900,a,"",src else if it = 3 then VCRcmd mInit,SLV757,a,"",src else if it = 4 then VCRcmd mInit,CCDV5000,a,"",src end if end mouseDown  4F\! ReCalon mouseUp global theTape ask "What is the label of the current tape?" put it into theTape put theTape into card field "theTape" VCRcmd mStop VCRcmd mReCal VCRcmd mstatus put the result into field "status" end mouseUp Fp Stdbyon mouseUp VCRcmd mPlay wait 2 seconds VCRcmd mPause wait 1 second VCRcmd mRecord end mouseUpB; Queue Endon mouseUp put 0 into theEnd repeat with i = 1 to the number of lines in field "EndFrm" if line i of field "EndFrm" > theEnd then put line i of field "EndFrm" into theEnd end if end repeat put "Searching for frame "& theEnd into field "Status" VCRcmd mSearchTo,theEnd end mouseUp Fu Playfunction SemiColArray values put empty into array repeat with i = 1 to the number of lines in values put line i of values into valueLine repeat with k = 1 to the number of words in valueItem put valueLine & ";" after array end repeat end repeat repeat until last char of array <> ";" delete last char of array -- strip trailing semicol end repeat return array end SemiColArray on mousedown put field "Event" into values put SemiColArray (values) into itemList put the mouseloc into myPlace put item 1 of myPlace into horiz put item 2 of myPlace into vert get PopMenu(vert,horiz,itemList) put it into LineNum put line LineNum of field "startFrm" into theStart put line LineNum of field "endFrm" into theEnd VCRcmd mPlaySegment, theStart, theEnd end mousedown( JY}  thePath*"\k}  theObjectr'4)~ Get Logon mouseUp put empty into field "date" put empty into field "time" put empty into field "event" put empty into field "startFrm" put empty into field "endFrm" answer file "What is the file specification" put it into filespec open file filespec -- First read the header record read from file filespec until tab if it is empty then -- check for end of file close file filespec answer "This is an empty file" exit mouseUp else put empty into last char of it put it into field "theTape" end if read from file filespec until tab put empty into last char of it put it into theProject read from file filespec until tab put empty into last char of it put it into theExperiment read from file filespec until return put empty into last char of it put it into theTrial --Now read in the lines of the different fields put 1 into linenum repeat --do the first field and check for end of file read from file filespec until tab if it is empty then -- end of file close file filespec exit mouseUp end if put empty into last char of it put it & return after field "date" --now do field 2 read from file filespec until tab put empty into last char of it put it & return after field "time" --now do field 3 read from file filespec until tab put empty into last char of it put it & return after field "event" --now do field 4 read from file filespec until tab put empty into last char of it put it & return after field "startFrm" --now do field 4 read from file filespec until return put empty into last char of it put it & return after field "endFrm" add 1 to lineNum end repeat beep end mouseUp )vi Go To Trialon mouseUp global theTrail, theProject go card theTrial of stack theProject in new window end mouseUp*,3@} Save Logon mouseUp global theProject, theExperiment, theTrial, theObject, theObjectPath, thePath, fileStatus, theLine put cd fld "thePath" & cd fld "theObject" into theOutput put "Saving file:"& theOutput into field "Status" open file theOutput write field "theTape" & tab & theProject & tab & theExperiment & tab & theTrial & return to file theOutput repeat with thisLine = 1 to the number of lines in field "event" write line thisLine of field "date" & tab & line thisLine of field "time" & tab & line thisLine of field "event" & tab & line thisLine of field "startFrm" & tab & line thisLine of field "endFrm" & return to file theOutput end repeat close file theOutput put 0 into theEnd repeat with i = 1 to the number of lines in field "EndFrm" if line i of field "EndFrm" > theEnd then put line i of field "EndFrm" into theEnd end if end repeat put 100000000 into theBeginning repeat with i = 1 to the number of lines in field "StartFrm" if line i of field "StartFrm" < theBeginning then put line i of field "StartFrm" into theBeginning end if end repeat put field "thetape" into theTape put cd field "theObject" into theObject put theLine into Path go card "Videotape Log" of Stack "LaboratoryToolbox" in new window put path & return after cd field "PathNums" put theTape & return after cd field "TapeLabels" put theObject & return after cd field "TapeLogs" put theBeginning & return after cd field "LogStart" put theEnd & return after cd field "LogEnd" doMenu "Back" end mouseUpHD40:Fortran:Batpooparrff12/8/90 12/8/90 11:28 AM 11:30 AM Dogpoop1 Dogpoop2 0 84 84 210 !Saving file:HD40:Fortran:BatpoopVideo ClipRecorderCARDtv3=* ~&p@TitleJ@S<< prevon mouseUp doMenu "prev" end mouseUpJUh@ nexton mouseUp doMenu "Next" end mouseUpPj}@ firston mouseUp go card "Handlers" end mouseUp $ 7aSelectDeckon mouseDown if the optionkey is down then edit script of target exit mousedown end if put the mouseloc into myPlace put item 1 of myPlace into horiz put item 2 of myPlace into vert get PopMenu(vert, horiz,"EV-C3;EV-S900;SLV-757;CCD-V5000") if it = 1 then VCRcmd mInit,EVC3,a,"",src put "EV-C3 Controller" into cd field "Title" else if it = 2 then VCRcmd mInit,EVS900,a,"",src put "EV-S900 Controller" into cd field "Title" else if it = 3 then VCRcmd mInit,SLV757,a,"",src put "SLV-757 Controller" into cd field "Title" else if it = 4 then VCRcmd mInit,CCDV5000,a,"",src put "CCD-V5000 Controller" into cd field "Title" end if VCRcmd mReadStatus put the Result into field "Status" send mouseUp to cd button "GetCounter" end mouseDown $d7Reseton mouseUp VCRcmd mStop VCRcmd mReCal VCRcmd mReadStatus put the result into field "status" send mouseUp to cd button "GetCounter" end mouseUp~EYixPlayon mouseUp VCRcmd mPlay VCRcmd mReadStatus put the Result into field "Status" end mouseUp( 2 F[ CurHMS( K _[ CurCtr( d x[ CurFrm*  [ TargetHMS* [ TargetCtr* [ TargetFrm$  res& cmd1p do iton mouseUp do cd fld cmd1 put the result into cd fld "status" end mouseUp y \ GetCounteron mouseUp VCRcmd mReadPos put the Result into theFrame put theFrame into cd field "CurFrm" put FrmToHMS(theFrame) into cd field "CurHMS" put FrmToCTR(theFrame) into cd field "CurCtr" end mouseUpBZ GoToon mouseUp put cd field TargetHMS into theHMS put HMStoFrm(theHMS) into theFrm put theFrm into cd field "TargetFrm" put FrmtoCtr(theFrm) into cd field "TargetCTR" vcrCMD mSearchTo, theFRM VCRcmd mStatus put the Result into field "Status" send mouseUp to button "GetCounter" end mouseUpFZ GoToon mouseUp put cd field TargetCtr into theCtr put CtrtoFrm(theCtr) into theFrm put theFrm into cd field "TargetFrm" put FrmtoHMS(theFrm) into cd field "TargetHMS" vcrCMD mSearchTo, theFRM VCRcmd mReadStatus put the Result into field "Status" send mouseUp to button "GetCounter" end mouseUp,Z GoToon mouseUp put cd field TargetFrm into theFrm put FrmtoCtr(theFrm) into cd field "TargetCTR" put FrmtoHMS(theFrm) into cd field "TargetHMS" vcrCMD mSearchTo, theFRM VCRcmd mStatus put the Result into field "Status" send mouseUp to button "GetCounter" end mouseUpEziFForwardon mouseUp VCRcmd mVari, 7 VCRcmd mReadStatus put the Result into field "Status" Send mouseUp to button "GetCounter" end mouseUpE8iWStopon mouseUp VCRcmd mStop VCRcmd mReadStatus put the Result into field "Status" Send mouseUp to button "GetCounter" end mouseUpEi6N*Reverseon mouseUp VCRcmd mVari, -7 VCRcmd mReadStatus put the Result into field "Status" Send mouseUp to button "GetCounter" end mouseUpjzStepForon mouseUp VCRcmd mVari, 1 VCRcmd mReadStatus put the Result into field "Status" Send mouseUp to button "GetCounter" end mouseUpjYxPauseon mouseUp VCRcmd mPause VCRcmd mReadStatus put the Result into field "Status" Send mouseUp to button "GetCounter" end mouseUpj8WStepBackon mouseUp VCRcmd mVari, -1 VCRcmd mReadStatus put the Result into field "Status" Send mouseUp to button "GetCounter" end mouseUpj6HRecordon mouseUp VCRcmd mRecord VCRcmd mReadStatus put the Result into field "Status" send mouseUp to button "GetCounter" end mouseUp Handler: Sony Controller VCRcmd mQuit 00:02:48233337 00:00:11165051stoppedSony Controlleron OpenCard put "Sony Controller" into cd field "title" send mouseUp to button "GetCounter" end OpenCard on CloseCard put "Sony Controller" into cd field "title" end CloseCard `BMAPv C #Ah Z"@ z > > \- kG-`` k3 kc >H0 =` z1 z"dd >  @ !+#:A<UZ lfYRV l0Z|  z k` kG> /TR $"$\ i% \)wS L(ca <  ! 3 \ \"l : z z / M \ z偔3 z0 \0 = \P1 zǃ ** *lEUiV {G| >` $6P@$ $86`L{` $0Gy> $t[*TR UZ% G upwBS fa3 )   D!D@ $H3 d/xqE<| Z l$; L$1 < "  l? \6UQ  .a.@~36ǀnc3"nB"nC"nB"n`C"~? 1v v  v  f  f  va ! vA   v@  v@ vA# vG! & &  vy vȌ vH v v vH vmg 'X Xc2f X""B X"~ X""@ Xb"b g÷3< - - n8^La2^A^|A^@^An8v    v v  v  f  f  va ! vA   v@  v@ vA# vG! & &  vy vȌ vH v 6`@ &@w|@ F zmg G  `l{6 q323"c"Bf q!AB$  %3< D ` 2""&b&`b `3s33<8 B@XDf X|a13 XD@! X@A? X@B X@C11 Xۙ CARDrs23= f&o@ TitleJ@S<< prevon mouseUp doMenu "prev" end mouseUpJUh@ nexton mouseUp doMenu "Next" end mouseUpPj}@ firston mouseUp go card "Handlers" end mouseUp(,} screen*} keyboardb 300 baudon mouseUp configureSPort baud300 set hilite of button "1200 baud" to false set hilite of button "2400 baud" to false set hilite of button "9600 baud" to false set hilite of button "300 baud" to true end mouseUp b 1200 baudon mouseUp configureSPort baud1200 set hilite of button "300 baud" to false set hilite of button "2400 baud" to false set hilite of button "9600 baud" to false set hilite of button "1200 baud" to true end mouseUp   b 2400 baudon mouseUp configureSPort baud2400 set hilite of button "300 baud" to false set hilite of button "1200 baud" to false set hilite of button "9600 baud" to false set hilite of button "2400 baud" to true end mouseUp   b 9600 baudon mouseUp configureSPort baud9600 set hilite of cd button "300 baud" to false set hilite of cd button "1200 baud" to false set hilite of cd button "2400 baud" to false set hilite of cd button "9600 baud" to true end mouseUp vĠ Clear Screenon mouseUp put empty into cd field "screen" put empty into cd field "keyboard" end mouseUp z  Breakon mouseDown breakSPort on wait until the mouse is up breakSPort off end mouseDown s  Strip control characterson mouseUp if the hilite of me then configureSPort stripControlsOn else configureSPort stripControlsOff end mouseUp s  Strip parity biton mouseUp if the hilite of me then configureSPort stripOn else configureSPort stripOff end mouseUp U Save Inputon mouseUp ask file "What is the output File Spec?" put it into theFile open file theFile write cd field "screen" to file theFile close file thefile -- put empty into cd field "keyboard" -- put empty into cd field "keyboard" end mouseUp N* Open Porton mouseUp send openPort end mouseUpR*] Close Porton mouseUp send "closePort" end mouseUp Handler: TerminalTerminalon openPort global SPortGlobals show message box configureSPort modemPort,baud2400,data8,stop10,parityOff,stripOn, stripControlsOff setSPortBufferSize 10240 set hilite of cd button "300 baud" to false set hilite of cd button "1200 baud" to false set hilite of cd button "2400 baud" to true set hilite of cd button "9600 baud" to false set hilite of cd button "Strip control characters" to false set hilite of cd button "Strip parity bit" to true put "True" into PortIsOpen end openPort on closePort closeSPort if the result is not empty then answer the result with "OK" put "False" into PortIsOpen end closePort on closeCard if PortIsOpen = "True" then closeSPort if the result is not empty then answer the result with "OK" put "False" into PortIsOpen end if end closeCard on idle if PortIsOpen = "True" then put recvUpTo(empty,0,empty) into newInput if newInput is not empty then get rect of cd field "screen" get (item 4 of it) - (item 2 of it) put (it div (the textHeight of cd field "screen"))-1 into linesAvail get cd field "screen" & newInput put the number of lines in it into linesThere put it after cd field "screen" select the last character of cd field "screen" end if end if end idle on returnKey if PortIsOpen = "True" then --put the message box into theString put the last line of cd field "Keyboard" into theString sendSPort theString & return -- put empty into the message box --put empty into cd field "keyboard" end if end returnKey on test repeat until the mouse is down sendSPort "1234567890." & return & linefeed end repeat end test  BMAPs2 G.`pB Q`   BU^ByQ `G0hQ-RE@AMAFFH!Ag|Q@ B̭BLDIQ6gCARD_30 8`ur HeaderHelpon mouseUp set the hilite of card button "HeaderHelp" to true wait 1 second set the hilite of card button "HeaderHelp" to false go to card "S4 Meter Header" of stack "Lab Toolbox Help" end mouseUpx SampleavgHelpon mouseUp set the hilite of card button "SampleavgHelp" to true wait 1 second set the hilite of card button "SampleavgHelp" to false go to card "S4 Meter Average" of stack "Lab Toolbox Help" end mouseUp LograteHelpon mouseUp set the hilite of card button "LograteHelp" to true wait 1 second set the hilite of card button "LograteHelp" to false go to card "S4 Meter Log Rate" of stack "Lab Toolbox Help" end mouseUp StarttimeHelpon mouseUp set the hilite of card button "StarttimeHelp" to true wait 1 second set the hilite of card button "StarttimeHelp" to false go to card "S4 Meter Start Time" of stack "Lab Toolbox Help" end mouseUp   CheckDateon mouseUp sendSPort "D" & return put recvUpTo(empty,0,empty) into it put character 1 to 2 of line 3 of it into month put character 3 to 4 of line 3 of it into day put character 5 to 6 of line 3 of it into year put "The S4 date is" && Month & "/" & Day & "/" & Year into card field "Date" wait 5 seconds delete item 1 of card field "Date" end mouseUp P   CheckTimeon mouseUp sendSPort "T" & return put recvUpTo(empty,0,empty) into it put character 1 to 2 of line 3 of it into hour put character 3 to 4 of line 3 of it into minute put "The S4 time is" && Hour & ":" & Minute into card field "Time" wait 5 seconds delete item 1 of card field "Time" end mouseUp vgi StartProgramon mouseUp answer "Push the reset button on the S110 box NOW!" wait 2 seconds sendSPort "IOS" & return wait 1 second sendSPort "H" & cd field "Header" & return wait 1 second sendSPort "Y" & return wait 1 second sendSPort "I" & return wait 1 second sendSPort "Y" & return wait 1 second sendSPort "A" & cd field "SampleAvg" & return wait 1 second sendSPort "Y" & return wait 1 second sendSPort cd field "LogRate" & return wait 1 second sendSPort "Y" & return wait 1 second sendSPort cd field "StartTime" & return if char 1 of item 1 of cd field "StartTime" = O then wait 1 second sendSPort "Y" & return end if answer "Disconnect the S4 now or face dire consequences" end mouseUp~ `u Headeron mouseEnter if the mouseClick then answer "Make sure Caps are locked" end mouseEnter *x SampleAvg( LogRate* StartTime&!Time&"Date3No Enter New Parameterson mouseUp if the hilite of card button "Enter New Parameters" is true then set the hilite of card button "Enter New Parameters" to false repeat with i = 4 down to 1 delete item 1 of card field i end repeat exit mouseUp else set the hilite of card button "Enter New Parameters" to true send tabKey end if answer "Be sure the Caps are locked, Dude!" end mouseUp~"m S4 Infoon mouseUp go to card "S4 Meter General Info" of stack "Lab Toolbox Help" end mouseUpPj}@ firston mouseUp go card "Handlers" end mouseUpS4 Current Meteron openCard global SPortGlobals configureSPort modemPort,baud4800,data8,stop10,parityOff,stripOn, stripControlsOn setSPortBufferSize 10240 repeat with i = 4 down to 1 if the hilite of card button i is true then set the hilite of card button i to false end if end repeat end openCard on closeCard closeSPort if the result is not empty then answer the result with "OK" end closeCard @BMAP mxL 0`!(@> +!  >   0 ( @ᆣ2>"`9?6,r9<'q,9|'pr  `#@  g#r#€p>yo2 3 DlB# 6BD2"2`Ĉ$0C2@e D05H $ (AaC  21et\@3I@R@\b.H DB @G#% " )t$h a ,+)8`M )H@C #SH`5H<8"! RA!R@@ $0 "^"``q c 0D`02a? Xf3d0:0:  ; ; ;# 3` 3#8 3 3w 3$ 3$ 3 39 3@ 3^ 3I 3I 3I 3I 39  [?  XWNHX@YYǎ?fEhVfJU*P8' I8(Y(0Ja7Uh6VfOERH $ $ (B (B (B< h?q2? 8hZ&V@ H B(JS(c (S 8TfdjV$ +$1 +  ~  33  31 y$yEhY L `jxyjAITSh* ` *  (# x  $a$0y@HB8ـ 2047 then put (NorthValue - 4096) div 5 into North else put NorthValue div 5 into North end if if EastValue > 2047 then put (EastValue - 4096) div 5 into East else put EastValue div 5 into East end if put sqrt of ((North^2) + (East^2)) into speed if North = 0 and East > 0 then put 90 into direction else if North = 0 and East < 0 then put 270 into direction else put atan((East / North) / 57.295) into arcDir end if if arcDir > 0 and East > 0 then put arcDir into direction else if arcDir < 0 and North > 0 then put (arcDir + 360) into direction else if North < 0 or East < 0 then put (arcDir + 180) into direction end if set the numberFormat to "00.00" put Speed & tab & Direction & Return after field "Results" end repeat end mouseUpQ More Info.?on mouseUp go to card "S4 Meter Data Retrieval" of stack "Lab Toolbox Help" end mouseUpO Write to Fileon mouseUp ask "Write data to what file, Chief?" put it into fileName open file fileName write field "results" to file fileName close file fileName beep end mouseUp|t Clear Bufferson mouseUp put empty into field "screen" put empty into field "results" end mouseUpPj}@ firston mouseUp go card "Handlers" end mouseUpkwf}lwf}lwLf}lwf}lwf}lwf}lwf}lwfF~vV~FF~vV~FF~vV~FF~vV~FF~vV~FF~vV~FF~vV~FF~vV~FF~vV~FF~vV~FF~vV~FF~vV~FF~vV~FF~vV~FF~vV~FF~vV~FF~vV~FF~vV~FF~vV~FF~vV~FF~vV~FF~vV~FF~vV~FF~vV~FF~vV~FF~vV~FF~vV}vwf}vwl~fvvfF|lLF Fv[F|F~vvvf| |LvlvFF?vv~F|FfvfF|lLF Fv[v?F|F~vvvvf| |LvlvFF?vv~FFFfvfF|lLF Fv[v?F|F~vvvvf| |LvlvFF?vv~FFFfvfF|lLvV~v~v~vV~v~v~vV~v~v~vvVfvvvfvvVfvvvfvVf~~f~~f~f~f~f~~f~v~f~l~L~l~L~l~L~l~L~lvLVfvvvfvvVfvvvfvvVfvvvffvfvfvffvfvfvffvffvfvfvvvvv~vvVfvvvfvvVfvvvffvffvfvfvfvLlLlLlLvlVLvlvLvlVMv5vv%Vv5vv[Vv[vv[VV?v?V?vv~V~vv~vV~vv~vVfvvvfvvVfvvvfvfv~LvLvLvl~vlVlvL_VLv5~vlV?lvLv[Lv~vllVvLv~vlv/S4RetrieveBMAP5 `0R ? 0B 2`1 51<11?p0>dPEAhhB- -BB`/2u ahR1 -r5 x5RP##`R0 - 100`>&0ᆥ'''1' '?''''' '''' ''CARD-3*#B CYh Reseton mouseUp VCRcmd mRecal VCRcmd mReadStatus put the Result into field "Status" send mouseUp to button "GetCounter" end mouseUp[qi Playon mouseUp TxS "2C","08", a, 5 sonycdrvr mReadStatus put the Result into field "Status" end mouseUpsj Stopon mouseUp TxS "0C","08", a, 5 sonycdrvr mStatus put the Result into cd field "Status" send mouseUp to button "GetCounter" end mouseUpi Pauseon mouseUp VCRcmd mPause VCRcmd mStatus put the Result into cd field "Status" send mouseUp to button "GetCounter" end mouseUp .mDѠ Grab Frameon mouseDown -- the microTV XCMD will report an error if the power is not on -- when it is asked for a screen capture. Rather that get waste -- time letting it tell report that the Power was off, this script -- checks tha global. mtvGrabFrame picture "ColorClipboard", clipboard, roundRect set loc of window "ColorClipboard" to "400,5" end mouseDown _u}~ New Buttonon mouseUp go to card "Aaps EVS-900 Controller" in stack "Lab Toolbox Help" in a new window end mouseUpJ @S<< prevon mouseUp doMenu "prev" end mouseUpJ Uh@ nexton mouseUp doMenu "Next" end mouseUpPj}@ firston mouseUp go card "Handlers" end mouseUpg,w~ GetCounteron mouseUp VCRcmd mReadPos put the Result into theFrame put theFrame into cd field "CurFrm" put FrmToHMS(theFrame) into cd field "CurHMS" put FrmToCTR(theFrame) into cd field "CurCtr" end mouseUpFZ GoToon mouseUp put cd field TargetHMS into theHMS put HMStoFrm(theHMS) into theFrm put theFrm into cd field "TargetFrm" put FrmtoCtr(theFrm) into cd field "TargetCTR" vcrCMD mSearchTo, theFRM VCRcmd mStatus put the Result into cd field "Status" send mouseUp to button "GetCounter" end mouseUpFZ GoToon mouseUp put cd field TargetCtr into theCtr put CtrtoFrm(theCtr) into theFrm put theFrm into cd field "TargetFrm" put FrmtoHMS(theFrm) into cd field "TargetHMS" vcrCMD mSearchTo, theFRM VCRcmd mStatus put the Result into cd field "Status" send mouseUp to button "GetCounter" end mouseUp.Z GoToon mouseUp put cd field TargetFrm into theFrm put FrmtoCtr(theFrm) into cd field "TargetCTR" put FrmtoHMS(theFrm) into cd field "TargetHMS" vcrCMD mSearchTo, theFRM VCRcmd mStatus put the Result into cd field "Status" send mouseUp to button "GetCounter" end mouseUpY do iton mouseUp do cd fld cmd1 VCRcmd mStatus put the Result into cd field "Status" end mouseUp ("/6~ CurHMS(9/M~ CurCtr(P/d~ CurFrm* Y TargetHMS* Y TargetCtr* Y TargetFrm&[ cmd1,  SmallScreenlFm\Ѡ Dither Frameon mouseDown -- the microTV XCMD will report an error if the power is not on -- when it is asked for a screen capture. Rather that get waste -- time letting it tell report that the Power was off, this script -- checks tha global. mtvGrabDitherFrame picture "Clipboard", clipboard, roundRect set loc of window "Clipboard" to "400,5" --put the rect of card button "SmallScreen" into scrap --put item 1 of scrap into rectLeft --put item 2 of scrap into rectTop --doMenu "paste Picture" --set dragspeed to 50 --drag from 0,0 to rectLeft,rectTop choose browse tool end mouseDown & p Title& o$@TitleF! ,; TV Onon mouseUp send TVOn end mouseUpH"?,o TV Offon mouseUp send TVOff end mouseUp #.Bg SelectDeckon mouseDown if the optionkey is down then edit script of target exit mousedown end if put the mouseloc into myPlace put item 1 of myPlace into horiz put item 2 of myPlace into vert get PopMenu(vert, horiz,"EV-C3;EV-S900;SLV-757;CCD-V5000") if it = 1 then VCRcmd mInit,EVC3,a,"",src put "EV-C3 Controller" into cd field "Title" else if it = 2 then VCRcmd mInit,EVS900,a,"",src put "EV-S900 Controller" into cd field "Title" else if it = 3 then VCRcmd mInit,SLV757,a,"",src put "SLV-757 Controller" into cd field "Title" else if it = 4 then VCRcmd mInit,CCDV5000,a,"",src put "CCD-V5000 Controller" into cd field "Title" end if VCRcmd mReadStatus put the Result into field "Status" send mouseUp to cd button "GetCounter" end mouseDown 0 00:00:000EV-S900 ControllerColor EVS900 Controller4317200 00:02:24#unknownStatus: Port A is not open.Color EVS-900 Controller on OpenCard end OpenCard on CloseCard if TVStatus = "TRUE" then send TVOff end if end CloseCard BMAP- & ( ~~ ~ n n ~a !~A  ~@ ~@~A#~G!. .~y~Ȍ~H~~~H~mg/PPc2fP""BP"~P""@Pb"bo÷3<jppz @`1z @` j @ j M0j?"z D"z D z D z D"1jpraeRHB@ amVV Qkf!ߨBfb I""PQf߸( BHR]B)0 2ũ0SRT ( QpLu@T(`@ Bε   x`G9B8u(s kQpB8@p @ jH@B;VxJ x24:Tb  |21jtn t8PHD2F)x/TN@A3AT 2:&@P 2kh@E# Ax2@#@ Ac 0 "1ë$%R0ldAVn#A[u`#DP"0$D@A# ~1g0 D2b#) ) b>) + q>`00PHAI5b# Hx 2`# dD@ZlA5i&3&`J Vb߸i"$ A){`IHJi>"'"B  @*@ b`PYQM$ A`# i;s32U]\I"AIb2@2N#$U$x2Q- A{cA)22@ D@ m2N# 8JTb#cI* ) } ATh#/@BBRЀ"tԪHSr~ y>AB/ "%yjDSBEh"Z¤@VEg’J UI'©'(!UjT”ZVO@RTxmU߸QP "PDHB"i "@Qm.bz"BKU<{” X<[p$P).#’Q@K~@ }I%׼0.g26̊c #`#Bu'0" I0 |3g L($Bf{’ w_IP{ @Ԫ„eB*Pz* t`ĔJHuBP¥@jޠ?NB% {O" ª@5AWI";vE]h%H8|!o߿ИNAD’@HE~I(?unR$r(QnIhjި’zY!o 밄W1 `"ߨ ȍ3Ђbd@ 9:h Ho¿* R[@h¿~ ѯt{@ĺKQ&hի3x 6@kBn(E"N@BbHr" oh(q%Ŀڄ¿h)"B"FnB"bb܂,'!b$$ȂGe !%CARD[dg3\2# TT @S<< prevon mouseUp go to card "Instruments" end mouseUpL j}@ firston mouseUp doMenu "first" end mouseUpJ Uh@ nexton mouseUp doMenu "next" end mouseUp ZF{ record clipon mouseUp --check to see if in record pause global theTape VCRcmd mReadStatus put the result into stat -- if not (stat contains "14") then send mouseUp to btn "Stdby" put the short date & return after fld "date" put the short time & return after fld "time" ask "Clip Label?" put it & return after fld "event" --VCRcmd mPause --will be in record now VCRcmd mReadPos put the result into frm put frm & return after fld "startFrm" end mouseUp!}F stop clipon mouseUp VCRcmd mReadPos put the result into frm VCRcmd mPause put frm & return after fld "endFrm" end mouseUp F/^ EVS900 initon mouseDown if the optionkey is down then edit script of target exit mousedown end if put the mouseloc into myPlace put item 1 of myPlace into horiz put item 2 of myPlace into vert get PopMenu(vert, horiz,"EV-C3;EV-S900;SLV-757;CCD-V5000") if it = 1 then VCRcmd mInit,EVC3,a,"",src else if it = 2 then VCRcmd mInit,EVS900,a,"",src else if it = 3 then VCRcmd mInit,SLV757,a,"",src else if it = 4 then VCRcmd mInit,CCDV5000,a,"",src end if put the Result into field "Status" end mouseDown  1FY! ReCalon mouseUp global theTape ask "What is the label of the current tape?" put it into theTape put theTape into field "theTape" VCRcmd mStop VCRcmd mReCal VCRcmd mReadStatus put the result into field "status" end mouseUpL[ Queue Endon mouseUp put 0 into theEnd repeat with i = 1 to the number of lines in field "EndFrm" if line i of field "EndFrm" > theEnd then put line i of field "EndFrm" into theEnd end if end repeat put "Searching for frame "& theEnd into field "Status" VCRcmd mSearchTo,theEnd VCRcmd mReadPos put the Result into theFrame put FrmToHMS(theFrame) into cd field "TargetHMS" put FrmToCTR(theFrame) into cd field "TargetCtr" end mouseUp!Eu Playfunction SemiColArray values put empty into array repeat with i = 1 to the number of lines in values put line i of values into valueLine repeat with k = 1 to the number of words in valueItem put valueLine & ";" after array end repeat end repeat repeat until last char of array <> ";" delete last char of array -- strip trailing semicol end repeat return array end SemiColArray on mousedown put field "Event" into values put SemiColArray (values) into itemList put the mouseloc into myPlace put item 1 of myPlace into horiz put item 2 of myPlace into vert get PopMenu(vert, horiz, itemList) put it into LineNum put line LineNum of field "startFrm" into theStart put line LineNum of field "endFrm" into theEnd put FrmToCtr(theStart) into cd field "TargetCTR" put FrmToHMS(theStart) into cd field "TargetHMS" VCRcmd mPlaySegment, theStart, theEnd VCRcmd mReadStatus VCRcmd mSearchTo,theEnd -- put the Result into field "Status" end mousedown( JY}  thePath*"\k}  theObject# F Playfunction SemiColArray values put empty into array repeat with i = 1 to the number of lines in values put line i of values into valueLine repeat with k = 1 to the number of words in valueItem put valueLine & ";" after array end repeat end repeat repeat until last char of array <> ";" delete last char of array -- strip trailing semicol end repeat return array end SemiColArray on mousedown put field "Event" into values put SemiColArray (values) into itemList put the mouseloc into myPlace put item 1 of myPlace into horiz put item 2 of myPlace into vert get PopMenu(vert, horiz, itemList) put it into LineNum put line LineNum of field "startFrm" into theStart VCRcmd mSearchTo,theStart VCRcmd mReadStatus put the Result into field "Status" VCRcmd mReadPos put the Result into theFrame put FrmToHMS(theFrame) into cd field "TargetHMS" put FrmToCTR(theFrame) into cd field "TargetCtr" end mousedownr'3*} Get Logon mouseUp put empty into field "date" put empty into field "time" put empty into field "event" put empty into field "startFrm" put empty into field "endFrm" answer file "What is the file specification" put it into filespec open file filespec -- First read the header record read from file filespec until tab if it is empty then -- check for end of file close file filespec answer "This is an empty file" exit mouseUp else put empty into last char of it put it into field "theTape" end if read from file filespec until tab put empty into last char of it put it into theProject read from file filespec until tab put empty into last char of it put it into theExperiment read from file filespec until return put empty into last char of it put it into theTrial --Now read in the lines of the different fields put 1 into linenum repeat --do the first field and check for end of file read from file filespec until tab if it is empty then -- end of file close file filespec exit mouseUp end if put empty into last char of it put it & return after field "date" --now do field 2 read from file filespec until tab put empty into last char of it put it & return after field "time" --now do field 3 read from file filespec until tab put empty into last char of it put it & return after field "event" --now do field 4 read from file filespec until tab put empty into last char of it put it & return after field "startFrm" --now do field 4 read from file filespec until return put empty into last char of it put it & return after field "endFrm" add 1 to lineNum end repeat beep end mouseUp (,3@} Save Logon mouseUp global theProject, theExperiment, theTrial, theObject, theObjectPath, thePath, fileStatus, theLine put cd fld "thePath" & cd fld "theObject" into theOutput put "Saving file:"& theOutput into field "Status" open file theOutput write field "theTape" & tab & theProject & tab & theExperiment & tab & theTrial & return to file theOutput repeat with thisLine = 1 to the number of lines in field "event" write line thisLine of field "date" & tab & line thisLine of field "time" & tab & line thisLine of field "event" & tab & line thisLine of field "startFrm" & tab & line thisLine of field "endFrm" & return to file theOutput end repeat close file theOutput put 0 into theEnd repeat with i = 1 to the number of lines in field "EndFrm" if line i of field "EndFrm" > theEnd then put line i of field "EndFrm" into theEnd end if end repeat put 100000000 into theBeginning repeat with i = 1 to the number of lines in field "StartFrm" if line i of field "StartFrm" < theBeginning then put line i of field "StartFrm" into theBeginning end if end repeat put field "thetape" into theTape put cd field "theObject" into theObject put theLine into Path go card "Videotape Log" of Stack "LaboratoryToolbox" in new window put path & return after cd field "PathNums" put theTape & return after cd field "TapeLabels" put theObject & return after cd field "TapeLogs" put theBeginning & return after cd field "LogStart" put theEnd & return after cd field "LogEnd" doMenu "Back" end mouseUp)wf ZeroEntrieson mouseUp put empty into field "date" put empty into field "time" put empty into field "event" put empty into field "startFrm" put empty into field "endFrm" beep end mouseUp ** @ TargetHMS+  GoToon mouseUp put empty into field "Status" put cd field TargetHMS into theHMS put HMStoFRM(theHMS) into theFrm put FrmtoCtr(theFrm) into cd field "TargetCTR" vcrCMD mSearchTo, theFRM VCRcmd mReadStatus put the Result into field "Status" end mouseUp*, < TargetCtr- ;a GoToon mouseUp put cd field TargetCtr into theCtr put CtrtoFrm(theCtr) into theFrm put FrmtoHMS(theFrm) into cd field "TargetHMS" vcrCMD mSearchTo, theFRM VCRcmd mReadStatus put the Result into field "Status" end mouseUp.A PlayDeckon mouseUp VCRcmd mPlay VCRcmd mReadStatus put the Result into field "Status" end mouseUp/A/ PauseDeckon mouseUp VCRcmd mPause VCRcmd mReadStatus put the Result into field "Status" VCRcmd mReadPos put the Result into theFrame put FrmToHMS(theFrame) into cd field "TargetHMS" put FrmToCTR(theFrame) into cd field "TargetCtr" end mouseUp0A StopDeckon mouseUp VCRcmd mStop VCRcmd mReadStatus put the Result into field "Status" VCRcmd mReadPos put the Result into theFrame put FrmToHMS(theFrame) into cd field "TargetHMS" put FrmToCTR(theFrame) into cd field "TargetCtr" end mouseUp1^o Go To Trialon mouseUp global theTrail, theProject go card theTrial of stack theProject in new window end mouseUpMotion:Dennis' Logs: EngThrust2 00:02:48233 Blakes MessG4/8/91 4/8/91 4/8/91 4/8/91 4/8/91 4/8/91 4/8/91 4/8/91 4/8/91 4/8/91 Q2:05 PM 2:09 PM 2:11 PM 2:14 PM 2:23 PM 2:25 PM 2:30 PM 2:35 PM 2:37 PM 2:39 PM TensionOnly53:54:15 TensionOnly33:15:02 TensionOnly33:24:11 TensionOnly33:52:06 TensionOnly35:36:08 TensionOnly35:52:04 TensionOnly37:10:17 TensionOnly37:38:08 TensionOnly37:57:01 TensionOnly38:12:29 <1441 23863 24132 24968 26137 26876 28063 28535 30864 31687 ;1527 24132 24508 25510 28535 28758 31261 32115 32458 3337 AtSearchPointVideo ClipMakeron closeCard CloseVidPort A end closeCardBMAPdg  |  R RA @ BA!@bA,8>2 p`36)̀b>'`/+Q Sp( #bu/^x?Ig CARD~P3}0Lj}@ firston mouseUp doMenu "first" end mouseUp*K 1 PathNums,K  TapeLabels*K# TapeLogs*KO LogStart(K>{ LogEnd+N Zero Entrieson mouseup put empty into cd fld "PathNums" put empty into cd fld "TapeLabels" put empty into cd fld "TapeLogs" put empty into cd fld "LogStart" put empty into cd fld "LogEnd" end mouseup  Hoff Tension  70836 Videotape LogBMAP : J\8'C 1~#C@$R "Change" Dialogon mouseUp ShowDialog 2,4740,"Find What:","Change To:","Find & Change Dialog","Your string goes here." if the result is empty then put "You clicked the Cancel button." into cd fld "theResult" else put the result into temp if item 1 of temp is empty then put "String 1 was: empty" & return into cd fld "theResult" else put "String 1 was:" && item 1 of temp & return into cd fld "theResult" if item 2 of temp is empty then put "String 2 was: empty" after cd fld "theResult" else put "String 2 was:" && item 2 of temp after cd fld "theResult" end if end mouseUp J@S<< prevon mouseUp doMenu "prev" end mouseUpTUh@ nexton mouseUp go to card "Chronology" end mouseUpLj}@ firston mouseUp doMenu "first" end mouseUp` 4eO Read Fileon mouseUp ask "Import text from what file?" if it is empty then exit mouseUp put it into fileName open file fileName repeat doMenu "New Card" repeat with i = 1 to the number of fields - 1 read from file fileName until tab if it is empty then -- end of file if i=1 then doMenu "delete Card" close file fileName exit mouseUp end if end if put empty into last char of it --kill tab put it into field i end repeat read from file fileName until return put empty into last char of it --kill tab put it into field number of fields end repeat end mouseUp lNN Write to Fileon mouseUp ask "Write references to what file?" put it into fileName open file fileName repeat with cardNum = 1 to the number of cards put "now on card " & cardNum & " of " & number of cards go card cardNum put offset("journal", name of this background) into it if it > 0 then write field author to file fileName write " (" & field year & ") " to file fileName write field title & ". " to file fileName write field journal& " " to file fileName write field volume & ": " to file fileName write field pages & "." to file fileName write " In: " & field theBook & return & return to file fileName end if put offset("book", name of this background) into it if it > 0 then write field author to file fileName write " (" & field year & ") " to file fileName write field title to file fileName write "In: " & field book & ". " to file fileName write field editors & "[eds]. " to file fileName write field publisher & ". " to file fileName write field city & ". " to file fileName write "Pp. " & field pages & "." to file fileName write " In: " & field theBook & return & return to file fileName end if end repeat end mouseUp  fN Write to Excelon mouseUp ask file "What is the fileSpecification?" put it into fileName open file fileName put the number of lines in field "poobah" into theEnd repeat with lineNum = 1 to theEnd put "now on line " & lineNum & " of " & theEnd write line lineNum of field "poobah" & tab to file fileName write return to file fileName end repeat close file fileName end mouseUp  mĀN Read from Excelon mouseUp answer file "What is the file specification" put it into filespec open file filespec -- First read the header record read from file filespec until tab if it is empty then -- check for end of file close file filespec answer "This is an empty file" exit mouseUp else put empty into last char of it put it into field 1 end if read from file filespec until tab put empty into last char of it put it into field 2 read from file filespec until tab put empty into last char of it put it into field 3 read from file filespec until tab put empty into last char of it put it into field 4 --Now read in the lines of the different fields put 1 into linenum repeat --do the first field and check for end of file read from file filespec until tab if it is empty then -- end of file close file filespec exit mouseUp end if put empty into last char of it put it & return after line lineNum of field 1 --now do field 2 read from file filespec until tab put empty into last char of it put it & return after line lineNum of field 2 --now do field 3 read from file filespec until tab put empty into last char of it put it & return after line lineNum of field 3 --now do field 4 read from file filespec until return put empty into last char of it put it & return after line lineNum of field 4 add 1 to lineNum end repeat beep end mouseUp bЀ Save Logon mouseUp put cd fld "thePath" & cd fld "theObject" into theOutput put "Saving file:"& theOutput into field "Status" open file theOutput write field "theTape" & tab & theProject & tab & theExperiment & tab & theTrial & return to file theOutput repeat with thisLine = 1 to the number of lines in field "event" write line thisLine of field "date" & tab & line thisLine of field "time" & tab & line thisLine of field "event" & tab & field "startFrm" & tab & line thisLine of field "endFrm" & return to file theOutput end repeat close file theOutput end mouseUpp Get Logon mouseUp put empty into field "date" put empty into field "time" put empty field "event" put empty into field "startFrm" put empty into field "endFrm" answer file "What is the file specification" put it into filespec open file filespec -- First read the header record read from file filespec until tab if it is empty then -- check for end of file close file filespec answer "This is an empty file" exit mouseUp else put empty into last char of it put it into field "theTape" end if read from file filespec until tab put empty into last char of it put it into theProject read from file filespec until tab put empty into last char of it put it into theExperiment read from file filespec until return put empty into last char of it put it into theTrial --Now read in the lines of the different fields put 1 into linenum repeat --do the first field and check for end of file read from file filespec until tab if it is empty then -- end of file close file filespec exit mouseUp end if put empty into last char of it put it & return after field "date" --now do field 2 read from file filespec until tab put empty into last char of it put it & return after field "time" --now do field 3 read from file filespec until tab put empty into last char of it put it & return after ield "event" --now do field 4 read from file filespec until return put empty into last char of it put it & return after field "startFrm" --now do field 4 read from file filespec until return put empty into last char of it put it & return after field "endFrm" add 1 to lineNum end repeat beep end mouseUp B Queue Endon mouseUp put 0 into theEnd repeat with i = 1 to the number of lines in field "EndFrm" if line i of field "EndFrm" > theEnd then put line i of field "EndFrm" into theEnd end if end repeat put "Searching for frame "& theEnd into field "Status" VCRcmd mSearchTo,theEnd end mouseUp+_ Mouseon mouseDown repeat until the mouse = "up" put the mouseLoc end repeat hide message box end mouseDownButtonsBMAP P,"(R0p%0`4 %R%/` @ $2~8c~8~0c㇞p{qq{9"S6^A6/a"SA!‚H  @3  @2(("@"&;LT@ D#(!2@sBA ` Ac@ 6 ?8|<8>px~ !@UUUUUUUUCARD*3FRLj}@ firston mouseUp doMenu "first" end mouseUp,Bx Tabloidon mouseUp if there is not a window "Tabloid" then set cursor to watch Tabloid "Tabloid",cd fld "List","dis" set lockText of window "Tabloid" to false put "Tabloid" into openWindow put openWindow end if end mouseUp&(r ListF\w Textoidon mouseUp Textoid "Textoid",cd fld 1,false,"91,69","red" testError the Result set the lockText of window "Textoid" to false end mouseUp on TestError What if What empty then beep answer What exit to HyperCard end if end TestError_uw Listoidon mouseUp if there is not a window "Listoid" then set cursor to watch Listoid "Listoid",cd fld "List" end if end mouseUppy Handlerson mouseUp edit the script of background "WindoidHandlers" end mouseUpwv PICToidon mouseUp put FileName("PICT") into FileSpec --set rect to 50,50,350,350 Picture FileSpec,File,Zoom end mouseUp(q Output;This is the stuff, for the windoids It is, neat, stuff ;This is the stuff, for the windoids It is, neat, stuff Windoidson openCard global OpenWindow set scroll of cd fld 1 to 0 put empty into cd fld "Output" end openCard on closeCard global OpenWindow if there is a window OpenWindow then close window OpenWindow end closeCardBMAP  7!lB#C?%R0R `5`% $ 4`A`% %0 #P4@0 rg~c>D Ãr07 @6Fq0SF0 08 q ၃8ppD ! P   H $@4p2# #+@3@#;$ L&03 2RB$@8H  2A( 3@ OrwbhL Sy>p|<o`) `CARDJ03I<t' 8h Create Editoron mouseUp ask "What is the new Editor type?" if field "EditorTypes" is empty then put it into field "EditorTypes" else put return & it after last line of field "EditorTypes" end if go to card "EditorDefinition" doMenu "copy card" doMenu "paste card" set the name of this card to it put it into card field "title" end mouseUpN@S<< prevon mouseUp go card "Handlers" end mouseUpXUh@ nexton mouseUp go to card "DataDictionary" end mouseUpLj}@ firston mouseUp doMenu "first" end mouseUp"zsArray Derivative Array Integrator Array Manipulator Array Math Array Peaks Array Statistics Histogram Scattergram L Q  Editors allow one to alter the format or values within existing data files. Table editors allow manipulation of spreadsheet files. Image editors allow manipulation of bitmap and pixel map files. Analog editors allow signal processing of analog files. Editorson openCard sort field "EditorTypes" if line 1 of field "EditorTypes" is empty then delete line 1 of field "EditorTypes" end if if the last character of field "EditorTypes" is not return then put return after field "EditorTypes" end if end openCard CARDL3K&Z!, TitleN@S<< prevon mouseUp go card "Handlers" end mouseUpXUh@ nexton mouseUp go to card "DataDictionary" end mouseUpNj}@ firston mouseUp go card "Editors" end mouseUp DefinitionEditorDefinitionCARD[?3&Z!, TitleJ@S<< prevon mouseUp doMenu "prev" end mouseUpTUh@ nexton mouseUp go to card "Chronology" end mouseUpNj}@ firston mouseUp go card "Editors" end mouseUp*.c xyvalues . yvalueon mouseWithin if the selectedField is not empty then exit mouseWithin get the scroll of last item of theFields() if it the scroll of first item of theFields() then put the textHeight of last item of theFields() into baseLineSize lock screen repeat with count = 1 to (number of items in theFields() - 1) set scroll of (item count of theFields()) to it end repeat unlock screen end if end mouseWithin function theFields return "background field values,card field xvalue,card field yvalue" end theFields f <N9 Read Scattergramon mouseUp put empty into cd field xvalue put empty into cd field yvalue put empty into cd field xyvalues put empty into cd field sizefield put empty into field values if cd field "file name" is empty then answer file "Input file specification?" put it into fileName put fileName into cd fld "file name" else put cd field "file name" into fileName end if open file fileName put 0 into ssize -- put 0 into index repeat read from file fileName until tab put empty into last char of it --kill tab put it into xvalue put xvalue & return after cd field "xvalue" read from file fileName until return put empty into last char of it put it into yvalue put yvalue & return after cd field "yvalue" if it is empty then -- end of file close file fileName set cursor to watch if the last line of cd field "xyvalues" is empty then delete the last line of cd field "xyvalues" end if Tabloid "Scattergram", cd fld "xyvalues","one","20,40,200,280" set the columnWidth of window "Scattergram" to 70 set the rect of window "Scattergram" to"20,45,200,280" set the lockText of window "Scattergram" to FALSE put "Scattergram" into openWindow exit mouseup end if -- add 1 to index put xvalue & "," & yvalue & return after cd fld "xyvalues" put the number of lines in cd field "xvalue" into card field "sizefield" end repeat end mouseUp* Lsizefield Oa: Write Scattergramon mouseUp if cd field "file name" is empty then ask file "Output file specification?" put it into fileName else put cd field "file name" into fileName end if put fileName open file fileName put the text of window "Scattergram" into cd field "xyvalues" repeat with i = 1 to the number of lines in cd field "xyvalues" write item 1 of line i of cd field "xyvalues" & tab to file fileName write item 2 of line i of cd field "xyvalues" & return to file fileName end repeat close file fileName put empty into cd field xvalue put empty into cd field yvalue put empty into cd field xyvalues put empty into cd field sizefield put empty into field values put empty into cd field "file name" close window "Scattergram" end mouseUpL` Descriptive Statistics-- -- Portions of this stack are used with permission -- from the book "Cooking with HyperTalk 2.0", -- copyright 1990 by Dan Winkler and Scott Knaster. -- function CommaArray values put empty into array repeat with i = 1 to the number of lines in values put line i of values into valueLine repeat with k = 1 to the number of words in valueItem put valueLine & "," after array end repeat end repeat repeat until last char of array <> "," delete last char of array -- strip trailing semicol end repeat return array end CommaArray function sum -- script 9-9: Sum a list of numbers. -- This adds up a bunch of numbers. They can be -- separate parameters, or an item list. put 0 into total repeat with paramNum = 1 to the paramCount put param(paramNum) into list repeat with i = 1 to the number of items in list add item i of list to total end repeat end repeat return total end sum on mouseDown set the hilite of button "Descriptive Statistics" to true answer "Which column do you wish to analyze" with "x values" or "y values" or "Cancel" set cursor to watch if it is "Cancel" then exit mouseDown else if it is "y values" then set the visible of cd field "yvalue" to true put the text of window "Scattergram" into cd field "xyvalues" put empty into cd field "yvalue" repeat with i = 1 to the number of lines in cd field "xyvalues" put item 2 of line i of cd field "xyvalues" & return after cd field "yvalue" end repeat if the last line of cd field "yvalue" is empty then delete the last line of cd field "yvalue" end if select text of cd fld yvalue put commaarray(the selectedText) into values -- set the visible of cd field "yvalue" to false else if it is "x values" then set the visible of cd field "xvalue" to true put the text of window "Scattergram" into cd field "xyvalues" put empty into cd field "xvalue" repeat with i = 1 to the number of lines in cd field "xyvalues" put item 1 of line i of cd field "xyvalues" & return after cd field "xvalue" end repeat if the last line of cd field "xvalue" is empty then delete the last line of cd field "xvalue" end if select text of cd fld xvalue put commaarray(the selectedText) into values -- set the visible of cd field "xvalue" to false end if put commaarray(the selectedText) into values put "TOTAL:" && sum(values) into line 2 of card field "theStats" put AVERAGE(values) into line 3 of card field "theStats" put "MAX:" && max(values) into line 7 of card field "theStats" put "MIN:" && min(values) into line 8 of card field "theStats" put "FIELD:" && it into line 1 of card field "theStats" put 0 into line 4 of card field "theStats" repeat with lineNum = 1 to number of items of values put 0 into total add item lineNum of values to total subtract line 3 of card field "theStats" from total -- diference from mean put total ^2 into total add the value of total to line 4 of card field "theStats" -- keep a running total end repeat put line 4 of card field "theStats" / number of items of values into line 5 of card field "theStats" put sqrt(line 5 of card field "theStats") into line 6 of card field "theStats" put "STD DEV:" && line 6 of card field "theStats" into line 6 of card field "theStats" put "VARIANCE:" && line 5 of card field "theStats" into line 5 of card field "theStats" put "SUM OF SQ:" && line 4 of card field "theStats" into line 4 of card field "theStats" put "AVERAGE:" && line 3 of card field "theStats" into line 3 of card field "theStats" set the hilite of button "Descriptive Statistics" to false set the visible of cd field "xvalue" to false set the visible of cd field "yvalue" to false end mouseDown |{ theStatson enterInField hide me send "hideShowPopUp" to card button id 16 end enterInField*t file name'? h  New Buttonon mouseUp visual effect dissolve go card "Scattergram Editor"in stack Lab Toolbox Help end mouseUp(.R xvalue);8 New Scattergramon mouseUp put empty into cd field xvalue put empty into cd field yvalue put empty into cd field xyvalues put empty into cd field sizefield put empty into field values ask "How many x/y pairs of data values are to be entered?" repeat with i = 1 to it put " , " & return after cd field "xyvalues" end repeat set cursor to watch Tabloid "Scattergram", cd fld "xyvalues","one", "20,45,200,280" set the lockText of window "Scattergram" to FALSE set the columnWidth of window "Scattergram" to 70 set the rect of window "Scattergram" to"20,45,200,280" put "Scattergram" into openWindow end mouseUp ScattergramScattergramon openCard put empty into cd field "theStats" end openCard on closeCard if there is a window "Scattergram" then send mouseUp to button "Write Scattergram" close window "Scattergram" end if if there is a window "DescriptiveStatistics" then close window "DescriptiveStatistics" end if put empty into cd field "theStats" end closeCard @BMAP? dxe܍"3R<Rcf"`f< ~f ݻ(AD 8`f {d@|9|! H yx?fٻ m`1"Sp\1pS|: "HPbL`ɀ} CARD3z 3 .$&Z!, TitleJ@S<< prevon mouseUp doMenu "prev" end mouseUpTUh@ nexton mouseUp go to card "Chronology" end mouseUpNj}@ firston mouseUp go card "Editors" end mouseUpL <N9 Read Histogramon mouseUp put empty into cd field xvalue put empty into cd field sizefield put empty into field values if cd field "file name" is empty then answer file "Input file specification?" put it into fileName put fileName into cd fld "file name" else put cd field "file name" into fileName end if open file fileName put 0 into ssize -- put 0 into index repeat read from file fileName until return put empty into last char of it put it into xvalue put xvalue & return after cd field "xvalue" if it is empty then -- end of file close file fileName set cursor to watch if the last line of cd field "xvalue" is empty then delete the last line of cd field "xvalue" end if Tabloid "Histogram", cd fld "xvalue","one","20,40,200,280" set the columnWidth of window "Histogram" to 80 set the rect of window "Histogram" to"20,45,200,280" set the lockText of window "Histogram" to FALSE put "Histogram" into openWindow exit mouseup end if -- add 1 to index put the number of lines in cd field "xvalue" into card field "sizefield" end repeat end mouseUp* Lsizefieldr Oa: Write Histogramon mouseUp if cd field "file name" is empty then ask file "Output file specification?" put it into fileName else put cd field "file name" into fileName end if put fileName open file fileName put the text of window "Histogram" into cd field "xvalue" repeat with i = 1 to the number of lines in cd field "xvalue" write item 1 of line i of cd field "xvalue" & return to file fileName end repeat close file fileName put empty into cd field xvalue put empty into cd field sizefield put empty into field values put empty into cd field "file name" close window "Histogram" end mouseUp ` Descriptive Statistics-- -- Portions of this stack are used with permission -- from the book "Cooking with HyperTalk 2.0", -- copyright 1990 by Dan Winkler and Scott Knaster. -- function CommaArray values put empty into array repeat with i = 1 to the number of lines in values put line i of values into valueLine repeat with k = 1 to the number of words in valueItem put valueLine & "," after array end repeat end repeat repeat until last char of array <> "," delete last char of array -- strip trailing semicol end repeat return array end CommaArray function sum -- script 9-9: Sum a list of numbers. -- This adds up a bunch of numbers. They can be -- separate parameters, or an item list. put 0 into total repeat with paramNum = 1 to the paramCount put param(paramNum) into list repeat with i = 1 to the number of items in list add item i of list to total end repeat end repeat return total end sum on mouseDown set the hilite of button "Descriptive Statistics" to true set cursor to watch set the visible of cd field "xvalue" to true put the text of window "Histogram" into cd field "xvalue" if the last line of cd field "xvalue" is empty then delete the last line of cd field "xvalue" end if select text of cd fld xvalue put commaarray(the selectedText) into values -- set the visible of cd field "xvalue" to false put commaarray(the selectedText) into values put "TOTAL:" && sum(values) into line 2 of card field "theStats" put AVERAGE(values) into line 3 of card field "theStats" put "MAX:" && max(values) into line 7 of card field "theStats" put "MIN:" && min(values) into line 8 of card field "theStats" put "FIELD:" && it into line 1 of card field "theStats" put 0 into line 4 of card field "theStats" repeat with lineNum = 1 to number of items of values put 0 into total add item lineNum of values to total subtract line 3 of card field "theStats" from total -- diference from mean put total ^2 into total add the value of total to line 4 of card field "theStats" -- keep a running total end repeat put line 4 of card field "theStats" / number of items of values into line 5 of card field "theStats" put sqrt(line 5 of card field "theStats") into line 6 of card field "theStats" put "STD DEV:" && line 6 of card field "theStats" into line 6 of card field "theStats" put "VARIANCE:" && line 5 of card field "theStats" into line 5 of card field "theStats" put "SUM OF SQ:" && line 4 of card field "theStats" into line 4 of card field "theStats" put "AVERAGE:" && line 3 of card field "theStats" into line 3 of card field "theStats" set the hilite of button "Descriptive Statistics" to false set the visible of cd field "xvalue" to false end mouseDown |{ theStatson enterInField hide me send "hideShowPopUp" to card button id 16 end enterInField*t file name'? h  New Buttonon mouseUp visual effect dissolve go card "Scattergram Editor"in stack Lab Toolbox Help end mouseUp($2f xvalue@);8 New Histogramon mouseUp put empty into cd field xvalue put empty into cd field sizefield put empty into field values ask "How many data values are to be entered?" put it into cd field sizefield repeat with i = 1 to it put " " & return after cd field "xvalue" end repeat set cursor to watch Tabloid "Histogram", cd fld "xvalue","one", "20,45,200,280" set the lockText of window "Histogram" to FALSE set the columnWidth of window "Histogram" to 80 set the rect of window "Histogram" to"20,45,200,280" put "Histogram" into openWindow end mouseUp Histogram5 Histogramon openCard put empty into cd field "theStats" end openCard on closeCard if there is a window "Histogram" then send mouseUp to button "Write Histogram" close window "Histogram" end if put empty into cd field "theStats" end closeCard @BMAPz  dxe܍"3R<Rcf"`f< ~f ݻ(AD 8`f {d@|9|! H yx?fٻ m`1"Sp\1pS|: "HPbL`ɀ} @CARD3 `()~ results=T Load Arrayon mouseUp put empty into cd field values global disk, file, length, er, inputarray, outputarray, isize --put empty into field "Operation" answer file "What is the input file specification" put it into file put "Motion" into disk put FileLen (disk, file, Er) into isize put NewIntegerArray(isize / 2) into inputarray BLoad disk, --disk file, --file inputarray, --array pointer isize, --number of bytes Er --Er array put empty into cd field values repeat with i = 1 to 14 put getintegerelement(inputarray, i) into ival put ival & return after cd field values end repeat end mouseUp( upperbd* threshold$%; Peakon mouseUp global inputarray, threshold, upperbd put cd field "threshold" into threshold --reads in the threshold value put cd field "upperbd" into upperbd --reads in the upper bound Peak inputarray, upperbd, threshold --call Peak put empty into cd field results --clears the display field repeat with i = 1 to 14 --A loop to display put getintegerelement(inputarray, i) into ival --the results put ival & return after cd field results end repeat end mouseUp( +m Values ~ New Buttonon mouseUp go to card "peak" in stack "Lab Toolbox Help" in a new window end mouseUpP @S<< prevon mouseUp go to previous card end mouseUpL Uh@ nexton mouseUp go to next card end mouseUpN j}@ firston mouseUp go card "Editors" end mouseUp*W}h DiskName*j}{ FileName1530 0 0 0 0 0 0 0 6 0 0 0 0 0 +-3 -2 -1 -3 -4 -4 -3 -3 -5 -7 -7 -5 -4 -4 Array PeaksBMAP  U:T' '<0#. 33Ùp| 1>x>3p 9 00xc308ÜH8` 0a `08p03 `0`@p`p `00#@S p@@@B `0c00?R00 ~#2b@a#@ B(#`@@ 0 922 @B## H0BA2"МHNSBBx<x8< 0 (x(p= yO]yH"a yH"A yH>A yH A yȑ"A yOA*BBy8qayD""yD""y|q""y@ ""yD""y8q CARDN3* \P@S<< prevon mouseUp go to previous card end mouseUpLUh@ nexton mouseUp go to next card end mouseUpNj}@ firston mouseUp go card "Editors" end mouseUp~> Tm statisticson mouseUp global inputarray, Stats, low, high, upperbd put NewIntegerArray(10) into Stats --creates an array for the results put cd field "upperbd" into upperbd --reads in upper bound put cd field Stat5 into Low --reads in low threshold put cd field Stat4 into High --reads in high threshold SetIntegerElement Stats,4,High --sets low threshold in array SetIntegerElement Stats,5,low --sets high threshlod in array do stat inputarray,upperbd,Stats --calls Stat put GetIntegerElement(Stats,0) into card field "Stat1" --writes the put GetIntegerElement(Stats,1) into card field "Stat2" --elements of put GetIntegerElement(Stats,2) into card field "Stat3" --the result put GetIntegerElement(Stats,3) into card field "Stat4" --array put GetIntegerElement(Stats,4) into card field "Stat5" end mouseUp&rt stat1&t stat2&t stat3& t stat4& t stat5 % ;m Load Arrayon mouseUp put empty into cd field values global disk, file, length, er, inputarray, isize answer file "What is the input file specification" put it into file put "Adso of Melk" into disk put FileLen (disk, file, Er) into isize put NewIntegerArray(isize / 2) into inputarray BLoad disk, --disk file, --file inputarray, --array pointer isize, --number of bytes Er --Er array put empty into field values repeat with i = 1 to 14 put getintegerelement(inputarray, i) into ival put ival & return after cd field values end repeat end mouseUp( <y values(]un UpperBd*~ New Buttonon mouseUp go to card "statistics" in stack "Lab Toolbox Help" in a new window end mouseUp*!x2 DiskName*4xE FileName61500292620213329541#-4 -3 -3 -3 0 2 4 4 6 3 1 0 -1 -5 Array Statistics BMAPN   ) 'p'`R A/  ax`'C B``@`9> I F  dg`|37#b`?8X2?b7!q@D C2P@#pC 8@0#!AP   p#p!e 22a#+B0#"8@r@ 2+3P2"H4 "3 NCA@8BcH RHA4@?$$=1a?a~!Q(]sQ(aHQDAȀQDAHQAHQAHQAǀ$" #" #r'.xr$H0r$H r$H r$H r$H rǏ x#r \r "a$@r"@$@r >A'b? A$r "A$@r @ & &⮁" "12*2$2 Ac2UD2I"D2A(2A"2A"(2A"D2ADR@B` C@@ 2As! DDH" 2x2x$7ǀH2CA! @#@#@"B @ %p 2@q,8C r| s'""x>s!@1=00@A 3L3d&!A@@r (B( @@# #@# # ?C2222$"@3@#@2&QP3 !0" 22#@#@2 #@*sA@BA 2" C@63N"@r>x8|Ï>0 `((J@@y8' HDB$H :x:x /  ydž<1 $ -$ - # @# jC jDH jDEQ jDEQ jDB! jDB! jC  .  jË< j$L"D j$H"D j'"D j$"D j$H"D jiÈ<< * CARDO@36,n secondarray(:P; lowerbd(:>Pv upperbd*:P datatypeZl Load Array 2on mouseUp global disk, file, length, er, inputarray, Array2, isize --put empty into field "Operation" answer file "What is the input file specification" put it into file put "Motion" into disk put FileLen (disk, file, Er) into isize put NewIntegerArray(isize / 2) into Array2 BLoad disk, --disk file, --file Array2, --array pointer isize, --number of bytes Er --Er array put empty into cd field secondarray repeat with i = 1 to 14 put getintegerelement(Array2, i) into ival put ival & return after cd field secondarray end repeat end mouseUp, nw outputfield Zlw Load Array 1on mouseUp put empty into cd field values global disk, file, length, er, Array1, isize --put empty into field "Operation" answer file "What is the input file specification" put it into file put "Motion" into disk put FileLen (disk, file, Er) into isize put NewIntegerArray(isize / 2) into Array1 BLoad disk, --disk file, --file Array1, --array pointer isize, --number of bytes Er --Er array put empty into cd field values repeat with i = 1 to 14 put getintegerelement(Array1, i) into ival put ival & return after cd field values end repeat end mouseUp$ @Yw Perform Operationon mousedown if the optionkey is down then edit script of target exit mousedown end if global disk, file, length, er, Array1, Array2, upperbd, lowerbd, isize put NewIntegerArray (isize) into storagearray put NewIntegerArray (isize) into resultarray movedata array1, storagearray, isize --call movedata put cd field "upperbd" into upperbd put cd field "lowerbd" into lowerbd put cd field "datatype" into type put empty into cd field outputfield --put (cd field arrayindex + 14) into upperindex put the mouseloc into myPlace put item 1 of myPlace - 20 into horiz put item 2 of myPlace - 10 into vert get PopUpMenu("Add Arrays;Divide Arrays;Multiply Arrays, Subtract Arrays", 0, vert, horiz) if it = 1 then do Add2 (Array1, Array2, lowerbd, upperbd, type) put the result else if it = 2 then do div2 (Array1, Array2, lowerbd, upperbd, type) else if it = 3 then do mul(Array1, Array2, lowerbd, upperbd, type) else if it = 4 then do Sub2(Array1, Array2, lowerbd, upperbd, type) else if it = 5 then end if do movedata array1, resultarray, isize do movedata storagearray, array1, isize put empty into cd field outputfield repeat with i = 1 to 14 put getintegerelement(resultarray, i) into ival put ival & return after cd field outputfield end repeat end mousedown d Zlw Save Resultson mouseUp global Er, howbig, resultarray ask file "Name the file to be saved" put it into outfilename put card field "datatype" into ftype put card Field "UpperBd" into howbig put howbig * 2 into size BSave diskname, outfilename, inputarray, ftype, size, er --put filename into OpFile --open file OpFile --write infilename & return to file OpFile --repeat with i = 1 to the number of lines in cd field "operation" -- write line i of cd fld "operation" & return to file OpFile --end repeat --close file OpFile --put empty into cd field "operaton" end mouseUp(nx values:T~ New Buttonon mouseUp go to card "Arithmetic Manipulations" in stack "Lab Toolbox Help" in a new window end mouseUpP@S<< prevon mouseUp go to previous card end mouseUpLUh@ nexton mouseUp go to card next end mouseUpNj}@ firston mouseUp go card "Editors" end mouseUp&T4 Title*0z DiskName*/@z FileName0050+-3 -2 -1 -3 -4 -4 -3 -3 -5 -7 -7 -5 -4 -4 (-7 -5 -4 -6 -4 -2 1 1 1 -4 -6 -5 -5 -9 #-4 -3 -3 -3 0 2 4 4 6 3 1 0 -1 -5 Array MathArray MathBMAP Zo+8m#@@ᤁ$% & @ᰁ(((@7  )  #@ H) @@       $@@ $@ vLJ8pp㈞DGxx$HDp>Q>b><1<6n3n3; rπ< Ǟxx*$ CARD3* > 1@T Load Arrayon mouseUp put empty into field values put empty into cd field "diskName" put empty into cd field "FileName" put empty into cd field pointer put empty into cd field "LowerBd" put empty into cd field "upperbd" put empty into messagebox put empty into card Field "ArraySize" global disk, file, length, er, inputarray, isize --put empty into field "Operation" answer file "What is the File Spec?" put it into thePath put the length of thePath into len put offset(":",thePath) - 1 into theTest put char 1 to theTest of thePath into disk put offset(":",thePath) + 1 into theTest put char theTest to len of thePath into file put disk into card field "DiskName" put file into card field "FileName" put 0 into Er put FileLen (disk, file, Er) div 2 into howbig put howbig * 2 into isize put howbig into cd field "arraySize" -- put "FileLen " & GetIntegerElement(Er,0) into card field "DisposeResult" put NewIntegerArray(howbig) into inputArray put inputArray into cd fld "Pointer" BLoad disk, --disk file, --file inputarray, --array pointer isize, --number of bytes Er --Er array put 1 into cd field "LowerBd" put cd field "arraySize" into cd field "upperbd" put empty into field values repeat with i = 1 to 14 put getintegerelement(inputarray, i) into ival put ival & return after field values end repeat end mouseUp(g}z upperbd(} lowerbd&| mode(z resultAPT Integrateon mouseUp put cd fld "pointer" into inputarray put cd field "lowerbd" into lowerbd put cd field "upperbd" into upperbd put cd field "mode" into mode put Integ (inputarray, lowerbd, upperbd, mode) into cd field "result" end mouseUp(/ZB pointer&Z!, TitleJ @S<< prevon mouseUp doMenu "prev" end mouseUpT Uh@ nexton mouseUp go to card "Chronology" end mouseUpN j}@ firston mouseUp go card "Editors" end mouseUp* EZX arraySize* /@] DiskName*BS] FileName-2Array Integrator-9369HD40AnalogData/Dist99901767882110*-4 4 17 34 45 64 66 73 72 69 63 49 40 24 Array Integrator`BMAP  R31h"  4r%"04`   4\ 4` 4@ 4@ 22BÇRH BHBR RH Bxcp᷁'.p%ǟy  6@@ǟy&     "#8a"$LD77`( 7 @| Uf

o@ R-rR`, $"$ V [I}n80 `"  `/ 7@`<Ra @ $#  <# 0$J<3lp60 (rh ?00]S0 @(~h/? /  _64Xi#@$Y +1@Dc  D& p80 H/( DPD| "" @!"@_!vd_""$@_<"$@_$>b$@_" $@_!"dP_p :3@F30B3@`sf"ق/? t/q~/ !0/ # 9fD"e P3 B8< 1/9~   8 + +0 +  9cc|}P X=8 [ `"1HL 6\c ,"0c(gas(D ”sDDq@"'c|DADsDchgCARD)3' Vt Chronologyon mouseUp go card "Chronology" end mouseUpTtg Path Liston mouseUp go card "PathList" end mouseUpProject CARD,d0m3* "> ">u .!d3ProjectLabelJ@S<< prevon mouseUp doMenu "Prev" end mouseUpJUh@ nexton mouseUp doMenu "next" end mouseUpL j}@ firston mouseUp doMenu "first" end mouseUpJ  Trialson mouseDown -- go to the card associated with the click select the clickLine put the value of the clickLine into theTrial wait until the mouse is up if the mouseLoc is not within rect of me then select empty exit mouseDown end if visual effect shrink to top go card theTrial end mouseDown  Q New Trialon mouseUp put card field "ProjectLabel" into ProjectName put card field "ExperimentLabel" into ExperimentName ask "What is the label of the New Trial?" put it into TrialName if card field "Trials" is empty then put TrialName into card field "Trials" else put return & TrialName after last line of card field "Trials" end if go to card "Trial" of stack "LaboratoryToolbox" --without dialog doMenu "copy card" doMenu "Back" doMenu "Paste Card" set the name of this card to TrialName put TrialName into field "TrialLabel" put ExperimentName into card field "ExperimentLabel" put ProjectName into card field "ProjectLabel" put the short date into card field "TrialDate" put the short time into card field "TrialTime" end mouseUp0"B ExperimentLabelExperiment BMAP0m 0 2 At!v QÐCBU9C 8pB;5 s}GxB0F3Q$8A0<pB}s"DDy'8]:࿁B I`  Rl# R5$ B $ B # R R $ Bq (@CARDoJ.3-%bLj}@ firston mouseUp doMenu "first" end mouseUp0:QOExperimentLabel. #:8ProjectLabel* #45y TrialDate* 84Jy TrialTime* b Treatment( bw Journal, DataObjects*3 DataType,"c ObjectDate2R} Pathon mouseWithin if the selectedField is not empty then exit mouseWithin get the scroll of last item of theFields() if it the scroll of first item of theFields() then put the textHeight of last item of theFields() into baseLineSize lock screen repeat with count = 1 to (number of items in theFields() - 1) set scroll of (item count of theFields()) to it end repeat unlock screen end if end mouseWithin function theFields return "card field DataObjects,card field DataType,card field ObjectDate,card field path" end theFieldsl} A4 on mouseDown put the textHeight of item 1 of theFields() into baseLineSize put the number of items in theFields() into numItems repeat until the mouse is up get (scroll of last item of theFields()) - baseLineSize lock screen repeat with count = 1 to numItems set scroll of (item count of theFields()) to it end repeat unlock screen end repeat end mouseDown function theFields return "card field DataObjects,card field DataType,card field ObjectDate,card field path" end theFields l}  on mouseDown put the textHeight of item 1 of theFields() into baseLineSize put the number of items in theFields() into numItems repeat until the mouse is up get (scroll of last item of theFields()) + baseLineSize lock screen repeat with count = 1 to numItems set scroll of (item count of theFields()) to it end repeat unlock screen end repeat end mouseDown function theFields return "card field DataObjects,card field DataType,card field ObjectDate,card field path" end theFields ~B New Entryfunction SemiColArray values put empty into array repeat with i = 1 to the number of lines in values put line i of values into valueLine repeat with k = 1 to the number of words in valueItem put valueLine & ";" after array end repeat end repeat repeat until last char of array <> ";" delete last char of array -- strip trailing semicol end repeat return array end SemiColArray on mousedown global theProject, theExperiment, theTrial, theObject, theObjectPath, thePath, fileStatus, theLine set the HiLite of button "New Entry" to true if the optionkey is down then go card "DataDictionary" of stack "LaboratoryToolbox" put field "DataTypes" into values doMenu "Back" put values into cd field "Scratch" set the visible of cd field "scratch" to false end if put the name of this card into MyHome put cd field "Scratch" into values put SemiColArray (values) into itemList put the mouseloc into myPlace put item 1 of myPlace - 20 into horiz put item 2 of myPlace - 10 into vert get PopMenu(vert, horiz, itemList) put it into whichType put line whichType of cd field "Scratch" into theType put theType & return after cd fld "DataType" put cd field "ProjectLabel" into theProject put cd field "ExperimentLabel" into theExperiment put field "TrialLabel" into theTrial Ask "What is the Label of the Object?" put it into theObject put theObject & Return after cd fld "DataObjects" put the short date & Return after cd fld "ObjectDate" put FolderPath("Where will the object go.") into thePath put thePath into theObjectPath go card "PathList" find whole thePath in cd field "Paths" of card "PathList" put the result into whashappnin if whashappnin = "Not found" then put thePath & return after cd field "Paths" of card "PathList" put the number of lines in cd field "Paths" of card "PathList" into theLine put theLine & return after cd field "PathNums" of card "PathList" else if whashappnin is empty then put foundLine() into scratch put word 2 of scratch into theLine end if go MyHome put theLine & Return after cd fld "Path" put the short time into theTime put the short date into theDate put theObject && "(" & theType & ") created at " && theTime && " on " && theDate & return after cd field "Journal" put theDate & return after cd fld "Date" of cd "Chronology" put theTime & return after cd fld "Time" of cd "Chronology" put theObject && "(" & theType & ") created " & return after cd field "Event" of cd "Chronology" set the HiLite of button "New Entry" to false go card "Dispatcher" of stack "LaboratoryToolbox" put theProject into cd field "Project" of cd "Dispatcher" put theExperiment into cd field "experiment" of cd "Dispatcher" put theTrial into cd field "trial" of cd "Dispatcher" put theObject into cd field "object" of cd "Dispatcher" put theLine into cd field "PathNum" of cd "dispatcher" put theType into cd field "DataType" of cd "dispatcher" put "Create" into fileStatus end mousedown J@S<< prevon mouseUp doMenu "Prev" end mouseUpJUh@ nexton mouseUp doMenu "next" end mouseUp(P&_v scratchD~ Edit Entryfunction SemiColArray values put empty into array repeat with i = 1 to the number of lines in values put line i of values into valueLine repeat with k = 1 to the number of words in valueItem put valueLine & ";" after array end repeat end repeat repeat until last char of array <> ";" delete last char of array -- strip trailing semicol end repeat return array end SemiColArray on mousedown global theProject, theExperiment, theTrial, theObject, theObjectPath, thePath, fileStatus, theLine set the HiLite of button "Edit Entry" to true put cd field "DataObjects" into values put SemiColArray (values) into itemList put the mouseloc into myPlace put item 1 of myPlace - 20 into horiz put item 2 of myPlace - 10 into vert get PopMenu(vert, horiz, itemList) put it into LineNum put the short time into theTime put the short date into theDate put line LineNum of cd field "DataObjects" && "(" & line LineNum of cd field DataType &") modified at " && theTime && " on " && theDate & return after cd field "Journal" put theDate & return after cd fld "Date" of cd "Chronology" put theTime & return after cd fld "Time" of cd "Chronology" put theObject && "(" & theType & ") Modified " & return after cd field "Event" of cd "Chronology" put cd field "ProjectLabel" into theProject put cd field "ExperimentLabel" into theExperiment put field "TrialLabel" into theTrial put line LineNum of cd field "DataObjects" into theObject put line LineNum of cd field "DataType" into theType put line LineNum of cd field "Path" into theLine set the HiLite of button "Edit Entry" to false go card "Dispatcher" of stack "LaboratoryToolbox" put theProject into cd field "Project" of cd "Dispatcher" put theExperiment into cd field "experiment" of cd "Dispatcher" put theTrial into cd field "trial" of cd "Dispatcher" put theObject into cd field "object" of cd "Dispatcher" put theLine into cd field "PathNum" of cd "dispatcher" put theType into cd field "DataType" of cd "dispatcher" put "Cataloged" into fileStatus end mousedown l Delete Entryfunction SemiColArray values put empty into array repeat with i = 1 to the number of lines in values put line i of values into valueLine repeat with k = 1 to the number of words in valueItem put valueLine & ";" after array end repeat end repeat repeat until last char of array <> ";" delete last char of array -- strip trailing semicol end repeat return array end SemiColArray on mousedown put cd field "DataObjects" into values put SemiColArray (values) into itemList put the mouseloc into myPlace put item 1 of myPlace - 20 into horiz put item 2 of myPlace - 10 into vert get PopUpMenu(itemList, 0, vert, horiz) put it into LineNum put the short time into theTime put the short date into theDate put line LineNum of cd field "DataObjects" && "(" & line LineNum of cd field DataType &") deleted at " && theTime && " on " && theDate & return after cd field "Journal" put theDate & return after cd fld "Date" of cd "Chronology" put theTime & return after cd fld "Time" of cd "Chronology" put theObject && "(" & theType & ") Deleted " & return after cd field "Event" of cd "Chronology" delete line LineNum of cd field "DataObjects" delete line LineNum of cd field "DataType" delete line LineNum of cd field "ObjectsDate" delete line LineNum of cd field "Path" end mousedown && "(" & line LineNum of cd field DataType &") && "(" & theType & ") ] Zero Entrieson mouseup put empty into cd fld "DataObjects" put empty into cd fld "ObjectDate" put empty into cd fld "DataType" put empty into cd fld "Path" put empty into cd fld "Journal" put empty into cd fld "Treatment" end mouseup &Oa2 Journal Windoidon mouseUp -- Textoid "Journal",cd fld "Journal",false,"91,69","red" Textoid "Journal",cd fld "Journal",false,the rect of this cd,"red" set the lockText of window "Journal" to false set the selectedText of window "Journal" to 32000 end mouseUp4Pa Treatment Windoidon mouseUp -- Textoid "Treatment",cd fld "Treatment",false,"91,69","red" Textoid "Treatment",cd fld "Treatment",false,the rect of this cd,"red" set the lockText of window "Treatment" to false set the selectedText of window "Treatment" to 32000 end mouseUp]Tiff File MacPaint File GWI Type 2 File Pict2 File Scattergram Table Histogram Table Trialfunction makelist target put ";" into semicol put the number of lines in target into entries repeat with i = 1 to entries -1 put ((line i of target) & semicol) into stash put stash after cd field "scratch" end repeat put (line entries of target) into stash put stash after cd field "scratch" put cd field "scratch" into thelist return theList end makelist function stripPath path -- given the path, returns the short stack name get length(path) repeat with i = it down to 1 if char i of path = ":" then return char (i+1) to it of path end repeat end stripPath on closeTextoid What put the text of window What into cd field What end closeTextoid `BMAP. p' pp.ⷁ@ P  @  3  3K $  ` 3 c 3  3Z   $I 49 3 % % C 3   )(@4@@("@ )7 $P$ `5&I3N&34$@% <-E S GPSʀL): $%  " !?  A@=  <r !@ K" R<ÇX a^X-p QD= $=B $L aLX a8xG @  " "  @َ !L fQ  HDQ  HD_ !an6`ŀ 23fa3  "!BA"H  !~A" !@A"!&"bA"!C<<㹙1 p !S0#10R,A"'D`!a@' D@1`@<# p~8 QG^ t^6qc23  ~ Hĉo@K2~xĀA ` &`BApq2  @!GA'_( N_F` (&gcs(( ~6#.z.z@CARD3I &9I Date&98| Time9k| Eventon mouseWithin if the selectedField is not empty then exit mouseWithin get the scroll of last item of theFields() if it the scroll of first item of theFields() then put the textHeight of last item of theFields() into baseLineSize lock screen repeat with count = 1 to (number of items in theFields() - 1) set scroll of (item count of theFields()) to it end repeat unlock screen end if end mouseWithin function theFields return "card field date,card field time,card field event" end theFieldsT @S<< prevon mouseUp go to card "Instruments" end mouseUpL j}@ firston mouseUp doMenu "first" end mouseUpJ Uh@ nexton mouseUp doMenu "next" end mouseUp 9kI| A4 on mouseDown put the textHeight of item 1 of theFields() into baseLineSize put the number of items in theFields() into numItems repeat until the mouse is up get (scroll of last item of theFields()) - baseLineSize lock screen repeat with count = 1 to numItems set scroll of (item count of theFields()) to it end repeat unlock screen end repeat end mouseDown function theFields return "card field date,card field time,card field event" end theFieldsk|  on mouseDown put the textHeight of item 1 of theFields() into baseLineSize put the number of items in theFields() into numItems repeat until the mouse is up get (scroll of last item of theFields()) + baseLineSize lock screen repeat with count = 1 to numItems set scroll of (item count of theFields()) to it end repeat unlock screen end repeat end mouseDown function theFields return "card field date,card field time,card field event" end theFieldsR.%z Go Pathson mouseUp go card "PathList" end mouseUp&.6z Zero Arrayson mouseUp put empty into cd fld "Date" put empty into cd fld "Time" put empty into cd fld "Event" end mouseUpChronologyBMAP 'r:'2!%@ $!%&X$20#``3t3* S4+N3'v33'>.6C "+2B%#$%2#0QgB?4@@ @@ ) X$' @+W8'3€`#D 0*90D "6 $$$40Հ3 "6<$!$U : (:%0D: P-PK@`'(C?BU8 63·IBU @ 6 e43B@ &f @*  @    @  !%$!%DP$2 #@@" 3X33fS'q͋3:[3"=bW3$ $BB3<3#cB|$B$3 Q;B;bcCARD"i(43C N@S<< prevon mouseUp go card "Editors" end mouseUpPUh@ nexton mouseUp go to card "stacks" end mouseUpLj}@ firston mouseUp doMenu "first" end mouseUp$ 9R Create Objecton mouseUp ask "What is the new data type?" put field "DataType" into theType if field "DataTypes" is empty then put it into field "DataTypes" else put return & it after last line of field "DataTypes" end if go to card "DataDefinition" doMenu "copy card" doMenu "paste card" set the name of this card to it put it into card field "title" put theType into card field "DataType" end mouseUp<$T9y Typeon mousedown if the optionkey is down then edit script of target exit mousedown end if put the mouseloc into myPlace put item 1 of myPlace - 20 into horiz put item 2 of myPlace - 10 into vert get PopMenu(vert, horiz, "Table;PixelMap;Bitmap;Analog;PICS") if it = 1 then put "Table" into field DataType else if it = 2 then put "PixelMap" into field DataType else if it = 3 then put "Bitmap" into field DataType else if it = 4 then put "Analog" into field DataType else if it = 5 then put "PICS" into field DataType end if end mousedown " }PICSdGWI Type 2 File Histogram Table MacPaint File PICS Pict2 File Scattergram Table Tape Log Tiff File J&   The Data Dictionary provides definitions of the different data structures supported by the Laboratory Toolbox. The Currently supported types are Table, Bitmap, Pixelmap PICS and Analog. To create a new data type, select a type with the type button and hit create object to define a new entry.DataDictionaryon openCard sort field "DataTypes" if line 1 of field "DataTypes" is empty then delete line 1 of field "DataTypes" end if if the last character of field "DataTypes" is not return then put return after field "DataTypes" end if end openCard BMAP(4 @ MQt?3ac0 "" '9s'W#P$22H A B@""A ?ɰ`CARD$ +3#Y &  TitleXj}@ firston mouseUp go to card "DataDictionary" end mouseUp"2 X @X PrintDefon mouseUp put the name of this card & return into the field "PrintBuffer" put the card field "DataType" & return after field "PrintBuffer" put the card field "Definition" & return after field "PrintBuffer" print field "PrintBuffer" put empty into field "PrintBuffer" end mouseUp*%zDataTypeData DefinitionDataDefinition`BMAP+  3K-I@ⷅ/##f`b0 `@Ox2121@3H12S@Np$1B.@!3 / f6&0&0&0&x00r 02 2 00\Ȍsq13 2G#@2#!{x CARDx3#Y &  TitleXj}@ firston mouseUp go to card "DataDictionary" end mouseUp"3z @+ PrintDefon mouseUp put the name of this card & return into the field "PrintBuffer" put the card field "DataType" & return after field "PrintBuffer" put the card field "Definition" & return after field "PrintBuffer" print field "PrintBuffer" put empty into field "PrintBuffer" end mouseUp*%zDataTypePICS PixelMap File Type: 'PICS' A PICS animation is composed of many PICT resources, starting at id 128 Numbering is contiguous (128, 129, 130, ) Number of frames is equal to Count1Resources('PICT') PICT resource 128 describes the complete first animation frame. The picFrame field of the PICT describes the complete screen size of the whole animation (all subsequent frames will be drawn within this rect). The following PICT resources (129, 130, ) can be either: complete frames with the same picFrame as PICT 128 an update to the previous frame of a smaller area a null picFrame (no change in the animation) 'INFO' resource (optional), id 128, consiting of: BWColor (integer): 0 if black & white PICTS, 1 if color PICTS Depth (integer): 1,2,4,8,16 preferred color depth Speed (integer): 1 to 200 preferred speed in frames/sec. A negative value means, show the frame for abs(value) seconds. Version (integer): version number (currently zero) Creator (longint): signature of creator application Largest (longint): size of the largest frame in bytes PICS`BMAP  3K-I@ⷅ/##f`b0 `@Ox2121@3H12S@Np$1B.@!3 / f6&0&0&0&x00r 02 2 00\Ȍsq13 2G#@2#!{xCARD>?3#Y \&  TitleXj}@ firston mouseUp go to card "DataDictionary" end mouseUp"2 { @X PrintDefon mouseUp put the name of this card & return into the field "PrintBuffer" put the card field "DataType" & return after field "PrintBuffer" put the card field "Definition" & return after field "PrintBuffer" print field "PrintBuffer" put empty into field "PrintBuffer" end mouseUp*%zDataType Tape LogTable?A tape log is an index of clips in a video tape. It is generated by the handler Video Logger. The first record in the log contains (1) the label of the tape, (2) The label of theProject (3) The label of the Experiment and (4) the label of the trial (Tab delimited) The rest of the records of a tape log are also tab delimited and contain in the 5 columns (1) The date at which the video data was acquired (2) The time at which the video data was acquired (3) The label of the video clip (4) The starting frame of the video clip (5) The ending frame of the video clip.Tape Log`BMAP?  3K-I@ⷅ/##f`b0 `@Ox2121@3H12S@Np$1B.@!3 / f6&0&0&0&x00r 02 2 00\Ȍsq13 2G#@2#!{xCARDgehk3#Y &  TitleXj}@ firston mouseUp go to card "DataDictionary" end mouseUp"2 { @X PrintDefon mouseUp put the name of this card & return into the field "PrintBuffer" put the card field "DataType" & return after field "PrintBuffer" put the card field "Definition" & return after field "PrintBuffer" print field "PrintBuffer" put empty into field "PrintBuffer" end mouseUp*%zDataTypeHistogram TableTable_A histogram table is a list of integer or floating point numbers separated by carriage returnsHistogram Table`BMAPhk  3K-I@ⷅ/##f`b0 `@Ox2121@3H12S@Np$1B.@!3 / f6&0&0&0&x00r 02 2 00\Ȍsq13 2G#@2#!{xCARDeKfd3#Y &  TitleXj}@ firston mouseUp go to card "DataDictionary" end mouseUp"2 { @X PrintDefon mouseUp put the name of this card & return into the field "PrintBuffer" put the card field "DataType" & return after field "PrintBuffer" put the card field "Definition" & return after field "PrintBuffer" print field "PrintBuffer" put empty into field "PrintBuffer" end mouseUp*%zDataTypeScattergram TableTabletThis data type is a two column tab delimited table of integer or real values. It can be created and read by Excel.Scattergram Table`BMAPfd  3K-I@ⷅ/##f`b0 `@Ox2121@3H12S@Np$1B.@!3 / f6&0&0&0&x00r 02 2 00\Ȍsq13 2G#@2#!{xCARDVWW3#Y &  TitleXj}@ firston mouseUp go to card "DataDictionary" end mouseUp"2 { @X PrintDefon mouseUp put the name of this card & return into the field "PrintBuffer" put the card field "DataType" & return after field "PrintBuffer" put the card field "Definition" & return after field "PrintBuffer" print field "PrintBuffer" put empty into field "PrintBuffer" end mouseUp*%zDataType Pict2 File PixelMapThis is a standard Apple pixel map file. It is created with the procedure record Picture and can be any pixel depth from 1 to 24Pict2 File`BMAPWW  3K-I@ⷅ/##f`b0 `@Ox2121@3H12S@Np$1B.@!3 / f6&0&0&0&x00r 02 2 00\Ȍsq13 2G#@2#!{xCARDQPR3#Y d&  TitleXj}@ firston mouseUp go to card "DataDictionary" end mouseUp"2 { @X PrintDefon mouseUp put the name of this card & return into the field "PrintBuffer" put the card field "DataType" & return after field "PrintBuffer" put the card field "Definition" & return after field "PrintBuffer" print field "PrintBuffer" put empty into field "PrintBuffer" end mouseUp*%zDataTypeGWI Type 2 FileAnalog?The GWI type two file is a two byte integer array of analog values which is created by the Data Manipulation BSave Routine. The first two bytes are the GWI instruments code (2) and the next four bytes are the number of samples in the file. The remainder of the file consists of the two byte integer format data values.GWI Type 2 File`BMAPR  3K-I@ⷅ/##f`b0 `@Ox2121@3H12S@Np$1B.@!3 / f6&0&0&0&x00r 02 2 00\Ȍsq13 2G#@2#!{xCARDDLE3#Y &  TitleXj}@ firston mouseUp go to card "DataDictionary" end mouseUp"2 { @X PrintDefon mouseUp put the name of this card & return into the field "PrintBuffer" put the card field "DataType" & return after field "PrintBuffer" put the card field "Definition" & return after field "PrintBuffer" print field "PrintBuffer" put empty into field "PrintBuffer" end mouseUp*%zDataTypeMacPaint FileBitmapThis is the standard MacPaint bitmap file. It consists of a 512 byte header (usually empty) followed by the compressed bit map data.MacPaint File`BMAPE  3K-I@ⷅ/##f`b0 `@Ox2121@3H12S@Np$1B.@!3 / f6&0&0&0&x00r 02 2 00\Ȍsq13 2G#@2#!{xCARD@A3#Y "&  TitleXj}@ firston mouseUp go to card "DataDictionary" end mouseUp"2 z @V} PrintDefon mouseUp put the name of this card & return into the field "PrintBuffer" put the card field "DataType" & return after field "PrintBuffer" put the card field "Definition" & return after field "PrintBuffer" print field "PrintBuffer" put empty into field "PrintBuffer" end mouseUp*%zDataType Tiff File PixelMap Tiff File`BMAPA  3K-I@ⷅ/##f`b0 `@Ox2121@3H12S@Np$1B.@!3 / f6&0&0&0&x00r 02 2 00\Ȍsq13 2G#@2#!{x`CARD;@3X*   Documents.   Applications documents applications5# Each line on this card indicates the location of a folder, including the disk name (and folder name, and subfolder names, if appropriate). These locations are called search paths. Each name in a search path is separated by a colon. When you tell HyperCard to open a stack, document, or application, it looks for the file you want by searching through the folders listed on this card. If HyperCard cant find the file, it displays the directory dialog box. Once youve located the file, HyperCard records the files location on this card. The next time you ask for the file, HyperCard will know where to look for it. You can type folder locations on this card to tell HyperCard where to look for your files, for example: my disk:hypercard folder:my stacks: 01Motion:LaboratoryToolbox HD40:LaboratoryToolbox Motion:HyperFolder: Motion:HyperFolder:Cookbook Reference Motion:VidClipStacks :HyperCard Stacks: :HyperCard Help: Motion:Hypercard2.0: HD40:HyperFolder:HD40:MessageBearer: HD40:HyperFolder:Cookbook Reference HD40:OnTrack:%GHyperCard uses the information in the field below to find your stacks.stacks CARD w@3Q%MHyperCard uses the information in the field below to find your applications.56 This field will be a shared field when the time is right. In the meantime, I didn't want to copy the same text into this bkgnd field because I was afraid I might forget to make this a shared field later. See this field on the "stacks" card for the real info. Consider this feature "under construction" 216HD40: HD40:AppleLink: HD40:Graphics: Motion:Graphics:applications CARD@3h%JHyperCard uses the information in the field below to find your documents.53 This field will be a shared field when the time is right. In the meantime, I didn't want to copy the same text into this bkgnd field because I was afraid I might forget to make this a shared field later. See this field on the "stacks" card for the real info. Consider this feature "under construction"11@HD40:NSF Stuff:MotionGrant: HD40:JA's Excel: HD40:AppleLink: documents@CARD !k@3SF h,* 9  Authoring* t9  Scripting@  userlevel 4on mouseUp -- Requires handler: updateDisplay -- last word of btn name is userLevel updateDisplay (last word of short name of me) -- in card script end mouseUps@  UserLevel 5on mouseUp -- Requires handler: updateDisplay -- last word of btn name is userLevel updateDisplay (last word of short name of me) -- in card script end mouseUp* 9  Browsing( 9  Typing* 9  Painting@  userlevel 1on mouseUp -- Requires handler: updateDisplay -- last word of btn name is userLevel updateDisplay (last word of short name of me) -- in card script end mouseUp@  userlevel 2on mouseUp -- Requires handler: updateDisplay -- last word of btn name is userLevel updateDisplay (last word of short name of me) -- in card script end mouseUp@  userlevel 3on mouseUp -- Requires handler: updateDisplay -- last word of btn name is userLevel updateDisplay (last word of short name of me) -- in card script end mouseUp,'= user levelhu Blind Typingon mouseUp set blindTyping to the hilite of me end mouseUp d Power Keyson mouseUp set powerKeys to the hilite of me end mouseUp n Arrow Keys in Texton mouseUp set textArrows to the hilite of me end mouseUp >;kS"@ User Nameon closeField global UserName put me into UserName end closeField on exitField global UserName put me into UserName end exitField?s, mA Arrowon mouseDown -- Requires handler: updateDisplay -- this handler operates the arrow button like a slider control set cursor to arrow put item 1 of the loc of me into slideHorz -- horz remains constant put item 2 of the loc of cd btn id 8 into slideTop -- UserLevel 5 put item 2 of the loc of cd btn id 4 into slideBottom -- UserLevel 1 put top of cd btn id 8 into levelTop -- UserLevel 5 repeat while the mouse is down if the mouseV < slideTop then -- jump to the top set loc of me to (slideHorz & "," & slideTop) else if the mouseV > slideBottom then -- jump to the bottom set loc of me to (slideHorz & "," & slideBottom) else set loc of me to (slideHorz & "," & the mouseV) -- do middle end repeat -- calculate userLevel based on loc of slider put 6 - (((item 2 of loc of me - levelTop) DIV 27) + 1) into curLevel updateDisplay curLevel -- show changes end mouseDown  Preferences5Thunktun Flishnyuser preferences Script of Stack: Home THE MESSAGE HANDLERS IN THIS SCRIPT: openCard,updateDisplay on openCard -- Requires handler: updateDisplay if the userLevel card field "User Level" -- hidden on this card then updateDisplay the userLevel -- set display to match userLevel pass openCard -- so others can use the message end openCard on updateDisplay whatLevel -- Requires handlers: disallowInterruption,allowInterruption global UserName lock screen set cursor to watch disallowInterruption set the userLevel to whatLevel if UserName is not empty then put UserName into cd field "User Name" put whatLevel into cd field "User Level" -- hidden on this card set top of cd btn "Arrow" to top of cd btn ("UserLevel" && whatLevel) repeat with count = 1 to 5 put "UserLevel" && count into btnName set hilite of cd btn btnName to not (count > whatLevel) end repeat set visible of card btn id 1 to whatLevel 5 -- Blind Typing set hilite of card btn id 1 to the blindTyping set visible of card btn id 3 to whatLevel 3 -- Power Keys set hilite of card btn id 3 to the powerKeys set visible of card btn id 2 to whatLevel 2 -- Arrow keys in text set hilite of card btn id 2 to the textArrows unlock screen allowInterruption end updateDisplay `BMAP!k @r!,xC3%C8 3 `@C`CpCp%ppC80@C  %C%p%C0 @Cp%p%,STBL      DStylePlaFTBLxChicagoPalatinohGenevaMonacoTimesHelvetica\}\ cS|@4b[[JsBXFCN}\r.[@PRNT .@ hV _  NHmHmHn?<NACp? QBN")_` n,HNjN (_N^.NuBKGDNVH8B.B-?B/Nz+_>g`6p-@/NHnHz/NR/.NBg/N>_HnNjOdLN^ _PONNVH&nB.JVJgXVgNrmǤWJftmǤW‚g4r2-2PRST HH(Fg(HH(d' @f me is empty then delet TAILNu r det slut