include "hdr1.html"; ?>
Line | Address | Object Code | Label | F1 | N1 | B | F2 | N2 | Comments | Check |
---|---|---|---|---|---|---|---|---|---|---|
1 | 0 | ; tape1.d/lookup.t2 | ||||||||
2 | 0 | ;------------------ | ||||||||
3 | 0 | ; | ||||||||
4 | 0 | =504 | ||||||||
5 | 504 | lookupkw:: | ; | |||||||
6 | 504 | ; | ||||||||
7 | 504 | ; data for lookup routine | ||||||||
8 | 504 | 0000000000000 | .work1: | +0 | ; | @504 | ||||
9 | 505 | 0000000000002 | .work2: | +2 | ; | @505 | ||||
10 | 506 | 0000000000000 | .work3: | +0 | ; | @506 | ||||
11 | 507 | 0000000001234 | .kwtab: | +kwtable-2 | ; | @507 | ||||
12 | 508 | .kwtabendp: | ; | |||||||
13 | 508 | 0000000001406 | +kwtabend | ;774 ;kwtabend | @508 | |||||
14 | 509 | ; list of negative increments for binary search | ||||||||
15 | 509 | ; assume start address = 0 | ||||||||
16 | 509 | ; values must be even as entries are two words long | ||||||||
17 | 509 | ; | ||||||||
18 | 509 | .kwtabptrs: | ; | |||||||
19 | 509 | 7777777776456 | -kwtable-52 | ;starting point in table | @509 | |||||
20 | 510 | 7777777777746 | -26 | ;increments to above | ||||||
21 | 511 | 7777777777762 | -14 | |||||||
22 | 512 | 7777777777772 | -6 | |||||||
23 | 513 | 7777777777774 | -4 | |||||||
24 | 514 | 7777777777776 | -2 | |||||||
25 | 515 | 0000000000000 | +0 | ; | @515 | |||||
26 | 516 | 0000000000000 | +0 | ; | @516 | |||||
27 | 517 | 0000000000000 | +0 | ; | @517 | |||||
28 | 518 | 0000000000000 | +0 | ; | @518 | |||||
29 | 519 | 0000000000000 | +0 | ; | @519 | |||||
30 | 520 | 0000000000000 | +0 | ; | @520 | |||||
31 | 521 | 0000000000000 | +0 | ; | @521 | |||||
32 | 522 | 0000000000000 | +0 | ; | @522 | |||||
33 | 523 | 0000000001242 | .ptr2: | +674 | ; | @523 | ||||
34 | 524 | 0000000000006 | .ptr1: | +6 | ; | @524 | ||||
35 | 525 | 0000000000576 | .work: | +382 | ; | @525 | ||||
36 | 526 | 0000000000000 | W526: | +0 | ; | @526 | ||||
37 | 527 | 0000000000001 | W527: | +1 | ; | @527 | ||||
38 | 528 | 0000000000000 | W528: | +0 | ; | @528 | ||||
39 | 529 | 0000000000011 | .word: | +9 | ; | @529 | ||||
40 | 530 | ; | ||||||||
41 | 530 | =469 | ||||||||
42 | 469 | 4004110000000 | dfltid: | +04004110000000 | ; default type | @469 | ||||
43 | 470 | ;------------------------------------------------------------------- | ||||||||
44 | 470 | ; | ||||||||
45 | 470 | =470 | ||||||||
46 | 470 | .ent: | ; | |||||||
47 | 470 | 0003522600001 | o00 | .lnk | / | lod | 1 | ; get parameter | @470 | |
48 | 471 | 2004066600000 | sto | .work | / | lod | 0 | ; get word to look up | @471 | |
49 | 472 | 0401021 | sto | .word | ; store word | |||||
50 | 472+ | 1060731 | jo | .0 | ; clr oflo | |||||
51 | 473 | .0: | ; | |||||||
52 | 473 | 0541014 | cls | .ptr1 | ; .ptr1=0 | |||||
53 | 473+ | 0541013 | cls | .ptr2 | ; .ptr2=0 | |||||
54 | 474 | .3: | ; | |||||||
55 | 474 | 2204062600774 | inc | .ptr1 | / | lod | .kwtabptrs-1 | ; fetch kwtabendp[++.ptr1] | @474 | |
56 | 475 | 1020740 | jn | .1 | ; if < skip to 480 | |||||
57 | 475+ | 0601013 | lod | .ptr2 | ; | |||||
58 | 476 | 0120774 | sub | .kwtabendp | ; table end pointer | |||||
59 | 476+ | 1040737 | jz | .2 | ; return +2 | |||||
60 | 477 | .5: | ; | |||||||
61 | 477 | 0600771 | lod | .work2 | ;=2 | @477 | ||||
62 | 477+ | .6: | ; | |||||||
63 | 477+ | 0100725 | add | dfltid | ;=04004110000000 | @477+ | ||||
64 | 478 | .10: | ; | |||||||
65 | 478 | 0101013 | add | .ptr2 | ; table pointer | @478 | ||||
66 | 478+ | 0120770 | sub | .work1 | ||||||
67 | 479 | .2: | ; | |||||||
68 | 479 | 0003523000002 | o00 | .lnk | / | jmp | 2 | ;return bypassing param | @479 | |
69 | 480 | ; | ||||||||
70 | 480 | .1: | ; | |||||||
71 | 480 | 2704056600000 | o27 | .ptr2 | / | lod | 0 | ; subtract and fetch | @480 | |
72 | 481 | 0121021 | sub | .word | ; compare with word | |||||
73 | 481+ | 1060755 | jo | .7 | ; overflow? | |||||
74 | 482 | 1020732 | jn | .3 | ; less than - move down | |||||
75 | 482+ | 1040756 | jz | .8 | ; equal got it | |||||
76 | 483 | .9: | ; | |||||||
77 | 483 | 2204062600774 | inc | .ptr1 | / | lod | .kwtabptrs-1 | ; try next pointer | @483 | |
78 | 484 | 1020747 | jn | .4 | ; still negative? OK | |||||
79 | 484+ | 0601013 | lod | .ptr2 | ; table pointer | |||||
80 | 485 | 0120773 | sub | .kwtab | ; table start | |||||
81 | 485+ | 1040735 | jz | .5 | ; | |||||
82 | 486 | 0140000 | cla | 0 | ; =0 | |||||
83 | 486+ | 1100735 | jmp | .6 | ; | |||||
84 | 487 | ; | ||||||||
85 | 487 | .4: | ; | |||||||
86 | 487 | 2404056600000 | ads | .ptr2 | / | lod | 0 | ; add to pointer and fetch | @487 | |
87 | 488 | 0121021 | sub | .word | ; compare with word | |||||
88 | 488+ | 1060755 | jo | .7 | ; oflo? | |||||
89 | 489 | 1020732 | jn | .3 | ; back to earlier bit | |||||
90 | 489+ | 1040756 | jz | .8 | ; match - return | |||||
91 | 490 | 1000743 | jmp | .9 | ; back for another go | |||||
92 | 490+ | ; | ||||||||
93 | 490+ | .11: | ; | |||||||
94 | 490+ | 0601013 | lod | .ptr2 | ; get table pointer | @490+ | ||||
95 | 491 | 0120773 | sub | .kwtab | ; less table start | |||||
96 | 491+ | 1040735 | jz | .5 | ; at start of table | |||||
97 | 492 | 0140000 | cla | 0 | ; zero | |||||
98 | 492+ | 1000736 | jmp | .10 | ; finish | |||||
99 | 493 | ; | ||||||||
100 | 493 | .7: | ; | |||||||
101 | 493 | 1020743 | jn | .9 | ; overflow - invert sign test | @493 | ||||
102 | 493+ | 1000732 | jmp | .3 | ; back into loop | |||||
103 | 494 | ; | ||||||||
104 | 494 | .8: | ; | |||||||
105 | 494 | 0600772 | lod | .work3 | ; ? | @494 | ||||
106 | 494+ | 1140752 | jz | .11 | ; back if zero | |||||
107 | 495 | 0401020 | sto | W528 | ;indicate continue not possible | |||||
108 | 495+ | 0441020 | inc | W528 | ;(assuming .work3 != -1) | |||||
109 | 496 | 0601013 | lod | .ptr2 | ; | |||||
110 | 496+ | 0401017 | sto | W527 | ; | |||||
111 | 497 | 0601015 | lod | .work | ; | |||||
112 | 497+ | 0401016 | sto | W526 | ; | |||||
113 | 498 | .13: | ; | |||||||
114 | 498 | 2204076600000 | inc | W527 | / | lod | 0 | ; | @498 | |
115 | 499 | 2204072120000 | inc | W526 | / | sub | 0 | ; | ||
116 | 500 | 1060755 | jo | .7 | ; | |||||
117 | 500+ | 1020732 | jn | .3 | ; | |||||
118 | 501 | 1040766 | jz | .12 | ; | |||||
119 | 501+ | 1000743 | jmp | .9 | ; | |||||
120 | 502 | ; | ||||||||
121 | 502 | .12: | ; | |||||||
122 | 502 | 0641020 | lis | W528 | ; | @502 | ||||
123 | 502+ | 1020762 | jn | .13 | ; | |||||
124 | 503 | 1100752 | jmp | .11 | ; | |||||
125 | 503+ | ; | ||||||||
126 | 503+ | 0000000 | o00 | 0 | ; | @503+ | ||||
127 | 504 | ; | ||||||||
128 | 504 | =530 | ||||||||
129 | 530 | ; no refs? | ||||||||
130 | 530 | ; | ||||||||
131 | 530 | 0003522600001 | o00 | .lnk | / | lod | 1 | ; | @530 | |
132 | 531 | 2004066600003 | sto | .work | / | lod | 3 | ; | ||
133 | 532 | 0420772 | stn | .work3 | ; | |||||
134 | 532+ | 0440772 | inc | .work3 | ; | |||||
135 | 533 | 0004066600004 | o00 | .work | / | lod | 4 | ; | @533 | |
136 | 534 | 0400770 | sto | .work1 | ; | |||||
137 | 534+ | 0541014 | cls | .ptr1 | ; | |||||
138 | 535 | 0004066600002 | o00 | .work | / | lod | 2 | ; | @535 | |
139 | 536 | 0400771 | sto | .work2 | ; | |||||
140 | 536+ | 0540774 | cls | .kwtabendp | ; | |||||
141 | 537 | 0004066600000 | o00 | .work | / | lod | 0 | ; | ||
142 | 538 | .538: | ; | |||||||
143 | 538 | 0401013 | sto | .ptr2 | ; | @538 | ||||
144 | 538+ | .538P: | ; | |||||||
145 | 538+ | 0601013 | lod | .ptr2 | ; | @538+ | ||||
146 | 539 | 1200001 | sra | 1 | ; | |||||
147 | 539+ | 0361013 | o17 | .ptr2 | ; | |||||
148 | 540 | 1240771 | mul | .work2 | ; | @540 | ||||
149 | 540+ | 1360000 | ara | 0 | ; | |||||
150 | 541 | 2204062420774 | inc | .ptr1 | / | stn | .kwtabendp | ; | ||
151 | 542 | 0500774 | ads | .kwtabendp | ; | @542 | ||||
152 | 542+ | 1141037 | jz | .543 | ; | |||||
153 | 543 | 1101032 | jmp | .538P | ; | |||||
154 | 543+ | ; | ||||||||
155 | 543+ | .543: | ; | |||||||
156 | 543+ | 0600770 | lod | .work1 | ; | @543+ | ||||
157 | 544 | 0004066100001 | o00 | .work | / | add | 1 | ; | ||
158 | 545 | 0120771 | sub | .work2 | ; | |||||
159 | 545+ | 0400773 | sto | .kwtab | ; | |||||
160 | 546 | 0500774 | ads | .kwtabendp | ; | @546 | ||||
161 | 546+ | 0560775 | o27 | .kwtabptrs | ; | |||||
162 | 547 | 0003523000002 | o00 | .lnk | / | jmp | 2 | ;return, bypassing param | ||
163 | 548 | ;--------------------------------------------------------------- |