BBS: Inland Empire Archive Date: 11-28-92 (20:08) Number: 362 From: LEE MADAJCZYK Refer#: NONE To: JAMES FRAZEE Recvd: NO Subj: Ega/Vga Conf: (2) Quik_Bas
JF> Is there a program to convert .PCX into a .BSV file. I found
JF> out finally how easy it is too BLOAD a .BSV file and If I can
JF> convert a .PCX into a .BSV it would be easier.
JF>
JF> Now if someone can give me code to load a 16 color .PCX file
JF> as a menu for a game,let me know,please.
Here you go.... (I stole this from SOMEWHERE....)
'PCX SAVE & PCX LOAD FOR EGA SCREEN 9 (640 x 350, 16 COLOR)
'BY G.C.HARDER, RE-ENGINEERED FROM C SOURCE IN
' "FRACTAL PROGRAMMING IN C"
DEFINT A-Z
DECLARE SUB PCXSave (File$, Pal.Array%())
DECLARE SUB PCXLoad (File$, Pal.Array%())
FileName$ = "Demo4.PCX"
SCREEN 9, 0, 1, 0
DIM Pal.Array%(15)
FOR I% = 0 TO 15: READ Pal.Array%(I%): NEXT
CLS
LOCATE 25, 30: PRINT "Loading " + FileName$;
PCXLoad FileName$, Pal.Array%()
'default Palette Colors
DATA 0,1,2,3,4,5,20,7,56,57,58,59,60,61,62,63
SUB PCXLoad (File$, Pal.Array%()) STATIC
SCREEN 9, 0, 0, 0: OPEN File$ FOR BINARY AS #1: SEEK #1, 17
DIM Byte AS STRING * 1
FOR I% = 0 TO 15
GET #1, , Byte: red% = ASC(Byte) / 85
GET #1, , Byte: green% = ASC(Byte) / 85
GET #1, , Byte: Blue% = ASC(Byte) / 85
red% = ((red% AND 1) * 32) OR ((red% AND 2) * 2)
green% = ((green% AND 1) * 16) OR (green% AND 2)
Blue% = ((Blue% AND 1) * 8) OR ((Blue% AND 2) \ 2)
Hue% = red% OR green% OR Blue%: Pal.Array%(I%) = Hue%
NEXT
PALETTE USING Pal.Array%(0): SEEK #1, 129: DEF SEG = &HA000
FOR k% = 0 TO 349
A$ = INKEY$: IF A$ = CHR$(27) THEN END
Addr% = 80 * k%: Line.end% = Addr% + 80: J% = 1
DO WHILE J% <= 4
B% = J%
IF J% = 3 THEN B% = 4
IF J% = 4 THEN B% = 8
OUT &H3C4, 2: OUT &H3C5, B%
GET #1, , Byte: Byte.1% = ASC(Byte)
IF (Byte.1% AND 192) <> 192 THEN
POKE Addr%, Byte.1%: Addr% = Addr% + 1
IF Addr% >= Line.end% THEN Addr% = 80 * k%: J% = J% + 1
ELSE
Byte.1% = Byte.1% AND 63
GET #1, , Byte: Byte.2% = ASC(Byte)
FOR M% = 1 TO Byte.1%
B% = J%
IF J% = 3 THEN B% = 4
IF J% = 4 THEN B% = 8
OUT &H3C4, 2: OUT &H3C5, B%: POKE Addr%, Byte.2%
Addr% = Addr% + 1
IF Addr% >= Line.end% THEN Addr% = 80 * k%: J% = J% + 1
NEXT
END IF
LOOP
NEXT
OUT &H3C4, 2: OUT &H3C5, &HF: DEF SEG ': CLOSE #1
END SUB
Hope this helps. After you load your file, just BSAVE it. If you
want the PCX saving routine, or anyone else for that matter, give
me a ring!
Lee Madajczyk
Quantum Software
... OFFLINE 1.40 * Difference between a virus & Windows? Viruses don't fail.
--- GEcho 1.00/beta+
* Origin: Infinity -=[HST]=- (1:280/5)

Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET