Dec 252017
 
Logs all I/O to a specified file (to another file) - Handy for some debugging tasks.
File RIO.ZIP from The Programmer’s Corner in
Category System Diagnostics
Logs all I/O to a specified file (to another file) – Handy for some debugging tasks.
File Name File Size Zip Size Zip Type
RIO.DOC 11780 3534 deflated
RIO.EXE 41584 19205 deflated

Download File RIO.ZIP Here

Contents of the RIO.DOC file


RIO - Rock Input/Output 1.1 BETA 9/10/90

* Version 1.1 BETA! Still not a fully-debugged, finished *
* version, but on the other hand, it's still free! Check *
* CompuServe's IBMSYS forum, probably library 3, or lib 0 *
* (new uploads) for newer versions. *
* *
* Further documentation on how to read the log file soon! *
* Also, this version can't be unloaded - use mark/release. *
* Any suggestions or ideas are welcome; e-mail Rob Argy on *
* CompuServe, CIS [71270,146], or call Rock Systems at *
* (313) 971-9123 *


Purpose

RIO is a memory-resident program (takes about 30K) that logs
all DOS disk I/O operations and other functions to a file for
later study. It can be useful in debugging software and
network problems by showing what DOS calls are made along
with their results, without the need to delve into a
program's source code.

By listing read/write calls as well (the default is off), RIO
may be useful in "reverse-engineering" how a program
accomplishes certain tasks, or in decoding a data file
formats, as RIO can list the number of bytes read/written
during each DOS call.


Syntax

To install, type

RIO [filename]

The log file defaults to C:\RIO. The log file is rewritten
when the TSR goes resident.

Certain aspects of RIO can be controlled by pressing hot keys
after it has gone resident. The following table lists the hot
keys:

LeftShift-RightShift-L toggle logging (def ON)
LeftShift-RightShift-W toggle read/write logging (def OFF)
LeftShift-RightShift-F toggle failure logging (def OFF)
LeftShift-RightShift-C clear log file

When logging is off, no further I/O operations will be logged
until it is turned on again. If your system is slowed down
with file accesses you're not interested in, you should turn
logging off. After logging is resumed, new operations are
appended to the existing log file.

The Read/Write toggle controls whether DOS functions $3F and
$40 are logged. In some cases, these calls are made quite
often, and logging them will both slow the current program's
execution, and create huge log files.

The Failure toggle controls whether DOS calls with errors are
reported. Failures generally do not represent bugs; for
example, to determine if a file exists, many programs try
opening the file, and if it fails, it knows it doesn't exist.
Since DOS itself generates many "failed" calls, the failure
toggle defaults to off. If failed DOS calls are logged, they
are denoted by an asterisk in the # column of the log.
Otherwise, failing calls do not appear at all.

When toggling switches, RIO uses sound effects to signify
whether they're being turned on or off. On is denoted by a
rising scale of tones, off by a falling scale. Clear the log
file results in a muddy warbling sound.


Operation

The log file is a text file showing information about each
DOS I/O call. It lists the call, the associated file handle,
file name, and time/date stamp, as available.

The # column shows the file handle, if the given DOS call
uses a file handle. If a DOS call returns an error, a * is
shown in the # column (see the paragraph on "failure toggle"
above").

Note that RIO does not log its own I/O operations.

A ! on a blank line in the log file means RIO was unable to
log all the information. RIO uses a memory buffer to hold
log information until it is safe to write it to disk. If the
buffer overflows before it can be logged, the log file will
contain one or more lines showing just an exclamation point.

For the technically minded, the folloging Int $21 functions
are currently logged: $01-$17, $1b-$1c, $21-$24, $26-$2E,
$30, $36, $38-$3E, $41-$43, $45-$46, $4D-$4E, $56-$57, and
$5A-$5C.


Future Features

In an upcoming version of RIO, the logging of each function
will be configurable, so the logging of particular Int $21
functions could be turned off. Also, features such as
time/date stamping, logging of interrupt function numbers,
maximum width for the log file, more detailed return code
infromation, and more will be added.

These options will be selectable from a separate non-TSR
program which communicates to RIO, so that the user interface
and other memory-filling code will not hog your system RAM
while you're running RIO.

RIO 1.2 and its companion configuration program are under
development as of 9/10/90, though an initial release date
has not yet been set.

The DOS functions to get and set interrupt vectors are not
currently logged, and will hopefully be included in the next
version (currently a tricky tech problem stands in the way).


File Attributes

Get Attr, Set Attr , and some other file-related calls are
followed by attribute codes, given in brackets as follows:

Set Attrs [RHSVDA] C:\P\PAS\RIO.PAS

In practice, only some of the letters appear in the brackets,
as some are mutually exclusive. The letters stand for the
following file attributes:

R - Read only
H - Hidden
S - System
V - Volume
D - Directory
A - Archive

As an example of mutually exclusive file attributes, a Volume
cannot be a Directory, so V and D should never appear in the
same attribute brackets.


Credits

RIO is based on the public domain IOLOG 1.0 (12/88) by Kim
Kokkonen of TurboPower Software, and uses TurboPower's
(excellent!) Object Professional toolkit. Mr. Kokkonen
credits Don Pearsall for program's inspiration.

Rock's additions include time/date stamps, logging of many
interrupts that were not previously logged, and logging of
information returned from many interrupts.

This version of RIO is being released to the public domain.
Future versions, when the program is more robust, reliable,
and has a nice configuration program, will probably be
distributed as shareware.

Example output - RIO with default parameters

Operation # Information sent/returned Date/Time
--------- - ------------------------- ---------
Get return code Normal $31 terminate, returned 0 09/10/90 15:57:41.01
Get Country Data United States 09/10/90 15:57:42.33
Display Character $3E (>) 09/10/90 15:57:42.33
Parse file name T 09/10/90 15:57:57.05
Parse file name 09/10/90 15:57:57.05
Parse file name 09/10/90 15:57:57.05
Findfile [RH D ] T.??? 09/10/90 15:57:57.05
Findfile [RH D ] D:\B\T.??? 09/10/90 15:57:57.16
Findfile [RH D ] D:\B\T.BAT 09/10/90 15:57:57.16
Get Country Data United States 09/10/90 15:57:57.22
Open (Read-only) 5 D:\B\T.BAT 09/10/90 15:57:57.22
Seek File 5 To byte 0 09/10/90 15:57:57.22

Example, continued....

Read File 5 32 bytes 09/10/90 15:57:57.22
Close File 5 09/10/90 15:57:57.22
Display Character $3E (>) 09/10/90 15:57:57.22
Parse file name C: 09/10/90 15:57:57.27
Select Disk Physical drive C: 09/10/90 15:57:57.27
Get Country Data United States 09/10/90 15:57:57.27
Open (Read-only) 5 D:\B\T.BAT 09/10/90 15:57:57.27
Seek File 5 To byte 4 09/10/90 15:57:57.27
Read File 5 32 bytes 09/10/90 15:57:57.27
Close File 5 09/10/90 15:57:57.27
Display Character $3E (>) 09/10/90 15:57:57.33
Parse file name CD \P\PAS 09/10/90 15:57:57.33
Parse file name \P\PAS 09/10/90 15:57:57.33
Parse file name 09/10/90 15:57:57.33
Change Directory \P\PAS 09/10/90 15:57:57.44
Get Country Data United States 09/10/90 15:57:57.44
Open (Read-only) 5 D:\B\T.BAT 09/10/90 15:57:57.44
Seek File 5 To byte 15 09/10/90 15:57:57.44
Read File 5 32 bytes 09/10/90 15:57:57.44
Close File 5 09/10/90 15:57:57.44
Display Character $3E (>) 09/10/90 15:57:57.49
Parse file name ..\TURBO 09/10/90 15:57:57.49
Parse file name 09/10/90 15:57:57.82
Findfile [RH D ] ..\TURBO.??? 09/10/90 15:57:57.82
Get DOS version 4.0 (OEM #255) 09/10/90 15:57:58.21
Open (Read-only) 5 TURBO.TP 09/10/90 15:57:58.43
Seek File 5 To EOF (get file size) 09/10/90 15:57:58.43
Close File 5 09/10/90 15:57:58.43
Open (Read-only) 5 TURBO.TP 09/10/90 15:57:58.48
Read File 5 34 bytes 09/10/90 15:57:58.53
Read File 5 7 bytes 09/10/90 15:57:58.53
Close File 5 09/10/90 15:57:59.80
Change Directory C:\P\PAS 09/10/90 15:58:00.24
Change Directory C:\P\PAS\.. 09/10/90 15:58:00.62
Open (Read-only) 5 C:\P\PAS\..\TURBO.TPL 09/10/90 15:58:00.95
Seek File 5 To EOF (get file size) 09/10/90 15:58:00.95
Close File 5 09/10/90 15:58:00.95
Open (Read-only) 5 C:\P\PAS\..\TURBO.TPL 09/10/90 15:58:00.95
Get File Date 5 05/02/89 05:50:00 09/10/90 15:58:00.95
Read File 5 65520 bytes 09/10/90 15:58:01.06
Close File 5 09/10/90 15:58:01.06
Open (Read-only) 5 C:\P\PAS\TURBO.PCK 09/10/90 15:58:01.34
Seek File 5 To EOF (get file size) 09/10/90 15:58:01.34
Read File 5 4 bytes 09/10/90 15:58:01.50
Get system date Mon Sep 10/90 09/10/90 15:58:12.49
Get system time 15:58:12.49 09/10/90 15:58:12.49
Findfile [ ] C:\OPRODEMO\OPINLINE.TPU09/10/90 15:58:14.19
Open (Read-only) 5 C:\OPRODEMO\OPINLINE.TPU 09/10/90 15:58:14.19
Read File 5 64 bytes 09/10/90 15:58:14.24
Read File 5 3054 bytes 09/10/90 15:58:14.30
Close File 5 09/10/90 15:58:14.30
Get return code Normal $4C terminate, returned 0 09/10/90 15:58:36.71
Open (Read-only) 5 C:\COMMAND.COM 09/10/90 15:58:36.76
Seek File 5 To byte 9792 09/10/90 15:58:36.76
Read File 5 27765 bytes 09/10/90 15:58:36.87
Close File 5 09/10/90 15:58:36.87



 December 25, 2017  Add comments

Leave a Reply