chu писал(а):
Ilya писал(а):
...Могу подкинуть свою либу для RTC.
Спасибо-давай!
Ilya писал(а):
Может передашь amForth ребятам?
Сформулируй инф. сообщение, может со ссылками, чтобы было чего писать.
Надеюсь админ меня не загонит в вечный бан. Держи!
RTC для stm32l153rb
Код:
\
\ rtc.f v1.0
\ stm32l152rb
\ Ilya Abdrahimov
\ REQUIRE st32l152.f
\ REQUIRE interrupts.f
\ Words:
\ rtc-init - rtc initialization
\ rtc-set-time - set time ( hh mm ss -- )
\ rtc-set-date - set date ( yy wd mm dd -- )
\ rtc-get-time - get time ( -- hh mm ss )
\ rtc-get-date - get date ( -- yy wd mm dd )
\ rtc-alarm-init - rtc initialization ( addra addrb -- ) \ addra&addrb - Address your words alarm handlers
\ rtc-alarma-set - initialization alarm A ( hh mm -- ) \ hh - hour, mm - minutes
\ rtc-alarmb-set - initialization alarm B ( hh mm -- ) \ hh - hour, mm - minutes
\ rtc-alarma-disable - disable Alarm A
\ rtc-alarmb-disable - disable Alarm B
\ rtc-alarma-gt - Get Alarm A time ( -- hh mm )
\ rtc-alarmb-gt - Get Alarm B time ( -- hh mm )
$10000000 constant RCC_APB1ENR_PWREN \ Power interface clock enable
$100 constant PWR_CR_DBP \ Disable Backup Domain write protection
$400000 constant RCC_CSR_RTCEN \ RTC clock enable
$0 constant RCC_CSR_RTCSEL_NOCLOCK \ No clock
$10000 constant RCC_CSR_RTCSEL_LSE \ LSE oscillator clock used as RTC clock
$20000 constant RCC_CSR_RTCSEL_LSI \ LSI oscillator clock used as RTC clock
$30000 constant RCC_CSR_RTCSEL_HSE \ HSE oscillator clock divided by 2, 4, 8 or 16 by RTCPRE used as RTC clock
: dec>bcd
#10 /mod 4 lshift or
;
: bcd>dec
dup $f and swap 4 rshift 10 * +
;
\ RTC initialization
: rtc-init ( -- )
\ $20 RTC_ISR bit@ 0= \ Calendar has been initialized ?
\ IF
RCC_APB1ENR @ RCC_APB1ENR_PWREN or RCC_APB1ENR ! \ Power interface clock enable
PWR_CR_DBP PWR_CR bis! \ Disable Backup Domain write protection
\ $800000 rcc_csr bis!
\ $800000 rcc_csr bic!
\ $1 RCC_CSR bis! \ LSI on
\ begin $2 RCC_CSR bit@ until \ wait LSI ready
1 8 lshift RCC_CSR bis! \ LSE on
begin $200 RCC_CSR bit@ until \ wait LSE ready
RCC_CSR @ RCC_CSR_RTCSEL_LSE or RCC_CSR ! \ 10: LSI oscillator clock used as RTC/LCD clock
RCC_CSR_RTCEN RCC_CSR bis! \ RTC clock enable
$ca RTC_WPR c! $53 RTC_WPR c!
\ THEN
;
: rtc-cal-set-on
$80 RTC_ISR bis!
begin $40 rtc_isr bit@ until \ Calendar registers update is allowed.
$7f00ff RTC_PRER ! \ From LSI, LSE - $ff
$7f00ff RTC_PRER !
;
: rtc-cal-set-off
$80 RTC_ISR bic!
;
\ Set 12/24 time notation
: rtc-12/24 ( n -- ) \ 1 - am/pm, 0 -24h
$20 RTC_ISR bit@ \ Calendar has been initialized ?
if
rtc-cal-set-on
if #400000 RTC_TR bis! else #400000 RTC_TR bic! then
rtc-cal-set-off
else
drop
then
;
: rtc-set-time ( h m s -- )
$20 RTC_ISR bit@ \ Calendar has been initialized ?
if
rtc-cal-set-on
dec>bcd swap
dec>bcd 8 lshift or swap
dec>bcd 16 lshift or
RTC_TR !
rtc-cal-set-off
else
drop 2drop \ clear stack
then
;
: rtc-set-date ( yy wd mm dd -- )
$20 RTC_ISR bit@ \ Calendar has been initialized ?
if
rtc-cal-set-on
dec>bcd swap dec>bcd 8 lshift or
swap 13 lshift or
swap dec>bcd 16 lshift or RTC_DR !
rtc-cal-set-off
else
2drop 2drop \ clear stack
then
;
: rtc-get-time ( -- h m s )
rtc_tr @ dup >r 16 rshift bcd>dec r@ 8 rshift $ff and bcd>dec r> $ff and bcd>dec
;
: rtc-get-date ( -- yy wd mm dd )
rtc_dr @ dup >r 16 rshift bcd>dec r@ 8 rshift dup $e0 and 5 rshift swap $1f and bcd>dec r> $ff and bcd>dec
;
\ rtc-alarm
\ SAMPLE:
\ ' youalarmAhandler ' youalarmBhandler rtc-alarm-init
\ 4 26 set-alarma
\
0 variable alarma-addr \ Alarm A interrupt handler
0 variable alarmb-addr \ Alarm B interrupt handler
: irq-alarm
RTC_ISR @ $300 and
case
$100 of alarma-addr @ $100 RTC_ISR bic! endof
$200 of alarmb-addr @ $200 RTC_ISR bic! endof
endcase
?dup if execute then
1 17 lshift exti_pr bis!
;
: rtc-alarm-time ( hh mm -- n )
0
1 31 lshift or \ date/day don't care Alarm comparison
swap dec>bcd 8 lshift or \ mm
swap dec>bcd 16 lshift or \ hh
;
: alarma-mask
1 21 lshift \ Alarm A output enabled
1 12 lshift or \ Alarm A interrupt enbled
1 8 lshift or \ Alarm A enabled
;
: alarmb-mask
1 22 lshift \ Alarm B output enabled
1 13 lshift or \ Alarm B interrupt enbled
1 9 lshift or \ Alarm B enabled
;
: rtc-alarma-disable ( -- ) alarma-mask RTC_CR bic! ;
: rtc-alarmb-disable ( -- ) alarmb-mask RTC_CR bic! ;
: rtc-alarma-set ( hh mm -- )
rtc-cal-set-on
rtc-alarmb-disable
1 8 lshift RTC_ISR bic!
$100 rtc_isr bic! \
rtc-alarm-time RTC_ALRMAR !
1 22 lshift RTC_CR bic! \ Alarm B output disabled
alarma-mask
RTC_CR bis!
rtc-cal-set-off
;
: rtc-alarmb-set ( hh mm -- )
rtc-cal-set-on
rtc-alarma-disable
1 9 lshift RTC_ISR bic!
$200 rtc_isr bic! \
rtc-alarm-time RTC_ALRMBR !
1 21 lshift RTC_CR bic! \ Alarm A output disabled
alarmb-mask
RTC_CR bis!
rtc-cal-set-off
;
\ Get Alarm A time
: rtc-alarma-gt ( -- hh mm )
RTC_ALRMAR @ dup 16 rshift $ff and bcd>dec
swap 8 rshift $ff and bcd>dec
;
\ Get Alarm B time
: rtc-alarmb-gt ( -- hh mm )
RTC_ALRMBR @ dup 16 rshift $ff and bcd>dec
swap 8 rshift $ff and bcd>dec
;
: rtc-alarm-init ( addra addrb -- )
alarmb-addr ! alarma-addr !
['] irq-alarm irq-rtc_alarm !
RCC_APB2ENR_SYSCFGEN RCC_APB2ENR bis!
RTC_Alarm_IRQn nvic-enable
1 17 lshift exti_rtsr bis!
1 17 lshift exti_imr bis!
;
\ sample
\ : t rtc-get-time cr rot . ." :" swap . ." :" . ;
\ : d rtc-get-date cr . ." / " . drop ." /" . ;
\ : re cr ." isr:" rtc_isr @ hex. space ." cr:" rtc_cr @ hex. ;
\ : mya cr ." Alarm A:" t cr ;
\ : myb cr ." Alarm B:" t cr ;
rtc-init
\ ' mya ' myb rtc-alarm-init
\ 12 34 56 rtc-set-time
\ 12 36 rtc-alarma-set
TFT для amForth
hx8352graphics.frtКод:
\
marker =lcd-graphics=
: _wrtData csl [ $22 ] literal wrtCmd wrtData ;
\ Draw a pixel with the foreground color
\ This function assumes it will be nested within hwAccess functions
: _pixel ( x y --- )
over over ( x y --- x y x y)
setBounds ( x y x y --- )
fgColor @ _wrtData
;
\ Draw a pixel with the foreground color
\ This function obtains hwAccess
: pixel ( x y --- )
\ Obtain exclusive access to all hardware I/O
hwAccess[
_pixel
\ Release exclusive access to all hardware I/O
]hwAccess
clearBounds
;
variable y2
variable x2
variable y1
variable x1
\ Draw a rectangle filled with foreground color
\ This function assumes it will be nested within hwAccess functions
: _filledRect ( x1 y1 x2 y2 --- )
y2 ! x2 ! y1 ! x1 !
x1 @ y1 @ x2 @ y2 @ setBounds
fgColor @ _wrtData
x2 @ x1 @ - abs 1+
y2 @ y1 @ - abs 1+
[ 0 ] literal do dup
[ 0 ] literal do
wrl
wrh
loop
loop
drop
;
\ Draw a rectangle filled with foreground color
\ This function obtains hwAccess
: filledRect ( x1 y1 x2 y2 --- )
\ Obtain exclusive access to all hardware I/O
hwAccess[
_filledRect
\ Release exclusive access to all hardware I/O
]hwAccess
;
\ Draw horizontal line with foreground color
\ This function assumes it will be nested within hwAccess functions
: _hLine ( x y len --- )
>r ( x y len --- x y )
over over ( x y --- x y x y )
swap ( x y x y --- x y y x )
r> ( x y y x --- x y y x len )
+ ( x y y x len --- x y y x+len )
swap ( x y y x+len --- x y x+len y )
_filledRect
;
\ Draw horizontal line with foreground color
\ This function obtains hwAccess
: hLine ( x y len --- )
hwAccess[
_hLine
]hwAccess
;
\ Draw vertical line with foreground color
\ This function assumes it will be nested within hwAccess functions
: _vLine ( x y len --- )
2>r ( x y len --- x )
dup ( x --- x x )
2r> ( x x --- x x y len )
over ( x x y len --- x x y len y )
+ ( x x y len y --- x x y y+len )
rot ( x x y y+len --- x y y+len x )
swap ( x y y+len x --- x y x y+len )
_filledRect
;
\ Draw vertical line with foreground color
\ This function obtains hwAccess
: vLine ( x y len --- )
hwAccess[
_vLine
]hwAccess
;
variable y2
variable x2
variable y1
variable x1
\ Draw a rectangle with foreground color
: rect ( x1 y1 x2 y2 --- )
y2 ! x2 ! y1 ! x1 !
hwAccess[
x1 @ y1 @ x2 @ x1 @ - abs _hLine
x1 @ y2 @ x2 @ x1 @ - abs _hLine
x1 @ y1 @ y2 @ y1 @ - abs _vLine
x2 @ y1 @ y2 @ y1 @ - abs _vLine
]hwAccess
;
variable radius
variable y
variable x
\ Draw filled circle with foreground color
: filledCircle ( x y radius --- )
radius ! y ! x !
1 radius @ negate
hwAccess[
do
[ 1 ] literal radius @ negate
do
i i * j j * + radius @ radius @ * <
if x @ i + y @ j + i negate 2* _hLine
x @ i + y @ j - i negate 2* _hLine
leave
then
loop
loop
]hwAccess
;
variable dx
variable dy
variable error
\ Draw a circle with foreground color
: circle ( x y radius --- )
radius ! y ! x !
radius @ 0 <>
if
0 dx !
radius @ dy !
3 radius @ 2 * - error !
hwAccess[
begin
dy @ dx @ >
while
x @ dx @ - y @ dy @ - _pixel
x @ dy @ - y @ dx @ - _pixel
x @ dy @ + y @ dx @ - _pixel
x @ dx @ + y @ dy @ - _pixel
x @ dx @ - y @ dy @ + _pixel
x @ dy @ - y @ dx @ + _pixel
x @ dy @ + y @ dx @ + _pixel
x @ dx @ + y @ dy @ + _pixel
[ 0 ] literal error @ >
if
error @ dx @ [ 4 ] literal * [ 6 ] literal + + error !
else
error @ dx @ dy @ - [ 4 ] literal * [ 10 ] literal + + error !
dy @ 1- dy !
then
dx @ 1+ dx !
repeat
]hwAccess
then
;
\ Swap the value of two variables
: swapVars ( v1addr v2addr --- )
over over ( v1addr v2addr --- v1addr v2addr v1addr v2addr )
@ ( v1addr v2addr v1addr v2addr --- v1addr v2addr v1addr v2 )
swap @ ( v1addr v2addr v1addr v2 --- v1addr v2addr v2 v1 )
>r ( v1addr v2addr v2 v1 --- v1addr v2addr v2 )
rot ( v1addr v2addr v2 --- v2addr v2 v1addr )
! ( v2addr v2 v1addr --- v2addr )
r> ( v2addr --- v2addr v1 )
swap ( v2addr v1 --- v1 v2addr )
! ( v1 v2addr --- )
;
variable steep
variable derror
\ Draw line with foreground color
\ This function assumes it will be nested within hwAccess functions
: _line ( x1 y1 x2 y2 --- )
y2 ! x2 ! y1 ! x1 !
y2 @ y1 @ - abs x2 @ x1 @ - abs > steep !
steep @
if
x1 y1 swapVars
x2 y2 swapVars
then
x1 @ x2 @ >
if
x1 x2 swapVars
y1 y2 swapVars
then
y2 @ y1 @ - abs derror !
y1 @ y2 @ >
if
-1 dy !
else
1 dy !
then
x2 @ x1 @ - dx !
dx @ 1 rshift error !
y1 @ y !
x2 @ 1+ x1 @
do
steep @
if
y @ i _pixel
else
i y @ _pixel
then
error @ derror @ - error !
error @ 0<
if
dy @ y +!
dx @ error +!
then
loop
;
\ Draw line with foreground color
\ This function obtains hwAccess
: line ( x1 y1 x2 y2 --- )
hwAccess[
_line
]hwAccess
;
\ Storage for graphics cursor
variable cursorX
variable cursorY
\ Setup defaults
0 cursorX !
0 cursorY !
: moveCursor ( x y --- )
cursorY !
cursorX !
;
\ Draw a line to the given location from the position of the graphics cursor
\ then update the cursor's position with the new location
: lineTo ( x y --- )
2>r
cursorX @ cursorY @ 2r>
over over cursorY ! cursorX !
line
;
hx8352Priting.frt Код:
\ On screen printing functions for the SSD1289 65K Color LCD Controller
\ Written for AmForth
\ By: Craig A. Lindley
\ Last Update: 11/13/2103
\ Must have ssd1289Graphics.frt, utilities.frt, font.frt loaded
marker _PRINT_
\ Return cell at offset into font specified on the stack
: font@ ( offset --- cell )
FONT + @i
;
\ Render a row of font data
: renderFontRow ( font_row_data --- )
[ 0 ] literal [ FWIDTH 1- ] literal \ For all bits of font row data
do
dup ( font_row_data --- font_row_data font_row_data )
\ Create bitmask for individual bit
[ 1 ] literal i lshift and
if \ If bit set
fgColor @ wrtData
else \ If bit not set
bgColor @ wrtData
then
[ -1 ] literal
+loop
drop
;
\ Print a character from the font
\ This function assumes it will be nested within hwAccess functions
: _printChar ( c --- )
csl [ $22 ] literal wrtCmd
\ Calculate start of char data in font
[ $20 ] literal - CELLSPERCHAR * ( c --- offset )
\ Set bounds around char
cursorX @ cursorY @ cursorX @ [ FWIDTH 1- ] literal
+ cursorY @ [ FHEIGHT 1- ] literal + setBounds
[ CELLSPERCHAR ] literal [ 0 ] literal \ For all rows of font char data
do
dup ( offset --- offset offset )
i + ( offset offset --- offset offset+i )
font@ ( offset offset+i --- offset font_row_data )
[ ROWSPERCELL ] literal [ 1 ] literal = \ One row per cell ?
if \ Yes
renderFontRow
else \ No
dup ( offset font_row_data --- offset font_row_data font_row_data )
[ 8 ] literal rshift renderFontRow
[ $FF ] literal and renderFontRow
then
loop drop
;
: setXY
[ FHEIGHT ] literal * cursorY !
[ FWIDTH ] literal * cursorX !
;
\ Print a character from the font
\ This function obtains hwAccess
: printChar ( c x y --- )
hwAccess[
setXY
_printChar
]hwAccess
;
: lcd_emit ( c -- )
_printChar
[ FWIDTH ] literal cursorX +!
;
\ Switch emit to LCD
: emit->lcd ( -- )
['] lcd_emit ['] emit defer! ;
\ Switch emit to serial
: emit->tx0 ( -- )
\ ['] tx-isr ['] emit defer!
['] tx-poll ['] emit defer!
;
\ Number to LCD
: lcd_. ( n -- )
emit->lcd . emit->tx0 ;
\ String in RAM to LCD
: lcd_type ( adr u -- )
emit->lcd type emit->tx0 ;
\ ~ilya
\ Печатаем из флэшки
: lcd_typef dup 2/ swap over 2* - + over + swap
?do i @i dup
[ $ff ] literal and lcd_emit ><
[ $ff ] literal and ?dup if lcd_emit then loop ;
variable addr
variable count
variable count2
variable flag
\ Print string from flash horizontally
: horizPrintString ( addr count --- )
count ! addr !
count @ 1 rshift count2 !
count @ 2 mod 0 <> flag !
count2 @ 0
do
addr @ @i dup
[ $FF ] literal and _printChar
[ FWIDTH ] literal cursorX +!
[ 8 ] literal rshift _printChar
[ FWIDTH ] literal cursorX +!
[ 1 ] literal addr +!
loop
flag @
if
addr @ @i [ $FF ] literal and _printChar
FWIDTH cursorX +!
then
;
\ Print string from flash vertically
: vertPrintString ( addr count --- )
count ! addr !
count @ 1 rshift count2 !
count @ 2 mod 0 <> flag !
count2 @ 0
do
addr @ @i dup
$FF and _printChar
FHEIGHT cursorY +!
8 rshift _printChar
FHEIGHT cursorY +!
1 addr +!
loop
flag @
if
addr @ @i $FF and _printChar
FHEIGHT cursorY +!
then
;
variable dps
\ Compile a string to flash and return its address and count
: f"
$22 parse ( addr count --- )
count ! addr !
count @ 1 rshift count2 !
count @ 2 mod 0 <> flag !
dp dps !
count2 @ 0
do
addr @ c@ 1 addr +!
addr @ c@ 8 lshift or 1 addr +!
,
loop
flag @
if
addr @ c@ ,
then
dps @ count @
;
\ Define a label that places itself on the display
: label: ( x y addr count --- )
create
, , , ,
does>
dup over over
3 + @i swap 2 + @i moveCursor
1+ @i swap @i
;
и шрифты:
Код:
\ Small Font used for on screen printing for the SSD1289 65K Color LCD Controller
\ Written for AmForth
\ By: Craig A. Lindley
\ Last Update: 11/15#inclu/2103
marker _FONT_
&8 constant FWIDTH
&12 constant FHEIGHT
&6 constant CELLSPERCHAR
&2 constant ROWSPERCELL
\ 8x12 font with characters between $20 .. $5F
create FONT
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , \ space
$0000 , $2020 , $2020 , $2020 , $0020 , $0000 , \ !
$0028 , $5050 , $0000 , $0000 , $0000 , $0000 , \ "
$0000 , $2828 , $FC28 , $50FC , $5050 , $0000 , \ #
$0020 , $78A8 , $A060 , $3028 , $A8F0 , $2000 , \ $
$0000 , $48A8 , $B050 , $2834 , $5448 , $0000 , \ %
$0000 , $2050 , $5078 , $A8A8 , $906C , $0000 , \ &
$0040 , $4080 , $0000 , $0000 , $0000 , $0000 , \ '
$0004 , $0810 , $1010 , $1010 , $1008 , $0400 , \ left paren
$0040 , $2010 , $1010 , $1010 , $1020 , $4000 , \ right paren
$0000 , $0020 , $A870 , $70A8 , $2000 , $0000 , \ *
$0000 , $2020 , $20F8 , $2020 , $2000 , $0000 , \ +
$0000 , $0000 , $0000 , $0000 , $0040 , $4080 , \ ,
$0000 , $0000 , $00F8 , $0000 , $0000 , $0000 , \ -
$0000 , $0000 , $0000 , $0000 , $0040 , $0000 , \ .
$0008 , $1010 , $1020 , $2040 , $4040 , $8000 , \ /
$0000 , $7088 , $8888 , $8888 , $8870 , $0000 , \ 0
$0000 , $2060 , $2020 , $2020 , $2070 , $0000 , \ 1
$0000 , $7088 , $8810 , $2040 , $80F8 , $0000 , \ 2
$0000 , $7088 , $0830 , $0808 , $8870 , $0000 , \ 3
$0000 , $1030 , $5050 , $9078 , $1018 , $0000 , \ 4
$0000 , $F880 , $80F0 , $0808 , $8870 , $0000 , \ 5
$0000 , $7090 , $80F0 , $8888 , $8870 , $0000 , \ 6
$0000 , $F890 , $1020 , $2020 , $2020 , $0000 , \ 7
$0000 , $7088 , $8870 , $8888 , $8870 , $0000 , \ 8
$0000 , $7088 , $8888 , $7808 , $4870 , $0000 , \ 9
$0000 , $0000 , $2000 , $0000 , $0020 , $0000 , \ :
$0000 , $0000 , $0020 , $0000 , $0020 , $2000 , \ ;
$0004 , $0810 , $2040 , $2010 , $0804 , $0000 , \ <
$0000 , $0000 , $F800 , $00F8 , $0000 , $0000 , \ =
$0040 , $2010 , $0804 , $0810 , $2040 , $0000 , \ >
$0000 , $7088 , $8810 , $2020 , $0020 , $0000 , \ ?
$0000 , $7088 , $98A8 , $A8B8 , $8078 , $0000 , \ @
$0000 , $2020 , $3050 , $5078 , $48CC , $0000 , \ A
$0000 , $F048 , $4870 , $4848 , $48F0 , $0000 , \ B
$0000 , $7888 , $8080 , $8080 , $8870 , $0000 , \ C
$0000 , $F048 , $4848 , $4848 , $48F0 , $0000 , \ D
$0000 , $F848 , $5070 , $5040 , $48F8 , $0000 , \ E
$0000 , $F848 , $5070 , $5040 , $40E0 , $0000 , \ F
$0000 , $3848 , $8080 , $9C88 , $4830 , $0000 , \ G
$0000 , $CC48 , $4878 , $4848 , $48CC , $0000 , \ H
$0000 , $F820 , $2020 , $2020 , $20F8 , $0000 , \ I
$0000 , $7C10 , $1010 , $1010 , $1090 , $E000 , \ J
$0000 , $EC48 , $5060 , $5050 , $48EC , $0000 , \ K
$0000 , $E040 , $4040 , $4040 , $44FC , $0000 , \ L
$0000 , $D8D8 , $D8D8 , $A8A8 , $A8A8 , $0000 , \ M
$0000 , $DC48 , $6868 , $5858 , $48E8 , $0000 , \ N
$0000 , $7088 , $8888 , $8888 , $8870 , $0000 , \ O
$0000 , $F048 , $4870 , $4040 , $40E0 , $0000 , \ P
$0000 , $7088 , $8888 , $88E8 , $9870 , $1800 , \ Q
$0000 , $F048 , $4870 , $5048 , $48EC , $0000 , \ R
$0000 , $7888 , $8060 , $1008 , $88F0 , $0000 , \ S
$0000 , $F8A8 , $2020 , $2020 , $2070 , $0000 , \ T
$0000 , $CC48 , $4848 , $4848 , $4830 , $0000 , \ U
$0000 , $CC48 , $4850 , $5030 , $2020 , $0000 , \ V
$0000 , $A8A8 , $A870 , $5050 , $5050 , $0000 , \ W
$0000 , $D850 , $5020 , $2050 , $50D8 , $0000 , \ X
$0000 , $D850 , $5020 , $2020 , $2070 , $0000 , \ Y
$0000 , $F890 , $1020 , $2040 , $48F8 , $0000 , \ Z
$0038 , $2020 , $2020 , $2020 , $2020 , $3800 , \ [
$0040 , $4040 , $2020 , $1010 , $1008 , $0000 , \ \
$0070 , $1010 , $1010 , $1010 , $1010 , $7000 , \ ]
$0020 , $5000 , $0000 , $0000 , $0000 , $0000 , \ ^
$0000 , $0000 , $0000 , $0000 , $0000 , $00FC , \ _
$0020 , $0000 , $0000 , $0000 , $0000 , $0000 , \ '
$0000 , $0000 , $0030 , $4838 , $483C , $0000 , \ a
$0000 , $C040 , $4070 , $4848 , $4870 , $0000 , \ b
$0000 , $0000 , $0038 , $4840 , $4038 , $0000 , \ c
$0000 , $1808 , $0838 , $4848 , $483C , $0000 , \ d
$0000 , $0000 , $0030 , $4878 , $4038 , $0000 , \ e
$0000 , $1C20 , $2078 , $2020 , $2078 , $0000 , \ f
$0000 , $0000 , $003C , $4830 , $4078 , $4438 , \ g
$0000 , $C040 , $4070 , $4848 , $48EC , $0000 , \ h
$0000 , $2000 , $0060 , $2020 , $2070 , $0000 , \ i
$0000 , $1000 , $0030 , $1010 , $1010 , $10E0 , \ j
$0000 , $C040 , $405C , $5070 , $48EC , $0000 , \ k
$0000 , $E020 , $2020 , $2020 , $20F8 , $0000 , \ l
$0000 , $0000 , $00F0 , $A8A8 , $A8A8 , $0000 , \ m
$0000 , $0000 , $00F0 , $4848 , $48EC , $0000 , \ n
$0000 , $0000 , $0030 , $4848 , $4830 , $0000 , \ o
$0000 , $0000 , $00F0 , $4848 , $4870 , $40E0 , \ p
$0000 , $0000 , $0038 , $4848 , $4838 , $081C , \ q
$0000 , $0000 , $00D8 , $6040 , $40E0 , $0000 , \ r
$0000 , $0000 , $0078 , $4030 , $0878 , $0000 , \ s
$0000 , $0020 , $2070 , $2020 , $2018 , $0000 , \ t
$0000 , $0000 , $00D8 , $4848 , $483C , $0000 , \ u
$0000 , $0000 , $00EC , $4850 , $3020 , $0000 , \ v
$0000 , $0000 , $00A8 , $A870 , $5050 , $0000 , \ w
$0000 , $0000 , $00D8 , $5020 , $50D8 , $0000 , \ x
$0000 , $0000 , $00EC , $4850 , $3020 , $20C0 , \ y
$0000 , $0000 , $0078 , $1020 , $2078 , $0000 , \ z
$0018 , $1010 , $1020 , $1010 , $1010 , $1800 , \ {
$1010 , $1010 , $1010 , $1010 , $1010 , $1010 , \ |
$0060 , $2020 , $2010 , $2020 , $2020 , $6000 , \ }
$40A4 , $1800 , $0000 , $0000 , $0000 , $0000 , \ ~
и large font
Код:
\ Large Font used for on screen printing for the SSD1289 65K Color LCD Controller
\ Written for AmForth
\ By: Craig A. Lindley
\ Last Update: 11/15/2103
marker _FONT_
&16 constant FWIDTH
&16 constant FHEIGHT
&16 constant CELLSPERCHAR
&1 constant ROWSPERCELL
\ 16x16 font with characters between $20 .. $5F
create FONT
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 ,
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , \ space
$0000 , $0000 , $0700 , $0F80 , $0F80 , $0F80 , $0F80 , $0F80 ,
$0700 , $0700 , $0000 , $0000 , $0700 , $0700 , $0700 , $0000 , \ !
$0000 , $0E38 , $0E38 , $0E38 , $0E38 , $0630 , $0000 , $0000 ,
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , \ "
$0000 , $0C30 , $0C30 , $0C30 , $7FFE , $7FFE , $0C30 , $0C30 ,
$0C30 , $0C30 , $7FFE , $7FFE , $0C30 , $0C30 , $0C30 , $0000 , \ #
$0000 , $0240 , $0240 , $0FF8 , $1FF8 , $1A40 , $1A40 , $1FF0 ,
$0FF8 , $0258 , $0258 , $1FF8 , $1FF0 , $0240 , $0240 , $0000 , \ $
$0000 , $0000 , $0000 , $0E10 , $0E30 , $0E70 , $00E0 , $01C0 ,
$0380 , $0700 , $0E70 , $0C70 , $0870 , $0000 , $0000 , $0000 , \ %
$0000 , $0000 , $0F00 , $1980 , $1980 , $1980 , $0F00 , $0F08 ,
$0F98 , $19F8 , $18F0 , $18E0 , $19F0 , $0F98 , $0000 , $0000 , \ &
$0000 , $0000 , $0700 , $0700 , $0700 , $0E00 , $0000 , $0000 ,
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , \ '
$0000 , $0000 , $00F0 , $01C0 , $0380 , $0700 , $0E00 , $0E00 ,
$0E00 , $0E00 , $0700 , $0380 , $01C0 , $00F0 , $0000 , $0000 , \ left paren
$0000 , $0000 , $0F00 , $0380 , $01C0 , $00E0 , $0070 , $0070 ,
$0070 , $0070 , $00E0 , $01C0 , $0380 , $0F00 , $0000 , $0000 , \ right paren
$0000 , $0000 , $0180 , $1188 , $0990 , $07E0 , $07E0 , $3FFC ,
$3FFC , $07E0 , $07E0 , $0990 , $1188 , $0180 , $0000 , $0000 , \ *
$0000 , $0000 , $0000 , $0000 , $0180 , $0180 , $0180 , $0FF0 ,
$0FF0 , $0180 , $0180 , $0180 , $0000 , $0000 , $0000 , $0000 , \ +
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 ,
$0000 , $0000 , $0000 , $0700 , $0700 , $0700 , $0E00 , $0000 , \ ,
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $1FF8 ,
$1FF8 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , \ -
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 ,
$0000 , $0000 , $0000 , $0700 , $0700 , $0700 , $0000 , $0000 , \ ,
$0000 , $0000 , $0002 , $0006 , $000E , $001C , $0038 , $0070 ,
$00E0 , $01C0 , $0380 , $0700 , $0E00 , $1C00 , $0000 , $0000 , \ /
$0000 , $0000 , $0FF0 , $1C38 , $1C78 , $1CF8 , $1CF8 , $1DB8 ,
$1DB8 , $1F38 , $1F38 , $1E38 , $1C38 , $0FF0 , $0000 , $0000 , \ 0
$0000 , $0000 , $0180 , $0180 , $0380 , $1F80 , $1F80 , $0380 ,
$0380 , $0380 , $0380 , $0380 , $0380 , $1FF0 , $0000 , $0000 , \ 1
$0000 , $0000 , $0FE0 , $1C70 , $1C38 , $0038 , $0070 , $00E0 ,
$01C0 , $0380 , $0700 , $0E38 , $1C38 , $1FF8 , $0000 , $0000 , \ 2
$0000 , $0000 , $0FE0 , $1C70 , $1C38 , $0038 , $0070 , $03C0 ,
$03C0 , $0070 , $0038 , $1C38 , $1C70 , $0FE0 , $0000 , $0000 , \ 3
$0000 , $0000 , $00E0 , $01E0 , $03E0 , $06E0 , $0CE0 , $18E0 ,
$1FF8 , $1FF8 , $00E0 , $00E0 , $00E0 , $03F8 , $0000 , $0000 , \ 4
$0000 , $0000 , $1FF8 , $1C00 , $1C00 , $1C00 , $1C00 , $1FE0 ,
$1FF0 , $0078 , $0038 , $1C38 , $1C70 , $0FE0 , $0000 , $0000 , \ 5
$0000 , $0000 , $03E0 , $0700 , $0E00 , $1C00 , $1C00 , $1FF0 ,
$1FF8 , $1C38 , $1C38 , $1C38 , $1C38 , $0FF0 , $0000 , $0000 , \ 6
$0000 , $0000 , $1FFC , $1C1C , $1C1C , $1C1C , $001C , $0038 ,
$0070 , $00E0 , $01C0 , $0380 , $0380 , $0380 , $0000 , $0000 , \ 7
$0000 , $0000 , $0FF0 , $1C38 , $1C38 , $1C38 , $1F38 , $07E0 ,
$07E0 , $1CF8 , $1C38 , $1C38 , $1C38 , $0FF0 , $0000 , $0000 , \ 8
$0000 , $0000 , $0FF0 , $1C38 , $1C38 , $1C38 , $1C38 , $1FF8 ,
$0FF8 , $0038 , $0038 , $0070 , $00E0 , $07C0 , $0000 , $0000 , \ 9
$0000 , $0000 , $0000 , $0000 , $0380 , $0380 , $0380 , $0000 ,
$0000 , $0380 , $0380 , $0380 , $0000 , $0000 , $0000 , $0000 , \ :
$0000 , $0000 , $0000 , $0000 , $0380 , $0380 , $0380 , $0000 ,
$0000 , $0380 , $0380 , $0380 , $0700 , $0000 , $0000 , $0000 , \ ;
$0000 , $0070 , $00E0 , $01C0 , $0380 , $0700 , $0E00 , $1C00 ,
$1C00 , $0E00 , $0700 , $0380 , $01C0 , $00E0 , $0070 , $0000 , \ <
$0000 , $0000 , $0000 , $0000 , $0000 , $3FFC , $3FFC , $0000 ,
$0000 , $3FFC , $3FFC , $0000 , $0000 , $0000 , $0000 , $0000 , \ =
$0000 , $1C00 , $0E00 , $0700 , $0380 , $01C0 , $00E0 , $0070 ,
$0070 , $00E0 , $01C0 , $0380 , $0700 , $0E00 , $1C00 , $0000 , \ >
$0000 , $03C0 , $0FF0 , $1E78 , $1838 , $0038 , $0070 , $00E0 ,
$01C0 , $01C0 , $0000 , $0000 , $01C0 , $01C0 , $01C0 , $0000 , \ ?
$0000 , $0FF8 , $1C1C , $1C1C , $1C1C , $1C1C , $1CFC , $1CFC ,
$1CFC , $1CFC , $1C00 , $1C00 , $1C00 , $1FF0 , $07F8 , $0000 , \ @
$0000 , $0000 , $03C0 , $07E0 , $0E70 , $1C38 , $1C38 , $1C38 ,
$1C38 , $1FF8 , $1C38 , $1C38 , $1C38 , $1C38 , $0000 , $0000 , \ A
$0000 , $0000 , $1FF0 , $0E38 , $0E38 , $0E38 , $0E38 , $0FF0 ,
$0FF0 , $0E38 , $0E38 , $0E38 , $0E38 , $1FF0 , $0000 , $0000 , \ B
$0000 , $0000 , $07F0 , $0E38 , $1C38 , $1C00 , $1C00 , $1C00 ,
$1C00 , $1C00 , $1C00 , $1C38 , $0E38 , $07F0 , $0000 , $0000 , \ C
$0000 , $0000 , $1FE0 , $0E70 , $0E38 , $0E38 , $0E38 , $0E38 ,
$0E38 , $0E38 , $0E38 , $0E38 , $0E70 , $1FE0 , $0000 , $0000 , \ D
$0000 , $0000 , $1FF8 , $0E18 , $0E08 , $0E00 , $0E30 , $0FF0 ,
$0FF0 , $0E30 , $0E00 , $0E08 , $0E18 , $1FF8 , $0000 , $0000 , \ E
$0000 , $0000 , $1FF8 , $0E18 , $0E08 , $0E00 , $0E30 , $0FF0 ,
$0FF0 , $0E30 , $0E00 , $0E00 , $0E00 , $1F00 , $0000 , $0000 , \ F
$0000 , $0000 , $07F0 , $0E38 , $1C38 , $1C38 , $1C00 , $1C00 ,
$1C00 , $1CF8 , $1C38 , $1C38 , $0E38 , $07F8 , $0000 , $0000 , \ G
$0000 , $0000 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $1FF0 ,
$1FF0 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $0000 , $0000 , \ H
$0000 , $0000 , $0FE0 , $0380 , $0380 , $0380 , $0380 , $0380 ,
$0380 , $0380 , $0380 , $0380 , $0380 , $0FE0 , $0000 , $0000 , \ I
$0000 , $0000 , $01FC , $0070 , $0070 , $0070 , $0070 , $0070 ,
$0070 , $3870 , $3870 , $3870 , $3870 , $0FE0 , $0000 , $0000 , \ J
$0000 , $0000 , $1E38 , $0E38 , $0E70 , $0EE0 , $0FC0 , $0F80 ,
$0F80 , $0FC0 , $0EE0 , $0E70 , $0E38 , $1E38 , $0000 , $0000 , \ K
$0000 , $0000 , $1F00 , $0E00 , $0E00 , $0E00 , $0E00 , $0E00 ,
$0E00 , $0E00 , $0E08 , $0E18 , $0E38 , $1FF8 , $0000 , $0000 , \ L
$0000 , $0000 , $1C1C , $1E3C , $1F7C , $1FFC , $1FFC , $1DDC ,
$1C9C , $1C1C , $1C1C , $1C1C , $1C1C , $1C1C , $0000 , $0000 , \ M
$0000 , $0000 , $1C1C , $1C1C , $1E1C , $1F1C , $1F9C , $1DDC ,
$1CFC , $1C7C , $1C3C , $1C1C , $1C1C , $1C1C , $0000 , $0000 , \ N
$0000 , $0000 , $03E0 , $07F0 , $0E38 , $1C1C , $1C1C , $1C1C ,
$1C1C , $1C1C , $1C1C , $0E38 , $07F0 , $03E0 , $0000 , $0000 , \ O
$0000 , $0000 , $1FF0 , $0E38 , $0E38 , $0E38 , $0E38 , $0FF0 ,
$0FF0 , $0E00 , $0E00 , $0E00 , $0E00 , $1F00 , $0000 , $0000 , \ P
$0000 , $0000 , $03E0 , $0F78 , $0E38 , $1C1C , $1C1C , $1C1C ,
$1C1C , $1C7C , $1CFC , $0FF8 , $0FF8 , $0038 , $00FC , $0000 , \ Q
$0000 , $0000 , $1FF0 , $0E38 , $0E38 , $0E38 , $0E38 , $0FF0 ,
$0FF0 , $0E70 , $0E38 , $0E38 , $0E38 , $1E38 , $0000 , $0000 , \ R
$0000 , $0000 , $0FF0 , $1C38 , $1C38 , $1C38 , $1C00 , $0FE0 ,
$07F0 , $0038 , $1C38 , $1C38 , $1C38 , $0FF0 , $0000 , $0000 , \ S
$0000 , $0000 , $1FFC , $19CC , $11C4 , $01C0 , $01C0 , $01C0 ,
$01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $07F0 , $0000 , $0000 , \ T
$0000 , $0000 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 ,
$1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $0FE0 , $0000 , $0000 , \ U
$0000 , $0000 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 ,
$1C70 , $1C70 , $1C70 , $0EE0 , $07C0 , $0380 , $0000 , $0000 , \ V
$0000 , $0000 , $1C1C , $1C1C , $1C1C , $1C1C , $1C1C , $1C9C ,
$1C9C , $1C9C , $0FF8 , $0FF8 , $0770 , $0770 , $0000 , $0000 , \ W
$0000 , $0000 , $1C70 , $1C70 , $1C70 , $0EE0 , $07C0 , $0380 ,
$0380 , $07C0 , $0EE0 , $1C70 , $1C70 , $1C70 , $0000 , $0000 , \ X
$0000 , $0000 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $0EE0 ,
$07C0 , $0380 , $0380 , $0380 , $0380 , $0FE0 , $0000 , $0000 , \ Y
$0000 , $0000 , $1FF8 , $1C38 , $1838 , $1070 , $00E0 , $01C0 ,
$0380 , $0700 , $0E08 , $1C18 , $1C38 , $1FF8 , $0000 , $0000 , \ Z
$0000 , $0000 , $07F0 , $0700 , $0700 , $0700 , $0700 , $0700 ,
$0700 , $0700 , $0700 , $0700 , $0700 , $07F0 , $0000 , $0000 , \ [
$0000 , $0000 , $1000 , $1800 , $1C00 , $0E00 , $0700 , $0380 ,
$01C0 , $00E0 , $0070 , $0038 , $001C , $0007 , $0000 , $0000 , \
$0000 , $0000 , $07F0 , $0070 , $0070 , $0070 , $0070 , $0070 ,
$0070 , $0070 , $0070 , $0070 , $0070 , $07F0 , $0000 , $0000 , \ ]
$0000 , $0180 , $03C0 , $07E0 , $0E70 , $1C38 , $0000 , $0000 ,
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , \ ^
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 ,
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $7FFF , $7FFF , \ _
$0000 , $0000 , $1C00 , $1C00 , $0700 , $0700 , $0000 , $0000 ,
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , \ '
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0FE0 , $0070 ,
$0070 , $0FF0 , $1C70 , $1C70 , $1C70 , $0FD8 , $0000 , $0000 , \ a
$0000 , $0000 , $1E00 , $0E00 , $0E00 , $0E00 , $0FF0 , $0E38 ,
$0E38 , $0E38 , $0E38 , $0E38 , $0E38 , $1BF0 , $0000 , $0000 , \ b
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0FE0 , $1C70 ,
$1C70 , $1C00 , $1C00 , $1C70 , $1C70 , $0FE0 , $0000 , $0000 , \ c
$0000 , $0000 , $00F8 , $0070 , $0070 , $0070 , $0FF0 , $1C70 ,
$1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $0FD8 , $0000 , $0000 , \ d
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0FE0 , $1C70 ,
$1C70 , $1FF0 , $1C00 , $1C70 , $1C70 , $0FE0 , $0000 , $0000 , \ e
$0000 , $0000 , $03E0 , $0770 , $0770 , $0700 , $0700 , $1FE0 ,
$1FE0 , $0700 , $0700 , $0700 , $0700 , $1FC0 , $0000 , $0000 , \ f
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0FD8 , $1C70 ,
$1C70 , $1C70 , $1C70 , $0FF0 , $07F0 , $0070 , $1C70 , $0FE0 , \ g
$0000 , $0000 , $1E00 , $0E00 , $0E00 , $0E00 , $0EF0 , $0F38 ,
$0F38 , $0E38 , $0E38 , $0E38 , $0E38 , $1E38 , $0000 , $0000 , \ h
$0000 , $0000 , $01C0 , $01C0 , $01C0 , $0000 , $0FC0 , $01C0 ,
$01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $0FF8 , $0000 , $0000 , \ i
$0000 , $0000 , $0070 , $0070 , $0070 , $0000 , $03F0 , $0070 ,
$0070 , $0070 , $0070 , $0070 , $0070 , $1C70 , $0CF0 , $07E0 , \ j
$0000 , $0000 , $1E00 , $0E00 , $0E00 , $0E00 , $0E38 , $0E70 ,
$0EE0 , $0FC0 , $0EE0 , $0E70 , $0E38 , $1E38 , $0000 , $0000 , \ k
$0000 , $0000 , $0FC0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 ,
$01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $0FF8 , $0000 , $0000 , \ l
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $1FF8 , $1C9C ,
$1C9C , $1C9C , $1C9C , $1C9C , $1C9C , $1C9C , $0000 , $0000 , \ m
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $1FE0 , $1C70 ,
$1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $0000 , $0000 , \ n
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0FE0 , $1C70 ,
$1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $0FE0 , $0000 , $0000 , \ o
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $1BF0 , $0E38 ,
$0E38 , $0E38 , $0E38 , $0E38 , $0FF0 , $0E00 , $0E00 , $1F00 , \ p
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $1FB0 , $38E0 ,
$38E0 , $38E0 , $38E0 , $38E0 , $1FE0 , $00E0 , $00E0 , $01F0 , \ q
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $1EF0 , $0FF8 ,
$0F38 , $0E00 , $0E00 , $0E00 , $0E00 , $1F00 , $0000 , $0000 , \ r
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0FE0 , $1C30 ,
$1C30 , $0F80 , $03E0 , $1870 , $1870 , $0FE0 , $0000 , $0000 , \ s
$0000 , $0000 , $0000 , $0100 , $0300 , $0700 , $1FF0 , $0700 ,
$0700 , $0700 , $0700 , $0770 , $0770 , $03E0 , $0000 , $0000 , \ t
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $1C70 , $1C70 ,
$1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $0FD8 , $0000 , $0000 , \ u
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $1C70 , $1C70 ,
$1C70 , $1C70 , $1C70 , $0EE0 , $07C0 , $0380 , $0000 , $0000 , \ v
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $1C1C , $1C1C ,
$1C1C , $1C9C , $1C9C , $0FF8 , $0770 , $0770 , $0000 , $0000 , \ w
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $1CE0 , $1CE0 ,
$0FC0 , $0780 , $0780 , $0FC0 , $1CE0 , $1CE0 , $0000 , $0000 , \ x
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0E38 , $0E38 ,
$0E38 , $0E38 , $0E38 , $07F0 , $03E0 , $00E0 , $01C0 , $1F80 , \ y
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $1FE0 , $18E0 ,
$11C0 , $0380 , $0700 , $0E20 , $1C60 , $1FE0 , $0000 , $0000 , \ z
$0000 , $0000 , $01F8 , $0380 , $0380 , $0380 , $0700 , $1C00 ,
$1C00 , $0700 , $0380 , $0380 , $0380 , $01F8 , $0000 , $0000 , \ {
$0000 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 ,
$01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $0000 , \ |
$0000 , $0000 , $1F80 , $01C0 , $01C0 , $01C0 , $00E0 , $0038 ,
$0038 , $00E0 , $01C0 , $01C0 , $01C0 , $1F80 , $0000 , $0000 , \ }
$0000 , $0000 , $1F1C , $3B9C , $39DC , $38F8 , $0000 , $0000 ,
$0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , \ ~