Zum Ruhestand veröffentlicht ein Entwickler seinen in über 40 Jahren aufgebauten Quellcode
(dunfield.themindfactory.com)- Ein Entwickler veröffentlicht anlässlich seines Ruhestands den über mehr als 40 Jahre angesammelten Quellcode, sodass alte Systeme, Werkzeuge und persönliche Projekte direkt eingesehen werden können
- Der Umfang der Veröffentlichung reicht bis zu Betriebssystemen und Kerneln, darunter ein Multi-Prozess-/Task-Kernel für ARM, ein Betriebssystem für die 6809-CPU und ein frühes OS aus der Altair-1980-Ära
- Ebenfalls enthalten sind Low-Level-Entwicklungswerkzeuge wie der Micro-C Compiler, Cross-Assembler, Disassembler, ein 8052-Emulator und Debugger
- Breit veröffentlicht werden zudem Utilities für die PC-Arbeit wie DOSBox, DOS-Utilities, Dateisynchronisierung, ZIP-Verarbeitung, Erzeugung von Installationspaketen und Texteditoren
- Auch persönliche Hardwareprojekte wie Amateurfunk, eine RS-232-Infrarot-Fernbedienung, Ethernet TTY, X10-Steuerung und ein Roboter zum Einlesen von 1500 DVDs sind enthalten, was der Sammlung hohen Archivwert verleiht
Zweck der Veröffentlichung und Begleitdokumente
- Anlässlich seines Ruhestands veröffentlicht der Autor über 40 Jahre angesammelten Quellcode, also Dinge, „die ich geschrieben habe“
- Ziel der Veröffentlichung ist, dass andere diesen Code nützlich verwenden oder an Teilen davon lernen können
- Auf der Veröffentlichungsseite werden außerdem folgende Dokumente genannt:
Betriebssysteme, Kernel, virtuelle Maschinen, Simulation
- ARMOS: Multi-Prozess-/Task-Kernel für ARM
- CUBIX: Betriebssystem für die 6809-CPU
- DMF: frühes OS aus der Altair-1980-Ära
- DVM: Dunfield Virtual Machine
- SIMSYS: Systeme rund um Altair, D6809, H8, Horizon und Mod8
- MONITORS: Monitore für verschiedene Embedded-Prozessoren
- 8051ICE: In-Circuit-Emulator mit EMILY
- EMILY52: 8052-Emulator
Compiler, Assembler, Debugger, Entwicklungswerkzeuge
- MICRO-C: Micro-C Compiler
- MCSAMPLE: Beispielprogramme für Micro-C
- XASM: Cross-Assembler und Werkzeuge
- DISASM: Cross-Disassembler
- DMS: Dunfield MicroScope Debugger
- DESMO: Debug Scripting Monitor
- DDSIDE: Dunfield Development Systems IDE
- BLDTOOL: Werkzeug zur Unterstützung von Build-Aufgaben
- PUBSRC: Wartungswerkzeug für den Bereich veröffentlichter Quellcodes
- HFC: Help File Compiler
- ESL: Extensible Script Language
DOS-, Datei-, Disk-, Editier- und Packaging-Utilities
- DBBD: Boot-Floppy-Disk für DosBox
- DBUTIL: DosBox-Utilities
- DD_DBSRC: DosBox-Quellcodebaum
- DOSUTIL: verschiedene DOS-Utilities
- FDI: Floppy Disk Image
- IMDSRC: ImageDisk
- EDT: EDT-Texteditor
- ELF: Werkzeug zum Bearbeiten langer Dateinamen
- FTOOLS: verschiedene Werkzeuge für Dateioperationen
- SYNC: Synchronisierung zweier Verzeichnisbäume
- ZDIR: Dateien in ZIP-Archiven auflisten und
touch - MAR: MicroARchiver zum Komprimieren von Installationsdateien
- MKPKG: Erzeugung von Installationsdateien als einzelne
.exe-Pakete - ESP: Patchen von Zeichenketten in ausführbaren Dateien
- PT: PaperTape-Werkzeuge
- MICROCAD: sehr kleines CAD-Zeichenprogramm
Hardware, Kommunikation, Steuerung, persönliche Projekte
- DARC: Dunfield Amateur Radio Controller
- HTX242: Steuerung des Amateur-Transceivers RS HTX-242
- ICOMCIV: ICOM-CI-V-Interface-Code für den Amateurfunk
- IR232: lernfähige RS-232-Infrarot-Fernbedienung
- ETTY: Ethernet TTY
- SNIFF: Ethernet-Sniffer
- DLM: Data Line Monitor
- ITS: Interactive Terminal Switch
- DDLINK: DavesDataLink für Dateiübertragungen über COM, LPT und NET
- SERCNCT: Umschaltung mehrerer Geräte an einem COM-Port
- DBOX: Sony-VCR-Controller
- DVDROBOT: Roboter zum Einlesen von 1500 DVDs
- EPROM: EPROM-Programmiergerät
- 8031DWG: Musterdesign auf Basis des 8031
- X10CTRL: Steuerung von X10-Geräten vom PC aus
- RINGSW: Schalter für distinctive ring auf Telefonleitungen
- PC100: VT-100-Terminalemulator
- LABTOOLS: verschiedene Labor-/Testwerkzeuge
- CAM: Projekt für Kinder mit Entwicklungsstörungen
- MACMON: Überwachung/Protokollierung der Netzwerknutzung von Kindern
- TRANZTCL: Entwicklungstools für Verifone TRANZ PointOfSale
1 Kommentare
Hacker-News-Kommentare
Beim Durchsehen von DOSUTIL.ZIP gefallen mir die einfachen und eleganten C-Programme wirklich gut
Beeindruckend ist auch, dass viele davon nur ein bis zwei Zeilen Standard-C-
#includes verwenden und es in 20.000 Zeilen C-Code nur 24#ifs gibtDie Erfahrung, eine solche Codebase zu lesen, war eine Inspiration, als ich mit der Arbeit an Cosmopolitan Libc begann
#if-Makros stark reduzierenFür einen fairen Vergleich muss man aber sagen, dass es nur zwei
use-Anweisungen sindDie Konvention
True=7inSTYLE.TXTkam mir ungewohnt vorDort steht, dass man wegen Erfahrung mit Low-Level-Code und Hardware, um „auf niedriger Ebene möglichst wenig schiefgehen zu lassen“, in C manchmal
7statt1als wahr verwendet hat, unter Ausnutzung der Tatsache, dass0==FALSEund!0==TRUEgiltDas ist eine gewohnheitsmäßige Entscheidung, weil eine Differenz von 3 Bits besser sei als eine von 1 Bit; tatsächlich würde bei einem solchen 1-Bit-Hardwarefehler wohl der Großteil des Systems kaputtgehen, und der Autor räumt selbst ein, dass es töricht ist
Ich frage mich, ob früher zufällige Bit-Flips häufig Bedingungen zerstört haben
Man müsste festlegen, welcher Zweig im Fehlerfall sicher ausgeführt werden darf, ob man die Bits jeder Bedingung zählt und sie als wahr ansieht, wenn mehr Einsen als Nullen vorhanden sind, und ob man ohne Fehlerkorrektur protokolliert oder den Operator informiert, dass ein Bit umgekippt ist
Es gibt Bereiche, in denen Fehlererkennungscodes nützlich sind, aber einfach wahr als 7 festzulegen reicht nicht aus
Trotzdem hat es Spaß gemacht, das Style-Dokument zu lesen, und ich finde gut, dass er alles so offen zugänglich gemacht hat. Für irgendjemanden ist da bestimmt genau das passende Werkzeug dabei
0xA5(1010 0101), um eine leicht abgewandelte alternierende Bitfolge zu sendenSo versucht man, möglichst viele mögliche Fehler auf einmal zu erkennen
TRUE=7keine echte LösungBei einer booleschen Variable müsste man für jede Bedingung
if (var == TRUE),else if (var == FALSE)und den Fall anderer Werte behandeln, und dieser Behandlungscode selbst darf ebenfalls nicht abstürzenAußerdem können Bit-Flips auch Variablen betreffen, die in einem
switchverwendet werden, Bedingungen wieif (i > 17), Pointer, Rücksprungadressen auf dem Stack oder den Code selbstBestenfalls ist das eine sehr partielle Lösung, und die Umsetzung ist auch nicht trivial; als Standardkonvention kann man es daher kaum betrachten
Persönlich hätte ich vermutlich
-1verwendetIch bedauere sehr, dass ich meinen alten Code nicht ordentlich aufbewahrt habe
Mein erstes nicht triviales Programm, ein Snake-Spiel, mein erstes in Assembler geschriebenes Utility, mein erster Gerätetreiber für einen Centronics-Drucker und sogar ein in Pascal in einer Stunde mit heftigem Kater für eine Uni-Aufgabe geschriebener ewiger Kalender – all das hielt ich für belanglos und nicht aufhebenswert
Am Ende ist kein Code von vor Ende der 1990er übrig geblieben. Junge Entwickler sollten ihren Code gut aufbewahren
Natürlich wird es zum Problem, wenn solche „kostenlosen“ Dienste eingestellt werden, daher ist Self-Hosting ebenfalls sinnvoll
Damals wirkten TSRs wie Magie. Vielleicht liegt das alles noch irgendwo auf Disketten im Keller meiner Mutter
Auch der Text, in dem der Autor auf seinen Beinahe-Tod 2019 zurückblickt, ist lesenswert: https://dunfield.themindfactory.com/2019.htm
Seine Untersuchungsergebnisse waren so schlecht, dass ein Arzt die Behandlung verweigerte, aus Angst, er könne jederzeit während des Termins sterben
Aber er lebt immer noch, kommt normal zurecht und läuft jeden Samstag am Strand. Die Befunde sind nicht besser geworden und er ist ständig kurzatmig, aber er wirkt einfach wie jemand, der sich weigert zu sterben
Das ähnelt dem Satz des Arztes im Link: „Sie sehen viel besser aus, als es auf dem Papier steht“
In dem Text gab es die Stelle, dass ihm sogar Dinge wie „die Kinder umarmen, im eigenen Bett schlafen, essen und ein wenig mit den Händen arbeiten“ abgesprochen wurden; als sich mein Vater mit Leukämie und Lungenentzündung nicht besserte und nicht vom Beatmungsschlauch wegkam, sagten die Ärzte ebenso nachdrücklich, dass er lebenslang behindert sein werde
Wirklich gut. Ich habe schon oft daran gedacht, irgendwann einmal etwas Ähnliches zu machen.
Es ist ein bisschen so, als würde man von den Großeltern einen Nachlass bekommen. Echte Juwelen und kuriose Dinge werden zwischen Krimskrams und Müll liegen, aber das Ganze erzählt die Geschichte realer Menschen, die ein reiches und interessantes Leben geführt haben.
Mit ein paar Highlights allein lässt sich dieses Leben nicht wirklich einfangen.
Zum Glück habe ich noch einen kommerziellen Speicher-Allokator aus den späten 90ern. Er war single-threaded und unterstützte nur Metrowerks CodeWarrior und das alte MacOS, war aber der schnellste und fehlerfreieste Allokator auf dem Mac.
Mit dem Erscheinen von MacOS X wurde er nutzlos, und ich weiß nicht, wen das heute noch interessieren würde.
Wie ich gestern sagte, habe ich den Quellcode von Trapeze verloren (https://en.wikipedia.org/wiki/Trapeze_(spreadsheet_program)). Ich glaube, ich bin nie auf die Idee gekommen, meine Arbeit aufzubewahren, um sie später zu teilen, wenn sich niemand mehr darum kümmert.
Wirklich großartig. Verglichen damit, wie meine Code-Historie später einmal aussehen wird, wirkt das wie ziemlich reiner Code.
Im Jahr 2040 wird mein Code vermutlich Spuren davon zeigen, dass er jede Menge Bibliotheken und Frameworks verwendet hat, die „heute niemand mehr nutzt“.
Das ist keine Frage von gut oder schlecht, sondern nur ein Spiegel der Zeit.
Die heute beliebten Entwicklungspraktiken sind erstaunlich vergänglich und fragil. Von den heutigen Projekten werden nur sehr wenige 10 Jahre unbetreut überstehen, 40 Jahre erst recht nicht.
pip installundnpm installwird wertlos werden.Das einflussreichste Utility ist meiner Meinung nach ImageDisk.
Es wurde genutzt, um mit IBM-PCs Disketten aus verschiedensten Computertypen zu sichern, und viel alte Software auf bitsavers.org und archive.org wurde mit diesem Tool wiederhergestellt.
In Vernor Vinges A Deepness in the Sky gibt es eine menschliche Gesellschaft Tausende Jahre in der Zukunft, in der fast jede Software bereits geschrieben ist und das Problem nur darin besteht, sie zu finden.
Deshalb durchstöbern Programmierer-Archäologen Archive und führen Code bei Bedarf in einem Emulator in einem Emulator in einem Emulator aus: https://garethrees.org/2013/06/12/archaeology/
Du hast also zu einem Schatzhaufen beigetragen, von dem jemand profitieren wird, ob morgen oder in 5.000 Jahren.
Als Scherz über den letzten Bugfix kurz vor der Rente: Ich wollte mir micro-cad ansehen, bekam aber einen 404.
URL: https://dunfield.themindfactory.com/dnld/sc/MICROCAD.ZIP
Erwartetes Verhalten wäre, dass man die
.zip-Datei herunterladen kann.MCSAMPLE-Zip scheint das Ganze mit enthalten zu sein.Hervorragend. Ich habe mir einige persönliche „Bibeln“ aufgebaut, die ich bei bestimmten Sprachen oder Automatisierungsaufgaben immer griffbereit habe, und auch einige Organisationsmethoden, die ich auf HN gelernt habe.
Allerdings kamen sie mir immer zu persönlich und zu sehr auf meine Denkweise zugeschnitten vor, sodass ich nie daran gedacht habe, sie zu veröffentlichen.
Aber nachdem ich solche Materialien gesehen habe, fühle ich mich inspiriert. Eine wirklich großartige Idee, und wenn möglich würde ich das Ruhestandsprojekt auch gern als Dank finanziell unterstützen.
Und ich würde gern wissen, welche Organisationsmethoden du gelernt hast. Ich bin immer daran interessiert, Produktivitätstipps oder Software anderer Leute kennenzulernen.
Falls du Interesse hast, würde ich gern Dateien austauschen. Ich glaube, ich könnte aus deinen Materialien viel lernen. Mein Gmail-Nutzername ist derselbe wie mein HN-Nutzername.