Es ese editor.

Una información más en: https://github.com/bisqwit/compiler_series/tree/master/ep1/dostools
Es un editor de programación para entornos DOS. Más específicamente, es algo que parece un editor de programación para entornos DOS.
Proporcionado estrictamente tal cual, con una leve advertencia de que realmente no desea usar este editor. En serio. No te hará bien. Obtenga un editor real (https://joe-editor.sourceforge.io/) en su lugar. Puede hacer que se vea bastante idéntico, y si desea que una cuidadora de ventana lo acompañe, consigue, por ejemplo, Macopix.
Soy productor de video en YouTube. Hago videos de programación con diversos temas desde juegos de serpientes hasta motores 3D.

Normalmente uso a Joe para todos mis propósitos de edición, ya sea programación o no. Es un editor basado en la terminal, por lo que lo ejecuto en xterm. Sí, incluso debajo de las ventanas.

Pero en 2010 más o menos, cuando comencé a hacer estos videos, tenía hardware demasiado lento para hacer cualquier tipo de grabación de escritorio en tiempo real. Esta situación persistió hasta 2016. Sin embargo, Dosbox contiene un entorno simulado con todas las funciones con una grabadora de video incorporada que funciona perfectamente, independientemente del tipo de computadora en la que la ejecute. Así que tuve que usar dosbox. Por cierto, Dos ya era una plataforma muy familiar para mí.
Mi editor fue escrito solo porque Joe no pudo ser compilado para DOS.
Hubo otros editores de color de sintaxis para DOS, y en realidad quería y usé Borland C ++ 3.1 IDE para algunos de mis videos anteriores.

Pero luego quería hacer un video con una pantalla más amplia, y a pesar de mis mejores esfuerzos, no pude parar binaria Borland C ++ para cooperar perfectamente con pantallas que tienen otro ancho de 80 caracteres. Así que estaba acorralado y no tuve más remedio que hacer mi propio editor. Ya no podía recordar cómo usar turbo visión, y no podía molestarme en estudiar, así que escribí al editor completamente desde cero.
Escribí el editor para DOS de 16 bits porque pensé que habría problemas significativos tratando de mezclar devoluciones de llamada de interrupción de 16 bits con código de modo protegido de 32 bits. Además, no creo que supiera en ese entonces que DJGPP ha sido tan modernizado como lo ha hecho. Si lo fuera. Entonces usé Borland C ++ 3.1.
Este compilador de Borland se creó antes de que C ++ se estandarizara, y me requirió hacer muchos sacrificios sobre el estilo / cordura en el código fuente. Por ejemplo, no admitió espacios de nombres o plantillas. ¡No STL! Como tal, el código no es representativo de buenas prácticas de programación para la programación de C ++, no por un tiro largo.
Por cierto, debido a que tiene 16 bits, también tiene límites de memoria graves y otros errores asociados con él. Finalmente, esto me obligó a portarlo por DJGPP de 32 bits a pesar de mis miedos iniciales. Completé este puerto el 2018-01-12 en solo un par de horas (eh, tal vez el estilo de codificación no era tan malo después de todo). Se puede encontrar en el directorio de 32 bits. Tenga en cuenta que a pesar de que este puerto DJGPP se compila en GCC 7.2.0 muy moderno con soporte para C ++ 17, la base de código sigue siendo casi exactamente la misma que la versión Borland C ++.
¿Te perdiste la parte en la que advertí que realmente no quieres usar este editor? Lo hiciste? De acuerdo. El editor usa la mayoría de las mismas entradas que Joe, mi editor favorito. Puede encontrar la lista de keybindings en el doc/ subdirectorio.
Representa el búfer editor como un vector de líneas. Cada línea es un vector de un tipo de elemento que codifica tanto el carácter como su atributo de color actual. Este atributo de color solía ser un byte de atributo de 8 bits compatible con VGA, pero en Commits 7321F15A y 05AFT3C7, agregué soporte para los atributos de color extendidos compatibles con XterM-256Color, que incidentalmente duplicó el uso de memoria del editor. Esto requiere un soporte especial de Dosbox.
La resaltura de sintaxis funciona en una máquina de estado que se modela después del motor de resaltado de sintaxis en Joe. De hecho, este editor usa exactamente los mismos archivos JSF para configurar la sintaxis resaltando como lo hace Joe. Puede obtener más información sobre el sistema JSF en los archivos JSF que vienen con Joe.
La resaltura de sintaxis se aplica en tiempo real utilizando una devolución de llamada virtual que admite dos opciones: obtener el siguiente carácter y recolorar alguna sección anterior utilizando un atributo seleccionado. El archivo del código fuente se escanea continuamente desde el principio hasta el final hasta que todo ha sido escaneado al menos una vez desde la última actualización.
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)
Esta palabra de atributo se almacena en la RAM del video de tal manera, que los primeros 16 bits van a la página en B800: 0000, pero los 16 bits principales van simultáneamente a la página en B000: 0000. Dosbox se modificó específicamente para tener en cuenta estos datos y para representarlo correctamente. La duplicación del bit de atributo está ahí para evitar falsos positivos.
Características SGR de códigos ANSI que aún no son compatibles:
Según este gráfico: 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
Los valores específicos son:
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]); }
En los modos 8x16, 8x14 y 8x8 (y 9x16, 9x14, 9x8), la fuente es lo que sea la computadora de host VGA BIOS. El editor no tiene una fuente para estos modos. Se supone que hay una fuente. Esta suposición es verdadera.
En los modos 8x15, 8x10, 8x12, 4x8, 8x19 y 8x32, el editor suministra su propia fuente que se crea principalmente algorítmicamente a partir de la fuente de PC IBM estándar por escala ascendente/descendente. Puede encontrar estas fuentes en los archivos .inc en este repositorio. No, estos no son archivos de fuentes de Windows. Este no es un programa de Windows para empezar.
La información de temperatura es sabor. Es un texto codificado en el editor. No se realiza una medición automática.
El editor mide la velocidad de la CPU periódicamente mientras se ejecuta. Si se ejecuta en Dosbox, también cambia la velocidad de la CPU constantemente. La velocidad de la CPU está limitada dependiendo de cuánto tiempo tarda la resaltar de sintaxis en terminar después de una edición.
El Mario La animación de la persona en la parte superior utiliza el mismo principio que Norton Tools usó en DOS para representar un cursor gráfico del mouse en modo de texto.

Lee la fuente para aquellos personajes que están actualmente debajo Mario persona, trata esos personajes como mapas de bits, agrega Mario Persona en ellos, y luego instala los caracteres modificados en la fuente y reemplaza los índices de caracteres en la pantalla en ese lugar para referirse a los caracteres modificados.
Para construir para DOS de 16 bits, inicie dosbox y use make.bat . Es posible que deba editar las rutas en make.bat primero.
Esto requiere que existan los siguientes programas:
Para construir para DOS de 32 bits, abra un terminal en Linux, vaya al subdirectorio 32bit y ejecute make . Necesitará el DJGPP instalado y, por supuesto, también necesita make .
Para instalar DJGPP en Debian, descargue desde un espejo djgpp, como ftp://ftp.fu-berlin.de/pc/languages/djgpp/rpms/, los siguientes paquetes: djcrx-(someversion).rpm , djcross-binutils-(someversion).rpm , djcross-gcc-(someversion).rpm . djcross-gcc-c++-(someversion).rpm .
Y luego ejecute fakeroot alien dj*.rpm y dpkg -i dj*.deb .
Ejemplo (en un formato lo suficientemente pequeño como para caber en un tweet de 280 caracteres):
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
Los programas DJGPP requieren un extensor DOS de 32 bits (interfaz de modo DOS protegido, DPMI) para ejecutarse. Un ejemplo de controlador DPMI (HDPMI32) se puede descargar desde https://sourceforge.net/projects/hx-dos/files/, como: https://sourceforge.net/projects/hx-dos/files/2.17/hxrt217.7Z/download
A partir de 2018-10-28, el editor también se puede compilar en Linux. (64 bits está bien.) Vaya al subdirectorio 32bit y ejecute make e . Necesitará la biblioteca SDL2 instalada con encabezados de desarrollo.
Tenga en cuenta las renuncias habituales. Este editor no está destinado a ser utilizado por humanos.
Advertencias:
¡Lo siento!
Piezas de juego delgada del papel. Básicamente es Hollywood.
Bueno, para ser honesto, el editor admite cuatro cursores simultáneos, deshacer completo+rehacer ... pero las pruebas y el desarrollo están dirigidas por mis producciones de video. Después de todo, solo uso este editor para los videos. Y en esos videos, solo necesito un conjunto muy básico de características. Mire el doc/ Directorio para más detalles.
Nuevamente, recuerdo que este editor no fue diseñado para ser utilizado por las personas. Fue diseñado para parecer que está siendo utilizado por personas.