{"version": 2, "width": 80, "height": 30, "timestamp": 1730661272, "env": {"SHELL": "/bin/bash", "TERM": "xterm-256color"}} [0.040416, "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\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[10] 0:bash* \"arendt\" 14:14 03-Nov-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[1;1H"] [0.043409, "o", "\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[10] 0:bash* \"arendt\" 14:14 03-Nov-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[1;1H"] [0.056169, "o", "\u001b[?7727h"] [0.238074, "o", "\u001b[32m\u001b[1mvdupras@arendt\u001b(B\u001b[m:\u001b[34m\u001b[1m~/demo/duskos/usermode $\u001b(B\u001b[m \u001b[?2004h"] [2.258595, "o", "\u001b[?25l\u001b[23;1H─────────────────────────────────────────\u001b[32m───────────────────────────────────────\u001b(B\u001b[m\u001b[32m\u001b[1m\u001b[1;1Hvdupras@arendt\u001b(B\u001b[m:\u001b[34m\u001b[1m~/demo/duskos/usermode $\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[10] 0:bash* \"arendt\" 14:14 03-Nov-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[24;1H\u001b[?2004l"] [2.260522, "o", "\u001b[H\u001b[32m\u001b[1mvdupras@arendt\u001b(B\u001b[m:\u001b[34m\u001b[1m~/demo/duskos/usermode $\u001b(B\u001b[m \u001b[K\u001b[24;1H"] [2.263569, "o", "Let's talk about immediate mechanics in Dusk\r\n"] [2.279292, "o", "\u001b[?25l\u001b[2A\u001b[32m─────────────────────────────────────────\u001b[39m───────────────────────────────────────\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[1;41H\u001b[?2004h"] [4.1727, "o", "."] [4.24439, "o", "/"] [4.559189, "o", "d"] [4.713621, "o", "u"] [4.80327, "o", "s"] [4.88626, "o", "\u0007k"] [5.616671, "o", "-"] [5.793859, "o", "c"] [6.035975, "o", "u"] [6.117879, "o", "r"] [6.361479, "o", "ses "] [6.84252, "o", "\r\n\u001b[?2004l"] [6.852695, "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"] [6.852983, "o", "\u001b[1;22r\u001b[1;1H\u001b[2;22r\u001b[21S\u001b[1;1H\u001b[K\u001b[1;30r\u001b[1;1H"] [7.16529, "o", "Dusk OS\r\n192KB used 31MB free ok\r\n"] [7.872271, "o", "\u001b[?25l\u001b[23d\u001b[32m─────────────────────────────────────────\u001b[39m───────────────────────────────────────\u001b(B\u001b[m\u001b[30m\u001b[42m\u001b[30;1H[10] 0:./dusk-curses* \"arendt\" 14:14 03-Nov-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[3;1H"] [8.292479, "o", "\u001b[25dAs with any Forth, Dusk has immediates\u001b[3;1H"] [10.133199, "o", ":"] [10.384804, "o", " "] [10.691018, "o", "f"] [10.900218, "o", "o"] [11.0375, "o", "o"] [12.681146, "o", " "] [13.194969, "o", "."] [13.493583, "o", "\""] [14.127947, "o", "h"] [14.233516, "o", "e"] [14.43648, "o", "l"] [14.573384, "o", "l"] [14.767401, "o", "o"] [15.179599, "o", "\""] [15.622891, "o", " "] [15.936598, "o", ";"] [16.042474, "o", " "] [16.283548, "o", "i"] [16.581995, "o", "m"] [16.711695, "o", "m"] [16.961007, "o", "e"] [17.491232, "o", "d"] [17.676795, "o", "i"] [17.839109, "o", "a"] [18.017082, "o", "t"] [18.162484, "o", "e"] [19.199063, "o", "\r\n ok\r\n"] [21.359443, "o", "\u001b[26dWe know how that works...\u001b[5;1H"] [22.574435, "o", "f"] [22.798658, "o", "o"] [22.920491, "o", "o"] [23.275278, "o", "\r\nhello ok\r\n"] [23.869878, "o", ":"] [24.113558, "o", " "] [24.395058, "o", "b"] [24.532432, "o", "a"] [24.661588, "o", "r"] [24.873986, "o", " "] [25.051225, "o", "f"] [25.18834, "o", "o"] [25.375391, "o", "o"] [25.914282, "o", " "] [26.419532, "o", ";"] [26.998269, "o", "\r\nhello ok\r\n"] [28.713424, "o", "\u001b[?25l\u001b[30m\u001b[42m\u001b[30d[10] 0:./dusk-curses* \"arendt\" 14:15 03-Nov-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[9;1H"] [29.403216, "o", "\u001b[27dBut what if you want to have a compile time behavior different from runtime?\u001b[9;1H"] [35.433853, "o", "\u001b[28dDusk's solution is another level of immediateness: find selectors\u001b[9;1H"] [40.462867, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[A\"findselector\" is a flags that works like \"immediate\", but at \"find\" time\r\n\u001b[K\u001b[1;30r\u001b[9;1H"] [44.487133, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AFind selectors must have a \"( -- w )\" signature, yielding the word to execute\r\n\u001b[K\u001b[1;30r\u001b[9;1H"] [45.071852, "o", ":"] [45.987751, "o", " "] [46.50111, "o", "b"] [46.590134, "o", "a"] [46.69541, "o", "r"] [47.218738, "o", " "] [47.900249, "o", "["] [48.102459, "o", "'"] [48.336817, "o", "]"] [48.618853, "o", " "] [48.86046, "o", "f"] [49.623091, "o", "o"] [49.760502, "o", "o"] [50.290635, "o", " "] [50.435749, "o", ";"] [50.630656, "o", " "] [51.200215, "o", "f"] [51.369796, "o", "i"] [51.450881, "o", "n"] [51.606508, "o", "d"] [51.880408, "o", "s"] [52.050255, "o", "e"] [52.275805, "o", "l"] [52.365916, "o", "e"] [52.608923, "o", "c"] [52.890708, "o", "t"] [53.067598, "o", "o"] [53.149468, "o", "r"] [54.833836, "o", "\r\n ok\r\n"] [56.235453, "o", "b"] [56.340612, "o", "a"] [56.428585, "o", "r"] [57.249641, "o", "\r\nhello ok\r\n"] [58.611794, "o", ":"] [58.838352, "o", " "] [59.032002, "o", "b"] [59.121667, "o", "a"] [59.175192, "o", "z"] [59.390957, "o", " "] [59.928793, "o", "b"] [60.033933, "o", "a"] [60.138911, "o", "r"] [60.318505, "o", " "] [60.784502, "o", ";"] [61.443464, "o", "\r\n ok\r\n"] [62.460719, "o", "b"] [62.527767, "o", "a"] [62.58505, "o", "z"] [62.818867, "o", "\r\nhello ok\r\n"] [65.063587, "o", "\u001b[?25l\u001b[30m\u001b[43m\u001b[30d(rename-window) ./dusk-curses\u001b[7m \u001b(B\u001b[m\u001b[30m\u001b[43m \u001b(B\u001b[m\u001b[30;30H"] [67.048944, "o", "\u001b[30m\u001b[43m\r(rename-window) ./dusk-curse\u001b[7m \u001b(B\u001b[m\u001b[30m\u001b[43m \u001b(B\u001b[m\u001b[30;29H"] [69.627031, "o", "\u001b[30m\u001b[43m\r(rename-window) ./dusk-curses\u001b[7m \u001b(B\u001b[m\u001b[30m\u001b[43m \u001b(B\u001b[m\u001b[30;30H"] [69.72022, "o", "\u001b[23;1H\u001b[32m─────────────────────────────────────────\u001b[39m───────────────────────────────────────\u001b(B\u001b[m\u001b[1;1HDusk OS\u001b[K\r\n192KB used 31MB free ok\u001b[K\r\n: foo .\"hello\" ; immediate\u001b[K\r\n ok\u001b[K\r\nfoo\u001b[K\r\nhello ok\u001b[K\r\n: bar foo ;\u001b[K\r\nhello ok\u001b[K\r\n: bar ['] foo ; findselector\u001b[K\r\n ok\u001b[K\r\nbar\u001b[K\r\nhello ok\u001b[K\r\n: baz bar ;\u001b[K\r\n ok\u001b[K\r\nbaz\u001b[K\r\nhello 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\u001b[2BWe know how that works...\u001b[K\r\nBut what if you want to have a compile time behavior different from runtime?\u001b[K\r\nDusk's solution is another level of immediateness: find selectors\u001b[K\r\n\"findselector\" is a flags that works like \"immediate\", but at \"find\" time\u001b[K\r\nFind selectors must have a \"( -- w )\" signature, yielding the word to execute\u001b[K\r\n\u001b[K\u001b[30m\u001b[42m\r\n[10] 0:./dusk-curses* \"arendt\" 14:15 03-Nov-24\u001b(B\u001b[m\u001b[17;1H\u001b[?12l\u001b[?25h"] [71.61547, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[ASimple enough, right? As you can guess we can add layers of indirection\r\n\u001b[K\u001b[1;30r\u001b[17;1H"] [80.101648, "o", ":"] [80.624579, "o", " "] [81.346684, "o", "b"] [81.476023, "o", "a"] [81.565001, "o", "r"] [81.760732, "o", " "] [82.442677, "o", "."] [82.813559, "o", "\""] [83.896179, "o", "g"] [84.138048, "o", "o"] [84.268091, "o", "o"] [84.470439, "o", "d"] [84.880481, "o", "b"] [84.953328, "o", "y"] [85.091728, "o", "e"] [86.063281, "o", "\""] [86.443371, "o", " "] [86.756512, "o", ";"] [87.83154, "o", "\r\n ok\r\n"] [90.056139, "o", "\u001b[?25l\u001b[30m\u001b[42m\u001b[30d[10] 0:./dusk-curses* \"arendt\" 14:16 03-Nov-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[19;1H"] [90.720299, "o", "v"] [90.986814, "o", "a"] [91.211721, "o", "r"] [91.470161, "o", "i"] [91.608157, "o", "a"] [91.704962, "o", "b"] [91.91552, "o", "l"] [92.021592, "o", "e"] [92.18391, "o", " "] [92.844177, "o", "C"] [92.980613, "o", "H"] [93.295145, "o", "O"] [93.375729, "o", "I"] [93.61945, "o", "C"] [93.876843, "o", "E"] [96.825677, "o", "\r\n ok\r\n"] [97.715218, "o", ":"] [97.998434, "o", " "] [98.192, "o", "b"] [98.273787, "o", "a"] [98.340012, "o", "z"] [98.630885, "o", " "] [99.56194, "o", "C"] [99.96337, "o", "H"] [100.197797, "o", "O"] [100.246307, "o", "I"] [100.352609, "o", "C"] [100.522516, "o", "E"] [101.071506, "o", " "] [101.337596, "o", "@"] [101.508459, "o", " "] [101.894693, "o", "i"] [101.993007, "o", "f"] [102.865612, "o", " "] [103.772237, "o", "["] [104.014603, "o", "'"] [104.320157, "o", "]"] [104.859672, "o", " "] [105.204591, "o", "b"] [105.286229, "o", "a"] [105.414785, "o", "r"] [106.186342, "o", " "] [106.395618, "o", "e"] [106.55749, "o", "l"] [106.672097, "o", "s"] [106.971035, "o", "e"] [107.365015, "o", " "] [108.230219, "o", "["] [108.424404, "o", "'"] [108.650196, "o", "]"] [109.477182, "o", " "] [110.294632, "o", "f"] [110.608105, "o", "o"] [111.098157, "o", "o"] [111.4689, "o", " "] [111.694506, "o", "t"] [111.856114, "o", "h"] [111.969524, "o", "e"] [112.172831, "o", "n"] [112.317222, "o", " "] [112.791802, "o", ";"] [112.970592, "o", " "] [113.877124, "o", "f"] [114.045214, "o", "i"] [114.114444, "o", "n"] [114.257433, "o", "d"] [114.499977, "o", "s"] [114.669398, "o", "e"] [114.872893, "o", "l"] [114.95404, "o", "e"] [115.050148, "o", "c"] [115.270212, "o", "t"] [115.400147, "o", "o"] [115.505938, "o", "r"] [118.462436, "o", "\u001b[1;22r\u001b[22;1H\n\u001b[A ok\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [120.766755, "o", "b"] [120.935987, "o", "a"] [121.032583, "o", "z"] [122.846266, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21dhello ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [124.398859, "o", "1"] [124.624246, "o", " "] [124.87615, "o", "C"] [125.028622, "o", "H"] [125.198912, "o", "O"] [125.250364, "o", "I"] [125.337909, "o", "C"] [125.468524, "o", "E"] [125.815378, "o", " "] [126.050392, "o", "!"] [126.629691, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [127.766547, "o", "b"] [127.863979, "o", "a"] [127.928591, "o", "z"] [128.620939, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21dgoodbye ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [134.909857, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AWhen selecting at compile time, the choice is \"frozen\"\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [137.149687, "o", ":"] [137.512368, "o", " "] [138.066617, "o", "h"] [138.188292, "o", "e"] [138.278131, "o", "y"] [139.049196, "o", " "] [139.738173, "o", "b"] [139.820323, "o", "a"] [139.892171, "o", "z"] [140.20746, "o", " "] [140.440853, "o", ";"] [141.709551, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [142.517224, "o", "h"] [142.60745, "o", "e"] [142.696648, "o", "y"] [143.084696, "o", "\r"] [143.085408, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21dgoodbye ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [145.861004, "o", "0"] [145.983138, "o", " "] [146.457961, "o", "C"] [146.651889, "o", "H"] [146.82185, "o", "O"] [146.873343, "o", "I"] [146.960514, "o", "C"] [147.099926, "o", "E"] [147.503908, "o", " "] [147.730102, "o", "!"] [148.541799, "o", "\r"] [148.542458, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d \u001b[K\r\n\u001b[K\u001b[1;30r\u001b[21;2Hok\r\n"] [150.056186, "o", "\u001b[?25l\u001b[30m\u001b[42m\u001b[30d[10] 0:./dusk-curses* \"arendt\" 14:17 03-Nov-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[22;1H"] [151.26363, "o", "h"] [151.369537, "o", "e"] [151.458682, "o", "y"] [151.79875, "o", "\r"] [151.799505, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[21;1Hgoodbye ok\r\n"] [153.415869, "o", "b"] [153.505455, "o", "a"] [153.601833, "o", "z"] [154.671048, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21dhello ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [159.024581, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AFancy, right? Can you see where that leads us?\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [165.059027, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AThe word \"compiling\" compiles a find selector\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [166.56433, "o", ":"] [167.326536, "o", ">"] [168.058063, "o", " "] [169.18815, "o", "."] [169.790603, "o", "\""] [170.602196, "o", "c"] [170.731577, "o", "o"] [170.777857, "o", "m"] [170.966735, "o", "p"] [171.034472, "o", "i"] [171.162381, "o", "l"] [171.348436, "o", "e"] [173.312206, "o", "\""] [173.939648, "o", " "] [174.245234, "o", ";"] [174.551941, "o", " "] [176.698298, "o", ":"] [176.980801, "o", ">"] [177.703569, "o", " "] [178.241748, "o", "."] [178.532434, "o", "\""] [179.487288, "o", "r"] [179.697262, "o", "u"] [179.750892, "o", "n"] [180.790215, "o", "\""] [181.386535, "o", " "] [181.78794, "o", ";"] [182.566, "o", " "] [182.936061, "o", "c"] [183.233752, "o", "o"] [183.292349, "o", "m"] [183.684872, "o", "p"] [183.744491, "o", "i"] [184.601882, "o", "l"] [184.827583, "o", "i"] [184.885258, "o", "n"] [185.07177, "o", "g"] [185.593629, "o", " "] [185.891998, "o", "f"] [186.445186, "o", "o"] [187.207649, "o", "o"] [187.803509, "o", "\r"] [187.80412, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [188.883515, "o", "f"] [189.100937, "o", "o"] [189.222919, "o", "o"] [189.538195, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21drun ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [190.892243, "o", ":"] [191.287796, "o", " "] [192.033391, "o", "b"] [192.15531, "o", "a"] [192.324795, "o", "r"] [192.47095, "o", " "] [193.195008, "o", "f"] [193.386986, "o", "o"] [193.525013, "o", "o"] [193.647633, "o", " "] [193.897432, "o", ";"] [195.908703, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21dcompile ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [201.234869, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[ASo, what do we do with that flexibility? Inlining!\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [206.264253, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AMany small words in Dusk automatically inline themselves\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [210.071291, "o", "\u001b[?25l\u001b[30m\u001b[42m\u001b[30d[10] 0:./dusk-curses* \"arendt\" 14:18 03-Nov-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[22;1H"] [211.295313, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AWhy? let's see by recreating the word \"nip\"\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [215.831732, "o", "c"] [216.097493, "o", "o"] [216.187756, "o", "d"] [216.364832, "o", "e"] [216.463755, "o", " "] [217.602358, "o", "n"] [217.682863, "o", "i"] [217.932925, "o", "p"] [218.175631, "o", " "] [218.857447, "o", "4"] [219.03558, "o", " "] [219.373808, "o", "p"] [219.486629, "o", "s"] [219.817986, "o", "+"] [221.133794, "o", ","] [221.345348, "o", " "] [221.977728, "o", "e"] [222.154797, "o", "x"] [222.318693, "o", "i"] [222.446067, "o", "t"] [222.608451, "o", ","] [226.371186, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AWith a top of stack register, \"nip\" means \"shrink PS by 4\"\r\n\u001b[K\u001b[1;30r\u001b[22;22H"] [227.698976, "o", "\r"] [227.699677, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [231.400278, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AThis is what this HAL code does\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [233.497392, "o", "1"] [233.635248, "o", " "] [233.861813, "o", "2"] [233.967454, "o", " "] [234.233435, "o", "3"] [234.347841, "o", " "] [234.973961, "o", "n"] [235.086687, "o", "i"] [235.409161, "o", "p"] [235.547264, "o", " "] [235.764933, "o", "."] [235.895145, "o", " "] [236.208988, "o", "."] [236.468369, "o", " "] [236.989337, "o", "\b"] [237.281596, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d31 ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [238.4378, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AWorks as expected...\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [245.383365, "o", "n"] [245.721431, "o", "e"] [245.858972, "o", "e"] [246.469358, "o", "d"] [246.567472, "o", "s"] [246.769073, "o", " "] [247.075381, "o", "a"] [247.14816, "o", "s"] [247.254185, "o", "m"] [249.49409, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[Aand when compiled, generates a simple call to it\r\n\u001b[K\u001b[1;30r\u001b[22;10H"] [250.983251, "o", "/"] [251.634311, "o", "a"] [251.843134, "o", "r"] [252.045319, "o", "m"] [252.311569, "o", "d"] [253.52976, "o", "\r"] [253.530528, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [254.452354, "o", ":"] [254.920403, "o", " "] [255.178165, "o", "f"] [255.331079, "o", "o"] [255.46869, "o", "o"] [255.566662, "o", " "] [256.121111, "o", "n"] [256.275152, "o", "i"] [256.501495, "o", "p"] [256.695598, "o", " "] [256.881448, "o", ";"] [258.013182, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [258.861305, "o", "1"] [258.975552, "o", " "] [259.160939, "o", "2"] [259.267375, "o", " "] [259.509088, "o", "3"] [259.614555, "o", " "] [260.137701, "o", "f"] [260.314973, "o", "o"] [260.453402, "o", "o"] [260.542239, "o", " "] [260.80951, "o", "."] [260.939052, "o", " "] [261.141752, "o", "."] [261.576905, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d31 ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [263.778073, "o", "'"] [263.875472, "o", " "] [264.140344, "o", "f"] [264.278056, "o", "o"] [264.431815, "o", "o"] [264.529329, "o", " "] [264.691751, "o", "d"] [264.782057, "o", "i"] [264.871951, "o", "s"] [265.652997, "o", "\r\u001b[1;22r\u001b[22;1H\u001b[K\u001b[2d1 2 3 foo . .\r\n31\u001b[5P\r\n' foo dis\r\n74dd186c STR r14 r13 -04 ! e52de004\r\n74dd1870 BL nip ebfff996\r\n74dd1874 LDR r15 r13 +04 !p e49df004\r\n74dd1878 EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd187c EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd1880 EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd1884 EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd1888 EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd188c EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd1890 EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd1894 EQ AND r0 r0 r0\u001b[1;30r\u001b[15;35H"] [265.653688, "o", "00000000\r\n74dd1898 EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd189c EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd18a0 EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd18a4 EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd18a8 EQ AND r0 r0 r0\u001b[7C00000000\r\n\u001b[2P\r\n"] [269.406468, "o", "\u001b[?25l\u001b[30m\u001b[42m\u001b[30d[10] 0:./dusk-curses* \"arendt\" 14:19 03-Nov-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[22;1H"] [271.604246, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AA whole call! all for something a simple and quick as a nip? what a waste!\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [279.647313, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[ALet's create an inlinable nip\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [284.674157, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AFirst, we create a nip \"compiler\"\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [285.783472, "o", ":"] [286.002624, "o", " "] [286.684782, "o", "n"] [286.765728, "o", "i"] [286.967832, "o", "p"] [287.177961, "o", ","] [287.371847, "o", " "] [288.237941, "o", "4"] [288.368287, "o", " "] [288.626043, "o", "p"] [288.748627, "o", "s"] [289.039805, "o", "+"] [289.402237, "o", ","] [289.892686, "o", " "] [290.086313, "o", ";"] [294.906479, "o", "\r\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [297.964661, "o", "c"] [298.142105, "o", "o"] [298.224283, "o", "d"] [298.376266, "o", "e"] [298.788576, "o", ">"] [299.031725, "o", " "] [299.761062, "o", "n"] [299.849968, "o", "i"] [300.060641, "o", "p"] [300.286997, "o", ","] [300.51365, "o", " "] [301.243592, "o", "e"] [301.420398, "o", "x"] [301.575394, "o", "i"] [301.704924, "o", "t"] [301.915877, "o", ","] [304.750545, "o", " "] [308.79758, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AThen its runtime...\r\n\u001b[K\u001b[1;30r\u001b[22;18H"] [312.82307, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AWe pass those two to \"compiling\"...\r\n\u001b[K\u001b[1;30r\u001b[22;18H"] [314.346755, "o", "'"] [314.414148, "o", " "] [315.199287, "o", "n"] [315.288339, "o", "i"] [315.5064, "o", "p"] [315.893025, "o", ","] [316.126936, "o", " "] [316.633158, "o", "s"] [316.685304, "o", "w"] [316.876165, "o", "a"] [316.998847, "o", "p"] [317.102934, "o", " "] [317.762431, "o", "c"] [317.892215, "o", "o"] [317.948628, "o", "m"] [318.176019, "o", "p"] [318.227625, "o", "i"] [319.252397, "o", "l"] [319.453593, "o", "i"] [319.511651, "o", "n"] [320.595346, "o", "g"] [320.733058, "o", " "] [322.671393, "o", "n"] [322.750602, "o", "i"] [323.018406, "o", "p"] [325.495257, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [328.76072, "o", "\u001b[?25l\u001b[30m\u001b[42m\u001b[30d[10] 0:./dusk-curses* \"arendt\" 14:20 03-Nov-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[22;1H"] [329.901849, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AWhat happens when we use this in a word?\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [332.028224, "o", "1"] [332.14962, "o", " "] [332.37523, "o", "2"] [332.457227, "o", " "] [332.666521, "o", "3"] [332.797645, "o", " "] [333.367438, "o", "n"] [333.456551, "o", "i"] [333.667031, "o", "p"] [333.797228, "o", " "] [334.079356, "o", "."] [334.249764, "o", " "] [334.435128, "o", "."] [335.527026, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d31 ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [338.27424, "o", ":"] [338.502224, "o", " "] [338.919677, "o", "f"] [339.120977, "o", "o"] [339.275755, "o", "o"] [339.389681, "o", " "] [340.070669, "o", "n"] [340.159687, "o", "i"] [340.39432, "o", "p"] [340.836221, "o", " "] [341.134115, "o", ";"] [342.169915, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [342.921038, "o", "1"] [343.076185, "o", " "] [343.261899, "o", "2"] [343.39269, "o", " "] [343.922757, "o", "3"] [344.108025, "o", " "] [345.134707, "o", "f"] [345.311794, "o", "o"] [345.441897, "o", "o"] [345.548819, "o", " "] [345.790367, "o", "."] [345.976849, "o", " "] [346.154676, "o", "."] [346.478503, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d31 ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [348.996317, "o", "\u001b[29dworks as expected, of course...\u001b[22;1H"] [348.997338, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[K\u001b[1;30r\u001b[22;1H"] [350.996275, "o", "'"] [351.278669, "o", " "] [352.240721, "o", "f"] [353.059213, "o", "o"] [353.220589, "o", "o"] [353.32638, "o", " "] [353.840857, "o", "d"] [353.961774, "o", "i"] [354.044648, "o", "s"] [354.488942, "o", "\r\u001b[1;22r\u001b[22;1H\u001b[K\u001b[H ok\u001b[K\r\n1 2 3 foo . .\u001b[K\r\n31 ok\u001b[K\r\n' foo dis\u001b[K\u001b[5;7Hf4 STR r14 r13 -04 ! e52de004\u001b[6;7Hf8 ADDS r10 r10 00000004 e29aa004\u001b[7;7Hfc LDR r15 r13 +04 !p e49df004\u001b[8;6H90\u001b[9;6H90\u001b[10;6H90\r\n74dd190c EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd1910 EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd1914 EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd1918 EQ AND r0 r0 r0 00000000\r\n74dd191c EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd1920 EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd1924 EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd1928 EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd192c EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd1930 EQ AND r0 r0 r0\u001b[7C00000000\r\n\u001b[2P\u001b[1;30r\u001b[22;1H"] [357.043048, "o", "\u001b[29dand generates super efficient code!\u001b[22;1H"] [357.043907, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[K\u001b[1;30r\u001b[22;1H"] [366.090796, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AThat was immediate and inlining mechanism in Dusk, goodbye!\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [372.137116, "o", "\u001b[?25l\u001b[H ok\u001b[K\r\n1 2 3 foo . .\u001b[K\r\n31 ok\u001b[K\r\n' foo dis\u001b[K\r\n74dd18f4 STR r14 r13 -04 ! e52de004\u001b[K\r\n74dd18f8 ADDS r10 r10 00000004 e29aa004\u001b[K\r\n74dd18fc LDR r15 r13 +04 !p e49df004\u001b[K\r\n74dd1900 EQ AND r0 r0 r0\u001b[7X\u001b[7C00000000\u001b[K\r\n74dd1904 EQ AND r0 r0 r0\u001b[7X\u001b[7C00000000\u001b[K\r\n74dd1908 EQ AND r0 r0 r0\u001b[7X\u001b[7C00000000\u001b[K\r\n74dd190c EQ AND r0 r0 r0\u001b[7X\u001b[7C00000000\u001b[K\r\n74dd1910 EQ AND r0 r0 r0\u001b[7X\u001b[7C00000000\u001b[K\r\n74dd1914 EQ AND r0 r0 r0\u001b[7X\u001b[7C00000000\u001b[K\r\n74dd1918 EQ AND r0 r0 r0 00000000\u001b[K\r\n74dd191c EQ AND r0 r0 r0\u001b[7X\u001b[7C00000000\u001b[K\r\n74dd1920 EQ AND r0 r0 r0\u001b[7X\u001b[7C00000000\u001b[K\r\n74dd1924 EQ AND r0 r0 r0\u001b[7X\u001b[7C00000000\u001b[K\r\n74dd1928 EQ AND r0 r0 r0\u001b[7X\u001b[7C00000000\u001b[K\r\n74dd192c EQ AND r0 r0 r0\u001b[7X\u001b[7C00000000\u001b[K\r\n74dd1930 EQ AND r0 r0 r0\u001b[7X\u001b[7C00000000\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[10] 0:./dusk-curses* \"arendt\" 14:20 03-Nov-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[22;1H"] [372.139687, "o", "\u001b[1;29r\u001b[1;1H\u001b[2;29r\u001b[28S\u001b[1;1H\u001b[K ok\r\n1 2 3 foo . .\r\n31 ok\r\n' foo dis\r\n74dd18f4 STR r14 r13 -04 ! e52de004\r\n74dd18f8 ADDS r10 r10 00000004 e29aa004\r\n74dd18fc LDR r15 r13 +04 !p e49df004\r\n74dd1900 EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd1904 EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd1908 EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd190c EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd1910 EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd1914 EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd1918 EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd191c EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd1920 EQ AND r0 r0 r0\u001b[1;30r\u001b[16;35H00000000\r\n74dd1924 EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd1928 EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd192c EQ AND r0 r0 r0\u001b[7C00000000\r\n74dd1930 EQ AND r0 r0 r0\u001b[7C00000000\r\n ok\r\nIgnoring unknown key: 0000019a\r\n"] [374.002656, "o", "\u001b[Ab"] [374.195519, "o", "y"] [374.981995, "o", "e"] [375.153514, "o", "\u001b[1;29r\u001b[29;1H\n\u001b[21;4H\u001b[K\u001b[24;1H\u001b[1mPress any key to exit.\u001b(B\u001b[m\u001b[29;1H\u001b[K\u001b[1;30r\u001b[25;1H"] [376.914894, "o", "\u001b[?25l\u001b[32m\u001b[1m\u001b[Hvdupras@arendt\u001b(B\u001b[m:\u001b[34m\u001b[1m~/demo/duskos/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\r\n\u001b[K\u001b[?12l\u001b[?25h\u001b[2d"] [376.916689, "o", "\u001b[32m\u001b[1mvdupras@arendt\u001b(B\u001b[m:\u001b[34m\u001b[1m~/demo/duskos/usermode $\u001b(B\u001b[m \u001b[?2004h"] [378.137647, "o", "\r\nlogout\r\n\u001b[?2004l"] [378.14842, "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"] [378.149143, "o", "\u001b[?7727l\u001b[?1004l\u001b[?1049l\u001b[23;0;0t[exited]"] [378.14937, "o", "\r\n"]