Files
2018-01-27 22:35:41 +09:00

33 lines
395 B
ArmAsm

/ getchar() -- get a character from input file fin
.globl _getchar
.comm _errno,2
.comm _fin,518.
_getchar:
mov r5,-(sp)
mov sp,r5
dec _fin+2
bge 1f
mov $_fin+6,_fin+4
mov _fin,r0
sys read; _fin+6; 512.
bes badret
tst r0
beq badret
dec r0
mov r0,_fin+2
1:
clr r0
bisb *_fin+4,r0
inc _fin+4
mov (sp)+,r5
rts pc
badret:
mov r0,_errno
clr r0
clr _fin+2
mov (sp)+,r5
rts pc