Procedura hardcopy.c

Poniżej historyczna wersja odczytująca monochromatyczny obrazek kropka po kropce z ekranu karty Hercules do pliku lub bezpośrednio na 9 igłową drukarkę Star NX15, sterowaną kodami Epsona.


#define ESC '\x1B'

void hcopy(step,lines,density,funct)
int lines,density,step;
void (*funct)(unsigned char byte);
/* argument funct to funkcja wysyłająca bajt do pliku lub bezpośrednio na drukarkę */
{
   int x,y,z,i;
   unsigned int byte;
   (*funct)(13);
   for (y=0; y<lines; y+=step)
       {
         for(i=0;i<=density;++i)
            {
             (*funct)(ESC);(*funct)('*');(*funct)('\x01');
             (*funct)('\xD0');(*funct)('\x02');

             for (x=0; x<720; x++) {
                                     byte = 0;
                                     for (z=0;z<step;z++)
                                         {
                                           byte <<=1;
                                           byte |= (point(x,y+z) == 1);
                                         }
                                     byte <<=8-step;
                                     (*funct)(byte);
                                   }
             (*funct)(ESC);(*funct)('J');(*funct)('\x01');
             (*funct)('\x0d');
            }
         (*funct)(ESC);(*funct)('J');(*funct)(3*step-1-density);
       }
}



Edytuj