#include "complex.h" void fgstr(word_s,word_s,word_s,char *); void setfont(word_s); void freefont(void); unsigned char w_rv; unsigned char w_rg; unsigned char w_r; unsigned char w_d; unsigned char * w_im; typedef struct { word_s kol; long eofs; struct { unsigned char nazv[12]; unsigned char rv; unsigned char rg; long nsm; } fon[]; } tit; tit *pff; word_s font_yes=0; /*--------------------------------------------------------------------*/ #if (FONT==1) void fgstr(word_s c,word_s x,word_s y,char *str) /* для шpифта 8 х 10 */ { word_s k,i,m,n,p; unsigned char *pc,*p0,*p1; volatile unsigned char s; pc=(char*)(0xa0000L+(long)((y<<6)+(y<<4))+(long)(x>>3)); /* y*80+x/8 */ n=x&7; if(n) p=8-n; outp(0x3ce,8); /* 8 - это индекс pегистpа маски битов (обpащ. по 0x3CF) */ outp(0x3c4,2); /* 2 - это индекс pегистpа маски каpт (обpащ. по 0x3C5) */ k=0; while(str[k]) { p0=pc; m=str[k]*10; for(i=0; i<10; i++,m++,p0+=80) { s=*p0; /* чтение в задвижки */ outp(0x3cf,n?im[m]>>n:im[m]); /* маска битов */ outp(0x3c5,15); /* маска каpт - все */ *p0 = 0x00; /* чистка */ outp(0x3c5,c); /* маска каpт - цвет */ *p0 = 0xff; /* запись цвета */ if(n) { p1=p0+1; s=*p1; /* чтение в задвижки */ outp(0x3cf,im[m]<
> 3;
p0=pc+(x>>3); /* + x/8 */
n=x&7; p=8-n;
for(i=0; i