ld b, #0 ; setup count
ld c, #IDE_REG_DATA ; setup port number
or a ; test is_user
- jr z, goread ; just start the transfer if kernel memory
- call map_process_always ; else map user memory first
-goread: inir ; transfer first 256 bytes
+ call nz, map_process_always ; map user memory first if required
+ inir ; transfer first 256 bytes
inir ; transfer second 256 bytes
or a ; test is_user
ret z ; done if kernel memory transfer
ld b, #0 ; setup count
ld c, #IDE_REG_DATA ; setup port number
or a ; test is_user
- jr z, gowrite ; just start the transfer if kernel memory
- call map_process_always ; else map user memory first
-gowrite: otir ; transfer first 256 bytes
+ call nz, map_process_always ; else map user memory first if required
+ otir ; transfer first 256 bytes
otir ; transfer second 256 bytes
or a ; test is_user
ret z ; done if kernel memory transfer
or a ; test is_user
push af ; save flags
ld a, #PPIDE_BASE+0 ; I will be needing this later
- jr z, goread ; just start the transfer if kernel memory
- call map_process_always ; else map user memory first
+ call nz, map_process_always ; map user memory first if required
goread: ; now we do the transfer
out (c), e ; assert /RD
ld c, a ; PPIDE_BASE
or a ; test is_user
push af ; save flags
ld a, #PPIDE_BASE+0 ; I will be needing this later
- jr z, gowrite ; just start the transfer if kernel memory
- call map_process_always ; else map user memory first
+ call nz, map_process_always ; map user memory first if required
gowrite: ; now we do the transfer
out (c), d ; de-assert /WR
ld c, a ; PPIDE_BASE