それはその編集者です。

詳細については、https://github.com/bisqwit/compiler_series/tree/master/ep1/dostools
DOS環境のプログラミングエディターです。より具体的には、DOS環境のプログラミングエディターのように見えるものです。
Strictly-as-aus-sult-sult-sultは、このエディターを実際に使用したくないという軽度の警告で提供されます。真剣に。それはあなたに何の良いことではありません。代わりに、実際のエディター(https://joe-editor.sourceforge.io/)を取得します。ほぼ同じように見えるようにすることができます。ウィンドウシッターを使用したい場合は、Macopixを入手してください。
私はYouTubeのビデオプロデューサーです。 Snake Gamesから3Dエンジンまで、多様なトピックを特徴とするプログラミングビデオを作成しています。

私は通常、プログラミングであろうとなかろうと、すべての編集目的でJoeを使用します。ターミナルベースの編集者なので、Xtermで実行します。はい、Windowsの下でも。

しかし、2010年かそこらで、これらのビデオを作成し始めたとき、ハードウェアが遅すぎて、あらゆる種類のデスクトップ録音をリアルタイムで行うことができませんでした。この状況は2016年まで続きました。ただし、Dosboxには、実行するコンピューターの種類に関係なく、完全に機能するビルトインビデオレコーダーを備えたフル機能のシミュレートされた環境が含まれています。だから私はdosboxを使用する必要がありました。ちなみに、DOSはすでに私にとって非常に馴染みのあるプラットフォームでした。
私の編集者は、ジョーがDOSのために編集できなかったために書かれていました。
DOS用の他のSyntaxカラーエディターがありましたが、以前のビデオのいくつかにBorland C ++ 3.1 IDEを実際に望んでいました。

しかし、その後、私はより広い画面でビデオを作りたかったのですが、最善の努力にもかかわらず、80文字以外の幅のある画面と完全に協力するために、Borland C ++をバイナリパッチすることはできませんでした。だから私は追い詰められ、自分の編集者を作るしかありませんでした。 Turbo Visionの使用方法を覚えていなく、勉強することを気にすることができなかったので、編集者を完全にゼロから書きました。
16ビットのDOSの編集者を書きました。なぜなら、16ビットの割り込みコールバックと32ビットの保護されたモードコードを組み合わせようとする大きな問題があると思ったからです。また、私は当時私が知っていたとは思いません。もしそうなら。そこで、Borland C ++ 3.1を使用しました。
Borlandによるこのコンパイラは、C ++が標準化される前に作成され、ソースコードでスタイル /正気について多くの犠牲を払う必要がありました。たとえば、名前空間やテンプレートはサポートしていませんでした。 STLはありません!そのため、コードは、ロングショットではなく、C ++プログラミングの優れたプログラミングプラクティスを代表するものではありません。
ちなみに、それは16ビットであるため、それに関連する深刻なメモリ制限やその他のバグもあります。最終的に、これにより、最初の恐怖にもかかわらず、32ビットDJGPPでポートすることができました。私はこのポートを2018-01-12にわずか数時間で完成させました(たぶん、コーディングスタイルはそれほど悪くなかったかもしれません)。 32ビットディレクトリにあります。このDJGPPポートは、C ++ 17のサポートを備えた非常にモダンなGCC 7.2.0にコンパイルされているにもかかわらず、コードベースはBorland C ++バージョンとほぼ同じであることに注意してください。
このエディターを本当に使いたくないと警告した部分を見逃しましたか?あなたはしましたか?わかりました。編集者は、私のお気に入りの編集者であるJoeと同じ入力のほとんどを使用しています。 doc/ subdirectoryでkeybindingsのリストを見つけることができます。
これは、編集者バッファーを線のベクトルとして表します。各ラインは、文字とその現在の色の属性の両方をコードする要素タイプのベクトルです。この色の属性は、VGA互換の8ビット属性バイトでしたが、コミット7321F15Aおよび05EAF3C7では、XTERM-256COLOR互換の拡張色の属性をサポートしました。これには、Dosboxからの特別なサポートが必要です。
構文ハイライトは、Joeの構文強調表示エンジンをモデルにした状態マシンで動作します。実際、このエディターはまったく同じJSFファイルを使用して、Joeと同じように構文ハイライトを構成します。 Joeに付属のJSFファイルのJSFシステムの詳細については、詳細をご覧ください。
構文ハイライトは、次の文字を取得し、選択属性を使用して以前のセクションを再設計する2つのオプションをサポートする仮想コールバックを使用してリアルタイムで適用されます。ソースコードファイルは、最後の更新以来、すべてが少なくとも1回スキャンされるまで、最初から最後まで継続的にスキャンされます。
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)
この属性ワードは、最初の16ビットがB800:0000のページに入るようにビデオRAMに保存されますが、上位16ビットはB000:0000のページに同時に行われます。 Dosboxは、このデータを考慮し、適切にレンダリングするために特別に変更されました。属性ビットの倍増は、誤検知を避けるためにあります。
まだサポートされていないANSIコードのSGR機能:
このチャートによると、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
特定の値は次のとおりです。
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速度は、編集後に構文のハイライトが終了するまでの時間がかかる時間に応じてスロットされます。
マリオ上の人アニメーションは、NortonツールがDOSで使用してテキストモードでグラフィカルなマウスカーソルをレンダリングするのと同じ原則を使用します。

現在下にあるキャラクターのフォントを読み取りますマリオ人は、それらのキャラクターをビットマップとして扱います、付け加えますマリオそれらに人を入れてから、修正された文字をフォントにインストールし、その場所の画面上の文字インデックスを置き換えて、変更された文字を参照します。
16ビットDOS用に構築するには、DoSboxを起動してmake.batを使用します。最初にmake.batのパスを編集する必要がある場合があります。
これには、次のプログラムが存在する必要があります。
32ビットDOSを構築するには、Linuxで端子を開き、 32bitサブディレクトリに移動してmakeします。 DJGPPをインストールする必要があり、もちろんmake必要があります。
djgppをDebianにインストールするにdjcross-binutils-(someversion).rpm 、ftp djcrx-(someversion).rpm //ftp.fu-berlin.de/pc/languages/djgpp/rpms/などのdjgppミラーからダウンロードしますdjcross-gcc-(someversion).rpm 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)が必要です。例のDPMIドライバー(HDPMI32)は、https://sourceforge.net/projects/hx-dos/files/2.17/hxrt217.7.7z/downloadのような:https://sourceforge.net/projects/hx-dos/files/など、https://sourceforge.net/projects/hx-dos/files/からダウンロードできます。
2018-10-28の時点で、編集者はLinuxでコンパイルすることもできます。 (64ビットは問題ありません。) 32bitサブディレクトリに移動して、 make e実行します。開発ヘッダーとともにSDL2ライブラリをインストールする必要があります。
通常の免責事項に注意してください。この編集者は、人間によって使用されることを意図したものではありません。
警告:
ごめん!
紙のように薄いセットピース。基本的にハリウッドです。
正直に言うと、編集者は4つの同時カーソルをサポートしています。完全に元に戻す+redo ...しかし、テストと開発は私のビデオプロダクションによって指示されています。結局のところ、私はこの編集者をビデオにしか使用していません。そして、これらのビデオでは、非常に基本的な機能のセットのみが必要です。詳細については、 doc/ Directoryをご覧ください。
繰り返しますが、この編集者は人々が使用するように設計されていないことを思い出させます。それは人々が使用しているように見えるように設計されています。