commit e79004a07563060d66bc771b6285b7fe7e6b02bf
parent 6821bea9c0a0f6f356d2b406de55c4968445b9c3
Author: neauoire <aliceffekt@gmail.com>
Date: Tue, 21 Sep 2021 09:44:10 -0700
Added basic launcher
Diffstat:
1 file changed, 666 insertions(+), 0 deletions(-)
diff --git a/projects/software/launcher.tal b/projects/software/launcher.tal
@@ -0,0 +1,666 @@
+( font )
+
+%+ { ADD } %- { SUB } %* { MUL } %/ { DIV }
+%< { LTH } %> { GTH } %= { EQU } %! { NEQ }
+%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
+%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
+
+%RTN { JMP2r }
+%TOS { #00 SWP }
+%BRK? { #01 JCN BRK }
+%RTN? { #01 JCN RTN }
+
+%DEBUG { ;print-hex/byte JSR2 #0a .Console/write DEO }
+%DEBUG2 { ;print-hex/short JSR2 #0a .Console/write DEO }
+
+( devices )
+
+|00 @System &vector $2 &pad $6 &r $2 &g $2 &b $2
+|10 @Console [ &vector $2 &read $1 &pad $5 &write $1 &error $1 ]
+|20 @Screen &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
+|80 @Controller [ &vector $2 &button $1 &key $1 ]
+|a0 @File &vector $2 &success $2 &offset-hs $2 &offset-ls $2 &name $2 &length $2 &load $2 &save $2
+
+( variables )
+
+|0000
+
+@input $30
+
+( init )
+
+|0100 ( -> )
+
+ ( theme )
+ #a0f7 .System/r DEO2
+ #a0f7 .System/g DEO2
+ #a0f7 .System/b DEO2
+
+ ( vectors )
+ ;on-button .Controller/vector DEO2
+
+ #0020 #0020 ;welcome-txt #01 ;draw-label JSR2
+ #0020 #0030 ;today-txt #01 ;draw-label JSR2
+ #0020 #0050 ;prompt-txt #02 ;draw-label JSR2
+
+BRK
+
+@on-button ( -> )
+
+ .Controller/key DEI BRK?
+
+ .Controller/key DEI
+ DUP #08 ! ,&no-backspace JCN
+ ;form/erase JSR2 POP BRK
+ &no-backspace
+ DUP #0d ! ,&no-enter JCN
+ ;form/validate JSR2 POP BRK
+ &no-enter
+ ;form/append JSR2
+
+BRK
+
+@form ( -- )
+
+ &append ( char -- )
+ ,&seek JSR STH2k NIP #30 < ,&can-append JCN
+ POP POP2r RTN
+ &can-append
+ ( save ) STH2kr STA
+ ( null ) #00 STH2r INC2 STA
+ #01 ,&draw JSR
+ RTN
+
+ &validate ( -- )
+ ;input ;launch JSR2
+ #00 ,&draw JSR
+ ( null ) #0000 ;input STA2
+ RTN
+
+ &erase ( -- )
+ ;input LDA2 #0000 !! ,&can-erase JCN
+ RTN
+ &can-erase
+ #00 ,&draw JSR
+ ( remove ) #00 ,&seek JSR #0001 -- STA
+ #01 ,&draw JSR
+ RTN
+
+ &seek ( -- end* )
+ ;input #0001 --
+ &seek-loop
+ INC2 LDAk ,&seek-loop JCN
+ RTN
+
+ &draw ( color -- )
+ STH
+ #0030 #0070 ;input STHr ;draw-label JSR2
+ RTN
+
+RTN
+
+@launch ( path* -- )
+
+ .File/name DEO2
+ #ffff .File/length DEO2
+ #0000 .File/load DEO2
+ #0100 JMP2
+
+RTN
+
+@draw-label ( x* y* addr* color -- )
+
+ STH STH2
+ .Screen/y DEO2
+ .Screen/x DEO2
+ STH2r
+ &loop
+ ( top-addr ) LDAk #00 - TOS #0010 MUL2 ;font ++ .Screen/addr DEO2
+ ( top-draw ) STHkr .Screen/sprite DEO
+ ( bottom-addr ) .Screen/addr DEI2 #0008 ++ .Screen/addr DEO2
+ ( next-y ) .Screen/y DEI2 #0008 ++ .Screen/y DEO2
+ ( bottom-draw ) STHkr .Screen/sprite DEO
+ ( prev-y ) .Screen/y DEI2 #0008 -- .Screen/y DEO2
+ ( move ) .Screen/x DEI2 #0008 ++ .Screen/x DEO2
+ INC2 LDAk ,&loop JCN
+ POP2 POPr
+
+RTN
+
+@print-hex ( value* -- )
+
+ &short ( value* -- )
+ SWP ,&echo JSR
+ &byte ( value -- )
+ ,&echo JSR
+ RTN
+
+ &echo ( value -- )
+ STHk #04 SFT ,&parse JSR .Console/write DEO
+ STHr #0f AND ,&parse JSR .Console/write DEO
+ RTN
+ &parse ( value -- char )
+ DUP #09 GTH ,&above JCN #30 + RTN &above #09 - #60 + RTN
+
+RTN
+
+@welcome-txt
+ "Welcome 20 "to 20 "your 20 "UXN 20 "Ordinator $1
+@today-txt
+ "Today 20 "is 20 "21Q04 ". $1
+@prompt-txt
+ "What 20 "shall 20 "we 20 "do? $1
+
+@font
+ 0000 0000 0000 0000
+ 0000 0000 0000 0000
+ 007e c381 a581 bd99
+ c37e 0000 0000 0000
+ 007e ffff dbff c3e7
+ ff7e 0000 0000 0000
+ 0000 44ee fefe fe7c
+ 3810 0000 0000 0000
+ 0010 387c fefe 7c38
+ 1000 0000 0000 0000
+ 0018 3c3c ffe7 e718
+ 187e 0000 0000 0000
+ 0018 3c7e ffff 7e18
+ 187e 0000 0000 0000
+ 0000 0000 3c7e 7e3c
+ 0000 0000 0000 0000
+ ffff ffff c381 81c3
+ ffff ffff 0000 0000
+ 0000 3c7e 6642 4266
+ 7e3c 0000 0000 0000
+ ffff c381 99bd bd99
+ 81c3 ffff 0000 0000
+ 003e 0e3a 72f8 cccc
+ cc78 0000 0000 0000
+ 003c 6666 663c 187e
+ 1818 0000 0000 0000
+ 001f 1919 1f18 1878
+ f870 0000 0000 0000
+ 007f 637f 6363 6367
+ e7e6 c000 0000 0000
+ 0000 18db 7ee7 e77e
+ db18 0000 0000 0000
+ 0080 c0e0 f8fe f8e0
+ c080 0000 0000 0000
+ 0002 060e 3efe 3e0e
+ 0602 0000 0000 0000
+ 0018 3c7e 1818 187e
+ 3c18 0000 0000 0000
+ 0066 6666 6666 0000
+ 6666 0000 0000 0000
+ 007f dbdb db7b 1b1b
+ 1b1b 0000 0000 0000
+ 007e 6330 3c66 663c
+ 0cc6 7e00 0000 0000
+ 0000 0000 0000 00fe
+ fefe 0000 0000 0000
+ 0018 3c7e 1818 187e
+ 3c18 7e00 0000 0000
+ 0018 3c7e 1818 1818
+ 1818 0000 0000 0000
+ 0018 1818 1818 187e
+ 3c18 0000 0000 0000
+ 0000 0018 0cfe 0c18
+ 0000 0000 0000 0000
+ 0000 0030 60fe 6030
+ 0000 0000 0000 0000
+ 0000 0000 c0c0 c0fe
+ 0000 0000 0000 0000
+ 0000 0024 66ff 6624
+ 0000 0000 0000 0000
+ 0000 1010 3838 7c7c
+ fefe 0000 0000 0000
+ 0000 fefe 7c7c 3838
+ 1010 0000 0000 0000
+ 0000 0000 0000 0000
+ 0000 0000 0000 0000
+ 0030 7878 7830 3000
+ 3030 0000 0000 0000
+ 0066 6666 2400 0000
+ 0000 0000 0000 0000
+ 006c 6cfe 6c6c 6cfe
+ 6c6c 0000 0000 0000
+ 3030 7cc0 c078 0c0c
+ f830 3000 0000 0000
+ 0000 00c4 cc18 3060
+ cc8c 0000 0000 0000
+ 0070 d8d8 70fa decc
+ dc76 0000 0000 0000
+ 0030 3030 6000 0000
+ 0000 0000 0000 0000
+ 000c 1830 6060 6030
+ 180c 0000 0000 0000
+ 0060 3018 0c0c 0c18
+ 3060 0000 0000 0000
+ 0000 0066 3cff 3c66
+ 0000 0000 0000 0000
+ 0000 0018 187e 1818
+ 0000 0000 0000 0000
+ 0000 0000 0000 0000
+ 3838 6000 0000 0000
+ 0000 0000 00fe 0000
+ 0000 0000 0000 0000
+ 0000 0000 0000 0000
+ 3838 0000 0000 0000
+ 0000 0206 0c18 3060
+ c080 0000 0000 0000
+ 007c c6ce ded6 f6e6
+ c67c 0000 0000 0000
+ 0010 30f0 3030 3030
+ 30fc 0000 0000 0000
+ 0078 cccc 0c18 3060
+ ccfc 0000 0000 0000
+ 0078 cc0c 0c38 0c0c
+ cc78 0000 0000 0000
+ 000c 1c3c 6ccc fe0c
+ 0c1e 0000 0000 0000
+ 00fc c0c0 c0f8 0c0c
+ cc78 0000 0000 0000
+ 0038 60c0 c0f8 cccc
+ cc78 0000 0000 0000
+ 00fe c6c6 060c 1830
+ 3030 0000 0000 0000
+ 0078 cccc cc78 cccc
+ cc78 0000 0000 0000
+ 0078 cccc cc7c 1818
+ 3070 0000 0000 0000
+ 0000 0038 3800 0038
+ 3800 0000 0000 0000
+ 0000 0038 3800 0038
+ 3818 3000 0000 0000
+ 000c 1830 60c0 6030
+ 180c 0000 0000 0000
+ 0000 0000 7e00 7e00
+ 0000 0000 0000 0000
+ 0060 3018 0c06 0c18
+ 3060 0000 0000 0000
+ 0078 cc0c 1830 3000
+ 3030 0000 0000 0000
+ 007c c6c6 dede dec0
+ c07c 0000 0000 0000
+ 0030 78cc cccc fccc
+ cccc 0000 0000 0000
+ 00fc 6666 667c 6666
+ 66fc 0000 0000 0000
+ 003c 66c6 c0c0 c0c6
+ 663c 0000 0000 0000
+ 00f8 6c66 6666 6666
+ 6cf8 0000 0000 0000
+ 00fe 6260 647c 6460
+ 62fe 0000 0000 0000
+ 00fe 6662 647c 6460
+ 60f0 0000 0000 0000
+ 003c 66c6 c0c0 cec6
+ 663e 0000 0000 0000
+ 00cc cccc ccfc cccc
+ cccc 0000 0000 0000
+ 0078 3030 3030 3030
+ 3078 0000 0000 0000
+ 001e 0c0c 0c0c cccc
+ cc78 0000 0000 0000
+ 00e6 666c 6c78 6c6c
+ 66e6 0000 0000 0000
+ 00f0 6060 6060 6266
+ 66fe 0000 0000 0000
+ 00c6 eefe fed6 c6c6
+ c6c6 0000 0000 0000
+ 00c6 c6e6 f6fe dece
+ c6c6 0000 0000 0000
+ 0038 6cc6 c6c6 c6c6
+ 6c38 0000 0000 0000
+ 00fc 6666 667c 6060
+ 60f0 0000 0000 0000
+ 0038 6cc6 c6c6 cede
+ 7c0c 1e00 0000 0000
+ 00fc 6666 667c 6c66
+ 66e6 0000 0000 0000
+ 0078 cccc c070 18cc
+ cc78 0000 0000 0000
+ 00fc b430 3030 3030
+ 3078 0000 0000 0000
+ 00cc cccc cccc cccc
+ cc78 0000 0000 0000
+ 00cc cccc cccc cccc
+ 7830 0000 0000 0000
+ 00c6 c6c6 c6d6 d66c
+ 6c6c 0000 0000 0000
+ 00cc cccc 7830 78cc
+ cccc 0000 0000 0000
+ 00cc cccc cc78 3030
+ 3078 0000 0000 0000
+ 00fe ce98 1830 6062
+ c6fe 0000 0000 0000
+ 003c 3030 3030 3030
+ 303c 0000 0000 0000
+ 0000 80c0 6030 180c
+ 0602 0000 0000 0000
+ 003c 0c0c 0c0c 0c0c
+ 0c3c 0000 0000 0000
+ 1038 6cc6 0000 0000
+ 0000 0000 0000 0000
+ 0000 0000 0000 0000
+ 0000 ff00 0000 0000
+ 3030 1800 0000 0000
+ 0000 0000 0000 0000
+ 0000 0000 780c 7ccc
+ cc76 0000 0000 0000
+ 00e0 6060 7c66 6666
+ 66dc 0000 0000 0000
+ 0000 0000 78cc c0c0
+ cc78 0000 0000 0000
+ 001c 0c0c 7ccc cccc
+ cc76 0000 0000 0000
+ 0000 0000 78cc fcc0
+ cc78 0000 0000 0000
+ 0038 6c60 60f8 6060
+ 60f0 0000 0000 0000
+ 0000 0000 76cc cccc
+ 7c0c cc78 0000 0000
+ 00e0 6060 6c76 6666
+ 66e6 0000 0000 0000
+ 0018 1800 7818 1818
+ 187e 0000 0000 0000
+ 000c 0c00 3c0c 0c0c
+ 0ccc cc78 0000 0000
+ 00e0 6060 666c 786c
+ 66e6 0000 0000 0000
+ 0078 1818 1818 1818
+ 187e 0000 0000 0000
+ 0000 0000 fcd6 d6d6
+ d6c6 0000 0000 0000
+ 0000 0000 f8cc cccc
+ cccc 0000 0000 0000
+ 0000 0000 78cc cccc
+ cc78 0000 0000 0000
+ 0000 0000 dc66 6666
+ 667c 60f0 0000 0000
+ 0000 0000 76cc cccc
+ cc7c 0c1e 0000 0000
+ 0000 0000 ec6e 7660
+ 60f0 0000 0000 0000
+ 0000 0000 78cc 6018
+ cc78 0000 0000 0000
+ 0000 2060 fc60 6060
+ 6c38 0000 0000 0000
+ 0000 0000 cccc cccc
+ cc76 0000 0000 0000
+ 0000 0000 cccc cccc
+ 7830 0000 0000 0000
+ 0000 0000 c6c6 d6d6
+ 6c6c 0000 0000 0000
+ 0000 0000 c66c 3838
+ 6cc6 0000 0000 0000
+ 0000 0000 6666 6666
+ 3c0c 18f0 0000 0000
+ 0000 0000 fc8c 1860
+ c4fc 0000 0000 0000
+ 001c 3030 60c0 6030
+ 301c 0000 0000 0000
+ 0018 1818 1800 1818
+ 1818 0000 0000 0000
+ 00e0 3030 180c 1830
+ 30e0 0000 0000 0000
+ 0073 dace 0000 0000
+ 0000 0000 0000 0000
+ 0000 0010 386c c6c6
+ fe00 0000 0000 0000
+ 0078 cccc c0c0 c0cc
+ cc78 3060 0000 0000
+ 00cc cc00 cccc cccc
+ cc76 0000 0000 0000
+ 0c18 3000 78cc fcc0
+ cc78 0000 0000 0000
+ 3078 cc00 780c 7ccc
+ cc76 0000 0000 0000
+ 00cc cc00 780c 7ccc
+ cc76 0000 0000 0000
+ c060 3000 780c 7ccc
+ cc76 0000 0000 0000
+ 386c 6c38 f80c 7ccc
+ cc76 0000 0000 0000
+ 0000 0000 78cc c0c0
+ cc78 3060 0000 0000
+ 3078 cc00 78cc fcc0
+ c07c 0000 0000 0000
+ 00cc cc00 78cc fcc0
+ c07c 0000 0000 0000
+ c060 3000 78cc fcc0
+ c07c 0000 0000 0000
+ 006c 6c00 7818 1818
+ 187e 0000 0000 0000
+ 1038 6c00 7818 1818
+ 187e 0000 0000 0000
+ 6030 1800 7818 1818
+ 187e 0000 0000 0000
+ 00cc 0030 78cc ccfc
+ cccc 0000 0000 0000
+ 78cc cc78 78cc ccfc
+ cccc 0000 0000 0000
+ 0c18 00fc c4c0 f8c0
+ c4fc 0000 0000 0000
+ 0000 0000 fe1b 7fd8
+ d8ef 0000 0000 0000
+ 003e 78d8 d8fe d8d8
+ d8de 0000 0000 0000
+ 3078 cc00 78cc cccc
+ cc78 0000 0000 0000
+ 00cc cc00 78cc cccc
+ cc78 0000 0000 0000
+ c060 3000 78cc cccc
+ cc78 0000 0000 0000
+ 3078 cc00 cccc cccc
+ cc76 0000 0000 0000
+ c060 3000 cccc cccc
+ cc76 0000 0000 0000
+ 0066 6600 6666 6666
+ 3c0c 18f0 0000 0000
+ 00cc 0078 cccc cccc
+ cc78 0000 0000 0000
+ cc00 cccc cccc cccc
+ cc78 0000 0000 0000
+ 0000 0000 78cc dcec
+ cc78 0000 0000 0000
+ 3c66 6060 60fc 6060
+ c0fe 0000 0000 0000
+ 003a 6cce d6d6 d6e6
+ 6cb8 0000 0000 0000
+ 0000 0000 00c6 6c38
+ 6cc6 0000 0000 0000
+ 0e1b 1818 7e18 1818
+ d870 0000 0000 0000
+ 0c18 3000 780c 7ccc
+ cc76 0000 0000 0000
+ 0c18 3000 7818 1818
+ 187e 0000 0000 0000
+ 0c18 3000 78cc cccc
+ cc78 0000 0000 0000
+ 0c18 3000 cccc cccc
+ cc76 0000 0000 0000
+ 0076 dc00 f8cc cccc
+ cccc 0000 0000 0000
+ 76dc 00c6 e6f6 dece
+ c6c6 0000 0000 0000
+ 0078 cccc 7e00 fe00
+ 0000 0000 0000 0000
+ 0078 cccc 7800 fe00
+ 0000 0000 0000 0000
+ 0030 3000 3060 c0c0
+ cc78 0000 0000 0000
+ 0038 44ba aaba b2aa
+ 4438 0000 0000 0000
+ 0000 0000 00fc 0c0c
+ 0c00 0000 0000 0000
+ 0062 e66c 7830 6ec3
+ 860c 1f00 0000 0000
+ 0063 e66c 7837 6fdb
+ b33f 0300 0000 0000
+ 0030 3000 3030 7878
+ 7830 0000 0000 0000
+ 0000 0000 3366 cccc
+ 6633 0000 0000 0000
+ 0000 0000 cc66 3333
+ 66cc 0000 0000 0000
+ 2492 4924 9249 2492
+ 4924 9249 0000 0000
+ 55aa 55aa 55aa 55aa
+ 55aa 55aa 0000 0000
+ 6ddb b66d dbb6 6ddb
+ b66d dbb6 0000 0000
+ 1818 1818 1818 1818
+ 1818 1818 0000 0000
+ 1818 1818 18f8 1818
+ 1818 1818 0000 0000
+ 0c18 0030 78cc ccfc
+ cccc 0000 0000 0000
+ 78cc 0030 78cc ccfc
+ cccc 0000 0000 0000
+ 6030 0030 78cc ccfc
+ cccc 0000 0000 0000
+ 0038 44ba a2a2 a2ba
+ 4438 0000 0000 0000
+ 6666 6666 e606 06e6
+ 6666 6666 0000 0000
+ 6666 6666 6666 6666
+ 6666 6666 0000 0000
+ 0000 0000 fe06 06e6
+ 6666 6666 0000 0000
+ 6666 6666 e606 06fe
+ 0000 0000 0000 0000
+ 0030 3078 ccc0 c0cc
+ 7830 3000 0000 0000
+ cccc cccc 78fc 30fc
+ 3030 0000 0000 0000
+ 0000 0000 00f8 1818
+ 1818 1818 0000 0000
+ 1818 1818 181f 0000
+ 0000 0000 0000 0000
+ 1818 1818 18ff 0000
+ 0000 0000 0000 0000
+ 0000 0000 00ff 1818
+ 1818 1818 0000 0000
+ 1818 1818 181f 1818
+ 1818 1818 0000 0000
+ 0000 0000 00ff 0000
+ 0000 0000 0000 0000
+ 1818 1818 18ff 1818
+ 1818 1818 0000 0000
+ 0076 dc00 780c 7ccc
+ cc76 0000 0000 0000
+ 76dc 0030 78cc ccfc
+ cccc 0000 0000 0000
+ 6666 6666 6760 607f
+ 0000 0000 0000 0000
+ 0000 0000 7f60 6067
+ 6666 6666 0000 0000
+ 6666 6666 e700 00ff
+ 0000 0000 0000 0000
+ 0000 0000 ff00 00e7
+ 6666 6666 0000 0000
+ 6666 6666 6760 6067
+ 6666 6666 0000 0000
+ 0000 0000 ff00 00ff
+ 0000 0000 0000 0000
+ 6666 6666 e700 00e7
+ 6666 6666 0000 0000
+ 0000 0000 00c6 7c6c
+ 7cc6 0000 0000 0000
+ cc30 d80c 067e c6c6
+ c67c 0000 0000 0000
+ 00f8 6c66 66f6 6666
+ 6cf8 0000 0000 0000
+ 78cc 00fc c4c0 f8c0
+ c4fc 0000 0000 0000
+ 00cc 00fc c4c0 f8c0
+ c4fc 0000 0000 0000
+ 6030 00fc c4c0 f8c0
+ c4fc 0000 0000 0000
+ 00f0 3030 30fc 0000
+ 0000 0000 0000 0000
+ 1830 0078 3030 3030
+ 3078 0000 0000 0000
+ 78cc 0078 3030 3030
+ 3078 0000 0000 0000
+ 00cc 0078 3030 3030
+ 3078 0000 0000 0000
+ 1818 1818 18f8 0000
+ 0000 0000 0000 0000
+ 0000 0000 001f 1818
+ 1818 1818 0000 0000
+ ffff ffff ffff ffff
+ ffff ffff 0000 0000
+ 0000 0000 0000 ffff
+ ffff ffff 0000 0000
+ 0018 1818 1800 1818
+ 1818 0000 0000 0000
+ 6030 0078 3030 3030
+ 3078 0000 0000 0000
+ ffff ffff ffff 0000
+ 0000 0000 0000 0000
+ 1830 0078 cccc cccc
+ cc78 0000 0000 0000
+ 0078 cccc d8cc cccc
+ f8c0 6000 0000 0000
+ 78cc 0078 cccc cccc
+ cc78 0000 0000 0000
+ 6030 0078 cccc cccc
+ cc78 0000 0000 0000
+ 0076 dc00 78cc cccc
+ cc78 0000 0000 0000
+ 76dc 0078 cccc cccc
+ cc78 0000 0000 0000
+ 0000 0000 6666 6666
+ 667b 60c0 0000 0000
+ 0000 e060 7c66 667c
+ 60f0 0000 0000 0000
+ 00f0 607c 6666 667c
+ 60f0 0000 0000 0000
+ 1830 00cc cccc cccc
+ cc78 0000 0000 0000
+ 78cc 00cc cccc cccc
+ cc78 0000 0000 0000
+ 6030 00cc cccc cccc
+ cc78 0000 0000 0000
+ 060c 1800 6666 6666
+ 3c0c 18f0 0000 0000
+ 1830 00cc cccc 7830
+ 3078 0000 0000 0000
+ 00fc 0000 0000 0000
+ 0000 0000 0000 0000
+ 0c18 3000 0000 0000
+ 0000 0000 0000 0000
+ 0000 0000 00fc 0000
+ 0000 0000 0000 0000
+ 0000 3030 fc30 3000
+ fc00 0000 0000 0000
+ 0000 0000 00f8 0000
+ f800 0000 0000 0000
+ e033 663c f837 6fdb
+ b33f 0300 0000 0000
+ 007f dbdb db7b 1b1b
+ 1b1b 0000 0000 0000
+ 007e 6330 3c66 663c
+ 0cc6 7e00 0000 0000
+ 0000 3030 00fc 0030
+ 3000 0000 0000 0000
+ 0000 0000 0000 0000
+ 0000 3070 0000 0000
+ 003c 6666 663c 0000
+ 0000 0000 0000 0000
+ 00cc 0000 0000 0000
+ 0000 0000 0000 0000
+ 0000 0000 0018 0000
+ 0000 0000 0000 0000
+ 0030 7030 3078 0000
+ 0000 0000 0000 0000
+ 0078 0c38 0c78 0000
+ 0000 0000 0000 0000
+ 0078 0c18 307c 0000
+ 0000 0000 0000 0000
+ 0000 00fc fcfc fcfc
+ fc00 0000 0000 0000
+ 0000 0000 0000 0000
+ 0000 0000 0000 0000