; reads bytes from a raw cart and does not understand the concept of files.
; So if you read over the end of file you get data from the next file.
;
-; The count-parameter can be positive (Atari style) or negative (BLL style).
-; In any case the read routine will work correctly.
+; The count-parameter is positive (Atari style).
;
; int __fastcall__ read(int fd,void *buf,int count)
;
- .importzp _FileDestPtr
- .import lynxread0
- .import pushax,ldaxysp,ldax0sp,incsp6
- .export _read
+ .importzp _FileDestPtr
+ .import lynxread0
+ .import pushax,ldaxysp,ldax0sp,incsp6
+ .export _read
-.segment "CODE"
+.segment "CODE"
-.proc _read: near
+.proc _read: near
-.segment "CODE"
+.segment "CODE"
- jsr pushax
- ldy #$03
- jsr ldaxysp
- sta _FileDestPtr
- stx _FileDestPtr+1
- jsr ldax0sp
- phx ; The BLL kit uses negative counts
- plx ; while the basic Lynx uses positive
- bmi @1 ; make all counts negative
- eor #$FF
- pha
- txa
- eor #$FF
- bra @2
-@1: pha
- txa
-@2: tay
- plx
- jsr lynxread0
- jsr ldax0sp
- jmp incsp6
+ jsr pushax
+ ldy #$03
+ jsr ldaxysp
+ sta _FileDestPtr
+ stx _FileDestPtr+1
+ jsr ldax0sp
+ pha
+ txa
+ eor #$FF
+ tay
+ pla
+ eor #$FF
+ tax
+ jsr lynxread0
+ jsr ldax0sp
+ jmp incsp6
.endproc