include "hdr1.html"; ?>
| Line | Address | Object Code | Label | F1 | N1 | B | F2 | N2 | Comments | Check |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0 | ; tape1.d/string.t2 | ||||||||
| 2 | 0 | ;------------------ | ||||||||
| 3 | 0 | ; | ||||||||
| 4 | 0 | ; PackStrChar, add 6-bit character to packed string | ||||||||
| 5 | 0 | ; character supplied in Acc, current word in W3231, | ||||||||
| 6 | 0 | ; character in word count in W3234 | ||||||||
| 7 | 0 | ; | ||||||||
| 8 | 0 | =3564 | ||||||||
| 9 | 3564 | PkStrChar:: | ; | |||||||
| 10 | 3564 | ; | ||||||||
| 11 | 3564 | .ent: | ; | |||||||
| 12 | 3564 | 0206237 | exa | W3231 | ;swap with current word | @3564 | ||||
| 13 | 3564+ | 1320006 | sll | 6 | ;shift word left | |||||
| 14 | 3565 | 0506237 | ads | W3231 | ;and add to character | |||||
| 15 | 3565+ | 0646242 | lis | W3234 | ;check count | |||||
| 16 | 3566 | 1026763 | jn | .3571 | ; | @3566 | ||||
| 17 | 3566+ | 0446241 | inc | W3233 | ;increment word count | |||||
| 18 | 3567 | 0601443 | lod | K5a | ;=5 | |||||
| 19 | 3567+ | 0426242 | stn | W3234 | ;set char count back to -5 | |||||
| 20 | 3568 | 0746237 | lzs | W3231 | ;load and clear current word | @3568 | ||||
| 21 | 3568+ | 0206240 | exa | Pinfo | ;swap with previous word | |||||
| 22 | 3569 | 1046763 | jz | .3571 | ;prev word zero, only 1 word | |||||
| 23 | 3569+ | nop | ; | |||||||
| 23+1 | 3569+ | 1006762 | jmp | .1 | ||||||
| 23+2 | 3570 | .1: | ; | |||||||
| 24 | 3570 | call | ;write full word to O-code | @3570 | ||||||
| 24+1 | 3570 | 7306371101532 | lnk | putFwd.lnk | : | jmp | putFwd.ent | |||
| 25 | 3571 | .3571: | ; | |||||||
| 26 | 3571 | ret | ; | |||||||
| 26+1 | 3571 | 0031223000001 | o00 | PkStrChar.lnk | / | jmp | 1 | |||
| 27 | 3572 | ;-------------------------------------------------------------------- | ||||||||
| 28 | 3572 | ; compile code to load a string address | ||||||||
| 29 | 3572 | ; | ||||||||
| 30 | 3572 | CompStrPtr:: | ; | |||||||
| 31 | 3572 | ; | ||||||||
| 32 | 3572 | .ent: | ; | |||||||
| 33 | 3572 | 0000000 | o00 | 0 | ; | @3572 | ||||
| 34 | 3572+ | 0042220 | o02 | W1168 | ; | |||||
| 35 | 3573 | call | ; | |||||||
| 35+1 | 3573 | 7307175001640 | lnk | GenInst.lnk | : | jmp | GenInst.ent | |||
| 36 | 3574 | 0546243 | cls | W3235 | ; | @3574 | ||||
| 37 | 3574+ | 0546241 | cls | W3233 | ;clear word count | |||||
| 38 | 3575 | 0546240 | cls | Pinfo | ;clear previous word | |||||
| 39 | 3575+ | 0546237 | cls | W3231 | ;clear current packed word | |||||
| 40 | 3576 | 0601443 | lod | K5a | ;=5 | @3576 | ||||
| 41 | 3576+ | 0426242 | stn | W3234 | ;set char in word count = -5 | |||||
| 42 | 3577 | W3577: | ; | |||||||
| 43 | 3577 | .3577: | call | ; $ special (within string) | ||||||
| 43+1 | 3577 | 7303015000604 | lnk | getchar.lnk | : | jmp | getchar.ent | |||
| 44 | 3578 | 1006775 | jmp | .3581 | ; | @3578 | ||||
| 45 | 3578+ | 1106777 | jmp | .3583P | ;check for end of string | |||||
| 46 | 3579 | 1006775 | jmp | .3581 | ; | |||||
| 47 | 3579+ | 1006775 | jmp | .3581 | ; | |||||
| 48 | 3580 | 1107004 | jmp | .3588P | ;check for nested string | @3580 | ||||
| 49 | 3580+ | 1006775 | jmp | .3581 | ; | |||||
| 50 | 3581 | ; | ||||||||
| 51 | 3581 | 0600575 | .3581: | lod | ipshift | ;normal char, convert to 6-bit | ||||
| 52 | 3581+ | 0100574 | add | currchar | ; | |||||
| 53 | 3582 | .3582: | ; | |||||||
| 54 | 3582 | call | ;add to string constant | |||||||
| 54+1 | 3582 | 7331221006754 | lnk | PkStrChar.lnk | : | jmp | PkStrChar.ent | |||
| 55 | 3583 | 1006771 | jmp | W3577 | ;and loop back for more | |||||
| 56 | 3583+ | ; | ||||||||
| 57 | 3583+ | 0600574 | .3583P: | lod | currchar | ;punctuation, check for pound/query | ||||
| 58 | 3584 | 0100575 | add | ipshift | ; | @3584 | ||||
| 59 | 3584+ | 0124312 | sub | K20 | ;=20 '?' | |||||
| 60 | 3585 | 1047002 | jz | .3586 | ;yes, maybe end of string | |||||
| 61 | 3585+ | 1006775 | jmp | .3581 | ;no, treat as ordinary chars | |||||
| 62 | 3586 | ; | ||||||||
| 63 | 3586 | ; close quote (?) found, check if nested | ||||||||
| 64 | 3586 | ; | ||||||||
| 65 | 3586 | 0040000 | .3586: | o02 | 0 | ;=1, test for nesting | @3586 | |||
| 66 | 3586+ | 0766243 | o37 | W3235 | ;decrement count | |||||
| 67 | 3587 | 1147010 | jz | .3592P | ;zero, end of string | |||||
| 68 | 3587+ | 0042227 | o02 | K26 | ;=26, +1=>27 | |||||
| 69 | 3588 | 1006776 | jmp | .3582 | ;add to string | @3588 | ||||
| 70 | 3588+ | ; | ||||||||
| 71 | 3588+ | ; punct2 character, includes pound sign | ||||||||
| 72 | 3588+ | ; | ||||||||
| 73 | 3588+ | 0600574 | .3588P: | lod | currchar | ;other punct, check for pound | ||||
| 74 | 3589 | 0100575 | add | ipshift | ;convert to 6-bit | |||||
| 75 | 3589+ | 0122227 | sub | K26 | ;=26 'pound-sign' | |||||
| 76 | 3590 | 1047007 | jz | .3591 | ;yes, nested chars | @3590 | ||||
| 77 | 3590+ | 1006775 | jmp | .3581 | ;no, treat as ordinary | |||||
| 78 | 3591 | ; | ||||||||
| 79 | 3591 | ; nested open quote (pound) found | ||||||||
| 80 | 3591 | 0646243 | .3591: | lis | W3235 | ;increment nest count | ||||
| 81 | 3591+ | 1050565 | jz | .4469 | ;yes, goto patch | |||||
| 82 | 3592 | 1104621 | jmp | _err54 | ;pound not allowed in nested string | @3592 | ||||
| 83 | 3592+ | ; | ||||||||
| 84 | 3592+ | =4469 | ||||||||
| 85 | 4469 | .4469: | ; patch moved in-line | |||||||
| 86 | 4469 | 0601460 | lod | K63 | ;=63, special marker for nesting | |||||
| 87 | 4469+ | 1006776 | jmp | .3582 | ;store shift marker | |||||
| 88 | 4470 | ; | ||||||||
| 89 | 4470 | ; end of string, | ||||||||
| 90 | 4470 | =3592+ | ||||||||
| 91 | 3592+ | 0540574 | .3592P: | cls | currchar | ;discard closing quote | ||||
| 92 | 3593 | 0606242 | lod | W3234 | ;char count | |||||
| 93 | 3593+ | 0101443 | add | K5a | ;=5 | |||||
| 94 | 3594 | 1147020 | jz | .3600P | ;-> no chars in current word | @3594 | ||||
| 95 | 3594+ | 0606240 | lod | Pinfo | ;previous word | |||||
| 96 | 3595 | 1047015 | jz | .3597 | ;only one word | |||||
| 97 | 3595+ | nop | ; | |||||||
| 97+1 | 3595+ | 1007014 | jmp | .1 | ||||||
| 97+2 | 3596 | .1: | ; | |||||||
| 98 | 3596 | call | ;output final word | @3596 | ||||||
| 98+1 | 3596 | 7306371101532 | lnk | putFwd.lnk | : | jmp | putFwd.ent | |||
| 99 | 3597 | 0040000 | .3597: | o02 | 0 | ;=1 | ||||
| 100 | 3597+ | 0126242 | sub | W3234 | ;get number of chars to pad | |||||
| 101 | 3598 | 1242226 | mul | K6 | ;=6 get number of bits | @3598 | ||||
| 102 | 3598+ | 1360000 | ara | 0 | ; | |||||
| 103 | 3599 | 1031177320000 | exa | W3231 | / | sll | 0 | ;shift current word to pad | ||
| 104 | 3600 | 1007022 | jmp | .3602 | ; | @3600 | ||||
| 105 | 3600+ | ; | ||||||||
| 106 | 3600+ | 0606240 | .3600P: | lod | Pinfo | ;any previous word? | ||||
| 107 | 3601 | 1047022 | jz | .3602 | ;no, null string | |||||
| 108 | 3601+ | 1107022 | jmp | .3602P | ;yes, write that instead | |||||
| 109 | 3602 | ; | ||||||||
| 110 | 3602 | .3602: | ; | |||||||
| 111 | 3602 | 0446241 | inc | W3233 | ;bump word count | @3602 | ||||
| 112 | 3602+ | .3602P: | ; | |||||||
| 113 | 3602+ | 0102175 | add | bit39 | ;add terminating flag | |||||
| 114 | 3603 | call | ;output final word | |||||||
| 114+1 | 3603 | 7306371101532 | lnk | putFwd.lnk | : | jmp | putFwd.ent | |||
| 115 | 3604 | 0606241 | lod | W3233 | ;get word count | @3604 | ||||
| 116 | 3604+ | 0401414 | sto | PCdata | ;save word count | |||||
| 117 | 3605 | 0602200 | lod | K8a | ;=8, number of bits | |||||
| 118 | 3605+ | nop | ; | |||||||
| 118+1 | 3605+ | 1007026 | jmp | .1 | ||||||
| 118+2 | 3606 | .1: | ; | |||||||
| 119 | 3606 | call | ;put word count | @3606 | ||||||
| 119+1 | 3606 | 7306371001477 | lnk | putcode.lnk | : | jmp | putcode.ent | |||
| 120 | 3607 | 0602231 | lod | K11 | ;=11, block data o-code key | |||||
| 121 | 3607+ | nop | ; | |||||||
| 121+1 | 3607+ | 1007030 | jmp | .1 | ||||||
| 121+2 | 3608 | .1: | ; | |||||||
| 122 | 3608 | call | ;write o-code key | @3608 | ||||||
| 122+1 | 3608 | 7306371001526 | lnk | putOpcd.lnk | : | jmp | putOpcd.ent | |||
| 123 | 3609 | ret | ; | |||||||
| 123+1 | 3609 | 0031157000001 | o00 | CompStrPtr.lnk | / | jmp | 1 | |||
| 124 | 3610 | ;-------------------------------------------------------------------- | ||||||||