What does WinRom DO?

Why is it here?

WinRom was written by Gregory Bell (gj-bell@uiuc.edu) for the High Energy Group of the Physics Department at the University of Illinois, Urbana-Champaign.  Its purpose in life is to make the programming of VME CROM's easier by doing all the tedious/difficult work automatically.

What does it do?

WinRom starts all ROM projects with a template which tells the program what things it knows, and what things the user needs to fill in.  The default ROM template (default.rtm) is set up to program a VME CROM.  Most fields are invisible to the user (unless they uncheck View->Useful Pages Only) because only a handful are editable.

Values are entered by the user into the multi-page dialog.  When an illegal value is entered, the input turns RED to alert the user there has been a misunderstanding.   When the problem is corrected, the value returns to the normal color.

Users can save WinRom files (*.wnr) so all the fields don't have to be filled in each time.  For example, if all AXTR boards have similar values except, say, the serial number, you could save your work as "AXTR.wnr" and retrieve it each time you run the program.

To generate output for user-verification or for the chip programmer, use the File->Export command.  Exporting to ASCII will produce a human readable text file containing the ROM addresses and what will be stored there.  Exporting to Intel-MCS86 will produce a code 88 file which is readable by the ROM programmer.  The checksums, addresses, and other various protocols are handled automatically.

What else could it do?

WinRom is fairly configurable because everything it does is dictated by the Template File.

At the very least, the program can be configured to input different numbers and strings, and store to different ROM addresses.  This could be used to program a different type of ROM chip, etc...

At most, the source code could be augmented to output different file formats, or process more automatic commands.  Currently, it can only convert numbers and strings to binary output, calculate the total length of bytes being output, and calculate a ROM-wide checksum in 2's complement.  All these things are required for VME CROM programming.  With a little work, other commands could be written for the template file reader.  I doubt whether anyone ever will, knowing the usual nature of scientific software, but hey, go for it if you want to!  I have copiously commented the source code.  The only thing you need is an intimate understanding of Microsoft Visual C++ 5.0 and the Microsoft Foundation Classes (specifically Document-View concepts)