PG is a text file viewer for DOS.
It was created in the FreeDOS project as a simple text viewer.
Somehow, PG has undergone a series of improvements to have all
features a user ever desired.
- freeware license under the GNU GPL version 2
- created with free development tools available in the internet
- small in size, small is beautiful
- looks simple, yet simple is elegant
- easy to use, robust, good documentation
Just give PG a shot and let the truth speak louder.
- Use a buffer to reduce physical disk access
- Support Traditional Chinese
- redefine filemark
- over 1000 filemarks
- 10 bookmarks
- 10 search history
- remove files to save screen "PG.SAV" and filemark "PG.PG"
- store "PG.SAV" and "PG.PG" to %TEMP% or %TMP
- Bug fix for @file to view files from other drives
- Support opcode for the 8086 CPU
- With plugin CPIFNT to override the BIOS 16x8 system fonts
with fonts retrieved from other FreeDOS projects <F7>
- Save the path+filename+fore/background color for review <F8>
Pressing function key <F8> saves the full path and filename
being viewed, together with the color that is set is saved
to C:\PG.PG -- its operation is just like @file introduced
in version 1.14, hopefully, this is the answer to users
with various colour taste.
A plugin CPIFNT is introduced to allow user to change to a
different language font if ever desired.
CPIFNT can be also used to retrieve a set of font files from EGA?.CPI.
Please noted the font files mentioned here actually comes from
other FreeDOS prjoects and the font size is 16x8x256 only.
The EGA?.CPX has to be decompressed in the first place,
and the filename of a font is the code page number.
Operation is simple, while viewing text of a foreign language,
press <F7> to launch CPIFNT to search a wanted code page font
from the current directory or from \CPI or from C:\CPI, the font
changes, a *.CPF name is displayed on the bottom line, press Enter
to accept and return to PG, ESC to abort, other keys will display
the next font name until no more fonts available.
CPIFNT is distributed under the GNU GPL version 2 in johnson.tmfc.net
@file -- response file|
a list of file PG get to view generated with the "DIR" command
e.g. "DIR c:\source\*.c /b/s /a-d > file"
then "PG @file" and navigate the files with C-PgUp/C-PgDn;
F9,F10 disabled with @file, to choose a new file, press Alt-f to
displays @file, move mouse pointer over a path, Alt-f loads a new file;
@file does not work with other arguments;
Cursor moves to a string found with search
Information in top/bottom status line relocated:
" PG --" removed; screen line number and total line number swapped location
"<top>" / "<end>" replace screen line number at BOF / EOF
Search result in bottom status line removed;
Show mouse cursor x-coord. in top status line;
Handle mouse user subroutine while shell out to DOS;
Alt-e changes VGA display to 25/28/50 lines
keep long wrapped word together in next line;
support unlimited file size;
bug fixed as a counter overruns;
support unlimited file size;
Mouse aids to begin a search|
place the mouse pointer over the word and press F4,
the word is stuffed into the search string, the search
string is 18 bytes only.
Note the mouse driver does not synchonize actual mouse pointer
without a move.
Input new path to read additional files
Press Alt-f to input a new file specification, note the
DOS conventional filename restriction rule. No long file name.
Add 5 filemarks for recall
the path of a file being viewed can be saved and later recalled
as user inputs new paths for additional files, key 6..0 under the
function keys stores the full path and topline as filemark,
Alt-6..0 recall the files saved and topline restored as well.
PG preassigns the first file to all filemarks.
Command line arguments
PG supports multiple command line arguments. Each argument is
a set of files can be access with F9 / F10 which corresponds
to proceeding and following set, page up / down will access all
files in a sequential fashion. The files input from Alt-F always
be the last set of files, and only one set of files allowed.
Invalid argument triggers error message.
Show column, line number at the bottom status line if search is OK
Plugin handles polluted IACA
Plugin receives parameters from IACA, if it is polluted,
the requested starting position > file size, that caused
plugin, when started as standalone, to abort.
In such cases, plugins will start from BOF instead.
Cursor missing as jump to and search result -- fixed|
Tracking starting line for multiple files viewing
Remove redundant coding -- move cursor
Speed up screen update, and reduce flickering
!long line breaking!
In extraoridinary situation, a very long line with no LF,
PG was unable to handle properly, logical lines of 256 columns
are inserted, say, a line of 600 bytes will be treated as 3 lines,
PG crashes with very long line -- fixed
PG supports file with 1024 x 1024 lines
PG garage bug -- fixed
PG shows curor at line after a jump to -- ok
PG exit plugin with the same invoking keys -- ok
SVTXT crashes with very long line -- fixed
SVTXT crashes with only CR,LF in stream file -- fixed
SVHEX discards unwanted lines in screen -- ok
25,28,50 lines video modes work fine and clean|
Returns more memory to system (uses 35K only)
Finds PG.MAN where PG.EXE located
Lower cases b=B, h=H, w=W, q=Q
displays panning offset if > 0
Plugins synchronize data line by line
(BAHCL) 22 Feb 2004 (PG 1.09)
Replace clone paths with spawnlp()
Display pancolumn in top line
New development platform Linux+DOSEMU+TurboC 2.01+NASM 0.98;|
Bug fix -- small file searching may cause screen to blur;
Fix unintent exit for multiple files;
Relocate keys for Next/Last file again, works now in DOSEMU 1.2.0;
Relocate keys for Jump (BS), search mode (F4), save file (F5);
Case sensitive search forward/backward (Shift-F3),(Shift-F4);
Jump to DOS Shell (Alt-D);
Quit PG (Q) and Esc;
Plugin for Hex view (H);
Plugin for wrap long line (W);
Set Bit 7 on/off (B);
(B) = uppercase B
(H) = uppercase H
(Q) = uppercase Q
(W) = uppercase W
(BS) = backspace
Able to get input from "gzip -c -d file.gz | pg" now;
Display panning between column 1..256 and right / left +- 30 columns;
Set cursor over found string;
Cloneable for plugin path and manual path, type
"PG /PLUGIN=C:\PATHNAME\" to clone plugin path
"PG /MANUAL=C:\PATHNAME\" to clone manual path
2 plugins are included: (SVHEX.ASM and SVTXT.ASM)
read pg.mak to see how to setup the plugin paths;
Plugins are standalone programs, may be used at command line,
type "type filename.txt | svhex" for a hex view and
type "svhex filename.txt is the same of above
type "type filename.txt | svtxt" for a warp view and
type "svtxt filename.txt is the same as above
Keys: Up, Down, Page up, Page down, Home, End, Esc
Bug fix -- reverse search key may cause program to crash;|
Switching Forward / Reverse search is smarter;
Search wraps around if BOF / EOF is hit;
Search result updates top of line;
Turbo charges infile loading time with block read assembly language routines.
Finally, PG breaks through the line number limitation,|
it handles file up to 262144 lines;
PG reads as many as 256 files in a single directory;
hidden bugs fixed;
PG 1.06 has overcome all obstacles left over in previous version.
gets rid of the evil PG.TMP and C:\TEMP;|
user's choice which drive to keep the screen images;
relocate keys for next file and previous file to make DOSEMU happy;
PG 1.05 was changed to use conventional memory to store its data.
it works perfectly for files line number < 5000;
PG 1.05 excludes certain files considered binary format with
extensions like BIN,COM,EXE,SYS,ZIP..., as these files are
not displayed properly with PG.
PG has been revamped drastically, please note:|
Migrate to Turbo C 2.01;
Change dynamic memory allocation to file handling infile line addresses;
Handle very large files > 134,024 lines tested ok;
Temporary file and save file are created in C:\TEMP;
Copy text from display screen to a savefile;
Saved screens appends in PG.SAV with an identifying message;
Add 'jump to' feature;
Add online help feature;
Mulitple file browsing;
PG remembers the starting line of a file in the file list;
Filename may contain '*' to ease typing;
Shows total lines in top status line;
Remove beeping sound;
Redefine and add several keyboard scan codes;
Assembly subroutines assembled by NASM;
Use int 10h to handle scrolling;
Add comments for global, local variables and functions;
User manual updated;
Include a Make file;
This file is changed to latest news on top;
PG 1.04 is an experimental version, some problems have to be solved later.
Search text from infile back and forth;
Move most asm subroutine to pgasm.asm;
This is the final version for DDS C compiler;
After version 1.03, PG will be migrated to Borland Turbo C 2.01
for these reasons:
1. conform to ANSI C standard
2. long integer support
3. better programming environment for development
4. easier to debug (not so true!)
5. extracted assembly subroutines may be usable by other programs
6. I failed to compile PG with an earlier version of Micro-C.
The version of DDS Micro-C version 3.22 I once downloaded disappears
in the internet, I doubt if Dave Dunfield has stopped offering
version 3.22 as a freeware.
So, after version 1.03, I'll stop using Micro-C to maintain PG.
- Update usage function
- Show usage if filename omitted
- Install file renamed to pg.man
- Improvement - Add 5 bookmarks
- View panning
- Fix enter key to scroll up 1 line
- Close open file on exit
- Move global #define statements to pg.h
- Convert #defined constants to upper case
- Source code indentation
Cleaned up the code so constants, structs, typedefs, .. are grouped
together. Also cleaned up comment style.
Updated the C++ comments so they are C comments now. Still to do: clean
up the indenting, release as 1.0
add tab processing. 8 chars for now. updated my email address in the code
set the default colors to be in mono mode, which is guaranteed to work on
all monitors, even mono displays.
set RETURN to scroll down one line, SPACE to scroll down one page, and
'Q' and 'q' to quit. These are all extensions.
started doing code cleanup, and put usage text in usage() function, instead
of leaving the text split from the function.
Also, moved the revision notes to this 'NEWS' file.
||95-02 to 95-04
BH 95.04.19 Fixed small bug in clreol
BH 95.04.18 Added scroll_[up & down] & clreol to get rid of flickering
BH 95.04.04 Read in whole file of line addrs first
BH 95.03.16 Revisions of memory scheme
BH 95.02.07 Begin Coding