2022-07-31 11:09:15 +00:00
|
|
|
;ASCII code printer
|
|
|
|
|
|
|
|
;Print a prompt
|
|
|
|
load r0, prompt
|
|
|
|
store ffff, r0
|
|
|
|
|
|
|
|
;Read a character to r0 and load it to r2
|
|
|
|
load r0, ffff
|
|
|
|
xor r2, r2
|
|
|
|
xor r2, r0
|
|
|
|
|
2022-07-31 16:16:26 +00:00
|
|
|
;Print a newline
|
|
|
|
cleq r0, r0, newln
|
|
|
|
|
2022-07-31 11:09:15 +00:00
|
|
|
;Get the hexadecimal digit of the high nibble
|
|
|
|
ror r0
|
|
|
|
ror r0
|
|
|
|
ror r0
|
|
|
|
ror r0
|
|
|
|
cleq r0, r0, n2hex
|
|
|
|
|
|
|
|
;Print the digit
|
|
|
|
store ffff, r0
|
|
|
|
|
|
|
|
;Re-load the character to r0
|
|
|
|
xor r0, r0
|
|
|
|
xor r0, r2
|
|
|
|
|
|
|
|
;Get the hexadecimal digit of the low nibble
|
|
|
|
cleq r0, r0, n2hex
|
|
|
|
|
|
|
|
;Print the digit
|
|
|
|
store ffff, r0
|
2022-07-31 16:16:26 +00:00
|
|
|
|
|
|
|
;Print a newline
|
2022-07-31 11:09:15 +00:00
|
|
|
cleq r0, r0, newln
|
|
|
|
|
|
|
|
;Halt
|
|
|
|
halt
|
|
|
|
|
|
|
|
;Print a newline
|
|
|
|
newln: load r1, cr
|
|
|
|
store ffff, r1
|
|
|
|
load r1, lf
|
|
|
|
store ffff, r1
|
|
|
|
ret
|
|
|
|
|
|
|
|
;Get the hexadecimal digit of a nibble
|
|
|
|
;Extract the low nibble
|
|
|
|
n2hex: load r1, mask
|
|
|
|
and r0, r1
|
|
|
|
;Locate the nibble in the table
|
|
|
|
load r1, tbl00
|
|
|
|
breq r0, r1, dgt0
|
|
|
|
load r1, tbl02
|
|
|
|
breq r0, r1, dgt1
|
|
|
|
load r1, tbl04
|
|
|
|
breq r0, r1, dgt2
|
|
|
|
load r1, tbl06
|
|
|
|
breq r0, r1, dgt3
|
|
|
|
load r1, tbl08
|
|
|
|
breq r0, r1, dgt4
|
|
|
|
load r1, tbl0a
|
|
|
|
breq r0, r1, dgt5
|
|
|
|
load r1, tbl0c
|
|
|
|
breq r0, r1, dgt6
|
|
|
|
load r1, tbl0e
|
|
|
|
breq r0, r1, dgt7
|
|
|
|
load r1, tbl10
|
|
|
|
breq r0, r1, dgt8
|
|
|
|
load r1, tbl12
|
|
|
|
breq r0, r1, dgt9
|
|
|
|
load r1, tbl14
|
|
|
|
breq r0, r1, dgta
|
|
|
|
load r1, tbl16
|
|
|
|
breq r0, r1, dgtb
|
|
|
|
load r1, tbl18
|
|
|
|
breq r0, r1, dgtc
|
|
|
|
load r1, tbl1a
|
|
|
|
breq r0, r1, dgtd
|
|
|
|
load r1, tbl1c
|
|
|
|
breq r0, r1, dgte
|
|
|
|
load r1, tbl1e
|
|
|
|
breq r0, r1, dgtf
|
|
|
|
;Load the hexadecimal digit of the nibble
|
|
|
|
dgt0: load r0, tbl01
|
|
|
|
breq r0, r0, n2hend
|
|
|
|
dgt1: load r0, tbl03
|
|
|
|
breq r0, r0, n2hend
|
|
|
|
dgt2: load r0, tbl05
|
|
|
|
breq r0, r0, n2hend
|
|
|
|
dgt3: load r0, tbl07
|
|
|
|
breq r0, r0, n2hend
|
|
|
|
dgt4: load r0, tbl09
|
|
|
|
breq r0, r0, n2hend
|
|
|
|
dgt5: load r0, tbl0b
|
|
|
|
breq r0, r0, n2hend
|
|
|
|
dgt6: load r0, tbl0d
|
|
|
|
breq r0, r0, n2hend
|
|
|
|
dgt7: load r0, tbl0f
|
|
|
|
breq r0, r0, n2hend
|
|
|
|
dgt8: load r0, tbl11
|
|
|
|
breq r0, r0, n2hend
|
|
|
|
dgt9: load r0, tbl13
|
|
|
|
breq r0, r0, n2hend
|
|
|
|
dgta: load r0, tbl15
|
|
|
|
breq r0, r0, n2hend
|
|
|
|
dgtb: load r0, tbl17
|
|
|
|
breq r0, r0, n2hend
|
|
|
|
dgtc: load r0, tbl19
|
|
|
|
breq r0, r0, n2hend
|
|
|
|
dgtd: load r0, tbl1b
|
|
|
|
breq r0, r0, n2hend
|
|
|
|
dgte: load r0, tbl1d
|
|
|
|
breq r0, r0, n2hend
|
|
|
|
dgtf: load r0, tbl1f
|
|
|
|
breq r0, r0, n2hend
|
|
|
|
;Return
|
|
|
|
n2hend: ret
|
|
|
|
|
|
|
|
;Characters
|
|
|
|
prompt: data 3e
|
|
|
|
cr: data d
|
|
|
|
lf: data a
|
|
|
|
|
|
|
|
;Mask
|
|
|
|
mask: data f
|
|
|
|
|
|
|
|
;Hexadecimal table
|
|
|
|
tbl00: data 0
|
|
|
|
tbl01: data 30
|
|
|
|
tbl02: data 1
|
|
|
|
tbl03: data 31
|
|
|
|
tbl04: data 2
|
|
|
|
tbl05: data 32
|
|
|
|
tbl06: data 3
|
|
|
|
tbl07: data 33
|
|
|
|
tbl08: data 4
|
|
|
|
tbl09: data 34
|
|
|
|
tbl0a: data 5
|
|
|
|
tbl0b: data 35
|
|
|
|
tbl0c: data 6
|
|
|
|
tbl0d: data 36
|
|
|
|
tbl0e: data 7
|
|
|
|
tbl0f: data 37
|
|
|
|
tbl10: data 8
|
|
|
|
tbl11: data 38
|
|
|
|
tbl12: data 9
|
|
|
|
tbl13: data 39
|
|
|
|
tbl14: data a
|
|
|
|
tbl15: data 41
|
|
|
|
tbl16: data b
|
|
|
|
tbl17: data 42
|
|
|
|
tbl18: data c
|
|
|
|
tbl19: data 43
|
|
|
|
tbl1a: data d
|
|
|
|
tbl1b: data 44
|
|
|
|
tbl1c: data e
|
|
|
|
tbl1d: data 45
|
|
|
|
tbl1e: data f
|
|
|
|
tbl1f: data 46
|