File: read.s

package info (click to toggle)
cc65 2.19-2
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 20,268 kB
  • sloc: ansic: 117,151; asm: 66,339; pascal: 4,248; makefile: 1,009; perl: 607
file content (44 lines) | stat: -rw-r--r-- 1,071 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
;
; Karri Kaksonen, 2010
;
; This function reads count bytes from the place where the address counter is.
; Use lseek to place the address counter where you want to read from.
;
; The file descriptor is ignored in this implementation. The read operation
; 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 is positive (Atari style).
;
; int __fastcall__ read(int fd,void *buf,int count)
;
        .importzp       _FileDestPtr
        .import         lynxread0
        .import         pushax,ldaxysp,ldax0sp,incsp6
        .export         _read

.segment        "CODE"

.proc   _read: near

.segment        "CODE"

        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