changeset 1189:93f0119d2c27

Removed
author boisy
date Fri, 30 May 2003 21:18:34 +0000
parents aaae5eac20e1
children 7763f52cbd88
files 3rdparty/drivers/ide/detect_ide2.1_superide.bas
diffstat 1 files changed, 0 insertions(+), 263 deletions(-) [+]
line wrap: on
line diff
--- a/3rdparty/drivers/ide/detect_ide2.1_superide.bas	Fri May 30 21:13:48 2003 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,263 +0,0 @@
-PROCEDURE IDE_detect
-(* IDE identify program for SuperIDE
-(* Do not have IDE driver enabled
-(* while running this program!
-(* Copyright 1996 By Jim Hathaway
-(* Revised version 2 by L. Curtis Boyle, May, 1999
-(* Version 2.1 by L. Curtis Boyle, Oct. 13/1999 - to handle ATAPI
-(* Slight changes Oct. 20/1999 to show # of sectors in both hex & decimal
-(* Changed to make it easier for changing controller address, and for handling
-(* both the Master & Slave drives
-(* - also bug fix (LBA mode was not detected correctly)
-DIM bignum:REAL
-DIM prompt:STRING[2]
-DIM driveaccessmsg(4),driveerrors(5):STRING[32]
-DIM ide(512):BYTE
-(* 0=haven't checked yet, 1=found & ok, 2=not found, 3=found & error
-DIM drivefound(2):INTEGER
-DIM ready:INTEGER
-DIM temp:BYTE
-DIM counter:INTEGER
-DIM driveselect(2):BYTE
-DIM drivenumber:INTEGER
-DIM baseaddress:REAL
-DIM idestatus:BYTE
-DIM ideerror:BYTE
-DIM undon(2):BYTE
-DIM undoff(2):BYTE
-DIM invon(2):BYTE
-DIM invoff(2):BYTE
-undon(1)=$1f
-undon(2)=$22
-undoff(1)=$1f
-undoff(2)=$23
-invon(1)=$1f
-invoff(1)=$1f
-invon(2)=$20
-invoff(2)=$21
-driveaccessmsg(1)="Has not been checked"
-driveaccessmsg(2)="Found & Ok"
-driveaccessmsg(3)="Not found"
-driveaccessmsg(4)="Found with error"
-drivefound(1)=0
-drivefound(2)=0
-driveerrors(1)="No error detected"
-driveerrors(2)="Formatter device error"
-driveerrors(3)="Sector buffer error"
-driveerrors(4)="EC circuitry error"
-driveerrors(5)="Controlling microprocessor error"
-
-driveselect(1)=$A0
-driveselect(2)=$B0
-PRINT CHR$(12);"IDE Detection program Version 2.1"
-PRINT "Version 1.0 Copyright 1996 by Jim Hathaway"
-PRINT "Version 2.1 Copyright Oct, 1999 by L. Curtis Boyle"
-PRINT "Will detect both ATA and ATAPI devices."
-(* Programmer's note: If this program checked and changed the busy flag in the
-(* IDE driver's mem, we _COULD_ theoretically flag the driver busy while this
-(* program is running.. although we would have to cheat like mad with the MMU
-(* to accomplish this...
-PRINT "Make sure you are NOT running an IDE driver while running this program!"
-PRINT "If you are, hit <BREAK> now!"
-PRINT "If you get bizarre results with a 2 drive system, make sure your Master/Slave"
-PRINT "jumper settings don't conflict.  The Ask Jeeves search engine (www.aj.com)"
-PRINT "on the Internet has a lot of drive tech info available, including jumper"
-PRINT "settings."
-PRINT "Please select base address of controller:"
-PRINT "<1> $FF40"
-PRINT "<2> $FF50"
-PRINT "<3> $FF60"
-PRINT "<4> $FF70"
-5 INPUT "Select <1-4>:";counter
-IF counter<1 OR counter>4 THEN 5
-IF counter=1 THEN
-  baseaddress=65344.
-ELSE
-  IF counter=2 THEN
-    baseaddress=65360.
-  ELSE
-    IF counter=3 THEN
-      baseaddress=65376.
-    ELSE
-      baseaddress=65392.
-    ENDIF
-  ENDIF
-ENDIF
-
-(* Start with drive 0
-drivenumber=1
-
-(* Select drive 0 in NON-LBA mode, and do a Execute Drive Diagnostic command
-10 POKE baseaddress+$c,driveselect(drivenumber)
-POKE baseaddress+$e,$90
-
-(* Need both DRDY (Drive Ready) & DSC (Drive Seek Complete) flags set
-ready=$50
-counter=5000
-WHILE counter>0 DO
-  idestatus=PEEK(baseaddress+$e)
-EXITIF idestatus=ready THEN
-ENDEXIT
-EXITIF LAND(idestatus,1)<>0 THEN
-  PRINT "Error detected during Drive Diagnostic"
-  ideerror=PEEK(baseaddress+$2)
-  temp=LAND(ideerror,$7f)
-  IF temp>1 THEN
-    PRINT "Error on drive 0"
-    drivefound(1)=3
-    IF temp<6 THEN
-      PRINT driveerrors(temp)
-    ELSE
-      PRINT " - unknown error # $";
-      PRINT USING "H2",ideerror
-    ENDIF
-  ENDIF
-  IF ideerror>=$80 THEN
-    PRINT "Error on drive 1"
-    drivefound(2)=3
-    POKE baseaddress+$c,driveselect(2)
-    counter=5000
-    REPEAT
-      idestatus=PEEK(baseaddress+$e)
-    UNTIL LAND(idestatus,$80)=0 OR counter=0
-    ideerror=PEEK(baseaddress+$2)
-    IF ideerror>0 AND ideerror<6 THEN
-      PRINT " - ";driveerrors(ideerror)
-    ELSE
-      PRINT " - unknown error # $";
-      PRINT USING "H2",ideerror
-    ENDIF
-  ENDIF
-ENDEXIT
-EXITIF idestatus=0 THEN
-  PRINT "IDE cable may be plugged in, but no power to drive 0"
-  counter=0
-ENDEXIT
-  counter=counter-1
-ENDWHILE
-IF counter=0 THEN
-  PRINT "Error: Drive 0 did not respond to Drive Diagnostic command!!!!"
-  drivefound(1)=2
-ELSE 
-  IF drivefound(1)=0 THEN
-    PRINT "Drive 0 responded to Drive Diagnostic command"
-    drivefound(1)=1
-  ENDIF
-ENDIF
-
-(* Now, select drive 1 - check if it is there
-POKE baseaddress+$c,driveselect(2)
-REPEAT
-  idestatus=PEEK(baseaddress+$e)
-UNTIL LAND(idestatus,$80)=0
-IF LAND(idestatus,1)<>0 OR LAND(idestatus,$20)<>0 THEN
-  PRINT "Error flag or Write Fault flag set on status register for drive 1"
-  IF LAND(idestatus,1)=1 THEN
-    ideerror=PEEK(baseaddress+$2)
-    PRINT "Drive 1 error code=$";
-    PRINT USING "h2",iderror
-  ELSE
-    PRINT "Write Fault flag set - drive probably not plugged in"
-    drivefound(2)=2
-  ENDIF
-ENDIF
-IF drivefound(2)<>3 AND drivefound(2)<>2 THEN
-  IF idestatus=0 THEN
-    PRINT "There does not appear to be a drive 1"
-    drivefound(2)=2
-  ENDIF
-  IF drivefound(2)=0 THEN
-    drivefound(2)=1
-  ENDIF
-ENDIF
-PRINT
-
-(* Select drive and identify
-FOR drivenumber=1 TO 2
-  PUT #1,undon
-  PRINT "Checking drive ";drivenumber-1
-  PUT #1,undoff
-  IF drivefound(drivenumber)=1 THEN
-    PRINT "Sending IDE identify device command to drive ";drivenumber-1
-    POKE baseaddress+$c,driveselect(drivenumber)
-    POKE baseaddress+$e,$ec
-    counter=2000
-    REPEAT
-      counter=counter-1
-    UNTIL PEEK(baseaddress+$e)=ready+8 OR counter=0
-    IF counter=0 THEN
-      POKE baseaddress+$e,$a1
-      counter=2000
-      REPEAT
-        counter=counter-1
-      UNTIL PEEK(baseaddress+$e)=ready+8 OR counter=0
-    ELSE
-      PRINT "ATA Identified:"
-      GOTO 20
-    ENDIF
-    IF counter=0 THEN
-      PRINT "ERROR: Could not identify either ATA or ATAPI!"
-      END
-    ELSE
-      PRINT "ATAPI Identified:"
-    ENDIF
-20  FOR counter=1 TO 512 STEP 2
-      ide(counter+1)=PEEK(baseaddress)
-      ide(counter)=PEEK(baseaddress+1.)
-    NEXT counter
-    PRINT "Model#=           ";
-    PUT #1,invon
-    FOR counter=55 TO 90
-      PRINT CHR$(ide(counter)); 
-    NEXT counter
-    PUT #1,invoff
-    PRINT 
-    PRINT "Firmware Revision=";
-    PUT #1,invon
-    FOR counter=47 TO 54
-      PRINT CHR$(ide(counter));
-    NEXT counter
-    PUT #1,invoff
-    PRINT
-    PRINT "Serial#=          "; 
-    PUT #1,invon
-    FOR counter=21 TO 41
-      PRINT CHR$(ide(counter)); 
-    NEXT counter
-    PUT #1,invoff
-    PRINT 
-    PRINT USING "'Configuration=0x',H2,H2", ide(1), ide(2)
-    PRINT "Logical Cyls="; ide(3)*256+ide(4)
-    PRINT "Logical Heads="; ide(7)*256+ide(8)
-    PRINT "Logical Sectors="; ide(13)*256+ide(14)
-(* Note: not using ide(115-118) for CHS sector count, since some older ATA-1
-(* drives do NOT report it correctly.
-    bignum=(ide(3)*256.+ide(4))*(ide(7)*256.+ide(8))*(ide(13)*256.+ide(14))
-    PRINT USING "'# of user addressable sectors in CHS mode=',x13,R10.0";bignum
-    IF ide(96)=0 THEN 
-      PRINT "READ/WRITE multiple not supported"
-    ELSE
-      PRINT ide(96); " Sectors per READ/WRITE multiple"
-    ENDIF 
-(* Bug fix - originally checked if equal to 1 (which it NEVER would be, since
-(*   we are LANDing the 2ND bit!)
-    IF LAND(ide(99),2)=2 THEN
-      PRINT "LBA is supported"
-      bignum=16777216.*ide(123)+65536.*ide(124)+256.*ide(121)+ide(122)
-      PRINT USING "'# of user addressable sectors in LBA mode=$',h2,h2,h2,h2,x4,R10.0";ide(123),ide(124),ide(121),ide(122),bignum
-    ELSE 
-      PRINT "LBA is not supported"
-    ENDIF 
-    PRINT "PIO data tranfer cycle timing="; ide(103)
-    PRINT "Current logical cylinders="; ide(109)*256+ide(110)
-    PRINT "Current logical heads="; ide(111)*256+ide(112)
-    PRINT "Current logical Sectors="; ide(113)*256+ide(114)
-    PRINT
-    INPUT "Press <ENTER> to continue:";prompt
-  ELSE
-    PRINT "Drive ";drivenumber-1;" not accessable:";
-    PRINT driveaccessmsg(drivefound(drivenumber)+1)
-  ENDIF
-NEXT drivenumber
-PRINT "Program finished."
-END