From 06e00f9343ac52d2339d97043638587fd82e4040 Mon Sep 17 00:00:00 2001 From: cuz Date: Sun, 9 Apr 2006 11:43:03 +0000 Subject: [PATCH] Declare zero page variables before use. Otherwise they aren't used in zero page addressing mode, if the assembler has a choice. git-svn-id: svn://svn.cc65.org/cc65/trunk@3725 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/atari/read.s | 74 +++++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 36 deletions(-) diff --git a/libsrc/atari/read.s b/libsrc/atari/read.s index cdddd2b23..19d33cb66 100644 --- a/libsrc/atari/read.s +++ b/libsrc/atari/read.s @@ -8,43 +8,57 @@ .import __rwsetup,__do_oserror,__inviocb,__oserror .export _read -_read: jsr __rwsetup ; do common setup for read and write - beq done ; if size 0, it's a no-op - cpx #$FF ; invalid iocb? - beq _inviocb +_read: jsr __rwsetup ; do common setup for read and write + beq done ; if size 0, it's a no-op + cpx #$FF ; invalid iocb? + beq _inviocb .ifdef LINEBUF ; E: should be always at IOCB #0 ; fixme: what happens when user closes and reopens stdin? - cpx #0 ; E: handler (line oriented keyboard input)? - beq do_line + cpx #0 ; E: handler (line oriented keyboard input)? + beq do_line .endif - lda #GETCHR ; iocb command code - sta ICCOM,x - jsr CIOV ; read it - bpl done - cpy #EOFERR ; eof is treated specially - beq done - jmp __do_oserror ; update errno - -done: lda ICBLL,x ; buf len lo - pha ; save - lda ICBLH,x ; get buf len hi - tax ; to X -okdone: lda #0 - sta __oserror ; clear system dependend error code - pla ; get buf len lo + lda #GETCHR ; iocb command code + sta ICCOM,x + jsr CIOV ; read it + bpl done + cpy #EOFERR ; eof is treated specially + beq done + jmp __do_oserror ; update errno + +done: lda ICBLL,x ; buf len lo + pha ; save + lda ICBLH,x ; get buf len hi + tax ; to X +okdone: lda #0 + sta __oserror ; clear system dependend error code + pla ; get buf len lo rts _inviocb: - jmp __inviocb + jmp __inviocb .ifdef LINEBUF ; line oriented input + .segment "EXTZP" : zeropage + +index: .res 1 ; index into line buffer +buflen: .res 1 ; length of used part of buffer +cbs: .res 1 ; current buffer size: buflen - index +dataptr:.res 2 ; temp pointer to user buffer +copylen:.res 1 ; temp counter + + .bss + +linebuf:.res LINEBUF ; the line buffer + + .code + do_line: lda buflen ; line buffer active? bne use_buf ; yes, get data from there @@ -86,7 +100,7 @@ do_line: newbuf: lda ICBLL,x ; get # of bytes read sta buflen - lda #0 + lda #0 sta index ; fresh buffer ; restore user buffer address & length @@ -129,7 +143,7 @@ icbll_copy: lda ICBAL,x ; buffer address sta dataptr - lda ICBAH,x ; buffer address + lda ICBAH,x ; buffer address sta dataptr+1 lda ICBLL,x sta copylen @@ -164,17 +178,5 @@ btsmall: sta ICBLL,x bpl icbll_copy - .segment "EXTZP" : zeropage - -index: .res 1 ; index into line buffer -buflen: .res 1 ; length of used part of buffer -cbs: .res 1 ; current buffer size: buflen - index -dataptr:.res 2 ; temp pointer to user buffer -copylen:.res 1 ; temp counter - - .bss - -linebuf:.res LINEBUF ; the line buffer - .endif ; .ifdef LINEBUF -- 2.39.5