{"version": 2, "width": 80, "height": 30, "timestamp": 1720048816, "env": {"SHELL": "/bin/bash", "TERM": "xterm-256color"}} [0.004377, "o", "\u001b[?1049h\u001b[22;0;0t\u001b[?1h\u001b=\u001b[H\u001b[2J\u001b[?12l\u001b[?25h\u001b[?1000l\u001b[?1002l\u001b[?1003l\u001b[?1006l\u001b[?1005l\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[?1006l\u001b[?1000l\u001b[?1002l\u001b[?1003l\u001b[?2004l\u001b[1;1H\u001b[1;30r\u001b[>c\u001b[>q\u001b[1;1H"] [0.004857, "o", "\u001b[?25l\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[30m\u001b[42m\r\n[4] 0:bash* \"debian\" 19:20 03-Jul-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[1;1H\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[?1006l\u001b[?1000l\u001b[?1002l\u001b[?1003l\u001b[?2004l\u001b[1;1H\u001b[1;30r\u001b[1;1H\u001b[?25l\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[30m\u001b[42m\r\n[4] 0:bash* \"debian\" 19:20 03-Jul-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[1;1H"] [0.021622, "o", "\u001b[32m\u001b[1mvdupras@debian\u001b(B\u001b[m:\u001b[34m\u001b[1m~/src/dusk\u001b(B\u001b[m$ \u001b[?2004h"] [0.035526, "o", "\u001b[?7727h"] [2.357536, "o", "\u001b[?25l\u001b[23;1H─────────────────────────────────────────\u001b[32m───────────────────────────────────────\u001b(B\u001b[m\u001b[32m\u001b[1m\u001b[1;1Hvdupras@debian\u001b(B\u001b[m:\u001b[34m\u001b[1m~/src/dusk\u001b(B\u001b[m$ \u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[2B\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[30m\u001b[42m\r\n[4] 0:bash* \"debian\" 19:20 03-Jul-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[24;1H\u001b[?2004l"] [2.357808, "o", "\u001b[H\u001b[32m\u001b[1mvdupras@debian\u001b(B\u001b[m:\u001b[34m\u001b[1m~/src/dusk\u001b(B\u001b[m$ \u001b[K\u001b[24;1H"] [2.358428, "o", "Big Moustache in Dusk\r\n"] [2.361894, "o", "\u001b[?25l\u001b[2A\u001b[32m─────────────────────────────────────────\u001b[39m───────────────────────────────────────\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[1;28H\u001b[?2004h"] [4.420513, "o", "c"] [4.492597, "o", "d"] [4.86055, "o", " "] [5.228429, "o", "u"] [5.372458, "o", "s"] [5.458423, "o", "ermode/"] [6.476346, "o", "\r\n\u001b[?2004l"] [6.476522, "o", "\u001b[?2004h\u001b[32m\u001b[1mvdupras@debian\u001b(B\u001b[m:\u001b[34m\u001b[1m~/src/dusk/usermode\u001b(B\u001b[m$ "] [6.964449, "o", "."] [7.044218, "o", "/"] [7.452518, "o", "d"] [7.564589, "o", "u"] [7.605015, "o", "sk\u0007"] [8.412464, "o", "-"] [8.612436, "o", "c"] [8.780384, "o", "u"] [8.852439, "o", "r"] [9.004745, "o", "ses "] [9.44432, "o", "\r\n\u001b[?2004l"] [9.446737, "o", "\u001b[?25l\u001b[H\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[?12l\u001b[?25h\u001b[H"] [9.481991, "o", "Dusk OS\r\n126KB used 31MB free ok\r\n"] [11.284601, "o", "\u001b[?25l\u001b[23d\u001b[32m─────────────────────────────────────────\u001b[39m───────────────────────────────────────\u001b(B\u001b[m\u001b[30m\u001b[42m\u001b[30;1H[4] 0:./dusk-curses* \"debian\" 19:20 03-Jul-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[3;1H"] [12.374526, "o", "\u001b[25dThe HAL allows significant speedups compared to Forth\u001b[3;1H"] [14.378824, "o", "\u001b[26dbut it's also quite verbose\u001b[3;1H"] [17.384203, "o", "\u001b[27dYou'll probably use it only in your tight loops\u001b[3;1H"] [21.390852, "o", "\u001b[28dWhat if there was a way to have \"quick wins\" here and there?\u001b[3;1H"] [26.399135, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AEnter {Big Moustache}!\r\n\u001b[K\u001b[1;30r\u001b[3;1H"] [28.725601, "o", "c"] [28.908705, "o", "r"] [29.100284, "o", "e"] [29.30122, "o", "a"] [29.436409, "o", "t"] [29.540627, "o", "e"] [29.693326, "o", " "] [29.845353, "o", "d"] [29.892624, "o", "a"] [30.148855, "o", "t"] [30.228681, "o", "a"] [30.381386, "o", " "] [30.861409, "o", "4"] [30.917015, "o", "2"] [31.549203, "o", " "] [31.749251, "o", ","] [31.88464, "o", " "] [32.405636, "o", "5"] [32.444404, "o", "4"] [32.605306, "o", " "] [32.813129, "o", ","] [33.476571, "o", "\r\n ok\r\n"] [34.373363, "o", ":"] [34.628645, "o", " "] [34.780688, "o", "s"] [34.893236, "o", "h"] [34.981374, "o", "o"] [35.077014, "o", "w"] [35.293469, "o", " "] [35.917192, "o", "d"] [35.972903, "o", "a"] [36.084293, "o", "t"] [36.181282, "o", "a"] [36.324613, "o", " "] [36.684794, "o", "@"] [36.908936, "o", "+"] [37.133326, "o", " "] [37.317582, "o", "."] [37.549268, "o", " "] [38.213392, "o", "s"] [38.365107, "o", "p"] [38.477105, "o", "c"] [38.756909, "o", ">"] [39.108827, "o", " "] [40.044494, "o", "@"] [40.205468, "o", " "] [40.364537, "o", "."] [40.556735, "o", " "] [41.028967, "o", ";"] [42.244963, "o", "\r\n ok\r\n"] [42.572337, "o", "s"] [42.660913, "o", "h"] [42.70909, "o", "o"] [42.812584, "o", "w"] [42.972831, "o", "\r\n42 54 ok\r\n"] [45.004313, "o", "\u001b[?25l\u001b[30m\u001b[42m\u001b[30d[4] 0:./dusk-curses* \"debian\" 19:21 03-Jul-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[9;1H"] [47.429888, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[ALet's say we want to add 1 to our first field and 2 to the second\r\n\u001b[K\u001b[1;30r\u001b[9;1H"] [50.316522, "o", ":"] [50.556569, "o", " "] [50.773435, "o", "f"] [50.917273, "o", "o"] [51.037256, "o", "o"] [51.125118, "o", " "] [52.53262, "o", "2"] [52.661054, "o", " "] [53.397119, "o", "\b"] [53.51727, "o", "\b \b"] [53.68499, "o", "1"] [53.892745, "o", " "] [54.67692, "o", "o"] [54.765011, "o", "v"] [54.87671, "o", "e"] [54.972346, "o", "r"] [55.045583, "o", " "] [56.04548, "o", "+"] [56.620603, "o", "!"] [56.980776, "o", " "] [58.805766, "o", "2"] [59.148789, "o", " "] [59.293079, "o", "s"] [59.349247, "o", "w"] [59.532678, "o", "a"] [59.645167, "o", "p"] [60.57277, "o", " "] [60.741045, "o", "4"] [60.868821, "o", " "] [61.060733, "o", "+"] [61.261496, "o", " "] [62.533195, "o", "+"] [62.693291, "o", "!"] [63.292821, "o", " "] [63.70933, "o", ";"] [64.820707, "o", "\r\n ok\r\n"] [65.365446, "o", "d"] [65.429445, "o", "a"] [65.573448, "o", "t"] [65.645155, "o", "a"] [65.797643, "o", " "] [65.99746, "o", "f"] [66.092387, "o", "o"] [66.220623, "o", "o"] [66.316928, "o", " "] [66.973217, "o", "s"] [67.076909, "o", "h"] [67.141509, "o", "o"] [67.213497, "o", "w"] [67.740619, "o", "\r\n43 56 ok\r\n"] [69.461074, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[ALooks like the best we can do\r\n\u001b[K\u001b[1;30r\u001b[13;1H"] [75.470206, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[ADisassembly isn't great either\r\n\u001b[K\u001b[1;30r\u001b[13;1H"] [76.925581, "o", "n"] [77.108609, "o", "e"] [77.277266, "o", "e"] [77.428893, "o", "d"] [77.501062, "o", "s"] [77.644917, "o", " "] [77.916967, "o", "a"] [77.996578, "o", "s"] [78.084551, "o", "m"] [78.316494, "o", "/"] [78.885417, "o", "d"] [78.989661, "o", "i"] [79.060902, "o", "s"] [80.108699, "o", "\r\n ok\r\n"] [80.845772, "o", "'"] [80.925414, "o", " "] [81.101462, "o", "f"] [81.244801, "o", "o"] [81.372858, "o", "o"] [81.437409, "o", " "] [81.564474, "o", "d"] [81.685628, "o", "i"] [81.781352, "o", "s"] [82.51776, "o", "\u001b[1;22r\u001b[1;1H\u001b[11S\u001b[4Bf5cad950 ADD ESI,fc\u001b[7C83 c6 fc\r\nf5cad953 MOV [ESI],EAX 89 06\r\nf5cad955 MOV EAX,00000001 b8 01 00 00 00\r\nf5cad95a ADD ESI,fc\u001b[12;1H\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[8;28H"] [82.517816, "o", "83 c6 fc\r\nf5cad95d MOV [ESI],EAX 89 06\r\nf5cad95f MOV EAX,[ESI+04] 8b 46 04\r\nf5cad962 CALL f5c8e7ac +!\r\nf5cad967 ADD ESI,fc\u001b[7C83 c6 fc\r\nf5cad96a MOV [ESI],EAX 89 06\r\nf5cad96c MOV EAX,00000002 b8 02 00 00 00\r\nf5cad971 XCHG EAX,[ESI] 87 06\r\nf5cad973 ADD ESI,fc\u001b[7C83 c6 fc\r\nf5cad976 MOV [ESI],EAX 89 06\r\nf5cad978 MOV EAX,00000004 b8 04 00 00 00\r\nf5cad97d ADD EAX,[ESI] 03 06\r\nf5cad97f ADD ESI,04\u001b[7C83 c6 04\r\n ok\r\n"] [87.077553, "o", "d"] [87.213293, "o", "i"] [87.309335, "o", "s"] [87.469347, "o", "n"] [88.958289, "o", "\u001b[1;22r\u001b[22;1H\u001b[K\u001b[Hf5cad97f ADD ESI,04\u001b[7C83 c6 04\r\n ok\u001b[K\r\ndisn\r\nf5cad982 CALL f5c8e7ac +!\u001b[5;7H87 RET \u001b[7Cc3\u001b[K\u001b[6;7H88 POPA 61 \u001b[7;7H89 Jc NB,f5cad9f8 73 6d\u001b[K\u001b[8;7H8b SEG \u001b[7C2f\u001b[K\u001b[9;7H8c SEG 64 \u001b[10;7H8d IMUL [EBX+07],ESI,f5c91da8\r\n 69 73 07 a8 1d c9 f5\u001b[K\u001b[12;7H94 RET \u001b[7Cc3\u001b[K\u001b[13;7H95 ADD {EAX},AL 00 00\u001b[14;7H97 ADD AL,CH 00 e8\u001b[K\u001b[15;7H99 AAD d5 \u001b[16;7H9a RETF \u001b[7Cca\u001b[K\u001b[17;7H9b CMC f5 \u001b[18;7H9c LOOP Z,f5cad977 e0 d9\u001b[K\u001b[19;7H9e RETF ca \u001b[1;30r\u001b[20;7H9f CMC \u001b[7Cf5\u001b[K\u001b[22;1H"] [95.499004, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[ABig moustache allows us to combine fancy memory accesses into one operation\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [99.505877, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AFor example, let's reduce \"4 +\" part\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [101.013448, "o", ":"] [101.421149, "o", " "] [101.772746, "o", "f"] [102.005346, "o", "o"] [102.149222, "o", "o"] [102.221555, "o", " "] [102.981096, "o", "1"] [103.276652, "o", " "] [103.684712, "o", "o"] [103.820676, "o", "v"] [103.989328, "o", "e"] [104.084676, "o", "r"] [105.003077, "o", "\u001b[?25l\u001b[30m\u001b[42m\u001b[30;1H[4] 0:./dusk-curses* \"debian\" 19:22 03-Jul-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[22;13H"] [105.141248, "o", " "] [105.908814, "o", "+"] [106.196478, "o", "!"] [107.316854, "o", " "] [107.789522, "o", "2"] [108.261238, "o", " "] [108.405394, "o", "s"] [108.469561, "o", "w"] [108.621448, "o", "a"] [108.724846, "o", "p"] [108.828831, "o", " "] [109.83785, "o", "@"] [110.421439, "o", "{"] [111.445426, "o", "&"] [112.285256, "o", "+"] [112.556581, "o", "4"] [113.38879, "o", "}"] [114.253069, "o", " "] [115.389714, "o", "+"] [115.509525, "o", "!"] [116.517158, "o", " "] [116.70037, "o", ";"] [119.893667, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [120.741796, "o", "d"] [120.812807, "o", "a"] [120.957002, "o", "t"] [121.012624, "o", "a"] [121.165258, "o", " "] [121.301124, "o", "f"] [121.453255, "o", "o"] [121.581025, "o", "o"] [121.637705, "o", " "] [121.884909, "o", "s"] [121.957509, "o", "h"] [122.020814, "o", "o"] [122.132866, "o", "w"] [122.653726, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d44 58 ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [125.54349, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AIt works as expected...\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [128.900867, "o", "'"] [128.98085, "o", " "] [129.212766, "o", "f"] [129.333231, "o", "o"] [129.453351, "o", "o"] [129.51751, "o", " "] [129.676709, "o", "d"] [129.773321, "o", "i"] [129.869408, "o", "s"] [130.510491, "o", "\u001b[1;22r\u001b[22;1H\u001b[K\u001b[H ok\u001b[K\r\ndata foo show\u001b[K\r\n44 58 ok\u001b[K\r\n' foo dis\u001b[K\u001b[5;5Hfac0 ADD ESI,fc\u001b[7C83 c6 fc\u001b[6;5Hfac3 MOV [ESI],EAX 89 06 \r\nf5cafac5 MOV EAX,00000001 b8 01 00 00 00\u001b[8;5Hfaca ADD ESI,fc\u001b[7C83 c6 fc\u001b[9;5Hfacd MOV [ESI],EAX 89 06\u001b[10;5Hfacf MOV EAX,[ESI+04] 8b 46 04\u001b[11;5Hfad2 CALL f5c8e7ac +!\u001b[12;5Hfad7 ADD ESI,fc\u001b[7C83 c6 fc\u001b[13;5Hfada MOV [ESI],EAX 89 06\u001b[14;5Hfadc MOV EAX,00000002 b8 02 00 00 00\u001b[15;5Hfae1 XCHG EAX,[ESI] 87 06\u001b[16;5Hfae3 LEA [EAX+04],EDI 8d 78 04\r\nf5cafae6 MOV EAX,EDI\u001b[6C8b c7\r\nf5cafae8 CALL f5c8e7ac +!\u001b[K\r\nf5cafaed RET\u001b[15Cc3\r\nf5cafaee ADD {EAX},AL 00 00\r\n\u001b[5P\u001b[1;30r\u001b[22;1H"] [135.558897, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[ABut the listing is cleaner\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [142.569782, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AMoustaches can do arithmetics too...\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [145.574953, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[Awhich can store result directly in their target..\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [147.57913, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[Aand they can also encode literals directly!\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [148.932773, "o", ":"] [149.108984, "o", " "] [149.317158, "o", "f"] [149.477199, "o", "o"] [149.644942, "o", "o"] [151.140664, "o", " "] [152.709356, "o", "d"] [153.133074, "o", "u"] [153.197478, "o", "p"] [153.372688, "o", " "] [155.0127, "o", "+"] [156.452621, "o", "{"] [158.229325, "o", "!"] [160.829751, "o", "#"] [161.629382, "o", "1"] [163.612726, "o", "}"] [164.669794, "o", " "] [165.003004, "o", "\u001b[?25l\u001b[30m\u001b[42m\u001b[30;1H[4] 0:./dusk-curses* \"debian\" 19:23 03-Jul-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[22;18H"] [166.92495, "o", "+"] [168.973234, "o", "{"] [170.173487, "o", "!"] [171.373375, "o", "+"] [172.12505, "o", "4"] [172.957644, "o", " "] [173.661092, "o", "#"] [174.813345, "o", "2"] [176.220739, "o", " "] [176.925136, "o", "\b"] [177.332568, "o", "}"] [177.596883, "o", " "] [178.916958, "o", ";"] [181.301272, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [182.372785, "o", "d"] [182.445652, "o", "a"] [182.59738, "o", "t"] [182.677021, "o", "a"] [182.812667, "o", " "] [183.477492, "o", "f"] [183.660748, "o", "o"] [183.79794, "o", "o"] [183.893201, "o", " "] [184.173281, "o", "s"] [184.24521, "o", "h"] [184.317091, "o", "o"] [184.42073, "o", "w"] [184.702061, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d45 60 ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [190.789257, "o", "'"] [191.037292, "o", " "] [191.749161, "o", "f"] [191.965588, "o", "o"] [192.08522, "o", "o"] [192.156971, "o", " "] [192.389943, "o", "d"] [192.53349, "o", "i"] [192.637146, "o", "s"] [193.614555, "o", "\u001b[1;22r\u001b[22;1H\u001b[K\u001b[H ok\u001b[K\r\ndata foo show\u001b[K\r\n45 60 ok\u001b[K\r\n' foo dis\u001b[K\u001b[5;7Hf8 ADD ESI,fc 83 c6 fc\u001b[6;7Hfb\u001b[6C[ESI],EAX 89 06 \u001b[7;7Hfd MOV EDX,00000001 ba 01 00 00 00\u001b[8;6Hb02\u001b[6C[EAX],EDX 01 10 \u001b[9;6Hb04 LODS D ad \u001b[10;6Hb05\u001b[7CD\u001b[12Ca\u001b[11;6Hb0a ADD [EAX+04],EDX 01 50 04\u001b[12;6Hb0d LODS D ad\u001b[K\u001b[13;6Hb0e RET \u001b[6Cc3 \u001b[14;6Hb0f ADD {EAX},AL 00 00\u001b[15;6Hb11 ADD {EAX},AL 00 00\u001b[16;6Hb13\r\nf5cafb15 ADD {EAX},AL 00 00\r\nf5cafb17 ADD {EAX},AL 00 00\r\nf5cafb19 ADD {EAX},AL 00 00\r\nf5cafb1b ADD {EAX},AL 00 00\r\n\u001b[5P\u001b[1;30r\u001b[22;1H"] [195.64557, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AThat listing is getting seriously tight, ain't it?\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [205.660805, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AAnd last but not the least...\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [209.667483, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AMoustaches can take advantage of the A register to lighten PS juggling\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [212.973408, "o", ":"] [213.629087, "o", " "] [214.36526, "o", "f"] [215.917044, "o", "o"] [216.814272, "o", "o"] [217.12534, "o", " "] [218.364995, "o", "W"] [218.925291, "o", "@"] [219.797328, "o", "A"] [221.510173, "o", " "] [222.925321, "o", "!"] [223.94992, "o", "\b \b"] [224.717015, "o", "+"] [225.004116, "o", "\u001b[?25l\u001b[30m\u001b[42m\u001b[30;1H[4] 0:./dusk-curses* \"debian\" 19:24 03-Jul-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[22;12H"] [226.509389, "o", "{"] [227.925383, "o", "!"] [229.980978, "o", "#"] [231.461893, "o", "1"] [233.50156, "o", "}"] [234.213731, "o", " "] [235.31703, "o", "+"] [236.797009, "o", "{"] [238.965384, "o", "!"] [239.645386, "o", "A"] [240.406013, "o", "+"] [240.789295, "o", "4"] [241.396933, "o", " "] [242.181212, "o", "#"] [242.605383, "o", "2"] [244.285489, "o", "}"] [245.062112, "o", " "] [245.964969, "o", ";"] [248.381631, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [250.029363, "o", "d"] [250.14106, "o", "a"] [250.325899, "o", "t"] [250.405326, "o", "a"] [250.557791, "o", " "] [250.974081, "o", "f"] [251.166061, "o", "o"] [251.30999, "o", "o"] [251.396915, "o", " "] [251.590007, "o", "s"] [251.677607, "o", "h"] [251.742192, "o", "o"] [251.869894, "o", "w"] [252.292932, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d46 62 ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [255.813413, "o", "'"] [256.301984, "o", " "] [256.533254, "o", "f"] [256.733242, "o", "o"] [256.88572, "o", "o"] [256.941093, "o", " "] [257.261056, "o", "d"] [257.413055, "o", "i"] [257.517066, "o", "s"] [258.8061, "o", "\u001b[1;22r\u001b[22;1H\u001b[K\u001b[H ok\u001b[K\r\ndata foo show\u001b[K\r\n46 62 ok\u001b[K\r\n' foo dis\u001b[K\u001b[5;7H18 MOV EBX,EAX\u001b[6C89 c3\u001b[6;7H1a\u001b[17C1 ba 01\u001b[7;7H1f\u001b[10C],EDX 01 10 \u001b[8;7H21\u001b[9;7H22 MOV EDX,00000002 ba 02 00 00 00\u001b[10;7H27\u001b[6C[EBX+04],EDX 01 53 04\u001b[11;7H2a RET c3 \u001b[12;7H2b\u001b[13;7H2d\u001b[14;7H2f\u001b[15;7H31\u001b[16;7H33\r\nf5cafb35 ADD {EAX},AL 00 00\r\nf5cafb37 ADD {EAX},AL 00 00\r\nf5cafb39 ADD {EAX},AL 00 00\r\nf5cafb3b ADD {EAX},AL 00 00\r\n\u001b[5P\u001b[1;30r\u001b[22;1H"] [261.74084, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AAs you can see, moustaches allow some pretty juicy \"quick wins\"\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [268.75143, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[Ain quite compact semantics\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [272.757826, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AGoodbye!\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [277.768755, "o", "\u001b[?25l\u001b[H ok\u001b[K\r\ndata foo show\u001b[K\r\n46 62 ok\u001b[K\r\n' foo dis\u001b[K\r\nf5cafb18 MOV EBX,EAX 89 c3\u001b[K\r\nf5cafb1a MOV EDX,00000001 ba 01 00 00 00\u001b[K\r\nf5cafb1f ADD [EAX],EDX 01 10 \u001b[K\r\nf5cafb21 LODS D ad\u001b[K\r\nf5cafb22 MOV EDX,00000002 ba 02 00 00 00\u001b[K\r\nf5cafb27 ADD [EBX+04],EDX 01 53 04\u001b[K\r\nf5cafb2a RET c3 \u001b[K\r\nf5cafb2b ADD {EAX},AL 00 00\u001b[K\r\nf5cafb2d ADD {EAX},AL 00 00\u001b[K\r\nf5cafb2f ADD {EAX},AL 00 00\u001b[K\r\nf5cafb31 ADD {EAX},AL 00 00\u001b[K\r\nf5cafb33 ADD {EAX},AL 00 00\u001b[K\r\nf5cafb35 ADD {EAX},AL 00 00\u001b[K\r\nf5cafb37 ADD {EAX},AL 00 00\u001b[K\r\nf5cafb39 ADD {EAX},AL 00 00\u001b[K\r\nf5cafb3b ADD {EAX},AL 00 00\u001b[K\r\n ok\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[30m\u001b[42m\r\n[4] 0:./dusk-curses* \"debian\" 19:24 03-Jul-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[22;1H"] [277.769, "o", "\u001b[1;29r\u001b[1;1H\u001b[2;29r\u001b[28S\u001b[1;1H\u001b[K ok\u001b[1;30r\u001b[2;1Hdata foo show\r\n46 62 ok\r\n' foo dis\r\nf5cafb18 MOV EBX,EAX\u001b[6C89 c3\r\nf5cafb1a MOV EDX,00000001 ba 01 00 00 00\r\nf5cafb1f ADD [EAX],EDX 01 10\r\nf5cafb21 LODS D\u001b[12Cad\r\nf5cafb22 MOV EDX,00000002 ba 02 00 00 00\r\n"] [277.769138, "o", "f5cafb27 ADD [EBX+04],EDX 01 53 04\r\nf5cafb2a RET\u001b[15Cc3\r\nf5cafb2b ADD {EAX},AL 00 00\r\nf5cafb2d ADD {EAX},AL 00 00\r\nf5cafb2f ADD {EAX},AL 00 00\r\nf5cafb31 ADD {EAX},AL 00 00\r\nf5cafb33 ADD {EAX},AL 00 00\r\nf5cafb35 ADD {EAX},AL 00 00\r\nf5cafb37 ADD {EAX},AL 00 00\r\nf5cafb39 ADD {EAX},AL 00 00\r\nf5cafb3b ADD {EAX},AL 00 00\r\n ok\r\nIgnoring unknown key: 0000019a\r\n"] [278.973345, "o", "\u001b[Ab"] [279.0691, "o", "y"] [279.19739, "o", "e"] [279.557853, "o", "\u001b[1;29r\u001b[29;1H\n\u001b[21;4H \u001b[24;1H\u001b[1mPress any key to exit.\u001b(B\u001b[m\u001b[29;1H\u001b[K\u001b[1;30r\u001b[25;1H"] [280.301232, "o", "\u001b[?25l\u001b[32m\u001b[1m\u001b[Hvdupras@debian\u001b(B\u001b[m:\u001b[34m\u001b[1m~/src/dusk\u001b(B\u001b[m$ cd usermode/\u001b[K\u001b[32m\u001b[1m\r\nvdupras@debian\u001b(B\u001b[m:\u001b[34m\u001b[1m~/src/dusk/usermode\u001b(B\u001b[m$ ./dusk-curses \u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[?12l\u001b[?25h\u001b[3d"] [280.301857, "o", "\u001b[?2004h"] [280.302098, "o", "\u001b[32m\u001b[1mvdupras@debian\u001b(B\u001b[m:\u001b[34m\u001b[1m~/src/dusk/usermode\u001b(B\u001b[m$ "] [282.18924, "o", "\u001b[?25l\u001b[30m\u001b[42m\u001b[30;1H[4] 0:bash* \"debian\" 19:24 03-Jul-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[3;37H"] [282.189516, "o", "\r\n\u001b[?2004l"] [282.189775, "o", "logout\r\n"] [282.193728, "o", "\u001b[1;30r\u001b(B\u001b[m\u001b[?1l\u001b>\u001b[H\u001b[2J\u001b[?12l\u001b[?25h\u001b[?1000l\u001b[?1002l\u001b[?1003l\u001b[?1006l\u001b[?1005l\u001b[?7727l\u001b[?1004l\u001b[?1049l\u001b[23;0;0t"] [282.194012, "o", "[exited]\r\n"]