The following changes were made to the program DOB by Tom Getzinger to make the program output listings more readable and to handle several changes made to the object file format since the original writing of DOB. The changes were made by: Harry Herman P. O. Box 5142 Peoria, Il 61601 The changes will be listed as they are refered to in the source listings hah Fix the processing of the .END statement to save the transfer address if specified. A line of code was apparently missing in GSD2.MAC. hah001 Print instructions of the form: EMT global or TRAP global in the proper format. Previously, DOB would split the entry into two bytes and display them as: .BYTE 210 .BYTE global (for EMT) or .BYTE 211 .BYTE global (for TRAP) This involved adding a routine in DASM3 to check each instruction that was broken into two bytes to see if the high byte was a 210(8) or 211(8) with a second byte that was flagged as relocated. If the above conditions were met and the insrtuctions were at consecutive addresses, they are printed as EMTs or TRAPs, else they are printed as .BYTEs. hah002 Handle the new RLD entry called 'Additive Relocation'. This entry simply adds a specified constant to the base of the LIBR if this is a LIBR.STB file that is being processed, or adds the constant to the base of the program if it isnt a LIBR.STB. I simply substitute a symbol called 'LIB.BASE' for the entry and add in, or subtract the specified constant. Note that LIB.BASE is a pseudosymbol and will not yeild the correct results if the file is reassembled with MACRO-11. It is informational only. MACRO-11 is not capable of producing the correct object module entry and LIB.BASE is not defined anywhere, so it would come out as an unresolved global. Changes were made in DASM3, DISOP3, RLD2, RLD3, RODATA and EQUATE to handle this. hah003 Convert all numbers greater than 170000(8) to negative numbers. I picked 170000 arbitrarily as a number that would seldom interfere with most bitmasks and most (but not all) addressing. Most programs do not directly address locations in APR 7 (addresses 160000-177777) since that is generally reserved for the I/O page, and only RSX privileged programs can directly access the I/O page (or RSTS programs with PEEK and POKE syscalls). Basically any time a constant is to be printed, I check to see if the value is > 170000. If so, I replace the existing plus sign with a minus sign, and then negate the value and reprint it as a positive magnitude. For example, the value 177777 octal will now be printed as -1 instead of 177777. This makes looking up error values for RSX error messages much easier and also negative indexes show up as negative intead of as large 'positive' indexes. The only drawback is in taking apart LIBR .STB files that were built for the upper APRs, as all globals defined in the LIBR at addresses greater than 170000 will now print as negative numbers. The modules CLENUP, DISOP3 and RLD3 were modified to accomplish this. hah004 Handle the new .PSECT declaration attributes of SAVe and LIBrary. Note that MACRO-11 cannot process the LIB attribute as that is only created by TKB when creating STB files for LIBRs and COMMONs. A note is printed with each PSECT declaration that uses the LIBrary attribute to say that the module cannot be reassembled with MACRO-11 since MACRO-11 will give a syntax error if the LIB arguement is used with the .PSECT declaration. The disassembly does continue though, so that you can see the rest of the information (autoload vectors, symbol definitions, segment descriptors, internal symbol declarations, etc.) that are contained in the .STB file. The only change was to GSD2. hah005 Mofify PASS2 to ignore the ISD entries for now. A future incomplete modification will actually take apart the ISD entries as documented with the TKB manual that came with RSTS v8.0. However, for now the ISDs are simply ignored instead of aborting DOB as it used to. hah006 Handle the library base symbol in the complex expression evaluation. See hah002 for an explination of how it was handled. The modules modified were DCOM and EQUATE. hah007 Add the PSECT '. ABS.' if it was not defined after the END OF GSD record is reached. This was necessary because overlaid LIBR .STB files reference the PSECT without declaring the PSECT. The module modified was PASS1. hah008 For each global symbol entry in the GSD, check to see if it is a definition or a reference. If it is only a reference, print a comment to that effect. This allows quicker identification of unresolved globals as opposed to the globals declared in the module. The module modified was GSD2. hah009 Added support for ISD entries created by TKB for .STB files. Rest of ISD entries will be added as time permits. Created new module called ISD3, and modified PASS3 to call ISD3 instead of ignoring the record.