|
|
|
@ -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 |
|
|
|
; |
|
|
|
|