HP Forums

Full Version: HP41C Class 3
You're currently viewing a stripped down version of our content. View the full version with proper formatting.

Maybe somebody can use this:

                     HP41C Class 3 microcode instructions

3FB VR JNC-1 3FF VV JC-1
013 0J JNC+2 3F3 VJ JNC-2 017 0N JC+2 3F7 VN JC-2
01B 0R JNC+3 3EB VB JNC-3 01F 0V JC+3 3EF VF JC-3
023 13 JNC+4 3E3 V3 JNC-4 027 17 JC+4 3E7 V7 JC-4
02B 1B JNC+5 3DB UR JNC-5 02F 1F JC+5 3DF UV JC-5
033 1J JNC+6 3D3 UJ JNC-6 037 1N JC+6 3D7 UN JC-6
03B 1R JNC+7 3CB UB JNC-7 03F 1V JC+7 3CF UF JC-7
043 23 JNC+8 3C3 U3 JNC-8 047 27 JC+8 3C7 U7 JC-8
04B 2B JNC+9 3BB TR JNC-9 04F 2F JC+9 3BF TV JC-9
053 2J JNC+10 3B3 TJ JNC-10 057 2N JC+10 3B7 TN JC-10
05B 2R JNC+11 3AB TB JNC-11 05F 2V JC+11 3AF TF JC-11
063 33 JNC+12 3A3 T3 JNC-12 067 37 JC+12 3A7 T7 JC-12
06B 3B JNC+13 39B SR JNC-13 06F 3F JC+13 39F SV JC-13
073 3J JNC+14 393 SJ JNC-14 077 3N JC+14 397 SN JC-14
07B 3R JNC+15 38B SB JNC-15 07F 3V JC+15 38F SF JC-15
083 43 JNC+16 383 S3 JNC-16 087 47 JC+16 387 S7 JC-16
08B 4B JNC+17 37B RR JNC-17 08F 4F JC+17 37F RV JC-17
093 4J JNC+18 373 RJ JNC-18 097 4N JC+18 377 RN JC-18
09B 4R JNC+19 36B RB JNC-19 09F 4V JC+19 36F RF JC-19
0A3 53 JNC+20 363 R3 JNC-20 0A7 57 JC+20 367 R7 JC-20
0AB 5B JNC+21 35B QR JNC-21 0AF 5F JC+21 35F QV JC-21
0B3 5J JNC+22 353 QJ JNC-22 0B7 5N JC+22 357 QN JC-22
0BB 5R JNC+23 34B QB JNC-23 0BF 5V JC+23 34F QF JC-23
0C3 63 JNC+24 343 Q3 JNC-24 0C7 67 JC+24 347 Q7 JC-24
0CB 6B JNC+25 33B PR JNC-25 0CF 6F JC+25 33F PV JC-25
0D3 6J JNC+26 333 PJ JNC-26 0D7 6N JC+26 337 PN JC-26
0DB 6R JNC+27 32B PB JNC-27 0DF 6V JC+27 32F PF JC-27
0E3 73 JNC+28 323 P3 JNC-28 0E7 77 JC+28 327 P7 JC-28
0EB 7B JNC+29 31B OR JNC-29 0EF 7F JC+29 31F OV JC-29
0F3 7J JNC+30 313 OJ JNC-30 0F7 7N JC+30 317 ON JC-30
0FB 7R JNC+31 30B OB JNC-31 0FF 7V JC+31 30F OF JC-31
103 83 JNC+32 303 O3 JNC-32 107 87 JC+32 307 O7 JC-32
10B 8B JNC+33 2FB NR JNC-33 10F 8F JC+33 2FF NV JC-33
113 8J JNC+34 2F3 NJ JNC-34 117 8N JC+34 2F7 NN JC-34
11B 8R JNC+35 2EB NB JNC-35 11F 8V JC+35 2EF NF JC-35
123 93 JNC+36 2E3 N3 JNC-36 127 97 JC+36 2E7 N7 JC-36
12B 9B JNC+37 2DB MR JNC-37 12F 9F JC+37 2DF MV JC-37
133 9J JNC+38 2D3 MJ JNC-38 137 9N JC+38 2D7 MN JC-38
13B 9R JNC+39 2CB MB JNC-39 13F 9V JC+39 2CF MF JC-39
143 A3 JNC+40 2C3 M3 JNC-40 147 A7 JC+40 2C7 M7 JC-40
14B AB JNC+41 2BB LR JNC-41 14F AF JC+41 2BF LV JC-41
153 AJ JNC+42 2B3 LJ JNC-42 157 AN JC+42 2B7 LN JC-42
15B AR JNC+43 2AB LB JNC-43 15F AV JC+43 2AF LF JC-43
163 B3 JNC+44 2A3 L3 JNC-44 167 B7 JC+44 2A7 L7 JC-44
16B BB JNC+45 29B KR JNC-45 16F BF JC+45 29F KV JC-45
173 BJ JNC+46 293 KJ JNC-46 177 BN JC+46 297 KN JC-46
17B BR JNC+47 28B KB JNC-47 17F BV JC+47 28F KF JC-47
183 C3 JNC+48 283 K3 JNC-48 187 C7 JC+48 287 K7 JC-48
18B CB JNC+49 27B JR JNC-49 18F CF JC+49 27F JV JC-49
193 CJ JNC+50 273 JJ JNC-50 197 CN JC+50 277 JN JC-50
19B CR JNC+51 26B JB JNC-51 19F CV JC+51 26F JF JC-51
1A3 D3 JNC+52 263 J3 JNC-52 1A7 D7 JC+52 267 J7 JC-52
1AB DB JNC+53 25B IR JNC-53 1AF DF JC+53 25F IV JC-53
1B3 DJ JNC+54 253 IJ JNC-54 1B7 DN JC+54 257 IN JC-54
1BB DR JNC+55 24B IB JNC-55 1BF DV JC+55 24F IF JC-55
1C3 E3 JNC+56 243 I3 JNC-56 1C7 E7 JC+56 247 I7 JC-56
1CB EB JNC+57 23B HR JNC-57 1CF EF JC+57 23F HV JC-57
1D3 EJ JNC+58 233 HJ JNC-58 1D7 EN JC+58 237 HN JC-58
1DB ER JNC+59 22B HB JNC-59 1DF EV JC+59 22F HF JC-59
1E3 F3 JNC+60 223 H3 JNC-60 1E7 F7 JC+60 227 H7 JC-60
1EB FB JNC+61 21B GR JNC-61 1EF FF JC+61 21F GV JC-61
1F3 FJ JNC+62 213 GJ JNC-62 1F7 FN JC+62 217 GN JC-62
1FB FR JNC+63 20B GB JNC-63 1FF FV JC+63 20F GF JC-63
203 G3 JNC-64 207 G7 JC-64

Notes
1. The second column is base 32 (0-9,A-V). In base 32 "C=0? RTNNC" is NET0.
2. Copy and paste into a text processor. If you like another opcode, use search
and replace (eg: replace JNC with NCGO). I prefer "Jump if Not Carry".

The binary view on Nut class 3 instructions: dj jjjj js11 with d=Direction, j=Jump distance, s=carry Sense, and (11)2=(3)10 (hence Class 3). So with all variables declared integer and INSREM=(10-bit instruction word)/4 you may FORTRAN like this:

if (carry1 .eqv. btest(insrem, 0)) then
DIST = INSREM / 2 ! shift off CRY sense
IF (DIST .GE. 64) DIST = DIST - 128 ! adjust direction
PC = PC + DIST - 1 ! modifiy prgm counter
END IF ! if sense = CRY
RETURN ! next instruction
END
Hope this helps.

Ciao.....Mike