diff options
author | pommicket <pommicket@gmail.com> | 2021-11-10 21:22:25 -0500 |
---|---|---|
committer | pommicket <pommicket@gmail.com> | 2021-11-10 21:22:25 -0500 |
commit | ea6989a71a221ed7a2cf144f7968fbbec2cec193 (patch) | |
tree | 77e1a4690d9a83e08e47c0bf1dc7f1270f9ac868 | |
parent | 15a4be17e331475d3237a55d0cde5f0da3f91a9f (diff) |
start stage 3--hex digit to number
-rw-r--r-- | 03/Makefile | 9 | ||||
-rw-r--r-- | 03/in02 | 114 | ||||
-rw-r--r-- | 03/in03 | 9 |
3 files changed, 132 insertions, 0 deletions
diff --git a/03/Makefile b/03/Makefile new file mode 100644 index 0000000..e25c8f0 --- /dev/null +++ b/03/Makefile @@ -0,0 +1,9 @@ +all: out02 +out02: in02 + ../02/out01 +out03: out02 in03 + ./out02 +%.html: %.md ../markdown + ../markdown $< +clean: + rm -f out* README.html @@ -0,0 +1,114 @@ +jm +:-co +::if +'i +'n +'0 +'3 +00 +::of +'o +'u +'t +'0 +'3 +00 +::BD +'B +'a +'d +20 +'d +'i +'g +'i +'t +\n +// +// +// +::co +// open input file +im +--if +JA +zA +IA +im +##2. +sy +// open output file +im +--of +JA +im +##241. +IA +im +##1ed. +DA +im +##2. +sy +im +##43. +BA +im +--hx +cl +jm +:-ex +// +// +// exit with code in rax +::ex +JA +im +##3c. +sy +// convert ASCII hex digit in rbx to number in rax. +::hx +im +##30. compare with ascii '0' +jg +:-bd bad digit if < '0' +im +##39. +jl +:-af probably a-f +im +##ffffffffffffffd0. -48 +jm +:-hX +::af +im +##61. ASCII 'a' +jg +:-bd bad digit (not 0-9, and less than 'a') +im +##66. ASCII 'f' +jl +:-bd bad digit (not 0-9, and greater than 'f') +im +##ffffffffffffffa9. -87 (10 - 'a') +::hX ++B +re // return +// bad digit +::bd +im +##2. stderr +JA +im +--BD error message +IA +im +##a. length of error message +DA +im +##1. write +sy +im +##1. +jm +:-ex @@ -0,0 +1,9 @@ +J=d0 +A=d60 +syscall +:label +B+=J +B<<=9 +B-=J +J?<B-label + |