Ansi Terminfo Entry for AT386/Ansi monitor (actually a generator)
Rick Wargo
rickers at drexel.UUCP
Thu Jul 28 05:36:00 AEST 1988
The following is a terminfo generator for ansi/AT386 monitors under
Microport Sys V/386 (Sys V/AT). It allows you to select fore/back
ground colors, cursors, and standout mode. It also is a fairly
complete ansi entry, circumventing the bugs in the ansi driver. It
works fine with vi, emacs, uemacs, jove, wanderer, less, more, and the
like. I have found that a lot of ansi entrie out there don't do too
well with gnu emacs and wanderer. This one does. And beware, the
entry posted a few days ago by keith at uport contains a few problems.
Enjoy it!
Rickers
..!drexel!rickers
---- Cut Here and unpack ----
#!/bin/sh
# shar: Shell Archiver (v1.22)
# Packed Wed Jul 27 15:21:21 EDT 1988 by rickers
# from directory /usr/rickers/uport/terminfo
#
# Run the following text with /bin/sh to create:
# README
# catie
# rt
#
if test -f README; then echo "File README exists"; else
echo "x - extracting README (Text)"
sed 's/^X//' << 'SHAR_EOF' > README &&
X
X catie -- Configure Ansi TermInfo Entries
X
X Author: Rick Wargo
X Date: july 27, 1988
X
X Copyright 1988 P & T Consultants, Inc.
X Permission has been granted to use this software, as long as
X no profits are made from it. The copyright notice and
X author identification must retain intact.
X
XOkay.... here it is, finally. A shell script capable of configuring
Xa terminfo entry based on what *you* want. I have seen bunches of terminfo
Xentries for the ansi monitor for Microport Unix SysV, but none of them
Xheld up to all of the big tests (gnu emacs, month, wanderer, less, ...).
XCatie generates a terminfo entry that stands up against all of these, and
Xalso allows you to configure some modes to suit your own taste.
X
XTo run, just type `catie' and read the directions it gives you. Catie tells
Xyou how to install the terminfo entry for the ansi monitor.
X
XI have written this on Microport V/386 and have not tested it under Sys V/AT,
Xalthough it should work.
X
XI plan to keep making the entry that is generated better and better, so if
Xthere are any comments or suggestions, let me know. If there are any
Xproblems, please let me know about them.
X
XI have include a small script I use to reset the terminal when things
Xdon't seem to be working just right. The script is called `rt' and should
Xbe placed in your path. When something is wrong, try typing: ^Jrt^J
X(^J is a control-J) and that should get things back to normal.
X
X Enjoy,
X Rickers
X ..!drexel!rickers
X
SHAR_EOF
chmod 0664 README || echo "restore of README fails"
fi
if test -f catie; then echo "File catie exists"; else
echo "x - extracting catie (Text)"
sed 's/^X//' << 'SHAR_EOF' > catie &&
X: catie -- configure ansi terminfo entry for ansi monitor
X#
X# File: catie
X# Author: Rick Wargo
X# Date: July 27, 1988
X#
X# Firm: P & T Consultants, Inc.
X# 80. W. Georgianna Dr.
X# Richboro, PA 18954
X# (215) 895-1913
X#
X# Copyright 1988 P & T Consultants, Inc.
X# Permission has been granted to use this software, as long as
X# no profits are made from it. The copyright notice and author
X# identification must retain intact.
X#
X#
X# Set up some variables so that we can use them in extracting the entry.
X#
Xnormal=0
Xbold=1
Xunderline=4
Xblink=5
Xreverse=7
Xinvisible=8
Xlowerchars=10
Xgraphcontrol=11
Xupperchars=12
Xcursor_underline=23
Xcursor_blinking_block=24
Xcursor_invisible=25
Xcursor_steady_block=26
Xcursor_reset=27
Xblack=30
Xred=31
Xgreen=32
Xbrown=33
Xblue=34
Xmagenta=35
Xcyan=36
Xwhite=37
Xmagenta_RED=38
Xmagenta_blue=39
Xblack_background=40
Xred_background=41
Xgreen_background=42
Xbrown_background=43
Xblue_background=44
Xmagenta_background=45
Xcyan_background=46
Xwhite_background=47
Xred_backBlink=48
Xblue_background=49
X#
X# Variables to direct which way to go
X#
Xcolor_mono=color
Xfore_color=${bold}${brown}
Xback_color=${black_background}
Xgraphics=yes
Xnormal_cursor=${cursor_underline}
Xvery_visible_cursor=${cursor_steady_block}
Xstandout=${blue_background}
Xif [ i386 ]; then
X ansi=AT386
X lines=25
Xelse
X ansi=ansi
X lines=24
Xfi
X#
X# escape sequences
X#
Xsmso=`tput smso`
Xif [ -z "$smso" ]; then
X smso="\033[1;7;33;44m"
Xfi
Xrmso=`tput rmso`
Xif [ -z "$rmso" ]; then
X rmso="\033[0;40m"
Xfi
Xcuu1=`tput cuu1`
Xif [ -z "$cuu1" ]; then
X cuu1="\033[A"
Xfi
Xel=`tput el`
Xif [ -z "$el" ]; then
X el="\033[K"
Xfi
Xed=`tput ed`
Xif [ -z "$ed" ]; then
X ed="\033[J"
Xfi
Xclear=`tput clear`
Xif [ -z "$clear" ]; then
X clear="\033[H\033[J"
Xfi
X#
X# Some utility routines
X#
XContinue(){
X echo "$smso[Press <RETURN> to continue]$rmso\c"
X read line
X echo "$cuu1$ed\c"
X}
X#
X# Let's do it.
X#
X# setcolor -f white -b black
Xecho "$clear\c"
Xcat <<!Funky!Stuff!
X
X Welcome to the Configure Ansi TermInfo program. This is a utility
X program designed to set up a really nice terminfo entry for the
X ansi monitor. It will extract a terminfo entry for a color or
X monochrome monitor, depending on what you want. It has the capability
X to set some different cursors, as well as having colored foreground and
X background.
X
X Catie was written by Rick Wargo of P & T Consultants, Inc. Permission
X is granted to use this program in any way you like as long as you do not
X profit from it. By-products of the product, that is the the generated
X terminfo files, are in the public domain.
X
X Enjoy!
X Rickers
X ..!drexel!rickers
X
X ------------------------------------------------------------------------
X
X!Funky!Stuff!
XContinue
Xecho "$clear\c"
Xecho "Would you like to use the ${smso}color${rmso} or ${smso}mono${rmso} entry [color] \c"
Xread line
Xif [ -z "$line" -o \( `expr "$line" : 'c.*'` -gt 0 \) ]; then
X color_mono=color
Xelse
X color_mono=mono
Xfi
Xif [ $color_mono = "mono" ]; then
X echo ""
X echo Select the type of standout mode you would like:
X echo " 1) \033[${reverse}mstandout mode type 1 -- reverse\033[m"
X echo " 2) \033[${bold};${reverse}mstandout mode type 2 -- bold/reverse\033[m"
X echo " 3) \033[${blink};${reverse}mstandout mode type 3 -- blink/reverse\033[m"
X echo ""
X echo " Select type of standout [1] \c"
X read line
X case "$line" in
X 1) standout=${reverse} ;;
X 2) standout="${bold};${reverse}" ;;
X 3) standout="${blink};${reverse}" ;;
X *) standout=${reverse} ; line=1 ;;
X esac
X echo ""
X echo "You have selected \033[${standout}mmode type ${line}\033[0m."
X sleep 2
Xelse
X echo ""
X echo "Select the foreground color (of the text)."
X echo "\033[0;37m"
X echo " 1) \033[${white}mblack\033[0;37m 11) \033[1;${black}mbright black\033[0;37m"
X echo " 2) \033[${red}mred\033[0;37m 12) \033[1;${red}mbright red\033[0;37m"
X echo " 3) \033[${green}mgreen\033[0;37m 13) \033[1;${green}mbright green\033[0;37m"
X echo " 4) \033[${brown}mbrown\033[0;37m 14) \033[1;${brown}mbright brown\033[0;37m"
X echo " 5) \033[${blue}mblue\033[0;37m 15) \033[1;${blue}mbright blue\033[0;37m"
X echo " 6) \033[${magenta}mmagenta\033[0;37m 16) \033[1;${magenta}mbright magenta\033[0;37m"
X echo " 7) \033[${cyan}mcyan\033[0;37m 17) \033[1;${cyan}mbright cyan\033[0;37m"
X echo " 8) \033[${white}mwhite\033[0;37m 18) \033[1;${white}mbright white\033[0;37m"
X
X echo ""
X echo " Select color of foreground text [14] \c"
X read line
X case "$line" in
X 1) fore_color=${black} ;;
X 2) fore_color=${red} ;;
X 3) fore_color=${green} ;;
X 4) fore_color=${brown} ;;
X 5) fore_color=${blue} ;;
X 6) fore_color=${magenta} ;;
X 7) fore_color=${cyan} ;;
X 8) fore_color=${white} ;;
X 11) fore_color="${bold};${black}" ;;
X 12) fore_color="${bold};${red}" ;;
X 13) fore_color="${bold};${green}" ;;
X 14) fore_color="${bold};${brown}" ;;
X 15) fore_color="${bold};${blue}" ;;
X 16) fore_color="${bold};${magenta}" ;;
X 17) fore_color="${bold};${cyan}" ;;
X 18) fore_color="${bold};${white}" ;;
X *) fore_color="${bold};${brown}" ; line=14 ;;
X esac
X echo ""
X echo "\033[${fore_color}mYou have selected this color for the foreground text."
X sleep 2
X setcolor -b black
X echo "$clear\c"
X echo "Select the background color."
X echo ""
X echo " 1) \033[${black_background}m black \033[0;40m"
X echo " 2) \033[${red_background}m red \033[0;40m"
X echo " 3) \033[${green_background}m green \033[0;40m"
X echo " 4) \033[${brown_background}m brown \033[0;40m"
X echo " 5) \033[${blue_background}m blue \033[0;40m"
X echo " 6) \033[${magenta_background}m magenta \033[0;40m"
X echo " 7) \033[${cyan_background}m cyan \033[0;40m"
X echo " 8) \033[${white_background}m white \033[0;40m"
X echo ""
X echo " Select color of the background [1] \c"
X read line
X case "$line" in
X 1) back_color=${black_background} ;;
X 2) back_color=${red_background} ;;
X 3) back_color=${green_background} ;;
X 4) back_color=${brown_background} ;;
X 5) back_color=${blue_background} ;;
X 6) back_color=${magenta_background} ;;
X 7) back_color=${cyan_background} ;;
X 8) back_color=${white_background} ;;
X *) back_color=${black_background} ; line=1 ;;
X esac
X echo ""
X echo "\033[${back_color}mYou have selected this color for the background."
X sleep 2
X echo "${clear}"
X echo Select the type of standout mode you would like:
X echo ""
X echo " 1) \033[${black_background}mstandout mode type 1 -- black background\033[0;${back_color}m"
X echo " 2) \033[${red_background}mstandout mode type 2 -- red background\033[0;${back_color}m"
X echo " 3) \033[${green_background}mstandout mode type 3 -- green background\033[0;${back_color}m"
X echo " 4) \033[${brown_background}mstandout mode type 4 -- brown background\033[0;${back_color}m"
X echo " 5) \033[${blue_background}mstandout mode type 5 -- blue background\033[0;${back_color}m"
X echo " 6) \033[${magenta_background}mstandout mode type 6 -- magenta background\033[0;${back_color}m"
X echo " 7) \033[${cyan_background}mstandout mode type 7 -- cyan background\033[0;${back_color}m"
X echo " 8) \033[${white_background}mstandout mode type 8 -- white background\033[0;${back_color}m"
X echo " 9) \033[${reverse}mstandout mode type 9 -- reverse\033[0;${back_color}m"
X echo " 10) \033[${bold};${reverse}mstandout mode type 10 -- bold/reverse\033[0;${back_color}m"
X echo ""
X echo " Select type of standout [5] \c"
X read line
X case "$line" in
X 1) standout=${black_background} ;;
X 2) standout=${red_background} ;;
X 3) standout=${green_background} ;;
X 4) standout=${brown_background} ;;
X 5) standout=${blue_background} ;;
X 6) standout=${magenta_background} ;;
X 7) standout=${cyan_background} ;;
X 8) standout=${white_background} ;;
X 9) standout=${reverse} ;;
X 10) standout="${bold};${reverse}" ;;
X *) standout=${blue_background} ; line=5 ;;
X esac
X echo ""
X echo "You have selected \033[${standout}mmode type ${line}\033[0;${back_color}m."
X sleep 2
Xfi
X#
X# Now handle the normal cursor
X#
Xecho "$clear\c"
Xecho ""
Xecho "Select the type of normal cursor you would like:"
Xecho " 1) blinking underline"
Xecho " 2) blinking block"
Xecho " 3) steady block"
Xecho " 4) invisible"
Xecho ""
Xecho " Select type of normal cursor [1] \c"
Xread line
Xcase "$line" in
X 1) normal_cursor=${cursor_underline} ;;
X 2) normal_cursor=${cursor_blinking_block} ;;
X 3) normal_cursor=${cursor_steady_block} ;;
X 4) normal_cursor=${cursor_invisible} ;;
X *) normal_cursor=${cursor_underline} ; line=1 ;;
Xesac
Xecho ""
Xecho "You have selected cursor ${line}.\033[${cursor_reset};${normal_cursor}m"
X#
X# Now handle the editting cursor (cursor_very_visible)
X#
Xecho ""
Xecho Select the type of very visible cursor you would like:
Xecho " 1) blinking underline"
Xecho " 2) blinking block"
Xecho " 3) steady block"
Xecho ""
Xecho " Select type of very visible cursor [3] \c"
Xread line
Xcase "$line" in
X 1) very_visible_cursor=${cursor_underline} ;;
X 2) very_visible_cursor=${cursor_blinking_block} ;;
X 3) very_visible_cursor=${cursor_steady_block} ;;
X *) very_visible_cursor=${cursor_steady_block} ; line=3 ;;
Xesac
Xecho ""
Xecho "You have selected cursor ${line}. This is it -->\c"
Xecho "\033[${cursor_reset};${very_visible_cursor}m\c"
Xsleep 2
Xecho "\033[${cursor_reset};${normal_cursor}m"
X#
X# Okay, now extract the terminfo entry.
X#
Xecho "${clear}\c"
Xcat<<!Funky!Stuff!
X
XNow you must decide the name of this terminfo entry. You may select one or
Xmore names. The standard name is ${ansi}. You may wish to extract different
Xentries for color and mono. I would call these ${ansi}-color and ${ansi}-mono
Xrespectively. You will be prompted for the major name of this entry. You
Xwill also be given a chance to make synonyms for this entry. Synonyms are
Xof the form: name1|name2|name3...
X
X!Funky!Stuff!
Xecho "Enter the major name of this terminfo entry [${ansi}] \c"
Xread line
Xmajor=${line:=${ansi}}
Xecho "Enter synonyms for ${major} (hit return for none)"
Xecho "> \c"
Xread line
Xsynonyms=${line}
X
Xfilename=${major}.ti
Xecho "Extracting terminfo entry into ${filename}..."
Xif [ -f "${filename}" ]; then
X echo "catie: will not overwrite ${filename}, using ${major}.$$ instead."
X filename=${major}.$$
X rm -f ${filename}
Xfi
X
Xif [ -s "$synonyms" ]; then
X header="${major}|${synonyms}"
Xelse
X header=${major}
Xfi
Xheader="${header}|catie generated terminfo entry (${color_mono}),"
X
Xecho ${header} > ${filename}
X
Xif [ "$color_mono" = "color" ]; then
X cat <<!Color! >> ${filename}
X am,
X mir,
X xon,
X cols#80,
X it#8,
X lines#${lines},
X vt#3,
X acsc=0[a~fxgqh~jYk?lZm at nEqDtCu4vAwBx3~y,
X bel=^G,
X blink=\E[$blink}m,
X bold=\E[${bold}m,
X cbt=\E[Z,
X civis=\E[${cursor_invisible};${cursor_reset}m,
X clear=\E[H\E[J,
X cnorm=\E[${normal_cursor};${cursor_reset}m,
X cr=\r,
X csr=\E[%i%p1%d;%p2%dr,
X cub=\E[%p1%dD,
X cub1=\b,
X cud=\E[%p1%dB,
X cud1=\n,
X cuf=\E[%p1%dC,
X cuf1=\E[C,
X cup=\E[%i%p1%d;%p2%dH,
X cuu=\E[%p1%dA,
X cuu1=\E[A,
X cvvis=\E[${very_visible_cursor}m,
X dch=\E[%p1%dP,
X dch1=\E[P,
X dl=\E[%p1%dM,
X dl1=\E[M,
X ech=\E[%p1%dX,
X ed=\E[J,
X el=\E[K,
X el1=\E[1K,
X home=\E[H,
X hpa=\E[%i%p1%dG,
X ht=\t,
X hts=\EH,
X il=\E[%p1%dL,
X il1=\E[L,
X ind=\E[S,
X indn=\E[%p1%dS,
X invis=\E[${invisible}m,
X is1=\E[=h,
X is2=\E7\E[1;25r\E8\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8l\E[0;10;${normal_cursor};${cursor_reset};${fore_color};${back_color}m,
X kbs=\b,
X kcub1=\E[D,
X kcud1=\E[B,
X kcuf1=\E[C,
X kcuu1=\E[A,
X kdch1=\E[P,
X kdl1=\E[M,
X kend=\E[Y,
X kf1=\EOP,
X kf2=\EOQ,
X kf3=\EOR,
X kf4=\EOS,
X kf5=\EOT,
X kf6=\EOU,
X kf7=\EOV,
X kf8=\EOW,
X kf9=\EOX,
X kf10=\EOY,
X kf11=\EOp,
X kf12=\EOq,
X kf13=\EOr,
X kf14=\EOs,
X kf15=\EOt,
X kf16=\EOu,
X kf17=\EOv,
X kf18=\EOw,
X kf19=\EOx,
X kf20=\EOy,
X khome=\E[H,
X kich1=\E[@,
X kil1=\E[L,
X knp=\E[V,
X kpp=\E[U,
X rc=\E8,
X rev=\E[${reverse}m,
X ri=\E[T,
X rin=\E[%p1%dT,
X rmacs=\E[${lowerchars}m,
X rmam=\E[?7h,
X rmir=\E[4l,
X rmso=\E[${back_color}m,
X rmul=\E[m,
X sc=\E7,
X sgr=\E[%?%p1%t${standout};%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p5%t8;%;%?%p6%t1;%;%?%p7%t8;%;m,
X sgr0=\E[0;${fore_color};${back_color}m,
X smacs=\E[${upperchars}m,
X smam=\E[?7l,
X smir=\E[4h,
X smso=\E[${standout}m,
X smul=\E[${underline}m,
X tbc=\E[2g,
X vpa=\E[%p1%dd,
X .ich=\E[%p1@ (*** if not using enter/exit insert mode),
X .ich1=\E[@ (*** if not using enter/exit insert mode),
X .rep=%p1%c\E[%p2%{1}%-%db (*** buggy),
X!Color!
Xelse
X cat <<!Mono! >> ${filename}
X am,
X mir,
X xon,
X cols#80,
X it#8,
X lines#${lines},
X vt#3,
X acsc=0[a~fxgqh~jYk?lZm at nEqDtCu4vAwBx3~y,
X bel=^G,
X blink=\E[${blink}m,
X bold=\E[${bold}m,
X cbt=\E[Z,
X civis=\E[${cursor_invisible};${cursor_reset}m,
X clear=\E[H\E[J,
X cnorm=\E[${normal_cursor};${cursor_reset}m,
X cr=\r,
X csr=\E[%i%p1%d;%p2%dr,
X cub1=\b,
X cub=\E[%p1%dD,
X cud1=\n,
X cud=\E[%p1%dB,
X cuf1=\E[C,
X cuf=\E[%p1%dC,
X cup=\E[%i%p1%d;%p2%dH,
X cuu1=\E[A,
X cuu=\E[%p1%dA,
X cvvis=\E[${very_visible_cursor}m,
X dch1=\E[P,
X dch=\E[%p1%dP,
X dl1=\E[M,
X dl=\E[%p1%dM,
X ech=\E[%p1%dX,
X ed=\E[J,
X el1=\E[1K,
X el=\E[K,
X home=\E[H,
X hpa=\E[%i%p1%dG,
X ht=\t,
X hts=\EH,
X il1=\E[L,
X il=\E[%p1%dL,
X ind=\E[S,
X indn=\E[%p1%dS,
X invis=\E[${invisible}m,
X is1=\E[=h,
X is2=\E7\E[1;25r\E8\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8l\E[0;10;${normal_cursor};${cursor_reset}m,
X kbs=\b,
X kcub1=\E[D,
X kcud1=\E[B,
X kcuf1=\E[C,
X kcuu1=\E[A,
X kdch1=\E[P,
X kdl1=\E[M,
X kend=\E[Y,
X kf1=\EOP,
X kf2=\EOQ,
X kf3=\EOR,
X kf4=\EOS,
X kf5=\EOT,
X kf6=\EOU,
X kf7=\EOV,
X kf8=\EOW,
X kf9=\EOX,
X kf10=\EOY,
X kf11=\EOp,
X kf12=\EOq,
X kf13=\EOr,
X kf14=\EOs,
X kf15=\EOt,
X kf16=\EOu,
X kf17=\EOv,
X kf18=\EOw,
X kf19=\EOx,
X kf20=\EOy,
X khome=\E[H,
X kich1=\E[@,
X kil1=\E[L,
X knp=\E[V,
X kpp=\E[U,
X rc=\E8,
X rev=\E[${reverse}m,
X ri=\E[T,
X rin=\E[%p1%dT,
X rmacs=\E[${lowerchars}m,
X rmam=\E[?7h,
X rmir=\E[4l,
X rmso=\E[m,
X rmul=\E[m,
X sc=\E7,
X sgr0=\E[0m,
X sgr=\E[%?%p1%t${standout};%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p5%t8;%;%?%p6%t1;%;%?%p7%t8;%;m,
X smacs=\E[${upperchars}m,
X smam=\E[?7l,
X smir=\E[4h,
X smso=\E[${standout}m,
X smul=\E[${underline}m,
X tbc=\E[2g,
X vpa=\E[%p1%dd,
X .ich=\E[%p1@ (*** if not using enter/exit insert mode),
X .ich1=\E[@ (*** if not using enter/exit insert mode),
X .rep=%p1%c\E[%p2%{1}%-%db (*** buggy),
X!Mono!
Xfi
X
Xcat <<!Funky!Stuff!
X
XYou are now ready to install the terminfo entry. First, you must su to root
Xand then type: tic ${filename}. This will compile the terminfo entry and
Xplace it in the /usr/lib/terminfo directory structure. After tic-cing the
Xfile, you should type: tput init. This will initialize the screen and colors
Xfor you. Have fun!!
X
X!Funky!Stuff!
SHAR_EOF
chmod 0775 catie || echo "restore of catie fails"
fi
if test -f rt; then echo "File rt exists"; else
echo "x - extracting rt (Text)"
sed 's/^X//' << 'SHAR_EOF' > rt &&
X:
Xstty sane
Xcase $TERM in
X ansi*|at386*|AT386*)
X stty echoe erase intr kill
X ;;
X tek*|4105*)
X stty echoe erase intr kill
X ;;
X vt100*)
X stty echoe erase intr kill
X ;;
X *)
X stty echoe erase intr kill
X ;;
Xesac
Xtput is2
Xtput rs2
SHAR_EOF
chmod 0755 rt || echo "restore of rt fails"
fi
exit 0
More information about the Comp.unix.microport
mailing list