home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpm / list / ep-src.ark / EP.MAC < prev    next >
Encoding:
Text File  |  1988-05-21  |  4.1 KB  |  270 lines

  1.  
  2.     include    BDSYM.EQU
  3.     include    EPDATA
  4.  
  5.     .request PROCESS
  6.     .request EPSINIT
  7.     .request NEWOUTL
  8.     .request PAPERUP
  9.     .request PRTSBUF
  10.  
  11.     .comment    `
  12. main(argc,argv)
  13. char **argv;
  14. {
  15.     int i, fd;
  16.     char *gets();
  17.  
  18.  
  19.     /* start with 1st in file stack        */
  20.     flnum = 0;
  21.  
  22.     /* mark each font "not loaded yet"    */
  23.     for (i=0; i<NUMFTS; i++) ftp[i] = 0;
  24.  
  25.     gargc = argc;
  26.     gargv = argv;
  27.  
  28.     while (TRUE)
  29.     {
  30.         if (argc-1)
  31.          {
  32.             fname = *++argv;
  33.             /*argc--;*/ argc = 1;
  34.          }
  35.         else
  36.          {    puts("\nEnter file to print, or CR if done: ");
  37.             if (!*(fname = gets(fnbuf))) break;
  38.          }
  39.  
  40.         if ((fd = fopen(fname)) == ERROR)
  41.          {
  42.             puts("\nCan't open "); puts(fname);
  43.             continue;
  44.          }
  45.         else {puts("\nPrinting "); puts(fname);}
  46.  
  47.         epsinit();
  48.  
  49.         for ( ; ; )
  50.          {    if (!fgets(inbuf)) break;
  51.             if (kbhit() && getchar() == 0x11) break;
  52.             newinline();
  53.             processline();
  54.          }
  55.         brkflag = TRUE; /* prevent justifying last line */
  56.         /*cc = nc;*/        /* print all columns        */
  57.         prtsbuf();
  58.         if (fm) paperup(pl); /* eject to number last pg*/
  59.         break;    /* disable while loop, so just one file */
  60.     }
  61. }            `
  62.  
  63. main::
  64.  
  65. ;    /* start with 1st in file stack        */
  66. ;    flnum = 0;
  67. ;    lxi    h,0
  68. ;    shld    flnum (fget now has this static)
  69. ;
  70. ;    /* mark each font "not loaded yet"    */
  71. ;    for (i=0; i<NUMFTS; i++) ftp[i] = 0;
  72.  
  73. ;(this was never really necessary, since externals are zeroed,
  74. ; but in any case, it's now done in newfonts routine)
  75. ;    lxi    h,ftp
  76. ;    mvi    e,NUMFTS*2
  77. ;    xra    a
  78. ;.m1:    mov    m,a
  79. ;    inx    h
  80. ;    dcr    e
  81. ;    jnz    .m1
  82.  
  83. ;    gargc = argc;
  84. ;    gargv = argv;
  85.  
  86. .m2:
  87.  
  88.     pop    d
  89.     pop    h
  90.     shld    gargc
  91. ;;;    shld    val + 54*('A'-'@') + 2*('R'-'@')
  92.     pop    h
  93.     shld    gargv
  94.     push    h
  95.     push    h
  96.     push    d
  97.  
  98.  
  99.     lxi    h,$signon
  100. ;    push    h
  101.     call    puts##
  102. ;    pop    d
  103. ;
  104. ;    while (TRUE)
  105. ;    {
  106. ;        if (argc-1)
  107. ;no longer a while loop -- never come back to here
  108. .m3:
  109.     lhld    gargc
  110.     dcx    h
  111.     mov    a,h
  112.     ora    l
  113.     jz    .m4
  114. ;         {
  115. ;            fname = *++argv;
  116. ;            argc = 1;
  117. ;         }
  118.     lhld    gargv
  119.     inx    h
  120.     inx    h
  121. ;now save (g)argv and (g)argc for $n references,
  122. ; so no increment of argv
  123.  
  124.     mov    a,m
  125.     inx    h
  126.     mov    h,m
  127.     mov    l,a
  128.     shld    fname
  129.  
  130. ;    lxi    h,1
  131. ;    shld    gargc
  132.  
  133.     jmp    .m5
  134. ;        else
  135. ;         {    puts("\nEnter file to print, or CR if done: ");
  136. ;            if (!*(fname = gets(fnbuf))) break;
  137. ;         }
  138. .m4:    lxi    h,$ask_file
  139. ;    push    h
  140.     call    puts##
  141. ;    pop    d
  142.     lxi    h,fnbuf
  143. ;    push    h
  144.     call    gets##
  145. ;    pop    d
  146.     shld    fname
  147.     mov    a,m
  148.     ora    a
  149.     jz    .m13
  150. ;
  151. ;        if ((fd = fopen(fname)) == ERROR)
  152. .m5:    lhld    fname
  153.     push    h
  154.     call    fopen##
  155.     pop    d
  156. ;(    shld    fd    ) fd not used
  157.     inx    h
  158.     mov    a,h
  159.     ora    l
  160.     jnz    .m6
  161. ;         {
  162. ;            puts("\nCan't open "); puts(fname);
  163. ;            continue;
  164. ;         }
  165.     lxi    h,$cant_open
  166. ;    push    h
  167.     call    puts##
  168. ;    pop    d
  169.     lhld    fname
  170. ;    push    h
  171.     call    puts##
  172. ;    pop    d
  173. ;    jmp    .m3
  174. ;since now don't change argc, should go back just to ask for a name
  175.     jmp    .m4
  176.  
  177. ;        else {puts("\nPrinting "); puts(fname);}
  178. .m6:    lxi    h,$printing
  179. ;    push    h
  180.     call    puts##
  181. ;    pop    d
  182.     lhld    fname
  183. ;    push    h
  184.     call    puts##
  185. ;    pop    d
  186. ;    lxi    h,0ah
  187. ;    push    h
  188.     mvi    a,newlin
  189.     call    putchar##
  190. ;    pop    d
  191. ;
  192. ;        epsinit();
  193. .m7:
  194.     call    epsinit##
  195.     lhld    gargc
  196.     dcx    h
  197.     shld    val + 54*('A'-'@') + 2*('R'-'@')
  198. ;    call    ttitle##
  199. ;
  200. ;        for ( ; ; )
  201. ;         {    if (!fgets(inbuf)) break;
  202. .m8:    lxi    h,inbuf
  203.     push    h
  204.     call    fgets##
  205.     pop    d
  206.     mov    a,h
  207.     ora    l
  208.     jz    .m11
  209.  
  210. ;            if (kbhit() && getchar() == 0x11) break;
  211. .m9:    call    kbhit##
  212.     mov    a,h
  213.     ora    l
  214.     jz    .m10
  215.  
  216.     call    getchar##
  217.     mov    a,l
  218.     cpi    11h
  219. ;just ret, here? (to .m11 gives a page number)
  220.     jz    .m11
  221.  
  222. ;            newinline();
  223. ;            processline();
  224. ;         }
  225. .m10:    call    newinline##
  226.     call    processline##
  227.     jmp    .m8
  228.  
  229. ;        brkflag = TRUE; /* prevent justifying last line */
  230. .m11:    mvi    a,1
  231.     sta    brkflag
  232.  
  233. ;        prtsbuf();
  234.     call    prtsbuf##
  235.  
  236. ;        if (fm) paperup(pl); /* eject to number last pg*/
  237.     lhld    fm
  238.     mov    a,h
  239.     ora    l
  240.     rz
  241.  
  242.     lhld    pl
  243. ;    push    h
  244. ;    call    paperup##
  245. ;    pop    d
  246.     call    ejct##
  247.  
  248. ;        break;    /* disable while loop, so just one file */
  249. ;    }
  250. .m12:
  251. ;    jmp    .m13
  252. ;    jmp    .m3
  253. ;}
  254. .m13:
  255.     ret
  256.  
  257. fname:    dw    0
  258.  
  259. $signon:
  260.     db    0AH,'EP 1.0 (C) Greg Lee 1984',0
  261. $ask_file:
  262.     db    0AH,'Enter file to print, or CR if done: ',0
  263. $cant_open:
  264.     db    0AH,'Can''t open ',0
  265. $printing:
  266.     db    0AH,'Printing ',0
  267.  
  268.     end
  269.  
  270.