Index of /netwaresl/MIS_UTIL/READ_OBJ
Name Last modified Size Description
Parent Directory 23-Apr-2005 03:02 -
ROL.EXE 14-Apr-1995 11:46 73k
ROL.MSG 14-Apr-1995 11:46 3k
RO_092B.ZIP 03-May-1995 08:59 81k
to make long things short:
#include standard_disclaimer
Welcome!
This is the 6th public beta-release of ReadObject&Library - ROL.EXE
version 0.92.
PLEASE READ THIS ENTIRE DOCUMENT BEFORE USING ROL! At this time, there
are many features accessible only via undocumented hotkeys. I'm still
waiting for some menuing routines and will add a real SAA style menu
in one of the future version.
ROL was written in FORCE 2.4c using the XSVFORCE library v1.3 (and some
of my own libs).
If you stumble over a bug, or if you are missing a certain feature, just
let me know!
You can reach me at one of the following adresses:
100120,461 on Compu$erve or
100120.461@compuserve.com on the net
timh@gismo.rhein-ruhr.de "
itimh@ukon.gun.de "
AFAIK, ROL now does read any .OBJ or .LIB file correctly, as long as it
sticks to the rules set forth in the 2 documents mentioned further below.
IF you have a LIB or OBJ which ROL for some reason refuses to process,
just extract that specific OBJ (via F3) and mail it to one of the above
adresses.
There is no still documentation to ROL. For one, I really don't have the time
for this, and two, I think ROL is pretty much self-documenting. This document
also holds quite a lot information on how ROL works. Please read it
completely!
Press <F10> to get to the menu. Here are (almost) all the possible options
and their hotkeys listed. Press <F1> to see a list of all the possible
hotkeys. Press <ESC> or <ALT-X> or - if your using ROL in Windoze - <ALT-F4>
to exit ROL.
For more information on the 'Relocatable Object Module Format' refer to
SS0288.EXE in the Microsoft Library on Compu$erve (GO MSL) or download
PF11H.ZIP (Portable Formats Specification v1.1) from the 'Intel Architecture
Labs' forum (GO INTELARCH). These documents will explain to you all the
different records and their meaning in detail.
YOU MAY DISTRIBUTE THIS COPY OF ReadObject&Library! You MAY upload it to any
bulletin boards or any other online services, in fact, I even ask you to
distribute ROL while it's still in beta.
Have fun (and REPORT!)!
-Tim
-----------------------------------------------------------------------------
ROL - history - indicates removed items or features
+ indicates new items or features
* indicates modified items or features
v0.9 beta 02/24/95
+ initial public release as a freeware beta version
v0.901 beta 03/09/95
* changed name from 'ReadObject' to 'ReadObject&Library' -
RO.EXE to ROL.EXE
* complete re-write of the reading engine:
* overall reading & processing speed enhanced (I think <g>)
+ now checks for an extended library dictionary (LIB versions 3.09+)
and reads it (99% faster than the method used in v0.9)
- due to this new method, the size column doesn't display the
exact size of an object anymore and ROL can't figure out whether
it is a 'main programm module' or not. But this only relates to
LIB files with an extended dictionary created with LIB.EXE.
+ local public (LPUBDEF) & local external (LEXTDEF) records are
now inserted in the public or external symbol list and marked
with a "L" in the second last column
+ internally resolved (local) external symbols ((L)EXTDEF with a
matching (L)PUBDEF) are now marked with a "û" in the last column
+ inserted a 1 second delay to check for repeated keystrokes while
browsing through the main module list
+ added 'library information' window (ALT-i)
+ added 'video setup' (ALT-v) to switch to either 25, 28 (VGA) or
43/50 (EGA/VGA) screen lines
- removed LNAMES/SEGDEF-browser (ALT-l), it displayed nonsense, but...
+ added 'defined segments' viewer (ALT-g), which now correctly displays
the setup of the defined segments
+ added 'OBJ management' (F2): (LIB files only)
+ needs one of the following 3 library managers either in your PATH,
in the directory where ROL.EXE resides or in the current directory
and uses the 1st match:
1) LIB.EXE (MS)
2) TLIB.EXE (Borland)
3) FLIB.EXE (Funcky)
! WARNING: after deleting the last module in a library ROL will still
attempt to re-read it and then it will crash!
+ added 'dictionary dump' (ALT-d - not listed in menu), which
lists all entries in the LIB's standard (not extended) dictionary;
this 'feature' probably is of no use to anyone (but me <g>)
+ added 'quick scan all records' (ALT-q), which just displays every
single object module record by its number, name and size.
(if you encounter an entry like '???????' -> report!!)
+ a couple of strings, mostly OMF descriptions, have been exported
to a file called ROL.MSG. Don't mess with this file! If you rename
ROL.EXE to something different, rename the .MSG-file too! Keep it in
the directory where ROL.EXE resides.
v0.902 beta 03/28/95
* turned off the screen effects while running under Windows. They don't
work correctly in that environment (entirely removed in v0.92)
* trying to extract a module with a name longer than 8 chars, ROL would
pop up a message, but then re-read the whole library, which is not
neccessary. fixed
+ now uses 'Norton-style' boxes throughout the UI. I also played around
with some of the EGA palette registers ... tell me, if you don't like
it. (removed in v0.92)
* some minor glitches have been fixed
* ROL.EXE is now compressed.
v0.903 beta 03/29/95
* ooops! I forgot to turn off blinking in v0.902. fixed
(all my testing machines just don't blink by default ...)
+ ROL does not switch to 28 lines anymore if it detects a display size
other than 25 rows. If you switch to a different # of rows via the
video setup menu (ALT-v), ROL will switch to 25 rows on exit.
* calling ROL from a graphical DOS Box in Windoze messed up the box
characters. fixed
* using ROL with libraries that don't have an extended dictionary
displayed the wrong records due to a incorrect offset counter. fixed
+ pressing RETURN in the main modules list will pop up the main menu -
just like F10
v0.91 beta 04/03/95
* (hopefully) fixed an error which prevented ROL from reading libraries
created with TLIB.EXE and the /e switch. Borland's extended dictionary
format is unknown to me. If you have any documentation on Borland's
extended dictionary format, please forward it to me.
ROL will process the TLIB'd libs on a module by module basis, the slow
way. You can find out, whether your lib was created with TLIB by
checking the 'library information' window (ALT-i). It will say, that an
extended dictionary is there, but its size is 0 bytes.
* fixed a bug in the 'defined segments' browser. A very special type
of the SEGDEF record wasn't read correctly and ROL crashed.
+ added the F3 hotkey to extract the current module with an internal
routine. This is useful, if you don't have a library manager. It seems
to be a little quicker than calling a lib manager, too. If present,
a comment record indicating the modules name in a library will be
removed.
+ added the SHIFT-F3 hotkey, which is an interface to a tool called
OBJASM.EXE. If this file is not found in the current directory or in
your path, this feature does not work, of course. In case of a library
file, the internal routine for extracting a module is called first. The
output of OBJASM.EXE is piped to a file with the name of the current
module + ".ASM".
+ added a record hex dump to the 'quick scan all records' (ALT-q) menu
item. Pressing ENTER on any item in the list will pop up the hex-dump
of that specific record.
+ added an option to save the hex-dump of the complete .OBJ to a file.
Pressing ALT-d in the hex-dump window (ALT-h) will save the entire
hex-dump of that module to a file. The output is sent to a file with
the name of the current module + ".HEX". (Note: the screen doesn't
seem to be restored correctly after exiting the hex-dump window only
when dumping a large module, eg. the BROWSE.OBJ in FORCE.LIB. This
doesn't seem to harm the further operation of ROL, though.)
+ added a command line parameter: -? or -h. ROL won't tell you much,
though. ;-)
v0.92 beta 04/14/95
+ added a browser for LEDATA records (ALT-j). This is where most of the
interesting stuff in an object module is stored. Opcodes and text, for
example. If there are no LEDATA records in a module, ROL will show a
message, that no defined segments could be found, because it reads the
segments first. If there are no defined segments, there are no LEDATA
records, basically there shouldn't be any records, but a comment.
+ added a browser for LIDATA records (ALT-k). There's a pretty bad
recursion routine in this one. If ROL suddenly hangs or quits with
a message saying 'stack space exhausted' (or something like that),
the recursion level in a LIDATA record is too deep. Please, do me a
favour, and send that specific module to one of the above mentioned
addresses! I will then fix ROL to be able to correctly read modules
with a higher recursion level, too. The highest recursion level I
could find is only 5 level deep.
+ added the type index field to the 'external symbols' browser. This
field is an index to a TYPEDEF record, which, if present, contains
information about the type of data declared in a PUBDEF or EXTDEF.
TYPEDEF records are currently not processed by ROL.
+ added a little 'defined short cut keys' screen, accessible via F1,
because the main menu will not be updated anymore.
* ROL now opens the .OBJ or .LIB file in shared mode.
* fixed both the 'search symbols' and 'search all public symbols'
routines. They should now work ok.
* fixed the hex-dump browser so that it won't crash with an exception
error (eg. QEMM) when trying to dump it's contents to a file.
* fixed the interface to OBJASM, so that the object file is not erased
anymore, if it's not part of a library. (sorry 'bout that)
* fixed both interfaces to a library manager and OBJASM.EXE so that the
output will be stored in the directory where the library/object file
resides (and not just anywhere <g>).
* changed the 'public symbols' browser by leaving out some of the info
presented. Pressing ENTER on any item in the 'public symbols' list
will now pop up a small window with all the information available on
this one symbol.
* removed wrapping in the comments browser (e.g. pressing up arrow on
the first item used to take you to the last in the list). Also
corrected the displaying of wrong 'purge' and 'list' flags on multi-
line comments.
* cleaned up ROL.MSG and added descriptions for all available record
types. This results in more descriptive names in the 3 hex-dumps and
slightly longer processing time.
* erased the screen fading stuff and set the DOS color on exit to the
value found when ROL was called. Also removed the palette redefinition
stuff (most of it <g>).
+ when ROL crashes for some reason (<g>), it now creates a file ROL.ERR
in the current directory. ROL.ERR contains some information on the
error, which I need. Please take the time, and fill out the missing
information and send this file to 1 of my Email adresses.
-----------------------------------------------------------------------------
ROL - known bugs & limitations
- the number of modules in the main list is limited to 900 per library.
According to my docs, a library may contain up to 9287 modules, but to
keep memory requirements low, I had to set a reasonable limit. ROL
simply won't read past the 900th module.
- the maximum number of COMENT records (ALT-c) is limited to 199.
So far, I haven't seen an object module that contains this many
comments.
- extracting modules (F2) with a name more than 8 characters in size
is not possible. These kind of modules seem to occur in libraries
created with the IMPLIB utility. Extracting this kind of modules
doesn't make sense, since they only contain a reference to a symbol
in a .DLL. Check the comments (ALT-c) for more details on the IMPLIB
implementation.
-----------------------------------------------------------------------------
ROL - the future
- as of version 0.91, the menu will not be updated with the new
functions & record browsers anymore, because I'm currently waiting
for some menuing routines, to add a true SAA style menu to ROL. That's
why for example the LE- and LIDATA records have such 'intuitive'
short-cut keys for the time being.
- printing module lists, cross reference lists ('I-need' and 'need-me').
I still need some more info and feedback from you how the output
should look like!
- the above mentioned feature will come in different .EXE files bundled
with ROL v1.0 (hopefully <g>)
- will add a feature to tag modules in the main modul list for the
interface with a library manager and OBJASM.
- (you tell me!)
-----------------------------------------------------------------------------
Again, if you find any bugs or if you are missing a certain feature
... gimme details!