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

39
Source/HBIOS/md.asm

@ -359,14 +359,28 @@ MD_SECM:
LD DE,(MD_DSKBUF) LD DE,(MD_DSKBUF)
; ;
#IF (DMAENABLE & (DMAMODE=DMAMODE_ECB)) #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 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 LD BC,512 ; COPY ONE 512B SECTOR FROM THE
LDIR ; 4K SECTOR TO THE DISK BUFFER LDIR ; 4K SECTOR TO THE DISK BUFFER
XOR A XOR A
#ENDIF
RET RET
#ENDIF
#ENDIF
; ;
; SETUP DE:HL AS THE SECTOR ADDRESS TO READ OR WRITE ; 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) LD HL,(MD_DSKBUF)
#IF (DMAENABLE & (DMAMODE=DMAMODE_ECB)) #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 LD BC,512-1 ; COPY ONE 512B SECTOR FROM THE
CALL DMALDIR ; THE DISK BUFFER TO 4K SECTOR CALL DMALDIR ; THE DISK BUFFER TO 4K SECTOR
RET NZ ; EXIT IF DMA COPY ERROR 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 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
;
#ENDIF
MD_NODMAERR:
LD IX,MD_F4KBUF ; SET SOURCE ADDRESS LD IX,MD_F4KBUF ; SET SOURCE ADDRESS
LD HL,MD_FWRIT_R ; PUT ROUTINE TO CALL LD HL,MD_FWRIT_R ; PUT ROUTINE TO CALL
CALL MD_FNCALL ; EXECUTE: WRITE 4K SECTOR CALL MD_FNCALL ; EXECUTE: WRITE 4K SECTOR

Loading…
Cancel
Save