File: rwcommon.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 (43 lines) | stat: -rw-r--r-- 1,010 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
;
; common iocb setup routine for read, write
; expects __fastcall__ parameters (int fd, void *buf, int count)
;
        .include "atari.inc"
        .include "errno.inc"
        .import popax
        .import fdtoiocb

        .export __rwsetup


__rwsetup:

        pha                     ; push size in stack
        txa
        pha
        jsr     popax           ; get buffer address
        pha
        txa
        pha
        jsr     popax           ; get handle
        jsr     fdtoiocb        ; convert to iocb
        bmi     iocberr         ; negative (X=$FF or A>$7F) on error.
        tax
        pla                     ; store address
        sta     ICBAH,x
        pla
        sta     ICBAL,x
        pla                     ; store length
        sta     ICBLH,x
        pla
        sta     ICBLL,x
        ora     ICBLH,x         ; returns Z if length is 0
        rts

iocberr:pla
        pla
        pla
        pla
        ldx     #$FF            ; indicate error + clear ZF
        rts