Move files in preparation for C version

This commit is contained in:
Vince Weaver 2012-11-30 00:07:58 -05:00
parent b153d8285b
commit 6d72b8cbfd
64 changed files with 0 additions and 4279 deletions

View File

@ -1,5 +0,0 @@
1
1
544
7
1

View File

@ -1,12 +0,0 @@
TOM BOMBEM 2.4a: Invasion Of The Inanimate Objects
Outer Space action game full of galactic intrigue!
Blow up incoming inanimate objects!
Fly low over a hostile spacecraft!
Beat the game! What fun!
By Vince Weaver
Internet: vmweaver@wam.umd.edu
Hate Mail: askbill@microsoft.com

View File

@ -1,20 +0,0 @@
Tom Bombem
VINCE
Vince
STEVE
aViince
HAIROLD
vinc
1500
1300
1120
1000
930
890
810
800
760
740

768
pal.tb1
View File

@ -1,768 +0,0 @@
0
0
0
0
0
42
0
42
0
0
42
42
42
0
0
42
0
42
42
21
0
42
42
42
21
21
21
21
21
63
21
63
21
21
63
63
63
21
21
63
21
63
63
63
21
63
63
63
59
59
59
55
55
55
52
52
52
48
48
48
45
45
45
42
42
42
38
38
38
35
35
35
31
31
31
28
28
28
25
25
25
21
21
21
18
18
18
14
14
14
11
11
11
8
8
8
63
0
0
59
0
0
56
0
0
53
0
0
50
0
0
47
0
0
44
0
0
41
0
0
38
0
0
34
0
0
31
0
0
28
0
0
25
0
0
22
0
0
19
0
0
16
0
0
63
54
54
63
46
46
63
39
39
63
31
31
63
23
23
63
16
16
63
8
8
63
0
0
63
42
23
63
38
16
63
34
8
63
30
0
57
27
0
51
24
0
45
21
0
39
19
0
63
63
54
63
63
46
63
63
39
63
63
31
63
62
23
63
61
16
63
61
8
63
61
0
57
54
0
51
49
0
45
43
0
39
39
0
33
33
0
28
27
0
22
21
0
16
16
0
52
63
23
49
63
16
45
63
8
40
63
0
36
57
0
32
51
0
29
45
0
24
39
0
54
63
54
47
63
46
39
63
39
32
63
31
24
63
23
16
63
16
8
63
8
0
63
0
0
63
0
0
59
0
0
56
0
0
53
0
1
50
0
1
47
0
1
44
0
1
41
0
1
38
0
1
34
0
1
31
0
1
28
0
1
25
0
1
22
0
1
19
0
1
16
0
54
63
63
46
63
63
39
63
63
31
63
62
23
63
63
16
63
63
8
63
63
0
63
63
0
57
57
0
51
51
0
45
45
0
39
39
0
33
33
0
28
28
0
22
22
0
16
16
23
47
63
16
44
63
8
42
63
0
39
63
0
35
57
0
31
51
0
27
45
0
23
39
54
54
63
46
47
63
39
39
63
31
32
63
23
24
63
16
16
63
8
9
63
0
1
63
0
0
63
0
0
59
0
0
56
0
0
53
0
0
50
0
0
47
0
0
44
0
0
41
0
0
38
0
0
34
0
0
31
0
0
28
0
0
25
0
0
22
0
0
19
0
0
16
60
54
63
57
46
63
54
39
63
52
31
63
50
23
63
47
16
63
45
8
63
42
0
63
38
0
57
32
0
51
29
0
45
24
0
39
20
0
33
17
0
28
13
0
22
10
0
16
63
54
63
63
46
63
63
39
63
63
31
63
63
23
63
63
16
63
63
8
63
63
0
63
56
0
57
50
0
51
45
0
45
39
0
39
33
0
33
27
0
28
22
0
22
16
0
16
63
58
55
63
56
52
63
54
49
63
53
47
63
51
44
63
49
41
63
47
39
63
46
36
63
44
32
63
41
28
63
39
24
60
37
23
58
35
22
55
34
21
52
32
20
50
31
19
47
30
18
45
28
17
42
26
16
40
25
15
39
24
14
36
23
13
34
22
12
32
20
11
29
19
10
27
18
9
23
16
8
21
15
7
18
14
6
16
12
6
14
11
5
10
8
3
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
49
10
10
49
19
10
49
29
10
49
39
10
49
49
10
39
49
10
29
49
10
19
49
10
10
49
12
10
49
23
10
49
34
10
49
45
10
42
49
10
31
49
10
20
49
11
10
49
22
10
49
33
10
49
44
10
49
49
10
43
49
10
32
49
10
21
49
10
10
63
63
63

View File

@ -1,4 +0,0 @@
200
1
5

View File

@ -1,3 +0,0 @@
1140
2
7

View File

@ -1,3 +0,0 @@
1140
3
7

View File

@ -1,3 +0,0 @@
1140
4
7

View File

@ -1,3 +0,0 @@
500
2
10

View File

@ -1,3 +0,0 @@
0
1
10

View File

@ -1,3 +0,0 @@
200
1
5

View File

@ -1,3 +0,0 @@
1180
2
8

Binary file not shown.

Binary file not shown.

661
story.pas
View File

@ -1,661 +0,0 @@
program story_from_tom_bombem;
uses nvmwgraph,crt;
{$G+}
const
{Shape Table Values For Story}
bargeoff = 0;
bigflame1off = 290;
bigflame2off = 780;
sflame2off = 1270;
sflame1off = 1290;
truck1off = 1310;
truck2off = 1370;
explo1off = 1430;
explo2off = 1730;
rent1off = 2030;
{Shape Table Values for Game}
shape1off = 8000;
shape2off = 8400;
shape3off = 8800;
shape4off = 9200;
shape5off = 9600;
shape6off = 10000;
shape7off = 10400;
shape8off = 10800;
shape9off = 11200;
shape10off = 11600;
shape11off = 12000;
shape12off = 12400;
shape13off = 12800;
shape14off = 13200;
shape15off = 13600;
shape16off = 14000;
shape17off = 14400;
shape18off = 14800;
shape19off = 15200;
shape20off = 15600;
bigship1off = 0;
bigship2off = 1600;
bigship3off = 3200;
shapearray :
array [1..20] of word =(8000,8400,8800,9200,
9600,10000,10400,10800,
11200,11600,12000,12400,
12800,13200,13600,14000,
14400,14800,15200,15600);
type ScreenType = array [0..3999] of byte; {For Ansi Loading}
ShipInfo = Record
x,y:integer;
speed,frame:integer;
active:boolean;
END;
EnemyInfo = record
x,y,oldx,oldy:integer;
kind:byte;
out,exploding:boolean;
explodprogress:byte;
minx,maxx,xspeed,yspeed:integer;
end;
Virtual = Array [1..64000] of byte; { The size of our Virtual Screen }
VirtPtr = ^Virtual; { Pointer to the virtual screen }
ShapeTable = Array [0..16000] of byte;
ShapePtr = ^ShapeTable;
var ho,mi,se,s100:word;
tempsec:integer;
flames:boolean;
error:byte;
dev,mix,stat,pro,loop : integer;
md : string;
VAR Virscr : VirtPtr; { Our first Virtual screen }
ShapeTable1:ShapePtr;
num:byte;
VirScr2 : VirtPtr; { Our second Virtual screen }
Vaddr : word; { The segment of our virtual screen}
Vaddr2 : Word; { The segment of our 2nd virt. screen}
ShapeAddr:word; { The segment of the shape table}
ShapeOfs:word;
ourpal : Array [0..255,1..3] of byte; { A virtual pallette }
shipv : Array [1..1] of shipinfo; { The toaster info }
enemy:array[0..5] of enemyinfo;
Soundp : Pointer;
Check : BOOLEAN;
hiscore,level,lives,energy:integer;
score:longint;
axel_und_carmen:boolean;
tempi,tempj:integer;
scorest:string[8];
musicon:boolean;
lowscore:integer;
it,hiname:string[10];
var grapherror:byte;
temp:array[1..3] of byte;
i,j:byte;
x,y,barpos:integer;
screen:screentype absolute $B800:0000;
ch:char;
Procedure SetUpVirtual;
{ This sets up the memory needed for the virtual screen }
BEGIN
GetMem (VirScr,64000);
vaddr := seg (virscr^);
GetMem (VirScr2,64000);
vaddr2 := seg (virscr2^);
GetMem (ShapeTable1,16000);
shapeaddr:= seg (ShapeTable1^);
shapeofs:=ofs (ShapeTable1^);
END;
procedure putshape(shapeoffset,towhere,xacross,yacross,xx,yy:word);
label bob,bob4,bob2,bob3;
begin
asm
{saves registers}
push ds
mov ax,[yy] {multiplies y value by 320}
shl ax,5
mov cx,ax
shl ax,1
shl cx,3
add ax,cx
add ax,[xx] {adds the x-value to get offset}
mov di,ax
mov bx,320
sub bx,[xacross] {xacross?}
push bx
mov bx,[yacross]
xor dx,dx
mov ax,[shapeaddr] {moves segment of array}
mov ds,ax
mov ax,[shapeoffset] {moves offsett if array}
{add ax,[shapeofs]}
mov si,ax
mov ax,[towhere] {loads place to move it}
mov es,ax
xor ax,ax
xor cx,cx
xor dx,dx
bob:
mov cx,[xacross] {how long to loop across (the x-size of array)}
bob4:
xor ah,ah
lodsb
cmp ax,0 {If zero skip, if not, store value}
jz bob2
stosb
dec di
bob2: {Adds when x-value must be increased}
inc di
loop bob4
cmp dx,bx
jz bob3
xor cx,cx
pop ax
add di,ax
push ax
inc dx
jmp bob
bob3:
pop bx {restore variables}
pop ds
end;
end;
procedure putshapeline(fromwhereo,towhere,xacross,yacross,xx,yy,line:word);
var int,color:integer;
{draws just one line of a shape with same syntax as putshape}
begin
for int:=0 to xacross do begin
{does not work. stack overflow}
(*asm
push ax
push bx
push cx
mov ax,[line] {multiplies y value by 320}
mul [xacross]
add ax,[int]
mov bx,ax
mov ax,[ShapeAddr] {moves segment of array}
mov ds,ax
{mov ax,[ShapeOfs]} {moves offset of array}
mov ax,[fromwhereo]
add ax,bx
mov si,ax
xor ax,ax
lodsb
mov [color],ax
pop cx
pop bx
pop ax
end;*)
color:=ShapeTable1^[fromwhereo+((xacross*line)+int)];
if color<>0 then putpixel(xx+int,yy+line,color,towhere);
end;
end;
procedure putshapeover(fromwhereo,towhere,xacross,yacross,xx,yy:word);
label bbob,bbob4,bbob2,bbob3;
begin
asm
{saves registers}
push ds
mov ax,[yy] {multiplies y value by 320}
shl ax,5
mov cx,ax
shl ax,1
shl cx,3
add ax,cx
add ax,[xx] {adds the x-value to get offset}
mov di,ax
mov bx,320
sub bx,[xacross] {xacross?}
push bx
mov bx,[yacross]
xor dx,dx
mov ax,[shapeaddr] {moves segment of array}
mov ds,ax
(*add ax,[shapeofs] *) {moves offsett if array}
mov ax,[fromwhereo]
mov si,ax
mov ax,[towhere] {loads place to move it}
mov es,ax
xor ax,ax
xor cx,cx
xor dx,dx
bbob:
mov cx,[xacross] {how long to loop across (the x-size of array)}
bbob4:
rep movsb {copies, overwriting}
bbob2: {Adds when x-value must be increased}
cmp dx,bx
jz bbob3
xor cx,cx
pop ax
add di,ax
push ax
inc dx
jmp bbob
bbob3:
pop bx {restore variables}
pop ds
end;
end;
Procedure blockmove(x1,y1,x2,y2,p1,x3,y3,p2:word);
{ This is a small procedure to copy block x1,y1,x2,y2,
from page 1 to x3,y3 on page 2}
BEGIN
asm
push ds
push es
mov ax,p1
mov ds,ax
mov ax,p2
mov es,ax
mov bx,[X1]
mov dx,[Y1]
push bx {; and this again for later}
mov bx, dx {; bx = dx}
mov dh, dl {; dx = dx * 256}
xor dl, dl
shl bx, 6 {; bx = bx * 64}
add dx, bx {; dx = dx + bx (ie y*320)}
pop bx {; get back our x}
add bx, dx {; finalise location}
mov si, bx {; es:di = where to go}
mov bx,[X3]
mov dx,[Y3]
push bx {; and this again for later}
mov bx, dx {; bx = dx}
mov dh, dl {; dx = dx * 256}
xor dl, dl
shl bx, 6 {; bx = bx * 64}
add dx, bx {; dx = dx + bx (ie y*320)}
pop bx {; get back our x}
add bx, dx {; finalise location}
mov di, bx {; es:di = where to go}
mov ax,[y2]
sub ax,[y1]
mov dx,[x2]
sub dx,[x1]
mov bx,320
sub bx,dx
@@1 :
mov cx, dx { Width of block to copy divided by 2 }
rep movsb
add di,bx { 320 - 48 = 272 .. or 110 in hex }
add si,bx
dec ax
jnz @@1
pop es
pop ds
end;
{ I wrote this procedure late last night, so it may not be in it's
most optimised state. Sorry :-)}
END;
{************
*************
************
************}
procedure story;
var error:byte;
xtemp,ytemp:integer;
thrustcol:integer;
thrust:real;
tempch:char;
alienchar:byte;
cycles:byte;
procedure doflames;
begin
if flames=true then begin
putshape(bigflame1off,vaddr,27,17,213,100);
putshapeover(sflame2off,vaddr,4,4,105,90);
putshapeover(sflame1off,vaddr,4,4,151,71);
putshapeover(sflame2off,vaddr,4,4,218,72);
end
else
begin
putshape(bigflame2off,vaddr,27,17,213,100);
putshapeover(sflame1off,vaddr,4,4,105,90);
putshapeover(sflame2off,vaddr,4,4,151,71);
putshapeover(sflame1off,vaddr,4,4,218,72);
outtextxy(chr(alienchar),10,10,12,0,vaddr,true);
inc(alienchar);
if alienchar>44 then alienchar:=34;
end;
flip(vaddr,vga);
vdelay(5);
flames:=not(flames);
end;
procedure puttruck(xp,yp,frame:integer;where:word);
var xtemp,into,ytemp:integer;
col:byte;
begin
for into:=0 to 7 do begin
if(into+yp>=172) then
if frame=0 then putshapeline(truck1off,where,6,8,xp,yp,into)
else putshapeline(truck2off,where,6,8,xp,yp,into);
end;
end;
procedure pauseawhile(howlong:word);
var i:word;
begin
i:=0;
repeat
waitretrace;
inc(i);
if i>howlong then exit;
until keypressed;
end;
begin
fade;
error:=loadpicsuperpacked(0,0,vaddr,false,true,'tbsobj.tb1');
for ytemp:=0 to 18 do
for xtemp:=0 to 26 do begin
ShapeTable1^[((ytemp*27)+xtemp)+bigflame1off]:=getpixel(xtemp,ytemp+2,vaddr);
ShapeTable1^[((ytemp*27)+xtemp)+bigflame2off]:=getpixel(xtemp,ytemp+21,vaddr);
end;
for ytemp:=0 to 18 do
for xtemp:=0 to 15 do begin
ShapeTable1^[((ytemp*16)+xtemp)+explo1off]:=getpixel(127+xtemp,ytemp+100,vaddr);
ShapeTable1^[((ytemp*16)+xtemp)+explo2off]:=getpixel(148+xtemp,ytemp+100,vaddr);
end;
for ytemp:=0 to 6 do
for xtemp:=0 to 15 do
ShapeTable1^[((ytemp*16)+xtemp)+rent1off]:=getpixel(168+xtemp,ytemp+100,vaddr);
for ytemp:=0 to 4 do
for xtemp:=0 to 3 do begin
ShapeTable1^[((ytemp*4)+xtemp)+sflame1off]:=getpixel(xtemp,ytemp+43,vaddr);
ShapeTable1^[((ytemp*4)+xtemp)+sflame2off]:=getpixel(xtemp,ytemp+47,vaddr);
end;
for ytemp:=0 to 18 do
for xtemp:=0 to 15 do
ShapeTable1^[((ytemp*16)+xtemp)+bargeoff]:=getpixel(xtemp+65,ytemp+100,vaddr);
for ytemp:=0 to 8 do
for xtemp:=0 to 5 do begin
ShapeTable1^[((ytemp*6)+xtemp)+truck1off]:=getpixel(xtemp+85,ytemp+100,vaddr);
ShapeTable1^[((ytemp*6)+xtemp)+truck2off]:=getpixel(xtemp+95,ytemp+100,vaddr);
end;
{******FIRST MESSAGE*******}
cls(0,vga);
outtextxy('THE STORY SO FAR...',20,20,4,0,vga,false);
unfade;
pauseawhile(300); if keypressed then if readkey=#27 then exit;
fade;
cls(0,vga);
error:=loadpicsuperpacked(0,0,vaddr2,false,true,'tbcobj.tb1');
blockmove(129,56,178,188,vaddr2,10,10,vga);
outtextxy('YOU ARE TOM BOMBEM, A STRANGE',80,10,1,0,vga,false);
outtextxy(' BUT EFFICIENT MEMBER OF',80,20,1,0,vga,false);
outtextxy(' THE LUNAR SPACE FORCE.',80,30,1,0,vga,false);
outtextxy('YOU NEVER SAY MUCH AND YOU ARE',80,50,4,0,vga,false);
outtextxy(' RARELY SEEN OUTSIDE OF ',80,60,4,0,vga,false);
outtextxy(' YOUR BLUE SPACESUIT.',80,70,4,0,vga,false);
outtextxy('YOU OFTEN GET YOURSELF IN ',80,90,2,0,vga,false);
outtextxy(' TROUBLE BY SCRATCHING',80,100,2,0,vga,false);
outtextxy(' YOUR HEAD AT INAPPROPRIATE',80,110,2,0,vga,false);
outtextxy(' TIMES.',80,120,2,0,vga,false);
outtextxy('PRESS ANY KEY....',96,185,15,0,vga,false);
unfade;
pauseawhile(900); if keypressed then if readkey=#27 then exit;
fade;
cls(0,vga);
blockmove(129,56,178,188,vaddr2,260,10,vga);
blockmove(99,104,128,185,vaddr2,287,13,vga);
outtextxy('IT IS THE YEAR 2028.',10,10,1,0,vga,false);
outtextxy('YOU HAVE BEEN SUMMONED BY',10,30,3,0,vga,false);
outtextxy(' LUNAR DICTATOR-IN-CHIEF',10,40,3,0,vga,false);
outtextxy(' VINCENT WEAVER ABOUT A',10,50,3,0,vga,false);
outtextxy(' TOP SECRET THREAT TO ',10,60,3,0,vga,false);
outtextxy(' INTERPLANETARY SECURITY.',10,70,3,0,vga,false);
outtextxy('YOU ATTEND THE BRIEFING WITH',10,90,5,0,vga,false);
outtextxy(' YOUR USUAL CONFUSED',10,100,5,0,vga,false);
outtextxy(' QUIETNESS. YOU STILL DO',10,110,5,0,vga,false);
outtextxy(' NOT UNDERSTAND YOUR OWN',10,120,5,0,vga,false);
outtextxy(' SUCCESSFULNESS.',10,130,5,0,vga,false);
outtextxy('PRESS ANY KEY....',96,185,15,0,vga,false);
unfade;
pauseawhile(900); if keypressed then if readkey=#27 then exit;
fade;
error:=loadpicsuperpacked(0,0,vga,false,true,'tbchief.tb1');
unfade;
blockmove(115,55,206,114,vga,115,55,vaddr);
blockmove(188,14,279,73,vaddr2,115,55,vga);
pauseawhile(600); if keypressed then if readkey=#27 then exit;
blockmove(115,55,206,114,vaddr,115,55,vga);
outtextxy('Ahhh.... Mr. Bombem.... ',1,1,15,0,vga,true);
pauseawhile(400); if keypressed then if readkey=#27 then exit;
outtextxy('I''ll be brief. ',1,1,15,0,vga,true);
pauseawhile(400); if keypressed then if readkey=#27 then exit;
outtextxy('Do you know how this base was founded?',1,1,15,0,vga,true);
pauseawhile(600); if keypressed then if readkey=#27 then exit;
outtextxy('No? Well watch the screen. ',1,1,15,0,vga,true);
pauseawhile(400); if keypressed then if readkey=#27 then exit;
blockmove(210,75,295,134,vaddr2,210,136,vga);
pauseawhile(300); if keypressed then if readkey=#27 then exit;
pal(250,0,0,0);
fade;
{******BARGE TAKING OFF**********}
error:=loadpicsuperpacked(0,0,vaddr2,false,true,'tbma1.tb1');
outsmalltextxy('MY WIFE AND I FOUNDED',212,3,14,0,vaddr2,false);
outsmalltextxy('THIS BASE IN 2008.',212,9,14,0,vaddr2,false);
outsmalltextxy('THE ONLY WAY TO ',212,16,13,0,vaddr2,false);
outsmalltextxy('FINANCE IT WAS TO',212,22,13,0,vaddr2,false);
outsmalltextxy('ENGAGE IN A DUBIOUS',212,28,13,0,vaddr2,false);
outsmalltextxy('BUSINESS.',212,34,13,0,vaddr2,false);
outsmalltextxy('WE LAUNCHED EARTH''S',212,41,12,0,vaddr2,false);
outsmalltextxy('TRASH INTO SPACE',212,47,12,0,vaddr2,false);
outsmalltextxy('FOR A PROFIT.',212,53,12,0,vaddr2,false);
outsmalltextxy('HERE IS FOOTAGE FROM',212,60,11,0,vaddr2,false);
outsmalltextxy('THE FINAL LAUNCH FIVE',212,66,11,0,vaddr2,false);
outsmalltextxy('YEARS AGO.',212,72,11,0,vaddr2,false);
flip(vaddr2,vaddr);
putshape(bargeoff,vaddr,16,18,141,157);
flip(vaddr,vga);
unfade;
pauseawhile(700); if keypressed then if readkey=#27 then exit;
for ytemp:=191 downto 164 do begin
if ytemp>=172 then blockmove(145,ytemp,152,ytemp+10,vaddr2,145,ytemp,vaddr)
else blockmove(145,172,152,182,vaddr2,145,172,vaddr);
puttruck(145,ytemp,ytemp mod 2,vaddr);
pauseawhile(7);
if keypressed then if readkey=#27 then exit;
flip(vaddr,vga);
end;
pauseawhile(20);
flip(vaddr2,vaddr);
putshape(bargeoff,vaddr,16,18,141,157);
thrustcol:=0;
ytemp:=157;
thrust:=0;
while ytemp>-25 do begin
thrust:=thrust+0.05;
if thrustcol<63 then inc(thrustcol);
blockmove(141,ytemp,171,ytemp+30,vaddr2,141,ytemp,vaddr);
for i:=1 to 17 do
if ytemp+i>=0 then
putshapeline(bargeoff,vaddr,16,18,141,ytemp,i);
pauseawhile(5);
if keypressed then if readkey=#27 then exit;
pal(250,thrustcol,0,0);
flip(vaddr,vga);
ytemp:=ytemp-round(thrust);
end;
pauseawhile(100);
if keypressed then if readkey=#27 then exit;
fade;
{****SECOND CHIEF*******}
error:=loadpicsuperpacked(0,0,vaddr2,false,true,'tbcobj.tb1');
error:=loadpicsuperpacked(0,0,vga,false,true,'tbchief.tb1');
blockmove(7,104,97,125,vaddr2,6,174,vga);
unfade;
outtextxy('You might wonder why this is important.',1,1,15,0,vga,true);
pauseawhile(600); if keypressed then if readkey=#27 then exit;
outtextxy('Last week we received a message. ',1,1,15,0,vga,true);
pauseawhile(600); if keypressed then if readkey=#27 then exit;
outtextxy('It is of extra-terrestrial origin. ',1,1,15,0,vga,true);
pauseawhile(600); if keypressed then if readkey=#27 then exit;
outtextxy('Watch the screen. ',1,1,15,0,vga,true);
blockmove(210,136,295,195,vaddr2,210,136,vga);
pauseawhile(300); if keypressed then if readkey=#27 then exit;
fade;
{******ALIEN DELEGATION*****}
error:=loadpicsuperpacked(0,0,vaddr2,false,true,'tbcrash.tb1');
alienchar:=34;
flip(vaddr2,vaddr);
flip(vaddr,vga);
putshape(bargeoff,vaddr,16,18,97,180);
unfade;
xtemp:=97;
ytemp:=181;
flames:=true;
while ytemp>118 do begin
blockmove(xtemp,ytemp,xtemp+20,ytemp+20,vaddr2,xtemp,ytemp,vaddr);
putshape(bargeoff,vaddr,16,18,xtemp,ytemp);
doflames;
dec(ytemp);
inc(xtemp);
pauseawhile(1);
if keypressed then if readkey=#27 then exit;
end;
blockmove(xtemp,ytemp,xtemp+30,ytemp+30,vaddr2,xtemp,ytemp,vaddr);
pal(0,63,63,63);
putshape(explo1off,vga,16,18,160,118);
pauseawhile(5);
if keypressed then if readkey=#27 then exit;
pal(0,0,0,0);
for xtemp:=0 to 10 do begin
putshapeover(explo2off,vaddr,16,18,160,118);
doflames;
putshapeover(explo1off,vaddr,16,18,160,118);
doflames;
end;
blockmove(159,114,189,144,vaddr2,159,114,vaddr);
putshapeover(rent1off,vaddr,16,6,160,115);
flip(vaddr,vga);
cycles:=0;
repeat
doflames;
inc(cycles);
until ((keypressed) or (cycles>60));
if keypressed then if readkey=#27 then exit;
{****ALIEN MESSAGE*****}
fade;
error:=loadpicsuperpacked(0,0,vga,false,true,'tbgorg.tb1');
unfade;
outtextxy('GREETINGS EARTHLINGS.',0,162,12,0,vga,false);
outtextxy('I AM GORGONZOLA THE REPULSIVE.',0,171,12,0,vga,false);
outtextxy('YOU HAVE MADE A BIG MISTAKE.',0,180,12,0,vga,false);
pauseawhile(600);
if keypressed then if readkey=#27 then exit;
outtextxy('YOUR SHIP FULL OF REFUSE HAS',0,162,12,0,vga,true);
outtextxy('DAMAGED OUR OFFICIAL PEACE ',0,171,12,0,vga,true);
outtextxy('ENVOY. IT WAS ON ITS WAY TO ',0,180,12,0,vga,true);
outtextxy('YOUR PLANET. ',0,189,12,0,vga,true);
pauseawhile(600);
if keypressed then if readkey=#27 then exit;
outtextxy('IN AN IRONIC FORM OF RETALLIATION',0,162,12,0,vga,true);
outtextxy('WE HAVE MADE YOUR TRASH EVIL AND',0,171,12,0,vga,true);
outtextxy('TURNED IT AGAINST YOU. ',0,180,12,0,vga,true);
outtextxy(' DIE EARTH SCUM! ',0,189,12,0,vga,true);
pauseawhile(600);
if keypressed then if readkey=#27 then exit;
fade;
{****** THIRD CHIEF *******}
error:=loadpicsuperpacked(0,0,vaddr2,false,true,'tbcobj.tb1');
error:=loadpicsuperpacked(0,0,vga,false,true,'tbchief.tb1');
blockmove(7,127,97,148,vaddr2,6,174,vga);
unfade;
outtextxy('Tom, our radar detects approaching ',1,1,15,0,vga,true);
pauseawhile(500); if keypressed then if readkey=#27 then exit;
outtextxy('objects. They are inside the ',1,1,15,0,vga,true);
pauseawhile(500); if keypressed then if readkey=#27 then exit;
outtextxy('orbit of Jupiter. ',1,1,15,0,vga,true);
pauseawhile(500); if keypressed then if readkey=#27 then exit;
outtextxy('You are our only hope! ',1,1,15,0,vga,true);
pauseawhile(500); if keypressed then if readkey=#27 then exit;
outtextxy('Will you fly our only spaceship ',1,1,15,0,vga,true);
pauseawhile(500); if keypressed then if readkey=#27 then exit;
outtextxy('and save the human race? ',1,1,15,0,vga,true);
pauseawhile(500); if keypressed then if readkey=#27 then exit;
blockmove(5,16,44,98,vaddr2,146,59,vga);
pauseawhile(10);
blockmove(46,16,85,98,vaddr2,146,59,vga);
pauseawhile(10);
blockmove(87,16,126,98,vaddr2,146,59,vga);
outtextxy('Scratch. Scratch. <Ow that itches>',1,1,9,0,vga,true);
pauseawhile(300); if keypressed then if readkey=#27 then exit;
outtextxy('I knew you''d do it. Good Luck! ',1,1,15,0,vga,true);
pauseawhile(600); if keypressed then if readkey=#27 then exit;
outtextxy('<Huh?> ',1,1,9,0,vga,true);
pauseawhile(600); if keypressed then if readkey=#27 then exit;
end;
begin
setmcga;
setuptb1;
setupvirtual;
error:=loadpicsuperpacked(0,0,vga,true,false,'tbma1.tb1');
story;
unfade;
settext;
end.

Binary file not shown.

View File

@ -1,292 +0,0 @@
{ TheDraw Pascal Screen Image. Date: 07/14/96 }
const
IMAGEDATA_WIDTH=80;
IMAGEDATA_DEPTH=25;
IMAGEDATA_LENGTH=4000;
IMAGEDATA : array [1..4000] of Char = (
'°', #4, '°', #4, '°', #4, '°', #4, '°', #4, ' ', #4, '°', #4,
'°', #4, '°', #4, '°', #4, '°', #4, ' ', #4, '°', #4, ' ', #4,
' ', #4, ' ', #4, '°', #4, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, '°', #4, '°', #4, '°', #4, '°', #4, ' ', #4,
' ', #4, '°', #4, '°', #4, '°', #4, '°', #4, '°', #4, ' ', #4,
'°', #4, ' ', #4, ' ', #4, ' ', #4, '°', #4, ' ', #4, '°', #4,
'°', #4, '°', #4, '°', #4, ' ', #4, ' ', #4, '°', #4, '°', #4,
'°', #4, '°', #4, '°', #4, ' ', #4, '°', #4, ' ', #4, ' ', #4,
' ', #4, '°', #4, ' ', #4, ' ', #4, ' ', #4, '°', #2, 'V', #4,
'e', #4, 'r', #4, 's', #4, 'i', #4, 'o', #4, 'n', #4, ' ', #4,
'2', #4, '.', #4, '4', #4, 'a', #4, '!', #4, '!', #4, '°', #2,
'°', #2, '°', #2, '°', #2, ' ', #2, '±', #4, '±', #4, '±', #4,
'±', #4, '±', #4, '°', #4, '±', #4, '±', #4, '±', #4, '±', #4,
'±', #4, '°', #4, '±', #4, ' ', #4, '°', #4, '°', #4, '±', #4,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, '°', #4, '±', #4,
'±', #4, '±', #4, '±', #4, ' ', #4, '°', #4, '±', #4, '±', #4,
'±', #4, '±', #4, '±', #4, '°', #4, '±', #4, ' ', #4, '°', #4,
'°', #4, '±', #4, '°', #4, '±', #4, '±', #4, '±', #4, '±', #4,
' ', #4, '°', #4, '±', #4, '±', #4, '±', #4, '±', #4, '±', #4,
'°', #4, '±', #4, ' ', #4, '°', #4, '°', #4, '±', #4, ' ', #4,
' ', #4, '°', #2, '0', #4, '7', #4, '/', #4, '1', #4, '4', #4,
'/', #4, '9', #4, '6', #4, '°', #2, '°', #2, '°', #2, '°', #2,
'°', #2, '°', #2, '°', #2, '°', #2, '°', #2, '°', #2, ' ', #2,
' ', #2, '²', #12, '²', #12, '²', #12, '²', #12, '²', #12, '±', #4,
'²', #12, '²', #12, '²', #12, '²', #12, '²', #12, '±', #4, '²', #12,
' ', #12, '±', #4, '±', #4, '²', #12, ' ', #12, ' ', #12, ' ', #12,
' ', #12, '°', #4, '±', #4, '²', #12, '²', #12, '²', #12, '²', #12,
'°', #4, '±', #4, '²', #12, '²', #12, '²', #12, '²', #12, '²', #12,
'±', #4, '²', #12, ' ', #12, '±', #4, '±', #4, '²', #12, '±', #4,
'²', #12, '²', #12, '²', #12, '²', #12, '°', #4, '±', #4, '²', #12,
'²', #12, '²', #12, '²', #12, '²', #12, '±', #4, '²', #12, ' ', #12,
'±', #4, '±', #4, '²', #12, ' ', #12, '°', #2, '°', #2, '°', #2,
'°', #2, '°', #2, '°', #2, '°', #2, '°', #2, '°', #2, '°', #2,
'°', #2, '°', #2, '°', #2, '°', #2, '°', #2, '°', #2, '°', #2,
'°', #2, '°', #2, ' ', #2, ' ', #2, '°', #4, '±', #4, '²', #12,
' ', #12, '°', #4, '±', #4, '²', #12, ' ', #12, '°', #4, '±', #4,
'²', #12, '±', #4, '²', #12, '²', #12, '°', #4, '²', #12, '²', #12,
' ', #12, ' ', #12, ' ', #12, ' ', #12, '°', #4, '±', #4, '²', #12,
'±', #4, '±', #4, ' ', #4, '²', #12, '±', #4, '²', #12, ' ', #12,
'°', #4, '±', #4, '²', #12, '±', #4, '²', #12, '²', #12, '°', #4,
'²', #12, '²', #12, '±', #4, '²', #12, '±', #4, '±', #4, ' ', #4,
'²', #12, '±', #4, '²', #12, '±', #4, '±', #4, '±', #4, '°', #4,
'±', #4, '²', #12, '²', #12, '°', #4, '²', #12, '²', #12, ' ', #12,
'°', #2, 'D', #79, 'O', #79, 'W', #79, 'N', #79, 'L', #79, 'O', #79,
'A', #79, 'D', #79, ' ', #79, 'N', #79, 'O', #79, 'W', #79, '!', #79,
'°', #2, '°', #2, '°', #2, '°', #2, '°', #2, ' ', #2, ' ', #2,
'°', #4, '±', #4, '²', #12, ' ', #12, '°', #4, '±', #4, '²', #12,
'°', #4, '°', #4, '±', #4, '²', #12, '±', #4, '²', #12, ' ', #12,
'²', #12, '±', #4, '²', #12, ' ', #12, ' ', #12, ' ', #12, ' ', #12,
'°', #4, '±', #4, '²', #12, '²', #12, '²', #12, '²', #12, '°', #4,
'±', #4, '²', #12, '°', #4, '°', #4, '±', #4, '²', #12, '±', #4,
'²', #12, ' ', #12, '²', #12, '±', #4, '²', #12, '±', #4, '²', #12,
'²', #12, '²', #12, '²', #12, '°', #4, '±', #4, '²', #12, '²', #12,
'²', #12, '²', #12, '²', #12, '±', #4, '²', #12, ' ', #12, '²', #12,
'±', #4, '²', #12, ' ', #12, '°', #2, '°', #2, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, '°', #2, '°', #2, '°', #2,
'°', #2, ' ', #2, ' ', #2, ' ', #2, '±', #4, '²', #12, ' ', #12,
' ', #12, '±', #4, '²', #12, '±', #4, '±', #4, '±', #4, '²', #12,
'±', #4, '²', #12, ' ', #12, ' ', #12, '±', #4, '²', #12, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, '±', #4, '²', #12, '±', #4,
'±', #4, '±', #4, '²', #12, '±', #4, '²', #12, '±', #4, '±', #4,
'±', #4, '²', #12, '±', #4, '²', #12, ' ', #12, ' ', #12, '±', #4,
'²', #12, '±', #4, '²', #12, '±', #4, '±', #4, '±', #4, '²', #12,
'±', #4, '²', #12, '±', #4, '±', #4, '±', #4, ' ', #4, '±', #4,
'²', #12, ' ', #12, ' ', #12, '±', #4, '²', #12, ' ', #12, '°', #2,
'N', #47, 'E', #47, 'W', #47, 'E', #47, 'S', #47, 'T', #47, ' ', #47,
'G', #47, 'A', #47, 'M', #47, 'E', #47, ' ', #47, ' ', #47, ' ', #47,
' ', #47, ' ', #47, ' ', #47, '°', #2, ' ', #2, ' ', #2, ' ', #2,
' ', #2, '²', #12, ' ', #12, ' ', #12, ' ', #12, '²', #12, '²', #12,
'²', #12, '²', #12, '²', #12, ' ', #12, '²', #12, ' ', #12, ' ', #12,
' ', #12, '²', #12, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, '²', #12, '²', #12, '²', #12, '²', #12, '²', #12, ' ', #12,
'²', #12, '²', #12, '²', #12, '²', #12, '²', #12, ' ', #12, '²', #12,
' ', #12, ' ', #12, ' ', #12, '²', #12, ' ', #12, '²', #12, '²', #12,
'²', #12, '²', #12, '²', #12, ' ', #12, '²', #12, '²', #12, '²', #12,
'²', #12, '²', #12, ' ', #12, '²', #12, ' ', #12, ' ', #12, ' ', #12,
'²', #12, ' ', #12, '°', #2, 'F', #47, 'R', #47, 'O', #47, 'M', #47,
' ', #47, 'V', #47, 'M', #47, 'W', #47, ' ', #47, 'S', #47, 'O', #47,
'F', #47, 'T', #47, 'W', #47, 'A', #47, 'R', #47, 'E', #47, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, '°', #2, '°', #2,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, '.', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, '.', #8, ' ', #8, ' ', #8,
' ', #8, ' ', #8, '.', #7, ' ', #7, ' ', #7, 'I', #1, ' ', #1,
'N', #1, ' ', #1, 'V', #1, ' ', #1, 'A', #1, ' ', #1, 'S', #1,
' ', #1, 'I', #1, ' ', #1, 'O', #1, ' ', #1, 'N', #1, ' ', #1,
' ', #1, ' ', #1, '.', #7, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, '.', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, '°', #2, 'W', #31, 'R', #31, 'I', #31, 'T', #31, 'T', #31,
'E', #31, 'N', #31, ' ', #31, 'B', #31, 'Y', #31, ' ', #31, 'M', #31,
'E', #31, '°', #2, '°', #2, '°', #2, '°', #2, '°', #2, ' ', #2,
' ', #2, ' ', #2, ' ', #2, '.', #7, ' ', #7, '.', #8, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, 'O', #9, ' ', #9, 'F', #9, ' ', #9,
' ', #9, ' ', #9, 'T', #9, ' ', #9, 'H', #9, ' ', #9, 'E', #9,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, '.', #8, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, '°', #2, '<', #31, '<', #31,
'<', #31, 'D', #31, 'E', #31, 'A', #31, 'T', #31, 'E', #31, 'R', #31,
'>', #31, '>', #31, '>', #31, ' ', #31, ' ', #15, '°', #2, '°', #2,
'°', #2, '°', #2, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, 'I', #12, ' ', #12, 'N', #12, ' ', #12, 'A', #12,
' ', #12, 'N', #12, ' ', #12, 'I', #12, ' ', #12, 'M', #12, ' ', #12,
'A', #12, ' ', #12, 'T', #12, ' ', #12, 'E', #12, ' ', #12, ' ', #12,
' ', #12, 'O', #12, ' ', #12, 'B', #12, ' ', #12, 'J', #12, ' ', #12,
'E', #12, ' ', #12, 'C', #12, ' ', #12, 'T', #12, ' ', #12, 'S', #12,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
'°', #2, '°', #2, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, '°', #2, '°', #2, '°', #2, '°', #2, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, '.', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, '.', #8, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, '.', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, '°', #2, 'O', #95, 'b', #95, 't', #95,
'a', #95, 'i', #95, 'n', #95, ' ', #95, 'a', #95, 't', #95, ':', #95,
' ', #95, ' ', #95, ' ', #95, '°', #2, '°', #2, '°', #2, '°', #2,
'°', #2, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, '.', #8,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, '.', #7, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, 'Ú', #6,
'Ä', #6, '¿', #6, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, '°', #2,
'h', #94, 't', #94, 't', #94, 'p', #94, ':', #94, '/', #94, '/', #94,
'w', #94, 'w', #94, 'w', #94, '.', #94, ' ', #95, ' ', #95, ' ', #15,
'°', #2, '°', #2, '°', #2, '°', #2, ' ', #2, ' ', #2, ' ', #2,
'.', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, '.', #7, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
'Ü', #12, 'Û', #12, 'Û', #12, 'Û', #12, 'Û', #12, 'Û', #12, 'Û', #12,
'Û', #12, 'Û', #12, 'Û', #12, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
'±', #1, '±', #2, '°', #1, ' ', #1, 'À', #6, '¿', #6, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, '°', #2, 'w', #94, 'a', #94, 'm', #94, '.', #94,
'u', #94, 'm', #94, 'd', #94, '.', #94, 'e', #94, 'd', #94, 'u', #94,
'/', #94, ' ', #82, ' ', #15, '°', #2, '°', #2, '°', #2, '°', #2,
' ', #2, ' ', #2, ' ', #2, ' ', #2, '.', #7, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, 'Ü', #4, 'ß', #76, 'ß', #76, 'ß', #76, 'ß', #76, 'ß', #76,
'ß', #76, 'ß', #76, 'Û', #76, 'Û', #12, 'Û', #12, 'ß', #12, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, '²', #1, '²', #1, '±', #2, '±', #2, '°', #1,
' ', #1, '³', #6, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, '°', #2, '~', #94,
'v', #94, 'm', #94, 'w', #94, 'e', #94, 'a', #94, 'v', #94, 'e', #94,
'r', #94, '/', #94, 't', #94, 'b', #94, '1', #94, ' ', #15, '°', #2,
'°', #2, '°', #2, '°', #2, '°', #15, '°', #15, '°', #15, '°', #15,
'°', #15, '°', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, '.', #8, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, '°', #7, '°', #7,
'°', #7, '°', #7, '°', #7, '°', #7, '°', #7, 'Û', #4, 'ß', #12,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, '.', #8, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, '±', #1,
'±', #1, '°', #2, ' ', #2, 'Ú', #6, 'Ù', #6, ' ', #6, ' ', #6,
' ', #6, '.', #8, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, '°', #2, '°', #2, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, '°', #2, '°', #2, '°', #2, '°', #2, '²', #1,
'²', #1, '±', #1, '±', #1, '±', #1, '±', #1, '°', #1, '°', #1,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
'Û', #14, 'ß', #4, 'ß', #4, 'ß', #4, 'ß', #4, 'ß', #4, 'ß', #4,
'ß', #4, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, 'À', #6, 'Â', #6, 'Ä', #6, 'Ù', #6,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, '°', #2, 'V', #79, 'i', #79,
'n', #79, 'c', #79, 'e', #79, ' ', #79, 'W', #79, 'e', #79, 'a', #79,
'v', #79, 'e', #79, 'r', #79, ' ', #79, ' ', #79, ' ', #79, ' ', #79,
'°', #2, '°', #2, '±', #2, '±', #2, 'Û', #1, '²', #1, '²', #1,
'±', #2, '±', #2, '±', #1, '°', #1, '°', #1, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, '±', #14, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
'.', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, '°', #6, '±', #6,
'²', #6, 'Û', #6, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
'°', #2, '3', #79, '2', #79, '6', #79, ' ', #79, 'F', #79, 'o', #79,
's', #79, 't', #79, 'e', #79, 'r', #79, ' ', #79, 'K', #79, 'n', #79,
'o', #79, 'l', #79, 'l', #79, ' ', #15, '°', #2, 'Û', #1, 'Û', #1,
'Û', #1, '²', #2, '²', #2, '²', #1, '²', #1, '±', #2, '±', #1,
'±', #1, '°', #1, ' ', #1, ' ', #1, ' ', #1, ' ', #1, 'Û', #14,
' ', #14, ' ', #14, ' ', #14, ' ', #14, '±', #14, ' ', #14, '.', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, '-', #8, '°', #13, '²', #14,
'²', #14, '²', #14, '²', #14, '²', #14, '²', #14, '²', #14, 'Ý', #59,
'Ý', #59, 'Û', #13, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, '°', #2, 'J', #79, 'o', #79, 'p', #79,
'p', #79, 'a', #79, ',', #79, ' ', #79, 'M', #79, 'D', #79, ' ', #79,
'2', #79, '1', #79, '0', #79, '8', #79, '5', #79, ' ', #79, ' ', #15,
'°', #2, '²', #2, '²', #2, '²', #2, '²', #2, '²', #2, '²', #2,
'Û', #1, '²', #1, '²', #1, '±', #1, '±', #1, '°', #1, ' ', #1,
' ', #1, '²', #14, ' ', #14, ' ', #14, ' ', #14, ' ', #14, '±', #14,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, '.', #7, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, '°', #2,
'°', #2, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, '°', #2, '²', #2, '²', #2, '²', #2,
'²', #2, '²', #2, 'Û', #1, 'Û', #1, 'Û', #1, '²', #1, '²', #1,
'±', #1, '±', #1, '°', #1, ' ', #1, '±', #14, ' ', #14, ' ', #14,
' ', #14, '°', #14, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, '.', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
'.', #8, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, '.', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, '°', #2, 'C', #47, 'U', #47, 'R', #47, 'R', #47,
'E', #47, 'N', #47, 'T', #47, 'L', #47, 'Y', #47, ' ', #47, '3', #47,
'0', #47, '0', #47, '+', #47, 'K', #47, ' ', #47, '°', #2, '°', #2,
'²', #2, '²', #2, '²', #2, 'Û', #1, '²', #2, 'Û', #1, 'Û', #1,
'Û', #1, 'Û', #1, '²', #1, '²', #1, '±', #1, '±', #1, '°', #14,
'°', #14, '°', #14, '°', #14, '°', #14, ' ', #14, ' ', #14, ' ', #14,
' ', #14, '.', #8, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, '.', #7, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, '°', #2, 'O', #47,
'F', #47, ' ', #47, '.', #47, 'P', #47, 'P', #47, 'P', #47, ' ', #47,
'G', #47, 'R', #47, 'A', #47, 'P', #47, 'H', #47, 'I', #47, 'C', #47,
'S', #47, ' ', #15, '°', #2, 'Û', #1, '²', #2, '²', #2, 'Û', #1,
'Û', #1, 'Û', #1, 'Û', #1, 'Û', #1, 'Û', #1, '²', #1, '²', #1,
'±', #1, '±', #1, '°', #1, ' ', #1, ' ', #1, '±', #14, ' ', #14,
'±', #14, '±', #14, '±', #14, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, '°', #2, '°', #2, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, '°', #2, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15,
' ', #15, ' ', #15, ' ', #15, ' ', #15, ' ', #15);

Binary file not shown.

Binary file not shown.

1752
tbs1.pas

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@ -1,744 +0,0 @@
unit VMWgraph;
{$X+} {$G+}
INTERFACE
const charset:array[0..255,0..7] of byte=
((0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
{32' '}(0,0,0,0,0,0,0,0),($78,$78,$78,$30,$30,$00,$30,$00),($34,$34,$00,$00,$00,$00,$00,$00),
{35'#'}($28,$7C,$28,$28,$7C,$28,$28,$00),($10,$7C,$50,$7C,$14,$7C,$10,$00),
{37'$'}($00,$62,$64,$08,$10,$26,$46,$00),($00,$38,$40,$20,$54,$48,$34,$00),
{39'''}($30,$30,$10,$00,$00,$00,$00,$00),($08,$10,$20,$20,$20,$10,$08,$00),
{41')'}($20,$10,$08,$08,$08,$10,$20,$00),($92,$54,$38,$FE,$38,$54,$92,$00),
{43'+'}($00,$10,$10,$7C,$10,$10,$00,$00),($00,$00,$00,$00,$00,$10,$10,$20),
{45'-'}($00,$00,$00,$7C,$00,$00,$00,$00),($00,$00,$00,$00,$00,$30,$30,$00),
{47'/'}($02,$06,$0C,$18,$30,$E0,$C0,$00),($FE,$C6,$CE,$DA,$F2,$E2,$FE,$00),
{49'1'}($30,$70,$B0,$30,$30,$30,$FC,$00),($78,$84,$08,$10,$20,$40,$FC,$00),
{51'3'}($78,$84,$04,$3C,$04,$84,$78,$00),($C4,$C4,$C4,$FC,$04,$04,$04,$00),
{53'5'}($FC,$C0,$C0,$F8,$04,$04,$F8,$00),($7C,$C4,$C0,$F8,$C4,$C4,$F8,$00),
{55'7'}($FC,$84,$08,$10,$10,$20,$20,$00),($78,$C4,$C4,$78,$C4,$C4,$78,$00),
{57'9'}($7C,$C4,$C4,$7C,$04,$04,$04,$00),($00,$00,$30,$30,$00,$30,$30,$00),
{59';'}($00,$00,$30,$30,$00,$10,$10,$20),($18,$30,$60,$C0,$60,$30,$18,$00),
{61'='}($00,$00,$7C,$00,$7C,$00,$00,$00),($C0,$60,$30,$18,$30,$60,$C0,$00),
{63'?'}($78,$CC,$98,$30,$30,$00,$30,$00),($FC,$84,$BC,$A4,$BC,$80,$FC,$00),
{65'A'}($FE,$C2,$C2,$FE,$C2,$C2,$C2,$00),($F8,$C8,$C8,$FC,$C2,$C2,$FC,$00),
{67'C'}($FE,$C2,$C0,$C0,$C0,$C0,$FE,$00),($F8,$C4,$C2,$C2,$C2,$C2,$FC,$00),
{69'E'}($FE,$C0,$C0,$FE,$C0,$C0,$FE,$00),($FE,$C0,$C0,$FE,$C0,$C0,$C0,$00),
{71'G'}($FE,$C2,$C0,$CE,$C2,$C2,$FE,$00),($C2,$C2,$C2,$FE,$C2,$C2,$C2,$00),
{73'I'}($FE,$30,$30,$30,$30,$30,$FE,$00),($0E,$02,$02,$02,$C2,$64,$38,$00),
{75'K'}($C2,$C2,$CC,$F0,$CC,$C2,$C2,$00),($C0,$C0,$C0,$C0,$C0,$C0,$FE,$00),
{77'M'}($C2,$E6,$EE,$DA,$D2,$C2,$C2,$00),($C2,$E2,$F2,$DA,$CA,$C6,$C6,$00),
{79'O'}($FE,$C2,$C2,$C2,$C2,$C2,$FE,$00),($FE,$C2,$C2,$FE,$C0,$C0,$C0,$00),
{81'Q'}($FE,$C2,$C2,$C2,$CA,$C6,$FE,$00),($FE,$C2,$C2,$FE,$C8,$C4,$C2,$00),
{83'S'}($FE,$C0,$C0,$FE,$02,$82,$FE,$00),($FE,$30,$30,$30,$30,$30,$30,$00),
{85'U'}($C2,$C2,$C2,$C2,$C2,$C2,$FE,$00),($C2,$C2,$C4,$64,$68,$38,$30,$00),
{87'W'}($C2,$C2,$C2,$D2,$F2,$FA,$C6,$00),($C2,$C6,$3C,$18,$3C,$C6,$C2,$00),
{89'Y'}($C2,$C2,$64,$68,$30,$30,$30,$00),($FE,$04,$08,$30,$60,$C0,$FE,$00),
{91'['}($F8,$C0,$C0,$C0,$C0,$C0,$F8,$00),($C0,$E0,$30,$18,$0C,$06,$02,$00),
{93']'}($1E,$02,$02,$02,$02,$02,$1E,$00),($10,$28,$44,$00,$00,$00,$00,$00),
{95'_'}($00,$00,$00,$00,$00,$00,$FF,$00),($08,$04,$02,$00,$00,$00,$00,$00),
{97'a'}($00,$00,$7C,$04,$7C,$44,$7E,$00),($C0,$40,$40,$7C,$44,$44,$FC,$00),
{99'c'}($00,$00,$00,$7C,$40,$40,$7C,$00),($06,$04,$04,$7C,$44,$44,$7E,$00),
{101e'}($00,$00,$7C,$44,$7C,$40,$7C,$00),($10,$28,$20,$70,$20,$20,$70,$00),
{103g'}($00,$00,$04,$7C,$44,$7C,$04,$7C),($E0,$40,$40,$7C,$44,$44,$EE,$00),
{105i'}($00,$10,$00,$30,$10,$10,$78,$00),($00,$04,$00,$0C,$04,$04,$44,$3C),
{107k'}($C0,$40,$40,$58,$60,$50,$48,$00),($30,$10,$10,$10,$10,$10,$78,$00),
{109m'}($00,$00,$00,$E8,$54,$54,$54,$00),($00,$00,$00,$F0,$48,$48,$48,$00),
{111o'}($00,$00,$00,$7C,$44,$44,$7C,$00),($00,$00,$00,$FC,$44,$7C,$40,$E0),
{113q'}($00,$00,$00,$7E,$44,$7C,$04,$0E),($00,$00,$00,$28,$34,$20,$70,$00),
{115s'}($00,$00,$7C,$40,$7C,$04,$7C,$00),($00,$20,$70,$20,$20,$28,$38,$00),
{117u'}($00,$00,$00,$C8,$48,$48,$7C,$00),($00,$00,$00,$44,$44,$28,$10,$00),
{119w'}($00,$00,$00,$42,$42,$5A,$66,$00),($00,$00,$66,$34,$18,$34,$66,$00),
{121y'}($00,$00,$00,$44,$44,$7C,$04,$7C),($00,$00,$7C,$08,$10,$20,$7C,$00),
{123|'}($30,$20,$20,$40,$20,$20,$30,$00),($10,$10,$10,$00,$10,$10,$10,$00),
{125~'}($18,$08,$08,$04,$08,$08,$18,$00),($3A,$6C,$00,$00,$00,$00,$00,$00),
{127''}($00,$54,$2A,$54,$2A,$54,$2A,$00),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0));
CONST VGA = $a000;
var unfadered:array[0..255] of byte;
unfadeblue:array[0..255] of byte;
unfadegreen:array[0..255] of byte;
Procedure SetMCGA;
Procedure SetText; { This procedure returns you to text mode. }
Procedure Cls (Col : Byte; Where:word);
Procedure Putpixel (X,Y : Integer; Col : Byte; where:word);
function getpixel(x,y,where:word):byte;
Procedure Pal(Col,R,G,B : Byte);
Procedure GetPal(Col : Byte; Var R,G,B : Byte);
procedure egaputpix(x,y,col,where:word);
procedure WaitRetrace;
procedure flip(source,dest:Word);
procedure outtext(x,y,rowochar,col,background:integer;num:byte;where:word;overwrite:boolean);
procedure egaouttext(x,y,col:integer;num:byte;where:word;overwrite:boolean);
procedure outtextxy(st:string;x,y,rowochar,col,background:integer;where:word;overwrite:boolean);
procedure egaouttextxy(st:string;x,y,col:integer;where:word;overwrite:boolean);
function sgn(a:real):integer;
procedure line(a,b,c,d,col:integer;where:word);
procedure fade;
procedure unfade;
procedure SavePicSuperPacked(x1,y1,x2,y2,maxcolors:integer;filename:string);
function loadpicsuperpacked(x1,y1:integer;where:word;fil:string):byte;
procedure box(x1,y1,x2,y2,col:integer;where:word);
procedure vdelay(howlong:integer);
IMPLEMENTATION
Procedure SetMCGA; { This procedure gets you into 320x200x256 mode. }
BEGIN
asm
mov ax,0013h
int 10h
end;
END;
Procedure SetText; { This procedure returns you to text mode. }
BEGIN
asm
mov ax,0003h
int 10h
end;
END;
Procedure Cls (Col : Byte; Where:word);
{ This clears the screen to the specified color }
BEGIN
asm
push es
mov cx, 32000;
mov es,[where]
xor di,di
mov al,[col]
mov ah,al
rep stosw
pop es
End;
END;
Procedure Putpixel (X,Y : Integer; Col : Byte; where:word);
{ This puts a pixel on the screen by writing directly to memory. }
BEGIN
Asm
push ds
push es
mov ax,[where]
mov es,ax
mov bx,[X]
mov dx,[Y]
push bx {; and this again for later}
mov bx, dx {; bx = dx}
mov dh, dl {; dx = dx * 256}
xor dl, dl
shl bx, 1
shl bx, 1
shl bx, 1
shl bx, 1
shl bx, 1
shl bx, 1 {; bx = bx * 64}
add dx, bx {; dx = dx + bx (ie y*320)}
pop bx {; get back our x}
add bx, dx {; finalise location}
mov di, bx
{; es:di = where to go}
xor al,al
mov ah, [Col]
mov es:[di],ah
pop es
pop ds
End;
END;
function getpixel(x,y,where:word):byte;
begin
getpixel:=mem[where:x+(y*320)];
end;
Procedure Pal(Col,R,G,B : Byte);
{ This sets the Red, Green and Blue values of a certain color }
Begin
asm
mov dx,3c8h
mov al,[col]
out dx,al
inc dx
mov al,[r]
out dx,al
mov al,[g]
out dx,al
mov al,[b]
out dx,al
end;
End;
procedure WaitRetrace; assembler;
{ This waits for a vertical retrace to reduce snow on the screen }
label
l1, l2;
asm
mov dx,3DAh
l1:
in al,dx
and al,08h
jnz l1
l2:
in al,dx
and al,08h
jz l2
end;
Procedure GetPal(Col : Byte; Var R,G,B : Byte);
{ This gets the Red, Green and Blue values of a certain color }
Var
rr,gg,bb : Byte;
Begin
asm
mov dx,3c7h
mov al,col
out dx,al
add dx,2
in al,dx
mov [rr],al
in al,dx
mov [gg],al
in al,dx
mov [bb],al
end;
r := rr;
g := gg;
b := bb;
end;
procedure egaputpix(x,y,col,where:word);
VAR red,blue,green,inte,P1,P2:byte;
col2:word;
procedure semiput(x,y:word;col,p1,p2:byte;where:word);
var temp:word;
q3:word;
old,q1,q2,qz:byte;
label looper,loop2,loop3,looper2;
begin
asm
mov ax,where {Set Where screen is}
mov es,ax
mov ax,y {The following is 80*y}
mov dx,y {which makes (640*y)/8 uneccessary}
shl ax,6
shl dx,4
add ax,dx
mov temp,ax {saves temporary address}
mov bx,x {gets X DIV 8 and adds it to temp}
shl bx,5
mov dl,bh
mov dh,00
sub bh,bh
shr bx,5
mov q2,bl {gets X MOD 8 for actual pixel}
mov ax,temp
add ax,dx
mov temp,ax
{inegaports}
mov dx,$3Ce {Sets us bitplane for input}
mov al,4
out dx,al
mov dx,$3Cf
mov al,p1
out dx,al
{old} {Gets old pixel values}
mov di,temp
mov al,es:[di]
mov ah,00
mov cl,q2
mov ch,00
JCXZ loop2
looper:
shl ax,1
loop looper
loop2:
mov dh,ah
mov ah,00
shl ax,1
mov ah,col
shr ax,1
mov ah,dh
mov cl,q2
mov ch,00
jcxz loop3
looper2:
shr ax,1
loop looper2
loop3:
mov qz,al
{Logically gets old and new}
{out}
mov dx,$3C4
mov al,2
out dx,al
mov dx,$3C5
mov al,p2
out dx,al {rewrites pixel}
{mem}
mov di,temp
mov al,qz
mov es:[di],al
end;
end;
begin
asm
mov bx,col
shl bx,4
shl bx,1
mov inte,bh
sub bh,bh
shl bx,1
mov red,bh
sub bh,bh
shl bx,1
mov green,bh
sub bh,bh
shl bx,1
mov blue,bh
end;
p1:=0; p2:=1; col2:=0;
if blue= 1 then col2:=1;
semiput(x,y,col2,p1,p2,vga);
p1:=1; p2:=2; col2:=0;
if green=1 then col2:=1;
semiput(x,y,col2,p1,p2,vga);
p1:=2; p2:=4; col2:=0;
if red=1 then col2:=1;
semiput(x,y,col2,p1,p2,vga);
p1:=3; p2:=8; col2:=0;
if inte=1 then col2:=1;
semiput(x,y,col2,p1,p2,vga);
end;
procedure flip(source,dest:Word);
{ This copies the entire screen at "source" to destination }
begin
asm
push ds
mov ax, [Dest]
mov es, ax
mov ax, [Source]
mov ds, ax
xor si, si
xor di, di
mov cx, 32000
rep movsw
pop ds
end;
end;
procedure outtext(x,y,rowochar,col,background:integer;num:byte;where:word;overwrite:boolean);
label l0105; {^-15=all, 0-7= that row}
var n,k,l,o,min,max,qwerty:byte;
begin
if rowochar=15 then begin min:=0; max:=7; end
else begin min:=rowochar; max:=rowochar; end;
qwerty:=0;
for n:=min to max do begin {Loop through charachter}
if rowochar=15 then qwerty:=n;
o:=charset[num,n]; {array in Hex}
for l:=0 to 7 do begin
asm {Hex to binary decoder}
mov bl,o {mov hex into o}
mov dl,00
rcl bl,1 {Rotate O left into carry}
adc dl,00h {Add the carry into dl}
mov o,bl {Save O}
mov k,dl {Copy Dl (if carry) into k}
end;
if k=1 then putpixel(x+l,y+qwerty,col,where)
else if overwrite then putpixel(x+l,y+qwerty,background,where);
end;
end;
end;
procedure egaouttext(x,y,col:integer;num:byte;where:word;overwrite:boolean);
label l0105;
var n,k,l,o:byte;
begin
for n:=0 to 7 do begin {Loop through charachter}
o:=charset[num,n]; {array in Hex}
for l:=0 to 7 do begin
asm {Hex to binary decoder}
mov bl,o {mov hex into o}
mov dl,00
rcl bl,1 {Rotate O left into carry}
adc dl,00h {Add the carry into dl}
mov o,bl {Save O}
mov k,dl {Copy Dl (if carry) into k}
end;
if k=1 then egaputpix(x+l,y+n,col,where)
else if overwrite then egaputpix(x+l,y+n,0,where);
end;
end;
end;
procedure outtextxy(st:string;x,y,rowochar,col,background:integer;where:word;overwrite:boolean);
var l,len,i,xadd,yadd:integer;
begin
xadd:=0; yadd:=y;
len:=length(St);
l:=1;
repeat
outtext(x+xadd,yadd,rowochar,col,background,ord(st[l]),where,overwrite);
inc(xadd,8);
inc(l,1);
if (xadd>311) then begin xadd:=0; inc(yadd,8) end;
if (ord(st[l]))=13 then begin xadd:=0; inc(yadd,8); inc(l,1); end;
until l>=(len+1);
end;
procedure egaouttextxy(st:string;x,y,col:integer;where:word;overwrite:boolean);
var l,len,i,xadd,yadd:integer;
begin
xadd:=0; yadd:=y;
len:=length(St);
l:=1;
repeat
egaouttext(x+xadd,yadd,col,ord(st[l]),where,overwrite);
inc(xadd,8);
inc(l,1);
if (xadd>311) then begin xadd:=0; inc(yadd,8) end;
if (ord(st[l]))=13 then begin xadd:=0; inc(yadd,8); inc(l,1); end;
until l=(len+1);
end;
function sgn(a:real):integer;
begin
if a>0 then sgn:=+1;
if a<0 then sgn:=-1;
if a=0 then sgn:=0;
end;
procedure line(a,b,c,d,col:integer;where:word);
var u,s,v,d1x,d1y,d2x,d2y,m,n:real;
i:integer;
begin
u:= c - a;
v:= d - b;
d1x:= SGN(u);
d1y:= SGN(v);
d2x:= SGN(u);
d2y:= 0;
m:= ABS(u);
n := ABS(v);
IF NOT (M>N) then
BEGIN
d2x := 0 ;
d2y := SGN(v);
m := ABS(v);
n := ABS(u);
END;
s := INT(m / 2);
FOR i := 0 TO round(m) DO
BEGIN
putpixel(a,b,col,where);
s := s + n;
IF not (s<m) THEN
BEGIN
s := s - m;
a:= a +round(d1x);
b := b + round(d1y);
END
ELSE
BEGIN
a := a + round(d2x);
b := b + round(d2y);
END;
end;
END;
procedure fade;
var i,j:integer;
r,g,b:byte;
begin
for i:=0 to 255 do begin
getpal(i,r,g,b);
unfadered[i]:=r;
unfadeblue[i]:=b;
unfadegreen[i]:=g;
end;
for i:=0 to 63 do begin
for j:=0 to 255 do begin
getpal(j,r,g,b);
if r>0 then dec(r);
if g>0 then dec(g);
if b>0 then dec(b);
pal(j,r,g,b);
end;
end;
end;
procedure unfade;
var i,j:integer;
r,g,b:byte;
begin
for i:=0 to 63 do begin
for j:=0 to 255 do begin
getpal(j,r,g,b);
if r<unfadered[j] then inc(r);
if g<unfadegreen[j] then inc(g);
if b<unfadeblue[j] then inc(b);
pal(j,r,g,b);
end;
end;
end;
procedure SavePicSuperPacked(x1,y1,x2,y2,maxcolors:integer;filename:string);
var buffer:array[0..255] of byte;
f:file;
col,x,y,xsize,ysize,buffpointer,i,oldcol,numacross:integer;
header:string;
byte1,byte2,byte3,temp:byte;
procedure integer23bytes(inter1,inter2:integer);
var temp1,temp2,temp3,temp:byte;
begin
asm
mov ax,inter1
shl ax,1
shl ax,1
shl ax,1
shl ax,1
mov temp1,ah
sub ah,ah
shr ax,1
shr ax,1
shr ax,1
shr ax,1
mov temp,al
mov ax,inter2
mov temp3,al
shr ax,1
shr ax,1
shr ax,1
shr ax,1
mov ah,temp
shl ax,1
shl ax,1
shl ax,1
shl ax,1
mov temp2,ah
end;
byte1:=temp1;
byte2:=temp2;
byte3:=temp3;
end;
procedure writebuff2disk;
begin
blockwrite(f,buffer,1);
buffpointer:=0;
end;
procedure writetemps2buffer;
begin
if buffpointer>=253 then writebuff2disk;
buffer[buffpointer]:=byte1;
buffer[buffpointer+1]:=byte2;
buffer[buffpointer+2]:=byte3;
inc(buffpointer,3);
end;
begin
header:='PAINTPROV4.00';
assign(f,filename);
rewrite(f,256);
buffpointer:=0;
for i:=1 to 13 do buffer[i-1]:=ord(header[i]);
buffpointer:=13;
xsize:=abs(x2-x1);
ysize:=abs(y2-y1);
integer23bytes(xsize,ysize);
writetemps2buffer;
integer23bytes(maxcolors,0);
writetemps2buffer;
for y:=y1 to y2 do begin
oldcol:=getpixel(x1,y,vga); numacross:=1;
for x:=(x1+1) to x2 do begin
col:=getpixel(x,y,vga);
if col=oldcol then inc(numacross)
else begin
integer23bytes(oldcol,numacross);
writetemps2buffer;
numacross:=1;
end;
oldcol:=col;
end;
integer23bytes(col,numacross);
writetemps2buffer;
end;
for x:=buffpointer to 254 do buffer[x]:=255;
buffer[255]:=90;
writebuff2disk;
close(f);
end;
function loadpicsuperpacked(x1,y1:integer;where:word;fil:string):byte;
var buffer:array[0..255] of byte;
f:file;
col,x,y,xsize,ysize,buffpointer,i,oldcol,
tempint1,tempint2,numacross:integer;
header:string;
lastread,done:boolean;
temp7:string;
procedure readbuffer;
begin
blockread(f,buffer,1);
if buffer[255]=90 then lastread:=true;
end;
procedure sixbytes2twoint;
var temp1,temp2,temp3:byte;
int1,int2:integer;
begin
if buffpointer>=253 then begin
readbuffer;
buffpointer:=0;
end;
if not done then begin
temp1:=buffer[buffpointer];
temp2:=buffer[buffpointer+1];
temp3:=buffer[buffpointer+2];
if (temp1=255) and (temp2=255) and (temp3=255) then
done:=true;
inc(buffpointer,3);
asm
mov ah,temp1
mov al,temp2
shr ax,1
shr ax,1
shr ax,1
shr ax,1
mov int1,ax
mov ah,temp2
mov al,temp3
shl ah,1
shl ah,1
shl ah,1
shl ah,1
shr ah,1
shr ah,1
shr ah,1
shr ah,1
mov int2,ax
end;
tempint1:=int1;
tempint2:=int2;
end;
end;
label ender;
begin
done:=false;
header:='PAINTPROV4.00';
assign(f,fil);
reset(f,256);
readbuffer;
buffpointer:=0;
temp7:=header;
for i:=1 to 13 do temp7[i]:=chr(buffer[i-1]);
if temp7<>header then begin
loadpicsuperpacked:=01;
exit;
end;
buffpointer:=13;
sixbytes2twoint;
xsize:=tempint1;
ysize:=tempint2;
sixbytes2twoint;
x:=x1;
y:=y1;
repeat
sixbytes2twoint;
if done then goto ender;
col:=tempint1;
numacross:=tempint2;
for i:=x to (x+numacross) do putpixel(i,y,col,where);
if (x+numacross)>xsize+x1 then begin
inc(y);
x:=x1;
numacross:=0;
end;
x:=x+numacross;
ender:
until done=true;
close(f);
end;
procedure box(x1,y1,x2,y2,col:integer;where:word);
begin
line(x1,y1,x1,y2,col,where);
line(x1,y2,x2,y2,col,where);
line(x2,y2,x2,y1,col,where);
line(x2,y1,x1,y1,col,where);
end;
procedure vdelay(howlong:integer);
var i:integer;
begin
for i:=1 to howlong do waitretrace;
end;
begin
end.