commit 33a53b3653b174098e00a7eeabbd0f47588e3c60 from: Sven M. Hallberg date: Sun Sep 11 15:05:13 2022 UTC add test to exercise tape input (atoi) commit - 9a77229d5509c9c4615422cbf3e597bfcd650f5c commit + 33a53b3653b174098e00a7eeabbd0f47588e3c60 blob - 55f8bb36bfd2c127efdc8fdb585932865f1a4478 blob + 64351d9b25df70f863b5384491982b952458d081 --- Makefile +++ Makefile @@ -1,7 +1,7 @@ CFLAGS += -Wall PROGS = hackem rom -ROMS = add.rom max.rom term0.rom term1.rom term2.rom hello.rom +ROMS = add.rom max.rom term0.rom term1.rom term2.rom hello.rom atoi.rom .PHONY: all test clean all: ${PROGS} ${ROMS} blob - /dev/null blob + c7ecc5d7d80b9b1bb0a30707395198b9579d73bd (mode 644) --- /dev/null +++ atoi.hack @@ -0,0 +1,104 @@ +# read an ASCII decimal number from tape into R0 +# tape reader is mapped at 0x7000 and 0x7001 + + + # jump to start of program +0 000000000001111 # 0: @15 = MAIN +1 11 0 101010 000 111 # 1: 0;JMP + +# +# GETC: read a byte of input from tape into R4. return to R3. +# + # (GETC) + + # write 1 to control word at 0x7001: +0 111000000000001 # 2: @28673 = 0x7001 +1 11 0 111111 001 000 # 3: M=1; + + # wait until 0x7001 negative (position valid): + # (WAIT) +0 111000000000001 # 4: @28673 = 0x7001 +1 11 1 110000 010 000 # 5: D=M; +0 000000000000100 # 6: @4 = WAIT +1 11 0 001100 000 011 # 7: D;JGE + + # read 0x7000 into R4 (negative indicates EOF): +0 111000000000000 # 8: @28672 = 0x7000 +1 11 1 110000 010 000 # 9: D=M; +0 000000000000100 # 10: @4 +1 11 0 001100 001 000 # 11: M=D; + + # jump to return address in R3: +0 000000000000011 # 12: @3 +1 11 1 110000 100 111 # 13: A=M;JMP + + +# +# END: terminate (infinite loop). +# + # (END) +1 11 0 101010 000 111 # 14: 0;JMP + + +# +# MAIN: read digits and accumulate value in R0. +# + # (MAIN) + + # read input character (into R4): +0 000000000010101 # 15: @21 = K1 +1 11 0 110000 010 000 # 16: D=A; +0 000000000000011 # 17: @3 +1 11 0 001100 001 000 # 18: M=D; +0 000000000000010 # 19: @2 = GETC +1 11 0 101010 000 111 # 20: 0;JMP + # (K1) + + # terminate on end of input or non-digit +0 000000000000100 # 21: @4 +1 11 1 110000 010 000 # 22: D=M; +0 000000000110110 # 23: @54 = DONE +1 11 0 001100 000 100 # 24: D;JLT +0 000000000111001 # 25: @57 = '9' +1 11 0 010011 010 000 # 26: D=D-A; +0 000000000110110 # 27: @54 = DONE +0 11 0 001100 000 001 # 28: D;JGT +0 000000000000100 # 29: @4 +1 11 1 110000 010 000 # 30: D=M; +0 000000000110000 # 31: @48 = '0' +1 11 0 010011 010 000 # 32: D=D-A; +0 000000000110110 # 33: @54 = DONE +1 11 0 001100 000 100 # 34: D;JLT + + # replace R4 with digit value +0 000000000000100 # 35: @4 +1 11 0 001100 001 000 # 36: M=D; + + # multiply R0 by 10: +0 000000000000000 # 37: @0 +1 11 1 110000 010 000 # 38: D=M; +1 11 1 000010 001 000 # 39: M=M+D; (* 2) +1 11 1 000010 001 000 # 40: M=M+D; (* 4) +1 11 1 000010 001 000 # 41: M=M+D; (* 4) +1 11 1 000010 001 000 # 42: M=M+D; (* 5) +1 11 1 000010 001 000 # 43: M=M+D; (* 6) +1 11 1 000010 001 000 # 44: M=M+D; (* 7) +1 11 1 000010 001 000 # 45: M=M+D; (* 8) +1 11 1 000010 001 000 # 46: M=M+D; (* 9) +1 11 1 000010 001 000 # 47: M=M+D; (* 10) + + # add input digit (R4): +0 000000000000100 # 48: @4 +1 11 1 110000 010 000 # 49: D=M; +0 000000000000000 # 50: @0 +1 11 1 000010 001 000 # 51: M=M+D; + + # process next input character: +0 000000000001111 # 52: @15 = MAIN +1 11 0 101010 000 111 # 53: 0;JMP + + # terminate successfully: + # (DONE) +1 11 0 101010 010 000 # 54: D=0; +0 000000000001110 # 55: @14 = END +1 11 0 101010 000 111 # 56: 0;JMP blob - /dev/null blob + d800886d9c86731ae5c4a62b0b77c437015e00d2 (mode 644) --- /dev/null +++ atoi.in @@ -0,0 +1 @@ +123 \ No newline at end of file blob - /dev/null blob + 1057d1676ea5b65b52e8f45bd12a0ec7b28c43fb (mode 644) --- /dev/null +++ atoi.tsv @@ -0,0 +1,774 @@ +T PC instr. A D R0/SP R1/LCL R2/ARG R3/THIS R4/THAT +0 0 000017 0 0 0 0 0 0 0 +1 1 165207 15 0 0 0 0 0 0 +2 15 000025 15 0 0 0 0 0 0 +3 16 166020 21 0 0 0 0 0 0 +4 17 000003 21 21 0 0 0 0 0 +5 18 161410 3 21 0 0 0 0 0 +6 19 000002 3 21 0 0 0 21 0 +7 20 165207 2 21 0 0 0 21 0 +8 2 070001 2 21 0 0 0 21 0 +9 3 167710 28673 21 0 0 0 21 0 +10 4 070001 28673 21 0 0 0 21 0 +11 5 176020 28673 21 0 0 0 21 0 +12 6 000004 28673 0 0 0 0 21 0 +13 7 161403 4 0 0 0 0 21 0 +14 4 070001 4 0 0 0 0 21 0 +15 5 176020 28673 0 0 0 0 21 0 +16 6 000004 28673 0 0 0 0 21 0 +17 7 161403 4 0 0 0 0 21 0 +18 4 070001 4 0 0 0 0 21 0 +19 5 176020 28673 0 0 0 0 21 0 +20 6 000004 28673 0 0 0 0 21 0 +21 7 161403 4 0 0 0 0 21 0 +22 4 070001 4 0 0 0 0 21 0 +23 5 176020 28673 0 0 0 0 21 0 +24 6 000004 28673 0 0 0 0 21 0 +25 7 161403 4 0 0 0 0 21 0 +26 4 070001 4 0 0 0 0 21 0 +27 5 176020 28673 0 0 0 0 21 0 +28 6 000004 28673 0 0 0 0 21 0 +29 7 161403 4 0 0 0 0 21 0 +30 4 070001 4 0 0 0 0 21 0 +31 5 176020 28673 0 0 0 0 21 0 +32 6 000004 28673 0 0 0 0 21 0 +33 7 161403 4 0 0 0 0 21 0 +34 4 070001 4 0 0 0 0 21 0 +35 5 176020 28673 0 0 0 0 21 0 +36 6 000004 28673 0 0 0 0 21 0 +37 7 161403 4 0 0 0 0 21 0 +38 4 070001 4 0 0 0 0 21 0 +39 5 176020 28673 0 0 0 0 21 0 +40 6 000004 28673 0 0 0 0 21 0 +41 7 161403 4 0 0 0 0 21 0 +42 4 070001 4 0 0 0 0 21 0 +43 5 176020 28673 0 0 0 0 21 0 +44 6 000004 28673 0 0 0 0 21 0 +45 7 161403 4 0 0 0 0 21 0 +46 4 070001 4 0 0 0 0 21 0 +47 5 176020 28673 0 0 0 0 21 0 +48 6 000004 28673 0 0 0 0 21 0 +49 7 161403 4 0 0 0 0 21 0 +50 4 070001 4 0 0 0 0 21 0 +51 5 176020 28673 0 0 0 0 21 0 +52 6 000004 28673 0 0 0 0 21 0 +53 7 161403 4 0 0 0 0 21 0 +54 4 070001 4 0 0 0 0 21 0 +55 5 176020 28673 0 0 0 0 21 0 +56 6 000004 28673 0 0 0 0 21 0 +57 7 161403 4 0 0 0 0 21 0 +58 4 070001 4 0 0 0 0 21 0 +59 5 176020 28673 0 0 0 0 21 0 +60 6 000004 28673 0 0 0 0 21 0 +61 7 161403 4 0 0 0 0 21 0 +62 4 070001 4 0 0 0 0 21 0 +63 5 176020 28673 0 0 0 0 21 0 +64 6 000004 28673 0 0 0 0 21 0 +65 7 161403 4 0 0 0 0 21 0 +66 4 070001 4 0 0 0 0 21 0 +67 5 176020 28673 0 0 0 0 21 0 +68 6 000004 28673 0 0 0 0 21 0 +69 7 161403 4 0 0 0 0 21 0 +70 4 070001 4 0 0 0 0 21 0 +71 5 176020 28673 0 0 0 0 21 0 +72 6 000004 28673 0 0 0 0 21 0 +73 7 161403 4 0 0 0 0 21 0 +74 4 070001 4 0 0 0 0 21 0 +75 5 176020 28673 0 0 0 0 21 0 +76 6 000004 28673 0 0 0 0 21 0 +77 7 161403 4 0 0 0 0 21 0 +78 4 070001 4 0 0 0 0 21 0 +79 5 176020 28673 0 0 0 0 21 0 +80 6 000004 28673 0 0 0 0 21 0 +81 7 161403 4 0 0 0 0 21 0 +82 4 070001 4 0 0 0 0 21 0 +83 5 176020 28673 0 0 0 0 21 0 +84 6 000004 28673 0 0 0 0 21 0 +85 7 161403 4 0 0 0 0 21 0 +86 4 070001 4 0 0 0 0 21 0 +87 5 176020 28673 0 0 0 0 21 0 +88 6 000004 28673 0 0 0 0 21 0 +89 7 161403 4 0 0 0 0 21 0 +90 4 070001 4 0 0 0 0 21 0 +91 5 176020 28673 0 0 0 0 21 0 +92 6 000004 28673 0 0 0 0 21 0 +93 7 161403 4 0 0 0 0 21 0 +94 4 070001 4 0 0 0 0 21 0 +95 5 176020 28673 0 0 0 0 21 0 +96 6 000004 28673 0 0 0 0 21 0 +97 7 161403 4 0 0 0 0 21 0 +98 4 070001 4 0 0 0 0 21 0 +99 5 176020 28673 0 0 0 0 21 0 +100 6 000004 28673 0 0 0 0 21 0 +101 7 161403 4 0 0 0 0 21 0 +102 4 070001 4 0 0 0 0 21 0 +103 5 176020 28673 0 0 0 0 21 0 +104 6 000004 28673 0 0 0 0 21 0 +105 7 161403 4 0 0 0 0 21 0 +106 4 070001 4 0 0 0 0 21 0 +107 5 176020 28673 0 0 0 0 21 0 +108 6 000004 28673 0 0 0 0 21 0 +109 7 161403 4 0 0 0 0 21 0 +110 4 070001 4 0 0 0 0 21 0 +111 5 176020 28673 0 0 0 0 21 0 +112 6 000004 28673 0 0 0 0 21 0 +113 7 161403 4 0 0 0 0 21 0 +114 4 070001 4 0 0 0 0 21 0 +115 5 176020 28673 0 0 0 0 21 0 +116 6 000004 28673 0 0 0 0 21 0 +117 7 161403 4 0 0 0 0 21 0 +118 4 070001 4 0 0 0 0 21 0 +119 5 176020 28673 0 0 0 0 21 0 +120 6 000004 28673 0 0 0 0 21 0 +121 7 161403 4 0 0 0 0 21 0 +122 4 070001 4 0 0 0 0 21 0 +123 5 176020 28673 0 0 0 0 21 0 +124 6 000004 28673 0 0 0 0 21 0 +125 7 161403 4 0 0 0 0 21 0 +126 4 070001 4 0 0 0 0 21 0 +127 5 176020 28673 0 0 0 0 21 0 +128 6 000004 28673 0 0 0 0 21 0 +129 7 161403 4 0 0 0 0 21 0 +130 4 070001 4 0 0 0 0 21 0 +131 5 176020 28673 0 0 0 0 21 0 +132 6 000004 28673 0 0 0 0 21 0 +133 7 161403 4 0 0 0 0 21 0 +134 4 070001 4 0 0 0 0 21 0 +135 5 176020 28673 0 0 0 0 21 0 +136 6 000004 28673 0 0 0 0 21 0 +137 7 161403 4 0 0 0 0 21 0 +138 4 070001 4 0 0 0 0 21 0 +139 5 176020 28673 0 0 0 0 21 0 +140 6 000004 28673 0 0 0 0 21 0 +141 7 161403 4 0 0 0 0 21 0 +142 4 070001 4 0 0 0 0 21 0 +143 5 176020 28673 0 0 0 0 21 0 +144 6 000004 28673 0 0 0 0 21 0 +145 7 161403 4 0 0 0 0 21 0 +146 4 070001 4 0 0 0 0 21 0 +147 5 176020 28673 0 0 0 0 21 0 +148 6 000004 28673 0 0 0 0 21 0 +149 7 161403 4 0 0 0 0 21 0 +150 4 070001 4 0 0 0 0 21 0 +151 5 176020 28673 0 0 0 0 21 0 +152 6 000004 28673 0 0 0 0 21 0 +153 7 161403 4 0 0 0 0 21 0 +154 4 070001 4 0 0 0 0 21 0 +155 5 176020 28673 0 0 0 0 21 0 +156 6 000004 28673 0 0 0 0 21 0 +157 7 161403 4 0 0 0 0 21 0 +158 4 070001 4 0 0 0 0 21 0 +159 5 176020 28673 0 0 0 0 21 0 +160 6 000004 28673 -32768 0 0 0 21 0 +161 7 161403 4 -32768 0 0 0 21 0 +162 8 070000 4 -32768 0 0 0 21 0 +163 9 176020 28672 -32768 0 0 0 21 0 +164 10 000004 28672 49 0 0 0 21 0 +165 11 161410 4 49 0 0 0 21 0 +166 12 000003 4 49 0 0 0 21 49 +167 13 176047 3 49 0 0 0 21 49 +168 21 000004 21 49 0 0 0 21 49 +169 22 176020 4 49 0 0 0 21 49 +170 23 000066 4 49 0 0 0 21 49 +171 24 161404 54 49 0 0 0 21 49 +172 25 000071 54 49 0 0 0 21 49 +173 26 162320 57 49 0 0 0 21 49 +174 27 000066 57 -8 0 0 0 21 49 +175 28 061401 54 -8 0 0 0 21 49 +176 29 000004 25345 -8 0 0 0 21 49 +177 30 176020 4 -8 0 0 0 21 49 +178 31 000060 4 49 0 0 0 21 49 +179 32 162320 48 49 0 0 0 21 49 +180 33 000066 48 1 0 0 0 21 49 +181 34 161404 54 1 0 0 0 21 49 +182 35 000004 54 1 0 0 0 21 49 +183 36 161410 4 1 0 0 0 21 49 +184 37 000000 4 1 0 0 0 21 1 +185 38 176020 0 1 0 0 0 21 1 +186 39 170210 0 0 0 0 0 21 1 +187 40 170210 0 0 0 0 0 21 1 +188 41 170210 0 0 0 0 0 21 1 +189 42 170210 0 0 0 0 0 21 1 +190 43 170210 0 0 0 0 0 21 1 +191 44 170210 0 0 0 0 0 21 1 +192 45 170210 0 0 0 0 0 21 1 +193 46 170210 0 0 0 0 0 21 1 +194 47 170210 0 0 0 0 0 21 1 +195 48 000004 0 0 0 0 0 21 1 +196 49 176020 4 0 0 0 0 21 1 +197 50 000000 4 1 0 0 0 21 1 +198 51 170210 0 1 0 0 0 21 1 +199 52 000017 0 1 1 0 0 21 1 +200 53 165207 15 1 1 0 0 21 1 +201 15 000025 15 1 1 0 0 21 1 +202 16 166020 21 1 1 0 0 21 1 +203 17 000003 21 21 1 0 0 21 1 +204 18 161410 3 21 1 0 0 21 1 +205 19 000002 3 21 1 0 0 21 1 +206 20 165207 2 21 1 0 0 21 1 +207 2 070001 2 21 1 0 0 21 1 +208 3 167710 28673 21 1 0 0 21 1 +209 4 070001 28673 21 1 0 0 21 1 +210 5 176020 28673 21 1 0 0 21 1 +211 6 000004 28673 0 1 0 0 21 1 +212 7 161403 4 0 1 0 0 21 1 +213 4 070001 4 0 1 0 0 21 1 +214 5 176020 28673 0 1 0 0 21 1 +215 6 000004 28673 0 1 0 0 21 1 +216 7 161403 4 0 1 0 0 21 1 +217 4 070001 4 0 1 0 0 21 1 +218 5 176020 28673 0 1 0 0 21 1 +219 6 000004 28673 0 1 0 0 21 1 +220 7 161403 4 0 1 0 0 21 1 +221 4 070001 4 0 1 0 0 21 1 +222 5 176020 28673 0 1 0 0 21 1 +223 6 000004 28673 0 1 0 0 21 1 +224 7 161403 4 0 1 0 0 21 1 +225 4 070001 4 0 1 0 0 21 1 +226 5 176020 28673 0 1 0 0 21 1 +227 6 000004 28673 0 1 0 0 21 1 +228 7 161403 4 0 1 0 0 21 1 +229 4 070001 4 0 1 0 0 21 1 +230 5 176020 28673 0 1 0 0 21 1 +231 6 000004 28673 0 1 0 0 21 1 +232 7 161403 4 0 1 0 0 21 1 +233 4 070001 4 0 1 0 0 21 1 +234 5 176020 28673 0 1 0 0 21 1 +235 6 000004 28673 0 1 0 0 21 1 +236 7 161403 4 0 1 0 0 21 1 +237 4 070001 4 0 1 0 0 21 1 +238 5 176020 28673 0 1 0 0 21 1 +239 6 000004 28673 0 1 0 0 21 1 +240 7 161403 4 0 1 0 0 21 1 +241 4 070001 4 0 1 0 0 21 1 +242 5 176020 28673 0 1 0 0 21 1 +243 6 000004 28673 0 1 0 0 21 1 +244 7 161403 4 0 1 0 0 21 1 +245 4 070001 4 0 1 0 0 21 1 +246 5 176020 28673 0 1 0 0 21 1 +247 6 000004 28673 0 1 0 0 21 1 +248 7 161403 4 0 1 0 0 21 1 +249 4 070001 4 0 1 0 0 21 1 +250 5 176020 28673 0 1 0 0 21 1 +251 6 000004 28673 0 1 0 0 21 1 +252 7 161403 4 0 1 0 0 21 1 +253 4 070001 4 0 1 0 0 21 1 +254 5 176020 28673 0 1 0 0 21 1 +255 6 000004 28673 0 1 0 0 21 1 +256 7 161403 4 0 1 0 0 21 1 +257 4 070001 4 0 1 0 0 21 1 +258 5 176020 28673 0 1 0 0 21 1 +259 6 000004 28673 0 1 0 0 21 1 +260 7 161403 4 0 1 0 0 21 1 +261 4 070001 4 0 1 0 0 21 1 +262 5 176020 28673 0 1 0 0 21 1 +263 6 000004 28673 0 1 0 0 21 1 +264 7 161403 4 0 1 0 0 21 1 +265 4 070001 4 0 1 0 0 21 1 +266 5 176020 28673 0 1 0 0 21 1 +267 6 000004 28673 0 1 0 0 21 1 +268 7 161403 4 0 1 0 0 21 1 +269 4 070001 4 0 1 0 0 21 1 +270 5 176020 28673 0 1 0 0 21 1 +271 6 000004 28673 0 1 0 0 21 1 +272 7 161403 4 0 1 0 0 21 1 +273 4 070001 4 0 1 0 0 21 1 +274 5 176020 28673 0 1 0 0 21 1 +275 6 000004 28673 0 1 0 0 21 1 +276 7 161403 4 0 1 0 0 21 1 +277 4 070001 4 0 1 0 0 21 1 +278 5 176020 28673 0 1 0 0 21 1 +279 6 000004 28673 0 1 0 0 21 1 +280 7 161403 4 0 1 0 0 21 1 +281 4 070001 4 0 1 0 0 21 1 +282 5 176020 28673 0 1 0 0 21 1 +283 6 000004 28673 0 1 0 0 21 1 +284 7 161403 4 0 1 0 0 21 1 +285 4 070001 4 0 1 0 0 21 1 +286 5 176020 28673 0 1 0 0 21 1 +287 6 000004 28673 0 1 0 0 21 1 +288 7 161403 4 0 1 0 0 21 1 +289 4 070001 4 0 1 0 0 21 1 +290 5 176020 28673 0 1 0 0 21 1 +291 6 000004 28673 0 1 0 0 21 1 +292 7 161403 4 0 1 0 0 21 1 +293 4 070001 4 0 1 0 0 21 1 +294 5 176020 28673 0 1 0 0 21 1 +295 6 000004 28673 0 1 0 0 21 1 +296 7 161403 4 0 1 0 0 21 1 +297 4 070001 4 0 1 0 0 21 1 +298 5 176020 28673 0 1 0 0 21 1 +299 6 000004 28673 0 1 0 0 21 1 +300 7 161403 4 0 1 0 0 21 1 +301 4 070001 4 0 1 0 0 21 1 +302 5 176020 28673 0 1 0 0 21 1 +303 6 000004 28673 0 1 0 0 21 1 +304 7 161403 4 0 1 0 0 21 1 +305 4 070001 4 0 1 0 0 21 1 +306 5 176020 28673 0 1 0 0 21 1 +307 6 000004 28673 0 1 0 0 21 1 +308 7 161403 4 0 1 0 0 21 1 +309 4 070001 4 0 1 0 0 21 1 +310 5 176020 28673 0 1 0 0 21 1 +311 6 000004 28673 0 1 0 0 21 1 +312 7 161403 4 0 1 0 0 21 1 +313 4 070001 4 0 1 0 0 21 1 +314 5 176020 28673 0 1 0 0 21 1 +315 6 000004 28673 0 1 0 0 21 1 +316 7 161403 4 0 1 0 0 21 1 +317 4 070001 4 0 1 0 0 21 1 +318 5 176020 28673 0 1 0 0 21 1 +319 6 000004 28673 0 1 0 0 21 1 +320 7 161403 4 0 1 0 0 21 1 +321 4 070001 4 0 1 0 0 21 1 +322 5 176020 28673 0 1 0 0 21 1 +323 6 000004 28673 0 1 0 0 21 1 +324 7 161403 4 0 1 0 0 21 1 +325 4 070001 4 0 1 0 0 21 1 +326 5 176020 28673 0 1 0 0 21 1 +327 6 000004 28673 0 1 0 0 21 1 +328 7 161403 4 0 1 0 0 21 1 +329 4 070001 4 0 1 0 0 21 1 +330 5 176020 28673 0 1 0 0 21 1 +331 6 000004 28673 0 1 0 0 21 1 +332 7 161403 4 0 1 0 0 21 1 +333 4 070001 4 0 1 0 0 21 1 +334 5 176020 28673 0 1 0 0 21 1 +335 6 000004 28673 0 1 0 0 21 1 +336 7 161403 4 0 1 0 0 21 1 +337 4 070001 4 0 1 0 0 21 1 +338 5 176020 28673 0 1 0 0 21 1 +339 6 000004 28673 0 1 0 0 21 1 +340 7 161403 4 0 1 0 0 21 1 +341 4 070001 4 0 1 0 0 21 1 +342 5 176020 28673 0 1 0 0 21 1 +343 6 000004 28673 0 1 0 0 21 1 +344 7 161403 4 0 1 0 0 21 1 +345 4 070001 4 0 1 0 0 21 1 +346 5 176020 28673 0 1 0 0 21 1 +347 6 000004 28673 0 1 0 0 21 1 +348 7 161403 4 0 1 0 0 21 1 +349 4 070001 4 0 1 0 0 21 1 +350 5 176020 28673 0 1 0 0 21 1 +351 6 000004 28673 0 1 0 0 21 1 +352 7 161403 4 0 1 0 0 21 1 +353 4 070001 4 0 1 0 0 21 1 +354 5 176020 28673 0 1 0 0 21 1 +355 6 000004 28673 0 1 0 0 21 1 +356 7 161403 4 0 1 0 0 21 1 +357 4 070001 4 0 1 0 0 21 1 +358 5 176020 28673 0 1 0 0 21 1 +359 6 000004 28673 -32768 1 0 0 21 1 +360 7 161403 4 -32768 1 0 0 21 1 +361 8 070000 4 -32768 1 0 0 21 1 +362 9 176020 28672 -32768 1 0 0 21 1 +363 10 000004 28672 50 1 0 0 21 1 +364 11 161410 4 50 1 0 0 21 1 +365 12 000003 4 50 1 0 0 21 50 +366 13 176047 3 50 1 0 0 21 50 +367 21 000004 21 50 1 0 0 21 50 +368 22 176020 4 50 1 0 0 21 50 +369 23 000066 4 50 1 0 0 21 50 +370 24 161404 54 50 1 0 0 21 50 +371 25 000071 54 50 1 0 0 21 50 +372 26 162320 57 50 1 0 0 21 50 +373 27 000066 57 -7 1 0 0 21 50 +374 28 061401 54 -7 1 0 0 21 50 +375 29 000004 25345 -7 1 0 0 21 50 +376 30 176020 4 -7 1 0 0 21 50 +377 31 000060 4 50 1 0 0 21 50 +378 32 162320 48 50 1 0 0 21 50 +379 33 000066 48 2 1 0 0 21 50 +380 34 161404 54 2 1 0 0 21 50 +381 35 000004 54 2 1 0 0 21 50 +382 36 161410 4 2 1 0 0 21 50 +383 37 000000 4 2 1 0 0 21 2 +384 38 176020 0 2 1 0 0 21 2 +385 39 170210 0 1 1 0 0 21 2 +386 40 170210 0 1 2 0 0 21 2 +387 41 170210 0 1 3 0 0 21 2 +388 42 170210 0 1 4 0 0 21 2 +389 43 170210 0 1 5 0 0 21 2 +390 44 170210 0 1 6 0 0 21 2 +391 45 170210 0 1 7 0 0 21 2 +392 46 170210 0 1 8 0 0 21 2 +393 47 170210 0 1 9 0 0 21 2 +394 48 000004 0 1 10 0 0 21 2 +395 49 176020 4 1 10 0 0 21 2 +396 50 000000 4 2 10 0 0 21 2 +397 51 170210 0 2 10 0 0 21 2 +398 52 000017 0 2 12 0 0 21 2 +399 53 165207 15 2 12 0 0 21 2 +400 15 000025 15 2 12 0 0 21 2 +401 16 166020 21 2 12 0 0 21 2 +402 17 000003 21 21 12 0 0 21 2 +403 18 161410 3 21 12 0 0 21 2 +404 19 000002 3 21 12 0 0 21 2 +405 20 165207 2 21 12 0 0 21 2 +406 2 070001 2 21 12 0 0 21 2 +407 3 167710 28673 21 12 0 0 21 2 +408 4 070001 28673 21 12 0 0 21 2 +409 5 176020 28673 21 12 0 0 21 2 +410 6 000004 28673 0 12 0 0 21 2 +411 7 161403 4 0 12 0 0 21 2 +412 4 070001 4 0 12 0 0 21 2 +413 5 176020 28673 0 12 0 0 21 2 +414 6 000004 28673 0 12 0 0 21 2 +415 7 161403 4 0 12 0 0 21 2 +416 4 070001 4 0 12 0 0 21 2 +417 5 176020 28673 0 12 0 0 21 2 +418 6 000004 28673 0 12 0 0 21 2 +419 7 161403 4 0 12 0 0 21 2 +420 4 070001 4 0 12 0 0 21 2 +421 5 176020 28673 0 12 0 0 21 2 +422 6 000004 28673 0 12 0 0 21 2 +423 7 161403 4 0 12 0 0 21 2 +424 4 070001 4 0 12 0 0 21 2 +425 5 176020 28673 0 12 0 0 21 2 +426 6 000004 28673 0 12 0 0 21 2 +427 7 161403 4 0 12 0 0 21 2 +428 4 070001 4 0 12 0 0 21 2 +429 5 176020 28673 0 12 0 0 21 2 +430 6 000004 28673 0 12 0 0 21 2 +431 7 161403 4 0 12 0 0 21 2 +432 4 070001 4 0 12 0 0 21 2 +433 5 176020 28673 0 12 0 0 21 2 +434 6 000004 28673 0 12 0 0 21 2 +435 7 161403 4 0 12 0 0 21 2 +436 4 070001 4 0 12 0 0 21 2 +437 5 176020 28673 0 12 0 0 21 2 +438 6 000004 28673 0 12 0 0 21 2 +439 7 161403 4 0 12 0 0 21 2 +440 4 070001 4 0 12 0 0 21 2 +441 5 176020 28673 0 12 0 0 21 2 +442 6 000004 28673 0 12 0 0 21 2 +443 7 161403 4 0 12 0 0 21 2 +444 4 070001 4 0 12 0 0 21 2 +445 5 176020 28673 0 12 0 0 21 2 +446 6 000004 28673 0 12 0 0 21 2 +447 7 161403 4 0 12 0 0 21 2 +448 4 070001 4 0 12 0 0 21 2 +449 5 176020 28673 0 12 0 0 21 2 +450 6 000004 28673 0 12 0 0 21 2 +451 7 161403 4 0 12 0 0 21 2 +452 4 070001 4 0 12 0 0 21 2 +453 5 176020 28673 0 12 0 0 21 2 +454 6 000004 28673 0 12 0 0 21 2 +455 7 161403 4 0 12 0 0 21 2 +456 4 070001 4 0 12 0 0 21 2 +457 5 176020 28673 0 12 0 0 21 2 +458 6 000004 28673 0 12 0 0 21 2 +459 7 161403 4 0 12 0 0 21 2 +460 4 070001 4 0 12 0 0 21 2 +461 5 176020 28673 0 12 0 0 21 2 +462 6 000004 28673 0 12 0 0 21 2 +463 7 161403 4 0 12 0 0 21 2 +464 4 070001 4 0 12 0 0 21 2 +465 5 176020 28673 0 12 0 0 21 2 +466 6 000004 28673 0 12 0 0 21 2 +467 7 161403 4 0 12 0 0 21 2 +468 4 070001 4 0 12 0 0 21 2 +469 5 176020 28673 0 12 0 0 21 2 +470 6 000004 28673 0 12 0 0 21 2 +471 7 161403 4 0 12 0 0 21 2 +472 4 070001 4 0 12 0 0 21 2 +473 5 176020 28673 0 12 0 0 21 2 +474 6 000004 28673 0 12 0 0 21 2 +475 7 161403 4 0 12 0 0 21 2 +476 4 070001 4 0 12 0 0 21 2 +477 5 176020 28673 0 12 0 0 21 2 +478 6 000004 28673 0 12 0 0 21 2 +479 7 161403 4 0 12 0 0 21 2 +480 4 070001 4 0 12 0 0 21 2 +481 5 176020 28673 0 12 0 0 21 2 +482 6 000004 28673 0 12 0 0 21 2 +483 7 161403 4 0 12 0 0 21 2 +484 4 070001 4 0 12 0 0 21 2 +485 5 176020 28673 0 12 0 0 21 2 +486 6 000004 28673 0 12 0 0 21 2 +487 7 161403 4 0 12 0 0 21 2 +488 4 070001 4 0 12 0 0 21 2 +489 5 176020 28673 0 12 0 0 21 2 +490 6 000004 28673 0 12 0 0 21 2 +491 7 161403 4 0 12 0 0 21 2 +492 4 070001 4 0 12 0 0 21 2 +493 5 176020 28673 0 12 0 0 21 2 +494 6 000004 28673 0 12 0 0 21 2 +495 7 161403 4 0 12 0 0 21 2 +496 4 070001 4 0 12 0 0 21 2 +497 5 176020 28673 0 12 0 0 21 2 +498 6 000004 28673 0 12 0 0 21 2 +499 7 161403 4 0 12 0 0 21 2 +500 4 070001 4 0 12 0 0 21 2 +501 5 176020 28673 0 12 0 0 21 2 +502 6 000004 28673 0 12 0 0 21 2 +503 7 161403 4 0 12 0 0 21 2 +504 4 070001 4 0 12 0 0 21 2 +505 5 176020 28673 0 12 0 0 21 2 +506 6 000004 28673 0 12 0 0 21 2 +507 7 161403 4 0 12 0 0 21 2 +508 4 070001 4 0 12 0 0 21 2 +509 5 176020 28673 0 12 0 0 21 2 +510 6 000004 28673 0 12 0 0 21 2 +511 7 161403 4 0 12 0 0 21 2 +512 4 070001 4 0 12 0 0 21 2 +513 5 176020 28673 0 12 0 0 21 2 +514 6 000004 28673 0 12 0 0 21 2 +515 7 161403 4 0 12 0 0 21 2 +516 4 070001 4 0 12 0 0 21 2 +517 5 176020 28673 0 12 0 0 21 2 +518 6 000004 28673 0 12 0 0 21 2 +519 7 161403 4 0 12 0 0 21 2 +520 4 070001 4 0 12 0 0 21 2 +521 5 176020 28673 0 12 0 0 21 2 +522 6 000004 28673 0 12 0 0 21 2 +523 7 161403 4 0 12 0 0 21 2 +524 4 070001 4 0 12 0 0 21 2 +525 5 176020 28673 0 12 0 0 21 2 +526 6 000004 28673 0 12 0 0 21 2 +527 7 161403 4 0 12 0 0 21 2 +528 4 070001 4 0 12 0 0 21 2 +529 5 176020 28673 0 12 0 0 21 2 +530 6 000004 28673 0 12 0 0 21 2 +531 7 161403 4 0 12 0 0 21 2 +532 4 070001 4 0 12 0 0 21 2 +533 5 176020 28673 0 12 0 0 21 2 +534 6 000004 28673 0 12 0 0 21 2 +535 7 161403 4 0 12 0 0 21 2 +536 4 070001 4 0 12 0 0 21 2 +537 5 176020 28673 0 12 0 0 21 2 +538 6 000004 28673 0 12 0 0 21 2 +539 7 161403 4 0 12 0 0 21 2 +540 4 070001 4 0 12 0 0 21 2 +541 5 176020 28673 0 12 0 0 21 2 +542 6 000004 28673 0 12 0 0 21 2 +543 7 161403 4 0 12 0 0 21 2 +544 4 070001 4 0 12 0 0 21 2 +545 5 176020 28673 0 12 0 0 21 2 +546 6 000004 28673 0 12 0 0 21 2 +547 7 161403 4 0 12 0 0 21 2 +548 4 070001 4 0 12 0 0 21 2 +549 5 176020 28673 0 12 0 0 21 2 +550 6 000004 28673 0 12 0 0 21 2 +551 7 161403 4 0 12 0 0 21 2 +552 4 070001 4 0 12 0 0 21 2 +553 5 176020 28673 0 12 0 0 21 2 +554 6 000004 28673 0 12 0 0 21 2 +555 7 161403 4 0 12 0 0 21 2 +556 4 070001 4 0 12 0 0 21 2 +557 5 176020 28673 0 12 0 0 21 2 +558 6 000004 28673 -32768 12 0 0 21 2 +559 7 161403 4 -32768 12 0 0 21 2 +560 8 070000 4 -32768 12 0 0 21 2 +561 9 176020 28672 -32768 12 0 0 21 2 +562 10 000004 28672 51 12 0 0 21 2 +563 11 161410 4 51 12 0 0 21 2 +564 12 000003 4 51 12 0 0 21 51 +565 13 176047 3 51 12 0 0 21 51 +566 21 000004 21 51 12 0 0 21 51 +567 22 176020 4 51 12 0 0 21 51 +568 23 000066 4 51 12 0 0 21 51 +569 24 161404 54 51 12 0 0 21 51 +570 25 000071 54 51 12 0 0 21 51 +571 26 162320 57 51 12 0 0 21 51 +572 27 000066 57 -6 12 0 0 21 51 +573 28 061401 54 -6 12 0 0 21 51 +574 29 000004 25345 -6 12 0 0 21 51 +575 30 176020 4 -6 12 0 0 21 51 +576 31 000060 4 51 12 0 0 21 51 +577 32 162320 48 51 12 0 0 21 51 +578 33 000066 48 3 12 0 0 21 51 +579 34 161404 54 3 12 0 0 21 51 +580 35 000004 54 3 12 0 0 21 51 +581 36 161410 4 3 12 0 0 21 51 +582 37 000000 4 3 12 0 0 21 3 +583 38 176020 0 3 12 0 0 21 3 +584 39 170210 0 12 12 0 0 21 3 +585 40 170210 0 12 24 0 0 21 3 +586 41 170210 0 12 36 0 0 21 3 +587 42 170210 0 12 48 0 0 21 3 +588 43 170210 0 12 60 0 0 21 3 +589 44 170210 0 12 72 0 0 21 3 +590 45 170210 0 12 84 0 0 21 3 +591 46 170210 0 12 96 0 0 21 3 +592 47 170210 0 12 108 0 0 21 3 +593 48 000004 0 12 120 0 0 21 3 +594 49 176020 4 12 120 0 0 21 3 +595 50 000000 4 3 120 0 0 21 3 +596 51 170210 0 3 120 0 0 21 3 +597 52 000017 0 3 123 0 0 21 3 +598 53 165207 15 3 123 0 0 21 3 +599 15 000025 15 3 123 0 0 21 3 +600 16 166020 21 3 123 0 0 21 3 +601 17 000003 21 21 123 0 0 21 3 +602 18 161410 3 21 123 0 0 21 3 +603 19 000002 3 21 123 0 0 21 3 +604 20 165207 2 21 123 0 0 21 3 +605 2 070001 2 21 123 0 0 21 3 +606 3 167710 28673 21 123 0 0 21 3 +607 4 070001 28673 21 123 0 0 21 3 +608 5 176020 28673 21 123 0 0 21 3 +609 6 000004 28673 0 123 0 0 21 3 +610 7 161403 4 0 123 0 0 21 3 +611 4 070001 4 0 123 0 0 21 3 +612 5 176020 28673 0 123 0 0 21 3 +613 6 000004 28673 0 123 0 0 21 3 +614 7 161403 4 0 123 0 0 21 3 +615 4 070001 4 0 123 0 0 21 3 +616 5 176020 28673 0 123 0 0 21 3 +617 6 000004 28673 0 123 0 0 21 3 +618 7 161403 4 0 123 0 0 21 3 +619 4 070001 4 0 123 0 0 21 3 +620 5 176020 28673 0 123 0 0 21 3 +621 6 000004 28673 0 123 0 0 21 3 +622 7 161403 4 0 123 0 0 21 3 +623 4 070001 4 0 123 0 0 21 3 +624 5 176020 28673 0 123 0 0 21 3 +625 6 000004 28673 0 123 0 0 21 3 +626 7 161403 4 0 123 0 0 21 3 +627 4 070001 4 0 123 0 0 21 3 +628 5 176020 28673 0 123 0 0 21 3 +629 6 000004 28673 0 123 0 0 21 3 +630 7 161403 4 0 123 0 0 21 3 +631 4 070001 4 0 123 0 0 21 3 +632 5 176020 28673 0 123 0 0 21 3 +633 6 000004 28673 0 123 0 0 21 3 +634 7 161403 4 0 123 0 0 21 3 +635 4 070001 4 0 123 0 0 21 3 +636 5 176020 28673 0 123 0 0 21 3 +637 6 000004 28673 0 123 0 0 21 3 +638 7 161403 4 0 123 0 0 21 3 +639 4 070001 4 0 123 0 0 21 3 +640 5 176020 28673 0 123 0 0 21 3 +641 6 000004 28673 0 123 0 0 21 3 +642 7 161403 4 0 123 0 0 21 3 +643 4 070001 4 0 123 0 0 21 3 +644 5 176020 28673 0 123 0 0 21 3 +645 6 000004 28673 0 123 0 0 21 3 +646 7 161403 4 0 123 0 0 21 3 +647 4 070001 4 0 123 0 0 21 3 +648 5 176020 28673 0 123 0 0 21 3 +649 6 000004 28673 0 123 0 0 21 3 +650 7 161403 4 0 123 0 0 21 3 +651 4 070001 4 0 123 0 0 21 3 +652 5 176020 28673 0 123 0 0 21 3 +653 6 000004 28673 0 123 0 0 21 3 +654 7 161403 4 0 123 0 0 21 3 +655 4 070001 4 0 123 0 0 21 3 +656 5 176020 28673 0 123 0 0 21 3 +657 6 000004 28673 0 123 0 0 21 3 +658 7 161403 4 0 123 0 0 21 3 +659 4 070001 4 0 123 0 0 21 3 +660 5 176020 28673 0 123 0 0 21 3 +661 6 000004 28673 0 123 0 0 21 3 +662 7 161403 4 0 123 0 0 21 3 +663 4 070001 4 0 123 0 0 21 3 +664 5 176020 28673 0 123 0 0 21 3 +665 6 000004 28673 0 123 0 0 21 3 +666 7 161403 4 0 123 0 0 21 3 +667 4 070001 4 0 123 0 0 21 3 +668 5 176020 28673 0 123 0 0 21 3 +669 6 000004 28673 0 123 0 0 21 3 +670 7 161403 4 0 123 0 0 21 3 +671 4 070001 4 0 123 0 0 21 3 +672 5 176020 28673 0 123 0 0 21 3 +673 6 000004 28673 0 123 0 0 21 3 +674 7 161403 4 0 123 0 0 21 3 +675 4 070001 4 0 123 0 0 21 3 +676 5 176020 28673 0 123 0 0 21 3 +677 6 000004 28673 0 123 0 0 21 3 +678 7 161403 4 0 123 0 0 21 3 +679 4 070001 4 0 123 0 0 21 3 +680 5 176020 28673 0 123 0 0 21 3 +681 6 000004 28673 0 123 0 0 21 3 +682 7 161403 4 0 123 0 0 21 3 +683 4 070001 4 0 123 0 0 21 3 +684 5 176020 28673 0 123 0 0 21 3 +685 6 000004 28673 0 123 0 0 21 3 +686 7 161403 4 0 123 0 0 21 3 +687 4 070001 4 0 123 0 0 21 3 +688 5 176020 28673 0 123 0 0 21 3 +689 6 000004 28673 0 123 0 0 21 3 +690 7 161403 4 0 123 0 0 21 3 +691 4 070001 4 0 123 0 0 21 3 +692 5 176020 28673 0 123 0 0 21 3 +693 6 000004 28673 0 123 0 0 21 3 +694 7 161403 4 0 123 0 0 21 3 +695 4 070001 4 0 123 0 0 21 3 +696 5 176020 28673 0 123 0 0 21 3 +697 6 000004 28673 0 123 0 0 21 3 +698 7 161403 4 0 123 0 0 21 3 +699 4 070001 4 0 123 0 0 21 3 +700 5 176020 28673 0 123 0 0 21 3 +701 6 000004 28673 0 123 0 0 21 3 +702 7 161403 4 0 123 0 0 21 3 +703 4 070001 4 0 123 0 0 21 3 +704 5 176020 28673 0 123 0 0 21 3 +705 6 000004 28673 0 123 0 0 21 3 +706 7 161403 4 0 123 0 0 21 3 +707 4 070001 4 0 123 0 0 21 3 +708 5 176020 28673 0 123 0 0 21 3 +709 6 000004 28673 0 123 0 0 21 3 +710 7 161403 4 0 123 0 0 21 3 +711 4 070001 4 0 123 0 0 21 3 +712 5 176020 28673 0 123 0 0 21 3 +713 6 000004 28673 0 123 0 0 21 3 +714 7 161403 4 0 123 0 0 21 3 +715 4 070001 4 0 123 0 0 21 3 +716 5 176020 28673 0 123 0 0 21 3 +717 6 000004 28673 0 123 0 0 21 3 +718 7 161403 4 0 123 0 0 21 3 +719 4 070001 4 0 123 0 0 21 3 +720 5 176020 28673 0 123 0 0 21 3 +721 6 000004 28673 0 123 0 0 21 3 +722 7 161403 4 0 123 0 0 21 3 +723 4 070001 4 0 123 0 0 21 3 +724 5 176020 28673 0 123 0 0 21 3 +725 6 000004 28673 0 123 0 0 21 3 +726 7 161403 4 0 123 0 0 21 3 +727 4 070001 4 0 123 0 0 21 3 +728 5 176020 28673 0 123 0 0 21 3 +729 6 000004 28673 0 123 0 0 21 3 +730 7 161403 4 0 123 0 0 21 3 +731 4 070001 4 0 123 0 0 21 3 +732 5 176020 28673 0 123 0 0 21 3 +733 6 000004 28673 0 123 0 0 21 3 +734 7 161403 4 0 123 0 0 21 3 +735 4 070001 4 0 123 0 0 21 3 +736 5 176020 28673 0 123 0 0 21 3 +737 6 000004 28673 0 123 0 0 21 3 +738 7 161403 4 0 123 0 0 21 3 +739 4 070001 4 0 123 0 0 21 3 +740 5 176020 28673 0 123 0 0 21 3 +741 6 000004 28673 0 123 0 0 21 3 +742 7 161403 4 0 123 0 0 21 3 +743 4 070001 4 0 123 0 0 21 3 +744 5 176020 28673 0 123 0 0 21 3 +745 6 000004 28673 0 123 0 0 21 3 +746 7 161403 4 0 123 0 0 21 3 +747 4 070001 4 0 123 0 0 21 3 +748 5 176020 28673 0 123 0 0 21 3 +749 6 000004 28673 0 123 0 0 21 3 +750 7 161403 4 0 123 0 0 21 3 +751 4 070001 4 0 123 0 0 21 3 +752 5 176020 28673 0 123 0 0 21 3 +753 6 000004 28673 0 123 0 0 21 3 +754 7 161403 4 0 123 0 0 21 3 +755 4 070001 4 0 123 0 0 21 3 +756 5 176020 28673 0 123 0 0 21 3 +757 6 000004 28673 -32768 123 0 0 21 3 +758 7 161403 4 -32768 123 0 0 21 3 +759 8 070000 4 -32768 123 0 0 21 3 +760 9 176020 28672 -32768 123 0 0 21 3 +761 10 000004 28672 -32768 123 0 0 21 3 +762 11 161410 4 -32768 123 0 0 21 3 +763 12 000003 4 -32768 123 0 0 21 -32768 +764 13 176047 3 -32768 123 0 0 21 -32768 +765 21 000004 21 -32768 123 0 0 21 -32768 +766 22 176020 4 -32768 123 0 0 21 -32768 +767 23 000066 4 -32768 123 0 0 21 -32768 +768 24 161404 54 -32768 123 0 0 21 -32768 +769 54 165220 54 -32768 123 0 0 21 -32768 +770 55 000016 54 0 123 0 0 21 -32768 +771 56 165207 14 0 123 0 0 21 -32768 +772 14 165207 14 0 123 0 0 21 -32768