			    INTPRINT v3.10
			    by Ralf Brown

The INTPRINT program is hereby donated to the public domain, with the sincere
hope that proper credit will be retained in all copies and derivatives.

------------------------------------------------------------------------------

INTPRINT.COM is a simple formatter for the interrupt list.  Use this
program to print only a portion of the list, prevent widow lines at the
beginning of a function call, number the pages, boldface key portions,
center the printout, or create a summary of the function calls.  After
formatting is complete, the total number of pages is displayed on the
screen.

Usage:
   intprint [options] intlist [[>|>>]outfile]

where the options are:
	-b    boldface the title lines, Return:, and Notes: by overprinting
	-B    boldface by sending printer control sequences

	-d    (duplex) print even/odd pages with different margins; suitable
	      for binding the printout.

	-e    assume printer is in elite mode (96 characters per line), and
	      indent the output eight spaces to center the printout.  This
	      is primarily for the default printer, as other printers may
	      force the equivalent or override this option.

	-ffile	create a file containing only the data structures described
	      in the interrupt list.
	      NOTE: you must put the filename immediately after the 'f'; no
	      blanks are allowed.

	-Ffile	filter the listing based on include and exclude strings
	      in 'file'.  Only entries whose headers match none of the
	      exclude strings and at least one of the include strings
	      will be processed.  All others will be skipped.
	      NOTE: you must put the filename immediately after the 'F'; no
	      blanks are allowed.

	-H    print a heading on each page indicating which interrupts
	      are listed on the page

	-iN   indent the output N spaces.  The output device is assumed to be
	      at least 80+N characters wide.
	      NOTE: you must put the number immediately after the 'i'; no
	      blanks are allowed.

	-I    assume the printer is capable of producing IBM character
	      graphics.  Printers other than "default" may force this option.

	-k    keep original divider lines instead of replacing them
	      with all dashes.

	-lN   print N lines per pages, overriding the printer-specific
	      default.	Use 0 to omit page breaks (in this case, the
	      reported number of pages and -r page restriction may be
	      incorrect unless you also use -L); this can be useful if
	      you only want to filter the list before processing it
	      further.

	-LN   assume N lines on a page.  If this is more than the number of
	      lines to print on each page, INTPRINT will use line feeds to
	      advance to the next page instead of form feeds.

	-m    specify that the interrupt list is in multiple parts beginning
	      with the named file.  INTPRINT will increment the last
	      character of the name to get the next filename, and continue
	      until it is unable to open the file thus selected.

	-nN   assume N pages have already been printed, and start numbering
	      at N+1.  This option allows you to create a properly-numbered
	      printout even if there is not enough disk space to concatenate
	      the parts of the interrupt list or hold a complete output file.
	      See the examples below.
	      NOTE: you must put the number immediately after the 'n'; no
	      blanks are allowed.

	-p    print the page number at the bottom center of each page

	-Pname use control codes for the specified printer (-P? lists the
	      supported printers).  The printer name may be given in either
	      case and abbreviated to a unique prefix; use either dashes or
	      underscores in place of blanks in the printer name.

	-rN:M print only pages N through M.  The entire input is processed
	      for use in -s and -f summaries (see below) even though only
	      a portion is formatted for printing.  If filtering is enabled,
	      (see -F), page numbers are based on entries selected by the
	      filter file.
	      NOTE: you must put the page numbers immediately after the 'r';
	      no blanks are allowed.  When using -l0 together with -r,
	      you must specify the appropriate page length with -L so
	      that page numbers can be computed correctly.

	-sfile	create a one-line-per-function summary and write it to "file"
	      if -n is also given, the summary will be appended to "file",
	      allowing a properly numbered summary file to be created even if
	      there is not enough disk space to concatenate the parts of the
	      list.  See the examples below.  If -p is also given, page
	      numbers will be included in the summary.	If -V is also given,
	      byte offsets for use by INTERVUE will be included.
	      NOTE: you must put the filename immediately after the 's'; no
	      blanks are allowed.

	-tN   select typeface N for the chosen printer (currently supported
	      only for the HP).

	-Tfile	create a one-line-per-table summary and write it to "file"
	      if -n is also given, the summary will be appended to the named
	      file.  If -p is also given, page numbers will be included in
	      the summary.  If -V is also given, byte offsets for use by
	      INTERVUE will be included.
	      NOTE: you must put the filename immediately after the 'T'; no
	      blanks are allowed.

	-V    indicate that the summary file is intended for use by INTERVUE.
	      INTPRINT will output byte offsets that allow INTERVUE to jump
	      directly to an entry.  Also forces -I.

	-wN   (widow lines) search N lines from the end of the page for a
	      good place to break.  The default is eight lines; the valid
	      range is from 3 to one-half of the page length.
	      NOTE: you must put the number immediately after the 'w'; no
	      blanks are allowed.

	-x    include Index: lines in formatted listing.  These lines are
	      are excluded by default because they are intended primarily
	      for use by hypertext converters.

Options may not be merged; "-ep" is illegal and the "p" will be ignored.
Use "-e -p" instead.

The formatted result of the input file is sent to the specified output file,
or to standard output if no output file is given.  Standard output may be
redirected using the usual Unix or MSDOS redirection characters > or >>.  If
you only want a summary file or data formats file, send or redirect the
output to the null device ("NUL" under MSDOS, "/dev/null" under Unix).


FILTER FILE:
------------

The filter file specified with -F is a simple text file containing
include lines, exclude lines, and comment lines.  Both 'include' and
'exclude' lines may be based on either a category code or a substring
of the entry's title line.  Comment lines start with a hash mark (#) in
the first column and are ignored.  The other valid command characters
in the first column are:

   >  unconditionally include any entry with the specified category letter
   <  unconditionally exclude any entry with the specified category letter
   +  include entries containing the specified string, unless unconditionally
      excluded
   -  exclude entries containing the specified string, unless unconditionally
      included
   i  include entries with the given category letter unless specifically
      excluded by a '-' line
   o  override '-' line and include entry anyway if it has the given
      category letter

Note that any category letters or selection strings must immediately
follow the command character.  All spaces on '+' include and '-' exclude
lines are significant.  Thus,
	+ DOS
will only match entries containing the four-letter sequence " DOS",
while
	+DOS
will match any entries containing the sequence "DOS", whether or not it
is preceded by a blank.

If a filter file is specified, only entries whose title lines contain at
least one of the '+' include lines (ignoring uppercase/lowercase
distinctions), none of the '-' exclude lines, or whose category codes
have been selected by other include/exclude lines, are processed.  Thus,
a filter file must contain at least one include line, or INTPRINT will
skip all interrupt entries and print only the non-interrupt text in the
file.

----cut here----
# SAMPLE1.FLT
# Sample filtering file number 1, using only title includes/excludes.
# Extract MS-DOS calls, but exclude DR-DOS-specific, DOS-extender, and
# non-DOS networking calls.
# Note: a few extraneous calls are still included.
#
+ DOS
-DR DOS
-DR-DOS
-DR Multiuser DOS
-Concurrent DOS
-DOS/16M
-DOS4GX
-DOS/4G
-extender
-LAN Manager
-DECnet DOS
#
# end of SAMPLE1.FLT
----cut here----

----cut here----
# SAMPLE2.FLT
# Sample filtering file number 2, using category includes/excludes.  Extract
# MS-DOS and DR-DOS calls, but exclude OS/2 and other operating systems.
#
# unconditionally include the DOS category
>D
# include 'other OSes' category, but remove OS/2, VMiX, PC-MOS, etc.
iO
-OS/2
-VMiX
-PC-MOS
-STARLITE
-WinDOS
-Acorn BBC
-Linux DOSEMU
#
# end of SAMPLE2.FLT
----cut here----

------------------------------------------------------------------------------

EXAMPLES:
---------

	Print the interrupt list with page numbers, and create a summary file,
	without concatenating INTERRUP.A, INTERRUP.B, and INTERRUP.C:

		A> intprint -sb:interrup.sum -p interrup.a >prn
		146 pages    [screen output from INTPRINT]
		A> intprint -sb:interrup.sum -p -n146 interrup.b prn
		285 pages    [screen output from INTPRINT]
		A> intprint -sb:interrup.sum -p -n285 interrup.c >prn
		403 pages    [screen output from INTPRINT]

	or, more easily:
		A> intprint -sb:interrup.sum -m -p interrup.a prn
		1587 pages   [screen output from INTPRINT]

	Create only a summary file:

		C> intprint -sinterrupt.sum interrup.lst nul

	Create a listing of the tables in the interrupt list:

		C> intprint -Tinterrup.tbl interrup.lst nul

	Print only those entries containing the string "DOS", except
	those containing the string "DR-DOS"

		C> type dos
		+DOS
		-DR-DOS

		C> intprint -Fdos interrup.lst nul
		

	Print the interrupt list on an Epson FX80, using 54 lines per page and
	omitting both page numbers and summary:

		C> intprint -Pepson -l54 interrup.lst >prn

	Print the interrupt list using 120 lines on every 132-line page (using
	superscript mode, for example), and make divider lines using IBM
	character graphics:

		C> intprint -I -l120 -L132 interrup.lst >prn

	Print only pages 123 through 127, assuming that 106 pages are contained
	in the first section of the list:

		C> intprint -n106 -r123:127 interrup.b prn

	Print using HP PCL4/5 escape sequences, numbering pages, from file
	"interrup.lst" to file "interrup.pcl", at the default 69 lines per
	page, using form-feeds:

		C> intprint -Php -p interrup.lst >interrup.pcl
		1587 pages    [screen output from INTPRINT]

------------------------------------------------------------------------------

PORTABILITY:
------------

INTPRINT.C contains the source code for INTPRINT, for those people who
are using the interrupt list on a machine which does not run MSDOS.
This code has been tested with Turbo C v2.0, Borland C++ v3.1, and Mach
(BSD 4.3 Unix) "cc" and "gcc".

