HP67 Logging started. (00167 - 00213 wait loop) ; A= 0000fffffff100 B= 03000000000022 S= .........9...... P= 11 ;[DSP] pressed ; S= .........9.....f 00214 ... 00217 keys to a ; A= 0000fffffff920 (scanrow=9 scancol=2) ; ; B= 00000000000000 00231 shift left a[x] ; A= 0000fffffff2f0 (5*9 + 2 = 47 = 0x2f) 00234 load constant 4 ; C= 03000000000400 P= 1 00235 0 -> s 3 00236 if 0 = s 4 00237 then go to 0254 00254 m1 exch c ; C= 00000000000000 M1=03000000000400 00255 delayed rom 03 00256 a -> rom address ; 0x2f = 0010 1111 = 00 101 111 = 057 01457 if n/c go to 01510 ; part of a "jump table". ; do [DSP]: 01510 jsb 01740 ; This is a prefix key, clear prefix state 01511 load constant 6 ; C= 00000000000060 P= 0 01512 if n/c go to 01570 01570 delayed rom 01 01571 if n/c go to 0451 ; set S 13 then 00451 1 -> s 13 ; S= .........9...d.f 00452 delayed rom 00 00453 if n/c go to 0142 ; set M1 00142 0 -> s 3 00143 0 -> c[s] 00144 m1 exch c ; C= 03000000000400 M1=00000000000060 (rest of wrap up, see OTHER STUFF below) 00161 hi im woodstock 00162 display off 00163 display toggle 00164 0 -> s 15 ; S= .........9...d.. 00165 if 1 = s 15 00166 then go to 0164 (00167 - 00213) ;[0] ; S= .........9...d.f 00214 ... ; ; B= 00000000000000 00217 keys to a ; A= 0000fffffff720 (row 7 col 2) ... 00231 shift left a[x] ; A= 0000fffffff250 (0x25 = 5*7+2) 00232 0 -> c[x] ; C= 03000000000000 00233 p <- 2 ; P= 2 00234 load constant 4 ; C= 03000000000400 P= 1 00235 0 -> s 3 00236 if 0 = s 4 00237 then go to 0254 00254 m1 exch c ; C= 00000000000060 M1=03000000000400 00255 delayed rom 03 00256 a -> rom address 01445 if n/c go to 01613 01613 if 1 = s 4 01614 then go to 01654 01615 if 0 = s 6 01616 then go to 01643 01643 if 0 = s 8 01644 then go to 01654 01654 if c[p] # 0 01655 then go to 01566 01566 delayed rom 01 01567 if n/c go to 0437 00437 c -> a[w] ; A= 00000000000060 00440 m1 exch c ; C= 03000000000400 M1=00000000000060 00441 delayed rom 02 00442 jsb 01205 ; S= .........9.....f 00443 if 1 = s 11 00444 then go to 0340 00445 delayed rom 014 00446 if n/c go to 06021 06021 m1 -> c ; C= 00000000000060 06022 c -> a[x] 06023 0 -> a[xs] 06024 b -> c[w] ; C= 00000000000000 06025 p <- 12 ; P= 12 06026 0 -> s 3 06027 a -> rom address 06006 if n/c go to 06040 ; part of "jump table" ; do [DSP] n (or the other 0x6[a-f] hex codes) 06040 1 -> s 6 ; S= ......6..9.....f 06041 p <- 0 ; P= 0 06042 load constant 10 ; C= 0000000000000a P= 13 06043 p <- 0 ; P= 0 06044 delayed rom 017 06045 if n/c go to 07476 07476 if 1 = s 6 07477 then go to 07460 07460 if a >= c[p] ; check n < 10 (A= 0...6n) 07461 then go to 07413 07462 jsb 07706 ; select ram bank 3, P= 0 C= 00000000000000 *** ram[62] -> c (=00000012220000) 07463 data register -> c 14 ; C= 00000012220000 07464 p <- 6 ; P= 6 07465 load constant 5 ; C= 00000015220000 P= 5 07466 p <- 6 ; P= 6 07467 shift left a[w] ; A= 00000000000600 07470 c - 1 -> c[p] ; C= 00000014220000 07471 if n/c go to 07467 ; A= 00000000006000 C= 00000013220000 ; A= 00000000060000 C= 00000012220000 ; A= 00000000600000 C= 00000011220000 ; A= 00000006000000 C= 00000010220000 ; A= 00000060000000 C= 0000001f220000 07471 if n/c go to 07467 07472 a exchange c[p] ; A= 0000006f000000 C= 00000010220000 *** c -> ram[62] (=00000010220000) 07473 c -> data register 14 ; save the updated DSP setting 07474 delayed rom 00 07475 if n/c go to 0114 ; clear digit entry flag 00114 0 -> s 12 00115 if n/c go to 0124 ; OTHER STUFF including setting up the display 00124 ... .01201 shift right a[wp] ; A= 00fffffffff100 .01202 load constant 3 ; C= 03000000000022 P= 11 .01203 b exchange c[w] ; B= 03000000000022 C= 00000000000000 .01204 return ; turn the display on 00161 hi im woodstock 00162 display off 00163 display toggle ; "0." 00164 0 -> s 15 ; S= .........9...... 00165 if 1 = s 15 00166 then go to 0164 (00167 - 00213 wait loop) DSP 3 ===== HP67 Logging started. (00167 - 00213 wait loop) ; A= 00fffffffff100 B= 03000000000022 S= .........9...d.. P= 11 M1=00000000000060 ; [3] pressed ; S= .........9...d.f 00214 ... 00217 keys to a ; A= 00fffffffff600 00231 shift left a[x] ; A= 00fffffffff1e0 00234 load constant 4 ; C= 03000000000400 P= 1 00254 m1 exch c ; C= 00000000000060 M1=03000000000400 00255 delayed rom 03 00256 a -> rom address ; [0] was to 01445 then 01613 - gave C=0...060 01436 c + 1 -> c[x] ; C= 00000000000061 01437 c + 1 -> c[x] ; C= 00000000000062 01440 if n/c go to 01612 01612 c + 1 -> c[x] ; C= 00000000000063 ; now have C=0...060 - 0...069 for DSP 0-9. This is the hex code for DSP 0-9 01613 if 1 = s 4 01614 then go to 01654 01615 if 0 = s 6 01616 then go to 01643 01643 if 0 = s 8 01644 then go to 01654 01654 if c[p] # 0 01655 then go to 01566 01566 delayed rom 01 01567 if n/c go to 0437 00437 c -> a[w] ; A= 00000000000063 00440 m1 exch c ; C= 03000000000400 M1=00000000000063 00441 delayed rom 02 00442 jsb 01205 ; S= .........9.....f 00443 if 1 = s 11 00444 then go to 0340 00445 delayed rom 014 00446 if n/c go to 06021 06021 m1 -> c ; C= 00000000000063 06022 c -> a[x] 06023 0 -> a[xs] 06024 b -> c[w] ; C= 00000000000000 06025 p <- 12 ; P= 12 06026 0 -> s 3 06027 a -> rom address ; A[2,1]= 0x06 = 0000 0110 = 00 000 110 = 006 06006 if n/c go to 06040 ; all of the 0x60-0x6f hex codes go here. 06040 ... ; S= ......6..9.....f 07463 data register -> c 14 ; ram[62] -> C= 00000010220000 ; ; shift A[0] left 6 positions so it lines up with the DSP nibble in C[6] 07464 p <- 6 ; P= 6 07465 load constant 5 ; C= 00000015220000 P= 5 07466 p <- 6 ; P= 6 07467 shift left a[w] ; A= 00000000000630 07470 c - 1 -> c[p] ; C= 00000014220000 07471 if n/c go to 07467 ; A= 00000000006300 C= 00000013220000 ; A= 00000000063000 C= 00000012220000 ; A= 00000000630000 C= 00000011220000 ; A= 00000006300000 C= 00000010220000 ; A= 00000063000000 C= 0000001f220000 07471 if n/c go to 07467 ; ; put the new DSP n value into C 07472 a exchange c[p] ; A= 0000006f000000 C= 00000013220000 ; ; save the updated value 07473 c -> data register 14 ; C (=00000013220000) -> ram[62] 07474 delayed rom 00 07475 if n/c go to 0114 ; clear digit entry flag 00114 0 -> s 12 00115 if n/c go to 0124 ; OTHER STUFF including setting up the display 00124 ... .01201 shift right a[wp] ; A= 00000ffffff100 .01202 load constant 3 ; C= 03000000000022 P= 11 .01203 b exchange c[w] ; B= 03000000000022 C= 00000000000000 .01204 return 00161 hi im woodstock 00162 display off 00163 display toggle ; "0.000" 00164 0 -> s 15 ; S= .........9...... 00165 if 1 = s 15 00166 then go to 0164 (00167 - 00213 wait loop) The Other Stuff =============== 00124 CRC 1300 ; test/clear merge flag 00125 binary 00126 0 -> s 3 00127 delayed rom 02 00130 jsb 01205 ; S= .........9.....f (clear prefix) 00131 CRC 1500 00132 if 1 = s 3 ; if paused (waiting for Crd?) 00133 then go to 0257 00134 jsb 0116 00116 if 1 = s 2 ; if running 00117 then go to 0122 00120 if 0 = s 1 ; if not doing SST 00121 then go to 0123 00123 return ; 00135 b -> c[w] ; C= 00000000000000 00136 if 1 = s 2 00137 then go to 0304 00140 0 -> c[w] 00141 0 -> s 1 ; 00142 0 -> s 3 00143 0 -> c[s] 00144 m1 exch c ; C= 00000000000060 M1=00000000000000 00145 if 1 = s 11 00146 then go to 0317 00147 delayed rom 017 00150 jsb 07706 ; P= 0 ram[63] -> C= 00000000000000 00151 a exchange b[w] ; A= 00000000000000 B= 0000006f000000 00152 a -> b[w] ; B= 00000000000000 00153 if 1 = s 12 00154 then go to 0157 00155 delayed rom 04 00156 jsb 02007 02007 p <- 1 ; P= 1 02010 load constant 3 ; C= 00000000000030 P= 0 02011 c -> addr 02012 0 -> s 3 *** ram[62] -> c (=00000010220000) 02013 data register -> c 14 ; C= 00000010220000 02014 decimal 02015 jsb 02137 02137 c -> a[w] ; A= 00000010220000 02140 0 -> c[w] ; C= 00000000000000 02141 p <- 3 ; P= 3 02142 0 -> a[wp] 02143 p <- 6 ; P= 6 02144 a exchange c[wp] ; A= 00000010000000 C= 00000000220000 02145 c -> a[p] 02146 c - 1 -> c[s] ; C= 90000000220000 02147 a - 1 -> a[p] ; A= 00000019000000 02150 if n/c go to 02146 02151 c -> a[s] ; A= 90000019000000 02152 p <- 12 ; P= 12 02153 c - 1 -> c[p] ; C= 99000000220000 02154 a - 1 -> a[s] ; A= 80000019000000 02155 if n/c go to 02153 ; C= 98000000220000 A= 70000019000000 ; C= 97000000220000 A= 60000019000000 ; C= 96000000220000 A= 50000019000000 ; C= 95000000220000 A= 40000019000000 ; C= 94000000220000 A= 30000019000000 ; C= 93000000220000 A= 20000019000000 ; C= 92000000220000 A= 10000019000000 ; C= 91000000220000 A= 00000019000000 ; C= 90000000220000 A= 90000019000000 02155 if n/c go to 02153 02156 return 02016 if 1 = s 3 02017 then go to 02023 02020 p <- 4 ; P= 4 02021 if c[p] # 0 02022 then go to 02066 02066 p <- 6 ; P= 6 02067 b -> c[x] 02070 if c[xs] = 0 02071 then go to 02124 02124 if c[x] = 0 02125 then go to 02116 02116 if 1 = s 3 02117 then go to 02105 02120 jsb 02162 02162 p <- 3 ; P= 3 02163 c -> a[w] ; A= 90000000220000 02164 c + 1 -> c[s] ; C= 00000000220000 02165 a - 1 -> a[p] ; A= 90000000229000 02166 if n/c go to 02164 02167 c - 1 -> c[s] ; C= 90000000220000 02170 0 -> s 3 02171 p <- 12 ; P= 12 02172 a exchange b[wp] ; A= 90000000000000 B= 00000000229000 02173 a -> b[wp] ; B= 00000000000000 02174 if b[m] = 0 02175 then go to 02232 02232 return 02121 if 0 = s 3 02122 then go to 02105 02105 c + 1 -> c[xs] ; C= 90000000220100 02106 if n/c go to 02063 02063 binary 02064 0 -> s 3 02065 return 00157 delayed rom 02 00160 jsb 01162 01162 jsb 01143 01143 c -> a[x] ; A= 90000000000100 01144 if b[s] = 0 01145 then go to 01147 01147 p <- 12 01150 shift right c[wp] ; C= 90000000022010 01151 if c[xs] = 0 01152 then go to 01156 01156 shift right c[wp] ; C= 90000000002201 01157 shift right c[wp] ; C= 90000000000220 01160 shift right c[wp] ; C= 90000000000022 01161 return 01163 p <- 3 ; P= 3 01164 shift left a[w] ; A= 00000000001000 01165 0 -> c[m] 01166 if c[s] = 0 01167 then go to 01174 01170 p + 1 -> p ; P= 4 01171 a - 1 -> a[p] ; A= 000000000f1000 01172 c - 1 -> c[s] ; C= 80000000000022 01173 if n/c go to 01166 ; P= 5 A= 00000000ff1000 C= 70000000000022 ; P= 6 A= 0000000fff1000 C= 60000000000022 ; P= 7 A= 000000ffff1000 C= 50000000000022 ; P= 8 A= 00000fffff1000 C= 40000000000022 ; P= 9 A= 0000ffffff1000 C= 30000000000022 ; P=10 A= 000fffffff1000 C= 20000000000022 ; P=11 A= 00ffffffff1000 C= 10000000000022 ; P=12 A= 0fffffffff1000 C= 00000000000022 01173 if n/c go to 01166 01166 if c[s] = 0 01167 then go to 01174 01174 if c[xs] = 0 01175 then go to 01201 01201 shift right a[wp] ; A= 00fffffffff100 01202 load constant 3 ; C= 03000000000022 P= 11 01203 b exchange c[w] ; B= 03000000000022 C= 00000000000000 01204 return