
                           LxPic V7.1
           (c)2002 Stefan Peichl, Heidelberg, Germany
           http://home.t-online.de/home/stefan.peichl/
                eMail: stefan.peichl@t-online.de


LxPic is a very small, powerful and fast DOS picture viewer.
It has just 19 KB code and runs in 64 KB of memory on any 8086
compatible computer. It supports all screen modes from early
CGA up to the latest 2048x1536 QXGA True Color (32bit) screens. 

This makes LxPic ideal for use on the HP Palmtops, for which
it was originally designed. On Windows systems, LxPic runs
perfectly in a full screen DOS box or in a DOS box window.

LxPic processes BMP, PCX, JPG and GIF files of any kind.
BMP and PCX files may have 2, 4, 256 or True Colors (16 Mio).
JPG files may have 256 gray scales or True Colors. GIF files
may have Version 87a or 89a (including multi images) with up
to 256 colors.

LxPic has a low, medium and high {JKL} resolution list mode,
to preview more than one picture as thumbnails on one screen.
Dependent on your selected display mode, up to 361 thumbnails
are displayed on one screen. See LIST MODE section for further
information about this feature.

LxPic needs no configuration. It's default startup mode should
work for most situations. However you may override every
default setting through an appropriate command line switch.
See the COMMAND LINE SWITCHES section of this documentation
for further information.

LxPic recognizes your display adapter and sets the display to
the best standard modes. Use {F2} to cycle through these VGA
modes. {Shift F2} cycles backwards.

If your computer is equipped with a VESA BIOS which supports
direct hardware access, LxPic starts in the 640x480x24 VGA
mode. Use {F3} to cycle through the higher resolution Super
VGA modes. {Shift F3} cycles backwards.

It is very likely, that your graphics card supports more screen
modes than your monitor does. Press F3 to skip these modes.

LxPic supports the following screen modes:

 MODE | WIDTHxHEIGHTxBIT | MEM | BIOS | THUMBNAILS | CMD-LINE
 -----+------------------+-----+------+------------+-----------
*HP95 |  240 x  128 x  1 |  4K |  20h |   2/ 4/ 6  | LXPIC /0
  CGA |  640 x  200 x  1 | 16K |  06h |   3/ 6/15  | LXPIC /1
  VGA |  320 x  200 x  8 | 64K |  13h |   4/ 9/12  | LXPIC /2
  EGA |  640 x  350 x  4 | 64K |  10h |   9/16/36  | LXPIC /3
  VGA |  640 x  480 x  4 |256K |  12h |   9/16/36  | LXPIC /4
  VGA |  800 x  600 x  4 |256K |  6Ah |   9/16/49  | LXPIC /5
 -----+------------------+-----+------+------------+-----------
  VGA |  640 x  480 x  8 | MB | 101h |   9/16/36  | LXPIC /6
  VGA |  640 x  480 x 16 | 1MB | 111h |   9/16/36  | LXPIC /7
  VGA |  640 x  480 x 24 | 1MB | 112h |   9/16/36  | LXPIC /8
 -----+------------------+-----+------+------------+-----------
 SVGA |  800 x  600 x  8 | MB | 103h |   9/16/49  | LXPIC /9
 SVGA |  800 x  600 x 16 | 1MB | 114h |   9/16/49  | LXPIC /10
 SVGA |  800 x  600 x 24 | 2MB | 115h |   9/16/49  | LXPIC /11
 -----+------------------+-----+------+------------+-----------
  XGA | 1024 x  768 x  8 | 1MB | 105h |   9/36/81  | LXPIC /12
  XGA | 1024 x  768 x 16 | 2MB | 117h |   9/36/81  | LXPIC /13
  XGA | 1024 x  768 x 24 | 4MB | 118h |   9/36/81  | LXPIC /14
 -----+------------------+-----+------+------------+-----------
 SXGA | 1280 x 1024 x  8 | 2MB | 107h |  25/56/144 | LXPIC /15
 SXGA | 1280 x 1024 x 16 | 4MB | 11Ah |  25/56/144 | LXPIC /16
 SXGA | 1280 x 1024 x 24 | 4MB | 11Bh |  25/56/144 | LXPIC /17
 -----+------------------+-----+------+------------+-----------
 UXGA | 1600 x 1200 x  8 | 2MB | var. |  36/81/225 | LXPIC /18
 UXGA | 1600 x 1200 x 16 | 4MB | var. |  36/81/225 | LXPIC /19
 UXGA | 1600 x 1200 x 32 | 8MB | var. |  36/81/225 | LXPIC /20
 -----+------------------+-----+------+------------+-----------
 QXGA | 2048 x 1536 x  8 | 3MB | var. | 36/144/361 | LXPIC /21
 QXGA | 2048 x 1536 x 16 | 6MB | var. | 36/144/361 | LXPIC /22
 QXGA | 2048 x 1536 x 32 |12MB | var. | 36/144/361 | LXPIC /23
 --------------------------------------------------------------
*HP Palmtop only

Run LXPIC /* to get a list of all available LxPic screen modes
of your graphics card.

If you don't want LxPic to autodetect the video mode, you may
use the above listed command line switches to force LxPic to
use the desired mode at startup. This is important, if you want
to run LxPic in a window under Windows. All non VESA modes
should work in Win95 windows but only CGA works under Win3.11
Indeed you may use all modes in full screen DOS boxes.

If your screen remains blank after startup or displays
unexpected results, press {F2} to access the standard VGA
modes. See TECHNICAL for further information about VESA.

If a picture has more colors than the actual screen mode
allows, the colors are reduced and dithered. If you don't
want to see colors, you may always switch colors off with
the {C}olor toggle key. If you don't want to see grayscales,
you may always enable B&W display using the {W} toggle key.

LxPic does not support printing, but you may use the DOS Print
Screen function to copy the actual screen to a printer if you
have the DOS graphics driver GRAPHICS.COM installed.

The special HP Palmtop resize command {H} corrects the dispro-
portion of the Palmtops pixel ratio and of the colorful VGA
320x200x8 mode.

LxPic has an interface to use it as a 'subroutine' in other
programs. See PROGRAMMERS INTERFACE section of this document-
ation for further information.

     *The Graphics Interchange Format(c) is the Copyright
      property of CompuServe Incorporated. GIF(sm) is a
      Service Mark property of CompuServe Incorporated.


                        REVISION HISTORY


Version 7.1  -DOS shell works now for all Windows versions
(10-MAR-02)  -High and True color bug fixed for some VESAs
             -Added Windows NT/2000/XP under "HOW TO USE LXPIC"

Version 7.0  -High (64K) and True color (16.7M) screen modes
(02-FEB-02)  -VBE3 (Vesa Bios Extension 3.0) compatible
             -Improved JPEG display quality
             -Improved JPEG VESA auto zoom (100% screen fit)
             -All JPEG subsamlings supported in VESA modes
             -16 bit dither for true color JPEG in 64K modes  
             -Multi image GIF improved and running endless 
             -GIF transparent color supported
             -New 800x600x4 VGA mode (Command line switch /5)
             -F5 scans all drives from Z-A for available images
              (Command line switch /!)
             -Shift F5 scans all drives from A-Z
             -ESC skips one drive during drive scans
             -Ctrl-C exits LxPic immediately from drive scans
             -{A} autozooms only images bigger than the screen
             -{a} autozooms all images
             -{#} toggles between best and startup screen mode
             -/# starts LxPic in the best available screen mode
             -/* displays all available screen modes   
             -TAB shells into the directory of the actual image
             -Alt-B inverts screen background color
              (Command line switch /b)
             -Save screen as B&W PCX moved from F5 to Shift F4
             -Alt F4 saves the image as B&W Palmtop ICN file
             -BS key displays previous image (same as {P} key)
             -Load time displayed in the File Info Box
             -Picture date displayed in the File Info Box
             -BitBlt support on the HP Palmtop
             -Build in Vesa character generator
             -Alt-6 toggles between 1024x768 and 1024x600 pixel
              resolution (useful for Toshiba Portege 300CT) 
             -Alt-A (Art) omits resetting the VESA screen
             -Alt-R Raster zoom in for JPEG in VESA modes
             -Alt-G multi image GIF background toggle
             -F9 UXGA VESA mode enable/disable toggle
             -Rename {N} works now under Windows
             -No more Casio CAM and Kodak IMG support
 
Version 6.4  -Support of lynx *.JPE files 
(21-APR-00)

Version 6.3  -JPEG bug fixed concerning Kodak DC260
(05-DEC-99)

Version 6.2  -Omnibook DEL key bug fixed
(08-MAR-99)  -Limited support of Casio CAM and Kodak IMG format

Version 6.1  -Complete command line control of LxPic
(15-APR-98)  -Command line conversion to B&W PCX with /O or /@
             -{S}ubdirectory Scan available from within LxPic...
             -...therefore Slide Show key replacement {Y} 
             -Scan indicator '' in front of the filename
             -{Q}uit now leaves picture on the screen
             -Default palmtop startup mode reset to B&W
             -Programmers Interface improvements for HV

Version 6.0  -Low, medium, high resolution list modes {J,K,L}
(06-DEC-97)  -640x200x4 grayscale CGA mode (Palmtop only)
             -Grayscale/B&W toggle key {W} added on the Palmtop
             -Save CGA thumbnail screen as B&W PCX file {F5}
             -Gamma correction added {6,9}
             -Better text color selection
             -Low resolution VESA startup mode

Version 5.1  -Multi image (animated) GIF support
(06-OCT-97)  -Space bar acts as 'single step' in animated GIFs
             -File name toggle key {X} added
             -Pixel aspect ratio now from 0.5 - 1.4
              (useful for converted CAM files)
             -Zoom factors 16 and 32 added
             -Compression and Frame entry in file info box
             -Correct display of SONY JPEG files
             -F4 (Save as B&W PCX) dither bug fixed

Version 5.0  -Color reduction and color dither
(14-SEP-97)  -JPEG 'extended sequential DCT' support (SOF1)
             -JPEG 'progressive DCT' support (SOF2)
              (only DC coefficients are displayed)
             -JPEG application segment processing toggle {F10}
             -Start up with best possible resolution

Version 4.2  -Programmers interface adaptations for LxMap
(17-JUN-97)  -Minor improvements

Version 4.1  -Improved VESA support (direct hardware access)
(22-MAY-97)  -{Alt F3} toggles SVGA hardware/VESA pixel output
             -{U}pside down command added
             -No more 'zoom in' restrictions concerning width
             -Zoom now keeps track of the image center
             -Programmers Interface adjustments
             -CAM2JPG now also supports CASIO QV-100 CAM format
             -Intel MMX support

Version 4.0  -VGA, EGA Color/Greyscale display added {F2}
(24-APR-97)  -VESA SVGA 256 color mode pixel output added {F3}
             -Mouse support (see COMMAND section of this DOC)
             -{C}olor display on/off toggle key added
             -B&{W}   display on/off toggle key added
             -{E}rase screen toggle key replaces old {C} key 
             -{F7} convert B&W to Grey  replaces old {F3} key
             -Show color palette key {F8} added

Version 3.5  -Interlaced GIF support
(13-MAR-97)  -Cursor keys now move 1/2 screens
             -Page keys now always move 8 pixel rows/columns
             -Space{BAR} interrupts output
             -{Q}uit command added
             -Palmtop {Menu} key added to work like Help {F1}
             -Commands from within the Help window are now
              immediately executed
             -More logical pixel aspect ratio selection
             -Stepwidth for contrast etc. reduced from 8 to 4

Version 3.4  -Rename/Move command {N} added
(26-JAN-97)  -Select pixel aspect ratio command {F6} added

Version 3.3  -Correct display of Fujifilm DS-7 JPEG files
(07-JAN-97)

Version 3.2  -Version 3.1 bug fixed
(07-DEC-96)

Version 3.1  -More speed: Output interrupted at any command
(03-DEC-96)

Version 3.0  -JPEG 'baseline sequential DCT' support (SOF0)
(29-NOV-96)  -/S switch to scan drives or subdirectorys

Version 2.3  -Zoom out 1:8 and zoom in 8:1 added
(01-NOV-96)  -Programmers Interface improvements

Version 2.2  -Intrasegment call added to Programmers Interface
(22-OCT-96)

Version 2.1  -Programmers Interface added
(22-SEP-96)

Version 2.0  -BMP,GIF,PCX,ICN of any size and dimension
(31-AUG-96)  -VGA,EGA,CGA,HP95 support
             -Dither for color pictures
             -Scrolling
             -Zoom In/Out
             -Edit functions
             -HP resize mode
             -B&W PCX conversion

Version 1.0  -First release: Only B&W BMP and PCX files
(24-APR-96)


New versions of LxPic will be available on the Internet under:

      http://home.t-online.de/home/stefan.peichl/lxpic.zip


                  MINIMUM SYSTEM REQUIREMENTS


- Processor: 8088
- DOS      : 2.11
- Adapter  : CGA
- Memory   : 64 KB
- Storage  : 19 KB


                        HOW TO USE LXPIC


LxPic needs no installation. If called without parameters,
LxPic searches the current directory for all files with the
extension BMP,GIF,JPG,JPE,PCX or ICN and displays them in the
order found in the directory. If no files are found, LxPix
exits and displays the help screen.

LxPic has no file select feature, but it behaves like the DIR
command of DOS and accepts the /S command line switch to scan
all subdirectories too. Which files are displayed depends
on how you name them and where you keep them. To display a
specific picture, use its full or relative pathname as
parameter for LxPic. The wildcards * and ? are allowed in the
filename to display a group of pictures with similar names.

EXAMPLES

  LXPIC
displays all pictures in the current directory

  LXPIC/!
displays all pictures on all drives from Z: to A:

  LXPIC/S
displays all pictures in the current directory and its
subdirectories

  LXPIC DEMO.*
displays for example DEMO.PCX, DEMO.GIF and DEMO.JPG in the
current directory

  LXPIC \PIC\V?.PCX
displays for example V1.PCX and V2.PCX in the directory PIC of
the current drive

  LXPIC D:/SLV
displays all pictures on your D: drive as thumbnails without
any further input from you. Very useful for CDROMs

  LXPIC C:\DEMO.GIF/SF
searches your whole C: drive for the file DEMO.GIF and
displays it if present with the file info box


If you use the scan switch /S from the command line or the
equivalent command {S} from within LxPic, the program exits
after all files have been displayed. Without /S, LxPic loops
endlessly until you press ESC. If you want to go back one
picture within a subdirectory you reached in a scan, first
switch scan off with the {S} toggle key. Later on you may
switch scan on again to reach further subdirectories.

I recommend to switch filenames ON with {X} during a scan in
order to not get lost on large drives.

To always start LxPic in a preferred screen mode (resolution)
create a batch file P.BAT which contains one single line:

LXPIC %1 /12

In this example, LxPic is started in the 12=1024x768x16 mode,
if you call P.BAT. You may add any command line switches or
file name to P.BAT as you would do with generic LXPIC.

Use LXPIC /* to find out all available screen modes of your
system, then select the one you prefer and put it into P.BAT


WINDOWS 3.x/95/98

If you want to use LxPic under Windows, you have the choice
to run it in a full screen DOS box or in a window. In a full
screen DOS box, you have access to all video modes, your
hardware supports. If you want to run LxPic in a window,
you are restricted in the video modes and you have to start
LxPic with an appropriate command line video mode switch:

  Windows 3.x  : LXPIC/1  (CGA only)
  Windows 95/98: LXPIC/4  (VGA or worse with /3,/2,/1)

You may also create a PIF file to start LxPic from the program
manager. See your Windows documentation for the details on how
to create a PIF file for DOS programs.


WINDOWS NT/2000/XP

Disable loading of DOSX.EXE to get full access to VESA.
Tamas Feher suggests to make a custom startup file for LxPic:

Copy \windows_nt_directory\system32\autoexec.nt to LxPic's
directory, rename it to lxpicenv.nt, edit it to comment out
the dosx.exe line, then save the file. Right click lxpic.com,
properties, program tab, press "Windows NT" button, specify
.\lxpicenv.nt instead of autoexec.nt, OK to close, OK again.

You can now start LxPic from Windows Explorer or any other
file manager with no need to manually open and maximize a DOS
box for LxPic use with VESA.


                   KEYBOARD AND MOUSE COMMANDS


The Help key {F1} pops up a window with all command keys.
Command line switches are marked with the  sign.

            Ŀ
            v7.1 (c)2002 stefan.peichl@t-online.de
            LXPIC [file.BMP|GIF|JPG|PCX][/Switch]
            * ? Wildcards ok,=Command Line Switch
            Ĵ
            JKLListMode On/OffF1  Help Menu   ?
            FX FileInfo On/OffF2  VGA  ... 0- 5
            S  SubDirSc On/OffF3  VESA ... 6-23
            H  HPResize On/OffF4  Save as PCX O
            E  EraseScr On/OffF5  Scan Drives !
            I  InvtPict On/OffESC Exit (or Q) Q
            U  UpsiDown On/OffTAB Path DOS Shell
            Aa AutoZoom On/OffCOLOR/GREYĴ
            T  TextZoom On/OffC  Col Dsp On/Off
            +=-ZoomPict In/OutW  B&W Dsp On/Off
            YV Slid/Vid On/OffD  Dither  On/Off
            > < Slid/Vid Fa/SloRGB RGB Col Select
            BAR Slid/Vid SuspndM   Mix RGB Colors
            DEL Delete  Picture/   Reset   Values
            N   Rename  Picture6 9 Gamma   Gx- +
            P   Prev    Picture7 8 Shadows    - +
            CR  Next    Picture4 5 Highlights - +
            PG..Move  8 Row/Col1 2 Contrast   - +
            CU..Move   Screens0 . Brightness - +
            


Press {F1} again or press {ESC} to close the Help window. If
you press a valid command key, the Help window is closed, and
the corresponding action is immediately performed.

Almost all commands are single key strokes and I tried to
assign meaningful keys to the commands. The action taken upon
a command is valid for the actual and all following images.
If you have, for example, a sequence of pictures with little
contrast, you have to adjust contrast only once.

You may enter a command at any time. The command is immediately
executed, interrupting the actual output. You don't have to
wait with command input until the picture is completely
displayed.

If you hear a key click, the pressed key had no function at all
or did not apply to the actual picture type, or you reached the
end of a range.

Use the cursor keys or the mouse to scroll an image. Cursor
keys scroll the image by 1/2 screen in the indicated direction.
Page keys (Palmtop: Fn+cursor) scroll the image by 8 columns or
8 lines in the indicated direction. I exchanged the meaning of
these keys for single key strokes on the Palmtop. I tried to
keep the x/y offset in consecutive pictures to allow you zoom-
ing the same position in a slideshow.


MOUSE INPUT

LxPic automatically enables mouse support if it finds a mouse
driver installed and a mouse connected. Mouse and keyboard may
be used concurrently. The supported mouse functions are:

click left                    Next picture

click right                   Previous picture

press left  + click right     Zoom in

press right + click left      Zoom out

press left  + move mouse      Move picture, as if you put your
                              hand on the picture. Move the
                              mouse slowly for best results!


KEYBOARD INPUT

L   High resolution thumbnail mode.
    See LIST MODE section for further information

K   Medium resolution thumbnail mode

J   Low resolution thumbnail mode

F   Display file and parameter information box:

     C:\DEMO.GIF    Drive:\Path\Filename
    Ŀ
    Size    1244 Filesize   : in bytes or KB
    Date  14DE98 Date       : DD MM YY  
    Wide     344 Pixelwidth : actual representation
    High      50 Pixelheight: actual representation
    Deep       4 Colordepth : 1|2|3|4|5|6|7|8|24 (in bits)
    Type   COLOR Picturetype: COLOR | GREY | B&W
    Comprs   LZW Compression: SOFx_YCbCr|LZW|RLE|NONE
    Frames     1 Framenumber: usually 1 except in videos
    Loaded  0.05 Load Time  : in 1/100 seconds  
    X_Offs     0 Pixelcolumn: of upper left displayed corner
    Y_Offs     0 Pixelline  : of upper left displayed corner
    Zoom %   100 Zoom in/out: 3% - 3200% or auto zoom rate
    B&wDsp    ON B&W display: ON | OFF
    ColDsp   OFF Col display: ON | OFF
    Dither    ON Dither mode: ON | OFF
    GamCor     0 Gamma      : 0=unchanged,   5=max, -  5=min
    Shadow     0 Shadow     : 0=unchanged, 127=max, -127=min
    Hlight     0 Highlights : 0=unchanged, 127=max, -127=min
    Contra     0 Contrast   : 0=unchanged, 127=max, -127=min
    Bright     0 Brightness : 0=unchanged, 127=max, -127=min
    Ĵ
      6402001   Screenmode : width x height x bitdepth
    

X   Display only file name in the upper left corner.

S   Subdirectory scan toggle key. If subdirectory scan is ON,
    the arrow '' appears in front of the filename. 

H   Resizes the picture to a pixel aspect ratio of 1:0.8.
    A picture with 640x240 pixel is resized to 640x200 pixel
    for example. The actual aspect ratio is displayed in the
    file info box. HP resize is off by default. See also
    the more general pixel aspect ratio command {F6}.

E   Erase screen between two pictures (ON by default)

I   Invert screen. LxPic inverts pictures by default,
    if running on a HP Palmtop

a-B Invert screen background (default is black)

Z   Center picture in the middle of the screen (ON by default)

U   Display picture upside down and mirrored. This has no
    effect on the save commands {F4} and {Shift F4}.

a   Auto zoom. If switched on, the zoom mode is selected,
    which displays most of the picture. Auto zoom is OFF by
    default. If switched on, you see the letter 'a' in the
    'Zoom' entry of the file info.

A   Auto zoom. Fits only pictures bigger than the screen.

T   Text zoom out mode. Zooming out for B&W images is
    implemented by default as 'drop two, keep two' to prevent
    moire effects from previously dithered pictures. This
    command toggles zoom out mode to 'drop one, keep one',
    which is better for viewing B&W pictures including text.
    If switched on, you see the letter 'T' in the 'Zoom' entry
    of the file info box. Text zoom is OFF by default and only
    available for B&W pictures.

+   Zoom in to 200%, 400%, 800%, 1600% and 3200%
    Use Alt-R to toggle between normal zoom and raster zoom.
    Raster zoom only works for JPEGs in VESA screen modes and
    yields a subjectively better (but darker) result.

=   Reset Zoom to 100% and start display with the upper left
    corner set to 0,0. (Use also {*} on desktops)

-   Zoom out to 50%, 25%, 12%, 6% and 3%

#   toggle between best and startup screen mode

Y   Perform a slideshow

V   Perform a video. Same as slideshow, but at maximal speed
    without erase screen between pictures. Multi image Gif
    files are also displayed at maximal speed, giving you the
    illusion of a video.

>   Slideshow/Video faster up to maximal speed

<   Slideshow/Video slower

BAR Enter 'single step' mode for Slideshow/Video/List or multi
    image GIFs. Press Spacebar again for next picture/frame.
    Exit single step mode with {CR} or {P}.
    
DEL Delete the actual displayed picture. You have to confirm
    before the file is deleted

N   Rename/Move picture filename. You may not move the file
    to a different drive because this would be a 'copy',
    which is not supported. After the rename, the next picture
    is displayed.

P   Display previous picture, as found in the directory. This
    command also changes the direction for Slide/Video/List.
    You cannot use it to run a video backwards.

BS  same as P

CR  Display next picture, as found in the directory. This
    command resets the direction for Slide/Video/List to
    forward.

TAB Shells to DOS and uses the directory of the last displayed
    image. This command is useful during a scan, if you want
    to see which other files are in the directory of the actual
    image. You may change the directory and drive in the DOS
    shell, but upon exiting from the shell LxPic continues at
    the same spot where it was interrupted.

    You may call a second incarnation of LxPic in the shell,
    but you should not shell out to DOS again from this second
    incarnation. Rather close LxPic in the shell and exit from
    the shell to continue with the first call of the program. 

ESC Exit LxPic. If you exit LxPic with {^C}, an errorlevel
    of 1 is returned, which is useful in batch files.

Q   Quit LxPic and leave the picture on the screen.

F1  Display Help window. (Also {Menu} and {?} on the Palmtop)

F2  Cycle through all standard VGA modes, if supported by
    your hardware. Use {Shift F2} to cycle backwards.

F3  Cycle through all VESA SVGA modes, if supported by your
    BIOS and hardware. Use {Shift F3} to cycle backwards.

F4  Save the whole picture -as you see it- to a B&W PCX file.
    You are asked for a filename. You must use a different
    filename from the original name and you have to add the
    extension PCX. The width of the saved picture is restricted
    to 1280 pixels. Exceeding pixels are cut off. BMP pictures
    end mirrored upside down. Use the {U}pside down command for
    correct display. The {U}pside down command has no effect on
    the saved picture! To save a frame of a multi image GIF
    file, use {Spacebar} to select the frame.

F4  Shifted: Same as {F4}, but only the visible part of the
    picture is saved. If you want to select an even smaller
    part on the Palmtop, switch with {F2} to the HP95 mode
    and save from there. To invert a Palmtop topcard, load it,
    press {I} and then {F4} to save the inverted topcard.
    Also use this command to save a CGA thumbnail screen to a
    PCX file.

F4  Alt: Save the actual image as Palmtop ICN file. The width
    of the image has to be a multiple of 8.
     
F5  Scans all drives from Z: to A: and displays all images
    found. Press Shift F5 to scan from A: to Z:. ESC skips
    one drive during a scan. Ctrl-C exits LxPic from a scan.
    Use Spacebar for single step processing, press Enter or
    F5 again to continue the drive scan. 

F6  Selects pixel aspect ratios in the range 1:0.5 to 1:1.4
    Enter the number after the decimal point (= 0-9).
    Useful for distorted camera pictures and CGA monitors.
    The HP resize command {H} is the shortcut of {F6}{8}.

F7  Converts B&W picture to a 8 bit greyscale picture. This
    enables you to edit a B&W picture with the commands that
    are only available for color or greyscale pictures.

F8  Show color palette in the upper right corner. Only works
    on EGA or better. The palette length depends on the screen
    mode and is 16 or 256. Show palette is OFF by default.

F9  Supress non standard VESA modes with >= 1600 pixels width.

F10 JPEG application segments may contain 'baseline' copies of
    'progressive' pictures. If processing of application
    segments is turned on, the (better quality) 'baseline'
    picture is displayed. If turned off, the 'progressive'
    picture is displayed. Processing is OFF by default.

COLOR PICTURES ONLY

The following commands are only available if a picture with
more than two colors is displayed.

C   Toggles between greyscale and color display.
    Color display is ON by default.

W   Toggles between B&W and color/greyscale display.
    B&W display is OFF by default.

D   Switch Dithermode OFF/ON. (ON by default).

R   Display Red   part of the picture only

G   Display Green part of the picture only

B   Display Blue  part of the picture only

M   Mix Red, Green and Blue to Grey = 30%R + 59%G + 11%B

/   Reset Shadow, Highlight, Contrast, Brightness and Gamma
    to 0. Set color to RGB. Switch dither on. Switch color
    display on. Switch B&W display off.

6   Decrease Gamma:      nonlinear brightness decrease

9   Increase Gamma:      nonlinear brightness increase

7   Decrease Shadows:    Colors <127 move towards Grey

8   Increase Shadows:    Colors <127 move towards Black

4   Decrease Highlights: Colors >127 move towards Grey

5   Increase Highlights: Colors >127 move towards White

1   Decrease Contrast:   All colors  move towards Grey

2   Increase Contrast:   Colors <127 move towards Black
                         Colors >127 move towards White

0   Decrease Brightness: All colors  move towards Black

.   Increase Brightness: All colors  move towards White
    (use also {,} on desktops)


                     COMMAND LINE SWITCHES


Almost all command line switches are identical to their online
counterparts. Adding them to the command line is identical to
pressing the correspondent key while LxPic is running. Changes
had to be made for:

- Video mode selection  /0-23
- Save as B&W PCX file  /O
- Save screen only      /@
- Pixel aspect ratio    /Rx
- Gamma correction      /Gx

All switches except for 'A' and 'a' are not case sensitive
and may be used in any order. The separator '/' is only needed
once to separate the switches from the file names.

Multiple use of the same switch is identical to single use
except for the zoom switches + and -, which repeatedly zoom
the picture. Invalid switches are ignored. This allows you
to build switch 'words' for better recall.


SINGLE CHARACTER COMMAND LINE SWITCHES

  ?  Display help screen and exit
  *  Display all available LxPic screen modes of your system
  #  Start LxPic in the best available screen mode
  0..23: Start with the corresponding screen mode.
     See INTRODUCTION for a list of all screen modes.
  a  Auto zoom ON (all images)
  A  Auto zoom ON (big images)
  B  White screen background
  C  Color display OFF
  D  Dither OFF
  E  Erase screen between pictures OFF
  F  File info box ON
  H  HPresize ON
  I  Invert screen ON
  J  Low    resolution thumbnails ON
  K  Medium resolution thumbnails ON
  L  High   resolution thumbnails ON
  O  Output image  as B&W PCX file under the same name
  @  Output screen as B&W PCX file under the same name
  Q  Quit and leave last image on screen
  S  Scan all subdirectories too
  !  Scan all drives from Z: to A:
  T  Text zoom mode ON (use for fax viewing)
  U  Upside down display ON
  V  Video mode ON
  W  B&W display ON (Palmtop: OFF)
  X  File names ON
  Y  Slide show ON
  Z  Center picture OFF
  +  Zoom in  1x
  -  Zoom out 1x


DOUBLE CHARACTER COMMAND LINE SWITCHES

  Gx Gamma correction   (x=1-9)
  Rx Pixel aspect ratio (x=1-9)


CONVERTING FILES FROM THE COMMAND LINE

The /O and /@ switches are very powerful if you want to convert
a series of pictures to the fast B&W PCX format. The pictures
are stored under the same name in the same directory with the
extension PCX.

This process runs without displaying the pictures. You may add
other command line switches to zoom, gamma correct and resize
the resulting PCX file. You may even convert all pictures of a
whole drive with just one command. There is one drawback: You
cannot use the /O  and /@ switches to convert color PCX files
to B&W PCX files, because this would overwrite your original
file. Use the online function key conversion with another
filename in this case.


EXAMPLES

  LXPIC C:\QV100\*.JPG/O-HG2
converts /O all JPEG files in the directory C:\QV100 to B&W
PCX files at half size /- for the palmtop screen /H with a
gamma correction of 2 /G2

  LXPIC C:\QV100\*.PCX/J
displays the converted files as low resolution thumbnails /J

  LXPIC/SAV
shows all pictures in the current directory and it's
subdirectories /S auto zoomed /A at maximal speed /V

  LXPIC *.GIF/YQ
shows all GIF's in the current directory in a slide show /Y
and quits leaving the last image on the screen /Q

  LXPIC D:/SL
shows all pictures /S on your D: drive (CDROM) as thumbnails /L
within seconds. Using a standard picture viewer under Windows,
it would take hours of mouse clicking to do the same job.


The switches are very useful for batch programming of demos.
Especially the /Q switch allows to exit LxPic without any
user input after a series of pictures has been displayed.
Use /VQ to exit after the display of a single picture without
any user input.

NOTE: If you use the /Q switch, the screen mode is changed
      to graphics. This may cause problems, if you want to
      run programs in text mode afterwards. Run LXPIC/* to
      resets your screen to the default 80x25 CGA text mode.

I wish to thank Tamas Feher, who convinced me of the usefulness
of command line switches and encouraged me to implement high
and true color screen modes for perfect JPEG viewing.

And many thanks to Steve Novosad for compatibility improvements
concerning the various Windows systems, VESA implementations
and GIF interpretation.


                           LIST MODE


You enter and exit List mode by simply pressing one of the
three keys {J,K,L}. If you enter list mode, the next image
in the directory will be the first picture displayed as a
thumbnail. You may exit list mode at any time. The last
displayed thumbnail becomes the actual picture.

If one screen is filled with thumbnails, press {Enter} to see
the next screen. LxPic stops output if all pictures of a
directory have been displayed as thumbnails. If you run LxPic
in scan mode (command line switch /S), LxPic stops output after
the last image of all subdirectories has been displayed. LxPic
then beeps to signal the end. Press any key to exit LxPic.

By default, LxPic displays filenames in list mode. Press {X} to
suppress filename output.

During list mode, you may always press {Space Bar} to enter
single step mode. LxPic then stops after every thumbnail. You
may now press one of the three keys {J,K,L} to exit list mode
and view the last thumbnail in full screen mode. Use this
feature to select a picture from the list.

You may also press TAB to shell to DOS. In the DOS shell you
may call LxPic again to view one specific image. If you exit
from the DOS shell, list mode continues with the next image.
 
During list mode, almost all command keys are available, except
those keys that require input from you, and those keys, that
perform output, like the help key {F1} and the {F}ile info key.
All other commands may be entered at any time. You may for
example press {P} to list backwards or switch dither off to
have sharper thumbnails.

For display, list mode uses the actual configuration as set by
you before entering list mode (pixel aspect ratio, contrast,
brightness etc.).

Under CGA screen mode, you may save a thumbnail screen as a
B&W PCX file with {F5}. This is useful for creating archives
from digital camera pictures. On the Palmtop, thumbnails look
nicer in the 4 grayscale mode. Thumbnails, saved in the 4 gray-
scale mode, may also be viewed in this mode. In every other
screen mode, you have to use a screen capture TSR utility to
perform this task.


                         PALMTOP ADVICE


4 GRAYSCALE CGA

I implemented a 640x200x2 grayscale CGA mode on the HP Palmtop
by reprogramming the display controller. You activate this mode
by pressing the {W} key once. As long as you only view B&W
pictures you will remark no difference. The new mode is only
activated for color and grayscale pictures. You may have to
increase your displays contrast by pressing {On+}. The drawback
of this mode is, that text output is blurred. If you don't like
this mode, simply press the {W} toggle key again to enable B&W
display.

On some speed upgraded Palmtops, the 4 grayscale display may
flicker. This is because of some clock drivers, constantly
resetting the frame rate. You may replace your clock driver
through DSPEED.COM available on my homepage.


STORAGE

If you are concerned about little storage capacity, JPEG will
be your preferred picture format on the Palmtop. But if you
want to have output speed, B&W PCX files have the best speed/
size ratio. In other words, it makes no sense to keep BMP, GIF
or color PCX files on your Palmtop.

To convert color pictures to the speedy B&W PCX format, proceed
as follows:

- Press {H} to have the exact width/height proportions
- Adjust contrast, brightness, shadow, highlight
- Zoom in/out, if needed
- Press {F4} to save the whole image or
- Press {Shift F4} to save only the visible part of the image.
  If you want to select a smaller part than the HP200 screen,
  use {F2} to switch to the HP95 mode and make your selection
  in the HP95 window and press {Shift F4} in the HP95 mode to
  save this smaller part only.
- Delete the original color picture.

If you have a series of pictures of the same quality (source),
you may also convert all pictures together from the command
line. See COMMAND LINE SWITCHES section for details.

I do not recommend to use B&W GIF files, because GIF's LZW
decoding is slow compared to PCX's RLE decoding. The slightly
smaller B&W GIF file size does not compensate for this
drawback.


                      JPEG ON THE PALMTOP


You have to understand some basics of JPEG in order to use it
most effectively on the Palmtop. This applies only if you have
influence on the JPEG pictures you want to display, that is,
if you have a software to produce the (or convert to the) JPEG
format.

The LxPic implementation of JPEG supports the baseline and
progressive (DC values only) mode of operation. These modes are
lossy, that is, when the JPEG picture is created, the informa-
tion of the original image is reduced to save storage space.
The amount of information that is lost may be determined by
you. Before saving a JPEG file, a good software asks you for a
quality factor. You may go down to low quality and still have
a good picture on the palmtop, because most of the quality is
lost anyway in the B&W representation on the Palmtop.

JPEG supports grayscale and True Color images. True Color is
represented by luminance and chromatic values instead of red,
green and blue components. Furthermore, the luminance component
may be more weighted than the chromatic component of a picture,
again in order to save space. The luminance component of a JPEG
image is nothing else than its grayscale representation and
grayscale JPEG images only have the luminance component. LxPic
extracts this luminance component and displays it. The
chromatic components are ignored on the Palmtop. Hence you
loose no information if you use only greyscale JPEG, but you
save space.

A True Color JPEG image with low quality may have a compress-
ion rate of 0.2 bit/pixel, which is about 4K for a full screen
CGA image. The same BMP image needs 24 bit/pixel, which is 120
times bigger. Hence you save about 99% of storage capacity and
loose only little quality. Compression rates with greyscale
JPEGs are even better. Compared to B&W PCX images, which use
1 bit/pixel, you still need only 20% of storage space.

LxPic performs best with low quality greyscale JPEG images,
which also produce the smallest files. The output speed is
highly correlated with the quality, because the better the
quality, the more time consuming calculation has to be done
in the inverse discrete cosine transform (IDCT).


                           TECHNICAL


LxPic uses information provided by the VESA BIOS to access the
hardware directly for better performance. Your VESA BIOS must
provide a pointer to a 'bank switch subroutine' and must use a
64KB memory window. If this is not the case, LxPic starts in
the standard VGA mode.

According to VBE3 specification, VESA modes are no longer
assumed to have fixed values. They are auto detected instead.

Color reduction to 256 or 16 colors is done by using a very
fast 'nearest color' algorithm based on a stuctured palette.

The dither mode uses modified Floyd-Steinberg error diffusion,
where the color error of a pixel is distributed to the
adjacent pixels.

Grey values are build from 30% Red + 59% Green + 11% Blue.
This takes into account the luminescence of the colors instead
of simply calculating Grey as R+G+B/3. A Grey value of 0 means
Black, a Grey value of 127 means Grey and a Grey value of 255
means White.

The inverse discrete cosine transform (IDCT) of JPEG uses an
algorithm with only 4 multiplications, which I developed to
make things go at some speed on the Palmtop's 80186.

LxPic does not use internal bitmap representation because of
restricted memory. It decodes directly to the screen via a line
buffer. Any action leads to a completely new decoding of the
picture.

LxPic is developed on a HP200LX. It is written in Assembler.
This language still exists and tends to produce small and quick
code.

LxPic is also a demonstration of what can be done in graphics
with 19KB code in 64KB memory on a 8088. Think of what could
be done with 1MB code in 32MB memory on a 80568 processor and
compare it to today's reality!


RESTRICTIONS

- no uncompressed PCX files
- no compressed BMP (=.RLE) files
- no hierarchical and lossless JPEG modes of operation


                     PROGRAMMERS INTERFACE


LxPic has an internal interface for use with other programming
languages or batch files. This interface allows you to set up
virtual screens of any size at a desired position of your
physical screen. These virtual screens overlay an already
filled application screen and you may draw a picture or part
of it into these virtual screens.

You select whether you want to gain back control immediately
after the picture has been placed on the screen, or whether
you want to pass intermediate control to LxPic and get back
control when the ESC key of LxPic is pressed. The application
may then write around or even into the picture. Multiple
pictures may be positioned or overlayed on one screen. If you
want to put more than one color picture on a color screen, you
either have to use a 16 or 24 bit screen mode or all pictures
have to use the same color palette, otherwise only the colors
of the last drawn picture are correct.

The interface uses 16 bytes of the BIOS data area starting at
the absolute address 00450h (40h:50h relative). The BIOS
reserves these bytes for the cursor coordinates of the text
pages 1-8 in an ASCII text mode. In graphic modes, these bytes
are zeroed and unused. Since LxPic only works in graphic modes,
these bytes may be used as an interface for LxPic.


INTERFACE SPECIFICATION

byte 00450h   Interface selection flag. This byte is bit coded.
              If the whole byte is 0, the interface is not used

              7 6 5 4 3 2 1 0   Meaning if bit is set
              | | | | | | |_|   ---------------------
              | | | | | |  |    01 = exit via DOS EXIT function
              | | | | | |  |____10 = exit via RET FAR instruct.
              | | | | | |       11 = exit via RET instruction
              | | | | | |
              | | | | | |_______unused
              | | | | |_________unused
              | | | |___________unused
              | | |_____________display only first gif frame
              | |_______________allow zoom/scroll keys only
              |_________________pass interm. control to LxPic


              If bit 7 in the interface selection flag is set,
              all command keys are available except the mode
              keys {F2} and {F3}. If you only want to enable
              the zoom and scroll keys, set bit 6 as well.
              If bit 5 is set, only the first frame of a multi-
              image GIF picture is displayed.

word 00451h   Mode selection word. This word is bit coded.

              10 9 8 7 6 5 4 3 2 1 0 = bit number
               | | | | | | | | | | |
               | | | | | | | | | | |   Meaning if bit is set
               | | | | | | | | | | |   ---------------------
               | | | | | | | | | | |___clear screen
               | | | | | | | | | |_____invert picture
               | | | | | | | | |_______center picture
               | | | | | | | |_________auto zoom
               | | | | | | |___________HP Palmtop resize
               | | | | | |_____________dither off
               | | | | |_______________text zoom
               | | | |_________________convert to B&W
               | | |___________________convert to greyscale
               | |_____________________display upside down
               |_______________________display file info box

byte 00453h   Zoom factor. Valid values are:

              -5 =    3%
              -4 =    6%
              -3 =   12%
              -2 =   25%
              -1 =   50%
               0 =  100%
               1 =  200%
               2 =  400%
               3 =  800%
               4 = 1600%
               5 = 3200%
              if the value is not valid, 0 is assumed.

word 00454h   Screen Pixel Column (SPC). If the SPC is not
              valid in the actual graphic mode, 0 is assumed.
              NOTE: LxPic output always starts at pixel
                    columns, that are multiples of 8.

word 00456h   Screen Pixel Row (SPR). If the SPR is not valid
              in the actual graphic mode, 0 is assumed.

word 00458h   X0 offset (upper left column) within the picture

word 0045Ah   Y0 offset (upper left row) within the picture

word 0045Ch   Virtual Screen Width (VSW) in pixel. If VSW 
              exceeds the Physical Screen Width (PSW), it is
              cut to fit on the physical screen. If you don't
              fill in this value, then VSW = PSW - SPC is
              assumed.
              NOTE: LxPic output always starts at pixel
                    columns, that are multiples of 8.

word 0045Eh   Virtual Screen Height (VSH) in pixel. If VSH 
              exceeds the Physical Screen Height (PSH), it is
              cut to fit on the physical screen. If you don't
              fill in this value, then VSH = PSH - SPR is
              assumed.

RETURN CODES

LxPic exits via DOS funktion 04Ch or a RET FAR or a RET
instruction leaving behind return codes in register AL.
The codes and their meaning are:

          0   errorfree execution
         -1   (reserved for DOS)
         -2   file not found
         -3   invalid screen mode
         -4   unsupported signature/version of picture file
         -5   uncompressed PCX file
         -6   compressed BMP file
         -7   unknown GIF separator
         -8   invalid LZW code in GIF file
         -9   unsupported JPEG mode of operation
         -10  unsupported arithmetic coding in JPEG
         -11  unsupported Y sampling factor in JPEG
         -12  no default DQT table support in JPEG
         -13  no DNL support in JPEG
         -14  no OS/2 DIB support in BMP
         -15  insufficient memory

DETAILS

If LxPic finds at address 00450h a value other than 0, it takes
it and puts back 0. That is, you always have to fill in the
interface if you want to use it. If the value was not 0, LxPic
checks for a valid graphic video mode. If no valid graphic
video mode has been set by you, LxPic exits without action.
See INTRODUCTION for valid graphics modes.

Any change of the video mode or any clear screen, performed
using BIOS or DOS functions, resets the interface to 0. That
is, fill in the interface *AFTER* you configured the screen.

If you selected 'center picture' in the mode word, the pixel
row and pixel column values are ignored.

If you selected 'auto zoom' in the mode word, the zoom factor,
the pixel row and pixel column values are ignored.

TURBO-C SAMPLE CODE FOR USE OF LXPIC VIA SYSTEM CALL

/*-----------------------------------------------------------*/
/* This example assumes that LXPIC.COM and DEMO.GIF are      */
/* stored in the directory C:\PIC of your computer.          */
/* Because of inline assembly, you have to use TCC from the  */
/* command line, to compile this example                     */
/*-----------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
#include <process.h>

/* function prototype */
int picture(char flag,int mode,char zoom,int spc,int spr,int x0,int y0,int vsw,int vsh,char *pic);
/*-----------------------------------------------------------*/
main()
{
 /* set a valid graphics mode */
 asm  mov  ax,4F02h     /* VESA function: set mode */
 asm  mov  bx,0101h     /* select VGA 640x480x8    */
 asm  int  10h          /* set it                  */

 /* your code goes here */
 printf("this is DEMO.GIF");

 /* output DEMO.GIF half sized at column 100, row 50  */
 /* in a virtual screen of dimension 300 x 200 pixel  */
 picture(1,0,-1,100,50,0,0,300,200,"C:\\PIC\\DEMO.GIF");

 /* your code goes here  */
}
/*-----------------------------------------------------------*/
int picture(char flag,int mode,char zoom,int spc,int spr,int x0,int y0,int vsw,int vsh,char *pic);
{
 char lxpic[100]="C:\\PIC\\LXPIC ";  /* full LXPIC pathname  */

 /* fill in the interface */
 asm  push ax                        /* save AX              */
 asm  push bx                        /* save BX              */
 asm  push ds                        /* save DS              */
 asm  mov  ax,0                      /* load DS...           */
 asm  mov  ds,ax                     /* ...with segment 0    */
 asm  mov  bx,0450h                  /* load bx with offset  */
 asm  mov  al,flag                   /* flag (use DOS EXIT)  */
 asm  mov  [bx+0],al                 /* set flag             */
 asm  mov  ax,mode                   /* load mode selection  */
 asm  mov  [bx+1],ax                 /* set  mode selection  */
 asm  mov  al,zoom                   /* load zoom factor     */
 asm  mov  [bx+3],al                 /* set  zoom factor     */
 asm  mov  ax,spc                    /* load pixelcolumn     */
 asm  mov  [bx+4],ax                 /* set  pixelcolumn     */
 asm  mov  ax,spr                    /* load pixelrow        */
 asm  mov  [bx+6],ax                 /* set  pixelrow        */
 asm  mov  ax,x0                     /* load x offset in pic */
 asm  mov  [bx+8],ax                 /* set  x offset        */
 asm  mov  ax,y0                     /* load y offset in pic */
 asm  mov  [bx+10],ax                /* set  y offset        */
 asm  mov  ax,vsw                    /* load vir. scr. width */
 asm  mov  [bx+12],ax                /* set  screen width    */
 asm  mov  ax,vsh                    /* load vir. scr. height*/
 asm  mov  [bx+14],ax                /* set  screen height   */
 asm  pop  ds                        /* restore DS           */
 asm  pop  bx                        /* restore BX           */
 asm  pop  ax                        /* restore AX           */

 /* display the picture */
 return(system(strcat(lxpic,pic)));
}
/*-----------------------------------------------------------*/

                      DISCLAIMER AGREEMENT


LxPic is copyrighted freeware. If you bundle LxPic with your
software or use the internal interface of LxPic, you have to
ask me for permission and you have to mention LxPic and the
copyright somewhere in your product.

Users of LxPic must accept this disclaimer of warranty:

"LxPic is supplied as is. The author disclaims all warranties,
expressed or implied, including, without limitation, the
warranties of merchantability and of fitness for any purpose.
The author assumes no liability for damages, direct or
consequential, which may result from the use of LxPic."


