เปิดซอร์สโค้ดที่สะสมมากว่า 40 ปีในโอกาสเกษียณ
(dunfield.themindfactory.com)- นักพัฒนาคนหนึ่งได้เปิดเผย ซอร์สโค้ดที่สะสมมานานกว่า 40 ปี เนื่องในโอกาสเกษียณ ทำให้สามารถเข้าไปดูระบบเก่า เครื่องมือ และโปรเจ็กต์ส่วนตัวได้โดยตรง
- ขอบเขตการเผยแพร่ครอบคลุมถึง ระบบปฏิบัติการและเคอร์เนล เช่น เคอร์เนลแบบมัลติโปรเซส/ทาสก์สำหรับ ARM, ระบบปฏิบัติการสำหรับ CPU 6809 และ OS ยุคแรกในช่วง Altair 1980
- ยังมี เครื่องมือพัฒนาระดับล่าง รวมอยู่ด้วย เช่น Micro-C Compiler, cross assembler, disassembler, อีมูเลเตอร์ 8052 และดีบักเกอร์
- มีการเปิดเผย ยูทิลิตีสำหรับงานบนพีซี อย่างกว้างขวาง เช่น DOSBox, ยูทิลิตี DOS, การซิงก์ไฟล์, การจัดการ ZIP, การสร้างแพ็กเกจติดตั้ง และโปรแกรมแก้ไขข้อความ
- รวมถึง โปรเจ็กต์ฮาร์ดแวร์ส่วนตัว เช่น วิทยุสมัครเล่น รีโมตอินฟราเรด RS-232, Ethernet TTY, การควบคุม X10 และหุ่นยนต์สำหรับอ่าน DVD 1,500 แผ่น จึงมีคุณค่าในเชิงการเก็บรักษาอย่างมาก
วัตถุประสงค์ของการเผยแพร่และเอกสารแนะนำ
- เนื่องในโอกาสเกษียณ จึงเปิดเผย ซอร์สโค้ดที่สะสมมานานกว่า 40 ปี ซึ่งเป็น “สิ่งที่ฉันเขียนขึ้น”
- เป้าหมายของการเผยแพร่คือเพื่อให้ผู้อื่นนำโค้ดเหล่านี้ไปใช้ประโยชน์ หรือเรียนรู้บางส่วนจากมันได้
- เอกสารที่หน้าเผยแพร่แนะนำไว้ด้วย:
ระบบปฏิบัติการ เคอร์เนล เวอร์ชวลแมชชีน และการจำลองระบบ
- ARMOS: เคอร์เนลแบบมัลติโปรเซส/ทาสก์ สำหรับ ARM
- CUBIX: ระบบปฏิบัติการสำหรับ CPU 6809
- DMF: OS ยุคแรกในช่วง Altair 1980
- DVM: Dunfield Virtual Machine
- SIMSYS: ระบบที่เกี่ยวข้องกับ Altair, D6809, H8, Horizon, Mod8
- MONITORS: มอนิเตอร์สำหรับ โปรเซสเซอร์ฝังตัว หลายชนิด
- 8051ICE: in-circuit emulator ที่ใช้ EMILY
- EMILY52: อีมูเลเตอร์ 8052
คอมไพเลอร์ แอสเซมเบลอร์ ดีบักเกอร์ และเครื่องมือช่วยพัฒนา
- MICRO-C: Micro-C Compiler
- MCSAMPLE: ตัวอย่างโปรแกรม Micro-C
- XASM: cross assembler และเครื่องมือ
- DISASM: cross disassembler
- DMS: ดีบักเกอร์ Dunfield MicroScope
- DESMO: Debug Scripting Monitor
- DDSIDE: IDE ของ Dunfield Development Systems
- BLDTOOL: เครื่องมือช่วยงาน build
- PUBSRC: เครื่องมือดูแลส่วนซอร์สโค้ดสาธารณะ
- HFC: Help File Compiler
- ESL: Extensible Script Language
ยูทิลิตีสำหรับ DOS ไฟล์ ดิสก์ การแก้ไข และการแพ็กเกจ
- DBBD: ฟลอปปีดิสก์สำหรับบูต DosBox
- DBUTIL: ยูทิลิตี DosBox
- DD_DBSRC: source code tree ของ DosBox
- DOSUTIL: ยูทิลิตี DOS หลายรายการ
- FDI: Floppy Disk Image
- IMDSRC: ImageDisk
- EDT: โปรแกรมแก้ไขข้อความ EDT
- ELF: เครื่องมือแก้ไขชื่อไฟล์แบบยาว
- FTOOLS: เครื่องมือหลายอย่างสำหรับงานไฟล์
- SYNC: ซิงก์ไดเรกทอรีทรีสองชุด
- ZDIR: แสดงรายการไฟล์ใน ZIP และ
touch - MAR: MicroARchiver ที่ใช้บีบอัดไฟล์ติดตั้ง
- MKPKG: สร้างไฟล์ติดตั้งแพ็กเกจ
.exeเดี่ยว - ESP: แพตช์สตริงในไฟล์ปฏิบัติการ
- PT: เครื่องมือ PaperTape
- MICROCAD: โปรแกรมวาด CAD ขนาดเล็กมาก
ฮาร์ดแวร์ การสื่อสาร การควบคุม และโปรเจ็กต์ส่วนตัว
- DARC: Dunfield Amateur Radio Controller
- HTX242: ควบคุมทรานซีฟเวอร์วิทยุสมัครเล่น RS HTX-242
- ICOMCIV: โค้ดอินเทอร์เฟซ ICOM CI-V สำหรับวิทยุสมัครเล่น
- IR232: รีโมตอินฟราเรดแบบเรียนรู้ผ่านพอร์ตอนุกรม RS-232
- ETTY: Ethernet TTY
- SNIFF: Ethernet sniffer
- DLM: Data Line Monitor
- ITS: Interactive Terminal Switch
- DDLINK: DavesDataLink สำหรับถ่ายโอนไฟล์ผ่าน COM, LPT, NET
- SERCNCT: สลับใช้งานหลายอุปกรณ์บนพอร์ต COM เดียว
- DBOX: ตัวควบคุม Sony VCR
- DVDROBOT: หุ่นยนต์ที่สร้างขึ้นเพื่ออ่าน DVD 1,500 แผ่น
- EPROM: โปรแกรมเมอร์ EPROM
- 8031DWG: ตัวอย่างการออกแบบบนพื้นฐาน 8031
- X10CTRL: ควบคุมอุปกรณ์ X10 จากพีซี
- RINGSW: สวิตช์ distinctive ring สำหรับสายโทรศัพท์
- PC100: VT-100 terminal emulator
- LABTOOLS: เครื่องมือแล็บ/ทดสอบหลายรายการ
- CAM: โปรเจ็กต์สำหรับเด็กที่มีความบกพร่องทางพัฒนาการ
- MACMON: มอนิเตอร์/บันทึกการใช้งานเครือข่ายของเด็ก
- TRANZTCL: เครื่องมือพัฒนา Verifone TRANZ PointOfSale
1 ความคิดเห็น
ความเห็นจาก Hacker News
ลองไล่ดู DOSUTIL.ZIP แล้ว ชอบโปรแกรม C ที่เรียบง่ายและสง่างามมาก
หลายตัวใช้มาตรฐาน C
#includeแค่ 1–2 บรรทัด และในโค้ด C 20,000 บรรทัดมี#ifแค่ 24 จุดก็น่าประทับใจมากประสบการณ์ที่ได้อ่านโค้ดเบสแบบนี้เป็นแรงบันดาลใจตอนเริ่มทำ Cosmopolitan Libc
#ifลงได้มากถึงอย่างนั้นถ้าเทียบแบบเดียวกันจริงๆ
usestatement ก็มีแค่ 2 บรรทัดธรรมเนียม
True=7ในSTYLE.TXTดูแปลกตาเนื้อหาคือด้วยประสบการณ์กับโค้ดระดับล่างและฮาร์ดแวร์ ผู้เขียนพยายาม “ลดสิ่งที่อาจผิดพลาดได้ในระดับล่างให้น้อยที่สุด” จึงอาศัยข้อเท็จจริงที่ว่าใน C นั้น
0==FALSE,!0==TRUEแล้วใช้7แทนค่าจริงแทน1บ้างเป็นการเลือกตามความเคยชินว่าความต่าง 3 บิตน่าจะดีกว่าความต่าง 1 บิต แต่เจ้าตัวก็ยอมรับเองว่ามันออกจะงี่เง่า เพราะถ้าฮาร์ดแวร์ผิดพลาดระดับ 1 บิตจริง ระบบส่วนใหญ่ก็คงพังไปแล้ว
เลยสงสัยว่าสมัยก่อน การพลิกกลับของบิตแบบสุ่ม จนทำให้เงื่อนไขพังนั้นเกิดบ่อยหรือเปล่า
ต้องกำหนดด้วยว่าระหว่างที่ล้มเหลวจะถือว่า branch ไหนยังรันได้อย่างปลอดภัย จะนับจำนวนบิตของแต่ละเงื่อนไขแล้วถ้า 1 มากกว่า 0 จึงถือว่าเป็นจริงหรือไม่ และถ้าบิตพลิกโดยไม่มีการแก้ไขข้อผิดพลาด จะล็อกหรือแจ้งผู้ดูแลอย่างไร
รหัสตรวจจับข้อผิดพลาดมีประโยชน์ในบางจุด แต่แค่กำหนดให้ค่าจริงเป็น 7 อย่างเดียวยังไม่พอ
ถึงอย่างนั้นการอ่านเอกสารสไตล์ก็สนุกดี และชอบที่เปิดเผยทุกอย่างไว้แบบนี้ ดูเหมือนน่าจะมีเครื่องมือที่เหมาะเป๊ะสำหรับใครสักคนอยู่แน่
0xA5(1010 0101) เพื่อส่ง ลำดับบิตสลับกัน แบบดัดแปลงเล็กน้อยเป็นวิธีที่ตั้งใจตรวจความเป็นไปได้ของความขัดข้องให้ได้มากที่สุดในครั้งเดียว
TRUE=7ก็ไม่ใช่คำตอบจริงๆถ้าเป็นตัวแปรบูลีน ก็ต้องเขียน
if (var == TRUE),else if (var == FALSE)และกำหนดว่าจะทำอะไรเมื่อเป็นค่าอื่นในทุกเงื่อนไข โดยโค้ดส่วนจัดการนั้นเองก็ต้องไม่ชนกันด้วยแถมการพลิกของบิตยังอาจกระทบตัวแปรที่ใช้ใน
switchหรือเงื่อนไขอย่างif (i > 17)รวมถึง pointer, return address บนสแต็ก และตัวโค้ดเองได้ด้วยอย่างมากก็เป็นทางแก้เฉพาะบางส่วน และการทำจริงก็ไม่ใช่เรื่องเล็ก จึงยากจะมองว่าเป็นธรรมเนียมมาตรฐาน
ส่วนตัวคิดว่าฉันคงใช้
-1เสียดายมากที่ไม่เก็บโค้ดเก่าๆ ไว้ให้ดี
ทั้ง เกมงู ที่เป็นโปรแกรมไม่พื้นๆ ชิ้นแรก ยูทิลิตีตัวแรกที่เขียนด้วยแอสเซมบลี ไดรเวอร์อุปกรณ์ตัวแรกสำหรับเครื่องพิมพ์ Centronics และปฏิทินถาวรที่ทำด้วย Pascal ภายในชั่วโมงเดียวตอนเมาค้างหนักเพราะเป็นงานมหาวิทยาลัย ล้วนเคยคิดว่าเล็กน้อยเกินกว่าจะเก็บไว้
สุดท้ายเลยไม่เหลือโค้ดก่อนปลายยุค 1990 อยู่เลย นักพัฒนารุ่นเยาว์ควรเก็บโค้ดของตัวเองไว้ให้ดี
แน่นอนว่าถ้าบริการ “ฟรี” แบบนี้ปิดตัวลงก็มีปัญหาเหมือนกัน ดังนั้น self-hosting ก็ยังมีประโยชน์
ตอนนั้น TSR ดูเหมือนเวทมนตร์เลย ของพวกนี้อาจยังอยู่สักที่ในแผ่นฟลอปปีดิสก์ใต้ดินบ้านแม่ก็ได้
บทความที่ผู้เขียนย้อนเล่าเหตุการณ์เกือบเสียชีวิตในปี 2019 ก็น่าอ่านเหมือนกัน: https://dunfield.themindfactory.com/2019.htm
ผลตรวจแย่มากจนมีหมอคนหนึ่งถึงกับปฏิเสธรักษา เพราะกลัวว่าจะเสียชีวิตระหว่างตรวจเมื่อไรก็ได้
แต่จนถึงตอนนี้เขาก็ยังมีชีวิตอยู่ ใช้ชีวิตตามปกติ และยังไปวิ่งที่ชายหาดทุกเช้าวันเสาร์ ผลตรวจไม่ได้ดีขึ้นและยังหอบง่ายตลอด แต่เหมือนเป็นคนที่ปฏิเสธจะตายเฉยๆ
คล้ายกับที่หมอในลิงก์พูดว่า “ดูอาการดีกว่าที่อยู่บนเอกสารมาก”
ในบทความมีช่วงหนึ่งที่บอกว่าแม้แต่ “การอุ้มลูก การนอนบนเตียงตัวเอง การกินอาหาร และการใช้มือทำงานเล็กน้อย” ก็ถูกปฏิเสธไปหมด ซึ่งตอนพ่อของฉันเป็นมะเร็งเม็ดเลือดขาวกับปอดบวม อาการไม่ดีขึ้นและยังถอดท่อช่วยหายใจไม่ได้ หมอก็พูดหนักแน่นแบบเดียวกันว่าจะเหลือความพิการถาวรไปตลอดชีวิต
ดีมากเลย ฉันเคยคิดหลายครั้งว่าอยากลองทำอะไรคล้าย ๆ กันสักวัน
มันคล้ายกับการได้รับมรดกจากปู่ย่าตายาย มีทั้งอัญมณีจริงและของแปลกน่าสนใจปะปนอยู่ท่ามกลางของจิปาถะและขยะ แต่ทั้งหมดนั้นสะท้อนเรื่องราวของคนจริง ๆ ที่มีชีวิตอันอุดมสมบูรณ์และน่าสนใจ
แค่ไฮไลต์ไม่กี่อย่างไม่อาจถ่ายทอดชีวิตนั้นได้อย่างเหมาะสม
โชคดีที่ยังเหลือ ตัวจัดสรรหน่วยความจำ เชิงพาณิชย์ที่ทำไว้ช่วงปลายยุค 90 อยู่ มันเป็นแบบเธรดเดี่ยวและรองรับแค่ Metrowerks CodeWarrior กับ MacOS รุ่นเก่า แต่เป็นตัวจัดสรรที่เร็วที่สุดและแทบไม่มีบั๊กที่สุดบน Mac
พอ MacOS X ออกมาก็หมดประโยชน์ และไม่รู้ว่าตอนนี้จะยังมีใครสนใจไหม
อย่างที่บอกเมื่อวาน ฉันทำซอร์สโค้ด Trapeze หายไปแล้ว(https://en.wikipedia.org/wiki/Trapeze_(spreadsheet_program)) ดูเหมือนฉันไม่เคยคิดจะเก็บผลงานไว้เพื่อแชร์ในวันที่ไม่มีใครสนใจมันแล้วในภายหลังเลย
เจ๋งมาก เมื่อเทียบกับสิ่งที่ประวัติโค้ดของฉันน่าจะดูเป็นในอนาคต มันให้ความรู้สึกเหมือนเป็น โค้ดที่บริสุทธิ์ มาก
ในปี 2040 โค้ดของฉันคงแสดงร่องรอยของการใช้ไลบรารีและเฟรมเวิร์กจำนวนมากที่ “ทุกวันนี้ไม่มีใครใช้แล้ว”
มันไม่ใช่เรื่องดีหรือแย่ แค่เป็นภาพสะท้อนของยุคสมัย
แนวปฏิบัติการพัฒนายอดนิยมทุกวันนี้ ชั่วคราวและเปราะบาง อย่างน่าตกใจ โปรเจกต์ที่ถูกปล่อยทิ้งไว้แล้วจะอยู่รอดได้ 10 ปีก็แทบไม่มีแล้ว ยิ่ง 40 ปียิ่งยากเข้าไปใหญ่
pip installกับnpm installพวกนี้สุดท้ายก็จะใช้การไม่ได้ทั้งหมดผมคิดว่ายูทิลิตีที่ทรงอิทธิพลที่สุดคือ ImageDisk
มันถูกใช้ในการเก็บรักษาฟลอปปีดิสก์จากคอมพิวเตอร์หลากหลายประเภทโดยใช้ IBM PC และซอฟต์แวร์เก่าจำนวนมากบน bitsavers.org กับ archive.org ก็ถูกกู้คืนด้วยเครื่องมือนี้
ในนิยาย A Deepness in the Sky ของ Vernor Vinge มีสังคมมนุษย์ในอีกหลายพันปีข้างหน้า ซึ่งซอฟต์แวร์แทบทั้งหมดถูกเขียนไว้แล้ว และปัญหามีเพียงการตามหามันให้เจอ
ดังนั้นจึงมีโปรแกรมเมอร์-นักโบราณคดีคอยค้นคลังข้อมูล และถ้าจำเป็นก็รันโค้ดในอีมูเลเตอร์ซ้อนอีมูเลเตอร์ซ้อนอีมูเลเตอร์: https://garethrees.org/2013/06/12/archaeology/
คุณเองก็มีส่วนเติมกองสมบัติที่วันหนึ่งจะเป็นประโยชน์ต่อใครสักคน ไม่ว่าจะเป็นพรุ่งนี้หรืออีก 5,000 ปีข้างหน้า
มีมุกเรื่องการแก้บั๊กครั้งสุดท้ายก่อนเกษียณคือ ฉันลองเปิด micro-cad แล้วเจอ 404
URL: https://dunfield.themindfactory.com/dnld/sc/MICROCAD.ZIP
พฤติกรรมที่คาดหวังคือควรดาวน์โหลดไฟล์
.zipได้MCSAMPLEจะมีทั้งหมดรวมอยู่ด้วยยอดเยี่ยมมาก ฉันสะสม “ไบเบิล” ส่วนตัวไว้หลายชุดที่มักเปิดดูเสมอเวลาใช้ภาษาใดภาษาหนึ่งหรือทำงานอัตโนมัติบางอย่าง และยังมีวิธีจัดระเบียบหลายแบบที่ได้เรียนรู้จาก HN
เพียงแต่ฉันไม่เคยคิดจะเผยแพร่มัน เพราะมันดูเป็นเรื่องส่วนตัวและเฉพาะทางกับกระบวนความคิดของฉันมากเกินไป
แต่พอได้เห็นของพวกนี้แล้วก็รู้สึกมีแรงบันดาลใจ เป็นไอเดียที่ยอดเยี่ยมจริง ๆ และถ้าทำได้ฉันก็อยากสนับสนุนเป็นเงินเพื่อแสดงความขอบคุณสำหรับโปรเจกต์หลังเกษียณนี้
แล้วก็อยากรู้ว่าคุณได้เรียนรู้วิธีจัดระเบียบแบบไหนมาบ้าง ฉันสนใจจะเรียนรู้เคล็ดลับเพิ่มประสิทธิภาพหรือซอฟต์แวร์ของคนอื่นอยู่เสมอ
ถ้าสนใจ ฉันอยากลองแลกไฟล์กันดู คิดว่าน่าจะได้เรียนรู้อะไรจากของคุณเยอะมาก ชื่อผู้ใช้ Gmail ของฉันเหมือนกับชื่อผู้ใช้ HN