W/PRGM to card HP67 Logging started. (00167 - 00213 wait loop) A=000fffffffffff F=00000000000000 M1=000ffffffff000 B=00000000000000 E=00000000000000 M2=00000000000000 C=00000000000000 D=00000000000000 S=.........9.b.... P=10 00167 0 -> s 3 00170 CRC 1500 00171 if 1 = s 3 00172 then go to 0263 00173 0 -> s 1 00174 CRC 300 00175 if 1 = s 3 00176 then go to 0204 00204 if 0 = s 11 00205 then go to 0315 00206 0 -> s 3 00207 CRC 560 ; ?card inserted S=...3.....9.b.... P=10 00210 if 1 = s 3 00211 then go to 01324 card_inserted: 01324 jsb 01205 ; 0 -> s 4 6 7 8 10 13 01325 delayed rom 07 01326 if n/c go to 03770 03770 bank switch 13771 delayed rom 06 13772 if n/c go to 013214 I 13214 m1 exch c ; M1=00000000000000 C=000ffffffff000 13215 p <- 1 13216 0 -> s 3 ; S=.........9.b.... P=1 13217 CRC 1300 ; ?C merge 13220 if 0 = s 3 13221 then go to 013223 13223 CRC 760 ; set read mode (!) 13224 if 1 = s 11 ; ?wprgm mode 13225 then go to 013032 13032 CRC 660 ; set write mode 13033 jsb 013026 .13026 delayed rom 07 .13027 if n/c go to 013426 .13426 p <- 1 .13427 load constant 3 ; C=000ffffffff030 P=0 .13430 c -> addr .13431 data register -> c 14 .*** ram[62] -> c (=00000012220000) .13432 c -> a[w] ; A=00000012220000 .13433 shift left a[w] ; A=00000122200000 .13434 p - 1 -> p ; P=13 .13435 if p # 9 .13436 then go to 013433 A=00001222000000 P=12 A=00012220000000 P=11 A=00122200000000 P=10 A=01222000000000 P=9 .13435 if p # 9 .13436 then go to 013433 ; ; set c[s]=0 then add stuff for each set flag in c[p] where p=3..0 (=F3.. F0) ; .13437 0 -> c[s] ; C=00000012220000 .13440 p <- 4 .13441 p - 1 -> p ; P=3 .13442 c + c -> c[s] ; C=00000012220000 .13443 if c[p] = 0 .13444 then go to 013446 .13446 if p # 0 .13447 then go to 013441 A=01222000000000 P=2 A=01222000000000 P=1 A=01222000000000 P=0 .13446 if p # 0 .13447 then go to 013441 ; .13450 a exchange c[m] ; A=00000012220000 C=01222000000000 // sign (flags) remains in A .13451 p <- 12 .13452 0 -> c[p] ; C=00222000000000 ; ; this checks and sets the angle mode (DEG, RAD, GRD) ; .13453 if 0 = s 14 .13454 then go to 013456 .13456 if 0 = s 0 .13457 then go to 013461 ; .13461 p <- 8 .13462 0 -> c[wp] ; C=00222000000000 .13463 shift right c[w] ; C=00022200000000 .13464 shift right c[w] ; C=00002220000000 // 2=DSP 2, 22=FIX .13465 p <- 13 .13466 return 13034 load constant 3 ; C=30002220000000 // 3=PROG steps 001-112 13035 p <- 1 13036 load constant 1 ; C=30002220000010 P=0 13037 load constant 15 ; C=3000222000001f P=13 13040 jsb 013030 .13030 delayed rom 07 .13031 if n/c go to 013467 .13467 p <- 0 .13470 c -> addr .13471 a exchange c[w] ; A=3000222000001f C=00000012220000 .13472 data -> c *** ram[31] -> c (=00000000000000) .13473 a exchange c[w] ; A=00000000000000 C=3000222000001f .13474 if a[w] # 0 .13475 then go to 013503 .13476 c - 1 -> c[p] ; C=3000222000001e .13477 if n/c go to 013470 *** ram[30] -> c (=00000000000000) *** ram[29] -> c (=00000000000000) *** ram[28] -> c (=00000000000000) *** ram[27] -> c (=00000000000000) *** ram[26] -> c (=00000000000000) *** ram[25] -> c (=00000000000000) *** ram[24] -> c (=00000000000000) *** ram[23] -> c (=00000000000000) *** ram[22] -> c (=00000000000000) *** ram[21] -> c (=00000000000000) *** ram[20] -> c (=00000000000000) *** ram[19] -> c (=00000000000000) *** ram[18] -> c (=00000000000000) *** ram[17] -> c (=00000000000000) *** ram[16] -> c (=00000000000000) .13473 a exchange c[w] ; A=00000000000000 C=30002220000010 .13474 if a[w] # 0 .13475 then go to 013503 .13476 c - 1 -> c[p] ; C=3000222000001f .13477 if n/c go to 013470 .13500 1 -> s 7 ; S=.......7.9.b.... P=0 .13501 p <- 12 .13502 load constant 1 ; C=3100222000001f P=11 // set single-sided card .13503 0 -> c[x] ; C=31002220000000 .13504 return 13041 p <- 1 13042 load constant 2 ; C=31002220000020 P=0 13043 jsb 013341 .13341 display off .13342 CRC 1700 *** CardWrite 0: 0000000 .13343 CRC 260 ; motor on .13344 CRC 100 ; ? ready .13345 p <- 6 .13346 jsb 013360 ; // wait 6 ..13360 p - 1 -> p ; P=5 ..13361 nop ..13362 nop ..13363 nop ..13364 binary ..13365 if p # 0 ..13366 then go to 013360 P=4 P=3 P=2 P=1 P=0 ..13365 if p # 0 ..13366 then go to 013360 ..13367 return .13347 CRC 100 ; ? ready S=...3...7.9.b.... .13350 c -> a[w] ; A=31002220000020 .13351 jsb 013167 ..13167 0 -> s 3 ; S=.......7.9.b.... ..13170 0 -> c[w] ; C=00000000000000 ..13171 decimal ..13172 CRC 100 ; ? ready S=...3...7.9.b.... ..13173 if 1 = s 3 ..13174 then go to 013205 ..13205 binary ..13206 p <- 0 ..13207 0 -> s 3 ; S=.......7.9.b.... ..13210 CRC 1700 *** CardWrite 1: 0000000 ..13211 if 1 = s 3 ..13212 then go to 013406 ; // error? ..13213 return .13352 a exchange c[w] ; A=00000000000000 C=31002220000020 .13353 p <- 4 .13354 jsb 013363 ; // wait 4 ..13363 nop ..13364 binary ..13365 if p # 0 ..13366 then go to 013360 ..13360 p - 1 -> p ; P=3 ..13361 nop ..13362 nop P=3 P=2 P=1 P=0 ..13365 if p # 0 ..13366 then go to 013360 ..13367 return .13355 CRC 100 ; ? ready .13356 p <- 10 .13357 if n/c go to 013361 ; // wait 10 P=9 P=8 P=7 P=6 P=5 P=4 P=3 P=2 P=1 P=0 .13365 if p # 0 .13366 then go to 013360 .13367 return 13044 jsb 013114 .13114 CRC 1700 *** CardWrite 2: 0000000 .13115 p <- 11 .13116 jsb 013363 ; // wait 11 ..13363 nop P=10 ... P=0 ..13365 if p # 0 ..13366 then go to 013360 ..13367 return .13117 c -> a[w] ; A=31002220000020 .13120 jsb 013162 ; // select ram[0x99] (in CRC) ..13162 p <- 1 ..13163 load constant 9 ; C=31002220000090 P=0 ..13164 load constant 9 ; C=31002220000099 P=13 ..13165 c -> addr ..13166 return .13121 c -> data *** c -> ram[153] (=31002220000099) .13122 jsb 013167 ..13167 0 -> s 3 ; S=.......7.9.b.... ..13170 0 -> c[w] ; C=00000000000000 ..13171 decimal ..13172 CRC 100 ; // ? ready ..13173 if 1 = s 3 ..13174 then go to 013205 ..13205 binary ..13206 p <- 0 ..13207 0 -> s 3 ; S=.......7.9.b.... P=0 ..13210 CRC 1700 *** CardWrite 3: 3100222 ..13211 if 1 = s 3 ..13212 then go to 013406 ..13213 return .13123 a exchange c[w] ; A=00000000000000 C=31002220000020 .13124 c - 1 -> c[p] ; C=3100222000002f .13125 c -> addr .13126 b exchange c[w] ; B=3100222000002f C=00000000000000 .13127 data -> c *** ram[47] -> c (=00000000000000) .13130 0 -> a[w] ; A=00000000000000 .13131 p <- 6 .13132 c -> a[wp] ; A=00000000000000 // = prgm steps .13133 rotate a left ; A=00000000000000 .13134 rotate a left ; A=00000000000000 .13135 rotate a left ; A=00000000000000 .13136 rotate a left ; A=00000000000000 .13137 rotate a left ; A=00000000000000 .13140 rotate a left ; A=00000000000000 .13141 rotate a left ; A=00000000000000 // if was 11111112222222 now 22222221111111 .13142 0 -> c[wp] ; C=00000000000000 // initial checksum .13143 a exchange b[w] ; A=3100222000002f B=00000000000000 .13144 a + b -> a[w] ; A=3100222000002f .13145 a + c -> a[w] ; A=3100222000002f .13146 jsb 013162 ; // select ram[0x99] (in CRC) .13147 c -> data *** c -> ram[153] (=00000000000099) .13150 jsb 013201 ..13201 0 -> s 3 ; S=.......7.9.b.... ..13202 CRC 100 ; ? ready ..13203 if 0 = s 3 ..13204 then go to 013202 ; if not, wait until it is ..13205 binary ..13206 p <- 0 ..13207 0 -> s 3 ; S=.......7.9.b.... P=0 ..13210 CRC 1700 *** CardWrite 4: 0000000 ..13211 if 1 = s 3 ..13212 then go to 013406 ..13213 return .13151 b exchange c[w] ; B=00000000000099 C=00000000000000 .13152 c -> data *** c -> ram[153] (=00000000000000) .13153 jsb 013201 ; (as above, write) *** CardWrite 5: 0000000 .13154 a exchange c[w] ; A=00000000000000 C=3100222000002f .13155 c - 1 -> c[p] ; C=3100222000002e .13156 if n/c go to 013125 *** ram[46] -> c (=00000000000000) *** c -> ram[153] (=00000000000099) *** CardWrite 6: 0000000 *** c -> ram[153] (=00000000000000) *** CardWrite 7: 0000000 A=00000000000000 F=00000000000000 M1=00000000000000 B=00000000000099 E=00000000000000 M2=00000000000000 C=3100222000002d D=00000000000000 S=.......7.9.b.... P=0 .13156 if n/c go to 013125 *** ram[45] -> c (=00000000000000) *** c -> ram[153] (=00000000000099) *** CardWrite 8: 0000000 *** c -> ram[153] (=00000000000000) *** CardWrite 9: 0000000 A=00000000000000 F=00000000000000 M1=00000000000000 B=00000000000099 E=00000000000000 M2=00000000000000 C=3100222000002c D=00000000000000 S=.......7.9.b.... P=0 .13156 if n/c go to 013125 *** ram[44] -> c (=00000000000000) *** c -> ram[153] (=00000000000099) *** CardWrite 10: 0000000 *** c -> ram[153] (=00000000000000) *** CardWrite 11: 0000000 A=00000000000000 F=00000000000000 M1=00000000000000 B=00000000000099 E=00000000000000 M2=00000000000000 C=3100222000002b D=00000000000000 S=.......7.9.b.... P=0 .13156 if n/c go to 013125 *** ram[43] -> c (=00000000000000) *** c -> ram[153] (=00000000000099) *** CardWrite 12: 0000000 *** c -> ram[153] (=00000000000000) *** CardWrite 13: 0000000 A=00000000000000 F=00000000000000 M1=00000000000000 B=00000000000099 E=00000000000000 M2=00000000000000 C=3100222000002a D=00000000000000 S=.......7.9.b.... P=0 .13156 if n/c go to 013125 *** ram[42] -> c (=00000000000000) *** c -> ram[153] (=00000000000099) *** CardWrite 14: 0000000 *** c -> ram[153] (=00000000000000) *** CardWrite 15: 0000000 A=00000000000000 F=00000000000000 M1=00000000000000 B=00000000000099 E=00000000000000 M2=00000000000000 C=31002220000029 D=00000000000000 S=.......7.9.b.... P=0 .13156 if n/c go to 013125 *** ram[41] -> c (=00000000000000) *** c -> ram[153] (=00000000000099) *** CardWrite 16: 0000000 *** c -> ram[153] (=00000000000000) *** CardWrite 17: 0000000 A=00000000000000 F=00000000000000 M1=00000000000000 B=00000000000099 E=00000000000000 M2=00000000000000 C=31002220000028 D=00000000000000 S=.......7.9.b.... P=0 .13156 if n/c go to 013125 *** ram[40] -> c (=00000000000000) *** c -> ram[153] (=00000000000099) *** CardWrite 18: 0000000 *** c -> ram[153] (=00000000000000) *** CardWrite 19: 0000000 A=00000000000000 F=00000000000000 M1=00000000000000 B=00000000000099 E=00000000000000 M2=00000000000000 C=31002220000027 D=00000000000000 S=.......7.9.b.... P=0 .13156 if n/c go to 013125 *** ram[39] -> c (=00000000000000) *** c -> ram[153] (=00000000000099) *** CardWrite 20: 0000000 *** c -> ram[153] (=00000000000000) *** CardWrite 21: 0000000 A=00000000000000 F=00000000000000 M1=00000000000000 B=00000000000099 E=00000000000000 M2=00000000000000 C=31002220000026 D=00000000000000 S=.......7.9.b.... P=0 .13156 if n/c go to 013125 *** ram[38] -> c (=00000000000000) *** c -> ram[153] (=00000000000099) *** CardWrite 22: 0000000 *** c -> ram[153] (=00000000000000) *** CardWrite 23: 0000000 A=00000000000000 F=00000000000000 M1=00000000000000 B=00000000000099 E=00000000000000 M2=00000000000000 C=31002220000025 D=00000000000000 S=.......7.9.b.... P=0 .13156 if n/c go to 013125 *** ram[37] -> c (=00000000000000) *** c -> ram[153] (=00000000000099) *** CardWrite 24: 0000000 *** c -> ram[153] (=00000000000000) *** CardWrite 25: 0000000 A=00000000000000 F=00000000000000 M1=00000000000000 B=00000000000099 E=00000000000000 M2=00000000000000 C=31002220000024 D=00000000000000 S=.......7.9.b.... P=0 .13156 if n/c go to 013125 *** ram[36] -> c (=00000000000000) *** c -> ram[153] (=00000000000099) *** CardWrite 26: 0000000 *** c -> ram[153] (=00000000000000) *** CardWrite 27: 0000000 A=00000000000000 F=00000000000000 M1=00000000000000 B=00000000000099 E=00000000000000 M2=00000000000000 C=31002220000023 D=00000000000000 S=.......7.9.b.... P=0 .13156 if n/c go to 013125 *** ram[35] -> c (=00000000000000) *** c -> ram[153] (=00000000000099) *** CardWrite 28: 0000000 *** c -> ram[153] (=00000000000000) *** CardWrite 29: 0000000 A=00000000000000 F=00000000000000 M1=00000000000000 B=00000000000099 E=00000000000000 M2=00000000000000 C=31002220000022 D=00000000000000 S=.......7.9.b.... P=0 .13156 if n/c go to 013125 *** ram[34] -> c (=00000000000000) *** c -> ram[153] (=00000000000099) *** CardWrite 30: 0000000 *** c -> ram[153] (=00000000000000) *** CardWrite 31: 0000000 A=00000000000000 F=00000000000000 M1=00000000000000 B=00000000000099 E=00000000000000 M2=00000000000000 C=31002220000021 D=00000000000000 S=.......7.9.b.... P=0 .13156 if n/c go to 013125 *** ram[33] -> c (=00000000000000) *** c -> ram[153] (=00000000000099) *** CardWrite 32: 0000000 *** c -> ram[153] (=00000000000000) *** CardWrite 33: 0000000 A=00000000000000 F=00000000000000 M1=00000000000000 B=00000000000099 E=00000000000000 M2=00000000000000 C=31002220000020 D=00000000000000 S=.......7.9.b.... P=0 .13156 if n/c go to 013125 *** ram[32] -> c (=00000000000000) *** c -> ram[153] (=00000000000099) *** CardWrite 34: 0000000 *** c -> ram[153] (=00000000000000) *** CardWrite 35: 0000000 A=00000000000000 F=00000000000000 M1=00000000000000 B=00000000000099 E=00000000000000 M2=00000000000000 C=3100222000002f D=00000000000000 S=.......7.9.b.... P=0 .13156 if n/c go to 013125 .13157 c -> data *** c -> ram[153] (=3100222000002f) .13160 jsb 013201 ; (write) *** CardWrite 36: 3100222 ; // checksum .13161 if n/c go to 013112 .13112 delayed rom 07 .13113 if n/c go to 013647 .13647 0 -> s 3 A=00000000000000 F=00000000000000 M1=00000000000000 B=00000000000099 E=00000000000000 M2=00000000000000 C=3100222000002f D=00000000000000 S=.......7.9.b.... P=0 .13650 CRC 1700 *** CardWrite 37: 3100222 ; // copy of checksum .13651 CRC 560 ; // ? card inserted .13652 if 1 = s 3 .13653 then go to 013112 ; // wait for card to go fully through rdr .13654 CRC 360 ; // motor off .13655 CRC 100 ; // ? ready .13656 return 13045 if 1 = s 7 ; single-sided card (see 13050 above) 13046 then go to 013641 13641 if 1 = s 13 13642 then go to 013657 13643 m1 -> c ; C=00000000000000 13644 0 -> s 3 ; S=.......7.9.b.... 13645 delayed rom 00 13646 if n/c go to 010073 10073 nop (normal tidy up after things:) 00074 b -> c[w] ; C=00000000000000 00075 1 -> s 9 00076 0 -> s 12 ; S=.......7.9.b.... 00077 if n/c go to 0124 00124 CRC 1300 ; ?C merge 00125 binary 00126 0 -> s 3 ; S=.......7.9.b.... P=0 00127 delayed rom 02 00130 jsb 01205 ; 0 -> s 4 6 7 8 10 13 00131 CRC 1500 ; ?C pause 00132 if 1 = s 3 00133 then go to 0257 00134 jsb 0116 ; if running or sst do those things 00135 b -> c[w] ; C=00000000000000 00136 if 1 = s 2 00137 then go to 0304 00140 0 -> c[w] ; C=00000000000000 00141 0 -> s 1 00142 0 -> s 3 ; S=.........9.b.... 00143 0 -> c[s] ; C=00000000000000 00144 m1 exch c ; M1=00000000000000 C=00000000000000 00145 if 1 = s 11 00146 then go to 0317 00317 ... ; (display program step) 00327 if 1 = s 11 00330 then go to 0161 00161 hi im woodstock 00162 display off 00163 display toggle ; A=000fffffffffff B=00000000000000 00164 0 -> s 15 00165 if 1 = s 15 00166 then go to 0164 A=000fffffffffff F=00000000000000 M1=000ffffffff000 B=00000000000000 E=00000000000000 M2=00000000000000 C=00000000000000 D=00000000000000 S=.........9.b.... P=10 (00167 - 00213 wait loop) aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Again with a program aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa PROG 001: 31 25 11 002: 09 003: 71 004: 05 005: 81 006: 03 007: 02 008: 61 009: 35 22 010: 84 011: 84 012: 84 HP67 Logging started. get calc state *** ram[62] -> c (=00000012220000) check 113-224 is empty *** ram[31] -> c (=00000000000000) *** ram[30] -> c (=00000000000000) *** ram[29] -> c (=00000000000000) *** ram[28] -> c (=00000000000000) *** ram[27] -> c (=00000000000000) *** ram[26] -> c (=00000000000000) *** ram[25] -> c (=00000000000000) *** ram[24] -> c (=00000000000000) *** ram[23] -> c (=00000000000000) *** ram[22] -> c (=00000000000000) *** ram[21] -> c (=00000000000000) *** ram[20] -> c (=00000000000000) *** ram[19] -> c (=00000000000000) *** ram[18] -> c (=00000000000000) *** ram[17] -> c (=00000000000000) *** ram[16] -> c (=00000000000000) write sync *** CardWrite 0: 0000000 *** CardWrite 1: 0000000 *** CardWrite 2: 0000000 write status *** c -> ram[153] (=31002220000099) *** CardWrite 3: 3100222 write 16 registers *** ram[47] -> c (=12131e153919fa) *** c -> ram[153] (=12131e10000099) *** CardWrite 4: 12131e1 *** c -> ram[153] (=53919fa0000000) *** CardWrite 5: 53919fa *** ram[46] -> c (=00000000000e37) *** c -> ram[153] (=00000000000099) *** CardWrite 6: 0000000 *** c -> ram[153] (=0000e370000000) *** CardWrite 7: 0000e37 *** ram[45] -> c (=00000000000000) *** c -> ram[153] (=00000000000099) *** CardWrite 8: 0000000 *** c -> ram[153] (=00000000000000) *** CardWrite 9: 0000000 *** ram[44] -> c (=00000000000000) *** c -> ram[153] (=00000000000099) *** CardWrite 10: 0000000 *** c -> ram[153] (=00000000000000) *** CardWrite 11: 0000000 ... *** ram[32] -> c (=00000000000000) *** c -> ram[153] (=00000000000099) *** CardWrite 34: 0000000 *** c -> ram[153] (=00000000000000) *** CardWrite 35: 0000000 write checksum twice *** c -> ram[153] (=96a5c34000002f) *** CardWrite 36: 96a5c34 *** CardWrite 37: 96a5c34