summaryrefslogtreecommitdiff
path: root/03/in02
diff options
context:
space:
mode:
Diffstat (limited to '03/in02')
-rw-r--r--03/in02114
1 files changed, 114 insertions, 0 deletions
diff --git a/03/in02 b/03/in02
new file mode 100644
index 0000000..c8d0cfd
--- /dev/null
+++ b/03/in02
@@ -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