INapGPU: Text-mode graphics card, using only TTL gates
Проект iNapGPU представляет собой текстовый графический адаптер, полностью собранный из TTL-логики без использования микроконтроллеров или ПЛИС. Он выводит изображение в текстовом режиме с разрешением 80x25 символов через VGA, поддерживая 16 цветов переднего плана и фона. Основная идея — демонстрация возможности создания функционального графического вывода с помощью простых дискретных компонентов, что напоминает ранние этапы развития компьютерной техники.
Адаптер генерирует сигналы синхронизации и видеопоток, используя счётчики, ПЗУ для хранения символов и сдвиговые регистры. Интересный факт: вся схема построена на 74-й серии микросхем, что делает проект образовательным примером для понимания низкоуровневых принципов работы графических систем. Такой подход позволяет глубоко изучить аппаратные основы вывода изображения, избегая сложности современных GPU.
Комментарии (11)
- Рекомендации по улучшению стабильности работы: использование более быстрой логики (74LS/HC вместо CD4000) и обязательные блокировочные конденсаторы рядом с каждым чипом.
- Положительные оценки проекта: отмечается его ретро-стиль, "крутость" и то, что мелкие глитчи придают ему характер.
- Ностальгические сравнения с прошлым: проект напоминает старые электронные самоделки и более быструю работу компьютеров в текстовом режиме.
- Обсуждение практического применения: возможность играть в Nethack и поддержка Standard Galactic Alphabet.
- Предположения о причинах проблем: шум и перекрестные помехи из-за монтажа, а также возможная неисправность драйвера дисплея.
My other email client is a daemon
NetHack при сборке с -DMAIL и OPTIONS=mail может уведомлять о новой почте: демон приносит свиток, при чтении запускается MAILREADER.
Я играю в Emacs-версию и не хочу выходить из неё, поэтому настроил связку mu4e ↔ NetHack.
mu хранит письма в maildir, а NetHack ждёт mbox. Проверяем, появились ли письма за последние 5 минут, и «трогаем» файл /tmp/nh.mbox:
import mailbox, pathlib, os
from datetime import datetime, timedelta
MAILDIR = os.path.expanduser("~/Mail/personal/INBOX")
MBOX = "/tmp/nh.mbox"
maildir = mailbox.Maildir(MAILDIR)
for msg in maildir:
if datetime.fromtimestamp(msg.get_date()) > datetime.now() - timedelta(minutes=5):
pathlib.Path(MBOX).touch()
break
maildir.close()
Читаем почту через mu4e:
emacsclient -n --eval "(progn (require 'mu4e) (mu4e-context-switch nil \"Personal\") (mu4e-search-bookmark \"maildir:/personal/INBOX AND flag:unread\"))"
emacsclient запускает уже работающий Emacs, избегая блокировки базы mu.
Комментарии (24)
- Участники восторгаются креативной интеграцией «реального мира» в NetHack через отправку почты прямо из игры.
- Вспомнили опыт Miiverse в Wind Waker Wii U и предложили добавить такую фичу в Civilization.
- Подняли вопрос безопасности: корректно ли роняются привилегии перед вызовом mail-команды; подтвердили, что CVE по этой теме уже были.
- Emacs- и Vim-пользователи поделились советами, как постепенно осваивать Emacs, начиная с одного юз-кейса.
- Обсудили альтернативные roguelikes: Slashem, Dungeon Crawl Stone Soup и RimWorld.