[comp.os.minix] Tandy 1000 Fix

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