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