mirror of
https://github.com/cc65/cc65.git
synced 2025-01-13 09:31:53 +00:00
Added a simplistic read() that gives a stdin console on the Atmos.
This commit is contained in:
parent
0adad044e7
commit
d56f5d65ab
@ -90,6 +90,7 @@ SCREEN := $BB80
|
|||||||
; ---------------------------------------------------------------------------
|
; ---------------------------------------------------------------------------
|
||||||
; ROM entries
|
; ROM entries
|
||||||
|
|
||||||
|
GETLINE := $C592
|
||||||
TEXT := $EC21
|
TEXT := $EC21
|
||||||
HIRES := $EC33
|
HIRES := $EC33
|
||||||
CURSET := $F0C8
|
CURSET := $F0C8
|
||||||
|
70
libsrc/atmos/read.s
Normal file
70
libsrc/atmos/read.s
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
;
|
||||||
|
; 2013-12-24, Greg King
|
||||||
|
;
|
||||||
|
; int read (int fd, void* buf, unsigned count);
|
||||||
|
;
|
||||||
|
; This function is a hack! It lets us get text from the stdin console.
|
||||||
|
;
|
||||||
|
|
||||||
|
.export _read
|
||||||
|
|
||||||
|
.import popax
|
||||||
|
.importzp ptr1, ptr2, ptr3
|
||||||
|
|
||||||
|
.macpack generic
|
||||||
|
.include "atmos.inc"
|
||||||
|
|
||||||
|
.proc _read
|
||||||
|
|
||||||
|
sta ptr3
|
||||||
|
stx ptr3+1 ; save count as result
|
||||||
|
eor #$FF
|
||||||
|
sta ptr2
|
||||||
|
txa
|
||||||
|
eor #$FF
|
||||||
|
sta ptr2+1 ; Remember -count-1
|
||||||
|
|
||||||
|
jsr popax ; get buf
|
||||||
|
sta ptr1
|
||||||
|
stx ptr1+1
|
||||||
|
jsr popax ; get fd and discard
|
||||||
|
|
||||||
|
L1: inc ptr2
|
||||||
|
bnz L2
|
||||||
|
inc ptr2+1
|
||||||
|
bze L9 ; no more room in buf
|
||||||
|
|
||||||
|
; If there are no more characters in BASIC's input buffer, then get a line from
|
||||||
|
; the console into that buffer.
|
||||||
|
|
||||||
|
L2: ldx text_count
|
||||||
|
bpl L3
|
||||||
|
jsr GETLINE
|
||||||
|
ldx #<(0 - 1)
|
||||||
|
|
||||||
|
L3: inx
|
||||||
|
lda BASIC_BUF,x
|
||||||
|
bnz L4 ; (zero-terminated buffer)
|
||||||
|
ldx #<-1
|
||||||
|
lda #$0A ; return newline char. at end of line
|
||||||
|
L4: stx text_count
|
||||||
|
ldy #0
|
||||||
|
sta (ptr1),y
|
||||||
|
inc ptr1
|
||||||
|
bnz L1
|
||||||
|
inc ptr1+1
|
||||||
|
bnz L1 ; branch always
|
||||||
|
|
||||||
|
; No error, return count.
|
||||||
|
|
||||||
|
L9: lda ptr3
|
||||||
|
ldx ptr3+1
|
||||||
|
rts
|
||||||
|
|
||||||
|
.endproc
|
||||||
|
|
||||||
|
.data
|
||||||
|
|
||||||
|
text_count:
|
||||||
|
.byte <-1
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user