Это тот редактор.

Дополнительная информация по адресу: https://github.com/bisqwit/compiler_series/tree/master/ep1/dostools
Это редактор программирования для среды DOS. Более конкретно, это то, что выглядит как редактор программирования для среды DOS.
Предоставлено строго как есть, с мягким предупреждением, что вы действительно не хотите использовать этот редактор. Серьезно. Это не принесет вам пользы. Получите настоящего редактора (https://joe-editor.sourceforge.io/) вместо этого. Вы можете заставить его выглядеть в значительной степени идентично, и если вы хотите, чтобы у окна няня была с ним, получите EG Macopix.
Я продюсер видео на YouTube. Я делаю программирование видео с различными темами от игр Snake до 3D -двигателей.

Я обычно использую Джо для всех своих целей редактирования - будь то программирование или иное. Это редактор на основе терминала, поэтому я запускаю его на XERM. Да, даже под окнами.

Но в 2010 году, когда я начал делать эти видео, у меня было слишком медленное оборудование, чтобы делать какую -либо запись на рабочем столе в режиме реального времени. Эта ситуация сохранялась до 2016 года. Однако Dosbox содержит полнофункциональную моделируемую среду со встроенным видеоконером, который отлично работает независимо от того, на каком компьютере вы его запускаете. Поэтому мне пришлось использовать Dosbox. Кстати, DOS уже была для меня очень знакомой платформой.
Мой редактор был написан только потому, что Джо не мог быть составлен для DOS.
Были другие редакторы синтаксиса для DOS, и я на самом деле хотел и использовал Borland C ++ 3.1 IDE для некоторых из моих предыдущих видео.

Но потом я хотел снять видео с более широким экраном, и, несмотря на все мои усилия, я не смог бинарного патча Borland C ++, чтобы идеально сотрудничать с экранами, которые имеют другую ширину, чем 80 символов. Так что я был загнан в угол и не имел выбора, кроме как сделать моего собственного редактора. Я больше не мог вспомнить, как использовать Turbo Vision, и я не мог учиться, поэтому я написал редактор полностью с нуля.
Я написал редактор для 16-битной DOS, потому что я думал, что будут существенные проблемы, пытающиеся смешать 16-битные обратные вызовы с 32-разрядным кодом защищенного режима. Также я не думаю, что тогда знал, что DJGPP был настолько модернизирован, как и на самом деле. Если это было даже было. Поэтому я использовал Borland C ++ 3.1.
Этот компилятор Borland был создан до того, как C ++ был стандартизирован, и мне потребовалось много жертв в отношении стиля / здравомыслия в исходном коде. Например, он не поддерживал пространства имен или шаблоны. Нет! Таким образом, код не является репрезентативным для хороших методов программирования для программирования C ++, а не длинным выстрелом.
Кстати, поскольку он 16-битный, он также имеет серьезные ограничения памяти и другие ошибки, связанные с ним. В конце концов это заставило меня перенести его на 32-битный DJGPP, несмотря на мои первоначальные опасения. Я завершил этот порт на 2018-01-12 всего за пару часов (да, может быть, стиль кодирования был не так уж и плох). Его можно найти в 32 -битном каталоге. Обратите внимание, что, несмотря на то, что этот порт DJGPP был составлен на очень современном GCC 7.2.0 с поддержкой C ++ 17, кодовая база по -прежнему почти точно такой же, как версия Borland C ++.
Вы упустили ту часть, где я предупредил, что вы действительно не хотите использовать этот редактор? Ты сделал? Хорошо. Редактор использует большинство тех же входов, что и Джо, мой любимый редактор. Вы можете найти список ключевых связей в doc/ Subercectory.
Он представляет буфер редактора как вектор линий. Каждая строка представляет собой вектор типа элемента, который кодирует как символ, так и его текущий цветный атрибут. Этот цветный атрибут использовался, был VGA-совместимый 8-битный байт атрибута, но в Commits 7321F15A и 05eaf3c7 я добавил поддержку для атрибутов, совместимых с расширенным цветом, составляющим XERM-256 COLOR, которые, скорее всего, удвоили использование памяти редактора. Это требует специальной поддержки от Dosbox.
Синтаксическое выделение работает на состоянии состояния, которая моделируется после синтаксиса, выделяющего двигатель в Джо. Фактически, этот редактор использует точно такие же файлы JSF для настройки синтаксиса, что и Джо. Вы можете узнать больше о системе JSF в файлах JSF, которые поставляются с Джо.
Синтаксическое выделение применяется в режиме реального времени с использованием виртуального обратного вызова, который поддерживает два варианта: Получить следующий символ и Recolor некоторый предыдущий раздел, используя атрибут SELECT. Файл исходного кода постоянно сканируется от начала до конца, пока все не будет отсканировано хотя бы один раз с момента последнего обновления.
1615 1211 8 0
+-+---+-+---+--------+
|B|bbb|I|fff|cccccccc|
+-+---+-+---+--------+
B = blink
bbb = background color (0-7)
I = high-intensity
fff = foreground color (0-7)
ccc = character code (0-255)
With extended attribute (requires patched DOSBox):
323130292827262524 1615 8 0
+-+-+-+-+-+-+-+-+--------+-+-------+--------+
|1|f|B|v|o|i|d|u|bbbbbbbb|1|fffffff|cccccccc|
+-+-+-+-+-+-+-+-+--------+-+-------+--------+
1 = Extended attribute flag
fff = foreground color (0-255); note MSB is stored separately
B = blink
v = inverse
o = bold
i = italic
d = dim
u = underline
bbb = background color (0-255)
ccc = character code (0-255)
Without extended attribute (compatible with any DOS system):
32 1615 12 8 0
+----------------+-+---+----+--------+
|0000000000000000|B|bbb|ffff|cccccccc|
+----------------+-+---+----+--------+
B = blink
bbb = background color (0-7)
fff = foreground color (0-15)
ccc = character code (0-255)
Это слово атрибута хранится в видео оперативной памяти таким образом, что первые 16 бит попадают на страницу по адресу B800: 0000, но 16 лучших битов идут одновременно на страницу на B000: 0000. Dosbox был специально модифицирован для учета этих данных и для правильного отображения. Удвоение бита атрибута существует, чтобы избежать ложных срабатываний.
Функции SGR кодов ANSI, которые еще не поддерживаются:
Согласно этой таблице: https://en.wikipedia.org/wiki/ansi_escape_code#8-bit
0=Black 1=Red 2=Green 3=Yellow/Brown
4=Blue 5=Magenta 6=Cyan 7=White/Light gray
8-15 = High-intensity versions of 0-7 (where 15=white)
16-231 = 6x6x6 RGB cube
232-255 = Gray ramp
Конкретные значения:
static unsigned xterm256table[256] =
{ Make(0,0,0), Make(21,0,0), Make(0,21,0), Make(21,5,0),
Make(0,0,21), Make(21,0,21), Make(0,21,21), Make(21,21,21),
Make(7,7,7), Make(31,5,5), Make(5,31,5), Make(31,31,5),
Make(5,5,31), Make(31,5,31), Make(5,31,31), Make(31,31,31) };
static const unsigned char grayramp[24] = { 1,2,3,5,6,7,8,9,11,12,13,14,16,17,18,19,20,22,23,24,25,27,28,29 };
static const unsigned char colorramp[6] = { 0,12,16,21,26,31 };
for(unsigned n=0; n<216; ++n) { xterm256table[16+n] = Make(colorramp[(n/36)%6], colorramp[(n/6)%6], colorramp[(n)%6]); }
for(unsigned n=0; n<24; ++n) { xterm256table[232+n] = Make(grayramp[n],grayramp[n],grayramp[n]); }
В режимах 8x16, 8x14 и 8x8 (и 9x16, 9x14, 9x8) шрифт - это то, что имеет в нем Computer Computer Bios. У редактора нет шрифта для этих режимов. Предполагается, что есть шрифт . Это предположение верно.
В режимах 8x15, 8x10, 8x12, 4x8, 8x19 и 8x32, редактор поставляет свой собственный шрифт, который в основном создается алгоритмически из стандартного шрифта IBM PC с помощью инициатива. Вы можете найти эти шрифты в файлах .inc в этом репозитории. Нет, это не файлы шрифтов Windows. Это не программа Windows для начала.
Информация о температуре - вкус. Это твердый текст в редакторе. Автоматическое измерение не выполняется.
Редактор периодически измеряет скорость процессора во время работы. Если запустить в Dosbox, это также постоянно меняет скорость процессора. Скорость процессора дроссель в зависимости от того, сколько времени требуется для выделения синтаксиса, чтобы закончить после редактирования.
А Марио Анимация человека вверху использует тот же принцип, что и инструменты Norton, используемые на DOS, чтобы отобрать графический курсор мыши в текстовом режиме.

Он читает шрифт для тех персонажей, которые в настоящее время находятся под Марио человек, рассматривает эти персонажи как растровые карты, добавляет Марио Человек в них, а затем устанавливает модифицированные символы в шрифте и заменяет индексы символов на экране в этом месте, чтобы ссылаться на модифицированные символы.
Чтобы построить 16-битную DOS, запустите Dosbox и используйте make.bat . Возможно, вам понадобится редактировать пути в make.bat в первую очередь.
Это требует существования следующих программ:
Чтобы построить 32-битную DOS, откройте терминал в Linux, перейдите в 32bit подкаталог и make . Вам понадобится установлен DJGPP, и вам, конечно, нужно make .
Чтобы установить DJGPP на Debian, загрузите из зеркала DJGPP, например, ftp://ftp.fu-berlin.de/pc/languages/djgpp/rpms/, следующие пакеты: djcrx-(someversion).rpm djcross-binutils-(someversion).rpm djcross-gcc-(someversion).rpm . djcross-gcc-c++-(someversion).rpm .
А затем запустите fakeroot alien dj*.rpm и dpkg -i dj*.deb .
Пример (в формате, достаточно крошечный, чтобы соответствовать 280 твиту персонажа):
sudo apt-get install fakeroot alien wget make
wget -c http://mirrors.fe.up.pt/pub/djgpp/rpms/djcr{oss-{binutils-2.29.1,gcc-7.3.0/djcross-gcc-{,{c++,info,tools}-}7.3.0}-1ap,x-2.05-5}.x86_64.rpm
fakeroot alien dj*.rpm
sudo dpkg -i dj*.deb
Программы DJGPP требуют 32-разрядного DOS Extender (интерфейс DOS Protected Mode, DPMI) для работы. Пример драйвера DPMI (HDPMI32) может быть загружен с https://sourceforge.net/projects/hx-dos/files/, например: https://sourceforge.net/projects/hx-dos/files/2.17/hxrt217.7z/download
По состоянию на 2018-10-28 редактор также может быть составлен на Linux. make e 32bit -разрядная часть. Вам понадобится библиотека SDL2, установленная с заголовками разработки.
Обратите внимание на обычные отказы от ответственности. Этот редактор не предназначен для использования людьми.
Предостережения:
Извини!
Тонкие бумажные кусочки. Это в основном Голливуд.
Что ж, если честно, редактор поддерживает четыре одновременных курсора, полное отмену+redo ... но тестирование и разработка направлены моими видеопроизводствами. В конце концов, я только когда -либо использую этот редактор для видео. И в этих видео мне нужен только очень базовый набор функций. Посмотрите на doc/ каталог для деталей.
Я снова напоминаю, что этот редактор не был предназначен для использования людьми. Он был разработан, чтобы выглядеть так, как будто это используется людьми.