I was wondering what replaces PCOPY which is a Quickbasic statement in Powerbasic for DOS? I’ve been learning different things on how to use PSET and animating the object. Thx.
Announcement
Collapse
No announcement yet.
Replacement for PCOPY
Collapse
X
-
Qbasic Help (the top of the screen reads QUickBasic, but I got it from QBasic):
───────────────────────────────────────────────────────────────────────────
Copies one video memory page to another.
PCOPY sourcepage%,destinationpage%
■ sourcepage% The number of a video memory page to copy.
■ destinationpage% The number of the video memory page to copy to.
■ The value that identifies the video page is determined by the size
of video memory and the current screen mode.
Here's a little starting point. I doubt it will work "as written" but it may give some of the more skilled MS-DOS programmers a nudge in a good direction.
I can't tell from the help if the internal var 'pbvScreenBuff' points to the active page, the virtual page or the entire video memory; so I guessed 'virtual.' This also assumes text mode.
Code:FUNCTION PCOPY (sourcepage as INTEGER, destPage AS INTEGER) AS INTEGER ' save current data segment saveDefSeg = pbvDefSeg ' save current screen pages saveAPage = pbvScrnAPage saveVPage = pbvScrnVPage ' set the current virtual page to the source page (I "guess" we go to virtual page?) SCREEN ,,, sourcePage ' acquire address: vSeg = pScreenBuff MOD &h10000 ' pbvScrnBuff = 32-bit address. vOff = pbvScreenBuff AND &hFFFF DEF SEG = vSeg VData$ = PEEK$(voff, 2 * pbvScrnCols * pbvScrnRows) ' set video virtual page to the destination page SCREEN ,,,DestPage ' get that address vSeg = pbvScreenBuff MOD &h10000 voff = pbvScreenBUff AND &hFFFF ' poke the data DEF SEG = vSeg POKE$ vOff, sData$ ' restore the data segment DEF SEG = saveDefSeg ' restore the vPage and Apage SCREEN ,,saveAPage, sSaveVPage END FUNCTION
MCMLast edited by Michael Mattias; 7 Mar 2009, 09:45 AM.Michael Mattias
Tal Systems (retired)
Port Washington WI USA
[email protected]
http://www.talsystems.com
Comment
-
-
> I was just wondering if there is a statement replacing the PCOPY statement that quickbasic uses.
>> Look in the UNIT directory for the file SCRNUNIT.BAS.. This file contains the PGCOPY routine
Duh, I just looked at this. It's a 'drop in replacement' if the pages are 'text.'
Oh, well, the little mental exercise couldn't have hurt me. Not too much, anyway.
MCMMichael Mattias
Tal Systems (retired)
Port Washington WI USA
[email protected]
http://www.talsystems.com
Comment
-
-
Calling the function
So Michael,
I can use the CALL statement to call this function below correct?
FUNCTION PCOPY (sourcepage as INTEGER, destPage AS INTEGER) AS INTEGER
' save current data segment
saveDefSeg = pbvDefSeg
' save current screen pages
saveAPage = pbvScrnAPage
saveVPage = pbvScrnVPage
' set the current virtual page to the source page (I "guess" we go to virtual page?)
SCREEN ,,, sourcePage
' acquire address:
vSeg = pScreenBuff MOD &h10000 ' pbvScrnBuff = 32-bit address.
vOff = pbvScreenBuff AND &hFFFF
DEF SEG = vSeg
VData$ = PEEK$(voff, 2 * pbvScrnCols * pbvScrnRows)
' set video virtual page to the destination page
SCREEN ,,,DestPage
' get that address
vSeg = pbvScreenBuff MOD &h10000
voff = pbvScreenBUff AND &hFFFF
' poke the data
DEF SEG = vSeg
POKE$ vOff, sData$
' restore the data segment
DEF SEG = saveDefSeg
' restore the vPage and Apage
SCREEN ,,saveAPage, sSaveVPage
END FUNCTION
Comment
-
-
Frankly, I have no idea if it will work.. I never tried it.
Had it been my challenge, first thing I would have done is try the routine provided in the SCRNUNIT.BAS file.
I think the key point is here, just as with ALL software... you'll never know until you DO try it.
But let's play 'head doctor' here.... Whats the worst thing that can happen if you try it and it does not work? Well, you still don't have working code (no gain/no loss) but now you know something which does NOT work (small gain).
That is, the WORST that can happen by actually trying something is, you come out a little bit ahead of where you were. That sounds like a pretty good deal to me.
MCMMichael Mattias
Tal Systems (retired)
Port Washington WI USA
[email protected]
http://www.talsystems.com
Comment
-
Comment