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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 858 ]  На страницу Пред.  1 ... 49, 50, 51, 52, 53, 54, 55 ... 58  След.
Автор Сообщение
 Заголовок сообщения: Re: Интересные ссылки
СообщениеДобавлено: Пт мар 31, 2023 15:50 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Из вентилей неудобно. Были варианты Спектрума с прообразом LUT в ПЗУ.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Интересные ссылки
СообщениеДобавлено: Пт мар 31, 2023 21:46 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 494
Откуда: СПб
Благодарил (а): 19 раз.
Поблагодарили: 8 раз.
Hishnik писал(а):
Из вентилей неудобно. Были варианты Спектрума с прообразом LUT в ПЗУ.
Я таки извиняюсь спросить: LUT - цэ, лазерно-утюжная технология?
ЗЫ эх! Помню, когда умельцы сообразили как заменить К580ВМ, на Z80 в "Орион-128" и какой тогда был "вендор-лок" - лишняя дорожка на плате и про которую сообщали только при личной встрече (приобретении) у разработчика! :D
Эх! И как мы тогда жили без "сотовых", вотсапов, и прочих тырнетов и ведь при этом умудрялись встречаться, общаться, ...!


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Интересные ссылки
СообщениеДобавлено: Пт мар 31, 2023 21:58 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Ilya писал(а):
Я таки извиняюсь спросить: LUT - цэ, лазерно-утюжная технология?

Нет, это Look-Up Table. В ПЛИС логики как таковой и нет, там логические функции реализуют записью в маленькую память таблицы истинности. Примерно такой подход был в Спектруме "Балтика" (если правильно помню). Счетчик перебирал адреса микросхемы ПЗУ, а с ее выходов данных шли... ну, технически байты данных, но вот если смотреть поразрядно, то вполне себе сигналы сложной формы, которые иначе пришлось бы делать на россыпи микросхем.
Ilya писал(а):
Эх! И как мы тогда жили без "сотовых", вотсапов, и прочих тырнетов и ведь при этом умудрялись встречаться, общаться, ...!

Так и сейчас "все в наших руках" :) Вон хотя бы телеграм-канал есть для оперативной болтовни.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Интересные ссылки
СообщениеДобавлено: Пт мар 31, 2023 22:23 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 494
Откуда: СПб
Благодарил (а): 19 раз.
Поблагодарили: 8 раз.
Hishnik писал(а):
Ilya писал(а):
Я таки извиняюсь спросить: LUT - цэ, лазерно-утюжная технология?

Нет, это Look-Up Table. В ПЛИС логики как таковой и нет, там логические функции реализуют записью в маленькую память таблицы истинности. Примерно такой подход был в Спектруме "Балтика" (если правильно помню). Счетчик перебирал адреса микросхемы ПЗУ, а с ее выходов данных шли... ну, технически байты данных, но вот если смотреть поразрядно, то вполне себе сигналы сложной формы, которые иначе пришлось бы делать на россыпи микросхем.
Ilya писал(а):
Эх! И как мы тогда жили без "сотовых", вотсапов, и прочих тырнетов и ведь при этом умудрялись встречаться, общаться, ...!

Так и сейчас "все в наших руках" :) Вон хотя бы телеграм-канал есть для оперативной болтовни.

Издеваешься!? В ваших энтих телегах - сплошное: ложь, 3.14%$ёшь и провокация! :D


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Интересные ссылки
СообщениеДобавлено: Пт мар 31, 2023 22:32 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Ilya писал(а):
Издеваешься!? В ваших энтих телегах - сплошное: ложь, 3.14%$ёшь и провокация!

Так зависит от контингента :) Если набирать "побольше, побольше!", то да, будет мусор и ругань. А так там 10 участников, и редко что пролетает. Зато можно спросить в стиле "а вдруг тут кто-то знает".


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Интересные ссылки
СообщениеДобавлено: Сб апр 01, 2023 04:03 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Hishnik писал(а):
Из вентилей неудобно. Были варианты Спектрума с прообразом LUT в ПЗУ.

Там для некоторых целей использовалась пара 556РТ4 микросхем, если это подразумевается,
(у меня есть такой вариант ZX-Spectrum), а не отдельная микросхема как в оригинальном ZX-Specttrum
Балтик (указано, что ещё применили 2-е микросхемы К155РЕ3)

Интересно, а если реализовать выше приведённый проект средствами ПЛИС оставив внешние ОЗУ, ПЗУ, I2C флеш-память и
линии портов ввода/вывода, то в какие минимальные ПЛИС уместиться логика комбинаторной схемы сделанной в этом проекте?
и на каких частотах будет работать ПЛИС?
В этом варианте, вероятно, придётся пересмотреть какой то дизайн проекта и не только в рамках изменения микрокода
т.к. внешние микросхемы станут "тормозить" ПЛИС и придётся их брать более скоростные.

P.S. Думаю, что возможно, и в какую то мелкую/популярную CPLD можно уместить LUT.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Интересные ссылки
СообщениеДобавлено: Сб апр 01, 2023 13:34 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
KPG писал(а):
Там для некоторых целей использовалась пара 556РТ4 микросхем, если это подразумевается,
(у меня есть такой вариант ZX-Spectrum), а не отдельная микросхема как в оригинальном ZX-Specttrum
Балтик (указано, что ещё применили 2-е микросхемы К155РЕ3)

Я видел схему на 573РФ2, причем обозначена на чертеже была как "Baltica". В принципе, клонов спектрума было немало, а сам подход с заменой логики на ПЗУ имеет довольно много вариантов, тем более что 573 серия довольно легко доставалась.
KPG писал(а):
Интересно, а если реализовать выше приведённый проект средствами ПЛИС оставив внешние ОЗУ, ПЗУ, I2C флеш-память и
линии портов ввода/вывода, то в какие минимальные ПЛИС уместиться логика комбинаторной схемы сделанной в этом проекте?
и на каких частотах будет работать ПЛИС?

Делали такое на Z80, из внешних ПЗУ, статическая память и инверторы для кварца. Логика уместилась в XC95108, включая периферию прибора.

KPG писал(а):
Думаю, что возможно, и в какую то мелкую/популярную CPLD можно уместить LUT.

В CPLD нет LUT, это другой подход к реализации схем. Можно имитировать асинхронную память, тогда N-входовая LUT займет 2^N ячеек CPLD. Алгоритмы синтеза там свои, и в качестве замены именно рассыпной логики CPLD вполне неплохи. С учетом того, что они бывают и на 32 ячейки (но это не означает, что там сложность схемы только 32 вентиля), рядом с чем-то вроде Z80 CPLD будет даже лучше, чем FPGA, в которой этот Z80 поместится весь даже в самой маленькой.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Интересные ссылки
СообщениеДобавлено: Вс апр 02, 2023 07:13 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Некотрое обсуждение сабжа на площадке форума nedopc.org
в топике Форт-компьютеры на рассыпухе

Автоперевод логики работы микропрограммного автомата процессора со страницы автора проекта писал(а):
Но остается один вопрос: как все это работает?

Все начинается со счетчика адресов микрокода, который является чем-то вроде «сердца» компьютера. Каждая машинная инструкция состоит из 128 микрокоманд, при этом микрокоманда состоит из двух частей: 8-битного управляющего слова и необязательного 8-битного слова данных. Машинная инструкция («код OP»), которая должна быть выполнена, применяется к адресным линиям с A8 по A14 EPROM, а адресный счетчик микрокода подключается к A0 по A7. Счетчик адреса микрокода считает все микрокоманды текущего кода OP.

В каждом «четном» такте (когда A0 равно нулю) первая часть микрокоманды, а именно управляющее слово, сохраняется в защелке управляющего слова. 5 из 8 сигналов этого управляющего слова используются для управления потоком данных через процессор путем выбора исходного и целевого устройства. Окончательная передача данных происходит в следующем «нечетном» тактовом цикле, когда A0 равен единице. Поскольку в этом втором такте сама СППЗУ также может служить источником данных, можно легко сохранять постоянные значения, определяемые микрокодом, в различных регистрах и ОЗУ. Однако, поскольку в этом цикле в СППЗУ может быть введен любой адрес, можно выполнять произвольный доступ для чтения к СППЗУ, так что прикладная программа (интерпретатор Форта) может выполняться из СППЗУ.

Как видите, основной целью всей логики является передача данных из различных источников в различные пункты назначения под управлением микрокода. Регистры ЦП, такие как PC, SP, Accu и т. д., хранятся в ОЗУ. Счетчик программ увеличивается с помощью справочной таблицы в EPROM.

Обработка данных осуществляется через один вентиль ИЛИ-НЕ на линии данных D0. Возможно, вы уже знаете, что из функции НЕ-ИЛИ можно вывести любую логическую функцию, даже такие сложные функции, как сложение и вычитание. Но чтобы обработать все биты байта, My4TH должен перебрать все биты данных и обрабатывать их бит за битом. Необходимая функция сдвига данных также реализована в виде справочной таблицы в EPROM.

Условные переходы возможны только в пределах 128 позиций микрокода кода OP. Когда микрокоду необходимо выполнить условный переход, он сначала загружает целевой адрес (который находится в диапазоне от 0 до 127) в младшие 8 бит 16-битной защелки адреса. Управляющий сигнал, поступающий от защелки управляющего слова, затем разрешает условную загрузку нового адреса в счетчик микрокоманд в зависимости от значения D0 в течение нечетного тактового цикла.

Если вас больше интересует микрокод, рекомендую изучить документ "Инструкция MyNOR ADD", где я описываю, как я реализовал инструкцию ADD в микрокоде для компьютера MyNOR. Поскольку MyNOR и My4TH очень похожи, микрокод функции ADD работает точно так же на My4TH. Но для повышения производительности я немного схитрил My4TH, реализовав однобитный сумматор через небольшую справочную таблицу в EPROM.


Цитата:
Когда вы закончили сборку собственной компьютерной платы My4TH, вы можете выполнить первый тест. Для этого теста подключите светодиод к контактам 2 (+) и 5 (-) разъема RS-232 и соедините контакты SCL и RXD разъема J2 проволочной перемычкой. После подачи напряжения питания светодиод должен мигать. Частота мигания светодиода составляет 1 Гц, когда My4TH тактируется генератором с частотой 8 МГц.
Этот тест мигания светодиода очень полезен, если вы хотите проверить максимальную тактовую частоту, с которой My4TH все еще может работать. Например, если вы запрограммировали EPROM с образом для работы на частоте 8 МГц, вы не сможете установить соединение RS-232, если вы синхронизируете My4TH с частотой 10 МГц, потому что скорость передачи имеет необычное значение 6000 бод. В этом случае светодиод может дать вам первую подсказку, может ли My4TH работать на этой более высокой частоте. В качестве второго шага теперь вы можете записать EPROM с образом, предназначенным для работы на частоте 10 МГц.

Если у вас есть доступ к My4TH через последовательный терминал, вы можете использовать следующую однострочную строку, чтобы проверить, стабильно ли My4TH работает с новой частотой. В строке выводится простой лабиринт, состоящий из случайных символов / и \:

: test begin 2 random if 47 else 92 then emit again ; test


Цитата:
Использование Форта

Если вы еще этого не сделали, пожалуйста, сначала прочитайте учебник "Starting Forth" Лео Броди. Учебник содержит множество примеров, которые вы можете опробовать на My4TH. Еще одно действительно хорошее введение в Forth — Forth Primer And So Forth... Ганса Беземера. Этот учебник также представляет собой набор очень полезных фрагментов кода Forth. И это еще один очень хороший учебник для начинающих, особенно для начинающих: A Beginner's Guide to Forth.

Вот два примера простых программ на Форте, которые вы можете ввести и запустить на My4TH:

Квадратный корень из целого числа без знака можно вычислить следующим образом:

: sqrt dup begin 2dup / over + 2 / swap over - abs 2 < until nip ;

Строка выше реализует метод Герона для нахождения квадратного корня числа. Ведущее двоеточие сообщает Форту, что нужно скомпилировать новое слово "sqrt", которое состоит из всех следующих слов. Замыкающая точка с запятой говорит Forth снова выйти из режима компиляции. После того, как вы вошли в строку, Форт ответит «ОК». Когда вы сейчас войдете

49 sqrt .

вы получите правильный результат 7.

Вот еще один пример. Программа ниже рисует треугольник Паскаля:

: triangle cr dup 0 ?do 1 over 1- i - 2* spaces i 1+ 0
?do dup 4 .r j i - * i 1+ / loop cr drop loop drop ;

Обратите внимание, что строка слишком длинная и не умещается в 80 символов. Это не проблема, потому что вы можете разделить линию пополам. Forth не выходит из режима компиляции, пока не увидит завершающую точку с запятой. Форт подтверждает первую строку словом «скомпилировано», а вторую строку словом «ОК».

Чтобы указать My4TH напечатать первые 10 строк треугольника, вам просто нужно ввести

10 triangle

и у вас получится вот такой красивый треугольник:
Код:
                     1
                   1   1
                 1   2   1
               1   3   3   1
             1   4   6   4   1
           1   5  10  10   5   1
         1   6  15  20  15   6   1
       1   7  21  35  35  21   7   1
     1   8  28  56  70  56  28   8   1
   1   9  36  84 126 126  84  36   9   1

OK


Цитата:
Реализация Форт

Моя реализация Forth для My4TH отличается от стандарта, потому что я немного изменил расположение "слов" в памяти, чтобы увеличить скорость. Слова хранятся в простом связанном списке в словаре. Первоначальная реализация, разработанная Чарльзом Х. Муром, изображена ниже:

А это реализация на My4TH:

Каждое «слово» снабжено заголовком, содержащим имя слова и указатель на следующее слово в памяти. Для Форта характерно, что имя представлено не как строка с нулем в конце, а как длина плюс строка. Длина строки хранится в байте, предшествующем строке. Поле под названием «полезная нагрузка» содержит фактический программный код. Этот код может состоять из машинного кода или списка 16-битных адресов-указателей, указывающих на другие слова, которые, в свою очередь, вызываются как подпрограммы. Реализация на My4TH теперь отличается тем, что слово в памяти начинается не с его имени, а с указателя на следующее слово. Это значительно ускоряет поиск в списке слов («словаре»), поскольку не требуется инструкции медленного сложения (в противном случае, чтобы получить указатель на следующее слово, нужно было бы добавить байт длины строки к начальному адресу слова). слово, чтобы получить указатель на указатель на следующее слово).

Изображение
Изображение

Кроме того, My4TH не использует классическую модель Direct Threaded Code (DTC), которая содержит только указатели функций в поле полезной нагрузки. Вместо этого я выбрал для My4TH подход "потокового кода подпрограммы" (STC) из соображений скорости. Здесь поле кода слова всегда содержит только чистый машинный код, а вызов подслов фактически выполняется вызовом JSR. К сожалению, этот метод приводит к увеличению использования памяти на слово примерно на 30%, поскольку в дополнение к 16-битному целевому адресу для подслова также должна храниться инструкция JSR (8-битная). Если вам нравится углубляться в эту тему, я рекомендую прочитать Брэдфорда Дж. Родригеса, «Движение вперед».

Чтобы еще больше увеличить скорость выполнения Forth на My4TH, многие слова Forth уже хранятся в оптимизированном машинном коде в ПЗУ. Таким образом, Форт уже имеет приличный размер 13 Кб в ПЗУ. В отличие от ПЗУ, ОЗУ все еще почти пусто, так что у пользователя все еще есть 30 КБ свободной памяти, доступной для самоопределяемых слов и составленных из них программ. Схема оперативной памяти выглядит так:

Изображение

Традиционно Forth работает с двумя стеками: стеком данных и стеком вызовов. Из соображений скорости два стека совместно используют общую область памяти на компьютере My4TH, а именно стек процессора. Стек вызовов занимает верхнюю половину области стека процессора с 8180h по 81FFh, а стек данных занимает нижнюю половину с 8100h по 817Fh. Оба стека адресуются с помощью обычных инструкций быстрого стека PSH и POP. Кроме того, в My4TH Forth реализованы еще два стека: «стек управления потоком», который необходим компилятору для разрешения вложенных IF / ELSE / THEN, и «стек управления циклом», который необходим во время выполнения цикла. переменные (индекс и приращение). Эти два стека можно было бы объединить с обычным стеком данных, но разделение стеков имеет два преимущества: во-первых, ограниченное пространство для хранения в стеке данных зарезервировано для фактических данных. Во-вторых, Loop Control Stack упрощает для новичка в Forth программирование циклов, поскольку нет необходимости учитывать параметры цикла при доступе к данным в стеке. На самом деле, это может привести к путанице, если вы не можете получить доступ к данным в стеке данных, как обычно, из цикла, который был помещен в стек до того, как вы вошли в цикл. Кстати, стек управления потоком допускает глубину вложенности до 32 IF/ELSE/THEN, а стек управления циклом допускает до 16 вложенных циклов.

Хорошо, это только половина правды. В моей реализации на Форте на самом деле есть два других стека: во-первых, расширенный стек возврата, доступ к которому осуществляется с помощью слов Форта >r и r>, и стек системных данных, который используется для внутренних функций операционной системы. Отделение этих стеков от стека возврата процессора имеет два основных преимущества: во-первых, увеличивается доступная глубина прыжка за счет освобождения стека процессора, а во-вторых, программирование «экранов» намного проще для новичка, которому не нужно беспокоиться об экране. границы блоков, поскольку стеки данных Forth и возвратов по-прежнему содержат согласованные данные после перехода от одного экрана к другому, и система не вставляет управляющие данные для служебных функций.

Цитата:
Что нужно знать о Forth на My4TH

Встроенный редактор

My4TH имеет встроенный редактор, позволяющий редактировать экраны прямо на компьютере My4TH. Чтобы получить доступ к редактору, просто введите номер экрана, который вы хотите отредактировать, а затем слово «EDIT».

Экран 0 предназначен только для документации

Согласно стандарту Forth экран номер 0 не может использоваться для хранения кода. Я рекомендую использовать экран 0 только для документации. Например, экран 0 можно использовать для ведения оглавления блоков, используемых в данный момент.

Механизм автозапуска после включения питания

Вы можете настроить автоматическую загрузку экрана после включения My4TH. Для этого просто напишите номер экрана (десятичное число) в начале первой строки экрана 0.

Слово RUN

Чтобы стандартизировать способ запуска программ, я ввел слово RUN. Вы должны добавить свое собственное слово RUN в конец вашей программы, которое действует как точка входа в вашу программу (подобно «основной» функции в C). Например, после того, как вы скомпилировали свою программу и сохранили ее как двоичный образ в EEPROM, вы можете просто набрать «RUN-IMAGE», чтобы загрузить и запустить вашу программу с помощью одной команды.

Сохранение бинарных образов программ

Чтобы ускорить загрузку программы, вы можете хранить предварительно скомпилированные бинарные образы в EEPROM. Когда вы полностью вошли в свою программу на Форте (или загрузили и скомпилировали все нужные вам экраны), вы можете использовать слово SAVE-IMAGE для сохранения бинарного образа RAM в EEPROM. Двоичные экраны затем могут быть загружены или загружены и запущены с использованием слов LOAD-IMAGE и RUN-IMAGE.

My4TH Forth для компьютера MyNOR

Если вы уже собрали компьютер MyNOR и хотите попробовать My4TH Forth, вы можете загрузить пакет программного обеспечения My4TH. Пакет содержит файлы образа My4TH EPROM, а также файл образа EPROM специально для MyNOR. Для полной совместимости с инструментом передачи данных my4th вы должны синхронизировать MyNOR на частоте 8 МГц, иначе скорость последовательной передачи данных будет слишком низкой. My4TH Forth для MyNOR имеет ограниченную функциональность. Он не поддерживает платы расширения MyNOR (нет поддержки ЖК-дисплея и клавиатуры), а доступная оперативная память ограничена 8 КБ. Для поддержки всех трех выходных портов MyNOR этот специальный вариант Forth реализует дополнительные слова WOP1/WOP2/WOP3 и ROP1/ROP2/ROP3.

Передача данных между My4TH и ПК

Я написал инструмент под названием «my4th», который упрощает передачу данных между платой My4TH и ПК. С помощью этого инструмента вы можете переносить так называемые «экраны» Форта с ПК во встроенную EEPROM и наоборот. Это значительно упрощает разработку ваших собственных программ на Форте, поскольку вы можете использовать свой любимый текстовый редактор на ПК для редактирования экранов. Инструмент my4th также имеет специальную функцию, позволяющую загружать неформатированный исходный код («спагетти-код») в EEPROM. Тем не менее, мой любимый метод тестирования кода Forth на целевой платформе — режим «выполнения» инструмента my4th: в этом специальном режиме инструмент отправляет ваш исходный код Forth построчно на доску My4TH для выполнения. И в качестве бонуса, если вы используете Linux, инструмент позволяет вам оставаться на связи с My4TH через встроенный режим эмуляции терминала. Таким образом, вы можете загрузить свой код в My4TH на первом этапе, а затем запустить и отладить код на консоли терминала (без необходимости запуска отдельного эмулятора терминала, такого как putty). Это моя любимая команда my4th:

$ my4th exec /dev/ttyS0 файл myforthprogram.txt -t

Еще один совет: инструмент my4th по умолчанию использует скорость передачи 4800 бод. Если частота вашей платы ниже (например, 4 МГц вместо 8 МГц), вы можете указать my4th подключаться со скоростью 2400 бод, добавив параметр -l после имени последовательного порта:

$ my4th exec /dev/ttyS0 -l файл myforthprogram.txt -t

Подробное описание инструмента переноса my4th см. в этом документе: My4TH_Data_Exchange.pdf.

Примечание:

Вы можете найти еще больше полезной информации в FAQ внизу этой страницы.

Цитата:
Часто задаваемые вопросы

Каковы основные различия между MyNOR и My4TH?

My4TH меньше (меньше размер, меньше компонентов), быстрее (до 14 МГц) и имеет больше памяти (32 КБ RAM и 256 КБ EEPROM), чем MyNOR. Кроме того, My4TH разработан специально для программирования FORTH.

Применима ли реализация MyNOR FORTH для приложений «реального мира»?

Нет, реализация MyNOR FORTH имеет несколько известных ошибок и считается доказательством концепции. My4TH стремится обеспечить более стабильную и полную реализацию FORTH.

Можно ли использовать My4TH с оборудованием MyNOR?

Да, для оборудования MyNOR доступна специальная версия My4TH Forth, но с некоторыми ограничениями из-за 8 КБ SRAM MyNOR. My4TH Forth для MyNOR также не поддерживает платы расширения MyNOR.

В чем разница в обмене файлами между MyNOR и My4TH?

My4TH использует инструмент командной строки для загрузки и загрузки отдельных экранов или полного исходного кода FORTH вместо копирования текстовых файлов в окно терминала, как в MyNOR.

Могу ли я удалить Форт-слова из памяти?

К сожалению, архитектура Forth не позволяет удалять из памяти определенные слова. Однако вы можете использовать слова FORGET и MARKER, чтобы удалить все слова, скомпилированные после определенного момента.

Как исправить ошибки и обновить My4TH-ROM?

Поскольку проект с открытым исходным кодом, вы можете исправить ошибки в исходном коде. Затем вам нужно создать новый файл образа EPROM с помощью кросс-компилятора myca. Однако не рекомендуется исправлять ошибку самостоятельно. Вместо этого, пожалуйста, сообщите мне об этом, чтобы я мог исправить это в обновленной версии прошивки.

Как я могу сбросить My4TH из самой программы?

Вы можете создать простое слово для выполнения процедуры аппаратного сброса. Для этого скомпилируйте в My4TH следующий код:

hex : reset 2D00 execute ;

Когда вы вводите команду RESET, My4TH выполняет инструкцию по адресу 0x2D00, которая является переходом к процедуре аппаратного сброса.

Как я могу сохранить переменные в EEPROM, используя My4TH?

Вы можете использовать слова BLOCK, UPDATE и SAVE-BUFFERS в My4TH Forth. Используйте BLOCK для загрузки блока из EEPROM в RAM, который возвращает указатель на блок. Затем вы можете копировать свои переменные в блок и из него (рассматривайте буфер как большую двоичную структуру данных). Используйте UPDATE, чтобы пометить блок как измененный после изменения переменной, и SAVE-BUFFERS, чтобы записать измененный блок обратно в EEPROM.

Почему я теряю 1024 байта памяти при использовании команд BLOCK и BUFFER?

Потеря памяти происходит из-за того, что буфер блока выделяется командой BUFFER. Однажды выделенный, он не освобождается. Вы можете обойти эту проблему, установив маркер перед использованием команд, а затем освободив память после того, как закончите.

Как я могу очистить все ранее определенные слова и сбросить память, как «новая» команда в реализации MyNOR для проверки концепции?

Вы можете создать собственное НОВОЕ слово на основе примера из оригинального редактора MyNOR-Forth:

: execnew s" forget new : new execnew ;" execute ;
: new execnew ;

Введите эти две строки после перезагрузки компьютера, а затем вы можете использовать команду «NEW» по желанию.

Почему моя программа вылетает через определенное время?

Проблема может быть связана с тем, что стек данных переполняется. My4TH Forth не проверяет переполнение стека. Если стек данных переполняется, стек возврата перезаписывается и программа аварийно завершает работу.

Как я могу отладить стек данных?

Вы можете использовать команду .S для отображения текущего содержимого стека данных. Это может быть очень полезно для целей отладки.

Почему KEY? слово ждёт нажатия клавиши?

Если вы используете My4TH через последовательный терминал, My4TH должен опрашивать интерфейс RS-232 в программном обеспечении. Поэтому, чтобы не пропустить ни одного события клавиатуры, важно как можно быстрее опрашивать последовательный порт. По этой причине невозможно реализовать неблокирующее чтение с клавиатуры на My4TH. Если вам нужно неблокирующее взаимодействие с вашей программой, вы можете подключить дополнительные внешние ключи к входам/выходам и считывать их с помощью RINP.

Как я могу создать неблокирующий способ прерывания работающей программы?

Вы можете использовать команду RINP для прямого чтения вывода RXD. Вот пример:

: test 0 begin rinp 1 and while 1 + dup . repeat cr ." break, a key was pressed" ;

Имейте в виду, что вам может потребоваться удерживать клавишу нажатой некоторое время, чтобы убедиться, что программа прерывается должным образом.

Как заменить редактор на новый, загруженный из EEPROM?

Вы можете определить новое слово «EDIT», которое реализует новый редактор. Тогда старый редактор будет "перегружен". Например, вы можете определить слово ' : EDIT ." I am not an editor!" ; ' и вызовите EDIT. Если вы нажмете FORGET EDIT, эффект исчезнет, и EDIT будет работать как обычно.

Что возвращает слово UP?

Слово UP возвращает адрес указателя, указывающего на начало 256-байтовой области памяти, которая может свободно использоваться пользователем. Чтобы получить адрес начала этой области памяти, необходимо ввести «UP@».

Как My4TH отображает доступную память I2C EEPROM?

My4TH Forth сопоставляет доступную память I2C EEPROM с доступными 1K-блоками, независимо от их адресов. Например, если вы установите две EEPROM 24LC512 с любыми адресами I2C, вам будут доступны экраны с 0 по 127. Однако на плате MyNOR не совсем понятно, в какой EEPROM будет храниться конкретный экран.

Что произойдет с MyNOR, если я добавлю еще одну EEPROM в существующую конфигурацию?

Добавление еще одного EEPROM к существующей конфигурации на плате MyNOR может вызвать проблемы с поиском ранее сохраненных экранов. Новая EEPROM может быть назначена на номера экранов, которые ранее были назначены другой EEPROM. Рекомендуется не добавлять больше EEPROM после того, как у вас будет рабочая конфигурация, чтобы не потерять доступ к сохраненным экранам.

Могу ли я использовать другие конфигурации EEPROM с MyNOR/My4TH, например, 1x 24LC1026 и 2x 24LC512?

Да, возможны другие конфигурации. Однако максимальное расширение памяти в 512 КБ может быть достигнуто только с восемью 24LC512, или двумя 24LC1026, и четырьмя 24LC512, или четырьмя 24LC1026. Вы также можете использовать четыре 24LC1025 вместо четырех 24LC1026, а 24LCxxx можно заменить типами 24AAxxx. Всегда сверяйтесь с техническими данными, чтобы убедиться в правильности конфигурации контактов и избежать конфликтов адресов. Но сокеты на плате My4 могут быть заполнены только EEPROM 24LC512 или 24LC1026.

Могу ли я использовать EEPROM 24LC1025 с MyNOR/My4TH?

ЭСППЗУ 24LC1025 немного странные - контакт A2 выбора адреса должен быть подтянут к высокому уровню, иначе ЭСППЗУ не будет работать должным образом. К сожалению, на разъемах My4TH, а также на плате MyNOR контакт A2 подключен к GND. Тем не менее, по-прежнему можно использовать EEPROM 24LC1025 на обеих платформах, если подключить контакт 3 (A2) EEPROM к контакту 8 (+5 В). Но убедитесь, что контакт 3 не должен быть вставлен в гнездо на плате (просто отогните контакт от корпуса EEPROM).

Могу ли я использовать симулятор EPROM на веб-сайте с My4TH?

Нет, эмулятор EPROM нельзя использовать с платой My4TH. My4TH использует контакт 20 EPROM, который, к сожалению, неправильно подключен к плате эмулятора.

Могу ли я заменить EPROM на флэш-память для My4TH?

К сожалению, невозможно заменить СППЗУ флэш-памятью, поскольку микросхемы флэш-памяти часто намного медленнее, чем СППЗУ. Для My4TH вам понадобится EPROM с максимальным временем доступа 120 нс, если вы хотите запустить его на частоте 8 МГц. Самые быстрые чипы флэш-памяти, доступные сегодня, имеют время доступа 150 нс, что означает, что вы можете запустить MyNOR только на частоте 1/150 нс = 6,7 МГц. Также микросхемы флэш-памяти имеют немного другую распиновку, поэтому разъем на плате My4TH необходимо перепаять. Доступны одноразовые программируемые (OTP) СППЗУ со временем доступа до 45 нс. Кроме того, СППЗУ более «ретро» и поэтому лучше подходят для этого проекта.

Цитата:
License Information
This work (My4TH hardware and software) is licensed under a
Creative Commons Attribution-ShareAlike 4.0 International License. Creative Commons License

The cross assembler "myca" is licensed under the GNU General Public License, Version 3.
Impressum
and contact information: Dennis Kuschel
Corintostraße 21
28279 Bremen, Germany
email: dennis_k@freenet.de
web: mynor.org and mycpu.eu website visits


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Интересные ссылки
СообщениеДобавлено: Сб апр 15, 2023 11:33 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Не ссылка, а информация, что для Браузера Chromium есть Форт в виде плагина jeForth.
Можно, вероятно, приспособить для какого то использования.
В i-net по этому плагину приводится какой то материал по использованию его для блокировки рекламы.

P.S. Возможно, кто то может уже видел этот плагин и думал по использованию его функционала в Chromium.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Интересные ссылки
СообщениеДобавлено: Пт май 05, 2023 15:23 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Думаю, что эта ссылка уже была.
Fendo - Static website generator written in Forth.

P.S. Ещё небольшой пример-проект для gForth MP

В плане скриптования-автоматизации каких то задач/действий на Форт есть и связка Форт со штатными Шелл операционок.

Думаю, что если предcтавлять описание разного применения Форт и в публикации статей на массового читателя,
то и многообразие использование Форт будет расширяться согласно "доктрине" языка. :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Интересные ссылки
СообщениеДобавлено: Вс май 14, 2023 11:13 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Project Forth Works
Цитата:
О чем этот проект...

Форт сильно выиграет от активного обмена источниками и решениями сообщества. Но наша проблема заключается в поговорке: когда вы видели один Форт, вы видели один Форт. В этом проекте мы хотели бы принять наши различия. И начните делиться, несмотря на то, что у вас разные Форт-диалекты.

Основная идея этого проекта заключается в использовании простой универсальной версии Forth для распространения идей, алгоритмов, протоколов, приложений и аппаратных драйверов. Эта общая версия Форта гарантирует, что ее может понять и использовать (почти) каждый в Форт-сообществе.

Изображение

У нас есть до сих пор следующие категории:

Template ; A detailed example of how publish on P.F.W.
Algorithms ; Random numbers, etc.
Communication-Protocols ; SPI, I2C, Wireless, etc.
Data-Structures ; Primitive circular buffer, etc.
System-Software ; Assembler, Disassembler, etc.
Programming-Tools ; Development support, helpers
Programming Pearls ; Examples of idiomatic (Forth) programming style
User-Applications ; Games, Robotics, etc.
Curiosities ; Not so serious contributions but interesting and/or entertaining.
Sensors ; Electronic sensors for measuring temperature, distance, etc.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Интересные ссылки
СообщениеДобавлено: Вс май 14, 2023 12:34 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
KPG писал(а):
Форт сильно выиграет от активного обмена источниками и решениями сообщества.

"Поэтому давайте напишем один Универсальный Форт Для Всех" :))
KPG писал(а):
И начните делиться, несмотря на то, что у вас разные Форт-диалекты.

Разные, но...
KPG писал(а):
Основная идея этого проекта заключается в использовании простой универсальной версии Forth для распространения идей, алгоритмов, протоколов, приложений и аппаратных драйверов.

...но модель какая-то "универсальная".
KPG писал(а):
У нас есть до сих пор следующие категории:

И за 10 месяцев набор коротких подпрограмм.

Код:
: ARRAY ( u -- ) \ for RAM only systems
        CREATE CELLS ALLOT \ RAM
      DOES> ( +n -- ) SWAP CELLS + ;

    \ sample applications

    32 CONSTANT capacity

    capacity ARRAY A

    42 4 A !    \ write value to item 4
       4 A @ .  \ read and print item 4


Вот интересный прием. Но принципиально противоречит идее массивов, дающих размер (в виде числа, лежащего непосредственно перед данными). Кроме того, A 4 -TH @ формирует визуальный шаблон "здесь доступ к массиву". Вобщем, универсальность декларирована, но как-то не просматривается.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Интересные ссылки
СообщениеДобавлено: Вс май 14, 2023 19:22 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 327
Откуда: Москва
Благодарил (а): 36 раз.
Поблагодарили: 7 раз.
Цитата:
Project Forth Works


Идея нужная, разные диалекты форта, это уродство.

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Интересные ссылки
СообщениеДобавлено: Вс май 14, 2023 22:50 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Почему нужно объединить диалекты языка, который существует во многом именно из-за удобства разработки диалектов?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Интересные ссылки
СообщениеДобавлено: Вс май 14, 2023 23:37 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 327
Откуда: Москва
Благодарил (а): 36 раз.
Поблагодарили: 7 раз.
Что бы компилировать и выполнять чужой код, не вынося свой мозг в
поисках ошибок, которые могут возникнуть где угодно. Кучи диалектов не нужно.
Возможно, имеет смысл строить спецфорты для особых применений,
например для микроконтролерщиков, но и там, в своих нишах нежелательно
создавать кучу диалектов.

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 858 ]  На страницу Пред.  1 ... 49, 50, 51, 52, 53, 54, 55 ... 58  След.

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


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

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


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

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