Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature Request: Missing characters for HP 2640 Series terminals emulation #715

Open
PhMajerus opened this issue Feb 23, 2024 · 0 comments

Comments

@PhMajerus
Copy link
Contributor

PhMajerus commented Feb 23, 2024

Description of the new feature/enhancement

There are just a few characters missing for Cascadia to cover all the characters available on HP 2640 Series terminals from the 1970's.
These were high-end terminals with advanced features, one of which was the ability to install extra characters ROMs for specific uses.
Much more details about those terminals can be found at https://www.curiousmarc.com/computing/hp-264x-terminals

The Roman uppercase and lowercase are the standard 7-bit ASCII, with Control Pictures (which were added already in early 2021 #219), and a special checkerboard Delete Symbol U+2428 (which is included in my #708 pull request).

Roman Uppercase Roman Lowercase

The extra ROMs include Line drawing (including some uncommon lines), and Large Type Pieces:
1816-0641 Line Font 9bit uVector sep 1816-1425 Large Letter Set 8bit uVector sep

I'll be submitting contributions for the large type pieces (#709) and the line drawing (part of Unicode 16 symbols for legacy computing supplement), so these two characters ROMs will be completed.

And finally, the last ROM contains Math symbols, which contains mostly Greek, and a few extra:
1816-0642 Math Characters Sep

Here it is as text:

  √ │ § ∇ ± ∝ ⌠
÷ ≃ Π Γ Ψ ≡ Φ Ξ
⁰ ¹ ² ³ ⁴ ⁵ ⁶ ⁷
⁸ ⁹ Ω Λ ∞ ⌡ ☨ Σ
¶ α β ψ φ ε ∂ λ
η ι Θ κ ω μ ν ρ
π γ θ σ τ ξ Δ δ
χ υ ζ ↑ → Υ ← ↓

Proposed technical implementation details

If I'm not mistaking, the only characters missing from Cascadia are the following:
:U+2207 Nabla (pretty much a reversed Δ)
:U+221D Proportional To (crop the right end of ∞)
:U+2243 Asymptotically Equal To
:U+2628 Cross Of Lorraine (I have no idea how this is used for Math, but I confirmed the symbol visual in the documentation keyboard cheat sheet)

image

So yeah, just 4 more symbols and we can claim we support the whole set!

The HP 2640 also supported some APL overstrike characters, but I don't think that's supported at all in modern terminal emulators, or even any other display-based (glass instead of paper) terminals from back then, and I haven't seen them in Unicode so far.

Historical significance

HP 2640A terminal 3

I think it would be great to add those four characters, not only would it make legacy codepages / terminals charsets support more complete, but the HP 2645A and later were based on an Intel 8080 and could run rudimentary local software as well, blurring the line between terminals and microcomputers. Some models starting from 1978 included HP Terminal BASIC, which according to some sources is based on Microsoft BASIC-80, one of the early port of Microsoft BASIC for 8080 and Z80 microprocessors.

This means it could be considered one of the very first microcomputers with a screen running Microsoft Basic, just after the Commodore PET and Apple II, which were both based on MOS 6502, and the TRS-80, which was based on Zilog Z80.
Since the Altair 8800 originally didn't have a screen, I believe the HP 2647A might have been the first microcomputer running Microsoft BASIC-80 (the 8080 port of BASIC) with a terminal interface.

Apparently, it was also a very common terminal used by hobbyists to create personal computers from, basically building the processing unit part and using the HP 2640A or later as the screen and keyboard through a serial connection.
This means it could even have been used as one of the first terminal interface to Microsoft Basic on the Altair as early as 1975, even before the Commodore PET, Apple II, and TRS-80 got released.
In a sense, this is probably the very first character set used by the very first Microsoft product. And we only need 4 more characters to support emulating it properly in Windows Terminal.

DHowett pushed a commit that referenced this issue Apr 23, 2024
…extants, segmented digits, and large type pieces (#723)

## New diagonals, octants, sedecimants & eights, separated quadrants &
sextants, segmented digits, and large type pieces (Symbols for Legacy
Computing)

- Added diagonals `U+1FB3C` - `U+1FB67`
- Added octants (2×4 mosaics) `U+1CD00` - `U+1CDE5`
- Added sedecimants (4×4 mosaics) `U+1CE90` - `U+1CEAF`
- Added eights (8×8 patterns) `U+1FB70` - `U+1FB80`, `U+1FB82` -
`U+1FB8B`
- Added misc. blocks `U+1FB97`, `U+1FBCE`, `U+1FBCF`
- Added separated quadrants (2×2) `U+1CC21` - `U+1CC2F`
- Added separated sextants (2×3) `U+1CE51` - `U+1CE8F`
- Added segmented digits (LED/LCD display style) `U+1CCF0` - `U+1CCF9`
- Added large type pieces (see #709) `U+1CE1A` - `U+1CE50`

This update does not modify any existing character, it is only adding
new characters from the Symbols for Legacy Computing blocks (original
and supplement).  These characters use the same unified coordinates as
my previous #708 submission. It continues the sextants with diagonal
fills that meet the sextants corners, adds octants, most of the 8×8
pixels-based lines and fills (sedecimants & eights), as well as the
separated mosaics, segmented digits, and large type pieces.  Some
existing mosaic characters are not perfectly aligned on the same grid,
and it would be best to adjust them to fit the unified grid as well, but
that is not part of this PR, and I guess we won't have the time to do
that for the next release.

Note it does not complete the original Symbols for Legacy Computing
block yet, as it does not include the extra lines/box-drawing
characters, shaded mosaics, MouseText, and some other specific symbols.
The focus has been on completing the mosaics part, including the ones
coming in Unicode 16.0, and the Large Type Pieces.

This one is quite big, containing almost all the glyphs I've been
working on at once. This is to meet the short deadline for the next
release of Cascadia Code, as discussed with @aaronbell. It contains 948
glyphs for 479 characters.

Many of the glyphs are pure geometric shapes with no artistic liberty at
all, they simply follow the unified grid and handle both GDI and DWrite
("stypo") variants.

All the glyphs have been added to the `features.fea::@NotSpace` list of
non-italic fonts, except for the segmented digits, which have been added
to `@Digit` instead of `@NotSpace`.

The segmented digits `U+1CCF0` - `U+1CCF9` are based on their original
Atari ST design and Unicode reference design, with the bounding box and
segments widths adjusted to fit the `H` character, and spaces between
the segments large enough to be visible even at 12pt on 100% DPI.

The Large Type Pieces are based on their original HP 2640 Series
terminals design and Unicode reference design, but I took liberties to
reinterpret the pieces to make them more rounded and, I believe, more in
line with the Cascadia Code design.  Note the Unicode reference design
is somewhat wrong as their diagonals do not join perfectly, while my
version takes great care to support all the combinations alignments with
straight diagonal lines.  The only piece where more artistic liberty is
available is the `Q` stem `U+1CE45`, where I tried to make it more
reminiscent of Cascadia's `Q` design.

More details and screenshots of the large type pieces are available in
issue #709.

Finally, `U+1FB97` is the same pattern as `U+1CDB7`, they have different
origins, but I'm not sure why Unicode repeated it for octants instead of
reusing the existing one as they did for some other existing pattern. I
included them as separate glyphs as well.

* Continues #708 
* Improves #715 (does not close it, but greatly improves coverage)
* Improves #597 (does not close it, but greatly improves coverage)
* Closes #711
* Closes #709

Co-authored-by: Philippe Majerus <phm@live.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant