65 lines
738 B
ArmAsm
65 lines
738 B
ArmAsm
/ read and echo character from tty.
|
|
/ perform normal cr/lf uc/lc mapping.
|
|
tks = 177560
|
|
tkb = 177562
|
|
getc:
|
|
tstb *$tks
|
|
bge getc
|
|
mov tkb,r0
|
|
bic $!177,r0
|
|
cmp r0,$'A
|
|
blo 1f
|
|
cmp r0,$'Z
|
|
bhi 1f
|
|
add $'a-'A,r0
|
|
1:
|
|
cmp r0,$'\r
|
|
bne putc
|
|
mov $'\n,r0
|
|
|
|
/ put a character on the tty.
|
|
/ also performs delay.
|
|
tps = 177564
|
|
tpb = 177566
|
|
putc:
|
|
cmp r0,$'\n
|
|
bne 1f
|
|
mov $'\r,r0
|
|
jsr pc,(r5)
|
|
mov $'\n,r0
|
|
1:
|
|
tstb tps
|
|
bpl 1b
|
|
mov r0,tpb
|
|
rts pc
|
|
|
|
/ write a string to tty
|
|
/ jsr pc, mesg; <string\0>; .even
|
|
mesg:
|
|
movb *(sp),r0
|
|
beq 1f
|
|
jsr pc,(r5)
|
|
inc (sp)
|
|
br mesg
|
|
1:
|
|
add $2,(sp)
|
|
bic $1,(sp)
|
|
rts pc
|
|
|
|
callout:
|
|
clr r0
|
|
cmp (r0),$407
|
|
bne 2f
|
|
1:
|
|
mov 20(r0),(r0)+
|
|
cmp r0,sp
|
|
blo 1b
|
|
2:
|
|
mov $start,-(sp)
|
|
clr pc
|
|
|
|
trvect:
|
|
br putc
|
|
br getc
|
|
br mesg
|