/* Math Art Subroutines 03/13/92 */ /* altcolor() */ /* setresol(lr,sa) */ /* pplot(a,b,col) */ /* getpix(a,b) */ /* dispdir() */ /* viewima() */ /* waitkey() */ /* errtrap(err) */ /* textcols() */ /* gr7plus() (6F01)*/ /* drawcurs(x,y) */ int creg,esc,hue,intens,cbyte,key; int px1,px2,err,col,i; int p1,p2,p3,p4,p5,p6,p7,p8,lores; char *tempi,*tempi1,*start; char fspec[20],inpstr[20]; /* Alter Colors */ altcolor() $( creg=0;esc=0;while(esc==0) $( poke(752,1); if(creg==0)i=712;else i=707+creg; cbyte=peek(i)&254; hue=cbyte/16;intens=hue*16; intens=(cbyte-intens)&14; printf("\f\n C Col:%-2d H Hue:%-2d L Lum:%d",creg,hue,intens); printf("\nSave Restore"); key=toupper(getkey()); if(key=='R')defaultc(); else if(key=='S') $( if(lores) $( dpoke(0x6F0,dpeek(708)); poke(0x6F2,peek(710)); poke(0x6F3,peek(712)); $) else $( dpoke(0x6F4,dpeek(709)); poke(0x6F6,peek(712)); $) $) else if(key=='C') $( creg++;if(creg>3)creg=0; $) else if(key=='H') $( hue++;if(hue>15)hue=0; $) else if(key=='L') $( intens+=2;if(intens>14)intens=0; $) else esc=1; if(key=='H'||key=='L') $( cbyte=hue*16;cbyte+=intens; if(creg==0)i=712;else i=707+creg; poke(i,cbyte); $) $) $) /* set resolution and start */ setresol(lr,sa) int lr; char *sa; $( lores=lr;start=sa; $) /* pixel plot routine */ pplot(px,py,pc) int px,py,pc; $( if(lores==0) $( color(pc);plot(px,py); $) else $( /* gr7plus plot routine */ px1=px*2;px2=px1+1; if(pc==0) $( color(0);plot(px1,py);plot(px2,py); $) else if(pc==1) $( color(0);plot(px1,py); color(1);plot(px2,py); $) else if(pc==2) $( color(1);plot(px1,py); color(0);plot(px2,py); $) else if(pc==3) $( color(1);plot(px1,py);plot(px2,py); $) $) $) /* get pixel color (locate) */ getpix(a,b) int a,b; $( /* Mode 7+ pixel test */ if(lores) $( tempi=start;tempi+=b*40; tempi+=a/4;tempi=peek(tempi); tempi1=a/4;tempi1=tempi1*4; tempi1=a-tempi1; if(tempi1==0)tempi>>=6; if(tempi1==1)tempi>>=4; if(tempi1==2)tempi>>=2; tempi&=3;return(tempi); $) /* Mode 8 pixel test */ else $( tempi=start;tempi+=b*40; tempi+=a/8;tempi=peek(tempi); tempi1=a/8;tempi1=tempi1*8; tempi1=a-tempi1; if(tempi1==0)tempi>>=7; if(tempi1==1)tempi>>=6; if(tempi1==2)tempi>>=5; if(tempi1==3)tempi>>=4; if(tempi1==4)tempi>>=3; if(tempi1==5)tempi>>=2; if(tempi1==6)tempi>>=1; tempi&=1;return(tempi); $) $) /* display .PIC files */ dispdir() $( printf("\f");tempi=0;esc=0; strcpy(fspec,"*.PIC"); normalize(fspec,""); err=open(1,6,0,fspec); if(err>=0) $( while(esc==0) $( err=cgets(inpstr,1); if(err>0) $( if(strlen(inpstr)==17) $( move(inpstr+2,fspec,8); poke(fspec+8,0); printf("%s ",fspec); tempi+=1;if(tempi>3) $( tempi=0;printf("\n"); $) $) else $( move(inpstr,fspec,4); poke(fspec+4,0); printf("%sFREE",fspec); $) key=peek(764);poke(764,255); if(key==33)getkey(); $) else esc=1; $) $) close(1); getkey(); $) /* view the image */ viewima() $( graphics(8+48);if(lores)gr7plus(); setcols();waitkey(); $) waitkey() $( while(peek(764)==255)poke(77,0); poke(764,255); $) /* text screen colors */ textcols() $( poke(709,12);poke(710,0);poke(712,0); $) /* error!!! */ errtrap(errnum) int errnum; $( errnum=abs(errnum); graphics(8+32);setcols();poke(752,1); printf("\f\nError # %d\n",errnum); getkey(); $) /* gr7plus mode ML routine */ gr7plus() asm 0x6F01; /* draw cursor for magnify */ drawcurs(x,y) int x,y; $( p1=getpix(x-1,y);p2=getpix(x+1,y); p3=getpix(x,y-1);p4=getpix(x,y+1); p5=getpix(x-2,y);p6=getpix(x+2,y); p7=getpix(x,y-2);p8=getpix(x,y+2); col=0;tempi=2;if(lores)tempi=4; for(;col<tempi;++col) $( pplot(x-1,y,col);pplot(x+1,y,col); pplot(x,y-1,col);pplot(x,y+1,col); pplot(x-2,y,col);pplot(x+2,y,col); pplot(x,y-2,col);pplot(x,y+2,col); /* delay curs in hires */ if(lores==0) $( tempi1=0;while(tempi1<200)tempi1++; $) $) pplot(x-1,y,p1);pplot(x+1,y,p2); pplot(x,y-1,p3);pplot(x,y+1,p4); pplot(x-2,y,p5);pplot(x+2,y,p6); pplot(x,y-2,p7);pplot(x,y+2,p8); $) /* end of plotsubs */