Upload
This commit is contained in:
commit
43352ff262
1291 changed files with 220976 additions and 0 deletions
7
FOREST/AOS1.PAS
Normal file
7
FOREST/AOS1.PAS
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
unit aos1;
|
||||
{$L pos1.obj}
|
||||
interface
|
||||
procedure posi1;far;
|
||||
implementation
|
||||
procedure posi1;external;
|
||||
end.
|
||||
BIN
FOREST/AOS1.TPU
Normal file
BIN
FOREST/AOS1.TPU
Normal file
Binary file not shown.
7
FOREST/AOS2.PAS
Normal file
7
FOREST/AOS2.PAS
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
unit aos2;
|
||||
{$L pos2.obj}
|
||||
interface
|
||||
procedure posi2;far;
|
||||
implementation
|
||||
procedure posi2;external;
|
||||
end.
|
||||
BIN
FOREST/AOS2.TPU
Normal file
BIN
FOREST/AOS2.TPU
Normal file
Binary file not shown.
7
FOREST/AOS3.PAS
Normal file
7
FOREST/AOS3.PAS
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
unit aos3;
|
||||
{$L pos3.obj}
|
||||
interface
|
||||
procedure posi3;far;
|
||||
implementation
|
||||
procedure posi3;external;
|
||||
end.
|
||||
BIN
FOREST/AOS3.TPU
Normal file
BIN
FOREST/AOS3.TPU
Normal file
Binary file not shown.
BIN
FOREST/BACK1.LBM
Normal file
BIN
FOREST/BACK1.LBM
Normal file
Binary file not shown.
7
FOREST/BGR.PAS
Normal file
7
FOREST/BGR.PAS
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
unit bgr;
|
||||
{$L hillback.obj}
|
||||
interface
|
||||
procedure hback;far;
|
||||
implementation
|
||||
procedure hback;external;
|
||||
end.
|
||||
BIN
FOREST/BGR.TPU
Normal file
BIN
FOREST/BGR.TPU
Normal file
Binary file not shown.
BIN
FOREST/BP.DSK
Normal file
BIN
FOREST/BP.DSK
Normal file
Binary file not shown.
BIN
FOREST/BP.TP
Normal file
BIN
FOREST/BP.TP
Normal file
Binary file not shown.
4
FOREST/DP
Normal file
4
FOREST/DP
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
Volume in drive H is DOS_UTILS Serial number is 1AA1:BA79
|
||||
0 bytes in 0 file(s)
|
||||
51,433,472 bytes free
|
||||
4
FOREST/DP2
Normal file
4
FOREST/DP2
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
Volume in drive H is DOS_UTILS Serial number is 1AA1:BA79
|
||||
0 bytes in 0 file(s)
|
||||
51,435,520 bytes free
|
||||
BIN
FOREST/DP_PREFS
Normal file
BIN
FOREST/DP_PREFS
Normal file
Binary file not shown.
BIN
FOREST/FINAL.LBM
Normal file
BIN
FOREST/FINAL.LBM
Normal file
Binary file not shown.
BIN
FOREST/FINAL2.LBM
Normal file
BIN
FOREST/FINAL2.LBM
Normal file
Binary file not shown.
BIN
FOREST/FONA.LBM
Normal file
BIN
FOREST/FONA.LBM
Normal file
Binary file not shown.
BIN
FOREST/FONA2.LBM
Normal file
BIN
FOREST/FONA2.LBM
Normal file
Binary file not shown.
BIN
FOREST/GREEN.CLX
Normal file
BIN
FOREST/GREEN.CLX
Normal file
Binary file not shown.
BIN
FOREST/HILLBACK.CLX
Normal file
BIN
FOREST/HILLBACK.CLX
Normal file
Binary file not shown.
BIN
FOREST/HILLBACK.GIF
Normal file
BIN
FOREST/HILLBACK.GIF
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 36 KiB |
BIN
FOREST/HILLBACK.LBM
Normal file
BIN
FOREST/HILLBACK.LBM
Normal file
Binary file not shown.
BIN
FOREST/HILLBACK.OBJ
Normal file
BIN
FOREST/HILLBACK.OBJ
Normal file
Binary file not shown.
BIN
FOREST/KOE.GIF
Normal file
BIN
FOREST/KOE.GIF
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 36 KiB |
BIN
FOREST/KOE.LBM
Normal file
BIN
FOREST/KOE.LBM
Normal file
Binary file not shown.
46
FOREST/KOE.PAS
Normal file
46
FOREST/KOE.PAS
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
uses crt;
|
||||
var f : file;
|
||||
buf : array[0..30000] of byte;
|
||||
font : array[0..237*31] of byte;
|
||||
x : word;
|
||||
begin
|
||||
asm
|
||||
mov ax,$13
|
||||
int $10
|
||||
end;
|
||||
|
||||
assign(f,'pos1.dat');
|
||||
reset(f,1);
|
||||
blockread(f,buf,filesize(f));
|
||||
close(f);
|
||||
|
||||
fillchar(font,sizeof(font),#0);
|
||||
for x := 0 to 30 do font[x*237+20] := 15;
|
||||
for x := 0 to 30 do font[x*237+21] := 15;
|
||||
|
||||
asm
|
||||
mov ax,$a000
|
||||
mov es,ax
|
||||
mov si,offset buf
|
||||
|
||||
mov bx,offset font
|
||||
|
||||
mov dx,237*31
|
||||
@a: lodsw
|
||||
or ax,ax
|
||||
je @no
|
||||
mov cx,ax
|
||||
@b: lodsw
|
||||
mov di,ax
|
||||
mov al,byte ptr ds:[bx]
|
||||
mov byte ptr es:[di],al
|
||||
loop @b
|
||||
@no:
|
||||
inc bx
|
||||
dec dx
|
||||
jnz @a
|
||||
end;
|
||||
|
||||
|
||||
repeat until keypressed;
|
||||
end.
|
||||
BIN
FOREST/LOGO.LBM
Normal file
BIN
FOREST/LOGO.LBM
Normal file
Binary file not shown.
1
FOREST/MAKEOB.BAT
Normal file
1
FOREST/MAKEOB.BAT
Normal file
|
|
@ -0,0 +1 @@
|
|||
binobj hillback.clx hillback hback
|
||||
BIN
FOREST/O.SCI
Normal file
BIN
FOREST/O.SCI
Normal file
Binary file not shown.
BIN
FOREST/O2.SCI
Normal file
BIN
FOREST/O2.SCI
Normal file
Binary file not shown.
BIN
FOREST/POS1.DAT
Normal file
BIN
FOREST/POS1.DAT
Normal file
Binary file not shown.
BIN
FOREST/POS1.OBJ
Normal file
BIN
FOREST/POS1.OBJ
Normal file
Binary file not shown.
BIN
FOREST/POS1.TPU
Normal file
BIN
FOREST/POS1.TPU
Normal file
Binary file not shown.
BIN
FOREST/POS2.DAT
Normal file
BIN
FOREST/POS2.DAT
Normal file
Binary file not shown.
BIN
FOREST/POS2.OBJ
Normal file
BIN
FOREST/POS2.OBJ
Normal file
Binary file not shown.
BIN
FOREST/POS2.TPU
Normal file
BIN
FOREST/POS2.TPU
Normal file
Binary file not shown.
BIN
FOREST/POS3.DAT
Normal file
BIN
FOREST/POS3.DAT
Normal file
Binary file not shown.
BIN
FOREST/POS3.OBJ
Normal file
BIN
FOREST/POS3.OBJ
Normal file
Binary file not shown.
BIN
FOREST/POS3.TPU
Normal file
BIN
FOREST/POS3.TPU
Normal file
Binary file not shown.
218
FOREST/READ.PAS
Normal file
218
FOREST/READ.PAS
Normal file
|
|
@ -0,0 +1,218 @@
|
|||
uses crt,aos1,aos2,aos3,bgr;
|
||||
|
||||
const veke = 2800;
|
||||
|
||||
procedure setrgb(c,r,g,b:byte);
|
||||
begin
|
||||
port[$3c8] := c;
|
||||
port[$3c9] := r;
|
||||
port[$3c9] := g;
|
||||
port[$3c9] := b;
|
||||
end;
|
||||
|
||||
var frames : word;
|
||||
w : word;
|
||||
|
||||
|
||||
procedure waitr;
|
||||
begin
|
||||
asm
|
||||
mov bx,1
|
||||
int 0fch
|
||||
mov frames,ax
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
function dis_exit:boolean;
|
||||
var a : byte;
|
||||
begin
|
||||
asm
|
||||
mov bx,2
|
||||
int 0fch
|
||||
mov a,al
|
||||
end;
|
||||
if a = 0 then dis_exit := false else dis_exit := true;
|
||||
end;
|
||||
|
||||
var f : file;
|
||||
inx : word;
|
||||
y,x,t : word;
|
||||
pal : array[0..768] of byte;
|
||||
font : array[0..320*31] of byte;
|
||||
fpal,tmppal : array[0..768] of byte;
|
||||
scp,sss:word;
|
||||
|
||||
{$L routines.obj}
|
||||
{ dx = Bground seg,
|
||||
ax = pos seg,
|
||||
si = pos ofs,
|
||||
cx = font seg,
|
||||
bx = font ofs }
|
||||
|
||||
procedure putrouts;far;external;
|
||||
|
||||
procedure scr(pos:byte);
|
||||
begin
|
||||
case pos of
|
||||
|
||||
0:asm
|
||||
mov dx,seg hback
|
||||
mov ax,seg posi1
|
||||
mov si,offset posi1
|
||||
mov cx,seg font
|
||||
mov bx,offset font
|
||||
add bx,scp
|
||||
call putrouts
|
||||
end;
|
||||
1:asm
|
||||
mov dx,seg hback
|
||||
mov ax,seg posi2
|
||||
mov si,offset posi2
|
||||
mov cx,seg font
|
||||
mov bx,offset font
|
||||
add bx,scp
|
||||
call putrouts
|
||||
end;
|
||||
2:asm
|
||||
mov dx,seg hback
|
||||
mov ax,seg posi3
|
||||
mov si,offset posi3
|
||||
mov cx,seg font
|
||||
mov bx,offset font
|
||||
add bx,scp
|
||||
call putrouts
|
||||
inc scp
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
var frame : word;
|
||||
quit : word;
|
||||
ch : char;
|
||||
perse : boolean;
|
||||
fadeout : boolean;
|
||||
fp : byte;
|
||||
begin
|
||||
asm
|
||||
mov ax,$13
|
||||
int $10
|
||||
|
||||
xor bx,bx
|
||||
int 0fch
|
||||
|
||||
end;
|
||||
|
||||
assign(f,'o.sci');
|
||||
reset(f,1);
|
||||
for x := 0 to 30 do
|
||||
begin
|
||||
seek(f,x*320+778);
|
||||
blockread(f,font[x*237],237);
|
||||
end;
|
||||
close(f);
|
||||
|
||||
for x := 0 to sizeof(font) do if font[x] > 0 then inc(font[x],128);
|
||||
move(mem[seg(hback):ofs(hback)+10],pal,768);
|
||||
move(mem[seg(hback):ofs(hback)+778], mem[seg(hback):ofs(hback)], 64000);
|
||||
for x := 0 to 255 do setrgb(x,0,0,0);
|
||||
move(mem[seg(hback):ofs(hback)],mem[$a000:0],64000);
|
||||
|
||||
move(pal,tmppal,768);
|
||||
fillchar(tmppal,32*3,#0);
|
||||
fillchar(tmppal[128*3],32*3,#0);
|
||||
fillchar(fpal,768,#0);
|
||||
|
||||
w := 1; { Wait raster routine }
|
||||
|
||||
for y := 0 to 63 do
|
||||
begin
|
||||
waitr;
|
||||
for x := 0 to 255 do setrgb(x,fpal[x*3+0],fpal[x*3+1],fpal[x*3+2]);
|
||||
for x := 0 to 255 do
|
||||
begin
|
||||
if fpal[x*3+0] < tmppal[x*3+0] then inc(fpal[x*3+0]);
|
||||
if fpal[x*3+1] < tmppal[x*3+1] then inc(fpal[x*3+1]);
|
||||
if fpal[x*3+2] < tmppal[x*3+2] then inc(fpal[x*3+2]);
|
||||
end;
|
||||
end;
|
||||
|
||||
move(pal,tmppal,768);
|
||||
move(pal,fpal,768);
|
||||
fillchar(fpal,32*3,#0);
|
||||
fillchar(fpal[128*3],32*3,#0);
|
||||
for x := 0 to 255 do setrgb(x,fpal[x*3+0],fpal[x*3+1],fpal[x*3+2]);
|
||||
|
||||
asm
|
||||
@a: mov ax,0
|
||||
mov bx,6
|
||||
int 0fch
|
||||
cmp dx,0
|
||||
jl @a
|
||||
end;
|
||||
|
||||
for y := 0 to 150 do waitr;
|
||||
|
||||
sss := 0;
|
||||
scp := 0;
|
||||
|
||||
for y := 0 to 63*2 do
|
||||
begin
|
||||
waitr;
|
||||
scr(sss);
|
||||
if sss = 2 then sss := 0 else inc(sss);
|
||||
|
||||
if y and 1 = 1 then
|
||||
begin
|
||||
for x := 0 to 176 do setrgb(x,fpal[x*3+0],fpal[x*3+1],fpal[x*3+2]);
|
||||
for x := 0 to 176 do
|
||||
begin
|
||||
if fpal[x*3+0] < tmppal[x*3+0] then inc(fpal[x*3+0]);
|
||||
if fpal[x*3+1] < tmppal[x*3+1] then inc(fpal[x*3+1]);
|
||||
if fpal[x*3+2] < tmppal[x*3+2] then inc(fpal[x*3+2]);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
fillchar(tmppal,768,#0);
|
||||
|
||||
|
||||
{ Loppu looppi }
|
||||
|
||||
frame := 0;
|
||||
w := 0;
|
||||
ch := #0;
|
||||
quit := 0;
|
||||
repeat
|
||||
waitr;
|
||||
scr(sss);
|
||||
if sss = 2 then sss := 0 else inc(sss);
|
||||
|
||||
{ inc(frame);}
|
||||
|
||||
asm
|
||||
mov ax,0
|
||||
mov bx,6
|
||||
int 0fch
|
||||
cmp dx,-11
|
||||
jnz @a
|
||||
mov fadeout,1
|
||||
@a: end;
|
||||
|
||||
|
||||
|
||||
if fadeout then
|
||||
begin
|
||||
if fp = 64 then quit := 1 else inc(fp);
|
||||
for x := 0 to 255 do
|
||||
begin
|
||||
setrgb(x,fpal[x*3+0],fpal[x*3+1],fpal[x*3+2]);
|
||||
if fpal[x*3+0] > tmppal[x*3+0] then dec(fpal[x*3+0]);
|
||||
if fpal[x*3+1] > tmppal[x*3+1] then dec(fpal[x*3+1]);
|
||||
if fpal[x*3+2] > tmppal[x*3+2] then dec(fpal[x*3+2]);
|
||||
end;
|
||||
end;
|
||||
|
||||
until dis_exit or (frame = veke) or (quit = 1);
|
||||
end.
|
||||
225
FOREST/READ2.PAS
Normal file
225
FOREST/READ2.PAS
Normal file
|
|
@ -0,0 +1,225 @@
|
|||
uses crt,aos1,aos2,aos3,bgr;
|
||||
|
||||
const veke = 2800;
|
||||
|
||||
procedure setrgb(c,r,g,b:byte);
|
||||
begin
|
||||
port[$3c8] := c;
|
||||
port[$3c9] := r;
|
||||
port[$3c9] := g;
|
||||
port[$3c9] := b;
|
||||
end;
|
||||
|
||||
var frames : word;
|
||||
w : word;
|
||||
|
||||
|
||||
procedure waitr;
|
||||
begin
|
||||
asm
|
||||
mov bx,1
|
||||
int 0fch
|
||||
mov frames,ax
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
function dis_exit:boolean;
|
||||
var a : byte;
|
||||
begin
|
||||
asm
|
||||
mov bx,2
|
||||
int 0fch
|
||||
mov a,al
|
||||
end;
|
||||
if a = 0 then dis_exit := false else dis_exit := true;
|
||||
end;
|
||||
|
||||
var f : file;
|
||||
inx : word;
|
||||
y,x,t : word;
|
||||
pal : array[0..768] of byte;
|
||||
fbuf : array[0..640*31] of byte;
|
||||
font : array[0..237*31] of byte;
|
||||
fpal,tmppal : array[0..768] of byte;
|
||||
scp,sss:word;
|
||||
|
||||
{$L routines.obj}
|
||||
{ dx = Bground seg,
|
||||
ax = pos seg,
|
||||
si = pos ofs,
|
||||
cx = font seg,
|
||||
bx = font ofs }
|
||||
|
||||
procedure putrouts;far;external;
|
||||
|
||||
procedure scr(pos:byte);
|
||||
var ff : word;
|
||||
begin
|
||||
case pos of
|
||||
|
||||
0:asm
|
||||
mov dx,seg hback
|
||||
mov ax,seg posi1
|
||||
mov si,offset posi1
|
||||
mov cx,seg font
|
||||
mov bx,offset font
|
||||
call putrouts
|
||||
end;
|
||||
1:asm
|
||||
mov dx,seg hback
|
||||
mov ax,seg posi2
|
||||
mov si,offset posi2
|
||||
mov cx,seg font
|
||||
mov bx,offset font
|
||||
call putrouts
|
||||
end;
|
||||
2:begin
|
||||
asm
|
||||
mov dx,seg hback
|
||||
mov ax,seg posi3
|
||||
mov si,offset posi3
|
||||
mov cx,seg font
|
||||
mov bx,offset font
|
||||
call putrouts
|
||||
end;
|
||||
move(font[1],font[0],237*31);
|
||||
for ff := 0 to 30 do font[ff*237+236] := fbuf[ff*640+scp];
|
||||
if scp < 639 then inc(scp);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
var frame : word;
|
||||
quit : word;
|
||||
ch : char;
|
||||
perse : boolean;
|
||||
fadeout : boolean;
|
||||
fp : byte;
|
||||
begin
|
||||
asm
|
||||
mov ax,$13
|
||||
int $10
|
||||
|
||||
xor bx,bx
|
||||
int 0fch
|
||||
|
||||
end;
|
||||
|
||||
assign(f,'o2.sci');
|
||||
reset(f,1);
|
||||
for x := 0 to 30 do
|
||||
begin
|
||||
seek(f,x*640+778);
|
||||
blockread(f,fbuf[x*640],640);
|
||||
end;
|
||||
close(f);
|
||||
|
||||
for x := 0 to sizeof(fbuf) do if fbuf[x] > 0 then inc(fbuf[x],128);
|
||||
move(mem[seg(hback):ofs(hback)+10],pal,768);
|
||||
move(mem[seg(hback):ofs(hback)+778], mem[seg(hback):ofs(hback)], 64000);
|
||||
for x := 0 to 255 do setrgb(x,0,0,0);
|
||||
move(mem[seg(hback):ofs(hback)],mem[$a000:0],64000);
|
||||
|
||||
move(pal,tmppal,768);
|
||||
fillchar(tmppal,32*3,#0);
|
||||
fillchar(tmppal[128*3],32*3,#0);
|
||||
fillchar(fpal,768,#0);
|
||||
|
||||
w := 1; { Wait raster routine }
|
||||
|
||||
for y := 0 to 63 do
|
||||
begin
|
||||
waitr;
|
||||
for x := 0 to 255 do setrgb(x,fpal[x*3+0],fpal[x*3+1],fpal[x*3+2]);
|
||||
for x := 0 to 255 do
|
||||
begin
|
||||
if fpal[x*3+0] < tmppal[x*3+0] then inc(fpal[x*3+0]);
|
||||
if fpal[x*3+1] < tmppal[x*3+1] then inc(fpal[x*3+1]);
|
||||
if fpal[x*3+2] < tmppal[x*3+2] then inc(fpal[x*3+2]);
|
||||
end;
|
||||
end;
|
||||
|
||||
move(pal,tmppal,768);
|
||||
move(pal,fpal,768);
|
||||
fillchar(fpal,32*3,#0);
|
||||
fillchar(fpal[128*3],32*3,#0);
|
||||
for x := 0 to 255 do setrgb(x,fpal[x*3+0],fpal[x*3+1],fpal[x*3+2]);
|
||||
|
||||
for x := 0 to 30 do move(fbuf[x*640],font[x*237+104],133);
|
||||
scp := 133;
|
||||
|
||||
asm
|
||||
@a: mov ax,0
|
||||
mov bx,6
|
||||
int 0fch
|
||||
cmp dx,0
|
||||
jl @a
|
||||
end;
|
||||
|
||||
{ for y := 0 to 150 do waitr;}
|
||||
|
||||
sss := 0;
|
||||
|
||||
for y := 0 to 63*2 do
|
||||
begin
|
||||
waitr;
|
||||
|
||||
if y and 1 = 1 then
|
||||
begin
|
||||
for x := 0 to 176 do setrgb(x,fpal[x*3+0],fpal[x*3+1],fpal[x*3+2]);
|
||||
for x := 0 to 176 do
|
||||
begin
|
||||
if fpal[x*3+0] < tmppal[x*3+0] then inc(fpal[x*3+0]);
|
||||
if fpal[x*3+1] < tmppal[x*3+1] then inc(fpal[x*3+1]);
|
||||
if fpal[x*3+2] < tmppal[x*3+2] then inc(fpal[x*3+2]);
|
||||
end;
|
||||
end;
|
||||
|
||||
scr(sss);
|
||||
if sss = 2 then sss := 0 else inc(sss);
|
||||
end;
|
||||
|
||||
fillchar(tmppal,768,#0);
|
||||
|
||||
|
||||
{ Loppu looppi }
|
||||
|
||||
frame := 0;
|
||||
w := 0;
|
||||
ch := #0;
|
||||
quit := 0;
|
||||
repeat
|
||||
waitr;
|
||||
|
||||
asm
|
||||
mov ax,0
|
||||
mov bx,6
|
||||
int 0fch
|
||||
cmp dx,-11
|
||||
jnz @a
|
||||
mov fadeout,1
|
||||
@a: end;
|
||||
|
||||
if fadeout then
|
||||
begin
|
||||
if fp = 64 then quit := 1 else inc(fp);
|
||||
for x := 0 to 255 do
|
||||
begin
|
||||
setrgb(x,fpal[x*3+0],fpal[x*3+1],fpal[x*3+2]);
|
||||
if fpal[x*3+0] > tmppal[x*3+0] then dec(fpal[x*3+0]);
|
||||
if fpal[x*3+1] > tmppal[x*3+1] then dec(fpal[x*3+1]);
|
||||
if fpal[x*3+2] > tmppal[x*3+2] then dec(fpal[x*3+2]);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
scr(sss);
|
||||
if sss = 2 then sss := 0 else inc(sss);
|
||||
|
||||
{ inc(frame);}
|
||||
|
||||
|
||||
until dis_exit or (frame = veke) or (quit = 1);
|
||||
end.
|
||||
193
FOREST/READMASK.PAS
Normal file
193
FOREST/READMASK.PAS
Normal file
|
|
@ -0,0 +1,193 @@
|
|||
uses crt;
|
||||
|
||||
type pbuf = ^buf;
|
||||
buf = array[0..64000] of byte;
|
||||
|
||||
|
||||
var r,r1,
|
||||
g,b : pbuf;
|
||||
f : file;
|
||||
x,y,c : word;
|
||||
row : array[0..320*3-1] of byte;
|
||||
tc : word;
|
||||
tbuf : array[0..100] of word;
|
||||
pal : array[0..768] of byte;
|
||||
|
||||
procedure setrgb(c,r,g,b:byte);
|
||||
begin
|
||||
port[$3c8] := c;
|
||||
port[$3c9] := r;
|
||||
port[$3c9] := g;
|
||||
port[$3c9] := b;
|
||||
end;
|
||||
|
||||
begin
|
||||
getmem(r,64000);
|
||||
getmem(r1,64000);
|
||||
getmem(g,64000);
|
||||
getmem(b,64000);
|
||||
fillchar(r^,64000,#0);
|
||||
fillchar(r1^,64000,#0);
|
||||
fillchar(g^,64000,#0);
|
||||
fillchar(b^,64000,#0);
|
||||
|
||||
{ Load fixed green mask }
|
||||
assign(f,'green.clx');
|
||||
reset(f,1);
|
||||
seek(f,778);
|
||||
blockread(f,g^,64000);
|
||||
close(f);
|
||||
|
||||
asm
|
||||
mov ax,$13
|
||||
int $10
|
||||
end;
|
||||
{
|
||||
assign(f,'hillback.clx');
|
||||
reset(f,1);
|
||||
seek(f,10);
|
||||
blockread(f,pal,768);
|
||||
for x := 0 to 255 do setrgb(x,pal[x*3+0],pal[x*3+1],pal[x*3+2]);
|
||||
blockread(f,mem[$a000:0],64000);
|
||||
close(f);
|
||||
}
|
||||
|
||||
assign(f,'o:mask1.mtv');
|
||||
reset(f,1);
|
||||
seek(f,8);
|
||||
for y := 0 to 199 do
|
||||
begin
|
||||
blockread(f,row,320*3);
|
||||
for x := 0 to 319 do
|
||||
begin
|
||||
r^[x+y*320] := row[x*3+0];
|
||||
b^[x+y*320] := row[x*3+2];
|
||||
end;
|
||||
end;
|
||||
close(f);
|
||||
assign(f,'o:mask2.mtv');
|
||||
reset(f,1);
|
||||
seek(f,8);
|
||||
for y := 0 to 199 do
|
||||
begin
|
||||
blockread(f,row,320*3);
|
||||
for x := 0 to 319 do r1^[x+y*320] := row[x*3+0];
|
||||
end;
|
||||
close(f);
|
||||
assign(f,'pos1.dat');
|
||||
rewrite(f,1);
|
||||
{ red = 4 to 240 }
|
||||
for y := 1 to 31 do
|
||||
for c := 4 to 240 do
|
||||
begin
|
||||
tc := 0;
|
||||
for x := 0 to 64000 do
|
||||
if (mem[$a000:x] <> 40) and (r^[x] <> r1^[x]) and (r^[x] = c) and (g^[x] = y) and (b^[x] = 255) then
|
||||
begin
|
||||
tbuf[tc] := x;
|
||||
mem[$a000:x] := 40;
|
||||
inc(tc);
|
||||
end;
|
||||
blockwrite(f,tc,2);
|
||||
if tc > 0 then blockwrite(f,tbuf,tc*2);
|
||||
end;
|
||||
close(f);
|
||||
|
||||
|
||||
assign(f,'o:mask2.mtv');
|
||||
reset(f,1);
|
||||
seek(f,8);
|
||||
for y := 0 to 199 do
|
||||
begin
|
||||
blockread(f,row,320*3);
|
||||
for x := 0 to 319 do
|
||||
begin
|
||||
r^[x+y*320] := row[x*3+0];
|
||||
b^[x+y*320] := row[x*3+2];
|
||||
end;
|
||||
end;
|
||||
close(f);
|
||||
assign(f,'o:mask3.mtv');
|
||||
reset(f,1);
|
||||
seek(f,8);
|
||||
for y := 0 to 199 do
|
||||
begin
|
||||
blockread(f,row,320*3);
|
||||
for x := 0 to 319 do r1^[x+y*320] := row[x*3+0];
|
||||
end;
|
||||
close(f);
|
||||
assign(f,'pos2.dat');
|
||||
rewrite(f,1);
|
||||
{ red = 4 to 240 }
|
||||
for y := 1 to 31 do
|
||||
for c := 4 to 240 do
|
||||
begin
|
||||
tc := 0;
|
||||
for x := 0 to 64000 do
|
||||
if (mem[$a000:x] <> 40) and (r^[x] <> r1^[x]) and (r^[x] = c) and (g^[x] = y) and (b^[x] = 255) then
|
||||
begin
|
||||
tbuf[tc] := x;
|
||||
mem[$a000:x] := 40;
|
||||
inc(tc);
|
||||
end;
|
||||
blockwrite(f,tc,2);
|
||||
if tc > 0 then blockwrite(f,tbuf,tc*2);
|
||||
end;
|
||||
close(f);
|
||||
|
||||
|
||||
assign(f,'o:mask3.mtv');
|
||||
reset(f,1);
|
||||
seek(f,8);
|
||||
for y := 0 to 199 do
|
||||
begin
|
||||
blockread(f,row,320*3);
|
||||
for x := 0 to 319 do
|
||||
begin
|
||||
r^[x+y*320] := row[x*3+0];
|
||||
b^[x+y*320] := row[x*3+2];
|
||||
end;
|
||||
end;
|
||||
close(f);
|
||||
assign(f,'o:mask4.mtv');
|
||||
reset(f,1);
|
||||
seek(f,8);
|
||||
for y := 0 to 199 do
|
||||
begin
|
||||
blockread(f,row,320*3);
|
||||
for x := 0 to 319 do r1^[x+y*320] := row[x*3+0];
|
||||
end;
|
||||
close(f);
|
||||
assign(f,'pos3.dat');
|
||||
rewrite(f,1);
|
||||
{ red = 4 to 240 }
|
||||
for y := 1 to 31 do
|
||||
for c := 4 to 240 do
|
||||
begin
|
||||
tc := 0;
|
||||
for x := 0 to 64000 do
|
||||
if (mem[$a000:x] <> 40) and (r^[x] <> r1^[x]) and (r^[x] = c) and (g^[x] = y) and (b^[x] = 255) then
|
||||
begin
|
||||
tbuf[tc] := x;
|
||||
mem[$a000:x] := 40;
|
||||
inc(tc);
|
||||
end;
|
||||
blockwrite(f,tc,2);
|
||||
if tc > 0 then blockwrite(f,tbuf,tc*2);
|
||||
end;
|
||||
close(f);
|
||||
|
||||
|
||||
|
||||
repeat until keypressed;
|
||||
|
||||
asm
|
||||
mov ax,$3
|
||||
int $10
|
||||
end;
|
||||
|
||||
freemem(r,64000);
|
||||
freemem(r1,64000);
|
||||
freemem(g,64000);
|
||||
freemem(b,64000);
|
||||
end.
|
||||
138
FOREST/READMSK2.PAS
Normal file
138
FOREST/READMSK2.PAS
Normal file
|
|
@ -0,0 +1,138 @@
|
|||
uses crt;
|
||||
|
||||
type pbuf = ^buf;
|
||||
buf = array[0..64000] of byte;
|
||||
|
||||
|
||||
var r,r1,nb,g,b : pbuf;
|
||||
f : file;
|
||||
x,y,c : word;
|
||||
row : array[0..320*3-1] of byte;
|
||||
tw : word;
|
||||
tb : word;
|
||||
tbuf : array[0..100] of word;
|
||||
pal : array[0..768] of byte;
|
||||
|
||||
procedure setrgb(c,r,g,b:byte);
|
||||
begin
|
||||
port[$3c8] := c;
|
||||
port[$3c9] := r;
|
||||
port[$3c9] := g;
|
||||
port[$3c9] := b;
|
||||
end;
|
||||
|
||||
procedure tee(n1,n2,n3:string);
|
||||
begin
|
||||
assign(f,n1);
|
||||
reset(f,1);
|
||||
seek(f,8);
|
||||
for y := 0 to 199 do
|
||||
begin
|
||||
blockread(f,row,320*3);
|
||||
for x := 0 to 319 do
|
||||
begin
|
||||
r^[x+y*320] := row[x*3+0];
|
||||
b^[x+y*320] := row[x*3+2];
|
||||
end;
|
||||
end;
|
||||
close(f);
|
||||
assign(f,n2);
|
||||
reset(f,1);
|
||||
seek(f,8);
|
||||
for y := 0 to 199 do
|
||||
begin
|
||||
blockread(f,row,320*3);
|
||||
for x := 0 to 319 do r1^[x+y*320] := row[x*3+0];
|
||||
end;
|
||||
close(f);
|
||||
assign(f,n3);
|
||||
rewrite(f,1);
|
||||
for y := 1 to 31 do
|
||||
for c := 4 to 240 do
|
||||
begin
|
||||
tw := 0;
|
||||
for x := 0 to 64000 do
|
||||
if (nb^[x] <> $40) and
|
||||
(r^[x] <> r1^[x]) and
|
||||
(r^[x] = c) and
|
||||
(r^[x+1] = c) and
|
||||
(g^[x] = y) and
|
||||
(b^[x] = 255) then
|
||||
begin
|
||||
tbuf[tw] := x;
|
||||
nb^[x] := $40;
|
||||
nb^[x+1] := $40;
|
||||
memw[$a000:x] := $4040;
|
||||
inc(tw);
|
||||
end;
|
||||
blockwrite(f,tw,2);
|
||||
if tw > 0 then blockwrite(f,tbuf,tw*2);
|
||||
|
||||
tb := 0;
|
||||
for x := 0 to 64000 do
|
||||
if (nb^[x] <> $40) and
|
||||
(r^[x] <> r1^[x]) and
|
||||
(r^[x] = c) and
|
||||
(g^[x] = y) and
|
||||
(b^[x] = 255) then
|
||||
begin
|
||||
tbuf[tb] := x;
|
||||
nb^[x] := $40;
|
||||
mem[$a000:x] := $40;
|
||||
inc(tb);
|
||||
end;
|
||||
blockwrite(f,tb,2);
|
||||
if tb > 0 then blockwrite(f,tbuf,tb*2);
|
||||
end;
|
||||
close(f);
|
||||
end;
|
||||
|
||||
begin
|
||||
getmem(r,64000);
|
||||
getmem(r1,64000);
|
||||
getmem(g,64000);
|
||||
getmem(b,64000);
|
||||
getmem(nb,64000);
|
||||
fillchar(r^,64000,#0);
|
||||
fillchar(r1^,64000,#0);
|
||||
fillchar(g^,64000,#0);
|
||||
fillchar(b^,64000,#0);
|
||||
fillchar(nb^,64000,#0);
|
||||
|
||||
{ Load fixed green mask }
|
||||
assign(f,'green.clx');
|
||||
reset(f,1);
|
||||
seek(f,778);
|
||||
blockread(f,g^,64000);
|
||||
close(f);
|
||||
|
||||
asm
|
||||
mov ax,$13
|
||||
int $10
|
||||
end;
|
||||
{
|
||||
assign(f,'hillback.clx');
|
||||
reset(f,1);
|
||||
seek(f,10);
|
||||
blockread(f,pal,768);
|
||||
for x := 0 to 255 do setrgb(x,pal[x*3+0],pal[x*3+1],pal[x*3+2]);
|
||||
blockread(f,mem[$a000:0],64000);
|
||||
close(f);
|
||||
}
|
||||
tee('o:mask1.mtv','o:mask2.mtv','pos1.dat');
|
||||
tee('o:mask2.mtv','o:mask3.mtv','pos2.dat');
|
||||
tee('o:mask3.mtv','o:mask4.mtv','pos3.dat');
|
||||
|
||||
asm
|
||||
mov ax,$3
|
||||
int $10
|
||||
end;
|
||||
|
||||
writeln('Homma on valmis !!!!!!!!!!!!!!!');
|
||||
|
||||
freemem(r,64000);
|
||||
freemem(r1,64000);
|
||||
freemem(g,64000);
|
||||
freemem(b,64000);
|
||||
freemem(nb,64000);
|
||||
end.
|
||||
40
FOREST/ROUTINES.ASM
Normal file
40
FOREST/ROUTINES.ASM
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
.MODEL large,PASCAL
|
||||
.CODE
|
||||
.386
|
||||
|
||||
; dx = Bground seg
|
||||
; ax = pos seg
|
||||
; si = pos ofs
|
||||
; cx = font seg
|
||||
; bx = font ofs
|
||||
|
||||
Putrouts PROC FAR
|
||||
PUBLIC Putrouts
|
||||
|
||||
push ds
|
||||
mov ds,ax
|
||||
mov ax,0a000h
|
||||
mov es,ax
|
||||
mov fs,cx
|
||||
mov gs,dx
|
||||
|
||||
mov dx,237*31
|
||||
@a: lodsw ; get byte count
|
||||
or ax,ax ; if 0 then hidden pixel
|
||||
je @ei ; next pixel
|
||||
mov cx,ax ; set loop value
|
||||
@c: lodsw ; get destination address
|
||||
mov di,ax
|
||||
mov al,byte ptr gs:[di] ; get bground pixel
|
||||
add al,byte ptr fs:[bx] ; add font value to pixel
|
||||
mov byte ptr es:[di],al ; store pixel to screen
|
||||
loop @c
|
||||
@ei:
|
||||
inc bx
|
||||
dec dx
|
||||
jnz @a
|
||||
pop ds
|
||||
|
||||
ret
|
||||
Putrouts ENDP
|
||||
END
|
||||
BIN
FOREST/ROUTINES.OBJ
Normal file
BIN
FOREST/ROUTINES.OBJ
Normal file
Binary file not shown.
2
FOREST/X.BAT
Normal file
2
FOREST/X.BAT
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
copy read2.exe ..\main\data\mntscrl.exe
|
||||
copy o2.sci ..\main\data
|
||||
Loading…
Reference in a new issue