Перейти к содержимому
KeyTwoZero

BetterBIOS - Прошивка для EEPROM с улучшенным функционалом

Рекомендуемые сообщения

В 16.05.2022 в 14:11, KeyTwoZero сказал:

Приветствую вас. Этот пост я пишу, чтобы рассказать вам о своей разработке для мода OpenComputers:

 

BetterBIOS

 

 

Main.png

 

Это специальная прошивка BIOS для EEPROM, позволяющая выбирать любое из подключенных устройств для загрузки.

Для этого используется пользовательский псевдографический интерфейс, который поддерживается для всех уровней видеокарт и экранов (То есть интерфейс будет даже на видеокарте и/или экране первого уровня, при чём с обрезанными адресами, чтобы уместить имя устройства в экран).

 

Selection.png

 

Так же, в этой прошивке есть своя система отображения ошибок, показывающая весь "traceback" за исключением не нужных пунктов внутри самой прошивки. Это будет очень полезно для разработчиков собственных операционных систем, ведь данная прошивка подскажет места, в которых возникла ошибка, в то время как стандартная прошивка молчит как партизан.

 

Error.png

 

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

Если такое устройство только одно - загрузка начнётся незамедлительно.

Подключение устройств для загрузки происходит динамически, "на лету", прямо во время выбора устройства.

То же самое с экранами и видеокартами.

Так же, данная прошивка имеет приоритеты на выбор экрана: первым делом она пытается подключить тот экран, у которого есть клавиатуры поблизости. Если таковых не имеется - использует любой другой.

Видеокарту прошивка использует максимального уровня.

 

Прошивка защищена от критических сбоев при резком извлечении устройств, пока программа работает с файлами на них.

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

Я просто параноик, иначе сделать не мог...

 

Данная прошивка поддерживает стандартную операционную систему OpenOS, для работы которой требуются функции computer.setBootAddress и computer.getBootAddress. Если вы хотите использовать данную прошивку, но не хотите мусорить в глобальных переменных этими рудиментами - просто вырежьте эти функции, сделать это несложно, ниже будут ссылки на исходники.

 

Несмотря на весь этот функционал и продуманность, в минимизированном виде данная прошивка помещается на EEPROM, стандартная ёмкость которого - 4096 символов.

 

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

К сожалению, код не очень хорошо читаемый, но это обусловлено тем, что я писал заранее с расчётом на то, что подробный код будет минимизирован, а минимизаторов кода недостаточно, нужно ещё и грамотно написать код.

 

Исходный код:

https://codeberg.org/KeyTwoZero/BetterBIOS/src/branch/main

(Я ещё делал репозиторий на GitHub, но чёт я его забросил... Мне он не нравится)

 

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

круто, мне нравиться, вот только хотелось бы выбрать диск один раз и чтоб выбор не постаянно появлялся, а еще хотелось бы разные звуки на подключения и удаления файловрй системмы(ну это я уже так, придераюсь), а чтобы решить проблемму с свободным местом, можеш юзать софтину bpacker(да простят меня админы за упаменания левого софта в чужой теме)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@rootmaster

Обновил прошивку, можно посмотреть в репозитории в CodeBerg.

 

Теперь издаются звуки разной высоты при подключении и извлечении устройств.

Так же исправил пару моментов, которые занимали слишком много места.

Например, белый цвет #FFFFFF я просто заменил на -1, ведь оказывается - так можно делать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
15 часов назад, KeyTwoZero сказал:

@rootmaster

Обновил прошивку, можно посмотреть в репозитории в CodeBerg.

 

Теперь издаются звуки разной высоты при подключении и извлечении устройств.

Так же исправил пару моментов, которые занимали слишком много места.

Например, белый цвет #FFFFFF я просто заменил на -1, ведь оказывается - так можно делать.

круто, молодец, удобно в использовании а главное не нарушает стилистику open computers, в общем мне нравиться, но есть еще пару моментов которые я бы поправил, автопобор разшенения конечно хорошо но я бы сделал ограничения по высоте и по ширене чтобы все видно было, причем по высоте динамитчики в зависимости от выводимой информации, еще хочется просто выбрать загрузочное устройство а когда хочешь поменять нажимаешь alt и выбираешь, но это уже как сам захочешь, так же хочется чтобы можно было загружаться не только в init.lua но и в файлы лежашие в /boot/kernel это некий маленький стандарт который я подсмотрел в plan9k, а если будет нахватать места можешь сжимать bios при помоши bpacker лежачего в теме eeprom(если тебе не принципиальна поддержка lua 5.2 он работает только в lua 5.3), а на планшете изменения разрешения выглядит неуместно а на роботе экран вообще глючит из за того что по вертикале больше максимального(баг open computers), добавь проверку на планшет и робота(if not component.list("tablet")() and not component.list("robot") then setCustomResolution() end)

Изменено пользователем rootmaster

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
15 часов назад, KeyTwoZero сказал:

@rootmaster

Обновил прошивку, можно посмотреть в репозитории в CodeBerg.

 

Теперь издаются звуки разной высоты при подключении и извлечении устройств.

Так же исправил пару моментов, которые занимали слишком много места.

Например, белый цвет #FFFFFF я просто заменил на -1, ведь оказывается - так можно делать.

а еще хочется beep как в lua bios при загрузке, (computer.beep(1000, 0.2))

Изменено пользователем rootmaster

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 16.05.2022 в 14:11, KeyTwoZero сказал:

Приветствую вас. Этот пост я пишу, чтобы рассказать вам о своей разработке для мода OpenComputers:

 

BetterBIOS

 

 

Main.png

 

Это специальная прошивка BIOS для EEPROM, позволяющая выбирать любое из подключенных устройств для загрузки.

Для этого используется пользовательский псевдографический интерфейс, который поддерживается для всех уровней видеокарт и экранов (То есть интерфейс будет даже на видеокарте и/или экране первого уровня, при чём с обрезанными адресами, чтобы уместить имя устройства в экран).

 

Selection.png

 

Так же, в этой прошивке есть своя система отображения ошибок, показывающая весь "traceback" за исключением не нужных пунктов внутри самой прошивки. Это будет очень полезно для разработчиков собственных операционных систем, ведь данная прошивка подскажет места, в которых возникла ошибка, в то время как стандартная прошивка молчит как партизан.

 

Error.png

 

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

Если такое устройство только одно - загрузка начнётся незамедлительно.

Подключение устройств для загрузки происходит динамически, "на лету", прямо во время выбора устройства.

То же самое с экранами и видеокартами.

Так же, данная прошивка имеет приоритеты на выбор экрана: первым делом она пытается подключить тот экран, у которого есть клавиатуры поблизости. Если таковых не имеется - использует любой другой.

Видеокарту прошивка использует максимального уровня.

 

Прошивка защищена от критических сбоев при резком извлечении устройств, пока программа работает с файлами на них.

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

Я просто параноик, иначе сделать не мог...

 

Данная прошивка поддерживает стандартную операционную систему OpenOS, для работы которой требуются функции computer.setBootAddress и computer.getBootAddress. Если вы хотите использовать данную прошивку, но не хотите мусорить в глобальных переменных этими рудиментами - просто вырежьте эти функции, сделать это несложно, ниже будут ссылки на исходники.

 

Несмотря на весь этот функционал и продуманность, в минимизированном виде данная прошивка помещается на EEPROM, стандартная ёмкость которого - 4096 символов.

 

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

К сожалению, код не очень хорошо читаемый, но это обусловлено тем, что я писал заранее с расчётом на то, что подробный код будет минимизирован, а минимизаторов кода недостаточно, нужно ещё и грамотно написать код.

 

Исходный код:

https://codeberg.org/KeyTwoZero/BetterBIOS/src/branch/main

(Я ещё делал репозиторий на GitHub, но чёт я его забросил... Мне он не нравится)

 

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

вот еще вопрос, зачем ты используешь setData если меню для выбора вылезете каждый раз? это ведь без с мысленно, если ты переживаешь что в некоторых операционках вместо computer.getBootAddress используется eeprom.getData то это бред, так как в некоторых биосах в eeprom дата лежит не только адрес загрузочного носителя, но и дополнительные данных, я бы привел пример такого биоса но меня за "рекламу" заплюют

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 02.07.2022 в 19:29, rootmaster сказал:

вот еще вопрос, зачем ты используешь setData если меню для выбора вылезете каждый раз? это ведь без с мысленно, если ты переживаешь что в некоторых операционках вместо computer.getBootAddress используется eeprom.getData то это бред, так как в некоторых биосах в eeprom дата лежит не только адрес загрузочного носителя, но и дополнительные данных, я бы привел пример такого биоса но меня за "рекламу" заплюют

Большое спасибо за подсказки. Пожалуй, уберу setData при загрузке, а так же попробую пофиксить проблемы с на планшетах и роботах, ибо я на них даже не пробовал запускать. Ну и beep(1000,0.2) сделаю в начале.

 

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

 

P.S. Если каждый раз при запуске не делать setData - не будет запускаться OpenOS. Ну и костыльная же эта ваша OpenOS...

Изменено пользователем KeyTwoZero

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Обновил. Изменения можно увидеть в репозитории.

  • Теперь издаётся звук при запуске прошивки.
  • Пофикшен баг с мониторами у роботов, да и вообще теперь экраны первого уровня не используют "максимальное" разрешение. Ибо кому в кайф сидеть 4 на 2 экране первого уровня?..
  • Так же заметил, что можно заменить функцию pairs на свою переменную, это повзоляет сильнее сжать код.

Но есть и негативная сторона:

Стал замечать, что к сожалению, конкретно в этом проекте - очень сложно релизовать прям всё-всё-всё.

Увы, но 4 кибибайта на прошивку - действительно слишком мало для полёта творческой фантазии...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
7 часов назад, KeyTwoZero сказал:

Обновил. Изменения можно увидеть в репозитории.

  • Теперь издаётся звук при запуске прошивки.
  • Пофикшен баг с мониторами у роботов, да и вообще теперь экраны первого уровня не используют "максимальное" разрешение. Ибо кому в кайф сидеть 4 на 2 экране первого уровня?..
  • Так же заметил, что можно заменить функцию pairs на свою переменную, это повзоляет сильнее сжать код.

Но есть и негативная сторона:

Стал замечать, что к сожалению, конкретно в этом проекте - очень сложно релизовать прям всё-всё-всё.

Увы, но 4 кибибайта на прошивку - действительно слишком мало для полёта творческой фантазии...

еще хотел сказать, что модификатор сам переименовывает переменные, и делать их такими короткими не обязательно, я "облагорожу" твой код, сделаю его меньше и лутще и скину тебе в личьку, а там сам разберёшься что с этим делать

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 04.07.2022 в 14:03, rootmaster сказал:

еще хотел сказать, что модификатор сам переименовывает переменные, и делать их такими короткими не обязательно, я "облагорожу" твой код, сделаю его меньше и лутще и скину тебе в личьку, а там сам разберёшься что с этим делать

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
16 часов назад, KeyTwoZero сказал:

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

хорошое решения, поддерживаю, вот вопрос тебе нужна поддержка lua 5.2? если нет, можешь скинуть мне исходник вплоть до 18 кб и я его сожму

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
13 часа назад, rootmaster сказал:

хорошое решения, поддерживаю, вот вопрос тебе нужна поддержка lua 5.2? если нет, можешь скинуть мне исходник вплоть до 18 кб и я его сожму

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

LZSS пробовал в чистом виде?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
46 минут назад, KeyTwoZero сказал:

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

ну ок

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1092384101_.png.5ff08076982c939ac7beddff50644a05.png

Произошло глобальное обновление

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
18 часов назад, rootmaster сказал:

ну ок

Как вам обновление?))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
43 минуты назад, KeyTwoZero сказал:

Как вам обновление?))

не смотрел, пока что не нашел команду для установки, сейчас найду и посмотрю

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
53 минуты назад, KeyTwoZero сказал:

Как вам обновление?

Мне кажется, на экран ошибки стоило бы выводить, с какого диска велась загрузка. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
58 минут назад, KeyTwoZero сказал:

Как вам обновление?))

посмотрел, честно, не очень
1) зачем записывать загрузочный адрес в eeprom-data?

2) не удобно тянуться к f клавишам

3) зачем возможность удалить getBootAddress?

4) почему ты настройки в разделе кода eeprom а не в специально для этого предназначеным eeprom-data(парсер пишется очень просто)?

5) почему после краша ос ты даёшь возможно выйти и загрузиться в другую ос без reboot? если одна ос что-то в _ENV наменяет а потом крашнеться. юзер может загрузиться заново?

6) если загрузочный диск ровно один не дает зайти в меню и что-то там сделать

7) галочки слишком маленькие

 

так я немного разобрался и понял что ты даёшь возможность настроить установку data и getBootAddress. ну если уж и считаеш(я считаю иначе, getBootAddress для получения загрузочьного адреса, getData для получения данных eeprom в которых может быть много данных(в одном их моих биосов имя которого придеться умолчать, там около 10-ти блоков данных)) getBootAddress рудиментами, то ты можешь записывать настройки опять в eeprom

 

стрелки советую сделать кликабельными, галки тоже

Изменено пользователем rootmaster

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, rootmaster сказал:

посмотрел, честно, не очень
1) зачем записывать загрузочный адрес в eeprom-data?

2) не удобно тянуться к f клавишам

3) зачем возможность удалить getBootAddress?

4) почему ты настройки в разделе кода eeprom а не в специально для этого предназначеным eeprom-data(парсер пишется очень просто)?

5) почему после краша ос ты даёшь возможно выйти и загрузиться в другую ос без reboot? если одна ос что-то в _ENV наменяет а потом крашнеться. юзер может загрузиться заново?

6) если загрузочный диск ровно один не дает зайти в меню и что-то там сделать

7) галочки слишком маленькие

 

так я немного разобрался и понял что ты даёшь возможность настроить установку data и getBootAddress. ну если уж и считаеш(я считаю иначе, getBootAddress для получения загрузочьного адреса, getData для получения данных eeprom в которых может быть много данных(в одном их моих биосов имя которого придеться умолчать, там около 10-ти блоков данных)) getBootAddress рудиментами, то ты можешь записывать настройки опять в eeprom

 

стрелки советую сделать кликабельными, галки тоже

Обновил:

  • Обозначения функций (Галочки и пустые квадраты) теперь являются большими галочками и перекрестиями
  • Пофиксил баг с _ENV, вот за то, что напомнили - спасибо, не заметил сразу
  • Теперь всегда загружается меню, даже если устройство одно (Как по мне - лучше вренуть как было, ибо если часто пользоваться какой-то одной ОС - пальцы устанут каждый раз дополнительно нажимать ENTER)

С остальным решил ничего не менять, ибо устал... Пытаться запихнуть столько всего в жалкие 4096 символов - очень утомляет.

Интерфейс, как по мне - для клавиатуры и так норм, запускать всякие терминальные ОС сойдёт, а делать его ещё и кликабельным - это вообще жесть, без сжатия не обойтись, и то не факт, что реализация сжатия не будет больше, чем выигрыш от него. (Потому что данные в минимизированном коде почти равномерные, если не считать всяких local, function и end)

Но, может - когда-нибудь попробую и с сжатием...

 

А говоря о конфиге, который хранится в самом коде - это лучшее, что я мог придумать, ибо операционные системы могут запросто стереть оттуда конфиг, да и они могут быть не готовы к такому повороту жизни, как "UID-устройства ХОБА ПОЛУЧИ ДВА ЧИСЛА".

Пускай уж пользователь сам настроит под себя и свои ситуации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...