johnc@mia.UUCP (05/12/87)
============================LINE EATER=====================================
Due to the large number of requests I received for the Tandy 1000
MINIX fixes, I am posting them to the net. Other clone users might be able
to apply some of these fixes if MINIX won't work on their computers also.
I will list the fixes as I found them with an explination of why the fix
was made.
1) main.c line 141 must be deleted.
The INT2_MASK is used to determin which memory page the video memory
will reside. The Tandy 1000 has no deticated video ram, so the
system uses a chunk of main ram by mapping the video address (0XB8000)
to the highest avalible memory page via a PAL. The BIOS initialy sets
this register on power up, so it is not necessary for MINIX to touch
this port.
2) main.c line 140 change
from: port_out(INT_CTLMASK,0);
to: port_out(INT_CTLMASK,0X20);
The interupt structure on the Tandy 1000 is not like that of the XT
but it is closer to that of the PCjr. The following chart shows the
comparison.
INIT XT Tandy 1000
----------------------------------------------------------
0 timer timer
1 keyboard keyboard
2 I/O chan Hard drive
3 COM1 COM1
4 COM2 COM2
5 Hard Drive 60hz (Ram refresh if no DMA)
6 floppy floppy
7 LPT1 LPT1.
As you can see the Hard drive must be changed and the 60hz
masked out. The 60hz is used for memory refresh when the DMA
option is not installed. Changing the mask to 0X20 masks out
interupt #5.
3) const.h line 25 change
from: #define XT_WINI_VECTOR 13
to: #define XT_WINI_VECTOR 10
This changes the hard drive vector to interupt slot #2 from #5
4) floppy.c line 367 change
from: port_out(DOR, motor_goal);
to: port_out(DOR, motor_goal | 0X0F);
The Tandy 1000 does not use the drive selects from the FDC chip,
but from a latch in the DOR. Bits 0 and 1 are the drive selects
A-not and B-not. The drives will never de-select unless these bits
are brought hi when the motor stop. Here is what the 1000 DOR
looks like.
BIT Function
-----------------------------------
0 Drive sel A-not
1 Drive sel B-not
2 0 = FDC reset
3 1 = enable DMA
4 1 = Drive A motor on
5 1 = Drive B motor on
6 1 = FDC terminal count
7 not defined
Misc notes
----------
Since MINIX won't boot from the distribution disks, you will have to
find a computer that will run it so you can make the changes. After making
a new boot disk, everything seems to work fine. I have been testing the fixes
for abut a month and have had no problems. If you get real desperate you
could mail me a SASE disk and I will make you a 1000 boot disk.
As mentioned in fix #1 the tandy 1000 uses the main memory for video.
This reduces the MINIX memory by 128k, you could go into mm and fudge the
high memory figure if necessary, but I have not found this to be a problem.
I have made my hard drive the root device ahd removed the RAM DISK. This
gives you around 400k of user memory, which is more than what a 640k MINIX
with a RAM DISK gives you.
I have also found that the Tandy hard drive controlers ( which are
western digital) don't quite agree with the xt_wini.c . My next note will
explain how to change the hard drive driver to work with the WD hard drives
I am posting this seperatly as it might help others with their hard drive
controlers.
I have not redone the keyboard scan codes for the mod 1000
keyboard, but it is a fairly trivial task. The scan codes are in the
basic manual that comes with the computer. I will post the new keyboard
tables whan I get enough time to do them, if some one dosent beat me
to it....
John Clark
-----------------
John Clark - System Administrator, Super-User
Tandy Business Products Service Center
10010 Griffin Rd
Coopercity, Fl 33328
UUCP:{techsup,valkyrie,exprs,bitbox,sync,novavax,umbio}!mia!{johnc,root}
ATT: (305)434-2333