是那个编辑。

更多信息:https://github.com/bisqwit/compiler_series/tree/master/master/ep1/dostools
它是DOS环境的编程编辑器。更具体地说,它看起来像是DOS环境的编程编辑器。
提供严格的AS-IS,并有一个温和的警告,您确实不想使用此编辑器。严重地。它不会对您有任何好处。取得真正的编辑器(https://joe-editor.sourceforge.io/)。您可以使它看起来几乎相同,如果您希望使用窗口保姆,请获得Macopix。
我是YouTube的视频制作人。我制作了编程视频,其中包含从蛇游戏到3D发动机的各种主题。

我通常将Joe用于所有编辑目的 - 无论是编程还是其他编辑。它是一个基于终端的编辑器,因此我在XTerm中运行它。是的,即使在窗户下。

但是早在2010年左右,当我开始制作这些视频时,我的硬件太慢,无法实时进行任何桌面录制。这种情况一直持续到2016年。但是,DOSBOX包含一个完整的模拟环境,并带有内置视频记录器,无论您运行哪种计算机,它都可以正常工作。所以我不得不使用DOSBOX。顺便说一句,对我来说,DOS已经是一个非常熟悉的平台。
我的编辑之所以写,是因为乔不能为DOS编译。
还有其他用于DOS的语法色编辑器,我实际上想并且确实使用了Borland C ++ 3.1 IDE进行一些早期的视频。

但是后来我想用更宽的屏幕制作视频,尽管我尽了最大的努力,但我无法二进制Borland C ++与具有其他宽度以上的宽度的屏幕完美合作。因此,我被陷入困境,别无选择,只能制作自己的编辑。我不再记得如何使用Turbo Vision,也无法理会学习,所以我完全从头开始写了编辑。
我写了16位DOS的编辑器,因为我认为试图将16位中断回调与32位受保护模式代码混合在一起会有重大麻烦。我当时还不知道我不知道,DJGPP一直是现代化的。甚至是。因此,我使用了Borland C ++ 3.1。
在C ++标准化之前,创建了Borland的编译器,它要求我在源代码中对样式 /理智做出许多牺牲。例如,它不支持名称空间或模板。没有STL!因此,该代码并不代表C ++编程的良好编程实践,而不是长期以来。
顺便说一句,因为它是16位,所以它也具有严重的内存限制和其他与之相关的错误。最终,这迫使我将其移植到32位DJGPP,尽管我最初的担心。我在短短几个小时内就在2018-01-12完成了此港口(嗯,毕竟编码风格还不错)。它可以在32位目录中找到。请注意,尽管此DJGPP端口是在非常现代的GCC 7.2.0上编译的,并支持C ++ 17,但代码库仍与Borland C ++版本完全相同。
您是否错过了我警告您真的不想使用此编辑器的部分?你做到了吗?好的。编辑器使用与我最喜欢的编辑Joe相同的输入。您可以在doc/子目录中找到键键列表。
它代表编辑器缓冲区作为线路的向量。每行都是元素类型的向量,该向量既编码字符及其当前颜色属性。该颜色属性过去是与VGA兼容的8位属性字节,但在Compits 7321F15A和05EAF3C7中,我增加了对Xterm-256Color兼容的扩展颜色属性的支持,偶然地使编辑器的内存使用量增加了一倍。这需要DOSBOX的特殊支持。
语法突出显示在以语法突出显示Joe的引擎的状态计算机上运行。实际上,该编辑器使用完全相同的JSF文件来配置与Joe一样的语法突出显示。您可以在Joe随附的JSF文件中了解有关JSF系统的更多信息。
语法突出显示是使用支持两个选项的虚拟回调实时应用的:获取下一个字符,并使用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)
此属性单词以这种方式存储在视频RAM中,以至于前16位以B800:0000进入页面,但前16位同时在B000:0000时同时进入页面。 DOSBOX经过专门修改以说明此数据并正确渲染。属性位的加倍可以避免误报。
尚不支持的ANSI代码的SGR功能:
根据此图表:https://en.wikipedia.org/wiki/ansi_escape_code_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)中,字体是主机计算机VGA BIOS所具有的任何内容。编辑器没有这些模式的字体。假定存在字体。这个假设是正确的。
在8x15、8x10、8x12、4x8、8x19和8x32模式中,编辑器提供了自己的字体,该字体主要由标准的IBM PC字体创建算法,通过上/降尺度。您可以在此存储库中的.inc文件中找到这些字体。不,这些不是Windows字体文件。这不是一个开始的Windows程序。
温度信息是风味。它是编辑器中的硬编码文本。未进行自动测量。
编辑器在运行时定期测量CPU速度。如果在DOSBOX中运行,它也会不断更改CPU速度。 CPU速度会根据语法突出显示在编辑后完成多长时间的节点。
这马里奥顶部的人动画使用了与DOS上使用的诺顿工具在文本模式下渲染图形鼠标光标的原理。

它读取当前正在下面的字符的字体马里奥人,将这些角色视为位图,并补充马里奥进入其中的人,然后将修改后的字符安装在字体中,然后在该点在屏幕上替换字符索引,以参考修改后的字符。
要构建16位DOS,请启动DOSBOX并使用make.bat 。您可能需要先编辑make.bat中的路径。
这需要以下程序存在:
要构建32位DOS,请在Linux中打开一个终端,转到32bit目录并运行make 。您将需要安装DJGPP,当然也需要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 。
然后运行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扩展器(DOS受保护模式接口,DPMI)才能运行。可以从https://sourceforge.net/projects/hx-dos/files//等下载一个示例DPMI驱动程序(HDPMI32)
截至2018-10-28,编辑也可以在Linux上编译。 (64位很好。)转到32bit目录并运行make e 。您将需要带有开发标头的SDL2库。
注意通常的免责声明。该编辑并不是人类使用的。
警告:
对不起!
纸固定的碎片。基本上是好莱坞。
好吧,老实说,编辑确实支持四个同时的光标,完整的撤消+重做……但是测试和开发是由我的视频制作指导的。毕竟,我只将此编辑器用于视频。在这些视频中,我只需要非常基本的功能。查看doc/目录以获取详细信息。
我再次提醒,该编辑并非被人们使用。它的设计看起来像是被人们使用的。