45 lines
577 B
ArmAsm
45 lines
577 B
ArmAsm
|
.define putchar,getchar
|
||
|
! output routine in monitor for the nascom
|
||
|
CRT = 0x013B
|
||
|
! output a charcter
|
||
|
! entry: ascii character in a
|
||
|
.text
|
||
|
putchar:
|
||
|
push hl
|
||
|
push bc
|
||
|
ld hl,tab
|
||
|
ld b,5
|
||
|
1: cp (hl)
|
||
|
jr z,fetch
|
||
|
inc hl
|
||
|
inc hl
|
||
|
djnz 1b
|
||
|
2: call CRT
|
||
|
pop bc
|
||
|
pop hl
|
||
|
ret
|
||
|
fetch: inc hl
|
||
|
ld a,(hl)
|
||
|
jr 2b
|
||
|
! conversion table for nascom characters
|
||
|
tab: .byte 0x0D,0x00
|
||
|
.byte 0x1B,0x1E
|
||
|
.byte 0x08,0x1D
|
||
|
.byte 0x0A,0x1F
|
||
|
.byte 0x7F,0x00
|
||
|
|
||
|
KBD = 0x69
|
||
|
get character from keyboard
|
||
|
getchar:
|
||
|
call KBD
|
||
|
jr nc,getchar
|
||
|
cp 0x1F
|
||
|
jr z,CR
|
||
|
cp 0x1D
|
||
|
jr z,BS
|
||
|
ret
|
||
|
CR: ld a,0xA
|
||
|
ret
|
||
|
BS: ld a,0x8
|
||
|
ret
|