هذا المحرر.

بعض مزيد من المعلومات على: https://github.com/bisqwit/compiler_series/tree/master/ep1/dostools
وهو محرر برمجة لبيئات DOS. وبشكل أكثر تحديدًا ، إنه شيء يبدو وكأنه محرر برمجة لبيئات DOS.
تم توفيره بشكل صارم ، مع تحذير معتدل أنك لا ترغب حقًا في استخدام هذا المحرر. بجد. لن يفيدك أي شيء جيد. احصل على محرر حقيقي (https://joe-editor.sourceforge.io/) بدلاً من ذلك. يمكنك أن تبدو متطابقًا إلى حد كبير ، وإذا كنت تريد أن تذهب حاضنة النوافذ معها ، فاحصل على مثل Macopix.
أنا منتج فيديو في YouTube. أقوم بعمل مقاطع فيديو برمجة تتميز بمواضيع متنوعة من Snake Games إلى محركات ثلاثية الأبعاد.

عادةً ما أستخدم Joe لجميع أغراض التحرير الخاصة بي - سواء كانت البرمجة أو غير ذلك. إنه محرر قائم على الطرفية ، لذلك أقوم بتشغيله في Xterm. نعم ، حتى تحت Windows.

لكن في عام 2010 أو نحو ذلك ، عندما بدأت في صنع مقاطع الفيديو هذه ، كان لدي أجهزة بطيئة جدًا لأقوم بأي نوع من تسجيلات سطح المكتب في الوقت الفعلي. استمر هذا الموقف حتى عام 2016. ومع ذلك ، يحتوي Dosbox على بيئة محاكاة كاملة الميزة مع مسجل فيديو مدمج يعمل بشكل مثالي بغض النظر عن نوع الكمبيوتر الذي تقوم بتشغيله عليه. لذلك اضطررت لاستخدام Dosbox. بالمناسبة ، كان DOS بالفعل منصة مألوفة للغاية بالنسبة لي.
تمت كتابة محررتي فقط لأنه لا يمكن تجميع جو ل DOS.
كان هناك محررين آخرون للتلوين في بناء الجملة لـ DOS ، وأردت فعليًا واستخدمت Borland C ++ 3.1 IDE لبعض مقاطع الفيديو السابقة الخاصة بي.

ولكن بعد ذلك ، أردت إنشاء مقطع فيديو به شاشة أوسع ، وعلى الرغم من بذل قصارى جهدي ، لم أستطع أن أتعامل مع الشاشات الأخرى التي تحتوي على شاشات أخرى أكثر من 80 حرفًا. لذلك كنت محاصرًا ولم يكن لدي خيار سوى جعل المحرر الخاص بي. لم يعد بإمكاني تذكر كيفية استخدام Turbo Vision ، ولم أستطع أن أزعج نفسي بالدراسة ، لذلك كتبت المحرر تمامًا من الصفر.
لقد كتبت المحرر لـ DOS 16 بت لأنني اعتقدت أنه ستكون هناك مشاكل كبيرة في محاولة لخلط عمليات الاسترداد المقاطعات 16 بت برمز وضع محمي 32 بت. كما لا أعتقد أنني عرفت في ذلك الوقت ، أن DJGPP تم تحديثه كما كان بالفعل. إذا كان حتى كان. لذلك استخدمت Borland C ++ 3.1.
تم إنشاء برنامج التحويل البرمجي هذا من Borland قبل توحيد C ++ ، وتطلب مني تقديم العديد من التضحيات حول الأسلوب / العقل في رمز المصدر. على سبيل المثال ، لم يدعم مساحات الأسماء أو القوالب. لا STL! على هذا النحو ، فإن الكود لا يمثل ممارسات البرمجة الجيدة لبرمجة C ++ ، وليس عن طريق لقطة طويلة.
بالمناسبة ، نظرًا لأنه 16 بت ، فإنه يحتوي أيضًا على حدود ذاكرة خطيرة وغيرها من الأخطاء المرتبطة بها. في نهاية المطاف ، أجبرني هذا على نقله لـ DJGPP 32 بت على الرغم من مخاوفي الأولية. أكملت هذا المنفذ في 2018-01-12 في غضون ساعتين فقط (هاه ، ربما لم يكن أسلوب الترميز بهذا السوء بعد كل شيء). يمكن العثور عليها في دليل 32 بت. لاحظ أنه على الرغم من أن منفذ DJGPP يتم تجميعه على GCC 7.2.0 الحديثة للغاية بدعم من C ++ 17 ، إلا أن قاعدة الكود لا تزال هي نفسها تقريبًا مثل إصدار Borland C ++.
هل فاتتك الجزء الذي حذرت من أنك لا تريد استخدام هذا المحرر؟ فعلت؟ نعم. يستخدم المحرر معظم المدخلات نفسها مثل Joe ، المحرر المفضل لدي. يمكنك العثور على قائمة keybindings في doc/ الدليل الفرعي.
إنه يمثل المخزن المؤقت للمحرر كمتجه للخطوط. كل سطر هو متجه من نوع العنصر الذي يشفر كل من الحرف وسمة اللون الحالية. كانت هذه السمة الملونة هذه هي بايت سمة متوافقة مع VGA 8 بت متوافقة ، ولكن في الالتزامات 7321F15A و 05AF3C7 أضفت دعمًا لسمات الألوان المتوافقة المتوافقة مع Xterm-256Color ، والتي ضاعفت بالمناسبة استخدام ذاكرة المحرر. هذا يتطلب دعمًا خاصًا من Dosbox.
يعمل تسليط الضوء على بناء الجملة على آلة الحالة التي تم تصميمها بعد محرك تسليط الضوء على بناء الجملة في Joe. في الواقع ، يستخدم هذا المحرر نفس ملفات JSF بالضبط لتكوين تمييز بناء الجملة كما يفعل Joe. يمكنك معرفة المزيد حول نظام JSF في ملفات JSF التي تأتي مع Joe.
يتم تطبيق تسليط الضوء على بناء الجملة في الوقت الفعلي باستخدام رد اتصال افتراضي يدعم خيارين: الحصول على الحرف التالي ، وإعادة حل بعض القسم السابق باستخدام سمة تحديد. يتم مسح ملف رمز المصدر بشكل مستمر من البداية إلى النهاية حتى يتم مسح كل شيء مرة واحدة على الأقل منذ التحديث الأخير.
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 ، ولكن أعلى 16 بتات تنتقل في وقت واحد إلى الصفحة على B000: 0000. تم تعديل Dosbox خصيصًا لحساب هذه البيانات ولتقديمها بشكل صحيح. مضاعفة بت السمة موجودة لتجنب الإيجابيات الخاطئة.
ميزات SGR من رموز ANSI غير مدعومة بعد:
وفقًا لهذا المخطط: 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 ، يزود المحرر خطه الخاص الذي يتم إنشاؤه في الغالب خوارزمية من خط PC القياسي IBM بواسطة Up-/تقليص. يمكنك العثور على هذه الخطوط في ملفات .inc في هذا المستودع. لا ، هذه ليست ملفات خطوط Windows. هذا ليس برنامج Windows لتبدأ.
معلومات درجة الحرارة هي نكهة. إنه نص متشددين في المحرر. لا يتم إجراء قياس تلقائي.
يقيس المحرر سرعة وحدة المعالجة المركزية بشكل دوري أثناء تشغيله. إذا تم تشغيله في Dosbox ، فإنه يغير أيضًا سرعة وحدة المعالجة المركزية باستمرار. تم اختناق سرعة وحدة المعالجة المركزية اعتمادًا على المدة التي يستغرقها تمييز بناء الجملة حتى الانتهاء بعد التحرير.
ال ماريو تستخدم الرسوم المتحركة للشخص في الأعلى نفس المبدأ الذي تستخدمه أدوات Norton على DOS من أجل تقديم مؤشر الماوس الرسومي في وضع النص.

يقرأ الخط لتلك الأحرف التي يتم حاليا ماريو الشخص ، يعامل تلك الأحرف على أنها خلاصات ، يضيف ماريو الشخص فيها ، ثم يقوم بتثبيت الأحرف المعدلة في الخط ويحل محل فهارس الأحرف على الشاشة في هذا المكان للإشارة إلى الأحرف المعدلة.
للبناء ل DOS 16 بت ، وإطلاق Dosbox واستخدام make.bat . قد تحتاج إلى تحرير المسارات في make.bat أولاً.
هذا يتطلب وجود البرامج التالية:
للبناء ل DOS 32 بت ، افتح محطة في Linux ، انتقل إلى الدليل الفرعي 32bit وجعل make . ستحتاج إلى تثبيت DJGPP ، وتحتاج إلى make بالطبع أيضًا.
لتثبيت DJGPP على Debian ، قم بتنزيل من مرآة DJGPP ، مثل ftp://ftp.fu-berlin.de/pc/languages/djgpp/rpms/ ، الحزم التالية: djcrx-(someversion).rpm ، djcross- djcross-binutils-(someversion).rpm 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 موسع DOS 32 بت (واجهة الوضع المحمي DOS ، DPMI) من أجل التشغيل. مثال على ذلك ، يمكن تنزيل برنامج تشغيل DPMI (HDPMI32) من https://sourceforge.net/projects/hx-dos/files/ ، مثل: https://sourceforge.net/projects/hx-dos/files/2.17/hxrt217.7z/download
اعتبارًا من 2018-10-28 ، يمكن أيضًا تجميع المحرر على Linux. (64 بت جيد.) انتقل إلى الدليل الفرعي 32bit و raw make e . ستحتاج إلى تثبيت مكتبة SDL2 برؤوس التطوير.
لاحظ إخلاء المسئولية المعتادة. هذا المحرر لا يُقصد به أن يستخدمه البشر.
تحذيرات:
آسف!
قطع ورقة رقيقة. انها في الأساس هوليوود.
حسنًا ، لكي نكون صادقين ، يدعم المحرر أربعة مؤشرات متزامنة ، وتراجع+Redo الكامل ... ولكن يتم توجيه الاختبار والتطوير بواسطة إنتاجات الفيديو الخاصة بي. بعد كل شيء أنا فقط استخدم هذا المحرر لمقاطع الفيديو. وفي مقاطع الفيديو هذه ، أحتاج فقط إلى مجموعة أساسية للغاية من الميزات. انظر إلى doc/ الدليل للحصول على التفاصيل.
مرة أخرى أذكر أن هذا المحرر لم يتم تصميمه لاستخدامه من قبل الناس. تم تصميمه لتبدو وكأنه يستخدمه الناس.