|I can't say I've looked into it, but I believe you have to build a |complete 'bitmap' of the printed image, then send it to the printer, |probably using some special kind of protocol. I suspect this would be |hard to do with the limited mempry in a PIC?. I would expect it would be easier with an inkjet than a laser; with many cheap laser printers, there isn't enough memory to hold a whole page so what happens is that the PC starts sending data to the printer and when its memory is full it starts printing. The PC then has to manage to send the rest of the data before the printer finishes the page (since the drum can't stop!). With an inkjet, however, there shouldn't be any minimum data speed requ- irement so you can process the bitmaps as you go. As a simple approach, suppose the printer wants data where one byte represents 8 dots horizon- tally and 75 bytes represent the 600 dots across the page (at 75dpi). Further suppose you have a list of XY vectors in EEPROM that you want to plot. What you could do would be to set up a buffer of 75 bytes and then loop something like this: void plot(void) { ui i,x1,y1,x2,y2; for (i=0; i i && y2 > i) continue; if (y1==y2) /* Horizontal line */ { if (x1 < x2) {y2=x1; x1=x2; x2=y2;} while (x1 <= x2) plot_in_buffer(x1); } else { /* Compute intercept and plot it in buffer... */ } } send_buffer_to_printer(); } } Note that the same approach could be used for 150 or 300 dpi, using a 1/4-line buffer, but that would take forever to print.