( build: uxnasm src/dexe.tal dexe.ram | start: uxnemu dexe.rom ) |00 @System/vector $2 &expansion $2 &wst $1 &rst $1 &metadata $2 &r $2 &g $2 &b $2 &debug $1 &state $1 |10 @Console/vector $2 &read $5 &type $1 &write $1 &error $1 |20 @Screen/vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 |80 @Controller/vector $2 &button $1 &key $1 |90 @Mouse/vector $2 &x $2 &y $2 &state $1 &pad $3 &sx $2 &sy $1 &sy-lb $1 |a0 @File/vector $2 &success $1 &success-lb $1 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 |000 @src/buf $40 &cap $1 &changed $1 @sel/a $2 &b $2 &scroll $1 &nibble $1 @project/length $2 &cap $2 |100 @on-reset ( -> ) ( | meta ) ;meta #06 DEO2 ( | theme ) theme/ ( | size 3bx25 ) #0270 #0130 window/ header/ ( | unlock ) ;src/on-console .Console/vector DEO2 ;on-mouse .Mouse/vector DEO2 ;on-button .Controller/vector DEO2 ( | loader ) .Console/type DEI ?{ project/ BRK } BRK @meta 00 ( name ) "Dexe 0a ( details ) "A 20 "Hex 20 "Editor 0a ( author ) "By 20 "Devine 20 "Lu 20 "Linvega 0a ( date ) "6 20 "Apr 20 "2025 $1 01 ( - ) 0a =manifest/dat @manifest/dat ( . ) ={ =dict/dexe ( - ) 01 "n =project/ =dict/new ( - ) 01 "o =browser/ =dict/load ( - ) 01 "s =project/ =dict/save ( - ) 01 "q =project/ =dict/quit } ={ =dict/edit ( - ) 01 "c =snarf/ =dict/copy ( - ) 01 "v =snarf/ =dict/paste ( - ) 00 1b =sel/ =dict/deselect ( - ) 00 08 =sel/ =dict/erase ( - ) 01 0d =project/ $2 } ={ =dict/move ( - ) 10 00 =sel/ =dict/move-u ( - ) 20 00 =sel/ =dict/move-d ( - ) 40 00 =sel/ =dict/move-l ( - ) 80 00 =sel/ =dict/move-r ( - ) 14 00 =sel/ =dict/size-u ( - ) 24 00 =sel/ =dict/size-d ( - ) 44 00 =sel/ =dict/size-l ( - ) 84 00 =sel/ =dict/size-r ( - ) 11 00 =sel/ =dict/jump-u ( - ) 21 00 =sel/ =dict/jump-d } ( ) $1 @src/default-name "untitled.bin $1 ( @|vectors ) %get-page ( addr* -- addr* ) { [ LIT2 00 -sel/scroll ] LDZ #80 SFT2 ADD2 ;project/mem ADD2 } @on-button ( -> ) .Controller/button DEI2 manifest/scan INC2k ORA ?{ ( insert ) POP2 .Controller/key DEI sel/ BRK } ( * ) JSR2 BRK @on-mouse ( -> ) cursor/ .Mouse/sy-lb DEI DUP ?&on-scroll POP .Screen/x DEI2 ( | handlers ) DUP2 #004c LTH2 ?/lines DUP2 #0054 LTH2 ?/nothing DUP2 #01d4 LTH2 ?/data DUP2 #01dc LTH2 ?/nothing DUP2 #025c LTH2 ?/ascii POP2 BRK @on-mouse/on-scroll ( y -> ) .sel/scroll LDZ ADD sel/ BRK @on-mouse/ascii ( x* -> ) #01dc SUB2 #03 SFT2 STH2 ( | touch ) [ LIT2 &last-ascii $1 -Mouse/state ] DEI DUP ,&last-ascii STR ( | down handler ) DUP2 #0001 NEQ2 ?{ .Mouse/y DEI2 #0028 SUB2 #44 SFT2 STH2kr ADD2 get-page sel/ } ( | drag handler ) DUP2 #0101 NEQ2 ?{ .Mouse/y DEI2 #0028 SUB2 #44 SFT2 STH2kr ADD2 get-page sel/ } POP2 POP2r BRK @on-mouse/lines ( x* -> ) POP2 ( | touch ) [ LIT2 &last-lines $1 -Mouse/state ] DEI DUP ,&last-lines STR ( | down handler ) DUP2 #0001 NEQ2 ?{ .Mouse/y DEI2 #0028 SUB2 #44 SFT2 get-page DUP2 #000f ADD2 sel/ } ( | drag handler ) DUP2 #0101 NEQ2 ?{ .Mouse/y DEI2 #0028 SUB2 #44 SFT2 get-page #000f ADD2 sel/ } POP2 BRK @on-mouse/nothing ( x* -> ) POP2 BRK @on-mouse/data ( x* -> ) #0054 SUB2 #0018 DIV2 STH2 ( | touch ) [ LIT2 &last-data $1 -Mouse/state ] DEI DUP ,&last-data STR ( | down handler ) DUP2 #0001 NEQ2 ?{ .Mouse/y DEI2 #0028 SUB2 #44 SFT2 STH2kr ADD2 get-page sel/ } ( | drag handler ) DUP2 #0101 NEQ2 ?{ .Mouse/y DEI2 #0028 SUB2 #44 SFT2 STH2kr ADD2 get-page sel/ } POP2 POP2r BRK ( @|selection ) @sel/ ( -- ) .&b LDZ2 INC2 .&a LDZ2 &>le ( -- ) DUP2 #00 ROT ROT STA INC2 GTH2k ?&>le POP2 POP2 POPr src/change !page/ @sel/ ( c -- ) chex INCk ?{ POP JMP2r } STH .&b LDZ2 INC2 .&a LDZ2 &>li ( -- ) DUP2 STHkr / INC2 GTH2k ?&>li POP2 POP2 POPr [ LIT2 00 -&nibble ] LDZ EQU .&nibble STZ src/change !page/ @sel/ ( addr* nib -- ) STH .&nibble LDZ ?{ LDAk #0f AND STHr #40 SFT ORA ROT ROT STA JMP2r } LDAk #f0 AND STHr ORA ROT ROT STA JMP2r @sel/ ( change -- ) DUP #ff EQU ?{ DUP .&scroll LDZ EQU ?{ .&scroll STZ !page/ } } POP JMP2r @sel/ ( -- ) .&b LDZ2 #0100 SUB2 !/ @sel/ ( -- ) .&b LDZ2 #0100 ADD2 !/ @sel/ ( -- ) .&b LDZ2 #0010 SUB2 !/ @sel/ ( -- ) .&b LDZ2 #0010 ADD2 !/ @sel/ ( -- ) .&b LDZ2 #0001 SUB2 !/ @sel/ ( -- ) .&b LDZ2 INC2 !/ @sel/ ( -- ) .&b LDZ2 #0010 SUB2 !/ @sel/ ( -- ) .&b LDZ2 #0010 ADD2 !/ @sel/ ( -- ) .&b LDZ2 #0001 SUB2 !/ @sel/ ( -- ) .&b LDZ2 INC2 !/ @sel/clamp ( addr* -- addr* ) ( clamp mem ) ;project/mem GTH2k [ JMP SWP2 ] POP2 ( clamp cap ) .project/cap LDZ2 LTH2k [ JMP SWP2 ] POP2 JMP2r @sel/follow ( addr* -- addr* ) DUP2 ;project/mem SUB2 POP .&scroll STZ JMP2r @sel/ ( -- ) .&a LDZ2 .&b STZ2 [ LIT2 00 -&nibble ] STZ !page/ @sel/ ( addr* -- ) /clamp ( changed ) DUP2 .&a LDZ2 NEQ2 ?{ POP2 JMP2r } ( | set ) DUP2 .&a STZ2 /follow .&b STZ2 [ LIT2 00 -&nibble ] STZ !page/ @sel/ ( addr* -- ) /clamp .&a LDZ2 GTH2k [ JMP SWP2 ] POP2 ( changed ) DUP2 .&b LDZ2 NEQ2 ?{ POP2 JMP2r } ( | set ) /follow .&b STZ2 [ LIT2 00 -&nibble ] STZ !page/ @sel/ ( a* b* -- ) /clamp SWP2 /clamp SWP2 ( | greater than a ) DUP2 .&b LDZ2 NEQ2 STH OVR2 .&a LDZ2 NEQ2 STHr AND ?{ POP2 POP2 JMP2r } .&b STZ2 .&a STZ2 [ LIT2 00 -&nibble ] STZ !page/ @sel/get-length ( -- length* ) .&b LDZ2 .&a LDZ2 SUB2 INC2 JMP2r ( @|page ) @is-selected ( addr* -- f ) DUP2 .sel/a LDZ2 LTH2 ?{ DUP2 .sel/b LDZ2 GTH2 ?{ POP2 #01 JMP2r } } POP2 #00 JMP2r @page/get-color ( addr* -- color ) DUP2 .project/cap LDZ2 LTH2 ?{ POP2 #02 JMP2r } is-selected ?{ #01 JMP2r } #09 JMP2r @page/ ( -- ) #0012 .Screen/y DEO2 #0000 .Screen/x DEO2 [ LIT2 85 -Screen/width ] DEI2 #03 SFT2 SUB ;bar-chr #25 / / / / JMP2r @page/ ( -- ) #0010 .Screen/x DEO2 #0012 .Screen/y DEO2 ;dict/line #05 monaco/ #0018 .Screen/y DEO2 #1000 &>ll ( -- ) #0010 .Screen/x DEO2 .Screen/y DEI2k #0010 ADD2 ROT DEO2 #00 OVR #40 SFT2 get-page /get-color ;monaco/color STA #00 OVR #40 SFT2 [ LIT2 00 -sel/scroll ] LDZ #80 SFT2 ADD2 monaco/ INC GTHk ?&>ll POP2 ( | line ) #0012 .Screen/y DEO2 .Screen/x DEI2k #0008 ADD2 ROT DEO2 [ LIT2 05 -Screen/height ] DEI2 #03 SFT2 SUB ;linver-icn #02 ! @page/ ( -- ) [ LIT2 15 -Screen/auto ] DEO #0018 .Screen/y DEO2 #1000 &>li ( -- ) #0040 .Screen/x DEO2 .Screen/y DEI2k #0010 ADD2 ROT DEO2 #00 OVR #40 SFT2 get-page DUP2 /get-color STH .Screen/addr DEO2 [ LITr -Screen/sprite ] DEOr INC GTHk ?&>li POP2 ( | line ) #0012 .Screen/y DEO2 .Screen/x DEI2k #0008 ADD2 ROT DEO2 [ LIT2 05 -Screen/height ] DEI2 #03 SFT2 SUB ;linver-icn #02 ! @page/ ( -- ) #0058 .Screen/x DEO2 #0012 .Screen/y DEO2 ;dict/data #05 monaco/ #0018 .Screen/y DEO2 #00 &>lh ( -- ) DUP #0f AND ?{ #0058 .Screen/x DEO2 .Screen/y DEI2k #0010 ADD2 ROT DEO2 } #00 OVR get-page DUP2 /get-color ;monaco/color STA LDA monaco/ #20 monaco/ INC DUP ?&>lh POP ( | line ) #0012 .Screen/y DEO2 [ LIT2 05 -Screen/height ] DEI2 #03 SFT2 SUB ;linver-icn #02 ( | selection ) #01b0 .Screen/x DEO2 #0012 .Screen/y DEO2 [ LIT2 15 -Screen/auto ] DEO #09 ;monaco/color STA .sel/b LDZ2 DUP2 ;project/mem SUB2 monaco/ .sel/a LDZ2 EQU2 ?{ #0188 .Screen/x DEO2 .sel/a LDZ2 ;project/mem SUB2 monaco/ [ LIT "- ] monaco/ #0d ;monaco/color STA #0160 .Screen/x DEO2 sel/get-length !monaco/ } JMP2r @page/ ( -- ) #01e0 .Screen/x DEO2 #0012 .Screen/y DEO2 ;dict/ascii #05 monaco/ #0018 .Screen/y DEO2 #00 &>la ( -- ) DUP #0f AND ?{ #01e0 .Screen/x DEO2 .Screen/y DEI2k #0010 ADD2 ROT DEO2 } #00 OVR get-page DUP2 /get-color ;monaco/color STA LDA monaco/ INC DUP ?&>la POP JMP2r ( @|drawing ) @ ( -- ) #0000 .Screen/x DEO2 #0012 .Screen/y DEO2 [ LIT2 80 -Screen/pixel ] DEO header/ !page/ ( @|project ) @project/ ( -- ) ;&mem .&length LDZ2 #0480 / ;&mem sel/ src/ src/ ! @project/ ( -- ) ;src/buf .File/name DEO2 .&length LDZ2 .File/length DEO2 ;&mem .File/write DEO2 !src/ @project/ ( -- ) ;&mem .&length LDZ2 ;src/buf .File/name DEO2 #8000 .File/length DEO2 ;&mem .File/read DEO2 .File/success DEI2 / ;&mem sel/ src/ ! @project/ ( -- ) snarf/ ;&mem .&length LDZ2 ;&mem sel/ snarf/ .File/success DEI2 / src/change ! @project/ ( length* -- ) DUP2 .&length STZ2 ;&mem ADD2 .&cap STZ2 JMP2r @project/ ( -- ) #800f JMP2r @snarf/ ( -- ) ;&path .File/name DEO2 sel/get-length .File/length DEO2 .sel/a LDZ2 .File/write DEO2 JMP2r @snarf/ ( -- ) ;&path .File/name DEO2 sel/get-length DUP2 #0001 NEQ2 ?{ POP2 #1000 } .File/length DEO2 .sel/a LDZ2 .File/read DEO2 src/change !page/ &path ".snarf $1 ( @|monaco ) @monaco/ ( str* color -- ) ,&color STR ( >> ) @monaco/ ( str* -- ) [ LIT2 15 -Screen/auto ] DEO &>l ( -- ) LDAk DUP ?{ POP POP2 JMP2r } / INC2 !&>l @monaco/ ( short* -- ) SWP / ( >> ) @monaco/ ( byte -- ) DUP #04 SFT / ( >> ) @monaco/ ( lb -- ) #0f AND DUP #09 GTH #27 MUL ADD [ LIT "0 ] ADD ( >> ) @monaco/ ( c -- ) #00 SWP #20 SUB #40 SFT2 ;&font ADD2 .Screen/addr DEO2 [ LIT2 &color 05 -Screen/sprite ] DEO JMP2r @monaco/ ( c -- ) DUP #1f GTH OVR #7f LTH AND ?{ POP [ LIT ". ] } !/ @chex ( str* c -- str* ) [ LIT "0 ] SUB DUP #0a LTH ?{ #27 SUB DUP #10 LTH ?{ POP #ff } } JMP2r @dict &dexe "Dexe $1 &new "New $1 &load "Load $1 &save "Save $1 &quit "Quit $1 &edit "Edit $1 © "Copy $1 &paste "Paste $1 &deselect "Deselect $1 &erase "Erase $1 &move "Move $1 &move-u "Move 20 "Up $1 &move-d "Move 20 "Down $1 &move-l "Move 20 "Left $1 &move-r "Move 20 "Right $1 &size-u "Size 20 "Up $1 &size-d "Size 20 "Down $1 &size-l "Size 20 "Left $1 &size-r "Size 20 "Right $1 &jump-u "Jump 20 "Up $1 &jump-d "Jump 20 "Down $1 &line "line $1 &data "data $1 &ascii "ascii $1 ( @|browser ) @browser/on-mouse ( -> ) cursor/ ( x ) .Mouse/x DEI2 #0010 SUB2 ( y ) .Mouse/y DEI2 #001c SUB2 ( test x ) OVR2 #7fff GTH2 ?/on-mouse-outside ( test y ) DUP2 #006f GTH2 ?/on-mouse-outside #04 SFT2 STH POP #07 SFT2 NIP #07 MUL STHr ADD ( | state ) [ LIT2 &last $1 -Mouse/state ] DEI DUP ,&last STR ( | handlers ) DUP2 #0001 NEQ2 ?{ POP2 / ( id -- ) STH [ LITr 00 ] ;&buf &>ws ( -- ) STH2kr EQU ?{ LDAk #0a NEQ ?{ INCr } INC2 LDAk ?&>ws } POP2r LDAk ?{ POP2 JMP2r } #0005 ADD2 src/ / !project/ @browser/ ( -- ) ;&buf #0200 ;&path .File/name DEO2 #0200 .File/length DEO2 ;&buf .File/read DEO2 ( | count entries ) [ LITr 00 ] ;&buf &>wc ( -- ) LDAk #0a NEQ ?{ INCr } INC2 LDAk ?&>wc POP2 LITr _&lines STRr JMP2r &path ". $1 @browser/ ( mod -- ) ;&selected LDA ADD @browser/ ( id -- ) DUP ;&selected LDA NEQ ?{ POP JMP2r } DUP [ LIT &lines $1 ] LTH ?{ POP JMP2r } ;&selected STA ( >> ) @browser/ ( -- ) .Screen/width DEI2 #03 SFT2 SUB STH #0000 .Screen/x DEO2 #0011 .Screen/y DEO2 #09 STHkr ;halftone-icn #f1 #0000 .Screen/x DEO2 #0012 .Screen/y DEO2 #02 STHkr ;fill-icn #f1 #0000 .Screen/x DEO2 #0092 .Screen/y DEO2 #85 STHr ;&wavey-chr #01 #001a .Screen/y DEO2 ;&buf [ LIT2r 0000 ] &>w ( -- ) ( x ) STH2kr #07 DIV #70 SFT2 #0008 ADD2 .Screen/x DEO2 ( y ) STH2kr #07 DIVk MUL SUB #40 SFT2 #001a ADD2 .Screen/y DEO2 STHkr [ LIT &selected ff ] / .Screen/y DEI2k #0010 ADD2 ROT DEO2 INCr LDAk ?&>w POP2 POP2r JMP2r @browser/ ( str* id sel -- cap* ) [ LIT2 15 -Screen/auto ] DEO EQU ?{ .Screen/x DEI2k #0008 ADD2 ROT DEO2 #0005 ADD2 /get-color !chicago/ } ;&cap-left .Screen/addr DEO2 [ LIT2r 09 -Screen/sprite ] DEOkr #0005 ADD2 #04 chicago/ ;&cap-right .Screen/addr DEO2 DEOkr DEOr JMP2r @browser/get-color ( str* -- str* f ) DUP2 &>wcap ( -- ) INC2k LDA #20 LTH ?{ INC2 !&>wcap } LDA LIT "/ EQU ?{ #09 JMP2r } #0f JMP2r ( @|browser-assets ) @browser/wavey-chr [ 0000 8344 3800 0000 ffff 7c38 0000 0000 ] &cap-left [ 070f 0f0f 0f0f 0f0f 0f0f 0f0f 0f0f 0f07 ] &cap-right [ 80c0 e0f0 f8fc feff fffe fcf8 f0e0 c080 0000 0000 0000 0000 0000 0000 0000 0000 ] ( @|extras ) @header/ ( -- ) .Screen/width DEI2 #01 SFT2 .Screen/x DEO2 #0001 .Screen/y DEO2 #09 ;chicago/color STA [ LIT2 15 -Screen/auto ] DEO .Screen/x DEI2 ;src/buf chicago/get-str-width #01 SFT2 SUB2 .Screen/x DEO2 #20 chicago/ ;src/buf chicago/ [ LIT2 00 -src/changed ] LDZ EQU ?{ [ LIT "* ] chicago/ } #20 chicago/ ( | clip ) .Screen/y DEI2k #0001 SUB2 ROT DEO2 ;header/bg-chr .Screen/addr DEO2k [ LIT2r 81 -Screen/sprite ] DEOkr DEO2 DEOr JMP2r ( @|src ) @src/on-console ( -> ) .Console/read DEI ( ) DUP #20 GTH ?{ POP #0000 .Console/vector DEO2 project/ BRK } / BRK @src/ ( c -- ) [ LIT2 00 &ptr -&buf ] INCk ,&ptr STR STZ2 JMP2r @src/ ( -- ) ;&default-name ( >> ) @src/ ( str* -- ) [ LIT2 -&buf _&ptr ] STR &>w ( -- ) LDAk / INC2 LDAk #1f GTH ?&>w POP2 JMP2r @src/change ( -- ) .&changed LDZ ?{ [ LIT2 01 -&changed ] STZ !header/ } JMP2r @src/ ( -- ) .&changed LDZ ?{ JMP2r } [ LIT2 00 -&changed ] STZ !header/ ( @|utils ) @ ( color times addr* auto -- ) .Screen/auto DEO ,&addr STR2 SWP STH [ LITr -Screen/sprite ] &>l ( -- ) [ LIT2 &addr $2 ] .Screen/addr DEO2 DEOkr INC DUP ?&>l POP POP2r JMP2r @ ( color times addr* auto -- ) .Screen/auto DEO .Screen/addr DEO2 SWP STH [ LITr -Screen/sprite ] &>l ( -- ) DEOkr INC DUP ?&>l POP POP2r JMP2r ( @|chicago ) @chicago/get-str-width ( text* -- width* ) [ LITr 00 ] &>ww ( -- ) LDAk #20 SUB #00 SWP ;&widths ADD2 LDA STH ( > ) ADDr INC2 LDAk ?&>ww POP2 #00 STHr JMP2r @chicago/ ( text* color -- ) .Screen/x DEI2 OVR2 /get-str-width #01 SFT2 SUB2 .Screen/x DEO2 ( >> ) @chicago/ ( text* color -- ) ,&color STR ( >> ) @chicago/ ( text* -- ) [ LIT2 15 -Screen/auto ] DEO &>ws ( -- ) LDAk #1f GTH ?{ POP2 JMP2r } LDAk / INC2 !&>ws @chicago/ ( char -- ) #00 SWP #20 SUB DUP2 ( addr ) #50 SFT2 ;&font ADD2 .Screen/addr DEO2 ( move ) ;&widths ADD2 LDA #00 SWP .Screen/x DEI2 ADD2 ( draw ) [ LIT2 &color 01 -Screen/sprite ] DEOk DEO .Screen/x DEO2 JMP2r @chicago/ ( str* color -- str* ) ,&color STR &>wdl ( -- ) LDAk #1f GTH ?{ INC2 JMP2r } LDAk chicago/ INC2 !&>wdl ( @|header ) @header/on-mouse ( -> ) cursor/ [ LIT2 &last $1 -Mouse/state ] DEI ( | handlers ) DUP2 #0004 NEQ2 ?{ browser/ } DUP2 #0002 NEQ2 ?{ window/toggle-shade } DUP2 #0001 NEQ2 ?{ /outside-quit ?{ / } } DUP2 #0100 NEQ2 ?{ / } ,&last STR POP BRK @header/outside-quit ( -- f ) .Mouse/x DEI2 #0008 SUB2 #000c GTH2 ?{ .Mouse/y DEI2 #0002 SUB2 #000c GTH2 ?{ #00 JMP2r } } #01 JMP2r @header/ ( -- ) ;&button-down-icn !/ @header/ ( -- ) /outside-quit ?{ #800f DEO } ( >> ) @header/ ( -- ) #0000 .Screen/x DEO2 #0000 .Screen/y DEO2 [ LIT2 85 -Screen/width ] DEI2 #03 SFT2 SUB ;&bg-chr #25 ( | 1px right ) .Screen/width DEI2 #0001 SUB2 .Screen/x DEO2 #000e .Screen/y DEO2 [ LIT2 a2 -Screen/pixel ] DEO ( | 1px left ) #0001 .Screen/x DEO2 [ LIT2 b2 -Screen/pixel ] DEO ( | title ) / ;&button-icn ( >> ) @header/ ( button* -- ) .Screen/addr DEO2 #0008 .Screen/x DEO2 #0000 .Screen/y DEO2 [ LIT2 15 -Screen/auto ] DEO [ LIT2 09 -Screen/sprite ] DEOk DEO JMP2r ( @|window ) @window/ ( width* height* -- ) DUP2 ,&height STR2 .Screen/height DEO2 .Screen/width DEO2 JMP2r @window/toggle-shade ( -- ) #0011 .Screen/height DEI2 EQU2 ?{ #0011 .Screen/height DEO2 !header/ } [ LIT2 &height $2 ] .Screen/height DEO2 ! ( @|cursor ) @cursor/ ( -- ) .Mouse/y DEI2 #0012 GTH2 ?{ ( ) ;header/on-mouse .Mouse/vector DEO2 JMP2r } ;on-mouse .Mouse/vector DEO2 JMP2r @cursor/ ( -- ) / ( >> ) @cursor/ ( -- ) [ LIT2 12 -Screen/auto ] DEO #40 ;fill-icn / [ LIT2 16 -Screen/auto ] DEO #c1 ;&down-chr .Mouse/state DEI ?{ POP2 ;&up-chr } .Mouse/x DEI2 ,&x STR2 .Mouse/y DEI2 ,&y STR2 ( >> ) @cursor/ ( color addr* -- ) .Screen/addr DEO2 [ LIT2 &x $2 ] #0004 SUB2 .Screen/x DEO2 [ LIT2 &y $2 ] #0004 SUB2 .Screen/y DEO2 .Screen/sprite DEOk DEO JMP2r ( @|manifest ) @manifest/scan ( but key -- fn* ) ORAk ?{ POP2 #ffff JMP2r } ,&bk STR2 ;&dat &>cat ( -- ) LDA2k OVR2 #0004 ADD2 &>opt ( -- ) LDA2k [ LIT2 &bk $2 ] NEQ2 ?{ NIP2 NIP2 INC2 INC2 LDA2 JMP2r } #0006 ADD2 GTH2k ?&>opt POP2 POP2 LDA2 LDAk ?&>cat POP2 #ffff JMP2r ( @|theme ) @theme/ ( -- ) #f0ad #f0ef #f0be ( >> ) @theme/ ( r* g* b* -- ) .System/b DEO2 .System/g DEO2 .System/r DEO2 JMP2r @theme/ ( -- ) ;&path .File/name DEO2 #0002 .File/length DEO2 ;&r .File/read DEO2 ;&g .File/read DEO2 ;&b .File/read DEO2 .File/success-lb DEI ?{ !theme/ } [ LIT2 &r $2 ] [ LIT2 &g $2 ] [ LIT2 &b $2 ] !theme/ &path ".theme $1 ( @|helpers ) @ ( src* len* -- ) ,&length STR2 ,&addr STR2 ;&mmu .System/expansion DEO2 JMP2r &mmu 00 &length $2 0000 &addr $2 00 @ ( short* -: ) SWP /b &b ( byte -: ) DUP #04 SFT /c &c ( byte -: ) #0f AND DUP #09 GTH #27 MUL ADD [ LIT "0 ] ADD #18 DEO JMP2r @ ( str* -- ) &>l ( -- ) LDAk #18 DEO INC2 LDAk ?&>l POP2 JMP2r ( @|assets ) @fill-icn [ ffff ffff ffff ffff ] @halftone-icn [ aa55 aa55 aa55 aa55 ] @linver-icn [ 8000 8000 8000 8000 ] @linhor-icn [ ff00 0000 0000 0000 ] @bar-chr [ ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ff00 0000 0000 0000 0000 0000 0000 0000 ] @header &bg-chr [ 0000 00ff 00ff 00ff ffff ff00 ff00 ff00 00ff 00ff 00ff 0000 ff00 ff00 ff00 ffff 00ff 0000 0000 0000 ff00 0000 0000 0000 ] &button-icn [ 0000 007f 4040 4040 4040 4040 407f 0000 0000 00f7 1017 1017 1017 1017 10f7 0000 ] &button-down-icn [ 0000 007f 4252 4a40 7840 4a52 427f 0000 0000 00f7 1057 9017 f017 9057 10f7 0000 ] @cursor/up-chr [ 0000 0000 0814 1417 0000 0000 0008 0808 0000 0000 0000 00c0 0000 0000 0000 0000 1010 2010 1008 0700 0f0f 1f0f 0f07 0000 2010 1010 2020 c000 c0e0 e0e0 c0c0 0000 ] @cursor/down-chr [ 0000 0000 0000 0817 0000 0000 0000 0008 0000 0000 0000 00c0 0000 0000 0000 0000 1010 2010 1008 0700 0f0f 1f0f 0f07 0000 2010 1010 2020 c000 c0e0 e0e0 c0c0 0000 ] @monaco/font [ 0000 0000 0000 0000 0000 0000 0000 0000 0000 0010 1010 1010 1000 1010 0000 0000 0000 0028 2828 0000 0000 0000 0000 0000 0000 0028 7c28 287c 2800 0000 0000 0000 0000 1038 5450 3018 1414 5438 1000 0000 0000 0024 5458 3810 2834 5448 0000 0000 0000 0060 9090 a040 a094 8874 0000 0000 0000 0010 1010 0000 0000 0000 0000 0000 0000 0810 1020 2020 2020 1010 0800 0000 0000 2010 1008 0808 0808 1010 2000 0000 0000 0010 5438 3854 1000 0000 0000 0000 0000 0000 0010 107c 1010 0000 0000 0000 0000 0000 0000 0000 0000 1010 1020 0000 0000 0000 0000 0000 7c00 0000 0000 0000 0000 0000 0000 0000 0000 1010 0000 0000 0000 0004 0408 0810 1020 2040 4000 0000 0000 0038 4444 4444 4444 4438 0000 0000 0000 0010 3010 1010 1010 1010 0000 0000 0000 0038 4404 0408 1020 407c 0000 0000 0000 0038 4404 1804 0404 4438 0000 0000 0000 0008 1828 487c 0808 0808 0000 0000 0000 007c 4040 7804 0404 4438 0000 0000 0000 0018 2040 7844 4444 4438 0000 0000 0000 007c 0404 0810 1010 1010 0000 0000 0000 0038 4444 3844 4444 4438 0000 0000 0000 0038 4444 4444 3c04 0830 0000 0000 0000 0000 0000 1010 0000 1010 0000 0000 0000 0000 0000 1010 0000 1010 1020 0000 0000 0000 0810 2040 2010 0800 0000 0000 0000 0000 0000 7c00 7c00 0000 0000 0000 0000 0000 2010 0804 0810 2000 0000 0000 0000 0038 4404 0810 1000 1010 0000 0000 0000 0000 0078 84b4 b4bc 8078 0000 0000 0000 0038 4444 447c 4444 4444 0000 0000 0000 0078 4444 7844 4444 4478 0000 0000 0000 0038 4444 4040 4040 4438 0000 0000 0000 0078 4444 4444 4444 4478 0000 0000 0000 007c 4040 4078 4040 407c 0000 0000 0000 007c 4040 4078 4040 4040 0000 0000 0000 0038 4440 404c 4444 4438 0000 0000 0000 0044 4444 447c 4444 4444 0000 0000 0000 0010 1010 1010 1010 1010 0000 0000 0000 0004 0404 0404 0444 4438 0000 0000 0000 0044 4850 6040 6050 4844 0000 0000 0000 0040 4040 4040 4040 407c 0000 0000 0000 0044 6c54 4444 4444 4444 0000 0000 0000 0044 4464 544c 4444 4444 0000 0000 0000 0038 4444 4444 4444 4438 0000 0000 0000 0078 4444 4478 4040 4040 0000 0000 0000 0038 4444 4444 4444 4438 1008 0000 0000 0078 4444 4478 4444 4444 0000 0000 0000 0038 4440 4038 0404 4438 0000 0000 0000 007c 1010 1010 1010 1010 0000 0000 0000 0044 4444 4444 4444 4438 0000 0000 0000 0044 4444 4444 4444 2810 0000 0000 0000 0044 4444 4444 4454 6c44 0000 0000 0000 0044 4444 2810 2844 4444 0000 0000 0000 0044 4444 4428 1010 1010 0000 0000 0000 007c 0404 0810 2040 407c 0000 0000 0000 3820 2020 2020 2020 2020 3800 0000 0000 0040 4020 2010 1008 0804 0400 0000 0000 3808 0808 0808 0808 0808 3800 0000 0000 0010 2844 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 00fe 0000 0000 0000 0010 0800 0000 0000 0000 0000 0000 0000 0000 0000 3c44 4444 4c34 0000 0000 0000 0040 4040 7844 4444 4478 0000 0000 0000 0000 0000 3844 4040 4438 0000 0000 0000 0004 0404 3c44 4444 443c 0000 0000 0000 0000 0000 3844 7c40 4438 0000 0000 0000 000c 1010 3810 1010 1010 0000 0000 0000 0000 0000 3c44 4444 443c 0444 3800 0000 0040 4040 7844 4444 4444 0000 0000 0000 0010 1000 1010 1010 1010 0000 0000 0000 0010 1000 1010 1010 1010 1010 6000 0000 0040 4040 4850 6050 4844 0000 0000 0000 0010 1010 1010 1010 1010 0000 0000 0000 0000 0000 7854 5454 5454 0000 0000 0000 0000 0000 7844 4444 4444 0000 0000 0000 0000 0000 3844 4444 4438 0000 0000 0000 0000 0000 7844 4444 4478 4040 0000 0000 0000 0000 3c44 4444 443c 0404 0000 0000 0000 0000 5864 4440 4040 0000 0000 0000 0000 0000 3844 3804 4438 0000 0000 0000 0000 2020 7020 2020 2018 0000 0000 0000 0000 0000 4444 4444 4c34 0000 0000 0000 0000 0000 4444 4444 2810 0000 0000 0000 0000 0000 5454 5454 5428 0000 0000 0000 0000 0000 4428 1010 2844 0000 0000 0000 0000 0000 4444 4444 443c 0444 3800 0000 0000 0000 7c08 1020 407c 0000 0000 0000 0810 1010 1020 1010 1010 0800 0000 0000 1010 1010 1010 1010 1010 1000 0000 0000 2010 1010 1008 1010 1010 2000 0000 0000 0034 5800 0000 0000 0000 0000 0000 aa55 aa55 aa55 aa55 aa55 aa55 aa55 aa55 ] @chicago/widths [ 0406 070a 070b 0a03 0505 0707 0407 0407 0808 0808 0808 0808 0808 0404 0608 0608 0b08 0808 0807 0708 0806 0709 070c 0908 0808 0807 0608 080c 0808 0805 0705 0808 0608 0807 0808 0608 0804 0608 040c 0808 0808 0607 0608 080c 0808 0805 0505 0808 ] @chicago/font [ 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0030 3030 3030 3000 3030 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0028 2828 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0909 3f12 127f 2424 0000 0000 0000 0000 0000 8000 0000 0000 0000 0000 0000 0000 1038 5470 7038 1c1c 5438 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 3749 4a32 0404 090a 1211 0000 0000 0000 0000 0000 0000 8040 4080 0000 0000 0000 003c 6666 3067 6666 663c 0000 0000 0000 0000 0080 8000 0000 0000 0000 0000 0000 0040 4040 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1020 6060 6060 6060 6020 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 4020 3030 3030 3030 3020 4000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0010 5438 5410 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0010 107c 1010 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 6060 2040 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 007c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 6060 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0404 0808 1010 2020 4040 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 003c 6666 6666 6666 663c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0018 3818 1818 1818 1818 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 003c 4606 060c 1830 607e 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 007e 0c18 3c06 0606 463c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0006 0e16 2646 7f06 0606 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 007e 6060 7c06 0606 463c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 001c 3060 7c66 6666 663c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 007e 0606 060c 1818 1818 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 003c 6666 663c 6666 663c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 003c 6666 6666 3e06 0c38 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0060 6000 0000 6060 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0060 6000 0000 6060 2040 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1830 60c0 6030 1800 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 7e00 7e00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 c060 3018 3060 c000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 003c 4606 0c18 1800 1818 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1f20 4e52 524d 201f 0000 0000 0000 0000 0080 4040 4080 0000 0000 0000 0000 003c 6666 667e 6666 6666 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 007c 6666 667c 6666 667c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 003c 6260 6060 6060 623c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 007c 6666 6666 6666 667c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 007c 6060 6078 6060 607c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 007c 6060 6078 6060 6060 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 003c 6260 606e 6666 663c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0066 6666 667e 6666 6666 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0030 3030 3030 3030 3030 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 000c 0c0c 0c0c cccc cc78 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0063 666c 7870 786c 6663 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0060 6060 6060 6060 607c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0040 6070 795f 4e44 4040 0000 0000 0000 0020 60e0 e060 6060 6060 0000 0000 0000 0041 6171 795d 4f47 4341 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 003c 6666 6666 6666 663c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 007c 6666 667c 6060 6060 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 003c 6666 6666 6666 663c 0600 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 007c 6666 667c 6666 6666 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0038 6460 7038 1c0c 4c38 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 00fc 3030 3030 3030 3030 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0066 6666 6666 6666 663c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0066 6666 6666 6666 6478 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0066 6666 6666 6666 667f 0000 0000 0000 0060 6060 6060 6060 4080 0000 0000 0000 0066 6666 663c 6666 6666 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0066 6666 663c 1818 1818 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 007e 0606 0c18 3060 607e 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 7060 6060 6060 6060 6060 7000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 4040 2020 1010 0808 0404 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 7030 3030 3030 3030 3030 7000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0008 1422 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 00ff 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 4020 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 003c 463e 6666 663e 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0060 607c 6666 6666 667c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0038 6460 6060 6438 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0006 063e 6666 6666 663e 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 003c 6666 7e60 623c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 001c 3078 3030 3030 3030 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 003e 6666 6666 663e 0646 3c00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0060 607c 6666 6666 6666 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0060 0060 6060 6060 6060 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0018 0018 1818 1818 1818 1898 7000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0060 6066 6c78 7078 6c66 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0060 6060 6060 6060 6060 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 007f 6666 6666 6666 0000 0000 0000 0000 00c0 6060 6060 6060 0000 0000 0000 0000 007c 6666 6666 6666 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 003c 6666 6666 663c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 007c 6666 6666 667c 6060 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 003e 6666 6666 663e 0606 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 006c 7060 6060 6060 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0038 6470 381c 4c38 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0030 3078 3030 3030 3018 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0066 6666 6666 663e 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0066 6666 6666 6478 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0066 6666 6666 667f 0000 0000 0000 0000 0060 6060 6060 4080 0000 0000 0000 0000 0066 6666 3c66 6666 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0066 6666 6666 663e 0646 3c00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 007e 060c 1830 607e 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1020 2020 2040 2020 2020 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 2020 2020 2020 2020 2020 2000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 4020 2020 2010 2020 2020 4000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0032 4c00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0024 003c 6666 667e 6666 6666 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1824 243c 6666 667e 6666 6666 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 003c 6260 6060 6060 623c 1808 1000 0000 0000 0000 0000 0000 0000 0000 0000 0810 007c 6060 6078 6060 607c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 324c 0041 6171 795d 4f47 4341 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0024 003c 6666 6666 6666 663c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0024 0066 6666 6666 6666 663c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0810 003c 463e 6666 663e 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1008 003c 463e 6666 663e 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1824 003c 463e 6666 663e 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0024 003c 463e 6666 663e 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 324c 003c 463e 6666 663e 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1824 2418 003c 463e 6666 663e 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 003c 6260 6060 623c 1808 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0810 003c 6666 7e60 623c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1008 003c 6666 7e60 623c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1824 003c 6666 7e60 623c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0024 003c 6666 7e60 623c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1020 0030 3030 3030 3030 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 2010 0030 3030 3030 3030 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 3048 0030 3030 3030 3030 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0048 0030 3030 3030 3030 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 324c 007c 6666 6666 6666 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0810 003c 6666 6666 663c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1008 003c 6666 6666 663c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1824 003c 6666 6666 663c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0024 003c 6666 6666 663c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 324c 003c 6666 6666 663c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0810 0066 6666 6666 663e 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1008 0066 6666 6666 663e 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1824 0066 6666 6666 663e 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0024 0066 6666 6666 663e 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0020 7020 2020 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0030 4848 3000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1038 5450 5054 3810 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 001c 3230 3078 3030 317e 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 3844 6030 584c 6434 180c 4438 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0038 7c7c 7c38 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 003f 6565 653d 0505 0505 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 001e 3333 3633 3333 3376 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 001e 215c 525c 5252 211e 0000 0000 0000 0000 0080 8080 8080 0000 0000 0000 0000 001e 214c 5250 524c 211e 0000 0000 0000 0000 0080 8080 8080 0000 0000 0000 0000 0074 2625 2400 0000 0000 0000 0000 0000 0040 c040 4000 0000 0000 0000 0000 0000 0010 2040 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0048 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0004 7f08 7f10 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 003f 6666 667f 6666 6667 0000 0000 0000 00c0 0000 0080 0000 00c0 0000 0000 0000 001e 3333 373b 3333 739e 0000 0000 0000 0080 0000 0000 0000 0000 0000 0000 0000 0000 0038 4543 463c 0000 0000 0000 0000 0000 00f0 8808 8870 0000 0000 0000 0000 0000 0010 107c 1010 007c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0010 2040 2010 0078 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0020 1008 1020 0078 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0061 337f 0c7f 0c0c 0c0c 0000 0000 0000 0080 0080 0080 0000 0000 0000 0000 0000 0000 0033 3333 3333 333e 2040 0000 0000 0000 0000 0000 0000 0080 0000 0000 0000 0000 380c 1e36 6666 6438 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 007f 3118 0c06 0c18 317f 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 007f 3333 3333 3333 3333 0000 0000 0000 0080 0000 0000 0000 0000 0000 0000 0000 0000 003f 5919 1919 1911 0000 0000 0000 0000 4080 8080 8080 8000 0000 0000 0000 0018 3030 3030 3030 3030 3060 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0038 4c3c 6c6c 3c00 7c00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0038 6c6c 6c6c 3800 7c00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 001e 3361 6161 2112 1233 0000 0000 0000 0000 0080 8080 0000 0000 0000 0000 0000 0000 003f 463e 6766 663f 0000 0000 0000 0000 00c0 6060 e000 20c0 0000 0000 0000 0000 003d 6666 6e76 66bc 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0018 1800 1818 3060 623c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0030 3000 3030 3030 3030 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 007c 0404 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0101 2262 1414 0808 0000 0000 0000 e080 0000 0000 0000 0000 0000 0000 0000 0018 3030 7830 3030 3030 3060 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001 1e21 1e20 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0808 1414 2222 417f 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0009 1224 4824 1209 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0048 2412 0912 2448 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 3333 0000 0000 0000 0000 0000 0000 0000 3030 0000 0000 ] @browser/buf $200 @project/mem