;; RESET 000: 00 nop 040: 7c 27 tml 027 ; call 027 // wait a bit 070: 30 ldi 0 078: 23 lbli 3 07c: 46 out ; P3 := 0 07e: 20 lbli 0 03f: 46 out ; P0 := 0 05f: 55 in ; A := P0 06f: 67 ska 3 ; if A.3 = 0 // we are key 077: f6 t 076 ; goto 076 ;; LOCK START 07b: 75 lbmi 1 ; H := 1 ; forever { 07d: 21 lbli 1 03e: 31 ldi 1 01f: 70 ad 04f: 43 xd ; [1:1]++ 067: 55 in ; A := P0 073: 66 ska 2 ; if A.2 = 0 079: de t 05e ; last 03c: fd t 07d ; } 05e: 32 ldi 2 02f: 21 lbli 1 ; L := 1 057: 46 out ; P1 := 2 // reset host and key 06b: 00 nop 075: 30 ldi 0 03a: 46 out ; P1 := 0 // run key 01d: 00 nop 00e: 7c 27 tml 027 ; call 027 // wait a bit 043: 3c ldi c ; A := c ; while A <> 0 { 061: 01 adi 1 ; A++ 030: e1 t 061 ; } 058: 00 nop 06c: ae t 02e ; goto 270 // init stream ;; KEY START 076: 31 ldi 1 03b: 21 lbli 1 05d: 46 out ; P1 := 1 02e: 79 70 tl 270 ; goto 270 // init stream ;; DIE 04b: 20 lbli 0 065: 55 in ; A := P0 032: 67 ska 3 019: d4 t 054 ; if A.3 { // we are lock 00c: 75 lbmi 1 046: 21 lbli 1 023: 34 ldi 4 051: 4a s ; [1:1] := 4 028: c1 t 041 ; goto 041 ; } else { // we are key 054: 33 ldi 3 06a: 20 lbli 0 035: 46 out ; P0 := 3 01a: 21 lbli 1 00d: 31 ldi 1 006: 46 out ; P1 := 1 003: cb t 04b ; goto 04b // loop ; } ;; 041: 33 ldi 3 020: 20 lbli 0 050: 46 out ; P0 := 3 068: 75 lbmi 1 074: 21 lbli 1 07a: 30 ldi 0 03d: 62 skm 2 01e: 34 ldi 4 ; A := ([1.1].2 ? 0 : 4) 00f: 4a s ; [1.1] = A 047: 46 out ; P1 := A ;; WAIT ABOUT ONE SECOND 063: 74 lbmi 0 071: 2b lbli b 038: 30 ldi 0 05c: 42 xi 06e: b8 t 038 037: 2e lbli e 05b: 38 ldi 8 06d: 42 xi 036: 3d ldi d 01b: 41 x 04d: 2b lbli b 026: 48 sc 013: 30 ldi 0 049: 73 adcsk 024: 9b t 01b 052: 42 xi 029: 93 t 013 014: c1 t 041 ; goto 041 // loop ;; RUN HOST 04a: 7d fa tml 37a 012: a1 t 021 ; if lock 009: 35 ldi 5 ; A := 5 004: 21 lbli 1 042: e4 t 064 ; else 021: 30 ldi 0 ; A := 0 010: 21 lbli 1 048: 46 out 064: 00 nop 072: 00 nop 039: 00 nop 01c: 46 out ; P1 := A 04e: 4c rit ;; WAIT A BIT ;; 626 cycles, about 0.6ms 027: 30 ldi 0 053: 5d xax 069: 30 ldi 0 034: 01 adi 1 05a: b4 t 034 02d: 5d xax 016: 01 adi 1 00b: d3 t 053 045: 4c rit ;;{{{ 022: 00 nop 011: 00 nop 008: 00 nop 044: 00 nop 062: 00 nop 031: 00 nop 018: 00 nop 04c: 00 nop 066: 00 nop 033: 00 nop 059: 00 nop 02c: 00 nop 056: 00 nop 02b: 00 nop 055: 00 nop 02a: 00 nop 015: 00 nop 00a: 00 nop 005: 00 nop 002: 78 80 tl 100 07f: 80 t 000 ;;}}} ;; DIE 100: 00 nop 140: 30 ldi 0 160: 21 lbli 1 170: 46 out 178: 80 t 100 17c: fc t 17c ;; MAIN LOOP 17e: 31 ldi 1 13f: 5c lxa 15f: 74 lbmi 0 16f: 7d cb tml 34b 17b: 75 lbmi 1 17d: 7d cb tml 34b 11f: 7c b1 tml 131 167: 55 in 173: 64 ska 0 179: de t 15e 13c: d7 t 157 15e: 65 ska 1 12f: dd t 15d ;; 157: 78 4b tl 04b ;; 175: 60 skm 0 13a: b0 t 130 11d: 7c d9 tml 159 107: 61 skm 1 143: d7 t 157 161: bd t 13d 130: 7c d9 tml 159 16c: 61 skm 1 176: fa t 17a 13b: d7 t 157 15d: 30 ldi 0 12e: 41 x 117: 46 out 14b: 00 nop 165: 55 in 132: 47 out0 119: 4a s 10c: 23 lbli 3 146: 55 in 123: 20 lbli 0 151: 64 ska 0 128: f5 t 175 154: 61 skm 1 16a: c1 t 141 135: 7c d9 tml 159 10d: 60 skm 0 106: d7 t 157 103: bd t 13d 141: 7c d9 tml 159 150: 60 skm 0 168: fa t 17a 174: d7 t 157 17a: 00 nop 13d: 5d xax 11e: 01 adi 1 10f: a1 t 121 147: 7c 4a tml 04a 171: 7d f0 tml 370 15c: 7d f0 tml 370 137: 7d f0 tml 370 16d: 27 lbli 7 136: 40 l 11b: 23 lbli 3 14d: 41 x 126: 5c lxa 113: 55 in 149: 41 x 124: 6c sm 0 152: 64 ska 0 129: 68 rm 0 114: 5d xax 14a: 41 x 125: 46 out 112: 5d xax 109: 10 skai 0 104: bf t 13f 142: fe t 17e 121: 5d xax 110: df t 15f ;; OUTPUT STREAM ID BIT 148: 20 lbli 0 164: 4a s 172: 30 ldi 0 139: 41 x 11c: 46 out 14e: 00 nop 127: 00 nop 153: 47 out0 169: 21 lbli 1 134: 4c rit ;; INPUT STREAM ID BIT 15a: 20 lbli 0 12d: 00 nop 116: 00 nop 10b: 00 nop 145: 00 nop 122: 00 nop 111: 00 nop 108: 55 in 144: 21 lbli 1 162: 4c rit ;; H := "OTHER SIDE" 131: 74 lbmi 0 118: 7d fa tml 37a 166: 75 lbmi 1 133: 4c rit ;; H := "THIS SIDE" 159: 75 lbmi 1 12c: 7d fa tml 37a 12b: 74 lbmi 0 155: 4c rit ;;{{{ 12a: 00 nop 115: 00 nop 10a: 00 nop 105: 00 nop 102: 80 t 100 101: 80 t 100 17f: 80 t 100 ;;}}} ;; 200: 00 nop 240: 78 80 tl 100 ;; INIT STREAM 270: 7d fa tml 37a 27c: e1 t 261 27e: 75 lbmi 1 23f: 21 lbli 1 25f: 31 ldi 1 26f: 63 skm 3 277: 30 ldi 0 27b: 7c c8 tml 148 23e: 31 ldi 1 21f: 60 skm 0 24f: 30 ldi 0 267: 7c c8 tml 148 279: 31 ldi 1 23c: 61 skm 1 25e: 30 ldi 0 22f: 7c c8 tml 148 26b: 31 ldi 1 275: 62 skm 2 23a: 30 ldi 0 21d: 7c c8 tml 148 207: 00 nop 243: 83 t 203 261: 75 lbmi 1 230: 21 lbli 1 258: 3f ldi f 26c: 41 x 276: 7c da tml 15a 25d: 65 ska 1 22e: 6b rm 3 217: 00 nop 24b: 7c da tml 15a 232: 65 ska 1 219: 68 rm 0 20c: 00 nop 246: 7c da tml 15a 251: 65 ska 1 228: 69 rm 1 254: 00 nop 26a: 7c da tml 15a 21a: 65 ska 1 20d: 6a rm 2 206: 00 nop 203: 74 lbmi 0 241: 21 lbli 1 220: 3b ldi b 250: 42 xi 268: 31 ldi 1 274: 42 xi 27a: 34 ldi 4 23d: 42 xi 21e: 3f ldi f 20f: 42 xi 247: 34 ldi 4 263: 42 xi 271: 36 ldi 6 238: 3b ldi b 25c: 42 xi 26e: 35 ldi 5 237: 42 xi 25b: 38 ldi 8 26d: 37 ldi 7 236: 42 xi 21b: 3f ldi f 24d: 42 xi 226: 3a ldi a 213: 3d ldi d 249: 42 xi 224: 36 ldi 6 252: 42 xi 229: 3c ldi c 214: 31 ldi 1 24a: 42 xi 225: 3e ldi e 212: 42 xi 209: 39 ldi 9 204: 42 xi 242: 38 ldi 8 221: 41 x 210: 75 lbmi 1 248: 22 lbli 2 264: 39 ldi 9 272: 42 xi 239: 3a ldi a 21c: 42 xi 24e: 31 ldi 1 227: 42 xi 253: 38 ldi 8 269: 42 xi 234: 35 ldi 5 25a: 42 xi 22d: 37 ldi 7 216: 3f ldi f 20b: 42 xi 245: 31 ldi 1 222: 42 xi 211: 39 ldi 9 208: 31 ldi 1 244: 42 xi 262: 3e ldi e 231: 42 xi 218: 3b ldi b 24c: 31 ldi 1 266: 42 xi 233: 30 ldi 0 259: 42 xi 22c: 3d ldi d 256: 42 xi 22b: 3e ldi e 255: 42 xi 22a: 3c ldi c 215: 41 x 20a: 78 fe tl 17e 202: 78 80 tl 100 27f: 80 t 200 300: 00 nop 340: 78 80 tl 100 ;; MANGLE BOTH 370: 74 lbmi 0 378: 7d bf tml 33f 37e: 75 lbmi 1 ;; MANGLE ONE 33f: 2f lbli f 35f: 40 l 36f: 5c lxa 377: 48 sc 37b: 21 lbli 1 37d: 72 adc 33e: 4a s 31f: 52 li 34f: 72 adc 367: 54 coma 373: 42 xi 379: 73 adcsk 33c: 42 xi 35e: 70 ad 32f: 4a s 357: 52 li 36b: 49 rc 375: 72 adc 33a: 42 xi 31d: 08 adi 8 30e: 72 adc 307: 42 xi 343: 01 adi 1 361: 00 nop 330: 72 adc 358: 4a s 36c: 52 li 376: c3 t 343 33b: 5d xax 35d: 0f adi f 32e: 4c rit 317: ef t 36f ;; [H:0] := NEXT STREAM BIT 34b: 5d xax 365: 5c lxa 332: 57 xal 319: 40 l 30c: 20 lbli 0 346: 4a s 323: 37 ldi 7 351: 60 skm 0 328: 30 ldi 0 354: 4a s ; [H:0] := [H:L].0 ? 7 : 0 36a: 23 lbli 3 335: 55 in ; A := P3 31a: 20 lbli 0 ; L := 0 30d: 64 ska 0 306: d0 t 350 ; if P3.0.= 1 303: 69 rm 1 ; [H:0] &= 5 341: 00 nop 320: 4c rit ; else 350: 68 rm 0 368: 6a rm 2 ; [H:0] &= 2 374: 4c rit ;; SKIP NEXT INSTRUCTION IF LOCK 37a: 20 lbli 0 33d: 55 in 31e: 67 ska 3 30f: f4 t 374 347: 4d ritsk ;;{{{ 363: 00 nop 371: 00 nop 338: 00 nop 35c: 00 nop 36e: 00 nop 337: 00 nop 35b: 00 nop 36d: 00 nop 336: 00 nop 31b: 00 nop 34d: 00 nop 326: 00 nop 313: 00 nop 349: 00 nop 324: 00 nop 352: 00 nop 329: 00 nop 314: 00 nop 34a: 00 nop 325: 00 nop 312: 00 nop 309: 00 nop 304: 00 nop 342: 00 nop 321: 00 nop 310: 00 nop 348: 00 nop 364: 00 nop 372: 00 nop 339: 00 nop 31c: 00 nop 34e: 00 nop 327: 00 nop 353: 00 nop 369: 00 nop 334: 00 nop 35a: 00 nop 32d: 00 nop 316: 00 nop 30b: 00 nop 345: 00 nop 322: 00 nop 311: 00 nop 308: 00 nop 344: 00 nop 362: 00 nop 331: 00 nop 318: 00 nop 34c: 00 nop 366: 00 nop 333: 00 nop 359: 00 nop 32c: 00 nop 356: 00 nop 32b: 00 nop 355: 00 nop 32a: 00 nop 315: 00 nop 30a: 00 nop 305: 00 nop 302: 78 80 tl 100 37f: 80 t 300 ;;}}} ;; vi:fdm=marker:cms=;;%s:fdo=: