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 | ;--------------------------------------------------------------- | ||||||||