А мы теперь и для GameBoy пишем на Обероне.
Скоро опубликую новую подсистему GBDev.
А мы теперь и для GameBoy пишем на Обероне.
Скоро опубликую новую подсистему GBDev.
Oleg N. Cher, ну круто, что сказать. Ну вот я, например, почему-то не могу на Обероне, мне нравится обычный Паскаль. Как не пытался освоить Блэкбокс - не мог... Да ладно... Ждём плодов для мегадрайва и геймбоя.
Плоды может и будут, но я не публикую всё, что делаю. Смысла нет. Иногда в телеграм-группе что-то показываю в узком кругу.
А ты зря так рано сдался. Оберон это круто.
А с трансляцией Паскаля в Си у тебя сделать что-то для восьмибиток, скорее всего, не получится, потому что трансляторы, в основном, либо недоделки, либо заточены под большие ресурсы и с претензией типа на совместимость с Дельфи.
В любом случае, надо быть готовым сделать из недоделки доделку, либо иметь очень ограниченную функциональность. Это большая работа. У меня развитие транслятора Ofront заняло уже больше десятка лет. Даже свой диалект Оберона сделал, специально адаптированный под машинки со слабыми ресурсами. И с возможностью иметь ключевые слова в нижнем регистре.
Но мне конечно было бы интересно узнать чего в Обероне такого плохого, что Паскаль его чем-то лучше. Кроме аргументов в стиле "я это не щупал, но меня терзают смутные сомнения".
еще бы по Haiku что-нибудь писали...
Так пишите, любители Haiku. А я даже умозрительно не представляю, что это за хрень)
Паскаль лучше тем, что привычнее. :) Многие его в 90е изучали в учебных заведениях
Паскаль привычнее, потому что вы вообще не вникли в то, что такое Оберон. А это ещё более уточнённый Паскаль, из которого убраны лишние begin'ы, добавлена модульность (в Виртовском Паскале её не было), а платформенные особенности вынесены в SYSTEM. Так что привычность Паскаля при отрицании Оберона - это стереотипы в голове. Фёдор Васильевич Ткачёв, автор проекта Информатика 21, называет Оберон Ультра Паскалем, и он прав. Преемственность абсолютно налицо.
Вас почему не смущает, что на каждой ретро-машинке был свой диалект Бейсика, а иногда и несколько? Почему всё это называется Бейсиком? Оберон имеет право называться Паскалем, потому что он похож на Паскаль куда больше, чем некоторые Бейсики на Бейсик.
- - - Добавлено - - -
Andrew771, ещё про совместимость с Дельфи расскажите) Что-де без неё на ретромашинках ну никак ;)
P.S. Коллеги, мне нужен shell-аккаунт какой-либо *BSD-системы. Для пересборки Ofront+ (транслятор Оберона в Си) для *BSD. Юзаться будет редко и мало, может раз-два в месяц. Готов дать немного денег, но не готов платить помесячно.
На *BSD нужен git и gcc.
Поставь виртуалку. Например, https://www.virtualbox.org/
Туда что угодно, и запускаешь свою систему по мере надобности.
Если проект открытый - подключаешь сборку через Travis CI, всё бесплатно, единственная проблема это .yaml файл написать.
https://docs.travis-ci.com/user/reference/freebsd/
Собрал список подсистем и проектов на Обероне/XDev для различных платформ. Иногда просят показать, чего можно сделать на Обероне для ретро. Ну вот, наконец дошли руки подрезюмировать нашу деятельность.
Подсистемы (разной степени готовности):
- DosDev (Turbo C 2.01) for DOS-like (MS-DOS, PC-DOS, FreeDOS)
- GBDev (SCCZ80, ZSDCC) for GameBoy/GameBoy Color
- K580Dev (SCCZ80) for Soviet computers based on KP580BM80: Apogee BK-01, Vector-06c, Korvet, Microsha, Orion, Radio-86RK, Specialist, Lvov PC-01, etc
- LinDev (GCC) for UNIX-like (*BSD, Linux, macOS)
- MsxDev (SDCC) for MSX
- NesDev (CC65) for NES (Dendy, Famicom)
- SmdDev (GCC) for Sega Mega Drive
- UkncDev (OMSI Pascal) for Soviet computer UKNC
- WinDev (MinGW) for Windows x86, x64
- WinDevD (Delorie DJGPP + Max Feoktistov tools) based on Delorie DJGPP compiler for Win32 (small exe/dll)
- ZXDev (SDCC) for ZX Spectrum
- ZXDev3 (Hi-Tech C v3.09) (based on Hi-Tech C for CP/M) for ZX Spectrum
- SmsDev (SDCC) for Sega Master System (unpublished)
- DroNDK (Android NDK, unpublished)
- DroSDK (Android SDK, unpublished)
- JmeDev (Java ME, unpublished)
Игры:
- 15s, Пятнашки с картинками - логическая игра от Савелия Иванкова (Yprit) (ZX Spectrum)
- 2048 - логическая игра от Савелия Иванкова (Yprit) (ZX Spectrum)
- Arkanoid - port of Arkanoid game from Monkey-X to Oberon-2. Based on SDL 2 (Windows, Linux, macOS)
- Bolder16K - a tiny multi-platform Boulder Dash-like game (ZX Spectrum, Lvov PC-01)
- Colorflow - логическая игра от Савелия Иванкова (Yprit) (ZX Spectrum)
- DarkWoods - port of game "Dark Woods" by Jocke The Beast (Java ME, Linux, Windows, ZX Spectrum)
- Dash - full version of Bolder Dash (MS-DOS, ZX Spectrum, Java ME) (incomplete)
- Dice (Кости) - a simple console game (ZX Spectrum)
- FoxHunt - a logical game by Saveliy Ivankov (Yprit) (ZX Spectrum, Radio-86RK)
- Numeris - логическая игра от Савелия Иванкова (Yprit) (ZX Spectrum)
- Roguelike with strategy - рогалико-подобная игра от slenkar, без исходников (ZX Spectrum)
- Бега мышей (из книги «Как написать игру для ZX Spectrum»)
- Звёздная война (из книги «Как написать игру для ZX Spectrum»)
Разное:
- 53Cosmos - редактор атрибутных картинок от Савелия Иванкова (Yprit) (ZX Spectrum)
- Поздравительный ZX-клип на Обероне (ZX Spectrum)
Статьи:
Экспериментирую не только с лоукейсом, но и с убиранием ";" в Обероне-3:
http://i.piccy_.info/i9/a9176eaea6de...4/Oberon_3.png
Теперь Оберон-3 может выглядеть вот так:
http://i.piccy_.info/i9/b21b109a670d.../fibonacci.jpg
Теперь ";" необязательный разделитель и может отсутствовать. Нижний регистр ключевых слов опциональный.
офтоп: существует ли компилятор с языка Оберона реализованного на языке С для виндовс (хост) для тагет http://www.projectoberon.com/ ???
Что значит "для тагет www.projectoberon.com" ???
В www.projectoberon.com свой собственный компилятор Оберона.
Си оберонщики недолюбливают, поэтому компиляторы Оберона на Си в основном не пишут.
мне надо(хочется) скомпилить BootLoad.Mod написанный на обероне в машинные коды проца RISC5 что на плисе. при отсутствии "родного" компилятора из этого проекта. другими словами есть только исходник - а нужен кросс-компилятор под винды(хост) для проца RISC5(тагет).
мне монопенисуально кто кого не до любливает.
Виртовский RISC5 это не та же архитектура, что RISC-V. Вы точно не путаете?
Ещё разрешите усомниться в целостности и самоценности модуля BootLoad.Mod, скорее всего, это откуда-то выдернутый низкоуровневый модуль, который использует зависимости Оберон-системы и/или нестандартные языковые расширения Оберона. Кстати, он на каком Обероне написал? Oberon-07 ?
Такого кросс-компилятора ни для RISC5, ни для RISC-V нет, тем более, под Windows. Максимум, что я могу предложить - это мой транслятор Ofront+, он умеет транслировать пять диалектов Оберона в Си, дальше можно собрать сишкой.
- - - Добавлено - - -
Да, если нужен всё-таки RISC5, зайдите на https://t.me/ofrontplus - мож кто-то что-то подсоветует. Вроде собирали в системе, запущенной в браузере. Но точно без Си и без Windows.
ну я как бы не настолько пьян чтоб путать 5 с V. Сей модуль есть содержимое "загрузочной ПЗУшки", она вычитывает содержимое из SD в RAM, далее исполняется код из RAM. Какой диалект - хз. Их как собак не резаных. У меня есть двоичный код сего модуля и есть исходник. Нужен компилер с ЯП в машкод (есть возможность проконтролировать соответствие исходника, его коду и правильность компилятора). далее собрать систему на современном "железе/плис" отладке плате. В чём "прикол" - в том что есть всё от теории до реализации, от "операционки" до реального железа , что можно пощупать, по адаптировать и тд. короче как и задумывалось профессором - "учебный комплект"
пс: телеги нет и пока не предвидится...
- - - Добавлено - - -
чегото с набегу я не заметил где есть ехе-ник "транслятор Ofront+". или там так же надо "раскорячиваться" и компилировать транслятор ?
Понятно. Но смотрите: Project Oberon даёт на выходе скомпилированные модули своего формата, наверняка при динамической загрузке они настраиваются перед исполнением на необходимые адреса. Так что придётся разбираться с этим.
Насколько большой модуль BootLoad.Mod и откуда он взят? (его собирать имеет смысл в той среде, откуда он родом)
Project Oberon последней ревизии - на Oberon-07/16, который ещё называют Revised Oberon.
Мне неизвестны способы компилировать Си в машкод RISC5. Так что предположу, что Вы имеете в виду всё-таки RISC-V.
exe'шка Ofront'а+ имеется. Лежит в Target/Win32/ofront+.exe
1) да, своего формата (ещё не смотрел)
2) BootLoad.Mod упоминается в инструкции по "сборке" с нуля процессора на плисе, но исходники на оном сайте не представлены, зато есть на сайте https://people.inf.ethz.ch/wirth/Pro...ron/index.html
Его двоичный код не больше 512 слов(по 32бита). собирается собственно "своим" компилятором (исходники я надеюсь на сайте полностью выложены) и на этой же аппаратной платформе (кажется так).
3) у меня нет рабочих компиляторов с Оберона и С на проц RISC5.
4) как и нет самой реализации RISC5 на плисе. То что выложено на сайте возможно работает и работает на трёх различных платах. Они очень древние, и они отсутствуют у меня. Там применяются плисы Спартан-3 и среда разработки "Xilinx ISE". У меня есть платы только свежие (аля Спартан-7) и свежая Xilinx Vivado.
5) оригинал проца написан на Verilog-е, Это конечно хорошо, но я пишу на systemverilog-e, а Verilog (условно вчерашний день).
6) докучи он (проц ) написан в "академическом стиле", другими словами в исходном коде отсутствуют "нужные" куски кода (которые повышают надёжность работы проца и позволяют выполнять моделирование в симуляторе поведение процессора - то как он работает в плисе).
7) RISC-V это условно современный проц класса risc (не cisc), аля арм, мипс.
RISC5 - это risc реализация проца Вирта со своей уникальной системой команд.
Надеюсь ваши сомнения развеяны ?
8) Чего хочу в конечном:
- поднять свой уровень магических умений в языках "программирования" ПЛИС
- научиться писать тестбенчи на SV
- "поднять" оберон систему на современной плате (относительно, в данном случае ZedBoard)
- добавить цвета на дисплей, реализовать многопоточность (ну я так это называю), AXI шину - дабы можно было использовать инфраструктуру xilinx по доступным ip-ядрам (возможно и wishbone и тамошние ядра), симметричную многопроцессорную систему и др хотелки.
- возможно видоизменить язык (да здравствует очередной диалект).
- если я осилю первые две хотелку - то уже замечательно.
пс: конечно я могу найти (на "складе") древние отладочные платы, но ISE уже не работает цивильно на win10, и systemverilog поддерживается только Vivado.
Несколько лучше понял Вашу задумку. Тогда конечно уровень Си здесь не пригодится. Проц полностью Виртовский, компилятор с него только один, его и надо использовать. Я могу конечно оттранслировать BootLoad.Mod в Си при помощи Ofront'а+, но что это нам даст?
Исходники там точно есть, но вряд ли так просто удастся запустить его для Windows/UNIX, там же заточка чисто под Оберон-систему.
Кстати, обратите внимание, что в BootLoad.Mod идёт две версии модуля:
MODULE* BootLoad; (*NW 20.10.2013 / PR 4.2.2014; boot from SDHC disk or line*)
и:
MODULE* BootLoad; (*NW 10.2.2013, boot from line only*)
Какую именно нужно собирать?
P.S. Звёздочка после MODULE это уже нестандартное расширение. Теряюсь в догадках, что это значит. Могу только предполагать.
Ну, проц Виртовский, Си для него никто не делал. Си для него нету. А Оберон есть, притом я почти уверен, что Project Oberon можно запустить в браузере. Там и поюзать компилятор.
Уверен, нет смысла держаться старых плат, нужно поддерживать новые.
То же самое про Verilog.
Правильно. Вирт был сильно завязан на образовании и буквально помешан на простоте и обозримости. Я согласен, что если это кто-то будет использовать, то надёжность важнее.
Теперь конечно. Кстати, у меня есть свой интерес - запустить Оберон-систему на ZX Uno. Было бы очень круто. Но не знаю, насколько Вам это будет интересно. И я почти полный профан в ПЛИС и железе.
Итак, я скопировал Ваше сообщение в оберонские группы, если кто-то подтянется, будет хорошо. Также советую зарегиться на форуме OberonCore, вот там точно тусуются профи. Они помогут.
очередные раскопки:
1) в BootLoad.Mod
есть строчки
IMPORT SYSTEM;
и
SYSTEM.GET(rsData, y); z := ROR(z+y, 8)
первая строчка насколь я понимаю (по аналогии со времён освоения турбо паскаля)
импорт внешнего модуля SYSTEM.
Соответственно где его брать ? (на сайте его в явном виде нет) или он "реализован" внутри родного компилятора ?
Соответственно SYSTEM.GET это вызов процедуры из модуля SYSTEM.
а вот что значит ROR ? (честно я не читал описания языка) это встроенный оператор языка или это "библиотечная процедура" ?
2) до кучи в BootLoad.Mod.txt есть несколько реализаций BootLoad и "команд компиляций"
3) я пробовал транслировать - получил "кучу" ошибок...
- - - Добавлено - - -
По большому счёту: мне как то безразлично компиляция BootLoad - могу восстановить алгоритм из бинарника и посмотреть что конкретно в нём делается и какому BootLoad он соответствует, Но я "суперстар" что бы писать в машиных кодах. Посему мне нужен компилятор с языка Оберон (это если следовать заветам Вирта) ну или с Си в машинный код проца и чтоб оный компилятор запускался под виндами. (линук сильно "красноглазый" - крайне не привычная система, год общения с ней одни "тошнотные рефлексы" - увы, там всё ортогонально моему восприятию "мира").
Полагаю у Вас нет возможности к Вашей плате подключить SD-карту так как она включена у Вирта? Иначе зачем пересобирать prom.mem если его и так можно скачать уже собранный и прошить в вивадо в ПЗУ (как это обычно делается средствами IDE)Цитата:
2) BootLoad.Mod упоминается в инструкции по "сборке" с нуля процессора на плисе, но исходники на оном сайте не представлены, зато есть на сайте https://people.inf.ethz.ch/wirth/Pro...ron/index.html
Его двоичный код не больше 512 слов(по 32бита). собирается собственно "своим" компилятором (исходники я надеюсь на сайте полностью выложены) и на этой же аппаратной платформе (кажется так).
Оно не нужно так как есть эмулятор с образом SD-карты. Там как раз можно собрать что угодно, т.к. проектоберон может собрать сам себя.Цитата:
3) у меня нет рабочих компиляторов с Оберона и С на проц RISC5.
Вивадо соберет этот верилог. Если хотите тестировать без заливки в ФПГА тогда придется сделать свой тест-бенч под себя.Цитата:
5) оригинал проца написан на Verilog-е, Это конечно хорошо, но я пишу на systemverilog-e, а Verilog (условно вчерашний день).
судя по всему "оберон-07"
Да. SYSTEM это псевдомодуль, он встроен в сам компилятор. Соответственно, никаких исходников для него нет, процедуры из него транслируются прямо в машкод самим компилем.
Да. Чтение из памяти в переменную.
Это встроенная процедура языка Оберон-07, реализует циклический сдвиг вправо на N бит. Почитайте описание, оно же небольшое.
Да, так и есть. В стиле Оберон-системы: можно выделить мышкой команду и скомпилировать.
Увы, тут я не помогу - надо спрашивать кого-то более компетентного именно в ПЛИС. Я больше для десктопов программирую.
Не, компилятора Си для RISC5 точно нету. Но тут товарищ сообщает, что есть эмулятор Оберон-системы для винды.
Evgeniy, [23.10.21 17:53]
я посмотрел там этот prom.mem уже откомпилированный лежит. Его надо просто встроить в ПЗУ при сборке проекта в vivado. Есть вариант что у товарища нет возможности прицепить PS/2 клавиатуру и мышь и тогда ему понадобиться пересобирать драйвер для оберона на компе с помощью какого-то кросс-компилятора
Oleg N. Cher, [23.10.21 17:54]
У товарища ж нет старой платы Spartan 3
Evgeniy, [23.10.21 17:54]
а где взять самое полное описание оберон-7/16 ?
Oleg N. Cher, [23.10.21 17:54]
То есть, он может всё это делать только на компе с виндой
Evgeniy, [23.10.21 17:54]
благо на сайте выложен эмулятор под винду
так же как и образ SD-карты с которой он может загружаться
можно в нем откомпилировать и потом зашить в плату с ПЛИС
Oleg N. Cher, [23.10.21 17:55]
Ага, там есть эмулятор. Прям на сайте Project Oberon?
Evgeniy, [23.10.21 17:55]
да
Oleg N. Cher, [23.10.21 17:55]
https://people.inf.ethz.ch/wirth/Obe...n07.Report.pdf
Evgeniy, [23.10.21 17:55]
спасибо
ROR это циклический сдвиг вправо, то есть если у нас есть некое 32-хбитное число 0xAABBCCDD то при сдвиге вправо на 8 бит мы получим 0xDDAABBCC
Модуль SYSTEM содержит платформозависимые процедуры - типа сборщика мусора, работы с диском на низком уровне и выделение памяти в куче.
Часть операций модуля SYSTEM зашиты в компилятор - типа взятие адреса переменной.
1) да, на отладке (на zedboard) SD-карта не доступна со стороны плисы. ровно как и не достучаться к uart.
2) если тот что на выше упомянутом сайте (эмулятор) - то я конечно всё понимаю - но он вдрызг не практичен и неудобен. Да и докучи - предположим я "там" что то написал/скомпилировал - как я получу результат на реальном компе (а не внутри эмулятора)?
3) Да вивадо "берёт" этот верилог, но есть глобальное НО - в оригинальных файлах отсутствует инициализация "триггеров", а посему симулятор "весь красный" так как он не догадывается, а что там "в регистре по сбросу" находится...
4) ежу понятно что тест-бенчи писать самому. это "вторая хотелка".
- - - Добавлено - - -
1) Я "прочитал" описание Оберон-7... ;)
2) про SYSTEM я значит правильно догадываюсь - значит надо "копать" в сторону компилятора.
1) а как Вы тогда будете взаимодействовать с системой если нет возможности подключать внешние устройства?
2) придется написать утилиту которая выкусит загрузчик
3) это не проблема так как реальное железо ведет себя именно так при включении, но подводить сброс к каждому триггеру это очень непрактично, поэтому сбрасываются аппаратно только самые главные регистры - типа счетчика команд, а остальной сброс ижет уже программный. Отсутствие глобально сброса, кстати, поможет Вам при отладке :)
4) это тоже интересно
- - - Добавлено - - -
Компилятором тоже займитесь так как это не менее интересно. Сначала выглядит как магия но потом начинаешь чувствовать красоту преобразования ЯП высокого уровня в машинный код
я перспективе, тоже хочу собрать систему Оберон, только на другом процессоре
про "ZX Uno" есть пару минусов
1) его нет у меня
2) это Спартан-6 . Vivado "знает" плисы начиная с Спартан7. Для всего остального "древнего" "существует" ISE.
3) ISE - по человече (насколь я помню) не понимает SV, только Verilog.
4) так что если очень надо то:
- после запуска у себя "можно" будет заняться "обратным портированием" (но если честно шансов маловато)...
- ну и иметь доступ к "телу ZX Uno" на расстоянии вытянутой руки.
PS: что существует ещё VHDL - я в курсе, но по ряду причин он для меня не актуален.
[
- - - Добавлено - - -
x86128
1) Ну если кто посмотрит описание оной платы - то поймёт что там есть "альтернативные" способы общения. Особенно если уметь дружить с паяльником.
2) вот ещё "заниматься извратом" вытаскивать из эмулятора с помощью "хексредактора" бинарники.
3) реальное железо тоже надо временами инициализировать "нужным" значением. не всегда "0" бывает правильным.
4) Кстати, а как "Отсутствие глобально сброса, кстати, поможет Вам при отладке" ?
5) да, не всегда "глобальный сброс" полезен, но для симулятора надо либо "сброс в схеме", либо явное указание исходного значения.
6) "написание" компиляторов это тоже ещё та отдельная интересная тема.
Oleg N. Cher
я заглянул в исходники компилятора - там действительно есть реализация порядка 12 процедур. В самом конце ORB.Mod.txt упоминаются оное.
- - - Добавлено - - -
До кучи - почитывая про симуляцию Verilog и SV - я кажется видел что они отличаются в части про то какое значение имеют регистры в "нулевой момент времени". и наверно в "бытности" в ISE там всё хорошо симулировалось. ИМХО. Потом ещё почитаю.
пс: Си я использую 20 с лишним лет. ПЛИСами я занимаюсь набегами лет пять-пятнадцать наверно. а первый раз столкнулся с ними в 98году.
Я думаю, если всё будет получаться, то могут найтись желающие предоставить Вам ZX Uno/ZX DOS для подобного проекта.
Можно даже попробовать сконтактировать с Антонио Вилленой и другими разработчиками ZX Uno, они могут заинтересоваться.
Но лучше будет показать им уже какие-то практические результаты.
По поводу Телеграм - ничего лучше для обсуждения технических вопросов текстом я не знаю. К Дискорду и Скайпу так и не привык. Мы ещё юзаем Rocket Chat и (для видеоконференций) Jitsi.
Предлагаю создать отдельную тему для Вашего проекта.
- - - Добавлено - - -
Может вот это как-то пригодится:
Насколько я понимаю, Project Oberon, портированный в среду BlackBox Component Builder, т.е. работает под виндой.
- - - Добавлено - - -
Вот ещё что-то по теме:
P.S. Авторы обоих проектов обитают в Telegram, приходите - познакомлю.
оберон форум копал - но он тоже мутноват.
и сию тему про IDEне видел - на первый взгляд это то что примерно ищется.
спасибо
посмотрел... рука лицо.
там только исходники.. exe-ника нема.
Ну а шо ж Вы хотели, уважаемый. Не стреляйте в пианиста, он играет как умеет.
Мне тут товарищ подсказал, что в Телегу можно заходить через браузер. Явитесь и выскажите претензии автору лично)
Дело в том что глобальный сброс требует протягивания через всю вашу схему еще одного провода по мимо тактового сигнала. Он добавит задержку, т.к. необходимо будет учитывать время распространения этого сигнала через всю схему и энергопотребление (так как на нем всегда будет присутствовать какой-то логический уровень).
Аппаратный сброс делается только для тех регистров, которые невозможно сбросить программно (мы ведь про процессор говорим). Всё остальное - программно. В простейшем случае получается надо запретить прерывания и обнулить счетчик команд. Хотя вот у Z80 прерывания вырубаются тоже программно - т.к. самая первая инструкция там DI в БИОСе.
В случае FPGA эта паутина проводов уже имеется, поэтому там всё "обнуляется" при старте нужными значениями. В реальных же схемах (считай ASIC) такой возможности нет.
Отсутствие сброса в модели на Verilog или SV поможет Вам отследить использование значений регистров без их инициализации, как использование переменной без её инициализации. Причем это всё можно отследить в симуляторе. А если всю схему сбрасывать в 0, то такое можно пропустить, потому как этот 0 вы не увидите в трассировке.
Дело еще в том, что несмотря на то что описание схемы задано на языке Verilog который похож на программу - это не программа. Это именно описание цифровой электрической схемы принцип работы которой основан на регистровых передачах (RTL) то есть вы этим описанием задаете цепочки регистров и правила перехода их из одного состояния в другое. Можно сказать что последовательный код на verilog на самом деле не последовательный а реально параллельный.
"Глобальный сброс" плох совсем по другой причине. (если точнее одну причину назвали , но забыли другую, а третья не существенна)
По занудствую(повторюсь):
пс: Си я использую 20 с лишним лет. ПЛИСами я занимаюсь набегами лет пять-пятнадцать наверно. а первый раз столкнулся с ними в 98году.
А на Опенкорес свежей сборки риск 5 не будет?
Сотворил отдельную тему
https://zx-pk.ru/threads/33917-project-oberon.html
Угу, видел. Хорошая разработка.
Вот эта причина самая существенная. Кто разводил платы - не даст соврать. Питание и землю подводить к каждой микросхеме - это уже гемор и затрудняет разводку остальных связей, а если добавить сюда еще один сигнал (сброс) - то ситуация еще более усугубляется.
Ну да, за счет общего затруднения разводки связей, станет меньше возможностей по их оптимизации с точки зрения задержек. Хотя сам сигнал сброса можно поставить на игнор в Timing Constraints, тогда хотя бы он сам не будет подвергаться оптимизации.
Вот это вряд ли. Так как уровень этот обычно постоянный, а львиная доля энергопотребления КМОП-микросхем происходит именно из-за переключений сигналов - то большого вклада в общее потребление схемы сигнал сброса не внесет. Там разве что токи утечки затвора будут, а динамических токов (которые на порядки выше) - нет.
С другой стороны, реализация триггеров без входа сброса более экономична с точки зрения площади кристалла. И, когда триггеров много - то эффект значителен. Не даром Xilinx отказались от входа установки (S) у триггеров при переходе от Spartan 3 к Spartan 6, оставили только сброс. А в 7й серии оставили только синхронный сброс, от асинхронного отказались тоже.
Плюсуюсь. Это правильно. И в Z80 именно это и делается. Возможно, еще режим прерываний ставится на IM 0, хотя это лишнее. Остальное можно программно.
Нет, прерывания при сбросе там запрещаются аппаратно. В противном случае невозможно гарантировать надежный старт компьютера при включении, если до исполнения первой инструкции может произойти несанкционированное прерывание. Команда DI в спектрум-бейсике там стоит не потому, что прерывания при сбросе могут быть разрешены; а для того, чтобы обеспечить безошибочную инициализацию бейсика при попадании исполнения на нулевой адрес по другим причинам (сбой программы, запрос пользователя).
Хотя да, любопытно получается. Попадание управления на команду JP 0 еще не гарантирует инициализацию бейсика, так как между ее исполнением и исполнением DI может произойти прерывание и вмешаться в процесс.