home *** CD-ROM | disk | FTP | other *** search
/ ProfitPress Mega CDROM2 …eeware (MSDOS)(1992)(Eng) / ProfitPress-MegaCDROM2.B6I / COMM / MISC / SRC26_2.ZIP / SRC / HEMACS.C < prev    next >
Encoding:
C/C++ Source or Header  |  1990-07-04  |  4.8 KB  |  280 lines

  1. /* -*- JOKE -*-
  2.  *
  3. ** hemacs.c: simple emacs like japanese file viewer or editor
  4.  *
  5.  * Author: HIRANO Satoshi
  6.  *
  7.  * (C) 1986 Halca Computer Science Laboratory UEC  TM
  8.  *          University of Electro Communications
  9.  *          University of Tokyo
  10.  *
  11.  * 
  12.  * Edition history:
  13.  * 1.1 90/07/01 Halca.Hirano converted from hterm
  14.  */
  15.  
  16. static char version[] = "$Header: hemacs.cv  1.1  90/07/04 00:50:40  hirano  Exp $";
  17.  
  18. #include "option.h"
  19. #include <stdio.h>
  20. #include <ctype.h>
  21. #include <time.h>
  22. #include <string.h>
  23. #include <stdlib.h>
  24. #define MAIN 1
  25. #include "config.h"
  26. #include "hterm.h"
  27. #include "default.h"
  28. #include "global.h"
  29. #include "version.h"
  30.  
  31. /*
  32. ** messages
  33.  */
  34. char *helpmsg = "\
  35. Function: Japanese file viewer\n\
  36. Syntax: hemacs [options] file\n\
  37. Options:\n\
  38.   -f[fontfile] specify font file\n\
  39. ";
  40.  
  41. char *targetFile = 0;
  42.  
  43. void initialize(void );
  44. void termination(void );
  45. void endAll(void );
  46. void options(int argc,char * *argv);
  47. void cant(void );
  48.  
  49. /*
  50. ** main()
  51.  *
  52.  * hterm main loop
  53.  */
  54. main(argc, argv)
  55. char **argv;
  56. {
  57.     FILE *fp;
  58.  
  59.     hemacs = YES;
  60.     optAsckey = -1;
  61.     options(argc, argv);    /* get option flags        */
  62.     if (targetFile == 0) {
  63.         cant();
  64.         exit(1);
  65.     }
  66.     if ((fp = fopen(targetFile, "r")) == NULL) {
  67.         cant();
  68.         fprintf(stderr, "can't open file %s\n", targetFile);
  69.         exit(1);
  70.     }
  71.  
  72.     initialize();
  73.  
  74. #ifndef SOFT_FONT
  75.     conPrint("Soft font not configured.\r\n");
  76.     conPrint("Remake hterm with soft font.\r\n");
  77. #endif
  78.  
  79.     loadFile(fp);
  80.     fclose(fp);
  81.  
  82.     /*
  83.      * call editor
  84.      */
  85.     historyEditor();
  86.     
  87.     termination();
  88. }
  89.  
  90. static void initialize()
  91. {
  92.     char *path, *diag2 = 0;
  93.  
  94.     /*
  95.      * now we are in communication mode
  96.      */
  97.     mode = M_COMM;
  98.     /*
  99.      * DON'T USE BEEP(), BELL()
  100.      */
  101.     editInit();            /* iniz copy&paste, history    */
  102.     consoleInit();        /* iniz console            */
  103.     fontInit();            /* iniz soft font        */
  104.     ansiInit();
  105.     saverInit();
  106.  
  107.     /*
  108.      * Now, we can't leave without termination()! 
  109.      */
  110.  
  111.     /*
  112.      * We can use beep(), bell()
  113.      */
  114.     keyInit();                /* iniz keyboard mode        */
  115.  
  116.     /*
  117.      * search hterm help file hterm.db
  118.      */
  119.     if ((path = searchPath(HELP_FILE)) == NULL)
  120.         strcpy(helpFileName, HELP_FILE);
  121.     else
  122.         strcpy(helpFileName, path);
  123.  
  124.  
  125.     /*
  126.      * set overridden option
  127.      */
  128. #ifdef SOFT_FONT
  129.     softFont = YES;
  130. #endif
  131.     if (optAsckey != -1)
  132.         asckey = optAsckey;
  133.  
  134. #ifdef SOFT_FONT
  135.     fprintf(stderr, "\nloading font %s ...", fontName); fflush(stderr);
  136.     diag2 = fontLoad(fontName);    /* load soft font            */
  137.     if (diag2) {
  138.         endAll();
  139.         fprintf(stderr, diag2);
  140.         exit(1);
  141.     }
  142. #endif
  143.  
  144.     consoleSetup();        /* setup console            */
  145.     keySetup();            /* setup keyboard mode        */
  146.     fileSetup();        /* setup file utils            */
  147.     ansiSetup();
  148.  
  149. }
  150.  
  151. void termination()
  152. {
  153.     endAll();
  154.     printf("\nhemacs end\n");
  155.     exit(0);
  156. }
  157.  
  158. void endAll()
  159. {
  160.     fileEnd();
  161.     consoleEnd();
  162.     keyEnd();
  163.     editEnd();
  164.     fontEnd();
  165.     saverEnd();
  166. }
  167.  
  168. /*
  169. ** static void options(int argc, char **argv)
  170.  *
  171.  * parse command line options
  172.  */
  173. void options(argc, argv)
  174. char **argv;
  175. {
  176.     register char *p;
  177.  
  178. nextopt:
  179.     while (--argc > 0)
  180.         if (*(p = *++argv) == '-')
  181.             for (++p; *p; p++)
  182.                 switch(tolower(*p)) {
  183. #ifdef PC98
  184.                 case 'a': optAsckey = YES; break;
  185.                 case 'p': optAsckey = NO; break;
  186. #endif /* PC98 */
  187.                 case 'f': 
  188.                     if (*++p)
  189.                         strcpy(fontName, p);
  190.                     goto nextopt;
  191.                 case 'h':
  192.                 case '?': cant(); exit(0);
  193.                 default: cant();
  194.                     fprintf(stderr, "unknown option '%c'.\n", *p);
  195.                     exit(1);
  196.                 }
  197.         else {
  198.             targetFile = *argv;
  199.         }
  200. }
  201.  
  202. /*
  203. ** cant()
  204.  *
  205.  * print version string and invocation options
  206.  */
  207. static void cant()
  208. {
  209.     fprintf(stderr, helpmsg);
  210. }
  211.  
  212. /*
  213. ** u_short SJIStoJIS(byte_1, byte_2)
  214.  *
  215.  * convert SJIS to JIS
  216.  */
  217. u_short SJIStoJIS(byte_1, byte_2)
  218. register u_short byte_1, byte_2;
  219. {
  220.     u_short c;
  221.  
  222.     byte_1 -= (byte_1 >= 0xa0) ? 0xc1 : 0x81;
  223.     if (byte_2 >= 0x9f) {
  224.         c = (byte_1 << 9) + 0x2200;
  225.         c |= byte_2 - 0x7e;
  226.     } else {
  227.         c = (byte_1 << 9) + 0x2100;
  228.         c |= byte_2 - ((byte_2 <= 0x7e) ? 0x1f : 0x20);
  229.     }
  230.     return(c);
  231. }
  232.  
  233. /*
  234. ** u_short JIStoSJIS(h, l)
  235.  *
  236.  * convert JIS to SJIS
  237.  */
  238. u_short JIStoSJIS(h, l)
  239. register u_char h, l;
  240. {
  241.     if (!(h & 1)) l += (0x7f - 0x21);
  242.     l += (0x40 - 0x21);
  243.     if (l >= 0x7f) ++l;
  244.     h -= 0x21;
  245.     h >>= 1;        /*    h /= 2; */
  246.     h += 0x81;
  247.     if (h > 0x9f) h += (0xe0 - 0xa0);
  248.     return((h<<8)|l);
  249. }
  250.  
  251. /*
  252.  * stabs
  253.  */
  254. void outPrinter(u_short c){}
  255. void plot_space(){}
  256. void plot_point(){}
  257. void plot_cont(){}
  258. void plot_move(){}
  259. void plot_label(){}
  260. void plot_erase(){}
  261. void plot_colormod(){}
  262. void plot_linemod(){}
  263. void plot_circle(){}
  264. void plot_arc(){}
  265. void plot_boxfill(){}
  266. void plot_box(){}
  267. void plot_line(){}
  268. void outESC(char *str){}
  269. void nullFunction(){}
  270. void sendBreak(int shortLong){}
  271. void icoSaver(){}
  272. void portSetup(){}
  273. void portReInit(){}
  274. void portEnd(){}
  275. void printOn(){}
  276.  
  277. short portAddress;
  278. char offMask;
  279. char onMask;
  280.