38 lines
762 B
ArmAsm
38 lines
762 B
ArmAsm
|
.define Mread
|
||
|
.sect .text
|
||
|
.sect .rom
|
||
|
.sect .data
|
||
|
.sect .bss
|
||
|
.sect .text
|
||
|
|
||
|
! This subroutine reads characters from the standard input.
|
||
|
! It ignores the filedes.
|
||
|
! It reads atmost 255 characters. So the runtime system must
|
||
|
! provide a way of dealing with this.
|
||
|
! The subroutine RDCH is a special one provided by the BBC
|
||
|
! microcomputer.
|
||
|
|
||
|
|
||
|
Mread:
|
||
|
jsr Pop ! ignore filedescriptor
|
||
|
jsr Pop ! bufptr
|
||
|
stx ADDR ! address of character buffer (lowbyte)
|
||
|
sta ADDR+1 ! address of character buffer (highbyte)
|
||
|
jsr Pop ! number of characters
|
||
|
ldy #0 ! <= 255
|
||
|
inx
|
||
|
1: jsr RDCH ! read a character from the current inputstream
|
||
|
bcs 8f
|
||
|
sta (ADDR),y
|
||
|
iny
|
||
|
dex
|
||
|
bne 1b
|
||
|
8: tya
|
||
|
tax
|
||
|
lda #0
|
||
|
jsr Push ! number of characters red.
|
||
|
tax ! report a succesfull read.
|
||
|
rts
|
||
|
|
||
|
|