Upload
This commit is contained in:
commit
43352ff262
1291 changed files with 220976 additions and 0 deletions
157
JPLOGO/ASM.ASM
Normal file
157
JPLOGO/ASM.ASM
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
code SEGMENT para public 'CODE'
|
||||
ASSUME cs:code
|
||||
.386
|
||||
LOCALS
|
||||
|
||||
PUBLIC _sin1024
|
||||
include sin1024.inc
|
||||
|
||||
PUBLIC _setborder
|
||||
_setborder PROC FAR
|
||||
push bp
|
||||
mov bp,sp
|
||||
mov dx,3dah
|
||||
in al,dx
|
||||
mov dx,3c0h
|
||||
mov al,11h+32
|
||||
out dx,al
|
||||
mov al,[bp+6]
|
||||
out dx,al
|
||||
pop bp
|
||||
ret
|
||||
_setborder ENDP
|
||||
|
||||
PUBLIC _inittwk
|
||||
_inittwk PROC FAR
|
||||
push bp
|
||||
mov bp,sp
|
||||
push si
|
||||
push di
|
||||
push ds
|
||||
;clear palette
|
||||
mov dx,3c8h
|
||||
xor al,al
|
||||
out dx,al
|
||||
inc dx
|
||||
mov cx,768
|
||||
@@1: out dx,al
|
||||
loop @@1
|
||||
;400 rows
|
||||
mov dx,3d4h
|
||||
mov ax,00009h
|
||||
out dx,ax
|
||||
;tweak
|
||||
mov dx,3d4h
|
||||
mov ax,00014h
|
||||
out dx,ax
|
||||
mov ax,0e317h
|
||||
out dx,ax
|
||||
mov dx,3c4h
|
||||
mov ax,0604h
|
||||
out dx,ax
|
||||
;
|
||||
mov dx,3c4h
|
||||
mov ax,0f02h
|
||||
out dx,ax
|
||||
mov ax,0a000h
|
||||
mov es,ax
|
||||
xor di,di
|
||||
mov cx,32768
|
||||
xor ax,ax
|
||||
rep stosw
|
||||
;
|
||||
pop ds
|
||||
pop di
|
||||
pop si
|
||||
pop bp
|
||||
ret
|
||||
_inittwk ENDP
|
||||
|
||||
PUBLIC _lineblit
|
||||
_lineblit PROC FAR
|
||||
push bp
|
||||
mov bp,sp
|
||||
push si
|
||||
push di
|
||||
push ds
|
||||
mov di,[bp+6]
|
||||
mov es,[bp+8]
|
||||
mov si,[bp+10]
|
||||
mov ds,[bp+12]
|
||||
zpl=0
|
||||
REPT 4
|
||||
mov dx,3c4h
|
||||
mov ax,02h+(100h shl zpl)
|
||||
out dx,ax
|
||||
zzz=0
|
||||
REPT 80/2
|
||||
mov al,ds:[si+(zzz+0)*4+zpl]
|
||||
mov ah,ds:[si+(zzz+1)*4+zpl]
|
||||
mov es:[di+zzz],ax
|
||||
zzz=zzz+2
|
||||
ENDM
|
||||
zpl=zpl+1
|
||||
ENDM
|
||||
pop ds
|
||||
pop di
|
||||
pop si
|
||||
pop bp
|
||||
ret
|
||||
_lineblit ENDP
|
||||
|
||||
PUBLIC _setpalarea
|
||||
_setpalarea PROC FAR
|
||||
push bp
|
||||
mov bp,sp
|
||||
push si
|
||||
push di
|
||||
push ds
|
||||
mov si,[bp+6]
|
||||
mov ds,[bp+8]
|
||||
mov ax,[bp+10]
|
||||
mov dx,3c8h
|
||||
out dx,al
|
||||
inc dx
|
||||
mov cx,[bp+12]
|
||||
shl cx,1
|
||||
add cx,ax
|
||||
rep outsb
|
||||
pop ds
|
||||
pop di
|
||||
pop si
|
||||
pop bp
|
||||
ret
|
||||
_setpalarea ENDP
|
||||
|
||||
include zoom.inc
|
||||
|
||||
PUBLIC _linezoom
|
||||
_linezoom PROC FAR
|
||||
push bp
|
||||
mov bp,sp
|
||||
push si
|
||||
push di
|
||||
push ds
|
||||
les di,[bp+6]
|
||||
lds si,[bp+10]
|
||||
mov bx,[bp+14]
|
||||
cmp bx,318
|
||||
jbe @@1
|
||||
mov bx,318
|
||||
@@1: and bx,not 1
|
||||
mov dx,3c4h
|
||||
mov ax,0f02h
|
||||
out dx,ax
|
||||
inc dx
|
||||
xor ax,ax
|
||||
call cs:zoomt[bx]
|
||||
pop ds
|
||||
pop di
|
||||
pop si
|
||||
pop bp
|
||||
ret
|
||||
_linezoom ENDP
|
||||
|
||||
code ENDS
|
||||
END
|
||||
|
||||
BIN
JPLOGO/ASM.OBJ
Normal file
BIN
JPLOGO/ASM.OBJ
Normal file
Binary file not shown.
108
JPLOGO/DOL.C
Normal file
108
JPLOGO/DOL.C
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
#include <conio.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#define BLACK -1
|
||||
#define EMPTY -2
|
||||
|
||||
#define BEG 140
|
||||
#define END 244
|
||||
|
||||
FILE *f1;
|
||||
|
||||
void P(char *str,...)
|
||||
{
|
||||
char out[256];
|
||||
va_list argp;
|
||||
va_start(argp,str);
|
||||
vsprintf(out,str,argp);
|
||||
fprintf(f1,"%s\n",out);
|
||||
va_end(argp);
|
||||
}
|
||||
|
||||
|
||||
main()
|
||||
{
|
||||
int a,b,c,x,y,z,le,ri;
|
||||
int xt[320];
|
||||
f1=fopen("zoom.inc","wt");
|
||||
P("zoomt LABEL WORD");
|
||||
for(a=0;a<320;a+=2)
|
||||
{
|
||||
y=a;
|
||||
if(!y) P("dw OFFSET @zoom0",BEG);
|
||||
else if(y<BEG) P("dw OFFSET @zoom%i",BEG);
|
||||
else if(y>END) P("dw OFFSET @zoom%i",END);
|
||||
else P("dw OFFSET @zoom%i",y);
|
||||
}
|
||||
P("@zoom0:");
|
||||
a=(160-END/2-1)&(~7);
|
||||
b=(160+END/2+8)&(~7);
|
||||
for(x=a;x<b;x+=8) P("mov es:[di+%i],ax",x/4);
|
||||
P("ret");
|
||||
for(y=BEG;y<=END;y+=2)
|
||||
{
|
||||
kbhit();
|
||||
printf("\r%i: ",y);
|
||||
P("@zoom%i:",y);
|
||||
|
||||
le=160-(y/2);
|
||||
ri=160+(y/2);
|
||||
c=ri-le+1;
|
||||
for(x=0;x<320;x++)
|
||||
{
|
||||
if(x<le || x>ri) xt[x]=BLACK;
|
||||
else xt[x]=((long)(x-le)*185L+(c/2))/(long)c;
|
||||
}
|
||||
|
||||
le=160-END/2-1; le&=~7;
|
||||
ri=160+END/2+8; ri&=~7;
|
||||
for(x=0;x<le;x++) xt[x]=EMPTY;
|
||||
for(x=ri;x<320;x++) xt[x]=EMPTY;
|
||||
|
||||
for(x=0;x<320;x+=8)
|
||||
{
|
||||
for(b=x;b<x+8;b++) if(xt[b]!=BLACK) break;
|
||||
if(b==x+8)
|
||||
{
|
||||
P("mov es:[di+%i],ax",x/4);
|
||||
for(b=x;b<x+8;b++) xt[b]=EMPTY;
|
||||
}
|
||||
}
|
||||
for(x=0;x<320;x+=4)
|
||||
{
|
||||
for(b=x;b<x+4;b++) if(xt[b]!=BLACK) break;
|
||||
if(b==x+4)
|
||||
{
|
||||
P("mov es:[di+%i],al",x/4);
|
||||
for(b=x;b<x+4;b++) xt[b]=EMPTY;
|
||||
}
|
||||
}
|
||||
for(x=0;x<320;x++) if(xt[x]==BLACK) printf(" %i",x);
|
||||
printf("\n");
|
||||
for(z=0;z<4;z++)
|
||||
{
|
||||
P("mov al,%i",1<<z);
|
||||
P("out dx,al");
|
||||
for(x=z;x<320;x+=8)
|
||||
{
|
||||
a=xt[x]; b=xt[x+4];
|
||||
if(a==EMPTY && b==EMPTY) continue;
|
||||
if(a==BLACK && b==BLACK) P("xor ax,ax");
|
||||
else
|
||||
{
|
||||
if(a==BLACK) P("xor al,al");
|
||||
else if(a!=EMPTY) P("mov al,ds:[si+%i]",a);
|
||||
if(b==BLACK) P("xor ah,ah");
|
||||
else if(b!=EMPTY) P("mov ah,ds:[si+%i]",b);
|
||||
}
|
||||
if(b==EMPTY) P("mov es:[di+%i],al",x/4);
|
||||
else if(a==EMPTY) P("mov es:[di+%i],ah",x/4+1);
|
||||
else P("mov es:[di+%i],ax",x/4);
|
||||
}
|
||||
}
|
||||
P("ret");
|
||||
}
|
||||
fclose(f1);
|
||||
}
|
||||
BIN
JPLOGO/DOL.EXE
Normal file
BIN
JPLOGO/DOL.EXE
Normal file
Binary file not shown.
BIN
JPLOGO/DOL.OBJ
Normal file
BIN
JPLOGO/DOL.OBJ
Normal file
Binary file not shown.
BIN
JPLOGO/DP_PREFS
Normal file
BIN
JPLOGO/DP_PREFS
Normal file
Binary file not shown.
BIN
JPLOGO/ICEKNGDM.LBM
Normal file
BIN
JPLOGO/ICEKNGDM.LBM
Normal file
Binary file not shown.
BIN
JPLOGO/ICEKNGDM.UP
Normal file
BIN
JPLOGO/ICEKNGDM.UP
Normal file
Binary file not shown.
190
JPLOGO/JP.BBK
Normal file
190
JPLOGO/JP.BBK
Normal file
|
|
@ -0,0 +1,190 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "..\dis\dis.h"
|
||||
|
||||
FILE *f1;
|
||||
|
||||
#include "readp.c"
|
||||
|
||||
extern char pic[];
|
||||
|
||||
char *vram=(char *)0xa0000000L;
|
||||
|
||||
char rowdata1[200][184];
|
||||
char rowdata2[200][184];
|
||||
char *row[400];
|
||||
|
||||
char pal2[768];
|
||||
char palette[768];
|
||||
char rowbuf[640];
|
||||
|
||||
extern int sin1024[];
|
||||
|
||||
int frameysz[512];
|
||||
int frameysb[512];
|
||||
int lasty[400];
|
||||
int lasts[400];
|
||||
|
||||
void scrolly(int y)
|
||||
{
|
||||
int a;
|
||||
a=y*80;
|
||||
_asm
|
||||
{
|
||||
mov dx,3d4h
|
||||
mov al,0dh
|
||||
mov ah,byte ptr a[0]
|
||||
out dx,ax
|
||||
mov dx,3d4h
|
||||
mov al,0ch
|
||||
mov ah,byte ptr a[1]
|
||||
out dx,ax
|
||||
}
|
||||
}
|
||||
|
||||
char *shiftstatus=(char *)0x0417;
|
||||
int waitb()
|
||||
{
|
||||
return(dis_waitb());
|
||||
}
|
||||
|
||||
int calc(int y,int c)
|
||||
{
|
||||
_asm
|
||||
{
|
||||
mov ax,y
|
||||
sub ax,400
|
||||
add ax,c
|
||||
mov dx,400
|
||||
imul dx
|
||||
mov cx,c
|
||||
idiv cx
|
||||
}
|
||||
}
|
||||
|
||||
void doit(void)
|
||||
{
|
||||
int frame=0,halt=0,storea=0,ysb=0;
|
||||
int a,b,c,y,ysz,ysza,xsc,spd=10,la;
|
||||
while(!dis_exit() && frame<700)
|
||||
{
|
||||
if(*shiftstatus&16) setborder(0);
|
||||
c=waitb();
|
||||
if(*shiftstatus&16) setborder(127);
|
||||
frame+=c;
|
||||
if(frame>511) c=400;
|
||||
else
|
||||
{
|
||||
c=frameysz[frame]/16;
|
||||
ysb=frameysb[frame]/16;
|
||||
}
|
||||
xsc=(400-c)/2;
|
||||
for(y=0;y<400;y++)
|
||||
{
|
||||
b=calc(y-ysb,c);
|
||||
//b=(long)(y-400+c)*400L/(long)c;
|
||||
if(b<0 || b>399)
|
||||
{
|
||||
linezoom(vram+y*80,NULL,0);
|
||||
}
|
||||
else
|
||||
{
|
||||
a=184+(sin1024[(b<<5)/25]*xsc+32)/64;
|
||||
a&=~1;
|
||||
if(lasty[y]!=b || lasts[y]!=a)
|
||||
{
|
||||
linezoom(vram+y*80,row[b],a);
|
||||
lasty[y]=b;
|
||||
lasts[y]=a;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
main()
|
||||
{
|
||||
int frame,halt=0,storea=0;
|
||||
int a,b,c,y,ya,ysz,ysza,xsc,spd=10,la;
|
||||
dis_partstart();
|
||||
|
||||
for(a=0;a<200;a++) row[a]=rowdata1[a];
|
||||
for(a=0;a<200;a++) row[a+200]=rowdata2[a];
|
||||
|
||||
frame=0;
|
||||
ysz=400*16; ysza=-460/6;
|
||||
y=0;
|
||||
for(frame=0;frame<512;frame++)
|
||||
{
|
||||
if(halt<=10)
|
||||
{
|
||||
a=ysz-400*16;
|
||||
if((a&0x8000)^(la&0x8000))
|
||||
{
|
||||
ysza=ysza*4/5;
|
||||
if(halt++>10)
|
||||
{
|
||||
ysza=0;
|
||||
ysz=400*16;
|
||||
}
|
||||
la=a;
|
||||
}
|
||||
else
|
||||
{
|
||||
ysza-=a/30;
|
||||
ysz+=ysza;
|
||||
}
|
||||
}
|
||||
frameysz[frame]=ysz;
|
||||
a=ysz-400*16;
|
||||
y-=a/4;
|
||||
frameysb[frame]=y;
|
||||
}
|
||||
|
||||
_asm mov ax,13h
|
||||
_asm int 10h
|
||||
inittwk();
|
||||
_asm
|
||||
{
|
||||
mov dx,3c0h
|
||||
mov al,11h
|
||||
out dx,al
|
||||
mov al,255
|
||||
out dx,al
|
||||
mov al,20h
|
||||
out dx,al
|
||||
}
|
||||
|
||||
readp(palette,-1,pic);
|
||||
for(y=0;y<400;y++)
|
||||
{
|
||||
readp(rowbuf,y,pic);
|
||||
memcpy(row[y],rowbuf+70,184);
|
||||
}
|
||||
setpalarea(palette,0,256);
|
||||
|
||||
for(y=0;y<400;y++) lasty[y]=lasts[y]=-1;
|
||||
dis_waitb();
|
||||
scrolly(400);
|
||||
dis_waitb();
|
||||
for(y=0;y<400;y++)
|
||||
{
|
||||
linezoom(vram+y*80,row[y],184);
|
||||
}
|
||||
a=64; y=400*64;
|
||||
while(y>0)
|
||||
{
|
||||
y-=a;
|
||||
a+=6;
|
||||
if(y<0) y=0;
|
||||
scrolly(y/64);
|
||||
dis_waitb();
|
||||
}
|
||||
storea=a;
|
||||
dis_waitb();
|
||||
doit();
|
||||
//_asm mov ax,3
|
||||
//_asm int 10h
|
||||
//printf("%i\n",storea);
|
||||
return(0);
|
||||
}
|
||||
227
JPLOGO/JP.C
Normal file
227
JPLOGO/JP.C
Normal file
|
|
@ -0,0 +1,227 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "..\dis\dis.h"
|
||||
|
||||
FILE *f1;
|
||||
|
||||
#include "readp.c"
|
||||
|
||||
extern char pic[];
|
||||
|
||||
char *vram=(char *)0xa0000000L;
|
||||
|
||||
char rowdata1[200][186];
|
||||
char rowdata2[200][186];
|
||||
char *row[400];
|
||||
|
||||
char pal2[768];
|
||||
char palette[768];
|
||||
char rowbuf[640];
|
||||
|
||||
extern int sin1024[];
|
||||
|
||||
int framey1[200];
|
||||
int framey2[200];
|
||||
int framey1t[800];
|
||||
int framey2t[800];
|
||||
int lasty[400];
|
||||
int lasts[400];
|
||||
|
||||
void scrolly(int y)
|
||||
{
|
||||
int a;
|
||||
a=y*80;
|
||||
_asm
|
||||
{
|
||||
mov dx,3d4h
|
||||
mov al,0dh
|
||||
mov ah,byte ptr a[0]
|
||||
out dx,ax
|
||||
mov dx,3d4h
|
||||
mov al,0ch
|
||||
mov ah,byte ptr a[1]
|
||||
out dx,ax
|
||||
}
|
||||
}
|
||||
|
||||
char *shiftstatus=(char *)0x0417;
|
||||
int waitb()
|
||||
{
|
||||
return(dis_waitb());
|
||||
}
|
||||
|
||||
int calc(int y,int c)
|
||||
{
|
||||
_asm
|
||||
{
|
||||
mov ax,y
|
||||
sub ax,400
|
||||
add ax,c
|
||||
mov dx,400
|
||||
imul dx
|
||||
mov cx,c
|
||||
idiv cx
|
||||
}
|
||||
}
|
||||
|
||||
void doit(void)
|
||||
{
|
||||
int frame=0,halt=0,storea=0,ysb=0;
|
||||
int a,b,c,y,ysz,ysza,xsc,spd=10,la,y1,y2;
|
||||
while(!dis_exit() && dis_musplus()<4);
|
||||
while(!dis_exit() && frame<700)
|
||||
{
|
||||
if(*shiftstatus&16) setborder(0);
|
||||
c=waitb();
|
||||
if(*shiftstatus&16) setborder(127);
|
||||
frame+=c;
|
||||
if(frame>511) c=400;
|
||||
else
|
||||
{
|
||||
y1=framey1t[frame]/16;
|
||||
y2=framey2t[frame]/16;
|
||||
}
|
||||
xsc=(400-(y2-y1))/8;
|
||||
for(y=0;y<400;y++)
|
||||
{
|
||||
if(y<y1 || y>=y2)
|
||||
{
|
||||
linezoom(vram+y*80,NULL,0);
|
||||
}
|
||||
else
|
||||
{
|
||||
b=(long)(y-y1)*400L/(long)(y2-y1);
|
||||
a=184+(sin1024[b*32/25]*xsc+32)/64;
|
||||
a&=~1;
|
||||
if(lasty[y]!=b || lasts[y]!=a)
|
||||
{
|
||||
linezoom(vram+y*80,row[b],a);
|
||||
lasty[y]=b;
|
||||
lasts[y]=a;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
main()
|
||||
{
|
||||
int frame,halt=0,storea=0;
|
||||
int a,b,c,d,y,ya,ysz,ysza,xsc,spd=10,la;
|
||||
int y1,y2,y1a,y2a,ly1a,mika;
|
||||
dis_partstart();
|
||||
|
||||
for(a=0;a<200;a++) row[a]=rowdata1[a];
|
||||
for(a=0;a<200;a++) row[a+200]=rowdata2[a];
|
||||
|
||||
frame=0;
|
||||
ysz=400*16; ysza=-460/6;
|
||||
y=0;
|
||||
y1=0; y1a=500;
|
||||
y2=399*16; y2a=500;
|
||||
mika=1;
|
||||
for(frame=0;frame<200;frame++)
|
||||
{
|
||||
if(!halt)
|
||||
{
|
||||
y1+=y1a;
|
||||
y2+=y2a;
|
||||
|
||||
y2a+=16;
|
||||
if(y2>400*16)
|
||||
{
|
||||
y2-=y2a;
|
||||
y2a=-y2a*mika/8;
|
||||
if(mika<4) mika+=3;
|
||||
}
|
||||
|
||||
y1a+=16;
|
||||
|
||||
la=a;
|
||||
a=(y2-y1)-400*16;
|
||||
if((a&0x8000)^(la&0x8000))
|
||||
{
|
||||
y1a=y1a*7/8;
|
||||
}
|
||||
y1a+=a/8;
|
||||
y2a-=a/8;
|
||||
}
|
||||
|
||||
if(frame>90)
|
||||
{
|
||||
if(y2>=399*16)
|
||||
{
|
||||
y2=400*16;
|
||||
halt=1;
|
||||
}
|
||||
else y2a=8;
|
||||
y1=y2-400*16;
|
||||
}
|
||||
|
||||
framey1[frame]=y1;
|
||||
framey2[frame]=y2;
|
||||
}
|
||||
for(a=0;a<800;a++)
|
||||
{
|
||||
b=a/4;
|
||||
c=a&3;
|
||||
d=3-c;
|
||||
framey1t[a]=(framey1[b]*d+framey1[b+1]*c)/3;
|
||||
framey2t[a]=(framey2[b]*d+framey2[b+1]*c)/3;
|
||||
}
|
||||
|
||||
_asm mov ax,13h
|
||||
_asm int 10h
|
||||
inittwk();
|
||||
_asm
|
||||
{
|
||||
mov dx,3c0h
|
||||
mov al,11h
|
||||
out dx,al
|
||||
mov al,255
|
||||
out dx,al
|
||||
mov al,20h
|
||||
out dx,al
|
||||
}
|
||||
|
||||
readp(palette,-1,pic);
|
||||
palette[64*3+0]=0;
|
||||
palette[64*3+1]=0;
|
||||
palette[64*3+2]=0;
|
||||
for(y=0;y<400;y++)
|
||||
{
|
||||
readp(rowbuf,y,pic);
|
||||
memcpy(row[y],rowbuf+70,184);
|
||||
row[y][184]=65;
|
||||
}
|
||||
setpalarea(palette,0,256);
|
||||
for(a=0;a<400;a++)
|
||||
{
|
||||
for(b=0;b<184;b++) if(row[a][b]==0) row[a][b]=64;
|
||||
}
|
||||
|
||||
for(y=0;y<400;y++) lasty[y]=lasts[y]=-1;
|
||||
dis_waitb();
|
||||
scrolly(400);
|
||||
dis_waitb();
|
||||
for(y=0;y<400;y++)
|
||||
{
|
||||
linezoom(vram+y*80,row[y],184);
|
||||
}
|
||||
a=64; y=400*64;
|
||||
while(y>0)
|
||||
{
|
||||
y-=a;
|
||||
a+=6;
|
||||
if(y<0) y=0;
|
||||
scrolly(y/64);
|
||||
dis_waitb();
|
||||
}
|
||||
storea=a;
|
||||
dis_waitb();
|
||||
doit();
|
||||
//_asm mov ax,3
|
||||
//_asm int 10h
|
||||
//printf("%i\n",storea);
|
||||
return(0);
|
||||
}
|
||||
BIN
JPLOGO/JP.EXE
Normal file
BIN
JPLOGO/JP.EXE
Normal file
Binary file not shown.
BIN
JPLOGO/JP.OBJ
Normal file
BIN
JPLOGO/JP.OBJ
Normal file
Binary file not shown.
BIN
JPLOGO/JP1.EXE
Normal file
BIN
JPLOGO/JP1.EXE
Normal file
Binary file not shown.
205
JPLOGO/JP3.C
Normal file
205
JPLOGO/JP3.C
Normal file
|
|
@ -0,0 +1,205 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "..\dis\dis.h"
|
||||
|
||||
FILE *f1;
|
||||
|
||||
#include "readp.c"
|
||||
|
||||
extern char pic[];
|
||||
|
||||
char *vram=(char *)0xa0000000L;
|
||||
|
||||
char rowdata1[200][184];
|
||||
char rowdata2[200][184];
|
||||
char *row[400];
|
||||
|
||||
char pal2[768];
|
||||
char palette[768];
|
||||
char rowbuf[640];
|
||||
|
||||
extern int sin1024[];
|
||||
|
||||
int framey1[512];
|
||||
int framey2[512];
|
||||
int lasty[400];
|
||||
int lasts[400];
|
||||
|
||||
void scrolly(int y)
|
||||
{
|
||||
int a;
|
||||
a=y*80;
|
||||
_asm
|
||||
{
|
||||
mov dx,3d4h
|
||||
mov al,0dh
|
||||
mov ah,byte ptr a[0]
|
||||
out dx,ax
|
||||
mov dx,3d4h
|
||||
mov al,0ch
|
||||
mov ah,byte ptr a[1]
|
||||
out dx,ax
|
||||
}
|
||||
}
|
||||
|
||||
char *shiftstatus=(char *)0x0417;
|
||||
int waitb()
|
||||
{
|
||||
return(dis_waitb());
|
||||
}
|
||||
|
||||
int calc(int y,int c)
|
||||
{
|
||||
_asm
|
||||
{
|
||||
mov ax,y
|
||||
sub ax,400
|
||||
add ax,c
|
||||
mov dx,400
|
||||
imul dx
|
||||
mov cx,c
|
||||
idiv cx
|
||||
}
|
||||
}
|
||||
|
||||
void doit(void)
|
||||
{
|
||||
int frame=0,halt=0,storea=0,ysb=0;
|
||||
int a,b,c,y,ysz,ysza,xsc,spd=10,la,y1,y2;
|
||||
while(!dis_exit() && frame<700)
|
||||
{
|
||||
if(*shiftstatus&16) setborder(0);
|
||||
c=waitb();
|
||||
if(*shiftstatus&16) setborder(127);
|
||||
frame+=c;
|
||||
if(frame>511) c=400;
|
||||
else
|
||||
{
|
||||
y1=framey1[frame]/16;
|
||||
y2=framey2[frame]/16;
|
||||
}
|
||||
xsc=(400-(y2-y1))/8;
|
||||
for(y=0;y<400;y++)
|
||||
{
|
||||
if(y<y1 || y>=y2)
|
||||
{
|
||||
linezoom(vram+y*80,NULL,0);
|
||||
}
|
||||
else
|
||||
{
|
||||
b=(long)(y-y1)*400L/(long)(y2-y1);
|
||||
a=184+(sin1024[b*32/25]*xsc+32)/64;
|
||||
a&=~1;
|
||||
if(lasty[y]!=b || lasts[y]!=a)
|
||||
{
|
||||
linezoom(vram+y*80,row[b],a);
|
||||
lasty[y]=b;
|
||||
lasts[y]=a;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
main()
|
||||
{
|
||||
int frame,halt=0,storea=0;
|
||||
int a,b,c,y,ya,ysz,ysza,xsc,spd=10,la;
|
||||
int y1,y2,y1a,y2a,ly1a;
|
||||
dis_partstart();
|
||||
|
||||
for(a=0;a<200;a++) row[a]=rowdata1[a];
|
||||
for(a=0;a<200;a++) row[a+200]=rowdata2[a];
|
||||
|
||||
frame=0;
|
||||
ysz=400*16; ysza=-460/6;
|
||||
y=0;
|
||||
y1=0; y1a=500;
|
||||
y2=399*16; y2a=500;
|
||||
for(frame=0;frame<512;frame++)
|
||||
{
|
||||
if(!halt)
|
||||
{
|
||||
y1+=y1a;
|
||||
y2+=y2a;
|
||||
|
||||
y2a+=9;
|
||||
if(y2>400*16)
|
||||
{
|
||||
y2-=y2a;
|
||||
y2a=-y2a*5/8;
|
||||
}
|
||||
|
||||
y1a+=9;
|
||||
|
||||
la=a;
|
||||
a=(y2-y1)-400*16;
|
||||
if((a&0x8000)^(la&0x8000))
|
||||
{
|
||||
y1a=y1a*5/8;
|
||||
}
|
||||
y1a+=a/20;
|
||||
y2a-=a/20;
|
||||
}
|
||||
|
||||
if(frame>97)
|
||||
{
|
||||
if(y2>=399*16)
|
||||
{
|
||||
y2=400*16;
|
||||
halt=1;
|
||||
}
|
||||
y1=y2-400*16;
|
||||
}
|
||||
|
||||
framey1[frame]=y1;
|
||||
framey2[frame]=y2;
|
||||
}
|
||||
|
||||
_asm mov ax,13h
|
||||
_asm int 10h
|
||||
inittwk();
|
||||
_asm
|
||||
{
|
||||
mov dx,3c0h
|
||||
mov al,11h
|
||||
out dx,al
|
||||
mov al,255
|
||||
out dx,al
|
||||
mov al,20h
|
||||
out dx,al
|
||||
}
|
||||
|
||||
readp(palette,-1,pic);
|
||||
for(y=0;y<400;y++)
|
||||
{
|
||||
readp(rowbuf,y,pic);
|
||||
memcpy(row[y],rowbuf+70,184);
|
||||
}
|
||||
setpalarea(palette,0,256);
|
||||
|
||||
for(y=0;y<400;y++) lasty[y]=lasts[y]=-1;
|
||||
dis_waitb();
|
||||
scrolly(400);
|
||||
dis_waitb();
|
||||
for(y=0;y<400;y++)
|
||||
{
|
||||
linezoom(vram+y*80,row[y],184);
|
||||
}
|
||||
a=64; y=400*64;
|
||||
while(y>0)
|
||||
{
|
||||
y-=a;
|
||||
a+=6;
|
||||
if(y<0) y=0;
|
||||
scrolly(y/64);
|
||||
dis_waitb();
|
||||
}
|
||||
storea=a;
|
||||
dis_waitb();
|
||||
doit();
|
||||
//_asm mov ax,3
|
||||
//_asm int 10h
|
||||
//printf("%i\n",storea);
|
||||
return(0);
|
||||
}
|
||||
25
JPLOGO/MAKEFILE
Normal file
25
JPLOGO/MAKEFILE
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
all : jp.exe
|
||||
|
||||
# objects
|
||||
|
||||
objs=jp.obj asm.obj
|
||||
|
||||
asm.asm : zoom.inc
|
||||
|
||||
# option flags
|
||||
|
||||
asm_f = /ML /m9 /s /JJUMPS
|
||||
c_f = /AL /c /W3 /Oxaz
|
||||
|
||||
# general compile orders
|
||||
|
||||
.asm.obj :
|
||||
tasm $(asm_f) $<
|
||||
|
||||
.c.obj :
|
||||
cl $(c_f) $<
|
||||
|
||||
jp.exe : $(objs)
|
||||
link /E $(objs)+_pic.obk+..\dis\disc.obj,jp.exe,nul;
|
||||
copy jp.exe ..\main\data\jplogo.exe
|
||||
|
||||
BIN
JPLOGO/PIC.LBM
Normal file
BIN
JPLOGO/PIC.LBM
Normal file
Binary file not shown.
BIN
JPLOGO/PIC.UH
Normal file
BIN
JPLOGO/PIC.UH
Normal file
Binary file not shown.
64
JPLOGO/READP.C
Normal file
64
JPLOGO/READP.C
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
struct st_readp
|
||||
{
|
||||
int magic;
|
||||
int wid;
|
||||
int hig;
|
||||
int cols;
|
||||
int add;
|
||||
};
|
||||
|
||||
void readp(char *dest,int row,char *src)
|
||||
{
|
||||
int bytes,a,b;
|
||||
struct st_readp *hdr;
|
||||
hdr=(struct st_readp *)src;
|
||||
if(row==-1)
|
||||
{
|
||||
memcpy(dest,src+16,hdr->cols*3);
|
||||
return;
|
||||
}
|
||||
if(row>=hdr->hig) return;
|
||||
src+=hdr->add*16;
|
||||
while(row)
|
||||
{
|
||||
src+=*(int *)src;
|
||||
src+=2;
|
||||
row--;
|
||||
}
|
||||
bytes=*(int *)src;
|
||||
src+=2;
|
||||
_asm
|
||||
{
|
||||
push si
|
||||
push ds
|
||||
push di
|
||||
push es
|
||||
mov cx,bytes
|
||||
lds si,src
|
||||
add cx,si
|
||||
les di,dest
|
||||
l1: mov al,ds:[si]
|
||||
inc si
|
||||
or al,al
|
||||
jns l2
|
||||
mov ah,al
|
||||
and ah,7fh
|
||||
mov al,ds:[si]
|
||||
inc si
|
||||
l4: mov es:[di],al
|
||||
inc di
|
||||
dec ah
|
||||
jnz l4
|
||||
cmp si,cx
|
||||
jb l1
|
||||
jmp l3
|
||||
l2: mov es:[di],al
|
||||
inc di
|
||||
cmp si,cx
|
||||
jb l1
|
||||
l3: pop es
|
||||
pop di
|
||||
pop ds
|
||||
pop si
|
||||
}
|
||||
}
|
||||
33
JPLOGO/SIN1024.INC
Normal file
33
JPLOGO/SIN1024.INC
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
_sin1024 LABEL WORD
|
||||
dw 0,1,3,4,6,7,9,10,12,14,15,17,18,20,21,23,25,26,28,29,31,32,34,36,37,39,40,42,43,45,46,48
|
||||
dw 49,51,53,54,56,57,59,60,62,63,65,66,68,69,71,72,74,75,77,78,80,81,83,84,86,87,89,90,92,93,95,96
|
||||
dw 97,99,100,102,103,105,106,108,109,110,112,113,115,116,117,119,120,122,123,124,126,127,128,130,131,132,134,135,136,138,139,140
|
||||
dw 142,143,144,146,147,148,149,151,152,153,155,156,157,158,159,161,162,163,164,166,167,168,169,170,171,173,174,175,176,177,178,179
|
||||
dw 181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,211
|
||||
dw 212,213,214,215,216,217,217,218,219,220,221,221,222,223,224,225,225,226,227,227,228,229,230,230,231,232,232,233,234,234,235,235
|
||||
dw 236,237,237,238,238,239,239,240,241,241,242,242,243,243,244,244,244,245,245,246,246,247,247,247,248,248,249,249,249,250,250,250
|
||||
dw 251,251,251,251,252,252,252,252,253,253,253,253,254,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255
|
||||
dw 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,254,253,253,253,253,252,252,252,252,251,251,251
|
||||
dw 251,250,250,250,249,249,249,248,248,247,247,247,246,246,245,245,244,244,244,243,243,242,242,241,241,240,239,239,238,238,237,237
|
||||
dw 236,235,235,234,234,233,232,232,231,230,230,229,228,227,227,226,225,225,224,223,222,221,221,220,219,218,217,217,216,215,214,213
|
||||
dw 212,211,211,210,209,208,207,206,205,204,203,202,201,200,199,198,197,196,195,194,193,192,191,190,189,188,187,186,185,184,183,182
|
||||
dw 181,179,178,177,176,175,174,173,171,170,169,168,167,166,164,163,162,161,159,158,157,156,155,153,152,151,149,148,147,146,144,143
|
||||
dw 142,140,139,138,136,135,134,132,131,130,128,127,126,124,123,122,120,119,117,116,115,113,112,110,109,108,106,105,103,102,100,99
|
||||
dw 97,96,95,93,92,90,89,87,86,84,83,81,80,78,77,75,74,72,71,69,68,66,65,63,62,60,59,57,56,54,53,51
|
||||
dw 49,48,46,45,43,42,40,39,37,36,34,32,31,29,28,26,25,23,21,20,18,17,15,14,12,10,9,7,6,4,3,1
|
||||
dw 0,-1,-3,-4,-6,-7,-9,-10,-12,-14,-15,-17,-18,-20,-21,-23,-25,-26,-28,-29,-31,-32,-34,-36,-37,-39,-40,-42,-43,-45,-46,-48
|
||||
dw -49,-51,-53,-54,-56,-57,-59,-60,-62,-63,-65,-66,-68,-69,-71,-72,-74,-75,-77,-78,-80,-81,-83,-84,-86,-87,-89,-90,-92,-93,-95,-96
|
||||
dw -97,-99,-100,-102,-103,-105,-106,-108,-109,-110,-112,-113,-115,-116,-117,-119,-120,-122,-123,-124,-126,-127,-128,-130,-131,-132,-134,-135,-136,-138,-139,-140
|
||||
dw -142,-143,-144,-146,-147,-148,-149,-151,-152,-153,-155,-156,-157,-158,-159,-161,-162,-163,-164,-166,-167,-168,-169,-170,-171,-173,-174,-175,-176,-177,-178,-179
|
||||
dw -181,-182,-183,-184,-185,-186,-187,-188,-189,-190,-191,-192,-193,-194,-195,-196,-197,-198,-199,-200,-201,-202,-203,-204,-205,-206,-207,-208,-209,-210,-211,-211
|
||||
dw -212,-213,-214,-215,-216,-217,-217,-218,-219,-220,-221,-221,-222,-223,-224,-225,-225,-226,-227,-227,-228,-229,-230,-230,-231,-232,-232,-233,-234,-234,-235,-235
|
||||
dw -236,-237,-237,-238,-238,-239,-239,-240,-241,-241,-242,-242,-243,-243,-244,-244,-244,-245,-245,-246,-246,-247,-247,-247,-248,-248,-249,-249,-249,-250,-250,-250
|
||||
dw -251,-251,-251,-251,-252,-252,-252,-252,-253,-253,-253,-253,-254,-254,-254,-254,-254,-254,-255,-255,-255,-255,-255,-255,-255,-255,-255,-255,-255,-255,-255,-255
|
||||
dw -255,-255,-255,-255,-255,-255,-255,-255,-255,-255,-255,-255,-255,-255,-255,-254,-254,-254,-254,-254,-254,-253,-253,-253,-253,-252,-252,-252,-252,-251,-251,-251
|
||||
dw -251,-250,-250,-250,-249,-249,-249,-248,-248,-247,-247,-247,-246,-246,-245,-245,-244,-244,-244,-243,-243,-242,-242,-241,-241,-240,-239,-239,-238,-238,-237,-237
|
||||
dw -236,-235,-235,-234,-234,-233,-232,-232,-231,-230,-230,-229,-228,-227,-227,-226,-225,-225,-224,-223,-222,-221,-221,-220,-219,-218,-217,-217,-216,-215,-214,-213
|
||||
dw -212,-211,-211,-210,-209,-208,-207,-206,-205,-204,-203,-202,-201,-200,-199,-198,-197,-196,-195,-194,-193,-192,-191,-190,-189,-188,-187,-186,-185,-184,-183,-182
|
||||
dw -181,-179,-178,-177,-176,-175,-174,-173,-171,-170,-169,-168,-167,-166,-164,-163,-162,-161,-159,-158,-157,-156,-155,-153,-152,-151,-149,-148,-147,-146,-144,-143
|
||||
dw -142,-140,-139,-138,-136,-135,-134,-132,-131,-130,-128,-127,-126,-124,-123,-122,-120,-119,-117,-116,-115,-113,-112,-110,-109,-108,-106,-105,-103,-102,-100,-99
|
||||
dw -97,-96,-95,-93,-92,-90,-89,-87,-86,-84,-83,-81,-80,-78,-77,-75,-74,-72,-71,-69,-68,-66,-65,-63,-62,-60,-59,-57,-56,-54,-53,-51
|
||||
dw -49,-48,-46,-45,-43,-42,-40,-39,-37,-36,-34,-32,-31,-29,-28,-26,-25,-23,-21,-20,-18,-17,-15,-14,-12,-10,-9,-7,-6,-4,-3,-1
|
||||
17
JPLOGO/TMP
Normal file
17
JPLOGO/TMP
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
ysza:-460 ysz:6400
|
||||
ysza:-460 ysz:5940
|
||||
ysza:-317 ysz:5623
|
||||
ysza:-269 ysz:5354
|
||||
ysza:-204 ysz:5150
|
||||
ysza:-126 ysz:5024
|
||||
ysza:-40 ysz:4984
|
||||
ysza:48 ysz:5032
|
||||
ysza:133 ysz:5165
|
||||
ysza:210 ysz:5375
|
||||
ysza:274 ysz:5649
|
||||
ysza:320 ysz:5969
|
||||
ysza:346 ysz:6315
|
||||
ysza:351 ysz:6666
|
||||
ysza:247 ysz:6913
|
||||
ysza:215 ysz:7128
|
||||
ysza:170 ysz:7298
|
||||
BIN
JPLOGO/TMP.BBM
Normal file
BIN
JPLOGO/TMP.BBM
Normal file
Binary file not shown.
16837
JPLOGO/ZOOM.INC
Normal file
16837
JPLOGO/ZOOM.INC
Normal file
File diff suppressed because it is too large
Load diff
BIN
JPLOGO/_PIC.OBK
Normal file
BIN
JPLOGO/_PIC.OBK
Normal file
Binary file not shown.
Loading…
Reference in a new issue