Es ist dieser Herausgeber.

Weitere Informationen unter: https://github.com/bisqwit/compiler_series/tree/master/ep1/dostools
Es ist ein Programmiereditor für DOS -Umgebungen. Insbesondere ist es etwas, das wie ein Programmiereditor für DOS -Umgebungen aussieht .
Vorausgesetzt, es ist streng wie IS, mit einer milden Warnung, dass Sie diesen Editor wirklich nicht verwenden möchten. Ernsthaft. Es wird dir nicht gut tun. Holen Sie sich stattdessen einen echten Editor (https://joe-editor.sourceforge.io/). Sie können dazu bringen, dass es ziemlich identisch aussieht, und wenn Sie möchten, dass ein Fenster -Sitter dazu passt, holen Sie sich EG Macopix.
Ich bin Videoproduzent bei YouTube. Ich mache Programmvideos mit verschiedenen Themen von Schlangenspielen bis hin zu 3D -Motoren.

Normalerweise benutze ich Joe für alle meine Bearbeitungszwecke - ob Programmierung oder auf andere Weise. Es ist ein terminalbasierter Editor, also führe ich es in Xterm aus. Ja, auch unter Windows.

Aber im Jahr 2010, als ich anfing, diese Videos zu machen, hatte ich zu langsame Hardware, um in Echtzeit irgendeine Art von Desktop -Aufzeichnung aufzunehmen. Diese Situation blieb bis 2016 bestehen. DOSBOX enthält jedoch eine simulierte Umgebung mit vollem Funktionsumfang mit einem integrierten Video-Rekorder, der perfekt funktioniert, unabhängig davon, auf welcher Art von Computer Sie sie ausführen. Also musste ich Dosbox benutzen. Übrigens war DOS bereits eine sehr vertraute Plattform für mich.
Mein Herausgeber wurde nur geschrieben, weil Joe nicht für DOS zusammengestellt werden konnte.
Es gab andere syntaxfarbene Redakteure für DOS, und ich wollte und verwendete die Borland C ++ 3.1 IDE für einige meiner früheren Videos.

Aber dann wollte ich ein Video mit breiterem Bildschirm machen, und trotz meiner besten Bemühungen konnte ich Borland C ++ nicht binärer Binärpatch mit Bildschirmen mit anderen Breite als 80 Zeichen perfekt zusammenarbeiten. Also war ich in die Enge getrieben und hatte keine andere Wahl, als meinen eigenen Redakteur zu machen. Ich konnte mich nicht mehr daran erinnern, wie man Turbo Vision benutzt, und ich konnte mich nicht darum kümmern zu studieren, also schrieb ich den Herausgeber völlig von Grund auf neu.
Ich habe den Herausgeber für 16-Bit -DOS geschrieben, weil ich dachte, dass es signifikante Probleme geben würde, 16-Bit-Interrupt-Rückrufe mit 32-Bit-Code mit Schutzmodus zu mischen. Ich glaube auch nicht, dass ich damals wusste, dass DJGPP genauso modernisiert war wie in der Tat. Wenn es überhaupt war. Also habe ich Borland C ++ 3.1 verwendet.
Dieser Compiler von Borland wurde erstellt, bevor C ++ standardisiert war, und ich musste viele Opfer über Stil / Vernunft im Quellcode bringen. Zum Beispiel unterstützte es keine Namespaces oder Vorlagen. NEIN STL! Daher ist der Code nicht repräsentativ für gute Programmierpraktiken für die C ++ - Programmierung, nicht durch eine lange Aufnahme.
Da es 16-Bit ist, hat es übrigens auch schwerwiegende Speichergrenzen und andere Fehler, die damit verbunden sind. Schließlich zwang mich dies, es trotz meiner anfänglichen Ängste für 32-Bit-DJGPP zu portieren. Ich habe diesen Hafen am 2018-01-12 in nur wenigen Stunden fertiggestellt (oder, vielleicht war der Codierungsstil doch nicht so schlimm). Es kann im 32 -Bit -Verzeichnis gefunden werden. Beachten Sie, dass trotz dieses DJGPP -Anschlusses auf sehr modernen GCC 7.2.0 mit Unterstützung von C ++ 17 die Codebasis immer noch fast genau wie die Borland C ++ -Version ist.
Haben Sie den Teil vermisst, in dem ich gewarnt habe, dass Sie diesen Redakteur wirklich nicht verwenden möchten? Du hast es getan? OK. Der Editor verwendet die meisten der gleichen Eingaben wie Joe, meinen Lieblingsredakteur. Die Liste der Schlüsselbindungen finden Sie im doc/ Subd Directory.
Es repräsentiert den Editorpuffer als einen Vektor von Zeilen. Jede Zeile ist ein Vektor eines Elementtyps, der sowohl das Zeichen als auch das aktuelle Farbattribut codiert. Dieses Farbattribut war früher ein VGA-kompatibler 8-Bit-Attribut-Byte. Dies erfordert eine besondere Unterstützung von Dosbox.
Die Syntax -Hervorhebung arbeitet auf einer Zustandsmaschine, die nach dem Syntax -Hervorhebungsmotor in Joe modelliert wird. Tatsächlich verwendet dieser Editor genau die gleichen JSF -Dateien, um die Syntax -Hervorhebung wie Joe zu konfigurieren. Sie können mehr über das JSF -System in den JSF -Dateien erfahren, die mit Joe geliefert werden.
Die Syntax -Hervorhebung wird in Echtzeit mit einem virtuellen Rückruf angewendet, der zwei Optionen unterstützt: Nächstes Zeichen abrufen und einen vorherigen Abschnitt mit einem SELECT -Attribut wiederholen. Die Quellcode -Datei wird von Anfang bis Ende kontinuierlich gescannt, bis seit dem letzten Update mindestens einmal alles gescannt wurde.
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)
Dieses Attributwort wird im Video -RAM auf diese Weise gespeichert, dass die ersten 16 Bits auf der Seite B800: 0000, die obersten 16 Bits gleichzeitig zur Seite bei B000: 0000. Dosbox wurde speziell geändert, um diese Daten zu berücksichtigen und sie ordnungsgemäß zu machen. Die Verdoppelung des Attributbits ist da, um falsch positive Ergebnisse zu vermeiden.
SGR -Funktionen von ANSI -Codes, die noch nicht unterstützt werden:
Gemäß diesem Diagramm: 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
Die spezifischen Werte sind:
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]); }
In den 8x16-, 8x14- und 8x8 -Modi (und 9x16, 9x14, 9x8) handelt es sich bei der Schriftart, was der Host Computer VGA BIOS darin hat. Der Editor hat keine Schriftart für diese Modi. Es wird angenommen, dass es eine Schriftart gibt. Diese Annahme ist wahr.
In den Modi 8x15, 8x10, 8x12, 4x8, 8x19 und 8x32 liefert der Editor eine eigene Schriftart, die hauptsächlich algorithmisch aus der Standard-IBM-PC-Schriftart durch Up-/Downscaling erstellt wird. Sie finden diese Schriftarten in den .inc -Dateien in diesem Repository. Nein, dies sind keine Windows -Schriftartdateien. Dies ist zunächst kein Windows -Programm.
Die Temperaturinformationen sind Geschmack. Es handelt sich um einen festcodierten Text im Editor. Es wird keine automatische Messung durchgeführt.
Der Editor misst die CPU -Geschwindigkeit regelmäßig, während sie ausgeführt wird. Wenn Sie in Dosbox ausgeführt werden, wird auch die CPU -Geschwindigkeit ständig geändert . Die CPU -Geschwindigkeit wird gedrosselt, je nachdem, wie lange es dauert, bis die Syntax -Hervorhebung nach einer Bearbeitung fertig ist.
Der Mario Personanimation oben verwendet das gleiche Prinzip, das Norton Tools auf DOS verwendet haben, um einen grafischen Mauszeiger im Textmodus zu rendern.

Es liest die Schriftart für diejenigen Charaktere, unter denen sich derzeit befindet Mario Person behandelt diese Charaktere als Bitmaps, fügt hinzu Mario Person in sie und installiert dann die modifizierten Zeichen in der Schriftart und ersetzt die Zeichenindizes auf dem Bildschirm an dieser Stelle, um auf die geänderten Zeichen zu verweisen.
Um für 16-Bit-DOS zu erstellen, starten Sie Dosbox und verwenden Sie make.bat . Möglicherweise müssen Sie die Pfade in make.bat zuerst bearbeiten.
Dies erfordert, dass die folgenden Programme existieren:
Um für 32-Bit-DOS zu bauen, öffnen Sie ein Terminal in Linux, gehen Sie zum 32bit Unterverzeichnis und rennen Sie make . Sie benötigen die DJGPP installiert und müssen natürlich auch make .
Um DJGPP auf Debian zu installieren, laden Sie von einem DJGPP-Spiegel wie ftp://ftp.fu-berlin.de/pc/glanguages/djgpp/rpms/ die folgenden Pakete: djcrx-(someversion).rpm , djcross- djcross-binutils-(someversion).rpm djcross-gcc-(someversion).rpm djcross-gcc-c++-(someversion).rpm .
Und dann fakeroot alien dj*.rpm und dpkg -i dj*.deb .
Beispiel (in einem Format, das winzig genug ist, um in einen 280 -Charakter -Tweet zu passen):
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-Programme erfordern einen 32-Bit-DOS-Extender (DOS Protected Mode-Schnittstelle, DPMI), um auszuführen. Ein Beispiel DPMI-Treiber (HDPMI32) kann von https://sourceforge.net/projects/hx-dos/files/ heruntergeladen werden, wie: https://sourceforge.net/projects/hx-dos/files/2.17/hxrt217.7z/
Ab 2018-10-28 kann der Herausgeber auch unter Linux zusammengestellt werden. (64-Bit ist in Ordnung.) Gehen Sie zum 32bit -Unterverzeichnis und rennen Sie make e . Sie benötigen eine SDL2 -Bibliothek, die mit Entwicklungsheadern installiert ist.
Beachten Sie die üblichen Haftungsausschlüsse. Dieser Herausgeber soll nicht von Menschen verwendet werden.
Vorbehalte:
Entschuldigung!
Papierdünne Versatzstücke. Es ist im Grunde Hollywood.
Um ehrlich zu sein, unterstützt der Redakteur vier gleichzeitige Cursoren, vollständige Rückgänger. Immerhin benutze ich diesen Editor immer nur für die Videos. Und in diesen Videos brauche ich nur sehr einfache Funktionen. Weitere Informationen finden Sie im doc/ Verzeichnis.
Ich erinnere wieder daran, dass dieser Redakteur nicht so konzipiert war, dass sie von Menschen verwendet werden. Es wurde so konzipiert, dass es so aussieht , als würde es von Menschen benutzt.