From: dave@powerbasic.com (Dave Navarro)
Subject: PCX Slide Show
'=============================================================================
'
' PCX Slide Show by Dave Navarro (dave@powerbasic.com)
'
' PCX decoder code by Greg Turgeon (76470.2417@compuserve.com)
'
' Uses VESA to display PCX files in 256 colors at 640x480.
'
'=============================================================================
$OPTIMIZE SPEED
$LIB ALL OFF
'============
$LIB GRAPH ON
$LIB VGA ON
DECLARE FUNCTION GetStrLoc&( BYVAL AllocHandle% ) 'must be declared
DEFINT A - Z
%YES = - 1: %NO = 0: %ESC = 27
%MODE101h = &h101
%SCRNWIDTH = 640: %SCRNHEIGHT = 480
%PALSIZE = 768: %BPERPIXEL = 8: %COLORPLANES = 1
'-- Variable to hold VESA SVGA mode 101h data
TYPE VModeDatType
attribs AS INTEGER
winAattribs AS BYTE
winBattribs AS BYTE
wingranularity AS INTEGER
winsize AS INTEGER
winAseg AS WORD
winBseg AS WORD
winfunctionloc AS LONG 'will be used as unsigned
bperscanline AS INTEGER 'bytes per scan line
'-- Optional w/original VESA version (and often not provided):
hres AS INTEGER 'horizontal / vertical resolution
vres AS INTEGER
wchar AS BYTE 'character width
hchar AS BYTE 'character height
nplanes AS BYTE 'number of planes
bppixel AS BYTE 'bits per pixel
nbanks AS BYTE 'number of banks
mmodel AS BYTE 'memory model
sbanks AS BYTE 'size of banks
reserved AS STRING * 208
END TYPE
DIM VMODEINFO AS SHARED VModeDatType
'-- Create variable to hold PCX file header data
TYPE PCXheader
Mfg AS BYTE
Version AS BYTE
Encoding AS BYTE
BitsPerPixel AS BYTE
Xmin AS INTEGER
Ymin AS INTEGER
Xmax AS INTEGER
Ymax AS INTEGER
HorizontalRes AS INTEGER
VerticalRes AS INTEGER
Pal AS STRING * 48
Reserved AS BYTE
NumColrPlanes AS BYTE
BytesPerSLine AS INTEGER
PalDat AS INTEGER
Filler AS STRING * 58
END TYPE
DIM PIX1 AS SHARED PCXheader
DIM PalBuff AS SHARED STRING * 768
FOR f = 1 TO 18
READ pcx$
IF ISFALSE( LEN( DIR$( pcx$ ))) THEN
PRINT "Cannot find PCX file "; pcx$
END
END IF
ecode% = LoadPCX256%( PCX$, Xcol%, Yline% )
IF ISTRUE( ecode% ) THEN
SELECT CASE ecode%
CASE 2
t$ = "ERROR (DOS): drive not ready"
CASE 5
t$ = "ERROR (DOS): access denied"
Continued with next message...
*** QwkNews (tm) v2.1
* [TN71] Internet Newsgroup: alt.lang.powerbasic
--- GEcho 1.20/Pro
---------------
* Origin: Toast House Remote (1:100/561)
|