5 poin oleh GN⁺ 2023-11-04 | 1 komentar | Bagikan ke WhatsApp
  • Seorang pengembang, sebagai bagian dari masa pensiunnya, membuka kode sumber yang telah dikumpulkan selama lebih dari 40 tahun, sehingga orang lain bisa langsung menelaah sistem lama, alat, dan proyek pribadinya
  • Cakupan yang dibuka mencakup sistem operasi dan kernel, termasuk kernel multi-proses/multi-tugas untuk ARM, sistem operasi untuk CPU 6809, hingga OS awal dari era Altair 1980
  • Alat pengembangan tingkat rendah seperti Micro-C Compiler, cross assembler, disassembler, emulator 8052, dan debugger juga disediakan
  • Berbagai utilitas kerja PC juga dirilis secara luas, seperti DOSBox, utilitas DOS, sinkronisasi file, pemrosesan ZIP, pembuatan paket instalasi, dan editor teks
  • Bahkan mencakup proyek perangkat keras pribadi seperti radio amatir, remote inframerah RS-232, Ethernet TTY, kontrol X10, hingga robot untuk membaca 1.500 DVD, sehingga memiliki nilai arsip yang tinggi

Tujuan publikasi dan dokumen panduan

  • Sebagai bagian dari pensiun, ia membuka kode sumber yang telah dikumpulkan selama lebih dari 40 tahun yang termasuk dalam kategori “hal-hal yang saya tulis”
  • Tujuan publikasi ini adalah agar orang lain bisa memanfaatkan kode tersebut atau belajar dari sebagian isinya
  • Halaman publikasi juga menyertakan dokumen berikut:

Sistem operasi, kernel, mesin virtual, simulasi

  • ARMOS: kernel multi-proses/multi-tugas untuk ARM
  • CUBIX: sistem operasi untuk CPU 6809
  • DMF: OS awal dari era Altair 1980
  • DVM: Dunfield Virtual Machine
  • SIMSYS: sistem terkait Altair, D6809, H8, Horizon, dan Mod8
  • MONITORS: monitor untuk berbagai prosesor embedded
  • 8051ICE: emulator in-circuit yang menggunakan EMILY
  • EMILY52: emulator 8052

Kompiler, assembler, debugger, alat bantu pengembangan

  • MICRO-C: Micro-C Compiler
  • MCSAMPLE: program contoh Micro-C
  • XASM: cross assembler dan alat terkait
  • DISASM: cross disassembler
  • DMS: debugger Dunfield MicroScope
  • DESMO: Debug Scripting Monitor
  • DDSIDE: IDE Dunfield Development Systems
  • BLDTOOL: alat untuk membantu pekerjaan build
  • PUBSRC: alat pemeliharaan bagian sumber publik
  • HFC: Help File Compiler
  • ESL: Extensible Script Language

Utilitas DOS, file, disk, pengeditan, dan packaging

  • DBBD: floppy disk boot DosBox
  • DBUTIL: utilitas DosBox
  • DD_DBSRC: tree kode sumber DosBox
  • DOSUTIL: berbagai utilitas DOS
  • FDI: Floppy Disk Image
  • IMDSRC: ImageDisk
  • EDT: editor teks EDT
  • ELF: alat pengedit nama file panjang
  • FTOOLS: berbagai alat untuk pekerjaan file
  • SYNC: sinkronisasi dua tree direktori
  • ZDIR: menampilkan daftar file di dalam ZIP dan touch
  • MAR: MicroARchiver yang dulu digunakan untuk mengompresi file instalasi
  • MKPKG: membuat file instalasi paket .exe tunggal
  • ESP: patch string file executable
  • PT: alat PaperTape
  • MICROCAD: program gambar CAD yang sangat kecil

Perangkat keras, komunikasi, kontrol, proyek pribadi

  • DARC: Dunfield Amateur Radio Controller
  • HTX242: kontrol transceiver amatir RS HTX-242
  • ICOMCIV: kode antarmuka ICOM CI-V untuk radio amatir
  • IR232: remote pembelajar inframerah serial RS-232
  • ETTY: Ethernet TTY
  • SNIFF: sniffer Ethernet
  • DLM: Data Line Monitor
  • ITS: Interactive Terminal Switch
  • DDLINK: DavesDataLink untuk transfer file COM, LPT, NET
  • SERCNCT: beralih di antara beberapa perangkat pada satu port COM
  • DBOX: pengendali Sony VCR
  • DVDROBOT: robot yang dibuat untuk membaca 1.500 DVD
  • EPROM: programmer EPROM
  • 8031DWG: contoh desain berbasis 8031
  • X10CTRL: kontrol perangkat X10 dari PC
  • RINGSW: sakelar distinctive ring untuk saluran telepon
  • PC100: emulator terminal VT-100
  • LABTOOLS: berbagai alat laboratorium/pengujian
  • CAM: proyek untuk anak dengan gangguan perkembangan
  • MACMON: pemantauan/log penggunaan jaringan anak-anak
  • TRANZTCL: alat pengembangan Verifone TRANZ PointOfSale

1 komentar

 
GN⁺ 2023-11-04
Komentar Hacker News
  • Setelah melihat-lihat DOSUTIL.ZIP, saya sangat suka program-program C yang sederhana dan elegan
    Cukup mengesankan juga bahwa banyak di antaranya hanya memakai 1–2 baris #include C standar, dan dalam 20 ribu baris kode C hanya ada 24 #if
    Pengalaman membaca codebase seperti ini memberi inspirasi saat memulai pekerjaan Cosmopolitan Libc

    • Jika target build hanya satu, jumlah makro #if bisa banyak dikurangi
    • Compiler C lama dulu membiarkan lewat berbagai kesalahan yang akan ditangkap dengan benar oleh compiler C modern
    • Di sisi Rust, saya menulis HTTP listener sederhana dengan satu route, tetapi Cargo menarik sekitar 105 dependensi hanya untuk membangun
      Meski begitu, untuk perbandingan yang setara, memang hanya ada 2 pernyataan use
    • Sebaliknya, di C juga ada hash table yang diimplementasikan hanya dengan makro. Cukup keren: https://troydhanson.github.io/uthash/
  • Konvensi True=7 di STYLE.TXT terasa asing
    Karena pengalaman dengan kode level rendah dan perangkat keras, ada penjelasan bahwa demi “meminimalkan hal yang bisa salah di level rendah”, mereka kadang memakai 7 alih-alih 1 untuk nilai benar di C, dengan memanfaatkan fakta bahwa 0==FALSE, !0==TRUE
    Ini adalah pilihan yang lebih bersifat kebiasaan, bahwa selisih 3 bit terasa lebih baik daripada 1 bit, tetapi dia sendiri mengakui ini bodoh karena jika benar terjadi error perangkat keras 1 bit seperti itu, sebagian besar sistem kemungkinan sudah rusak
    Saya jadi penasaran apakah dulu bit flip acak memang sering merusak kondisi percabangan

    • Kalaupun itu pernah terjadi, semua kondisi tidak bisa diperlakukan seperti boolean 3-keadaan
      Kita tetap harus menentukan cabang mana yang diasumsikan aman untuk dijalankan saat terjadi kegagalan, apakah jumlah bit pada tiap kondisi dihitung lalu dianggap benar jika 1 lebih banyak daripada 0, dan apakah bit yang terbalik tanpa koreksi error harus dicatat di log atau diberitahukan ke operator
      Ada tempat di mana kode deteksi error memang berguna, tetapi sekadar menetapkan benar sebagai 7 saja tidak cukup
    • Penulisnya sendiri pada dasarnya mengakui itu kebiasaan yang bodoh, dan malah membuat maksudnya kurang jelas
      Meski begitu, membaca dokumen gayanya tetap menyenangkan, dan saya suka semuanya dibuka seperti ini. Sepertinya pasti ada alat yang pas untuk seseorang
    • Saat memeriksa apakah jalur data serial berfungsi, orang memakai 0xA5(1010 0101) untuk mengirim pola bit bergantian yang sedikit dimodifikasi
      Ini cara untuk memeriksa sebanyak mungkin kemungkinan kerusakan sekaligus
    • Kalau sampai harus mengkhawatirkan hal seperti itu, TRUE=7 jelas bukan solusi yang sebenarnya
      Untuk variabel boolean, di setiap kondisi kita harus menangani if (var == TRUE), else if (var == FALSE), dan apa yang harus dilakukan jika nilainya selain itu, dan kode penanganan itu sendiri juga harus tahan terhadap error
      Selain itu, bit flip juga bisa memengaruhi variabel yang dipakai di switch, kondisi seperti if (i > 17), pointer, alamat pengembalian di stack, bahkan kode itu sendiri
      Paling-paling ini hanya solusi yang sangat parsial dan implementasinya juga tidak sepele, jadi sulit dianggap sebagai konvensi standar
    • Ini bukan masalah yang umum, lebih ke “mungkin saja terjadi, jadi kalau mudah, mari cegah di tempat yang gampang”
      Secara pribadi, saya mungkin akan memakai -1
  • Sangat menyesal karena dulu tidak menyimpan kode lama dengan baik
    Mulai dari game Snake pertama yang benar-benar non-trivial, utilitas pertama yang dibuat dalam assembly, driver perangkat pertama untuk printer Centronics, sampai kalender abadi yang dibuat dalam Pascal untuk tugas kuliah dalam satu jam saat sedang mabuk berat, semuanya dulu dianggap remeh dan tidak layak disimpan
    Akibatnya, tidak ada satu pun kode sebelum akhir 1990-an yang tersisa. Para pengembang muda sebaiknya menyimpan kode mereka dengan baik

    • Anak-anak zaman sekarang memakai Git dan berbagai hub hosting, jadi kecil kemungkinan kodenya hilang; dalam hal ini, masalah ini mungkin hanya dialami generasi kita
      Tentu saja, kalau layanan “gratis” seperti itu tutup, itu juga jadi masalah, jadi self-hosting tetap berguna
    • Banyak kode lama saya masih ada, tetapi terlalu memalukan untuk dilihat lagi
    • Saya juga mirip. Saya pernah membuat program spreadsheet DOS, ada chart modeX dan formula juga, lalu beberapa game dan beberapa virus
      Waktu itu TSR terasa seperti sihir. Mungkin semuanya masih ada di suatu disket di ruang bawah tanah rumah ibu saya
  • Tulisan penulis tentang saat dia nyaris meninggal pada 2019 juga layak dibaca: https://dunfield.themindfactory.com/2019.htm

    • Kuat sekali. Ini mengingatkan saya pada mertua laki-laki saya yang mengalami serangan jantung pada 2015 dan jantungnya rusak 90%
      Hasil pemeriksaannya begitu buruk sampai ada dokter yang menolak menanganinya karena takut dia bisa meninggal kapan saja saat sedang konsultasi
      Tapi sampai sekarang dia masih hidup dan hidup normal, bahkan setiap Sabtu masih lari di pantai. Hasil tesnya tidak membaik dan dia selalu sesak napas, tetapi rasanya dia seperti orang yang menolak mati begitu saja
      Mirip dengan perkataan dokter di tautan itu, bahwa “dia tampak jauh lebih baik daripada yang tertulis di dokumen”
    • Saya penasaran kenapa para dokter bisa seperti itu
      Di tulisannya ada bagian bahwa bahkan hal-hal seperti “memeluk anak-anaknya, tidur di tempat tidurnya sendiri, makan, dan melakukan sedikit pekerjaan dengan tangan” pun semuanya dilarang, dan saya mengalami hal yang sama ketika ayah saya menderita leukemia dan pneumonia, tidak kunjung membaik, dan tidak bisa dilepas dari alat bantu napas; para dokter juga dengan sangat yakin mengatakan dia akan cacat seumur hidup
    • Anehnya, ini mengingatkan saya pada The Shadow Out of Time karya H. P. Lovecraft
    • Kelam, tetapi pada akhirnya terasa seperti happy ending
  • Sangat bagus. Saya sudah beberapa kali berpikir ingin melakukan hal serupa suatu hari nanti
    Rasanya mirip menerima warisan dari kakek-nenek. Mungkin ada permata sungguhan dan benda-benda aneh yang tercampur di antara barang rongsokan dan sampah, tetapi keseluruhannya menunjukkan kisah orang nyata yang menjalani hidup yang kaya dan menarik
    Hanya dengan beberapa sorotan saja, hidup itu tidak akan bisa tergambarkan dengan baik

    • Kenapa harus menunggu sampai pensiun? Kenapa tidak dilakukan sekarang saja?
    • Saya berharap dulu saya menyimpan sebagian hal yang saya buat selama 40 tahun memrogram, tetapi setiap kali pindah ke pekerjaan baru semuanya tertinggal
      Untungnya, allocator memori komersial yang saya buat pada akhir 1990-an masih ada. Itu single-threaded dan hanya mendukung Metrowerks CodeWarrior serta MacOS lama, tetapi saat itu merupakan allocator tercepat dan paling bebas bug di Mac
      Setelah MacOS X muncul, itu jadi tidak berguna lagi, dan saya juga tidak tahu siapa yang akan tertarik sekarang
      Seperti yang saya katakan kemarin, source code Trapeze hilang(https://en.wikipedia.org/wiki/Trapeze_(spreadsheet_program)). Sepertinya saya tidak pernah terpikir untuk menyimpan hasil kerja saya agar bisa dibagikan nanti, saat tidak ada lagi yang peduli
  • Keren sekali. Dibandingkan dengan seperti apa riwayat kode saya akan terlihat nanti, ini terasa seperti kode yang murni
    Pada 2040, kode saya sepertinya akan memperlihatkan jejak penggunaan banyak library dan framework yang “sekarang sudah tidak dipakai siapa-siapa”
    Ini bukan soal baik atau buruk, hanya cerminan zamannya

    • Kalau dependensi itu tidak disimpan sendiri, nanti mungkin tidak akan ada yang bisa membaca atau membangun ulang kodenya dengan benar
      Praktik pengembangan yang populer saat ini ternyata sangat sementara dan rapuh. Hampir tidak ada proyek yang saya kerjakan sekarang yang bisa dibiarkan begitu saja dan bertahan 10 tahun, apalagi 40 tahun
    • pip install dan npm install seperti ini pada akhirnya akan menjadi tidak berguna
  • Menurut saya utilitas yang paling berpengaruh adalah ImageDisk
    Itu digunakan untuk melestarikan floppy disk dari berbagai jenis komputer dengan IBM PC, dan banyak perangkat lunak lama di bitsavers.org dan archive.org dipulihkan dengan alat ini

  • Dalam A Deepness in the Sky karya Vernor Vinge, ada masyarakat manusia ribuan tahun di masa depan, dan hampir semua perangkat lunak sudah pernah ditulis; masalahnya hanya bagaimana menemukannya
    Jadi ada programmer-arkeolog yang membongkar arsip, dan bila perlu menjalankan kode di emulator di dalam emulator di dalam emulator: https://garethrees.org/2013/06/12/archaeology/
    Artinya, Anda juga telah menyumbang ke tumpukan harta karun yang akan bermanfaat bagi seseorang, entah besok atau 5.000 tahun lagi

    • Para insinyur penggemar Vinge sangat menyukai bagian yang menyebut bahwa kalender masa depan yang jauh pada era modern ini sering dianggap dihitung dari pendaratan pertama manusia di bulan, padahal sebenarnya dihitung dari Unix Epoch
  • Sebagai candaan tentang perbaikan bug terakhir sebelum pensiun, saya mencoba melihat micro-cad tetapi mendapat 404
    URL: https://dunfield.themindfactory.com/dnld/sc/MICROCAD.ZIP
    Perilaku yang diharapkan adalah bisa mengunduh file .zip

    • Sepertinya semuanya ikut disertakan di zip MCSAMPLE
    • Saya juga menemui 404 yang sama. Tidak banyak program CAD asli yang tersisa, jadi saya benar-benar ingin melihat ini
  • Luar biasa. Saya juga sudah menumpuk beberapa “bibel” pribadi yang selalu saya simpan di dekat saya saat bekerja dengan bahasa tertentu atau tugas otomatisasi tertentu, dan ada juga cukup banyak cara pengorganisasian yang saya pelajari dari HN
    Hanya saja, rasanya terlalu pribadi dan terlalu spesifik dengan proses berpikir saya sendiri, jadi saya tidak pernah terpikir untuk memublikasikannya
    Tapi setelah melihat bahan-bahan seperti ini, saya jadi terinspirasi. Ini ide yang sangat keren, dan kalau memungkinkan saya juga ingin memberi dukungan finansial sebagai tanda terima kasih untuk proyek pensiun ini

    • Saya penasaran, apa sebenarnya yang dimaksud dengan “bibel” di sini
      Dan saya juga ingin tahu metode pengorganisasian seperti apa yang Anda pelajari. Saya selalu tertarik mempelajari tips produktivitas atau software dari orang lain
    • Saya juga punya cukup banyak bibel seperti itu
      Kalau berminat, saya ingin saling bertukar file. Sepertinya saya bisa belajar banyak dari materi Anda. Nama pengguna Gmail saya sama dengan nama pengguna HN saya