From 1af6a55af6bad0f647d6dba669f794a23b4c2c49 Mon Sep 17 00:00:00 2001 From: Shivang Chikani Date: Sun, 1 Nov 2026 20:17:07 +0530 Subject: [PATCH] tdui: canvas pages, big characters, more cells with PSRAM Python screens built from many put()/fill() calls cost Python time and appeared piece by piece, since the desktop draws what has arrived every 10 ms. Measured on an ESP32-S3 with a full-screen 100x30 HMI: a screen switch took 60-310 ms of Python time, with 31-224 drawing requests, while the link carried only 1-9 KB. - Canvas pages: w.canvas(..., pages=n) keeps up to 16 pictures (TD_PYUI_MAX_PAGES) on the desktop. draw_to(n) draws into a page while the window shows another, show(n) shows a page whole in one step, copy_page(src, dst) copies a picture; resize keeps every page. New requests TD_PYUI_PAGE and TD_PYUI_PAGE_COPY; drawing into a hidden page does not redraw the window. - canvas.big(x, y, text, fg, bg, scale, width): big characters (digits, A-Z, - + % / . : and space; 3x5 pixels, two to a cell with the half blocks, scale 1-4) drawn by the desktop in one request (TD_PYUI_BIG); width right-aligns and blanks the rest. tdui.big_size() gives the size. - put() and fill() call _tdui.send directly, two Python calls fewer each. - tdui.MAX_CELLS, all canvases of a script with every page counted, is 32000 on boards with PSRAM and on the PC (192 KB at most, while a script runs), 2000 without PSRAM as before; tdui reads it from _tdui, and the error message gives the real number. With a page per screen and big(), the same HMI switches in 33-82 ms and each screen appears at once. Existing scripts are unchanged. Tests: test_pyui (pages, copy, resize, big characters, the page and cell limits). third_party/micropython regenerated for the new tdui.py. --- CMakeLists.txt | 8 + apps/pyui.c | 231 +- apps/td_apps.h | 13 +- ports/common/python/modules/tdui.py | 79 +- ports/common/python/td_py_tdui.c | 1 + .../components/tinydesk/CMakeLists.txt | 5 +- tests/test_pyui.c | 197 ++ .../micropython/frozen/frozen_content.c | 2330 +++++++++++------ third_party/micropython/genhdr/mpversion.h | 2 +- .../micropython/genhdr/qstrdefs.generated.h | 1 + 10 files changed, 1979 insertions(+), 888 deletions(-) create mode 100644 tests/test_pyui.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 1ac0a42..70ae5b0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -122,6 +122,9 @@ add_library(tinydesk_apps STATIC apps/update.c ) target_include_directories(tinydesk_apps PUBLIC apps) +# Python canvases may cover a whole large terminal several times (pages), as +# with PSRAM on a board. +target_compile_definitions(tinydesk_apps PUBLIC TD_PYUI_MAX_CELLS=32000) target_link_libraries(tinydesk_apps PUBLIC tinydesk_core tinydesk_proto) set_target_properties(tinydesk_apps PROPERTIES C_STANDARD 11 C_STANDARD_REQUIRED ON C_EXTENSIONS OFF) target_compile_options(tinydesk_apps PRIVATE ${TD_WARNINGS}) @@ -331,4 +334,9 @@ if(TD_BUILD_TESTS) set_target_properties(test_desktop PROPERTIES C_STANDARD 11) target_compile_options(test_desktop PRIVATE ${TD_WARNINGS}) add_test(NAME test_desktop COMMAND test_desktop) + add_executable(test_pyui tests/test_pyui.c) + target_link_libraries(test_pyui PRIVATE tinydesk_apps) + set_target_properties(test_pyui PROPERTIES C_STANDARD 11) + target_compile_options(test_pyui PRIVATE ${TD_WARNINGS}) + add_test(NAME test_pyui COMMAND test_pyui) endif() diff --git a/apps/pyui.c b/apps/pyui.c index 415ab60..2123851 100644 --- a/apps/pyui.c +++ b/apps/pyui.c @@ -26,6 +26,10 @@ #define LIST_ITEMS 1000 #define LIST_BYTES 16384 +#define STR_(x) #x +#define STR(x) STR_(x) +#define CELLS_MSG "canvases are limited to " STR(TD_PYUI_MAX_CELLS) " cells in all" + enum { LINK_OFF, @@ -75,7 +79,10 @@ typedef struct int nitems, offs_cap; /* canvas: its place in the window; window: the client size last reported */ td_rect_t rect; + /* canvas: `pages` pictures of rect.w x rect.h cells, one after the other; + * requests draw into page `draw`, the window shows page `show` */ cell_t *cells; + uint8_t pages, draw, show; } obj_t; typedef struct @@ -244,10 +251,21 @@ static obj_t *new_obj(uint8_t kind, uint16_t id) return NULL; } +/* A canvas's cells, every page counted. */ +static int canvas_cells(const obj_t *o) +{ + return o->rect.w * o->rect.h * o->pages; +} + +static cell_t *canvas_page(const obj_t *o, int page) +{ + return o->cells + (size_t)page * (size_t)(o->rect.w * o->rect.h); +} + static void free_obj(obj_t *o) { if (o->kind == K_CANVAS) - s_link->cells -= o->rect.w * o->rect.h; + s_link->cells -= canvas_cells(o); free(o->items); free(o->offs); free(o->cells); @@ -345,11 +363,12 @@ static void win_draw(td_window_t *win, int cw, int ch) obj_t *o = &s_link->objs[i]; if (o->kind != K_CANVAS || o->win != wo->id) continue; + const cell_t *cells = canvas_page(o, o->show); for (int y = 0; y < o->rect.h; y++) { for (int x = 0; x < o->rect.w; x++) { - const cell_t *c = &o->cells[y * o->rect.w + x]; + const cell_t *c = &cells[y * o->rect.w + x]; td_putc(o->rect.x + x, o->rect.y + y, c->ch ? c->ch : ' ', c->fg < 0 ? t->win_fg : (uint8_t)c->fg, c->bg < 0 ? t->win_bg : (uint8_t)c->bg, 0); } @@ -506,7 +525,7 @@ static void canvas_put(obj_t *o, int x, int y, const char *s, int fg, int bg) } if (x >= 0 && y >= 0 && x < o->rect.w) { - cell_t *c = &o->cells[y * o->rect.w + x]; + cell_t *c = &canvas_page(o, o->draw)[y * o->rect.w + x]; c->ch = (uint16_t)(cp > 0xFFFF ? '?' : cp); c->fg = (int16_t)fg; c->bg = (int16_t)bg; @@ -517,11 +536,12 @@ static void canvas_put(obj_t *o, int x, int y, const char *s, int fg, int bg) static void canvas_fill(obj_t *o, int x0, int y0, int w, int h, uint32_t cp, int fg, int bg) { + cell_t *cells = canvas_page(o, o->draw); for (int y = y0 < 0 ? 0 : y0; y < y0 + h && y < o->rect.h; y++) { for (int x = x0 < 0 ? 0 : x0; x < x0 + w && x < o->rect.w; x++) { - cell_t *c = &o->cells[y * o->rect.w + x]; + cell_t *c = &cells[y * o->rect.w + x]; c->ch = (uint16_t)(cp > 0xFFFF ? '?' : cp); c->fg = (int16_t)fg; c->bg = (int16_t)bg; @@ -529,13 +549,131 @@ static void canvas_fill(obj_t *o, int x0, int y0, int w, int h, uint32_t cp, int } } -/* A new size for a canvas: what fits of the old picture stays. */ +/* Big characters for canvas.big(): 3x5 "pixels" each ('.' and ':' 1x5), + * two pixel rows to a cell with the half blocks, so a pixel is square; + * `scale` makes each pixel scale x scale. Letters are upper case. */ +typedef struct +{ + char ch; + const char *rows[5]; +} big_glyph_t; + +static const big_glyph_t s_big[] = { + {' ', {"...", "...", "...", "...", "..."}}, + {'0', {"###", "#.#", "#.#", "#.#", "###"}}, + {'1', {".#.", "##.", ".#.", ".#.", "###"}}, + {'2', {"###", "..#", "###", "#..", "###"}}, + {'3', {"###", "..#", ".##", "..#", "###"}}, + {'4', {"#.#", "#.#", "###", "..#", "..#"}}, + {'5', {"###", "#..", "###", "..#", "###"}}, + {'6', {"###", "#..", "###", "#.#", "###"}}, + {'7', {"###", "..#", ".#.", ".#.", ".#."}}, + {'8', {"###", "#.#", "###", "#.#", "###"}}, + {'9', {"###", "#.#", "###", "..#", "###"}}, + {'-', {"...", "...", "###", "...", "..."}}, + {'+', {"...", ".#.", "###", ".#.", "..."}}, + {'%', {"#.#", "..#", ".#.", "#..", "#.#"}}, + {'/', {"..#", "..#", ".#.", "#..", "#.."}}, + {'.', {".", ".", ".", ".", "#"}}, + {':', {".", "#", ".", "#", "."}}, + {'?', {"##.", "..#", ".#.", "...", ".#."}}, + {'A', {".#.", "#.#", "###", "#.#", "#.#"}}, + {'B', {"##.", "#.#", "##.", "#.#", "##."}}, + {'C', {".##", "#..", "#..", "#..", ".##"}}, + {'D', {"##.", "#.#", "#.#", "#.#", "##."}}, + {'E', {"###", "#..", "##.", "#..", "###"}}, + {'F', {"###", "#..", "##.", "#..", "#.."}}, + {'G', {".##", "#..", "#.#", "#.#", ".##"}}, + {'H', {"#.#", "#.#", "###", "#.#", "#.#"}}, + {'I', {"###", ".#.", ".#.", ".#.", "###"}}, + {'J', {"..#", "..#", "..#", "#.#", ".#."}}, + {'K', {"#.#", "#.#", "##.", "#.#", "#.#"}}, + {'L', {"#..", "#..", "#..", "#..", "###"}}, + {'M', {"#.#", "###", "###", "#.#", "#.#"}}, + {'N', {"##.", "#.#", "#.#", "#.#", "#.#"}}, + {'O', {".#.", "#.#", "#.#", "#.#", ".#."}}, + {'P', {"##.", "#.#", "##.", "#..", "#.."}}, + {'Q', {".#.", "#.#", "#.#", "##.", ".##"}}, + {'R', {"##.", "#.#", "##.", "#.#", "#.#"}}, + {'S', {".##", "#..", ".#.", "..#", "##."}}, + {'T', {"###", ".#.", ".#.", ".#.", ".#."}}, + {'U', {"#.#", "#.#", "#.#", "#.#", "###"}}, + {'V', {"#.#", "#.#", "#.#", "#.#", ".#."}}, + {'W', {"#.#", "#.#", "###", "###", "#.#"}}, + {'X', {"#.#", "#.#", ".#.", "#.#", "#.#"}}, + {'Y', {"#.#", "#.#", ".#.", ".#.", ".#."}}, + {'Z', {"###", "..#", ".#.", "#..", "###"}}, +}; + +#define BIG_MAX 64 /* characters drawn by one request */ + +static const big_glyph_t *big_glyph(uint32_t cp) +{ + if (cp >= 'a' && cp <= 'z') + cp -= 'a' - 'A'; + for (size_t i = 0; i < sizeof(s_big) / sizeof(s_big[0]); i++) + if ((uint32_t)(unsigned char)s_big[i].ch == cp) + return &s_big[i]; + return big_glyph('?'); +} + +static void canvas_set(obj_t *o, int x, int y, uint32_t cp, int fg, int bg) +{ + if (x < 0 || y < 0 || x >= o->rect.w || y >= o->rect.h) + return; + cell_t *c = &canvas_page(o, o->draw)[y * o->rect.w + x]; + c->ch = (uint16_t)cp; + c->fg = (int16_t)fg; + c->bg = (int16_t)bg; +} + +/* Text in big characters at x, y. width > 0: right-aligned in that many + * characters, blanks before it (so a shorter number clears a longer one). */ +static void canvas_big(obj_t *o, int x, int y, const char *s, int fg, int bg, int scale, int width) +{ + static const uint32_t half[4] = {' ', 0x2580, 0x2584, 0x2588}; /* none, upper, lower, both */ + const big_glyph_t *g[BIG_MAX]; + int n = 0; + while (*s && n < BIG_MAX) + g[n++] = big_glyph(td_utf8_next(&s)); + scale = scale < 1 ? 1 : scale > 4 ? 4 + : scale; + int first = 0, pad = 0; + if (width > BIG_MAX) + width = BIG_MAX; + if (width > 0 && n > width) + first = n - width; + else if (width > 0) + pad = width - n; + int rows = 5 * scale, cx = x; + for (int i = 0; i < pad + n - first; i++) + { + const big_glyph_t *gl = i < pad ? big_glyph(' ') : g[first + i - pad]; + int cw = (int)strlen(gl->rows[0]) * scale; + for (int r = 0; r < rows; r += 2) + { + for (int c = 0; c < cw; c++) + { + int gc = c / scale; + int top = gl->rows[r / scale][gc] == '#'; + int bot = r + 1 < rows && gl->rows[(r + 1) / scale][gc] == '#'; + canvas_set(o, cx + c, y + r / 2, half[top | bot << 1], fg, bg); + } + if (i + 1 < pad + n - first) /* the gap to the next character */ + for (int c = cw; c < cw + scale; c++) + canvas_set(o, cx + c, y + r / 2, ' ', fg, bg); + } + cx += cw + scale; + } +} + +/* A new size for a canvas: what fits of each page's picture stays. */ static void canvas_resize(obj_t *o, int w, int h) { - int cells = w * h; - if (w <= 0 || h <= 0 || s_link->cells - o->rect.w * o->rect.h + cells > TD_PYUI_MAX_CELLS) + int cells = w * h * o->pages; + if (w <= 0 || h <= 0 || s_link->cells - canvas_cells(o) + cells > TD_PYUI_MAX_CELLS) { - post(TD_PYUI_EV_ERROR, o->id, 0, 0, 0, 0, "canvases are limited to 2000 cells in all"); + post(TD_PYUI_EV_ERROR, o->id, 0, 0, 0, 0, CELLS_MSG); return; } cell_t *nc = malloc((size_t)cells * sizeof(cell_t)); @@ -544,20 +682,24 @@ static void canvas_resize(obj_t *o, int w, int h) post(TD_PYUI_EV_ERROR, o->id, 0, 0, 0, 0, "out of memory"); return; } - for (int y = 0; y < h; y++) + for (int p = 0; p < o->pages; p++) { - for (int x = 0; x < w; x++) + const cell_t *old = canvas_page(o, p); + for (int y = 0; y < h; y++) { - cell_t *c = &nc[y * w + x]; - if (x < o->rect.w && y < o->rect.h) - *c = o->cells[y * o->rect.w + x]; - else - *c = (cell_t){' ', -1, -1}; + for (int x = 0; x < w; x++) + { + cell_t *c = &nc[(size_t)p * (size_t)(w * h) + (size_t)(y * w + x)]; + if (x < o->rect.w && y < o->rect.h) + *c = old[y * o->rect.w + x]; + else + *c = (cell_t){' ', -1, -1}; + } } } + s_link->cells += cells - canvas_cells(o); free(o->cells); o->cells = nc; - s_link->cells += cells - o->rect.w * o->rect.h; o->rect.w = w; o->rect.h = h; } @@ -632,10 +774,16 @@ static void add_widget(const td_pyui_msg_t *m, const char *text) td_window_t *win = wo->w; if (m->flags == TD_PYUI_W_CANVAS) { - int cells = m->c * m->d; + int pages = m->e < 1 ? 1 : m->e; + int cells = m->c * m->d * pages; + if (pages > TD_PYUI_MAX_PAGES) + { + post(TD_PYUI_EV_ERROR, m->id, 0, 0, 0, 0, "too many canvas pages"); + return; + } if (m->c <= 0 || m->d <= 0 || s_link->cells + cells > TD_PYUI_MAX_CELLS) { - post(TD_PYUI_EV_ERROR, m->id, 0, 0, 0, 0, "canvases are limited to 2000 cells in all"); + post(TD_PYUI_EV_ERROR, m->id, 0, 0, 0, 0, CELLS_MSG); return; } obj_t *o = new_obj(K_CANVAS, m->id); @@ -643,6 +791,7 @@ static void add_widget(const td_pyui_msg_t *m, const char *text) return; o->win = m->win; o->rect = td_rect(m->a, m->b, m->c, m->d); + o->pages = (uint8_t)pages; o->cells = malloc((size_t)cells * sizeof(cell_t)); if (!o->cells) { @@ -651,7 +800,12 @@ static void add_widget(const td_pyui_msg_t *m, const char *text) return; } s_link->cells += cells; - canvas_fill(o, 0, 0, m->c, m->d, ' ', -1, -1); + for (int p = 0; p < pages; p++) + { + o->draw = (uint8_t)p; + canvas_fill(o, 0, 0, m->c, m->d, ' ', -1, -1); + } + o->draw = 0; td_win_invalidate(win); return; } @@ -843,7 +997,44 @@ static void run_request(const td_pyui_msg_t *m, char *text) uint32_t cp = *s ? td_utf8_next(&s) : ' '; canvas_fill(o, m->a, m->b, m->c, m->d, cp, m->e, m->f); } - td_win_invalidate(NULL); + if (o->draw == o->show) + td_win_invalidate(NULL); + break; + case TD_PYUI_BIG: + if (o->kind != K_CANVAS) + break; + canvas_big(o, m->a, m->b, text, m->c, m->d, m->e, m->f); + if (o->draw == o->show) + td_win_invalidate(NULL); + break; + case TD_PYUI_PAGE: + if (o->kind != K_CANVAS) + break; + if (m->a >= o->pages || m->b >= o->pages) + { + post(TD_PYUI_EV_ERROR, o->id, 0, 0, 0, 0, "no such canvas page"); + break; + } + if (m->a >= 0) + o->draw = (uint8_t)m->a; + if (m->b >= 0 && m->b != o->show) + { + o->show = (uint8_t)m->b; + td_win_invalidate(NULL); + } + break; + case TD_PYUI_PAGE_COPY: + if (o->kind != K_CANVAS) + break; + if (m->a < 0 || m->b < 0 || m->a >= o->pages || m->b >= o->pages) + { + post(TD_PYUI_EV_ERROR, o->id, 0, 0, 0, 0, "no such canvas page"); + break; + } + if (m->a != m->b) + memcpy(canvas_page(o, m->b), canvas_page(o, m->a), (size_t)(o->rect.w * o->rect.h) * sizeof(cell_t)); + if (m->b == o->show) + td_win_invalidate(NULL); break; case TD_PYUI_RESIZE: if (o->kind == K_WINDOW) diff --git a/apps/td_apps.h b/apps/td_apps.h index cca19bd..c9dff15 100644 --- a/apps/td_apps.h +++ b/apps/td_apps.h @@ -258,6 +258,11 @@ enum TD_PYUI_RESIZE, /* window id: a, b client size; canvas id: a, b size */ TD_PYUI_MOVE, /* window id: a, b position on the screen; canvas id: in the window */ TD_PYUI_SHOW, /* window id: a is TD_PYUI_SHOW_* */ + TD_PYUI_PAGE, /* canvas id: a the page drawn into, b the page shown (-1: as is) */ + TD_PYUI_PAGE_COPY, /* canvas id: page a copied onto page b */ + TD_PYUI_BIG, /* canvas id: text in big characters at a, b in colours c, d; + * e scale (1-4), f width in characters (0: the text's own, + * otherwise right-aligned and blanked to that width) */ }; /* TD_PYUI_SHOW states. */ @@ -278,7 +283,7 @@ enum TD_PYUI_W_TEXTBOX, /* c width; e 1 secret */ TD_PYUI_W_PROGRESS, /* c width; e percent */ TD_PYUI_W_LIST, /* c, d size, the scrollbar included (<= 0: to the edge) */ - TD_PYUI_W_CANVAS, /* c, d size */ + TD_PYUI_W_CANVAS, /* c, d size; e pages (0: 1) */ }; /* Events (desktop -> script). */ @@ -305,7 +310,11 @@ typedef struct } td_pyui_msg_t; #define TD_PYUI_TEXT_MAX 1024 /* text in one message */ -#define TD_PYUI_MAX_CELLS 2000 /* all canvases of a script together */ +#define TD_PYUI_MAX_PAGES 16 /* pages of one canvas */ +#ifndef TD_PYUI_MAX_CELLS +#define TD_PYUI_MAX_CELLS 2000 /* all canvases of a script together, every page counted; + * builds with PSRAM set more */ +#endif /* The desktop side: start serving scripts (td_apps_register_all does). */ void td_pyui_start(void); diff --git a/ports/common/python/modules/tdui.py b/ports/common/python/modules/tdui.py index c00e686..bb975fd 100644 --- a/ports/common/python/modules/tdui.py +++ b/ports/common/python/modules/tdui.py @@ -36,6 +36,9 @@ _RESIZE = const(16) _MOVE = const(17) _SHOW = const(18) +_PAGE = const(19) +_PAGE_COPY = const(20) +_BIG = const(21) _W_LABEL = const(1) _W_BUTTON = const(2) @@ -56,7 +59,8 @@ MAX_WINDOWS = const(4) MAX_WIDGETS = const(48) -MAX_CELLS = const(2000) +MAX_CELLS = _tdui.MAX_CELLS # all canvases together, pages counted: 2000, more with PSRAM +MAX_PAGES = const(16) # pages of one canvas _KEYS = ("enter", "tab", "backspace", "esc", "up", "down", "right", "left", "home", "end", "insert", "delete", "pgup", "pgdn", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", @@ -239,8 +243,8 @@ def progress(self, x, y, width, value=0): def list(self, x, y, w, h, items=(), on_select=None, on_activate=None): return List(self, x, y, w, h, items, on_select, on_activate) - def canvas(self, x, y, w, h, on_mouse=None): - return Canvas(self, x, y, w, h, on_mouse) + def canvas(self, x, y, w, h, on_mouse=None, pages=1): + return Canvas(self, x, y, w, h, on_mouse, pages) class _Widget: @@ -425,42 +429,80 @@ def _event(self, op, a, b, c, d, t): class Canvas(_Widget): # A grid of character cells. Colours are palette numbers 0..255, -1 for - # the window's own. + # the window's own. With pages > 1 it keeps that many pictures on the + # desktop: draw into a hidden one (draw_to), then show it at once. _n = 0 - def __init__(self, win, x, y, w, h, on_mouse): + def __init__(self, win, x, y, w, h, on_mouse, pages=1): global _cells if not win.is_open: raise OSError("tdui: the window is closed") if x < 0 or y < 0 or w < 1 or h < 1: raise ValueError("canvas size") - if _cells + w * h > MAX_CELLS: + if not 1 <= pages <= MAX_PAGES: + raise ValueError("canvas pages: 1 to %d" % MAX_PAGES) + if _cells + w * h * pages > MAX_CELLS: raise OSError("tdui: canvases are limited to %d cells in all" % MAX_CELLS) - _cells += w * h - self._cells = w * h + _cells += w * h * pages + self._cells = w * h * pages self.width = w self.height = h + self.pages = pages + self.drawing = 0 # the page put/fill/big draw into + self.showing = 0 # the page the window shows self.on_mouse = on_mouse - super().__init__(win, _W_CANVAS, x, y, w, h, 0, "") + super().__init__(win, _W_CANVAS, x, y, w, h, pages, "") + # Drawing goes straight to _tdui.send: these are called most. def put(self, x, y, text, fg=-1, bg=-1): - self._req2(_PUT, x, y, fg, bg, 0, 0, str(text)) + if self.win.is_open: + _tdui.send(_PUT, self.id, 0, 0, x, y, fg, bg, 0, 0, str(text)) def fill(self, x, y, w, h, ch=" ", fg=-1, bg=-1): - self._req2(_FILL, x, y, w, h, fg, bg, ch) + if self.win.is_open: + _tdui.send(_FILL, self.id, 0, 0, x, y, w, h, fg, bg, ch) def clear(self, fg=-1, bg=-1): self.fill(0, 0, self.width, self.height, " ", fg, bg) + def big(self, x, y, text, fg=-1, bg=-1, scale=1, width=0): + # Text in big characters (digits, A-Z, - + % / . : and space), drawn + # on the desktop: 3 cells wide and 3 rows high a character at scale + # 1, 6 x 5 at scale 2. width > 0: right-aligned in that many + # characters, blanking what is left. big_size() gives the size. + if self.win.is_open: + _tdui.send(_BIG, self.id, 0, 0, x, y, fg, bg, scale, width, str(text)) + + def _page(self, n): + if not 0 <= n < self.pages: + raise ValueError("canvas page: 0 to %d" % (self.pages - 1)) + return n + + def draw_to(self, page): + # put/fill/big draw into this page from now on; the window keeps + # showing its page. + self.drawing = self._page(page) + self._req2(_PAGE, page, -1, 0, 0, 0, 0, None) + + def show(self, page): + # The window shows this page at once (all of it, not piece by piece). + self.showing = self._page(page) + self._req2(_PAGE, -1, page, 0, 0, 0, 0, None) + + def copy_page(self, src, dst): + # Page src's picture onto page dst, for example a background drawn + # once. + self._req2(_PAGE_COPY, self._page(src), self._page(dst), 0, 0, 0, 0, None) + def resize(self, w, h): # What fits of the picture stays; new cells are blank. global _cells if w < 1 or h < 1: raise ValueError("canvas size") - if _cells - self._cells + w * h > MAX_CELLS: + if _cells - self._cells + w * h * self.pages > MAX_CELLS: raise OSError("tdui: canvases are limited to %d cells in all" % MAX_CELLS) - _cells += w * h - self._cells - self._cells = w * h + _cells += w * h * self.pages - self._cells + self._cells = w * h * self.pages self.width = w self.height = h self._req2(_RESIZE, w, h, 0, 0, 0, 0, None) @@ -477,6 +519,15 @@ def _event(self, op, a, b, c, d, t): self.on_mouse(self, a, b, c, d) +def big_size(text, scale=1): + # Columns and rows Canvas.big() takes for text ('.' and ':' are narrow). + n = len(text) + if not n: + return 0, 0 + cols = sum(1 if c in ".:" else 3 for c in text) * scale + (n - 1) * scale + return cols, (5 * scale + 1) // 2 + + # ------------------------------------------------------------ the loop def _run_timers(left): diff --git a/ports/common/python/td_py_tdui.c b/ports/common/python/td_py_tdui.c index 38fdda9..552d96a 100644 --- a/ports/common/python/td_py_tdui.c +++ b/ports/common/python/td_py_tdui.c @@ -135,6 +135,7 @@ static const mp_rom_map_elem_t tdui_module_globals_table[] = { {MP_ROM_QSTR(MP_QSTR_open), MP_ROM_PTR(&tdui_open_obj)}, {MP_ROM_QSTR(MP_QSTR_send), MP_ROM_PTR(&tdui_send_obj)}, {MP_ROM_QSTR(MP_QSTR_recv), MP_ROM_PTR(&tdui_recv_obj)}, + {MP_ROM_QSTR(MP_QSTR_MAX_CELLS), MP_ROM_INT(TD_PYUI_MAX_CELLS)}, }; static MP_DEFINE_CONST_DICT(tdui_module_globals, tdui_module_globals_table); diff --git a/ports/esp_idf/components/tinydesk/CMakeLists.txt b/ports/esp_idf/components/tinydesk/CMakeLists.txt index b63cbc2..d54130b 100644 --- a/ports/esp_idf/components/tinydesk/CMakeLists.txt +++ b/ports/esp_idf/components/tinydesk/CMakeLists.txt @@ -66,7 +66,10 @@ idf_component_register( # RAM), the default 128 with it. A window that still does not fit, or gets # no timer, is closed with a message instead of opening with missing parts. if(CONFIG_SPIRAM) - set(TD_SCREEN_LIMITS TD_MAX_COLS=256 TD_MAX_ROWS=96 TD_VT_SCROLLBACK=200) + # Python canvases may cover a whole large screen several times over + # (pages: 100x30 is 3000 cells, 6 bytes each); they are allocated in + # PSRAM while a script runs, 192 KB at most. + set(TD_SCREEN_LIMITS TD_MAX_COLS=256 TD_MAX_ROWS=96 TD_VT_SCROLLBACK=200 TD_PYUI_MAX_CELLS=32000) else() set(TD_SCREEN_LIMITS TD_MAX_COLS=80 TD_MAX_ROWS=25 TD_VT_SCROLLBACK=12 TD_MAX_WIDGETS=96) endif() diff --git a/tests/test_pyui.c b/tests/test_pyui.c new file mode 100644 index 0000000..aa76b1f --- /dev/null +++ b/tests/test_pyui.c @@ -0,0 +1,197 @@ +/* + * test_pyui.c - Python's tdui on the desktop side (apps/pyui.c): canvas + * pages (draw into a hidden page, show it, copy pages), big characters and + * the cell and page limits. Requests are sent as a script would, the + * desktop runs them on its own loop, and the composed screen is checked. + */ +#include "td_test.h" +#include "td_apps.h" + +static uint32_t s_now = 1000; +static int fake_read(void *ctx) +{ + (void)ctx; + return -1; +} +static int fake_write(void *ctx, const uint8_t *b, int n) +{ + (void)ctx; + (void)b; + return n; +} +static uint32_t fake_millis(void *ctx) +{ + (void)ctx; + return s_now; +} +static void fake_sleep(void *ctx, uint32_t ms) +{ + (void)ctx; + s_now += ms; +} +static const td_hal_t s_hal = {fake_read, fake_write, fake_millis, fake_sleep, NULL}; + +enum +{ + WIN = 1, + CANVAS = 2, + WIN_X = 2, + WIN_Y = 2, + CX = WIN_X + 1, /* the canvas's top left cell on the screen */ + CY = WIN_Y + 1 +}; + +static void send(int op, int id, int flags, int a, int b, int c, int d, int e, int f, const char *text) +{ + td_pyui_msg_t m = {0}; + m.op = (uint8_t)op; + m.flags = (uint8_t)flags; + m.id = (uint16_t)id; + m.win = WIN; + m.a = (int16_t)a; + m.b = (int16_t)b; + m.c = (int16_t)c; + m.d = (int16_t)d; + m.e = (int16_t)e; + m.f = (int16_t)f; + m.len = (uint16_t)(text ? strlen(text) : 0); + CHECK(td_pyui_send(&m, text ? text : "")); +} + +/* Let the desktop run the requests (its tick is every 10 ms). */ +static void settle(void) +{ + for (int i = 0; i < 5; i++) + { + s_now += 20; + td_step(); + } +} + +static uint32_t at(int x, int y) +{ + static td_buffer_t back; + td_buffer_init(&back, 80, 25); + td_wm_compose(&back); + return td_buffer_cell(&back, CX + x, CY + y)->ch; +} + +/* The text of the next error event, or "" if there is none. */ +static const char *error_event(void) +{ + static char text[128]; + td_pyui_msg_t m; + while (td_pyui_recv(&m, text, sizeof(text) - 1)) + { + if (m.op == TD_PYUI_EV_ERROR) + { + text[m.len < sizeof(text) - 1 ? m.len : sizeof(text) - 1] = '\0'; + return text; + } + } + return ""; +} + +static void test_pages(void) +{ + /* A 10x3 canvas with 3 pages; page 0 is shown and drawn into. */ + send(TD_PYUI_ADD, CANVAS, TD_PYUI_W_CANVAS, 0, 0, 10, 3, 3, 0, NULL); + send(TD_PYUI_PUT, CANVAS, 0, 0, 0, -1, -1, 0, 0, "A"); + settle(); + CHECK_EQ(at(0, 0), 'A'); + + /* Drawing into hidden page 1 does not show. */ + send(TD_PYUI_PAGE, CANVAS, 0, 1, -1, 0, 0, 0, 0, NULL); + send(TD_PYUI_PUT, CANVAS, 0, 0, 0, -1, -1, 0, 0, "B"); + settle(); + CHECK_EQ(at(0, 0), 'A'); + + /* Showing page 1 shows all of it at once. */ + send(TD_PYUI_PAGE, CANVAS, 0, -1, 1, 0, 0, 0, 0, NULL); + settle(); + CHECK_EQ(at(0, 0), 'B'); + + /* Page 1 copied onto page 2, which is then shown. */ + send(TD_PYUI_PAGE_COPY, CANVAS, 0, 1, 2, 0, 0, 0, 0, NULL); + send(TD_PYUI_PAGE, CANVAS, 0, -1, 2, 0, 0, 0, 0, NULL); + settle(); + CHECK_EQ(at(0, 0), 'B'); + send(TD_PYUI_PAGE, CANVAS, 0, -1, 0, 0, 0, 0, 0, NULL); + settle(); + CHECK_EQ(at(0, 0), 'A'); + + /* A page that does not exist is refused with an error. */ + send(TD_PYUI_PAGE, CANVAS, 0, 3, -1, 0, 0, 0, 0, NULL); + settle(); + CHECK(strstr(error_event(), "no such canvas page") != NULL); + + /* Resizing keeps every page's picture. */ + send(TD_PYUI_RESIZE, CANVAS, 0, 12, 4, 0, 0, 0, 0, NULL); + send(TD_PYUI_PAGE, CANVAS, 0, -1, 1, 0, 0, 0, 0, NULL); + settle(); + CHECK_EQ(at(0, 0), 'B'); + send(TD_PYUI_PAGE, CANVAS, 0, 0, 0, 0, 0, 0, 0, NULL); + settle(); + CHECK_EQ(at(0, 0), 'A'); +} + +static void test_big(void) +{ + /* '1' at scale 1: rows .#. ##. .#. .#. ### -> three cell rows. */ + send(TD_PYUI_BIG, CANVAS, 0, 0, 0, -1, -1, 1, 0, "1"); + settle(); + CHECK_EQ(at(0, 0), 0x2584); /* lower half: '.' over '#' */ + CHECK_EQ(at(1, 0), 0x2588); /* both */ + CHECK_EQ(at(2, 0), ' '); + CHECK_EQ(at(1, 1), 0x2588); + CHECK_EQ(at(0, 2), 0x2580); /* the last pixel row: upper half */ + CHECK_EQ(at(2, 2), 0x2580); + + /* Width 2, right-aligned: a blank character, then '7' after a gap. */ + send(TD_PYUI_BIG, CANVAS, 0, 0, 0, -1, -1, 1, 2, "7"); + settle(); + CHECK_EQ(at(0, 0), ' '); + CHECK_EQ(at(1, 0), ' '); + CHECK_EQ(at(3, 0), ' '); /* the gap is blanked too */ + CHECK_EQ(at(4, 0), 0x2580); /* '7': ### over ..#, so upper, upper, both */ + CHECK_EQ(at(6, 0), 0x2588); + + /* Lower case is drawn as upper case; unknown characters as '?'. */ + send(TD_PYUI_BIG, CANVAS, 0, 0, 0, -1, -1, 1, 0, "t"); + settle(); + CHECK_EQ(at(0, 0), 0x2580); /* 'T': ### over .#. */ + CHECK_EQ(at(1, 0), 0x2588); +} + +static void test_limits(void) +{ + /* More pages than TD_PYUI_MAX_PAGES. */ + send(TD_PYUI_ADD, 3, TD_PYUI_W_CANVAS, 0, 5, 2, 2, TD_PYUI_MAX_PAGES + 1, 0, NULL); + settle(); + CHECK(strstr(error_event(), "too many canvas pages") != NULL); + + /* Pages count toward the cell limit. */ + int pages = TD_PYUI_MAX_CELLS / 100 + 1 < TD_PYUI_MAX_PAGES ? TD_PYUI_MAX_CELLS / 100 + 1 : TD_PYUI_MAX_PAGES; + int h = TD_PYUI_MAX_CELLS / (10 * pages) + 1; + send(TD_PYUI_ADD, 4, TD_PYUI_W_CANVAS, 0, 5, 10, h, pages, 0, NULL); + settle(); + CHECK(strstr(error_event(), "cells in all") != NULL); +} + +int main(void) +{ + td_init(&s_hal); + td_pyui_start(); + CHECK(td_pyui_attach()); + send(TD_PYUI_OPEN, WIN, 0, 30, 10, WIN_X, WIN_Y, 0, 0, "Pages"); + settle(); + + test_pages(); + test_big(); + test_limits(); + + td_pyui_detach_begin(); + for (int i = 0; i < 20 && !td_pyui_detach_done(); i++) + settle(); + return TD_TEST_RESULT(); +} diff --git a/third_party/micropython/frozen/frozen_content.c b/third_party/micropython/frozen/frozen_content.c index faf1344..5d5585f 100644 --- a/third_party/micropython/frozen/frozen_content.c +++ b/third_party/micropython/frozen/frozen_content.c @@ -44,6 +44,7 @@ typedef struct _mp_obj_complex_t { enum { MP_QSTR__0x00_ = MP_QSTRnumber_of, MP_QSTR__percent_s_0x00__percent_s_0x00__percent_s, + MP_QSTR__dot__colon_, MP_QSTR_Button, MP_QSTR_Canvas, MP_QSTR_Checkbox, @@ -54,7 +55,7 @@ enum { MP_QSTR_Lock, MP_QSTR_Lock_space_not_space_acquired, MP_QSTR_Loop, - MP_QSTR_MAX_CELLS, + MP_QSTR_MAX_PAGES, MP_QSTR_MAX_WIDGETS, MP_QSTR_MAX_WINDOWS, MP_QSTR_NeoPixel, @@ -100,6 +101,7 @@ enum { MP_QSTR__new_id, MP_QSTR__next, MP_QSTR__objs, + MP_QSTR__page, MP_QSTR__promote_to_task, MP_QSTR__req, MP_QSTR__req2, @@ -140,6 +142,7 @@ enum { MP_QSTR_backlog, MP_QSTR_backspace, MP_QSTR_bg, + MP_QSTR_big_size, MP_QSTR_bind, MP_QSTR_bpp, MP_QSTR_buf, @@ -149,6 +152,8 @@ enum { MP_QSTR_call_exception_handler, MP_QSTR_can_squot_t_space_gather, MP_QSTR_canvas, + MP_QSTR_canvas_space_page_colon__space_0_space_to_space__percent_d, + MP_QSTR_canvas_space_pages_colon__space_1_space_to_space__percent_d, MP_QSTR_canvas_space_size, MP_QSTR_cb, MP_QSTR_ch, @@ -158,6 +163,7 @@ enum { MP_QSTR_confirm, MP_QSTR_connect, MP_QSTR_context, + MP_QSTR_copy_page, MP_QSTR_core, MP_QSTR_coro_equals_, MP_QSTR_coroutine_space_expected, @@ -170,6 +176,9 @@ enum { MP_QSTR_do_handshake_on_connect, MP_QSTR_down, MP_QSTR_drain, + MP_QSTR_draw_to, + MP_QSTR_drawing, + MP_QSTR_dst, MP_QSTR_dt, MP_QSTR_due, MP_QSTR_enter, @@ -252,6 +261,8 @@ enum { MP_QSTR_op, MP_QSTR_open_connection, MP_QSTR_out_buf, + MP_QSTR_page, + MP_QSTR_pages, MP_QSTR_peername, MP_QSTR_pgdn, MP_QSTR_pgup, @@ -278,6 +289,7 @@ enum { MP_QSTR_run_until_complete, MP_QSTR_runq_len, MP_QSTR_s, + MP_QSTR_scale, MP_QSTR_secret, MP_QSTR_selected, MP_QSTR_server_hostname, @@ -287,7 +299,10 @@ enum { MP_QSTR_setsockopt, MP_QSTR_sgen, MP_QSTR_shift_plus_, + MP_QSTR_show, + MP_QSTR_showing, MP_QSTR_socket, + MP_QSTR_src, MP_QSTR_ssl, MP_QSTR_start_server, MP_QSTR_stream, @@ -329,6 +344,7 @@ enum { const qstr_hash_t mp_qstr_frozen_const_hashes[] = { 46501, 9779, + 26321, 58067, 56237, 33078, @@ -339,7 +355,7 @@ const qstr_hash_t mp_qstr_frozen_const_hashes[] = { 59534, 43943, 59673, - 26651, + 17966, 63985, 55025, 33641, @@ -385,6 +401,7 @@ const qstr_hash_t mp_qstr_frozen_const_hashes[] = { 14164, 51901, 21966, + 33225, 24914, 58300, 23310, @@ -425,6 +442,7 @@ const qstr_hash_t mp_qstr_frozen_const_hashes[] = { 43370, 8042, 28352, + 40499, 25732, 18887, 18804, @@ -434,6 +452,8 @@ const qstr_hash_t mp_qstr_frozen_const_hashes[] = { 19688, 4535, 63693, + 26894, + 26460, 33896, 28388, 28398, @@ -443,6 +463,7 @@ const qstr_hash_t mp_qstr_frozen_const_hashes[] = { 60919, 15835, 55546, + 25676, 56254, 21001, 50473, @@ -455,6 +476,9 @@ const qstr_hash_t mp_qstr_frozen_const_hashes[] = { 8697, 1591, 18805, + 11905, + 33893, + 8102, 28053, 8305, 20077, @@ -537,6 +561,8 @@ const qstr_hash_t mp_qstr_frozen_const_hashes[] = { 28538, 25560, 30085, + 53558, + 63365, 8320, 47256, 46967, @@ -563,6 +589,7 @@ const qstr_hash_t mp_qstr_frozen_const_hashes[] = { 37871, 52773, 46550, + 20861, 55987, 56364, 61272, @@ -572,7 +599,10 @@ const qstr_hash_t mp_qstr_frozen_const_hashes[] = { 59448, 32154, 54798, + 43654, + 36326, 52320, + 36103, 36329, 63679, 54361, @@ -614,6 +644,7 @@ const qstr_hash_t mp_qstr_frozen_const_hashes[] = { const qstr_len_t mp_qstr_frozen_const_lengths[] = { 1, 8, + 2, 6, 6, 8, @@ -670,6 +701,7 @@ const qstr_len_t mp_qstr_frozen_const_lengths[] = { 7, 5, 5, + 5, 16, 4, 5, @@ -710,6 +742,7 @@ const qstr_len_t mp_qstr_frozen_const_lengths[] = { 7, 9, 2, + 8, 4, 3, 3, @@ -719,6 +752,8 @@ const qstr_len_t mp_qstr_frozen_const_lengths[] = { 22, 12, 6, + 20, + 21, 11, 2, 2, @@ -728,6 +763,7 @@ const qstr_len_t mp_qstr_frozen_const_lengths[] = { 7, 7, 7, + 9, 4, 5, 18, @@ -740,6 +776,9 @@ const qstr_len_t mp_qstr_frozen_const_lengths[] = { 23, 4, 5, + 7, + 7, + 3, 2, 3, 5, @@ -822,6 +861,8 @@ const qstr_len_t mp_qstr_frozen_const_lengths[] = { 2, 15, 7, + 4, + 5, 8, 4, 4, @@ -848,6 +889,7 @@ const qstr_len_t mp_qstr_frozen_const_lengths[] = { 18, 8, 1, + 5, 6, 8, 15, @@ -857,8 +899,11 @@ const qstr_len_t mp_qstr_frozen_const_lengths[] = { 10, 4, 6, + 4, + 7, 6, 3, + 3, 12, 6, 13, @@ -902,12 +947,13 @@ const qstr_pool_t mp_qstr_frozen_const_pool = { MP_QSTRnumber_of, // previous pool size true, // is_sorted 10, // allocated entries - 282, // used entries + 297, // used entries (qstr_hash_t *)mp_qstr_frozen_const_hashes, (qstr_len_t *)mp_qstr_frozen_const_lengths, { "\x00", "\x25\x73\x00\x25\x73\x00\x25\x73", + ".:", "Button", "Canvas", "Checkbox", @@ -918,7 +964,7 @@ const qstr_pool_t mp_qstr_frozen_const_pool = { "Lock", "Lock not acquired", "Loop", - "MAX_CELLS", + "MAX_PAGES", "MAX_WIDGETS", "MAX_WINDOWS", "NeoPixel", @@ -964,6 +1010,7 @@ const qstr_pool_t mp_qstr_frozen_const_pool = { "_new_id", "_next", "_objs", + "_page", "_promote_to_task", "_req", "_req2", @@ -1004,6 +1051,7 @@ const qstr_pool_t mp_qstr_frozen_const_pool = { "backlog", "backspace", "bg", + "big_size", "bind", "bpp", "buf", @@ -1013,6 +1061,8 @@ const qstr_pool_t mp_qstr_frozen_const_pool = { "call_exception_handler", "can't gather", "canvas", + "canvas page: 0 to %d", + "canvas pages: 1 to %d", "canvas size", "cb", "ch", @@ -1022,6 +1072,7 @@ const qstr_pool_t mp_qstr_frozen_const_pool = { "confirm", "connect", "context", + "copy_page", "core", "coro=", "coroutine expected", @@ -1034,6 +1085,9 @@ const qstr_pool_t mp_qstr_frozen_const_pool = { "do_handshake_on_connect", "down", "drain", + "draw_to", + "drawing", + "dst", "dt", "due", "enter", @@ -1116,6 +1170,8 @@ const qstr_pool_t mp_qstr_frozen_const_pool = { "op", "open_connection", "out_buf", + "page", + "pages", "peername", "pgdn", "pgup", @@ -1142,6 +1198,7 @@ const qstr_pool_t mp_qstr_frozen_const_pool = { "run_until_complete", "runq_len", "s", + "scale", "secret", "selected", "server_hostname", @@ -1151,7 +1208,10 @@ const qstr_pool_t mp_qstr_frozen_const_pool = { "setsockopt", "sgen", "shift+", + "show", + "showing", "socket", + "src", "ssl", "start_server", "stream", @@ -8514,7 +8574,7 @@ static const mp_frozen_module_t frozen_module_neopixel = { // - .mpy header: 4d:06:00:1f // frozen bytecode for file tdui.py, scope tdui__lt_module_gt_ -static const byte fun_data_tdui__lt_module_gt_[274] = { +static const byte fun_data_tdui__lt_module_gt_[290] = { 0x40,0x02, // prelude 0x01, // names: // code info @@ -8534,29 +8594,32 @@ static const byte fun_data_tdui__lt_module_gt_[274] = { 0x16,0x04, // STORE_NAME 'const' 0x59, // POP_TOP 0x84, // LOAD_CONST_SMALL_INT 4 - 0x16,0x7c, // STORE_NAME 'MAX_WINDOWS' + 0x16,0x81,0x07, // STORE_NAME 'MAX_WINDOWS' 0x22,0x30, // LOAD_CONST_SMALL_INT 48 - 0x16,0x7d, // STORE_NAME 'MAX_WIDGETS' - 0x22,0x8f,0x50, // LOAD_CONST_SMALL_INT 2000 - 0x16,0x7e, // STORE_NAME 'MAX_CELLS' + 0x16,0x81,0x08, // STORE_NAME 'MAX_WIDGETS' + 0x11,0x02, // LOAD_NAME '_tdui' + 0x13,0x06, // LOAD_ATTR 'MAX_CELLS' + 0x16,0x06, // STORE_NAME 'MAX_CELLS' + 0x90, // LOAD_CONST_SMALL_INT 16 + 0x16,0x81,0x09, // STORE_NAME 'MAX_PAGES' 0x23,0x00, // LOAD_CONST_OBJ 0 - 0x16,0x7f, // STORE_NAME '_KEYS' + 0x16,0x81,0x0a, // STORE_NAME '_KEYS' 0x2c,0x00, // BUILD_MAP 0 - 0x16,0x81,0x00, // STORE_NAME '_objs' + 0x16,0x81,0x0b, // STORE_NAME '_objs' 0x2c,0x00, // BUILD_MAP 0 - 0x16,0x81,0x01, // STORE_NAME '_results' + 0x16,0x81,0x0c, // STORE_NAME '_results' 0x2b,0x00, // BUILD_LIST 0 - 0x16,0x81,0x02, // STORE_NAME '_timers' + 0x16,0x81,0x0d, // STORE_NAME '_timers' 0x80, // LOAD_CONST_SMALL_INT 0 - 0x17,0x81,0x03, // STORE_GLOBAL '_next' + 0x17,0x81,0x0e, // STORE_GLOBAL '_next' 0x80, // LOAD_CONST_SMALL_INT 0 - 0x17,0x81,0x04, // STORE_GLOBAL '_windows' + 0x17,0x81,0x0f, // STORE_GLOBAL '_windows' 0x80, // LOAD_CONST_SMALL_INT 0 - 0x17,0x81,0x05, // STORE_GLOBAL '_widgets' + 0x17,0x81,0x10, // STORE_GLOBAL '_widgets' 0x80, // LOAD_CONST_SMALL_INT 0 - 0x17,0x57, // STORE_GLOBAL '_cells' + 0x17,0x59, // STORE_GLOBAL '_cells' 0x32,0x00, // MAKE_FUNCTION 0 - 0x16,0x12, // STORE_NAME '_new_id' + 0x16,0x13, // STORE_NAME '_new_id' 0x80, // LOAD_CONST_SMALL_INT 0 0x80, // LOAD_CONST_SMALL_INT 0 0x80, // LOAD_CONST_SMALL_INT 0 @@ -8569,105 +8632,110 @@ static const byte fun_data_tdui__lt_module_gt_[274] = { 0x2a,0x09, // BUILD_TUPLE 9 0x53, // LOAD_NULL 0x33,0x01, // MAKE_FUNCTION_DEFARGS 1 - 0x16,0x13, // STORE_NAME '_send' + 0x16,0x14, // STORE_NAME '_send' 0x32,0x02, // MAKE_FUNCTION 2 - 0x16,0x15, // STORE_NAME '_key_name' + 0x16,0x16, // STORE_NAME '_key_name' 0x54, // LOAD_BUILD_CLASS 0x32,0x03, // MAKE_FUNCTION 3 - 0x10,0x06, // LOAD_CONST_STRING 'Timer' + 0x10,0x07, // LOAD_CONST_STRING 'Timer' 0x34,0x02, // CALL_FUNCTION 2 - 0x16,0x06, // STORE_NAME 'Timer' + 0x16,0x07, // STORE_NAME 'Timer' 0x32,0x04, // MAKE_FUNCTION 4 - 0x16,0x19, // STORE_NAME 'every' + 0x16,0x1a, // STORE_NAME 'every' 0x32,0x05, // MAKE_FUNCTION 5 - 0x16,0x1a, // STORE_NAME 'after' + 0x16,0x1b, // STORE_NAME 'after' 0x54, // LOAD_BUILD_CLASS 0x32,0x06, // MAKE_FUNCTION 6 - 0x10,0x07, // LOAD_CONST_STRING 'Window' + 0x10,0x08, // LOAD_CONST_STRING 'Window' 0x34,0x02, // CALL_FUNCTION 2 - 0x16,0x07, // STORE_NAME 'Window' + 0x16,0x08, // STORE_NAME 'Window' 0x54, // LOAD_BUILD_CLASS 0x32,0x07, // MAKE_FUNCTION 7 - 0x10,0x08, // LOAD_CONST_STRING '_Widget' + 0x10,0x09, // LOAD_CONST_STRING '_Widget' 0x34,0x02, // CALL_FUNCTION 2 - 0x16,0x08, // STORE_NAME '_Widget' + 0x16,0x09, // STORE_NAME '_Widget' 0x54, // LOAD_BUILD_CLASS 0x32,0x08, // MAKE_FUNCTION 8 - 0x10,0x09, // LOAD_CONST_STRING 'Label' - 0x11,0x08, // LOAD_NAME '_Widget' + 0x10,0x0a, // LOAD_CONST_STRING 'Label' + 0x11,0x09, // LOAD_NAME '_Widget' 0x34,0x03, // CALL_FUNCTION 3 - 0x16,0x09, // STORE_NAME 'Label' + 0x16,0x0a, // STORE_NAME 'Label' 0x54, // LOAD_BUILD_CLASS 0x32,0x09, // MAKE_FUNCTION 9 - 0x10,0x0a, // LOAD_CONST_STRING 'Button' - 0x11,0x08, // LOAD_NAME '_Widget' + 0x10,0x0b, // LOAD_CONST_STRING 'Button' + 0x11,0x09, // LOAD_NAME '_Widget' 0x34,0x03, // CALL_FUNCTION 3 - 0x16,0x0a, // STORE_NAME 'Button' + 0x16,0x0b, // STORE_NAME 'Button' 0x54, // LOAD_BUILD_CLASS 0x32,0x0a, // MAKE_FUNCTION 10 - 0x10,0x0b, // LOAD_CONST_STRING 'Checkbox' - 0x11,0x08, // LOAD_NAME '_Widget' + 0x10,0x0c, // LOAD_CONST_STRING 'Checkbox' + 0x11,0x09, // LOAD_NAME '_Widget' 0x34,0x03, // CALL_FUNCTION 3 - 0x16,0x0b, // STORE_NAME 'Checkbox' + 0x16,0x0c, // STORE_NAME 'Checkbox' 0x54, // LOAD_BUILD_CLASS 0x32,0x0b, // MAKE_FUNCTION 11 - 0x10,0x0c, // LOAD_CONST_STRING 'Textbox' - 0x11,0x08, // LOAD_NAME '_Widget' + 0x10,0x0d, // LOAD_CONST_STRING 'Textbox' + 0x11,0x09, // LOAD_NAME '_Widget' 0x34,0x03, // CALL_FUNCTION 3 - 0x16,0x0c, // STORE_NAME 'Textbox' + 0x16,0x0d, // STORE_NAME 'Textbox' 0x54, // LOAD_BUILD_CLASS 0x32,0x0c, // MAKE_FUNCTION 12 - 0x10,0x0d, // LOAD_CONST_STRING 'Progress' - 0x11,0x08, // LOAD_NAME '_Widget' + 0x10,0x0e, // LOAD_CONST_STRING 'Progress' + 0x11,0x09, // LOAD_NAME '_Widget' 0x34,0x03, // CALL_FUNCTION 3 - 0x16,0x0d, // STORE_NAME 'Progress' + 0x16,0x0e, // STORE_NAME 'Progress' 0x54, // LOAD_BUILD_CLASS 0x32,0x0d, // MAKE_FUNCTION 13 - 0x10,0x0e, // LOAD_CONST_STRING 'List' - 0x11,0x08, // LOAD_NAME '_Widget' + 0x10,0x0f, // LOAD_CONST_STRING 'List' + 0x11,0x09, // LOAD_NAME '_Widget' 0x34,0x03, // CALL_FUNCTION 3 - 0x16,0x0e, // STORE_NAME 'List' + 0x16,0x0f, // STORE_NAME 'List' 0x54, // LOAD_BUILD_CLASS 0x32,0x0e, // MAKE_FUNCTION 14 - 0x10,0x0f, // LOAD_CONST_STRING 'Canvas' - 0x11,0x08, // LOAD_NAME '_Widget' + 0x10,0x10, // LOAD_CONST_STRING 'Canvas' + 0x11,0x09, // LOAD_NAME '_Widget' 0x34,0x03, // CALL_FUNCTION 3 - 0x16,0x0f, // STORE_NAME 'Canvas' - 0x32,0x0f, // MAKE_FUNCTION 15 - 0x16,0x1d, // STORE_NAME '_run_timers' + 0x16,0x10, // STORE_NAME 'Canvas' + 0x81, // LOAD_CONST_SMALL_INT 1 + 0x2a,0x01, // BUILD_TUPLE 1 + 0x53, // LOAD_NULL + 0x33,0x0f, // MAKE_FUNCTION_DEFARGS 15 + 0x16,0x1e, // STORE_NAME 'big_size' 0x32,0x10, // MAKE_FUNCTION 16 - 0x16,0x26, // STORE_NAME '_dispatch' + 0x16,0x1f, // STORE_NAME '_run_timers' + 0x32,0x11, // MAKE_FUNCTION 17 + 0x16,0x28, // STORE_NAME '_dispatch' 0x80, // LOAD_CONST_SMALL_INT 0 0x2a,0x01, // BUILD_TUPLE 1 0x53, // LOAD_NULL - 0x33,0x11, // MAKE_FUNCTION_DEFARGS 17 - 0x16,0x2b, // STORE_NAME 'poll' - 0x32,0x12, // MAKE_FUNCTION 18 - 0x16,0x2d, // STORE_NAME 'run' + 0x33,0x12, // MAKE_FUNCTION_DEFARGS 18 + 0x16,0x2d, // STORE_NAME 'poll' 0x32,0x13, // MAKE_FUNCTION 19 - 0x16,0x2e, // STORE_NAME 'run_async' + 0x16,0x2f, // STORE_NAME 'run' 0x32,0x14, // MAKE_FUNCTION 20 - 0x16,0x31, // STORE_NAME 'quit' + 0x16,0x30, // STORE_NAME 'run_async' + 0x32,0x15, // MAKE_FUNCTION 21 + 0x16,0x33, // STORE_NAME 'quit' 0x80, // LOAD_CONST_SMALL_INT 0 0x2a,0x01, // BUILD_TUPLE 1 0x53, // LOAD_NULL - 0x33,0x15, // MAKE_FUNCTION_DEFARGS 21 - 0x16,0x34, // STORE_NAME '_request' - 0x10,0x10, // LOAD_CONST_STRING 'OK' + 0x33,0x16, // MAKE_FUNCTION_DEFARGS 22 + 0x16,0x36, // STORE_NAME '_request' + 0x10,0x11, // LOAD_CONST_STRING 'OK' 0x2a,0x01, // BUILD_TUPLE 1 0x53, // LOAD_NULL - 0x33,0x16, // MAKE_FUNCTION_DEFARGS 22 - 0x16,0x37, // STORE_NAME 'msgbox' - 0x32,0x17, // MAKE_FUNCTION 23 - 0x16,0x39, // STORE_NAME 'confirm' - 0x10,0x11, // LOAD_CONST_STRING '' + 0x33,0x17, // MAKE_FUNCTION_DEFARGS 23 + 0x16,0x39, // STORE_NAME 'msgbox' + 0x32,0x18, // MAKE_FUNCTION 24 + 0x16,0x3b, // STORE_NAME 'confirm' + 0x10,0x12, // LOAD_CONST_STRING '' 0x50, // LOAD_CONST_FALSE 0x2a,0x02, // BUILD_TUPLE 2 0x53, // LOAD_NULL - 0x33,0x18, // MAKE_FUNCTION_DEFARGS 24 - 0x16,0x3b, // STORE_NAME 'inputbox' - 0x32,0x19, // MAKE_FUNCTION 25 - 0x16,0x3c, // STORE_NAME 'menu' + 0x33,0x19, // MAKE_FUNCTION_DEFARGS 25 + 0x16,0x3d, // STORE_NAME 'inputbox' + 0x32,0x1a, // MAKE_FUNCTION 26 + 0x16,0x3e, // STORE_NAME 'menu' 0x51, // LOAD_CONST_NONE 0x63, // RETURN_VALUE }; @@ -8675,25 +8743,25 @@ static const byte fun_data_tdui__lt_module_gt_[274] = { // frozen bytecode for file tdui.py, scope tdui__new_id static const byte fun_data_tdui__new_id[44] = { 0x08,0x02, // prelude - 0x12, // names: _new_id + 0x13, // names: _new_id // code info - 0x12,0x81,0x03, // LOAD_GLOBAL '_next' + 0x12,0x81,0x0e, // LOAD_GLOBAL '_next' 0x22,0x83,0xff,0x7f, // LOAD_CONST_SMALL_INT 65535 0xf8, // BINARY_OP 33 __mod__ 0x81, // LOAD_CONST_SMALL_INT 1 0xf2, // BINARY_OP 27 __add__ - 0x17,0x81,0x03, // STORE_GLOBAL '_next' - 0x12,0x81,0x03, // LOAD_GLOBAL '_next' - 0x12,0x81,0x00, // LOAD_GLOBAL '_objs' + 0x17,0x81,0x0e, // STORE_GLOBAL '_next' + 0x12,0x81,0x0e, // LOAD_GLOBAL '_next' + 0x12,0x81,0x0b, // LOAD_GLOBAL '_objs' 0xdd, // BINARY_OP 6 0xd3, // UNARY_OP 3 0x44,0x4e, // POP_JUMP_IF_FALSE 14 - 0x12,0x81,0x03, // LOAD_GLOBAL '_next' - 0x12,0x81,0x01, // LOAD_GLOBAL '_results' + 0x12,0x81,0x0e, // LOAD_GLOBAL '_next' + 0x12,0x81,0x0c, // LOAD_GLOBAL '_results' 0xdd, // BINARY_OP 6 0xd3, // UNARY_OP 3 0x44,0x44, // POP_JUMP_IF_FALSE 4 - 0x12,0x81,0x03, // LOAD_GLOBAL '_next' + 0x12,0x81,0x0e, // LOAD_GLOBAL '_next' 0x63, // RETURN_VALUE 0x42,0x19, // JUMP -39 0x51, // LOAD_CONST_NONE @@ -8722,7 +8790,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui__new_id = { .n_pos_args = 0, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 18, + .qstr_block_name_idx = 19, .line_info = fun_data_tdui__new_id + 3, .line_info_top = fun_data_tdui__new_id + 3, .opcodes = fun_data_tdui__new_id + 3, @@ -8738,10 +8806,10 @@ static const mp_raw_code_truncated_t proto_fun_tdui__new_id = { // frozen bytecode for file tdui.py, scope tdui__send static const byte fun_data_tdui__send[46] = { 0xbb,0x91,0x84,0x80,0x01,0x28, // prelude - 0x13,0x81,0x06,0x43,0x40,0x81,0x07,0x81,0x08,0x81,0x09,0x81,0x0a,0x81,0x0b,0x81,0x0c,0x81,0x0d,0x36, // names: _send, op, id, win, flags, a, b, c, d, e, f, text + 0x14,0x81,0x11,0x45,0x42,0x81,0x12,0x81,0x13,0x81,0x14,0x81,0x15,0x81,0x16,0x81,0x17,0x81,0x18,0x38, // names: _send, op, id, win, flags, a, b, c, d, e, f, text // code info 0x12,0x02, // LOAD_GLOBAL '_tdui' - 0x14,0x14, // LOAD_METHOD 'send' + 0x14,0x15, // LOAD_METHOD 'send' 0xb0, // LOAD_FAST 0 0xb1, // LOAD_FAST 1 0xb2, // LOAD_FAST 2 @@ -8781,7 +8849,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui__send = { .n_pos_args = 11, .n_kwonly_args = 0, .n_def_pos_args = 9, - .qstr_block_name_idx = 19, + .qstr_block_name_idx = 20, .line_info = fun_data_tdui__send + 26, .line_info_top = fun_data_tdui__send + 26, .opcodes = fun_data_tdui__send + 26, @@ -8795,23 +8863,23 @@ static const mp_raw_code_truncated_t proto_fun_tdui__send = { // child of tdui__lt_module_gt_ // frozen bytecode for file tdui.py, scope tdui__key_name -static const byte fun_data_tdui__key_name[85] = { +static const byte fun_data_tdui__key_name[87] = { 0x2a,0x0a, // prelude - 0x15,0x81,0x0e,0x81,0x0f, // names: _key_name, key, mods + 0x16,0x81,0x19,0x81,0x1a, // names: _key_name, key, mods // code info 0xb0, // LOAD_FAST 0 0x22,0x80,0xc4,0x80,0x00, // LOAD_CONST_SMALL_INT 1114112 0xd8, // BINARY_OP 1 __gt__ - 0x44,0x68, // POP_JUMP_IF_FALSE 40 + 0x44,0x6a, // POP_JUMP_IF_FALSE 42 0xb0, // LOAD_FAST 0 0x22,0x80,0xc4,0x80,0x01, // LOAD_CONST_SMALL_INT 1114113 0xf3, // BINARY_OP 28 __sub__ - 0x12,0x81,0x10, // LOAD_GLOBAL 'len' - 0x12,0x7f, // LOAD_GLOBAL '_KEYS' + 0x12,0x81,0x1b, // LOAD_GLOBAL 'len' + 0x12,0x81,0x0a, // LOAD_GLOBAL '_KEYS' 0x34,0x01, // CALL_FUNCTION 1 0xd7, // BINARY_OP 0 __lt__ - 0x44,0x57, // POP_JUMP_IF_FALSE 23 - 0x12,0x7f, // LOAD_GLOBAL '_KEYS' + 0x44,0x58, // POP_JUMP_IF_FALSE 24 + 0x12,0x81,0x0a, // LOAD_GLOBAL '_KEYS' 0xb0, // LOAD_FAST 0 0x22,0x80,0xc4,0x80,0x01, // LOAD_CONST_SMALL_INT 1114113 0xf3, // BINARY_OP 28 __sub__ @@ -8821,12 +8889,12 @@ static const byte fun_data_tdui__key_name[85] = { 0x81, // LOAD_CONST_SMALL_INT 1 0xef, // BINARY_OP 24 __and__ 0x44,0x45, // POP_JUMP_IF_FALSE 5 - 0x10,0x16, // LOAD_CONST_STRING 'shift+' + 0x10,0x17, // LOAD_CONST_STRING 'shift+' 0xb2, // LOAD_FAST 2 0xf2, // BINARY_OP 27 __add__ 0xc2, // STORE_FAST 2 0x42,0x47, // JUMP 7 - 0x12,0x81,0x11, // LOAD_GLOBAL 'chr' + 0x12,0x81,0x1c, // LOAD_GLOBAL 'chr' 0xb0, // LOAD_FAST 0 0x34,0x01, // CALL_FUNCTION 1 0xc2, // STORE_FAST 2 @@ -8834,7 +8902,7 @@ static const byte fun_data_tdui__key_name[85] = { 0x82, // LOAD_CONST_SMALL_INT 2 0xef, // BINARY_OP 24 __and__ 0x44,0x45, // POP_JUMP_IF_FALSE 5 - 0x10,0x17, // LOAD_CONST_STRING 'alt+' + 0x10,0x18, // LOAD_CONST_STRING 'alt+' 0xb2, // LOAD_FAST 2 0xf2, // BINARY_OP 27 __add__ 0xc2, // STORE_FAST 2 @@ -8842,7 +8910,7 @@ static const byte fun_data_tdui__key_name[85] = { 0x84, // LOAD_CONST_SMALL_INT 4 0xef, // BINARY_OP 24 __and__ 0x44,0x45, // POP_JUMP_IF_FALSE 5 - 0x10,0x18, // LOAD_CONST_STRING 'ctrl+' + 0x10,0x19, // LOAD_CONST_STRING 'ctrl+' 0xb2, // LOAD_FAST 2 0xf2, // BINARY_OP 27 __add__ 0xc2, // STORE_FAST 2 @@ -8858,7 +8926,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui__key_name = { .fun_data = fun_data_tdui__key_name, .children = NULL, #if MICROPY_PERSISTENT_CODE_SAVE - .fun_data_len = 85, + .fun_data_len = 87, .n_children = 0, #if MICROPY_EMIT_MACHINE_CODE .prelude_offset = 0, @@ -8872,7 +8940,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui__key_name = { .n_pos_args = 2, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 21, + .qstr_block_name_idx = 22, .line_info = fun_data_tdui__key_name + 7, .line_info_top = fun_data_tdui__key_name + 7, .opcodes = fun_data_tdui__key_name + 7, @@ -8888,19 +8956,19 @@ static const mp_raw_code_truncated_t proto_fun_tdui__key_name = { // frozen bytecode for file tdui.py, scope tdui_Timer static const byte fun_data_tdui_Timer[28] = { 0x08,0x02, // prelude - 0x06, // names: Timer + 0x07, // names: Timer // code info - 0x11,0x81,0x12, // LOAD_NAME '__name__' - 0x16,0x81,0x13, // STORE_NAME '__module__' - 0x10,0x06, // LOAD_CONST_STRING 'Timer' - 0x16,0x81,0x14, // STORE_NAME '__qualname__' + 0x11,0x81,0x1d, // LOAD_NAME '__name__' + 0x16,0x81,0x1e, // STORE_NAME '__module__' + 0x10,0x07, // LOAD_CONST_STRING 'Timer' + 0x16,0x81,0x1f, // STORE_NAME '__qualname__' 0x51, // LOAD_CONST_NONE 0x2a,0x01, // BUILD_TUPLE 1 0x53, // LOAD_NULL 0x33,0x00, // MAKE_FUNCTION_DEFARGS 0 - 0x16,0x3f, // STORE_NAME '__init__' + 0x16,0x41, // STORE_NAME '__init__' 0x32,0x01, // MAKE_FUNCTION 1 - 0x16,0x42, // STORE_NAME 'cancel' + 0x16,0x44, // STORE_NAME 'cancel' 0x51, // LOAD_CONST_NONE 0x63, // RETURN_VALUE }; @@ -8908,31 +8976,31 @@ static const byte fun_data_tdui_Timer[28] = { // frozen bytecode for file tdui.py, scope tdui_Timer___init__ static const byte fun_data_tdui_Timer___init__[53] = { 0xc1,0x05,0x0e, // prelude - 0x3f,0x81,0x1f,0x23,0x25,0x21,0x40, // names: __init__, self, ms, fn, repeat, win + 0x41,0x81,0x2c,0x25,0x27,0x23,0x42, // names: __init__, self, ms, fn, repeat, win // code info 0xb1, // LOAD_FAST 1 0xb0, // LOAD_FAST 0 - 0x18,0x23, // STORE_ATTR 'ms' + 0x18,0x25, // STORE_ATTR 'ms' 0xb2, // LOAD_FAST 2 0xb0, // LOAD_FAST 0 - 0x18,0x25, // STORE_ATTR 'fn' + 0x18,0x27, // STORE_ATTR 'fn' 0xb3, // LOAD_FAST 3 0xb0, // LOAD_FAST 0 - 0x18,0x21, // STORE_ATTR 'repeat' + 0x18,0x23, // STORE_ATTR 'repeat' 0xb4, // LOAD_FAST 4 0xb0, // LOAD_FAST 0 - 0x18,0x40, // STORE_ATTR 'win' + 0x18,0x42, // STORE_ATTR 'win' 0x12,0x03, // LOAD_GLOBAL 'time' - 0x14,0x22, // LOAD_METHOD 'ticks_add' + 0x14,0x24, // LOAD_METHOD 'ticks_add' 0x12,0x03, // LOAD_GLOBAL 'time' - 0x14,0x1e, // LOAD_METHOD 'ticks_ms' + 0x14,0x20, // LOAD_METHOD 'ticks_ms' 0x36,0x00, // CALL_METHOD 0 0xb1, // LOAD_FAST 1 0x36,0x02, // CALL_METHOD 2 0xb0, // LOAD_FAST 0 - 0x18,0x20, // STORE_ATTR 'due' - 0x12,0x81,0x02, // LOAD_GLOBAL '_timers' - 0x14,0x41, // LOAD_METHOD 'append' + 0x18,0x22, // STORE_ATTR 'due' + 0x12,0x81,0x0d, // LOAD_GLOBAL '_timers' + 0x14,0x43, // LOAD_METHOD 'append' 0xb0, // LOAD_FAST 0 0x36,0x01, // CALL_METHOD 1 0x59, // POP_TOP @@ -8962,7 +9030,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Timer___init__ = { .n_pos_args = 5, .n_kwonly_args = 0, .n_def_pos_args = 1, - .qstr_block_name_idx = 63, + .qstr_block_name_idx = 65, .line_info = fun_data_tdui_Timer___init__ + 10, .line_info_top = fun_data_tdui_Timer___init__ + 10, .opcodes = fun_data_tdui_Timer___init__ + 10, @@ -8978,14 +9046,14 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Timer___init__ = { // frozen bytecode for file tdui.py, scope tdui_Timer_cancel static const byte fun_data_tdui_Timer_cancel[23] = { 0x19,0x06, // prelude - 0x42,0x81,0x1f, // names: cancel, self + 0x44,0x81,0x2c, // names: cancel, self // code info 0xb0, // LOAD_FAST 0 - 0x12,0x81,0x02, // LOAD_GLOBAL '_timers' + 0x12,0x81,0x0d, // LOAD_GLOBAL '_timers' 0xdd, // BINARY_OP 6 0x44,0x49, // POP_JUMP_IF_FALSE 9 - 0x12,0x81,0x02, // LOAD_GLOBAL '_timers' - 0x14,0x24, // LOAD_METHOD 'remove' + 0x12,0x81,0x0d, // LOAD_GLOBAL '_timers' + 0x14,0x26, // LOAD_METHOD 'remove' 0xb0, // LOAD_FAST 0 0x36,0x01, // CALL_METHOD 1 0x59, // POP_TOP @@ -9015,7 +9083,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Timer_cancel = { .n_pos_args = 1, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 66, + .qstr_block_name_idx = 68, .line_info = fun_data_tdui_Timer_cancel + 5, .line_info_top = fun_data_tdui_Timer_cancel + 5, .opcodes = fun_data_tdui_Timer_cancel + 5, @@ -9054,7 +9122,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Timer = { .n_pos_args = 0, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 6, + .qstr_block_name_idx = 7, .line_info = fun_data_tdui_Timer + 3, .line_info_top = fun_data_tdui_Timer + 3, .opcodes = fun_data_tdui_Timer + 3, @@ -9067,9 +9135,9 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Timer = { // frozen bytecode for file tdui.py, scope tdui_every static const byte fun_data_tdui_every[13] = { 0x2a,0x06, // prelude - 0x19,0x23,0x25, // names: every, ms, fn + 0x1a,0x25,0x27, // names: every, ms, fn // code info - 0x12,0x06, // LOAD_GLOBAL 'Timer' + 0x12,0x07, // LOAD_GLOBAL 'Timer' 0xb0, // LOAD_FAST 0 0xb1, // LOAD_FAST 1 0x52, // LOAD_CONST_TRUE @@ -9099,7 +9167,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_every = { .n_pos_args = 2, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 25, + .qstr_block_name_idx = 26, .line_info = fun_data_tdui_every + 5, .line_info_top = fun_data_tdui_every + 5, .opcodes = fun_data_tdui_every + 5, @@ -9115,9 +9183,9 @@ static const mp_raw_code_truncated_t proto_fun_tdui_every = { // frozen bytecode for file tdui.py, scope tdui_after static const byte fun_data_tdui_after[13] = { 0x2a,0x06, // prelude - 0x1a,0x23,0x25, // names: after, ms, fn + 0x1b,0x25,0x27, // names: after, ms, fn // code info - 0x12,0x06, // LOAD_GLOBAL 'Timer' + 0x12,0x07, // LOAD_GLOBAL 'Timer' 0xb0, // LOAD_FAST 0 0xb1, // LOAD_FAST 1 0x50, // LOAD_CONST_FALSE @@ -9147,7 +9215,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_after = { .n_pos_args = 2, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 26, + .qstr_block_name_idx = 27, .line_info = fun_data_tdui_after + 5, .line_info_top = fun_data_tdui_after + 5, .opcodes = fun_data_tdui_after + 5, @@ -9161,96 +9229,97 @@ static const mp_raw_code_truncated_t proto_fun_tdui_after = { // child of tdui__lt_module_gt_ // frozen bytecode for file tdui.py, scope tdui_Window -static const byte fun_data_tdui_Window[159] = { +static const byte fun_data_tdui_Window[160] = { 0x18,0x02, // prelude - 0x07, // names: Window + 0x08, // names: Window // code info - 0x11,0x81,0x12, // LOAD_NAME '__name__' - 0x16,0x81,0x13, // STORE_NAME '__module__' - 0x10,0x07, // LOAD_CONST_STRING 'Window' - 0x16,0x81,0x14, // STORE_NAME '__qualname__' + 0x11,0x81,0x1d, // LOAD_NAME '__name__' + 0x16,0x81,0x1e, // STORE_NAME '__module__' + 0x10,0x08, // LOAD_CONST_STRING 'Window' + 0x16,0x81,0x1f, // STORE_NAME '__qualname__' 0x51, // LOAD_CONST_NONE 0x51, // LOAD_CONST_NONE 0x50, // LOAD_CONST_FALSE 0x2a,0x03, // BUILD_TUPLE 3 0x53, // LOAD_NULL 0x33,0x00, // MAKE_FUNCTION_DEFARGS 0 - 0x16,0x3f, // STORE_NAME '__init__' - 0x11,0x81,0x15, // LOAD_NAME 'property' + 0x16,0x41, // STORE_NAME '__init__' + 0x11,0x81,0x20, // LOAD_NAME 'property' 0x32,0x01, // MAKE_FUNCTION 1 0x34,0x01, // CALL_FUNCTION 1 - 0x16,0x4c, // STORE_NAME 'title' - 0x11,0x4c, // LOAD_NAME 'title' - 0x13,0x1b, // LOAD_ATTR 'setter' + 0x16,0x4e, // STORE_NAME 'title' + 0x11,0x4e, // LOAD_NAME 'title' + 0x13,0x1c, // LOAD_ATTR 'setter' 0x32,0x02, // MAKE_FUNCTION 2 0x34,0x01, // CALL_FUNCTION 1 - 0x16,0x4c, // STORE_NAME 'title' + 0x16,0x4e, // STORE_NAME 'title' 0x32,0x03, // MAKE_FUNCTION 3 - 0x16,0x4d, // STORE_NAME 'focus' + 0x16,0x4f, // STORE_NAME 'focus' 0x32,0x04, // MAKE_FUNCTION 4 - 0x16,0x4e, // STORE_NAME 'resize' + 0x16,0x50, // STORE_NAME 'resize' 0x32,0x05, // MAKE_FUNCTION 5 - 0x16,0x4f, // STORE_NAME 'move' + 0x16,0x51, // STORE_NAME 'move' 0x32,0x06, // MAKE_FUNCTION 6 - 0x16,0x50, // STORE_NAME 'restore' + 0x16,0x52, // STORE_NAME 'restore' 0x32,0x07, // MAKE_FUNCTION 7 - 0x16,0x51, // STORE_NAME 'maximize' + 0x16,0x53, // STORE_NAME 'maximize' 0x32,0x08, // MAKE_FUNCTION 8 - 0x16,0x52, // STORE_NAME 'minimize' + 0x16,0x54, // STORE_NAME 'minimize' 0x32,0x09, // MAKE_FUNCTION 9 - 0x16,0x53, // STORE_NAME 'fullscreen' + 0x16,0x55, // STORE_NAME 'fullscreen' 0x32,0x0a, // MAKE_FUNCTION 10 - 0x16,0x33, // STORE_NAME 'close' + 0x16,0x35, // STORE_NAME 'close' 0x32,0x0b, // MAKE_FUNCTION 11 - 0x16,0x54, // STORE_NAME '_gone' + 0x16,0x56, // STORE_NAME '_gone' 0x32,0x0c, // MAKE_FUNCTION 12 - 0x16,0x2a, // STORE_NAME '_event' + 0x16,0x2c, // STORE_NAME '_event' 0x32,0x0d, // MAKE_FUNCTION 13 - 0x16,0x19, // STORE_NAME 'every' + 0x16,0x1a, // STORE_NAME 'every' 0x32,0x0e, // MAKE_FUNCTION 14 - 0x16,0x1a, // STORE_NAME 'after' - 0x10,0x11, // LOAD_CONST_STRING '' + 0x16,0x1b, // STORE_NAME 'after' + 0x10,0x12, // LOAD_CONST_STRING '' 0x80, // LOAD_CONST_SMALL_INT 0 0x2a,0x02, // BUILD_TUPLE 2 0x53, // LOAD_NULL 0x33,0x0f, // MAKE_FUNCTION_DEFARGS 15 - 0x16,0x58, // STORE_NAME 'label' + 0x16,0x5a, // STORE_NAME 'label' 0x51, // LOAD_CONST_NONE 0x2a,0x01, // BUILD_TUPLE 1 0x53, // LOAD_NULL 0x33,0x10, // MAKE_FUNCTION_DEFARGS 16 - 0x16,0x59, // STORE_NAME 'button' + 0x16,0x5b, // STORE_NAME 'button' 0x50, // LOAD_CONST_FALSE 0x51, // LOAD_CONST_NONE 0x2a,0x02, // BUILD_TUPLE 2 0x53, // LOAD_NULL 0x33,0x11, // MAKE_FUNCTION_DEFARGS 17 - 0x16,0x5a, // STORE_NAME 'checkbox' - 0x10,0x11, // LOAD_CONST_STRING '' + 0x16,0x5c, // STORE_NAME 'checkbox' + 0x10,0x12, // LOAD_CONST_STRING '' 0x50, // LOAD_CONST_FALSE 0x51, // LOAD_CONST_NONE 0x51, // LOAD_CONST_NONE 0x2a,0x04, // BUILD_TUPLE 4 0x53, // LOAD_NULL 0x33,0x12, // MAKE_FUNCTION_DEFARGS 18 - 0x16,0x5b, // STORE_NAME 'textbox' + 0x16,0x5d, // STORE_NAME 'textbox' 0x80, // LOAD_CONST_SMALL_INT 0 0x2a,0x01, // BUILD_TUPLE 1 0x53, // LOAD_NULL 0x33,0x13, // MAKE_FUNCTION_DEFARGS 19 - 0x16,0x5c, // STORE_NAME 'progress' + 0x16,0x5e, // STORE_NAME 'progress' 0x2a,0x00, // BUILD_TUPLE 0 0x51, // LOAD_CONST_NONE 0x51, // LOAD_CONST_NONE 0x2a,0x03, // BUILD_TUPLE 3 0x53, // LOAD_NULL 0x33,0x14, // MAKE_FUNCTION_DEFARGS 20 - 0x16,0x5d, // STORE_NAME 'list' + 0x16,0x5f, // STORE_NAME 'list' 0x51, // LOAD_CONST_NONE - 0x2a,0x01, // BUILD_TUPLE 1 + 0x81, // LOAD_CONST_SMALL_INT 1 + 0x2a,0x02, // BUILD_TUPLE 2 0x53, // LOAD_NULL 0x33,0x15, // MAKE_FUNCTION_DEFARGS 21 - 0x16,0x5e, // STORE_NAME 'canvas' + 0x16,0x60, // STORE_NAME 'canvas' 0x51, // LOAD_CONST_NONE 0x63, // RETURN_VALUE }; @@ -9258,18 +9327,18 @@ static const byte fun_data_tdui_Window[159] = { // frozen bytecode for file tdui.py, scope tdui_Window___init__ static const byte fun_data_tdui_Window___init__[190] = { 0x8b,0x95,0x01,0x1c, // prelude - 0x3f,0x81,0x1f,0x4c,0x81,0x20,0x81,0x21,0x81,0x22,0x81,0x23,0x81,0x24, // names: __init__, self, title, w, h, x, y, resizable + 0x41,0x81,0x2c,0x4e,0x81,0x2d,0x81,0x2e,0x81,0x2f,0x81,0x30,0x81,0x31, // names: __init__, self, title, w, h, x, y, resizable // code info 0x12,0x02, // LOAD_GLOBAL '_tdui' - 0x14,0x35, // LOAD_METHOD 'open' + 0x14,0x37, // LOAD_METHOD 'open' 0x36,0x00, // CALL_METHOD 0 0x59, // POP_TOP - 0x12,0x81,0x04, // LOAD_GLOBAL '_windows' + 0x12,0x81,0x0f, // LOAD_GLOBAL '_windows' 0x84, // LOAD_CONST_SMALL_INT 4 0xdb, // BINARY_OP 4 __ge__ 0x44,0x4a, // POP_JUMP_IF_FALSE 10 - 0x12,0x81,0x1a, // LOAD_GLOBAL 'OSError' - 0x23,0x01, // LOAD_CONST_OBJ 1 + 0x12,0x81,0x27, // LOAD_GLOBAL 'OSError' + 0x23,0x02, // LOAD_CONST_OBJ 2 0x84, // LOAD_CONST_SMALL_INT 4 0xf8, // BINARY_OP 33 __mod__ 0x34,0x01, // CALL_FUNCTION 1 @@ -9298,53 +9367,53 @@ static const byte fun_data_tdui_Window___init__[190] = { 0x5a, // ROT_TWO 0x59, // POP_TOP 0x43,0x48, // POP_JUMP_IF_TRUE 8 - 0x12,0x81,0x25, // LOAD_GLOBAL 'ValueError' - 0x23,0x02, // LOAD_CONST_OBJ 2 + 0x12,0x81,0x32, // LOAD_GLOBAL 'ValueError' + 0x23,0x03, // LOAD_CONST_OBJ 3 0x34,0x01, // CALL_FUNCTION 1 0x65, // RAISE_OBJ - 0x12,0x12, // LOAD_GLOBAL '_new_id' + 0x12,0x13, // LOAD_GLOBAL '_new_id' 0x34,0x00, // CALL_FUNCTION 0 0xb0, // LOAD_FAST 0 - 0x18,0x43, // STORE_ATTR 'id' - 0x12,0x81,0x26, // LOAD_GLOBAL 'str' + 0x18,0x45, // STORE_ATTR 'id' + 0x12,0x81,0x33, // LOAD_GLOBAL 'str' 0xb1, // LOAD_FAST 1 0x34,0x01, // CALL_FUNCTION 1 0xb0, // LOAD_FAST 0 - 0x18,0x44, // STORE_ATTR '_title' + 0x18,0x46, // STORE_ATTR '_title' 0xb2, // LOAD_FAST 2 0xb0, // LOAD_FAST 0 - 0x18,0x45, // STORE_ATTR 'width' + 0x18,0x47, // STORE_ATTR 'width' 0xb3, // LOAD_FAST 3 0xb0, // LOAD_FAST 0 - 0x18,0x46, // STORE_ATTR 'height' + 0x18,0x48, // STORE_ATTR 'height' 0x52, // LOAD_CONST_TRUE 0xb0, // LOAD_FAST 0 - 0x18,0x47, // STORE_ATTR 'is_open' + 0x18,0x49, // STORE_ATTR 'is_open' 0x51, // LOAD_CONST_NONE 0xb0, // LOAD_FAST 0 - 0x18,0x48, // STORE_ATTR 'on_close' + 0x18,0x4a, // STORE_ATTR 'on_close' 0x51, // LOAD_CONST_NONE 0xb0, // LOAD_FAST 0 - 0x18,0x49, // STORE_ATTR 'on_key' + 0x18,0x4b, // STORE_ATTR 'on_key' 0x51, // LOAD_CONST_NONE 0xb0, // LOAD_FAST 0 - 0x18,0x4a, // STORE_ATTR 'on_resize' + 0x18,0x4c, // STORE_ATTR 'on_resize' 0x2b,0x00, // BUILD_LIST 0 0xb0, // LOAD_FAST 0 - 0x18,0x4b, // STORE_ATTR '_kids' + 0x18,0x4d, // STORE_ATTR '_kids' 0xb0, // LOAD_FAST 0 - 0x12,0x81,0x00, // LOAD_GLOBAL '_objs' + 0x12,0x81,0x0b, // LOAD_GLOBAL '_objs' 0xb0, // LOAD_FAST 0 - 0x13,0x43, // LOAD_ATTR 'id' + 0x13,0x45, // LOAD_ATTR 'id' 0x56, // STORE_SUBSCR - 0x12,0x81,0x04, // LOAD_GLOBAL '_windows' + 0x12,0x81,0x0f, // LOAD_GLOBAL '_windows' 0x81, // LOAD_CONST_SMALL_INT 1 0xe5, // BINARY_OP 14 __iadd__ - 0x17,0x81,0x04, // STORE_GLOBAL '_windows' - 0x12,0x13, // LOAD_GLOBAL '_send' + 0x17,0x81,0x0f, // STORE_GLOBAL '_windows' + 0x12,0x14, // LOAD_GLOBAL '_send' 0x81, // LOAD_CONST_SMALL_INT 1 0xb0, // LOAD_FAST 0 - 0x13,0x43, // LOAD_ATTR 'id' + 0x13,0x45, // LOAD_ATTR 'id' 0x80, // LOAD_CONST_SMALL_INT 0 0xb6, // LOAD_FAST 6 0x44,0x43, // POP_JUMP_IF_FALSE 3 @@ -9367,9 +9436,9 @@ static const byte fun_data_tdui_Window___init__[190] = { 0x7f, // LOAD_CONST_SMALL_INT -1 0x42,0x41, // JUMP 1 0xb5, // LOAD_FAST 5 - 0x10,0x36, // LOAD_CONST_STRING 'text' + 0x10,0x38, // LOAD_CONST_STRING 'text' 0xb0, // LOAD_FAST 0 - 0x13,0x44, // LOAD_ATTR '_title' + 0x13,0x46, // LOAD_ATTR '_title' 0x34,0x82,0x08, // CALL_FUNCTION 264 0x59, // POP_TOP 0x51, // LOAD_CONST_NONE @@ -9398,7 +9467,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window___init__ = { .n_pos_args = 7, .n_kwonly_args = 0, .n_def_pos_args = 3, - .qstr_block_name_idx = 63, + .qstr_block_name_idx = 65, .line_info = fun_data_tdui_Window___init__ + 18, .line_info_top = fun_data_tdui_Window___init__ + 18, .opcodes = fun_data_tdui_Window___init__ + 18, @@ -9414,10 +9483,10 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window___init__ = { // frozen bytecode for file tdui.py, scope tdui_Window_title static const byte fun_data_tdui_Window_title[9] = { 0x09,0x06, // prelude - 0x4c,0x81,0x1f, // names: title, self + 0x4e,0x81,0x2c, // names: title, self // code info 0xb0, // LOAD_FAST 0 - 0x13,0x44, // LOAD_ATTR '_title' + 0x13,0x46, // LOAD_ATTR '_title' 0x63, // RETURN_VALUE }; #if MICROPY_PERSISTENT_CODE_SAVE @@ -9443,7 +9512,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_title = { .n_pos_args = 1, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 76, + .qstr_block_name_idx = 78, .line_info = fun_data_tdui_Window_title + 5, .line_info_top = fun_data_tdui_Window_title + 5, .opcodes = fun_data_tdui_Window_title + 5, @@ -9459,23 +9528,23 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_title = { // frozen bytecode for file tdui.py, scope tdui_Window_title2 static const byte fun_data_tdui_Window_title2[38] = { 0x32,0x0a, // prelude - 0x4c,0x81,0x1f,0x81,0x27, // names: title, self, t + 0x4e,0x81,0x2c,0x81,0x34, // names: title, self, t // code info - 0x12,0x81,0x26, // LOAD_GLOBAL 'str' + 0x12,0x81,0x33, // LOAD_GLOBAL 'str' 0xb1, // LOAD_FAST 1 0x34,0x01, // CALL_FUNCTION 1 0xb0, // LOAD_FAST 0 - 0x18,0x44, // STORE_ATTR '_title' + 0x18,0x46, // STORE_ATTR '_title' 0xb0, // LOAD_FAST 0 - 0x13,0x47, // LOAD_ATTR 'is_open' + 0x13,0x49, // LOAD_ATTR 'is_open' 0x44,0x4f, // POP_JUMP_IF_FALSE 15 - 0x12,0x13, // LOAD_GLOBAL '_send' + 0x12,0x14, // LOAD_GLOBAL '_send' 0x84, // LOAD_CONST_SMALL_INT 4 0xb0, // LOAD_FAST 0 - 0x13,0x43, // LOAD_ATTR 'id' - 0x10,0x36, // LOAD_CONST_STRING 'text' + 0x13,0x45, // LOAD_ATTR 'id' + 0x10,0x38, // LOAD_CONST_STRING 'text' 0xb0, // LOAD_FAST 0 - 0x13,0x44, // LOAD_ATTR '_title' + 0x13,0x46, // LOAD_ATTR '_title' 0x34,0x82,0x02, // CALL_FUNCTION 258 0x59, // POP_TOP 0x51, // LOAD_CONST_NONE @@ -9504,7 +9573,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_title2 = { .n_pos_args = 2, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 76, + .qstr_block_name_idx = 78, .line_info = fun_data_tdui_Window_title2 + 7, .line_info_top = fun_data_tdui_Window_title2 + 7, .opcodes = fun_data_tdui_Window_title2 + 7, @@ -9520,15 +9589,15 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_title2 = { // frozen bytecode for file tdui.py, scope tdui_Window_focus static const byte fun_data_tdui_Window_focus[21] = { 0x19,0x06, // prelude - 0x4d,0x81,0x1f, // names: focus, self + 0x4f,0x81,0x2c, // names: focus, self // code info 0xb0, // LOAD_FAST 0 - 0x13,0x47, // LOAD_ATTR 'is_open' + 0x13,0x49, // LOAD_ATTR 'is_open' 0x44,0x49, // POP_JUMP_IF_FALSE 9 - 0x12,0x13, // LOAD_GLOBAL '_send' + 0x12,0x14, // LOAD_GLOBAL '_send' 0x88, // LOAD_CONST_SMALL_INT 8 0xb0, // LOAD_FAST 0 - 0x13,0x43, // LOAD_ATTR 'id' + 0x13,0x45, // LOAD_ATTR 'id' 0x34,0x02, // CALL_FUNCTION 2 0x59, // POP_TOP 0x51, // LOAD_CONST_NONE @@ -9557,7 +9626,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_focus = { .n_pos_args = 1, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 77, + .qstr_block_name_idx = 79, .line_info = fun_data_tdui_Window_focus + 5, .line_info_top = fun_data_tdui_Window_focus + 5, .opcodes = fun_data_tdui_Window_focus + 5, @@ -9573,15 +9642,15 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_focus = { // frozen bytecode for file tdui.py, scope tdui_Window_resize static const byte fun_data_tdui_Window_resize[29] = { 0x4b,0x0e, // prelude - 0x4e,0x81,0x1f,0x81,0x20,0x81,0x21, // names: resize, self, w, h + 0x50,0x81,0x2c,0x81,0x2d,0x81,0x2e, // names: resize, self, w, h // code info 0xb0, // LOAD_FAST 0 - 0x13,0x47, // LOAD_ATTR 'is_open' + 0x13,0x49, // LOAD_ATTR 'is_open' 0x44,0x4d, // POP_JUMP_IF_FALSE 13 - 0x12,0x13, // LOAD_GLOBAL '_send' + 0x12,0x14, // LOAD_GLOBAL '_send' 0x90, // LOAD_CONST_SMALL_INT 16 0xb0, // LOAD_FAST 0 - 0x13,0x43, // LOAD_ATTR 'id' + 0x13,0x45, // LOAD_ATTR 'id' 0x80, // LOAD_CONST_SMALL_INT 0 0x80, // LOAD_CONST_SMALL_INT 0 0xb1, // LOAD_FAST 1 @@ -9614,7 +9683,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_resize = { .n_pos_args = 3, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 78, + .qstr_block_name_idx = 80, .line_info = fun_data_tdui_Window_resize + 9, .line_info_top = fun_data_tdui_Window_resize + 9, .opcodes = fun_data_tdui_Window_resize + 9, @@ -9630,15 +9699,15 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_resize = { // frozen bytecode for file tdui.py, scope tdui_Window_move static const byte fun_data_tdui_Window_move[29] = { 0x4b,0x0e, // prelude - 0x4f,0x81,0x1f,0x81,0x22,0x81,0x23, // names: move, self, x, y + 0x51,0x81,0x2c,0x81,0x2f,0x81,0x30, // names: move, self, x, y // code info 0xb0, // LOAD_FAST 0 - 0x13,0x47, // LOAD_ATTR 'is_open' + 0x13,0x49, // LOAD_ATTR 'is_open' 0x44,0x4d, // POP_JUMP_IF_FALSE 13 - 0x12,0x13, // LOAD_GLOBAL '_send' + 0x12,0x14, // LOAD_GLOBAL '_send' 0x91, // LOAD_CONST_SMALL_INT 17 0xb0, // LOAD_FAST 0 - 0x13,0x43, // LOAD_ATTR 'id' + 0x13,0x45, // LOAD_ATTR 'id' 0x80, // LOAD_CONST_SMALL_INT 0 0x80, // LOAD_CONST_SMALL_INT 0 0xb1, // LOAD_FAST 1 @@ -9671,7 +9740,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_move = { .n_pos_args = 3, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 79, + .qstr_block_name_idx = 81, .line_info = fun_data_tdui_Window_move + 9, .line_info_top = fun_data_tdui_Window_move + 9, .opcodes = fun_data_tdui_Window_move + 9, @@ -9687,15 +9756,15 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_move = { // frozen bytecode for file tdui.py, scope tdui_Window_restore static const byte fun_data_tdui_Window_restore[24] = { 0x31,0x06, // prelude - 0x50,0x81,0x1f, // names: restore, self + 0x52,0x81,0x2c, // names: restore, self // code info 0xb0, // LOAD_FAST 0 - 0x13,0x47, // LOAD_ATTR 'is_open' + 0x13,0x49, // LOAD_ATTR 'is_open' 0x44,0x4c, // POP_JUMP_IF_FALSE 12 - 0x12,0x13, // LOAD_GLOBAL '_send' + 0x12,0x14, // LOAD_GLOBAL '_send' 0x92, // LOAD_CONST_SMALL_INT 18 0xb0, // LOAD_FAST 0 - 0x13,0x43, // LOAD_ATTR 'id' + 0x13,0x45, // LOAD_ATTR 'id' 0x80, // LOAD_CONST_SMALL_INT 0 0x80, // LOAD_CONST_SMALL_INT 0 0x80, // LOAD_CONST_SMALL_INT 0 @@ -9727,7 +9796,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_restore = { .n_pos_args = 1, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 80, + .qstr_block_name_idx = 82, .line_info = fun_data_tdui_Window_restore + 5, .line_info_top = fun_data_tdui_Window_restore + 5, .opcodes = fun_data_tdui_Window_restore + 5, @@ -9743,15 +9812,15 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_restore = { // frozen bytecode for file tdui.py, scope tdui_Window_maximize static const byte fun_data_tdui_Window_maximize[24] = { 0x31,0x06, // prelude - 0x51,0x81,0x1f, // names: maximize, self + 0x53,0x81,0x2c, // names: maximize, self // code info 0xb0, // LOAD_FAST 0 - 0x13,0x47, // LOAD_ATTR 'is_open' + 0x13,0x49, // LOAD_ATTR 'is_open' 0x44,0x4c, // POP_JUMP_IF_FALSE 12 - 0x12,0x13, // LOAD_GLOBAL '_send' + 0x12,0x14, // LOAD_GLOBAL '_send' 0x92, // LOAD_CONST_SMALL_INT 18 0xb0, // LOAD_FAST 0 - 0x13,0x43, // LOAD_ATTR 'id' + 0x13,0x45, // LOAD_ATTR 'id' 0x80, // LOAD_CONST_SMALL_INT 0 0x80, // LOAD_CONST_SMALL_INT 0 0x81, // LOAD_CONST_SMALL_INT 1 @@ -9783,7 +9852,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_maximize = { .n_pos_args = 1, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 81, + .qstr_block_name_idx = 83, .line_info = fun_data_tdui_Window_maximize + 5, .line_info_top = fun_data_tdui_Window_maximize + 5, .opcodes = fun_data_tdui_Window_maximize + 5, @@ -9799,15 +9868,15 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_maximize = { // frozen bytecode for file tdui.py, scope tdui_Window_minimize static const byte fun_data_tdui_Window_minimize[24] = { 0x31,0x06, // prelude - 0x52,0x81,0x1f, // names: minimize, self + 0x54,0x81,0x2c, // names: minimize, self // code info 0xb0, // LOAD_FAST 0 - 0x13,0x47, // LOAD_ATTR 'is_open' + 0x13,0x49, // LOAD_ATTR 'is_open' 0x44,0x4c, // POP_JUMP_IF_FALSE 12 - 0x12,0x13, // LOAD_GLOBAL '_send' + 0x12,0x14, // LOAD_GLOBAL '_send' 0x92, // LOAD_CONST_SMALL_INT 18 0xb0, // LOAD_FAST 0 - 0x13,0x43, // LOAD_ATTR 'id' + 0x13,0x45, // LOAD_ATTR 'id' 0x80, // LOAD_CONST_SMALL_INT 0 0x80, // LOAD_CONST_SMALL_INT 0 0x82, // LOAD_CONST_SMALL_INT 2 @@ -9839,7 +9908,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_minimize = { .n_pos_args = 1, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 82, + .qstr_block_name_idx = 84, .line_info = fun_data_tdui_Window_minimize + 5, .line_info_top = fun_data_tdui_Window_minimize + 5, .opcodes = fun_data_tdui_Window_minimize + 5, @@ -9855,15 +9924,15 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_minimize = { // frozen bytecode for file tdui.py, scope tdui_Window_fullscreen static const byte fun_data_tdui_Window_fullscreen[24] = { 0x31,0x06, // prelude - 0x53,0x81,0x1f, // names: fullscreen, self + 0x55,0x81,0x2c, // names: fullscreen, self // code info 0xb0, // LOAD_FAST 0 - 0x13,0x47, // LOAD_ATTR 'is_open' + 0x13,0x49, // LOAD_ATTR 'is_open' 0x44,0x4c, // POP_JUMP_IF_FALSE 12 - 0x12,0x13, // LOAD_GLOBAL '_send' + 0x12,0x14, // LOAD_GLOBAL '_send' 0x92, // LOAD_CONST_SMALL_INT 18 0xb0, // LOAD_FAST 0 - 0x13,0x43, // LOAD_ATTR 'id' + 0x13,0x45, // LOAD_ATTR 'id' 0x80, // LOAD_CONST_SMALL_INT 0 0x80, // LOAD_CONST_SMALL_INT 0 0x83, // LOAD_CONST_SMALL_INT 3 @@ -9895,7 +9964,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_fullscreen = { .n_pos_args = 1, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 83, + .qstr_block_name_idx = 85, .line_info = fun_data_tdui_Window_fullscreen + 5, .line_info_top = fun_data_tdui_Window_fullscreen + 5, .opcodes = fun_data_tdui_Window_fullscreen + 5, @@ -9911,19 +9980,19 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_fullscreen = { // frozen bytecode for file tdui.py, scope tdui_Window_close static const byte fun_data_tdui_Window_close[27] = { 0x19,0x06, // prelude - 0x33,0x81,0x1f, // names: close, self + 0x35,0x81,0x2c, // names: close, self // code info 0xb0, // LOAD_FAST 0 - 0x13,0x47, // LOAD_ATTR 'is_open' + 0x13,0x49, // LOAD_ATTR 'is_open' 0x44,0x4f, // POP_JUMP_IF_FALSE 15 - 0x12,0x13, // LOAD_GLOBAL '_send' + 0x12,0x14, // LOAD_GLOBAL '_send' 0x82, // LOAD_CONST_SMALL_INT 2 0xb0, // LOAD_FAST 0 - 0x13,0x43, // LOAD_ATTR 'id' + 0x13,0x45, // LOAD_ATTR 'id' 0x34,0x02, // CALL_FUNCTION 2 0x59, // POP_TOP 0xb0, // LOAD_FAST 0 - 0x14,0x54, // LOAD_METHOD '_gone' + 0x14,0x56, // LOAD_METHOD '_gone' 0x36,0x00, // CALL_METHOD 0 0x59, // POP_TOP 0x51, // LOAD_CONST_NONE @@ -9952,7 +10021,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_close = { .n_pos_args = 1, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 51, + .qstr_block_name_idx = 53, .line_info = fun_data_tdui_Window_close + 5, .line_info_top = fun_data_tdui_Window_close + 5, .opcodes = fun_data_tdui_Window_close + 5, @@ -9968,49 +10037,49 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_close = { // frozen bytecode for file tdui.py, scope tdui_Window__gone static const byte fun_data_tdui_Window__gone[105] = { 0x51,0x06, // prelude - 0x54,0x81,0x1f, // names: _gone, self + 0x56,0x81,0x2c, // names: _gone, self // code info 0x50, // LOAD_CONST_FALSE 0xb0, // LOAD_FAST 0 - 0x18,0x47, // STORE_ATTR 'is_open' - 0x12,0x81,0x04, // LOAD_GLOBAL '_windows' + 0x18,0x49, // STORE_ATTR 'is_open' + 0x12,0x81,0x0f, // LOAD_GLOBAL '_windows' 0x81, // LOAD_CONST_SMALL_INT 1 0xe6, // BINARY_OP 15 __isub__ - 0x17,0x81,0x04, // STORE_GLOBAL '_windows' - 0x12,0x81,0x00, // LOAD_GLOBAL '_objs' - 0x14,0x55, // LOAD_METHOD 'pop' + 0x17,0x81,0x0f, // STORE_GLOBAL '_windows' + 0x12,0x81,0x0b, // LOAD_GLOBAL '_objs' + 0x14,0x57, // LOAD_METHOD 'pop' 0xb0, // LOAD_FAST 0 - 0x13,0x43, // LOAD_ATTR 'id' + 0x13,0x45, // LOAD_ATTR 'id' 0x51, // LOAD_CONST_NONE 0x36,0x02, // CALL_METHOD 2 0x59, // POP_TOP 0xb0, // LOAD_FAST 0 - 0x13,0x4b, // LOAD_ATTR '_kids' + 0x13,0x4d, // LOAD_ATTR '_kids' 0x5f, // GET_ITER_STACK 0x4b,0x21, // FOR_ITER 33 0xc1, // STORE_FAST 1 - 0x12,0x81,0x00, // LOAD_GLOBAL '_objs' - 0x14,0x55, // LOAD_METHOD 'pop' + 0x12,0x81,0x0b, // LOAD_GLOBAL '_objs' + 0x14,0x57, // LOAD_METHOD 'pop' 0xb1, // LOAD_FAST 1 - 0x13,0x43, // LOAD_ATTR 'id' + 0x13,0x45, // LOAD_ATTR 'id' 0x51, // LOAD_CONST_NONE 0x36,0x02, // CALL_METHOD 2 0x59, // POP_TOP - 0x12,0x81,0x05, // LOAD_GLOBAL '_widgets' + 0x12,0x81,0x10, // LOAD_GLOBAL '_widgets' 0xb1, // LOAD_FAST 1 - 0x13,0x56, // LOAD_ATTR '_n' + 0x13,0x58, // LOAD_ATTR '_n' 0xe6, // BINARY_OP 15 __isub__ - 0x17,0x81,0x05, // STORE_GLOBAL '_widgets' - 0x12,0x57, // LOAD_GLOBAL '_cells' + 0x17,0x81,0x10, // STORE_GLOBAL '_widgets' + 0x12,0x59, // LOAD_GLOBAL '_cells' 0xb1, // LOAD_FAST 1 - 0x13,0x57, // LOAD_ATTR '_cells' + 0x13,0x59, // LOAD_ATTR '_cells' 0xe6, // BINARY_OP 15 __isub__ - 0x17,0x57, // STORE_GLOBAL '_cells' + 0x17,0x59, // STORE_GLOBAL '_cells' 0x42,0x1d, // JUMP -35 0x2b,0x00, // BUILD_LIST 0 0xb0, // LOAD_FAST 0 - 0x18,0x4b, // STORE_ATTR '_kids' - 0x12,0x81,0x02, // LOAD_GLOBAL '_timers' + 0x18,0x4d, // STORE_ATTR '_kids' + 0x12,0x81,0x0d, // LOAD_GLOBAL '_timers' 0x51, // LOAD_CONST_NONE 0x51, // LOAD_CONST_NONE 0x2e,0x02, // BUILD_SLICE 2 @@ -10019,12 +10088,12 @@ static const byte fun_data_tdui_Window__gone[105] = { 0x4b,0x13, // FOR_ITER 19 0xc2, // STORE_FAST 2 0xb2, // LOAD_FAST 2 - 0x13,0x40, // LOAD_ATTR 'win' + 0x13,0x42, // LOAD_ATTR 'win' 0xb0, // LOAD_FAST 0 0xde, // BINARY_OP 7 0x44,0x49, // POP_JUMP_IF_FALSE 9 - 0x12,0x81,0x02, // LOAD_GLOBAL '_timers' - 0x14,0x24, // LOAD_METHOD 'remove' + 0x12,0x81,0x0d, // LOAD_GLOBAL '_timers' + 0x14,0x26, // LOAD_METHOD 'remove' 0xb2, // LOAD_FAST 2 0x36,0x01, // CALL_METHOD 1 0x59, // POP_TOP @@ -10055,7 +10124,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window__gone = { .n_pos_args = 1, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 84, + .qstr_block_name_idx = 86, .line_info = fun_data_tdui_Window__gone + 5, .line_info_top = fun_data_tdui_Window__gone + 5, .opcodes = fun_data_tdui_Window__gone + 5, @@ -10071,21 +10140,21 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window__gone = { // frozen bytecode for file tdui.py, scope tdui_Window__event static const byte fun_data_tdui_Window__event[109] = { 0xeb,0x04,0x1e, // prelude - 0x2a,0x81,0x1f,0x81,0x06,0x81,0x08,0x81,0x09,0x81,0x0a,0x81,0x0b,0x81,0x27, // names: _event, self, op, a, b, c, d, t + 0x2c,0x81,0x2c,0x81,0x11,0x81,0x13,0x81,0x14,0x81,0x15,0x81,0x16,0x81,0x34, // names: _event, self, op, a, b, c, d, t // code info 0xb1, // LOAD_FAST 1 0x83, // LOAD_CONST_SMALL_INT 3 0xd9, // BINARY_OP 2 __eq__ 0x44,0x55, // POP_JUMP_IF_FALSE 21 0xb0, // LOAD_FAST 0 - 0x14,0x54, // LOAD_METHOD '_gone' + 0x14,0x56, // LOAD_METHOD '_gone' 0x36,0x00, // CALL_METHOD 0 0x59, // POP_TOP 0xb0, // LOAD_FAST 0 - 0x13,0x48, // LOAD_ATTR 'on_close' + 0x13,0x4a, // LOAD_ATTR 'on_close' 0x44,0x47, // POP_JUMP_IF_FALSE 7 0xb0, // LOAD_FAST 0 - 0x14,0x48, // LOAD_METHOD 'on_close' + 0x14,0x4a, // LOAD_METHOD 'on_close' 0xb0, // LOAD_FAST 0 0x36,0x01, // CALL_METHOD 1 0x59, // POP_TOP @@ -10095,12 +10164,12 @@ static const byte fun_data_tdui_Window__event[109] = { 0xd9, // BINARY_OP 2 __eq__ 0x44,0x5d, // POP_JUMP_IF_FALSE 29 0xb0, // LOAD_FAST 0 - 0x13,0x49, // LOAD_ATTR 'on_key' + 0x13,0x4b, // LOAD_ATTR 'on_key' 0x44,0x58, // POP_JUMP_IF_FALSE 24 0xb0, // LOAD_FAST 0 - 0x14,0x49, // LOAD_METHOD 'on_key' + 0x14,0x4b, // LOAD_METHOD 'on_key' 0xb0, // LOAD_FAST 0 - 0x12,0x15, // LOAD_GLOBAL '_key_name' + 0x12,0x16, // LOAD_GLOBAL '_key_name' 0xb2, // LOAD_FAST 2 0x22,0x83,0xff,0x7f, // LOAD_CONST_SMALL_INT 65535 0xef, // BINARY_OP 24 __and__ @@ -10119,15 +10188,15 @@ static const byte fun_data_tdui_Window__event[109] = { 0x44,0x58, // POP_JUMP_IF_FALSE 24 0xb2, // LOAD_FAST 2 0xb0, // LOAD_FAST 0 - 0x18,0x45, // STORE_ATTR 'width' + 0x18,0x47, // STORE_ATTR 'width' 0xb3, // LOAD_FAST 3 0xb0, // LOAD_FAST 0 - 0x18,0x46, // STORE_ATTR 'height' + 0x18,0x48, // STORE_ATTR 'height' 0xb0, // LOAD_FAST 0 - 0x13,0x4a, // LOAD_ATTR 'on_resize' + 0x13,0x4c, // LOAD_ATTR 'on_resize' 0x44,0x49, // POP_JUMP_IF_FALSE 9 0xb0, // LOAD_FAST 0 - 0x14,0x4a, // LOAD_METHOD 'on_resize' + 0x14,0x4c, // LOAD_METHOD 'on_resize' 0xb0, // LOAD_FAST 0 0xb2, // LOAD_FAST 2 0xb3, // LOAD_FAST 3 @@ -10160,7 +10229,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window__event = { .n_pos_args = 7, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 42, + .qstr_block_name_idx = 44, .line_info = fun_data_tdui_Window__event + 18, .line_info_top = fun_data_tdui_Window__event + 18, .opcodes = fun_data_tdui_Window__event + 18, @@ -10176,9 +10245,9 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window__event = { // frozen bytecode for file tdui.py, scope tdui_Window_every static const byte fun_data_tdui_Window_every[16] = { 0x3b,0x0a, // prelude - 0x19,0x81,0x1f,0x23,0x25, // names: every, self, ms, fn + 0x1a,0x81,0x2c,0x25,0x27, // names: every, self, ms, fn // code info - 0x12,0x06, // LOAD_GLOBAL 'Timer' + 0x12,0x07, // LOAD_GLOBAL 'Timer' 0xb1, // LOAD_FAST 1 0xb2, // LOAD_FAST 2 0x52, // LOAD_CONST_TRUE @@ -10209,7 +10278,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_every = { .n_pos_args = 3, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 25, + .qstr_block_name_idx = 26, .line_info = fun_data_tdui_Window_every + 7, .line_info_top = fun_data_tdui_Window_every + 7, .opcodes = fun_data_tdui_Window_every + 7, @@ -10225,9 +10294,9 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_every = { // frozen bytecode for file tdui.py, scope tdui_Window_after static const byte fun_data_tdui_Window_after[16] = { 0x3b,0x0a, // prelude - 0x1a,0x81,0x1f,0x23,0x25, // names: after, self, ms, fn + 0x1b,0x81,0x2c,0x25,0x27, // names: after, self, ms, fn // code info - 0x12,0x06, // LOAD_GLOBAL 'Timer' + 0x12,0x07, // LOAD_GLOBAL 'Timer' 0xb1, // LOAD_FAST 1 0xb2, // LOAD_FAST 2 0x50, // LOAD_CONST_FALSE @@ -10258,7 +10327,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_after = { .n_pos_args = 3, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 26, + .qstr_block_name_idx = 27, .line_info = fun_data_tdui_Window_after + 7, .line_info_top = fun_data_tdui_Window_after + 7, .opcodes = fun_data_tdui_Window_after + 7, @@ -10274,9 +10343,9 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_after = { // frozen bytecode for file tdui.py, scope tdui_Window_label static const byte fun_data_tdui_Window_label[23] = { 0xd1,0x84,0x01,0x12, // prelude - 0x58,0x81,0x1f,0x81,0x22,0x81,0x23,0x36,0x45, // names: label, self, x, y, text, width + 0x5a,0x81,0x2c,0x81,0x2f,0x81,0x30,0x38,0x47, // names: label, self, x, y, text, width // code info - 0x12,0x09, // LOAD_GLOBAL 'Label' + 0x12,0x0a, // LOAD_GLOBAL 'Label' 0xb0, // LOAD_FAST 0 0xb1, // LOAD_FAST 1 0xb2, // LOAD_FAST 2 @@ -10308,7 +10377,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_label = { .n_pos_args = 5, .n_kwonly_args = 0, .n_def_pos_args = 2, - .qstr_block_name_idx = 88, + .qstr_block_name_idx = 90, .line_info = fun_data_tdui_Window_label + 13, .line_info_top = fun_data_tdui_Window_label + 13, .opcodes = fun_data_tdui_Window_label + 13, @@ -10324,9 +10393,9 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_label = { // frozen bytecode for file tdui.py, scope tdui_Window_button static const byte fun_data_tdui_Window_button[22] = { 0xd1,0x05,0x12, // prelude - 0x59,0x81,0x1f,0x81,0x22,0x81,0x23,0x36,0x64, // names: button, self, x, y, text, on_click + 0x5b,0x81,0x2c,0x81,0x2f,0x81,0x30,0x38,0x66, // names: button, self, x, y, text, on_click // code info - 0x12,0x0a, // LOAD_GLOBAL 'Button' + 0x12,0x0b, // LOAD_GLOBAL 'Button' 0xb0, // LOAD_FAST 0 0xb1, // LOAD_FAST 1 0xb2, // LOAD_FAST 2 @@ -10358,7 +10427,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_button = { .n_pos_args = 5, .n_kwonly_args = 0, .n_def_pos_args = 1, - .qstr_block_name_idx = 89, + .qstr_block_name_idx = 91, .line_info = fun_data_tdui_Window_button + 12, .line_info_top = fun_data_tdui_Window_button + 12, .opcodes = fun_data_tdui_Window_button + 12, @@ -10374,9 +10443,9 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_button = { // frozen bytecode for file tdui.py, scope tdui_Window_checkbox static const byte fun_data_tdui_Window_checkbox[25] = { 0xe2,0x84,0x01,0x14, // prelude - 0x5a,0x81,0x1f,0x81,0x22,0x81,0x23,0x36,0x67,0x66, // names: checkbox, self, x, y, text, checked, on_change + 0x5c,0x81,0x2c,0x81,0x2f,0x81,0x30,0x38,0x69,0x68, // names: checkbox, self, x, y, text, checked, on_change // code info - 0x12,0x0b, // LOAD_GLOBAL 'Checkbox' + 0x12,0x0c, // LOAD_GLOBAL 'Checkbox' 0xb0, // LOAD_FAST 0 0xb1, // LOAD_FAST 1 0xb2, // LOAD_FAST 2 @@ -10409,7 +10478,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_checkbox = { .n_pos_args = 6, .n_kwonly_args = 0, .n_def_pos_args = 2, - .qstr_block_name_idx = 90, + .qstr_block_name_idx = 92, .line_info = fun_data_tdui_Window_checkbox + 14, .line_info_top = fun_data_tdui_Window_checkbox + 14, .opcodes = fun_data_tdui_Window_checkbox + 14, @@ -10425,9 +10494,9 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_checkbox = { // frozen bytecode for file tdui.py, scope tdui_Window_textbox static const byte fun_data_tdui_Window_textbox[31] = { 0x80,0x90,0x84,0x01,0x1a, // prelude - 0x5b,0x81,0x1f,0x81,0x22,0x81,0x23,0x45,0x36,0x81,0x1e,0x68,0x66, // names: textbox, self, x, y, width, text, secret, on_enter, on_change + 0x5d,0x81,0x2c,0x81,0x2f,0x81,0x30,0x47,0x38,0x81,0x2b,0x6a,0x68, // names: textbox, self, x, y, width, text, secret, on_enter, on_change // code info - 0x12,0x0c, // LOAD_GLOBAL 'Textbox' + 0x12,0x0d, // LOAD_GLOBAL 'Textbox' 0xb0, // LOAD_FAST 0 0xb1, // LOAD_FAST 1 0xb2, // LOAD_FAST 2 @@ -10462,7 +10531,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_textbox = { .n_pos_args = 8, .n_kwonly_args = 0, .n_def_pos_args = 4, - .qstr_block_name_idx = 91, + .qstr_block_name_idx = 93, .line_info = fun_data_tdui_Window_textbox + 18, .line_info_top = fun_data_tdui_Window_textbox + 18, .opcodes = fun_data_tdui_Window_textbox + 18, @@ -10478,9 +10547,9 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_textbox = { // frozen bytecode for file tdui.py, scope tdui_Window_progress static const byte fun_data_tdui_Window_progress[22] = { 0xd1,0x05,0x12, // prelude - 0x5c,0x81,0x1f,0x81,0x22,0x81,0x23,0x45,0x6a, // names: progress, self, x, y, width, value + 0x5e,0x81,0x2c,0x81,0x2f,0x81,0x30,0x47,0x6c, // names: progress, self, x, y, width, value // code info - 0x12,0x0d, // LOAD_GLOBAL 'Progress' + 0x12,0x0e, // LOAD_GLOBAL 'Progress' 0xb0, // LOAD_FAST 0 0xb1, // LOAD_FAST 1 0xb2, // LOAD_FAST 2 @@ -10512,7 +10581,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_progress = { .n_pos_args = 5, .n_kwonly_args = 0, .n_def_pos_args = 1, - .qstr_block_name_idx = 92, + .qstr_block_name_idx = 94, .line_info = fun_data_tdui_Window_progress + 12, .line_info_top = fun_data_tdui_Window_progress + 12, .opcodes = fun_data_tdui_Window_progress + 12, @@ -10528,9 +10597,9 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_progress = { // frozen bytecode for file tdui.py, scope tdui_Window_list static const byte fun_data_tdui_Window_list[31] = { 0x80,0x91,0x05,0x1c, // prelude - 0x5d,0x81,0x1f,0x81,0x22,0x81,0x23,0x81,0x20,0x81,0x21,0x70,0x6c,0x6d, // names: list, self, x, y, w, h, items, on_select, on_activate + 0x5f,0x81,0x2c,0x81,0x2f,0x81,0x30,0x81,0x2d,0x81,0x2e,0x72,0x6e,0x6f, // names: list, self, x, y, w, h, items, on_select, on_activate // code info - 0x12,0x0e, // LOAD_GLOBAL 'List' + 0x12,0x0f, // LOAD_GLOBAL 'List' 0xb0, // LOAD_FAST 0 0xb1, // LOAD_FAST 1 0xb2, // LOAD_FAST 2 @@ -10565,7 +10634,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_list = { .n_pos_args = 8, .n_kwonly_args = 0, .n_def_pos_args = 3, - .qstr_block_name_idx = 93, + .qstr_block_name_idx = 95, .line_info = fun_data_tdui_Window_list + 18, .line_info_top = fun_data_tdui_Window_list + 18, .opcodes = fun_data_tdui_Window_list + 18, @@ -10579,18 +10648,19 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_list = { // child of tdui_Window // frozen bytecode for file tdui.py, scope tdui_Window_canvas -static const byte fun_data_tdui_Window_canvas[26] = { - 0xe2,0x05,0x18, // prelude - 0x5e,0x81,0x1f,0x81,0x22,0x81,0x23,0x81,0x20,0x81,0x21,0x75, // names: canvas, self, x, y, w, h, on_mouse +static const byte fun_data_tdui_Window_canvas[29] = { + 0xf3,0x84,0x01,0x1a, // prelude + 0x60,0x81,0x2c,0x81,0x2f,0x81,0x30,0x81,0x2d,0x81,0x2e,0x7a,0x77, // names: canvas, self, x, y, w, h, on_mouse, pages // code info - 0x12,0x0f, // LOAD_GLOBAL 'Canvas' + 0x12,0x10, // LOAD_GLOBAL 'Canvas' 0xb0, // LOAD_FAST 0 0xb1, // LOAD_FAST 1 0xb2, // LOAD_FAST 2 0xb3, // LOAD_FAST 3 0xb4, // LOAD_FAST 4 0xb5, // LOAD_FAST 5 - 0x34,0x06, // CALL_FUNCTION 6 + 0xb6, // LOAD_FAST 6 + 0x34,0x07, // CALL_FUNCTION 7 0x63, // RETURN_VALUE }; #if MICROPY_PERSISTENT_CODE_SAVE @@ -10602,7 +10672,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_canvas = { .fun_data = fun_data_tdui_Window_canvas, .children = NULL, #if MICROPY_PERSISTENT_CODE_SAVE - .fun_data_len = 26, + .fun_data_len = 29, .n_children = 0, #if MICROPY_EMIT_MACHINE_CODE .prelude_offset = 0, @@ -10610,16 +10680,16 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window_canvas = { #if MICROPY_PY_SYS_SETTRACE .line_of_definition = 0, .prelude = { - .n_state = 13, + .n_state = 15, .n_exc_stack = 0, .scope_flags = 0, - .n_pos_args = 6, + .n_pos_args = 7, .n_kwonly_args = 0, - .n_def_pos_args = 1, - .qstr_block_name_idx = 94, - .line_info = fun_data_tdui_Window_canvas + 15, - .line_info_top = fun_data_tdui_Window_canvas + 15, - .opcodes = fun_data_tdui_Window_canvas + 15, + .n_def_pos_args = 2, + .qstr_block_name_idx = 96, + .line_info = fun_data_tdui_Window_canvas + 17, + .line_info_top = fun_data_tdui_Window_canvas + 17, + .opcodes = fun_data_tdui_Window_canvas + 17, }, #endif #endif @@ -10661,7 +10731,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window = { .fun_data = fun_data_tdui_Window, .children = (void *)&children_tdui_Window, #if MICROPY_PERSISTENT_CODE_SAVE - .fun_data_len = 159, + .fun_data_len = 160, .n_children = 22, #if MICROPY_EMIT_MACHINE_CODE .prelude_offset = 0, @@ -10675,7 +10745,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window = { .n_pos_args = 0, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 7, + .qstr_block_name_idx = 8, .line_info = fun_data_tdui_Window + 3, .line_info_top = fun_data_tdui_Window + 3, .opcodes = fun_data_tdui_Window + 3, @@ -10688,53 +10758,53 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Window = { // frozen bytecode for file tdui.py, scope tdui__Widget static const byte fun_data_tdui__Widget[91] = { 0x10,0x02, // prelude - 0x08, // names: _Widget + 0x09, // names: _Widget // code info - 0x11,0x81,0x12, // LOAD_NAME '__name__' - 0x16,0x81,0x13, // STORE_NAME '__module__' - 0x10,0x08, // LOAD_CONST_STRING '_Widget' - 0x16,0x81,0x14, // STORE_NAME '__qualname__' + 0x11,0x81,0x1d, // LOAD_NAME '__name__' + 0x16,0x81,0x1e, // STORE_NAME '__module__' + 0x10,0x09, // LOAD_CONST_STRING '_Widget' + 0x16,0x81,0x1f, // STORE_NAME '__qualname__' 0x81, // LOAD_CONST_SMALL_INT 1 - 0x16,0x56, // STORE_NAME '_n' + 0x16,0x58, // STORE_NAME '_n' 0x80, // LOAD_CONST_SMALL_INT 0 - 0x16,0x57, // STORE_NAME '_cells' + 0x16,0x59, // STORE_NAME '_cells' 0x32,0x00, // MAKE_FUNCTION 0 - 0x16,0x3f, // STORE_NAME '__init__' + 0x16,0x41, // STORE_NAME '__init__' 0x80, // LOAD_CONST_SMALL_INT 0 0x80, // LOAD_CONST_SMALL_INT 0 0x51, // LOAD_CONST_NONE 0x2a,0x03, // BUILD_TUPLE 3 0x53, // LOAD_NULL 0x33,0x01, // MAKE_FUNCTION_DEFARGS 1 - 0x16,0x61, // STORE_NAME '_req' - 0x11,0x81,0x15, // LOAD_NAME 'property' + 0x16,0x63, // STORE_NAME '_req' + 0x11,0x81,0x20, // LOAD_NAME 'property' 0x32,0x02, // MAKE_FUNCTION 2 0x34,0x01, // CALL_FUNCTION 1 - 0x16,0x36, // STORE_NAME 'text' - 0x11,0x36, // LOAD_NAME 'text' - 0x13,0x1b, // LOAD_ATTR 'setter' + 0x16,0x38, // STORE_NAME 'text' + 0x11,0x38, // LOAD_NAME 'text' + 0x13,0x1c, // LOAD_ATTR 'setter' 0x32,0x03, // MAKE_FUNCTION 3 0x34,0x01, // CALL_FUNCTION 1 - 0x16,0x36, // STORE_NAME 'text' - 0x11,0x81,0x15, // LOAD_NAME 'property' + 0x16,0x38, // STORE_NAME 'text' + 0x11,0x81,0x20, // LOAD_NAME 'property' 0x32,0x04, // MAKE_FUNCTION 4 0x34,0x01, // CALL_FUNCTION 1 - 0x16,0x62, // STORE_NAME 'visible' - 0x11,0x62, // LOAD_NAME 'visible' - 0x13,0x1b, // LOAD_ATTR 'setter' + 0x16,0x64, // STORE_NAME 'visible' + 0x11,0x64, // LOAD_NAME 'visible' + 0x13,0x1c, // LOAD_ATTR 'setter' 0x32,0x05, // MAKE_FUNCTION 5 0x34,0x01, // CALL_FUNCTION 1 - 0x16,0x62, // STORE_NAME 'visible' + 0x16,0x64, // STORE_NAME 'visible' 0x7f, // LOAD_CONST_SMALL_INT -1 0x7f, // LOAD_CONST_SMALL_INT -1 0x2a,0x02, // BUILD_TUPLE 2 0x53, // LOAD_NULL 0x33,0x06, // MAKE_FUNCTION_DEFARGS 6 - 0x16,0x63, // STORE_NAME 'color' + 0x16,0x65, // STORE_NAME 'color' 0x32,0x07, // MAKE_FUNCTION 7 - 0x16,0x4d, // STORE_NAME 'focus' + 0x16,0x4f, // STORE_NAME 'focus' 0x32,0x08, // MAKE_FUNCTION 8 - 0x16,0x2a, // STORE_NAME '_event' + 0x16,0x2c, // STORE_NAME '_event' 0x51, // LOAD_CONST_NONE 0x63, // RETURN_VALUE }; @@ -10742,63 +10812,63 @@ static const byte fun_data_tdui__Widget[91] = { // frozen bytecode for file tdui.py, scope tdui__Widget___init__ static const byte fun_data_tdui__Widget___init__[125] = { 0xa1,0x90,0x04,0x22, // prelude - 0x3f,0x81,0x1f,0x40,0x81,0x28,0x81,0x22,0x81,0x23,0x81,0x20,0x81,0x21,0x81,0x0c,0x36, // names: __init__, self, win, kind, x, y, w, h, e, text + 0x41,0x81,0x2c,0x42,0x81,0x35,0x81,0x2f,0x81,0x30,0x81,0x2d,0x81,0x2e,0x81,0x17,0x38, // names: __init__, self, win, kind, x, y, w, h, e, text // code info 0xb1, // LOAD_FAST 1 - 0x13,0x47, // LOAD_ATTR 'is_open' + 0x13,0x49, // LOAD_ATTR 'is_open' 0x43,0x48, // POP_JUMP_IF_TRUE 8 - 0x12,0x81,0x1a, // LOAD_GLOBAL 'OSError' - 0x23,0x03, // LOAD_CONST_OBJ 3 + 0x12,0x81,0x27, // LOAD_GLOBAL 'OSError' + 0x23,0x04, // LOAD_CONST_OBJ 4 0x34,0x01, // CALL_FUNCTION 1 0x65, // RAISE_OBJ - 0x12,0x81,0x05, // LOAD_GLOBAL '_widgets' + 0x12,0x81,0x10, // LOAD_GLOBAL '_widgets' 0xb0, // LOAD_FAST 0 - 0x13,0x56, // LOAD_ATTR '_n' + 0x13,0x58, // LOAD_ATTR '_n' 0xf2, // BINARY_OP 27 __add__ 0x22,0x30, // LOAD_CONST_SMALL_INT 48 0xd8, // BINARY_OP 1 __gt__ 0x44,0x4b, // POP_JUMP_IF_FALSE 11 - 0x12,0x81,0x1a, // LOAD_GLOBAL 'OSError' - 0x23,0x04, // LOAD_CONST_OBJ 4 + 0x12,0x81,0x27, // LOAD_GLOBAL 'OSError' + 0x23,0x05, // LOAD_CONST_OBJ 5 0x22,0x30, // LOAD_CONST_SMALL_INT 48 0xf8, // BINARY_OP 33 __mod__ 0x34,0x01, // CALL_FUNCTION 1 0x65, // RAISE_OBJ - 0x12,0x81,0x05, // LOAD_GLOBAL '_widgets' + 0x12,0x81,0x10, // LOAD_GLOBAL '_widgets' 0xb0, // LOAD_FAST 0 - 0x13,0x56, // LOAD_ATTR '_n' + 0x13,0x58, // LOAD_ATTR '_n' 0xe5, // BINARY_OP 14 __iadd__ - 0x17,0x81,0x05, // STORE_GLOBAL '_widgets' + 0x17,0x81,0x10, // STORE_GLOBAL '_widgets' 0xb1, // LOAD_FAST 1 0xb0, // LOAD_FAST 0 - 0x18,0x40, // STORE_ATTR 'win' - 0x12,0x12, // LOAD_GLOBAL '_new_id' + 0x18,0x42, // STORE_ATTR 'win' + 0x12,0x13, // LOAD_GLOBAL '_new_id' 0x34,0x00, // CALL_FUNCTION 0 0xb0, // LOAD_FAST 0 - 0x18,0x43, // STORE_ATTR 'id' + 0x18,0x45, // STORE_ATTR 'id' 0xb8, // LOAD_FAST 8 0xb0, // LOAD_FAST 0 - 0x18,0x5f, // STORE_ATTR '_text' + 0x18,0x61, // STORE_ATTR '_text' 0x52, // LOAD_CONST_TRUE 0xb0, // LOAD_FAST 0 - 0x18,0x60, // STORE_ATTR '_visible' + 0x18,0x62, // STORE_ATTR '_visible' 0xb0, // LOAD_FAST 0 - 0x12,0x81,0x00, // LOAD_GLOBAL '_objs' + 0x12,0x81,0x0b, // LOAD_GLOBAL '_objs' 0xb0, // LOAD_FAST 0 - 0x13,0x43, // LOAD_ATTR 'id' + 0x13,0x45, // LOAD_ATTR 'id' 0x56, // STORE_SUBSCR 0xb1, // LOAD_FAST 1 - 0x13,0x4b, // LOAD_ATTR '_kids' - 0x14,0x41, // LOAD_METHOD 'append' + 0x13,0x4d, // LOAD_ATTR '_kids' + 0x14,0x43, // LOAD_METHOD 'append' 0xb0, // LOAD_FAST 0 0x36,0x01, // CALL_METHOD 1 0x59, // POP_TOP - 0x12,0x13, // LOAD_GLOBAL '_send' + 0x12,0x14, // LOAD_GLOBAL '_send' 0x83, // LOAD_CONST_SMALL_INT 3 0xb0, // LOAD_FAST 0 - 0x13,0x43, // LOAD_ATTR 'id' + 0x13,0x45, // LOAD_ATTR 'id' 0xb1, // LOAD_FAST 1 - 0x13,0x43, // LOAD_ATTR 'id' + 0x13,0x45, // LOAD_ATTR 'id' 0xb2, // LOAD_FAST 2 0xb3, // LOAD_FAST 3 0xb4, // LOAD_FAST 4 @@ -10835,7 +10905,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui__Widget___init__ = { .n_pos_args = 9, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 63, + .qstr_block_name_idx = 65, .line_info = fun_data_tdui__Widget___init__ + 21, .line_info_top = fun_data_tdui__Widget___init__ + 21, .opcodes = fun_data_tdui__Widget___init__ + 21, @@ -10851,21 +10921,21 @@ static const mp_raw_code_truncated_t proto_fun_tdui__Widget___init__ = { // frozen bytecode for file tdui.py, scope tdui__Widget__req static const byte fun_data_tdui__Widget__req[40] = { 0xe9,0x85,0x01,0x14, // prelude - 0x61,0x81,0x1f,0x81,0x06,0x81,0x08,0x81,0x09,0x36, // names: _req, self, op, a, b, text + 0x63,0x81,0x2c,0x81,0x11,0x81,0x13,0x81,0x14,0x38, // names: _req, self, op, a, b, text // code info 0xb0, // LOAD_FAST 0 - 0x13,0x40, // LOAD_ATTR 'win' - 0x13,0x47, // LOAD_ATTR 'is_open' + 0x13,0x42, // LOAD_ATTR 'win' + 0x13,0x49, // LOAD_ATTR 'is_open' 0x44,0x51, // POP_JUMP_IF_FALSE 17 - 0x12,0x13, // LOAD_GLOBAL '_send' + 0x12,0x14, // LOAD_GLOBAL '_send' 0xb1, // LOAD_FAST 1 0xb0, // LOAD_FAST 0 - 0x13,0x43, // LOAD_ATTR 'id' + 0x13,0x45, // LOAD_ATTR 'id' 0x80, // LOAD_CONST_SMALL_INT 0 0x80, // LOAD_CONST_SMALL_INT 0 0xb2, // LOAD_FAST 2 0xb3, // LOAD_FAST 3 - 0x10,0x36, // LOAD_CONST_STRING 'text' + 0x10,0x38, // LOAD_CONST_STRING 'text' 0xb4, // LOAD_FAST 4 0x34,0x82,0x06, // CALL_FUNCTION 262 0x59, // POP_TOP @@ -10895,7 +10965,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui__Widget__req = { .n_pos_args = 5, .n_kwonly_args = 0, .n_def_pos_args = 3, - .qstr_block_name_idx = 97, + .qstr_block_name_idx = 99, .line_info = fun_data_tdui__Widget__req + 14, .line_info_top = fun_data_tdui__Widget__req + 14, .opcodes = fun_data_tdui__Widget__req + 14, @@ -10911,10 +10981,10 @@ static const mp_raw_code_truncated_t proto_fun_tdui__Widget__req = { // frozen bytecode for file tdui.py, scope tdui__Widget_text static const byte fun_data_tdui__Widget_text[9] = { 0x09,0x06, // prelude - 0x36,0x81,0x1f, // names: text, self + 0x38,0x81,0x2c, // names: text, self // code info 0xb0, // LOAD_FAST 0 - 0x13,0x5f, // LOAD_ATTR '_text' + 0x13,0x61, // LOAD_ATTR '_text' 0x63, // RETURN_VALUE }; #if MICROPY_PERSISTENT_CODE_SAVE @@ -10940,7 +11010,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui__Widget_text = { .n_pos_args = 1, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 54, + .qstr_block_name_idx = 56, .line_info = fun_data_tdui__Widget_text + 5, .line_info_top = fun_data_tdui__Widget_text + 5, .opcodes = fun_data_tdui__Widget_text + 5, @@ -10956,19 +11026,19 @@ static const mp_raw_code_truncated_t proto_fun_tdui__Widget_text = { // frozen bytecode for file tdui.py, scope tdui__Widget_text2 static const byte fun_data_tdui__Widget_text2[31] = { 0x32,0x0a, // prelude - 0x36,0x81,0x1f,0x81,0x27, // names: text, self, t + 0x38,0x81,0x2c,0x81,0x34, // names: text, self, t // code info - 0x12,0x81,0x26, // LOAD_GLOBAL 'str' + 0x12,0x81,0x33, // LOAD_GLOBAL 'str' 0xb1, // LOAD_FAST 1 0x34,0x01, // CALL_FUNCTION 1 0xb0, // LOAD_FAST 0 - 0x18,0x5f, // STORE_ATTR '_text' + 0x18,0x61, // STORE_ATTR '_text' 0xb0, // LOAD_FAST 0 - 0x14,0x61, // LOAD_METHOD '_req' + 0x14,0x63, // LOAD_METHOD '_req' 0x84, // LOAD_CONST_SMALL_INT 4 - 0x10,0x36, // LOAD_CONST_STRING 'text' + 0x10,0x38, // LOAD_CONST_STRING 'text' 0xb0, // LOAD_FAST 0 - 0x13,0x5f, // LOAD_ATTR '_text' + 0x13,0x61, // LOAD_ATTR '_text' 0x36,0x82,0x01, // CALL_METHOD 257 0x59, // POP_TOP 0x51, // LOAD_CONST_NONE @@ -10997,7 +11067,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui__Widget_text2 = { .n_pos_args = 2, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 54, + .qstr_block_name_idx = 56, .line_info = fun_data_tdui__Widget_text2 + 7, .line_info_top = fun_data_tdui__Widget_text2 + 7, .opcodes = fun_data_tdui__Widget_text2 + 7, @@ -11013,10 +11083,10 @@ static const mp_raw_code_truncated_t proto_fun_tdui__Widget_text2 = { // frozen bytecode for file tdui.py, scope tdui__Widget_visible static const byte fun_data_tdui__Widget_visible[9] = { 0x09,0x06, // prelude - 0x62,0x81,0x1f, // names: visible, self + 0x64,0x81,0x2c, // names: visible, self // code info 0xb0, // LOAD_FAST 0 - 0x13,0x60, // LOAD_ATTR '_visible' + 0x13,0x62, // LOAD_ATTR '_visible' 0x63, // RETURN_VALUE }; #if MICROPY_PERSISTENT_CODE_SAVE @@ -11042,7 +11112,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui__Widget_visible = { .n_pos_args = 1, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 98, + .qstr_block_name_idx = 100, .line_info = fun_data_tdui__Widget_visible + 5, .line_info_top = fun_data_tdui__Widget_visible + 5, .opcodes = fun_data_tdui__Widget_visible + 5, @@ -11058,15 +11128,15 @@ static const mp_raw_code_truncated_t proto_fun_tdui__Widget_visible = { // frozen bytecode for file tdui.py, scope tdui__Widget_visible2 static const byte fun_data_tdui__Widget_visible2[32] = { 0x2a,0x0a, // prelude - 0x62,0x81,0x1f,0x81,0x29, // names: visible, self, v + 0x64,0x81,0x2c,0x81,0x36, // names: visible, self, v // code info - 0x12,0x81,0x2a, // LOAD_GLOBAL 'bool' + 0x12,0x81,0x37, // LOAD_GLOBAL 'bool' 0xb1, // LOAD_FAST 1 0x34,0x01, // CALL_FUNCTION 1 0xb0, // LOAD_FAST 0 - 0x18,0x60, // STORE_ATTR '_visible' + 0x18,0x62, // STORE_ATTR '_visible' 0xb0, // LOAD_FAST 0 - 0x14,0x61, // LOAD_METHOD '_req' + 0x14,0x63, // LOAD_METHOD '_req' 0x86, // LOAD_CONST_SMALL_INT 6 0xb1, // LOAD_FAST 1 0x44,0x43, // POP_JUMP_IF_FALSE 3 @@ -11101,7 +11171,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui__Widget_visible2 = { .n_pos_args = 2, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 98, + .qstr_block_name_idx = 100, .line_info = fun_data_tdui__Widget_visible2 + 7, .line_info_top = fun_data_tdui__Widget_visible2 + 7, .opcodes = fun_data_tdui__Widget_visible2 + 7, @@ -11117,10 +11187,10 @@ static const mp_raw_code_truncated_t proto_fun_tdui__Widget_visible2 = { // frozen bytecode for file tdui.py, scope tdui__Widget_color static const byte fun_data_tdui__Widget_color[22] = { 0xbb,0x80,0x01,0x0e, // prelude - 0x63,0x81,0x1f,0x81,0x2b,0x81,0x2c, // names: color, self, fg, bg + 0x65,0x81,0x2c,0x81,0x38,0x81,0x39, // names: color, self, fg, bg // code info 0xb0, // LOAD_FAST 0 - 0x14,0x61, // LOAD_METHOD '_req' + 0x14,0x63, // LOAD_METHOD '_req' 0x87, // LOAD_CONST_SMALL_INT 7 0xb1, // LOAD_FAST 1 0xb2, // LOAD_FAST 2 @@ -11152,7 +11222,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui__Widget_color = { .n_pos_args = 3, .n_kwonly_args = 0, .n_def_pos_args = 2, - .qstr_block_name_idx = 99, + .qstr_block_name_idx = 101, .line_info = fun_data_tdui__Widget_color + 11, .line_info_top = fun_data_tdui__Widget_color + 11, .opcodes = fun_data_tdui__Widget_color + 11, @@ -11168,10 +11238,10 @@ static const mp_raw_code_truncated_t proto_fun_tdui__Widget_color = { // frozen bytecode for file tdui.py, scope tdui__Widget_focus static const byte fun_data_tdui__Widget_focus[14] = { 0x19,0x06, // prelude - 0x4d,0x81,0x1f, // names: focus, self + 0x4f,0x81,0x2c, // names: focus, self // code info 0xb0, // LOAD_FAST 0 - 0x14,0x61, // LOAD_METHOD '_req' + 0x14,0x63, // LOAD_METHOD '_req' 0x88, // LOAD_CONST_SMALL_INT 8 0x36,0x01, // CALL_METHOD 1 0x59, // POP_TOP @@ -11201,7 +11271,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui__Widget_focus = { .n_pos_args = 1, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 77, + .qstr_block_name_idx = 79, .line_info = fun_data_tdui__Widget_focus + 5, .line_info_top = fun_data_tdui__Widget_focus + 5, .opcodes = fun_data_tdui__Widget_focus + 5, @@ -11217,7 +11287,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui__Widget_focus = { // frozen bytecode for file tdui.py, scope tdui__Widget__event static const byte fun_data_tdui__Widget__event[20] = { 0xbb,0x04,0x1e, // prelude - 0x2a,0x81,0x1f,0x81,0x06,0x81,0x08,0x81,0x09,0x81,0x0a,0x81,0x0b,0x81,0x27, // names: _event, self, op, a, b, c, d, t + 0x2c,0x81,0x2c,0x81,0x11,0x81,0x13,0x81,0x14,0x81,0x15,0x81,0x16,0x81,0x34, // names: _event, self, op, a, b, c, d, t // code info 0x51, // LOAD_CONST_NONE 0x63, // RETURN_VALUE @@ -11245,7 +11315,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui__Widget__event = { .n_pos_args = 7, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 42, + .qstr_block_name_idx = 44, .line_info = fun_data_tdui__Widget__event + 18, .line_info_top = fun_data_tdui__Widget__event + 18, .opcodes = fun_data_tdui__Widget__event + 18, @@ -11291,7 +11361,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui__Widget = { .n_pos_args = 0, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 8, + .qstr_block_name_idx = 9, .line_info = fun_data_tdui__Widget + 3, .line_info_top = fun_data_tdui__Widget + 3, .opcodes = fun_data_tdui__Widget + 3, @@ -11304,15 +11374,15 @@ static const mp_raw_code_truncated_t proto_fun_tdui__Widget = { // frozen bytecode for file tdui.py, scope tdui_Label static const byte fun_data_tdui_Label[23] = { 0x08,0x03, // prelude - 0x09, // names: Label + 0x0a, // names: Label 0x00, // code info - 0x11,0x81,0x12, // LOAD_NAME '__name__' - 0x16,0x81,0x13, // STORE_NAME '__module__' - 0x10,0x09, // LOAD_CONST_STRING 'Label' - 0x16,0x81,0x14, // STORE_NAME '__qualname__' + 0x11,0x81,0x1d, // LOAD_NAME '__name__' + 0x16,0x81,0x1e, // STORE_NAME '__module__' + 0x10,0x0a, // LOAD_CONST_STRING 'Label' + 0x16,0x81,0x1f, // STORE_NAME '__qualname__' 0xb0, // LOAD_FAST 0 0x20,0x00,0x01, // MAKE_CLOSURE 0 - 0x16,0x3f, // STORE_NAME '__init__' + 0x16,0x41, // STORE_NAME '__init__' 0xb0, // LOAD_FAST 0 0x63, // RETURN_VALUE }; @@ -11320,12 +11390,12 @@ static const byte fun_data_tdui_Label[23] = { // frozen bytecode for file tdui.py, scope tdui_Label___init__ static const byte fun_data_tdui_Label___init__[41] = { 0x8b,0x14,0x18, // prelude - 0x3f,0x81,0x2d,0x81,0x1f,0x40,0x81,0x22,0x81,0x23,0x36,0x45, // names: __init__, *, self, win, x, y, text, width + 0x41,0x81,0x3a,0x81,0x2c,0x42,0x81,0x2f,0x81,0x30,0x38,0x47, // names: __init__, *, self, win, x, y, text, width // code info - 0x12,0x81,0x2e, // LOAD_GLOBAL 'super' + 0x12,0x81,0x3b, // LOAD_GLOBAL 'super' 0x25,0x00, // LOAD_DEREF 0 0xb1, // LOAD_FAST 1 - 0x15,0x3f, // LOAD_SUPER_METHOD '__init__' + 0x15,0x41, // LOAD_SUPER_METHOD '__init__' 0xb2, // LOAD_FAST 2 0x81, // LOAD_CONST_SMALL_INT 1 0xb3, // LOAD_FAST 3 @@ -11333,7 +11403,7 @@ static const byte fun_data_tdui_Label___init__[41] = { 0xb6, // LOAD_FAST 6 0x80, // LOAD_CONST_SMALL_INT 0 0x80, // LOAD_CONST_SMALL_INT 0 - 0x12,0x81,0x26, // LOAD_GLOBAL 'str' + 0x12,0x81,0x33, // LOAD_GLOBAL 'str' 0xb5, // LOAD_FAST 5 0x34,0x01, // CALL_FUNCTION 1 0x36,0x08, // CALL_METHOD 8 @@ -11364,7 +11434,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Label___init__ = { .n_pos_args = 7, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 63, + .qstr_block_name_idx = 65, .line_info = fun_data_tdui_Label___init__ + 15, .line_info_top = fun_data_tdui_Label___init__ + 15, .opcodes = fun_data_tdui_Label___init__ + 15, @@ -11402,7 +11472,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Label = { .n_pos_args = 0, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 9, + .qstr_block_name_idx = 10, .line_info = fun_data_tdui_Label + 3, .line_info_top = fun_data_tdui_Label + 3, .opcodes = fun_data_tdui_Label + 4, @@ -11415,17 +11485,17 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Label = { // frozen bytecode for file tdui.py, scope tdui_Button static const byte fun_data_tdui_Button[27] = { 0x08,0x03, // prelude - 0x0a, // names: Button + 0x0b, // names: Button 0x00, // code info - 0x11,0x81,0x12, // LOAD_NAME '__name__' - 0x16,0x81,0x13, // STORE_NAME '__module__' - 0x10,0x0a, // LOAD_CONST_STRING 'Button' - 0x16,0x81,0x14, // STORE_NAME '__qualname__' + 0x11,0x81,0x1d, // LOAD_NAME '__name__' + 0x16,0x81,0x1e, // STORE_NAME '__module__' + 0x10,0x0b, // LOAD_CONST_STRING 'Button' + 0x16,0x81,0x1f, // STORE_NAME '__qualname__' 0xb0, // LOAD_FAST 0 0x20,0x00,0x01, // MAKE_CLOSURE 0 - 0x16,0x3f, // STORE_NAME '__init__' + 0x16,0x41, // STORE_NAME '__init__' 0x32,0x01, // MAKE_FUNCTION 1 - 0x16,0x2a, // STORE_NAME '_event' + 0x16,0x2c, // STORE_NAME '_event' 0xb0, // LOAD_FAST 0 0x63, // RETURN_VALUE }; @@ -11433,15 +11503,15 @@ static const byte fun_data_tdui_Button[27] = { // frozen bytecode for file tdui.py, scope tdui_Button___init__ static const byte fun_data_tdui_Button___init__[45] = { 0x8b,0x14,0x18, // prelude - 0x3f,0x81,0x2d,0x81,0x1f,0x40,0x81,0x22,0x81,0x23,0x36,0x64, // names: __init__, *, self, win, x, y, text, on_click + 0x41,0x81,0x3a,0x81,0x2c,0x42,0x81,0x2f,0x81,0x30,0x38,0x66, // names: __init__, *, self, win, x, y, text, on_click // code info 0xb6, // LOAD_FAST 6 0xb1, // LOAD_FAST 1 - 0x18,0x64, // STORE_ATTR 'on_click' - 0x12,0x81,0x2e, // LOAD_GLOBAL 'super' + 0x18,0x66, // STORE_ATTR 'on_click' + 0x12,0x81,0x3b, // LOAD_GLOBAL 'super' 0x25,0x00, // LOAD_DEREF 0 0xb1, // LOAD_FAST 1 - 0x15,0x3f, // LOAD_SUPER_METHOD '__init__' + 0x15,0x41, // LOAD_SUPER_METHOD '__init__' 0xb2, // LOAD_FAST 2 0x82, // LOAD_CONST_SMALL_INT 2 0xb3, // LOAD_FAST 3 @@ -11449,7 +11519,7 @@ static const byte fun_data_tdui_Button___init__[45] = { 0x80, // LOAD_CONST_SMALL_INT 0 0x80, // LOAD_CONST_SMALL_INT 0 0x80, // LOAD_CONST_SMALL_INT 0 - 0x12,0x81,0x26, // LOAD_GLOBAL 'str' + 0x12,0x81,0x33, // LOAD_GLOBAL 'str' 0xb5, // LOAD_FAST 5 0x34,0x01, // CALL_FUNCTION 1 0x36,0x08, // CALL_METHOD 8 @@ -11480,7 +11550,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Button___init__ = { .n_pos_args = 7, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 63, + .qstr_block_name_idx = 65, .line_info = fun_data_tdui_Button___init__ + 15, .line_info_top = fun_data_tdui_Button___init__ + 15, .opcodes = fun_data_tdui_Button___init__ + 15, @@ -11496,17 +11566,17 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Button___init__ = { // frozen bytecode for file tdui.py, scope tdui_Button__event static const byte fun_data_tdui_Button__event[37] = { 0xcb,0x04,0x1e, // prelude - 0x2a,0x81,0x1f,0x81,0x06,0x81,0x08,0x81,0x09,0x81,0x0a,0x81,0x0b,0x81,0x27, // names: _event, self, op, a, b, c, d, t + 0x2c,0x81,0x2c,0x81,0x11,0x81,0x13,0x81,0x14,0x81,0x15,0x81,0x16,0x81,0x34, // names: _event, self, op, a, b, c, d, t // code info 0xb1, // LOAD_FAST 1 0x81, // LOAD_CONST_SMALL_INT 1 0xd9, // BINARY_OP 2 __eq__ 0x44,0x4c, // POP_JUMP_IF_FALSE 12 0xb0, // LOAD_FAST 0 - 0x13,0x64, // LOAD_ATTR 'on_click' + 0x13,0x66, // LOAD_ATTR 'on_click' 0x44,0x47, // POP_JUMP_IF_FALSE 7 0xb0, // LOAD_FAST 0 - 0x14,0x64, // LOAD_METHOD 'on_click' + 0x14,0x66, // LOAD_METHOD 'on_click' 0xb0, // LOAD_FAST 0 0x36,0x01, // CALL_METHOD 1 0x59, // POP_TOP @@ -11536,7 +11606,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Button__event = { .n_pos_args = 7, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 42, + .qstr_block_name_idx = 44, .line_info = fun_data_tdui_Button__event + 18, .line_info_top = fun_data_tdui_Button__event + 18, .opcodes = fun_data_tdui_Button__event + 18, @@ -11575,7 +11645,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Button = { .n_pos_args = 0, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 10, + .qstr_block_name_idx = 11, .line_info = fun_data_tdui_Button + 3, .line_info_top = fun_data_tdui_Button + 3, .opcodes = fun_data_tdui_Button + 4, @@ -11588,26 +11658,26 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Button = { // frozen bytecode for file tdui.py, scope tdui_Checkbox static const byte fun_data_tdui_Checkbox[46] = { 0x10,0x03, // prelude - 0x0b, // names: Checkbox + 0x0c, // names: Checkbox 0x00, // code info - 0x11,0x81,0x12, // LOAD_NAME '__name__' - 0x16,0x81,0x13, // STORE_NAME '__module__' - 0x10,0x0b, // LOAD_CONST_STRING 'Checkbox' - 0x16,0x81,0x14, // STORE_NAME '__qualname__' + 0x11,0x81,0x1d, // LOAD_NAME '__name__' + 0x16,0x81,0x1e, // STORE_NAME '__module__' + 0x10,0x0c, // LOAD_CONST_STRING 'Checkbox' + 0x16,0x81,0x1f, // STORE_NAME '__qualname__' 0xb0, // LOAD_FAST 0 0x20,0x00,0x01, // MAKE_CLOSURE 0 - 0x16,0x3f, // STORE_NAME '__init__' - 0x11,0x81,0x15, // LOAD_NAME 'property' + 0x16,0x41, // STORE_NAME '__init__' + 0x11,0x81,0x20, // LOAD_NAME 'property' 0x32,0x01, // MAKE_FUNCTION 1 0x34,0x01, // CALL_FUNCTION 1 - 0x16,0x67, // STORE_NAME 'checked' - 0x11,0x67, // LOAD_NAME 'checked' - 0x13,0x1b, // LOAD_ATTR 'setter' + 0x16,0x69, // STORE_NAME 'checked' + 0x11,0x69, // LOAD_NAME 'checked' + 0x13,0x1c, // LOAD_ATTR 'setter' 0x32,0x02, // MAKE_FUNCTION 2 0x34,0x01, // CALL_FUNCTION 1 - 0x16,0x67, // STORE_NAME 'checked' + 0x16,0x69, // STORE_NAME 'checked' 0x32,0x03, // MAKE_FUNCTION 3 - 0x16,0x2a, // STORE_NAME '_event' + 0x16,0x2c, // STORE_NAME '_event' 0xb0, // LOAD_FAST 0 0x63, // RETURN_VALUE }; @@ -11615,20 +11685,20 @@ static const byte fun_data_tdui_Checkbox[46] = { // frozen bytecode for file tdui.py, scope tdui_Checkbox___init__ static const byte fun_data_tdui_Checkbox___init__[62] = { 0x90,0x90,0x04,0x1a, // prelude - 0x3f,0x81,0x2d,0x81,0x1f,0x40,0x81,0x22,0x81,0x23,0x36,0x67,0x66, // names: __init__, *, self, win, x, y, text, checked, on_change + 0x41,0x81,0x3a,0x81,0x2c,0x42,0x81,0x2f,0x81,0x30,0x38,0x69,0x68, // names: __init__, *, self, win, x, y, text, checked, on_change // code info - 0x12,0x81,0x2a, // LOAD_GLOBAL 'bool' + 0x12,0x81,0x37, // LOAD_GLOBAL 'bool' 0xb6, // LOAD_FAST 6 0x34,0x01, // CALL_FUNCTION 1 0xb1, // LOAD_FAST 1 - 0x18,0x65, // STORE_ATTR '_checked' + 0x18,0x67, // STORE_ATTR '_checked' 0xb7, // LOAD_FAST 7 0xb1, // LOAD_FAST 1 - 0x18,0x66, // STORE_ATTR 'on_change' - 0x12,0x81,0x2e, // LOAD_GLOBAL 'super' + 0x18,0x68, // STORE_ATTR 'on_change' + 0x12,0x81,0x3b, // LOAD_GLOBAL 'super' 0x25,0x00, // LOAD_DEREF 0 0xb1, // LOAD_FAST 1 - 0x15,0x3f, // LOAD_SUPER_METHOD '__init__' + 0x15,0x41, // LOAD_SUPER_METHOD '__init__' 0xb2, // LOAD_FAST 2 0x83, // LOAD_CONST_SMALL_INT 3 0xb3, // LOAD_FAST 3 @@ -11640,7 +11710,7 @@ static const byte fun_data_tdui_Checkbox___init__[62] = { 0x81, // LOAD_CONST_SMALL_INT 1 0x42,0x41, // JUMP 1 0x80, // LOAD_CONST_SMALL_INT 0 - 0x12,0x81,0x26, // LOAD_GLOBAL 'str' + 0x12,0x81,0x33, // LOAD_GLOBAL 'str' 0xb5, // LOAD_FAST 5 0x34,0x01, // CALL_FUNCTION 1 0x36,0x08, // CALL_METHOD 8 @@ -11671,7 +11741,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Checkbox___init__ = { .n_pos_args = 8, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 63, + .qstr_block_name_idx = 65, .line_info = fun_data_tdui_Checkbox___init__ + 17, .line_info_top = fun_data_tdui_Checkbox___init__ + 17, .opcodes = fun_data_tdui_Checkbox___init__ + 17, @@ -11687,10 +11757,10 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Checkbox___init__ = { // frozen bytecode for file tdui.py, scope tdui_Checkbox_checked static const byte fun_data_tdui_Checkbox_checked[9] = { 0x09,0x06, // prelude - 0x67,0x81,0x1f, // names: checked, self + 0x69,0x81,0x2c, // names: checked, self // code info 0xb0, // LOAD_FAST 0 - 0x13,0x65, // LOAD_ATTR '_checked' + 0x13,0x67, // LOAD_ATTR '_checked' 0x63, // RETURN_VALUE }; #if MICROPY_PERSISTENT_CODE_SAVE @@ -11716,7 +11786,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Checkbox_checked = { .n_pos_args = 1, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 103, + .qstr_block_name_idx = 105, .line_info = fun_data_tdui_Checkbox_checked + 5, .line_info_top = fun_data_tdui_Checkbox_checked + 5, .opcodes = fun_data_tdui_Checkbox_checked + 5, @@ -11732,15 +11802,15 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Checkbox_checked = { // frozen bytecode for file tdui.py, scope tdui_Checkbox_checked2 static const byte fun_data_tdui_Checkbox_checked2[32] = { 0x2a,0x0a, // prelude - 0x67,0x81,0x1f,0x81,0x29, // names: checked, self, v + 0x69,0x81,0x2c,0x81,0x36, // names: checked, self, v // code info - 0x12,0x81,0x2a, // LOAD_GLOBAL 'bool' + 0x12,0x81,0x37, // LOAD_GLOBAL 'bool' 0xb1, // LOAD_FAST 1 0x34,0x01, // CALL_FUNCTION 1 0xb0, // LOAD_FAST 0 - 0x18,0x65, // STORE_ATTR '_checked' + 0x18,0x67, // STORE_ATTR '_checked' 0xb0, // LOAD_FAST 0 - 0x14,0x61, // LOAD_METHOD '_req' + 0x14,0x63, // LOAD_METHOD '_req' 0x85, // LOAD_CONST_SMALL_INT 5 0xb1, // LOAD_FAST 1 0x44,0x43, // POP_JUMP_IF_FALSE 3 @@ -11775,7 +11845,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Checkbox_checked2 = { .n_pos_args = 2, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 103, + .qstr_block_name_idx = 105, .line_info = fun_data_tdui_Checkbox_checked2 + 7, .line_info_top = fun_data_tdui_Checkbox_checked2 + 7, .opcodes = fun_data_tdui_Checkbox_checked2 + 7, @@ -11791,22 +11861,22 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Checkbox_checked2 = { // frozen bytecode for file tdui.py, scope tdui_Checkbox__event static const byte fun_data_tdui_Checkbox__event[46] = { 0xcb,0x04,0x1e, // prelude - 0x2a,0x81,0x1f,0x81,0x06,0x81,0x08,0x81,0x09,0x81,0x0a,0x81,0x0b,0x81,0x27, // names: _event, self, op, a, b, c, d, t + 0x2c,0x81,0x2c,0x81,0x11,0x81,0x13,0x81,0x14,0x81,0x15,0x81,0x16,0x81,0x34, // names: _event, self, op, a, b, c, d, t // code info 0xb1, // LOAD_FAST 1 0x82, // LOAD_CONST_SMALL_INT 2 0xd9, // BINARY_OP 2 __eq__ 0x44,0x55, // POP_JUMP_IF_FALSE 21 - 0x12,0x81,0x2a, // LOAD_GLOBAL 'bool' + 0x12,0x81,0x37, // LOAD_GLOBAL 'bool' 0xb2, // LOAD_FAST 2 0x34,0x01, // CALL_FUNCTION 1 0xb0, // LOAD_FAST 0 - 0x18,0x65, // STORE_ATTR '_checked' + 0x18,0x67, // STORE_ATTR '_checked' 0xb0, // LOAD_FAST 0 - 0x13,0x66, // LOAD_ATTR 'on_change' + 0x13,0x68, // LOAD_ATTR 'on_change' 0x44,0x47, // POP_JUMP_IF_FALSE 7 0xb0, // LOAD_FAST 0 - 0x14,0x66, // LOAD_METHOD 'on_change' + 0x14,0x68, // LOAD_METHOD 'on_change' 0xb0, // LOAD_FAST 0 0x36,0x01, // CALL_METHOD 1 0x59, // POP_TOP @@ -11836,7 +11906,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Checkbox__event = { .n_pos_args = 7, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 42, + .qstr_block_name_idx = 44, .line_info = fun_data_tdui_Checkbox__event + 18, .line_info_top = fun_data_tdui_Checkbox__event + 18, .opcodes = fun_data_tdui_Checkbox__event + 18, @@ -11877,7 +11947,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Checkbox = { .n_pos_args = 0, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 11, + .qstr_block_name_idx = 12, .line_info = fun_data_tdui_Checkbox + 3, .line_info_top = fun_data_tdui_Checkbox + 3, .opcodes = fun_data_tdui_Checkbox + 4, @@ -11890,17 +11960,17 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Checkbox = { // frozen bytecode for file tdui.py, scope tdui_Textbox static const byte fun_data_tdui_Textbox[27] = { 0x08,0x03, // prelude - 0x0c, // names: Textbox + 0x0d, // names: Textbox 0x00, // code info - 0x11,0x81,0x12, // LOAD_NAME '__name__' - 0x16,0x81,0x13, // STORE_NAME '__module__' - 0x10,0x0c, // LOAD_CONST_STRING 'Textbox' - 0x16,0x81,0x14, // STORE_NAME '__qualname__' + 0x11,0x81,0x1d, // LOAD_NAME '__name__' + 0x16,0x81,0x1e, // STORE_NAME '__module__' + 0x10,0x0d, // LOAD_CONST_STRING 'Textbox' + 0x16,0x81,0x1f, // STORE_NAME '__qualname__' 0xb0, // LOAD_FAST 0 0x20,0x00,0x01, // MAKE_CLOSURE 0 - 0x16,0x3f, // STORE_NAME '__init__' + 0x16,0x41, // STORE_NAME '__init__' 0x32,0x01, // MAKE_FUNCTION 1 - 0x16,0x2a, // STORE_NAME '_event' + 0x16,0x2c, // STORE_NAME '_event' 0xb0, // LOAD_FAST 0 0x63, // RETURN_VALUE }; @@ -11908,18 +11978,18 @@ static const byte fun_data_tdui_Textbox[27] = { // frozen bytecode for file tdui.py, scope tdui_Textbox___init__ static const byte fun_data_tdui_Textbox___init__[60] = { 0xa2,0x90,0x04,0x20, // prelude - 0x3f,0x81,0x2d,0x81,0x1f,0x40,0x81,0x22,0x81,0x23,0x45,0x36,0x81,0x1e,0x68,0x66, // names: __init__, *, self, win, x, y, width, text, secret, on_enter, on_change + 0x41,0x81,0x3a,0x81,0x2c,0x42,0x81,0x2f,0x81,0x30,0x47,0x38,0x81,0x2b,0x6a,0x68, // names: __init__, *, self, win, x, y, width, text, secret, on_enter, on_change // code info 0xb8, // LOAD_FAST 8 0xb1, // LOAD_FAST 1 - 0x18,0x68, // STORE_ATTR 'on_enter' + 0x18,0x6a, // STORE_ATTR 'on_enter' 0xb9, // LOAD_FAST 9 0xb1, // LOAD_FAST 1 - 0x18,0x66, // STORE_ATTR 'on_change' - 0x12,0x81,0x2e, // LOAD_GLOBAL 'super' + 0x18,0x68, // STORE_ATTR 'on_change' + 0x12,0x81,0x3b, // LOAD_GLOBAL 'super' 0x25,0x00, // LOAD_DEREF 0 0xb1, // LOAD_FAST 1 - 0x15,0x3f, // LOAD_SUPER_METHOD '__init__' + 0x15,0x41, // LOAD_SUPER_METHOD '__init__' 0xb2, // LOAD_FAST 2 0x84, // LOAD_CONST_SMALL_INT 4 0xb3, // LOAD_FAST 3 @@ -11931,7 +12001,7 @@ static const byte fun_data_tdui_Textbox___init__[60] = { 0x81, // LOAD_CONST_SMALL_INT 1 0x42,0x41, // JUMP 1 0x80, // LOAD_CONST_SMALL_INT 0 - 0x12,0x81,0x26, // LOAD_GLOBAL 'str' + 0x12,0x81,0x33, // LOAD_GLOBAL 'str' 0xb6, // LOAD_FAST 6 0x34,0x01, // CALL_FUNCTION 1 0x36,0x08, // CALL_METHOD 8 @@ -11962,7 +12032,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Textbox___init__ = { .n_pos_args = 10, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 63, + .qstr_block_name_idx = 65, .line_info = fun_data_tdui_Textbox___init__ + 20, .line_info_top = fun_data_tdui_Textbox___init__ + 20, .opcodes = fun_data_tdui_Textbox___init__ + 20, @@ -11978,7 +12048,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Textbox___init__ = { // frozen bytecode for file tdui.py, scope tdui_Textbox__event static const byte fun_data_tdui_Textbox__event[66] = { 0xcb,0x04,0x1e, // prelude - 0x2a,0x81,0x1f,0x81,0x06,0x81,0x08,0x81,0x09,0x81,0x0a,0x81,0x0b,0x81,0x27, // names: _event, self, op, a, b, c, d, t + 0x2c,0x81,0x2c,0x81,0x11,0x81,0x13,0x81,0x14,0x81,0x15,0x81,0x16,0x81,0x34, // names: _event, self, op, a, b, c, d, t // code info 0xb1, // LOAD_FAST 1 0x82, // LOAD_CONST_SMALL_INT 2 @@ -11986,14 +12056,14 @@ static const byte fun_data_tdui_Textbox__event[66] = { 0x44,0x56, // POP_JUMP_IF_FALSE 22 0xb6, // LOAD_FAST 6 0x45,0x02, // JUMP_IF_TRUE_OR_POP 2 - 0x10,0x11, // LOAD_CONST_STRING '' + 0x10,0x12, // LOAD_CONST_STRING '' 0xb0, // LOAD_FAST 0 - 0x18,0x5f, // STORE_ATTR '_text' + 0x18,0x61, // STORE_ATTR '_text' 0xb0, // LOAD_FAST 0 - 0x13,0x66, // LOAD_ATTR 'on_change' + 0x13,0x68, // LOAD_ATTR 'on_change' 0x44,0x47, // POP_JUMP_IF_FALSE 7 0xb0, // LOAD_FAST 0 - 0x14,0x66, // LOAD_METHOD 'on_change' + 0x14,0x68, // LOAD_METHOD 'on_change' 0xb0, // LOAD_FAST 0 0x36,0x01, // CALL_METHOD 1 0x59, // POP_TOP @@ -12003,10 +12073,10 @@ static const byte fun_data_tdui_Textbox__event[66] = { 0xd9, // BINARY_OP 2 __eq__ 0x44,0x4e, // POP_JUMP_IF_FALSE 14 0xb0, // LOAD_FAST 0 - 0x13,0x68, // LOAD_ATTR 'on_enter' + 0x13,0x6a, // LOAD_ATTR 'on_enter' 0x44,0x49, // POP_JUMP_IF_FALSE 9 0xb0, // LOAD_FAST 0 - 0x14,0x68, // LOAD_METHOD 'on_enter' + 0x14,0x6a, // LOAD_METHOD 'on_enter' 0xb0, // LOAD_FAST 0 0x36,0x01, // CALL_METHOD 1 0x59, // POP_TOP @@ -12037,7 +12107,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Textbox__event = { .n_pos_args = 7, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 42, + .qstr_block_name_idx = 44, .line_info = fun_data_tdui_Textbox__event + 18, .line_info_top = fun_data_tdui_Textbox__event + 18, .opcodes = fun_data_tdui_Textbox__event + 18, @@ -12076,7 +12146,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Textbox = { .n_pos_args = 0, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 12, + .qstr_block_name_idx = 13, .line_info = fun_data_tdui_Textbox + 3, .line_info_top = fun_data_tdui_Textbox + 3, .opcodes = fun_data_tdui_Textbox + 4, @@ -12089,24 +12159,24 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Textbox = { // frozen bytecode for file tdui.py, scope tdui_Progress static const byte fun_data_tdui_Progress[42] = { 0x10,0x03, // prelude - 0x0d, // names: Progress + 0x0e, // names: Progress 0x00, // code info - 0x11,0x81,0x12, // LOAD_NAME '__name__' - 0x16,0x81,0x13, // STORE_NAME '__module__' - 0x10,0x0d, // LOAD_CONST_STRING 'Progress' - 0x16,0x81,0x14, // STORE_NAME '__qualname__' + 0x11,0x81,0x1d, // LOAD_NAME '__name__' + 0x16,0x81,0x1e, // STORE_NAME '__module__' + 0x10,0x0e, // LOAD_CONST_STRING 'Progress' + 0x16,0x81,0x1f, // STORE_NAME '__qualname__' 0xb0, // LOAD_FAST 0 0x20,0x00,0x01, // MAKE_CLOSURE 0 - 0x16,0x3f, // STORE_NAME '__init__' - 0x11,0x81,0x15, // LOAD_NAME 'property' + 0x16,0x41, // STORE_NAME '__init__' + 0x11,0x81,0x20, // LOAD_NAME 'property' 0x32,0x01, // MAKE_FUNCTION 1 0x34,0x01, // CALL_FUNCTION 1 - 0x16,0x6a, // STORE_NAME 'value' - 0x11,0x6a, // LOAD_NAME 'value' - 0x13,0x1b, // LOAD_ATTR 'setter' + 0x16,0x6c, // STORE_NAME 'value' + 0x11,0x6c, // LOAD_NAME 'value' + 0x13,0x1c, // LOAD_ATTR 'setter' 0x32,0x02, // MAKE_FUNCTION 2 0x34,0x01, // CALL_FUNCTION 1 - 0x16,0x6a, // STORE_NAME 'value' + 0x16,0x6c, // STORE_NAME 'value' 0xb0, // LOAD_FAST 0 0x63, // RETURN_VALUE }; @@ -12114,15 +12184,15 @@ static const byte fun_data_tdui_Progress[42] = { // frozen bytecode for file tdui.py, scope tdui_Progress___init__ static const byte fun_data_tdui_Progress___init__[41] = { 0x83,0x14,0x18, // prelude - 0x3f,0x81,0x2d,0x81,0x1f,0x40,0x81,0x22,0x81,0x23,0x45,0x6a, // names: __init__, *, self, win, x, y, width, value + 0x41,0x81,0x3a,0x81,0x2c,0x42,0x81,0x2f,0x81,0x30,0x47,0x6c, // names: __init__, *, self, win, x, y, width, value // code info 0xb6, // LOAD_FAST 6 0xb1, // LOAD_FAST 1 - 0x18,0x69, // STORE_ATTR '_value' - 0x12,0x81,0x2e, // LOAD_GLOBAL 'super' + 0x18,0x6b, // STORE_ATTR '_value' + 0x12,0x81,0x3b, // LOAD_GLOBAL 'super' 0x25,0x00, // LOAD_DEREF 0 0xb1, // LOAD_FAST 1 - 0x15,0x3f, // LOAD_SUPER_METHOD '__init__' + 0x15,0x41, // LOAD_SUPER_METHOD '__init__' 0xb2, // LOAD_FAST 2 0x85, // LOAD_CONST_SMALL_INT 5 0xb3, // LOAD_FAST 3 @@ -12130,7 +12200,7 @@ static const byte fun_data_tdui_Progress___init__[41] = { 0xb5, // LOAD_FAST 5 0x80, // LOAD_CONST_SMALL_INT 0 0xb6, // LOAD_FAST 6 - 0x10,0x11, // LOAD_CONST_STRING '' + 0x10,0x12, // LOAD_CONST_STRING '' 0x36,0x08, // CALL_METHOD 8 0x59, // POP_TOP 0x51, // LOAD_CONST_NONE @@ -12159,7 +12229,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Progress___init__ = { .n_pos_args = 7, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 63, + .qstr_block_name_idx = 65, .line_info = fun_data_tdui_Progress___init__ + 15, .line_info_top = fun_data_tdui_Progress___init__ + 15, .opcodes = fun_data_tdui_Progress___init__ + 15, @@ -12175,10 +12245,10 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Progress___init__ = { // frozen bytecode for file tdui.py, scope tdui_Progress_value static const byte fun_data_tdui_Progress_value[9] = { 0x09,0x06, // prelude - 0x6a,0x81,0x1f, // names: value, self + 0x6c,0x81,0x2c, // names: value, self // code info 0xb0, // LOAD_FAST 0 - 0x13,0x69, // LOAD_ATTR '_value' + 0x13,0x6b, // LOAD_ATTR '_value' 0x63, // RETURN_VALUE }; #if MICROPY_PERSISTENT_CODE_SAVE @@ -12204,7 +12274,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Progress_value = { .n_pos_args = 1, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 106, + .qstr_block_name_idx = 108, .line_info = fun_data_tdui_Progress_value + 5, .line_info_top = fun_data_tdui_Progress_value + 5, .opcodes = fun_data_tdui_Progress_value + 5, @@ -12220,24 +12290,24 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Progress_value = { // frozen bytecode for file tdui.py, scope tdui_Progress_value2 static const byte fun_data_tdui_Progress_value2[42] = { 0x3a,0x0a, // prelude - 0x6a,0x81,0x1f,0x81,0x29, // names: value, self, v + 0x6c,0x81,0x2c,0x81,0x36, // names: value, self, v // code info - 0x12,0x81,0x18, // LOAD_GLOBAL 'max' + 0x12,0x81,0x25, // LOAD_GLOBAL 'max' 0x80, // LOAD_CONST_SMALL_INT 0 - 0x12,0x81,0x17, // LOAD_GLOBAL 'min' + 0x12,0x81,0x24, // LOAD_GLOBAL 'min' 0x22,0x80,0x64, // LOAD_CONST_SMALL_INT 100 - 0x12,0x81,0x2f, // LOAD_GLOBAL 'int' + 0x12,0x81,0x3c, // LOAD_GLOBAL 'int' 0xb1, // LOAD_FAST 1 0x34,0x01, // CALL_FUNCTION 1 0x34,0x02, // CALL_FUNCTION 2 0x34,0x02, // CALL_FUNCTION 2 0xb0, // LOAD_FAST 0 - 0x18,0x69, // STORE_ATTR '_value' + 0x18,0x6b, // STORE_ATTR '_value' 0xb0, // LOAD_FAST 0 - 0x14,0x61, // LOAD_METHOD '_req' + 0x14,0x63, // LOAD_METHOD '_req' 0x85, // LOAD_CONST_SMALL_INT 5 0xb0, // LOAD_FAST 0 - 0x13,0x69, // LOAD_ATTR '_value' + 0x13,0x6b, // LOAD_ATTR '_value' 0x36,0x02, // CALL_METHOD 2 0x59, // POP_TOP 0x51, // LOAD_CONST_NONE @@ -12266,7 +12336,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Progress_value2 = { .n_pos_args = 2, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 106, + .qstr_block_name_idx = 108, .line_info = fun_data_tdui_Progress_value2 + 7, .line_info_top = fun_data_tdui_Progress_value2 + 7, .opcodes = fun_data_tdui_Progress_value2 + 7, @@ -12306,7 +12376,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Progress = { .n_pos_args = 0, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 13, + .qstr_block_name_idx = 14, .line_info = fun_data_tdui_Progress + 3, .line_info_top = fun_data_tdui_Progress + 3, .opcodes = fun_data_tdui_Progress + 4, @@ -12319,41 +12389,41 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Progress = { // frozen bytecode for file tdui.py, scope tdui_List static const byte fun_data_tdui_List[76] = { 0x10,0x03, // prelude - 0x0e, // names: List + 0x0f, // names: List 0x00, // code info - 0x11,0x81,0x12, // LOAD_NAME '__name__' - 0x16,0x81,0x13, // STORE_NAME '__module__' - 0x10,0x0e, // LOAD_CONST_STRING 'List' - 0x16,0x81,0x14, // STORE_NAME '__qualname__' + 0x11,0x81,0x1d, // LOAD_NAME '__name__' + 0x16,0x81,0x1e, // STORE_NAME '__module__' + 0x10,0x0f, // LOAD_CONST_STRING 'List' + 0x16,0x81,0x1f, // STORE_NAME '__qualname__' 0x82, // LOAD_CONST_SMALL_INT 2 - 0x16,0x56, // STORE_NAME '_n' + 0x16,0x58, // STORE_NAME '_n' 0xb0, // LOAD_FAST 0 0x20,0x00,0x01, // MAKE_CLOSURE 0 - 0x16,0x3f, // STORE_NAME '__init__' - 0x11,0x81,0x15, // LOAD_NAME 'property' + 0x16,0x41, // STORE_NAME '__init__' + 0x11,0x81,0x20, // LOAD_NAME 'property' 0x32,0x01, // MAKE_FUNCTION 1 0x34,0x01, // CALL_FUNCTION 1 - 0x16,0x70, // STORE_NAME 'items' - 0x11,0x70, // LOAD_NAME 'items' - 0x13,0x1b, // LOAD_ATTR 'setter' + 0x16,0x72, // STORE_NAME 'items' + 0x11,0x72, // LOAD_NAME 'items' + 0x13,0x1c, // LOAD_ATTR 'setter' 0x32,0x02, // MAKE_FUNCTION 2 0x34,0x01, // CALL_FUNCTION 1 - 0x16,0x70, // STORE_NAME 'items' + 0x16,0x72, // STORE_NAME 'items' 0x32,0x03, // MAKE_FUNCTION 3 - 0x16,0x41, // STORE_NAME 'append' + 0x16,0x43, // STORE_NAME 'append' 0x32,0x04, // MAKE_FUNCTION 4 - 0x16,0x71, // STORE_NAME '_add' - 0x11,0x81,0x15, // LOAD_NAME 'property' + 0x16,0x73, // STORE_NAME '_add' + 0x11,0x81,0x20, // LOAD_NAME 'property' 0x32,0x05, // MAKE_FUNCTION 5 0x34,0x01, // CALL_FUNCTION 1 - 0x16,0x74, // STORE_NAME 'selected' - 0x11,0x74, // LOAD_NAME 'selected' - 0x13,0x1b, // LOAD_ATTR 'setter' + 0x16,0x76, // STORE_NAME 'selected' + 0x11,0x76, // LOAD_NAME 'selected' + 0x13,0x1c, // LOAD_ATTR 'setter' 0x32,0x06, // MAKE_FUNCTION 6 0x34,0x01, // CALL_FUNCTION 1 - 0x16,0x74, // STORE_NAME 'selected' + 0x16,0x76, // STORE_NAME 'selected' 0x32,0x07, // MAKE_FUNCTION 7 - 0x16,0x2a, // STORE_NAME '_event' + 0x16,0x2c, // STORE_NAME '_event' 0xb0, // LOAD_FAST 0 0x63, // RETURN_VALUE }; @@ -12361,29 +12431,29 @@ static const byte fun_data_tdui_List[76] = { // frozen bytecode for file tdui.py, scope tdui_List___init__ static const byte fun_data_tdui_List___init__[77] = { 0x9a,0x90,0x04,0x22, // prelude - 0x3f,0x81,0x2d,0x81,0x1f,0x40,0x81,0x22,0x81,0x23,0x81,0x20,0x81,0x21,0x70,0x6c,0x6d, // names: __init__, *, self, win, x, y, w, h, items, on_select, on_activate + 0x41,0x81,0x3a,0x81,0x2c,0x42,0x81,0x2f,0x81,0x30,0x81,0x2d,0x81,0x2e,0x72,0x6e,0x6f, // names: __init__, *, self, win, x, y, w, h, items, on_select, on_activate // code info 0xb5, // LOAD_FAST 5 0x81, // LOAD_CONST_SMALL_INT 1 0xd9, // BINARY_OP 2 __eq__ 0x44,0x48, // POP_JUMP_IF_FALSE 8 - 0x12,0x81,0x25, // LOAD_GLOBAL 'ValueError' - 0x10,0x6b, // LOAD_CONST_STRING 'list size' + 0x12,0x81,0x32, // LOAD_GLOBAL 'ValueError' + 0x10,0x6d, // LOAD_CONST_STRING 'list size' 0x34,0x01, // CALL_FUNCTION 1 0x65, // RAISE_OBJ 0xb8, // LOAD_FAST 8 0xb1, // LOAD_FAST 1 - 0x18,0x6c, // STORE_ATTR 'on_select' + 0x18,0x6e, // STORE_ATTR 'on_select' 0xb9, // LOAD_FAST 9 0xb1, // LOAD_FAST 1 - 0x18,0x6d, // STORE_ATTR 'on_activate' + 0x18,0x6f, // STORE_ATTR 'on_activate' 0x80, // LOAD_CONST_SMALL_INT 0 0xb1, // LOAD_FAST 1 - 0x18,0x6e, // STORE_ATTR '_selected' - 0x12,0x81,0x2e, // LOAD_GLOBAL 'super' + 0x18,0x70, // STORE_ATTR '_selected' + 0x12,0x81,0x3b, // LOAD_GLOBAL 'super' 0x25,0x00, // LOAD_DEREF 0 0xb1, // LOAD_FAST 1 - 0x15,0x3f, // LOAD_SUPER_METHOD '__init__' + 0x15,0x41, // LOAD_SUPER_METHOD '__init__' 0xb2, // LOAD_FAST 2 0x86, // LOAD_CONST_SMALL_INT 6 0xb3, // LOAD_FAST 3 @@ -12391,15 +12461,15 @@ static const byte fun_data_tdui_List___init__[77] = { 0xb5, // LOAD_FAST 5 0xb6, // LOAD_FAST 6 0x80, // LOAD_CONST_SMALL_INT 0 - 0x10,0x11, // LOAD_CONST_STRING '' + 0x10,0x12, // LOAD_CONST_STRING '' 0x36,0x08, // CALL_METHOD 8 0x59, // POP_TOP 0x2b,0x00, // BUILD_LIST 0 0xb1, // LOAD_FAST 1 - 0x18,0x6f, // STORE_ATTR '_items' + 0x18,0x71, // STORE_ATTR '_items' 0xb7, // LOAD_FAST 7 0xb1, // LOAD_FAST 1 - 0x18,0x70, // STORE_ATTR 'items' + 0x18,0x72, // STORE_ATTR 'items' 0x51, // LOAD_CONST_NONE 0x63, // RETURN_VALUE }; @@ -12426,7 +12496,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_List___init__ = { .n_pos_args = 10, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 63, + .qstr_block_name_idx = 65, .line_info = fun_data_tdui_List___init__ + 21, .line_info_top = fun_data_tdui_List___init__ + 21, .opcodes = fun_data_tdui_List___init__ + 21, @@ -12442,10 +12512,10 @@ static const mp_raw_code_truncated_t proto_fun_tdui_List___init__ = { // frozen bytecode for file tdui.py, scope tdui_List_items static const byte fun_data_tdui_List_items[9] = { 0x09,0x06, // prelude - 0x70,0x81,0x1f, // names: items, self + 0x72,0x81,0x2c, // names: items, self // code info 0xb0, // LOAD_FAST 0 - 0x13,0x6f, // LOAD_ATTR '_items' + 0x13,0x71, // LOAD_ATTR '_items' 0x63, // RETURN_VALUE }; #if MICROPY_PERSISTENT_CODE_SAVE @@ -12471,7 +12541,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_List_items = { .n_pos_args = 1, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 112, + .qstr_block_name_idx = 114, .line_info = fun_data_tdui_List_items + 5, .line_info_top = fun_data_tdui_List_items + 5, .opcodes = fun_data_tdui_List_items + 5, @@ -12487,22 +12557,22 @@ static const mp_raw_code_truncated_t proto_fun_tdui_List_items = { // frozen bytecode for file tdui.py, scope tdui_List_items2 static const byte fun_data_tdui_List_items2[32] = { 0x22,0x08, // prelude - 0x70,0x81,0x1f,0x70, // names: items, self, items + 0x72,0x81,0x2c,0x72, // names: items, self, items // code info 0x32,0x00, // MAKE_FUNCTION 0 0xb1, // LOAD_FAST 1 0x34,0x01, // CALL_FUNCTION 1 0xb0, // LOAD_FAST 0 - 0x18,0x6f, // STORE_ATTR '_items' + 0x18,0x71, // STORE_ATTR '_items' 0xb0, // LOAD_FAST 0 - 0x14,0x61, // LOAD_METHOD '_req' + 0x14,0x63, // LOAD_METHOD '_req' 0x89, // LOAD_CONST_SMALL_INT 9 0x36,0x01, // CALL_METHOD 1 0x59, // POP_TOP 0xb0, // LOAD_FAST 0 - 0x14,0x71, // LOAD_METHOD '_add' + 0x14,0x73, // LOAD_METHOD '_add' 0xb0, // LOAD_FAST 0 - 0x13,0x6f, // LOAD_ATTR '_items' + 0x13,0x71, // LOAD_ATTR '_items' 0x36,0x01, // CALL_METHOD 1 0x59, // POP_TOP 0x51, // LOAD_CONST_NONE @@ -12510,16 +12580,16 @@ static const byte fun_data_tdui_List_items2[32] = { }; // child of tdui_List_items2 // frozen bytecode for file tdui.py, scope tdui_List_items2__lt_listcomp_gt_ -static const byte fun_data_tdui_List_items2__lt_listcomp_gt_[23] = { - 0x41,0x06, // prelude - 0x7b,0x81,0x2d, // names: , * +static const byte fun_data_tdui_List_items2__lt_listcomp_gt_[24] = { + 0x41,0x08, // prelude + 0x81,0x06,0x81,0x3a, // names: , * // code info 0x2b,0x00, // BUILD_LIST 0 0xb0, // LOAD_FAST 0 0x5f, // GET_ITER_STACK 0x4b,0x0b, // FOR_ITER 11 0xc1, // STORE_FAST 1 - 0x12,0x81,0x26, // LOAD_GLOBAL 'str' + 0x12,0x81,0x33, // LOAD_GLOBAL 'str' 0xb1, // LOAD_FAST 1 0x34,0x01, // CALL_FUNCTION 1 0x2f,0x14, // STORE_COMP 20 @@ -12535,7 +12605,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_List_items2__lt_listcomp_gt_ .fun_data = fun_data_tdui_List_items2__lt_listcomp_gt_, .children = NULL, #if MICROPY_PERSISTENT_CODE_SAVE - .fun_data_len = 23, + .fun_data_len = 24, .n_children = 0, #if MICROPY_EMIT_MACHINE_CODE .prelude_offset = 0, @@ -12549,10 +12619,10 @@ static const mp_raw_code_truncated_t proto_fun_tdui_List_items2__lt_listcomp_gt_ .n_pos_args = 1, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 123, - .line_info = fun_data_tdui_List_items2__lt_listcomp_gt_ + 5, - .line_info_top = fun_data_tdui_List_items2__lt_listcomp_gt_ + 5, - .opcodes = fun_data_tdui_List_items2__lt_listcomp_gt_ + 5, + .qstr_block_name_idx = 134, + .line_info = fun_data_tdui_List_items2__lt_listcomp_gt_ + 6, + .line_info_top = fun_data_tdui_List_items2__lt_listcomp_gt_ + 6, + .opcodes = fun_data_tdui_List_items2__lt_listcomp_gt_ + 6, }, #endif #endif @@ -12587,7 +12657,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_List_items2 = { .n_pos_args = 2, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 112, + .qstr_block_name_idx = 114, .line_info = fun_data_tdui_List_items2 + 6, .line_info_top = fun_data_tdui_List_items2 + 6, .opcodes = fun_data_tdui_List_items2 + 6, @@ -12600,20 +12670,20 @@ static const mp_raw_code_truncated_t proto_fun_tdui_List_items2 = { // frozen bytecode for file tdui.py, scope tdui_List_append static const byte fun_data_tdui_List_append[34] = { 0x22,0x0a, // prelude - 0x41,0x81,0x1f,0x81,0x30, // names: append, self, item + 0x43,0x81,0x2c,0x81,0x3d, // names: append, self, item // code info - 0x12,0x81,0x26, // LOAD_GLOBAL 'str' + 0x12,0x81,0x33, // LOAD_GLOBAL 'str' 0xb1, // LOAD_FAST 1 0x34,0x01, // CALL_FUNCTION 1 0xc1, // STORE_FAST 1 0xb0, // LOAD_FAST 0 - 0x13,0x6f, // LOAD_ATTR '_items' - 0x14,0x41, // LOAD_METHOD 'append' + 0x13,0x71, // LOAD_ATTR '_items' + 0x14,0x43, // LOAD_METHOD 'append' 0xb1, // LOAD_FAST 1 0x36,0x01, // CALL_METHOD 1 0x59, // POP_TOP 0xb0, // LOAD_FAST 0 - 0x14,0x71, // LOAD_METHOD '_add' + 0x14,0x73, // LOAD_METHOD '_add' 0xb1, // LOAD_FAST 1 0x2b,0x01, // BUILD_LIST 1 0x36,0x01, // CALL_METHOD 1 @@ -12644,7 +12714,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_List_append = { .n_pos_args = 2, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 65, + .qstr_block_name_idx = 67, .line_info = fun_data_tdui_List_append + 7, .line_info_top = fun_data_tdui_List_append + 7, .opcodes = fun_data_tdui_List_append + 7, @@ -12660,7 +12730,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_List_append = { // frozen bytecode for file tdui.py, scope tdui_List__add static const byte fun_data_tdui_List__add[108] = { 0x7a,0x08, // prelude - 0x71,0x81,0x1f,0x70, // names: _add, self, items + 0x73,0x81,0x2c,0x72, // names: _add, self, items // code info 0x2b,0x00, // BUILD_LIST 0 0xc2, // STORE_FAST 2 @@ -12671,15 +12741,15 @@ static const byte fun_data_tdui_List__add[108] = { 0x4b,0x47, // FOR_ITER 71 0xc4, // STORE_FAST 4 0xb4, // LOAD_FAST 4 - 0x14,0x72, // LOAD_METHOD 'replace' - 0x10,0x73, // LOAD_CONST_STRING '\n' - 0x10,0x1c, // LOAD_CONST_STRING ' ' + 0x14,0x74, // LOAD_METHOD 'replace' + 0x10,0x75, // LOAD_CONST_STRING '\n' + 0x10,0x1d, // LOAD_CONST_STRING ' ' 0x36,0x02, // CALL_METHOD 2 0xc4, // STORE_FAST 4 0xb2, // LOAD_FAST 2 0x44,0x64, // POP_JUMP_IF_FALSE 36 0xb3, // LOAD_FAST 3 - 0x12,0x81,0x10, // LOAD_GLOBAL 'len' + 0x12,0x81,0x1b, // LOAD_GLOBAL 'len' 0xb4, // LOAD_FAST 4 0x34,0x01, // CALL_FUNCTION 1 0xf2, // BINARY_OP 27 __add__ @@ -12687,11 +12757,11 @@ static const byte fun_data_tdui_List__add[108] = { 0xd8, // BINARY_OP 1 __gt__ 0x44,0x56, // POP_JUMP_IF_FALSE 22 0xb0, // LOAD_FAST 0 - 0x14,0x61, // LOAD_METHOD '_req' + 0x14,0x63, // LOAD_METHOD '_req' 0x8a, // LOAD_CONST_SMALL_INT 10 - 0x10,0x36, // LOAD_CONST_STRING 'text' - 0x10,0x73, // LOAD_CONST_STRING '\n' - 0x14,0x3e, // LOAD_METHOD 'join' + 0x10,0x38, // LOAD_CONST_STRING 'text' + 0x10,0x75, // LOAD_CONST_STRING '\n' + 0x14,0x40, // LOAD_METHOD 'join' 0xb2, // LOAD_FAST 2 0x36,0x01, // CALL_METHOD 1 0x36,0x82,0x01, // CALL_METHOD 257 @@ -12701,12 +12771,12 @@ static const byte fun_data_tdui_List__add[108] = { 0x80, // LOAD_CONST_SMALL_INT 0 0xc3, // STORE_FAST 3 0xb2, // LOAD_FAST 2 - 0x14,0x41, // LOAD_METHOD 'append' + 0x14,0x43, // LOAD_METHOD 'append' 0xb4, // LOAD_FAST 4 0x36,0x01, // CALL_METHOD 1 0x59, // POP_TOP 0xb3, // LOAD_FAST 3 - 0x12,0x81,0x10, // LOAD_GLOBAL 'len' + 0x12,0x81,0x1b, // LOAD_GLOBAL 'len' 0xb4, // LOAD_FAST 4 0x34,0x01, // CALL_FUNCTION 1 0x81, // LOAD_CONST_SMALL_INT 1 @@ -12717,11 +12787,11 @@ static const byte fun_data_tdui_List__add[108] = { 0xb2, // LOAD_FAST 2 0x44,0x51, // POP_JUMP_IF_FALSE 17 0xb0, // LOAD_FAST 0 - 0x14,0x61, // LOAD_METHOD '_req' + 0x14,0x63, // LOAD_METHOD '_req' 0x8a, // LOAD_CONST_SMALL_INT 10 - 0x10,0x36, // LOAD_CONST_STRING 'text' - 0x10,0x73, // LOAD_CONST_STRING '\n' - 0x14,0x3e, // LOAD_METHOD 'join' + 0x10,0x38, // LOAD_CONST_STRING 'text' + 0x10,0x75, // LOAD_CONST_STRING '\n' + 0x14,0x40, // LOAD_METHOD 'join' 0xb2, // LOAD_FAST 2 0x36,0x01, // CALL_METHOD 1 0x36,0x82,0x01, // CALL_METHOD 257 @@ -12752,7 +12822,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_List__add = { .n_pos_args = 2, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 113, + .qstr_block_name_idx = 115, .line_info = fun_data_tdui_List__add + 6, .line_info_top = fun_data_tdui_List__add + 6, .opcodes = fun_data_tdui_List__add + 6, @@ -12768,10 +12838,10 @@ static const mp_raw_code_truncated_t proto_fun_tdui_List__add = { // frozen bytecode for file tdui.py, scope tdui_List_selected static const byte fun_data_tdui_List_selected[9] = { 0x09,0x06, // prelude - 0x74,0x81,0x1f, // names: selected, self + 0x76,0x81,0x2c, // names: selected, self // code info 0xb0, // LOAD_FAST 0 - 0x13,0x6e, // LOAD_ATTR '_selected' + 0x13,0x70, // LOAD_ATTR '_selected' 0x63, // RETURN_VALUE }; #if MICROPY_PERSISTENT_CODE_SAVE @@ -12797,7 +12867,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_List_selected = { .n_pos_args = 1, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 116, + .qstr_block_name_idx = 118, .line_info = fun_data_tdui_List_selected + 5, .line_info_top = fun_data_tdui_List_selected + 5, .opcodes = fun_data_tdui_List_selected + 5, @@ -12813,18 +12883,18 @@ static const mp_raw_code_truncated_t proto_fun_tdui_List_selected = { // frozen bytecode for file tdui.py, scope tdui_List_selected2 static const byte fun_data_tdui_List_selected2[28] = { 0x2a,0x0a, // prelude - 0x74,0x81,0x1f,0x81,0x31, // names: selected, self, i + 0x76,0x81,0x2c,0x81,0x3e, // names: selected, self, i // code info - 0x12,0x81,0x2f, // LOAD_GLOBAL 'int' + 0x12,0x81,0x3c, // LOAD_GLOBAL 'int' 0xb1, // LOAD_FAST 1 0x34,0x01, // CALL_FUNCTION 1 0xb0, // LOAD_FAST 0 - 0x18,0x6e, // STORE_ATTR '_selected' + 0x18,0x70, // STORE_ATTR '_selected' 0xb0, // LOAD_FAST 0 - 0x14,0x61, // LOAD_METHOD '_req' + 0x14,0x63, // LOAD_METHOD '_req' 0x85, // LOAD_CONST_SMALL_INT 5 0xb0, // LOAD_FAST 0 - 0x13,0x6e, // LOAD_ATTR '_selected' + 0x13,0x70, // LOAD_ATTR '_selected' 0x36,0x02, // CALL_METHOD 2 0x59, // POP_TOP 0x51, // LOAD_CONST_NONE @@ -12853,7 +12923,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_List_selected2 = { .n_pos_args = 2, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 116, + .qstr_block_name_idx = 118, .line_info = fun_data_tdui_List_selected2 + 7, .line_info_top = fun_data_tdui_List_selected2 + 7, .opcodes = fun_data_tdui_List_selected2 + 7, @@ -12869,7 +12939,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_List_selected2 = { // frozen bytecode for file tdui.py, scope tdui_List__event static const byte fun_data_tdui_List__event[66] = { 0xcb,0x04,0x1e, // prelude - 0x2a,0x81,0x1f,0x81,0x06,0x81,0x08,0x81,0x09,0x81,0x0a,0x81,0x0b,0x81,0x27, // names: _event, self, op, a, b, c, d, t + 0x2c,0x81,0x2c,0x81,0x11,0x81,0x13,0x81,0x14,0x81,0x15,0x81,0x16,0x81,0x34, // names: _event, self, op, a, b, c, d, t // code info 0xb1, // LOAD_FAST 1 0x82, // LOAD_CONST_SMALL_INT 2 @@ -12877,12 +12947,12 @@ static const byte fun_data_tdui_List__event[66] = { 0x44,0x52, // POP_JUMP_IF_FALSE 18 0xb2, // LOAD_FAST 2 0xb0, // LOAD_FAST 0 - 0x18,0x6e, // STORE_ATTR '_selected' + 0x18,0x70, // STORE_ATTR '_selected' 0xb0, // LOAD_FAST 0 - 0x13,0x6c, // LOAD_ATTR 'on_select' + 0x13,0x6e, // LOAD_ATTR 'on_select' 0x44,0x47, // POP_JUMP_IF_FALSE 7 0xb0, // LOAD_FAST 0 - 0x14,0x6c, // LOAD_METHOD 'on_select' + 0x14,0x6e, // LOAD_METHOD 'on_select' 0xb0, // LOAD_FAST 0 0x36,0x01, // CALL_METHOD 1 0x59, // POP_TOP @@ -12893,12 +12963,12 @@ static const byte fun_data_tdui_List__event[66] = { 0x44,0x52, // POP_JUMP_IF_FALSE 18 0xb2, // LOAD_FAST 2 0xb0, // LOAD_FAST 0 - 0x18,0x6e, // STORE_ATTR '_selected' + 0x18,0x70, // STORE_ATTR '_selected' 0xb0, // LOAD_FAST 0 - 0x13,0x6d, // LOAD_ATTR 'on_activate' + 0x13,0x6f, // LOAD_ATTR 'on_activate' 0x44,0x47, // POP_JUMP_IF_FALSE 7 0xb0, // LOAD_FAST 0 - 0x14,0x6d, // LOAD_METHOD 'on_activate' + 0x14,0x6f, // LOAD_METHOD 'on_activate' 0xb0, // LOAD_FAST 0 0x36,0x01, // CALL_METHOD 1 0x59, // POP_TOP @@ -12929,7 +12999,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_List__event = { .n_pos_args = 7, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 42, + .qstr_block_name_idx = 44, .line_info = fun_data_tdui_List__event + 18, .line_info_top = fun_data_tdui_List__event + 18, .opcodes = fun_data_tdui_List__event + 18, @@ -12974,7 +13044,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_List = { .n_pos_args = 0, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 14, + .qstr_block_name_idx = 15, .line_info = fun_data_tdui_List + 3, .line_info_top = fun_data_tdui_List + 3, .opcodes = fun_data_tdui_List + 4, @@ -12985,60 +13055,79 @@ static const mp_raw_code_truncated_t proto_fun_tdui_List = { // child of tdui__lt_module_gt_ // frozen bytecode for file tdui.py, scope tdui_Canvas -static const byte fun_data_tdui_Canvas[71] = { - 0x18,0x03, // prelude - 0x0f, // names: Canvas +static const byte fun_data_tdui_Canvas[106] = { + 0x20,0x03, // prelude + 0x10, // names: Canvas 0x00, // code info - 0x11,0x81,0x12, // LOAD_NAME '__name__' - 0x16,0x81,0x13, // STORE_NAME '__module__' - 0x10,0x0f, // LOAD_CONST_STRING 'Canvas' - 0x16,0x81,0x14, // STORE_NAME '__qualname__' + 0x11,0x81,0x1d, // LOAD_NAME '__name__' + 0x16,0x81,0x1e, // STORE_NAME '__module__' + 0x10,0x10, // LOAD_CONST_STRING 'Canvas' + 0x16,0x81,0x1f, // STORE_NAME '__qualname__' 0x80, // LOAD_CONST_SMALL_INT 0 - 0x16,0x56, // STORE_NAME '_n' + 0x16,0x58, // STORE_NAME '_n' + 0x81, // LOAD_CONST_SMALL_INT 1 + 0x2a,0x01, // BUILD_TUPLE 1 + 0x53, // LOAD_NULL 0xb0, // LOAD_FAST 0 - 0x20,0x00,0x01, // MAKE_CLOSURE 0 - 0x16,0x3f, // STORE_NAME '__init__' + 0x21,0x00,0x01, // MAKE_CLOSURE_DEFARGS 0 + 0x16,0x41, // STORE_NAME '__init__' 0x7f, // LOAD_CONST_SMALL_INT -1 0x7f, // LOAD_CONST_SMALL_INT -1 0x2a,0x02, // BUILD_TUPLE 2 0x53, // LOAD_NULL 0x33,0x01, // MAKE_FUNCTION_DEFARGS 1 - 0x16,0x76, // STORE_NAME 'put' - 0x10,0x1c, // LOAD_CONST_STRING ' ' + 0x16,0x7b, // STORE_NAME 'put' + 0x10,0x1d, // LOAD_CONST_STRING ' ' 0x7f, // LOAD_CONST_SMALL_INT -1 0x7f, // LOAD_CONST_SMALL_INT -1 0x2a,0x03, // BUILD_TUPLE 3 0x53, // LOAD_NULL 0x33,0x02, // MAKE_FUNCTION_DEFARGS 2 - 0x16,0x78, // STORE_NAME 'fill' + 0x16,0x7c, // STORE_NAME 'fill' 0x7f, // LOAD_CONST_SMALL_INT -1 0x7f, // LOAD_CONST_SMALL_INT -1 0x2a,0x02, // BUILD_TUPLE 2 0x53, // LOAD_NULL 0x33,0x03, // MAKE_FUNCTION_DEFARGS 3 - 0x16,0x79, // STORE_NAME 'clear' - 0x32,0x04, // MAKE_FUNCTION 4 - 0x16,0x4e, // STORE_NAME 'resize' + 0x16,0x7d, // STORE_NAME 'clear' + 0x7f, // LOAD_CONST_SMALL_INT -1 + 0x7f, // LOAD_CONST_SMALL_INT -1 + 0x81, // LOAD_CONST_SMALL_INT 1 + 0x80, // LOAD_CONST_SMALL_INT 0 + 0x2a,0x04, // BUILD_TUPLE 4 + 0x53, // LOAD_NULL + 0x33,0x04, // MAKE_FUNCTION_DEFARGS 4 + 0x16,0x7e, // STORE_NAME 'big' 0x32,0x05, // MAKE_FUNCTION 5 - 0x16,0x4f, // STORE_NAME 'move' + 0x16,0x7f, // STORE_NAME '_page' 0x32,0x06, // MAKE_FUNCTION 6 - 0x16,0x77, // STORE_NAME '_req2' + 0x16,0x81,0x00, // STORE_NAME 'draw_to' 0x32,0x07, // MAKE_FUNCTION 7 - 0x16,0x2a, // STORE_NAME '_event' + 0x16,0x81,0x02, // STORE_NAME 'show' + 0x32,0x08, // MAKE_FUNCTION 8 + 0x16,0x81,0x03, // STORE_NAME 'copy_page' + 0x32,0x09, // MAKE_FUNCTION 9 + 0x16,0x50, // STORE_NAME 'resize' + 0x32,0x0a, // MAKE_FUNCTION 10 + 0x16,0x51, // STORE_NAME 'move' + 0x32,0x0b, // MAKE_FUNCTION 11 + 0x16,0x81,0x01, // STORE_NAME '_req2' + 0x32,0x0c, // MAKE_FUNCTION 12 + 0x16,0x2c, // STORE_NAME '_event' 0xb0, // LOAD_FAST 0 0x63, // RETURN_VALUE }; // child of tdui_Canvas // frozen bytecode for file tdui.py, scope tdui_Canvas___init__ -static const byte fun_data_tdui_Canvas___init__[132] = { - 0x88,0x90,0x04,0x1e, // prelude - 0x3f,0x81,0x2d,0x81,0x1f,0x40,0x81,0x22,0x81,0x23,0x81,0x20,0x81,0x21,0x75, // names: __init__, *, self, win, x, y, w, h, on_mouse +static const byte fun_data_tdui_Canvas___init__[174] = { + 0x91,0x91,0x04,0x20, // prelude + 0x41,0x81,0x3a,0x81,0x2c,0x42,0x81,0x2f,0x81,0x30,0x81,0x2d,0x81,0x2e,0x7a,0x77, // names: __init__, *, self, win, x, y, w, h, on_mouse, pages // code info 0xb2, // LOAD_FAST 2 - 0x13,0x47, // LOAD_ATTR 'is_open' + 0x13,0x49, // LOAD_ATTR 'is_open' 0x43,0x48, // POP_JUMP_IF_TRUE 8 - 0x12,0x81,0x1a, // LOAD_GLOBAL 'OSError' - 0x23,0x03, // LOAD_CONST_OBJ 3 + 0x12,0x81,0x27, // LOAD_GLOBAL 'OSError' + 0x23,0x04, // LOAD_CONST_OBJ 4 0x34,0x01, // CALL_FUNCTION 1 0x65, // RAISE_OBJ 0xb3, // LOAD_FAST 3 @@ -13057,56 +13146,89 @@ static const byte fun_data_tdui_Canvas___init__[132] = { 0x81, // LOAD_CONST_SMALL_INT 1 0xd7, // BINARY_OP 0 __lt__ 0x44,0x48, // POP_JUMP_IF_FALSE 8 - 0x12,0x81,0x25, // LOAD_GLOBAL 'ValueError' - 0x23,0x05, // LOAD_CONST_OBJ 5 + 0x12,0x81,0x32, // LOAD_GLOBAL 'ValueError' + 0x23,0x06, // LOAD_CONST_OBJ 6 + 0x34,0x01, // CALL_FUNCTION 1 + 0x65, // RAISE_OBJ + 0x81, // LOAD_CONST_SMALL_INT 1 + 0xb8, // LOAD_FAST 8 + 0x57, // DUP_TOP + 0x5b, // ROT_THREE + 0xda, // BINARY_OP 3 __le__ + 0x46,0x04, // JUMP_IF_FALSE_OR_POP 4 + 0x90, // LOAD_CONST_SMALL_INT 16 + 0xda, // BINARY_OP 3 __le__ + 0x42,0x42, // JUMP 2 + 0x5a, // ROT_TWO + 0x59, // POP_TOP + 0x43,0x4a, // POP_JUMP_IF_TRUE 10 + 0x12,0x81,0x32, // LOAD_GLOBAL 'ValueError' + 0x23,0x07, // LOAD_CONST_OBJ 7 + 0x90, // LOAD_CONST_SMALL_INT 16 + 0xf8, // BINARY_OP 33 __mod__ 0x34,0x01, // CALL_FUNCTION 1 0x65, // RAISE_OBJ - 0x12,0x57, // LOAD_GLOBAL '_cells' + 0x12,0x59, // LOAD_GLOBAL '_cells' 0xb5, // LOAD_FAST 5 0xb6, // LOAD_FAST 6 0xf4, // BINARY_OP 29 __mul__ + 0xb8, // LOAD_FAST 8 + 0xf4, // BINARY_OP 29 __mul__ 0xf2, // BINARY_OP 27 __add__ - 0x22,0x8f,0x50, // LOAD_CONST_SMALL_INT 2000 + 0x12,0x06, // LOAD_GLOBAL 'MAX_CELLS' 0xd8, // BINARY_OP 1 __gt__ - 0x44,0x4c, // POP_JUMP_IF_FALSE 12 - 0x12,0x81,0x1a, // LOAD_GLOBAL 'OSError' - 0x23,0x06, // LOAD_CONST_OBJ 6 - 0x22,0x8f,0x50, // LOAD_CONST_SMALL_INT 2000 + 0x44,0x4b, // POP_JUMP_IF_FALSE 11 + 0x12,0x81,0x27, // LOAD_GLOBAL 'OSError' + 0x23,0x08, // LOAD_CONST_OBJ 8 + 0x12,0x06, // LOAD_GLOBAL 'MAX_CELLS' 0xf8, // BINARY_OP 33 __mod__ 0x34,0x01, // CALL_FUNCTION 1 0x65, // RAISE_OBJ - 0x12,0x57, // LOAD_GLOBAL '_cells' + 0x12,0x59, // LOAD_GLOBAL '_cells' 0xb5, // LOAD_FAST 5 0xb6, // LOAD_FAST 6 0xf4, // BINARY_OP 29 __mul__ + 0xb8, // LOAD_FAST 8 + 0xf4, // BINARY_OP 29 __mul__ 0xe5, // BINARY_OP 14 __iadd__ - 0x17,0x57, // STORE_GLOBAL '_cells' + 0x17,0x59, // STORE_GLOBAL '_cells' 0xb5, // LOAD_FAST 5 0xb6, // LOAD_FAST 6 0xf4, // BINARY_OP 29 __mul__ + 0xb8, // LOAD_FAST 8 + 0xf4, // BINARY_OP 29 __mul__ 0xb1, // LOAD_FAST 1 - 0x18,0x57, // STORE_ATTR '_cells' + 0x18,0x59, // STORE_ATTR '_cells' 0xb5, // LOAD_FAST 5 0xb1, // LOAD_FAST 1 - 0x18,0x45, // STORE_ATTR 'width' + 0x18,0x47, // STORE_ATTR 'width' 0xb6, // LOAD_FAST 6 0xb1, // LOAD_FAST 1 - 0x18,0x46, // STORE_ATTR 'height' + 0x18,0x48, // STORE_ATTR 'height' + 0xb8, // LOAD_FAST 8 + 0xb1, // LOAD_FAST 1 + 0x18,0x77, // STORE_ATTR 'pages' + 0x80, // LOAD_CONST_SMALL_INT 0 + 0xb1, // LOAD_FAST 1 + 0x18,0x78, // STORE_ATTR 'drawing' + 0x80, // LOAD_CONST_SMALL_INT 0 + 0xb1, // LOAD_FAST 1 + 0x18,0x79, // STORE_ATTR 'showing' 0xb7, // LOAD_FAST 7 0xb1, // LOAD_FAST 1 - 0x18,0x75, // STORE_ATTR 'on_mouse' - 0x12,0x81,0x2e, // LOAD_GLOBAL 'super' + 0x18,0x7a, // STORE_ATTR 'on_mouse' + 0x12,0x81,0x3b, // LOAD_GLOBAL 'super' 0x25,0x00, // LOAD_DEREF 0 0xb1, // LOAD_FAST 1 - 0x15,0x3f, // LOAD_SUPER_METHOD '__init__' + 0x15,0x41, // LOAD_SUPER_METHOD '__init__' 0xb2, // LOAD_FAST 2 0x87, // LOAD_CONST_SMALL_INT 7 0xb3, // LOAD_FAST 3 0xb4, // LOAD_FAST 4 0xb5, // LOAD_FAST 5 0xb6, // LOAD_FAST 6 - 0x80, // LOAD_CONST_SMALL_INT 0 - 0x10,0x11, // LOAD_CONST_STRING '' + 0xb8, // LOAD_FAST 8 + 0x10,0x12, // LOAD_CONST_STRING '' 0x36,0x08, // CALL_METHOD 8 0x59, // POP_TOP 0x51, // LOAD_CONST_NONE @@ -13121,7 +13243,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Canvas___init__ = { .fun_data = fun_data_tdui_Canvas___init__, .children = NULL, #if MICROPY_PERSISTENT_CODE_SAVE - .fun_data_len = 132, + .fun_data_len = 174, .n_children = 0, #if MICROPY_EMIT_MACHINE_CODE .prelude_offset = 0, @@ -13129,16 +13251,16 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Canvas___init__ = { #if MICROPY_PY_SYS_SETTRACE .line_of_definition = 0, .prelude = { - .n_state = 18, + .n_state = 19, .n_exc_stack = 0, .scope_flags = 0, - .n_pos_args = 8, + .n_pos_args = 9, .n_kwonly_args = 0, - .n_def_pos_args = 0, - .qstr_block_name_idx = 63, - .line_info = fun_data_tdui_Canvas___init__ + 19, - .line_info_top = fun_data_tdui_Canvas___init__ + 19, - .opcodes = fun_data_tdui_Canvas___init__ + 19, + .n_def_pos_args = 1, + .qstr_block_name_idx = 65, + .line_info = fun_data_tdui_Canvas___init__ + 20, + .line_info_top = fun_data_tdui_Canvas___init__ + 20, + .opcodes = fun_data_tdui_Canvas___init__ + 20, }, #endif #endif @@ -13149,23 +13271,31 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Canvas___init__ = { // child of tdui_Canvas // frozen bytecode for file tdui.py, scope tdui_Canvas_put -static const byte fun_data_tdui_Canvas_put[37] = { - 0x82,0x94,0x01,0x18, // prelude - 0x76,0x81,0x1f,0x81,0x22,0x81,0x23,0x36,0x81,0x2b,0x81,0x2c, // names: put, self, x, y, text, fg, bg +static const byte fun_data_tdui_Canvas_put[50] = { + 0x9a,0x94,0x01,0x18, // prelude + 0x7b,0x81,0x2c,0x81,0x2f,0x81,0x30,0x38,0x81,0x38,0x81,0x39, // names: put, self, x, y, text, fg, bg // code info 0xb0, // LOAD_FAST 0 - 0x14,0x77, // LOAD_METHOD '_req2' + 0x13,0x42, // LOAD_ATTR 'win' + 0x13,0x49, // LOAD_ATTR 'is_open' + 0x44,0x59, // POP_JUMP_IF_FALSE 25 + 0x12,0x02, // LOAD_GLOBAL '_tdui' + 0x14,0x15, // LOAD_METHOD 'send' 0x8b, // LOAD_CONST_SMALL_INT 11 + 0xb0, // LOAD_FAST 0 + 0x13,0x45, // LOAD_ATTR 'id' + 0x80, // LOAD_CONST_SMALL_INT 0 + 0x80, // LOAD_CONST_SMALL_INT 0 0xb1, // LOAD_FAST 1 0xb2, // LOAD_FAST 2 0xb4, // LOAD_FAST 4 0xb5, // LOAD_FAST 5 0x80, // LOAD_CONST_SMALL_INT 0 0x80, // LOAD_CONST_SMALL_INT 0 - 0x12,0x81,0x26, // LOAD_GLOBAL 'str' + 0x12,0x81,0x33, // LOAD_GLOBAL 'str' 0xb3, // LOAD_FAST 3 0x34,0x01, // CALL_FUNCTION 1 - 0x36,0x08, // CALL_METHOD 8 + 0x36,0x0b, // CALL_METHOD 11 0x59, // POP_TOP 0x51, // LOAD_CONST_NONE 0x63, // RETURN_VALUE @@ -13179,7 +13309,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Canvas_put = { .fun_data = fun_data_tdui_Canvas_put, .children = NULL, #if MICROPY_PERSISTENT_CODE_SAVE - .fun_data_len = 37, + .fun_data_len = 50, .n_children = 0, #if MICROPY_EMIT_MACHINE_CODE .prelude_offset = 0, @@ -13187,13 +13317,13 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Canvas_put = { #if MICROPY_PY_SYS_SETTRACE .line_of_definition = 0, .prelude = { - .n_state = 17, + .n_state = 20, .n_exc_stack = 0, .scope_flags = 0, .n_pos_args = 6, .n_kwonly_args = 0, .n_def_pos_args = 2, - .qstr_block_name_idx = 118, + .qstr_block_name_idx = 123, .line_info = fun_data_tdui_Canvas_put + 16, .line_info_top = fun_data_tdui_Canvas_put + 16, .opcodes = fun_data_tdui_Canvas_put + 16, @@ -13207,13 +13337,21 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Canvas_put = { // child of tdui_Canvas // frozen bytecode for file tdui.py, scope tdui_Canvas_fill -static const byte fun_data_tdui_Canvas_fill[37] = { - 0x88,0x91,0x05,0x22, // prelude - 0x78,0x81,0x1f,0x81,0x22,0x81,0x23,0x81,0x20,0x81,0x21,0x81,0x32,0x81,0x2b,0x81,0x2c, // names: fill, self, x, y, w, h, ch, fg, bg +static const byte fun_data_tdui_Canvas_fill[50] = { + 0xa0,0x91,0x05,0x22, // prelude + 0x7c,0x81,0x2c,0x81,0x2f,0x81,0x30,0x81,0x2d,0x81,0x2e,0x81,0x3f,0x81,0x38,0x81,0x39, // names: fill, self, x, y, w, h, ch, fg, bg // code info 0xb0, // LOAD_FAST 0 - 0x14,0x77, // LOAD_METHOD '_req2' + 0x13,0x42, // LOAD_ATTR 'win' + 0x13,0x49, // LOAD_ATTR 'is_open' + 0x44,0x54, // POP_JUMP_IF_FALSE 20 + 0x12,0x02, // LOAD_GLOBAL '_tdui' + 0x14,0x15, // LOAD_METHOD 'send' 0x8c, // LOAD_CONST_SMALL_INT 12 + 0xb0, // LOAD_FAST 0 + 0x13,0x45, // LOAD_ATTR 'id' + 0x80, // LOAD_CONST_SMALL_INT 0 + 0x80, // LOAD_CONST_SMALL_INT 0 0xb1, // LOAD_FAST 1 0xb2, // LOAD_FAST 2 0xb3, // LOAD_FAST 3 @@ -13221,7 +13359,7 @@ static const byte fun_data_tdui_Canvas_fill[37] = { 0xb6, // LOAD_FAST 6 0xb7, // LOAD_FAST 7 0xb5, // LOAD_FAST 5 - 0x36,0x08, // CALL_METHOD 8 + 0x36,0x0b, // CALL_METHOD 11 0x59, // POP_TOP 0x51, // LOAD_CONST_NONE 0x63, // RETURN_VALUE @@ -13235,7 +13373,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Canvas_fill = { .fun_data = fun_data_tdui_Canvas_fill, .children = NULL, #if MICROPY_PERSISTENT_CODE_SAVE - .fun_data_len = 37, + .fun_data_len = 50, .n_children = 0, #if MICROPY_EMIT_MACHINE_CODE .prelude_offset = 0, @@ -13243,13 +13381,13 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Canvas_fill = { #if MICROPY_PY_SYS_SETTRACE .line_of_definition = 0, .prelude = { - .n_state = 18, + .n_state = 21, .n_exc_stack = 0, .scope_flags = 0, .n_pos_args = 8, .n_kwonly_args = 0, .n_def_pos_args = 3, - .qstr_block_name_idx = 120, + .qstr_block_name_idx = 124, .line_info = fun_data_tdui_Canvas_fill + 21, .line_info_top = fun_data_tdui_Canvas_fill + 21, .opcodes = fun_data_tdui_Canvas_fill + 21, @@ -13265,17 +13403,17 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Canvas_fill = { // frozen bytecode for file tdui.py, scope tdui_Canvas_clear static const byte fun_data_tdui_Canvas_clear[31] = { 0xdb,0x80,0x01,0x0e, // prelude - 0x79,0x81,0x1f,0x81,0x2b,0x81,0x2c, // names: clear, self, fg, bg + 0x7d,0x81,0x2c,0x81,0x38,0x81,0x39, // names: clear, self, fg, bg // code info 0xb0, // LOAD_FAST 0 - 0x14,0x78, // LOAD_METHOD 'fill' + 0x14,0x7c, // LOAD_METHOD 'fill' 0x80, // LOAD_CONST_SMALL_INT 0 0x80, // LOAD_CONST_SMALL_INT 0 0xb0, // LOAD_FAST 0 - 0x13,0x45, // LOAD_ATTR 'width' + 0x13,0x47, // LOAD_ATTR 'width' 0xb0, // LOAD_FAST 0 - 0x13,0x46, // LOAD_ATTR 'height' - 0x10,0x1c, // LOAD_CONST_STRING ' ' + 0x13,0x48, // LOAD_ATTR 'height' + 0x10,0x1d, // LOAD_CONST_STRING ' ' 0xb1, // LOAD_FAST 1 0xb2, // LOAD_FAST 2 0x36,0x07, // CALL_METHOD 7 @@ -13306,7 +13444,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Canvas_clear = { .n_pos_args = 3, .n_kwonly_args = 0, .n_def_pos_args = 2, - .qstr_block_name_idx = 121, + .qstr_block_name_idx = 125, .line_info = fun_data_tdui_Canvas_clear + 11, .line_info_top = fun_data_tdui_Canvas_clear + 11, .opcodes = fun_data_tdui_Canvas_clear + 11, @@ -13319,62 +13457,389 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Canvas_clear = { #endif // child of tdui_Canvas -// frozen bytecode for file tdui.py, scope tdui_Canvas_resize -static const byte fun_data_tdui_Canvas_resize[97] = { - 0x63,0x0e, // prelude - 0x4e,0x81,0x1f,0x81,0x20,0x81,0x21, // names: resize, self, w, h +// frozen bytecode for file tdui.py, scope tdui_Canvas_big +static const byte fun_data_tdui_Canvas_big[54] = { + 0xa8,0x90,0x84,0x01,0x1e, // prelude + 0x7e,0x81,0x2c,0x81,0x2f,0x81,0x30,0x38,0x81,0x38,0x81,0x39,0x81,0x21,0x47, // names: big, self, x, y, text, fg, bg, scale, width // code info - 0xb1, // LOAD_FAST 1 - 0x81, // LOAD_CONST_SMALL_INT 1 - 0xd7, // BINARY_OP 0 __lt__ - 0x43,0x45, // POP_JUMP_IF_TRUE 5 - 0xb2, // LOAD_FAST 2 - 0x81, // LOAD_CONST_SMALL_INT 1 - 0xd7, // BINARY_OP 0 __lt__ - 0x44,0x48, // POP_JUMP_IF_FALSE 8 - 0x12,0x81,0x25, // LOAD_GLOBAL 'ValueError' - 0x23,0x05, // LOAD_CONST_OBJ 5 - 0x34,0x01, // CALL_FUNCTION 1 - 0x65, // RAISE_OBJ - 0x12,0x57, // LOAD_GLOBAL '_cells' 0xb0, // LOAD_FAST 0 - 0x13,0x57, // LOAD_ATTR '_cells' - 0xf3, // BINARY_OP 28 __sub__ + 0x13,0x42, // LOAD_ATTR 'win' + 0x13,0x49, // LOAD_ATTR 'is_open' + 0x44,0x59, // POP_JUMP_IF_FALSE 25 + 0x12,0x02, // LOAD_GLOBAL '_tdui' + 0x14,0x15, // LOAD_METHOD 'send' + 0x95, // LOAD_CONST_SMALL_INT 21 + 0xb0, // LOAD_FAST 0 + 0x13,0x45, // LOAD_ATTR 'id' + 0x80, // LOAD_CONST_SMALL_INT 0 + 0x80, // LOAD_CONST_SMALL_INT 0 0xb1, // LOAD_FAST 1 0xb2, // LOAD_FAST 2 - 0xf4, // BINARY_OP 29 __mul__ - 0xf2, // BINARY_OP 27 __add__ - 0x22,0x8f,0x50, // LOAD_CONST_SMALL_INT 2000 - 0xd8, // BINARY_OP 1 __gt__ - 0x44,0x4c, // POP_JUMP_IF_FALSE 12 - 0x12,0x81,0x1a, // LOAD_GLOBAL 'OSError' - 0x23,0x06, // LOAD_CONST_OBJ 6 - 0x22,0x8f,0x50, // LOAD_CONST_SMALL_INT 2000 - 0xf8, // BINARY_OP 33 __mod__ + 0xb4, // LOAD_FAST 4 + 0xb5, // LOAD_FAST 5 + 0xb6, // LOAD_FAST 6 + 0xb7, // LOAD_FAST 7 + 0x12,0x81,0x33, // LOAD_GLOBAL 'str' + 0xb3, // LOAD_FAST 3 0x34,0x01, // CALL_FUNCTION 1 - 0x65, // RAISE_OBJ - 0x12,0x57, // LOAD_GLOBAL '_cells' - 0xb1, // LOAD_FAST 1 + 0x36,0x0b, // CALL_METHOD 11 + 0x59, // POP_TOP + 0x51, // LOAD_CONST_NONE + 0x63, // RETURN_VALUE +}; +#if MICROPY_PERSISTENT_CODE_SAVE +static const mp_raw_code_truncated_t proto_fun_tdui_Canvas_big = { + .proto_fun_indicator[0] = MP_PROTO_FUN_INDICATOR_RAW_CODE_0, + .proto_fun_indicator[1] = MP_PROTO_FUN_INDICATOR_RAW_CODE_1, + .kind = MP_CODE_BYTECODE, + .is_generator = 0, + .fun_data = fun_data_tdui_Canvas_big, + .children = NULL, + #if MICROPY_PERSISTENT_CODE_SAVE + .fun_data_len = 54, + .n_children = 0, + #if MICROPY_EMIT_MACHINE_CODE + .prelude_offset = 0, + #endif + #if MICROPY_PY_SYS_SETTRACE + .line_of_definition = 0, + .prelude = { + .n_state = 22, + .n_exc_stack = 0, + .scope_flags = 0, + .n_pos_args = 8, + .n_kwonly_args = 0, + .n_def_pos_args = 4, + .qstr_block_name_idx = 126, + .line_info = fun_data_tdui_Canvas_big + 20, + .line_info_top = fun_data_tdui_Canvas_big + 20, + .opcodes = fun_data_tdui_Canvas_big + 20, + }, + #endif + #endif +}; +#else +#define proto_fun_tdui_Canvas_big fun_data_tdui_Canvas_big[0] +#endif + +// child of tdui_Canvas +// frozen bytecode for file tdui.py, scope tdui_Canvas__page +static const byte fun_data_tdui_Canvas__page[40] = { + 0x2a,0x0a, // prelude + 0x7f,0x81,0x2c,0x81,0x40, // names: _page, self, n + // code info + 0x80, // LOAD_CONST_SMALL_INT 0 + 0xb1, // LOAD_FAST 1 + 0x57, // DUP_TOP + 0x5b, // ROT_THREE + 0xda, // BINARY_OP 3 __le__ + 0x46,0x06, // JUMP_IF_FALSE_OR_POP 6 + 0xb0, // LOAD_FAST 0 + 0x13,0x77, // LOAD_ATTR 'pages' + 0xd7, // BINARY_OP 0 __lt__ + 0x42,0x42, // JUMP 2 + 0x5a, // ROT_TWO + 0x59, // POP_TOP + 0x43,0x4e, // POP_JUMP_IF_TRUE 14 + 0x12,0x81,0x32, // LOAD_GLOBAL 'ValueError' + 0x23,0x09, // LOAD_CONST_OBJ 9 + 0xb0, // LOAD_FAST 0 + 0x13,0x77, // LOAD_ATTR 'pages' + 0x81, // LOAD_CONST_SMALL_INT 1 + 0xf3, // BINARY_OP 28 __sub__ + 0xf8, // BINARY_OP 33 __mod__ + 0x34,0x01, // CALL_FUNCTION 1 + 0x65, // RAISE_OBJ + 0xb1, // LOAD_FAST 1 + 0x63, // RETURN_VALUE +}; +#if MICROPY_PERSISTENT_CODE_SAVE +static const mp_raw_code_truncated_t proto_fun_tdui_Canvas__page = { + .proto_fun_indicator[0] = MP_PROTO_FUN_INDICATOR_RAW_CODE_0, + .proto_fun_indicator[1] = MP_PROTO_FUN_INDICATOR_RAW_CODE_1, + .kind = MP_CODE_BYTECODE, + .is_generator = 0, + .fun_data = fun_data_tdui_Canvas__page, + .children = NULL, + #if MICROPY_PERSISTENT_CODE_SAVE + .fun_data_len = 40, + .n_children = 0, + #if MICROPY_EMIT_MACHINE_CODE + .prelude_offset = 0, + #endif + #if MICROPY_PY_SYS_SETTRACE + .line_of_definition = 0, + .prelude = { + .n_state = 6, + .n_exc_stack = 0, + .scope_flags = 0, + .n_pos_args = 2, + .n_kwonly_args = 0, + .n_def_pos_args = 0, + .qstr_block_name_idx = 127, + .line_info = fun_data_tdui_Canvas__page + 7, + .line_info_top = fun_data_tdui_Canvas__page + 7, + .opcodes = fun_data_tdui_Canvas__page + 7, + }, + #endif + #endif +}; +#else +#define proto_fun_tdui_Canvas__page fun_data_tdui_Canvas__page[0] +#endif + +// child of tdui_Canvas +// frozen bytecode for file tdui.py, scope tdui_Canvas_draw_to +static const byte fun_data_tdui_Canvas_draw_to[34] = { + 0x5a,0x0c, // prelude + 0x81,0x00,0x81,0x2c,0x81,0x41, // names: draw_to, self, page + // code info + 0xb0, // LOAD_FAST 0 + 0x14,0x7f, // LOAD_METHOD '_page' + 0xb1, // LOAD_FAST 1 + 0x36,0x01, // CALL_METHOD 1 + 0xb0, // LOAD_FAST 0 + 0x18,0x78, // STORE_ATTR 'drawing' + 0xb0, // LOAD_FAST 0 + 0x14,0x81,0x01, // LOAD_METHOD '_req2' + 0x93, // LOAD_CONST_SMALL_INT 19 + 0xb1, // LOAD_FAST 1 + 0x7f, // LOAD_CONST_SMALL_INT -1 + 0x80, // LOAD_CONST_SMALL_INT 0 + 0x80, // LOAD_CONST_SMALL_INT 0 + 0x80, // LOAD_CONST_SMALL_INT 0 + 0x80, // LOAD_CONST_SMALL_INT 0 + 0x51, // LOAD_CONST_NONE + 0x36,0x08, // CALL_METHOD 8 + 0x59, // POP_TOP + 0x51, // LOAD_CONST_NONE + 0x63, // RETURN_VALUE +}; +#if MICROPY_PERSISTENT_CODE_SAVE +static const mp_raw_code_truncated_t proto_fun_tdui_Canvas_draw_to = { + .proto_fun_indicator[0] = MP_PROTO_FUN_INDICATOR_RAW_CODE_0, + .proto_fun_indicator[1] = MP_PROTO_FUN_INDICATOR_RAW_CODE_1, + .kind = MP_CODE_BYTECODE, + .is_generator = 0, + .fun_data = fun_data_tdui_Canvas_draw_to, + .children = NULL, + #if MICROPY_PERSISTENT_CODE_SAVE + .fun_data_len = 34, + .n_children = 0, + #if MICROPY_EMIT_MACHINE_CODE + .prelude_offset = 0, + #endif + #if MICROPY_PY_SYS_SETTRACE + .line_of_definition = 0, + .prelude = { + .n_state = 12, + .n_exc_stack = 0, + .scope_flags = 0, + .n_pos_args = 2, + .n_kwonly_args = 0, + .n_def_pos_args = 0, + .qstr_block_name_idx = 128, + .line_info = fun_data_tdui_Canvas_draw_to + 8, + .line_info_top = fun_data_tdui_Canvas_draw_to + 8, + .opcodes = fun_data_tdui_Canvas_draw_to + 8, + }, + #endif + #endif +}; +#else +#define proto_fun_tdui_Canvas_draw_to fun_data_tdui_Canvas_draw_to[0] +#endif + +// child of tdui_Canvas +// frozen bytecode for file tdui.py, scope tdui_Canvas_show +static const byte fun_data_tdui_Canvas_show[34] = { + 0x5a,0x0c, // prelude + 0x81,0x02,0x81,0x2c,0x81,0x41, // names: show, self, page + // code info + 0xb0, // LOAD_FAST 0 + 0x14,0x7f, // LOAD_METHOD '_page' + 0xb1, // LOAD_FAST 1 + 0x36,0x01, // CALL_METHOD 1 + 0xb0, // LOAD_FAST 0 + 0x18,0x79, // STORE_ATTR 'showing' + 0xb0, // LOAD_FAST 0 + 0x14,0x81,0x01, // LOAD_METHOD '_req2' + 0x93, // LOAD_CONST_SMALL_INT 19 + 0x7f, // LOAD_CONST_SMALL_INT -1 + 0xb1, // LOAD_FAST 1 + 0x80, // LOAD_CONST_SMALL_INT 0 + 0x80, // LOAD_CONST_SMALL_INT 0 + 0x80, // LOAD_CONST_SMALL_INT 0 + 0x80, // LOAD_CONST_SMALL_INT 0 + 0x51, // LOAD_CONST_NONE + 0x36,0x08, // CALL_METHOD 8 + 0x59, // POP_TOP + 0x51, // LOAD_CONST_NONE + 0x63, // RETURN_VALUE +}; +#if MICROPY_PERSISTENT_CODE_SAVE +static const mp_raw_code_truncated_t proto_fun_tdui_Canvas_show = { + .proto_fun_indicator[0] = MP_PROTO_FUN_INDICATOR_RAW_CODE_0, + .proto_fun_indicator[1] = MP_PROTO_FUN_INDICATOR_RAW_CODE_1, + .kind = MP_CODE_BYTECODE, + .is_generator = 0, + .fun_data = fun_data_tdui_Canvas_show, + .children = NULL, + #if MICROPY_PERSISTENT_CODE_SAVE + .fun_data_len = 34, + .n_children = 0, + #if MICROPY_EMIT_MACHINE_CODE + .prelude_offset = 0, + #endif + #if MICROPY_PY_SYS_SETTRACE + .line_of_definition = 0, + .prelude = { + .n_state = 12, + .n_exc_stack = 0, + .scope_flags = 0, + .n_pos_args = 2, + .n_kwonly_args = 0, + .n_def_pos_args = 0, + .qstr_block_name_idx = 130, + .line_info = fun_data_tdui_Canvas_show + 8, + .line_info_top = fun_data_tdui_Canvas_show + 8, + .opcodes = fun_data_tdui_Canvas_show + 8, + }, + #endif + #endif +}; +#else +#define proto_fun_tdui_Canvas_show fun_data_tdui_Canvas_show[0] +#endif + +// child of tdui_Canvas +// frozen bytecode for file tdui.py, scope tdui_Canvas_copy_page +static const byte fun_data_tdui_Canvas_copy_page[37] = { + 0x63,0x10, // prelude + 0x81,0x03,0x81,0x2c,0x81,0x42,0x81,0x43, // names: copy_page, self, src, dst + // code info + 0xb0, // LOAD_FAST 0 + 0x14,0x81,0x01, // LOAD_METHOD '_req2' + 0x94, // LOAD_CONST_SMALL_INT 20 + 0xb0, // LOAD_FAST 0 + 0x14,0x7f, // LOAD_METHOD '_page' + 0xb1, // LOAD_FAST 1 + 0x36,0x01, // CALL_METHOD 1 + 0xb0, // LOAD_FAST 0 + 0x14,0x7f, // LOAD_METHOD '_page' + 0xb2, // LOAD_FAST 2 + 0x36,0x01, // CALL_METHOD 1 + 0x80, // LOAD_CONST_SMALL_INT 0 + 0x80, // LOAD_CONST_SMALL_INT 0 + 0x80, // LOAD_CONST_SMALL_INT 0 + 0x80, // LOAD_CONST_SMALL_INT 0 + 0x51, // LOAD_CONST_NONE + 0x36,0x08, // CALL_METHOD 8 + 0x59, // POP_TOP + 0x51, // LOAD_CONST_NONE + 0x63, // RETURN_VALUE +}; +#if MICROPY_PERSISTENT_CODE_SAVE +static const mp_raw_code_truncated_t proto_fun_tdui_Canvas_copy_page = { + .proto_fun_indicator[0] = MP_PROTO_FUN_INDICATOR_RAW_CODE_0, + .proto_fun_indicator[1] = MP_PROTO_FUN_INDICATOR_RAW_CODE_1, + .kind = MP_CODE_BYTECODE, + .is_generator = 0, + .fun_data = fun_data_tdui_Canvas_copy_page, + .children = NULL, + #if MICROPY_PERSISTENT_CODE_SAVE + .fun_data_len = 37, + .n_children = 0, + #if MICROPY_EMIT_MACHINE_CODE + .prelude_offset = 0, + #endif + #if MICROPY_PY_SYS_SETTRACE + .line_of_definition = 0, + .prelude = { + .n_state = 13, + .n_exc_stack = 0, + .scope_flags = 0, + .n_pos_args = 3, + .n_kwonly_args = 0, + .n_def_pos_args = 0, + .qstr_block_name_idx = 131, + .line_info = fun_data_tdui_Canvas_copy_page + 10, + .line_info_top = fun_data_tdui_Canvas_copy_page + 10, + .opcodes = fun_data_tdui_Canvas_copy_page + 10, + }, + #endif + #endif +}; +#else +#define proto_fun_tdui_Canvas_copy_page fun_data_tdui_Canvas_copy_page[0] +#endif + +// child of tdui_Canvas +// frozen bytecode for file tdui.py, scope tdui_Canvas_resize +static const byte fun_data_tdui_Canvas_resize[108] = { + 0x63,0x0e, // prelude + 0x50,0x81,0x2c,0x81,0x2d,0x81,0x2e, // names: resize, self, w, h + // code info + 0xb1, // LOAD_FAST 1 + 0x81, // LOAD_CONST_SMALL_INT 1 + 0xd7, // BINARY_OP 0 __lt__ + 0x43,0x45, // POP_JUMP_IF_TRUE 5 + 0xb2, // LOAD_FAST 2 + 0x81, // LOAD_CONST_SMALL_INT 1 + 0xd7, // BINARY_OP 0 __lt__ + 0x44,0x48, // POP_JUMP_IF_FALSE 8 + 0x12,0x81,0x32, // LOAD_GLOBAL 'ValueError' + 0x23,0x06, // LOAD_CONST_OBJ 6 + 0x34,0x01, // CALL_FUNCTION 1 + 0x65, // RAISE_OBJ + 0x12,0x59, // LOAD_GLOBAL '_cells' + 0xb0, // LOAD_FAST 0 + 0x13,0x59, // LOAD_ATTR '_cells' + 0xf3, // BINARY_OP 28 __sub__ + 0xb1, // LOAD_FAST 1 0xb2, // LOAD_FAST 2 0xf4, // BINARY_OP 29 __mul__ 0xb0, // LOAD_FAST 0 - 0x13,0x57, // LOAD_ATTR '_cells' + 0x13,0x77, // LOAD_ATTR 'pages' + 0xf4, // BINARY_OP 29 __mul__ + 0xf2, // BINARY_OP 27 __add__ + 0x12,0x06, // LOAD_GLOBAL 'MAX_CELLS' + 0xd8, // BINARY_OP 1 __gt__ + 0x44,0x4b, // POP_JUMP_IF_FALSE 11 + 0x12,0x81,0x27, // LOAD_GLOBAL 'OSError' + 0x23,0x08, // LOAD_CONST_OBJ 8 + 0x12,0x06, // LOAD_GLOBAL 'MAX_CELLS' + 0xf8, // BINARY_OP 33 __mod__ + 0x34,0x01, // CALL_FUNCTION 1 + 0x65, // RAISE_OBJ + 0x12,0x59, // LOAD_GLOBAL '_cells' + 0xb1, // LOAD_FAST 1 + 0xb2, // LOAD_FAST 2 + 0xf4, // BINARY_OP 29 __mul__ + 0xb0, // LOAD_FAST 0 + 0x13,0x77, // LOAD_ATTR 'pages' + 0xf4, // BINARY_OP 29 __mul__ + 0xb0, // LOAD_FAST 0 + 0x13,0x59, // LOAD_ATTR '_cells' 0xf3, // BINARY_OP 28 __sub__ 0xe5, // BINARY_OP 14 __iadd__ - 0x17,0x57, // STORE_GLOBAL '_cells' + 0x17,0x59, // STORE_GLOBAL '_cells' 0xb1, // LOAD_FAST 1 0xb2, // LOAD_FAST 2 0xf4, // BINARY_OP 29 __mul__ 0xb0, // LOAD_FAST 0 - 0x18,0x57, // STORE_ATTR '_cells' + 0x13,0x77, // LOAD_ATTR 'pages' + 0xf4, // BINARY_OP 29 __mul__ + 0xb0, // LOAD_FAST 0 + 0x18,0x59, // STORE_ATTR '_cells' 0xb1, // LOAD_FAST 1 0xb0, // LOAD_FAST 0 - 0x18,0x45, // STORE_ATTR 'width' + 0x18,0x47, // STORE_ATTR 'width' 0xb2, // LOAD_FAST 2 0xb0, // LOAD_FAST 0 - 0x18,0x46, // STORE_ATTR 'height' + 0x18,0x48, // STORE_ATTR 'height' 0xb0, // LOAD_FAST 0 - 0x14,0x77, // LOAD_METHOD '_req2' + 0x14,0x81,0x01, // LOAD_METHOD '_req2' 0x90, // LOAD_CONST_SMALL_INT 16 0xb1, // LOAD_FAST 1 0xb2, // LOAD_FAST 2 @@ -13397,7 +13862,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Canvas_resize = { .fun_data = fun_data_tdui_Canvas_resize, .children = NULL, #if MICROPY_PERSISTENT_CODE_SAVE - .fun_data_len = 97, + .fun_data_len = 108, .n_children = 0, #if MICROPY_EMIT_MACHINE_CODE .prelude_offset = 0, @@ -13411,7 +13876,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Canvas_resize = { .n_pos_args = 3, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 78, + .qstr_block_name_idx = 80, .line_info = fun_data_tdui_Canvas_resize + 9, .line_info_top = fun_data_tdui_Canvas_resize + 9, .opcodes = fun_data_tdui_Canvas_resize + 9, @@ -13425,12 +13890,12 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Canvas_resize = { // child of tdui_Canvas // frozen bytecode for file tdui.py, scope tdui_Canvas_move -static const byte fun_data_tdui_Canvas_move[25] = { +static const byte fun_data_tdui_Canvas_move[26] = { 0x63,0x0e, // prelude - 0x4f,0x81,0x1f,0x81,0x22,0x81,0x23, // names: move, self, x, y + 0x51,0x81,0x2c,0x81,0x2f,0x81,0x30, // names: move, self, x, y // code info 0xb0, // LOAD_FAST 0 - 0x14,0x77, // LOAD_METHOD '_req2' + 0x14,0x81,0x01, // LOAD_METHOD '_req2' 0x91, // LOAD_CONST_SMALL_INT 17 0xb1, // LOAD_FAST 1 0xb2, // LOAD_FAST 2 @@ -13453,7 +13918,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Canvas_move = { .fun_data = fun_data_tdui_Canvas_move, .children = NULL, #if MICROPY_PERSISTENT_CODE_SAVE - .fun_data_len = 25, + .fun_data_len = 26, .n_children = 0, #if MICROPY_EMIT_MACHINE_CODE .prelude_offset = 0, @@ -13467,7 +13932,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Canvas_move = { .n_pos_args = 3, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 79, + .qstr_block_name_idx = 81, .line_info = fun_data_tdui_Canvas_move + 9, .line_info_top = fun_data_tdui_Canvas_move + 9, .opcodes = fun_data_tdui_Canvas_move + 9, @@ -13481,18 +13946,18 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Canvas_move = { // child of tdui_Canvas // frozen bytecode for file tdui.py, scope tdui_Canvas__req2 -static const byte fun_data_tdui_Canvas__req2[49] = { - 0xa1,0x90,0x04,0x24, // prelude - 0x77,0x81,0x1f,0x81,0x06,0x81,0x08,0x81,0x09,0x81,0x0a,0x81,0x0b,0x81,0x0c,0x81,0x0d,0x36, // names: _req2, self, op, a, b, c, d, e, f, text +static const byte fun_data_tdui_Canvas__req2[50] = { + 0xa1,0x90,0x04,0x26, // prelude + 0x81,0x01,0x81,0x2c,0x81,0x11,0x81,0x13,0x81,0x14,0x81,0x15,0x81,0x16,0x81,0x17,0x81,0x18,0x38, // names: _req2, self, op, a, b, c, d, e, f, text // code info 0xb0, // LOAD_FAST 0 - 0x13,0x40, // LOAD_ATTR 'win' - 0x13,0x47, // LOAD_ATTR 'is_open' + 0x13,0x42, // LOAD_ATTR 'win' + 0x13,0x49, // LOAD_ATTR 'is_open' 0x44,0x52, // POP_JUMP_IF_FALSE 18 - 0x12,0x13, // LOAD_GLOBAL '_send' + 0x12,0x14, // LOAD_GLOBAL '_send' 0xb1, // LOAD_FAST 1 0xb0, // LOAD_FAST 0 - 0x13,0x43, // LOAD_ATTR 'id' + 0x13,0x45, // LOAD_ATTR 'id' 0x80, // LOAD_CONST_SMALL_INT 0 0x80, // LOAD_CONST_SMALL_INT 0 0xb2, // LOAD_FAST 2 @@ -13516,7 +13981,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Canvas__req2 = { .fun_data = fun_data_tdui_Canvas__req2, .children = NULL, #if MICROPY_PERSISTENT_CODE_SAVE - .fun_data_len = 49, + .fun_data_len = 50, .n_children = 0, #if MICROPY_EMIT_MACHINE_CODE .prelude_offset = 0, @@ -13530,10 +13995,10 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Canvas__req2 = { .n_pos_args = 9, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 119, - .line_info = fun_data_tdui_Canvas__req2 + 22, - .line_info_top = fun_data_tdui_Canvas__req2 + 22, - .opcodes = fun_data_tdui_Canvas__req2 + 22, + .qstr_block_name_idx = 129, + .line_info = fun_data_tdui_Canvas__req2 + 23, + .line_info_top = fun_data_tdui_Canvas__req2 + 23, + .opcodes = fun_data_tdui_Canvas__req2 + 23, }, #endif #endif @@ -13546,17 +14011,17 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Canvas__req2 = { // frozen bytecode for file tdui.py, scope tdui_Canvas__event static const byte fun_data_tdui_Canvas__event[41] = { 0xeb,0x04,0x1e, // prelude - 0x2a,0x81,0x1f,0x81,0x06,0x81,0x08,0x81,0x09,0x81,0x0a,0x81,0x0b,0x81,0x27, // names: _event, self, op, a, b, c, d, t + 0x2c,0x81,0x2c,0x81,0x11,0x81,0x13,0x81,0x14,0x81,0x15,0x81,0x16,0x81,0x34, // names: _event, self, op, a, b, c, d, t // code info 0xb1, // LOAD_FAST 1 0x85, // LOAD_CONST_SMALL_INT 5 0xd9, // BINARY_OP 2 __eq__ 0x44,0x50, // POP_JUMP_IF_FALSE 16 0xb0, // LOAD_FAST 0 - 0x13,0x75, // LOAD_ATTR 'on_mouse' + 0x13,0x7a, // LOAD_ATTR 'on_mouse' 0x44,0x4b, // POP_JUMP_IF_FALSE 11 0xb0, // LOAD_FAST 0 - 0x14,0x75, // LOAD_METHOD 'on_mouse' + 0x14,0x7a, // LOAD_METHOD 'on_mouse' 0xb0, // LOAD_FAST 0 0xb2, // LOAD_FAST 2 0xb3, // LOAD_FAST 3 @@ -13590,7 +14055,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Canvas__event = { .n_pos_args = 7, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 42, + .qstr_block_name_idx = 44, .line_info = fun_data_tdui_Canvas__event + 18, .line_info_top = fun_data_tdui_Canvas__event + 18, .opcodes = fun_data_tdui_Canvas__event + 18, @@ -13607,6 +14072,11 @@ static const mp_raw_code_t *const children_tdui_Canvas[] = { (const mp_raw_code_t *)&proto_fun_tdui_Canvas_put, (const mp_raw_code_t *)&proto_fun_tdui_Canvas_fill, (const mp_raw_code_t *)&proto_fun_tdui_Canvas_clear, + (const mp_raw_code_t *)&proto_fun_tdui_Canvas_big, + (const mp_raw_code_t *)&proto_fun_tdui_Canvas__page, + (const mp_raw_code_t *)&proto_fun_tdui_Canvas_draw_to, + (const mp_raw_code_t *)&proto_fun_tdui_Canvas_show, + (const mp_raw_code_t *)&proto_fun_tdui_Canvas_copy_page, (const mp_raw_code_t *)&proto_fun_tdui_Canvas_resize, (const mp_raw_code_t *)&proto_fun_tdui_Canvas_move, (const mp_raw_code_t *)&proto_fun_tdui_Canvas__req2, @@ -13621,21 +14091,21 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Canvas = { .fun_data = fun_data_tdui_Canvas, .children = (void *)&children_tdui_Canvas, #if MICROPY_PERSISTENT_CODE_SAVE - .fun_data_len = 71, - .n_children = 8, + .fun_data_len = 106, + .n_children = 13, #if MICROPY_EMIT_MACHINE_CODE .prelude_offset = 0, #endif #if MICROPY_PY_SYS_SETTRACE .line_of_definition = 0, .prelude = { - .n_state = 4, + .n_state = 5, .n_exc_stack = 0, .scope_flags = 0, .n_pos_args = 0, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 15, + .qstr_block_name_idx = 16, .line_info = fun_data_tdui_Canvas + 3, .line_info_top = fun_data_tdui_Canvas + 3, .opcodes = fun_data_tdui_Canvas + 4, @@ -13644,17 +14114,152 @@ static const mp_raw_code_truncated_t proto_fun_tdui_Canvas = { #endif }; +// child of tdui__lt_module_gt_ +// frozen bytecode for file tdui.py, scope tdui_big_size +static const byte fun_data_tdui_big_size[51] = { + 0xb2,0x01,0x08, // prelude + 0x1e,0x38,0x81,0x21, // names: big_size, text, scale + // code info + 0x12,0x81,0x1b, // LOAD_GLOBAL 'len' + 0xb0, // LOAD_FAST 0 + 0x34,0x01, // CALL_FUNCTION 1 + 0xc2, // STORE_FAST 2 + 0xb2, // LOAD_FAST 2 + 0x43,0x43, // POP_JUMP_IF_TRUE 3 + 0x23,0x01, // LOAD_CONST_OBJ 1 + 0x63, // RETURN_VALUE + 0x12,0x81,0x22, // LOAD_GLOBAL 'sum' + 0x32,0x00, // MAKE_FUNCTION 0 + 0xb0, // LOAD_FAST 0 + 0x5e, // GET_ITER + 0x34,0x01, // CALL_FUNCTION 1 + 0x34,0x01, // CALL_FUNCTION 1 + 0xb1, // LOAD_FAST 1 + 0xf4, // BINARY_OP 29 __mul__ + 0xb2, // LOAD_FAST 2 + 0x81, // LOAD_CONST_SMALL_INT 1 + 0xf3, // BINARY_OP 28 __sub__ + 0xb1, // LOAD_FAST 1 + 0xf4, // BINARY_OP 29 __mul__ + 0xf2, // BINARY_OP 27 __add__ + 0xc3, // STORE_FAST 3 + 0xb3, // LOAD_FAST 3 + 0x85, // LOAD_CONST_SMALL_INT 5 + 0xb1, // LOAD_FAST 1 + 0xf4, // BINARY_OP 29 __mul__ + 0x81, // LOAD_CONST_SMALL_INT 1 + 0xf2, // BINARY_OP 27 __add__ + 0x82, // LOAD_CONST_SMALL_INT 2 + 0xf6, // BINARY_OP 31 __floordiv__ + 0x2a,0x02, // BUILD_TUPLE 2 + 0x63, // RETURN_VALUE +}; +// child of tdui_big_size +// frozen bytecode for file tdui.py, scope tdui_big_size__lt_genexpr_gt_ +static const byte fun_data_tdui_big_size__lt_genexpr_gt_[31] = { + 0xb9,0x40,0x08, // prelude + 0x81,0x04,0x81,0x3a, // names: , * + // code info + 0x53, // LOAD_NULL + 0xb0, // LOAD_FAST 0 + 0x53, // LOAD_NULL + 0x53, // LOAD_NULL + 0x4b,0x10, // FOR_ITER 16 + 0xc1, // STORE_FAST 1 + 0xb1, // LOAD_FAST 1 + 0x10,0x81,0x05, // LOAD_CONST_STRING '.:' + 0xdd, // BINARY_OP 6 + 0x44,0x43, // POP_JUMP_IF_FALSE 3 + 0x81, // LOAD_CONST_SMALL_INT 1 + 0x42,0x41, // JUMP 1 + 0x83, // LOAD_CONST_SMALL_INT 3 + 0x67, // YIELD_VALUE + 0x59, // POP_TOP + 0x42,0x2e, // JUMP -18 + 0x51, // LOAD_CONST_NONE + 0x63, // RETURN_VALUE +}; +#if MICROPY_PERSISTENT_CODE_SAVE +static const mp_raw_code_truncated_t proto_fun_tdui_big_size__lt_genexpr_gt_ = { + .proto_fun_indicator[0] = MP_PROTO_FUN_INDICATOR_RAW_CODE_0, + .proto_fun_indicator[1] = MP_PROTO_FUN_INDICATOR_RAW_CODE_1, + .kind = MP_CODE_BYTECODE, + .is_generator = 1, + .fun_data = fun_data_tdui_big_size__lt_genexpr_gt_, + .children = NULL, + #if MICROPY_PERSISTENT_CODE_SAVE + .fun_data_len = 31, + .n_children = 0, + #if MICROPY_EMIT_MACHINE_CODE + .prelude_offset = 0, + #endif + #if MICROPY_PY_SYS_SETTRACE + .line_of_definition = 0, + .prelude = { + .n_state = 8, + .n_exc_stack = 0, + .scope_flags = 1, + .n_pos_args = 1, + .n_kwonly_args = 0, + .n_def_pos_args = 0, + .qstr_block_name_idx = 132, + .line_info = fun_data_tdui_big_size__lt_genexpr_gt_ + 7, + .line_info_top = fun_data_tdui_big_size__lt_genexpr_gt_ + 7, + .opcodes = fun_data_tdui_big_size__lt_genexpr_gt_ + 7, + }, + #endif + #endif +}; +#else +#define proto_fun_tdui_big_size__lt_genexpr_gt_ fun_data_tdui_big_size__lt_genexpr_gt_[0] +#endif + +static const mp_raw_code_t *const children_tdui_big_size[] = { + (const mp_raw_code_t *)&proto_fun_tdui_big_size__lt_genexpr_gt_, +}; + +static const mp_raw_code_truncated_t proto_fun_tdui_big_size = { + .proto_fun_indicator[0] = MP_PROTO_FUN_INDICATOR_RAW_CODE_0, + .proto_fun_indicator[1] = MP_PROTO_FUN_INDICATOR_RAW_CODE_1, + .kind = MP_CODE_BYTECODE, + .is_generator = 0, + .fun_data = fun_data_tdui_big_size, + .children = (void *)&children_tdui_big_size, + #if MICROPY_PERSISTENT_CODE_SAVE + .fun_data_len = 51, + .n_children = 1, + #if MICROPY_EMIT_MACHINE_CODE + .prelude_offset = 0, + #endif + #if MICROPY_PY_SYS_SETTRACE + .line_of_definition = 0, + .prelude = { + .n_state = 7, + .n_exc_stack = 0, + .scope_flags = 0, + .n_pos_args = 2, + .n_kwonly_args = 0, + .n_def_pos_args = 1, + .qstr_block_name_idx = 30, + .line_info = fun_data_tdui_big_size + 7, + .line_info_top = fun_data_tdui_big_size + 7, + .opcodes = fun_data_tdui_big_size + 7, + }, + #endif + #endif +}; + // child of tdui__lt_module_gt_ // frozen bytecode for file tdui.py, scope tdui__run_timers static const byte fun_data_tdui__run_timers[116] = { 0x61,0x06, // prelude - 0x1d,0x81,0x16, // names: _run_timers, left + 0x1f,0x81,0x23, // names: _run_timers, left // code info 0x12,0x03, // LOAD_GLOBAL 'time' - 0x14,0x1e, // LOAD_METHOD 'ticks_ms' + 0x14,0x20, // LOAD_METHOD 'ticks_ms' 0x36,0x00, // CALL_METHOD 0 0xc1, // STORE_FAST 1 - 0x12,0x81,0x02, // LOAD_GLOBAL '_timers' + 0x12,0x81,0x0d, // LOAD_GLOBAL '_timers' 0x51, // LOAD_CONST_NONE 0x51, // LOAD_CONST_NONE 0x2e,0x02, // BUILD_SLICE 2 @@ -13663,56 +14268,56 @@ static const byte fun_data_tdui__run_timers[116] = { 0x4b,0x34, // FOR_ITER 52 0xc2, // STORE_FAST 2 0x12,0x03, // LOAD_GLOBAL 'time' - 0x14,0x1f, // LOAD_METHOD 'ticks_diff' + 0x14,0x21, // LOAD_METHOD 'ticks_diff' 0xb2, // LOAD_FAST 2 - 0x13,0x20, // LOAD_ATTR 'due' + 0x13,0x22, // LOAD_ATTR 'due' 0xb1, // LOAD_FAST 1 0x36,0x02, // CALL_METHOD 2 0x80, // LOAD_CONST_SMALL_INT 0 0xda, // BINARY_OP 3 __le__ 0x44,0x63, // POP_JUMP_IF_FALSE 35 0xb2, // LOAD_FAST 2 - 0x13,0x21, // LOAD_ATTR 'repeat' + 0x13,0x23, // LOAD_ATTR 'repeat' 0x44,0x4f, // POP_JUMP_IF_FALSE 15 0x12,0x03, // LOAD_GLOBAL 'time' - 0x14,0x22, // LOAD_METHOD 'ticks_add' + 0x14,0x24, // LOAD_METHOD 'ticks_add' 0xb1, // LOAD_FAST 1 0xb2, // LOAD_FAST 2 - 0x13,0x23, // LOAD_ATTR 'ms' + 0x13,0x25, // LOAD_ATTR 'ms' 0x36,0x02, // CALL_METHOD 2 0xb2, // LOAD_FAST 2 - 0x18,0x20, // STORE_ATTR 'due' + 0x18,0x22, // STORE_ATTR 'due' 0x42,0x49, // JUMP 9 - 0x12,0x81,0x02, // LOAD_GLOBAL '_timers' - 0x14,0x24, // LOAD_METHOD 'remove' + 0x12,0x81,0x0d, // LOAD_GLOBAL '_timers' + 0x14,0x26, // LOAD_METHOD 'remove' 0xb2, // LOAD_FAST 2 0x36,0x01, // CALL_METHOD 1 0x59, // POP_TOP 0xb2, // LOAD_FAST 2 - 0x14,0x25, // LOAD_METHOD 'fn' + 0x14,0x27, // LOAD_METHOD 'fn' 0x36,0x00, // CALL_METHOD 0 0x59, // POP_TOP 0x42,0x0a, // JUMP -54 0x12,0x03, // LOAD_GLOBAL 'time' - 0x14,0x1e, // LOAD_METHOD 'ticks_ms' + 0x14,0x20, // LOAD_METHOD 'ticks_ms' 0x36,0x00, // CALL_METHOD 0 0xc1, // STORE_FAST 1 - 0x12,0x81,0x02, // LOAD_GLOBAL '_timers' + 0x12,0x81,0x0d, // LOAD_GLOBAL '_timers' 0x5f, // GET_ITER_STACK 0x4b,0x14, // FOR_ITER 20 0xc2, // STORE_FAST 2 - 0x12,0x81,0x17, // LOAD_GLOBAL 'min' + 0x12,0x81,0x24, // LOAD_GLOBAL 'min' 0xb0, // LOAD_FAST 0 0x12,0x03, // LOAD_GLOBAL 'time' - 0x14,0x1f, // LOAD_METHOD 'ticks_diff' + 0x14,0x21, // LOAD_METHOD 'ticks_diff' 0xb2, // LOAD_FAST 2 - 0x13,0x20, // LOAD_ATTR 'due' + 0x13,0x22, // LOAD_ATTR 'due' 0xb1, // LOAD_FAST 1 0x36,0x02, // CALL_METHOD 2 0x34,0x02, // CALL_FUNCTION 2 0xc0, // STORE_FAST 0 0x42,0x2a, // JUMP -22 - 0x12,0x81,0x18, // LOAD_GLOBAL 'max' + 0x12,0x81,0x25, // LOAD_GLOBAL 'max' 0xb0, // LOAD_FAST 0 0x80, // LOAD_CONST_SMALL_INT 0 0x34,0x02, // CALL_FUNCTION 2 @@ -13741,7 +14346,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui__run_timers = { .n_pos_args = 1, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 29, + .qstr_block_name_idx = 31, .line_info = fun_data_tdui__run_timers + 5, .line_info_top = fun_data_tdui__run_timers + 5, .opcodes = fun_data_tdui__run_timers + 5, @@ -13757,7 +14362,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui__run_timers = { // frozen bytecode for file tdui.py, scope tdui__dispatch static const byte fun_data_tdui__dispatch[87] = { 0x81,0x10,0x06, // prelude - 0x26,0x81,0x19, // names: _dispatch, ev + 0x28,0x81,0x26, // names: _dispatch, ev // code info 0xb0, // LOAD_FAST 0 0x30,0x07, // UNPACK_SEQUENCE 7 @@ -13773,13 +14378,13 @@ static const byte fun_data_tdui__dispatch[87] = { 0xd9, // BINARY_OP 2 __eq__ 0x44,0x52, // POP_JUMP_IF_FALSE 18 0xb2, // LOAD_FAST 2 - 0x12,0x81,0x01, // LOAD_GLOBAL '_results' + 0x12,0x81,0x0c, // LOAD_GLOBAL '_results' 0xdd, // BINARY_OP 6 0x44,0x49, // POP_JUMP_IF_FALSE 9 0xb3, // LOAD_FAST 3 0xb7, // LOAD_FAST 7 0x2a,0x02, // BUILD_TUPLE 2 - 0x12,0x81,0x01, // LOAD_GLOBAL '_results' + 0x12,0x81,0x0c, // LOAD_GLOBAL '_results' 0xb2, // LOAD_FAST 2 0x56, // STORE_SUBSCR 0x42,0x6e, // JUMP 46 @@ -13787,16 +14392,16 @@ static const byte fun_data_tdui__dispatch[87] = { 0x87, // LOAD_CONST_SMALL_INT 7 0xd9, // BINARY_OP 2 __eq__ 0x44,0x4e, // POP_JUMP_IF_FALSE 14 - 0x12,0x81,0x1a, // LOAD_GLOBAL 'OSError' - 0x10,0x27, // LOAD_CONST_STRING 'tdui: ' + 0x12,0x81,0x27, // LOAD_GLOBAL 'OSError' + 0x10,0x29, // LOAD_CONST_STRING 'tdui: ' 0xb7, // LOAD_FAST 7 0x45,0x02, // JUMP_IF_TRUE_OR_POP 2 - 0x10,0x28, // LOAD_CONST_STRING 'error' + 0x10,0x2a, // LOAD_CONST_STRING 'error' 0xf2, // BINARY_OP 27 __add__ 0x34,0x01, // CALL_FUNCTION 1 0x65, // RAISE_OBJ - 0x12,0x81,0x00, // LOAD_GLOBAL '_objs' - 0x14,0x29, // LOAD_METHOD 'get' + 0x12,0x81,0x0b, // LOAD_GLOBAL '_objs' + 0x14,0x2b, // LOAD_METHOD 'get' 0xb2, // LOAD_FAST 2 0x36,0x01, // CALL_METHOD 1 0xc8, // STORE_FAST 8 @@ -13806,7 +14411,7 @@ static const byte fun_data_tdui__dispatch[87] = { 0xd3, // UNARY_OP 3 0x44,0x4c, // POP_JUMP_IF_FALSE 12 0xb8, // LOAD_FAST 8 - 0x14,0x2a, // LOAD_METHOD '_event' + 0x14,0x2c, // LOAD_METHOD '_event' 0xb1, // LOAD_FAST 1 0xb3, // LOAD_FAST 3 0xb4, // LOAD_FAST 4 @@ -13841,7 +14446,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui__dispatch = { .n_pos_args = 1, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 38, + .qstr_block_name_idx = 40, .line_info = fun_data_tdui__dispatch + 6, .line_info_top = fun_data_tdui__dispatch + 6, .opcodes = fun_data_tdui__dispatch + 6, @@ -13857,46 +14462,46 @@ static const mp_raw_code_truncated_t proto_fun_tdui__dispatch = { // frozen bytecode for file tdui.py, scope tdui_poll static const byte fun_data_tdui_poll[85] = { 0xd1,0x01,0x04, // prelude - 0x2b,0x23, // names: poll, ms + 0x2d,0x25, // names: poll, ms // code info 0x12,0x03, // LOAD_GLOBAL 'time' - 0x14,0x22, // LOAD_METHOD 'ticks_add' + 0x14,0x24, // LOAD_METHOD 'ticks_add' 0x12,0x03, // LOAD_GLOBAL 'time' - 0x14,0x1e, // LOAD_METHOD 'ticks_ms' + 0x14,0x20, // LOAD_METHOD 'ticks_ms' 0x36,0x00, // CALL_METHOD 0 0xb0, // LOAD_FAST 0 0x36,0x02, // CALL_METHOD 2 0xc1, // STORE_FAST 1 0x12,0x02, // LOAD_GLOBAL '_tdui' - 0x14,0x2c, // LOAD_METHOD 'recv' - 0x12,0x1d, // LOAD_GLOBAL '_run_timers' + 0x14,0x2e, // LOAD_METHOD 'recv' + 0x12,0x1f, // LOAD_GLOBAL '_run_timers' 0x12,0x03, // LOAD_GLOBAL 'time' - 0x14,0x1f, // LOAD_METHOD 'ticks_diff' + 0x14,0x21, // LOAD_METHOD 'ticks_diff' 0xb1, // LOAD_FAST 1 0x12,0x03, // LOAD_GLOBAL 'time' - 0x14,0x1e, // LOAD_METHOD 'ticks_ms' + 0x14,0x20, // LOAD_METHOD 'ticks_ms' 0x36,0x00, // CALL_METHOD 0 0x36,0x02, // CALL_METHOD 2 0x34,0x01, // CALL_FUNCTION 1 0x36,0x01, // CALL_METHOD 1 0xc2, // STORE_FAST 2 0x42,0x4e, // JUMP 14 - 0x12,0x26, // LOAD_GLOBAL '_dispatch' + 0x12,0x28, // LOAD_GLOBAL '_dispatch' 0xb2, // LOAD_FAST 2 0x34,0x01, // CALL_FUNCTION 1 0x59, // POP_TOP 0x12,0x02, // LOAD_GLOBAL '_tdui' - 0x14,0x2c, // LOAD_METHOD 'recv' + 0x14,0x2e, // LOAD_METHOD 'recv' 0x80, // LOAD_CONST_SMALL_INT 0 0x36,0x01, // CALL_METHOD 1 0xc2, // STORE_FAST 2 0xb2, // LOAD_FAST 2 0x43,0x2f, // POP_JUMP_IF_TRUE -17 0x12,0x03, // LOAD_GLOBAL 'time' - 0x14,0x1f, // LOAD_METHOD 'ticks_diff' + 0x14,0x21, // LOAD_METHOD 'ticks_diff' 0xb1, // LOAD_FAST 1 0x12,0x03, // LOAD_GLOBAL 'time' - 0x14,0x1e, // LOAD_METHOD 'ticks_ms' + 0x14,0x20, // LOAD_METHOD 'ticks_ms' 0x36,0x00, // CALL_METHOD 0 0x36,0x02, // CALL_METHOD 2 0x80, // LOAD_CONST_SMALL_INT 0 @@ -13931,7 +14536,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_poll = { .n_pos_args = 1, .n_kwonly_args = 0, .n_def_pos_args = 1, - .qstr_block_name_idx = 43, + .qstr_block_name_idx = 45, .line_info = fun_data_tdui_poll + 5, .line_info_top = fun_data_tdui_poll + 5, .opcodes = fun_data_tdui_poll + 5, @@ -13947,14 +14552,14 @@ static const mp_raw_code_truncated_t proto_fun_tdui_poll = { // frozen bytecode for file tdui.py, scope tdui_run static const byte fun_data_tdui_run[22] = { 0x08,0x02, // prelude - 0x2d, // names: run + 0x2f, // names: run // code info 0x42,0x48, // JUMP 8 - 0x12,0x2b, // LOAD_GLOBAL 'poll' + 0x12,0x2d, // LOAD_GLOBAL 'poll' 0x22,0x80,0x64, // LOAD_CONST_SMALL_INT 100 0x34,0x01, // CALL_FUNCTION 1 0x59, // POP_TOP - 0x12,0x81,0x04, // LOAD_GLOBAL '_windows' + 0x12,0x81,0x0f, // LOAD_GLOBAL '_windows' 0x80, // LOAD_CONST_SMALL_INT 0 0xd8, // BINARY_OP 1 __gt__ 0x43,0x31, // POP_JUMP_IF_TRUE -15 @@ -13984,7 +14589,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_run = { .n_pos_args = 0, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 45, + .qstr_block_name_idx = 47, .line_info = fun_data_tdui_run + 3, .line_info_top = fun_data_tdui_run + 3, .opcodes = fun_data_tdui_run + 3, @@ -14000,26 +14605,26 @@ static const mp_raw_code_truncated_t proto_fun_tdui_run = { // frozen bytecode for file tdui.py, scope tdui_run_async static const byte fun_data_tdui_run_async[36] = { 0x98,0x40,0x02, // prelude - 0x2e, // names: run_async + 0x30, // names: run_async // code info 0x80, // LOAD_CONST_SMALL_INT 0 0x51, // LOAD_CONST_NONE - 0x1b,0x2f, // IMPORT_NAME 'asyncio' + 0x1b,0x31, // IMPORT_NAME 'asyncio' 0xc0, // STORE_FAST 0 0x42,0x50, // JUMP 16 - 0x12,0x2b, // LOAD_GLOBAL 'poll' + 0x12,0x2d, // LOAD_GLOBAL 'poll' 0x80, // LOAD_CONST_SMALL_INT 0 0x34,0x01, // CALL_FUNCTION 1 0x59, // POP_TOP 0xb0, // LOAD_FAST 0 - 0x14,0x30, // LOAD_METHOD 'sleep_ms' + 0x14,0x32, // LOAD_METHOD 'sleep_ms' 0x94, // LOAD_CONST_SMALL_INT 20 0x36,0x01, // CALL_METHOD 1 0x5e, // GET_ITER 0x51, // LOAD_CONST_NONE 0x68, // YIELD_FROM 0x59, // POP_TOP - 0x12,0x81,0x04, // LOAD_GLOBAL '_windows' + 0x12,0x81,0x0f, // LOAD_GLOBAL '_windows' 0x80, // LOAD_CONST_SMALL_INT 0 0xd8, // BINARY_OP 1 __gt__ 0x43,0x29, // POP_JUMP_IF_TRUE -23 @@ -14049,7 +14654,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_run_async = { .n_pos_args = 0, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 46, + .qstr_block_name_idx = 48, .line_info = fun_data_tdui_run_async + 4, .line_info_top = fun_data_tdui_run_async + 4, .opcodes = fun_data_tdui_run_async + 4, @@ -14065,23 +14670,23 @@ static const mp_raw_code_truncated_t proto_fun_tdui_run_async = { // frozen bytecode for file tdui.py, scope tdui_quit static const byte fun_data_tdui_quit[38] = { 0x38,0x02, // prelude - 0x31, // names: quit + 0x33, // names: quit // code info - 0x12,0x5d, // LOAD_GLOBAL 'list' - 0x12,0x81,0x00, // LOAD_GLOBAL '_objs' - 0x14,0x32, // LOAD_METHOD 'values' + 0x12,0x5f, // LOAD_GLOBAL 'list' + 0x12,0x81,0x0b, // LOAD_GLOBAL '_objs' + 0x14,0x34, // LOAD_METHOD 'values' 0x36,0x00, // CALL_METHOD 0 0x34,0x01, // CALL_FUNCTION 1 0x5f, // GET_ITER_STACK 0x4b,0x13, // FOR_ITER 19 0xc0, // STORE_FAST 0 - 0x12,0x81,0x1b, // LOAD_GLOBAL 'isinstance' + 0x12,0x81,0x28, // LOAD_GLOBAL 'isinstance' 0xb0, // LOAD_FAST 0 - 0x12,0x07, // LOAD_GLOBAL 'Window' + 0x12,0x08, // LOAD_GLOBAL 'Window' 0x34,0x02, // CALL_FUNCTION 2 0x44,0x46, // POP_JUMP_IF_FALSE 6 0xb0, // LOAD_FAST 0 - 0x14,0x33, // LOAD_METHOD 'close' + 0x14,0x35, // LOAD_METHOD 'close' 0x36,0x00, // CALL_METHOD 0 0x59, // POP_TOP 0x42,0x2b, // JUMP -21 @@ -14111,7 +14716,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_quit = { .n_pos_args = 0, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 49, + .qstr_block_name_idx = 51, .line_info = fun_data_tdui_quit + 3, .line_info_top = fun_data_tdui_quit + 3, .opcodes = fun_data_tdui_quit + 3, @@ -14127,45 +14732,45 @@ static const mp_raw_code_truncated_t proto_fun_tdui_quit = { // frozen bytecode for file tdui.py, scope tdui__request static const byte fun_data_tdui__request[75] = { 0xef,0x01,0x0c, // prelude - 0x34,0x81,0x06,0x36,0x81,0x07, // names: _request, op, text, flags + 0x36,0x81,0x11,0x38,0x81,0x12, // names: _request, op, text, flags // code info 0x12,0x02, // LOAD_GLOBAL '_tdui' - 0x14,0x35, // LOAD_METHOD 'open' + 0x14,0x37, // LOAD_METHOD 'open' 0x36,0x00, // CALL_METHOD 0 0x59, // POP_TOP - 0x12,0x12, // LOAD_GLOBAL '_new_id' + 0x12,0x13, // LOAD_GLOBAL '_new_id' 0x34,0x00, // CALL_FUNCTION 0 0xc3, // STORE_FAST 3 0x51, // LOAD_CONST_NONE - 0x12,0x81,0x01, // LOAD_GLOBAL '_results' + 0x12,0x81,0x0c, // LOAD_GLOBAL '_results' 0xb3, // LOAD_FAST 3 0x56, // STORE_SUBSCR 0x49,0x24, // SETUP_FINALLY 36 - 0x12,0x13, // LOAD_GLOBAL '_send' + 0x12,0x14, // LOAD_GLOBAL '_send' 0xb0, // LOAD_FAST 0 0xb3, // LOAD_FAST 3 0x80, // LOAD_CONST_SMALL_INT 0 0xb2, // LOAD_FAST 2 - 0x10,0x36, // LOAD_CONST_STRING 'text' + 0x10,0x38, // LOAD_CONST_STRING 'text' 0xb1, // LOAD_FAST 1 0x34,0x82,0x04, // CALL_FUNCTION 260 0x59, // POP_TOP 0x42,0x46, // JUMP 6 - 0x12,0x2b, // LOAD_GLOBAL 'poll' + 0x12,0x2d, // LOAD_GLOBAL 'poll' 0x94, // LOAD_CONST_SMALL_INT 20 0x34,0x01, // CALL_FUNCTION 1 0x59, // POP_TOP - 0x12,0x81,0x01, // LOAD_GLOBAL '_results' + 0x12,0x81,0x0c, // LOAD_GLOBAL '_results' 0xb3, // LOAD_FAST 3 0x55, // LOAD_SUBSCR 0x51, // LOAD_CONST_NONE 0xde, // BINARY_OP 7 0x43,0x31, // POP_JUMP_IF_TRUE -15 - 0x12,0x81,0x01, // LOAD_GLOBAL '_results' + 0x12,0x81,0x0c, // LOAD_GLOBAL '_results' 0xb3, // LOAD_FAST 3 0x55, // LOAD_SUBSCR 0x63, // RETURN_VALUE - 0x12,0x81,0x01, // LOAD_GLOBAL '_results' + 0x12,0x81,0x0c, // LOAD_GLOBAL '_results' 0xb3, // LOAD_FAST 3 0x53, // LOAD_NULL 0x5b, // ROT_THREE @@ -14197,7 +14802,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui__request = { .n_pos_args = 3, .n_kwonly_args = 0, .n_def_pos_args = 1, - .qstr_block_name_idx = 52, + .qstr_block_name_idx = 54, .line_info = fun_data_tdui__request + 9, .line_info_top = fun_data_tdui__request + 9, .opcodes = fun_data_tdui__request + 9, @@ -14213,11 +14818,11 @@ static const mp_raw_code_truncated_t proto_fun_tdui__request = { // frozen bytecode for file tdui.py, scope tdui_msgbox static const byte fun_data_tdui_msgbox[24] = { 0xc3,0x01,0x0a, // prelude - 0x37,0x4c,0x36,0x81,0x1c, // names: msgbox, title, text, buttons + 0x39,0x4e,0x38,0x81,0x29, // names: msgbox, title, text, buttons // code info - 0x12,0x34, // LOAD_GLOBAL '_request' + 0x12,0x36, // LOAD_GLOBAL '_request' 0x8d, // LOAD_CONST_SMALL_INT 13 - 0x10,0x38, // LOAD_CONST_STRING '%s\x00%s\x00%s' + 0x10,0x3a, // LOAD_CONST_STRING '%s\x00%s\x00%s' 0xb0, // LOAD_FAST 0 0xb1, // LOAD_FAST 1 0xb2, // LOAD_FAST 2 @@ -14251,7 +14856,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_msgbox = { .n_pos_args = 3, .n_kwonly_args = 0, .n_def_pos_args = 1, - .qstr_block_name_idx = 55, + .qstr_block_name_idx = 57, .line_info = fun_data_tdui_msgbox + 8, .line_info_top = fun_data_tdui_msgbox + 8, .opcodes = fun_data_tdui_msgbox + 8, @@ -14267,12 +14872,12 @@ static const mp_raw_code_truncated_t proto_fun_tdui_msgbox = { // frozen bytecode for file tdui.py, scope tdui_confirm static const byte fun_data_tdui_confirm[16] = { 0x2a,0x06, // prelude - 0x39,0x4c,0x36, // names: confirm, title, text + 0x3b,0x4e,0x38, // names: confirm, title, text // code info - 0x12,0x37, // LOAD_GLOBAL 'msgbox' + 0x12,0x39, // LOAD_GLOBAL 'msgbox' 0xb0, // LOAD_FAST 0 0xb1, // LOAD_FAST 1 - 0x10,0x3a, // LOAD_CONST_STRING 'Yes|No' + 0x10,0x3c, // LOAD_CONST_STRING 'Yes|No' 0x34,0x03, // CALL_FUNCTION 3 0x80, // LOAD_CONST_SMALL_INT 0 0xd9, // BINARY_OP 2 __eq__ @@ -14301,7 +14906,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_confirm = { .n_pos_args = 2, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 57, + .qstr_block_name_idx = 59, .line_info = fun_data_tdui_confirm + 5, .line_info_top = fun_data_tdui_confirm + 5, .opcodes = fun_data_tdui_confirm + 5, @@ -14317,11 +14922,11 @@ static const mp_raw_code_truncated_t proto_fun_tdui_confirm = { // frozen bytecode for file tdui.py, scope tdui_inputbox static const byte fun_data_tdui_inputbox[48] = { 0xd8,0x84,0x01,0x0e, // prelude - 0x3b,0x4c,0x81,0x1d,0x36,0x81,0x1e, // names: inputbox, title, prompt, text, secret + 0x3d,0x4e,0x81,0x2a,0x38,0x81,0x2b, // names: inputbox, title, prompt, text, secret // code info - 0x12,0x34, // LOAD_GLOBAL '_request' + 0x12,0x36, // LOAD_GLOBAL '_request' 0x8e, // LOAD_CONST_SMALL_INT 14 - 0x10,0x38, // LOAD_CONST_STRING '%s\x00%s\x00%s' + 0x10,0x3a, // LOAD_CONST_STRING '%s\x00%s\x00%s' 0xb0, // LOAD_FAST 0 0xb1, // LOAD_FAST 1 0xb2, // LOAD_FAST 2 @@ -14344,7 +14949,7 @@ static const byte fun_data_tdui_inputbox[48] = { 0x63, // RETURN_VALUE 0xb5, // LOAD_FAST 5 0x45,0x02, // JUMP_IF_TRUE_OR_POP 2 - 0x10,0x11, // LOAD_CONST_STRING '' + 0x10,0x12, // LOAD_CONST_STRING '' 0x63, // RETURN_VALUE }; #if MICROPY_PERSISTENT_CODE_SAVE @@ -14370,7 +14975,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_inputbox = { .n_pos_args = 4, .n_kwonly_args = 0, .n_def_pos_args = 2, - .qstr_block_name_idx = 59, + .qstr_block_name_idx = 61, .line_info = fun_data_tdui_inputbox + 11, .line_info_top = fun_data_tdui_inputbox + 11, .opcodes = fun_data_tdui_inputbox + 11, @@ -14386,12 +14991,12 @@ static const mp_raw_code_truncated_t proto_fun_tdui_inputbox = { // frozen bytecode for file tdui.py, scope tdui_menu static const byte fun_data_tdui_menu[29] = { 0x41,0x04, // prelude - 0x3c,0x70, // names: menu, items + 0x3e,0x72, // names: menu, items // code info - 0x12,0x34, // LOAD_GLOBAL '_request' + 0x12,0x36, // LOAD_GLOBAL '_request' 0x8f, // LOAD_CONST_SMALL_INT 15 - 0x10,0x3d, // LOAD_CONST_STRING '\x00' - 0x14,0x3e, // LOAD_METHOD 'join' + 0x10,0x3f, // LOAD_CONST_STRING '\x00' + 0x14,0x40, // LOAD_METHOD 'join' 0x32,0x00, // MAKE_FUNCTION 0 0xb0, // LOAD_FAST 0 0x51, // LOAD_CONST_NONE @@ -14408,9 +15013,9 @@ static const byte fun_data_tdui_menu[29] = { }; // child of tdui_menu // frozen bytecode for file tdui.py, scope tdui_menu__lt_genexpr_gt_ -static const byte fun_data_tdui_menu__lt_genexpr_gt_[25] = { - 0xb9,0x40,0x06, // prelude - 0x7a,0x81,0x2d, // names: , * +static const byte fun_data_tdui_menu__lt_genexpr_gt_[26] = { + 0xb9,0x40,0x08, // prelude + 0x81,0x04,0x81,0x3a, // names: , * // code info 0x53, // LOAD_NULL 0xb0, // LOAD_FAST 0 @@ -14418,7 +15023,7 @@ static const byte fun_data_tdui_menu__lt_genexpr_gt_[25] = { 0x53, // LOAD_NULL 0x4b,0x0b, // FOR_ITER 11 0xc1, // STORE_FAST 1 - 0x12,0x81,0x26, // LOAD_GLOBAL 'str' + 0x12,0x81,0x33, // LOAD_GLOBAL 'str' 0xb1, // LOAD_FAST 1 0x34,0x01, // CALL_FUNCTION 1 0x67, // YIELD_VALUE @@ -14436,7 +15041,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_menu__lt_genexpr_gt_ = { .fun_data = fun_data_tdui_menu__lt_genexpr_gt_, .children = NULL, #if MICROPY_PERSISTENT_CODE_SAVE - .fun_data_len = 25, + .fun_data_len = 26, .n_children = 0, #if MICROPY_EMIT_MACHINE_CODE .prelude_offset = 0, @@ -14450,10 +15055,10 @@ static const mp_raw_code_truncated_t proto_fun_tdui_menu__lt_genexpr_gt_ = { .n_pos_args = 1, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 122, - .line_info = fun_data_tdui_menu__lt_genexpr_gt_ + 6, - .line_info_top = fun_data_tdui_menu__lt_genexpr_gt_ + 6, - .opcodes = fun_data_tdui_menu__lt_genexpr_gt_ + 6, + .qstr_block_name_idx = 132, + .line_info = fun_data_tdui_menu__lt_genexpr_gt_ + 7, + .line_info_top = fun_data_tdui_menu__lt_genexpr_gt_ + 7, + .opcodes = fun_data_tdui_menu__lt_genexpr_gt_ + 7, }, #endif #endif @@ -14488,7 +15093,7 @@ static const mp_raw_code_truncated_t proto_fun_tdui_menu = { .n_pos_args = 1, .n_kwonly_args = 0, .n_def_pos_args = 0, - .qstr_block_name_idx = 60, + .qstr_block_name_idx = 62, .line_info = fun_data_tdui_menu + 4, .line_info_top = fun_data_tdui_menu + 4, .opcodes = fun_data_tdui_menu + 4, @@ -14513,6 +15118,7 @@ static const mp_raw_code_t *const children_tdui__lt_module_gt_[] = { (const mp_raw_code_t *)&proto_fun_tdui_Progress, (const mp_raw_code_t *)&proto_fun_tdui_List, (const mp_raw_code_t *)&proto_fun_tdui_Canvas, + (const mp_raw_code_t *)&proto_fun_tdui_big_size, (const mp_raw_code_t *)&proto_fun_tdui__run_timers, (const mp_raw_code_t *)&proto_fun_tdui__dispatch, (const mp_raw_code_t *)&proto_fun_tdui_poll, @@ -14534,8 +15140,8 @@ static const mp_raw_code_truncated_t proto_fun_tdui__lt_module_gt_ = { .fun_data = fun_data_tdui__lt_module_gt_, .children = (void *)&children_tdui__lt_module_gt_, #if MICROPY_PERSISTENT_CODE_SAVE - .fun_data_len = 274, - .n_children = 26, + .fun_data_len = 290, + .n_children = 27, #if MICROPY_EMIT_MACHINE_CODE .prelude_offset = 0, #endif @@ -14557,13 +15163,14 @@ static const mp_raw_code_truncated_t proto_fun_tdui__lt_module_gt_ = { #endif }; -static const qstr_short_t const_qstr_table_data_tdui[179] = { +static const qstr_short_t const_qstr_table_data_tdui[196] = { MP_QSTR_tdui_dot_py, MP_QSTR__lt_module_gt_, MP_QSTR__tdui, MP_QSTR_time, MP_QSTR_const, MP_QSTR_micropython, + MP_QSTR_MAX_CELLS, MP_QSTR_Timer, MP_QSTR_Window, MP_QSTR__Widget, @@ -14587,6 +15194,7 @@ static const qstr_short_t const_qstr_table_data_tdui[179] = { MP_QSTR_after, MP_QSTR_setter, MP_QSTR__space_, + MP_QSTR_big_size, MP_QSTR__run_timers, MP_QSTR_ticks_ms, MP_QSTR_ticks_diff, @@ -14675,16 +15283,25 @@ static const qstr_short_t const_qstr_table_data_tdui[179] = { MP_QSTR_replace, MP_QSTR__0x0a_, MP_QSTR_selected, + MP_QSTR_pages, + MP_QSTR_drawing, + MP_QSTR_showing, MP_QSTR_on_mouse, MP_QSTR_put, - MP_QSTR__req2, MP_QSTR_fill, MP_QSTR_clear, + MP_QSTR_big, + MP_QSTR__page, + MP_QSTR_draw_to, + MP_QSTR__req2, + MP_QSTR_show, + MP_QSTR_copy_page, MP_QSTR__lt_genexpr_gt_, + MP_QSTR__dot__colon_, MP_QSTR__lt_listcomp_gt_, MP_QSTR_MAX_WINDOWS, MP_QSTR_MAX_WIDGETS, - MP_QSTR_MAX_CELLS, + MP_QSTR_MAX_PAGES, MP_QSTR__KEYS, MP_QSTR__objs, MP_QSTR__results, @@ -14708,6 +15325,8 @@ static const qstr_short_t const_qstr_table_data_tdui[179] = { MP_QSTR___module__, MP_QSTR___qualname__, MP_QSTR_property, + MP_QSTR_scale, + MP_QSTR_sum, MP_QSTR_left, MP_QSTR_min, MP_QSTR_max, @@ -14737,6 +15356,10 @@ static const qstr_short_t const_qstr_table_data_tdui[179] = { MP_QSTR_item, MP_QSTR_i, MP_QSTR_ch, + MP_QSTR_n, + MP_QSTR_page, + MP_QSTR_src, + MP_QSTR_dst, }; // constants @@ -14768,18 +15391,25 @@ static const mp_rom_obj_tuple_t const_obj_tdui_0 = {{&mp_type_tuple}, 26, { MP_ROM_QSTR(MP_QSTR_f11), MP_ROM_QSTR(MP_QSTR_f12), }}; -static const mp_obj_str_t const_obj_tdui_3 = {{&mp_type_str}, 14414, 26, (const byte*)"\x74\x64\x75\x69\x3a\x20\x74\x68\x65\x20\x77\x69\x6e\x64\x6f\x77\x20\x69\x73\x20\x63\x6c\x6f\x73\x65\x64"}; -static const mp_obj_str_t const_obj_tdui_6 = {{&mp_type_str}, 48006, 45, (const byte*)"\x74\x64\x75\x69\x3a\x20\x63\x61\x6e\x76\x61\x73\x65\x73\x20\x61\x72\x65\x20\x6c\x69\x6d\x69\x74\x65\x64\x20\x74\x6f\x20\x25\x64\x20\x63\x65\x6c\x6c\x73\x20\x69\x6e\x20\x61\x6c\x6c"}; +static const mp_rom_obj_tuple_t const_obj_tdui_1 = {{&mp_type_tuple}, 2, { + MP_ROM_INT(0), + MP_ROM_INT(0), +}}; +static const mp_obj_str_t const_obj_tdui_4 = {{&mp_type_str}, 14414, 26, (const byte*)"\x74\x64\x75\x69\x3a\x20\x74\x68\x65\x20\x77\x69\x6e\x64\x6f\x77\x20\x69\x73\x20\x63\x6c\x6f\x73\x65\x64"}; +static const mp_obj_str_t const_obj_tdui_8 = {{&mp_type_str}, 48006, 45, (const byte*)"\x74\x64\x75\x69\x3a\x20\x63\x61\x6e\x76\x61\x73\x65\x73\x20\x61\x72\x65\x20\x6c\x69\x6d\x69\x74\x65\x64\x20\x74\x6f\x20\x25\x64\x20\x63\x65\x6c\x6c\x73\x20\x69\x6e\x20\x61\x6c\x6c"}; // constant table -static const mp_rom_obj_t const_obj_table_data_tdui[7] = { +static const mp_rom_obj_t const_obj_table_data_tdui[10] = { MP_ROM_PTR(&const_obj_tdui_0), + MP_ROM_PTR(&const_obj_tdui_1), MP_ROM_QSTR(MP_QSTR_tdui_colon__space_at_space_most_space__percent_d_space_windows), MP_ROM_QSTR(MP_QSTR_window_space_size), - MP_ROM_PTR(&const_obj_tdui_3), + MP_ROM_PTR(&const_obj_tdui_4), MP_ROM_QSTR(MP_QSTR_tdui_colon__space_at_space_most_space__percent_d_space_widgets), MP_ROM_QSTR(MP_QSTR_canvas_space_size), - MP_ROM_PTR(&const_obj_tdui_6), + MP_ROM_QSTR(MP_QSTR_canvas_space_pages_colon__space_1_space_to_space__percent_d), + MP_ROM_PTR(&const_obj_tdui_8), + MP_ROM_QSTR(MP_QSTR_canvas_space_page_colon__space_0_space_to_space__percent_d), }; static const mp_frozen_module_t frozen_module_tdui = { @@ -14832,15 +15462,15 @@ MICROPY_FROZEN_LIST_ITEM("tdui", "tdui.py") /* byte sizes: -qstr content: 282 unique, 3146 bytes -bc content: 8669 +qstr content: 297 unique, 3316 bytes +bc content: 9090 const str content: 102 const int content: 0 const obj content: 48 const table qstr content: 0 entries, 0 bytes -const table ptr content: 23 entries, 92 bytes -raw code content: 187 * 4 = 2992 +const table ptr content: 26 entries, 104 bytes +raw code content: 194 * 4 = 3104 mp_frozen_mpy_names_content: 125 mp_frozen_mpy_content_size: 32 -total: 15206 +total: 15921 */ diff --git a/third_party/micropython/genhdr/mpversion.h b/third_party/micropython/genhdr/mpversion.h index 44258fb..3b38fa7 100644 --- a/third_party/micropython/genhdr/mpversion.h +++ b/third_party/micropython/genhdr/mpversion.h @@ -1,4 +1,4 @@ // This file was generated by py/makeversionhdr.py #define MICROPY_GIT_TAG "v1.29.0" #define MICROPY_GIT_HASH "0fd6c57" -#define MICROPY_BUILD_DATE "2026-10-29" +#define MICROPY_BUILD_DATE "2026-11-01" diff --git a/third_party/micropython/genhdr/qstrdefs.generated.h b/third_party/micropython/genhdr/qstrdefs.generated.h index 515d279..da0cd0a 100644 --- a/third_party/micropython/genhdr/qstrdefs.generated.h +++ b/third_party/micropython/genhdr/qstrdefs.generated.h @@ -211,6 +211,7 @@ QDEF1(MP_QSTR_IOBase, 48694, 6, "IOBase") QDEF1(MP_QSTR_IRQ_FALLING, 49207, 11, "IRQ_FALLING") QDEF1(MP_QSTR_IRQ_RISING, 60792, 10, "IRQ_RISING") QDEF1(MP_QSTR_LSB, 57048, 3, "LSB") +QDEF1(MP_QSTR_MAX_CELLS, 26651, 9, "MAX_CELLS") QDEF1(MP_QSTR_MSB, 51801, 3, "MSB") QDEF1(MP_QSTR_None, 53615, 4, "None") QDEF1(MP_QSTR_NotImplemented, 50750, 14, "NotImplemented")