มันคือ บรรณาธิการ

ข้อมูลเพิ่มเติมได้ที่: https://github.com/bisqwit/compiler_series/tree/master/ep1/dostools
มันเป็นตัวแก้ไขการเขียนโปรแกรมสำหรับสภาพแวดล้อม DOS โดยเฉพาะอย่างยิ่งมันเป็นสิ่งที่ ดูเหมือน ตัวแก้ไขการเขียนโปรแกรมสำหรับสภาพแวดล้อม DOS
ให้อย่างเคร่งครัดตามที่เป็นคือคำเตือนเล็กน้อยว่าคุณไม่ต้องการใช้บรรณาธิการนี้จริงๆ อย่างจริงจัง. มันจะไม่ทำให้คุณดี รับ ตัวแก้ไขจริง (https://joe-editor.sourceforge.io/) แทน คุณสามารถทำให้มันดูเหมือนกันมากและถ้าคุณต้องการให้ผู้ดูแลหน้าต่างไปด้วยให้รับ EG Macopix
ฉันเป็นผู้ผลิตวิดีโอที่ YouTube ฉันทำวิดีโอการเขียนโปรแกรมที่มีหัวข้อที่หลากหลายตั้งแต่เกมงูไปจนถึงเครื่องยนต์ 3 มิติ

ปกติฉันใช้ Joe เพื่อจุดประสงค์ในการแก้ไขทั้งหมด - ไม่ว่าจะเป็นการเขียนโปรแกรมหรืออย่างอื่น มันเป็นตัวแก้ไขที่ใช้เทอร์มินัลดังนั้นฉันจึงเรียกใช้ใน xterm ใช่แม้ภายใต้ Windows

แต่ย้อนกลับไปในปี 2010 หรือมากกว่านั้นเมื่อฉันเริ่มทำวิดีโอเหล่านี้ฉันมีฮาร์ดแวร์ช้าเกินไปที่จะทำการบันทึกเดสก์ท็อปแบบเรียลไทม์ สถานการณ์นี้ยังคงมีอยู่จนถึงปี 2559 อย่างไรก็ตาม Dosbox มีสภาพแวดล้อมการจำลองแบบเต็มรูปแบบพร้อมเครื่องบันทึกวิดีโอในตัวที่ทำงานได้อย่างสมบูรณ์โดยไม่คำนึงถึงคอมพิวเตอร์ชนิดใดที่คุณใช้งาน ดังนั้นฉันต้องใช้ Dosbox อนึ่ง DOS เป็นแพลตฟอร์มที่คุ้นเคยมากสำหรับฉัน
บรรณาธิการของฉันถูกเขียนเพียงเพราะโจไม่สามารถรวบรวมสำหรับ DOS ได้
มี บรรณาธิการสีไวยากรณ์อื่น ๆ สำหรับ DOS และฉันต้องการและ ใช้ Borland C ++ 3.1 IDE สำหรับวิดีโอก่อนหน้าของฉัน

แต่แล้วฉันก็ต้องการสร้างวิดีโอที่มีหน้าจอที่กว้างขึ้นและแม้จะมีความพยายามอย่างเต็มที่ แต่ฉันก็ไม่สามารถใช้ Binary-Patch Borland C ++ เพื่อร่วมมือกับหน้าจอที่มีความกว้างอื่นกว่า 80 ตัวอักษรอย่างสมบูรณ์แบบ ดังนั้นฉันจึงถูกมุมและไม่มีทางเลือกนอกจากต้องสร้างบรรณาธิการของตัวเอง ฉันจำวิธีใช้ Turbo Vision ได้อีกต่อไปและฉันไม่สามารถเรียนรู้ได้ดังนั้นฉันจึงเขียนบรรณาธิการตั้งแต่เริ่มต้น
ฉันเขียนตัวแก้ไขสำหรับ DOS 16 บิต เพราะฉันคิดว่าจะมีปัญหาสำคัญที่พยายามผสมการโทรกลับแบบขัดจังหวะ 16 บิตกับรหัสโหมดป้องกัน 32 บิต นอกจากนี้ฉันไม่คิดว่าฉันจะรู้ว่าตอนนั้น DJGPP ได้รับการปรับปรุงให้ทันสมัยเหมือนที่มันมี ถ้ามันเป็น ดังนั้นฉันจึงใช้ Borland C ++ 3.1
คอมไพเลอร์นี้โดยบอร์แลนด์ถูกสร้างขึ้นก่อนที่ C ++ จะได้มาตรฐานและมันต้องการให้ฉันเสียสละมากมายเกี่ยวกับสไตล์ / ความมีสติในซอร์สโค้ด ตัวอย่างเช่นมันไม่รองรับเนมสเปซหรือเทมเพลต ไม่มี STL! ดังนั้นรหัสจึงไม่ได้เป็นตัวแทนของแนวทางการเขียนโปรแกรมที่ดีสำหรับการเขียนโปรแกรม C ++ ไม่ใช่โดยการยิงระยะยาว
อนึ่งเพราะมันเป็น 16 บิตมันยังมีข้อ จำกัด หน่วยความจำที่ร้ายแรงและข้อบกพร่องอื่น ๆ ที่เกี่ยวข้อง ในที่สุด สิ่งนี้ บังคับให้ ฉันพอร์ตมันสำหรับ DJGPP 32 บิตแม้จะมีความกลัวครั้งแรก ฉันทำพอร์ตนี้เสร็จในปี 2018-01-12 ในเวลาเพียงไม่กี่ชั่วโมง (ฮะบางทีสไตล์การเข้ารหัสอาจไม่เลวร้ายขนาด นั้น ) สามารถพบได้ในไดเรกทอรี 32 บิต โปรดทราบว่าแม้พอร์ต DJGPP นี้จะถูกรวบรวมบน GCC 7.2.0 ที่ทันสมัยมากด้วยการสนับสนุน C ++ 17 Codebase ยังคงเกือบจะเหมือนกับรุ่น Borland C ++
คุณพลาดส่วนที่ฉันเตือนว่าคุณไม่ต้องการใช้บรรณาธิการนี้จริงๆหรือ คุณทำ? ตกลง. ตัวแก้ไขใช้อินพุตส่วนใหญ่เช่น Joe ซึ่งเป็นตัวแก้ไขที่ฉันชอบ คุณสามารถค้นหารายการ keybindings ใน doc/ subdirectory
มันแสดงถึงบัฟเฟอร์ตัวแก้ไขเป็นเวกเตอร์ของเส้น แต่ละบรรทัดเป็นเวกเตอร์ของประเภทองค์ประกอบที่เข้ารหัสทั้งอักขระและแอตทริบิวต์สีปัจจุบัน แอตทริบิวต์สีนี้เคยเป็นไบต์แอตทริบิวต์ 8 บิตที่เข้ากันได้กับ VGA แต่ในการกระทำ 7321F15A และ 05EAF3C7 ฉันเพิ่มการสนับสนุนสำหรับแอตทริบิวต์สีที่เข้ากันได้กับ XTERM-256 สิ่งนี้ต้องการการสนับสนุนพิเศษจาก Dosbox
การไฮไลต์ไวยากรณ์ทำงานบนเครื่องสถานะที่สร้างแบบจำลองหลังจากเครื่องยนต์ไฮไลต์ไวยากรณ์ใน Joe ในความเป็นจริงตัวแก้ไขนี้ใช้ไฟล์ JSF เดียวกันที่แน่นอนเพื่อกำหนดค่าไวยากรณ์ที่เน้นเช่นเดียวกับที่ Joe ทำ คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับระบบ JSF ในไฟล์ JSF ที่มาพร้อมกับ Joe
การไฮไลต์ไวยากรณ์ถูกนำไปใช้แบบเรียลไทม์โดยใช้การโทรกลับเสมือนจริงที่รองรับสองตัวเลือก: รับอักขระถัดไปและเปลี่ยนส่วนก่อนหน้านี้โดยใช้แอตทริบิวต์ 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 ได้รับการแก้ไขโดยเฉพาะเพื่อบัญชีสำหรับข้อมูลนี้และเพื่อแสดงผลอย่างถูกต้อง บิตแอตทริบิวต์สองเท่าคือเพื่อหลีกเลี่ยงข้อดีที่ผิดพลาด
คุณสมบัติ 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 โหมดตัวแก้ไขให้แบบอักษรของตัวเองซึ่งส่วนใหญ่สร้างอัลกอริทึมจากแบบอักษร IBM PC มาตรฐาน คุณสามารถค้นหาแบบอักษรเหล่านี้ได้ในไฟล์ .inc ในที่เก็บนี้ ไม่นี่ไม่ใช่ไฟล์แบบอักษร Windows นี่ไม่ใช่โปรแกรม Windows ที่จะเริ่มต้นด้วย
ข้อมูลอุณหภูมิคือรสชาติ มันเป็นข้อความ hardcoded ในตัวแก้ไข ไม่มีการวัดอัตโนมัติ
ตัวแก้ไขวัดความเร็ว CPU เป็นระยะในขณะที่ทำงาน หากทำงานใน Dosbox มันจะ เปลี่ยน ความเร็ว CPU อย่างต่อเนื่อง ความเร็วของ CPU นั้นขึ้นอยู่กับระยะเวลาสำหรับการเน้นไวยากรณ์ให้เสร็จหลังจากแก้ไข
ที่ มาริโอ ภาพเคลื่อนไหวของบุคคลที่ด้านบนใช้หลักการเดียวกับที่ 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-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.
ณ ปี 2018-10-28 ตัวแก้ไขยังสามารถรวบรวมบน Linux (64 บิตไม่เป็นไร) ไปที่ไดเรกทอรี 32bit แล้วเรียกใช้ make e คุณจะต้องติดตั้งไลบรารี SDL2 ด้วยส่วนหัวการพัฒนา
สังเกตข้อจำกัดความรับผิดชอบปกติ บรรณาธิการนี้ไม่ได้หมายถึงการใช้โดยมนุษย์
ข้อแม้:
ขอโทษ!
ชุดกระดาษบาง ๆ โดยพื้นฐานแล้วฮอลลีวูด
ตามจริงแล้วบรรณาธิการสนับสนุนเคอร์เซอร์พร้อมกันสี่ตัว, UNDO+REDO เต็มรูปแบบเต็มรูปแบบ ... แต่การทดสอบและการพัฒนานั้นกำกับโดยการผลิตวิดีโอของฉัน หลังจากทั้งหมดฉันเคยใช้ตัวแก้ไขนี้สำหรับวิดีโอเท่านั้น และในวิดีโอเหล่านั้นฉันต้องการชุดคุณสมบัติพื้นฐานเท่านั้น ดู doc/ Directory เพื่อดูรายละเอียด
ฉันเตือนอีกครั้งว่าผู้ใช้งานนี้ไม่ได้ถูกออกแบบมาเพื่อใช้งานโดยผู้คน มันถูกออกแบบมาให้ ดูเหมือน ว่ามันถูกใช้โดยผู้คน