klock@mitre-bedford.ARPA (Kent J. Lockhart) (06/22/87)
Over the weekend i tried a couple of the fixes which i have been reading on this net. The results of these fixes are given below. I spent on the order of ten hours compiling main.c and wini.c and building my boot diskette this weekend. Not a totally effortless event. (that's what i get for giving up my second floppy for a hard disk which doesn't [or didn't] work). EGA Fix: First, i encorporated the EGA fix to the kernel main.c program posted by Der-Ru Sheu (sheu@gitpyr.UUCP). I assumed that this fix was for the EGA screen blanking problem only!? I haven't taken the time to decipher the code, however i can report that it works fine on my VEGA board running on my AT system at work and it does not seem to interfere with the performance of my Hercules card at home. I inserted the fix in main() (in main.c) arter the variable definitions ... right after "extern phys_bytes umap();" The changes i inserted were port_out(0x3c4, 4); port_out(0x3c5, 1); for those of you who did not see the message. RLL Fix: I've been so frustrated over the last week while i tried to run MINIX on a single floppy system since my hard disk wasn't being recognized by MINIX. I am using an ST238R RLL disk drive and a Western Digital (RLL) controller. My surprise and elation when i got my hard disk to work ... But, i still have problems and if any one has anyother fixes which can help me and my RLL please post them ... The changes i made to xt_wini.c are given below: First, since the RLL packs more information on each sector than the other hard disk systems i had to change the definition of NR_SECTORS to 25 (documented in the ST238R manual) from 17 ... #define NR_SECTORS 0x19 Second, I used the fix posted by Bing Bang (bing@galbp.UUCP) which suggested that a change to the interrupt settings within com_out() in xt_wini.c would remedy disk problems ... it did and i attribute this fix to the "partial" working of my hard disk. The change I made to com_out() is given below: I changed .... lock(); for (i=0; i<6; i++) port_out(WIN_DATA, command[i]); unlock(); port_in(WIN_STATUS, &r); if (r & 1) { w_need_reset = TRUE; return(ERR); } else return(OK); to .... lock(); for (i=0; i<6; i++) port_out(WIN_DATA, command[i]); port_in(WIN_STATUS, &r); unlock(); if (r & 1) { w_need_reset = TRUE; return(ERR); } else return(OK); All i did was move unlock() down one line. no other changes were made. but, recognition of my hard disk is tempermental. I require a second bootup in order for it to be recognized. Once recognized it works like a charm. - Kent Lockhart