;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 ;Convert and print the high nibble ;Convert ror r0 ror r0 ror r0 ror r0 cleq r0, r0, n2hex ;Print store ffff, r0 ;Re-load the character to r0 xor r0, r0 xor r0, r2 ;Convert and print the low nibble ;Convert cleq r0, r0, n2hex ;Print 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, nbl0 breq r0, r1, dgt0 load r1, nbl1 breq r0, r1, dgt1 load r1, nbl2 breq r0, r1, dgt2 load r1, nbl3 breq r0, r1, dgt3 load r1, nbl4 breq r0, r1, dgt4 load r1, nbl5 breq r0, r1, dgt5 load r1, nbl6 breq r0, r1, dgt6 load r1, nbl7 breq r0, r1, dgt7 load r1, nbl8 breq r0, r1, dgt8 load r1, nbl9 breq r0, r1, dgt9 load r1, nbla breq r0, r1, dgta load r1, nblb breq r0, r1, dgtb load r1, nblc breq r0, r1, dgtc load r1, nbld breq r0, r1, dgtd load r1, nble breq r0, r1, dgte load r1, nblf breq r0, r1, dgtf ;Load the hexadecimal digit of the nibble dgt0: load r0, hex0 breq r0, r0, n2hend dgt1: load r0, hex1 breq r0, r0, n2hend dgt2: load r0, hex2 breq r0, r0, n2hend dgt3: load r0, hex3 breq r0, r0, n2hend dgt4: load r0, hex4 breq r0, r0, n2hend dgt5: load r0, hex5 breq r0, r0, n2hend dgt6: load r0, hex6 breq r0, r0, n2hend dgt7: load r0, hex7 breq r0, r0, n2hend dgt8: load r0, hex8 breq r0, r0, n2hend dgt9: load r0, hex9 breq r0, r0, n2hend dgta: load r0, hexa breq r0, r0, n2hend dgtb: load r0, hexb breq r0, r0, n2hend dgtc: load r0, hexc breq r0, r0, n2hend dgtd: load r0, hexd breq r0, r0, n2hend dgte: load r0, hexe breq r0, r0, n2hend dgtf: load r0, hexf breq r0, r0, n2hend ;Return n2hend: ret ;*** ;Data ;Characters cr: data d lf: data a space: data 20 prompt: data 3e ;Mask mask: data f ;Nibble table nbl0: data 0 nbl1: data 1 nbl2: data 2 nbl3: data 3 nbl4: data 4 nbl5: data 5 nbl6: data 6 nbl7: data 7 nbl8: data 8 nbl9: data 9 nbla: data a nblb: data b nblc: data c nbld: data d nble: data e nblf: data f ;Hexadecimal table hex0: data 30 hex1: data 31 hex2: data 32 hex3: data 33 hex4: data 34 hex5: data 35 hex6: data 36 hex7: data 37 hex8: data 38 hex9: data 39 hexa: data 41 hexb: data 42 hexc: data 43 hexd: data 44 hexe: data 45 hexf: data 46