{"id":1171,"date":"2015-10-28T21:37:38","date_gmt":"2015-10-28T21:37:38","guid":{"rendered":"http:\/\/www.sydneysmith.com\/wordpress\/?p=1171"},"modified":"2017-05-14T01:46:51","modified_gmt":"2017-05-14T01:46:51","slug":"hp67-f-cl-prgm","status":"publish","type":"post","link":"https:\/\/www.sydneysmith.com\/wordpress\/1171\/hp67-f-cl-prgm\/","title":{"rendered":"HP67 f CL PRGM"},"content":{"rendered":"<p>This needs more analysis, but here&#8217;s what happens when you press [f] [CL PRGM]<br \/>\n<!--more--><\/p>\n<pre>\r\n\r\nHP67 Logging started.\r\n\r\n; wait loop\r\n00167 0 -&gt; s 3\r\n00170 CRC 1500\r\n00171 if 1 = s 3\r\n00172 then go to 0263\r\n00173 0 -&gt; s 1\r\n00174 CRC 300\r\n00175 if 1 = s 3\r\n00176 then go to 0204\r\n00204 if 0 = s 11\r\n00205 then go to 0315\r\n00206 0 -&gt; s 3\r\n00207 CRC 560\r\n00210 if 1 = s 3\r\n00211 then go to 01324\r\n00212 if 0 = s 15\r\n00213 then go to 0167\r\n\r\n;\r\n; [f] pressed\r\n;\r\n00214 display off\r\n00215 b exchange c[w]\r\n00216 CRC 400          ; Set the \"a key was pressed\" flag\r\n00217 keys to a\r\n00220 0 -&gt; c[x]\r\n00221 a exchange c[xs]\r\n00222 shift right a[x]\r\n00223 p &lt;- 0\r\n00224 load constant 5\r\n00225 a + c -&gt; a[x]\r\n00226 c - 1 -&gt; c[xs]\r\n00227 if n\/c go to 0225\r\n(00225 - 00227)\r\n00230 a - c -&gt; a[x]\r\n00231 shift left a[x]\r\n00232 0 -&gt; c[x]\r\n00233 p &lt;- 2\r\n00234 load constant 4\r\n00235 0 -&gt; s 3\r\n00236 if 0 = s 4\r\n00237 then go to 0254\r\n00254 m1 exch c\r\n00255 delayed rom 03\r\n00256 a -&gt; rom address\r\nI\r\n01411 if n\/c go to 01572\r\n01572 if 1 = s 4\r\n01573 then go to 01600\r\n01574 if 1 = s 6\r\n01575 then go to 01600\r\n01576 jsb 01741\r\n\r\n.01741 0 -&gt; s 4\r\n.01742 0 -&gt; s 6\r\n.01743 0 -&gt; s 7\r\n.01744 0 -&gt; s 8\r\n.01745 0 -&gt; s 13\r\n.01746 return\r\n\r\n01577 if n\/c go to 01601\r\n01601 1 -&gt; s 4\r\n01602 1 -&gt; s 6\r\n01603 if n\/c go to 01570\r\n01570 delayed rom 01\r\n01571 if n\/c go to 0451\r\n00451 1 -&gt; s 13\r\n00452 delayed rom 00\r\n00453 if n\/c go to 0142\r\n00142 0 -&gt; s 3\r\n00143 0 -&gt; c[s]\r\n00144 m1 exch c\r\n00145 if 1 = s 11\r\n00146 then go to 0317\r\n00317 jsb 0004\r\n\r\n.00004 p &lt;- 1\r\n.00005 load constant 3\r\n.00006 c -&gt; addr\r\n.*** ram_addr=48\r\n.00007 data register -&gt; c 13\r\n.00010 return\r\n\r\n00320 delayed rom 02\r\n00321 if n\/c go to 01117\r\n01117 delayed rom 04\r\n01120 jsb 02362\r\n\r\n.02362 decimal\r\n.02363 0 -&gt; c[ms]\r\n.02364 0 -&gt; a[w]\r\n.02365 p &lt;- 1\r\n.02366 if c[p] = 0\r\n.02367 then go to 02412\r\n.02412 p &lt;- 10\r\n.02413 binary\r\n.02414 a - 1 -&gt; a[wp]\r\n.02415 return\r\n\r\n01121 m1 -&gt; c\r\n01122 a exchange c[ms]\r\n01123 if 1 = s 13\r\n01124 then go to 01127\r\n01127 m1 exch c\r\n01130 data register -&gt; c 13\r\n01131 if c[x] # 0\r\n01132 then go to 0322\r\n01133 m1 -&gt; c\r\n01134 0 -&gt; c[x]\r\n01135 c - 1 -&gt; c[x]\r\n01136 a exchange c[w]\r\n01137 a exchange c[x]\r\n01140 b exchange c[w]\r\n01141 0 -&gt; b[w]\r\n01142 if n\/c go to 01115\r\n01115 delayed rom 00\r\n01116 if n\/c go to 0327\r\n00327 if 1 = s 11\r\n00330 then go to 0161\r\nI\r\n00161 hi im woodstock\r\n00162 display off\r\n00163 display toggle\r\n00164 0 -&gt; s 15\r\n00165 if 1 = s 15\r\n00166 then go to 0164\r\n(00167 - 00213 wait loop)\r\n\r\n;\r\n;[CL PRGM] pressed\r\n;\r\n(00214 - 00237 as above)\r\n00240 if 0 = s 6\r\n00241 then go to 0254\r\n00242 a + c -&gt; a[xs]\r\n00243 if 1 = s 8\r\n00244 then go to 0251\r\n00245 a + c -&gt; a[xs]\r\n00246 if 1 = s 7\r\n00247 then go to 0251\r\n00250 a + c -&gt; a[xs]\r\n00251 m1 exch c\r\n00252 delayed rom 01\r\n00253 a -&gt; rom address\r\nI\r\n00717 if n\/c go to 0472\r\n00472 delayed rom 02\r\n00473 if n\/c go to 01062\r\n01062 if 0 = s 11\r\n01063 then go to 0125\r\n01064 0 -&gt; c[w]\r\n;\r\n; set default functions flag. ie no program loaded.\r\n;\r\n01065 CRC 1000\r\n;\r\n; clear ram bank 2 (ram[32..47])\r\n;\r\n01066 p &lt;- 1\r\n01067 load constant 2\r\n01070 jsb 01047\r\n\r\n.01047 a exchange c[w]\r\n.01050 binary\r\n.01051 0 -&gt; c[w]\r\n.01052 a - 1 -&gt; a[p]\r\n.01053 a exchange c[w]\r\n.01054 c -&gt; addr\r\n.*** ram_addr=47\r\n.01055 a exchange c[w]\r\n.01056 c -&gt; data\r\n.*** ram[47]=00000000000000\r\n.01057 a - 1 -&gt; a[p]\r\n.01060 if n\/c go to 01053\r\n.01053 a exchange c[w]\r\n.01054 c -&gt; addr\r\n.*** ram_addr=46\r\n.01055 a exchange c[w]\r\n.01056 c -&gt; data\r\n.*** ram[46]=00000000000000\r\n.01057 a - 1 -&gt; a[p]\r\n.01060 if n\/c go to 01053\r\n.(etc)\r\n.01053 a exchange c[w]\r\n.01054 c -&gt; addr\r\n.*** ram_addr=32\r\n.01055 a exchange c[w]\r\n.01056 c -&gt; data\r\n.*** ram[32]=00000000000000\r\n.01057 a - 1 -&gt; a[p]\r\n.01060 if n\/c go to 01053\r\n.01061 return\r\n\r\n;\r\n; clear ram bank 1 (ram[16..31])\r\n;\r\n01071 p &lt;- 1\r\n01072 load constant 1\r\n01073 jsb 01047\r\n\r\n.01047 a exchange c[w]\r\n.(as above but)\r\n.*** ram[31]=00000000000000\r\n.*** ram[30]=00000000000000\r\n.(etc)\r\n.*** ram[16]=00000000000000\r\n.01057 a - 1 -&gt; a[p]\r\n.01060 if n\/c go to 01053\r\n.01061 return\r\n\r\n01074 jsb 01036\r\n\r\n.01036 delayed rom 00\r\n.01037 jsb 0004\r\n\r\n..00004 p &lt;- 1\r\n..00005 load constant 3\r\n..00006 c -&gt; addr\r\n..*** ram_addr=48\r\n..00007 data register -&gt; c 13\r\n..00010 return\r\n\r\n.01040 0 -&gt; c[w]\r\n.01041 c -&gt; data register 13\r\n.*** ram[61]=00000000000000\r\n.01042 return\r\n\r\n01075 c -&gt; data register 14\r\n*** ram[62]=00000000000000\r\n01076 if n\/c go to 01010\r\n01010 data register -&gt; c 14\r\n01011 if c[w] # 0\r\n01012 then go to 01023\r\n; set default functions flag. ie no program loaded. A-E do 1\/x etc.\r\n01013 CRC 1000\r\n01014 0 -&gt; c[w]\r\n01015 p &lt;- 7\r\n01016 load constant 1\r\n01017 load constant 2\r\n01020 load constant 2\r\n01021 load constant 2\r\n01022 c -&gt; data register 14\r\n*** ram[62]=00000012220000\r\n01023 jsb 01036\r\n\r\n.01036 delayed rom 00\r\n.01037 jsb 0004\r\n\r\n..00004 p &lt;- 1\r\n..00005 load constant 3\r\n..00006 c -&gt; addr\r\n..*** ram_addr=48\r\n..00007 data register -&gt; c 13\r\n..00010 return\r\n\r\n.01040 0 -&gt; c[w]\r\n.01041 c -&gt; data register 13\r\n.*** ram[61]=00000000000000\r\n.01042 return\r\n\r\n01024 p &lt;- 1\r\n01025 c + 1 -&gt; c[p]\r\n01026 c -&gt; addr\r\n*** ram_addr=16\r\n01027 clear data registers\r\n01030 c + 1 -&gt; c[p]\r\n01031 c -&gt; addr\r\n*** ram_addr=32\r\n01032 clear data registers\r\n01033 clear s\r\n01034 delayed rom 00\r\n01035 if n\/c go to 0074\r\n00074 b -&gt; c[w]\r\n00075 1 -&gt; s 9\r\n00076 0 -&gt; s 12\r\n00077 if n\/c go to 0124\r\n00124 CRC 1300 ; test\/clear merge flag\r\n00125 binary\r\n00126 0 -&gt; s 3\r\n00127 delayed rom 02\r\n00130 jsb 01205\r\n\r\n.01205 0 -&gt; s 4\r\n.01206 0 -&gt; s 6\r\n.01207 0 -&gt; s 7\r\n.01210 0 -&gt; s 8\r\n.01211 0 -&gt; s 10\r\n.01212 0 -&gt; s 13\r\n.01213 return\r\n\r\n00131 CRC 1500 ; test\/clear Crd flag\r\n00132 if 1 = s 3\r\n00133 then go to 0257\r\n00134 jsb 0116\r\n\r\n.00116 if 1 = s 2\r\n.00117 then go to 0122\r\n.00120 if 0 = s 1\r\n.00121 then go to 0123\r\n.00123 return\r\n\r\n00135 b -&gt; c[w]\r\n00136 if 1 = s 2\r\n00137 then go to 0304\r\n00140 0 -&gt; c[w]\r\n00141 0 -&gt; s 1\r\n00142 0 -&gt; s 3\r\n00143 0 -&gt; c[s]\r\n00144 m1 exch c\r\n00145 if 1 = s 11\r\n00146 then go to 0317\r\n00147 delayed rom 017\r\n00150 jsb 07706\r\n\r\n.07706 p &lt;- 1 \r\n.07707 load constant 3 \r\n.07710 c -&gt; addr \r\n.*** ram_addr=48\r\n.07711 data register -&gt; c 15\r\n.07712 return \r\n\r\n00151 a exchange b[w]\r\n00152 a -&gt; b[w]\r\n00153 if 1 = s 12\r\n00154 then go to 0157\r\n00155 delayed rom 04\r\n00156 jsb 02007\r\n\r\n.02007 p &lt;- 1\r\n.02010 load constant 3\r\n.02011 c -&gt; addr\r\n.*** ram_addr=48\r\n.02012 0 -&gt; s 3\r\n.02013 data register -&gt; c 14\r\n.02014 decimal\r\n.02015 jsb 02137\r\n\r\n..02137 c -&gt; a[w]\r\n..02140 0 -&gt; c[w]\r\n..02141 p &lt;- 3\r\n..02142 0 -&gt; a[wp]\r\n..02143 p &lt;- 6\r\n..02144 a exchange c[wp]\r\n..02145 c -&gt; a[p]\r\n..02146 c - 1 -&gt; c[s]\r\n..02147 a - 1 -&gt; a[p]\r\n..02150 if n\/c go to 02146\r\n..(02146 - 02150) x 2\r\n..02151 c -&gt; a[s]\r\n..02152 p &lt;- 12\r\n..02153 c - 1 -&gt; c[p]\r\n..02154 a - 1 -&gt; a[s]\r\n..02155 if n\/c go to 02153\r\n..(02153 - 02155) x 7\r\n..02156 return\r\n\r\n.02016 if 1 = s 3\r\n.02017 then go to 02023\r\n.02020 p &lt;- 4\r\n.02021 if c[p] # 0\r\n.02022 then go to 02066\r\n.02066 p &lt;- 6\r\n.02067 b -&gt; c[x]\r\n.02070 if c[xs] = 0\r\n.02071 then go to 02124\r\n.02124 if c[x] = 0\r\n.02125 then go to 02116\r\n.02116 if 1 = s 3\r\n.02117 then go to 02105\r\n.02120 jsb 02162\r\n\r\n..02162 p &lt;- 3\r\n..02163 c -&gt; a[w]\r\n..02164 c + 1 -&gt; c[s]\r\n..02165 a - 1 -&gt; a[p]\r\n..02166 if n\/c go to 02164\r\n..02167 c - 1 -&gt; c[s]\r\n..02170 0 -&gt; s 3\r\n..02171 p &lt;- 12\r\n..02172 a exchange b[wp]\r\n..02173 a -&gt; b[wp]\r\n..02174 if b[m] = 0\r\n..02175 then go to 02232\r\n..02232 return\r\n\r\n.02121 if 0 = s 3\r\n.02122 then go to 02105\r\n.02105 c + 1 -&gt; c[xs]\r\n.02106 if n\/c go to 02063\r\n.02063 binary\r\n.02064 0 -&gt; s 3\r\n.02065 return\r\n\r\n00157 delayed rom 02\r\n00160 jsb 01162\r\n\r\n.01162 jsb 01143\r\n\r\n..01143 c -&gt; a[x]\r\n..01144 if b[s] = 0\r\n..01145 then go to 01147\r\n..01147 p &lt;- 12\r\n..01150 shift right c[wp]\r\n..01151 if c[xs] = 0\r\n..01152 then go to 01156\r\n..01156 shift right c[wp]\r\n..01157 shift right c[wp]\r\n..01160 shift right c[wp]\r\n..01161 return\r\n\r\n.01163 p &lt;- 3\r\n.01164 shift left a[w]\r\n.01165 0 -&gt; c[m]\r\n.I\r\n.01166 if c[s] = 0\r\n.01167 then go to 01174\r\n.01170 p + 1 -&gt; p\r\n.01171 a - 1 -&gt; a[p]\r\n.01172 c - 1 -&gt; c[s]\r\n.01173 if n\/c go to 01166\r\n.(01166 - 01173) x 6\r\n.01166 if c[s] = 0\r\n.01167 then go to 01174\r\n.I\r\n.01174 if c[xs] = 0\r\n.01175 then go to 01201\r\n.01176 c - 1 -&gt; c[xs]\r\n.01177 p + 1 -&gt; p\r\n.01200 if n\/c go to 01174\r\n.(01174 - 01200)\r\n.01174 if c[xs] = 0\r\n.01175 then go to 01201\r\n.I\r\n.01201 shift right a[wp]\r\n.01202 load constant 3\r\n.01203 b exchange c[w]\r\n.01204 return\r\n\r\n00161 hi im woodstock\r\n00162 display off\r\n00163 display toggle\r\n00164 0 -&gt; s 15\r\n00165 if 1 = s 15\r\n00166 then go to 0164\r\n00167 0 -&gt; s 3\r\n00170 CRC 1500\r\n00171 if 1 = s 3\r\n00172 then go to 0263\r\n00173 0 -&gt; s 1\r\n00174 CRC 300\r\n00175 if 1 = s 3\r\n00176 then go to 0204\r\n00204 if 0 = s 11\r\n00205 then go to 0315\r\nI\r\n00315 b exchange c[w]\r\n00316 1 -&gt; s 11\r\n00317 jsb 0004\r\n\r\n.00004 p &lt;- 1\r\n.00005 load constant 3\r\n.00006 c -&gt; addr\r\n.*** ram_addr=50\r\n.00007 data register -&gt; c 13\r\n.00010 return\r\n\r\n00320 delayed rom 02\r\n00321 if n\/c go to 01117\r\n01117 delayed rom 04\r\n01120 jsb 02362\r\n\r\n.02362 decimal\r\n.02363 0 -&gt; c[ms]\r\n.02364 0 -&gt; a[w]\r\n.02365 p &lt;- 1\r\n.02366 if c[p] = 0\r\n.02367 then go to 02412\r\n.02412 p &lt;- 10\r\n.02413 binary\r\n.02414 a - 1 -&gt; a[wp]\r\n.02415 return\r\n\r\n01121 m1 -&gt; c\r\n01122 a exchange c[ms]\r\n01123 if 1 = s 13\r\n01124 then go to 01127\r\n01125 0 -&gt; c[x]\r\n01126 jsb 01205\r\n\r\n.01205 0 -&gt; s 4\r\n.01206 0 -&gt; s 6\r\n.01207 0 -&gt; s 7\r\n.01210 0 -&gt; s 8\r\n.01211 0 -&gt; s 10\r\n.01212 0 -&gt; s 13\r\n.01213 return\r\n\r\n01127 m1 exch c\r\n01130 data register -&gt; c 13\r\n01131 if c[x] # 0\r\n01132 then go to 0322\r\n01133 m1 -&gt; c\r\n01134 0 -&gt; c[x]\r\n01135 c - 1 -&gt; c[x]\r\n01136 a exchange c[w]\r\n01137 a exchange c[x]\r\n01140 b exchange c[w]\r\n01141 0 -&gt; b[w]\r\n01142 if n\/c go to 01115\r\n01115 delayed rom 00\r\n01116 if n\/c go to 0327\r\n00327 if 1 = s 11\r\n00330 then go to 0161\r\nI\r\n00161 hi im woodstock\r\n00162 display off\r\n00163 display toggle\r\n00164 0 -&gt; s 15\r\n00165 if 1 = s 15\r\n00166 then go to 0164\r\n\r\n(00167 - 00213 wait loop) x 2\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>This needs more analysis, but here&#8217;s what happens when you press [f] [CL PRGM]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[16,5,3],"tags":[33,32],"_links":{"self":[{"href":"https:\/\/www.sydneysmith.com\/wordpress\/wp-json\/wp\/v2\/posts\/1171"}],"collection":[{"href":"https:\/\/www.sydneysmith.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sydneysmith.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sydneysmith.com\/wordpress\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sydneysmith.com\/wordpress\/wp-json\/wp\/v2\/comments?post=1171"}],"version-history":[{"count":3,"href":"https:\/\/www.sydneysmith.com\/wordpress\/wp-json\/wp\/v2\/posts\/1171\/revisions"}],"predecessor-version":[{"id":1356,"href":"https:\/\/www.sydneysmith.com\/wordpress\/wp-json\/wp\/v2\/posts\/1171\/revisions\/1356"}],"wp:attachment":[{"href":"https:\/\/www.sydneysmith.com\/wordpress\/wp-json\/wp\/v2\/media?parent=1171"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sydneysmith.com\/wordpress\/wp-json\/wp\/v2\/categories?post=1171"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sydneysmith.com\/wordpress\/wp-json\/wp\/v2\/tags?post=1171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}