Browse Source

FDC Detection Update & Enable ESP Driver on Duodyne

- Based on reports from Martin R, the FDC detection algorithm has been updated to try reading the FDC MSR register twice to try and get the desired value of 0x80.
- Dan Werner's ESP board for Duodyne is working well, so the default Duodyne config has been changed to automatically detect this board.
patch v3.3.0-dev.48
Wayne Warthen 2 years ago
parent
commit
8b7e71049b
  1. 3
      Source/Apps/FDU/fdu.doc
  2. 2
      Source/HBIOS/Config/DUO_std.asm
  3. 1
      Source/HBIOS/cfg_duo.asm
  4. 30
      Source/HBIOS/fd.asm
  5. 2
      Source/ver.inc
  6. 2
      Source/ver.lib

3
Source/Apps/FDU/fdu.doc

@ -153,7 +153,8 @@ JP2 (/FAULT) shorted, JP3 (MINI): 2-3, JP4 (/DC/RDY): 2-3.
The RCBus Scott Baker WDC-based floppy module should be jumpered
for I/O base address 0x50 (SV1: 11-12), JP1 (/DACK): 1-2,
JP2 (TC): 2-3.
JP2 (TC): 2-3. Note that pin 1 of JPX jumpers is toward the bottom
of the board.
The RCBus FDC by Alan Cox (Etched Pixels) needs to be strapped
for base I/O address 0x48.

2
Source/HBIOS/Config/DUO_std.asm

@ -44,3 +44,5 @@ MDFFENABLE .SET FALSE ; MD: ENABLE FLASH FILE SYSTEM
;
UARTINTS .SET FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3
;UARTCFG .SET UARTCFG | SER_RTS
;
ESPENABLE .SET TRUE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)

1
Source/HBIOS/cfg_duo.asm

@ -236,6 +236,7 @@ PRPCONENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER VIDEO/KBD SUPPORT
PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
;
ESPENABLE .EQU FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
ESPCONENABLE .EQU TRUE ; ESP: ENABLE ESP32 CONSOLE IO DRIVER VIDEO/KBD SUPPORT
;
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
HDSKTRACE .EQU 1 ; HDSK: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)

30
Source/HBIOS/fd.asm

@ -811,21 +811,27 @@ FD_DETECT:
IN A,(FDC_MSR) ; READ MSR
;CALL PC_SPACE ; *DEBUG*
;CALL PRTHEXBYTE ; *DEBUG*
CP $80
JR Z,FD_DETECT1 ; $80 IS OK
CP $D0
JR Z,FD_DETECT1 ; $D0 IS OK
RET ; NOPE, ABORT WITH ZF=NZ
;
CP $D0 ; SPECIAL CASE: DATA PENDING?
JR NZ,FD_DETECT1 ; NOPE, MOVE ALONG
IN A,(FDC_DATA) ; SWALLOW THE PENDING DATA
CALL DLY32 ; SETTLE
IN A,(FDC_MSR) ; ... AND REREAD THE STATUS
;CALL PC_SPACE ; *DEBUG*
;CALL PRTHEXBYTE ; *DEBUG*
FD_DETECT1:
;CALL DLY32 ; WAIT A BIT FOR FDC
LD DE,150 ; DELAY: 16us * 150 = 2.4ms
CALL VDELAY
IN A,(FDC_MSR) ; READ MSR AGAIN
CP $80 ; WE EXPECT $80
RET Z ; IF SO, ALL DONE
; WE HAVE SEEN AN FDC THAT NEEDS A SECOND READ TO GET
; DESIRED VALUE, SO TRY ONE MORE TIME
CALL DLY32 ; WAIT A BIT
IN A,(FDC_MSR) ; ... AND REREAD THE STATUS
;CALL PC_SPACE ; *DEBUG*
;CALL PRTHEXBYTE ; *DEBUG*
CP $80
RET ; $80 OK, ELSE NOT PRESENT
CP $80 ; CHECK FOR CORRECT VALUE
RET ; RETURN WITH ZF ACCORDING TO RESULT
;
; UNIT INITIALIZATION
;

2
Source/ver.inc

@ -2,7 +2,7 @@
#DEFINE RMN 3
#DEFINE RUP 0
#DEFINE RTP 0
#DEFINE BIOSVER "3.3.0-dev.47"
#DEFINE BIOSVER "3.3.0-dev.48"
#define rmj RMJ
#define rmn RMN
#define rup RUP

2
Source/ver.lib

@ -3,5 +3,5 @@ rmn equ 3
rup equ 0
rtp equ 0
biosver macro
db "3.3.0-dev.47"
db "3.3.0-dev.48"
endm

Loading…
Cancel
Save