[comp.os.minix] MINIX on OLIVETTI M19: The fixes

mmue@ethz.UUCP (Markus Mueller) (09/03/87)

References:


Many thanks to those who replied to my earlier posting. In the meantime I
received my copy of "OLIVETTI M19 Hardware Architecture and Functions Manual"
which helped me quite a bit to work out the fixes. MINIX now runs on
my M19, including the printer, but excluding the hard disk. A few minor
bugs such as incomplete reset on Ctrl-Alt-Del still exist, but as long as
they are not essential I am not in a hurry to fix them.

The fixes are given in plain text format against MINIX release 1.1, but they
should be the same for release 1.2.

Hard disk: No interrupt hardware - you will never get this hard disk to
run smoothly under MINIX. Second problem: no documentation about the hard
disk (some RODIME model connected to the controller card via an SCSI bus
cable - maybe I should look for more information under the keyword
MACINTOSH :-) exept for a dump of its BIOS ROM. Neverless I an considering to
write a hard disk device driver that uses the extension BIOS ROM for disk
access; however I have no idea what will happen in MINIX when the device
driver goes into a polling loop within the BIOS for as much as 180 millisecs
with all other interrupts disabled...

-----------------------------------------------------

OLIVETTI M19 Unexpected int / screen scrolling fix
==================================================

Problem : 1. cursor positionning and screen scrolling fails
          2. On some models, MINIX boot fails with "unexpected int < 16"
Reason  : The CRT controller of the OLIVETTI M19 can emulate several additional
          modes to those of a regular ColorGraphics adapter. To prevent
          wrong reprogramming of the 6845 CRT controller which may result
          in damage of the CRT hardware, the 6845 can be configured to become
          either completely invisible to the CPU or to raise an I/O check
          condition resulting in an NMI when a write is attempted to the 6845.
          Visibility of the 6845 is controlled through an undocumented port
          located at 0x3DF; I/O check handling is controlled through port
          0x61.
Fix     : In tty.c, routine set_6845, add the declaration of io61 and
          replace the body by:

  int io61;

  port_out(0x3DF, 0x00);                /* make 6845 visible */
  port_in(0x61, &io61);                 /* disable NMI on I/O check */
  port_out(0x61, io61 | 0x20);
  port_out(vid_port + INDEX, reg);      /* set the index register */
  port_out(vid_port + DATA, (val>>8) & BYTE);   /* output high byte */
  port_out(vid_port + INDEX, reg + 1);  /* again */
  port_out(vid_port + DATA, val&BYTE);  /* output low byte */
  port_out(0x3DF, 0x10);                /* make 6845 invisible */
  port_in(0x61, &io61);                 /* enable NMI on I/O check */
  port_out(0x61, io61 | 0x20);          /* requires 2 steps */
  port_out(0x61, io61 & 0xDF);

Remark  : I could not test the fix on a model that fails with "unexpected
          int < 16", but it should work.

-----------------------------------------------------

OLIVETTI M19 Printer fix
========================

Problem : printer does not work; all output to /dev/lp results in I/O error
Reason  : the printer adapter returns the unused bits 0 - 2 of the printer
          status port as zeros while MINIX expects ones.
Fix     : adjust the following constants in printer.c to:

   #define NORMAL_STATUS  0xD8        /* was 0xDF */
   #define BUSY_STATUS    0x58        /* was 0x5F */

Remark  : Printer reset during MINIX boot does not work. I do not know why,
          but I did not take a closer look since everything else works.

-----------------------------------------------------

   Markus Mueller
   Institut fuer Informatik
   Swiss Federal Institute of Technology
   Zurich
   Switzerland

~ UUCP/Usenet   :   {known world}!seismo!mcvax!cernvax!ethz!muellerma
~ CSNET         :   muellerma%ifi.ethz.ch@relay.cs.net
~ ARPA          :   muellerma%ifi.ethz.ch@csnet-relay.arpa                

Disclaimer: All of above represents my personal opinion ONLY.