(FILECREATED "16-OCT-84 09:20:05" {DSK}JSYSTEM.;8 89873  

      changes to:  (FNS JSET)

      previous date: "24-SEP-84 16:43:05" {DSK}JSYSTEM.;7)


(* Copyright (c) 1984 by J.Ikeo : Fuji Xerox Co., Ltd. - All rights reverved.)

(PRETTYCOMPRINT JSYSTEMCOMS)

(RPAQQ JSYSTEMCOMS ((FILES JSYSTEMDATA)
	(* Records)
	(RECORDS CHR KANJIENTRY SUFFIXENTRY HC HERALDKANACHARS)
	(* Macros)
	(MACROS \CHECKCARET NOOPERATION DICTADDROFFSET)
	(* Functions for Initializing JLisp)
	(FNS JSET JIN JLISPINIT)
	(FNS DLIONKEYMAP REPLACESOMEFUNCTIONS SETUPJFONTS CREATEVKBDW SETUPVKBDBITMAP 
	     OPENLOOKUPDICT SETUPINDEXARRAY CREATELOOKUPDICTLOCK SETHOMOSETLISTARRAY 
	     JLISPINSTALLEDP)
	(FNS EXCUSEFORNOVKBD HWTYPEISNOTDOLPHIN CREATESUFFIXENTRY JLISPISINSTALLED 
	     MAKEVKBDW CREATEINDEXARRAY)
	(* Functions for Monitor)
	(FNS MIRAIMONITOR MIRAIMONITORINIT MIRAIMONITORGETKEY CANCELP CANCELACTION 
	     DELETECHARS DELETEWORD TAILKANJICONVERSIONP KANAMODEP TAILKANJICONVERSION 
	     KANJICONVERSION ALPHANUMERICACTION LFKANAACTION CARRIAGERETURNACTION 
	     LINEDELETEACTION RETYPEACTION CTRLVACTION ESCACTION SPACEACTION 
	     DOUBLEQUOTEACTION LEFTPARACTION RIGHTPARACTION DEPOSITTOUTEN DEPOSITKUTEN 
	     LEFTBRKACTION RIGHTBRKACTION DEPOSITBARACTION ENGMODEACTION 
	     TOHIRAKANACONVERSIONP TOHIRAKANACONVERSION HIRAKANAMODEACTION 
	     TOKATAKANACONVERSIONP TOKATAKANACONVERSION KATAKANAMODEACTION MIRAIBOUT 
	     RETRIEVECODESFROMCHARS)
	(FNS SHOWVKBD SHOWVKBDW STARTLOOKUPPROCESS CREATEHERALDKANACHARS 
	     PUTNONJCHARONVKBD RESETPREVIOUSLASTKANAXPOS RESETRECENTKANACODES SETJMODE 
	     SETLASTKANAXPOS PUTJCHARONVKBD PATTERNFOR POPHERALDKANALIST NOOPERATION 
	     KANACODEP KANAISONVKBDP KILLUNUSEFULPROCESS CARETISINNEXTLINEP 
	     CARETSETPREVIOUSLEFT CLEARALLFOLLOWINGLASTKANA CLEARALLINLINE ALPHABETP 
	     ATOMINPUTP BALANCEDBRKP CLEARHERALD CLEARHERALDROMA CODEADDTOCHARS CREATECHR 
	     DELETEHERALDKANA DISPLAYHERALD DISPLAYHERALD1 ENGALPHANUMERICACTION ENGMODEP 
	     HELPARGP HIRAKANAMODEP INPUTFIGURE JCHARACTERP KANAALPHANUMERICACTION 
	     KANAFOR KATAKANAMODEP LBRKCOUNTDECREMENT LBRKCOUNTINCREMENT LOWEREIGHTBIT 
	     LPARCOUNTDECREMENT LPARCOUNTINCREMENT MAKEUPKANA MAKEUPKANAP NOTINSTRINGP 
	     NPROCESS NPROCESSP NUMERICORSPECIALCHARACTION RESETROMATREE 
	     RETRYKANJISELECTION ROMAINPUTACTION SETEOLFLAG STRINGINOUT TRAVERSEROMATREE 
	     TREELOOK TYPINGROMAP UPPEREIGHTBIT FETCHCHRCODEFIELD FETCHCHRJMODEFLAGFIELD 
	     FETCHHERALDKANACODES RESETVKBD RESETHERALDKANALIST RESETLASTKANAXPOS 
	     DISPLAYEDONNEXTLINEP CORRECTDISPLAYEDCHRXPOS DELIMITERACTION NORMALCHARCODEP 
	     NOSUCHROMAJI BACKUPROMATREE RESETCHARS SETHELPINGARGFLAG PATTERNMODEP 
	     FINDLASTJMODE TRAVERSEINDEXTREE)
	(FNS JDSPPRINTCHAR DISPLAYCHARACTER JADDCHAR BUFBOUT SETJFONT)
	(FNS DELETECHRFROMCHARS)
	(FNS CONVERTTOJISCODE)
	(* Functions for Kana-Kanji Conversion)
	(FNS GETCOMPLETELYMATCH GETINDEXTREE GETNEXTINDEXTREE GETPREHCLIST GETPHONICCODES 
	     HCDIFFERENCE PRECONVERTTOHCSINPAGES PREKANJIENTRYSELECTION PREKANJISELECTION 
	     CALCULATESOFTPOSITION CONVERTTOKANACODE CONVERTTOPHONICCODE 
	     NUMBEROFPHONICCODES CREATEDUMMYFASTENDENTRIES CREATEKANJIENTRY 
	     GETLOOKUPPHONICCODES GETSUFFIXHOMOSETLIST GETSUFFIXHOMOSETLIST1 
	     MAKEFASTENDENTRIESLIST MAKEFASTENDSUFFIXENTRIESLIST 
	     MAKEFASTENDSUFFIXENTRIESLIST1 MAKEHOMOSETSUBLIST MAKEPHONICREMAINDER 
	     MATCHTHEPHONICCODES READENTRY READPOSSET SOFTENDINGP KANAKANJICONVERSION 
	     CONVERTTOHCLIST DICTADDROFFSET ELIMINATEHEADZEROS ELIMINATETAILZEROS 
	     GETINDEXFILEWORD GETLOOKUPDICTWORD GetConnection MAKEBYTECONTENTSLIST 
	     KANATAIL KANATAIL1 ALLKANACODEP COLLECTKANJIENTRIES)
	(FNS CALCULATETOTALFREQ CALCULATETOTALFREQ1 MAKECODELIST MAKEHCLIST 
	     GETLONGESTENDINGPOSITION SELECTENTRIESWITHENDINGPOSITION)
	(FNS CONVERTTOKANJICODE CONVERTTOHCSINPAGES UNIQUIFY HCMEMBER SORTHCLIST SHOWHC 
	     SHOWHC1 BUILTDEFAULTKEY CENTERX CENTERY SHOWKANJIONVKBDW KEYFORCHAR 
	     FLASHVKBDW FLASHAREA)
	(FNS KEYFORCHARPROCESS1 KEYFORCHARPROCESS2 PROCESSSHOWHC)
	(FILES BITMAPFNS)
	(FILES CONVERTER DICT0)))
(FILESLOAD JSYSTEMDATA)



(* Records)

[DECLARE: EVAL@COMPILE 

(DATATYPE CHR (CODE XPOS STATE LPARCOUNT LBRKCOUNT INSTRINGP JMODEFLAG))

(DATATYPE KANJIENTRY (KANAKANJICODES FREQ))

(DATATYPE SUFFIXENTRY (KANAKANJICODES POS PRE FREQ))

(DATATYPE HC (TOTALFREQ CODELIST))

(DATATYPE HERALDKANACHARS (CODE XPOS PROCESS INDEXTREE))
]
(/DECLAREDATATYPE (QUOTE CHR)
		  (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER)))
(/DECLAREDATATYPE (QUOTE KANJIENTRY)
		  (QUOTE (POINTER POINTER)))
(/DECLAREDATATYPE (QUOTE SUFFIXENTRY)
		  (QUOTE (POINTER POINTER POINTER POINTER)))
(/DECLAREDATATYPE (QUOTE HC)
		  (QUOTE (POINTER POINTER)))
(/DECLAREDATATYPE (QUOTE HERALDKANACHARS)
		  (QUOTE (POINTER POINTER POINTER POINTER)))



(* Macros)

(DECLARE: EVAL@COMPILE 

(PUTPROPS \CHECKCARET MACRO (X (PROG [(DS (EXPANDMACRO (CAR X)
						       T))
				      (TTYD (EXPANDMACRO (QUOTE (TTYDISPLAYSTREAM))
							 T))
				      (FORM (QUOTE (PROGN (AND \CARETFLG (\SHOWCARET
								 (TTYDISPLAYSTREAM)))
							  (SETQ \CARETDOWN T]
                                                      (* \CARETDOWN is set so that caret will come up 
						      quickly.)
				     [COND
				       ((CONSTANTEXPRESSIONP DS)
					 (ERROR X "CONSTANT ARG TO \CHECKCARET??"))
				       ((NOT (EQUAL TTYD DS))
                                                      (* (BQUOTE (COND ((AND (EQ , DS 
						      (TTYDISPLAYSTREAM)) \CARET) , FORM))))
					 (SETQ FORM
					   (LIST (QUOTE COND)
						 (LIST (LIST (QUOTE AND)
							     (LIST (QUOTE EQ)
								   DS
								   (QUOTE (
TTYDISPLAYSTREAM)))
							     (QUOTE \CARET))
						       FORM]
				     (RETURN FORM))))

(PUTPROPS NOOPERATION MACRO (NIL NIL))

(PUTPROPS DICTADDROFFSET MACRO [LAMBDA (DICTADDRARG OFFSET)
				 (IPLUS DICTADDRARG OFFSET])
)



(* Functions for Initializing JLisp)

(DEFINEQ

(JSET
  [LAMBDA (FLAG)                                      (* edited: "16-OCT-84 09:19")
    (COND
      (FLAG (AND (NULL JLISPINIT)
		 (JIN T))
	    (SETQ LISPXREADFN (QUOTE READ))
	    (MOVD (QUOTE MIRAIMONITOR)
		  (QUOTE \FILLBUFFER)))
      (T (SETQ LISPXREADFN (QUOTE TTYINREAD))
	 (AND (GETD (QUOTE NONJ\FILLBUFFER))
	      (MOVD (QUOTE NONJ\FILLBUFFER)
		    (QUOTE \FILLBUFFER])

(JIN
  [LAMBDA (INSTALLFLG)                                (* J.Ikeo " 6-SEP-84 18:31")
    (DECLARE (GLOBALVARS JFNS))
    (PROGN [COND
	     (INSTALLFLG (JLISPINIT))
	     (T (SETQ LISPXREADFN (QUOTE TTYINREAD]
	   (for X in JFNS do (MOVD (COND
				     (INSTALLFLG (CADDR X))
				     (T (CADR X)))
				   (CAR X)))
	   (COND
	     ((AND INSTALLFLG (NOT (JLISPINSTALLEDP)))
	       (CreateGrammTable)
	       (CreateInfDict))
	     (T (NOOPERATION)))
	   (NOT INSTALLFLG])

(JLISPINIT
  [LAMBDA NIL                                         (* J.Ikeo "24-SEP-84 16:42")
    (COND
      ((JLISPINSTALLEDP)
	(OPENLOOKUPDICT))
      (T (RESETLST (RESETSAVE (CURSOR (CURSORCREATE COFFEE 3 11)))
		   (RESETSAVE FONTDIRECTORIES (QUOTE ({DSK2} {DSK1})))
		   (RESETSAVE DIRECTORIES (QUOTE ({DSK1} {DSK2})))
		   (DLIONKEYMAP)
		   (REPLACESOMEFUNCTIONS)
		   (SETUPJFONTS)
		   (CREATEVKBDW)
		   (SETUPVKBDBITMAP)
		   (SETQ INPUTMODE (QUOTE ROMAINPUTMODE))
		   (SETQ INPUTLIST ROMALIST)
		   (SETQ JMODEFLAG (QUOTE INITIAL))
		   (OPENLOOKUPDICT)
		   (SETUPINDEXARRAY)
		   (CREATELOOKUPDICTLOCK)
		   (SETHOMOSETLISTARRAY)
		   (SETJMODE)
		   (CreateGrammTable)
		   (CreateInfDict)
		   (JLISPISINSTALLED])
)
(DEFINEQ

(DLIONKEYMAP
  [LAMBDA NIL                                         (* J.Ikeo "20-AUG-84 15:10")
    (SELECTQ (MACHINETYPE)
	     [DANDELION [KEYACTION (QUOTE FIND)
				   (QUOTE ((193 193 NOLOCKSHIFT) . IGNORE]
			[KEYACTION (QUOTE SAME)
				   (QUOTE ((194 194 NOLOCKSHIFT) . IGNORE]
			(KEYACTION (QUOTE OPEN)
				   (QUOTE ((195 195 NOLOCKSHIFT) . IGNORE]
	     (NOOPERATION])

(REPLACESOMEFUNCTIONS
  [LAMBDA NIL                                         (* J.Ikeo "17-AUG-84 15:50")
    (DECLARE (GLOBALVARS JFNS))
    (for X in JFNS do (MOVD? (CAR X)
			     (CADR X])

(SETUPJFONTS
  [LAMBDA NIL                                         (* J.Ikeo "20-AUG-84 15:24")
    (DECLARE (GLOBALVARS JDISPLAYFONTS JAPANESEFONTS))
    (for X in JAPANESEFONTS FIRST (SETQ JDISPLAYFONTS (ARRAY 128 (QUOTE POINTER)
							     NIL 0))
       do (SETA JDISPLAYFONTS (CAR X)
		(FONTCREATE (CADR X)
			    12])

(CREATEVKBDW
  [LAMBDA NIL                                         (* J.Ikeo "20-AUG-84 15:27")
    (DECLARE (GLOBALVARS VKBDW))
    (WINDOWPROP (SETQ VKBDW (MAKEVKBDW "Virtual Keyboard"))
		(QUOTE RESHAPEFN)
		(QUOTE DON'T])

(SETUPVKBDBITMAP
  [LAMBDA NIL                                         (* J.Ikeo "20-AUG-84 15:25")
    (DECLARE (GLOBALVARS ENGVKBD HIRAVKBD KATAVKBD HCVKBD PATTERNVKBD DEFAULTKEYBM))
    (PROGN (COND
	     ((HWTYPEISNOTDOLPHIN)
	       (EXCUSEFORNOVKBD))
	     (T (NOOPERATION)))
	   (SETQ ENGVKBD (READPRESS (QUOTE VKBD-ENGLISH.PRESS)))
	   (SETQ HIRAVKBD (READPRESS (QUOTE VKBD-HIRAGANA.PRESS)))
	   (SETQ KATAVKBD (READPRESS (QUOTE VKBD-KATAKANA.PRESS)))
	   (SETQ HCVKBD (READPRESS (QUOTE VKBD-HOMOCHOICE.PRESS)))
	   (SETQ PATTERNVKBD (READPRESS (QUOTE VKBD-PATTERN.PRESS)))
	   (SETQ DEFAULTKEYBM (READPRESS (QUOTE DEFAULTKEY.PRESS])

(OPENLOOKUPDICT
  [LAMBDA NIL                                         (* J.Ikeo "17-AUG-84 15:41")
    (DECLARE (GLOBALVARS LOOKUPDICTFILE))
    (COND
      [(NOT (OPENP LOOKUPDICTFILE (QUOTE INPUT)))
	(\MAPPAGE (SUB1 (GETFILEINFO LOOKUPDICTFILE (QUOTE SIZE)))
		  (SETQ LOOKUPDICTFILE (GETOFD (OPENFILE LOOKUPDICTFILE (QUOTE INPUT]
      (T (NOOPERATION])

(SETUPINDEXARRAY
  [LAMBDA NIL                                         (* J.Ikeo "22-AUG-84 17:52")
    (DECLARE (GLOBALVARS INDEXARRAY INDEXFILE))
    (PROGN [OR (OPENP INDEXFILE (QUOTE INPUT))
	       (PROGN (SETQ INDEXFILE (OPENFILE INDEXFILE (QUOTE INPUT)))
		      (SETQ INDEXFILE (GETOFD INDEXFILE]
	   (SETQ INDEXARRAY (CREATEINDEXARRAY (GETINDEXFILEWORD 1)
					      (GETINDEXFILEWORD 2)))
	   (CLOSEF INDEXFILE])

(CREATELOOKUPDICTLOCK
  [LAMBDA NIL
    (DECLARE (GLOBALVARS LOOKUPDICTLOCK))             (* J.Ikeo "17-AUG-84 16:14")
    (SETQ LOOKUPDICTLOCK (CREATE.MONITORLOCK (QUOTE LOOKUPDICTLOCK])

(SETHOMOSETLISTARRAY
  [LAMBDA NIL                                         (* J.Ikeo " 4-SEP-84 15:41")
    (DECLARE (GLOBALVARS HOMOSETLISTARRAY))           (* This function is used in the phase of 
						      initialyzing. Set up HOMOSETLISTARRAY for 
						      storeing data of the lookup dictionary.)
    (SETQ HOMOSETLISTARRAY (ARRAY 3])

(JLISPINSTALLEDP
  [LAMBDA NIL                                         (* J.Ikeo "17-AUG-84 15:39")
    (DECLARE (GLOBALVARS JLISPINIT))
    (AND (BOUNDP (QUOTE JLISPINIT))
	 JLISPINIT])
)
(DEFINEQ

(EXCUSEFORNOVKBD
  [LAMBDA NIL                                         (* J.Ikeo "17-AUG-84 16:06")
    (PROMPTPRINT "I am sorry, but I have no VKBD-pictures except DOLPHIN's ones ."])

(HWTYPEISNOTDOLPHIN
  [LAMBDA NIL                                         (* J.Ikeo "17-AUG-84 16:02")
    (NEQ (MACHINETYPE)
	 (QUOTE DOLPHIN])

(CREATESUFFIXENTRY
  [LAMBDA (KANAKANJICODES POS PRE FREQ)               (* J.Ikeo " 4-SEP-84 15:54")
    (create SUFFIXENTRY
	    KANAKANJICODES ← KANAKANJICODES
	    POS ← POS
	    PRE ← PRE
	    FREQ ← FREQ])

(JLISPISINSTALLED
  [LAMBDA NIL
    (DECLARE (GLOBALVARS JLISPINIT))                  (* J.Ikeo "17-AUG-84 16:18")
    (SETQ JLISPINIT T])

(MAKEVKBDW
  [LAMBDA (STRING)                                    (* J.Ikeo "12-JUN-84 16:33")
    (CREATEW (QUOTE (52 10 584 200))
	     STRING])

(CREATEINDEXARRAY
  [LAMBDA (FIRSTRECNUM LASTRECNUM)                    (* J.Ikeo "27-AUG-84 05:59")
    (PROG (ARRAY ARRAYSIZE)
          (SETQ ARRAYSIZE (ADD1 (IDIFFERENCE LASTRECNUM FIRSTRECNUM)))
          (SETQ ARRAY (ARRAY ARRAYSIZE))
          [for RECNUM from FIRSTRECNUM to LASTRECNUM as I from 1 to ARRAYSIZE
	     bind RECADDR WORD1 WORD2 WORD3
	     eachtime (SETQ RECADDR (TIMES 3 RECNUM))
		      (SETQ WORD1 (GETINDEXFILEWORD RECADDR))
		      (SETQ WORD2 (GETINDEXFILEWORD (ADD1 RECADDR)))
		      [SETQ WORD3 (GETINDEXFILEWORD (ADD1 (ADD1 RECADDR]
	     do (SETA ARRAY I (CONS (LRSH WORD1 8)
				    (COND
				      ((ZEROP (LOGAND WORD1 1))
					(CREATEINDEXARRAY WORD2 WORD3))
				      (T (IPLUS (LLSH WORD2 8)
						WORD3]
          (RETURN ARRAY])
)



(* Functions for Monitor)

(DEFINEQ

(MIRAIMONITOR
  [LAMBDA NIL                                         (* J.Ikeo "10-SEP-84 14:18")

          (* This is the top-level function of the JLisp system. You can type in japanese on Interlisp-D, 
	  when you replace the system function \FILLBUFFER with this function and the value of LISPXREADFN 
	  with (QUOTE READ))


    (DECLARE (GLOBALVARS CHARACTERCODE EOLFLAG BS.KEYBOARD SHIFTBS.KEYBOARD TAB.KEYBOARD 
			 RETURN.KEYBOARD LINEDELETE.KEYBOARD RETYPE.KEYBOARD 
			 CTRLV.KEYBOARD ESC.KEYBOARD SPACE.KEYBOARD DOUBLEQUOTE.KEYBOARD 
			 SINGLEQUOTE.KEYBOARD LEFTPAR.KEYBOARD RIGHTPAR.KEYBOARD 
			 COMMA.KEYBOARD PERIOD.KEYBOARD LEFTBRK.KEYBOARD 
			 RIGHTBRK.KEYBOARD LEFTARROW.KEYBOARD BLANKTOP.KEYBOARD 
			 BLANKMIDDLE.KEYBOARD BLANKBOTTOM.KEYBOARD HERALDKANALIST))
    (PROG NIL
          (MIRAIMONITORINIT)                          (* initialize a line and some variables which 
						      represent a state of the typing system)
      GETKEY
          (COND
	    (EOLFLAG (GO EXIT)                        (* The state can be EOL, so go to EXIT.)
		     ))
          (MIRAIMONITORGETKEY)                        (* set CHARACTERCODE a code of a pressed key on 
						      keyboard.)
          (SELECTC CHARACTERCODE
		   [BS.KEYBOARD                       (* Pressed key is BS)
				(COND
				  ((CANCELP)
				    (CANCELACTION)    (* When CTRL is pressed together, undo Kana-Kanji
						      conversion if possible.)
				    )
				  (T (DELETECHARS)    (* mainly, delete a last character)
				     ]
		   (SHIFTBS.KEYBOARD                  (* Pressed key is upper BS or ↑W)
				     (DELETEWORD)     (* delete a last word contains no delimiter 
						      character.)
				     )
		   [TAB.KEYBOARD                      (* Pressed key is TAB)
				 (COND
				   ((AND (TAILKANJICONVERSIONP)
					 (KANAMODEP))
				     (TAILKANJICONVERSION)
                                                      (* When CTRL is pressed together in Kana-Mode, do
						      Tail-Kana-Kanji conversion, if possible.)
				     )
				   ((KANAMODEP)
				     (KANJICONVERSION)
                                                      (* When it is in Kana-Mode, do Kana-Kanji 
						      conversion,if possible.)
				     )
				   (T (ALPHANUMERICACTION)
                                                      (* When it is in English-Mode, I merely put tab 
						      code on a stream.)
				      ]
		   [LF.KEYBOARD                       (* Pressed key is LF)
				(COND
				  ((KANAMODEP)
				    (LFKANAACTION)    (* When it is in Kana-Mode, disappear a first 
						      character on herald line)
				    )
				  (T (ALPHANUMERICACTION)
                                                      (* merely put a linefeed code on a stream.)
				     ]
		   (RETURN.KEYBOARD                   (* Pressed key is RETURN)
				    (CARRIAGERETURNACTION)
                                                      (* put a carrige return code on a stream, and if 
						      the state is EOL, set EOLFLAG T.)
				    )
		   (LINEDELETE.KEYBOARD               (* Pressed key is ↑Q)
					(LINEDELETEACTION)
                                                      (* cancel the line.)
					)
		   (RETYPE.KEYBOARD                   (* Pressed key is ↑R)
				    (RETYPEACTION)    (* retype the line.)
				    )
		   (CTRLV.KEYBOARD                    (* Pressed key is ↑V)
				   (CTRLVACTION)      (* A next character will be accepted as a control
						      character.)
				   )
		   (ESC.KEYBOARD                      (* Pressed key is ESC)
				 (ESCACTION)          (* change a mode into Symbol-Mode.)
				 )
		   (SPACE.KEYBOARD                    (* Pressed key is SPACE)
				   (SPACEACTION)      (* put a space code on a stream.)
				   )
		   (DOUBLEQUOTE.KEYBOARD              (* Pressed key is %")
					 (DOUBLEQUOTEACTION)
                                                      (* put a doublequote code on a stream.)
					 )
		   [SINGLEQUOTE.KEYBOARD              (* Pressed key is ')
					 (COND
					   ((KANAMODEP)
					     (NPROCESS)
                                                      (* When it is in Kana-Mode, a last character "N" 
						      treast as a Kana "N".)
					     )
					   (T (ALPHANUMERICACTION)
                                                      (* merely put a singlequote code on a stream.)
					      ]
		   (LEFTPAR.KEYBOARD                  (* Pressed key is %()
				     (LEFTPARACTION)
                                                      (* put a left parenthesis code on a stream.)
				     )
		   (RIGHTPAR.KEYBOARD                 (* Pressed key is %))
				      (RIGHTPARACTION)
                                                      (* put a right parenthesis code on a stream.)
				      )
		   [COMMA.KEYBOARD                    (* Pressed key is ,)
				   (COND
				     ((KANAMODEP)
				       (DEPOSITTOUTEN)
                                                      (* When it is in Kana-Mode, a Touten character 
						      code is put on a strem.)
				       )
				     (T (ALPHANUMERICACTION)
                                                      (* put a comma code on a stream.)
					]
		   [PERIOD.KEYBOARD                   (* Pressed key is %.)
				    (COND
				      ((KANAMODEP)
					(DEPOSITKUTEN)
                                                      (* When it is in Kana-Mode, a Kuten character 
						      code is put on a strem.)
					)
				      (T (ALPHANUMERICACTION)
                                                      (* put a period code on a stream.)
					 ]
		   (LEFTBRK.KEYBOARD                  (* Pressed key is %[)
				     (LEFTBRKACTION)
                                                      (* put a left blacket code on a stream.)
				     )
		   (RIGHTBRK.KEYBOARD                 (* Pressed key is %])
				      (RIGHTBRKACTION)
                                                      (* put a right blacket code on a stream.)
				      )
		   [LEFTARROW.KEYBOARD                (* Pressed key is ←)
				       (COND
					 ((KANAMODEP)
					   (DEPOSITBARACTION)
                                                      (* When it is in Kana-Mode, a bar character code 
						      is put on a strem.)
					   )
					 (T (ALPHANUMERICACTION)
                                                      (* put a leftarrow code on a stream.)
					    ]
		   (BLANKTOP.KEYBOARD                 (* Pressed key is BLANKTOP)
				      (ENGMODEACTION)
                                                      (* change a mode into English-Mode.)
				      )
		   [BLANKMIDDLE.KEYBOARD              (* Pressed key is BLANKMIDDLE)
					 (COND
					   ((TOHIRAKANACONVERSIONP)
					     (TOHIRAKANACONVERSION)
                                                      (* When left SHIFT is pressed together, all 
						      characters which must be Kana characters on 
						      herald are converted to Hira-Gana characters)
					     )
					   (T (HIRAKANAMODEACTION)
                                                      (* change a mode into Hira-Gana-Mode.)
					      ]
		   [BLANKBOTTOM.KEYBOARD              (* Pressed key is BLANKBOTTOM)
					 (COND
					   ((TOKATAKANACONVERSIONP)
					     (TOKATAKANACONVERSION)
                                                      (* When left SHIFT is pressed together, all 
						      characters which must be Kana characters on 
						      herald are converted to Kata-Kana characters)
					     )
					   (T (KATAKANAMODEACTION)
                                                      (* change a mode into Kata-Kana-Mode.)
					      ]
		   (ALPHANUMERICACTION))
          (GO GETKEY)
      EXIT(MIRAIBOUT (RETRIEVECODESFROMCHARS))        (* really put all character codes into a stream)
          (\CLOSELINE])

(MIRAIMONITORINIT
  [LAMBDA NIL                                         (* J.Ikeo "10-SEP-84 11:27")
    (DECLARE (GLOBALVARS JMODEFLAG HELPINGARGFLAG CHARS EOLFLAG LPARCOUNT LBRKCOUNT 
			 INSTRINGP ENGMODE.JMODE))
    (PROGN (\RESETLINE)
	   (COND
	     ((NULL (AND (BOUNDP (QUOTE HELPINGARGFLAG))
			 HELPINGARGFLAG))
	       (SETQ JMODEFLAG ENGMODE.JMODE)
	       (RESETROMATREE)
	       (SETQ CHARS NIL)
	       (SETQ EOLFLAG NIL)
	       (SETQ LPARCOUNT 0)
	       (SETQ LBRKCOUNT 0)
	       (SETQ INSTRINGP NIL)
	       (CLEARHERALD)
	       (SHOWVKBDW))
	     (T (SETQ CHARS NIL)
		(SETQ HELPINGARGFLAG NIL])

(MIRAIMONITORGETKEY
  [LAMBDA NIL                                         (* J.Ikeo "29-JUN-84 15:37")
    (PROGN (DECLARE (GLOBALVARS CHARACTERCODE CPEEKBACK))
	   (SETQ CPEEKBACK (AND (BOUNDP (QUOTE CHARACTERCODE))
				CHARACTERCODE))
	   (SETQ CHARACTERCODE (\GETKEY])

(CANCELP
  [LAMBDA NIL                                         (* J.Ikeo "10-AUG-84 10:15")
    (KEYDOWNP (QUOTE CTRL])

(CANCELACTION
  [LAMBDA NIL                                         (* J.Ikeo "10-AUG-84 10:29")
    (DECLARE (GLOBALVARS KANJIINHERALDFLAG))
    (COND
      ((AND (BOUNDP (QUOTE KANJIINHERALDFLAG))
	    KANJIINHERALDFLAG RECENTKANACODES)
	(CLEARHERALD)
	(DISPLAYHERALD (REVERSE RECENTKANACODES))
	(MAPC RECENTKANJICODES (FUNCTION DELETECHRFROMCHARS))
	(MAPC (REVERSE RECENTKANACODES)
	      (FUNCTION CODEADDTOCHARS))
	(SETQ KANJIINHERALDFLAG NIL))
      (T (DELETECHARS])

(DELETECHARS
  [LAMBDA NIL                                         (* J.Ikeo "22-AUG-84 11:45")
    (COND
      ((TYPINGROMAP)
	(CLEARHERALDROMA)
	(RESETROMATREE))
      ((KANAMODEP)
	(DELETEHERALDKANA)
	(DELETECHRFROMCHARS))
      ((ENGMODEP)
	(DELETECHRFROMCHARS))
      ((PATTERNMODEP)
	(DELETECHRFROMCHARS))
      (T (ERROR (QUOTE Error)
		" - in DELETECHARS"])

(DELETEWORD
  [LAMBDA NIL                                         (* J.Ikeo " 4-MAY-84 17:18")
    (PROG NIL
          (DECLARE (GLOBALVARS CHARS))
      LOOP(DELETECHARS)
          (COND
	    ([AND CHARS (NORMALCHARCODEP (FETCHCHRCODEFIELD (CAR CHARS]
	      (GO LOOP])

(TAILKANJICONVERSIONP
  [LAMBDA NIL                                         (* edited: " 7-AUG-84 18:09")
    (KEYDOWNP (QUOTE CTRL])

(KANAMODEP
  [LAMBDA NIL                                         (* J.Ikeo "24-APR-84 14:14")
    (OR (HIRAKANAMODEP)
	(KATAKANAMODEP])

(TAILKANJICONVERSION
  [LAMBDA NIL                                         (* J.Ikeo "16-AUG-84 15:27")
    (PROG (KANATAILCODES)
          (DECLARE (GLOBALVARS HERALDKANALIST RECENTKANJICODES))
          (SETQ KANATAILCODES (KANATAIL RECENTKANJICODES))
          (COND
	    ((NULL KANATAILCODES)
	      (RETURN)))
          (CLEARHERALD)
          (DISPLAYHERALD KANATAILCODES)
          (KANAKANJICONVERSION])

(KANJICONVERSION
  [LAMBDA NIL                                         (* J.Ikeo " 5-SEP-84 12:16")
    (DECLARE (GLOBALVARS HERALDKANALIST))
    (COND
      ((NULL HERALDKANALIST)
	(NOOPERATION))
      ((AND (KANAMODEP)
	    (ALLKANACODEP (FETCHHERALDKANACODES)))
	(KANAKANJICONVERSION))
      ((KANAMODEP)
	(RETRYKANJISELECTION))
      (T (NOOPERATION])

(ALPHANUMERICACTION
  [LAMBDA NIL                                         (* J.Ikeo "22-AUG-84 11:44")
    (COND
      ((KANAMODEP)
	(KANAALPHANUMERICACTION))
      ((PATTERNMODEP)
	(INPUTFIGURE))
      ((ENGMODEP)
	(ENGALPHANUMERICACTION))
      (T (ERROR (QUOTE Error)
		"- in ALPHANUMERICACTION"])

(LFKANAACTION
  [LAMBDA NIL                                         (* J.Ikeo "10-SEP-84 11:58")
    (PROG (SAVEHERALDKANACODES)
          (DECLARE (GLOBALVARS BEGINLOOKUPDICTLENGTH LOOKUPDICTPROCESS HERALDKANALIST))
          (COND
	    (HERALDKANALIST [SETQ SAVEHERALDKANACODES (AND HERALDKANALIST
							   (CDR (FETCHHERALDKANACODES]
			    (CLEARHERALD)
			    (COND
			      ((NULL SAVEHERALDKANACODES)
				(RETURN)))
			    (DISPLAYHERALD SAVEHERALDKANACODES))
	    (T (NOOPERATION])

(CARRIAGERETURNACTION
  [LAMBDA NIL                                         (* J.Ikeo "22-AUG-84 11:45")
    (PROGN (DECLARE (GLOBALVARS CHARACTERCODE))
	   (DELIMITERACTION)
	   (CODEADDTOCHARS CHARACTERCODE)
	   (COND
	     ((ATOMINPUTP)
	       (SETEOLFLAG))
	     ((HELPARGP)
	       (SETEOLFLAG)
	       (SETHELPINGARGFLAG))
	     (T (NOOPERATION])

(LINEDELETEACTION
  [LAMBDA NIL                                         (* J.Ikeo "24-JUL-84 10:17")
    (DECLARE (GLOBALVARS LINEDELETEMARK))
    (RESETCHARS)
    (CLEARHERALD)
    (PRIN1 LINEDELETEMARK (TTYDISPLAYSTREAM))
    (\ECHOCHAR (CHARCODE EOL])

(RETYPEACTION
  [LAMBDA NIL                                         (* J.Ikeo "28-JUN-84 13:47")
    (PROG (CODES MODES)
          (DECLARE (GLOBALVARS CHARS JMODEFLAG))
          [SETQ CODES (REVERSE (MAPCAR CHARS (FUNCTION FETCHCHRCODEFIELD]
          [SETQ MODES (REVERSE (MAPCAR CHARS (FUNCTION FETCHCHRJMODEFLAGFIELD]
          (\ECHOCHAR (CHARCODE EOL))
          (RESETCHARS)
          (MAP2C CODES MODES (FUNCTION (LAMBDA (CODE MODE)
		     (SETQ JMODEFLAG MODE)
		     (CODEADDTOCHARS CODE])

(CTRLVACTION
  [LAMBDA NIL                                         (* J.Ikeo "30-MAY-84 11:32")
    (CODEADDTOCHARS (IDIFFERENCE (\GETKEY)
				 (CHARCODE @])

(ESCACTION
  [LAMBDA NIL                                         (* J.Ikeo "13-AUG-84 10:33")
    (PROGN (DELIMITERACTION)
	   (SETJMODE PATTERNMODE.JMODE])

(SPACEACTION
  [LAMBDA NIL                                         (* J.Ikeo "29-JUN-84 15:46")
    (PROGN (DECLARE (GLOBALVARS CHARACTERCODE))
	   (COND
	     ((KANAMODEP)
	       (NPROCESS)
	       (CLEARHERALD)))
	   (CODEADDTOCHARS CHARACTERCODE])

(DOUBLEQUOTEACTION
  [LAMBDA NIL                                         (* J.Ikeo "29-JUN-84 15:38")
    (DECLARE (GLOBALVARS CHARACTERCODE))
    (DELIMITERACTION)
    (CODEADDTOCHARS CHARACTERCODE)
    (STRINGINOUT])

(LEFTPARACTION
  [LAMBDA NIL                                         (* J.Ikeo "29-JUN-84 15:43")
    (DECLARE (GLOBALVARS CHARACTERCODE))
    (DELIMITERACTION)
    (CODEADDTOCHARS CHARACTERCODE)
    (LPARCOUNTINCREMENT])

(RIGHTPARACTION
  [LAMBDA NIL                                         (* J.Ikeo "29-JUN-84 15:45")
    (PROGN (DECLARE (GLOBALVARS CHARACTERCODE LBRKCOUNT LPARCOUNT INSTRINGP))
	   (DELIMITERACTION)
	   (CODEADDTOCHARS CHARACTERCODE)
	   (LPARCOUNTDECREMENT)
	   (AND (ZEROP LBRKCOUNT)
		(OR (ZEROP LPARCOUNT)
		    (MINUSP LPARCOUNT))
		(NULL INSTRINGP)
		(PROGN (\ECHOCHAR 13)
		       (SETEOLFLAG])

(DEPOSITTOUTEN
  [LAMBDA NIL                                         (* J.Ikeo " 6-SEP-84 12:10")
    (NPROCESS)
    (DISPLAYHERALD 8482)
    (CODEADDTOCHARS 8482])

(DEPOSITKUTEN
  [LAMBDA NIL                                         (* J.Ikeo " 6-SEP-84 12:11")
    (NPROCESS)
    (DISPLAYHERALD 8483)
    (CODEADDTOCHARS 8483])

(LEFTBRKACTION
  [LAMBDA NIL                                         (* J.Ikeo "29-JUN-84 15:42")
    (DECLARE (GLOBALVARS CHARACTERCODE))
    (DELIMITERACTION)
    (CODEADDTOCHARS CHARACTERCODE)
    (LBRKCOUNTINCREMENT])

(RIGHTBRKACTION
  [LAMBDA NIL                                         (* J.Ikeo "29-JUN-84 15:44")
    (PROGN (DECLARE (GLOBALVARS CHARACTERCODE LBRKCOUNT INSTRINGP))
	   (DELIMITERACTION)
	   (CODEADDTOCHARS CHARACTERCODE)
	   (LBRKCOUNTDECREMENT)
	   (AND (MINUSP LBRKCOUNT)
		(NULL INSTRINGP)
		(PROGN (\ECHOCHAR 13)
		       (SETEOLFLAG])

(DEPOSITBARACTION
  [LAMBDA NIL                                         (* J.Ikeo " 4-MAY-84 01:41")
    (NPROCESS)
    (DISPLAYHERALD 8509)
    (CODEADDTOCHARS 8509])

(ENGMODEACTION
  [LAMBDA NIL                                         (* J.Ikeo "28-JUN-84 13:12")
    (DECLARE (GLOBALVARS ENGMODE.JMODE))
    (DELIMITERACTION)
    (SETJMODE ENGMODE.JMODE])

(TOHIRAKANACONVERSIONP
  [LAMBDA NIL                                         (* J.Ikeo "24-APR-84 16:01")
    (KEYDOWNP (QUOTE LSHIFT])

(TOHIRAKANACONVERSION
  [LAMBDA NIL                                         (* J.Ikeo "18-SEP-84 10:13")
    (DECLARE (GLOBALVARS KATAKANACODES HIRAKANACODES))
    (COND
      ((KATAKANAMODEP)
	(NPROCESS)
	(SETQ KATAKANACODES (FETCHHERALDKANACODES))
	(MAPC KATAKANACODES (FUNCTION DELETECHRFROMCHARS))
	(CLEARHERALD)
	(HIRAKANAMODEACTION)
	(SETQ HIRAKANACODES (MAPCAR (MAPCAR KATAKANACODES (FUNCTION CONVERTTOPHONICCODE))
				    (FUNCTION CONVERTTOKANACODE)))
	(DISPLAYHERALD HIRAKANACODES)
	(MAPC HIRAKANACODES (FUNCTION CODEADDTOCHARS])

(HIRAKANAMODEACTION
  [LAMBDA NIL                                         (* J.Ikeo "20-AUG-84 16:46")
    (DECLARE (GLOBALVARS HIRAKANAMODE.JMODE))
    (PROGN (DELIMITERACTION)
	   (SETJMODE HIRAKANAMODE.JMODE])

(TOKATAKANACONVERSIONP
  [LAMBDA NIL                                         (* J.Ikeo "24-APR-84 16:01")
    (KEYDOWNP (QUOTE LSHIFT])

(TOKATAKANACONVERSION
  [LAMBDA NIL                                         (* J.Ikeo "18-SEP-84 10:15")
    (DECLARE (GLOBALVARS HIRAKANACODES KATAKANACODES))
    (COND
      ((HIRAKANAMODEP)
	(NPROCESS)
	(SETQ HIRAKANACODES (FETCHHERALDKANACODES))
	(MAPC HIRAKANACODES (FUNCTION DELETECHRFROMCHARS))
	(CLEARHERALD)
	(KATAKANAMODEACTION)
	(SETQ KATAKANACODES (MAPCAR (MAPCAR HIRAKANACODES (FUNCTION CONVERTTOPHONICCODE))
				    (FUNCTION CONVERTTOKANACODE)))
	(DISPLAYHERALD KATAKANACODES)
	(MAPC KATAKANACODES (FUNCTION CODEADDTOCHARS])

(KATAKANAMODEACTION
  [LAMBDA NIL                                         (* J.Ikeo "28-JUN-84 13:21")
    (DECLARE (GLOBALVARS KATAKANAMODE.JMODE))
    (PROGN (DELIMITERACTION)
	   (SETJMODE KATAKANAMODE.JMODE])

(MIRAIBOUT
  [LAMBDA (CODE)                                      (* J.Ikeo "25-JUL-84 11:57")
    (MAPC (CONVERTTOJISCODE CODE)
	  (FUNCTION (LAMBDA (CHAR)
	      (\BOUT \LINEBUF.OFD CHAR])

(RETRIEVECODESFROMCHARS
  [LAMBDA NIL                                         (* J.Ikeo " 2-MAY-84 06:57")
    (DECLARE (GLOBALVARS CHARS))
    (MAPCAR (REVERSE CHARS)
	    (FUNCTION FETCHCHRCODEFIELD])
)
(DEFINEQ

(SHOWVKBD
  [LAMBDA (KBDBM)                                     (* J.Ikeo "26-APR-84 13:15")
    (DECLARE (GLOBALVARS VKBDW))
    (BITBLT KBDBM 10 15 VKBDW 0 0 NIL])

(SHOWVKBDW
  [LAMBDA NIL                                         (* J.Ikeo "28-JUN-84 13:39")
    (DECLARE (GLOBALVARS JMODEFLAG ENGMODE.JMODE HIRAKANAMODE.JMODE KATAKANAMODE.JMODE 
			 PATTERNMODE.JMODE ENGVKBD HIRAVKBD KATAVKBD PATTERNVKBD))
    (SHOWVKBD (SELECTC JMODEFLAG
		       (ENGMODE.JMODE ENGVKBD)
		       (HIRAKANAMODE.JMODE HIRAVKBD)
		       (KATAKANAMODE.JMODE KATAVKBD)
		       (PATTERNMODE.JMODE PATTERNVKBD)
		       (ERROR (QUOTE Error)
			      " - in SHOWVKBDW"])

(STARTLOOKUPPROCESS
  [LAMBDA (TREE)                                      (* J.Ikeo " 6-SEP-84 11:33")
    (DECLARE (GLOBALVARS LOOKUPDICTLOCK))
    (ADD.PROCESS (LIST (FUNCTION WITH.MONITOR)
		       LOOKUPDICTLOCK
		       (LIST (FUNCTION MAKEHOMOSETSUBLIST)
			     (LIST (QUOTE QUOTE)
				   (MAPCAR [REVERSE (CONS CODE (REVERSE (
FETCHHERALDKANACODES]
					   (FUNCTION CONVERTTOPHONICCODE)))
			     (COND
			       ((ARRAYP TREE)
				 (TRAVERSEINDEXTREE TREE 0))
			       (T TREE))
			     (NOT (ARRAYP TREE])

(CREATEHERALDKANACHARS
  [LAMBDA (CODE PROCESS TREE)                         (* J.Ikeo "20-AUG-84 16:44")
    (DECLARE (GLOBALVARS VKBDW))
    (create HERALDKANACHARS
	    CODE ← CODE
	    XPOS ←(DSPXPOSITION NIL VKBDW)
	    PROCESS ← PROCESS
	    INDEXTREE ←(AND (ARRAYP TREE)
			    TREE])

(PUTNONJCHARONVKBD
  [LAMBDA (CODE)                                      (* J.Ikeo "20-AUG-84 16:40")
    (DECLARE (GLOBALVARS VKBDW))
    (BLTCHAR (LOWEREIGHTBIT CODE)
	     VKBDW])

(RESETPREVIOUSLASTKANAXPOS
  [LAMBDA NIL                                         (* J.Ikeo "20-AUG-84 16:09")
    (DECLARE (GLOBALVARS LASTKANAXPOS HERALDKANALIST))
    (SETQ LASTKANAXPOS (OR (AND HERALDKANALIST (fetch (HERALDKANACHARS XPOS)
						  of (CAR HERALDKANALIST)))
			   (DSPLEFTMARGIN NIL VKBDW])

(RESETRECENTKANACODES
  [LAMBDA NIL                                         (* J.Ikeo "20-AUG-84 16:17")
    (DECLARE (GLOBALVARS RECENTKANACODES))
    (SETQ RECENTKANACODES NIL])

(SETJMODE
  [LAMBDA (MODE SHOWFLG)                              (* J.Ikeo "20-AUG-84 15:20")
    (DECLARE (GLOBALVARS JMODEFLAG))
    (COND
      ((OR SHOWFLG (NEQ JMODEFLAG MODE))
	(SETQ JMODEFLAG MODE)
	(SHOWVKBDW)
	JMODEFLAG)
      (T (NOOPERATION)
	 JMODEFLAG])

(SETLASTKANAXPOS
  [LAMBDA NIL
    (DECLARE (GLOBALVARS VKBDW LASTKANAXPOS))         (* J.Ikeo "20-AUG-84 15:53")
    (SETQ LASTKANAXPOS (DSPXPOSITION NIL VKBDW])

(PUTJCHARONVKBD
  [LAMBDA (CODE)                                      (* J.Ikeo "20-AUG-84 16:39")
    (DECLARE (GLOBALVARS VKBDW))
    (DSPFONT (SETJFONT (UPPEREIGHTBIT CODE))
	     VKBDW)
    (BLTCHAR (LOWEREIGHTBIT CODE)
	     VKBDW)
    (DSPFONT (DSPFONT NIL (TTYDISPLAYSTREAM))
	     VKBDW])

(PATTERNFOR
  [LAMBDA NIL                                         (* J.Ikeo " 4-SEP-84 11:48")
    (DECLARE (GLOBALVARS PATTERNMODE.JMODE PATTERNLIST CHARACTERCODE))
    (PROG (CODE (CODELIST (FASSOC CHARACTERCODE PATTERNLIST)))
          (SETQ CODE (AND CODELIST (CADR CODELIST)))
          (RETURN (AND CODE (NOT (ZEROP CODE))
		       (IPLUS (LLSH PATTERNMODE.JMODE 8)
			      CODE])

(POPHERALDKANALIST
  [LAMBDA NIL                                         (* J.Ikeo "20-AUG-84 16:15")
    (DECLARE (GLOBALVARS HERALDKANALIST))
    (AND HERALDKANALIST (pop HERALDKANALIST])

(NOOPERATION
  [LAMBDA NIL                                         (* J.Ikeo "17-AUG-84 15:40")
    NIL])

(KANACODEP
  [LAMBDA (CODE)                                      (* J.Ikeo "20-AUG-84 16:23")
    (IEQP (LRSH CODE 9)
	  18])

(KANAISONVKBDP
  [LAMBDA NIL                                         (* J.Ikeo "20-AUG-84 16:01")
    (DECLARE (GLOBALVARS VKBDW))
    (NEQ (DSPLEFTMARGIN NIL VKBDW)
	 (DSPXPOSITION NIL VKBDW])

(KILLUNUSEFULPROCESS
  [LAMBDA NIL                                         (* J.Ikeo "20-AUG-84 16:05")
    (DECLARE (GLOBALVARS HERALDKANALIST))
    (COND
      [[AND HERALDKANALIST (PROCESSP (fetch (HERALDKANACHARS PROCESS)
					of (CAR HERALDKANALIST]
	(DEL.PROCESS (fetch (HERALDKANACHARS PROCESS) of (CAR HERALDKANALIST]
      (T (NOOPERATION])

(CARETISINNEXTLINEP
  [LAMBDA NIL                                         (* J.Ikeo "20-AUG-84 15:43")
    (DECLARE (GLOBALVARS VKBDW LASTKANAXPOS))
    (GEQ LASTKANAXPOS (DSPXPOSITION NIL VKBDW])

(CARETSETPREVIOUSLEFT
  [LAMBDA NIL                                         (* J.Ikeo "20-AUG-84 15:51")
    (DECLARE (GLOBALVARS VKBDW))
    (MOVETO (DSPRIGHTMARGIN NIL VKBDW)
	    (DSPYPOSITION NIL VKBDW)
	    VKBDW)
    (RELMOVETO 0 (MINUS (DSPLINEFEED NIL VKBDW))
	       VKBDW])

(CLEARALLFOLLOWINGLASTKANA
  [LAMBDA NIL                                         (* J.Ikeo "20-AUG-84 15:47")
    (DECLARE (GLOBALVARS VKBDW LASTKANAXPOS))
    (DSPBACKUP (IDIFFERENCE (DSPXPOSITION NIL VKBDW)
			    LASTKANAXPOS)
	       VKBDW])

(CLEARALLINLINE
  [LAMBDA NIL                                         (* J.Ikeo "20-AUG-84 15:43")
    (DECLARE (GLOBALVARS VKBDW))
    (DSPBACKUP (IDIFFERENCE (DSPXPOSITION NIL VKBDW)
			    (DSPLEFTMARGIN NIL VKBDW))
	       VKBDW])

(ALPHABETP
  [LAMBDA (CHARCODE)                                  (* J.Ikeo "26-APR-84 15:31")
    (OR (AND (GEQ CHARCODE (CHARCODE A))
	     (LEQ CHARCODE (CHARCODE Z)))
	(AND (GEQ CHARCODE (CHARCODE a))
	     (LEQ CHARCODE (CHARCODE z])

(ATOMINPUTP
  [LAMBDA NIL                                         (* J.Ikeo "20-AUG-84 15:34")
    (DECLARE (GLOBALVARS LBRKCOUNT LPARCOUNT INSTRINGP))
    (AND (BALANCEDBRKP)
	 (ZEROP LPARCOUNT)
	 (NULL INSTRINGP])

(BALANCEDBRKP
  [LAMBDA NIL                                         (* J.Ikeo "25-APR-84 18:46")
    (DECLARE (GLOBALVARS LBRKCOUNT))
    (ZEROP LBRKCOUNT])

(CLEARHERALD
  [LAMBDA NIL                                         (* J.Ikeo "20-AUG-84 15:37")
    (RESETVKBD)
    (RESETLASTKANAXPOS)
    (RESETHERALDKANALIST])

(CLEARHERALDROMA
  [LAMBDA NIL                                         (* J.Ikeo "20-AUG-84 15:53")
    (PROGN (DECLARE (GLOBALVARS VKBDW LASTKANAXPOS))
	   (COND
	     ((CARETISINNEXTLINEP)
	       (CLEARALLINLINE)
	       (CARETSETPREVIOUSLEFT)))
	   (CLEARALLFOLLOWINGLASTKANA)
	   (SETLASTKANAXPOS])

(CODEADDTOCHARS
  [LAMBDA (CODE)                                      (* J.Ikeo "28-JUN-84 12:07")
    (PROGN (DECLARE (GLOBALVARS CHARS))
	   (push CHARS (CREATECHR CODE))
	   (DISPLAYCHARACTER CODE)
	   (AND (DISPLAYEDONNEXTLINEP)
		(CORRECTDISPLAYEDCHRXPOS))
	   CODE])

(CREATECHR
  [LAMBDA (CODE)                                      (* J.Ikeo " 4-SEP-84 15:14")
    (DECLARE (GLOBALVARS LPARCOUNT LBRKCOUNT INSTRINGP JMODEFLAG))
    (create CHR
	    CODE ← CODE
	    XPOS ←(DSPXPOSITION NIL (TTYDISPLAYSTREAM))
	    LPARCOUNT ← LPARCOUNT
	    LBRKCOUNT ← LBRKCOUNT
	    INSTRINGP ← INSTRINGP
	    JMODEFLAG ← JMODEFLAG])

(DELETEHERALDKANA
  [LAMBDA NIL                                         (* J.Ikeo "20-AUG-84 16:18")
    (COND
      ((KANAISONVKBDP)
	(KILLUNUSEFULPROCESS)
	(RESETPREVIOUSLASTKANAXPOS)
	(COND
	  ((CARETISINNEXTLINEP)
	    (CLEARALLINLINE)
	    (CLEARALLFOLLOWINGLASTKANA)
	    (CARETSETPREVIOUSLEFT)))
	(CLEARALLFOLLOWINGLASTKANA)
	(POPHERALDKANALIST)
	(RESETRECENTKANACODES))
      (T (NOOPERATION])

(DISPLAYHERALD
  [LAMBDA (CODES)                                     (* J.Ikeo "24-APR-84 15:19")
    (COND
      ((ATOM CODES)
	(DISPLAYHERALD1 CODES))
      (T (MAPC CODES (FUNCTION DISPLAYHERALD1])

(DISPLAYHERALD1
  [LAMBDA (CODE)                                      (* J.Ikeo "20-AUG-84 18:02")
    (PROG (INDEXTREE (NEXTINDEXTREE)
		     (LOOKUPPROCESS))
          (DECLARE (GLOBALVARS HERALDKANALIST))
          (COND
	    ((JCHARACTERP CODE)
	      [COND
		((AND (KANACODEP CODE)
		      (SETQ INDEXTREE (GETINDEXTREE)))
		  (SETQ NEXTINDEXTREE (GETNEXTINDEXTREE INDEXTREE CODE))
		  (SETQ LOOKUPPROCESS (AND NEXTINDEXTREE (STARTLOOKUPPROCESS 
									NEXTINDEXTREE]
	      (push HERALDKANALIST (CREATEHERALDKANACHARS CODE LOOKUPPROCESS 
							  NEXTINDEXTREE))
	      (PUTJCHARONVKBD CODE)
	      (SETLASTKANAXPOS))
	    (T (PUTNONJCHARONVKBD CODE])

(ENGALPHANUMERICACTION
  [LAMBDA NIL                                         (* J.Ikeo "29-JUN-84 15:39")
    (DECLARE (GLOBALVARS CHARACTERCODE))
    (CODEADDTOCHARS CHARACTERCODE])

(ENGMODEP
  [LAMBDA NIL
    (DECLARE (GLOBALVARS JMODEFLAG ENGMODE.JMODE))    (* J.Ikeo " 3-MAY-84 15:28")
    (EQ JMODEFLAG ENGMODE.JMODE])

(HELPARGP
  [LAMBDA NIL                                         (* J.Ikeo "20-AUG-84 16:45")
    (DECLARE (GLOBALVARS CHARS))
    (AND CHARS (CDR CHARS)
	 (CDDR CHARS)
	 (EQ (CHARCODE =)
	     (FETCHCHRCODEFIELD (CADR CHARS)))
	 (EQ (CHARCODE ?)
	     (FETCHCHRCODEFIELD (CADDR CHARS])

(HIRAKANAMODEP
  [LAMBDA NIL                                         (* J.Ikeo " 3-MAY-84 15:32")
    (DECLARE (GLOBALVARS JMODEFLAG HIRAKANAMODE.JMODE))
    (EQ JMODEFLAG HIRAKANAMODE.JMODE])

(INPUTFIGURE
  [LAMBDA NIL                                         (* J.Ikeo " 4-SEP-84 11:41")
    (PROG ((CODE (PATTERNFOR)))
          (AND CODE (CODEADDTOCHARS CODE))
          (SETJMODE (FINDLASTJMODE)
		    T])

(JCHARACTERP
  [LAMBDA (CODE)                                      (* J.Ikeo "24-APR-84 15:24")
    (GREATERP CODE 128])

(KANAALPHANUMERICACTION
  [LAMBDA NIL                                         (* J.Ikeo "29-JUN-84 15:42")
    (DECLARE (GLOBALVARS CHARACTERCODE))
    (COND
      ((ALPHABETP CHARACTERCODE)
	(ROMAINPUTACTION))
      (T (NUMERICORSPECIALCHARACTION])

(KANAFOR
  [LAMBDA (N)                                         (* J.Ikeo " 3-MAY-84 15:04")
    (IPLUS (LLSH JMODEFLAG 8)
	   N])

(KATAKANAMODEP
  [LAMBDA NIL                                         (* J.Ikeo " 3-MAY-84 15:33")
    (DECLARE (GLOBALVARS JMODEFLAG KATAKANAMODE.JMODE))
    (EQ JMODEFLAG KATAKANAMODE.JMODE])

(LBRKCOUNTDECREMENT
  [LAMBDA NIL                                         (* J.Ikeo "25-APR-84 18:47")
    (DECLARE (GLOBALVARS LBRKCOUNT))
    (COND
      ((NOTINSTRINGP)
	(SETQ LBRKCOUNT (SUB1 LBRKCOUNT])

(LBRKCOUNTINCREMENT
  [LAMBDA NIL                                         (* J.Ikeo "25-APR-84 18:47")
    (DECLARE (GLOBALVARS LBRKCOUNT))
    (COND
      ((NOTINSTRINGP)
	(SETQ LBRKCOUNT (ADD1 LBRKCOUNT])

(LOWEREIGHTBIT
  [LAMBDA (CODE)                                      (* J.Ikeo "26-APR-84 16:52")
    (LOGAND CODE 255])

(LPARCOUNTDECREMENT
  [LAMBDA NIL                                         (* J.Ikeo "25-APR-84 18:46")
    (DECLARE (GLOBALVARS LPARCOUNT))
    (COND
      ((AND (BALANCEDBRKP)
	    (NOTINSTRINGP))
	(SETQ LPARCOUNT (SUB1 LPARCOUNT])

(LPARCOUNTINCREMENT
  [LAMBDA NIL                                         (* J.Ikeo "25-APR-84 18:45")
    (DECLARE (GLOBALVARS LPARCOUNT))
    (COND
      ((AND (BALANCEDBRKP)
	    (NOTINSTRINGP))
	(SETQ LPARCOUNT (ADD1 LPARCOUNT])

(MAKEUPKANA
  [LAMBDA NIL                                         (* J.Ikeo "17-JUL-84 15:53")
    (DECLARE (GLOBALVARS ROMATREE))
    (CADR ROMATREE])

(MAKEUPKANAP
  [LAMBDA NIL                                         (* J.Ikeo "25-APR-84 18:24")
    (DECLARE (GLOBALVARS ROMATREE))
    (CADR ROMATREE])

(NOTINSTRINGP
  [LAMBDA NIL                                         (* J.Ikeo "25-APR-84 18:46")
    (DECLARE (GLOBALVARS INSTRINGP))
    (NULL INSTRINGP])

(NPROCESS
  [LAMBDA NIL                                         (* J.Ikeo "28-JUN-84 13:28")
    (DECLARE (GLOBALVARS ROMATREE INPUTLIST CPEEKBACK))
    (COND
      ([AND (NEQ ROMATREE INPUTLIST)
	    (OR (EQ CPEEKBACK (CHARCODE N))
		(EQ CPEEKBACK (CHARCODE M]
	(CLEARHERALDROMA)
	(DISPLAYHERALD (KANAFOR 115))
	(CODEADDTOCHARS (KANAFOR 115))
	(RESETROMATREE))
      (T NIL])

(NPROCESSP
  [LAMBDA NIL                                         (* J.Ikeo "25-APR-84 18:24")
    (DECLARE (GLOBALVARS ROMATREE CPEEKBACK))
    (AND (NULL ROMATREE)
	 (OR (EQ CPEEKBACK (CHARCODE N))
	     (EQ CPEEKBACK (CHARCODE M])

(NUMERICORSPECIALCHARACTION
  [LAMBDA NIL                                         (* J.Ikeo " 8-AUG-84 10:31")
    (PROGN (DECLARE (GLOBALVARS CHARACTERCODE))
	   (NPROCESS)
	   (CLEARHERALD)
	   (CODEADDTOCHARS CHARACTERCODE])

(RESETROMATREE
  [LAMBDA NIL                                         (* J.Ikeo "28-JUN-84 13:29")
    (DECLARE (GLOBALVARS ROMATREE INPUTLIST))
    (SETQ ROMATREE INPUTLIST])

(RETRYKANJISELECTION
  [LAMBDA NIL                                         (* J.Ikeo " 5-SEP-84 13:27")
    (DECLARE (GLOBALVARS RECENTHCLIST RECENTKANACODES RECENTKANJICODES))
    (COND
      ((NULL RECENTKANACODES)
	(NOOPERATION))
      (T (CLEARHERALD)
	 (DISPLAYHERALD (REVERSE RECENTKANACODES))
	 (MAPC RECENTKANJICODES (FUNCTION DELETECHRFROMCHARS))
	 (SETQ RECENTKANJICODES (OR (CONVERTTOKANJICODE T)
				    (REVERSE RECENTKANACODES)))
	 (CLEARHERALD)
	 (DISPLAYHERALD RECENTKANJICODES)
	 (MAPC RECENTKANJICODES (FUNCTION CODEADDTOCHARS])

(ROMAINPUTACTION
  [LAMBDA NIL                                         (* J.Ikeo "20-AUG-84 17:00")
    (PROG ((LASTHERALDKANACODES))
          (DECLARE (GLOBALVARS CHARACTERCODE ROMATREE KANJIINHERALDFLAG 
			       BEGINLOOKUPDICTLENGTH LOOKUPDICTPROCESS VKBDW))
          (COND
	    ((AND (BOUNDP (QUOTE KANJIINHERALDFLAG))
		  KANJIINHERALDFLAG)
	      (CLEARHERALD)
	      (SETQ KANJIINHERALDFLAG NIL)))
          (TRAVERSEROMATREE CHARACTERCODE)
          (AND (NPROCESSP)
	       (PROGN (NPROCESS)
		      (TRAVERSEROMATREE CHARACTERCODE)))
          (COND
	    ((NOSUCHROMAJI)
	      (BACKUPROMATREE)
	      (PRIN3 (FCHARACTER (CHARCODE BELL))
		     VKBDW)
	      (RETURN)))
          (DISPLAYHERALD CHARACTERCODE)
          (COND
	    ((MAKEUPKANAP)
	      (CLEARHERALDROMA)
	      [MAPC (MAKEUPKANA)
		    (FUNCTION (LAMBDA (N)
			(DISPLAYHERALD (KANAFOR N))
			(CODEADDTOCHARS (KANAFOR N]
	      (RESETROMATREE])

(SETEOLFLAG
  [LAMBDA NIL                                         (* J.Ikeo "25-APR-84 18:48")
    (DECLARE (GLOBALVARS EOLFLAG))
    (SETQ EOLFLAG T])

(STRINGINOUT
  [LAMBDA NIL                                         (* J.Ikeo "25-APR-84 18:47")
    (DECLARE (GLOBALVARS INSTRINGP))
    (SETQ INSTRINGP (NOT INSTRINGP])

(TRAVERSEROMATREE
  [LAMBDA (CHARCODE)                                  (* J.Ikeo "28-JUN-84 13:43")
    (DECLARE (GLOBALVARS ROMATREE OLDROMATREE))
    (SETQ ROMATREE (TREELOOK CHARCODE (SETQ OLDROMATREE ROMATREE])

(TREELOOK
  [LAMBDA (CODE TR)                                   (* J.Ikeo "23-MAR-84 12:57")
    (FASSOC (FCHARACTER CODE)
	    (CDDR TR])

(TYPINGROMAP
  [LAMBDA NIL                                         (* J.Ikeo "28-JUN-84 13:43")
    (DECLARE (GLOBALVARS LASTKANAXPOS VKBDW))
    (AND (KANAMODEP)
	 (NEQ LASTKANAXPOS (DSPXPOSITION NIL VKBDW])

(UPPEREIGHTBIT
  [LAMBDA (CODE)                                      (* J.Ikeo "26-APR-84 16:19")
    (LRSH CODE 8])

(FETCHCHRCODEFIELD
  [LAMBDA (CHRTYPE)                                   (* J.Ikeo " 2-MAY-84 06:58")
    (fetch (CHR CODE) of CHRTYPE])

(FETCHCHRJMODEFLAGFIELD
  [LAMBDA (CHRTYPE)                                   (* J.Ikeo "30-MAY-84 11:42")
    (fetch (CHR JMODEFLAG) of CHRTYPE])

(FETCHHERALDKANACODES
  [LAMBDA NIL                                         (* J.Ikeo "13-AUG-84 16:44")
    (DECLARE (GLOBALVARS HERALDKANALIST))
    (MAPCAR (REVERSE HERALDKANALIST)
	    (FUNCTION (LAMBDA (HERALDKANA)
		(fetch (HERALDKANACHARS CODE) of HERALDKANA])

(RESETVKBD
  [LAMBDA NIL                                         (* J.Ikeo "28-JUN-84 13:44")
    (DECLARE (GLOBALVARS JMODEFLAG VKBDW))
    (DSPRESET VKBDW)
    (SETJMODE JMODEFLAG T])

(RESETHERALDKANALIST
  [LAMBDA NIL                                         (* J.Ikeo "20-AUG-84 18:03")
    (DECLARE (GLOBALVARS HERALDKANALIST))
    [AND (BOUNDP (QUOTE HERALDKANALIST))
	 (MAPC HERALDKANALIST (FUNCTION (LAMBDA (HERALDKANA)
		   (COND
		     ((PROCESSP (fetch (HERALDKANACHARS PROCESS) of HERALDKANA))
		       (DEL.PROCESS (fetch (HERALDKANACHARS PROCESS) of HERALDKANA]
    (SETQ HERALDKANALIST NIL])

(RESETLASTKANAXPOS
  [LAMBDA NIL                                         (* J.Ikeo "28-JUN-84 13:45")
    (DECLARE (GLOBALVARS LASTKANAXPOS VKBDW))
    (SETQ LASTKANAXPOS (DSPLEFTMARGIN NIL VKBDW])

(DISPLAYEDONNEXTLINEP
  [LAMBDA NIL                                         (* J.Ikeo "28-JUN-84 13:45")
    (DECLARE (GLOBALVARS CHARS))
    (GREATERP (fetch (CHR XPOS) of (CAR CHARS))
	      (DSPXPOSITION NIL (TTYDISPLAYSTREAM])

(CORRECTDISPLAYEDCHRXPOS
  [LAMBDA NIL                                         (* J.Ikeo "14-JUN-84 10:26")
    (DECLARE (GLOBALVARS CHARS))
    (replace (CHR XPOS) of (CAR CHARS) with (DSPLEFTMARGIN NIL (TTYDISPLAYSTREAM])

(DELIMITERACTION
  [LAMBDA NIL                                         (* J.Ikeo " 3-MAY-84 17:50")
    (COND
      ((KANAMODEP)
	(NPROCESS)
	(CLEARHERALD))
      (T NIL])

(NORMALCHARCODEP
  [LAMBDA (CODE)                                      (* J.Ikeo " 4-MAY-84 04:55")
    (OR (JCHARACTERP CODE)
	(ALPHABETP CODE])

(NOSUCHROMAJI
  [LAMBDA NIL                                         (* J.Ikeo "18-MAY-84 16:02")
    (DECLARE (GLOBALVARS ROMATREE))
    (NULL ROMATREE])

(BACKUPROMATREE
  [LAMBDA NIL                                         (* J.Ikeo "18-MAY-84 15:33")
    (DECLARE (GLOBALVARS ROMATREE OLDROMATREE))
    (SETQ ROMATREE OLDROMATREE])

(RESETCHARS
  [LAMBDA NIL                                         (* J.Ikeo "28-JUN-84 13:48")
    (DECLARE (GLOBALVARS CHARS))
    (SETQ CHARS NIL])

(SETHELPINGARGFLAG
  [LAMBDA NIL
    (DECLARE (GLOBALVARS HELPINGARGFLAG))             (* J.Ikeo "24-JUL-84 09:55")
    (SETQ HELPINGARGFLAG T])

(PATTERNMODEP
  [LAMBDA NIL                                         (* J.Ikeo "13-AUG-84 10:49")
    (EQ JMODEFLAG PATTERNMODE.JMODE])

(FINDLASTJMODE
  [LAMBDA NIL
    (DECLARE (GLOBALVARS PATTERNMODE.JMODE CHARS))    (* J.Ikeo "13-AUG-84 10:42")
    (FOR CHAR IN CHARS BIND JMODE EACHTIME (SETQ JMODE (FETCH (CHR JMODEFLAG)
							  OF CHAR))
       WHEN (NEQ PATTERNMODE.JMODE JMODE) DO (RETURN JMODE])

(TRAVERSEINDEXTREE
  [LAMBDA (INDEXTREE TENCODE)                         (* J.Ikeo "16-AUG-84 14:29")
    (for I from 1 to (ARRAYSIZE INDEXTREE) when (IEQP TENCODE (CAR (ELT INDEXTREE I)))
       do (RETURN (CDR (ELT INDEXTREE I])
)
(DEFINEQ

(JDSPPRINTCHAR
  [LAMBDA (STREAM CODE)                               (* J.Ikeo " 4-MAY-84 01:31")
    (PROG (DS)
          (DECLARE (GLOBALVARS KUFLAG MYFONT0))
          (SETQ DS (OUTPUTDSP STREAM))
          (COND
	    [(IGREATERP CODE 127)
	      (COND
		((AND (BOUNDP (QUOTE KUFLAG))
		      KUFLAG)
		  (BLTCHAR (LOGAND CODE 127)
			   DS)
		  (DSPFONT MYFONT0 DS)
		  (SETQ KUFLAG NIL))
		(T (SETQ MYFONT0 (DSPFONT NIL DS))
		   (DSPFONT (SETJFONT CODE)
			    DS)
		   (SETQ KUFLAG T]
	    (T (COND
		 ((AND (BOUNDP (QUOTE KUFLAG))
		       KUFLAG)
		   (DSPFONT (AND (BOUNDP (QUOTE MYFONT0))
				 MYFONT0)
			    DS)
		   (SETQ KUFLAG NIL)))
	       (NONJ\DSPPRINTCHAR STREAM CODE])

(DISPLAYCHARACTER
  [LAMBDA (CHARCODE)                                  (* J.Ikeo "20-AUG-84 15:57")
    (PROGN [COND
	     ((ATOM CHARCODE)
	       (JADDCHAR CHARCODE))
	     (T (MAPC (APPEND CHARCODE (LIST (CHARCODE EOL)))
		      (FUNCTION JADDCHAR]
	   CHARCODE])

(JADDCHAR
  [LAMBDA (CHAR)                                      (* J.Ikeo "26-APR-84 15:08")
    (COND
      [(JCHARACTERP CHAR)
	(BUFBOUT (LIST (LOGOR 128 (LRSH CHAR 8))
		       (LOGOR 128 (LOGAND CHAR 127]
      (T (BUFBOUT (LIST CHAR])

(BUFBOUT
  [LAMBDA (CH)                                        (* edited: "26-JAN-84 11:25")
    (PROGN (\CHECKCARET (TTYDISPLAYSTREAM))
	   (MAPC CH (FUNCTION \ECHOCHAR])

(SETJFONT
  [LAMBDA (CODE FONT0)                                (* J.Ikeo "28-JUN-84 13:50")
    (DECLARE (GLOBALVARS JDISPLAYFONTS))
    (OR (FONTP (ELT JDISPLAYFONTS (LOGAND 127 CODE)))
	FONT0])
)
(DEFINEQ

(DELETECHRFROMCHARS
  [LAMBDA NIL                                         (* J.Ikeo " 4-SEP-84 15:13")
    (DECLARE (GLOBALVARS CHARS LPARCOUNT LBRKCOUNT INSTRINGP))
    (COND
      (CHARS (SETJMODE (fetch (CHR JMODEFLAG) of (CAR CHARS)))
	     [COND
	       ((EQ (DSPXPOSITION NIL (TTYDISPLAYSTREAM))
		    (DSPLEFTMARGIN NIL (TTYDISPLAYSTREAM)))
		 (\CHECKCARET (TTYDISPLAYSTREAM))
		 (MOVETO (DSPRIGHTMARGIN NIL (TTYDISPLAYSTREAM))
			 (DSPYPOSITION NIL (TTYDISPLAYSTREAM))
			 (TTYDISPLAYSTREAM))
		 (RELMOVETO 0 (MINUS (DSPLINEFEED NIL (TTYDISPLAYSTREAM)))
			    (TTYDISPLAYSTREAM]
	     (DSPBACKUP (IDIFFERENCE (DSPXPOSITION NIL (TTYDISPLAYSTREAM))
				     (fetch (CHR XPOS) of (CAR CHARS)))
			(TTYDISPLAYSTREAM))
	     (SETQ LPARCOUNT (OR (AND CHARS (fetch (CHR LPARCOUNT) of (CAR CHARS)))
				 0))
	     (SETQ LBRKCOUNT (OR (AND CHARS (fetch (CHR LBRKCOUNT) of (CAR CHARS)))
				 0))
	     [SETQ INSTRINGP (AND CHARS (fetch (CHR INSTRINGP) of (CAR CHARS]
	     (FETCHCHRCODEFIELD (pop CHARS)))
      (T (PRIN3 (FCHARACTER (CHARCODE BELL))
		T)
	 NIL])
)
(DEFINEQ

(CONVERTTOJISCODE
  [LAMBDA (CODES)                                     (* J.Ikeo "28-JUN-84 13:57")
    (COND
      ((NULL CODES)
	NIL)
      [(GREATERP (CAR CODES)
		 255)
	(CONS (IPLUS (LRSH (CAR CODES)
			   8)
		     128)
	      (CONS (LOGAND (IPLUS (CAR CODES)
				   128)
			    255)
		    (CONVERTTOJISCODE (CDR CODES]
      (T (CONS (CAR CODES)
	       (CONVERTTOJISCODE (CDR CODES])
)



(* Functions for Kana-Kanji Conversion)

(DEFINEQ

(GETCOMPLETELYMATCH
  [LAMBDA (PHONICCODES)                               (* J.Ikeo "18-SEP-84 23:38")
    (DECLARE (GLOBALVARS HOMOSETLIST $$LAST$$))
    (for POSSET in (CDR (for HOMOSET in HOMOSETLIST when (EQUAL PHONICCODES (CAR HOMOSET))
			   do (RETURN HOMOSET)))
       bind POS# CONNECTFREQ eachtime (PROGN (SETQ POS# (CAR POSSET))
					     (SETQ CONNECTFREQ (GetConnection POS# 
									     $$LAST$$)))
       when [AND (NOT (ZEROP CONNECTFREQ))
		 (PROGN                               (* The following expression is for test)
			(push ENTRIESFORTEST (LIST POSSET HARDENDINGPOSITION]
       join (for ENTRY in (CDR POSSET) collect (PROGN (replace (KANJIENTRY FREQ)
							 of ENTRY
							 with (TIMES CONNECTFREQ
								     (fetch (KANJIENTRY
									      FREQ)
									of ENTRY)))
						      ENTRY])

(GETINDEXTREE
  [LAMBDA NIL                                         (* J.Ikeo "20-AUG-84 16:23")
    (DECLARE (GLOBALVARS HERALDKANALIST INDEXARRAY))
    (COND
      (HERALDKANALIST (fetch (HERALDKANACHARS INDEXTREE) of (CAR HERALDKANALIST)))
      (T INDEXARRAY])

(GETNEXTINDEXTREE
  [LAMBDA (TREE CODE)                                 (* J.Ikeo " 6-SEP-84 11:32")
    (TRAVERSEINDEXTREE TREE (CONVERTTOPHONICCODE CODE])

(GETPREHCLIST
  [LAMBDA (COMPLETELYMATCH)                           (* J.Ikeo "30-AUG-84 14:33")
    (SORT (for ENTRY in COMPLETELYMATCH collect (create HC
							TOTALFREQ ←(fetch (KANJIENTRY
									    FREQ)
								      of ENTRY)
							CODELIST ←(fetch (KANJIENTRY
									   KANAKANJICODES)
								     of ENTRY)))
	  (FUNCTION (LAMBDA (HC1 HC2)
	      (GREATERP (fetch (HC TOTALFREQ) of HC1)
			(fetch (HC TOTALFREQ) of HC2])

(GETPHONICCODES
  [LAMBDA NIL                                         (* J.Ikeo " 6-SEP-84 11:33")
    (for KANACODE in (FETCHHERALDKANACODES) collect (CONVERTTOPHONICCODE KANACODE])

(HCDIFFERENCE
  [LAMBDA (HCLIST1 HCLIST2)                           (* J.Ikeo "28-AUG-84 13:39")
    (PROG (CODELISTSET)
          (SETQ CODELISTSET (for HC in HCLIST2 collect (fetch (HC CODELIST) of HC)))
          (RETURN (for HC in HCLIST1 unless (MEMBER (fetch (HC CODELIST) of HC)
						    CODELISTSET)
		     collect HC])

(PRECONVERTTOHCSINPAGES
  [LAMBDA (HCLIST FIRST)                              (* J.Ikeo " 4-SEP-84 10:30")
    (PROG (LOWFREQ (HCSINPAGELOCAL)
		   HCLST)
          [COND
	    ((NULL (CDR HCLIST))
	      (RETURN (LIST HCLIST]
          (SETQ HCLST HCLIST)
          (SETQ LOWFREQ (TIMES (fetch (HC TOTALFREQ) of (CAR HCLST))
			       .75))
      LOOP(SETQ HCSINPAGELOCAL (CONS (PROG1 (CAR HCLST)
					    (SETQ HCLST
					      (for HC in (CDR HCLST)
						 unless (EQUAL (fetch (HC CODELIST)
								  of (CAR HCLST))
							       (fetch (HC CODELIST)
								  of HC))
						 collect HC)))
				     HCSINPAGELOCAL))
          (COND
	    ((AND (NULL HCLST)
		  (NULL (CDR HCSINPAGELOCAL)))
	      (RETURN (LIST HCSINPAGELOCAL)))
	    [(NULL HCLST)
	      (SHOWHC (REVERSE HCSINPAGELOCAL)
		      T)
	      (RETURN (LIST (REVERSE HCSINPAGELOCAL]
	    [(GEQ (LENGTH HCSINPAGELOCAL)
		  8)
	      (COND
		(FIRST (SHOWHC (REVERSE HCSINPAGELOCAL)
			       T)))
	      (RETURN (CONS (REVERSE HCSINPAGELOCAL)
			    (CONVERTTOHCSINPAGES HCLST]
	    ((GEQ (fetch (HC TOTALFREQ) of (CAR HCLST))
		  LOWFREQ)
	      (GO LOOP))
	    (T (COND
		 (FIRST (SHOWHC (REVERSE HCSINPAGELOCAL)
				T)))
	       (RETURN (CONS (REVERSE HCSINPAGELOCAL)
			     (CONVERTTOHCSINPAGES HCLST])

(PREKANJIENTRYSELECTION
  [LAMBDA (PHONICCODESLENGTH)                         (* J.Ikeo "30-AUG-84 14:16")
    (DECLARE (GLOBALVARS HOMOSETLIST))
    (SETQ HOMOSETLIST (for EACH in HOMOSETLIST when (LESSP (LENGTH (CAR EACH))
							   PHONICCODESLENGTH)
			 collect EACH])

(PREKANJISELECTION
  [LAMBDA NIL                                         (* J.Ikeo " 6-SEP-84 18:26")
    (DECLARE (GLOBALVARS KANJIENTRYLIST $$LAST$$ PREHCSINPAGELIST HARDENDINGFLAG 
			 HARDENDINGPOSITION PREHCLIST GLOBALPHONICCODES))
    (PROG (COMPLETELYMATCH VKBDWXPOS VKBDWYPOS)
          (SETQ ENTRIESFORTEST NIL)                   (* for test)
          (SETQ PREHCSINPAGELIST NIL)
          (SETQ HARDENDINGFLAG NIL)
          (SETQ PREHCLIST NIL)
          (SETQ GLOBALPHONICCODES (GETPHONICCODES))
          (SETQ HARDENDINGPOSITION (NUMBEROFPHONICCODES GLOBALPHONICCODES))
          (SETQ HARDENDINGPOSITION (NUMBEROFPHONICCODES GLOBALPHONICCODES))
          (SETQ COMPLETELYMATCH (GETCOMPLETELYMATCH GLOBALPHONICCODES))
          [SETQ ENTRIESLISTFORTEST (MAPCAR COMPLETELYMATCH (FUNCTION (LAMBDA (ENTRY)
					       (CONS ENTRY NIL]
          (PREKANJIENTRYSELECTION (LENGTH GLOBALPHONICCODES))
          (COND
	    ((NULL COMPLETELYMATCH)
	      (RETURN)))
          (SETQ HARDENDINGFLAG T)
          (SETQ LONGESTENDINGPOSITION HARDENDINGPOSITION)
          (SETQ PREHCLIST (GETPREHCLIST COMPLETELYMATCH))
          (SETQ VKBDWXPOS (DSPXPOSITION NIL VKBDW))
          (SETQ VKBDWYPOS (DSPYPOSITION NIL VKBDW))
          (SETQ PREHCSINPAGELIST (PRECONVERTTOHCSINPAGES PREHCLIST T))
          (MOVETO VKBDWXPOS VKBDWYPOS VKBDW])

(CALCULATESOFTPOSITION
  [LAMBDA (PHONICCODES)                               (* J.Ikeo " 4-SEP-84 16:08")
    (DECLARE (GLOBALVARS HARDENDINGPOSITION))         (* PHONICCODES is phonic codes follwing the soft 
						      ending position. So, this IDIFFERENCE get a soft 
						      ending position.)
    (IDIFFERENCE HARDENDINGPOSITION (NUMBEROFPHONICCODES PHONICCODES])

(CONVERTTOKANACODE
  [LAMBDA (PHONICCODE)                                (* J.Ikeo " 6-SEP-84 11:52")
    (DECLARE (GLOBALVARS JMODEFLAG))
    (SELECTC PHONICCODE
	     (89                                      (* for Tou-Ten)
		 8482)
	     (90                                      (* for Ku-Ten)
		 8483)
	     (109                                     (* for -
						      of Kata-Kana)
		  8509)
	     (IPLUS (LSH (OR JMODEFLAG 0)
			 8)
		    PHONICCODE 32])

(CONVERTTOPHONICCODE
  [LAMBDA (KANACODE)                                  (* J.Ikeo " 6-SEP-84 11:45")
    (SELECTC KANACODE
	     (8482                                    (* for Tou-Ten)
		   89)
	     (8483                                    (* for Ku-Ten)
		   90)
	     (8509                                    (* for -
						      of Kata-Kana)
		   109)
	     (IDIFFERENCE (LOGAND KANACODE 127)
			  32])

(NUMBEROFPHONICCODES
  [LAMBDA (PHONICCODES)                               (* J.Ikeo " 4-SEP-84 15:51")
                                                      (* Phonic code 67 69 71 is 
						      (ya) (yu) (yo) respectively.
						      Count the number of given phonic codes except 
						      those.)
    (for PHONICCODE in PHONICCODES count (NOT (OR (IEQP PHONICCODE 67)
						  (IEQP PHONICCODE 69)
						  (IEQP PHONICCODE 71])

(CREATEDUMMYFASTENDENTRIES
  [LAMBDA (PHONICCODES)                               (* J.Ikeo " 6-SEP-84 11:56")
    (DECLARE (GLOBALVARS JMODEFLAG HARDENDINGPOSITION $$SOFT$$))

          (* Create a dummy fastened entries list in the soft ending situation. The last element of the list 
	  is a number representing a soft ending position)


    (LIST (CREATESUFFIXENTRY (MAPCAR PHONICCODES (FUNCTION CONVERTTOKANACODE))
			     0 $$SOFT$$ 1)
	  (CALCULATESOFTPOSITION PHONICCODES])

(CREATEKANJIENTRY
  [LAMBDA (KANAKANJICODES FREQ)                       (* J.Ikeo " 4-SEP-84 16:32")
    (create KANJIENTRY
	    KANAKANJICODES ← KANAKANJICODES
	    FREQ ← FREQ])

(GETLOOKUPPHONICCODES
  [LAMBDA NIL                                         (* J.Ikeo " 4-SEP-84 16:25")
    (DECLARE (GLOBALVARS DICTADDR))                   (* Read the phonic codes of a homoset on the 
						      lookup dictionary)
    (PROG (LOOKUPPHONICCODES# LOOKUPPHONICCODES WORD# DICTWORDSEQUENCE)
          (SETQ LOOKUPPHONICCODES# (GETLOOKUPDICTWORD))
          (SETQ WORD# (IQUOTIENT (ADD1 LOOKUPPHONICCODES#)
				 2))
          (SETQ DICTWORDSEQUENCE (for I from 1 to WORD# collect (GETLOOKUPDICTWORD)))
          (SETQ LOOKUPPHONICCODES (ELIMINATETAILZEROS (MAKEBYTECONTENTSLIST 
								     DICTWORDSEQUENCE)))
          (RETURN LOOKUPPHONICCODES])

(GETSUFFIXHOMOSETLIST
  [LAMBDA (PHONICCODES)                               (* J.Ikeo "29-AUG-84 11:19")
    (DECLARE (GLOBALVARS SUFFIXTREE))
    (GETSUFFIXHOMOSETLIST1 PHONICCODES SUFFIXTREE])

(GETSUFFIXHOMOSETLIST1
  [LAMBDA (PHONICCODES SUFFIXSUBTREE)                 (* J.Ikeo " 3-SEP-84 11:19")
    (COND
      ((NULL SUFFIXSUBTREE)
	NIL)
      [(NULL PHONICCODES)
	(AND (CADR SUFFIXSUBTREE)
	     (LIST (CADR SUFFIXSUBTREE]
      (T (NCONC (AND (CADR SUFFIXSUBTREE)
		     (LIST (CADR SUFFIXSUBTREE)))
		(GETSUFFIXHOMOSETLIST1 (CDR PHONICCODES)
				       (ASSOC (CAR PHONICCODES)
					      (CDDR SUFFIXSUBTREE])

(MAKEFASTENDENTRIESLIST
  [LAMBDA NIL                                         (* J.Ikeo " 6-SEP-84 16:40")
    (for HOMOSET in HOMOSETLIST bind PHONICREMAINDER SUFFIXHOMOSETLIST
       eachtime [COND
		  ((EQ (QUOTE DONTMATCH)
		       (SETQ PHONICREMAINDER (MAKEPHONICREMAINDER (CAR HOMOSET)
								  GLOBALPHONICCODES)))
		    (GO $$ITERATE))
		  (T (SETQ SUFFIXHOMOSETLIST (GETSUFFIXHOMOSETLIST PHONICREMAINDER]
       join (for POSSET in (CDR HOMOSET) bind FASTENDENTRIESLIST
	       eachtime [PROGN (SETQ FASTENDENTRIESLIST
				 (for FASTENDENTRIES
				    in [OR (MAKEFASTENDSUFFIXENTRIESLIST (CAR POSSET)
									 PHONICREMAINDER 
								    SUFFIXHOMOSETLIST)
					   (AND (SOFTENDINGP (CAR POSSET)
							     PHONICREMAINDER)
						(LIST (CREATEDUMMYFASTENDENTRIES 
								      PHONICREMAINDER]
				    collect (CONS (CALCULATETOTALFREQ FASTENDENTRIES)
						  FASTENDENTRIES)))
                                                      (* The following expression is for test)
			       (for FASTENDENTRIES in FASTENDENTRIESLIST
				  do (push ENTRIESFORTEST (CONS POSSET (CDR 
								       FASTENDENTRIES]
	       join (for ENTRY in (CDR POSSET)
		       join
			(for FASTENDENTRIES in FASTENDENTRIESLIST
			   collect
			    (CONS (PROGN (replace (KANJIENTRY FREQ) of ENTRY
					    with (TIMES (CAR FASTENDENTRIES)
							(GetConnection
							  (CAR POSSET)
							  (fetch (SUFFIXENTRY PRE)
							     of (CADR FASTENDENTRIES)))
							(fetch (KANJIENTRY FREQ)
							   of ENTRY)))
					 ENTRY)
				  (CDR FASTENDENTRIES])

(MAKEFASTENDSUFFIXENTRIESLIST
  [LAMBDA (POS PHONICCODES SUFFIXHOMOSETLISTARG)      (* J.Ikeo "19-SEP-84 01:16")
    (for SUFFIXHOMOSET in SUFFIXHOMOSETLISTARG bind PHONICREMAINDER SUFFIXHOMOSETLIST
       eachtime (PROGN (SETQ PHONICREMAINDER (MAKEPHONICREMAINDER (CAR SUFFIXHOMOSET)
								  PHONICCODES))
		       (SETQ SUFFIXHOMOSETLIST (GETSUFFIXHOMOSETLIST PHONICREMAINDER)))
       join (for SUFFIXENTRY in (CDR SUFFIXHOMOSET)
	       when [NOT (ZEROP (GetConnection POS (fetch (SUFFIXENTRY PRE) of 
									  SUFFIXENTRY]
	       join (MAKEFASTENDSUFFIXENTRIESLIST1 SUFFIXENTRY PHONICREMAINDER 
						   SUFFIXHOMOSETLIST])

(MAKEFASTENDSUFFIXENTRIESLIST1
  [LAMBDA (ENTRY PHONICCODES HOMOSETLISTARG)          (* J.Ikeo "19-SEP-84 00:55")
    (DECLARE (GLOBALVARS HARDENDINGFLAG $$LAST$$))
    (PROG (SUFFIXHOMOSETLIST ENTRIES)
          [COND
	    ((NULL PHONICCODES)
	      (COND
		((ZEROP (GetConnection (fetch (SUFFIXENTRY POS) of ENTRY)
				       $$LAST$$))
		  (RETURN NIL))
		(T (SETQ HARDENDINGFLAG T)
		   (RETURN (LIST (LIST ENTRY HARDENDINGPOSITION]
          (SETQ FASTENDENTRIESLIST (MAKEFASTENDSUFFIXENTRIESLIST (fetch (SUFFIXENTRY
									  POS)
								    of ENTRY)
								 PHONICCODES 
								 HOMOSETLISTARG))
          (COND
	    [FASTENDENTRIESLIST (RETURN (for FASTENDENTRIES in FASTENDENTRIESLIST
					   collect (CONS ENTRY FASTENDENTRIES]
	    [(SOFTENDINGP (fetch (SUFFIXENTRY POS) of ENTRY)
			  PHONICCODES)
	      (RETURN (LIST (CONS ENTRY (CREATEDUMMYFASTENDENTRIES PHONICCODES]
	    (T (RETURN NIL])

(MAKEHOMOSETSUBLIST
  [LAMBDA (PHONICCODES DICTADDRARG LASTFLAG)          (* J.Ikeo "18-SEP-84 23:39")
    (DECLARE (GLOBALVARS HOMOSETLISTARRAY DICTADDR))
    (PROG (HOMOSETSIZE POSSET# LOOKUPPHONICCODES (HOMOSETLISTLOCAL)
		       (NTH (LENGTH PHONICCODES)))
          (COND
	    ((NULL DICTADDRARG)
	      (RETURN)))
          (SETQ DICTADDR DICTADDRARG)                 (* This DICTADDROFFSET is for a reserved one 
						      word.)
      LOOP1
          (SETQ HOMOSETSIZE (GETLOOKUPDICTWORD))      (* HOMOSETSIZE is not used, now.)
          (SETQ LOOKUPPHONICCODES (GETLOOKUPPHONICCODES))
          (BLOCK)                                     (* This process has lower priority.)
          (COND
	    ((MATCHTHEPHONICCODES LOOKUPPHONICCODES PHONICCODES LASTFLAG)
	      (SETQ POSSET# (GETLOOKUPDICTWORD))
	      [push HOMOSETLISTLOCAL (CONS LOOKUPPHONICCODES
					   (for I from 1 to POSSET# collect (READPOSSET]
	      (GO LOOP1)))
          (RETURN (SETA HOMOSETLISTARRAY NTH HOMOSETLISTLOCAL])

(MAKEPHONICREMAINDER
  [LAMBDA (PHONIC1 PHONIC2)                           (* J.Ikeo " 3-SEP-84 11:52")
    (COND
      ((NULL PHONIC1)
	PHONIC2)
      ((IEQP (CAR PHONIC1)
	     (CAR PHONIC2))
	(MAKEPHONICREMAINDER (CDR PHONIC1)
			     (CDR PHONIC2)))
      (T (QUOTE DONTMATCH])

(MATCHTHEPHONICCODES
  [LAMBDA (LOOKUPPHONICCODES PHONICCODES LASTFLAG)    (* J.Ikeo "29-AUG-84 10:46")
    (COND
      [[AND LASTFLAG (NOT (IEQP (LENGTH LOOKUPPHONICCODES)
				(LENGTH PHONICCODES]
	(EQUAL (REVERSE PHONICCODES)
	       (CDR (LASTN (REVERSE LOOKUPPHONICCODES)
			   (LENGTH PHONICCODES]
      (T (EQUAL PHONICCODES LOOKUPPHONICCODES])

(READENTRY
  [LAMBDA NIL                                         (* J.Ikeo " 4-SEP-84 16:33")
    (DECLARE (GLOBALVARS DICTADDR))
    (PROG (ENTRYSIZE KANJICODES FREQ)
          (SETQ ENTRYSIZE (GETLOOKUPDICTWORD))
          (SETQ KANJICODES (for INDEX from 1 to ENTRYSIZE collect (GETLOOKUPDICTWORD)))
          (SETQ FREQ (LOGAND (GETLOOKUPDICTWORD)
			     255))
          (RETURN (CREATEKANJIENTRY KANJICODES FREQ])

(READPOSSET
  [LAMBDA NIL                                         (* J.Ikeo " 4-SEP-84 16:33")
    (DECLARE (GLOBALVARS DICTADDR))
    (PROG (WORD ENTRY# POS)
          (SETQ WORD (GETLOOKUPDICTWORD))
          (SETQ POS (LRSH WORD 8))
          (SETQ ENTRY# (LOGAND WORD 255))
          (RETURN (CONS POS (for I from 1 to ENTRY# collect (READENTRY])

(SOFTENDINGP
  [LAMBDA (POS PHONICCODES)                           (* J.Ikeo " 3-SEP-84 13:42")
    (DECLARE (GLOBALVARS HARDENDINGFLAG $$SOFT$$))
    (AND (NULL HARDENDINGFLAG)
	 (NOT (ZEROP (GetConnection POS $$SOFT$$)))
	 (NOT (MEMBER (CAR PHONICCODES)
		      (QUOTE (67 69 71])

(KANAKANJICONVERSION
  [LAMBDA NIL                                         (* J.Ikeo " 4-SEP-84 11:01")
    (PROG (SELECTEDKANJICODES)
          (DECLARE (GLOBALVARS HERALDKANALIST RECENTHCLIST RECENTKANACODES 
			       RECENTKANJICODES KANJIINHERALDFLAG))
          (RESETLST (RESETSAVE (CURSOR (CURSORCREATE WAITING1 0 15)))
		    (NPROCESS)
		    (COLLECTKANJIENTRIES)
		    (PREKANJISELECTION))
          (COND
	    [(OR (SETQ RECENTHCLIST (CONVERTTOHCLIST))
		 PREHCSINPAGELIST)
	      (RESETLST (RESETSAVE (CURSOR (CURSORCREATE WAITING3 0 15)))
			[SETQ RECENTKANACODES (MAPCAR HERALDKANALIST
						      (FUNCTION (LAMBDA (HERALDKANA)
							  (fetch (HERALDKANACHARS CODE)
							     of HERALDKANA]
			(MAPC HERALDKANALIST (FUNCTION DELETECHRFROMCHARS)))
	      (SETQ SELECTEDKANJICODES (CONVERTTOKANJICODE))
	      (COND
		(SELECTEDKANJICODES (SETQ KANJIINHERALDFLAG T)
				    (SETQ RECENTKANJICODES SELECTEDKANJICODES)
				    (CLEARHERALD)
				    (DISPLAYHERALD RECENTKANJICODES)
				    (MAPC RECENTKANJICODES (FUNCTION CODEADDTOCHARS)))
		(T (SHOWVKBDW)
		   (MAPC (FETCHHERALDKANACODES)
			 (FUNCTION CODEADDTOCHARS]
	    (T (PROMPTPRINT "Sorry, I have no KANJIs correspond with the KANA .")
	       (FLASHVKBDW])

(CONVERTTOHCLIST
  [LAMBDA NIL                                         (* J.Ikeo " 6-SEP-84 16:25")
    (RESETLST (RESETSAVE (CURSOR (CURSORCREATE WAITING2 0 15)))
	      (MAKEHCLIST])

(DICTADDROFFSET
  [LAMBDA (DICTADDRARG OFFSET)                        (* J.Ikeo "27-AUG-84 06:06")
    (IPLUS DICTADDRARG OFFSET])

(ELIMINATEHEADZEROS
  [LAMBDA (LIS)                                       (* J.Ikeo "17-MAY-84 07:05")
    (COND
      ((NULL LIS)
	NIL)
      ((ZEROP (CAR LIS))
	(ELIMINATEHEADZEROS (CDR LIS)))
      (T LIS])

(ELIMINATETAILZEROS
  [LAMBDA (LIS)                                       (* J.Ikeo "17-MAY-84 07:01")
    (REVERSE (ELIMINATEHEADZEROS (REVERSE LIS])

(GETINDEXFILEWORD
  [LAMBDA (FILEADR)                                   (* J.Ikeo " 4-JUL-84 10:40")
    (DECLARE (GLOBALVARS INDEXFILE))
    (WORDCONTENTS (WORDOFFSET (\MAPPAGE (LRSH FILEADR 8)
					INDEXFILE)
			      (LOGAND FILEADR 255])

(GETLOOKUPDICTWORD
  [LAMBDA NIL                                         (* J.Ikeo " 4-SEP-84 16:19")
    (DECLARE (GLOBALVARS DICTADDR LOOKUPDICTFILE))
    (PROG (WORD)
          [SETQ WORD (WORDCONTENTS (WORDOFFSET (\MAPPAGE (LRSH DICTADDR 8)
							 LOOKUPDICTFILE)
					       (LOGAND DICTADDR 255]
          (SETQ DICTADDR (DICTADDROFFSET DICTADDR 1))
          (RETURN WORD])

(GetConnection
  [LAMBDA (POS PRE)                                   (* J.Ikeo "12-JUL-84 08:50")
    (BITMAPBIT GRAMMTABLE PRE POS])

(MAKEBYTECONTENTSLIST
  [LAMBDA (WORDCONTENTSLIST)                          (* J.Ikeo "28-JUN-84 11:07")
    (COND
      ((NULL WORDCONTENTSLIST)
	NIL)
      (T (CONS (LRSH (CAR WORDCONTENTSLIST)
		     8)
	       (CONS (LOGAND (CAR WORDCONTENTSLIST)
			     255)
		     (MAKEBYTECONTENTSLIST (CDR WORDCONTENTSLIST])

(KANATAIL
  [LAMBDA (KANJICODES)                                (* J.Ikeo "13-JUL-84 10:59")
    (REVERSE (KANATAIL1 (REVERSE KANJICODES])

(KANATAIL1
  [LAMBDA (CODES)                                     (* J.Ikeo " 5-SEP-84 13:23")
    (COND
      ((NULL CODES)
	NIL)
      [(IEQP (LRSH (CAR CODES)
		   9)
	     18)
	(CONS (CAR CODES)
	      (KANATAIL1 (CDR CODES]
      (T NIL])

(ALLKANACODEP
  [LAMBDA (CODES)                                     (* J.Ikeo " 6-SEP-84 12:59")
    (EVAL (CONS (FUNCTION AND)
		(MAPCAR CODES (FUNCTION (LAMBDA (CODE)
			    (OR (IEQP (LRSH CODE 9)
				      18)
				(IEQP CODE 8509)
				(IEQP CODE 8482)
				(IEQP CODE 8483])

(COLLECTKANJIENTRIES
  [LAMBDA NIL                                         (* J.Ikeo "30-AUG-84 14:18")
    (PROG ((NUMBER 0)
	   PROCESS)
          (DECLARE (GLOBALVARS HERALDKANALIST HOMOSETLIST HOMOSETLISTARRAY))
          [MAPC HERALDKANALIST (FUNCTION (LAMBDA (HERALDKANA)
		    (AND (SETQ PROCESS (fetch (HERALDKANACHARS PROCESS) of HERALDKANA))
			 (SETQ NUMBER (ADD1 NUMBER))
			 (PROCESSP PROCESS)
			 (PROCESS.RESULT PROCESS T]
          (SETQ HOMOSETLIST (for I from 1 to NUMBER join (COPY (ELT HOMOSETLISTARRAY I])
)
(DEFINEQ

(CALCULATETOTALFREQ
  [LAMBDA (ENTRIES)                                   (* J.Ikeo " 3-SEP-84 16:28")
    (CALCULATETOTALFREQ1 (CAR (LASTN ENTRIES 1])

(CALCULATETOTALFREQ1
  [LAMBDA (ENTRIES)                                   (* J.Ikeo "30-AUG-84 14:35")
    (DECLARE (GLOBALVARS $$LAST$$ $$SOFT$$))
    (COND
      ((NULL ENTRIES)
	0)
      ((IEQP (fetch (SUFFIXENTRY PRE) of (CAR ENTRIES))
	     $$SOFT$$)
	1)
      ((NULL (CDR ENTRIES))
	(ITIMES (fetch (SUFFIXENTRY FREQ) of (CAR ENTRIES))
		(GetConnection (fetch (SUFFIXENTRY POS) of (CAR ENTRIES))
			       $$LAST$$)))
      (T (ITIMES (fetch (SUFFIXENTRY FREQ) of (CAR ENTRIES))
		 (GetConnection (fetch (SUFFIXENTRY POS) of (CAR ENTRIES))
				(fetch (SUFFIXENTRY PRE) of (CADR ENTRIES)))
		 (CALCULATETOTALFREQ1 (CDR ENTRIES])

(MAKECODELIST
  [LAMBDA (ENTRIES)                                   (* J.Ikeo " 5-SEP-84 12:02")
    (APPEND (fetch (KANJIENTRY KANAKANJICODES) of (CAR ENTRIES))
	    (for ENTRY in (CAR (LASTN (CDR ENTRIES)
				      1))
	       join (COPY (fetch (SUFFIXENTRY KANAKANJICODES) of ENTRY])

(MAKEHCLIST
  [LAMBDA NIL                                         (* J.Ikeo " 6-SEP-84 17:50")
    (PROG (ENTRIESLIST ENTRIESWITHENDINGPOSITIONLIST)
          (DECLARE (GLOBALVARS HARDENDINGFLAG LONGESTENDINGPOSITION HARDENDINGPOSITION 
			       GLOBALPHONICCODES))
          (SETQ ENTRIESLIST (MAKEFASTENDENTRIESLIST))
          (COND
	    [(NULL HARDENDINGFLAG)
	      (SETQ LONGESTENDINGPOSITION (GETLONGESTENDINGPOSITION ENTRIESLIST))
	      (COND
		((IEQP LONGESTENDINGPOSITION HARDENDINGPOSITION)
		  (SETQ HARDENDINGFLAG T]
	    (T (SETQ LONGESTENDINGPOSITION HARDENDINGPOSITION)))
          [SETQ ENTRIESLIST (SELECTENTRIESWITHENDINGPOSITION ENTRIESLIST
							     (COND
							       (HARDENDINGFLAG 
								   HARDENDINGPOSITION)
							       (T (IDIFFERENCE 
								LONGESTENDINGPOSITION 
								  SOFTENDINGALLOWANCE)))
							     (COND
							       (HARDENDINGFLAG 
								   HARDENDINGPOSITION)
							       (T LONGESTENDINGPOSITION]
          (AND (BOUNDP (QUOTE SHOWSETSUZOKU))
	       (OPENW SHOWSETSUZOKU))
          (RETURN (for ENTRIES in ENTRIESLIST collect (create HC
							      TOTALFREQ ←(fetch
								(KANJIENTRY FREQ)
									    of
									     (CAR ENTRIES)
								)
							      CODELIST ←(MAKECODELIST
								ENTRIES])

(GETLONGESTENDINGPOSITION
  [LAMBDA (ENTRIESLIST)                               (* J.Ikeo " 3-SEP-84 13:20")
    (OR [CAR (LAST (for ENTRIES in ENTRIESLIST largest (CAR (LAST ENTRIES]
	0])

(SELECTENTRIESWITHENDINGPOSITION
  [LAMBDA (ENTRIESWITHENDINGPOSITIONLIST MINPOSITION MAXPOSITION)
                                                      (* J.Ikeo " 3-SEP-84 15:01")
    (for ENTRIESWITHENDINGPOSITION in ENTRIESWITHENDINGPOSITIONLIST bind POSITION
       eachtime (SETQ POSITION (CAR (LAST ENTRIESWITHENDINGPOSITION)))
       when (AND POSITION (COND
		   ((IEQP POSITION MAXPOSITION)
		     (replace (KANJIENTRY FREQ) of (CAR ENTRIESWITHENDINGPOSITION)
			with (TIMES (fetch (KANJIENTRY FREQ) of (CAR 
							    ENTRIESWITHENDINGPOSITION))
				    2))
		     T)
		   ((GEQ POSITION MINPOSITION)
		     T)
		   (T NIL)))
       collect ENTRIESWITHENDINGPOSITION])
)
(DEFINEQ

(CONVERTTOKANJICODE
  [LAMBDA (SHOWFLAG)                                  (* J.Ikeo " 5-SEP-84 13:28")
    (DECLARE (GLOBALVARS RECENTHCLIST PRESSEDKEY HCSINPAGE HCSINPAGELIST MAXPAGENUMBER 
			 PAGENUMBER VKBDW PREHCSINPAGELIST PREHCLIST))
    (PROG (HCLST RETURNVALUE VKBDWXPOS VKBDWYPOS SHOWHCPROCESS (EXITFLAG))
          [RESETLST (RESETSAVE (CURSOR (CURSORCREATE WAITING3 0 15)))
		    (SETQ VKBDWXPOS (DSPXPOSITION NIL VKBDW))
		    (SETQ VKBDWYPOS (DSPYPOSITION NIL VKBDW))
		    (COND
		      [RECENTHCLIST (SETQ HCLST (SORTHCLIST (HCDIFFERENCE RECENTHCLIST 
									  PREHCLIST)))
				    (SETQ HCSINPAGELIST (APPEND PREHCSINPAGELIST
								(CONVERTTOHCSINPAGES
								  HCLST
								  (NULL PREHCSINPAGELIST]
		      (T (SETQ HCSINPAGELIST PREHCSINPAGELIST)))
		    (SETQ MAXPAGENUMBER (LENGTH HCSINPAGELIST))
		    (COND
		      ((AND (IEQP MAXPAGENUMBER 1)
			    (IEQP (LENGTH (CAR HCSINPAGELIST))
				  1))
			(SETQ RETURNVALUE (fetch (HC CODELIST) of (CAAR HCSINPAGELIST)))
			(SETQ EXITFLAG T))
		      ([OR (AND SHOWFLAG PREHCSINPAGELIST)
			   (AND PREHCSINPAGELIST (NULL (CDR PREHCSINPAGELIST))
				(NULL (CDADR PREHCSINPAGELIST]
			(SHOWHC (CAR HCSINPAGELIST)
				T
				(IEQP 1 MAXPAGENUMBER)))
		      (T (NOOPERATION]
          (SETQ PAGENUMBER 1)
          (SETQ HCSINPAGE (CAR HCSINPAGELIST))
          (COND
	    (EXITFLAG (GO EXIT)))
      INNERLOOP
          [SETQ SHOWHCPROCESS (ADD.PROCESS (QUOTE (PROCESSSHOWHC]
          (KEYFORCHAR)
          (DEL.PROCESS SHOWHCPROCESS)
          (CLEARBUF T T)
          (COND
	    ((NULL PRESSEDKEY)
	      (FLASHVKBDW)
	      (GO INNERLOOP))
	    ((EQ PRESSEDKEY (QUOTE DEFAULT))
	      (SHOWVKBDW)
	      (SETQ RETURNVALUE (fetch (HC CODELIST) of (CAAR HCSINPAGELIST)))
	      (GO EXIT))
	    [(EQ PRESSEDKEY (QUOTE NEXTPAGE))
	      (SETQ PAGENUMBER (COND
		  ((GEQ PAGENUMBER MAXPAGENUMBER)
		    1)
		  (T (ADD1 PAGENUMBER]
	    ((EQ PRESSEDKEY (QUOTE UNDO))
	      (SETQ RETURNVALUE NIL)
	      (GO EXIT))
	    ((LISTP PRESSEDKEY)
	      (SETQ PAGENUMBER (MIN (CAR PRESSEDKEY)
				    MAXPAGENUMBER)))
	    ((GEQ (LENGTH HCSINPAGE)
		  PRESSEDKEY)
	      [SETQ RETURNVALUE (fetch (HC CODELIST) of (CAR (NTH HCSINPAGE PRESSEDKEY]
	      (GO EXIT))
	    (T (FLASHVKBDW)
	       (GO INNERLOOP)))
          (SETQ HCSINPAGE (CAR (NTH HCSINPAGELIST PAGENUMBER)))
          (SHOWHC HCSINPAGE (IEQP PAGENUMBER 1)
		  (IEQP PAGENUMBER MAXPAGENUMBER))
          (GO INNERLOOP)
      EXIT(MOVETO VKBDWXPOS VKBDWYPOS VKBDW)
          (RETURN RETURNVALUE])

(CONVERTTOHCSINPAGES
  [LAMBDA (HCLIST FIRST)                              (* J.Ikeo " 5-SEP-84 11:45")
    (PROG (LOWFREQ (HCSINPAGELOCAL)
		   (HCLST HCLIST))
          (SETQ HCLST HCLIST)
          (COND
	    ((NULL HCLST)
	      (RETURN NIL)))
          (SETQ LOWFREQ (TIMES (fetch (HC TOTALFREQ) of (CAR HCLST))
			       .75))
      LOOP(SETQ HCSINPAGELOCAL (CONS (PROG1 (CAR HCLST)
					    (SETQ HCLST
					      (for HC in (CDR HCLST)
						 unless (EQUAL (fetch (HC CODELIST)
								  of (CAR HCLST))
							       (fetch (HC CODELIST)
								  of HC))
						 collect HC)))
				     HCSINPAGELOCAL))
          (COND
	    ((AND (NULL HCLST)
		  (NULL (CDR HCSINPAGELOCAL)))
	      (RETURN (LIST HCSINPAGELOCAL)))
	    ((NULL HCLST)
	      (COND
		(FIRST (SHOWHC (REVERSE HCSINPAGELOCAL)
			       T T)))
	      (RETURN (CONS (REVERSE HCSINPAGELOCAL)
			    NIL)))
	    [(GEQ (LENGTH HCSINPAGELOCAL)
		  8)
	      (COND
		(FIRST (SHOWHC (REVERSE HCSINPAGELOCAL)
			       T)))
	      (RETURN (CONS (REVERSE HCSINPAGELOCAL)
			    (CONVERTTOHCSINPAGES HCLST]
	    ((GEQ (fetch (HC TOTALFREQ) of (CAR HCLST))
		  LOWFREQ)
	      (GO LOOP))
	    (T (COND
		 (FIRST (SHOWHC (REVERSE HCSINPAGELOCAL)
				T)))
	       (RETURN (CONS (REVERSE HCSINPAGELOCAL)
			     (CONVERTTOHCSINPAGES HCLST])

(UNIQUIFY
  [LAMBDA (HCLIST)                                    (* J.Ikeo "23-AUG-84 10:06")
    (COND
      ((NULL HCLIST)
	NIL)
      [(HCMEMBER (CAR HCLIST)
		 (CDR HCLIST))
	(CONS (CAR HCLIST)
	      (UNIQUIFY (for HC in (CDR HCLIST) unless (EQUAL (fetch (HC CODELIST)
								 of (CAR HCLIST))
							      (fetch (HC CODELIST)
								 of HC))
			   collect HC]
      (T (CONS (CAR HCLIST)
	       (UNIQUIFY (CDR HCLIST])

(HCMEMBER
  [LAMBDA (HC HCLIST)                                 (* J.Ikeo "23-AUG-84 10:00")
    (for EACHHC in HCLIST when (AND (EQUAL (fetch (HC CODELIST) of HC)
					   (fetch (HC CODELIST) of EACHHC)))
       do (RETURN T])

(SORTHCLIST
  [LAMBDA (HCLIST)                                    (* J.Ikeo "22-JUN-84 13:31")
    (SORT HCLIST (FUNCTION (LAMBDA (HC1 HC2)
	      (IGREATERP (fetch (HC TOTALFREQ) of HC1)
			 (fetch (HC TOTALFREQ) of HC2])

(SHOWHC
  [LAMBDA (HCSINPAGEARG DEFAULTKEYFLAG BLACKARROWFLG)
                                                      (* J.Ikeo "25-JUL-84 10:18")
    (PROGN (SHOWVKBD HCVKBD)
	   (AND DEFAULTKEYFLAG (BUILTDEFAULTKEY))
	   (BITBLT (COND
		     (BLACKARROWFLG BLACKARROWMASK)
		     (T WHITEARROWMASK))
		   0 0 VKBDW 5 76 21 24 (QUOTE INPUT)
		   (QUOTE ERASE))
	   (BITBLT (COND
		     (BLACKARROWFLG BLACKARROW)
		     (T WHITEARROW))
		   0 0 VKBDW 5 76 21 24 (QUOTE INPUT)
		   (QUOTE PAINT))
	   (MAP2C HCSINPAGEARG (QUOTE (2 3 4 5 0 1 6 7))
		  (FUNCTION SHOWHC1])

(SHOWHC1
  [LAMBDA (HC KEY)                                    (* J.Ikeo " 9-AUG-84 16:47")
    (PROG [(CODESNUMBER (LENGTH (fetch (HC CODELIST) of HC]
          (DECLARE (GLOBALVARS KANJIBITWIDTH VKBDW KANJIDISPLAYLIMIT))
          (MOVETO (IPLUS (IDIFFERENCE (CENTERX KEY)
				      (IQUOTIENT (ITIMES (MIN CODESNUMBER 
							      KANJIDISPLAYLIMIT)
							 KANJIBITWIDTH)
						 2))
			 (IQUOTIENT KANJIBITWIDTH 2))
		  (CENTERY KEY)
		  VKBDW)
          (for KANJICODE in (fetch (HC CODELIST) of HC) as I from 1 to KANJIDISPLAYLIMIT
	     do (SHOWKANJIONVKBDW KANJICODE))
          (COND
	    ((GREATERP CODESNUMBER KANJIDISPLAYLIMIT)
	      (DSPFONT (DSPFONT NIL (TTYDISPLAYSTREAM))
		       VKBDW)
	      (PRIN3 (QUOTE --)
		     VKBDW])

(BUILTDEFAULTKEY
  [LAMBDA NIL                                         (* J.Ikeo "28-JUN-84 11:33")
    (DECLARE (GLOBALVARS VKBDW))
    (BITBLT DEFAULTKEYBM 0 0 VKBDW 94 41 160 32])

(CENTERX
  [LAMBDA (KEYNO)                                     (* J.Ikeo "28-JUN-84 11:41")
    (SELECTQ KEYNO
	     (0 182)
	     (1 342)
	     (2 166)
	     (3 326)
	     (4 158)
	     (5 318)
	     (6 174)
	     (7 334)
	     (SHOULDNT "Error in CENTERX"])

(CENTERY
  [LAMBDA (KEYNO)                                     (* J.Ikeo "28-JUN-84 11:46")
    (IPLUS 21 (ITIMES 32 (IQUOTIENT KEYNO 2)))
    (SELECTQ KEYNO
	     ((0 1)
	       21)
	     ((2 3)
	       53)
	     ((4 5)
	       85)
	     ((6 7)
	       117)
	     (SHOULDNT "Error in CENTERY"])

(SHOWKANJIONVKBDW
  [LAMBDA (CODE)                                      (* J.Ikeo " 9-AUG-84 16:45")
    (DECLARE (GLOBALVARS JDISPLAYFONTS VKBDW))
    (DSPFONT (OR (FONTP (ELT JDISPLAYFONTS (LOGAND (LRSH CODE 8)
						   127)))
		 (DSPFONT NIL (TTYDISPLAYSTREAM)))
	     VKBDW)
    (PRIN3 (CHARACTER (LOGAND CODE 127))
	   VKBDW])

(KEYFORCHAR
  [LAMBDA NIL                                         (* J.Ikeo "16-JUL-84 11:16")
    (PROG (VKBDWPROP)
          (DECLARE (GLOBALVARS VKBDW KEYFORCHARPROCESS))
          [SETQ KEYFORCHARPROCESS (ADD.PROCESS (QUOTE (KEYFORCHARPROCESS2]
          (SETQ VKBDWPROP (WINDOWPROP VKBDW (QUOTE BUTTONEVENTFN)
				      (FUNCTION KEYFORCHARPROCESS1)))
          (PROCESS.RESULT KEYFORCHARPROCESS T)
          (WINDOWPROP VKBDW (QUOTE BUTTONEVENTFN)
		      VKBDWPROP])

(FLASHVKBDW
  [LAMBDA NIL                                         (* J.Ikeo "28-JUN-84 11:47")
    (DECLARE (GLOBALVARS VKBDW))
    (FLASHAREA NIL NIL NIL NIL VKBDW])

(FLASHAREA
  [LAMBDA (LEFT BOTTOM WIDTH HEIGHT WINDOW)           (* J.Ikeo "28-JUN-84 11:48")
    (DECLARE (GLOBALVARS BLACKSHADE BELLRATE))
    (FRPTQ 4 (BITBLT NIL NIL NIL WINDOW LEFT BOTTOM WIDTH HEIGHT (QUOTE TEXTURE)
		     (QUOTE INVERT)
		     BLACKSHADE)
	   (DISMISS BELLRATE])
)
(DEFINEQ

(KEYFORCHARPROCESS1
  [LAMBDA NIL                                         (* J.Ikeo "16-JUL-84 10:37")
    (PROG NIL
          (DECLARE (GLOBALVARS PRESSEDKEY VKBDW VKBDKEYREGIONS KEYFORCHARPROCESS))
          (ALLOW.BUTTON.EVENTS)
          (COND
	    ((MOUSESTATE (ONLY LEFT))
	      [SETQ PRESSEDKEY (for EACH in VKBDKEYREGIONS when (INSIDEP (CAR EACH)
									 (LASTMOUSEX
									   VKBDW)
									 (LASTMOUSEY
									   VKBDW))
				  do (RETURN (CDR EACH]
	      (DEL.PROCESS KEYFORCHARPROCESS])

(KEYFORCHARPROCESS2
  [LAMBDA NIL                                         (* J.Ikeo "16-JUL-84 10:55")
    (DECLARE (GLOBALVARS PRESSEDKEY))
    (TTY.PROCESS (THIS.PROCESS))
    (SETQ PRESSEDKEY (SELECTQ (\GETKEY)
			      (27 (QUOTE DEFAULT))
			      (9 (QUOTE NEXTPAGE))
			      (1 (QUOTE UNDO))
			      ((65 83 68 70 71 97 115 100 102 103)
				1)
			      ((72 74 75 76 58 104 106 107 108 59)
				2)
			      ((81 87 69 82 84 113 119 101 114 116)
				3)
			      ((89 85 73 79 80 123 121 117 105 111 112)
				4)
			      ((90 88 67 86 66 122 120 99 118 98)
				5)
			      ((78 77 60 62 63 110 109 44 46 47)
				6)
			      ((50 51 52 53 54)
				7)
			      ((55 56 57 48 45)
				8)
			      (33 (QUOTE (1)))
			      (64 (QUOTE (2)))
			      (35 (QUOTE (3)))
			      (36 (QUOTE (4)))
			      (37 (QUOTE (5)))
			      (126 (QUOTE (6)))
			      (38 (QUOTE (7)))
			      (42 (QUOTE (8)))
			      (40 (QUOTE (9)))
			      NIL])

(PROCESSSHOWHC
  [LAMBDA NIL                                         (* edited: " 7-AUG-84 18:08")
    (PROG ((SHOWHCSTATE (QUOTE OLDSTATE))
	   (CHANGESTATE))
          (DECLARE (GLOBALVARS HCSINPAGE HCSINPAGELIST MAXPAGENUMBER PAGENUMBER VKBDW))
      LOOP(BLOCK)
          (COND
	    ((AND (KEYDOWNP (QUOTE LSHIFT))
		  (EQ SHOWHCSTATE (QUOTE OLDSTATE)))
	      (SETQ CHANGESTATE (QUOTE NEW)))
	    ((AND (NULL (KEYDOWNP (QUOTE LSHIFT)))
		  (EQ SHOWHCSTATE (QUOTE NEWSTATE)))
	      (SETQ CHANGESTATE (QUOTE OLD)))
	    (T (SETQ CHANGESTATE)))
          (COND
	    ((NULL CHANGESTATE)
	      (GO LOOP))
	    ((EQ CHANGESTATE (QUOTE OLD))
	      [SETQ PAGENUMBER (COND
		  ((IEQP PAGENUMBER 1)
		    MAXPAGENUMBER)
		  (T (SUB1 PAGENUMBER]
	      (SETQ HCSINPAGE (CAR (NTH HCSINPAGELIST PAGENUMBER)))
	      (SHOWHC HCSINPAGE (IEQP PAGENUMBER 1)
		      (IEQP PAGENUMBER MAXPAGENUMBER))
	      (SETQ SHOWHCSTATE (QUOTE OLDSTATE))
	      (GO LOOP))
	    (T [SETQ PAGENUMBER (COND
		   ((GEQ PAGENUMBER MAXPAGENUMBER)
		     1)
		   (T (ADD1 PAGENUMBER]
	       (SETQ HCSINPAGE (CAR (NTH HCSINPAGELIST PAGENUMBER)))
	       (SHOWHC HCSINPAGE (IEQP PAGENUMBER 1)
		       (IEQP PAGENUMBER MAXPAGENUMBER))
	       (SETQ SHOWHCSTATE (QUOTE NEWSTATE))
	       (GO LOOP])
)
(FILESLOAD BITMAPFNS)
(FILESLOAD CONVERTER DICT0)
(PUTPROPS JSYSTEM COPYRIGHT ("J.Ikeo : Fuji Xerox Co., Ltd. - All rights reverved." 1984))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (6041 7759 (JSET 6051 . 6451) (JIN 6453 . 6964) (JLISPINIT 6966 . 7757)) (
7760 11242 (DLIONKEYMAP 7770 . 8161) (REPLACESOMEFUNCTIONS 8163 . 8378) (SETUPJFONTS 8380
 . 8732) (CREATEVKBDW 8734 . 8979) (SETUPVKBDBITMAP 8981 . 9646) (OPENLOOKUPDICT 9648 . 
10020) (SETUPINDEXARRAY 10022 . 10468) (CREATELOOKUPDICTLOCK 10470 . 10669) (
SETHOMOSETLISTARRAY 10671 . 11040) (JLISPINSTALLEDP 11042 . 11240)) (11243 12964 (
EXCUSEFORNOVKBD 11253 . 11445) (HWTYPEISNOTDOLPHIN 11447 . 11599) (CREATESUFFIXENTRY 11601
 . 11824) (JLISPISINSTALLED 11826 . 11976) (MAKEVKBDW 11978 . 12131) (CREATEINDEXARRAY 
12133 . 12962)) (12999 31976 (MIRAIMONITOR 13009 . 21249) (MIRAIMONITORINIT 21251 . 21891)
 (MIRAIMONITORGETKEY 21893 . 22176) (CANCELP 22178 . 22305) (CANCELACTION 22307 . 22804) (
DELETECHARS 22806 . 23219) (DELETEWORD 23221 . 23515) (TAILKANJICONVERSIONP 23517 . 23658)
 (KANAMODEP 23660 . 23811) (TAILKANJICONVERSION 23813 . 24252) (KANJICONVERSION 24254 . 
24653) (ALPHANUMERICACTION 24655 . 24987) (LFKANAACTION 24989 . 25507) (
CARRIAGERETURNACTION 25509 . 25906) (LINEDELETEACTION 25908 . 26182) (RETYPEACTION 26184
 . 26704) (CTRLVACTION 26706 . 26875) (ESCACTION 26877 . 27049) (SPACEACTION 27051 . 27330
) (DOUBLEQUOTEACTION 27332 . 27574) (LEFTPARACTION 27576 . 27821) (RIGHTPARACTION 27823 . 
28252) (DEPOSITTOUTEN 28254 . 28438) (DEPOSITKUTEN 28440 . 28623) (LEFTBRKACTION 28625 . 
28870) (RIGHTBRKACTION 28872 . 29242) (DEPOSITBARACTION 29244 . 29431) (ENGMODEACTION 
29433 . 29643) (TOHIRAKANACONVERSIONP 29645 . 29788) (TOHIRAKANACONVERSION 29790 . 30365) 
(HIRAKANAMODEACTION 30367 . 30599) (TOKATAKANACONVERSIONP 30601 . 30744) (
TOKATAKANACONVERSION 30746 . 31321) (KATAKANAMODEACTION 31323 . 31555) (MIRAIBOUT 31557 . 
31758) (RETRIEVECODESFROMCHARS 31760 . 31974)) (31977 51658 (SHOWVKBD 31987 . 32164) (
SHOWVKBDW 32166 . 32669) (STARTLOOKUPPROCESS 32671 . 33208) (CREATEHERALDKANACHARS 33210
 . 33517) (PUTNONJCHARONVKBD 33519 . 33717) (RESETPREVIOUSLASTKANAXPOS 33719 . 34047) (
RESETRECENTKANACODES 34049 . 34240) (SETJMODE 34242 . 34527) (SETLASTKANAXPOS 34529 . 
34703) (PUTJCHARONVKBD 34705 . 35025) (PATTERNFOR 35027 . 35426) (POPHERALDKANALIST 35428
 . 35633) (NOOPERATION 35635 . 35748) (KANACODEP 35750 . 35883) (KANAISONVKBDP 35885 . 
36090) (KILLUNUSEFULPROCESS 36092 . 36473) (CARETISINNEXTLINEP 36475 . 36683) (
CARETSETPREVIOUSLEFT 36685 . 36980) (CLEARALLFOLLOWINGLASTKANA 36982 . 37239) (
CLEARALLINLINE 37241 . 37487) (ALPHABETP 37489 . 37734) (ATOMINPUTP 37736 . 37967) (
BALANCEDBRKP 37969 . 38137) (CLEARHERALD 38139 . 38321) (CLEARHERALDROMA 38323 . 38658) (
CODEADDTOCHARS 38660 . 38964) (CREATECHR 38966 . 39334) (DELETEHERALDKANA 39336 . 39789) (
DISPLAYHERALD 39791 . 40003) (DISPLAYHERALD1 40005 . 40716) (ENGALPHANUMERICACTION 40718
 . 40916) (ENGMODEP 40918 . 41070) (HELPARGP 41072 . 41377) (HIRAKANAMODEP 41379 . 41583) 
(INPUTFIGURE 41585 . 41825) (JCHARACTERP 41827 . 41955) (KANAALPHANUMERICACTION 41957 . 
42230) (KANAFOR 42232 . 42369) (KATAKANAMODEP 42371 . 42575) (LBRKCOUNTDECREMENT 42577 . 
42799) (LBRKCOUNTINCREMENT 42801 . 43023) (LOWEREIGHTBIT 43025 . 43153) (
LPARCOUNTDECREMENT 43155 . 43407) (LPARCOUNTINCREMENT 43409 . 43661) (MAKEUPKANA 43663 . 
43826) (MAKEUPKANAP 43828 . 43992) (NOTINSTRINGP 43994 . 44161) (NPROCESS 44163 . 44575) (
NPROCESSP 44577 . 44821) (NUMERICORSPECIALCHARACTION 44823 . 45074) (RESETROMATREE 45076
 . 45262) (RETRYKANJISELECTION 45264 . 45846) (ROMAINPUTACTION 45848 . 46848) (SETEOLFLAG 
46850 . 47013) (STRINGINOUT 47015 . 47196) (TRAVERSEROMATREE 47198 . 47429) (TREELOOK 
47431 . 47577) (TYPINGROMAP 47579 . 47803) (UPPEREIGHTBIT 47805 . 47929) (
FETCHCHRCODEFIELD 47931 . 48083) (FETCHCHRJMODEFLAGFIELD 48085 . 48247) (
FETCHHERALDKANACODES 48249 . 48536) (RESETVKBD 48538 . 48739) (RESETHERALDKANALIST 48741
 . 49188) (RESETLASTKANAXPOS 49190 . 49399) (DISPLAYEDONNEXTLINEP 49401 . 49651) (
CORRECTDISPLAYEDCHRXPOS 49653 . 49900) (DELIMITERACTION 49902 . 50093) (NORMALCHARCODEP 
50095 . 50256) (NOSUCHROMAJI 50258 . 50423) (BACKUPROMATREE 50425 . 50616) (RESETCHARS 
50618 . 50779) (SETHELPINGARGFLAG 50781 . 50937) (PATTERNMODEP 50939 . 51081) (
FINDLASTJMODE 51083 . 51396) (TRAVERSEINDEXTREE 51398 . 51656)) (51659 53310 (
JDSPPRINTCHAR 51669 . 52375) (DISPLAYCHARACTER 52377 . 52656) (JADDCHAR 52658 . 52917) (
BUFBOUT 52919 . 53098) (SETJFONT 53100 . 53308)) (53311 54449 (DELETECHRFROMCHARS 53321 . 
54447)) (54450 54870 (CONVERTTOJISCODE 54460 . 54868)) (54919 74977 (GETCOMPLETELYMATCH 
54929 . 55844) (GETINDEXTREE 55846 . 56130) (GETNEXTINDEXTREE 56132 . 56304) (GETPREHCLIST
 56306 . 56798) (GETPHONICCODES 56800 . 57010) (HCDIFFERENCE 57012 . 57392) (
PRECONVERTTOHCSINPAGES 57394 . 58740) (PREKANJIENTRYSELECTION 58742 . 59042) (
PREKANJISELECTION 59044 . 60430) (CALCULATESOFTPOSITION 60432 . 60832) (CONVERTTOKANACODE 
60834 . 61323) (CONVERTTOPHONICCODE 61325 . 61760) (NUMBEROFPHONICCODES 61762 . 62233) (
CREATEDUMMYFASTENDENTRIES 62235 . 62743) (CREATEKANJIENTRY 62745 . 62936) (
GETLOOKUPPHONICCODES 62938 . 63655) (GETSUFFIXHOMOSETLIST 63657 . 63867) (
GETSUFFIXHOMOSETLIST1 63869 . 64306) (MAKEFASTENDENTRIESLIST 64308 . 66011) (
MAKEFASTENDSUFFIXENTRIESLIST 66013 . 66714) (MAKEFASTENDSUFFIXENTRIESLIST1 66716 . 67689) 
(MAKEHOMOSETSUBLIST 67691 . 68763) (MAKEPHONICREMAINDER 68765 . 69058) (
MATCHTHEPHONICCODES 69060 . 69418) (READENTRY 69420 . 69883) (READPOSSET 69885 . 70271) (
SOFTENDINGP 70273 . 70571) (KANAKANJICONVERSION 70573 . 71864) (CONVERTTOHCLIST 71866 . 
72062) (DICTADDROFFSET 72064 . 72202) (ELIMINATEHEADZEROS 72204 . 72425) (
ELIMINATETAILZEROS 72427 . 72589) (GETINDEXFILEWORD 72591 . 72844) (GETLOOKUPDICTWORD 
72846 . 73243) (GetConnection 73245 . 73386) (MAKEBYTECONTENTSLIST 73388 . 73716) (
KANATAIL 73718 . 73868) (KANATAIL1 73870 . 74124) (ALLKANACODEP 74126 . 74411) (
COLLECTKANJIENTRIES 74413 . 74975)) (74978 78447 (CALCULATETOTALFREQ 74988 . 75151) (
CALCULATETOTALFREQ1 75153 . 75858) (MAKECODELIST 75860 . 76182) (MAKEHCLIST 76184 . 77501)
 (GETLONGESTENDINGPOSITION 77503 . 77711) (SELECTENTRIESWITHENDINGPOSITION 77713 . 78445))
 (78448 86922 (CONVERTTOKANJICODE 78458 . 81060) (CONVERTTOHCSINPAGES 81062 . 82435) (
UNIQUIFY 82437 . 82916) (HCMEMBER 82918 . 83185) (SORTHCLIST 83187 . 83433) (SHOWHC 83435
 . 84019) (SHOWHC1 84021 . 84830) (BUILTDEFAULTKEY 84832 . 85026) (CENTERX 85028 . 85295) 
(CENTERY 85297 . 85600) (SHOWKANJIONVKBDW 85602 . 85945) (KEYFORCHAR 85947 . 86436) (
FLASHVKBDW 86438 . 86620) (FLASHAREA 86622 . 86920)) (86923 89710 (KEYFORCHARPROCESS1 
86933 . 87467) (KEYFORCHARPROCESS2 87469 . 88419) (PROCESSSHOWHC 88421 . 89708)))))
STOP