home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!stanford.edu!agate!dog.ee.lbl.gov!network.ucsd.edu!mvb.saic.com!vmsnet-sources
- Newsgroups: vmsnet.sources
- From: MASRICH@ubvms.cc.buffalo.edu
- Subject: VT320 Font Editor, part 01/01
- Date: Fri, 04 Sep 1992 05:59:15 GMT
- Message-ID: <8045597@MVB.SAIC.COM>
- Organization: University at Buffalo
- Lines: 1046
- Approved: Mark.Berryman@Mvb.Saic.Com
-
- Submitted-by: MASRICH@ubvms.cc.buffalo.edu
- Posting-number: Volume 3, Issue 162
- Archive-name: vt320_font_editor/part01
-
- Hello, I just wrote this little ditty of a Font Editor for The Vax
- System. As you can see it is in C and is ONLY for VT320's. I have no
- clue if it will work with a higher terminal, but I know it won't work
- on the VT220's and certainly not on 100's or 52's. This is my first
- version so the code will someday be cleaned up if anyone shows any interest
- in it whatsoever.
-
- After you make a font with this program all you have to do is type
- the file you edited. There is help within the program. This MUST be
- setup as a symbol. I used a .jou file for backup purposes and the -r
- switch will recover a lost or destroyed file.
-
- Usage is FED -{srznfh} [filename]. I wrote this for VAX orriginally
- but with some minor modifications it will work on UNIX. The reason this is
- to be setup as a symbol instead of a verb is to retain portability. Type Fed -h
- to get a list of switches.
-
- Thanks,
- -Rich
-
- P.S. pick up a vt320 manual to find out how all this stuff works. You must
- be in VT320 mode on a VT320 terminal for this to work properly. This is also
- great for games making!!
-
- $! ------------------ CUT HERE -----------------------
- $ v='f$verify(f$trnlnm("SHARE_VERIFY"))'
- $!
- $! This archive created by VMS_SHARE Version 7.2-010 25-Jun-1992
- $! On 3-SEP-1992 22:52:26.71 By user BERRYMAN
- $!
- $! This VMS_SHARE Written by:
- $! Andy Harper, Kings College London UK
- $!
- $! Acknowledgements to:
- $! James Gray - Original VMS_SHARE
- $! Michael Bednarek - Original Concept and implementation
- $!
- $! TO UNPACK THIS SHARE FILE, CONCATENATE ALL PARTS IN ORDER
- $! AND EXECUTE AS A COMMAND PROCEDURE ( @name )
- $!
- $! THE FOLLOWING FILE(S) WILL BE CREATED AFTER UNPACKING:
- $! 1. FED.C;1
- $!
- $set="set"
- $set symbol/scope=(nolocal,noglobal)
- $f=f$parse("SHARE_TEMP","SYS$SCRATCH:.TMP_"+f$getjpi("","PID"))
- $e="write sys$error ""%UNPACK"", "
- $w="write sys$output ""%UNPACK"", "
- $ if f$trnlnm("SHARE_LOG") then $ w = "!"
- $ ve=f$getsyi("version")
- $ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto START
- $ e "-E-OLDVER, Must run at least VMS 4.4"
- $ v=f$verify(v)
- $ exit 44
- $UNPACK: SUBROUTINE ! P1=filename, P2=checksum
- $ x = P1 - f$parse(P1,,,"version")
- $ y = f$search(x)
- $ if y .eqs. "" then $ goto file_absent
- $ x = f$integer(f$parse(P1,,,"version")-";")
- $ y = f$integer(f$parse(y,,,"version")-";")
- $ if x .gt. y then $ goto file_absent
- $ if f$mode() .eqs. "INTERACTIVE" then $ goto file_interactive
- $ if x .eq. y then e "-W-EXISTS, File ''P1' exists. Skipped."
- $ if x .ne. y then e "-W-NEWERVERSION, of File ''P1' exists. Skipped."
- $file_delete:
- $ delete 'f'*
- $ exit
- $file_interactive:
- $ if x .eq. y then e "-W-EXISTS, File ''P1' exists."
- $ if x .ne. y then e "-W-NEWERVERSION, of File ''P1' exists."
- $ read/error=file_delete/end=file_delete-
- /prompt="Create new version [y/n]: " -
- sys$command x
- $ if .not. x then $ e "-W-SKIPPED, File ''P1' skipped."
- $ if .not. x then $ goto file_delete
- $ P1 = P1 - f$parse(P1,,,"version")
- $file_absent:
- $ if f$parse(P1) .nes. "" then $ goto dirok
- $ dn=f$parse(P1,,,"DIRECTORY")
- $ w "-I-CREDIR, Creating directory ''dn'."
- $ create/dir 'dn'
- $ if $status then $ goto dirok
- $ e "-E-CREDIRFAIL, Unable to create ''dn'. File skipped."
- $ delete 'f'*
- $ exit
- $dirok:
- $ w "-I-PROCESS, Processing file ''P1'."
- $ if .not. f$verify() then $ define/user sys$output nl:
- $ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT 'f'/OUT='P1'
- PROCEDURE Unpacker ON_ERROR ENDON_ERROR;SET(FACILITY_NAME,"UNPACK");SET(
- SUCCESS,OFF);SET(INFORMATIONAL,OFF);f:=GET_INFO(COMMAND_LINE,"file_name");b:=
- CREATE_BUFFER(f,f);p:=SPAN(" ")@r&LINE_END;POSITION(BEGINNING_OF(b));
- LOOP EXITIF SEARCH(p,FORWARD)=0;POSITION(r);ERASE(r);ENDLOOP;POSITION(
- BEGINNING_OF(b));g:=0;LOOP EXITIF MARK(NONE)=END_OF(b);x:=ERASE_CHARACTER(1);
- IF g=0 THEN IF x="X" THEN MOVE_VERTICAL(1);ENDIF;IF x="V" THEN APPEND_LINE;
- MOVE_HORIZONTAL(-CURRENT_OFFSET);MOVE_VERTICAL(1);ENDIF;IF x="+" THEN g:=1;
- ERASE_LINE;ENDIF;ELSE IF x="-" THEN IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+")=
- 1 THEN g:=0;ENDIF;ENDIF;ERASE_LINE;ENDIF;ENDLOOP;t:="0123456789ABCDEF";
- POSITION(BEGINNING_OF(b));LOOP r:=SEARCH("`",FORWARD);EXITIF r=0;POSITION(r);
- ERASE(r);x1:=INDEX(t,ERASE_CHARACTER(1))-1;x2:=INDEX(t,ERASE_CHARACTER(1))-1;
- COPY_TEXT(ASCII(16*x1+x2));ENDLOOP;WRITE_FILE(b,GET_INFO(COMMAND_LINE,
- "output_file"));ENDPROCEDURE;Unpacker;QUIT;
- $ delete/nolog 'f'*
- $ CHECKSUM 'P1'
- $ IF CHECKSUM$CHECKSUM .eqs. P2 THEN $ EXIT
- $ e "-E-CHKSMFAIL, Checksum of ''P1' failed."
- $ ENDSUBROUTINE
- $START:
- $ create 'f'
- X/* This is a vt320 soft font maker, do NOT try to use it on a 220!! */
- X/*
- X * you need the following in you o.opt to compile this:
- X * sys$share:vaxcrtl.exe/share
- X */
- X
- X/*`20
- X * Feel free to redistribute or modify this code. All I ask is that my name
- X * be tied to it as the orriginator. Note that this program is not intended
- X * to view pre-made fonts. This program requires a specific format in order
- X * to correctly interpret the font so if you already have a font, and you wa
- Vnt
- X * to change it with this, you're going to have to either modify this code
- X * or read a vt320 manual on how to make fonts. I would recommend both.
- X *
- X * Richard Wicks
- X * masrich@ubvms.cc.buffalo.edu
- X * acscrbw@ubvms.cc.buffalo.edu
- X * v128ll9e@ubvms.cc.buffalo.edu
- X * wicks@lictor.acsu.buffalo.edu
- X *
- X */
- X
- X# include <curses.h>
- X# include <stdio.h>
- X
- XWINDOW *font,*back,*let,*help,*filen;
- Xint grid `5B97`5D`5B16`5D`5B13`5D;
- Xchar fn`5B80`5D,jf`5B80`5D;
- XFILE *jp;
- XFILE *rp;
- Xint bkup=1; /* controlls wether journals are made */
- Xint autop=1; /* allows continuous preview update */
- Xint rem=0; /* prints character for file ref. */
- Xint recover=0; /* allows recover of a .jou file */
- Xint zoom=0; /* when recovering, no screen junk */
- X
- Xvoid dispfilen ()
- X
- X`7B
- X wmove (filen,0,0);
- X waddstr (filen,"#$$$$$$$$$$$$$$$$$$$$$$%\n");
- X waddstr (filen,"* &\n");
- X waddstr (filen,")(((((((((((((((((((((('");
- X wrefresh (filen);
- X wmove (filen,1,2);
- X printf ("\033(B\017");
- X waddstr (filen,"FILE: ");
- X waddstr (filen,fn);
- X wrefresh (filen);
- X printf ("\033).A\016");
- X`7D
- X
- Xvoid helpme () /* I need somebody... */
- X
- X`7B
- X wmove (help,0,0);
- X waddstr (help,"#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%\n");
- X waddstr (help,"* &\n");
- X waddstr (help,"* &\n");
- X waddstr (help,"* &\n");
- X waddstr (help,"* &\n");
- X waddstr (help,"* &\n");
- X waddstr (help,"* &\n");
- X waddstr (help,"* &\n");
- X waddstr (help,"* &\n");
- X waddstr (help,"* &\n");
- X waddstr (help,")((((((((((((((((((((((((((((((((((((((((((((((('\n");
- X wrefresh (help);
- X printf ("\033(B\017");
- X wmove (help,1,1);
- X waddstr (help," h: left P: preview letter");
- X wmove (help,2,1);
- X waddstr (help," j: down R: reverse video");
- X wmove (help,3,1);
- X waddstr (help," k: up X: flip on X axis");
- X wmove (help,4,1);
- X waddstr (help," l: right Y: file on Y axis");
- X wmove (help,5,1);
- X waddstr (help," H: shift left `5EE: erase work area");
- X wmove (help,6,1);
- X waddstr (help," J: shift down `5EP: preview all");
- X wmove (help,7,1);
- X waddstr (help," K: shift up `5EI: copy letter (import)");
- X wmove (help,8,1);
- X waddstr (help," L: shift right `5EZ: save and quit");
- X wmove (help,9,1);
- X waddstr (help," S: save Space: toggle bit");
- X wrefresh (help);
- X printf ("\033).A\016");
- X`7D
- X
- Xvoid savefile (a)
- X char a`5B`5D;
- X`7B
- X int i,j;
- X FILE *fp;
- X
- X fp = fopen (a,"w+");
- X fprintf (fp,"\033P1;0;1;0;0;2;`7B.A\012");
- X
- X for (j=1;j<96;j++)
- X `7B
- X fprintf (fp,";");
- X for (i=1;i<16;i++)
- X fprintf (fp,"%c",63+(bindec(grid`5Bj`5D`5Bi`5D`5B6`5D,grid`5Bj`5D`5Bi`
- V5D`5B5`5D,grid`5Bj`5D`5Bi`5D`5B4`5D,grid`5Bj`5D`5Bi`5D`5B3`5D,grid`5Bj`5D`5B
- Vi`5D`5B2`5D,grid`5Bj`5D`5Bi`5D`5B1`5D)));
- X fprintf (fp,"/");
- X for (i=1;i<16;i++)
- X fprintf (fp,"%c",63+(bindec(grid`5Bj`5D`5Bi`5D`5B12`5D,grid`5Bj`5D`5Bi
- V`5D`5B11`5D,grid`5Bj`5D`5Bi`5D`5B10`5D,grid`5Bj`5D`5Bi`5D`5B9`5D,grid`5Bj`5D
- V`5Bi`5D`5B8`5D,grid`5Bj`5D`5Bi`5D`5B7`5D)));
- X if (rem)
- X `7B
- X if (32+j != ';')
- X `7B
- X fprintf (fp," %c",32+j);
- X `7D else
- X fprintf (fp," semicolin");
- X `7D
- X fprintf (fp,"\012");
- X `7D
- X fprintf (fp,"\033\\\033).A\016");
- X fclose (fp);
- X`7D
- X
- Xvoid initback ()
- X
- X`7B
- X wmove (back,0,0);
- X waddstr (back,"#$$$$$$$$$$$$$$$%\n");
- X waddstr (back,"* &\n");
- X waddstr (back,"* &\n");
- X waddstr (back,"* &\n");
- X waddstr (back,"* &\n");
- X waddstr (back,"* &\n");
- X waddstr (back,"* &\n");
- X waddstr (back,"* &\n");
- X waddstr (back,"* &\n");
- X waddstr (back,"* &\n");
- X waddstr (back,"* &\n");
- X waddstr (back,"* &\n");
- X waddstr (back,"* &\n");
- X waddstr (back,")((((((((((((((('\n");
- X wrefresh (back);
- X`7D
- X
- Xvoid custcharset () /* create Fed character set */
- X
- X`7B
- X printf ("\033P1;2;1;0;0;2;`7B.A");
- X printf (";???????????????/??????`7B`7BCCCCCcc"); /* # */
- X printf (";???????????????/ccccccccccccccc"); /* $ */
- X printf (";???????????????/ccCCCCC`7B`7B??????"); /* % */
- X printf (";`7E`7E?????`7E`7E??????/`7E`7E?????`7E`7E??????"); /* & */
- X printf (";HHGGGGGNN??????/???????????????"); /* ' */
- X printf (";HHHHHHHHHHHHHHH/???????????????"); /* ( */
- X printf (";??????NNGGGGGHH/???????????????"); /* ) */
- X printf (";??????`7E`7E?????`7E`7E/??????`7E`7E?????`7E`7E"); /* * */
- X printf (";Ti@?@?@?@?@?@iT/Ti?_?_?_?_?_?iT"); /* + */
- X printf (";Ti`7E`7D`7E`7D`7E`7D`7E`7D`7E`7D`7EiT/Ti`5E`7E`5E`7E`5E`7E`5E`7E
- V`5E`7E`5EiT"); /* , */
- X printf ("\033\\\033).A\016");
- X`7D
- X
- Xvoid letbox ()
- X
- X`7B
- X wmove (let,0,0);
- X waddstr (let,"#$$$$$$$$$$$$$$$$$$$$$$%\n");
- X waddstr (let,"* &\n");
- X waddstr (let,")(((((((((((((((((((((('\n");
- X wrefresh (let);
- X`7D
- X
- Xvoid redraw (a)
- X int a`5B16`5D`5B13`5D;
- X
- X`7B
- X int i,j;
- X
- X wmove (font,0,0);
- X for (j=1;j<13;j++)
- X `7B
- X for (i=1;i<16;i++)
- X if (a`5Bi`5D`5Bj`5D == 1)
- X `7B
- X waddch (font,',');
- X `7D else
- X `7B
- X waddch (font,'+');
- X `7D
- X waddch (font,'\n');
- X `7D
- X wmove (font,0,0);
- X`7D
- X
- Xint bindec (a,b,c,d,e,f)
- X int a,b,c,d,e,f;
- X`7B
- X return ((32*a)+(16*b)+(8*c)+(4*d)+(2*e)+f);
- X`7D
- X
- Xvoid preview (a)
- X int a`5B16`5D`5B13`5D;
- X`7B
- X int i;
- X
- X if (zoom && recover) return;
- X printf ("\033P1;0;1;0;0;2;`7B.A\n");
- X printf (";");
- X for (i=1;i<16;i++)
- X printf ("%c",63+(bindec(a`5Bi`5D`5B6`5D,a`5Bi`5D`5B5`5D,a`5Bi`5D`5B4`5D,
- Va`5Bi`5D`5B3`5D,a`5Bi`5D`5B2`5D,a`5Bi`5D`5B1`5D)));
- X printf ("/");
- X for (i=1;i<16;i++)
- X printf ("%c",63+(bindec(a`5Bi`5D`5B12`5D,a`5Bi`5D`5B11`5D,a`5Bi`5D`5B10`
- V5D,a`5Bi`5D`5B9`5D,a`5Bi`5D`5B8`5D,a`5Bi`5D`5B7`5D)));
- X printf ("\033\\");
- X`7D
- X
- Xvoid reverse (a)
- X int *a`5B16`5D`5B13`5D;
- X`7B
- X int i=0,j=0;
- X
- X for (i=1;i<16;i++)
- X for (j=1;j<13;j++)
- X if (a`5Bi`5D`5Bj`5D == 0)
- X `7B
- X a`5Bi`5D`5Bj`5D = 1;
- X `7D else
- X `7B
- X a`5Bi`5D`5Bj`5D = 0;
- X `7D
- X`7D
- X
- Xvoid copy (a,b)
- X int *a`5B16`5D`5B13`5D;
- X int b;
- X`7B
- X int c;
- X int i,j;
- X
- X wmove (let,1,2);
- X printf ("\033(B\017");
- X waddstr (let,"Import from: ");
- X wrefresh (let);
- X wmove (let,1,15);
- X if (recover)
- X `7B
- X if (recover) c = fgetc (rp);
- X if (c == EOF)
- X `7B
- X recover = 0;
- X fclose (rp);
- X if (bkup) jp = fopen (jf,"a");
- X c = wgetch (let);
- X if (bkup) fputc (c,jp);
- X `7D
- X `7D else
- X `7B
- X c = wgetch (let);
- X if (bkup) fputc (c,jp);
- X `7D
- X if (c > 32)
- X `7B
- X waddch (let,c);
- X c = c - 32;
- X waddstr (let," to: ");
- X waddch (let,b);
- X wrefresh (let);
- X for (i=1;i<16;i++)
- X for (j=1;j<13;j++)
- X a`5Bi`5D`5Bj`5D = grid`5Bc`5D`5Bi`5D`5Bj`5D;
- X `7D else
- X `7B
- X waddstr (let,"abort");
- X wrefresh (let);
- X `7D
- X printf ("\033).A\016");
- X`7D
- X
- Xvoid flipx (a)
- X int *a`5B16`5D`5B13`5D;
- X
- X`7B
- X int b`5B16`5D`5B13`5D;
- X int i,j,k=12;
- X
- X for (i=1;i<16;i++)
- X for (j=1;j<13;j++)
- X b`5Bi`5D`5Bj`5D = a`5Bi`5D`5Bj`5D;
- X
- X for (j=1;j<13;j++)
- X `7B
- X for (i=1;i<16;i++)
- X a`5Bi`5D`5Bk`5D = b`5Bi`5D`5Bj`5D;
- X k--;
- X `7D
- X`7D
- X
- Xvoid flipy (a)
- X int *a`5B16`5D`5B13`5D;
- X
- X`7B
- X int b`5B16`5D`5B13`5D;
- X int i,j,k=15;
- X
- X for (i=1;i<16;i++)
- X for (j=1;j<13;j++)
- X b`5Bi`5D`5Bj`5D = a`5Bi`5D`5Bj`5D;
- X
- X for (i=1;i<16;i++)
- X `7B
- X for (j=1;j<13;j++)
- X a`5Bk`5D`5Bj`5D = b`5Bi`5D`5Bj`5D;
- X k--;
- X `7D
- X`7D
- X
- Xvoid left (a)
- X int *a`5B16`5D`5B13`5D;
- X`7B
- X int b`5B16`5D;
- X int i,j;
- X
- X for (j=1;j<13;j++)
- X b`5Bj`5D = a`5B1`5D`5Bj`5D;
- X
- X for (i=1;i<15;i++)
- X for (j=1;j<13;j++)
- X a`5Bi`5D`5Bj`5D = a`5Bi+1`5D`5Bj`5D;
- X
- X for (j=1;j<13;j++)
- X a`5B15`5D`5Bj`5D = b`5Bj`5D;
- X`7D
- X
- Xvoid right (a)
- X int *a`5B16`5D`5B13`5D;
- X`7B
- X int b`5B16`5D;
- X int i,j;
- X
- X for (j=1;j<13;j++)
- X b`5Bj`5D = a`5B15`5D`5Bj`5D;
- X
- X for (i=15;i>1;i--)
- X for (j=1;j<13;j++)
- X a`5Bi`5D`5Bj`5D = a`5Bi-1`5D`5Bj`5D;
- X
- X for (j=1;j<13;j++)
- X a`5B1`5D`5Bj`5D = b`5Bj`5D;
- X`7D
- X
- Xvoid up (a)
- X int *a`5B16`5D`5B13`5D;
- X`7B
- X int b`5B16`5D;
- X int i,j;
- X
- X for (i=1;i<16;i++)
- X b`5Bi`5D = a`5Bi`5D`5B1`5D;
- X
- X for (i=1;i<16;i++)
- X for (j=1;j<12;j++)
- X a`5Bi`5D`5Bj`5D = a`5Bi`5D`5Bj+1`5D;
- X
- X for (i=1;i<16;i++)
- X a`5Bi`5D`5B12`5D = b`5Bi`5D;
- X`7D
- X
- Xvoid down (a)
- X int *a`5B16`5D`5B13`5D;
- X`7B
- X int b`5B16`5D;
- X int i,j;
- X
- X for (i=1;i<16;i++)
- X b`5Bi`5D = a`5Bi`5D`5B12`5D;
- X
- X for (i=1;i<16;i++)
- X for (j=12;j>1;j--)
- X a`5Bi`5D`5Bj`5D = a`5Bi`5D`5Bj-1`5D;
- X
- X for (i=1;i<16;i++)
- X a`5Bi`5D`5B1`5D = b`5Bi`5D;
- X`7D
- X
- Xvoid junk ()
- X`7B
- X printf ("\033(B\017");
- X printf ("\033`5B15;0Hstandard width & height:");
- X printf ("\033`5B16;0H\033#6double width:");
- X printf ("\033`5B17;0H\033#3double height:");
- X printf ("\033`5B18;0H\033#4double height:");
- X printf ("\033).A\016");
- X printf ("\033`5B15;29H!!!! !");
- X printf ("\033`5B16;15H!! !");
- X printf ("\033`5B17;15H!! !");
- X printf ("\033`5B18;15H!! !");
- X`7D
- X
- Xvoid t_preview ()
- X`7B
- X int i,j;
- X WINDOW *prev;
- X
- X /* erase all windows */
- X werase (font);
- X werase (back);
- X werase (let);
- X werase (help);
- X werase (filen);
- X wrefresh (back);
- X wrefresh (font);
- X wrefresh (let);
- X wrefresh (help);
- X wrefresh (filen);
- X prev = newwin (8,80,11,0);
- X printf ("\033(B\017");
- X printf ("\033`5B1;35HWorking...");
- X
- X /* read character set */
- X printf ("\033P1;0;1;0;0;2;`7B.A\n");
- X
- X for (j=1;j<96;j++)
- X `7B
- X printf (";");
- X for (i=1;i<16;i++)
- X printf ("%c",63+(bindec(grid`5Bj`5D`5Bi`5D`5B6`5D,grid`5Bj`5D`5Bi`5D`5
- VB5`5D,grid`5Bj`5D`5Bi`5D`5B4`5D,grid`5Bj`5D`5Bi`5D`5B3`5D,grid`5Bj`5D`5Bi`5D
- V`5B2`5D,grid`5Bj`5D`5Bi`5D`5B1`5D)));
- X printf ("/");
- X for (i=1;i<16;i++)
- X printf ("%c",63+(bindec(grid`5Bj`5D`5Bi`5D`5B12`5D,grid`5Bj`5D`5Bi`5D`
- V5B11`5D,grid`5Bj`5D`5Bi`5D`5B10`5D,grid`5Bj`5D`5Bi`5D`5B9`5D,grid`5Bj`5D`5Bi
- V`5D`5B8`5D,grid`5Bj`5D`5Bi`5D`5B7`5D)));
- X `7D
- X printf ("\033\\");
- X
- X /* print character set */
- X
- X printf ("\033`5B15;0H");
- X for (i=33;i<73;i++)
- X `7B
- X waddch (prev,i);
- X waddch (prev,' ');
- X `7D
- X waddch (prev,'\n');
- X wrefresh (prev);
- X printf ("\033).A\016");
- X for (i=33;i<73;i++)
- X `7B
- X waddch (prev,i);
- X waddch (prev,' ');
- X `7D
- X waddch (prev,'\n');
- X waddch (prev,'\n');
- X wrefresh (prev);
- X
- X printf ("\033(B\017");
- X for (i=73;i<113;i++)
- X `7B
- X waddch (prev,i);
- X waddch (prev,' ');
- X `7D
- X waddch (prev,'\n');
- X wrefresh (prev);
- X printf ("\033).A\016");
- X for (i=73;i<113;i++)
- X `7B
- X waddch (prev,i);
- X waddch (prev,' ');
- X `7D
- X waddch (prev,'\n');
- X waddch (prev,'\n');
- X wrefresh (prev);
- X
- X printf ("\033(B\017");
- X for (i=113;i<127;i++)
- X `7B
- X waddch (prev,i);
- X waddch (prev,' ');
- X `7D
- X waddch (prev,'\n');
- X wrefresh (prev);
- X printf ("\033).A\016");
- X for (i=113;i<127;i++)
- X `7B
- X waddch (prev,i);
- X waddch (prev,' ');
- X `7D
- X waddch (prev,'\n');
- X wrefresh (prev);
- X
- X /* prompt for a key */
- X printf ("\033(B\017");
- X waddstr (prev,"press any key to continue...");
- X wrefresh (prev);
- X wgetch(prev);
- X delwin (prev);
- X printf ("\033).A\016");
- X
- X /* redo screen */
- X custcharset ();
- X initback ();
- X letbox ();
- X dispfilen ();
- X junk ();
- X helpme ();
- X `7D
- X
- Xvoid ferase (a)
- X int a`5B16`5D`5B13`5D;
- X`7B
- X int i,j;
- X
- X for (i=1;i<16;i++)
- X for (j=1;j<13;j++)
- X a`5Bi`5D`5Bj`5D = 0;
- X`7D
- X
- Xchar getcmmd ()
- X
- X`7B
- X char a;
- X
- X if (recover)
- X `7B
- X if ((a = fgetc (rp)) == EOF)
- X `7B
- X recover = 0;
- X fclose (rp);
- X if (bkup) jp = fopen (jf,"a");
- X return wgetch (font);
- X `7D else
- X return a;
- X `7D else
- X `7B
- X return wgetch (font);
- X `7D
- X
- X`7D
- X
- Xvoid quit ()
- X
- X`7B
- X wmove (let,1,2);
- X printf ("\033(B\017");
- X waddstr (let,"To Quit, type Y: n ");
- X wrefresh (let);
- X wmove (let,1,19);
- X if (wgetch (let) == 'Y')
- X `7B
- X /* need to remove .jou file first */
- X waddch (let,'Y');
- X wrefresh (let);
- X printf ("\033`5B23;0H");
- X fclose (jp);
- X delete (jf);
- X exit (1);
- X `7D
- X`7D
- X
- X
- Xint draw (a,b)
- X int *a`5B16`5D`5B13`5D;
- X int b;
- X`7B
- X int x=1,y=1;
- X char ch;
- X
- X redraw (a);
- X
- X printf ("\033(B\017");
- X junk ();
- X preview (a);
- X
- X while ((ch = getcmmd()) != 'S' && ch != 26)
- X `7B
- X if (bkup) fputc (ch,jp);
- X switch (ch)
- X `7B
- X case 'h' : x = x - 1;
- X break;
- X case 'j' : y = y + 1;
- X break;
- X case 'k' : y = y - 1;
- X break;
- X case 'l' : x = x + 1;
- X break;
- X case ' ' : if (a`5Bx`5D`5By`5D == 1)
- X `7B
- X a`5Bx`5D`5By`5D = 0;
- X wmove (font,y-1,x-1);
- X waddch (font,'+');
- X `7D else
- X `7B
- X a`5Bx`5D`5By`5D = 1;
- X wmove (font,y-1,x-1);
- X waddch (font,',');
- X `7D
- X if (autop) preview(a);
- X break;
- X case 'P' : preview (a);
- X break;
- X case 'R' : reverse (a);
- X redraw (a);
- X if (autop) preview (a);
- X break;
- X case 'X' : flipx (a);
- X redraw (a);
- X if (autop) preview (a);
- X break;
- X case 'Y' : flipy (a);
- X redraw (a);
- X if (autop) preview (a);
- X break;
- X case 'H' : left(a);
- X redraw(a);
- X if (autop) preview(a);
- X break;
- X case 'L' : right(a);
- X redraw(a);
- X if (autop) preview(a);
- X break;
- X case 'K' : up(a);
- X redraw(a);
- X if (autop) preview(a);
- X break;
- X case 'J' : down(a);
- X redraw(a);
- X if (autop) preview(a);
- X break;
- X case 'Q' : if (!(recover)) quit ();
- X `7B
- X redraw(a);
- X wmove (let,1,2);
- X waddstr (let,"edit which letter? ");
- X waddch (let,b);
- X wrefresh (let);
- X printf ("\033).A\016");
- X `7D
- X break;
- X case 16 : if (!(recover))
- X `7B
- X t_preview();
- X redraw (a);
- X wmove (let,1,2);
- X printf ("\033(B\017");
- X waddstr (let,"edit which letter? ");
- X waddch (let,b);
- X wrefresh (let);
- X printf ("\033).A\016");
- X preview(a);
- X `7D
- X break;
- X case 5 : ferase (a);
- X redraw (a);
- X preview(a);
- X break;
- X case 9 : copy (a,b);
- X redraw (a);
- X preview (a);
- X break;
- X case 12 : werase (back);
- X werase (font);
- X werase (let);
- X werase (help);
- X werase (filen);
- X wrefresh (back);
- X wrefresh (font);
- X wrefresh (let);
- X wrefresh (help);
- X wrefresh (filen);
- X initback ();
- X letbox ();
- X dispfilen ();
- X junk ();
- X helpme ();
- X redraw (a);
- X wmove (let,1,2);
- X printf ("\033(B\017");
- X waddstr (let,"edit which letter? ");
- X waddch (let,b);
- X wrefresh (let);
- X printf ("\033).A\016");
- X preview(a);
- X break;
- X `7D
- X if (x > 15) x = 1;
- X if (x < 1) x = 15;
- X if (y > 12) y = 1;
- X if (y < 1) y = 12;
- X wmove (font,y-1,x-1);
- X if (!(zoom && recover)) wrefresh (font); /* had touchwin here before */
- X `7D
- X if (bkup) fputc (ch,jp);
- X if (ch == 26) return 1;
- X return 0; /* sent an S here */
- X`7D
- X
- Xvoid readfile (a,b)
- X char a`5B`5D;
- X int *b`5B97`5D`5B16`5D`5B13`5D;
- X
- X`7B
- X FILE *fp;
- X char c`5B132`5D;
- X int d;
- X int i=0,j=0,k=0;
- X
- X fp = fopen (a,"r");
- X fgets (c,132,fp);
- X for (d=1;d<97;d++)
- X `7B
- X if (fgets (c,132,fp) == NULL) break;
- X if (strstr (c,"\033\\") != NULL) break;
- X i++;
- X for (j=1;j<16;j++) /* first top half */
- X `7B
- X c`5Bj`5D = c`5Bj`5D - 63;
- X if (c`5Bj`5D >= 32)
- X `7B
- X b`5Bi`5D`5Bj`5D`5B6`5D=1;
- X c`5Bj`5D = c`5Bj`5D - 32;
- X `7D
- X if (c`5Bj`5D >= 16)
- X `7B
- X b`5Bi`5D`5Bj`5D`5B5`5D=1;
- X c`5Bj`5D = c`5Bj`5D - 16;
- X `7D
- X if (c`5Bj`5D >= 8)
- X `7B
- X b`5Bi`5D`5Bj`5D`5B4`5D=1;
- X c`5Bj`5D = c`5Bj`5D - 8;
- X `7D
- X if (c`5Bj`5D >= 4)
- X `7B
- X b`5Bi`5D`5Bj`5D`5B3`5D=1;
- X c`5Bj`5D = c`5Bj`5D - 4;
- X `7D
- X if (c`5Bj`5D >= 2)
- X `7B
- X b`5Bi`5D`5Bj`5D`5B2`5D=1;
- X c`5Bj`5D = c`5Bj`5D - 2;
- X `7D
- X if (c`5Bj`5D == 1)
- X `7B
- X b`5Bi`5D`5Bj`5D`5B1`5D=1;
- X `7D
- X `7D
- X for (j=17;j<33;j++) /* does the bottom half */
- X `7B
- X c`5Bj`5D = c`5Bj`5D - 63;
- X if (c`5Bj`5D >= 32)
- X `7B
- X b`5Bi`5D`5Bj-16`5D`5B12`5D=1;
- X c`5Bj`5D = c`5Bj`5D - 32;
- X `7D
- X if (c`5Bj`5D >= 16)
- X `7B
- X b`5Bi`5D`5Bj-16`5D`5B11`5D=1;
- X c`5Bj`5D = c`5Bj`5D - 16;
- X `7D
- X if (c`5Bj`5D >= 8)
- X `7B
- X b`5Bi`5D`5Bj-16`5D`5B10`5D=1;
- X c`5Bj`5D = c`5Bj`5D - 8;
- X `7D
- X if (c`5Bj`5D >= 4)
- X `7B
- X b`5Bi`5D`5Bj-16`5D`5B9`5D=1;
- X c`5Bj`5D = c`5Bj`5D - 4;
- X `7D
- X if (c`5Bj`5D >= 2)
- X `7B
- X b`5Bi`5D`5Bj-16`5D`5B8`5D=1;
- X c`5Bj`5D = c`5Bj`5D - 2;
- X `7D
- X if (c`5Bj`5D == 1)
- X `7B
- X b`5Bi`5D`5Bj-16`5D`5B7`5D=1;
- X `7D
- X `7D
- X `7D
- X close (fp);
- X`7D
- X
- Xint getletter ()
- X
- X`7B
- X int a;
- X
- X printf ("\033(B\017");
- X wmove (let,1,1);
- X waddstr (let," ");
- X wmove (let,1,2);
- X waddstr (let,"edit which letter? ");
- X wrefresh (let);
- X if (recover)
- X `7B
- X a = fgetc (rp);
- X while (a != 26 && a < 33 && a != EOF) a = fgetc (rp);
- X if (a == EOF)
- X `7B
- X fclose (rp);
- X if (bkup) jp = fopen (jf,"a");
- X recover = 0;
- X while ((a = wgetch (let)) < 33 && a != 26); `20
- X `7D
- X `7D else
- X `7B
- X while ((a = wgetch (let)) < 33 && a != 26);
- X `7D
- X waddch (let,a);
- X wrefresh (let);
- X printf ("\033).A\016");
- X if (bkup && (!(recover))) fputc (a,jp);
- X return a;
- X`7D
- X
- Xchar *getjou_ext (a)
- X char a`5B80`5D;
- X`7B
- X int i=0;
- X char b`5B80`5D;
- X
- X while (a`5Bi`5D != '.' && a`5Bi`5D != '\0')
- X `7B
- X b`5Bi`5D = a`5Bi`5D;
- X i++;
- X `7D
- X b`5Bi`5D = '\0';
- X strcat (b,".jou");
- X return b;
- X`7D
- X
- Xmain (argc,argv)
- X int argc;
- X char *argv`5B`5D;
- X`7B
- X int i,j,k;
- X int letter;
- X
- X strcpy (fn,"nl:\0");
- X while (!(argc <= 1))
- X `7B
- X argc--;
- X if (argv`5Bargc`5D`5B0`5D == '-')
- X `7B
- X while (argv`5Bargc`5D`5B0`5D != '\0')
- X `7B
- X argv`5Bargc`5D++;
- X switch (argv`5Bargc`5D`5B0`5D)
- X `7B
- X case 's' : autop = 0;
- X break;
- X case 'n' : bkup = 0;
- X break;
- X case 'f' : rem = 1;
- X break;
- X case 'r' : recover = 1;
- X break;
- X case 'z' : recover = 1;
- X zoom=1;
- X break;
- X case 'h' : printf ("\n Fed Version 1.00 Vt320 Graphic Font Edi
- Vtor\n\n");
- X printf (" -s turns off auto preview\n");
- X printf (" -r to recover interupted files\n");
- X printf (" -z same as r but much faster (zoom!)\
- Vn");
- X printf (" -n turns off auto backup (no bkup)\n"
- V);
- X printf (" -f prints a reminder in file\n\n");
- X exit(0);
- X case 0 : break;
- X default : printf (" switch -%c unknown, ignored.\n",argv`5Bar
- Vgc`5D`5B0`5D);
- X sleep (1);
- X `7D
- X `7D
- X `7D else
- X `7B
- X if (argc != 0) strcpy (fn,argv`5Bargc`5D);
- X `7D
- X `7D
- X
- X strcpy (jf,getjou_ext (fn));
- X
- X /* zero the font so the file reading isn't too messy */
- X for (i=1;i<97;i++)
- X for (j=1;j<16;j++)
- X for (k=1;k<13;k++)
- X grid`5Bi`5D`5Bj`5D`5Bk`5D = 0;
- X
- X initscr();
- X crmode();
- X noecho();
- X back = newwin(14,17,0,0);
- X font = newwin(12,15,1,1);
- X let = newwin(3,24,0,20);
- X help = newwin(11,49,3,20);
- X filen = newwin(3,24,0,45);
- X custcharset();
- X letbox();
- X dispfilen ();
- X initback ();
- X helpme ();
- X if (recover)
- X `7B
- X rp = fopen (jf,"r");
- X `7D else
- X `7B
- X if (bkup) jp = fopen (jf,"w");
- X `7D
- X readfile (fn,grid);
- X while ((letter = getletter ()) != 26)
- X `7B
- X if (draw (grid`5Bletter-32`5D,letter) == 1) break;
- X `7D
- X fclose (jp);
- X delete (jf);
- X savefile(fn);
- X printf ("\033(B\017");
- X printf ("\033`5B23;0H");
- X`7D
- $ CALL UNPACK FED.C;1 1600229959
- $ v=f$verify(v)
- $ EXIT
-