CAM is a utility written in C to reduce relocatable DEC format object modules to macro. Currently CAM can handle object modules produced under RSX-11, RSTS/E RSX and RT-11 emulation, RT-11 native mode, VMS compatability mode and IAS. CAM has only been tested actually running on RSX native mode, VMS RSX compatability mode and RSTS/E RSX emulation with native RSX-11, VMS compatability mode and RSTS/E RSX/RT-11 emulation input files. CAM is invoked as a CCL on RSTS or by name as an installed task under RSX-11: cam -flags file.typ where 'file.typ' is the object module to examine, and 'flags' represents a combination of the flags specified below. By default the output is to the user's terminal, however output to a file may be specified by using a command of the form: cam -flags >output.fil file.typ where 'output.fil' is the required output file specification which must be preceeded by a '>' character. *BUGS Refer all problems/questions/idle chat to: Nick de Smith (CAM SPR) Applied Telematics Services Ltd. 7 Vale Avenue Tunbridge Wells Kent TN1 1DJ England Enclosing the CAM output/original input etc etc etc. I promise that I might do something about it sometime! *FLAGS *|SWITCHES Flags are single characters preceeded by '-'. Several flags may be concatanated preceeded by a single '-'. eg. '-fkol'. No two flags conflict with each other. -f Treat floating point instructions as data. If you think that there shouldn't be any FP11/KEF11 instructions in the object file, use this flag. -k Treat kernal mode opcodes as data. Use of this flag disables decoding of instructions such as 'halt' and 'wait'. If you are processing an object module that was designed for use in user space, then use this flag. -e By default, CAM will interpret 'emt' instructions and translate them to their RSTS equivalent (if there is one). Use of this flag disables this feature and makes 'emt 377' appear as 'dir$'. Use this flag if the object module did not come from RSTS. -l Don't output line numbers. -o Don't output the octal of the decoded instructions. -b Disable opcode output. All data is output as .word or .byte data items. This is useful if you know that the module under inspection contains only data. -c Don't output the decoded instructions. This is useful if you just want referenced globals etc. -r Don't output the list of referenced globals. -a Don't output the list of absolute global definitions. -t Don't output the 'ascii' of the data. By default, CAM will output (in the comment field) the ascii of any printable character (or '.' for un-printable ones) in the data fields. -s Output the list of absolute global definitions sorted by psect and offset within each psect. By default, CAM outputs this list (unless -a was used) in the order in which the globals were encountered in the object file. Use of this flag can save a considerable amount of space if you find CAM runs out of memory and the object module contains a lot of absolute globals. -m Disable the 'macro' feature. By default, CAM will translate certain instructions into macro calls such as those found in 'common.mac'. Macros currently supported include: return, push, pop, call, callx and jmpx. The definitions of these macros can be found in the file CAMPRE.MAC. Use of this flag will cause the actual instructions to be output. -q Output a table of all the psects found in the object module, their segment number, length and attributes. This flag was originally provided for debugging purposes, but some people may find it useful. -p Output a list of all the psects found in the object module, along with their attributes, in the order in which they were encountered. Use of this flag will ensure that, if the dis-assembled code is re-assembled, the psects in the new object module will have the same segment numbers as those in the old module. This is not generally important, but some code depends on psects being declared in a particular order. -i Ignore load address mismatches. This is an absolute hack. Certain object modules, such as those TKB produces for resident library .stb files, contain very strange record formats. This flag should never be needed on a standard object module. Don't use it (please). -d Set debug mode. Use this if you want, but I shan't say what it does! -n Attempt to resolve numerical constants in a supplied STB file. This feature is not available in the current release version. End of CAM help. Nick de Smith, Jan '83.