blob: 35f924843d03239488c413c449c3a8e4be98094f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
<0100 putstr
register zero : string offset
register one : current character, uart status
register two : tx fifo full bitmask
register three : uart zero base
LL R3 5 load uart zero base
DI R2 40 tx fifo full bitmask
LI5 R1 R3 6 get uart status
BT R1 R2 check if ready to send
JN 374 loop if not ready
LBI R1 R0 0 load one char from memory
BT R1 R1 test byte
JE 2 done if zero
SBI R1 R3 0 send one byte
AAI8 R0 1 increment string pointer
JA 3766 next char
JR R14 jump to link register
Q 0400 00 uart zero base
Q 0400 03
<0200 getstr
register zero : string offset
register one : current character, uart status
register two : rx fifo empty bitmask
register three : uart zero base
LL R3 12 load uart zero base
DI R2 60 rx fifo empty or tx fifo full bitmask
LI5 R1 R3 6 get uart status
BT R1 R2 check if ready to receive and transmit
JN 374 loop if not ready
LBI R1 R3 0 get one char
SBI R1 R3 0 echo the char
CI R1 015 compare to carriage return
JE 2 done if equal
SBI R1 R0 0 write one char to memory
AAI8 R0 1 increment string pointer
JA 3764 next char
DI R1 000 null byte
SBI R1 R0 0 store null byte
DI R2 40 tx fifo full bitmask
LI5 R1 R3 6 get uart status
BT R1 R2 check if ready to transmit
JN 374 loop if not ready
DI R1 012 newline
SBI R1 R3 0 send newline
JR R14 jump to link register
Q 0000 00 alignment
Q 0400 00 uart zero base
Q 0400 03
|