Announcement

Collapse
No announcement yet.

Replacement for PCOPY

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Michael Mattias
    replied
    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.

    MCM

    Leave a comment:


  • Russ Meyers
    replied
    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
    Last edited by Russ Meyers; 21 Mar 2009, 10:59 AM. Reason: Added the code.

    Leave a comment:


  • Michael Mattias
    replied
    > 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.

    MCM

    Leave a comment:


  • Michael Mattias
    replied
    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
    Heck, it's a thought.

    MCM
    Last edited by Michael Mattias; 7 Mar 2009, 09:45 AM.

    Leave a comment:


  • Russ Meyers
    replied
    In reference to PCOPY

    I was just wondering if there is a statement replacing the PCOPY statement that quickbasic uses.

    Leave a comment:


  • Joe Caverly
    replied
    Hi,
    Look in the UNIT directory for the file SCRNUNIT.BAS

    This file contains the PGCOPY routine, which will "Copy data from one text page to another".

    Joe

    Leave a comment:


  • Russ Meyers
    started a topic Replacement for PCOPY

    Replacement for PCOPY

    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.
Working...
X
😀
🥰
🤢
😎
😡
👍
👎