nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 18 Apr 2024 05:07



Reply to topic  [ 85 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next
RFORTH 
Author Message
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
kozzdo wrote:
Еще сегодня смотрел код amforth для контроллеров atmel, там шитый код тоже подпрограммный

Что то не похоже это на подпрограммный, это скорее косвенный шитый код.
DO_NEXT считывает адрес словарной статьи из шитого кода, а далее
DO_EXECUTE считывает адрес программного кода и затем переходит туда.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


12 Aug 2021 10:01
Profile WWW
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
kozzdo wrote:
я подозреваю, что в РК форте тоже есть похожий механизм do_colon, do_execute и do_next
буду пробовать искать.

do_colon это вызов форт-слова, а do_next переход к следующему слову в определении форт-слова. В подпрограммном шитом коде такого нет, т.к. форт-слово это просто обычный код для процессора. do_execute конечно же имеется:
Code:
    DW ZEXECUT
    DB 'EXECUT',86h
LEXECUT:
    PUSH B
    CALL LDROP
    RET
ZEXECUT:

В этом форте есть несколько мест, где после CALL LDROP стоит RET, это конечно же можно оптимизировать в JMP LDROP.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


13 Aug 2021 01:09
Profile WWW
Writer

Joined: 03 Aug 2020 20:18
Posts: 20
Reply with quote
b2m wrote:
В этом форте есть несколько мест, где после CALL LDROP стоит RET, это конечно же можно оптимизировать в JMP LDROP.


Ну вообще конечно суперски элегантное решение переходить через RET на подсунутый в стек адрес, сейчас поиграюсь. Заодно и дополнительные комментарии сделаю в листинге, где найду эти конструкции.

Доставляет удовольствие слияние команд форта с машинным кодом (я о сохранении регистров через DUP и вызовы через DROP RET)

Опять же, стало понятно, почему и как отрабатывает вот это слово:

: EDIT 0 EXECUT; WORDS QUIT

в том смысле, что после выхода из Микрона оно прыгает по сохраненному в стеке возврата адресу обратно в форт и тут же вызывает последовательно WORDS и QUIT
В этом, возможно, суть использования RET а не JMP?


13 Aug 2021 08:08
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
kozzdo wrote:
Опять же, стало понятно, почему и как отрабатывает вот это слово:

: EDIT 0 EXECUT; WORDS QUIT

А почему точка с запятой не в конце?
Скорее уж так (пробел перед ; тоже важен):
Code:
: EDIT 0 EXECUT WORDS QUIT ;


kozzdo wrote:
В этом, возможно, суть использования RET а не JMP?

Суть в другом, даже если используется JMP на другую процедуру, в конце её всё равно будет RET

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


15 Aug 2021 00:34
Profile WWW
Writer

Joined: 03 Aug 2020 20:18
Posts: 20
Reply with quote
Про слово EDIT это мой воспаленный рассудок навыдумывал того, чего автор не подразумевал. Я с чего-то подумал, что оно откомпиллируется целой строкой. На самом деле, конечно же, на точке с запятой компиляция заканчивается, а WORDS лишь позволяет увидеть что новое слово уже появилось в словаре.

про неизбежный RET согласен, да.

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


15 Aug 2021 06:58
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
kozzdo wrote:
Вообще, этот форт это какой-то ассемблер на стероидах, ...

Когда я его здесь реанимировал, мне было интересно посмотреть, как в принципе реализуется "шитый код".
А этот форт от Н. ШИХОВа весьма компактный для такой цели, да к тому же и работает ещё! :lol:

_________________
iLavr


16 Aug 2021 01:29
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Да, форт Шихова весьма оптимально реализует подпрограммный шитый код для i8080.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


16 Aug 2021 03:38
Profile WWW
Writer

Joined: 03 Aug 2020 20:18
Posts: 20
Reply with quote
Этот форт стабильно работает и я оставлял в эмуляторе работающие небольшие программки на несколько суток и они продолжали работать ))) Проблема этого форта в том, что он совершенно лишен защиты от дурака. Любое неверное движение во время интерпретации и все летит в тартарары. Например можно запросто все убить неаккуратным использованием [ или ] ну и так далее. Т.е. следить надо не только за стеком, но и за системными разными переменными.
А так было бы интересно реализовать тетрис или xonix на этом форте, по идее ничего этому не препятствует.
И еще хочется подключить свой старенький РК через последовательный терминал, без дисплея. Но это надо немного паяльником потыкать, т.к. плата прожила трудную жизнь )))) включая затопление и несколько лет в сыром подвале. Последний раз включалось, я думаю, году в 93м. Визуально вроде все живо, но надо чистить, тестировать и понемногу включать (плюс еще эти долбаные три питающих напряжения). Опять же, надо ром-диск какой-никакой...


16 Aug 2021 05:03
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
kozzdo wrote:
И еще хочется подключить свой старенький РК через последовательный терминал, без дисплея.

И как потом с этим чудом работать? РК со стандартным биосом вообще ничего про последовательный интерфейс не знает. Это-ж надо биос править...

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


16 Aug 2021 10:28
Profile WWW
Writer

Joined: 03 Aug 2020 20:18
Posts: 20
Reply with quote
Про это будет знать форт. У Шихова в обучающем примере упоминается. Там предлагается использовать свободный порт ВВ55 и соответствующие драйверочки. ВВшку с ее параллельным портом можно в теории через ардуинку подцепить к юсб порту компьютера. Опять же, где-то что-то там было у меня на ВВ51 собрано тоже (детали не помню, хотел телетайп принимать, кажется, с эфира).

 
(" ДОПУСТИМ У НАС ОТДЕЛЬНЫЙ ТЕРМИНАЛ, С КОТОРЫМ ЕСТЬ СВЯЗЬ
ЧЕРЕЗ ПОРТ К580ВВ55 КАНАЛ A В РЕЖИМЕ 2 ")
: PPAINI -1 BFF3 C! 0D BFF3 C! 9 BFF3 C! BFF0 C@ DROP ;
    PPAINI (" ИНИЦИАЛИЗАЦИЯ ПОРТА ")

: INT7 BEGIN BFF2 C@ 8 AND IF ELSE REPEAT ;
(" ОЖИДАНИЕ БИТА ПРЕРЫВАНИЯ ")

: TRMO INT7 BEGIN BFF2 C@ 80 AND IF BFF0 C! ELSE REPEAT ;
(" ПОДПРОГРАММА ВЫВОДА БАЙТА В КАНАЛ A ")

: TRMI INT7 BEGIN BFF2 C@ 20 AND IF BFF0 C@ 7F AND ELSE REPEAT ;
(" ПОДПРОГРАММА ВВОДА БАЙТА ИЗ КАНАЛА A ")

(" СЕЙЧАС ДОСТАТОЧНО ЗАПИСАТЬ АДРЕСА ПОДПРОГРАММ
      TRMI В (KEY), A TRMO В (EMIT)
НАПРИМЕР, ТАК :
      ' TRMI (KEY) ! ' TRMO (EMIT) !
И ВАША МАШИНА БУДЕТ РАБОТАТЬ
БЕЗ МОНИТОРА ДИСПЛЕЯ И КЛАВИАТУРЫ")


16 Aug 2021 12:14
Profile
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
b2m wrote:
И как потом с этим чудом работать? РК со стандартным биосом вообще ничего про последовательный интерфейс не знает. Это-ж надо биос править...

У меня есть сильно модифицированный вариант CP/M - там есть все эти хотелки (RS232):
терминал, файловая система на неком сервере под WinXX.
В качестве терминала - HyperTerminal на WinXX.
Можно одновременно работать в Win и на самой машинке (Партнер 01.01).
8 букв устройств CP/M отображаются на каталоги Win.
Можно добавить SD-карточку.
РК-86 видит родной ROMDISK (на ВВ55).
начало было отсюда:
viewtopic.php?f=94&t=19620
в принципе оно работоспособно...


16 Aug 2021 21:47
Profile
Writer

Joined: 03 Aug 2020 20:18
Posts: 20
Reply with quote
ну CP/M это отдельная интересная тема )))


17 Aug 2021 09:54
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
kozzdo wrote:
Про это будет знать форт.

Я про то, что форт тоже надо будет как-то загрузить и запустить. Вслепую с магнитофона? Или в ПЗУ его записывать и стартовать после инициализации биоса автоматом?

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


18 Aug 2021 01:39
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
kozzdo wrote:
Проблема этого форта в том, что он совершенно лишен защиты от дурака.

Ну если в этот Форт добавить "защиту от дурака", он явно станет зело "толще", чем ! :lol:
А это совсем скучно будет... компилятор, размером в - сам по себе весьма интересен! :kruto:

Кстати, интересно, как Шихов его писал - ядро на ассемблере, а потом раскручивал на самОм Форте?

_________________
iLavr


18 Aug 2021 05:28
Profile
Writer

Joined: 03 Aug 2020 20:18
Posts: 20
Reply with quote
2 b2m -- однако да, надо мастрячить клавиатурку какую-никакую, а у меня еще и орион есть... правда в несколько более плачевном состоянии, но все равно клавиатура не помешает ))) Мысли именно такие - грузиться с ром-диска и далее запускаться из монитора. Но это все не особо первоочередные задачи, тут на изыскания текущие вполне достаточно эмулятора, еще ковырять не перековырять всю эту тему...

2 Lavr мне показалось, что Шихов достаточно серьезный программист, код довольно прикольно местами закручен. Интересно, он вообще жив еще? )))) Но как бы там ни было, этот форт очень помогает мне приблизиться к конечной цели - запустить шитый код на ардуинке, причем для вполне конкретных практических применений.

Из текущих моих разборок, выяснил, как отрабатывает кусок кода по адресу 0A06H, который после вызова CALL 0A06H распечатывает весь текст под ним, пока не встретится FF.
Очень интересно там через стек в регистр B перебрасывается адрес, следующий после вызова этой подпрограммы. А дальше, по сути, кхе кхе отрабатывает TYPE, который использует EMIT. TYPE в норме адрес начала текста как раз и забирает через значение в регистре B (вершина параметрического стека) Все смешалось, люди, кони... Ассемблер и форт... прикольно.
И через эту приблуду, кстати, выводятся все эти системные > ? и СТЕК ПУСТ :kruto: :kruto: :kruto:

Я понимаю, что вы это уже все опробовали и обкатали, но тем не менее, я еще поделюсь чем-нибудь по мере продвижения в разборе кода.


18 Aug 2021 11:35
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 85 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next

Who is online

Users browsing this forum: No registered users and 29 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 Group
Designed by ST Software.