BBS: Inland Empire Archive Date: 05-20-92 (01:53) Number: 188 From: RICH GELDREICH Refer#: NONE To: MARTIN BOUCHARD Recvd: NO Subj: Saving 360x480 Images Conf: (2) Quik_Bas
Here you go! The following two subroutines will save & load 360x480
images. I made it so it would be a simple task to merge it into my GIF
decompressor.
'Procedures to read & write a 360x480x256 image to disk.
'By Rich Geldreich
DEFINT A-Z
DECLARE SUB Load360x480 ()
DECLARE SUB Save360x480 ()
SUB Load360x480
DIM R(255), G(255), B(255)
FOR A = 0 TO 255
OUT &H3C7, A: OUT &H3C8, A
OUT &H3C9, 0: OUT &H3C9, 0: OUT &H3C9, 0
NEXT
DEF SEG = &HA000
OUT &H3C4, 2: A = INP(&H3C5) 'Save state of write mask.
OUT &H3C4, 2: OUT &H3C5, 1 'CPU writes to first plane.
BLOAD "plane1.bin"
OUT &H3C4, 2: OUT &H3C5, 2 'CPU writes to second plane.
BLOAD "plane2.bin"
OUT &H3C4, 2: OUT &H3C5, 4 'CPU writes to third plane.
BLOAD "plane3.bin"
OUT &H3C4, 2: OUT &H3C5, 8 'CPU writes to fourth plane.
BLOAD "plane4.bin"
OUT &H3C4, 2: OUT &H3C5, A 'Restore state of write mask.
DEF SEG
OPEN "palette.bin" FOR BINARY AS #1
FOR A = 0 TO 255
GET #1, , R(A): GET #1, , G(A): GET #1, , B(A)
NEXT
CLOSE #1
FOR A = 0 TO 255
OUT &H3C7, A: OUT &H3C8, A
OUT &H3C9, R(A): OUT &H3C9, G(A): OUT &H3C9, B(A)
NEXT
END SUB
SUB Save360x480
DEF SEG = &HA000
OUT &H3CE, 4: A = INP(&H3CF) 'Save state of read mask.
OUT &H3CE, 4: OUT &H3CF, 0 'CPU reads from first plane.
BSAVE "plane1.bin", 0, 43200 'Output (360/4)*90 bytes.
OUT &H3CE, 4: OUT &H3CF, 1 'CPU reads from second plane.
BSAVE "plane2.bin", 0, 43200
OUT &H3CE, 4: OUT &H3CF, 2 'CPU reads from third plane.
BSAVE "plane3.bin", 0, 43200
OUT &H3CE, 4: OUT &H3CF, 3 'CPU reads from fourth plane.
BSAVE "plane4.bin", 0, 43200
OUT &H3CE, 4: OUT &H3CF, A 'Restore state of read mask.
DEF SEG
OPEN "palette.bin" FOR BINARY AS #1 'save palette now
FOR A = 0 TO 255
OUT &H3C7, A: OUT &H3C8, A
R = INP(&H3C9): G = INP(&H3C9): B = INP(&H3C9)
PUT #1, , R: PUT #1, , G: PUT #1, , B
NEXT
CLOSE #1
END SUB
That's all! There are two things two note about these procedures-
they're "hardwired" for one filename and they automatically save & load
the palette for you.
The first thing you'll notice when you load in a 360x480 image with the
Load360x480 procedure is that you don't actually see the loading! I HATE
when programs let you see the image when there loading it off disk. (If
you would like to see how the loading process actually looks, just get
rid of the first four lines after the dim statement in the Load360x480
procedure.)
Have fun!
Rich Geldreich
--- RBBSMAIL 17.2A
* Origin: Computer Co-Op RBBS HST, 609-784-9404 Voorhees
NJ (RBBS-PC 1:266/29)

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