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:
Broken Pipe
2024-02-18 05:44:23 +00:00
parent ec4f1f0319
commit df6e888207
2 changed files with 20 additions and 12 deletions
+10 -2
View File
@@ -82,7 +82,15 @@ SECT:
MOV AL,BL
OUTB DISK+2
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
MOV AL,READCOM
JNZ OUTCOM
@@ -145,4 +153,4 @@ BOOT:
MOV ES,AX
MOV DS,AX
JMP 0,SEG


+10 -10
View File
@@ -278,13 +278,13 @@ PUTSEC:
MOV CX,80H
IF TARBELL
INB DISK ;Get head load bit
IN DISK ;Get head load bit
ENDIF
IF CROMEMCO
INB DISK+4 ;Get head load bit
IN DISK+4 ;Get head load bit
XCHG AL,AH
OUTB DISK+4 ;Turn on auto-wait
OUT DISK+4 ;Turn on auto-wait
XCHG AL,AH
ENDIF
@@ -373,7 +373,7 @@ WRDONE:
HOME:
IF CROMEMCO
TEST AH,10H ;Check seek speed bit
TEST AH,10H ;Check 8" (PerSci) bit
JNZ RESTORE
ENDIF
@@ -391,7 +391,7 @@ TRYHOM:
MOVHEAD:
IF CROMEMCO
TEST AH,10H ;Check seek speed bit
TEST AH,10H ;Check 8" (PerSci) bit
JNZ FASTSK
ENDIF
@@ -399,8 +399,8 @@ DCOM:
OUT DISK
MOV AL,50
DELAY:
DEC AL ;Delay 10 microseconds
JNZ DELAY
DEC AL
JNZ DELAY ;Delay 100 microseconds
GETSTAT:
IN DISK+4
TEST AL,DONEBIT
@@ -518,7 +518,7 @@ FAT3: DS LFAT
; Cromemco drive select byte is derived as follows:
; Bit 7 = 0
; Bit 6 = 1 if fast seek (PerSci)
; Bit 6 = X (unassigned)
; Bit 5 = 1 (motor on)
; Bit 4 = 0 for 5", 1 for 8" drives
; Bit 3 = 1 for drive 3
@@ -587,7 +587,7 @@ FAT2: DS SFAT
ENDIF
IF CUSTOM
; Table for 2 large drives without fast seek
; Table for 2 large drives
DRVTAB: DB 31H,32H
TRKPT: DB 0,1
TRKTAB: DB -1,-1
@@ -602,4 +602,4 @@ INITTAB:DB 2
FAT0: DS LFAT
FAT1: DS LFAT
ENDIF