Fixed bugs in boot sector and I/O system
Fixed bugs in the boot sector and BIOS to allow 86-DOS 0.11 to boot using the Tarbell DD floppy controller.
This commit is contained in:
@@ -82,7 +82,15 @@ SECT:
|
|||||||
MOV AL,BL
|
MOV AL,BL
|
||||||
OUTB DISK+2
|
OUTB DISK+2
|
||||||
MOV CX,128
|
MOV CX,128
|
||||||
INB DISK+4
|
|
||||||
|
IF TARBELL
|
||||||
|
INB DISK ;Get head load status
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF CROMEMCO
|
||||||
|
INB DISK+4 ;Get head load status
|
||||||
|
ENDIF
|
||||||
|
|
||||||
TEST AL,20H
|
TEST AL,20H
|
||||||
MOV AL,READCOM
|
MOV AL,READCOM
|
||||||
JNZ OUTCOM
|
JNZ OUTCOM
|
||||||
@@ -145,4 +153,4 @@ BOOT:
|
|||||||
MOV ES,AX
|
MOV ES,AX
|
||||||
MOV DS,AX
|
MOV DS,AX
|
||||||
JMP 0,SEG
|
JMP 0,SEG
|
||||||
|
|
||||||
@@ -278,13 +278,13 @@ PUTSEC:
|
|||||||
MOV CX,80H
|
MOV CX,80H
|
||||||
|
|
||||||
IF TARBELL
|
IF TARBELL
|
||||||
INB DISK ;Get head load bit
|
IN DISK ;Get head load bit
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
IF CROMEMCO
|
IF CROMEMCO
|
||||||
INB DISK+4 ;Get head load bit
|
IN DISK+4 ;Get head load bit
|
||||||
XCHG AL,AH
|
XCHG AL,AH
|
||||||
OUTB DISK+4 ;Turn on auto-wait
|
OUT DISK+4 ;Turn on auto-wait
|
||||||
XCHG AL,AH
|
XCHG AL,AH
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
@@ -373,7 +373,7 @@ WRDONE:
|
|||||||
|
|
||||||
HOME:
|
HOME:
|
||||||
IF CROMEMCO
|
IF CROMEMCO
|
||||||
TEST AH,10H ;Check seek speed bit
|
TEST AH,10H ;Check 8" (PerSci) bit
|
||||||
JNZ RESTORE
|
JNZ RESTORE
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
@@ -391,7 +391,7 @@ TRYHOM:
|
|||||||
|
|
||||||
MOVHEAD:
|
MOVHEAD:
|
||||||
IF CROMEMCO
|
IF CROMEMCO
|
||||||
TEST AH,10H ;Check seek speed bit
|
TEST AH,10H ;Check 8" (PerSci) bit
|
||||||
JNZ FASTSK
|
JNZ FASTSK
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
@@ -399,8 +399,8 @@ DCOM:
|
|||||||
OUT DISK
|
OUT DISK
|
||||||
MOV AL,50
|
MOV AL,50
|
||||||
DELAY:
|
DELAY:
|
||||||
DEC AL ;Delay 10 microseconds
|
DEC AL
|
||||||
JNZ DELAY
|
JNZ DELAY ;Delay 100 microseconds
|
||||||
GETSTAT:
|
GETSTAT:
|
||||||
IN DISK+4
|
IN DISK+4
|
||||||
TEST AL,DONEBIT
|
TEST AL,DONEBIT
|
||||||
@@ -518,7 +518,7 @@ FAT3: DS LFAT
|
|||||||
|
|
||||||
; Cromemco drive select byte is derived as follows:
|
; Cromemco drive select byte is derived as follows:
|
||||||
; Bit 7 = 0
|
; Bit 7 = 0
|
||||||
; Bit 6 = 1 if fast seek (PerSci)
|
; Bit 6 = X (unassigned)
|
||||||
; Bit 5 = 1 (motor on)
|
; Bit 5 = 1 (motor on)
|
||||||
; Bit 4 = 0 for 5", 1 for 8" drives
|
; Bit 4 = 0 for 5", 1 for 8" drives
|
||||||
; Bit 3 = 1 for drive 3
|
; Bit 3 = 1 for drive 3
|
||||||
@@ -587,7 +587,7 @@ FAT2: DS SFAT
|
|||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
IF CUSTOM
|
IF CUSTOM
|
||||||
; Table for 2 large drives without fast seek
|
; Table for 2 large drives
|
||||||
DRVTAB: DB 31H,32H
|
DRVTAB: DB 31H,32H
|
||||||
TRKPT: DB 0,1
|
TRKPT: DB 0,1
|
||||||
TRKTAB: DB -1,-1
|
TRKTAB: DB -1,-1
|
||||||
@@ -602,4 +602,4 @@ INITTAB:DB 2
|
|||||||
FAT0: DS LFAT
|
FAT0: DS LFAT
|
||||||
FAT1: DS LFAT
|
FAT1: DS LFAT
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
Reference in New Issue
Block a user