home *** CD-ROM | disk | FTP | other *** search
-
- include BDSYM.EQU
- include EPDATA
-
- .request PROCESS
- .request EPSINIT
- .request NEWOUTL
- .request PAPERUP
- .request PRTSBUF
-
- .comment `
- main(argc,argv)
- char **argv;
- {
- int i, fd;
- char *gets();
-
-
- /* start with 1st in file stack */
- flnum = 0;
-
- /* mark each font "not loaded yet" */
- for (i=0; i<NUMFTS; i++) ftp[i] = 0;
-
- gargc = argc;
- gargv = argv;
-
- while (TRUE)
- {
- if (argc-1)
- {
- fname = *++argv;
- /*argc--;*/ argc = 1;
- }
- else
- { puts("\nEnter file to print, or CR if done: ");
- if (!*(fname = gets(fnbuf))) break;
- }
-
- if ((fd = fopen(fname)) == ERROR)
- {
- puts("\nCan't open "); puts(fname);
- continue;
- }
- else {puts("\nPrinting "); puts(fname);}
-
- epsinit();
-
- for ( ; ; )
- { if (!fgets(inbuf)) break;
- if (kbhit() && getchar() == 0x11) break;
- newinline();
- processline();
- }
- brkflag = TRUE; /* prevent justifying last line */
- /*cc = nc;*/ /* print all columns */
- prtsbuf();
- if (fm) paperup(pl); /* eject to number last pg*/
- break; /* disable while loop, so just one file */
- }
- } `
-
- main::
-
- ; /* start with 1st in file stack */
- ; flnum = 0;
- ; lxi h,0
- ; shld flnum (fget now has this static)
- ;
- ; /* mark each font "not loaded yet" */
- ; for (i=0; i<NUMFTS; i++) ftp[i] = 0;
-
- ;(this was never really necessary, since externals are zeroed,
- ; but in any case, it's now done in newfonts routine)
- ; lxi h,ftp
- ; mvi e,NUMFTS*2
- ; xra a
- ;.m1: mov m,a
- ; inx h
- ; dcr e
- ; jnz .m1
-
- ; gargc = argc;
- ; gargv = argv;
-
- .m2:
-
- pop d
- pop h
- shld gargc
- ;;; shld val + 54*('A'-'@') + 2*('R'-'@')
- pop h
- shld gargv
- push h
- push h
- push d
-
-
- lxi h,$signon
- ; push h
- call puts##
- ; pop d
- ;
- ; while (TRUE)
- ; {
- ; if (argc-1)
- ;no longer a while loop -- never come back to here
- .m3:
- lhld gargc
- dcx h
- mov a,h
- ora l
- jz .m4
- ; {
- ; fname = *++argv;
- ; argc = 1;
- ; }
- lhld gargv
- inx h
- inx h
- ;now save (g)argv and (g)argc for $n references,
- ; so no increment of argv
-
- mov a,m
- inx h
- mov h,m
- mov l,a
- shld fname
-
- ; lxi h,1
- ; shld gargc
-
- jmp .m5
- ; else
- ; { puts("\nEnter file to print, or CR if done: ");
- ; if (!*(fname = gets(fnbuf))) break;
- ; }
- .m4: lxi h,$ask_file
- ; push h
- call puts##
- ; pop d
- lxi h,fnbuf
- ; push h
- call gets##
- ; pop d
- shld fname
- mov a,m
- ora a
- jz .m13
- ;
- ; if ((fd = fopen(fname)) == ERROR)
- .m5: lhld fname
- push h
- call fopen##
- pop d
- ;( shld fd ) fd not used
- inx h
- mov a,h
- ora l
- jnz .m6
- ; {
- ; puts("\nCan't open "); puts(fname);
- ; continue;
- ; }
- lxi h,$cant_open
- ; push h
- call puts##
- ; pop d
- lhld fname
- ; push h
- call puts##
- ; pop d
- ; jmp .m3
- ;since now don't change argc, should go back just to ask for a name
- jmp .m4
-
- ; else {puts("\nPrinting "); puts(fname);}
- .m6: lxi h,$printing
- ; push h
- call puts##
- ; pop d
- lhld fname
- ; push h
- call puts##
- ; pop d
- ; lxi h,0ah
- ; push h
- mvi a,newlin
- call putchar##
- ; pop d
- ;
- ; epsinit();
- .m7:
- call epsinit##
- lhld gargc
- dcx h
- shld val + 54*('A'-'@') + 2*('R'-'@')
- ; call ttitle##
- ;
- ; for ( ; ; )
- ; { if (!fgets(inbuf)) break;
- .m8: lxi h,inbuf
- push h
- call fgets##
- pop d
- mov a,h
- ora l
- jz .m11
-
- ; if (kbhit() && getchar() == 0x11) break;
- .m9: call kbhit##
- mov a,h
- ora l
- jz .m10
-
- call getchar##
- mov a,l
- cpi 11h
- ;just ret, here? (to .m11 gives a page number)
- jz .m11
-
- ; newinline();
- ; processline();
- ; }
- .m10: call newinline##
- call processline##
- jmp .m8
-
- ; brkflag = TRUE; /* prevent justifying last line */
- .m11: mvi a,1
- sta brkflag
-
- ; prtsbuf();
- call prtsbuf##
-
- ; if (fm) paperup(pl); /* eject to number last pg*/
- lhld fm
- mov a,h
- ora l
- rz
-
- lhld pl
- ; push h
- ; call paperup##
- ; pop d
- call ejct##
-
- ; break; /* disable while loop, so just one file */
- ; }
- .m12:
- ; jmp .m13
- ; jmp .m3
- ;}
- .m13:
- ret
-
- fname: dw 0
-
- $signon:
- db 0AH,'EP 1.0 (C) Greg Lee 1984',0
- $ask_file:
- db 0AH,'Enter file to print, or CR if done: ',0
- $cant_open:
- db 0AH,'Can''t open ',0
- $printing:
- db 0AH,'Printing ',0
-
- end
-