static int mirrx=0,mirry=0,qxx=0,qxxqz=0,qxy=0,hzasstyle=0;
void showHZxy(int x,int y,int zx,int zy,int color,char *hzas)
{
int count,hor,ver,fphz,fpasc,li,flag;
register int bitx,kk;
unsigned and,defand;
unsigned char hzbuf[33],hh,*pp,*hzbufp;
if(hzasstyle)fphz=open("f://ucdos//hzk16f",0);
else
fphz=open("f://ucdos//hzk16",0);
fpasc=open("f://ucdos//asc16",0);
for(count=strlen(hzas);count>0;count--,x=x+li*zx+((qxx)? qxxqz:0),y-=16*zy,zy+=qxy)
{
if((unsigned)(*hzas)>=0xa1&&(unsigned)(*(hzas+1))>=0xa1)
{ getHZmode(hzas,hzbuf,fphz);
hzas++;
hzas++;
hzbufp=hzbuf;
for(kk=0;kk<16;kk++){
pp=hzbufp++;
hh=*hzbufp;
*hzbufp++=*pp;
*pp=hh;}
hzbufp=hzbuf;
if(mirry)
for(kk=0;kk<16;kk++,kk++){
and=*((unsigned *)(hzbufp+(30-kk)));
*((unsigned *)(hzbufp+(30-kk)))=*((unsigned *)(hzbufp+kk));
*((unsigned *)(hzbufp+kk))=and;}
count--;
li=16;
if(mirrx)defand=0x1;
else
defand=0x8000;
flag=1;
}
else
{
getASCmode(hzas,hzbuf,fpasc);
hzas++;
hzbufp=hzbuf;
if(mirry)
for(kk=0;kk<16;kk++){
hh=*(hzbufp+(15-kk));
*(hzbufp+(15-kk))=*(hzbufp+kk);
*(hzbufp+kk)=hh;}
li=8;
if(mirrx)defand=0x1;
else
defand=0x80;
flag=0;
}
for(hor=0;hor<16;hor++){
for(ver=0;ver<zy;ver++,x-=li*zx,x+=qxx,y++)
for(kk=0,and=defand;kk<li;kk++){
for(bitx=0;bitx<zx;bitx++,x++){
if(flag)if((*(unsigned *)hzbufp)&and)putpixel(x,y,color);
if(!flag)if((*hzbufp)&(char)and)putpixel(x,y,color);
}
if(mirrx)and<<=1;
else
and>>=1;
}
if(flag)hzbufp++,hzbufp++;
else
hzbufp++;
}
}
close(fphz);
close(fpasc);
}