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.
pull/360/head 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 The RCBus Scott Baker WDC-based floppy module should be jumpered
for I/O base address 0x50 (SV1: 11-12), JP1 (/DACK): 1-2, 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 The RCBus FDC by Alan Cox (Etched Pixels) needs to be strapped
for base I/O address 0x48. 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 UARTINTS .SET FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3
;UARTCFG .SET UARTCFG | SER_RTS ;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) PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
; ;
ESPENABLE .EQU FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.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) HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
HDSKTRACE .EQU 1 ; HDSK: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) 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 IN A,(FDC_MSR) ; READ MSR
;CALL PC_SPACE ; *DEBUG* ;CALL PC_SPACE ; *DEBUG*
;CALL PRTHEXBYTE ; *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: 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 PC_SPACE ; *DEBUG*
;CALL PRTHEXBYTE ; *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 ; UNIT INITIALIZATION
; ;

2
Source/ver.inc

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

2
Source/ver.lib

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

Loading…
Cancel
Save