[Oberon] Keyboard input in ETH Oberon.

Michael Schierl schierlm at gmx.de
Thu Aug 5 22:04:25 CEST 2021


Am 01.08.2021 um 06:25 schrieb peter at easthope.ca:

> ETH Oberon Input.Mod of is visible in the screenshot at
> http://easthope.ca/ETHO.Input.Mod.png . The Oberon is running on QEMU
> on Linux Debian.
> In the upper viewer, ET shows some of the source for the keyboard
> translation table.

Or here in text form for those who prefer it:


Non-ASCII characters got lost due to Native2ASCII conversion.

> Below that Hex shows the content beginning with Oberon accents.
> Questions
> (1) What is achieved by "POP EAX ... RET"?

Already answered by Hellwig, and I cannot add anything to his description.

> (2) What is DB?

"Define Byte(s)". An x86 Assembler directive to tell the assembler to
not interpret the next bytes but just put them into memory.

> (3) The syntax is explained as,   table = { scancode unshifted-code
> shifted-code flags } 0FFX .
> Therefore scan code 1EX represents "a"; 1EX + shift represents "A"?
> (4) 4X represents bit 04, flag 2?  Caps Lock effect?


> (5) The first two characters under "Oberon accents" appear to be auml
> and Auml. Hex shows 83 and 80 whereas the ASCII Latin-1 Supplement
> encodes auml and Auml as E4 and C4. How does that work?

Desktops.OpenDoc FontEditor.Panel

You will see that Oberon fonts use their own character set, which
basically is US-ASCII from 00X to 7FX, with the exception that 0AX to
0FX are "hollow right-facing triangle", "filled right-facing triangle",
"hollow square", "filled square", "hollow left-facing-triangle", "filled
left-facing triangle" and 9BX is a left arrow.

80X to 96X represent "ÄÖÜäöüâêîôûàèìòùéëïçáñß", in that order. The rest
of the "high ASCII" characters are unused (probably used for custom
stuff by some fonts).

In isolated silo systems, you can do things like this. And Native2ASCII
just drops these characters, as you will never want to watch Oberon text
with accented characters in other systems.

> (6) Why is 0FFX necessary?

To tell the loop in
that it should terminate in case somebody is heretic enough to press a
key that is not defined by the translation table. As opposed to doing
the right thing and punishing the user with a system crash. Just kidding.



More information about the Oberon mailing list