是那個編輯。

更多信息: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/目錄以獲取詳細信息。
我再次提醒,該編輯並非被人們使用。它的設計看起來像是被人們使用的。