From 75726492b6336f29fa5c8a6703ebbaadd14de4c3 Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Sun, 26 May 2024 19:33:14 -0700 Subject: [PATCH] Modernizing notepad --- cli/tgachr/pict320x20.chr | Bin 16384 -> 128 bytes gui/notepad/build.sh | 27 - gui/notepad/notepad.tal | 1009 ------------------------------------- 3 files changed, 1036 deletions(-) delete mode 100755 gui/notepad/build.sh delete mode 100644 gui/notepad/notepad.tal diff --git a/cli/tgachr/pict320x20.chr b/cli/tgachr/pict320x20.chr index ac62c2de977986ec33fdcbb476729117544df62d..3e43167f1711bec7617dba48e42f3ef4d412773f 100644 GIT binary patch literal 128 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 ) - - .Controller/key DEI .Controller/button DEI - ( shortcuts ) - DUP2 [ LIT2 "a 01 ] NEQ2 ?&no-ca POP2 select-all BRK &no-ca - DUP2 [ LIT2 "x 01 ] NEQ2 ?&no-cx POP2 edit-cut BRK &no-cx - DUP2 [ LIT2 "c 01 ] NEQ2 ?&no-cc POP2 edit-copy BRK &no-cc - DUP2 [ LIT2 "v 01 ] NEQ2 ?&no-cv POP2 edit-paste BRK &no-cv - ( mask shift key ) - #fb AND - ( arrows ) - DUP #10 NEQ ?&no-u get-to #0001 SUB2 find-line-start select-variable &no-u - DUP #20 NEQ ?&no-d get-to INC2 find-line-end select-variable &no-d - DUP #40 NEQ ?&no-l select-left &no-l - DUP #80 NEQ ?&no-r select-right &no-r - DUP #42 NEQ ?&no-sbl .selection/b LDZ2 #0001 SUB2 find-word-start select-variable &no-sbl - DUP #82 NEQ ?&no-sbr .selection/b LDZ2 INC2 find-word-end select-variable &no-sbr - POP - ( key ) - DUP #08 NEQ ?&no-bs erase &no-bs - DUP #7f NEQ ?&no-del delete &no-del - DUP #09 LTH ?&no-ascii DUP insert &no-ascii - POP - #00 ;on-frame/f STA - -BRK - -@on-mouse-head ( -> ) - - [ LIT2 00 -Mouse/state ] DEI NEQ #41 ADD ;mouse-icn update-cursor - .Mouse/state DEI #01 GTH .Mouse/y DEI2 #0012 LTH2 AND ?&toggle-collapse - - trap-mouse - - [ LIT &last $1 ] - .Mouse/state DEI - DUP ,&last STR - EQU ?&unchanged - draw-header - ( release on close button ) - .Mouse/state DEI ?&unchanged - .Mouse/x DEI2 #0008 SUB2 #000a GTH2 ?&unchanged - ( exit ) #800f DEO - &unchanged - -BRK - -&toggle-collapse ( -> ) - - #00f8 #0011 - .collapsed LDZ ?{ SWP2 } - POP2 .Screen/height DEO2 - .collapsed LDZ #00 EQU .collapsed STZ - draw-header - redraw - - [ LIT2 00 -Mouse/state ] DEO - -BRK - -@on-mouse-body ( -> ) - - [ LIT2 00 -Mouse/state ] DEI NEQ #41 ADD ;caret-icn update-cursor - - trap-mouse - - [ LIT &last $1 ] .Mouse/state DEI - DUP #02 LTH ?&no-mouse2 - get-position select-word - &no-mouse2 - DUP2 #0001 NEQ2 ?&no-down - get-position select-variable - &no-down - DUP2 #0101 NEQ2 ?&no-drag - get-position select-to - &no-drag - ,&last STR POP - -BRK - -@on-mouse-foot ( -> ) - - [ LIT2 00 -Mouse/state ] DEI NEQ #41 ADD ;mouse-icn update-cursor - - trap-mouse - - .Mouse/state DEI #00 NEQ .Mouse/x DEI2 #0018 LTH2 AND ?&on-mouse-down - -BRK - -&on-mouse-down ( -> ) - - [ LIT2 00 -Mouse/state ] DEO - - .Mouse/y DEI2 #00d6 SUB2 NIP - #18 .Mouse/x DEI2 NIP SUB - ADD #18 LTH ?&go-next - prev-page BRK - &go-next - next-page - -BRK - -@on-frame ( -> ) - - [ LIT2 &last $1 &f $1 ] INCk ,&f STR - #05 SFT DUP ,&last STR - EQU ?&unchanged - draw-note - &unchanged - -BRK - -( -@|editor ) - -@insert ( char -- ) - - get-from scap get-page #1000 ADD2 LTH2 ?&has-space - POP JMP2r - &has-space - - ( convert linebreaks ) - DUP #0d EQU #03 MUL SUB - - .selection/length LDZ2 #0000 EQU2 ?&no-block - erase-selection - &no-block - - get-from STH2k #0001 SUB2 get-eof #0001 msfr - STH2kr STA - STH2r INC2 select-from - -!file-save - -@erase ( -- ) - - .selection/length LDZ2 #0000 EQU2 ?&no-block - erase-selection - !select-reset - &no-block - - get-from get-page NEQ2 [ JMP JMP2r ] - - get-from #0001 SUB2 - DUP2 cut-char - select-from - -!file-save - -@erase-selection ( -- ) - - get-from get-eof .selection/length LDZ2 msfl - -!file-save - -@delete ( -- ) - - get-eof get-from SUB2 ORA #01 [ JCN JMP2r ] - - .selection/length LDZ2 #0000 EQU2 ?&no-block - erase-selection - !select-reset - &no-block - - get-from cut-char - redraw - -!file-save - -@get-eof ( -- addr* ) - - get-page - -!scap - -@cut-char ( addr* -- ) - - get-eof #0001 - -!msfl - -( -@|selection ) - -@select-variable ( addr* -- ) - - .Controller/button DEI #04 AND ?select-to - -!select-from - -@select-reset ( -- ) - - get-from - -( >> ) - -@select-from ( addr* -- ) - - clamp-selection - DUP2 .selection/a STZ2 - .selection/b STZ2 - -!select - -@select-to ( addr* -- ) - - clamp-selection - .selection/b STZ2 - -!select - -@select-word ( addr* -- ) - - DUP2 - &back #0001 SUB2 LDAk #20 GTH ?&back INC2 .selection/a STZ2 - &next INC2 LDAk #20 GTH ?&next .selection/b STZ2 - -!select - -@select-all ( -- ) - - get-page - DUP2 .selection/a STZ2 - scap #0001 SUB2 .selection/b STZ2 - -( >> ) - -@select ( -- ) - - get-to get-from SUB2 .selection/length STZ2 - #00 ;on-frame/f STA - -!redraw - -@select-left ( -- ) - - .selection/length LDZ2 #0000 EQU2 - .Controller/button DEI #04 AND #00 NEQ - ORA ?&no-block - get-from !select-from - &no-block - .selection/b LDZ2 #0001 SUB2 - -!select-variable - -@select-right ( -- ) - - .selection/length LDZ2 #0000 EQU2 - .Controller/button DEI #04 AND #00 NEQ - ORA ?&no-block - get-to !select-from - &no-block - .selection/b LDZ2 INC2 - -!select-variable - -@get-from ( -- addr* ) - - .selection/b LDZ2 .selection/a LDZ2 LTH2k [ JMP SWP2 POP2 ] - -JMP2r - -@get-to ( -- addr* ) - - .selection/a LDZ2 .selection/b LDZ2 GTH2k [ JMP SWP2 POP2 ] - -JMP2r - -@clamp-selection ( addr* -- addr* ) - - ( min ) get-page GTH2k [ JMP SWP2 POP2 ] - ( max ) get-eof #0001 SUB2 LTH2k [ JMP SWP2 POP2 ] - -JMP2r - -@is-selected ( addr* -- addr* f ) - - DUP2 get-from LTH2 ?&false - DUP2 get-to #0001 SUB2 GTH2 ?&false - #01 - -JMP2r - &false #00 JMP2r - -( -@|file ) - -@file-init ( -- ) - - ;notepad-txt file-size #0000 EQU2 ?file-new - - ( load file ) - - ;notepad-txt .File/name DEO2 - #8000 .File/length DEO2 - ;mem .File/read DEO2 - -JMP2r - -@file-new ( -- ) - - #0801 - &l - #00 OVR #c0 SFT2 ;mem ADD2 STH2 #20 STH2r STA - INC GTHk ?&l - POP2 - -JMP2r - -@file-save ( -- ) - - ;notepad-txt .File/name DEO2 - #8000 .File/length DEO2 - ;mem .File/write DEO2 - -JMP2r - @notepad-txt ".notepad $1 - -@file-size ( path* -- size* ) - - .File/name DEO2 - #0001 .File/length DEO2 - [ LIT2r 0000 ] - &s - ;&b .File/read DEO2 - .File/success DEI2 #0000 EQU2 ?&eof - INC2r !&s &eof - STH2r - -JMP2r - &b $1 - -@file-inject ( name* -- ) - - DUP2 file-size - ORAk ?&exists - POP2 POP2 JMP2r - &exists - STH2 - .File/name DEO2 - STH2kr .File/length DEO2 - ( erase when selection length ) - .selection/length LDZ2 #0000 EQU2 ?&no-selection - get-from get-eof .selection/length LDZ2 msfl - &no-selection - ( push right ) get-from #0001 SUB2 - get-eof STH2kr msfr - get-from .File/read DEO2 - get-from STH2r ADD2 - -!select-from - -@edit-cut ( -- ) - - .selection/length LDZ2 #0001 GTH2 [ JMP JMP2r ] - - edit-copy - erase-selection - select-reset - -!file-save - -@edit-copy ( -- ) - - .selection/length LDZ2 #0001 GTH2 [ JMP JMP2r ] - - ;snarf-txt .File/name DEO2 - .selection/length LDZ2 .File/length DEO2 - get-from .File/write DEO2 - -JMP2r - -@edit-paste ( -- ) - - ;snarf-txt file-inject - -!file-save - @snarf-txt ".snarf $1 - -( -@|core ) - -@trap-mouse ( -- ) - - .Mouse/y DEI2 - DUP2 #0018 GTH2 ?&no-head - POP2 ;on-mouse-head .Mouse/vector DEO2 JMP2r - &no-head - DUP2 #00d6 LTH2 ?&no-foot - POP2 ;on-mouse-foot .Mouse/vector DEO2 JMP2r - &no-foot - POP2 - ;on-mouse-body .Mouse/vector DEO2 - -JMP2r - -@change-page ( id -- ) - - .page STZ - get-page scap #0001 SUB2 - -!select-from - -@prev-page ( -- ) - - .page LDZ #01 SUB #07 AND - -!change-page - -@next-page ( -- ) - - .page LDZ INC #07 AND - -!change-page - -@pos-to-line ( y* -- line ) - - #0012 SUB2 #04 SFT2 NIP - -JMP2r - -@get-position ( -- addr* ) - - #0008 .Screen/x DEO2 - #0018 .Screen/y DEO2 - ( walk to line ) - .Mouse/y DEI2 pos-to-line ,&line STR - get-page - &walk-line - .Screen/y DEI2 pos-to-line [ LIT &line $1 ] EQU ?&end-line - walk-char POP - INC2 LDAk ?&walk-line - &end-line - ( walk to char ) - .Mouse/x DEI2 #0001 SUB2 ,&x STR2 - &walk-char - .Screen/x DEI2 [ LIT2 &x $2 ] GTH2 ?&end-char - walk-char ?&end-char - INC2 LDAk ?&walk-char - &end-char - -JMP2r - -@walk-char ( addr* -- addr* lb ) - - ( wrap ) - LDAk #20 GTH ?&no-wrap - DUP2 word-width .Screen/x DEI2 ADD2 #00d0 LTH2 ?&no-wrap - #01 !draw-linebreak - &no-wrap - ( char ) - LDAk char-width .Screen/x DEI2 ADD2 - .Screen/x DEO2 - ( tab ) - LDAk #09 NEQ ?&no-tab - #00 !draw-tab - &no-tab - ( linebreak ) - LDAk #0a NEQ ?&no-lb - #01 !draw-linebreak - &no-lb - #00 - -JMP2r - -@get-page ( -- addr* ) - - ;mem #00 .page LDZ #c0 SFT2 ADD2 - -JMP2r - -@char-addr ( char -- addr* ) - - DUP #7e GTH ?&missing - DUP #20 LTH ?&blank - #20 SUB - #00 SWP #50 SFT2 ;font/glyphs ADD2 - -JMP2r - &blank POP ;font/glyphs JMP2r - &missing POP ;error-icn JMP2r - -@char-width ( char -- width* ) - - DUP #7e GTH ?&missing - #20 SUB #00 SWP ;font ADD2 LDA #00 SWP - -JMP2r - &missing POP #0008 JMP2r - -@word-width ( str* -- length* ) - - [ LIT2r 0000 ] - &while - LDAk char-width STH2 ADD2r - INC2 LDAk #20 GTH ?&while - POP2 - STH2r - -JMP2r - -@find-line-start ( addr* -- addr* ) - - ;mem SWP2 - &l - #0001 SUB2 LDAk #0a EQU ?&end - LTH2k ?&l - &end - NIP2 INC2 - -JMP2r - -@find-line-end ( addr* -- addr* ) - - get-eof SWP2 - &l - LDAk #0a EQU ?&end - INC2 GTH2k ?&l - &end - NIP2 - -JMP2r - -@find-word-start ( addr* -- addr* ) - - ;mem SWP2 - &l - #0001 SUB2 LDAk #21 LTH ?&end - LTH2k ?&l - &end - NIP2 INC2 - -JMP2r - -@find-word-end ( addr* -- addr* ) - - get-eof SWP2 - &l - LDAk #21 LTH ?&end - INC2 GTH2k ?&l - &end - NIP2 - -JMP2r - -( -@|drawing ) - -@draw-header ( -- ) - - ( a ) - #0000 - DUP2 .Screen/x DEO2 - .Screen/y DEO2 - [ LIT2 15 -Screen/auto ] DEO - ;bar-icn/a .Screen/addr DEO2 - [ LIT2 01 -Screen/sprite ] DEO - ( close ) - ;close-icn - #00 .Mouse/state DEI #00 NEQ .Mouse/x DEI2 #0008 SUB2 #000a LTH2 AND - #50 SFT2 ADD2 .Screen/addr DEO2 - [ LIT2 01 -Screen/sprite ] DEOk DEO - ( lead ) - #e9 &l - ;bar-icn/b .Screen/addr DEO2 - [ LIT2 01 -Screen/sprite ] DEO - INC DUP ?&l - POP - ;bar-icn/b .Screen/addr DEO2 - [ LIT2 01 -Screen/sprite ] DEOk DEO - ( title ) - #004b .Screen/x DEO2 - [ LIT2 86 -Screen/auto ] DEO - ;title-icn .Screen/addr DEO2 - [ LIT2 01 -Screen/sprite ] DEOk DEO - ( line ) - [ LIT2 d2 -Screen/auto ] DEO - #0000 .Screen/x DEO2 - #0010 .Screen/y DEO2 - ;line-icn .Screen/addr DEO2 - [ LIT2 01 -Screen/sprite ] DEO - #0070 .Screen/x DEO2 - #0010 .Screen/y DEO2 - [ LIT2 01 -Screen/sprite ] DEO - -JMP2r - -@redraw ( -- ) - - #0000 .Screen/x DEO2 - #0018 .Screen/y DEO2 - [ LIT2 80 -Screen/pixel ] DEO - -@draw-note ( -- ) - - [ LIT2 15 -Screen/auto ] DEO - #0008 .Screen/x DEO2 - #0018 .Screen/y DEO2 - get-page - &while - ( draw char ) - LDAk char-addr .Screen/addr DEO2 - is-selected STH #0701 STHr [ JMP SWP POP ] .Screen/sprite DEOk DEO - .Screen/x DEI2k #0010 SUB2 ROT DEO2 - ( draw selector ) - get-from get-to NEQ2 ?&block - DUP2 get-from NEQ2 ?&block - ;on-frame/last LDA #01 AND ?&block - ;blink-icn .Screen/addr DEO2 - [ LIT2 05 -Screen/sprite ] DEO - .Screen/x DEI2k #0008 SUB2 ROT DEO2 - &block - walk-char POP - INC2 LDAk ?&while - POP2 - -@draw-footer ( -- ) - - .Screen/height DEI2 #0020 GTH2 ?&visible - JMP2r - &visible - [ LIT2 26 -Screen/auto ] DEO - #0000 .Screen/x DEO2 - .Screen/height DEI2 #0020 SUB2 .Screen/y DEO2 - ;page-icn .Screen/addr DEO2 - [ LIT2 01 -Screen/sprite ] DEOk DEOk DEOk DEO - ( across ) - [ LIT2 01 -Screen/auto ] DEO - #0018 .Screen/x DEO2 - .Screen/height DEI2 #0008 SUB2 .Screen/y DEO2 - ;page-icn/bottom .Screen/addr DEO2 - #e7 &l - [ LIT2 01 -Screen/sprite ] DEO - INC DUP ?&l - POP - ( page number ) - [ LIT2 15 -Screen/auto ] DEO - .Screen/width DEI2 #01 SFT2 #0003 SUB2 .Screen/x DEO2 - .Screen/height DEI2 #0020 SUB2 .Screen/y DEO2 - #0011 .page LDZ ADD #50 SFT2 ;font/glyphs ADD2 .Screen/addr DEO2 - [ LIT2 01 -Screen/sprite ] DEOk DEO - -JMP2r - -@draw-tab ( -- ) - - .Screen/x DEI2k #0010 ADD2 #33 SFT2 ROT DEO2 - -JMP2r - -@draw-linebreak ( -- ) - - #0008 .Screen/x DEO2 - .Screen/y DEI2k #0010 ADD2 ROT DEO2 - -JMP2r - -@update-cursor ( color addr* -- ) - - [ LIT2 15 -Screen/auto ] DEO - ;fill-icn .Screen/addr DEO2 - #40 draw-cursor - .Mouse/x DEI2 ,draw-cursor/x STR2 - .Mouse/y DEI2 ,draw-cursor/y STR2 - .Screen/addr DEO2 - -@draw-cursor ( color -- ) - - [ LIT2 &x $2 ] .Screen/x DEO2 - [ LIT2 &y $2 ] .Screen/y DEO2 - .Screen/sprite DEO - -JMP2r - -( -@|stdlib ) - -@load-theme ( -- ) - - ;&path .File/name DEO2 - #0002 .File/length DEO2 - ;&r .File/read DEO2 - ;&g .File/read DEO2 - ;&b .File/read DEO2 - .File/success DEI2 ORA [ #01 JCN JMP2r ] - LIT2 &r $2 .System/r DEO2 - LIT2 &g $2 .System/g DEO2 - LIT2 &b $2 .System/b DEO2 - -JMP2r - &path ".theme $1 - -@msfl ( b* a* len* -- ) STH2 SWP2 EQU2k ?&e &l DUP2k STH2kr ADD2 LDA ROT ROT STA INC2 GTH2k ?&l POP2 POP2 &e POP2r JMP2r -@msfr ( b* a* len* -- ) STH2 EQU2k ?&e &l DUP2 LDAk ROT ROT STH2kr ADD2 STA #0001 SUB2 LTH2k ?&l POP2 POP2 &e POP2r JMP2r -@scap ( str* -- end* ) LDAk #00 NEQ [ JMP JMP2r ] &w INC2 LDAk ?&w JMP2r - -( -@|assets ) - -@fill-icn [ - ffff ffff ffff ffff ffff ffff ffff ffff ] -@error-icn [ - aa55 aa55 aa55 aa55 aa55 aa55 aa55 aa55 ] -@blink-icn [ - 8080 8080 8080 8080 8080 8080 8080 8080 ] -@caret-icn [ - c628 1010 1010 1010 1010 1010 1010 28c6 ] -@mouse-icn [ - 80c0 e0f0 f8fc feff f8d8 8c0c 0606 0000 ] -@bar-icn - &a [ - 0000 007e 007e 007e 007e 007e 007e 0000 ] - &b [ - 0000 00ff 00ff 00ff 00ff 00ff 00ff 0000 ] - &c [ - 0000 00fe 00fe 00fe 00fe 00fe 00fe 0000 ] -@close-icn - 0000 00ff 8080 8080 8080 8080 80ff 0000 - 0000 00ef 202f 202f 202f 202f 20ef 0000 - 0000 00ff 84a4 9580 f180 95a4 84ff 0000 - 0000 00ef 20af 202f e02f 20af 20ef 0000 ] -@title-icn [ - 0000 0080 0080 0080 0000 0000 82c2 e2f2 - 0000 0000 0000 3c66 0000 0000 3030 7831 - 0000 0000 0000 f098 0000 0000 1f19 1919 - 0000 0000 0080 8f91 0000 0000 0101 0f99 - 0000 0000 8080 8080 0080 0080 0080 0000 - ba9e 8e86 8200 0000 6666 6666 3c00 0000 - 3131 3131 1800 0000 98f8 8088 f000 0000 - 1f18 1818 1800 0000 0f19 1919 0f00 0000 - 9999 9999 8f00 0000 8080 8080 8000 0000 ] -@page-icn [ - 00ff 4020 1008 0402 00ff 0000 0000 0000 - 00ff 0101 0101 0101 0100 0000 0000 0000 - 0080 4020 1008 0402 0101 0101 0101 0101 - 0000 0000 0000 0000 0100 0000 0000 0000 - 0181 4121 1109 0503 0000 ff00 ff00 ffff - 0000 ff00 ff00 ffff 0100 ff00 ff00 ffff ] - &bottom [ - ff00 ff00 ff00 ffff ] -@line-icn [ - 00ff 0000 0000 0000 ] -@appicon ( 24x24 ) [ - 0009 161f 1f1f 1f1f 093f 3f3f 3f3f 3f3f 0024 dbff ffff ffff 24ff ffff ffff ffff - 0090 68f8 f8f8 f8f8 90fc fcfc fcfc fcfc 1f1f 1f1f 1f1f 0016 3f3f 3f3f 3f3f 3f3f - ffff ffff ffff ffff ffff ffff ffff ffff f8f8 f8f8 f8f8 f8f8 fcfc fcfc fcfc fcfc - 1a1c 1e1f 001f 0000 3f3f 3f3f 3f20 3f00 ffff 00ff 00ff 0000 ffff ffff ff00 ff00 - f8f8 00f8 00f8 0000 fcfc fcfc fc04 fc00 ] -@font ( newyork12 - removed 0x20 down ) [ -0404 0508 0709 0a03 0505 0606 0306 0307 -0807 0808 0808 0808 0808 0303 0507 0507 -0a0a 0807 0807 0708 0906 0508 080c 0908 -0808 0807 0809 0a0d 0808 0604 0704 0407 -0407 0806 0807 0507 0804 0408 040c 0807 -0808 0606 0508 080b 0708 0605 0305 0601 -0a0a 0707 0908 0907 0707 0707 0706 0707 -0707 0404 0404 0807 0707 0707 0808 0808 -0405 0708 0708 0907 0909 0904 0400 0c08 -0000 0000 0800 0000 0000 0007 0600 0a07 -0704 0000 0000 0007 0709 080a 0a08 0c0b -0509 0505 0303 0009 080a 0000 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -&glyphs -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0020 2020 2020 2020 0020 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0050 5000 0000 0000 0000 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0014 7e28 fc50 0000 0000 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 1038 5450 3010 1814 5438 1000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 003e 494a 3408 1629 4946 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0018 2428 1029 4542 4539 0000 0000 -0000 0000 0000 0080 0000 0080 0000 0000 -0000 0040 4000 0000 0000 0000 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 1020 2040 4040 4040 2020 1000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 4020 2010 1010 1010 2020 4000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 20a8 7070 a820 0000 0000 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 0000 2020 f820 2000 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 0000 0000 0000 0040 4080 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 0000 0000 7800 0000 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 0000 0000 0000 0040 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0004 0408 0810 1020 2040 4000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0018 2442 4242 4242 2418 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0010 3010 1010 1010 1038 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0038 4404 0408 1020 447c 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0018 2404 0818 0402 0202 4438 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0004 0810 2444 7e04 040e 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 007c 4040 7804 0202 0204 0870 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 1820 4058 6442 4242 2418 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 007e 4204 0408 0810 1010 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0018 2424 1824 4242 4224 1800 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0018 2442 4242 261a 0204 1800 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 0000 4000 0000 0040 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 0000 4000 0000 0040 4080 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 0000 1020 4020 1000 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 0000 007c 007c 0000 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 0000 4020 1020 4000 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0038 4404 0408 1010 0010 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 001e 214c 5252 4d20 1e00 0000 -0000 0000 0000 0080 8080 0000 0000 0000 -0000 0008 0814 1422 3e41 41e3 0000 0000 -0000 0000 0000 0000 0000 0080 0000 0000 -0000 00f8 4444 7844 4242 44f8 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0038 4480 8080 8080 4438 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 00f8 4442 4242 4242 44f8 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 00fc 4440 4878 4840 44fc 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 00fc 4440 4878 4840 40e0 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 003c 4480 808e 8484 4438 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 00e7 4242 427e 4242 42e7 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0070 2020 2020 2020 2070 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0070 2020 2020 2020 2020 2020 c000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 00ee 4448 5060 5048 44ee 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0070 2020 2020 2020 227e 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 00e0 6060 5151 4a4a 44e4 0000 0000 -0000 00e0 c0c0 4040 4040 40e0 0000 0000 -0000 00e7 6252 524a 4a46 46e2 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0038 4482 8282 8282 4438 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 00f8 4442 4244 7840 40e0 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0038 4482 8282 8282 4438 100c 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 00f8 4444 4478 5048 44e6 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 003c 4440 2010 0804 4478 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 00fe 9210 1010 1010 1038 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 00e7 4242 4242 4242 2418 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 00e3 4141 2222 1414 0808 0000 0000 -0000 0080 0000 0000 0000 0000 0000 0000 -0000 0077 2222 1515 1508 0808 0000 0000 -0000 0070 2020 4040 4080 8080 0000 0000 -0000 00ee 4428 2810 2828 44ee 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 00ee 4428 2810 1010 1038 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 00f8 8810 1020 4040 88f8 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 6040 4040 4040 4040 4040 6000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0040 4020 2010 1008 0804 0400 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 6020 2020 2020 2020 2020 6000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0040 a000 0000 0000 0000 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 0000 0000 0000 00fe 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0080 4020 0000 0000 0000 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 0070 8818 6888 8874 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0040 c058 6442 4242 6458 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 0030 4880 8080 4830 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 000c 0434 4c84 8484 4e34 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 0030 4884 fc80 4830 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0030 40e0 4040 4040 40e0 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 0074 8888 8870 8078 8484 7800 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0040 c058 6444 4444 44ee 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0040 0040 c040 4040 40e0 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0040 0040 c040 4040 4040 4040 8000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0040 c04c 4850 6050 48ee 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0040 c040 4040 4040 40e0 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 0059 e644 4444 44ee 0000 0000 -0000 0000 0080 4040 4040 40e0 0000 0000 -0000 0000 0058 e444 4444 44ee 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 0030 4884 8484 4830 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 00f8 4442 4242 6458 4040 e000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 0034 4c84 8484 4c34 0404 0e00 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 0058 e040 4040 40e0 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 0070 8880 7008 8870 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0040 40f0 4040 4040 4830 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 00cc 4444 4444 443a 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 00ee 4444 2828 1010 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 00e0 4444 2a2a 1111 0000 0000 -0000 0000 00e0 4040 8080 0000 0000 0000 -0000 0000 00ee 4428 1028 44ee 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 00ee 4444 2828 1010 2020 4000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 00f8 8810 2040 88f8 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0010 2020 2020 2040 2020 2020 2010 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0040 4040 4040 4040 4040 4040 4040 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0040 2020 2020 2010 2020 2020 2040 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0068 b000 0000 0000 0000 0000 0000 -0000 0000 0000 0000 0000 0000 0000 0000 -0000 0000 0000 0000 0000 0000 0000 00ff -0000 0000 0000 0000 ffff ffff ffff ffff ] $1 - -@mem ( placeholder ) - "Keep 20 "up 20 "to 20 "eight 20 "pages 20 "of 20 "notes 20 "in 20 "the 20 "Note 20 "Pad. 20 - "Click 20 "on 20 "the 20 "dog-ear 20 "to 20 "turn 20 "to 20 "the 20 "next 20 "following 20 "page. 20 - "Click 20 "in 20 "the 20 "lower 20 "left 20 "corner 20 "to 20 "turn 20 "to 20 "the 20 "next 20 "previous 20 "page. 20 $1 -