/* Okidata ML 92 special commands */ #include "exec/types.h" #include "devices/printer.h" #include "devices/prtbase.h" extern struct PrinterData *PD ; DoSpecial(command,OutputBuffer,vline,currentVMI,crlfFlag,Parms) UWORD *command ; /* command number as defined in printer.h */ char OutputBuffer[] ; /* buffer into which to return converted command */ BYTE *vline ; /* value of the current line position */ BYTE *currentVMI ; /* value of the current line spacing */ BYTE *crlfFlag ; /* setting of the add after flag */ UBYTE Parms[] ; /* parameters that came with ANSI command */ { int i, x = 0 ; static char initTabs[]="\033\011008,016,024,032,040,048,056,064,072\n" ; static char initPrinter[]="\0331\0336" ; if (*command == aRIN ) { /* initialize output buffer */ for (i=0; i < 4; i++) OutputBuffer[x++] = initPrinter[i] ; /* get preferences settings */ if ( (PD->pd_Preferences.PrintQuality) == DRAFT ) OutputBuffer[1] = '0' ; *currentVMI = 36 ; /* initially 1/6" line spacing */ if ( (PD->pd_Preferences.PrintSpacing) == EIGHT_LPI ) { OutputBuffer[3] = '8' ; *currentVMI = 27 ; } if ( (PD->pd_Preferences.PrintPitch) == ELITE ) OutputBuffer[x++] = '\034' ; else if ( (PD->pd_Preferences.PrintPitch) == FINE ) OutputBuffer[x++] = '\035' ; /* what else? */ *command = aTBSALL ; } if (*command == aTBSALL) { for (i=0; i < 38; i++ ) OutputBuffer[x++] = initTabs[i] ; return(x) ; } /* other special functions? -> later italics in downloadable character set */ return(0) ; }