40 lines
615 B
ArmAsm
40 lines
615 B
ArmAsm
.define Mwrite
|
|
.sect .text
|
|
.sect .rom
|
|
.sect .data
|
|
.sect .bss
|
|
.sect .text
|
|
|
|
! This subroutine performs the monitor call write.
|
|
! Writing is always done to standardoutput.
|
|
! A zero is returned on exit.
|
|
! The subroutine WRCH is a special routine of the BBC
|
|
! microcomputer.
|
|
|
|
|
|
Mwrite:
|
|
jsr Pop ! get fildes
|
|
jsr Pop ! get address of characterbuffer
|
|
stx ADDR ! bufferaddress (lowbyte)
|
|
sta ADDR+1 ! bufferaddress (highbyte)
|
|
jsr Pop ! number of characters to be writen.
|
|
ldy #0
|
|
1: lda (ADDR),y
|
|
cmp #10
|
|
bne 2f
|
|
pha
|
|
lda #13
|
|
jsr WRCH
|
|
pla
|
|
2: jsr WRCH
|
|
iny
|
|
dex
|
|
bne 1b
|
|
tya
|
|
tax
|
|
lda #0
|
|
jsr Push
|
|
tax
|
|
rts
|
|
|