C'est cet éditeur.

Quelques informations supplémentaires sur: https://github.com/bisqwit/compiler_series/tree/master/ep1/dostools
Il s'agit d'un éditeur de programmation pour les environnements DOS. Plus précisément, c'est quelque chose qui ressemble à un éditeur de programmation pour les environnements DOS.
Fourni strictement tel quel, avec un léger avertissement que vous ne voulez vraiment pas utiliser cet éditeur. Sérieusement. Cela ne vous fera pas de bien. Obtenez un vrai éditeur (https://joe-editor.sourceforge.io/) à la place. Vous pouvez le faire paraître à peu près identique, et si vous voulez qu'un gardien de fenêtre l'accompagne, obtenez par exemple MacOPix.
Je suis producteur vidéo sur YouTube. Je fais des vidéos de programmation mettant en vedette des sujets divers, des jeux Snake aux moteurs 3D.

J'utilise normalement Joe à tous mes objectifs d'édition - que ce soit la programmation ou autrement. Il s'agit d'un éditeur basé sur un terminal, donc je l'exécute dans xterm. Oui, même sous Windows.

Mais en 2010 environ, quand j'ai commencé à faire ces vidéos, j'avais un matériel trop lent pour faire tout type d'enregistrement de bureau en temps réel. Cette situation a persisté jusqu'en 2016. Cependant, Dosbox contient un environnement simulé complet avec un enregistreur vidéo intégré qui fonctionne parfaitement quel que soit le type d'ordinateur sur lequel vous l'exécutez. J'ai donc dû utiliser Dosbox. Soit dit en passant, DOS était déjà une plate-forme très familière pour moi.
Mon éditeur n'a été écrit que parce que Joe n'a pas pu être compilé pour DOS.
Il y avait d'autres éditeurs de couleur syntaxe pour DOS, et je voulais en fait et j'ai utilisé Borland C ++ 3.1 IDE pour certaines de mes vidéos précédentes.

Mais ensuite, je voulais faire une vidéo avec un écran plus large, et malgré mes meilleurs efforts, je ne pouvais pas avoir un binaire Borland C ++ pour coopérer parfaitement avec des écrans qui ont une autre largeur que 80 caractères. J'ai donc été acculé et je n'avais pas d'autre choix que de faire mon propre éditeur. Je ne me souviens plus comment utiliser Turbo Vision, et je ne pouvais pas me soucier d'étudier, alors j'ai écrit entièrement l'éditeur à partir de zéro.
J'ai écrit l'éditeur pour DOS 16 bits parce que je pensais qu'il y aurait des problèmes importants à essayer de mélanger des rappels d'interruption 16 bits avec un code en mode protégé 32 bits. De plus, je ne pense pas que je savais à l'époque, que DJGPP a été aussi modernisé que cela. Si c'était même. J'ai donc utilisé Borland C ++ 3.1.
Ce compilateur de Borland a été créé avant que C ++ ne soit standardisé, et cela m'a obligé à faire de nombreux sacrifices sur le style / la raison dans le code source. Par exemple, il ne prenait pas en charge les espaces de noms ou les modèles. Pas de STL! En tant que tel, le code n'est pas représentatif de bonnes pratiques de programmation pour la programmation C ++, pas par un long coup.
Soit dit en passant, car il est 16 bits, il a également de sérieuses limites de mémoire et d'autres bogues qui y sont associés. Finalement, cela m'a forcé à le porter pour DJGPP 32 bits malgré mes craintes initiales. J'ai terminé ce port le 2018-01-12 en quelques heures seulement (hein, peut-être que le style de codage n'était pas si mal après tout). Il peut être trouvé dans le répertoire 32 bits. Notez que malgré ce port DJGPP compilé sur GCC 7.2.0 très moderne avec la prise en charge de C ++ 17, la base de code est toujours presque exactement la même que la version Borland C ++.
Avez-vous manqué la partie où j'ai averti que vous ne vouliez vraiment pas utiliser cet éditeur? Tu as fait? D'accord. L'éditeur utilise la plupart des mêmes entrées que Joe, mon éditeur préféré. Vous pouvez trouver la liste des clés dans le doc/ sous-répertoire.
Il représente le tampon d'éditeur comme un vecteur de lignes. Chaque ligne est un vecteur d'un type d'élément qui code à la fois le caractère et son attribut de couleur actuel. Cet attribut de couleur était un octet d'attribut 8 bits compatible VGA, mais dans Commits 7321F15A et 05EAF3C7, j'ai ajouté la prise en charge des attributs de couleur étendue compatibles XTerm-256 Cela nécessite un support spécial de Dosbox.
La mise en évidence de la syntaxe fonctionne sur une machine d'état modélisée après le moteur de mise en évidence de la syntaxe dans Joe. En fait, cet éditeur utilise exactement les mêmes fichiers JSF pour configurer la mise en évidence de la syntaxe comme Joe. Vous pouvez en savoir plus sur le système JSF dans les fichiers JSF fournis avec Joe.
La mise en évidence de la syntaxe est appliquée en temps réel à l'aide d'un rappel virtuel qui prend en charge deux options: obtenir le caractère suivant et recolor une section précédente à l'aide d'un attribut de sélection. Le fichier de code source est analysé en continu du début à la fin jusqu'à ce que tout soit analysé au moins une fois depuis la dernière mise à jour.
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)
Ce mot d'attribut est stocké dans le RAM vidéo de telle manière, que les 16 premiers bits entrent dans la page en B800: 0000, mais les 16 meilleurs bits vont simultanément sur la page de B000: 0000. Dosbox a été spécifiquement modifié pour tenir compte de ces données et les rendre correctement. Le doublement du bit d'attribut est là pour éviter les faux positifs.
Caractéristiques SGR des codes ANSI qui ne sont pas encore pris en charge:
Selon ce graphique: 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
Les valeurs spécifiques sont:
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]); }
Dans les modes 8x16, 8x14 et 8x8 (et 9x16, 9x14, 9x8), la police est tout ce que l'ordinateur hôte VGA BIOS a dedans. L'éditeur n'a pas de police pour ces modes. On suppose qu'il y a une police. Cette hypothèse est vraie.
Dans les modes 8x15, 8x10, 8x12, 4x8, 8x19 et 8x32, l'éditeur fournit sa propre police qui est principalement créée algorithmiquement à partir de la police IBM PC standard par up / réduction. Vous pouvez trouver ces polices dans les fichiers .inc dans ce référentiel. Non, ce ne sont pas des fichiers de police Windows. Ce n'est pas un programme Windows pour commencer.
Les informations sur la température sont la saveur. C'est un texte codé en dur dans l'éditeur. Aucune mesure automatique n'est effectuée.
L'éditeur mesure périodiquement la vitesse du processeur pendant son fonctionnement. Si vous exécutez dans Dosbox, il modifie également constamment la vitesse du CPU. La vitesse du processeur est étranglée en fonction du temps qu'il faut pour que la syntaxe mette en évidence après une modification.
Le Mario L'animation de personne en haut utilise le même principe que les outils Norton utilisés sur DOS afin de rendre un curseur de souris graphique en mode texte.

Il lit la police pour les personnages qui sont actuellement sous Mario personne, traite ces personnages comme des bitmaps, ajoute Mario personne en eux, puis installe les caractères modifiés dans la police et remplace les index de caractères à l'écran à cet endroit pour se référer aux caractères modifiés.
Pour construire pour DOS 16 bits, lancez Dosbox et utilisez make.bat . Vous devrez peut-être modifier les chemins dans make.bat d'abord.
Cela nécessite que les programmes suivants existent:
Pour construire pour DOS 32 bits, ouvrez un terminal dans Linux, accédez au sous-répertoire 32bit et exécutez make . Vous aurez besoin du DJGPP installé, et vous avez également besoin make bien sûr.
Pour installer DJGPP sur Debian, téléchargez à partir d'un miroir DJGPP, tel que ftp://ftp.fu-berlin.de/pc/languages/djgpp/rpms/, les packages suivants: djcrx-(someversion).rpm djcross-binutils-(someversion).rpm djcross-gcc-(someversion).rpm . djcross-gcc-c++-(someversion).rpm .
Puis exécuter fakeroot alien dj*.rpm et dpkg -i dj*.deb .
Exemple (dans un format suffisamment minuscule pour s'adapter à un tweet de 280 caractères):
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
Les programmes DJGPP nécessitent un extenseur DOS 32 bits (interface en mode protégé DOS, DPMI) pour s'exécuter. Un exemple de pilote DPMI (hdpmi32) peut être téléchargé à partir de https://sourceforge.net/projects/hx-dos/files/, tel que: https://sourceforge.net/projects/hx-dos/files/2.17/hxrt217.7z/download
En 2018-10-28, l'éditeur peut également être compilé sur Linux. (64 bits c'est bien.) Accédez au sous-répertoire 32bit et exécutez make e . Vous aurez besoin de la bibliothèque SDL2 installée avec des en-têtes de développement.
Notez les avertissements habituels. Cet éditeur n'est pas censé être utilisé par les humains.
Mises en garde:
Désolé!
Pièces de réglage minces en papier. C'est essentiellement Hollywood.
Eh bien, pour être honnête, l'éditeur prend en charge quatre curseurs simultanés, complexe Full UNDO + Redo… mais les tests et le développement sont dirigés par mes productions vidéo. Après tout, je n'utilise que cet éditeur pour les vidéos. Et dans ces vidéos, je n'ai besoin que d'un ensemble de fonctionnalités très basique. Regardez le répertoire doc/ pour plus de détails.
Encore une fois, je rappelle que cet éditeur n'a pas été conçu pour être utilisé par les gens. Il a été conçu pour sembler être utilisé par les gens.