This commit is contained in:
Frater 2017-09-24 01:45:36 +02:00
commit 43352ff262
1291 changed files with 220976 additions and 0 deletions

60
PAM/ANIM.C Normal file
View file

@ -0,0 +1,60 @@
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <mem.h>
char pal[768];
char far mpage1[65535];
char far mpage2[65535];
FILE *out;
main()
{
FILE *data;
asm mov ax, 13h
asm int 10h
data=fopen("pal.pal","rb");
fread(pal,1,768,data);
tw_setpalette(pal);
fclose(data);
data=fopen("out.u","rb");
out=fopen("out.ani","wb");
while(!kbhit() && !feof(data))
{
memcpy(MK_FP(0x0a000,0),mpage1,64000);
memcpy(mpage1,mpage2,64000);
fread(mpage2,1,64000,data);
if(feof(data)) break;
packframe();
}
}
packframe()
{
unsigned int cnt=0;
int a=0,b=0,ch=0;
char *p1=mpage2,*p2=MK_FP(0x0a000,0);
while((ftell(out)&15)!=0) fputc(0,out);
while(cnt<64000)
{
if(*p1!=*p2)
{
for(a=1;*p1==*(p1+a) && *(p1+a)!=*(p2+a) && a<120 && cnt+a<64000;a++);
fputc(a,out);
fputc(*p1,out);
p1+=a; p2+=a; cnt+=a;
}
else {
for(a=1;*(p1+a)==*(p2+a) && a<120 && cnt+a<64000;a++);
fputc(-a,out);
p1+=a; p2+=a; cnt+=a;
}
}
fputc(0,out);
}

BIN
PAM/ANIM.DSK Normal file

Binary file not shown.

BIN
PAM/ANIM.EXE Normal file

Binary file not shown.

BIN
PAM/ANIM.OBJ Normal file

Binary file not shown.

BIN
PAM/ANIM.PRJ Normal file

Binary file not shown.

BIN
PAM/ANIMATE.EXE Normal file

Binary file not shown.

322
PAM/ASMYT.ASM Normal file
View file

@ -0,0 +1,322 @@
IDEAL
MODEL large
P386
CODESEG
aseg dw 0
;ntaulu db 1000b,1100b,1110b,1111b
;taulu db 1111b,0111b,0011b,0001b
ntaulu db 0001b,0011b,0111b,1111b
taulu db 1111b,1110b,1100b,1000b
ptaulu db 1,2,4,8
PUBLIC C init_uframe, C ulosta_frame
PROC C init_uframe
ARG fseg:word
mov ax, [fseg]
mov [cs:aseg], ax
ret
ENDP
PROC C ulosta_frame
ARG scseg:word
push ds di si
xor di, di
xor si, si
mov ax, [scseg]
mov es, ax
mov ds, [cs:aseg]
mov dx, 03c4h ; map mask... 03c4h, 02..
@@looppi:
lodsb
cmp al, 0d
jg @@outtaa
je @@over
@@skip:
cbw
sub di, ax
lodsb
cmp al, 0d
jl @@skip
je @@over
@@outtaa:
dec al
jz @@single
cbw
mov bx, di
and bx, 3d
add bx, ax
shr bx, 2d
or bx, bx
jz @@samebyte
cmp bx, 1d
je @@twobytes
mov cx, ax
mov bx, di
and bx, 3d
mov ah, [cs:taulu+bx]
mov al, 2d
out dx, ax
mov al, [ds:si]
mov bx, di
shr bx, 2d
mov [es:bx], al
push di cx
mov ax, di
add cx, ax
shr cx, 2d
sub cx, bx
dec cx
shr di, 2d
inc di
mov ax, 0f02h
out dx, ax
mov al, [ds:si]
mov ah, al
shr cx, 1d
jnc @@l1
stosb
@@l1: jcxz @@l2
rep stosw
@@l2: pop cx di
add di, cx
mov bx, di
and bx, 3d
mov ah, [cs:ntaulu+bx]
mov al, 2d
out dx, ax
lodsb
mov bx, di
shr bx, 2d
mov [es:bx], al
inc di
lodsb
cmp al, 0d
jl @@skip
jg @@outtaa
je @@over
@@twobytes:
mov bx, di
and bx, 3d
mov cl, [cs:taulu+bx]
add di, ax
mov bx, di
and bx, 3d
mov ch, [cs:ntaulu+bx]
mov ah, cl
mov al, 2d
out dx, ax
mov cl, [ds:si]
mov bx, di
shr bx, 2d
mov [es:bx-1], cl
mov ah, ch
out dx, ax
mov [es:bx], cl
inc di
inc si
lodsb
cmp al, 0d
jl @@skip
jg @@outtaa
je @@over
@@samebyte:
mov bx, di
and bx, 3d
mov cl, [cs:taulu+bx]
add di, ax
mov bx, di
and bx, 3d
and cl, [cs:ntaulu+bx]
mov ah, cl
mov al, 02h
out dx, ax
lodsb
mov bx, di
shr bx, 2d
mov [es:bx], al
inc di
lodsb
cmp al, 0d
jl @@skip
jg @@outtaa
je @@over
@@single:
mov bx, di
and bx, 3d
mov ah, [cs:ptaulu+bx]
mov al, 2d
out dx, ax
lodsb
mov bx, di
shr bx, 2d
mov [es:bx], al
inc di
;-------------
lodsb
cmp al, 0d
jl @@skip
jg @@outtaa
je @@over
@@over:
mov di, si
shr si, 4d
mov ax, ds
add ax, si
and di, 15d
jz @@exit
inc ax
@@exit:
mov [cs:aseg], ax
pop si di ds
ret
ENDP
PROC ruudulle
dec al
jz @@single
cbw
mov bx, di
and bx, 3d
add bx, ax
shr bx, 2d
or bx, bx
jz @@samebyte
cmp bx, 1d
je @@twobytes
mov cx, ax
mov bx, di
and bx, 3d
mov ah, [cs:taulu+bx]
mov al, 2d
out dx, ax
mov al, [ds:si]
mov bx, di
shr bx, 2d
mov [es:bx], al
push di cx
mov ax, di
add cx, ax
shr cx, 2d
sub cx, bx
dec cx
shr di, 2d
inc di
mov ax, 0f02h
out dx, ax
mov al, [ds:si]
mov ah, al
shr cx, 1d
jnc @@l1
stosb
@@l1: jcxz @@l2
rep stosw
@@l2: pop cx di
add di, cx
mov bx, di
and bx, 3d
mov ah, [cs:ntaulu+bx]
mov al, 2d
out dx, ax
lodsb
mov bx, di
shr bx, 2d
mov [es:bx], al
inc di
ret
@@twobytes:
mov bx, di
and bx, 3d
mov cl, [cs:taulu+bx]
add di, ax
mov bx, di
and bx, 3d
mov ch, [cs:ntaulu+bx]
mov ah, cl
mov al, 2d
out dx, ax
mov cl, [ds:si]
mov bx, di
shr bx, 2d
mov [es:bx-1], cl
mov ah, ch
out dx, ax
mov [es:bx], cl
inc di
inc si
ret
@@samebyte:
mov bx, di
and bx, 3d
mov cl, [cs:taulu+bx]
add di, ax
mov bx, di
and bx, 3d
and cl, [cs:ntaulu+bx]
mov ah, cl
mov al, 02h
out dx, ax
lodsb
mov bx, di
shr bx, 2d
mov [es:bx], al
inc di
ret
@@single:
mov bx, di
and bx, 3d
mov ah, [cs:ptaulu+bx]
mov al, 2d
out dx, ax
lodsb
mov bx, di
shr bx, 2d
mov [es:bx], al
inc di
ret
ENDP
END

BIN
PAM/ASMYT.OBJ Normal file

Binary file not shown.

88
PAM/COPPER.ASM Normal file
View file

@ -0,0 +1,88 @@
IDEAL
MODEL large
P386
CODESEG
PUBLIC C frame_count, C init_copper, C close_copper, C cop_pal, C do_pal
twait dw 0
frame_count dw 0
cop_pal dd 0
do_pal dw 0
PROC close_copper
mov bx, 7
mov ax, 0
mov cx, 0
mov dx, 0
int 0fch
mov bx, 7
mov ax, 1
mov cx, 0
mov dx, 0
int 0fch
mov bx, 7
mov ax, 2
mov cx, 0
mov dx, 0
int 0fch
ret
ENDP
PROC init_copper
mov bx, 7
mov ax, 1
mov cx, OFFSET copper3
mov dx, SEG copper3
int 0fch
mov bx, 7
mov ax, 2
mov cx, OFFSET copper2
mov dx, SEG copper2
int 0fch
mov bx, 7
mov ax, 0
mov cx, OFFSET copper3
mov dx, SEG copper3
int 0fch
ret
ENDP
PROC copper2
inc [cs:frame_count]
cmp [cs:do_pal], 0d
je @@no_pal
pusha
push ds
lds si, [cs:cop_pal]
mov cx, 768d
mov dx, 3c8h
mov al, 0d
out dx, al
inc dx
rep outsb
mov [cs:do_pal], 0d
pop ds
popa
@@no_pal:
retf
ENDP
PROC copper3
retf
ENDP
END

BIN
PAM/COPPER.OBJ Normal file

Binary file not shown.

BIN
PAM/DISC.OBJ Normal file

Binary file not shown.

34
PAM/INCLUDE.ASM Normal file
View file

@ -0,0 +1,34 @@
IDEAL
MODEL large
P386
PUBLIC C memblock, C pal
SEGMENT kakka2 para use16 private 'FAR_DATA'
LABEL memblock WORD
INCLUDE 'out.in0'
ENDS
SEGMENT kakka3 byte use16 private 'FAR_DATA'
LABEL multable128 WORD
INCLUDE 'out.in1'
ENDS
SEGMENT kakka4 byte use16 private 'FAR_DATA'
INCLUDE 'out.in2'
ENDS
SEGMENT kakka5 byte use16 private 'FAR_DATA'
INCLUDE 'out.in3'
ENDS
SEGMENT kakka6 byte use16 private 'FAR_DATA'
INCLUDE 'out.in4'
ENDS
SEGMENT kakka8 byte use16 private 'FAR_DATA'
LABEL pal BYTE
INCLUDE 'pal.inc'
db 768*64 dup(?)
ENDS
END

1742
PAM/OUT.ANI Normal file

File diff suppressed because one or more lines are too long

4097
PAM/OUT.IN0 Normal file

File diff suppressed because it is too large Load diff

4097
PAM/OUT.IN1 Normal file

File diff suppressed because it is too large Load diff

4097
PAM/OUT.IN2 Normal file

File diff suppressed because it is too large Load diff

4097
PAM/OUT.IN3 Normal file

File diff suppressed because it is too large Load diff

3907
PAM/OUT.IN4 Normal file

File diff suppressed because it is too large Load diff

67
PAM/OUTTAA.C Normal file
View file

@ -0,0 +1,67 @@
#include <conio.h>
#include <dos.h>
#include "..\dis\dis.h"
#pragma inline
extern void tw_opengraph();
extern void tw_waitvr();
extern void tw_setpalette(char far *pal);
extern void tw_setstart(int s);
extern init_copper();
extern close_copper();
extern far int frame_count;
extern far char *cop_pal;
extern far int do_pal;
extern init_uframe(int seg);
extern ulosta_frame(int start);
extern char far pal[];
extern far char memblock[];
int wfade[100]= {63,32,16,8,4,2,1,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
1,2,4,6,9,14,20,28,37,46,
56,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63};
main()
{
int a,f=0,p=0,frames;
unsigned m=65535,b,segp;
long len;
dis_partstart();
for(a=1;a<64;a++) for(b=0;b<768;b++)
pal[a*768+b]=(63*a+(64-a)*pal[b])/64;
while(dis_sync()<10&&!dis_exit());
tw_waitvr();
tw_setpalette(&pal[768*63]);
tw_opengraph();
init_uframe(FP_SEG(memblock));
init_copper();
frame_count=0;
while(!dis_exit() && f++<45)
{
while(frame_count<4); frame_count=0;
if(f<=40)
{
if(p) {
p=0;
ulosta_frame(0x0a400);
tw_setstart(16384);
}
else {
p=1;
ulosta_frame(0x0a000);
tw_setstart(0U);
}
}
cop_pal=&pal[768*wfade[f]];
do_pal=1;
}
close_copper();
}

BIN
PAM/OUTTAA.OBJ Normal file

Binary file not shown.

50
PAM/PAL.INC Normal file
View file

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

BIN
PAM/PAL.PAL Normal file

Binary file not shown.

BIN
PAM/PAM.DSK Normal file

Binary file not shown.

370
PAM/PAM.MAP Normal file
View file

@ -0,0 +1,370 @@
Start Stop Length Name Class
00000H 01096H 01097H _TEXT CODE
01097H 01202H 0016CH OUTTAA_TEXT CODE
01204H 01451H 0024EH ASMYT_TEXT CODE
01452H 01452H 00000H INCLUDE_TEXT CODE
01452H 01606H 001B5H TWEAK_TEXT CODE
01608H 01692H 0008BH COPPER_TEXT CODE
016A0H 01773H 000D4H TEXT_DISC CODE
01780H 01780H 00000H _FARDATA FAR_DATA
01780H 1177EH 0FFFFH KAKKA2 FAR_DATA
1177FH 1177EH FFFFFH KAKKA3 FAR_DATA
2177EH 2177DH FFFFFH KAKKA4 FAR_DATA
3177DH 3177CH FFFFFH KAKKA5 FAR_DATA
4177CH 50B91H 0F416H KAKKA6 FAR_DATA
50B92H 5CE92H 0C301H KAKKA8 FAR_DATA
5CEA0H 5CEA0H 00000H _FARBSS FAR_BSS
5CEA0H 5CEA0H 00000H _OVERLAY_ OVRINFO
5CEA0H 5CEA0H 00000H _1STUB_ STUBSEG
5CEA0H 5D227H 00388H _DATA DATA
5D228H 5D228H 00000H _CVTSEG DATA
5D228H 5D228H 00000H _SCNSEG DATA
5D228H 5D228H 00000H _CONST CONST
5D228H 5D22DH 00006H _INIT_ INITDATA
5D22EH 5D22EH 00000H _INITEND_ INITDATA
5D22EH 5D22EH 00000H _EXIT_ EXITDATA
5D22EH 5D22EH 00000H _EXITEND_ EXITDATA
5D22EH 5D2ADH 00080H _BSS BSS
5D2AEH 5D2AEH 00000H _BSSEND BSSEND
5D2B0H 5D32FH 00080H _STACK STACK
Detailed map of segments
0000:0000 0295 C=CODE S=_TEXT G=(none) M=C0.ASM ACBP=28
0000:0295 002D C=CODE S=_TEXT G=(none) M=ATEXIT ACBP=28
0000:02C2 0093 C=CODE S=_TEXT G=(none) M=EXIT ACBP=28
0000:0355 0000 C=CODE S=_TEXT G=(none) M=FILES ACBP=28
0000:0355 0000 C=CODE S=_TEXT G=(none) M=FILES2 ACBP=28
0000:0355 0021 C=CODE S=_TEXT G=(none) M=H_LLSH ACBP=28
0000:0376 0060 C=CODE S=_TEXT G=(none) M=H_PADD ACBP=28
0000:03D6 004B C=CODE S=_TEXT G=(none) M=IOERROR ACBP=28
0000:0421 0011 C=CODE S=_TEXT G=(none) M=ISATTY ACBP=28
0000:0432 0029 C=CODE S=_TEXT G=(none) M=LSEEK ACBP=28
0000:045B 0021 C=CODE S=_TEXT G=(none) M=N_PCMP ACBP=28
0000:047C 00BA C=CODE S=_TEXT G=(none) M=SETUPIO ACBP=28
0000:0536 0000 C=CODE S=_TEXT G=(none) M=STKLEN ACBP=28
0000:0536 0432 C=CODE S=_TEXT G=(none) M=FARHEAP ACBP=28
0000:0968 0140 C=CODE S=_TEXT G=(none) M=FBRK ACBP=28
0000:0AA8 001C C=CODE S=_TEXT G=(none) M=SETBLOCK ACBP=28
0000:0AC4 00CD C=CODE S=_TEXT G=(none) M=FFLUSH ACBP=28
0000:0B91 0042 C=CODE S=_TEXT G=(none) M=FLUSHALL ACBP=28
0000:0BD3 01E2 C=CODE S=_TEXT G=(none) M=FSEEK ACBP=28
0000:0DB5 011D C=CODE S=_TEXT G=(none) M=SETVBUF ACBP=28
0000:0ED2 0151 C=CODE S=_TEXT G=(none) M=WRITE ACBP=28
0000:1023 003C C=CODE S=_TEXT G=(none) M=WRITEA ACBP=28
0000:105F 0038 C=CODE S=_TEXT G=(none) M=XFFLUSH ACBP=28
0109:0007 016C C=CODE S=OUTTAA_TEXT G=(none) M=OUTTAA.C ACBP=28
0120:0004 024E C=CODE S=ASMYT_TEXT G=(none) M=ASMYT.ASM ACBP=48
0145:0002 0000 C=CODE S=INCLUDE_TEXT G=(none) M=INCLUDE.ASM ACBP=48
0145:0002 01B5 C=CODE S=TWEAK_TEXT G=(none) M=TWEAK.ASM ACBP=48
0160:0008 008B C=CODE S=COPPER_TEXT G=(none) M=COPPER.ASM ACBP=48
016A:0000 00D4 C=CODE S=TEXT_DISC G=(none) M=DISC.ASM ACBP=68
0178:0000 0000 C=FAR_DATA S=_FARDATA G=(none) M=C0.ASM ACBP=68
0178:0000 FFFF C=FAR_DATA S=KAKKA2 G=(none) M=INCLUDE.ASM ACBP=60
1177:000F FFFF C=FAR_DATA S=KAKKA3 G=(none) M=INCLUDE.ASM ACBP=20
2177:000E FFFF C=FAR_DATA S=KAKKA4 G=(none) M=INCLUDE.ASM ACBP=20
3177:000D FFFF C=FAR_DATA S=KAKKA5 G=(none) M=INCLUDE.ASM ACBP=20
4177:000C F416 C=FAR_DATA S=KAKKA6 G=(none) M=INCLUDE.ASM ACBP=20
50B9:0002 C301 C=FAR_DATA S=KAKKA8 G=(none) M=INCLUDE.ASM ACBP=20
5CEA:0000 0000 C=FAR_BSS S=_FARBSS G=(none) M=C0.ASM ACBP=68
5CEA:0000 0000 C=OVRINFO S=_OVERLAY_ G=(none) M=C0.ASM ACBP=68
5CEA:0000 0000 C=STUBSEG S=_1STUB_ G=(none) M=C0.ASM ACBP=68
5CEA:0000 0093 C=DATA S=_DATA G=DGROUP M=C0.ASM ACBP=68
5CEA:0094 00C8 C=DATA S=_DATA G=DGROUP M=OUTTAA.C ACBP=48
5CEA:015C 0000 C=DATA S=_DATA G=DGROUP M=ASMYT.ASM ACBP=48
5CEA:015C 0000 C=DATA S=_DATA G=DGROUP M=INCLUDE.ASM ACBP=48
5CEA:015C 0000 C=DATA S=_DATA G=DGROUP M=TWEAK.ASM ACBP=48
5CEA:015C 0000 C=DATA S=_DATA G=DGROUP M=COPPER.ASM ACBP=48
5CEA:015C 0002 C=DATA S=_DATA G=DGROUP M=ATEXIT ACBP=48
5CEA:015E 000C C=DATA S=_DATA G=DGROUP M=EXIT ACBP=48
5CEA:016A 0190 C=DATA S=_DATA G=DGROUP M=FILES ACBP=48
5CEA:02FA 002A C=DATA S=_DATA G=DGROUP M=FILES2 ACBP=48
5CEA:0324 0000 C=DATA S=_DATA G=DGROUP M=H_LLSH ACBP=48
5CEA:0324 0000 C=DATA S=_DATA G=DGROUP M=H_PADD ACBP=48
5CEA:0324 005B C=DATA S=_DATA G=DGROUP M=IOERROR ACBP=48
5CEA:0380 0000 C=DATA S=_DATA G=DGROUP M=ISATTY ACBP=48
5CEA:0380 0000 C=DATA S=_DATA G=DGROUP M=LSEEK ACBP=48
5CEA:0380 0000 C=DATA S=_DATA G=DGROUP M=N_PCMP ACBP=48
5CEA:0380 0000 C=DATA S=_DATA G=DGROUP M=SETUPIO ACBP=48
5CEA:0380 0002 C=DATA S=_DATA G=DGROUP M=STKLEN ACBP=48
5CEA:0382 0000 C=DATA S=_DATA G=DGROUP M=FARHEAP ACBP=48
5CEA:0382 0002 C=DATA S=_DATA G=DGROUP M=FBRK ACBP=48
5CEA:0384 0000 C=DATA S=_DATA G=DGROUP M=SETBLOCK ACBP=48
5CEA:0384 0000 C=DATA S=_DATA G=DGROUP M=FFLUSH ACBP=48
5CEA:0384 0000 C=DATA S=_DATA G=DGROUP M=FLUSHALL ACBP=48
5CEA:0384 0000 C=DATA S=_DATA G=DGROUP M=FSEEK ACBP=48
5CEA:0384 0004 C=DATA S=_DATA G=DGROUP M=SETVBUF ACBP=48
5CEA:0388 0000 C=DATA S=_DATA G=DGROUP M=WRITE ACBP=48
5CEA:0388 0000 C=DATA S=_DATA G=DGROUP M=WRITEA ACBP=48
5CEA:0388 0000 C=DATA S=_DATA G=DGROUP M=XFFLUSH ACBP=48
5CEA:0388 0000 C=DATA S=_CVTSEG G=DGROUP M=C0.ASM ACBP=48
5CEA:0388 0000 C=DATA S=_SCNSEG G=DGROUP M=C0.ASM ACBP=48
5CEA:0388 0000 C=CONST S=_CONST G=DGROUP M=C0.ASM ACBP=48
5CEA:0388 0000 C=INITDATA S=_INIT_ G=DGROUP M=C0.ASM ACBP=48
5CEA:0388 0006 C=INITDATA S=_INIT_ G=DGROUP M=SETUPIO ACBP=48
5CEA:038E 0000 C=INITDATA S=_INITEND_ G=DGROUP M=C0.ASM ACBP=28
5CEA:038E 0000 C=EXITDATA S=_EXIT_ G=DGROUP M=C0.ASM ACBP=48
5CEA:038E 0000 C=EXITDATA S=_EXITEND_ G=DGROUP M=C0.ASM ACBP=28
5CEA:038E 0000 C=BSS S=_BSS G=DGROUP M=C0.ASM ACBP=48
5CEA:038E 0000 C=BSS S=_BSS G=DGROUP M=OUTTAA.C ACBP=48
5CEA:038E 0080 C=BSS S=_BSS G=DGROUP M=ATEXIT ACBP=48
5CEA:040E 0000 C=BSS S=_BSS G=DGROUP M=IOERROR ACBP=48
5CEA:040E 0000 C=BSS S=_BSS G=DGROUP M=ISATTY ACBP=48
5CEA:040E 0000 C=BSS S=_BSS G=DGROUP M=LSEEK ACBP=48
5CEA:040E 0000 C=BSS S=_BSS G=DGROUP M=SETUPIO ACBP=48
5CEA:040E 0000 C=BSS S=_BSS G=DGROUP M=SETBLOCK ACBP=48
5CEA:040E 0000 C=BSS S=_BSS G=DGROUP M=WRITEA ACBP=48
5CEA:040E 0000 C=BSSEND S=_BSSEND G=DGROUP M=C0.ASM ACBP=28
5D2B:0000 0080 C=STACK S=_STACK G=(none) M=C0.ASM ACBP=74
Address Publics by Name
5CEA:0000 idle DATASEG@
0000:0291 idle DGROUP@
0000:0358 idle F_LXLSH@
0000:0379 idle F_PADD@
0000:03A8 idle F_PSUB@
0000:0358 idle LXLSH@
0000:0355 N_LXLSH@
0000:0376 N_PADD@
0000:045B N_PCMP@
0000:03A5 idle N_PSUB@
0000:0379 idle PADD@
0000:03A8 idle PSUB@
0000:027A idle _ABORT
0000:0295 idle _ATEXIT
0160:0012 _CLOSE_COPPER
0160:000C _COP_PAL
016A:005A _DIS_EXIT
016A:00BE idle _DIS_GETMFRAME
016A:0060 idle _DIS_INDEMO
016A:0066 idle _DIS_MSGAREA
016A:0073 idle _DIS_MUSCODE
016A:0080 idle _DIS_MUSPLUS
016A:008F idle _DIS_MUSROW
016A:0040 _DIS_PARTSTART
016A:009B idle _DIS_SETCOPPER
016A:00AE idle _DIS_SETMFRAME
016A:00CA _DIS_SYNC
016A:0000 idle _DIS_VERSION
016A:0023 idle _DIS_WAITB
0160:0010 _DO_PAL
5CEA:007F _ERRNO
0000:031A _EXIT
0000:0676 idle _FARFREE
0000:078A idle _FARMALLOC
0000:08EE idle _FARREALLOC
0000:0AC4 _FFLUSH
0000:0B91 _FLUSHALL
0160:000A _FRAME_COUNT
0000:0676 _FREE
0000:0C55 _FSEEK
0000:0CD5 idle _FTELL
0160:003D _INIT_COPPER
0120:0012 _INIT_UFRAME
0000:0421 _ISATTY
0000:0432 _LSEEK
0109:0007 _MAIN
0000:0780 _MALLOC
0178:0000 _MEMBLOCK
50B9:0002 _PAL
0000:08E7 idle _REALLOC
0145:0006 idle _SCR_SEG
0000:0AA8 _SETBLOCK
0000:0DB5 _SETVBUF
0145:004C idle _TW_CLOSEGRAPH
0145:0032 idle _TW_CLRSCR
0145:008B idle _TW_GETPIXEL
0145:0008 _TW_OPENGRAPH
0145:0111 idle _TW_PICTOVMEM
0145:0052 idle _TW_PUTPIXEL
0145:00DB idle _TW_SETPALAREA
0145:00C2 _TW_SETPALETTE
0145:019D idle _TW_SETRGBPALETTE
0145:00FC _TW_SETSTART
0145:018F _TW_WAITVR
0120:001F _ULOSTA_FRAME
5CEA:0094 idle _WFADE
0000:1000 idle __AHINCR
0000:000C idle __AHSHIFT
5CEA:015C __ATEXITCNT
5CEA:038E __ATEXITTBL
0000:09DE __BRK
5CEA:008B __BRKLVL
5CEA:006B idle __C0ARGC
5CEA:006D idle __C0ARGV
5CEA:0071 idle __C0ENVIRON
0000:033B idle __CEXIT
0000:016A __CHECKNULL
0000:0157 __CLEANUP
0000:0349 idle __C_EXIT
5CEA:0324 idle __DOSERRNO
0000:040F idle __DOSERROR
5CEA:0326 idle __DOSERRORTOSV
5CEA:0075 idle __ENVLNG
5CEA:0077 idle __ENVSEG
5CEA:0079 idle __ENVSIZE
0000:0329 __EXIT
5CEA:015E __EXITBUF
5CEA:0162 idle __EXITFOPEN
5CEA:0166 idle __EXITOPEN
5CEA:0087 __HEAPBASE
5CEA:008F __HEAPTOP
5CEA:005B idle __INT0VECTOR
5CEA:005F idle __INT4VECTOR
5CEA:0063 idle __INT5VECTOR
5CEA:0067 idle __INT6VECTOR
0000:03D6 __IOERROR
0000:0293 idle __MMODEL
5CEA:02FA __NFILE
5CEA:02FC __OPENFD
5CEA:007D idle __OSMAJOR
5CEA:007E idle __OSMINOR
5CEA:007D idle __OSVERSION
5CEA:007B __PSP
5CEA:0388 idle __REALCVTVECTOR
0000:01C0 __RESTOREZERO
0000:0A1D __SBRK
5CEA:0388 idle __SCANTODVECTOR
0000:047C __SETUPIO
5CEA:0081 idle __STARTTIME
5CEA:0380 __STKLEN
5CEA:016A __STREAMS
0000:016B __TERMINATE
5CEA:007D idle __VERSION
0000:1023 __WRITE
0000:105F __XFFLUSH
5CEA:0085 idle ___BRKLVL
0000:0536 idle ___FIRST
0000:0538 idle ___LAST
0000:053A idle ___ROVER
0000:0ED2 ___WRITE
Address Publics by Value
0000:000C idle __AHSHIFT
0000:0157 __CLEANUP
0000:016A __CHECKNULL
0000:016B __TERMINATE
0000:01C0 __RESTOREZERO
0000:027A idle _ABORT
0000:0291 idle DGROUP@
0000:0293 idle __MMODEL
0000:0295 idle _ATEXIT
0000:031A _EXIT
0000:0329 __EXIT
0000:033B idle __CEXIT
0000:0349 idle __C_EXIT
0000:0355 N_LXLSH@
0000:0358 idle LXLSH@
0000:0358 idle F_LXLSH@
0000:0376 N_PADD@
0000:0379 idle F_PADD@
0000:0379 idle PADD@
0000:03A5 idle N_PSUB@
0000:03A8 idle F_PSUB@
0000:03A8 idle PSUB@
0000:03D6 __IOERROR
0000:040F idle __DOSERROR
0000:0421 _ISATTY
0000:0432 _LSEEK
0000:045B N_PCMP@
0000:047C __SETUPIO
0000:0536 idle ___FIRST
0000:0538 idle ___LAST
0000:053A idle ___ROVER
0000:0676 _FREE
0000:0676 idle _FARFREE
0000:0780 _MALLOC
0000:078A idle _FARMALLOC
0000:08E7 idle _REALLOC
0000:08EE idle _FARREALLOC
0000:09DE __BRK
0000:0A1D __SBRK
0000:0AA8 _SETBLOCK
0000:0AC4 _FFLUSH
0000:0B91 _FLUSHALL
0000:0C55 _FSEEK
0000:0CD5 idle _FTELL
0000:0DB5 _SETVBUF
0000:0ED2 ___WRITE
0000:1000 idle __AHINCR
0000:1023 __WRITE
0000:105F __XFFLUSH
0109:0007 _MAIN
0120:0012 _INIT_UFRAME
0120:001F _ULOSTA_FRAME
0145:0006 idle _SCR_SEG
0145:0008 _TW_OPENGRAPH
0145:0032 idle _TW_CLRSCR
0145:004C idle _TW_CLOSEGRAPH
0145:0052 idle _TW_PUTPIXEL
0145:008B idle _TW_GETPIXEL
0145:00C2 _TW_SETPALETTE
0145:00DB idle _TW_SETPALAREA
0145:00FC _TW_SETSTART
0145:0111 idle _TW_PICTOVMEM
0145:018F _TW_WAITVR
0145:019D idle _TW_SETRGBPALETTE
0160:000A _FRAME_COUNT
0160:000C _COP_PAL
0160:0010 _DO_PAL
0160:0012 _CLOSE_COPPER
0160:003D _INIT_COPPER
016A:0000 idle _DIS_VERSION
016A:0023 idle _DIS_WAITB
016A:0040 _DIS_PARTSTART
016A:005A _DIS_EXIT
016A:0060 idle _DIS_INDEMO
016A:0066 idle _DIS_MSGAREA
016A:0073 idle _DIS_MUSCODE
016A:0080 idle _DIS_MUSPLUS
016A:008F idle _DIS_MUSROW
016A:009B idle _DIS_SETCOPPER
016A:00AE idle _DIS_SETMFRAME
016A:00BE idle _DIS_GETMFRAME
016A:00CA _DIS_SYNC
0178:0000 _MEMBLOCK
50B9:0002 _PAL
5CEA:0000 idle DATASEG@
5CEA:005B idle __INT0VECTOR
5CEA:005F idle __INT4VECTOR
5CEA:0063 idle __INT5VECTOR
5CEA:0067 idle __INT6VECTOR
5CEA:006B idle __C0ARGC
5CEA:006D idle __C0ARGV
5CEA:0071 idle __C0ENVIRON
5CEA:0075 idle __ENVLNG
5CEA:0077 idle __ENVSEG
5CEA:0079 idle __ENVSIZE
5CEA:007B __PSP
5CEA:007D idle __OSVERSION
5CEA:007D idle __OSMAJOR
5CEA:007D idle __VERSION
5CEA:007E idle __OSMINOR
5CEA:007F _ERRNO
5CEA:0081 idle __STARTTIME
5CEA:0085 idle ___BRKLVL
5CEA:0087 __HEAPBASE
5CEA:008B __BRKLVL
5CEA:008F __HEAPTOP
5CEA:0094 idle _WFADE
5CEA:015C __ATEXITCNT
5CEA:015E __EXITBUF
5CEA:0162 idle __EXITFOPEN
5CEA:0166 idle __EXITOPEN
5CEA:016A __STREAMS
5CEA:02FA __NFILE
5CEA:02FC __OPENFD
5CEA:0324 idle __DOSERRNO
5CEA:0326 idle __DOSERRORTOSV
5CEA:0380 __STKLEN
5CEA:0388 idle __SCANTODVECTOR
5CEA:0388 idle __REALCVTVECTOR
5CEA:038E __ATEXITTBL
Program entry point at 0000:0000

BIN
PAM/PAM.PRJ Normal file

Binary file not shown.

BIN
PAM/PRAX4.FLI Normal file

Binary file not shown.

322
PAM/TWEAK.ASM Normal file
View file

@ -0,0 +1,322 @@
IDEAL
MODEL large
P386
CODESEG
PUBLIC C tw_opengraph, C tw_putpixel, C tw_setpalette, C tw_setstart
PUBLIC C tw_pictovmem, C tw_closegraph, C tw_waitvr, C tw_setrgbpalette
PUBLIC C tw_clrscr, C tw_setpalarea, C tw_getpixel
PUBLIC C scr_seg ; videomuistin alku segmentti
planetau db 1,2,4,8
scr_seg dw 0a000h
; avaa 320x200 tweak tilan, 4 sivua, 4 planea
PROC tw_opengraph
mov ax,13h
int 10h
mov dx, 03c4h
mov ax, 0604h
out dx, ax ; chain4 off
mov ax, 0f02h
out dx, ax
mov dx, 0a000h
mov es, dx
xor di, di
xor ax, ax
mov cx, 8000h
rep stosw ; clear vmem
mov dx, 03d4h
mov ax, 0014h
out dx, ax ; crtc long off
mov ax, 0e317h
out dx, ax ; crtc byte on
ret
ENDP
PROC tw_clrscr
mov dx, 3c4h
mov ax, 0f02h
out dx, ax
mov dx, [cs:scr_seg]
mov es, dx
xor di, di
xor eax, eax
mov cx, 1000h
rep stosd ; clear vmem
ret
ENDP
PROC tw_closegraph
mov ax, 03h
int 10h
ret
ENDP
; piirt„„ pisteen ruudulle
PROC tw_putpixel
ARG x:word, y:word, color:word
push bp
mov bp, sp
mov ax, [cs:scr_seg]
mov es, ax
mov dx, 03c4h
mov bx, [x]
and bx, 03h
mov ah, [cs:planetau+bx]
mov al, 02h
out dx, ax ; select plane
mov bx, [x]
shr bx, 2
mov ax, [y]
shl ax, 4
add bx, ax
shl ax, 1
add bx, ax
shl ax, 2
add bx, ax
mov cx, [color]
mov [es:bx], cl
pop bp
ret
ENDP
PROC tw_getpixel
ARG x:word, y:word
push bp
mov bp, sp
mov ax, [scr_seg]
mov es, ax
mov dx, 03ceh
mov ax, [x]
and ax, 03h
mov ah, al
mov al, 04h
out dx, ax ; select plane
mov ax, [y]
shl ax, 4
mov bx, ax
shl ax, 1
add bx, ax
shl ax, 2
add bx, ax
mov ax, [x]
shr ax, 2
add bx, ax
xor ax, ax
mov al,[es:bx]
pop bp
ret
ENDP
; vaihtaa koko paletin
PROC tw_setpalette
ARG pal:dword
push bp
mov bp, sp
push si ds
lds si,[pal]
cld
mov cx, 300h
mov dx, 03c8h
mov al, 0
out dx, al
inc dx
rep outsb
pop ds si
pop bp
ret
ENDP
PROC C tw_setpalarea
ARG pal:dword, start:word, cnt:word
push si ds
lds si,[pal]
cld
mov cx, [cnt]
mov ax, cx
add cx, ax
add cx, ax
mov dx, 03c8h
mov ax, [start]
out dx, al
inc dx
rep outsb
pop ds si
ret
ENDP
; asettaa videomuistin alun
PROC tw_setstart
ARG start:word
push bp
mov bp,sp
mov bx, [start]
mov dx, 03d4h
mov al, 0dh
mov ah, bl
out dx, ax
mov al, 0ch
mov ah, bh
out dx, ax
pop bp
ret
ENDP
; kopioi muistista unpacked 1bpl kuvan 4planen kuvaksi videomuistiin
; void tw_pictovmem(char far *pic, unsigned int vstart, unsigned int bytes);
PROC tw_pictovmem
ARG pic:dword,to:word,len:word
push bp
mov bp,sp
push ds es si di
mov es, [scr_seg]
mov di, [to]
lds si, [pic]
mov cx, [len]
mov dx,03ceh
mov ax,4005h ; w-mode 0
out dx,ax
mov dx, 03c4h
mov al, 02h
mov ah, 1h
out dx, ax
shr cx, 2
@@l1:
movsb
add si, 3
loop @@l1
lds si, [pic]
add si, 1d
mov di, [to]
mov cx, [len]
mov ax, 0202h
out dx, ax
shr cx, 2
@@l2:
movsb
add si, 3
loop @@l2
lds si, [pic]
add si, 2d
mov di, [to]
mov cx, [len]
mov ax, 0402h
out dx, ax
shr cx, 2
@@l3:
movsb
add si, 3
loop @@l3
lds si, [pic]
add si, 3d
mov di, [to]
mov cx, [len]
mov ax, 0802h
out dx, ax
shr cx, 2
@@l4:
movsb
add si, 3
loop @@l4
pop di si es ds
pop bp
ret
ENDP
PROC tw_waitvr
mov dx, 03dah
@@loop1:
in al, dx
test al, 08h
jnz @@loop1
@@loop2:
in al, dx
test al, 08h
jz @@loop2
ret
ENDP
PROC C tw_setrgbpalette
ARG pal:word, r:word, g:word, b:word
mov dx, 3c8h
mov ax, [pal]
out dx, al
inc dx
mov ax, [r]
out dx, al
mov ax, [g]
out dx, al
mov ax, [b]
out dx, al
ret
ENDP
END

BIN
PAM/TWEAK.OBJ Normal file

Binary file not shown.

278
PAM/VFLI.C Normal file
View file

@ -0,0 +1,278 @@
#include <stdio.h>
#include <stdio.h>
#include <string.h>
#include <dos.h>
unsigned char far *vram=(char far *)0xa0000000;
int blocksleft=999;
int wid,hig,pics;
long cnt[256];
char lookup[256];
char palette[768];
char ownpal[768];
int docoltable;
int colorlookup;
int oktoviewpal;
int useownpal;
int savefcp;
FILE *out;
main(int argc,char *argv[])
{
int a;
FILE *f1;
FILE *ppp;
f1=fopen(argv[1],"rb");
if(f1==NULL) return(0);
out=fopen("out.u","wb");
if(out==NULL) return(0);
_asm mov ax,19
_asm int 10h
for(a=0;a<256;a++) lookup[a]=a;
docoltable=1;
oktoviewpal=0;
useownpal=0;
savefcp=1;
rewind(f1); readflic(f1,0);
ppp=fopen("pal.pal","wb");
if(ppp!=0)
{
fwrite(palette,1,768,ppp);
fclose(ppp);
}
_asm mov ax,3
_asm int 10h
fclose(f1);
}
int readflic(FILE *f1,int flag)
{
int a;
long len,l,ll;
len=getw(f1);
len+=(long)getw(f1)<<16;
getw(f1);
pics=getw(f1);
wid=getw(f1);
hig=getw(f1);
fseek(f1,0x80L,SEEK_SET);
/*printf("\n\n\n\n\n\n\n\n\n\n\n");*/
for(;;)
{
l=ftell(f1);
l+=(long)getw(f1);
l+=(long)getw(f1)<<16;
a=getw(f1);
if(feof(f1)) break;
if(a==0xf1fa)
{
int a;
blocksleft=getw(f1);
for(a=0;a<8;a++) getc(f1);
ll=l;
}
else
{
doblock(f1,(unsigned)a);
fseek(f1,l,SEEK_SET);
blocksleft--;
if(blocksleft==0)
{
fseek(f1,ll,SEEK_SET);
{
int x,y;
unsigned u;
for(y=0;y<hig;y++)
{
u=y*320;
for(x=0;x<wid;x++) cnt[vram[u++]]++;
}
}
if(savefcp)
{
static int framecnt=0;
int x,y;
{
// outportb(0x3c8,7);
// outportb(0x3c9,47);
// outportb(0x3c9,47);
// outportb(0x3c9,47);
fwrite(MK_FP(0x0a000,0),1,64000,out);
}
}
if(flag&1) getch();
}
}
}
}
int viewpal(void)
{
int a;
unsigned u;
for(a=0;a<256;a++)
{
u=(a>>4)*3+320-48+((a&15)*3+200-48)*320;
vram[u]=a;
vram[u+1]=a;
vram[u+2]=a;
vram[320+u]=a;
vram[320+u+1]=a;
vram[320+u+2]=a;
vram[640+u]=a;
vram[640+u+1]=a;
vram[640+u+2]=a;
}
}
int doblock(FILE *f1,unsigned type)
{
if((type==0x000b || type==0x0004) && useownpal)
{
int a;
outportb(0x3c8,0);
for(a=0;a<768;a++) outportb(0x3c9,ownpal[a]);
if(oktoviewpal) viewpal();
return(0);
}
if(type==0x000b)
{
int a,c,d;
c=getc(f1)*256; /* count */
c+=getc(f1);
c*=3;
a=getc(f1)*256; /* first */
a+=getc(f1);
outportb(0x3c8,a);
for(a=0;a<c;a++) outportb(0x3c9,palette[a]=getc(f1));
if(oktoviewpal) viewpal();
}
else if(type==0x0004)
{
int a,c,d;
c=getc(f1)*256; /* count */
c+=getc(f1);
c*=3;
a=getc(f1)*256; /* first */
a+=getc(f1);
outportb(0x3c8,a);
for(a=0;a<c;a++) outportb(0x3c9,palette[a]=(getc(f1)>>2));
if(oktoviewpal) viewpal();
}
else if(type==0x000c)
{
int a,b,c,lc,cc,cm,lb,le,lad;
long l;
unsigned int u;
lb=getw(f1);
le=lb+getw(f1);
for(lc=lb;lc<le;lc++)
{
cm=getc(f1);
u=lc*320;
for(cc=0;cc<cm && u<64000;cc++)
{
a=getc(f1);
u+=a;
a=getc(f1);
if(a<0x80)
{
for(c=0;c<a;c++) vram[u++]=lookup[getc(f1)];
}
else
{
a=256-a;
b=lookup[getc(f1)];
for(c=0;c<a;c++) vram[u++]=b;
}
}
}
u=0;
}
else if(type==0x0007)
{
int a,b,b1,b2,c,lc,cc,cm,lb,le,lad;
int skipcnt;
long l;
unsigned int u;
le=getw(f1);
for(lc=lad=0;lc<le;lc++)
{
cm=getw(f1);
while(cm<0)
{
lad=320*-cm;
cm=getw(f1);
}
u=lc*320+lad;
for(cc=0;cc<cm && u<64000;cc++)
{
a=getc(f1);
u+=a;
a=getc(f1);
if(a<0x80)
{
for(c=0;c<a;c++)
{
vram[u++]=lookup[getc(f1)];
vram[u++]=lookup[getc(f1)];
}
}
else
{
a=256-a;
b1=lookup[getc(f1)];
b2=lookup[getc(f1)];
for(c=0;c<a;c++)
{
vram[u++]=b1;
vram[u++]=b2;
}
}
}
}
u=0;
}
else if(type==0x000f)
{
int a,b,c,lc,cc,cm;
long l;
unsigned int u;
for(lc=0;lc<hig;lc++)
{
u=lc*320;
cm=getc(f1);
for(cc=0;cc<cm && u<64000;cc++)
{
a=getc(f1);
if(a<0x80)
{
b=lookup[getc(f1)];
for(c=0;c<a;c++) vram[u++]=b;
}
else
{
a=256-a;
for(c=0;c<a;c++) vram[u++]=lookup[getc(f1)];
}
}
}
u=0;
}
else
{
printf("UNKNOWN BLOCK TYPE: %04X\n",type);
getch();
}
}

BIN
PAM/VFLI.EXE Normal file

Binary file not shown.

BIN
PAM/VFLI.OBJ Normal file

Binary file not shown.