Browse Source

Merge branch 'dev' of https://github.com/wwarthen/RomWBW into dev

pull/246/head
Wayne Warthen 5 years ago
parent
commit
acd1b52893
  1. 13
      Source/HBIOS/dma.asm
  2. 39
      Source/HBIOS/md.asm

13
Source/HBIOS/dma.asm

@ -26,6 +26,8 @@ DMA_RESET .equ $c3
;DMA_ENABLE_AFTER_RETI .equ $b7
;DMA_REINIT_STATUS_BYTE .equ $8b
;
DMA_FBACK .equ TRUE
;
;==================================================================================================
; DMA INITIALIZATION CODE
;==================================================================================================
@ -67,9 +69,18 @@ DMA_NOTFOUND:
push af
call PRTSTRD
.db " NOT PRESENT$"
#IF (DMA_FBACK)
call PRTSTRD
.db ". USING SOFTWARE$"
LD A,ERR_NOHW
LD (DMA_FAIL_FLAG),A
#ENDIF
pop af
jr DMA_EXIT
;
DMA_FAIL_FLAG:
.db 0
;
;==================================================================================================
; DMA PROBE - WRITE TO ADDRESS REGISTER AND READ BACK

39
Source/HBIOS/md.asm

@ -359,14 +359,28 @@ MD_SECM:
LD DE,(MD_DSKBUF)
;
#IF (DMAENABLE & (DMAMODE=DMAMODE_ECB))
#IF (DMA_FBACK)
LD A,(DMA_FAIL_FLAG)
OR A
JR NZ,MD_NODMA
#ENDIF
LD BC,512-1 ; COPY ONE 512B SECTOR FROM THE
CALL DMALDIR ; 4K SECTOR TO THE DISK BUFFER
#ELSE
JP DMALDIR ; 4K SECTOR TO THE DISK BUFFER
#ENDIF
MD_NODMA:
#IF (!(DMAENABLE & (DMAMODE=DMAMODE_ECB)))
LD BC,512 ; COPY ONE 512B SECTOR FROM THE
LDIR ; 4K SECTOR TO THE DISK BUFFER
XOR A
RET
#ELSE
#IF (DMA_FBACK)
LD BC,512 ; COPY ONE 512B SECTOR FROM THE
LDIR ; 4K SECTOR TO THE DISK BUFFER
XOR A
#ENDIF
RET
#ENDIF
#ENDIF
;
; SETUP DE:HL AS THE SECTOR ADDRESS TO READ OR WRITE
;
@ -479,14 +493,27 @@ MD_SECM1: ; DESIRED SECTOR IS IN BUFFER
;
LD HL,(MD_DSKBUF)
#IF (DMAENABLE & (DMAMODE=DMAMODE_ECB))
#IF (DMA_FBACK)
LD A,(DMA_FAIL_FLAG)
OR A
JR NZ,MD_NODMA1
#ENDIF
LD BC,512-1 ; COPY ONE 512B SECTOR FROM THE
CALL DMALDIR ; THE DISK BUFFER TO 4K SECTOR
RET NZ ; EXIT IF DMA COPY ERROR
#ELSE
JR MD_NODMAERR
#ENDIF
MD_NODMA1:
#IF (!(DMAENABLE & (DMAMODE=DMAMODE_ECB)))
LD BC,512 ; COPY ONE 512B SECTOR FROM THE
LDIR ; THE DISK BUFFER TO 4K SECTOR
LDIR
#ELSE
#IF (DMA_FBACK) ; THE DISK BUFFER TO 4K SECTOR
LD BC,512
LDIR
#ENDIF
;
#ENDIF
MD_NODMAERR:
LD IX,MD_F4KBUF ; SET SOURCE ADDRESS
LD HL,MD_FWRIT_R ; PUT ROUTINE TO CALL
CALL MD_FNCALL ; EXECUTE: WRITE 4K SECTOR

Loading…
Cancel
Save