;ASCII code printer ;Print a prompt load r0, prompt store ffff, r0 load r0, space store ffff, r0 ;Read a character to r0 and load it to r2 load r0, ffff xor r2, r2 xor r2, r0 ;Print a newline and align cleq r0, r0, newln load r1, space store ffff, r1 store ffff, r1 ;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 ;Print a newline 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 cr: data d lf: data a space: data 20 prompt: data 3e ;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