Category : Files from Magazines
Archive   : ITP9002.ZIP
Filename : OOPS.PAS

 
Output of file : OOPS.PAS contained in archive : ITP9002.ZIP
program Dynamic_Object_Demo;

{ DYN-DEMO.PAS }

uses Crt, Dos;

type
ScrPtr = ^SaveScreen;
BoxPtr = ^ReportBox;
SaveScreen = array[1..80,1..25] of word;
ReportBox = object
SavPtr: ScrPtr; FColor, BColor: byte;
WPosX, WPosY, WSizeX, WSizeY: integer;
constructor Init( PtX, PtY, Width, Height,
C1, C2 : integer );
destructor Done;
procedure Draw;
procedure Erase;
end;

{==========================================}
{ implementation for object type ReportBox }
{==========================================}

constructor ReportBox.Init;
var
i, j: integer;
Regs: Registers;
begin
WPosX := PtX;
WPosY := PtY;
WSizeX := Width;
WSizeY := Height;
FColor := C1;
BColor := C2;
New( SavPtr ); { allocate memory for array }
window( WPosX, WPosY, WPosX+WSizeX-1,
WPosY+WSizeY-1 );

{read character and attribute on video page 0}

for i := 1 to WSizeX do
for j := 1 to WSizeY do
begin
gotoxy(i,j);
Regs.AH := 08;
Regs.BH := 00;
intr( $10, Regs );
SavPtr^[i,j] := Regs.AX;
end;
Draw;
end;

destructor ReportBox.Done;
begin
Erase;
Dispose( SavPtr );
end;

procedure ReportBox.Erase;
var
i, j : integer;
Regs : Registers;
begin
window( WPosX, WPosY,
WPosX+WSizeX-1, WPosY+WSizeY-1 );
ClrScr; { inner window }

{ Write character and attr on video page 0 }

{ AL stores the character value }
{ BL stores the attribute value }
{ CL stores the repititions value (1) }

for i := 1 to WSizeX do
for j := 1 to WSizeY do
begin
gotoxy(i,j);
Regs.AH := 09;
Regs.BH := 00;
Regs.AL := lo( SavPtr^[i,j] );
Regs.BL := hi( SavPtr^[i,j] );
Regs.CL := 1;
intr( $10, Regs );
end;
window( 1, 1, 80, 25 );
end;

procedure ReportBox.Draw;
var
BoxStr : string[6];
i : integer;
MemSize : longint;
begin
TextColor( FColor );
TextBackground( BColor );
BoxStr := #$C9 + #$CD + #$BB +
#$BA +#$BC + #$C8;
window( WPosX, WPosY,
WPosX+WSizeX-1, WPosY+WSizeY-1 );
ClrScr;
gotoxy( 1, 1 ); write( BoxStr[1] );
for i := 1 to WSizeX-2 do write( BoxStr[2] );
write( BoxStr[3] );
gotoxy( 1, WSizeY-1 ); write( BoxStr[6] );
for i := 1 to WSizeX-2 do write( BoxStr[2] );
write( BoxStr[5] );
gotoxy( 1, 2 );
InsLine;
for i := 2 to WSizeY-1 do
begin
gotoxy( 1, i ); write( BoxStr[4] );
gotoxy( WSizeX, i ); write( BoxStr[4] );
end;
window( WPosX+1, WPosY+1,
WPosX+WSizeX-2, WPosY+WSizeY-2 );
ClrScr;
MemSize := MemAvail;
for i := 1 to 30 do
write('Memory now = ',MemSize,' bytes! ');
window( 1, 1, 80, 25 );
end;

{ **** end of methods **** }

var
Box : array[1..5] of BoxPtr;
MemSize : longint;
i : integer;

procedure Prompt;
begin
gotoxy( 1, 1 ); clreol;
write('Memory now = ', MemAvail,
'. Press ENTER to continue ');
readln;
end;

begin
ClrScr;
TextColor( White );
TextBackground( Black );
MemSize := MemAvail;
for i := 1 to 100 do
write(' Initial memory available = ',
MemSize, ' bytes! ' );
gotoxy( 1, 1 ); clreol;
write('Press ENTER to continue ');
readln;
Box[1] := New( BoxPtr, Init( 5, 12, 30, 10,
LightRed, Black ) );
gotoxy( 1, 1 ); clreol;
write('Memory now = ', MemAvail,
'. Press ENTER to continue ');
readln;
Box[2] := New( BoxPtr, Init( 40, 5, 30, 10,
LightGreen, Blue ) );
gotoxy( 1, 1 ); clreol;
write('Memory now = ', MemAvail,
'. Press ENTER to continue ');
readln;
Dispose( Box[1], Done );
Dispose( Box[2], Done );
gotoxy( 1, 1 ); clreol;
write( 'Final memory (after release) = ',
MemAvail, ' bytes...');
readln;
end.


  3 Responses to “Category : Files from Magazines
Archive   : ITP9002.ZIP
Filename : OOPS.PAS

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/