BBS: Inland Empire Archive Date: 04-08-92 (13:13) Number: 10 From: MATT HART Refer#: NONE To: JAMES MINOR Recvd: NO Subj: bsaving screen 9 Conf: (2) Quik_Bas
JM> Does anyone know if it is possible to save a screen in screen
JM> mode 9 using the bsave command? If so, how?
The best way is to GET the screen into an array first:
DEFINT A-Z
SCREEN 9
LINE (0, 0)-(60, 60), 1, BF
LINE (61, 61)-(120, 120), 4, BF
LINE (121, 121)-(180, 180), 8, BF
LINE (181, 181)-(240, 240), 12, BF
LINE (241, 241)-(300, 300), 15, BF
X1 = 0 : X2 = 649 : Y1 = 0 : Y2 = 175
Bits.Per.Pixel.Per.Plane = 1
NumPlanes = 4 ' 2 for 64K EGA/4 Color
' Must be done in two chunks - BSAVE can only save 64K at a time
NumBytes = 4+INT(((X2-X1+1)*(BitsPerPixelPerPlane)+_
7)/8)*NumPlanes*((Y2-Y1)+1)
NumBytes = NumBytes + NumBytes MOD 2
DimSize1 = NumBytes \ 2 : DimSize = DimSize1
File$ = "PICT1.BIN"
GOSUB SaveIt
' Second Chunk
Y1 = 176 : Y2 = 349
NumBytes = 4+INT .....
DimSize2 = ....
File$ = "PICT2.BIN"
GOSUB SaveIt
CLS
' Load it back:
REDIM SaveArray(1 TO DimSize1) AS INTEGER
DEF SEG = VARSEG(SaveArray(1))
BLOAD "PICT1.BIN",VARPTR(SaveArray(1))
DEF SEG : PUT (0,0),SaveArray
REDIM SaveArray(1 TO DimSize2) AS INTEGER
DEF SEG = VARSEG(SaveArray(1))
BLOAD "PICT2.BIN",VARPTR(SaveArray(1))
DEF SEG : PUT (0,176),SaveArray
SaveIt:
REDIM SaveArray(1 TO DimSize) AS INTEGER
GET (X1,Y1)-(X2,Y2),SaveArray
DEF SEG = VARSEG(SaveArray(1))
BSAVE "PICT.BIN",VARPTR(SaveArray(1)),NumBytes
DEF SEG
RETURN
---
* Origin: Midnight Micro! V.32/REL (918)451-3306 (1:170/600)

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