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.