# Oberon/ETH Oberon/ports

This document was originally hosted at the ETHZ. It remains in the WayBack archive under the ETH license.
Serial and parallel port support
Oberon supports parallel or serial ports for controlling peripheral devices such as mice (serial), printers (parallel or serial), modems (serial), routers, bridges, firewalls.
Hint: Communication devices such as the Zyxel Prestige 100 ISDN Router and the Zyxel ZyWall firewall can easily be configured via their serial control port with the V24.Panel , the GUI of a simple terminal-emulation application. The bloated configuration software delivered with the devices can quietly be ignored.
All of the three possible parallel ports are supported. The ports are set up as follows:
and operate in unidirectional mode only. Hence, no IRQ is assigned or used. A bi-directional protocol is not implemented.
A machine is usually equiped with a single parallel port set up as shown above. If an add-on I/O card with additional ports is installed, the address and the IRQ assigned to a port are usually jumpered on the card. The jumpers setting must comply with what is shown above.
For additional information consult Wikipedia.
Use the procedures in module Centronics.Mod in your own program. They support output only. The Centronics module imports SYSTEM and uses the PORTIN / PORTOUT procedures. The latter are for use with Native Oberon of course. Note that a module importing SYSTEM is not portable. The PlugIn version of Oberon for Windows uses the Native Oberon compiler and consequently, PORTIN and PORTOUT are also useable. Under Windows NT and Win 2000, executing one of these procedures will however lead to a "privileged instruction" TRAP.
A similar implementation is found in Oberon V4, but the formal parameters in InCh and OutCh are permuted because the Oberon V4 compiler uses the C language convention for sequencing the parameters.
All of the four possible serial RS-232 ports are supported. A machine is usually equiped with two serial ports, either built in on the motherboard or on an add-on I/O card. Built in COM ports are usually configured with the BIOS set up program, but may be configured with jumpers in older computers. COM ports on add-on cards are normally configured with jumpers on the card. By default, in Oberon, the base address and the IRQs of the ports are set up as follows:
The base addresses above for COM1 and COM2 are standard. There are several alternate addresses that can be used for COM3 and COM4. If these are hard-wired into a board or card they will normally be paired as shown. If they are individually selectable, it is desirable to use them in the pairs shown below:
The support, together with the BIOS set up program of the machine and the jumpers, allow to arrange the COM ports among the serial interfaces as desired and to associate them with the best suited IRQ lines. The following commands are available for setting up the ports.
ConfigV24.SetIRQs { [ xxxH | 000H ] IRQx } ~
    Assign four pairs of base address + IRQ to the serial ports. No duplicate address is allowed. Uninstalled or disabled ports are assigned the address 000H. The IRQs may be chosen among the free (i.e. non-conflicting) IRQs of the machine. Duplicate IRQs may be assigned, provided the ports are not used simultaneously. It is common practice to see COM3 using IRQ 4 and COM4 using IRQ 3, as is done by default. The final settings are displayed in the System log in the form of a new ConfigV24.SetIRQs command ready for editing and executing.
    This command is best placed in Oberon.Text ahead of a possible ConfigInput.Mouse or ConfigInput.WatchMouse command, specially if a serial mouse is attached which should be recognized immediately when Oberon is started.
ConfigV24.GetIRQs
    Display the serial port settings in the System log. The current settings are displayed in the System log in the form of a new ConfigV24.SetIRQs command ready for editing and executing.
For additional information consult Wikipedia.
V24.Mod is the device driver of an asynchronous RS-232 interface and in OSI terminology, it handles protocols on level 2a - the media access control. Client modules must implement the protocols of level 2b - the logical link control. The receiving part is timing critical: the receive buffer may overflow and data may get lost as a consequence of an overrun condition. The buffer has a fixed length of 4'096 bytes.
In addition to using an external modem connected to a serial port, it is also possible to establish direct communication to another computer by connecting the serial ports through a crossed serial cable (also known as a null-modem cable) and using a generic communications program. V24.Panel was designed for this purpose. The most likely use you will have for this technique is trapping debug output from a problematic machine to another faultless machine for analyzing the debug information and diagnosing the problem. This technique is described in Low-level tracing.
11 Jul 2002 - Copyright © 2002 ETH Zürich. All rights reserved. E-Mail: oberon at lists.inf.ethz.ch Homepage: http://www.ethoberon.ethz.ch/