Board.KolibriOS.org

Official KolibriOS board
It is currently Sun Dec 08, 2019 7:49 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 83 posts ]  Go to page 1 2 3 4 5 6 Next
Author Message
 Post subject: Forth
PostPosted: Wed Feb 01, 2006 7:17 pm 
Offline

Joined: Wed May 25, 2005 8:52 am
Posts: 147
Помнится, еще на форуме Fastbb кто-то предлагал портировать Форт систему на MeOS. Все забыли, а я запал на Форт и все подумывал о порте. Неделю назад нашел простенький eForth16 с исходниками на асме... Сегодня уже практически готова 32-битная версия для Колибри. Осталось сделать некоторые усовершенствования в консоли.

_________________
Vivat assembler et KolibriOS!


Top
   
 Post subject:
PostPosted: Thu Feb 02, 2006 2:12 am 
Offline
User avatar

Joined: Thu Oct 13, 2005 12:00 pm
Posts: 299
кгхм, м.б. фортран? ;) Но все равно, язык высокого уровня очень хорошо в любом случае (как и паскаль)


Top
   
 Post subject:
PostPosted: Thu Feb 02, 2006 11:05 am 
Offline

Joined: Wed May 25, 2005 8:52 am
Posts: 147
Да нет уж, именно Форт :-) Смотри http://forth.org.ru/


Top
   
 Post subject:
PostPosted: Thu Feb 02, 2006 9:13 pm 
willow
Насколько мне помниться, форт хорош тем, что относительно быстро работает даже в режиме интерпретации, и команды в нем занимают очень мало места (2 байта?), разумеется, не считая процедуры их определяющей.


Top
   
 Post subject:
PostPosted: Fri Feb 03, 2006 12:20 am 
Offline

Joined: Wed May 18, 2005 7:27 pm
Posts: 1001
Язык странный и коммунити странное. Пишут компиляторы десятками, но реально интересных программ, созданных на этом языке практически нет. Запомнилась только программа построения графика синусоиды и среда разработки, отдаленно напоминающая Strannik, ну и еще этот пресловутый сервер. Осенью листал книжку по Forth - один из "реальных примеров суперкрутости языка" демонстрировал разработку вируса под ДОС. Опять же, это язык для любителей обратной польской записи. Много здесь таких?


Top
   
 Post subject:
PostPosted: Fri Feb 03, 2006 11:20 am 
Offline

Joined: Wed May 25, 2005 8:52 am
Posts: 147
Mario79 wrote:
относительно быстро работает даже в режиме интерпретации, и команды в нем занимают очень мало места (2 байта?)

Он и есть интерпретирующий язык, а высокоуровневые команды занимают по 4 байта (у нас ведь 32-разрядная система)
Wildwest
Не спорю - язык нетривиальный, но лучшего интерпретатора и скриптора для Menuet пока не предвидится (я не слышал, чтобы кто-то занимался). Я же, со своей стороны, постараюсь добавить в язык поддержку системных функций и попробую написать на нем графическое приложение.
Пишите, что нужно включать в поставку интерпретатора, чтобы он был реально полезен пользователям Колибри.

_________________
Vivat assembler et KolibriOS!


Top
   
 Post subject:
PostPosted: Fri Feb 03, 2006 11:51 am 
Offline
User avatar

Joined: Thu Oct 13, 2005 12:00 pm
Posts: 299
Нужна графическая поддержка, т.е. рисование примитивов в окне, и основные математические функции - показательные, тригонометрические, логарифмические, логические.


Top
   
 Post subject:
PostPosted: Sat Feb 04, 2006 5:16 pm 
willow
Надо чтобы программы можно было запускать, с помощью SYSXTREE, то есть, чтобы интерпретатор поддерживал запуск с параметром. Чтобы запуск приложений был прозрачен и почти неотличим для пользователей. А так хорошая идея для реализации игрушек, например.


Top
   
 Post subject:
PostPosted: Fri Feb 10, 2006 3:19 pm 
Offline

Joined: Wed May 25, 2005 8:52 am
Posts: 147
Это аналог EXAMPLE.ASM на meForth, только сырой еще. Окно не простое, а с возможностью возвращаться в консоль нажатием 'Ё'. Зацените...
Code:
: >regs
   reg_struc ! ;
: new_reg
   CREATE 6 CELLS ALLOT LAST @ NAME> 9 + >regs ;
: ax reg_struc @ ! ;
: bx reg_struc @ 1 CELLS + ! ;
: cx reg_struc @ 2 CELLS + ! ;
: dx reg_struc @ 3 CELLS + ! ;
: si reg_struc @ 4 CELLS + ! ;
: di reg_struc @ 5 CELLS + ! ;
: <<
   SWAP 16 LSHIFT + ;
: sys_print ( color, stra, u, x, y -- )
  << >R SWAP ROT R> 4 sys5 DROP ;
: not_emit
   emit_proc DUP @ NOT SWAP ! ;
new_reg wnd_size
CREATE Music $3090 , \ $90 C, $30 C, 0 C,
: my_wnd
  12 ax 1 bx sysv DROP $805080D0 DUP $02AABBCC 200 50 << 200 DUP << 0
    sys6 2 bx sysv 2DROP
  $10DDEEFF $" ПРИМЕР ПРОГРАММЫ" COUNT 8 DUP sys_print
  0 $" Нажмите любую клавишу" COUNT 8 30 sys_print
  $6688DD 1 5 12 << 200 19 - 12 << 8 sys5 DROP ;
: my_wnd_resize
   200 dx 50 si 67 ax -1 DUP bx cx sysv DROP ;
: my_key
   2 sys1 8 RSHIFT DUP 96 = IF not_emit DROP ELSE Music DUP si 1+ C!
 55 DUP ax bx sysv DROP THEN ;
: my_btn
   17 sys1 8 RSHIFT ." Pressed button #" DUP . CR 1 = IF BYE THEN ;
CREATE handlers ' my_wnd , ' my_key , ' my_btn ,
VARIABLE hnd
: msg_loop ( subs -- )
   CR DUP hnd ! @EXECUTE  my_wnd_resize
   0 emit_proc !
   BEGIN
   10 sys1 ?DUP
   IF
     1-
    CELLS hnd @ + @EXECUTE
    emit_proc @
    IF
       WINDOW KEY 96 =
       IF
          not_emit hnd @ @EXECUTE  my_wnd_resize
       ELSE
         EXIT
       THEN
    THEN
  THEN
  AGAIN ;
: new_me ( new main loop)
  handlers msg_loop ;

_________________
Vivat assembler et KolibriOS!


Top
   
 Post subject:
PostPosted: Fri Feb 10, 2006 5:58 pm 
Да, примерчик довольно непонятный... :)


Top
   
 Post subject:
PostPosted: Fri Feb 10, 2006 7:21 pm 
willow
Все оценили твою шутку, особенно те, кто форт не знает. ;-)
Придется тебе написать заодно и доку к своему интерпретатору, а так текст программы довольно короткий и если ввести в сам интерпретатор побольше стандартных команд, то думаю, его можно будет сделать еще короче и тогда написание программ будет вообще простым.


Top
   
 Post subject:
PostPosted: Mon Feb 13, 2006 11:03 am 
Offline

Joined: Wed May 25, 2005 8:52 am
Posts: 147
Да, конечно, без документации никуда!


Top
   
 Post subject:
PostPosted: Mon Feb 13, 2006 2:11 pm 
Offline

Joined: Wed May 25, 2005 8:52 am
Posts: 147
А вот что линуксоиды говорили недавно:
http://www.linux.org.ru/view-message.jsp?msgid=1258482


Top
   
 Post subject:
PostPosted: Thu Feb 16, 2006 6:55 pm 
Offline

Joined: Wed May 25, 2005 8:52 am
Posts: 147
О том, как меФорт может запускать систему вместо LAUNCHER. Файл AUTOLOAD.F с комментариями:
Code:
( добавляет 0 в конец строки)
: >asciiz ( адрес строки, длина -- )
   + 0 SWAP C! ;

( заполняет поле path в fileinfo)

: >path ( адрес пути файла, длина -- )
   finfo @ 20 + \ смещение пути в структуре fileinfo
   0  finfo @ 8 + ! \ обнуляем поле параметров
   DUP >R SWAP DUP >R ( запоминаем приемник и длину в стеке возвратов)
   CMOVE ( копируем строку пути)
   R> R> SWAP ( восстанавливаем приемник и длину)
   >asciiz  ( добавляем 0 в конец)
;
   
( заполняет поле param в fileinfo)

: >param ( адрес строки параметров, длина -- )
   OVER finfo @ 8 + !
   >asciiz  ( добавляем 0 в конец)
;
   
( запуск приложения с параметром и задержкой после запуска,
   пути уже занесены в fileinfo)
   
: exec ( время задержки -- )
   16 finfo @ ! \ подфункция 16
   finfo @ 58 sys2 ." started, code=" . CR
   (  вызываем int 0x40 с двумя параметрами,
      код возврата показываем)
   5 sys2 DROP ; \ пауза
\ QUIT


( Стандартный AUTORUN.DAT выглядит так:

7                          # <- Number of programs in the list

# Program          Parameters  Delay
/RD/1/GRSCREEN        <NO>       99    # Set system colors & wallpaper
/RD/1/@RB             <NO>       30    # Desktop right-click menu
/RD/1/@SS             <NO>       30    # Screensaver from M. Lisovin
/RD/1/@PANEL          <NO>       30    # Start panel
/RD/1/SETUP           BOOT       30    # Load device settings
/RD/1/ICON2           BOOT       10    # Multithread icon from Mario79
/RD/1/board           <NO>       50    # Start panel
### Total: 1.1 seconds ###

)
\ А это новый его текст:
\   формат:
\     S" /rd/1/tinypad" >path  S" /rd/1/example.asm" >param 25 exec

S" /RD/1/GRSCREEN" >path 99 exec     \ Set system colors & wallpaper
S" /RD/1/@RB"      >path 30 exec     \ Desktop right-click menu
S" /RD/1/@SS"      >path 30 exec     \ Screensaver from M. Lisovin
S" /RD/1/@PANEL"   >path 30 exec     \ Start panel
S" /RD/1/SETUP" >path S" BOOT" >param 30 exec \ Load device settings
S" /RD/1/ICON2" >path S" BOOT" >param 10 exec \ Multithread icon from Mario79
S" /RD/1/board" >path  25 exec       \ Start panel

BYE \ и закрываем meForth


Top
   
 Post subject:
PostPosted: Sun Feb 19, 2006 5:07 pm 
А когда C/C++ портируем? =)


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 83 posts ]  Go to page 1 2 3 4 5 6 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited