:: Style
:: Version 5.9.6 (c596.zip) has been uploadedSeptember 16, 2005 
Version 5.9.6 (c596.zip) has been uploaded. It contains the following changes:

  • Added support for the PCI-DIO24 data acquisition board.
  • Added several new functions for use in timing files: getCndsFilename, getItemsFilename, getTimingFilename, getExternsFilename. As their names suggest, these functions can be used to obtain the current filenames for the conditions file, items file, timing file, and external variables file. Refer to the online Function Reference Manual for more information.
  • Added #define K_SPACEBAR, FILE, and NULL to css_inc.h.
  • Added some new simple demo files to show the following techniques: file i/o, playing movies, printing the keyboard scancode.
  • Changed the DXRecv initialization so that it could support more than 200 modes.
  • Added the "getTimeDateString()" user function. This function puts the current date/time into a string and returns it to the user in the timing file. Note: The user must allocate space for the string in the timing file.
  • Added a new function called send_termination_signal(). This function sets up a flag and the other parameters, that tell Cortex to send a string out of the given serial port when the trials are over. If this flag is set, the port will be opened with Serial_Open(), the string will be written, one byte at a time, with Serial_Write(), and then the port will be closed with Serial_Close(). If the flag has not been set, the internal Cortex logic will just proceed as it has in previous versions, i.e., without a termination signal.
  • Enabled INIT/NO_INIT option for the PCI-DAS1602/12. The user can now change the I/O configuration for Ports A and B, but not Port C. Port C is still needed to provide lines for the reward, bar input, etc.
  • Fixed a bug in the random() user function. If the parameters supplied for min and max are both zero, then Cortex would crash. Changed the code so that if min=max=0, then zero will be returned.
  • Added the ability for the user to choose whether or not Cortex should send out the reset latch pulse for the PCI-DAS1602/12 only. This would free up another output line that users could access. (IMPORTANT NOTE: This option should only be used by users who are not using Cortex to collect spikes! For example, this would include those who are using a third party spike collection system, or who are not collecting spikes at all.) To specify this option, the user must put the word "NO_LATCH" on the DEVICE line in cortex.cfg. If this parameter is omitted, the reset latch pulse will be sent by default.
  • Added the ability to have 16 testscreens, instead of just 10.
  • Added code to allow the user to call the internal Cortex function "MouseInit()" in a timing file. Most users will never have the need to call this function, since Cortex takes care of mouse input if the mouse driver has been loaded. This function was requested by users of a non-Microtouch touchscreen, which needed to be re-initialized each trial.
  • Made changes to the calculation of rIndex, gIndex, and bIndex for randCLT function. Also, added the new functions called CLTrandomAndFixed(),CLTrandomLMS(), CLTrandomLMS_OneIndex(), CLTbinaryLMS, CLTbinaryLMS_OneIndex, CLTtrinaryLMS, and CLTtrinaryLMS_OneIndex for this experiment. These functions are only available in the 32-bit versions of Cortex using the DirectX receive program. They were not added to the online function reference manual since they were added for a user with a very particular paradigm. I can't imagine anyone else needing these functions, but I added them to the release so that I wouldn't have to make a custom build.
  • Fixed a bug where the subtraction was in the wrong order in the closing of the device (i.e., the Dpost() function), so the while loop was never executed. This code was intended to allow the reward pulse to finish, even if the end of the timing file was reached before the reward time expired. A Cortex user found the error since he was trying to give a long reward, and he noticed it was getting truncated.
  • Added code to automatically load the external variables using the Disk->Get menu option, if an external variables filename was saved using Disk->Save. This code was contributed by Matt Smith and Ryan Kelly at CMU.

:: VCortex 2.2 has been uploadedAugust 03, 2005 
The VCortex 2.2 release of the Windows 2000/XP version of Cortex has been uploaded to the Cortex web site (www.cortex.salk.edu).

Fixed some bugs that were found in the VCortex 2.1 code:
  • The blocking parameters were not reset after a trial was stopped early. If the user then chose Run->Start it would cause the trial to resume from where it was stopped rather than at the beginning of the block.
  • BLOCKset_next() was causing an occasional crash.
  • The Tab order was incorrect in the Edit->Conditions dialog box
  • Changed the Save->Block confirmation dialog box to be a message in the Status Bar.

:: Frequently Asked QuestionsJuly 18, 2005 
The Frequently Asked Questions page of the CORTEX website is now complete. Use the FAQ link on the left menu to view the topics.

:: VCortex 2.1 has been uploadedApril 08, 2005 
The VCortex 2.1 release of the Windows 2000/XP version of Cortex has been uploaded to the Cortex web site (www.cortex.salk.edu).

New features:
  • Added more data acquisition options. VCortex 2.1 now supports the use of the PCI-DAS1602/12 and/or the PCI-DIO24 data acquisition board. Additionally, VCortex 2.1 can run without any data acquisition board installed.
  • Added messages to the status bar of the VCortex application window, so that unnecessary confirmation message boxes could be removed.
  • The Run->Stop menu option now works during a trial, enabling you to end a trial at any time.
  • Developed error checking for all blocking variables.
  • Enabled the use of the inp() and outp() functions within timing files. Note: These functions require the use of an additional software library. Refer to Appendix B, item #10, in the VCortex User

:: Cortex web site now supports Mozilla-based browsers, too!July 15, 2004 
The Cortex web site has been modified to be compatible with Mozilla-based browsers (Netscape, Mozilla, Firefox), in addition to Microsoft's Internet Explorer.

:: VCortex 2.0 has been uploadedJuly 14, 2004 
The VCortex 2.0 release supports Win2000 and WinXP, and requires the PCI-DAS1602/12 data acquisition board

A new device driver, cdas16.sys, was written to control the timing and to collect data. Please refer to the VCortex User's Manual for installation instructions and more information.

The VCortex 2.0 code is based on VCortex 1.1. Note, however, that Win95/98 and the ISA-based boards are not supported by this release, so please use VCortex1.1 if you have these boards or operating systems.

Fixed some bugs that were found in the base 1.1 code:
  • After a certain number of trials were run, the VCortex status windows would no longer be updated. Fixed this bug by releasing the device context handle after it was no longer needed.
  • Fixed the crash that occurred when Edit:Individual_Condition was chosen from the menu.
Added one new feature:
  • Added support for 16 test screens per condition. Refer to the demo files \demos\newdemos\tsmax.* for an example of how to use 16 test screens.


:: VCortex Version 1.1 has been uploadedDecember 30, 2003 
Added Play mode (Play Alone and Play With Conditions). Play mode can be found under the Tools menu. More information about Play mode can be found in sections 5.5.3 and 5.5.4 of the VCortex User's Manual.

Added touchscreen support. Like the DOS version of Cortex, the code was written for and tested on a Microtouch touchscreen. Refer to the VCortex User's Manual for more details.

Added installation of the VCortex programs via InstallShield. There is a separate Installation package for the send programs and the receive program. Refer to section 3.6 of the VCortex User's Manual for more information.

Fixed some bugs that were found in VCortex 1.0.
  • Direct I/O access to hardware with the inp(), inpw(), outp(), and outpw() commands was not supported in VCortex 1.0. In VCortex 1.1, these functions are supported.
  • When Run/Start is chosen from the menu, VCortex will prompt for the ouput data file name. If you click on the "No" button when it asks if you want to append to the current file, the directory changed to the "My Documents" directory, rather than the current data file directory. The code has been modified so that the directory is now the one from which you are running the VCortex executable.
  • If you chose Edit:Add_an_item, and then Cancel, it would add the item to the list anyway.
  • Fixed two problems with the View->Results of Most Recent Trial menu option. The first problem was that once the results windows were closed, VCortex would crash if the user tried to open the windows again with the View->Results menu option. The second problem was that if the results windows remained open, and you ran some more trials, the text inside the results windows would not be updated unless the windows were resized. In VCortex1.1, these windows cannot be closed, only minimized, so they will not crash if the user attempts to reopen them. Also, these windows are automatically updated without having to resize. Additionally, the code necessary to view the touchscreen values and EPP values was added to the View->Results of Most Recent Trial menu option.
  • Fixed a bug whereby the output error file, VCortex.err, was not always written to the same directory. For example, if a timing file was loaded from a directory other than the \vcwin32 directory, a new copy of the VCortex.err file was opened in that new directory. This results in some of the output messages being written in \vcwin32\vcortex.err file, and some being written in another directory. Modified the code so that the VCortex.err file will always be written in the directory from which the VCortex executable file is run. The path to this directory is obtained from the CORTDIR environment variable. This variable is placed into the autoexec.bat file automatically during the VCortex installation process.
Added some other new features:
  • The File->Load and File->Save dialog boxes will remember the file extensions that the user has chosen for the particular type of file. Previously, the dialog boxes were hardcoded to "*.tim" for timing files, "*.itm" for items files, etc.
  • Changed the ordering of the options under the Run menu. Since "Stop" actually causes the program to exit, rather than just stop temporarily, it would cause a problem if the user would press it accidentally. It has therefore been moved to the bottom of the Run menu. A confirmation message box has also been added, so that the user can cancel out of the Stop if it was selected by accident.
  • Added the "getTimeDateString()" user function. This function puts the current date/time into a string and returns it to the user in the timing file. Note: The user must allocate space for the string in the timing file.
  • Added #define statements for the FILE and NULL variables into the css_inc.h file.
  • Added the ability to check what items, conditions, and timing file(s) are currently loaded. After a file is loaded via the File->Load menu option, any subsequent loading of that particular file type will display the current file name in the "File name" entry field of the dialog box.
  • Added several new functions for use in timing files: getCndsFilename, getItemsFilename, getTimingFilename, getExternsFilename. As their names suggest, these functions can be used to obtain the current filenames for the conditions file, items file, timing file, and external variables file. Refer to the online Function Reference Manual for more information.
  • Changed the DXRecv initialization so that it could support more than 200 modes.
  • Added some new simple demo files to show the following techniques: file i/o, playing movies, printing the keyboard scancode.


:: New Cortex web site goes onlineOctober 10, 2003 
The new, improved Cortex web site goes online!! This fantastic web site was implemented by Eric Boulden, who joined the Cortex Team a few months ago. In addition to the usual Documentation and Download pages, there are now working pages for the submission of Bugs and Suggestions. The Search page allows you to search the Cortex web site. The Discussion board allows you to post and reply to questions about Cortex.

Note: The userid/password list from the previous

:: A beta version of the Windows version of Cortex, VCortexAugust 05, 2002 
A beta version of the Windows version of Cortex, VCortex, has been uploaded. It runs on Windows 95 and 98, using the ISA-based data acquisition cards. Download the program files (vcortex.zip) from the "Downloads" page of the Cortex web site. Download the VCortex User's Manual from the "Documentation" page.

:: Version 5.9.5 (c595.zip) has been uploadedAugust 23, 2001 
Version 5.9.5 (c595.zip) has been uploaded. It contains the following changes:

Fixed a bug in the analog (EOG and EPP) data collection of the CIO-DAS1602/12 board. Unlike the old Compuboards, this board has an onboard buffer that stores the analog data. Since the old boards did not have this capability, there was not code to clear this buffer at the beginning of each trial. Therefore, it was noticed that this board had a leftover data point at the end of each trial. Changed the code so that this buffer is cleared before each trial begins.

Fixed a bug in the analog (EOG and EPP) data collection of the PCI-DAS1602/12 board. By default, the board is set to 8 differential analog channels. Cortex expects the analog data to be set up as 16 single-ended channels. Since the PCI board does not have any jumpers, this needed to be set through software. By default, the board is shipped set at bipolar and 8 differential channels. Even though Cortex expects the analog data to be "bipolar and 16 single-ended channels", created optional parameters for the DEVICE line of the Cortex.cfg file to set them. Now the user can configure the PCI-DAS1602/12 board, so that it is bipolar vs. unipolar, and single-ended vs. differential. If these optional parameters are omitted, the board will be initialized to bipor and single-ended.

Fixed a bug in the DEVxxx() series of functions, which was introduced in version 5.9.4. The problem would occur if the user had set the DEVICE line to COMPUBOARD in the Cortex.cfg file. If COMPUBOARD was instead split out into two DEVICE lines as DASH16 and PIO24, then the DEVxxx() functions would work. The bug was quite noticeable since the DEVoutp() , DEVinp(), DEVoutpw(), and DEVinpw() functions would not read or write digital I/O with the DEVxxx() functions. This has been fixed, so now COMPUBOARD will work as a DEVICE line.

Fixed bug in the DirectX receive program (DXrecv.exe). If two items are defined as the same color in the items file, and appear in the same condition, only one lut index was being used for both items. What should happen is that each item is assigned a unique index into the lut, so that its color can be changed with GcolorABS(ITEM_POSlut_index(), r,g,b). This problem was occurring since Microsoft DirectX only uses one entry in the LUT if the same color is being used more than once. In a related issue, if the same item was used in multiple testscreens, GcolorABS(ITEM_POSlut_index(), r,g,b) would only change the color if the first occurrence (testscreen) was given as the parameter to ITEM_POSlut_index(). Changed the code so that this will not be the behavior of Microsoft DirectX in Cortex.

In version 5.9.4, a change was made so that the background will remain constant between trials if the user configures this feature in the GRAPHICS_SPECS line of Cortex.cfg. Extended this feature so this Cortex.cfg setting will also cause the background to remain constant when Play is exited as well.

Added a new serial function, Serial_SetPortHardware(), to the 32-bit versions of Cortex. This function allows the user to change the COM ports address to a non-standard IRQ and/or address. Please refer to the online Cortex Function Reference for more information about the function.

Added a new function, getDataFileName(), which allows the user to obtain the name of the output Cortex data file from inside the timing file. Please refer to the online Cortex Function Reference for more information about the function.

Added a set of new functions to return various items from the header of the Cortex output data file. Also, added some functions to set the response codes inside Cortex. The new functions added were: set_response(), set_expected_response(), set_response_error(), set_trial_type(), get_repeat_num(), get_trial_type(), get_eye_storage_rate(), and get_kHz_resolution(). Please refer to the online Cortex Function Reference for more information about the functions.

Created a 32-bit single-computer DOS version of Cortex, which does not display graphics. The serial communications functions and analog/digital data capabilities still work, so this version can be used when graphics are not necessary, or when the graphics are displayed by some other means. The new program is called "sgl32.exe", and can be found in the \remote32 directory of the Cortex release.

Added new functions to randomly change the LUT entries, based on a gamma table of values. The new functions are called: CTLrandom(), SetGammaRedValue(), SetGammaGreenValue(), and SetGammaBlueValue(). These functions are only available in the 32-bit versions of Cortex using the DirectX receive program. They were not added to the online function reference manual since they were added for a user with a very particular paradigm. I can't imagine anyone else needing these functions, but I added them to the release so that I wouldn't have to make a custom build.

Updated the Cortex User's Manual to include the two-computer version of Cortex, current hardware/software requirements, installation instructions, compilation instructions, and a troubleshooting section containing answers to the most frequently asked questions. A copy of this new document can be found in the \docs directory of the release, and on the Cortex web site.

:: Version 5.9.4 (c594.zip) has been uploadedNovember 30, 2000 
Version 5.9.4 (c594.zip) has been uploaded. It contains the following changes:

Added support for the PCI-DAS1602/12 board. Refer to the document entitled "Using the PCI-DAS1602/12 board with Cortex" on the Cortex web page for details on how to use the board.

Added an optional parameter to the TOUCH_SCREEN line in cortex.cfg to allow the user to specify whether or not the Y value from the touchscreen should be inverted. If the user does not specify this parameter, the default behavior is to *not* invert the y. Note: This change has only been implemented for the two-computer version of Cortex. For the other versions, this parameter is not used. If the invert_y parameter is specified in the cortex.cfg file, then the store_touch_data parameter should be specified as well.

Added an optional parameter to the DEVICE line of cortex.cfg, so that the user can specify whether or not the PIO24, PIO96, and the PIO24 portion of the Compuboard, will be initialized by Cortex to Port A in, Port B out, and Port C split. If the user specifies NO_INIT for the parameter, then the user will be able to issue timing file commands that initialize the board. Refer to the document (written by Andy Mitz) on the Cortex web site entitled "Setting up Cortex for Recording Many Spike Channels".

Added a new movie function, for use in timing files, called "Gmovie_one_time()". This function will play the movie one time through, rather than according to the timer.

Added an optional parameter to the GRAPHICS_SPECS line in cortex.cfg, to allow the user to specify whether or not the background color stays on the screen even after the set of trials has ended. In prior versions of Cortex, the screen remains the background color between trials, but once the trials are over, it goes to black.

Since the 1's complement operator (~ tilde) did not compile in the CSS, even though it is listed in the math functions, Andy Mitz suggested adding the following macro INV(x) to the css_inc.h file. Then, in timing files, the user can write: b = INV(a); to take the 1's complement of the variable "a", for example.

The DirectX receive program (DXRecv.exe) was not written to accept the command line options to change comport and baud rate like the programs rvesactx.exe and wcsend.exe. Added that functionality into DXrecv.exe. In order to use the command line arguments, the user must change them in the Properties page of the Dxrecv.exe shortcut on the desktop. The parameters should be added onto the "Target:" line. For example, the "Target:" line would read:

c:\c594\wcortex\dxrecv.exe COM2 @115200

Note that there are no spaces between the COM and the 2, and no spaces between the @ and the baudrate. If these command line arguments are omitted, the default values are a comport setting of COM1 and a baudrate of 115200. Note: For Win2000 users, the shortcut must be created from the directory \dxsource\dxrecv\release\dxrecv.exe for the command line arguments to work properly. If this is done, then the working directory of the dxrecv.exe program will be \dxsource\dxrecv\release, not \wcortex.

Fixed a bug in the Cortview.exe utility. Now, when the user chooses to show the codes only, it does not display their meanings, too.

Added the C time() and clock() functions for use in timing files. The time() standard C function will allow the user to get the number of seconds since Jan 1, 1970. This value can be used to seed the random number generator, for instance. The C function clock() returns the number of clock ticks of elapsed processor time. The returned value is the product of the amount of time that has elapsed since the start of a process and the value of the CLOCKS_PER_SEC constant. The time in seconds is approximated by dividing the clock return value by the value of the CLOCKS_PER_SEC constant. Added the CLOCKS_PER_SEC value in css_inc.h. For the Watcom and Microsoft C compilers, the value of CLOCK_PER_SEC is 1000. Note: In MS-DOS, clock returns the time elapsed since the process started. This may not be equal to the actual processor time used by the process.

Initialized CODEbuf[], ISIbuf[], EOGbuf[], and EPPbuf[] to zero for each trial. Previously, the CODE_ISIsize, EOGsize, and EPPsize were just set to zero, and the arrays were not reinitialized.

:: Version 5.9.3 (c593.zip) has been uploadedFebruary 18, 2000 
Version 5.9.3 (c593.zip) has been uploaded. It contains the following changes:

For the DirectX version of the "receive" program (in two computer Cortex), added the ability to play AVI, MPEG, and QuickTime movies, in addition to the standard Cortex (CTX) image file format based movies. The type of movie file is determined by the file extension. That is, to be processed correctly: AVI files must have the extension .AVI; MPEG files must have the extension .MPG; and QuickTime files must have the extension .QT or .MOV. All other movie file extensions are assumed to be the standard Cortex (CTX) bitmap type. Therefore, this code change should be transparent if you continue to just use CTX type movies. Other details:
  • Colors for the movies look best when you are running at 32 bpp. For 8 bpp, you will need to generate a LUT that will look good with the movie.
  • The movies are very slow to load, so you might want to use the "dont_unload_conds()" function in your timing file, if the movie is to be used repeatedly.
  • Since it uses the DirectShow component of DirectX to display the movies, Microsoft Internet Explorer version 4.0 or higher must be installed on the receive computer.
  • Only the video track of the movie file will be played by Cortex. The audio track will be ignored.
  • Not all video codecs are supported by DirectShow.
Fixed several other bugs in the DirectX receive program:
  1. No longer generates a grey screen upon termination of the DirectX receive program.
  2. Fixed bug where Item:Display of a movie file would cause DirectX receive to crash.
  3. Fixed a bug where DirectX receive was running out of "brush" handles, which is the structure used to fill in solid color objects. When the handles ran out, the items would just be filled in with white. The fix recycles the handles, so they should never run out.
  4. Fixed a bug where the fixspot would not appear on the first trial, if the fixspot was black.
  5. Changed DirectX receive program so that the "realtime"priority is only activated during a trial. Between trials the priority is changed back to "normal" priority. (Previously, the program was realtime when the program started, and was not released to normal priority until the program terminated.) This will allow Windows to do any background processing it needs to do in the non-critical time between trials.
  6. Created a custom icon for the DirectX receive program.
  7. Fixed a bug in the DirectX receive program where black rectangular extents were appearing around primitive circular items, when using a color depth greater than 8 bits per pixel.
  8. Fixed a bug in the DirectX receive program where the background color was not appearing correctly when the color depth was greater than 8 bits per pixel. Now it appears correctly for 32 bits per pixel.
Fixed bug in Cortview.exe such that when response_error equals NO_ERROR, Cortview reported it as "Unknown response_err").

Added a parameter to the TOUCHSCREEN line of cortex.cfg so that the EPPbuf and CODE/ISIbuf buffers are not filled in with touchscreen data unless the user wants that to be. Now, the data can be stored selectively into the EPPbuf, CODE/ISIbuf, both buffers, or neither buffer. See the comments in the Cortex.cfg file for details about the TOUCHSCREEN parameter. Please note that the default case is to store the data in both places, so current users do not have to alter their cortex.cfg file if they want the default behavior.

Changed so that LUT:View/Change pop-up menu will display the LUT entries as indexed from 0 through 255, instead of from 1 through 256.

Changed so that a larger stack size is available to the Cortex compiler (CSS) for the 32-bit version of Cortex (REMOTE32). This will allow larger array sizes to be used in timing files.

Web page news: The Cortex discussion group is back online! A new server computer is being used for the discussion group. In the process of setting up the group on the new server, some users and messages may have been lost. Please feel free to join the group and post your questions.

:: Version 5.9.2 (c592.zip) has been uploadedSeptember 15, 1999 
Version 5.9.2 (c592.zip) has been uploaded. It contains the following changes:

For the DirectX version of the "receive" program (in two computer Cortex), added the capability to play sound. The sound component of the DirectX receive program has more functionality than the DOS version of the sound code. For example, DirectX supports the overlaying of multiple sounds, the ability to continually loop a sound, the individual control of the volume of each sound, and the ability to stop each sound one at a time. DirectX also allows the user to specify what kind of speakers are being used, and also the orientation of the stereo speakers, in order to optimize the sound produced. A new SOUND parameter in the CORTEX.CFG file can be used to customize these features. For complete details regarding installation, interface, and features of the sound code with the DXRECV.EXE program, please read the document "Using Sound with Dual Computer Cortex" in the \DOCS\ directory of the Cortex distribution or in the Documentation section of the Cortex web page.

Fixed a bug in Cortex where the data file was not being closed properly, resulting in the error "no more file handles".

Created an environment variable (CORTEX_ESC_OPT) to be used to specify whether to use an alternate keyboard escape sequence to terminate two computer cortex. If the environment variable is not set or is set to 0, then the default SHIFT+ALT+CTRL will be used. If the environment variable is set to 1, then SHIFT+ALT+CAPSLOCK will be used. Since CAPSLOCK toggles between ON and OFF, it may be necessary to hit the escape sequence twice to actually terminate the programs. The environment variable must be set, using "SET CORTEX_ESC_OPT=0" (or =1) from the DOS prompt or in AUTOEXEC.BAT prior to running RVESACTX.EXE and WCSEND.EXE. Note that keyboard escape sequences can not be used to terminate the DirectX receive program.

Fixed a bug in DXrecv.exe whereby the color was not being set properly in GcolorABS().

Added command line parameter to determine the behavior of setting and realizing the color palette in the Scitech MGL version of the receive program (RVESACTX.EXE). When a color palette change is made in a timing file using the GcolorABS() function, it needs to be followed by a call to the Gflush() function to actually appear. If Gflush(1) is called, the color palette change occurs during the next vertical refresh of the display. If Gflush(0) is called, the color change occurs immediately, perhaps causing tearing of the display. Since tearing appears as a distracting and variable artifact on the screen, the user is forced to use Gflush(1). When changing only one color, this is fine. However, if multiple color palette changes are desired during a single vertical refresh, it was not possible. Therefore, the code was changed so that if multiple GcolorABS() or GcolorREL() calls were made in a timing file, the color changes will be accumulated. When a Gflush(1) was finally called, all the color changes will be realized. To run the RVESACTX.EXE program with this new behavior, you must supply a new command line argument (%1) when you start RVESACTX.EXE. That is, type "RVESACTX %1".

Fixed a bug in DXrecv.exe whereby the default item #1 would appear as an unfilled square the first time it was displayed using the Item:Display menu.

Added a new demo to demonstrate the capabilities of the DirectX sound code.

Added the document "Using a CIO-DAS16xx board with a 'Passive' button box" to the Documentation page of the Cortex web pages.

:: Version 5.9.1 (c591.zip) has been uploadedMay 30, 1999 
Version 5.9.1 (c591.zip) has been uploaded. It contains the following changes:

For the two computer version of Cortex, added a new "receive" program written using Microsoft DirectX 6.0 SDK as the graphics library. In previous versions of Cortex, the receive program (RVESACTX.EXE) utilized the Scitech MGL graphics library, and therefore required the installation of Scitech Display Doctor software. The DirectX receive program (DXRECV.EXE) only requires the installation of the DirectX 6.x driver, which is freely available at the Microsoft web site. More information can be found in the document "dxrecv.doc" in the \DOCS directory of the Cortex distribution or in the Documentation section of the Cortex web page.

Added srand2() and rand2() as CSS functions, which can now be used in a timing file.

Added "ms_reward_duration" to the list of external variables that can be accessed via the timing file. Previously, this value could only be set through the Run:Parameters:General menu in Cortex.

Fixed a problem in the Play mode of Cortex, whereby if the fixspot, rfield, etc. item was modified using the Item:View/Modify menu, then the next time Play was chosen, the entire subject's screen was the color of the modified item. With this fix, there will only be one space in the LUT reserved for the special items FIXSPOT, RFIELD, RPOINT, PLAY_ITEM, FIRST_ITEM. It is assumed that one of these special items would be the fixpoint and only one would be displayed at a time, so only one LUT entry is reserved.

Added code in an attempt to fix a reported intermittent problem where the RVESACTX.EXE (receive program) sometimes crashes on shutdown. Added more checks on shutdown to make sure that the COM port is not being referenced after it has been released.

Changed the code for the drawing of the circular and elliptical annulus, so a pattern does not fill in the center. In the previous code, the pattern file was being passed in to draw the inner and outer circles, even though it is only necessary for the outer circle.

Added a new conference to the Cortex discussion groups to handle questions about the DirectX receive program.

:: CORTEX discussion group addedApril 19, 1999 
CORTEX discussion group capability has been added to the Discussion page of the CORTEX web site.

:: Version 5.8.1 has been uploadedFebruary 12, 1999 
Version 5.8.1 (c581.zip) has been uploaded. It contains the following changes:

The ability to play sounds in Cortex via a SoundBlaster card has been added to the dual computer Cortex program. With this code, up to 256 different sound (.wav) files can be played during an experiment.

:: Version 5.7release10 (c57r10) has been uploadedSeptember 10, 1998 
Version 5.7release10 (c57r10) has been uploaded. It contains the following changes:

Changed the code so that a touchscreen could be used with the two computer version of Cortex. The interrupt driven _touch.c code was designed to be run on a single computer. The new code uses the mouse emulation capability of the touchscreen driver to generate the touch locations.

Added a new document entitled "Using a Touchscreen with Dual Computer Cortex" to the Documentation web page.

Added another touchscreen related demo in the directory \DEMOS\TOUCH3.

Fixed a bug in the CORTEX 5.7b9 code where the memory was not being freed after the display of JPEG, BMP, or PCX bitmaps. (Only applies to the remote version of Cortex.)

:: Modifications to the Cortex web page onlyAugust 24, 1998 
Modifications to the Cortex web page only. Added links to the Matlab routines that are being used for analyzing Cortex data files. The Matlab links can be reached from the Download page, the Documentation page, and from the higher level http://cog.nimh.nih.gov/ page. Also, added "Spike Flip-Flop Circuitry" diagrams and "Thalamus" documentation to the Documentation page.

:: Version 5.7beta9 has been uploadedJuly 08, 1998 
Version 5.7beta9 has been uploaded. It contains the following changes which apply ONLY to the two computer version of Cortex (REMOTE32 and REMCORT):

Added the ability to display JPEG, BMP, and PCX bitmaps, in addition to the standard Cortex (CTX) image files. The type of bitmap file is determined by the file extension. That is, to be processed correctly: JPEG files must have the extension .JPG; BMP files must have the extension .BMP; and PCX files must have the extension .PCX. All other bitmap file extensions are assumed to be the standard Cortex (CTX) bitmap type. Therefore, this code change should be transparent if you continue to just use CTX type bitmaps. It is assumed that the CTX files follow the documented format, or were generated with the TARGCORT.EXE utility. Please note that only the remote version of Cortex is able to support these other bitmap formats. This is because the MGL graphics library, which is used in the remote version of Cortex, natively supports the display of these file formats.

Fixed a bug which prevented items from being displayed in 32 bit per pixel mode.

Added the ability to set the GRAPHICS_SPECS "bits_per_pixel" parameter in CORTEX.CFG to be 16 or 24, in addition to 1, 2, 4, 8, 32. However, it is the responsibility of the Cortex user to make sure that the bitmap files are stored in the proper bit depth. (For example, an 8 bpp CTX bitmap will not be displayed properly when the GRAPHICS_SPECS parameter is set to 32 bits per pixel.)

:: Version 5.7beta8 has been uploadedApril 28, 1998 
Version 5.7beta8 has been uploaded. It contains the following changes:

Changed the code so that if the graphics card can not be initialized for the remote version of Cortex, the user screen will display an error message and then Cortex will exit. In previous versions of Cortex, this was not an immediate fatal error. Therefore, Cortex would try to continue and perhaps crash later. Please note that some additional information about initialization errors may be written to the executable directory on the receive computer in the file RVESACTX.ERR.

This change was prompted by a reported bug in remote Cortex, where the receive computer would crash when an item was displayed. The problem was traced to an incompatibility between SciTech Display Doctor 6.0a and ATI graphics cards. The SciTech/ATI problem seems to exist in any version of SciTech Display Doctor after version 5.3a. SciTech is aware of the problem. "Possible" work-arounds until a new SciTech Display Doctor is released: 1) install SciTech Display Doctor 5.3a; 2) uninstall SciTech Display Doctor completely if the graphics card driver is VBE 2.0 or higher, or VBE/AF 1.0 or higher compliant; 3) install a different model graphics card in the receive computer. (Note: This type of problem may also exist with graphics cards other than ATI cards, but we have not received any other reports.)

:: The Cortex Windows Workbench Suite of programs has been addedMarch 17, 1998 
  1. The Cortex Windows Workbench Suite of programs has been added to the list of programs that can be downloaded from this web site. The Cortex Windows Suite is a collection of Windows-based programs which allow the researcher to process data files produced by CORTEX. The Cortex Windows Suite code and documentation was written by Robert Baumann for the Laboratory of Neuropsychology, National Institutes of Mental Health, National Institutes of Health (Aug 1996). The program is provided "as is".
  2. The Cortex Windows Workbench Suite documentation has been added to the Cortex Documentation page of this web site.
  3. The "Dual Computer Cortex Installation Instructions" document has been added to the Cortex Documentation page of this web site.

:: Version 5.7beta7 has been uploadedFebruary 04, 1998 
Version 5.7beta7 has been uploaded. It contains the following changes:
  1. Changed the "ints" to "shorts" so that the data files generated with the 32-bit version of remote CORTEX will be compatible with the 16-bit version files.
  2. Fixed a bug in 32-bit CORTVIEW.EXE that caused the program to terminate immediately if any of the buffers (EOG, EPP, etc.) were of size zero.
  3. Compiled 32-bit version of CORTEX with Watcom C/C++ version 11.0 instead of 10.6. Also, compiled with the latest Greenleaf CommLib libraries for Watcom 11.0.

:: Version 5.7beta4 has been uploadedSeptember 13, 1997 
Version 5.7beta4 has been uploaded. It contains the following enhancements:
  1. CROSS item added as object type # 14
  2. remote32\csend32.exe, the DOS32 send-side of remote-CORTEX no longer requires preppy.exe or cortexcc.exe: they are incorporated directly into the executable.
  3. remote32\cview32.exe is the new name for the DOS32 bit equivalent of cortview.exe
  4. demos directory in the throes of being restructured

:: Version 5.7 labelled as beta1September 02, 1997 
Version 5.7 labelled as beta1 until the newly formatted distribution has been tested successfully on machines at several sites.

:: CORTEX Web page construction beginsAugust 30, 1997 
CORTEX Web page construction begins. The goals are to make it easier for users and programmers to get access to the CORTEX code and documentation, and to centralize the reporting of bugs, and enhancement and help requests.



NIMH CORTEX was written by a team of dedicated researchers for the NIMH Laboratory of Neuropsychology.
Questions or problems regarding this web site should be directed to CortexSite@salk.edu.