; Oliver Schmidt, 12.01.2005
;
- .export rwprolog, rwcommon, rwepilog
- .import popax
+ .export rwprolog, rwcommon, rwepilog
+ .import popax, popptr1
- .include "zeropage.inc"
- .include "errno.inc"
- .include "fcntl.inc"
- .include "mli.inc"
- .include "filedes.inc"
+ .include "zeropage.inc"
+ .include "errno.inc"
+ .include "fcntl.inc"
+ .include "mli.inc"
+ .include "filedes.inc"
rwprolog:
; Save count
- sta ptr2
- stx ptr2+1
+ sta ptr2
+ stx ptr2+1
; Get and save buf
- jsr popax
- sta ptr1
- stx ptr1+1
+ jsr popptr1
; Get and process fd
- jsr popax
- jmp getfd ; Returns A, Y and C
+ jsr popax
+ jmp getfd ; Returns A, Y and C
rwcommon:
; Set fd
- sta mliparam + MLI::RW::REF_NUM
+ sta mliparam + MLI::RW::REF_NUM
; Set buf
- lda ptr1
- ldx ptr1+1
- sta mliparam + MLI::RW::DATA_BUFFER
- stx mliparam + MLI::RW::DATA_BUFFER+1
+ lda ptr1
+ ldx ptr1+1
+ sta mliparam + MLI::RW::DATA_BUFFER
+ stx mliparam + MLI::RW::DATA_BUFFER+1
; Set count
- lda ptr2
- ldx ptr2+1
- sta mliparam + MLI::RW::REQUEST_COUNT
- stx mliparam + MLI::RW::REQUEST_COUNT+1
+ lda ptr2
+ ldx ptr2+1
+ sta mliparam + MLI::RW::REQUEST_COUNT
+ stx mliparam + MLI::RW::REQUEST_COUNT+1
; Call read or write
tya
- ldx #RW_COUNT
- jsr callmli
- bcc rwepilog
- cmp #$4C ; "End of file"
- bne oserr
+ ldx #RW_COUNT
+ jsr callmli
+ bcc rwepilog
+ cmp #$4C ; "End of file encountered"
+ bne oserr
rwepilog:
; Return success
- sta __oserror ; A = 0
- lda mliparam + MLI::RW::TRANS_COUNT
- ldx mliparam + MLI::RW::TRANS_COUNT+1
+ sta __oserror ; A = 0
+ lda mliparam + MLI::RW::TRANS_COUNT
+ ldx mliparam + MLI::RW::TRANS_COUNT+1
rts
; Set __oserror
-oserr: jmp __mappederrno
+oserr: jmp __mappederrno