Skip to content

Latest commit

 

History

History
255 lines (210 loc) · 10 KB

h19.md

File metadata and controls

255 lines (210 loc) · 10 KB

Comparing Tandy Terminfo to Heathkit H19

The Heathkit h19 terminfo is so similar to the one used by the Tandy 200 that it seems likely that when the Kyotronic-85 was first developed, output was probably to an h19 before the screen hardware was working.

The h19 was a VT52 clone with additional features that make it more similar to a Tandy portable

  • Standout Mode (reverse video) is enabled with Escp, disabled with Escq.

  • Clear screen is EscE.

The H19 was also sold as the Zenith Z19.

Using a Tandy portable as an h19 emulator

Not possible because the Tandy portables (at least when running the builtin TELCOM software) are missing too many features

  • Scroll reverse
  • Insert mode
  • Different ACS characters,
  • Special graphic characters
  • Status line

Using an h19 as a Tandy portable display

May be possible depending on the program being run. There is an h19 terminal emulator written in Python available from [http://h8.cowlug.org/h19term.php].

Many of the possible problems I can foresee with using an h19 as a terminal are relatively minor or unlikely.

  • h19 does not support any of the high ASCII characters from 128 to 255.

  • Status line is completely different, so any program that tries to manipulate the status line using CHR$(27)+"T" or "U" will fail.

  • h19 lacks save current line and restore saved line. However, those escape sequences were not well-documented and only worked on entire lines, so I would guess that their use was rare.

  • h19 only understands '\EE' for clear screen. However, Model T's may send '\Ej' which does the same thing.

  • The terminfo for the H19 shows that it does not have automatic left margins (backspace in the first column goes to the last column in the previous row). While that is how the Tandy portables work, it's not something programs often purposefully do. Also, I believe the terminfo database may be incorrect about the h19.

  • Tandy portables have "destructive tabs"; that is, if the TAB character would pass over text, that text is erased. I suspect few programs relied on that feature. If they did, garbage characters might be left on the screen.

  • I've only seen disable scrolling escape sequence as useful for speeding up downloads in TELCOM. Was there any other reason for its existence?

  • The inability to hide the cursor would be noticeable on an h19, but wouldn't prevent the program from running.

  • Key codes sent by arrow keys are different.

Nitty gritty comparison

Using infocmp it is possible to compare the terminfo file for the Tandy portables to the h19. In fact that is how the analysis above was done. What follows is the detailed data and some notes on the differences.

Differences

infocmp -L -d td200 h19 |
    tr , : | sed -r 's/^[[:space:]]*|\.$|NULL//g' |
    column -c102 -t -W2 -E2 -s: -N attribute,td200,h19 -o'|'
attribute td200 h19
COMPARING BOOLEANS
auto_left_margin T F
backspaces_with_bs F T
dest_tabs_magic_smso T F
has_status_line F T
move_insert_mode F T
status_line_esc_ok F T
xon_xoff T F
COMPARING NUMBERS
columns 40 80
lines 16 24
COMPARING STRINGS
acs_chars '+\232\054\233-\230.\2310\357`\235 '+h.kaiggjdkclfmenbozqas{tvutvuwsx`~\136'
" a\377f\246g\215h\345i\251j\367k\362
" l\360m\366n\372q\361t\364u\371v\370
" w\363x\365{\210|\212}\243~\325'
cursor_invisible '\EQ'
cursor_left '\ED' '^H'
cursor_normal '\EP' '\Ey4'
cursor_visible '\Ex4'
delete_character '\EN'
delete_line '\EM'
dis_status_line '\EU\EY0 \ES\EM'
enter_alt_charset_mode '\EF'
enter_insert_mode '\E@'
enter_reverse_mode '\Ep'
exit_alt_charset_mode '\EG'
exit_attribute_mode '\Eq'
exit_insert_mode '\EO'
from_status_line '\Ek\Ey5'
init_1string '\EU'
init_2string '\EW\Eq\EE'
insert_line '\EL'
insert_padding '$<1.5/>'
key_down '^_' '\EB'
key_f1 '\ES'
key_f2 '\ET'
key_f3 '\EU'
key_f4 '\EV'
key_f5 '\EW'
key_f6 '\EP'
key_f7 '\EQ'
key_f8 '\ER'
key_home '\EH'
key_left '^]' '\ED'
key_right '^' '\EC'
key_up '^^' '\EA'
lab_f6 'blue'
lab_f7 'red'
lab_f8 'white'
newline '\r\n'
scroll_reverse '\EI'
to_status_line '\Ej\Ex5\EY8%p1%' '%+%c\Eo\Eo'
user8 '#RSM%[0123456789]c'
user9 '\EI'

Common features

infocmp -L -c td200 h19 |
    sed -r 's/^[[:space:]]*|\.$|NULL//g' |
    column -t -s= -N Attribute,"Both Tandy and H19" -o'|'
Attribute Both Tandy and H19
COMPARING BOOLEANS
auto_right_margin T
back_color_erase F
can_change F
ceol_standout_glitch F
col_addr_glitch F
cpi_changes_res F
cr_cancels_micro_mode F
eat_newline_glitch F
erase_overstrike F
generic_type F
hard_copy F
hard_cursor F
has_meta_key F
has_print_wheel F
hue_lightness_saturation F
insert_null_glitch F
lpi_changes_res F
memory_above F
memory_below F
move_standout_mode T
needs_xon_xoff F
no_esc_ctlc F
no_pad_char F
non_dest_scroll_region F
non_rev_rmcup F
over_strike F
prtr_silent F
row_addr_glitch F
semi_auto_right_margin F
tilde_glitch F
transparent_underline F
COMPARING NUMBERS
init_tabs 8
COMPARING STRINGS
bell '^G'
carriage_return '\r'
clear_screen '\EE'
clr_eol '\EK'
clr_eos '\EJ'
cursor_address '\EY%p1%' '%+%c%p2%' '%+%c'
cursor_down '\EB'
cursor_home '\EH'
cursor_right '\EC'
cursor_up '\EA'
enter_standout_mode '\Ep'
exit_standout_mode '\Eq'
key_backspace '^H'
scroll_forward '\n'
tab '^I'

Notes

Differences which are not actual

  • cursor_left on the h19 is defined as ^H. The VT52 and Tandy Terminfo specify '\ED'. But both of those codes are synonyms and they work the same on all three terminals.

  • Tandy Terminfo's enter_reverse_mode is just an alias for enter_standout_mode. Likewise exit_attribute_mode for exit_standout_mode.

  • newline is not defined in the h19 terminfo, but probably should be the same ('\r\n').

  • insert_line/delete_line: The terminfo file for the h19 incorrectly does not define these. They are actually the same ('\eL', '\eM').

Differences which look like bugs but aren't

It may appear that hackerb9's terminfo file is buggy because some differences are unexpected, but that is not the case, at least for the following items:

  • has_status_line: What the Tandy portables call a "status line" is very different from a typical UNIX status line such as on the h19.

  • auto_left_margin: The Tandy 200 goes up to the previous line when backspacing from column 0.

  • dest_tabs_magic_smso: This means "destructive tabs, magic so char" While primarily known as a glitch in the Teleray t1061 terminal, this problem also affects the Tandy computers. Specifically a Tab character will clear any text that it passes over. Note that h19term.py emulator has destructive tabs, so it is likely the terminfo for h19 is incorrect and should have had this set.

  • backspaces_with_bs (OTbs): It actually is set in the Tandy terminfo, but modern versions of tic simply strip it out as it is an "obsolete termcap capability".

  • scroll_reverse: Moves all text on the screen down one line. For no apparent reason, this does not work on the Tandy Portables. It would have been easy to implement using existing cursor controls: home + insert_line. Note that in TELCOM, the escape sequence for this, '\EI', actually sends the terminal answerback.