[fpc-pascal] equivalent/workaround for $B800 In free Pascal

Tomas Hajny XHajT03 at hajny.biz
Mon Jun 16 10:46:20 CEST 2014


On Mon, June 16, 2014 10:09, mokashe.ram wrote:


Hi Sudarshan,

> It used to be possible (Turbo Pascal version 7.0 for DOS)to access
> screen memory using $B800
>
> Is there an equivalent/workaround using Free Pascal version 2.6.4 ?

Have you read all the previous e-mails providing answers to your previous
questions? I believe that all the options have already been covered there,
but let's summarize again:

- Direct access to screen memory is not possible from standard application
level on current platforms (it is still possible using the GO32v2 target
supported by FPC and intended for running under Dos).

- Different operating systems provide different means for 'low-level'
access of the video console (some of them allow more control, some of them
less), but it always requires changing the original application to some
extent (you cannot just do find&replace and recompile). These are
obviously accessible for FPC (via unit Windows for MS Windows platforms,
unit VioCalls for OS/2, access to $B800 for Go32v2, etc.), but the source
code using these platform-specific constructs is then obviously not
portable across different targets.

- FPC provides two cross-platform solutions, both having certain
advantages and disadvantages:

  1) One of them (slightly higher level compared to your original
construct using $B800 segment access) is using unit Crt with its
routines TextColor, TextBackground (or TextAttr variable as an
alternative to these two routines), GotoXY and Write.

 2) The other is using unit Video with its VideoBuf^ based access
(combined with UpdateScreen and obviously also InitVideo and DoneVideo
routines) - this provides a fairly low-level construct more similar to
the old approach used in your original DOS application created for TP/BP.

Tomas





More information about the fpc-pascal mailing list