Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 20:45

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 244 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7, 8, 9 ... 17  След.
Автор Сообщение
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Чт янв 21, 2016 08:48 
Не в сети
Аватара пользователя

Зарегистрирован: Вс мар 04, 2007 08:02
Сообщения: 229
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Вовремя Matthias Trute начал amforth на MSP430 прививать. Респект.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Пт янв 22, 2016 00:29 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 494
Откуда: СПб
Благодарил (а): 19 раз.
Поблагодарили: 8 раз.
chu писал(а):
Ilya писал(а):
...Могу подкинуть свою либу для RTC.

Спасибо-давай! :D
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 , \ ~





Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Пт янв 22, 2016 00:31 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 494
Откуда: СПб
Благодарил (а): 19 раз.
Поблагодарили: 8 раз.
Ну и touch
Код:
\
\ touch1.f
\ ~ilya
\ 24.01.2014
\ Контроллер: ADS7843/TSC2046
\ Controller: ADS7843/TSC2046
\ Touch_CLK -- PH3
\ Touch_CS -- PE3
\ Touch_DIN -- PL1
\ Touch_DOUT -- PE5
\ Touch_IRQ -- PE4

marker =touch=

\ &46 constant PORTE   \ Data Register, Port E
\ &258 constant PORTH   \ PORT H Data Register
\ &267 constant PORTL   \ PORT L Data Register


PORTH 3 portpin: T_CLK \
PORTE 3 portpin: T_CS \
PORTL 1 portpin: T_DIN \
PORTE 5 portpin: T_OUT \
PORTE 4 portpin: T_IRQ \

PORTE 3 port:hi t_csh
PORTE 3 port:lo t_csl

&105 constant EICRA   \ External Interrupt Control Register A
&106 constant EICRB   \ External Interrupt Control Register B
&61 constant EIMSK   \ External Interrupt Mask Register
&10  constant INT4Addr \ External Interrupt Request 4


variable temp_x
variable temp_y
variable datacount

\ Посылаем байт в индикатор
\ Submitting byte indicator
: wr-touch ( c -- )
t_csl
&8 0 do
dup i lshift [ $80 ] literal and
   if T_DIN high
   else T_DIN low
   then
T_CLK low T_CLK high
loop
drop
;

\ Принимаем данные (12 бит) из индикатора
\ Receiving data (12 bits) from the indicator
: rd-touch ( -- n )
0
t_csl
&12 0 do
   T_CLK high T_CLK low
   1 lshift
   T_OUT pin_high? if  1 or then
loop
;

: _read-touch ( c -- n )
wr-touch
T_CLK high T_CLK low
rd-touch
;

: read-touch
   $90 _read-touch   \ читаем x
   $d0 _read-touch \ читаем y
   dup 1 4095 within  ( x y -- x y fy )
   rot dup 1 4095 within ( x y fy -- y fy x fx )
   rot and if ( temp_x +! temp_y +! ) 1 datacount +!
      else drop drop 0 0
      then

;

variable touch-x
variable touch-y
variable touch-state   \ Есть реакция от тача   
                  \ Any response from the sensor

\ Получаем значение x,y
\ We get value x,y
: read-touch-xy ( -- x y )
\
0 temp_x ! 0 temp_y ! 0 datacount !
2 0 do
   read-touch temp_x +! temp_y +!
        20 ms
loop
temp_x @ datacount @ /    \ усредняем значение x (average value x)
100 1025 */ 400 swap - dup touch-x !
temp_y @ datacount @ /    \ усредняем значение y (average value y)
100 1570 */  dup touch-y !
\ 1 touch-state !
;

\ Есть касание ?
\ There are touch ?
: touch? ( -- f )  T_IRQ pin_low? ;

: init-touch
T_IRQ pin_input
T_IRQ pin_pullup_on
T_CS pin_output
T_CLK pin_output
T_OUT pin_input
T_DIN pin_output
t_csl
T_CLK high
T_CLK low
\ [']  isr-t  INT4Addr int! \
\ 0 EICRB !         \ Прерывение по спаду
\ $10 EIMSK c@ or EIMSK c!   \ Включаем прерывания от сенсора
;

\ marker =test=
\ : test
\ lcd-init
\ init-touch  +int
\ begin
\ 300 ms
\ read-touch-xy
\ touch?
\ if
\   read-touch-xy
\ cr . space .
\ 5 1 setXY  s" X: " lcd_typef 7 1 setXY touch-x @ lcd_.
\ 12 1 setXY  s" Y: " lcd_typef 15 1 setXY touch-y @ lcd_.
\ then
\
\ again
\ ;




Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Пт янв 22, 2016 09:28 
Не в сети
Аватара пользователя

Зарегистрирован: Вс мар 04, 2007 08:02
Сообщения: 229
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Ilya писал(а):
В принципе успел адаптировать либу TFT (граф примитивы+печать) и ещё добавил touch. Может передашь amForth ребятам?

Зазипую, оставлю на roboforum'е, сообщу в amforth-devel — Development discussion and user support. А чего с лицензией? :D Amforth сейчас под GPLv3, кажись.
Я не бельмес в копирайтах. У меня когда спрашивали, я отмолчался, а потом американец "мои либы" выложил в комьюнити. :D

Ilya писал(а):
Держи! RTC для stm32l153rb

Дякую вэри мач. :D

Ilya писал(а):
Надеюсь админ меня не загонит в вечный бан.

ХЗ :D


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Пт янв 22, 2016 10:04 
Не в сети
Аватара пользователя

Зарегистрирован: Вс мар 04, 2007 08:02
Сообщения: 229
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Посмотрел тексты, выложить пока можно только touch1.f, кажется.
А для hx8352graphics.frt требуются какие-то include'ы. "Просвещённый запад" не поймет. :D
ЗЫ. Кто б просветил меня, темного, в двух словах на пальцах про эти лицензии...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Пт янв 22, 2016 11:32 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 494
Откуда: СПб
Благодарил (а): 19 раз.
Поблагодарили: 8 раз.
chu писал(а):
Посмотрел тексты, выложить пока можно только touch1.f, кажется.
А для hx8352graphics.frt требуются какие-то include'ы. "Просвещённый запад" не поймет. :D
ЗЫ. Кто б просветил меня, темного, в двух словах на пальцах про эти лицензии...

Сорри! Забыл выложить 1-й файл (hx8352.f). :(
TFT написал Craig A. Lindley, а лишь обработал напильником и прикрутил touch. :D
Кину на электропочту.
По поводу RTC : st32l152.f - основные константы. Генерится скриптом. В каталоге common/registergenerator имеется скрипт и мануал.
interrupts.f - ясно из названия. Вышлю.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Вс янв 24, 2016 11:17 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Вроде ещё не было ссылки :)
Raspberry Pi JonesFORTH O/S

P.S.
Код:
pijFORTHos forked from M2IHP13-admin/JonesForth-arm


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Пн фев 08, 2016 02:33 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 494
Откуда: СПб
Благодарил (а): 19 раз.
Поблагодарили: 8 раз.
Уважаемый! У меня закрались сомнения по поводу либы 1-wire, если у тебя есть возможность, то потести Plz!
Всё портирование заключается в замене значений тут:
Код:
: 1w.init %11 5 2* lshift gpioa_pupdr bic! ;
: 1w.output %01 5 2* lshift gpioa_moder bis! ;
: 1w.input %01 5 2* lshift gpioa_moder bic! ;
: 1w.out0 32 16 lshift gpioa_bsrr bis! ;
: 1w.out1 32 gpioa_bsrr bis! ;
: 1w.in 32 gpioa_idr bit@ ;

ЗЫ Я малость "поджарил" (перепутал полярность питалова) свои ds18b20 при переезде на серию F. :(
ЗЗЫ Ты ещё не пробовал разобраться с PLL? Планирую перестроить свой "умный дом" именно на данном девайсе.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Пн фев 08, 2016 10:47 
Не в сети
Аватара пользователя

Зарегистрирован: Вс мар 04, 2007 08:02
Сообщения: 229
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Привет.
К сожалению, не смогу (пока) выполнить твою просьбу, не достиг еще должного "просветления" ни в stm'ах ни в mecrisp'е. :(
1. немного освоил
Код:
        compiletoram?   ( -- ? ) Currently compiling into ram ?
        compiletoram    ( -- ) Makes ram   the target for compiling
        compiletoflash  ( -- ) Makes flash the target for compiling
        eraseflash
, научился чистить память.
2. сильно притормаживаю на "особенностях" mecrisp'а. например отсутствует стандартное literal вместо него есть literal, и теперь надо делать так
Код:
: name ... bla-bla [ decimal nuber literal, ]  bla-bla ;
.
я в ступоре:
Код:
        0-foldable      ( -- ) Current word becomes foldable with zero constants
        1-foldable      ( -- ) Current word becomes foldable with one constants
        2-foldable      ( -- ) Current word becomes foldable with two constants
        3-foldable      ( -- ) Current word becomes foldable with 3   constants
            ...
        7-foldable      ( -- ) Current word becomes foldable with 7   constants
 
это что такое?

3. написал стопку в десяток строчек вспомогательных определений для
облегчения ковыряния в ливере cortex'а. параллельно уже читаю
Ю Д., Ядро CORTEX-M3 компании ARM(2012).djvu,
the definitive guid to the arm cortex M3.pdf
Discovering the STM32 Microcontroller.pdf,
STM32F100 Reference Manual.pdf и тому подобное...
метод "научного тыка" рулит!

4. вопросы, вопросы...
вот в mecrisp'е для "ногодрыжества" используется метод побитового доступа bit-band?
не уверен. а это уже напрямую касается 1-wire. как я понял, в stm'ах для delay'ев кошерно
пользовать таймеры (их дофига). снова 1-wire.
а питание 3.3v\5.0v у ds18b20 влияет на его временные параметры или нет? вопросы...

Похоже, весь физический уровень для 1-wire надо делать заново...
:roll:


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Ср фев 10, 2016 02:17 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 494
Откуда: СПб
Благодарил (а): 19 раз.
Поблагодарили: 8 раз.
chu писал(а):
Привет.
К сожалению, не смогу (пока) выполнить твою просьбу, не достиг еще должного "просветления" ни в stm'ах ни в mecrisp'е. :(
1. немного освоил
Код:
                eraseflash
, научился чистить память.
2. сильно притормаживаю на "особенностях" mecrisp'а. например отсутствует стандартное literal вместо него есть literal, и теперь надо делать так
Код:
: name ... bla-bla [ decimal nuber literal, ]  bla-bla ;
.
я в ступоре:
Код:
        0-foldable      ( -- ) Current word becomes foldable with zero constants
     
 
это что такое?

3. написал стопку в десяток строчек вспомогательных определений для
облегчения ковыряния в ливере cortex'а. параллельно уже читаю

метод "научного тыка" рулит!

4. вопросы, вопросы...
вот в mecrisp'е для "ногодрыжества" используется метод побитового доступа bit-band?
не уверен. а это уже напрямую касается 1-wire. как я понял, в stm'ах для delay'ев кошерно
пользовать таймеры (их дофига). снова 1-wire.
а питание 3.3v\5.0v у ds18b20 влияет на его временные параметры или нет? вопросы...

Похоже, весь физический уровень для 1-wire надо делать заново...
:roll:

1. Я правильно понимаю, что аналог
Код:
marker
по "местному"
Код:
cornerstone
при "компиляции" от текущего HERE и до конца текущего "сектора" флэш забивает 0xFFFF, а при исполнении соответственно выполняем
Код:
eraseflashfrom
?
2. Я тоже пытался использовать
Код:
literal,
, на что мне главный буржуин сказал так:
Цитата:
A hint:

Instead of
[ 1 17 lshift literal, ] exti_pr bis! just write
1 17 lshift exti_pr bis!

Mecrisp-Stellaris can do constant folding and will do it automatically.

Look:

: 11+ 3 dup * 2 + + ; ok.
see 11+
200012EE: B500 push { lr }
200012F0: 360B adds r6 #B
200012F2: BD00 pop { pc }
ok.

и попросил убрать
Код:
literal,
из моих исходников!
0-foldable - сам нахожусь в недоумении.
3. Тут удобнее тыкать. Флэш не слетает. :)
4. для простоты использую bis! & bic!


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Ср фев 10, 2016 04:36 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 494
Откуда: СПб
Благодарил (а): 19 раз.
Поблагодарили: 8 раз.
А-а-а! Починил "свою" 1w :shuffle;
Ошибка была в моей либе us&ms . "Особенности" конфигурирования!
RTFM!!! :D


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Вс фев 21, 2016 11:04 
Не в сети
Аватара пользователя

Зарегистрирован: Вс мар 04, 2007 08:02
Сообщения: 229
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Ilya писал(а):
В принципе я начинал курить с NVIC (прерывания)

Привет! Победил NVIC?
В документе Cortex™-M3 Technical Reference Manual Revision: r1p1 пишут
8.1 About the NVIC писал(а):
You can only fully access the NVIC from privileged mode, but you can pend interrupts
in user-mode if you enable the Configuration Control Register (see Configuration
Control Register on page 8-25). Any other user-mode access causes a bus fault.

И вот мучает меня вопрос - mecrisp в каком режиме работает: privileged или user-mode?
Пытаюсь прочесть спец.регистр CONTROL:
Код:
: control@ dup [ $F3EF8614 , ] inline ;  ok.

это ассемблерная инструкция mrs r6, control
Облом-с:
Код:
  ok.
control@ w0b.r Unhandled Interrupt 00000003 !
Unhandled Interrupt 00000003 !
.
.
Unhandled Interrupt 00000003 !

Код команды верный, сверился с ассемблером от осо:
Код:
OP{ 0xF3EF8000 }OP mrs

ЗЫ. Немецкий в исходниках выносит моск напрочь...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Вс фев 21, 2016 11:12 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Chu
По какой инструкции (шагов) собирается Mecrisp из исходников.

P.S. VFX для STM32 от MPE не "мучил"?
Тоже достаточно интересный "квест" :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Вс фев 21, 2016 12:52 
Не в сети
Аватара пользователя

Зарегистрирован: Вс мар 04, 2007 08:02
Сообщения: 229
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Не собирал, взял готовую прошивку для STM32VL DISCOVERY.
VFX не мучал.
Раздражает документация по STM32. Куча мануалов, в которых информация дублируется.
Надо постараться, чтобы найти ответы на возникающие вопросы.
Например так и не нашел исчерпывающего ответа на вопрос: какие инструкции и регистры(ресурсы) недоступны в непривилегированном user режиме ...
А на mecrisp описание практически отсутствует. И этот долбаный дойч-инглиш-ассемблер в сырцах...
AmForth более интеллигентно сделан.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Вс фев 21, 2016 16:13 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 494
Откуда: СПб
Благодарил (а): 19 раз.
Поблагодарили: 8 раз.
chu писал(а):
Ilya писал(а):
В принципе я начинал курить с NVIC (прерывания)

Привет! Победил NVIC?

ХЗ в каком режиме это всё работает, но с NVIC пока проблем не имею. Куда интереснее ковырять RCC! Вот тут надо быть повнимательнее и очень помогают блок-схемы из ДШ. Вот тут малость пободался с переносом ms&us на f429. Разгоняю камень через PLL, на шине частота 30 MHz, но не заметил ссылочку "если прескалер >1, то такт. частота таймеров x2 ...".
Я в ассемблерные дебри не лезу пока - благо дури хватает. Меня попёрло и теперь у меня уже 3-и СТМ-ки! :lol:
Сейчас переношу либы на stm32f411.
ЗЫ А попробуй написать письмо главному буржую. Чёй-то он на последнее моё письмо пока не ответил, а ведь собирался выпустить новый релиз в январе. :(


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 244 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7, 8, 9 ... 17  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB