Forth на рк-86

Советский компьютер Радио-86РК (1986) и его клоны

Moderator: Shaos

User avatar
shoorick
Doomed
Posts: 487
Joined: 05 Nov 2007 05:08
Location: Украина

Forth на рк-86

Post by shoorick »

Shaos: начало топика не про РК, но потом пошло про товарища Шихова и т.д.

В далеком 2001 году написал русифицированный форт для дос :)

Недавно решил его "реанимировать". Переписывать, конечно, не собираюсь :) Портировал на фасм и добавил внутрь русификацию.

http://shoorick.ho.ua/forth/

Интересует - будет ли работать эта русификация на буржуйских системах? проверять, естественно, нужно не в оконном режиме, а полноэкранном, + прерывание 10х не перехватывается и не отслеживается, т.е. после смены видеорежима возможна потеря кириллицы, которая восстанавливается словом RUS.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: RFORTH

Post by Lavr »

Я тут в очередной раз "свалился в FORTH"... :osad: совсем не нарошно...

Мне что-то вспомнился Бейсик "Вильнус" и "шитый код", и я набрал это в поисковике...
Бейсик "Вильнус" была лишь пара ссылок, все остальное про "шитый код" вело в FORTH.

Я подумал - видимо, судьба - всё прочитал и скачал рекомендуемые книжки.
Скачал RFORTH Шурика, его недоFORTH для "Специалиста" и неожиданно я обнаружил
у себя на диске FORTH для "Специалиста".
Надеюсь, что описание FORTH для "РК-86" подойдёт...

У меня просьба, если кто писал на FORTH для "РК-86" или для 580ВМ80: выложите здесь
пару-тройку вменяемых программ НЕ ТИПА "ХЭЛЛОУ ВОРД", а чтобы было обращение к УВВ,
к примеру, к портам...

Я не первый раз пытаюсь постигнуть FORTH, и оказалось помню, что написано в книжках,
но хотелось бы живого неабстрактного примера - как это делается...
iLavr
User avatar
shoorick
Doomed
Posts: 487
Joined: 05 Nov 2007 05:08
Location: Украина

Re: RFORTH

Post by shoorick »

для реализации IN и OUT в своем недописанном форте для 8080 я формировал микропроцедуру в стеке и ее потом вызывал, т.к. у 8080 нет косвенной адресации портов, а хотелось размещать тело в пзу... хотя можно было и без этого - все равно где-то в озу размещались служебные ячейки (регистров не хватало) - можно было и эту пару команд туда вынести...
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: RFORTH

Post by Lavr »

Lavr wrote:...и неожиданно я обнаружилу себя на диске FORTH для "Специалиста".
Надеюсь, что описание FORTH для "РК-86" подойдёт...
FORTH для "Специалиста" у меня оказался вот такой:
FORT_SP.gif
А словарный запас у него следующий:
FORT_W1.gif
FORT_W2.gif
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: RFORTH

Post by Lavr »

FORTH для "Радио-86РК" это, похоже, вот этот ФОРТ, что на скриншотах выше, но порезаный неким Н. ШИХОВым, из странного г. Козьмодемьянск, Республики Марий-Эл.
Н. ШИХОВ wrote:Предлагаемая читателям версия языка ФОРТ не единственная, адаптированная для «Радио 86РК». У автора имеется версия ФОРТ системы разработанная в НИИСЧЕТМАШ ЛГУ. Она выполнена в строгом соответствии со стандартом FORTH 83, имеет объем 14 Кбайт и словарь примерно из 500 слов. По мнению автора, владельцами «Радио 86РК» эта программа использоваться на практике не может. Ее словарь перегружен промежуточными словами, не используемыми в прикладных программах, есть слова с одинаковыми функциями. Достоинствами этой версии являются, ее соответствие стандарту, и наличие встроенного ФОРТ АССЕМБЛЕРа. Стандартный строчный редактор ничего кроме сожаления не вызывает.
Собственно говоря, вновь поковыряться с FORTH-ом меня сподвигла прочитанная где-то фраза, что ФОРТ со всем своим "блэкджеком и плюшками" может занимать ВСЕГО 1 КБайт.
Вижу что это не так: FORTH.RKS ~ 12 КБайт, FORTH.RKI ~ 16 КБайт, FORTH.RKR ~ 17 КБайт.
И лишь у г-на Н. ШИХОВа FORTH обструган до 4 КБайт, причем текстовый буфер на привычном месте - 1100Н.


P.S. Видимо, г-н Н. ШИХОВ имел в виду вот этот ФОРТ для "Радио-86РК" (FORTH.RKR ~ 17 КБайт)
fs1.gif
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: RFORTH

Post by Lavr »

Джентльмены, а ни у кого не завалялось вот этого короткого Форта из Радио 7, 1995?

 Язык ФОРТ для Радио-86РК
_1995_07_20.gif

А то я вчера и гуглил... и яндексил... - нигде не нашел... :osad:
А набирать таблицу так неохота... :-?
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: RFORTH

Post by Shaos »

Распознавалкой распознай :)

Кунеформ какой-нить, которым в 90х такое распознавалось на ура
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: RFORTH

Post by Lavr »

Shaos wrote:Распознавалкой распознай :)
Кунеформ какой-нить, которым в 90х такое распознавалось на ура
Кокой ти умный... :lol:
Файнридером вчера пробовал - плохо берётся... Всё равно придётся построчно сличать КС.
Поэтому и обратился тут к людям, чтобы не мучаться лишний раз...

"Да и ОСОАВИАХИМА больше нет, Глеб Егорыч..." (с) Не 90-е на дворе... :wink:
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: RFORTH

Post by Lavr »

В общем, если кому, также как мне, приспичит маленький FORTH для "Радио-86РК" (580ВМ80А),
то вот он:
FORTHR86.zip
(Расширение bin запрещено администратором.) :lol:

На всякий случай, приведу поблочные контрольные суммы, вдруг FORTH "зацепил коронавирус",
пока летел на форум: :wink:
KS_1995_07_20.gif
Поскольку описания на этот FORTH нет, а автор утверждает, что фактически стандарт FORTH 83,
то вот ссылка на автора:
Язык Форт для "Радио-86РК". Н.Шихов, г.Козьмодемьянск, Республика Марий-Эл
Если все обратили внимание, г.Козьмодемьянск приводит меня в эйфорию! :esurprised:

Что я хочу от этого Форта: я хочу посмотреть, насколько эффективный "шитый код" он генерирует,
как он его генерирует, и механизм я тоже посмотреть хочу - думаю, я эти 4 КБайт декомпилирую в исходник.
Всё это для того, чтобы сравнить с тем, что делает компилятор С (к примеру, Бест_С), который я тут
некоторое время назад декомпилировал до исходника и не остался в восторге от генерируемого им кода.

Кстати, пока я тут просеивал просторы Интернета на слово "FORTH" в разных сочетаниях, попался мне
весьма хороший материал от нашего коллеги Дёмина (aka begoon):
Реализация простого ядра Forth

Я не удивился уже, но Дёмин также не в восторге от того, что создаёт компилятор С для i8080:
Дёмин wrote:Знаю, что С - это начало всех начал, и при правильном использовании можно писать очень близко по эффективности к ассемблеру. Но, все же есть еще системы, где компилятору С сложно развернуться. Например, захотел я подыскать компилятор С для Intel 8080, чтобы замутить небанальную программу для Радио-86РК. Из реально собираемого я нашел только пару наследников знаменитого Small-Csmallc-85 и smallc-scc3.

Увы, для простейшей программы типа:
main() {
static char a;
for (a = 1; a < 10; ++a) {
++a;
}
}


Генерируется адЪ...
И у меня возник вопрос ко всем нашим Гуру FORTH-а, вопрос следующего характера...
Когда я что-то ищу по Интернету, я читаю все источники, что попадаются по пути, прочитал в этот раз
и такой неавторитетный источник, как: https://m.lurkmore.to/Forth и он меня заставил просто
неподецки смеяться: :ebiggrin:
Луркоморье wrote:...в общем случае начинающий фортер думает также и о том, чтобы сделать в форте всё как у людей. Но через некоторое время начинает уже у людей всё делать как в форте .
Я, видимо, даже не "начинающий фортер"... но как раз по пути думал, что можно ведь сделать редактор
для Форта, в котором писать всё "по-человечески, как у людей", а для FORTH-а делать синтаксическую
предкомпиляцию в его формат обратной польской записи.
Так вот вопрос: такого никогда не делали или всё же были попытки?
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: RFORTH

Post by Lavr »

Lavr wrote:Собственно говоря, вновь поковыряться с FORTH-ом меня сподвигла прочитанная где-то фраза,
что ФОРТ со всем своим "блэкджеком и плюшками" может занимать ВСЕГО 1 КБайт.
Вижу что это не так: FORTH.RKS ~ 12 КБайт, FORTH.RKI ~ 16 КБайт, FORTH.RKR ~ 17 КБайт.
И лишь у г-на Н. ШИХОВа FORTH обструган до 4 КБайт, ...
Оказалось, что FORTH от г-на Н. ШИХОВа к искомому мной идеалу ВСЕГО 1 КБайт весьма близок! :kruto:
4 КБайт - это он вместе с редактором "Микрон" (0000-0FFFH) занимает, а сам FORTH - ровно в
половину меньше: всего-то 2 КБайт (0800-0FFFH).
И при этом встроенный редактор у него есть, хотя "Микрон" и удобнее...

Никаких длинных сказок он о себе при старте не сказал, а сразу вывел свой словарь:
forthr86.gif
Даже WORDS печатать не пришлось...

Да, словарный запас не так велик, как у экземпляра FORTH от "Специалиста", но словарный запас-то
расширяемый у FORTH-а...

Попробую запустить под эмулятором "Специалиста_МХ", системные вызовы стандартные - должно
получиться... Под emu80 работать неудобно - то в текст, то в графику окна перекидывает.
Посмотрю, на что способен этот FORTH.

P.S. Да, под RAMFOS этот FORTH нормально запускается, поскольку системные вызовы стандартны.
ForthSP.gif
Естественно, в Редактор "Микрон" он не выйдет, потому как его там нет...
Надо, видимо, декомпильнуть этот FORTH сначала, чтобы не заниматься патчами.
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: RFORTH

Post by Lavr »

Lavr wrote:Надо, видимо, декомпильнуть этот FORTH сначала, чтобы не заниматься патчами.
Декомпильнул в черновом варианте, причесываю пока, чтобы правильно собрался.

Неудобно, что слова разбросаны по коду, но, видимо, это и есть связанный список FORTH.
iLavr
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: RFORTH

Post by Shaos »

А он самописный или цельнотянутый у буржуинов?
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: RFORTH

Post by Lavr »

Shaos wrote:А он самописный или цельнотянутый у буржуинов?
Трудно сказать однозначно... идею он наверняка читал в книжках переводных от буржуинов.
Код у него оригинальный, никаких лишних чужих меток нет. В этом плане - он самописный.
И как он сам пишет - алгоритм у него несколько не такой, как в стандартных FORTH-ах.
Ну это подробнее лучше прочитать по ссылке выше, хотя там очень небрежный OCR... :-?

Насчет кода: исходный код хорошо причесанный мной - вот он:
FORTH86R.zip
Компилируется без ошибок с совпадением всех контрольных сумм.
Работает под RAMFOS также, как оригинал.

Собственно, там в коде лишь один момент я не причесал, а оставил как есть.
По коду часто встречается что-то типа:

Code: Select all

   RAR
   RST 7
Но это точно не оно, на RST 7 этот Форт точно не обращается...
Я хотел заменить это на 2 DB ... , но оставил пока как есть - посмотрю внимательнее,
что это может быть...

Пока я причесывал код - очень идеями FORTH-а проникся! :esurprised:
В нем для простоты всё взвалили на пользователя... :lol:
Разбор строки со стеками - не нужен, всё и так в обратной польской записи! :ebiggrin:
Но идея подкупает - она в коде очень хорошо видна: связанный список, который можно дополнять.

Я выше несколько ошибся: 1100Н - это как раз начало списка пользователя у этого Форта.
А текстовый буфер у него: 2100Н - это, вероятно, стандарт редактора "Микрон".

В общем в книге Шурика писали правду:"Форт может написать даже ребёнок", только вот
ребенку надо правильно объяснить основную идею...

В общем идеями я проникся, они мне понравились, и слежение за стеком уже не кажется
таким омерзительным, как раньше... :mrgreen:
Думаю, титула "начинающий фортер" я уже заслуживаю, ибо у меня уже родились крамольные
мысли, что там в коде почекрыжить и сделать иначе. 8)
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: RFORTH

Post by Lavr »

Lavr wrote:По коду часто встречается что-то типа:

Code: Select all

   RAR
   RST 7
Но это точно не оно, на RST 7 этот Форт точно не обращается...
Это некий аналог функции 0F818H co стоп-байтом 0FFH, который и декомпилируется как RST 7.
Если кардинальные переделки не вносить, то можно и не трогать эти байты - они не повлияют,
привязки к адресам там нет. Эта функция вывода строки на экран L0A06 выводит то, что сразу за
её вызовом дальше по коду:

Code: Select all

L0860:
  POP  H                ;0860  E1
  CALL L0A06            ;0861  CD 06 0A
  DB   0AH              ;0864  0A 'CR'
  DB   25H              ;0865  25 '%'
  DB   0FFH             ;0866  FF stop-byte

L0867:
  LXI  H,L107E          ;0867  21 7E 10
  POP  PSW              ;086A  F1
  CALL L0A06            ;086B  CD 06 0A
  DB   0AH              ;086E  0A
  DB   'stek'           ;086F  73  s
                        ;0870  74  t
                        ;0871  65  e
                        ;0872  6B  k
  DB   20H              ;0873  20
  DB   'pust'           ;0874  70  p
                        ;0875  75  u
                        ;0876  73  s
                        ;0877  74  t
  DB   0FFH             ;0878  FF  stop-byte
  JMP  L0BEA            ;0879  C3 EA 0B
Вот "СТЕК ПУСТ" - это единственная русская фраза в тексте в КОИ-7.
Я её не трогал, чтобы контрольные суммы сошлись.
Но теперь трогать можно! :kruto:
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: RFORTH

Post by Lavr »

Shaos wrote:А он самописный или цельнотянутый у буржуинов?
А знаешь, что интересно, может быть, он с "Сетуни-70" цельнотянутый ... :wink:
У Брусенцова там же был стековый язык отчень форто-подобный, хотя... это скорее
уж Форт тогда "подобный"...

И везде пишут, что даже ассемблера не было для "Сетуни-70" - в кодах легко писалось.
Вот я тоже тут думаю - почему в Форте слова токенами не заменяют...
iLavr