É aquele editor.

Mais algumas informações em: https://github.com/bisqwit/compiler_series/tree/master/ep1/dostools
É um editor de programação para ambientes DOS. Mais especificamente, é algo que parece um editor de programação para ambientes DOS.
Forneceu estritamente como está, com um aviso leve de que você realmente não deseja usar este editor. Seriamente. Não fará nada com você. Obtenha um editor real (https://joe-editor.sourceforge.io/). Você pode fazer com que pareça praticamente idêntico e, se deseja que uma babá de janela acompanhe, obtenha o EG MacOpix.
Eu sou um produtor de vídeo no YouTube. Eu faço vídeos de programação com tópicos diversos, desde jogos de cobra até motores 3D.

Normalmente, uso Joe para todos os meus fins de edição - seja programando ou não. É um editor baseado em terminal, então eu o executo no Xterm. Sim, mesmo sob o Windows.

Mas, em 2010, quando comecei a fazer esses vídeos, eu tinha hardware muito lento para fazer qualquer tipo de gravação de desktop em tempo real. Essa situação persistiu até 2016. No entanto, o Dosbox contém um ambiente simulado completo com um gravador de vídeo embutido que funciona perfeitamente, independentemente do tipo de computador em que você o execute. Então eu tive que usar o DOSBOX. Aliás, o DOS já era uma plataforma muito familiar para mim.
Meu editor foi escrito apenas porque Joe não pôde ser compilado para o DOS.
Havia outros editores de coloração de sintaxe para o DOS, e eu realmente queria e usei o Borland C ++ 3.1 IDE para alguns dos meus vídeos anteriores.

Mas então eu queria fazer um vídeo com uma tela mais ampla e, apesar dos meus melhores esforços, não pude pular Borland C ++ para cooperar perfeitamente com telas com outra largura com 80 caracteres. Então eu estava encurralado e não tinha escolha a não ser fazer meu próprio editor. Eu não conseguia mais me lembrar de como usar o Turbo Vision, e não podia me preocupar em estudar, então escrevi o editor completamente do zero.
Escrevi o editor para o DOS de 16 bits porque pensei que haveria problemas significativos tentando misturar retornos de chamada de interrupção de 16 bits com código de modo protegido de 32 bits. Também acho que não sabia que naquela época, que o DJGPP foi tão modernizado quanto realmente. Se fosse até. Então eu usei Borland C ++ 3.1.
Este compilador de Borland foi criado antes que o C ++ fosse padronizado, e exigia que eu fizesse muitos sacrifícios sobre estilo / sanidade no código -fonte. Por exemplo, ele não suportou namespaces ou modelos. Sem stl! Como tal, o código não é representativo de boas práticas de programação para a programação de C ++, não por um tiro escuro.
Aliás, por ser de 16 bits, também possui limites graves de memória e outros bugs associados a ele. Eventualmente, isso me forçou a portá-lo para DJGPP de 32 bits, apesar dos meus medos iniciais. Concluí esta porta em 2018-01-12 em apenas algumas horas (não é tão ruim assim que não foi tão ruim assim). Pode ser encontrado no diretório de 32 bits. Observe que, apesar dessa porta DJGPP ser compilada no GCC 7.2.0 muito moderno com suporte para C ++ 17, a base de código ainda é quase exatamente a mesma da versão Borland C ++.
Você perdeu a parte em que avisei que realmente não quer usar este editor? Você fez? OK. O editor usa a maioria das mesmas entradas que Joe, meu editor favorito. Você pode encontrar a lista de pedidos de chave no doc/ subdiretório.
Representa o buffer do editor como um vetor de linhas. Cada linha é um vetor de um tipo de elemento que codifica o personagem e seu atributo de cor atual. Esse atributo de cor costumava ser um byte de atributo compatível com VGA, mas, no cometm 7321f15a e 05eaf3c7, adicionei suporte para atributos de cores estendidos compatíveis com Xterm-256Color, que duplicaram incidentalmente o uso da memória do editor. Isso requer suporte especial do DOSBox.
O destaque da sintaxe opera em uma máquina de estado modelada após o mecanismo de destaque da sintaxe em Joe. De fato, este editor usa exatamente os mesmos arquivos JSF para configurar o destaque da sintaxe que Joe. Você pode aprender mais sobre o sistema JSF nos arquivos JSF que acompanham Joe.
O destaque da sintaxe é aplicado em tempo real, usando um retorno de chamada virtual que suporta duas opções: obtenha o próximo caractere e recolore alguma seção anterior usando um atributo selecion. O arquivo de código -fonte é digitalizado continuamente do começo ao fim até que tudo seja digitalizado pelo menos uma vez desde a última atualização.
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)
Essa palavra de atributo é armazenada na RAM de vídeo dessa maneira, que os 16 primeiros bits entram na página em B800: 0000, mas os 16 melhores bits vão simultaneamente para a página em B000: 0000. O DOSBox foi modificado especificamente para explicar esses dados e renderizá -los corretamente. A duplicação do bit de atributo está lá para evitar falsos positivos.
Recursos de SGR dos códigos ANSI que ainda não foram suportados:
De acordo com 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
Os valores específicos são:
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]); }
Nos modos 8x16, 8x14 e 8x8 (e 9x16, 9x14, 9x8), a fonte é o que o computador host vga BIOS tem nele. O editor não possui uma fonte para esses modos. Supõe -se que exista uma fonte. Essa suposição é verdadeira.
Em modos 8x15, 8x10, 8x12, 4x8, 8x19 e 8x32, o editor fornece sua própria fonte, que é criada principalmente algoritmicamente a partir da fonte PC IBM padrão por escala para cima/downcaling. Você pode encontrar essas fontes nos arquivos .inc neste repositório. Não, esses não são arquivos de font Windows. Este não é um programa do Windows para começar.
As informações de temperatura são sabor. É texto codificado no editor. Nenhuma medição automática é realizada.
O editor mede a velocidade da CPU periodicamente enquanto executa. Se executado no DOSBox, também altera a velocidade da CPU constantemente. A velocidade da CPU é acelerada, dependendo de quanto tempo leva para o destaque da sintaxe terminar após uma edição.
O Mario A animação pessoal no topo usa o mesmo princípio que as ferramentas Norton usadas no DOS para renderizar um cursor gráfico de mouse no modo de texto.

Ele lê a fonte para os personagens que estão atualmente em Mario pessoa, trata esses personagens como bitmaps, adiciona Mario pessoa neles e instala os caracteres modificados na fonte e substitui os índices de caracteres na tela nesse local para se referir aos caracteres modificados.
Para construir para o DOS de 16 bits, lance o DOSBOX e use make.bat . Pode ser necessário editar os caminhos em make.bat primeiro.
Isso requer que os seguintes programas existam:
Para construir para o DOS de 32 bits, abra um terminal no Linux, vá para o subdiretório 32bit e make . Você precisará do DJGPP instalado e é claro que também precisa make .
To install DJGPP on Debian, download from a DJGPP mirror, such as ftp://ftp.fu-berlin.de/pc/languages/djgpp/rpms/, the following packages: djcrx-(someversion).rpm , djcross-binutils-(someversion).rpm , djcross-gcc-(someversion).rpm , and djcross-gcc-c++-(someversion).rpm .
E depois execute fakeroot alien dj*.rpm e dpkg -i dj*.deb .
Exemplo (em um formato minúsculo o suficiente para caber em um 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
Os programas DJGPP exigem um Extender DOS de 32 bits (interface do modo protegido do DOS, DPMI) para ser executado. Um exemplo de driver DPMI (hdpmi32) pode ser baixado em https://sourceforge.net/projects/hx-dos/files/, como: https://sourceforge.net/projects/hx-dos/files/files/files/hxrt217.7zrowners/hx-dos/files/files/20wown/hxrt217.7zrowners/hx-dos/files/files/20wown/hxrt217.7zrowr/net/Projects/hx/files/files/files/hxwrown
A partir de 2018-10-28, o editor também pode ser compilado no Linux. (64 bits é bom.) Vá para o subdiretório 32bit e corra make e . Você precisará da biblioteca SDL2 instalada com cabeçalhos de desenvolvimento.
Observe as isenções de responsabilidade usuais. Este editor não deve ser usado por humanos.
Advertências:
Desculpe!
Peças de conjunto de papel. É basicamente Hollywood.
Bem, para ser sincero, o editor suporta quatro cursores simultâneos, desfazer+refazer… mas testes e desenvolvimento são direcionados pelas minhas produções de vídeo. Afinal, eu só uso este editor para os vídeos. E nesses vídeos, eu só preciso de um conjunto muito básico de recursos. Veja o doc/ Diretório para obter detalhes.
Mais uma vez, lembro que este editor não foi projetado para ser usado pelas pessoas. Foi projetado para parecer que está sendo usado pelas pessoas.