This page is a personal collection of notes. For authoritative documentation, refer to http://www.oberon.ethz.ch/ .
If the wrong mouse keys are pressed, press them all before releasing any.
All mouse keys together have no effect.
Inadvertently selecting a frame can be disconcerting. To clear all selections press <F2>.
This is the configuration file Oberon.Text from Cantor.
HyperDocTools.Fetch
"http://carnot.yi.org/Oberon.Text.Ex" => Oberon.Text.Ex ~
Manifold.Vinci is an example of a simple engineering drawing written in Vinci.
HyperDocTools.Fetch
"http://carnot.yi.org/Manifold.Vinci" => Manifold.Vinci ~
A few of the source files for the Oberon System, PC Native 05.01.2003, with small adjustments, modifications and "repairs" follow. These files reside entirely under the copyright and license of the Computer Systems Institute, ETH Zurich. Before compiling any modified file, compare with the file in your SYS partition using Diff.Do. The changes are described below. Use these modifications AT YOUR OWN RISK.
HyperDocTools.Fetch
"http://carnot.yi.org/pe.ATADisks.Mod" => pe.ATADisks.Mod
"http://carnot.yi.org/pe.Dialer.Mod" => pe.Dialer.Mod
"http://carnot.yi.org/pe.FTP.Mod" => pe.FTP.Mod
"http://carnot.yi.org/pe.FTPDocs.Mod" => pe.FTPDocs.Mod
"http://carnot.yi.org/pe.HTML.Mod" => pe.HTML.Mod
"http://carnot.yi.org/pe.HTMLDocs.Mod" => pe.HTMLDocs.Mod
"http://carnot.yi.org/pe.Mail.Mod" => pe.Mail.Mod
"http://carnot.yi.org/pe.NetSystem.Mod" => pe.NetSystem.Mod
"http://carnot.yi.org/pe.PSPrinter.Mod" => pe.PSPrinter.Mod
"http://carnot.yi.org/pe.PPPFSM.Mod" => pe.PPPFSM.Mod
"http://carnot.yi.org/pe.PPPHDLC.Mod" => pe.PPPHDLC.Mod
"http://carnot.yi.org/pe.PPPIPCP.Mod" => pe.PPPIPCP.Mod
"http://carnot.yi.org/pe.PPPLCP.Mod" => pe.PPPLCP.Mod
"http://carnot.yi.org/pe.PPPMain.Mod" => pe.PPPMain.Mod
"http://carnot.yi.org/pe.PPPTools.Mod" => pe.PPPTools.Mod
"http://carnot.yi.org/pe.URI.Mod" => pe.URI.Mod
"http://carnot.yi.org/pe.RingbackDialScript" => pe.RingbackDialScript
"http://carnot.yi.org/pe.SSHTransport.Mod" => pe.SSHTransport.Mod
~
Diff.Do pe.ATADisks.Mod SYS:ATADisks.Mod
Diff.Do pe.Dialer.Mod SYS:Dialer.Mod
Diff.Do pe.FTP.Mod SYS:FTP.Mod
Diff.Do pe.FTPDocs.Mod SYS:FTPDocs.Mod
Diff.Do pe.HTML.Mod SYS:HTML.Mod
Diff.Do pe.HTMLDocs.Mod SYS:HTMLDocs.Mod
Diff.Do pe.Mail.Mod SYS:Mail.Mod
Diff.Do pe.NetSystem.Mod SYS:NetSystem.Mod
Diff.Do pe.PSPrinter.Mod SYS:PSPrinter.Mod
Diff.Do pe.PPPFSM.Mod SYS:PPPFSM.Mod
Diff.Do pe.PPPHDLC.Mod SYS:PPPHDLC.Mod
Diff.Do pe.PPPIPCP.Mod SYS:PPPIPCP.Mod
Diff.Do pe.PPPLCP.Mod SYS:PPPLCP.Mod
Diff.Do pe.PPPMain.Mod SYS:PPPMain.Mod
Diff.Do pe.PPPTools.Mod SYS:PPPTools.Mod
Diff.Do pe.SSHTransport.Mod SYS:SSHTransport.Mod
Compiler.Compile \s \OSYS:
pe.ATADisks.Mod
pe.Dialer.Mod
pe.FTP.Mod
pe.FTPDocs.Mod
pe.HTML.Mod
pe.HTMLDocs.Mod
pe.PSPrinter.Mod
pe.PPPFSM.Mod
pe.PPPHDLC.Mod
pe.PPPIPCP.Mod
pe.PPPLCP.Mod
pe.PPPMain.Mod
pe.PPPTools.Mod
pe.URI.Mod
pe.NetSystem.Mod
pe.Mail.Mod
pe.SSHTransport.Mod ~
Point of interest: modules are compiled in alphabetical order except that NetSystem imports URI and must be compiled after it. Similarly for Mail.
The encoding specified in the header of a Web document
should match the encoding specified in the HTTP header. Some
users maintain documents for more than one http server. Specification
of the encoding at the top of the parameter text for HTML.Compile would
be more efficient than recompiling HTML each time the encoding
is changed.
Dialer.Dial can be used to establish a modem connection from "home" to
"office" for PPP.
The office computer runs mgetty in Linux and answers the connection according
to the ringback protocol. For Dialer to support ringback, the syntax of the Dial
script was extended so that an empty string will invoke a pause; 11 "" is the
11 s pause in this script. Refer to pe.Dialer.Mod above for the syntax extension.
This extension would be unneccesary if the
pause could be invoked with modem commands but I've never found
a way to achieve it. The script belongs in the SYS:Oberon.Text
configuration file.
{* This is for a USR Sportster modem on an Oberon system
calling a USR Sportster on a Linux system. *}
Ringback = {
Init = { COM1 19200 } {* modem port and speed *}
Dial = {
"ATZS0=0&F1&B1&C1"
10 "OK"
"ATDT16041234567,,;H0"
10 "OK"
11 ""
"ATDT16041234567"
40 "LAPM)"
CALL "PPPMain.StartInst Ringback peter"
}
}
{* This is for the USR Sportster modem. *}
NuvoSomeone = {
Init = { COM1 19200 } {* modem port and speed *}
Dial = {
"ATZS0=0&F1&B1&C1"
2 "OK"
"ATDT<CardAccessNumber>,,;DT<LanguageSelector>,,,;"
20 "OK"
"ATDT<CardPINNumber>,,,,,,;"
20 "OK"
"ATDT<DestinationNumber>,,,,,,,;H0"
20 "OK"
}
}
A frequently used sequence of codes should be stored in a file which is conveniently sent to the printer by Miscellaneous.PrintFiles. For example, a file named EpsonCourier12 can contain the nine characters "1B 6B 32 1B 4D 0D 0A". The first 3 characters, ESC k 2, select the Courier font. The next two characters, ESC M, select 12 characters per inch. The last two characters, 0D 0A, are carriage return and line feed. The file can be created and modified with Hex.Open EpsonCourier12 ~. To apply these settings, Miscellaneous.PrintFiles LPT1 EpsonCourier10 ~.
Similarly, a file named EpsonCourier17 can contain the nine characters "1B 6B 32 1B 78 30 0F 0D 0A". Again, ESC k 2 selects the Courier font. The four characters, ESC x 0 0F, select 17 characters per inch.
I should make a command version of URI.ESC to help the user when setting passwords.
A simple way to include the hidden files such as .config in the directory listing from FTP is to set an option on the server. In /etc/vsftpd.conf for example, include the line "force_dot_files=YES". A more involved solution is to add the capability of the -a option for the LIST command to Oberon. I haven't tackled this.
Referring to the POP3 protocol, RFC 1939, Section 3 states "Keywords and arguments are each[sic] separated by a single SPACE character." The extra blank appended to the front of the argument by Mail.NrToArg when converting a single digit is erroneous. Worse, the Zimbra POP3 server reports "-ERR unable to parse msg" and refuses to cooperate. The extra blank is not present in pe.Mail.Mod.
ET.Open SYS:Oberon.Text
ET.Open pe.RingbackDialScript
In System.Directory, change the line
Texts.WriteLn(W); Texts.WriteInt(W, count, 1); Texts.WriteString(W, " files");
to
Texts.WriteString(W, "~"); Texts.WriteLn(W); Texts.WriteInt(W, count, 1); Texts.WriteString(W, " files");
and recompile; Compiler.Compile \OSYS: * .
CLIXes, serial, 3-button, Model: Jx Mouse, FCC ID: FSUGMZB6. Works correctly as MS1.
MS Intellimouse 1.2A, PS/2 Compatible. PN X04-72176, Product ID 63618-OEM-2170103-7, As MSI, there is no cursor movement. As PS2 it appears OK but can freeze when opening a document. Press <Scroll Lock> and use the arrow keys to reboot.
MS Wheel Mouse, Serial and PS/2 compatible. PN X03-53717, Product ID 83351-577-4049495-00000. Works as PS2. Occasionally the cursor jumps downwards for a few milliseconds; freezes rarely.
I've used the pointing stick in three old model Toshiba laptops. As PS2, no failure has ever occurred.
Conclusion: the PS/2 driver needs work.
Q. My computer lacks a diskette drive. Can the display driver be adjusted?
A. Restart and hold down the shift key. The boot loader will
allow config strings to be set. Make these settings to restore the
VGA display as used by Oberon0.
Display=VGA.
Init=b81200cd10
DRefresh=""
DWidth=640
DHeight=480
DDepth=4
Press "w" to write the configuration to the partition and "c" to continue booting.
Another configuration can be set similarly using a string found in Config.Mod
or in OberonDrivers.Text.
Q. Can a Toshiba 205CDS be configured to use the full screen rather than just the VGA subset of pixels?
A. Yes. The specifications at http://www.toshiba.com/ mention that the internal
resolution is 800 x 600 x 64K/64K colors. 64K = 2^16. According to OberonDrivers.Text
this is VESA mode 276(9) = 114H. Configure with the Oberon0 diskette or set these
config strings at startup.
Display=Displays.
DDriver=DisplayLinear
Init=b8024fbb1441cd10b8014fb91401cd10268b4d28268b552a
DWidth=800
DHeight=600
DDepth=16
To use Virtual Display Mode 1024 x 768 x 64K properly, DisplayLinear needs work.
Q. I am interested to understand the cryptic Init config strings. Is there any alternative to being an expert in Intel machine code and video programming?
A. When the system is installed with Oberon0, the Init string is provided by Config.Mod. The long VESA string above is built up in sections.
To understand a specific string, apply a disassembler. Then google the Web to understand what is done with the video processor.
For example, the VGA string is the five hex bytes b81200cd10.
We want a file Init.o containing these bytes. An obvious if not
efficient method is to use Edit or ET to put any 5 characters in Init.o.
Then Hex.Open Init.o, replace the characters with B8 12 00 CD 10 and
Store. Move Init.o to a Linux system. There apply objdump.
objdump -b binary -m i8086 -D Init.o
Init.o: file format binary
Disassembly of section .data:
0000000000000000 <.data>: 0: b8 12 00 mov $0x12,%ax 3: cd 10 int $0x10
Kees C. prefers libdisasm's x86dis tool.
$ echo -e '\xb8\x12\x00\xcd\x10' | x86dis -r 0 5 -s att 00000000 B8 12 00 mov $0x0012, %ax 00000003 CD 10 int $0x10
Violation
The last argument of a command can be ignored if end-of-text
is reached rather than a ~ character.
Example: If ImportantArchive.Zip is created with "ZipTool.Add ImportantArchive.Zip
blah1 blah2 blah3 <end-of-text>", blah3 is absent from the archive.
Solution: handle arguments with procedures which are used system wide.
Allow end-of-text to produce the same effect as "~".