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 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
 
+10 -10
View File
@@ -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