Browse Source

Update ppide.asm

Optimization
pull/74/head
b1ackmai1er 6 years ago
parent
commit
684a209c84
  1. 56
      Source/HBIOS/ppide.asm

56
Source/HBIOS/ppide.asm

@ -771,12 +771,12 @@ PPIDE_GETBUF:
RET NZ ; BAIL OUT IF TIMEOUT
;
; SETUP PPI TO READ
LD C,(IY+PPIDE_PPI) ;;
LD C,(IY+PPIDE_PPI) ;
LD A,PPIDE_DIR_READ ; SET DATA BUS DIRECTION TO READ
OUT (C),A ; DO IT
;
; SELECT READ/WRITE IDE REGISTER
LD C,(IY+PPIDE_CTL) ;;
DEC C ; LD C,(IY+PPIDE_CTL)
LD A,PPIDE_REG_DATA ; DATA REGISTER
OUT (C),A ; DO IT
@ -784,12 +784,12 @@ PPIDE_GETBUF:
XOR PPIDE_CTL_DIOR ; SWAP THE READ LINE BIT
LD D,A ; D := READ ASSERTED
;
; LOOP SETUP
LD B,0 ; 256 ITERATIONS
LD C,(IY+PPIDE_DATALO) ; SETUP C WITH IO PORT (LSB)
;
#IF (!PPIDE8BIT)
INC C ; PRE-INCREMENT C
LD B,0 ; LOOP SETUP - 256 ITERATIONS
; SETUP C WITH IO PORT
DEC C ; C = IY+PPIDE_DATAHI
#IF (PPIDE8BIT) ;
DEC C ; C = IY+PPIDE_DATALO
#ENDIF
;
CALL PPIDE_GETBUF1 ; FIRST PASS (FIRST 256 BYTES)
@ -805,24 +805,36 @@ PPIDE_GETBUF:
JP NZ,PPIDE_IOERR
RET
;
PPIDE_GETBUF1: ; START OF READ LOOP
PUSH BC ;;
LD C,(IY+PPIDE_CTL) ;;
OUT (C),D ; ASSERT READ
POP BC ;;
#IF (!PPIDE8BIT)
PPIDE_GETBUF1: ; START OF READ LOOP
;
#IF (PPIDE8BIT)
INC C
INC C
OUT (C),D ; LD C,(IY+PPIDE_CTL)
DEC C ; ASSERT READ
DEC C
INI
PUSH AF
INC C
INC C
OUT (C),E ; LD C,(IY+PPIDE_CTL)
DEC C ; DEASSERT READ
DEC C
POP AF
#ELSE
INC C
OUT (C),D ; LD C,(IY+PPIDE_CTL)
DEC C ; ASSERT READ
DEC C
INI ; GET AND SAVE NEXT BYTE
INC C ; LSB -> MSB
INI
PUSH AF
INC C
OUT (C),E ; LD C,(IY+PPIDE_CTL)
DEC C ; DEASSERT READ
POP AF
#ENDIF
INI ; GET AND SAVE NEXT BYTE
PUSH BC ;;
LD C,(IY+PPIDE_CTL) ;;
OUT (C),E ; DEASSERT READ
POP BC ;;
;
JR NZ,PPIDE_GETBUF1 ; LOOP UNTIL DONE
RET
;

Loading…
Cancel
Save