;****************************************************************
;* *
;* FREEDOM 100 AlphaVUE TERMINAL TABLE *
;* *
;* by *
;* *
;* ULTRASCIENCE DIVISION OF GIBBS LABORATORIES *
;* *
;* Copyright Ultrascience 1984 (C) *
;* *
;* 1824 WILMETTE AVE, WILMETTE, IL 60091 *
;* *
;* 312/256-0080 *
;* *
;* REV. 5.1 LAST UPDATE 01/28/85 *
;* *
;****************************************************************
;
; IMPORTANT MESSAGE:
;
; THIS PROGRAM OR ANY PART OF THIS PROGRAM MAY NOT BE COPIED FOR
; PROFIT BY ANYONE OTHER THAN ULTRASCIENCE. ANYONE WISHING TO
; USE THE PROGRAM MAY DO SO AT NO CHARGE, PROVIDED THEY NOTIFY
; ULTRASCIENCE THAT THEY ARE USING THE PROGRAM AND AGREE TO SEND
; INFORMATION ABOUT BUGS OR IMPROVEMENTS TO ULTRASCIENCE. THIS
; BUG AND IMPROVEMENT INFORMATION WILL BE AVAILABLE TO ALL USERS
; OF THE PROGRAM.
;
; The character directory table has an entry for every character in the
; ASCII table (from 1 to 127). There are also extra entries after the
; 127 th and these are used for function key handling. The unshifted
; function keys start at 128 and extend to 137 while the shifted function.
; keys start at 160 and go up to 169. The above is true only for the unlabeled
; function keys (F1-F10). The labeled functions are scattered over the rest
; of the table and do not follow any pattern. As can be seen, characters which
; do not require translation have an 'N' as their table entry. By finding
; label N: in the program it can be seen that it contains a null word which
; means that the character does not get translated. If it is desired to
; re-define a character simply replace the original pointer with a new
; label and put the replacement string at the label. It is possible to
; set up the table so that pressing one character may cause VUE to output
; a pre-defined string of characters. The only thing to remember is to
; place a null at the end of the string.
; If character "A" is to be re-defined in order to output a string
; such as "OP" the following steps are to be executed:
; Find entry location in the table for "A" (ASCII 65). It is the 65 th
; entry in the table. Change the null pointer 'N' with a new label (anything
; up to 6 chrs.) let's call it ADEF. The replacement string may be located
; anywhere AFTER the entry table. When a spot has been selected the following
; line should be typed in:
;
; ADEF: BYTE 'O,'P,0,0
;
; Note however that the word ADEF: should begin in the first column and the
; semicolon (;) must NOT be used.
; Once this is done just execute M68.LIT on it and it should be ready to
; go (if it is in DSK0:[7,0] and it has the terminal driver's name). To
; test it just go into VUE (no need to re-boot the system) and press
; "A". Instead of an "A" you should get an "OP". The other keys can be
; re-defined the same way.
; NOTE: If the number of bytes in the re-defined string is even it must be
; followed by two nulls but if it is odd only one null should be used. Since
; the string "OP" contains an even number of bytes it was followed by two
; nulls.
; If you want to re-define a character to output a control code you can put
; the ASCII value for it instead of a character but do not use the leading
; apostrophe. If you wanted to re-define "A" to a ^B (control B) you could
; change "'O,'P,0,0" to "2,0" or "'B-100,0". As you can see, subtracting
; 100 (octal) from a character makes it a control character.
;
; The reason that the function keys are not located in the table where they
; should be is because the terminal driver converts them. For example, pressing
; f1 normally causes the terminal to send an "@". That's what happens out of
; VUE but if the terminal driver sees that the user is running VUE it converts
; the function keys. Pressing any function key (labeled or unlabeled) causes the
; driver to add 128 to the value so pressing f1 normally sends a "@" (ASCII 64)
; but the driver steps it up to ASCII 192. At this point if the function was
; an unlabeled function (f1-f10,F1-F10) it gets stepped down by 64 so that
; f1 gets converted to ASCII 128, f2 = ASCII 129, etc. Labeled function keys
; do not get stepped down.
; This conversion is made so that function keys will not be confused with
; regular character (f1 is not the same as "@"). This way the replacement
; table can convert f1 to something and "@" to something else without any
; connection between the two.
SEARCH SYS
OBJNAM FRE100.VUX
LWORD 0
; *** BEGINNING OF ENTRY TABLE ***
; No conversions on regular characters
WORD N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N ; 0-16
WORD N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N ; 17-32 (SPACE)
WORD N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N ; 33-48
WORD N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N ; 49-64 ("@")
WORD N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N ; "A"-"P"
WORD N,N,N,N,N,N,N,N,N,N ; "Q"-"Z"
WORD N,N,N,N,N,N ; 91-96 [,\,],^,-,`
WORD N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N ; "a"-"p"
WORD N,N,N,N,N,N,N,N,N,N ; "q"-"z"
WORD N,N,N,N,N ; 123-127
; Unshifted function keys (f1-f10)
WORD ESC,CB,CB,CB,CX,CO,CE,CT,CN,CW
WORD N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N
; Shifted function keys (F1-F10)
WORD ESC,CB,CB,CB,CP,C$,CS,CR,CU,CA
WORD N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N
; Labeled function keys
WORD N,N,N,N,N,N,N,N,N,N,N,EE,N,N,N,N,N
WORD N,N,N,N,N,N,EQ,ER,N,ET,N,N,EW,N,EY,N
WORD N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N
WORD N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N
WORD N,N,N,N,N
; *** END OF ENTRY TABLE ***
; DATA REPLACEMENTS
; NULLS USED FOR NON-TRANSLATIONS
N: WORD 0
; DUMMY CONTROL BYTE USED FOR TRAPPING UNUSED FUNCTION KEYS
CB: BYTE ']-100,0 ; unused functions send ^]
; FUNCTION KEY TRANSLATION
ESC: BYTE 33,0 ; f1 & F1 = ESC. escape
CP: BYTE 'P-100,0 ; F5 = ^P mark
CX: BYTE 'X-100,0 ; f5 = ^X match
C$: BYTE '\-100,0 ; F6 = ^\ toggle line mode
CO: BYTE 'O-100,0 ; f6 = ^O concatenate
CS: BYTE 'S-100,0 ; F7 = ^S center file
CE: BYTE 'E-100,0 ; f7 = ^E end of file
CR: BYTE 'R-100,0 ; F8 = ^R previous page
CT: BYTE 'T-100,0 ; f8 = ^T next page
CU: BYTE 'U-100,0 ; F9 = ^U beginning of line
CN: BYTE 'N-100,0 ; f9 = ^N end of line
CA: BYTE 'A-100,0 ; F10 = ^A next word
CW: BYTE 'W-100,0 ; f10 = ^W next word