aboutsummaryrefslogtreecommitdiff
path: root/better_assembler/string.as
blob: c42c4b6d5fe8cd74c5bb4df0ae8d545a92a76caf (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
49
50
51
52
53
54
55
56
57
58
59
<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
<0180 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
<0200 cmpstr
DI      R4 0
LBR     R2 R0 R4
LBR     R3 R1 R4
CR3     R2 R3
JN      3
CI      R2 0
JE      1
AAI8    R4 1
JA      3767
JR      R14