Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пн ноя 30, 2020 15:04

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - ef \ esoteric forth \
Автор Сообщение
  Заголовок сообщения:  Re: ef \ esoteric forth \  Ответить с цитатой
sectorforth
Код:
sectorforth is a 16-bit x86 Forth that fits in a 512-byte boot sector.
Inspiration to write sectorforth came from a 1996 Usenet thread (in particular, Bernd Paysan's first post on the thread).
Сообщение Добавлено: Вс сен 27, 2020 16:32
  Заголовок сообщения:  Re: ef \ esoteric forth \  Ответить с цитатой
KPG писал(а):
В этом проекте Arduino-Shell
так передаются строки Форт-букв (команд) на выполнение.

:o Названия букв-команд сопоставлены с Форт-словами, но по другим правилам, чем в ef \ esoteric forth \.

:D Набросал тут на досуге...
Код:
IMPORT c ( core  )
IMPORT s ( stdio )

VAR f ( file )
VAR i ( label index )

2048 ARRAY t ( token )

: k ( c -- f ) ( case ) t C@ = DUP IF 0 t ! THEN ;

: y ( -- c ) ( yet another char ) f @ g DUP t ! ;
: n ( -- c ) ( next token ) BEGIN BEGIN y DUP '!' < & 0= UNTIL '(' k DUP IF BEGIN y ')' = UNTIL THEN 0= UNTIL t C@ ;

: m ( -- ) ( newline ) 9 1+ c ;
: q ( -- ) ( print 'h' ) 'h' c ;

: w ( n -- ) ( write label: ) q h ':' c ;
: a ( -- n ) ( push label ) i @ DUP 1+ i ! ;

: v ( -- n ) ( verify ) i @ w a ;
: r ( -- ) ( ret ) "ret" s m ;
: j ( n -- ) ( jmp ) "jmp h" s h m ;
: z ( n -- ) ( jz ) '\' e "je h" s h ;
: l ( -- ) ( call ) "call hh" s ;
: d ( -- ) ( db ) "db " s ;

: e ( c -- ) ( encode )
   t C!
   ':' k IF 0 n DUP DUP DUP j q w n ';' - IF BEGIN t C@ e n ';' = UNTIL THEN r w t + C! 0 t C! THEN
   'I' k DROP
   'T' k DROP
   'E' k DROP
   'N' k DROP
   'D' k DROP
   'R' k DROP
   'P' k DROP
   'A' k DROP
   'W' k DROP
   'G' k DROP
   'M' k IF n DROP n DROP n DROP n DROP n DROP t p THEN ( IMPORT )
   ''' k IF ' ' e d y b q y DROP 0 t C! THEN
   '"' k IF ';' e d '"' c BEGIN y DUP c '"' = UNTIL ",0" s 0 t C! THEN
   '`' k IF y '`' - IF BEGIN t C@ c y '`' = UNTIL THEN 0 t C! THEN
   'F' k IF v DROP i @ z a THEN ( IF )
   'H' k IF w THEN ( THEN )
   'B' k IF v THEN ( BEGIN )
   'L' k IF 'O' e z THEN ( UNTIL )
   'C' k IF 'C' n DROP '@' k IF DROP ',' THEN '!' k IF DROP '.' THEN e THEN
   t C@ IF t C@ l h THEN
   m
   0 t C!
;

: p ( addr -- ) ( pass ) f @ SWAP o f ! ( open ) n IF BEGIN t C@ e n 0= UNTIL THEN f @ x f ! ( close ) ;

'~' 3 + DUP BEGIN 1- DUP t + DUP C! DUP 0= UNTIL DROP
DUP DUP DUP 1- C@ + 0 SWAP C! 1+ ( argv ) p r
'g' - BEGIN 1- DUP 'a' + DUP t + C@ IF DUP q w l m d b q m DUP THEN DROP DUP 0= UNTIL DROP

В первом приближении выглядит как программа, написанная на каком-то диалекте Форта, тем не менее, это тот же самый esoteric forth, но в профиль... :D
По традиции транслирует сам себя в asm. Делает вид, что "понимает" слова ( ) IMPORT VAR ARRAY 0-9 a-z : ; + - * / < = > & | ^ DUP SWAP PICK DROP @ ! C@ C! "string" 'c' `asm` IF THEN BEGIN UNTIL, однако при ближайшем рассмотрении видно, что все длинные имена отлавливаются по одной букве (выделено жирным), а остальные буквы игнорируются... :D
Оно тут: http://totalvacuum.ru/EF/pseudo.zip
Сообщение Добавлено: Ср июл 08, 2020 17:11
  Заголовок сообщения:  Re: ef \ esoteric forth \  Ответить с цитатой
KPG писал(а):
А, в этом проекте Форта для Attiny85 придумали использовать код-морзе в качестве ввода/вывода команд :)
tiny-morse-forth (проект в начальной фазе разработки)

Это шедевр :) Отлично подойдет для тех, у кого на компьютере из устройств ввода только телеграфный ключ, а из устройств вывода - светодиод... :D

Будете смеяться, но идея esoteric forth родилась в тот момент, когда мне пришлось допиливать прибор, у которого не оказалось свободных портов для отладки... В наличии был лишь экран с плохоньким (резистивным) тачскрином и 3 кнопки... В тот момент подумалось, что для таких ситуаций неплохо иметь на борту предельно лаконичный язык... И максимально простой в реализации... А что может быть проще Форта? Только упрощенный Форт... :D

Прибор в итоге так и не пошел в серию, а для отладки соорудили программный UART через GPIO... Но идея esoteric forth засела где-то в подсознании... :D
Сообщение Добавлено: Вт июн 30, 2020 15:55
  Заголовок сообщения:  Re: ef \ esoteric forth \  Ответить с цитатой
KPG писал(а):
В этом проекте Arduino-Shell
так передаются строки Форт-букв (команд) на выполнение.

:o Названия букв-команд сопоставлены с Форт-словами, но по другим правилам, чем в ef \ esoteric forth \.

:D Не совсем, в esoteric forth зарезервированы только небуквенные символы и цифры... А все буквы a-z свободны, пользователь может использовать их по своему усмотрению... :)
Сообщение Добавлено: Вт июн 30, 2020 15:36
  Заголовок сообщения:  Re: ef \ esoteric forth \  Ответить с цитатой
А, в этом проекте Форта для Attiny85 придумали использовать код-морзе в качестве ввода/вывода команд :)
tiny-morse-forth (проект в начальной фазе разработки)

P.S. Есть и декодер морзе Morse decoder for ATtiny13A
подцепить дисплей по I2C и можно тренироваться в наборе "Форт-символов и программ" азбукой морзе. :)

поисковый запрос "morse avr"на Github
Сообщение Добавлено: Пт июн 26, 2020 01:10
  Заголовок сообщения:  Re: ef \ esoteric forth \  Ответить с цитатой
mOleg писал(а):
Уберите пробельные символы, и будет вообще атас!


В этом проекте Arduino-Shell
так передаются строки Форт-букв (команд) на выполнение.

:o Названия букв-команд сопоставлены с Форт-словами, но по другим правилам, чем в ef \ esoteric forth \.
Сообщение Добавлено: Ср июн 24, 2020 05:44
  Заголовок сообщения:  Re: ef \ esoteric forth \  Ответить с цитатой
Hishnik писал(а):
Даже если ничего не убирать, чем-то похоже на Фокал.

Звучит как грязное ругательство... :D Скорее уж на brainfuck похоже... :) Кстати, у меня где-то есть ядро brainfuck размером 60 с хвостиком байт, если к этом ядру дописать в хвост исходник на brainfuck (в командной строке пишем copy bfcore.com+source.bf), то получается рабочий файл, т.е. фактически компиляция без компилятора... Если найду, выложу... Я хочу такой же трюк с esoteric forth проделать... :D
Сообщение Добавлено: Сб июн 20, 2020 22:04
  Заголовок сообщения:  Re: ef \ esoteric forth \  Ответить с цитатой
mOleg писал(а):
Уберите пробельные символы, и будет вообще атас!

:D Там в архиве есть то же самое, но без пробелов (файл efxtest.ef):
Код:
%c%s:kq,=;:yf@g#q.;:uq,l@t+!l@1+l!;:n0l!1(1(y#'!'<&)'\'k#(y'\'-)
)u'"'k'`'k'''k#{yu_}||(t,yu-)t,;:m91+c;:d'h'c;:wdh':'c;:ai@#1+i!
;:vi@wea;:r"ret"sm;:j"jmp h"shm;:zi@"je h"sha;:eq.':'k{0n###jdwn
';'-(t,en';'-)rwq+.~'%'k{n_tp~'''k{t"call h"sm1+,"db "sbd~'"'k{t
';'e"db "ss",0"s~'`'k{t#l@+1-0$.1+s~'{'k{'\'v_z~'~'k{i@jwa~'}'k{
w~'('k{'\'vz~')'k{$jw~'['k{' 'vz~']'k{$jw'_'e~q,"call hh"sh}}}}}
}}}}}}}m;:p f@$of!n(t,en)f@xf!;'~'3+#[#q+#.]###1-,+0$.1+pr'g'-[#
'a'+#q+,{#dw"call v"sm"db "sbdm~_}]

Компилируется в то же самое и так же точно работает... :D
Сообщение Добавлено: Сб июн 20, 2020 21:54
  Заголовок сообщения:  Re: ef \ esoteric forth \  Ответить с цитатой
Даже если ничего не убирать, чем-то похоже на Фокал.
Сообщение Добавлено: Пт июн 19, 2020 22:50
  Заголовок сообщения:  Re: ef \ esoteric forth \  Ответить с цитатой
Уберите пробельные символы, и будет вообще атас!
Сообщение Добавлено: Пт июн 19, 2020 20:26
  Заголовок сообщения:  Re: ef \ esoteric forth \  Ответить с цитатой
Продолжаем разговор... :D

Перевел с tasm на fasm, выбросил кое-что лишнее, теперь весит 1412 байт, цель (1024 байта) еще далеко, но свет в конце тоннеля уже виден :D
Код:
% c \ core  \
% s \ stdio \

\
a     push addr (label)
b % s hex (byte)
c % s putc
d     display 'h'
e     encode
f [ ] file
g % s fgetc
h % s hex
i [ ] label index
j     jmp
k     case
l [ ] token length
m     newline
n     next token
o % s fopen
p     pass
q [ ] quick search table
r     ret
s % s puts
t [ ] token
u     update token string
v     verify
w     write label:
x % s fclose
y     yet another char
z     jz
\

: k \ case \ q , = ;

: y \ yet another char \ f @ g # q . ;
: u \ update token string \ q , l @ t + ! l @ 1+ l ! ;
: n \ next token \
   0 l !
   1 ( 1 ( y # '!' < & ) '\' k # ( y '\' - ) )
   u '"' k '`' k ''' k # { y u _ } | | ( t , y u - ) t ,
;

: m \ newline \ 9 1+ c ;
: d \ display 'h' \ 'h' c ;

: w \ write label: \ d h ':' c ;
: a \ push addr (label) \ i @ # 1+ i ! ;

: v \ verify \ i @ w e a ;
: r \ ret \ "ret" s m ;
: j \ jmp \ "jmp h" s h m ;
: z \ jz \ i @ "je h" s h a ;

: e \ encode \
   q .
   ':' k { 0 n # # # j d w n ';' - ( t , e n ';' - ) r w q + . ~
   '%' k { n _ t p ~
   ''' k { t "call h" s m 1+ , "db " s b d ~
   '"' k { t ';' e "db " s s ",0" s ~
   '`' k { t # l @ + 1- 0 $ . 1+ s ~
   '{' k { '\' v _ z ~
   '~' k { i @ j w a ~
   '}' k { w ~
   '(' k { '\' v z ~
   ')' k { $ j w ~
   '[' k { ' ' v z ~
   ']' k { $ j w '_' e ~
   q , "call hh" s h } } } } } } } } } } } }
   m
;

: p \ pass \ f @ $ o f ! n ( t , e n ) f @ x f ! ;

'~' 3 + # [ # q + # . ]
# # # 1- , + 0 $ . 1+ p r
'g' - [ # 'a' + # q + , { # d w "call v" s m "db " s b d m ~ _ } ]


Валяется тут:
http://totalvacuum.ru/EF/00000005.zip
Сообщение Добавлено: Чт июн 18, 2020 16:57
  Заголовок сообщения:  Re: ef \ esoteric forth \  Ответить с цитатой
KPG писал(а):
Есть такой проект делающийся на средства краудфандингa ZX-Spectrum Next
(спектрум совместимый компьютер на FPGA с наличием разных плюшек, как HDMI, SD, частоты процессора + 7, 14, 28 МГц ...)

Winglion такое делал на Альтере в начале 2000-х. Спринтер. Графика от Doom на Z80 (с ускорителем в ПЛИС) впечатляла.
Сообщение Добавлено: Пт сен 13, 2019 02:02
  Заголовок сообщения:  Re: ef \ esoteric forth \  Ответить с цитатой
Кстати по поводу ОС на ассемблере.

Есть такой проект делающийся на средства краудфандингa ZX-Spectrum Next
(спектрум совместимый компьютер на FPGA с наличием разных плюшек, как HDMI, SD, частоты процессора + 7, 14, 28 МГц ...)
в нём много софта исторического на ассемблере, так вот они в дизайне компьютера ещё предусмотрели возможность добавить ускоритель команд, графики ... на внешней шине на Raspberry Pi Zero (1Ггц, Mali, 512Кб)

Вот уже в данной Raspberry Pi Zero можно было бы задействовать функционал на ассемблерном Форт ядре
и частично наличие какого то популярного софта на Форт не так важно в рамках базового использования платы расширения
RPi в рамках экосистемы данного компьютера, но, наверное, с таким же успехом могла быть использована плата с Intel процессором и например KolibriOS.
Сообщение Добавлено: Ср сен 11, 2019 04:53
  Заголовок сообщения:  Re: ef \ esoteric forth \  Ответить с цитатой
М-да, воспринять шутку на серьёзных щах это надо уметь :))
Сообщение Добавлено: Вт сен 03, 2019 12:51
  Заголовок сообщения:  Re: ef \ esoteric forth \  Ответить с цитатой
Victor__v писал(а):
Ага, для ОС написанной на ассемблере портируемость ну прям вообще нужна.
<<Сарказм>>

Я имел ввиду, что "легковесная ОС, не имеющая привязки к ассемблеру" лучше, чем "легковесная ОС с жесткой привязкой к конкретному ассемблеру". Первую можно попытаться портировать куда-нибудь, портировать вторую будет как минимум затруднительно.
А вообще, коль скоро разговор про ОС зашел... Есть некий набор программ, наличие которых в любой операционной системе позволяет более-менее комфортно существовать как обычному пользователю, так и программисту. Перечислю то, что приходит на ум:
- а-ля Проводник, но лучше файловый менеджер;
- Архиватор;
- Программы для проигрывания аудио/видео;
- Просмотрщики pdf, картинок и прочего;
- Пара-тройка офисных программ;
- Простенький графический редактор;
- Компилятор Си;
- PHP, MySQL и т.д. (для веб-разработчиков);
- Браузер (= интерпретатор HTML+интерпретатор JavaScript);
- и т.д. и т.п.;
Что-то может быть лишнее, что-то забыл. Не суть. Но раз уж зашел разговор про Форт ОС, закономерно появляется следующий вопрос. Было ли когда-нибудь реализовано на Форте хоть что-то из вышеперечисленного? Если да, то шансы на успех Форт ОС есть. Если нет, то можно пойти по пути наименьшего сопротивления, сделав транслятор Си=>Форт, а все остальное реализовать (позаимствовать) на Си... Но все же хотелось бы иметь на борту Форт ОС софт, написанный исключительно на Форте.
Кстати, раньше был тренд "планшеты скоро отовсюду вытеснят настольные компьютеры/ноутбуки", но предсказания не сбылись. Андроид-планшеты так и остались безделушками для убивания времени. Не в последнюю очередь благодаря отсутствию нормальных средств для разработки: почти весь софт под Андроид по прежнему пишется на компьютерах с установленной Windows/Linux.
Сообщение Добавлено: Пн сен 02, 2019 19:25

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


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