home *** CD-ROM | disk | FTP | other *** search
- /********************************************************/
- /* Modul: PRINTH.C */
- /* ermöglicht die Steuerung des Druckers auch */
- /* bei ASCII-Zero Sequenzen durch Angabe sinn- */
- /* fälliger Namen im CALL Befehl. Z.B. */
- /* CALL UTILITY WITH "20:UNDERSCORE_ON" versetzt */
- /* den Drucker in den Unterstreichungsmodus bis */
- /* er mit UNDERSCORE_OFF wieder ausgeschaltet */
- /* wird. */
- /********************************************************/
-
- #include <stdlib.h>
- #include <string.h>
- #include <io.h>
- #include <dos.h>
-
- /* printhandler : ---
- gibt die vordefinierten Zeichensequenzen an den Drucker
- aus. Dabei können diese nach eigenem Gusto beliebig er-
- weitert werden. Wichtig: die einzelnen Namen sind durch
- Kommas getrennt, so daß beim Durchsuchen nur die Zahl
- der überlesenen Kommas gemerkt werden muß um die richti-
- ge Ausgabesquenz im switch statement zu finden. */
- void printhandler(unsigned ds, unsigned bx)
- {
- char *cmdstr=MK_FP(ds,bx);
- {
- char *opt="RESET," /* Reset des Druckers */
- "ELITE_HS," /* Elite Highspeed */
- "PICA_DRAFT," /* Pica Normalschrift */
- "PICA_NAR," /* Pica Eng 18 dpi */
- "NAR_OFF," /* Engschrift aus */
- "8_LPI," /* 8 Zeilen/Zoll */
- "6_LPI," /* 6 Zeilen/Zoll */
- "25_LPP," /* 25 Zeilen/Seite */
- "12_IPP," /* 12 Zoll/Seite */
- "UNDERSCORE_ON," /* Unterstreichen an */
- "UNDERSCORE_OFF," /* Unterstreichen aus */
- "DOUBLE_HEIGHT_ON," /* doppelte Zeichenhöhe */
- "DOUBLE_HEIGHT_OFF,"/* normale Zeichenhöhe */
- "LQ_ON," /* Letter Quality an */
- "LQ_OFF"; /* und aus */
- char *pt;
- int opt_no,i;
- if ((pt=strstr(opt,cmdstr))!=NULL)
- /* merke string offset in pt falls gefunden */
- {
- for(i=0,opt_no=0;pt>opt+i;i++)
- if (opt[i]==',') opt_no++; /* zähle Kommas bis pt */
- switch (opt_no)
- {
- /* Die Beispiele hier gelten für einen NEC P9 XL,
- können aber wie erwähnt selbst konfiguriert werden.
- write(4,...) bedeutet übrigens: schreibe auf
- stdprn */
- case 0 :
- write(4,"\x1C""@",2);
- break;
- case 1 :
- write(4,"\x1B""M""\x1C""S""\x1",5);
- break;
- case 2 :
- write(4,"\x1C""S""\x0""\x1B""P",5);
- break;
- case 3 :
- write(4,"\x1B""\xF",2);
- break;
- case 4 :
- write(4,"\x12",1);
- break;
- case 5 :
- write(4,"\x1B""0",2);
- break;
- case 6 :
- write(4,"\x1B""2",2);
- break;
- case 7 :
- write(4,"\x1B""C""\x19",3);
- break;
- case 8 :
- write(4,"\x1B""C""\x0""\xC",4);
- break;
- case 9 :
- write(4,"\x1B""-""\x1",3);
- break;
- case 10 :
- write(4,"\x1B""-""\x0",3);
- break;
- case 11 :
- write(4,"\x1C""V""\x1",3);
- break;
- case 12 :
- write(4,"\x1C""V""\x0",3);
- break;
- case 13 :
- write(4,"\x1B""x""\x1",3);
- break;
- case 14 :
- write(4,"\x1B""x""\x0",3);
- break;
- }
- }
- }
- }