DoradoProms is a program for defining, blowing, and listing any and all proms used the the DORADO. The definitions of new Proms are programed and compiled into DoradoProms.run as they are needed. The program is maintained on IVY<DoradoLogic>DoradoProms.run.

Once this is done, DoradoProms.run is run to produce a microbinary format file (called DoradoProms.mb) which contains the actual PROM definitions as required for the Prom.run program. In addition to the .mb file, and command file (Prom.cm) is produced which should be executed to cause the program Prom.run to be invoked in the correct way for each of the defined memories to be blown. Imbeded in the command file ( as comments) is additional information such as the "name" of the prom, and a label containg board name and location.

DoradoProms.run may be invoked in a number of ways as indicated by the following examples:

"DoradoProms"
will define all proms for the Dorado
"DoradoProms MemC"
will define proms for the MemC board
"DoradoProms Mem"
will define proms for the MemC, Memx, and MemD boards
"DoradoProms Mem Proc"
will define proms for the Memory and processor system
Current names following DoradoProms.run are Control, Processor, ProcH, ProcL, IFU, JunkIO, Memory, Disk, and Display.
The program ignores upper/lower case, and only enough characters to make the string
unique are required, thus Memory, memory, mem, or just M will work.

"DoradoProms/L Mem"
The /L option will also cause BinList.run to be invoked to generate listing files for all Proms defined in the D1Proms.mb file. The best way to use this feature is to delete all .ls files before running DoradoProms.run and then do "Empress *.ls" to get a hard copy of all Proms just defined.

Executing the Prom.cm command file will tell you what type of Prom (and corresponding personality card) to use, what the name of the Prom is, and the contents of the label that should be placed on the top of the Prom after blowing it should be. Just before envoking Prom.run for a particular Prom, the command file invokes a non-existant file enabeling you to skip the particular prom by typing "// cr" to the exec or to blow the Prom by just typing cr to the exec.

Program Description
Most of the prom requirements of the Dorado have already been implemented in the DoradoProm program, and this program should not have to be touched very often in the future. The following description is intended only as an introduction. The real truth of course if best found by examining existing code within this program.
The program (written is BCPL) is 0rganized around one file called DoradoProms.bcpl which has responsibility for all program wide code. As such, it opens up the rem.cm file, and finds the name of each prom, board, or set of boards, to be specified, and passes these name(s) of to all proceedures that have been implemented for prom specification. The proceedure has been organized so that separate commnad files are created for each of the Prom types defined. i.e. MC10149.cm will cause all MC10149 proms to be blown etc.
There are two proceedures which ara available for causing the microbinary file and the associated command files to be built up.
Header(Name,Width,Buff,Count,Adjust) is used as the means of causing the contents of the prome to be entered in the microbinary output file. The parameters have the following meaning:
Name:The name of the memory
Width:The width (in bits) of the memory (in multiples of the number of bits per memory chip in which the memory is to be implemented)
Buff:pointer to the data block which describes the block
Count:The length (in words) of the memory (in multiples of the number of words per memory chip in which the memory is to be implemented)
Adjust:The count by which the data in "Buff" must be left shifted in order to have the bits left justified within the word
PromCommand(Label,Fbit,Faddr) is used as the means of entering the appropriate entries in the command file. If a memory is defined which requires more than one prom to implenet, then this proceedure must be called for each prom required. The parameters have the following meaning:
Label:A String which describes what should be written on the lable stuck to the top of the Prom
Fbit:A string which defines the first bit of the Memory which is to be placed in the first bit of the Prom being defined. This string is defaulted to "0" if no parameter is passed
Faddr:A string which defines the first word of the Memory which is to be placed in the first word of the Prom being defined. This string is defaulted to "0" if no parameter is passed
StEq(S1,S2) is a string compair routine which compairs S1 to S2 according to the requirements of this program.
If either S1 or S2 are 0 (doesn’t point to a string) then True is returned
If the characters in the shorter string match the corresponding characters of the longer string, then True is returned (case is ignored for this comparison).
For each board within the Dorado, I have implemented a bcpl file which defines all the proms necessary for that board.
The "board" proceedure first comapairs the name passed to it to see if the entire board is to be programmed, and if so sets the name pointer to "DoAll", ie future calls of StEq will return True for all strings
Within the board proceedure, StEq is called again to see if a particular memory is to be programmed. Ifso, and the current memory type is the right type, then a proceedure is called which is designed to program the appropriate memory. This is done by tables, or algorithms written in BCPL code, etc.
The Header proceedure is then called to have the memory contents entered in the microbinary file, and finally PromCommand is called for each of the chips that have to be blown to implement the memory.