Re: bootstrapping from COPY CON
Dave Long <[email protected]>
| Newsgroups | gmane.culture.people.kragen.discuss |
|---|---|
| Message-ID | <[email protected]> |
>> Imagine being given a 1982 era IBM PC with a floppy drive and a >> single disk that contains a bootable MS-DOS system with IO.SYS, >> MSDOS.SYS and COMMAND.COM (the minimum required to boot to a usable >> (for various values of “usable”) system at the time) and a stack of >> reference materials. Your goal (assuming you are a programmer) is to >> write a program that does something simple, like, play a game >> (however badly) of tic-tac-toe. No editor. No assembler. No >> compiler. No linker. Just COMMAND.COM and a stack of reference >> materials. > > Using modern tools as cognitive aids (so I didn’t have to > hand-assemble) and to diagnose problems allowed me to do this in a few > hours. It might have taken a few days in Sean’s scenario. Being the dinosaur that I am[0], I can partially explain why your approach was not too far off. Early PC's might have appeared to lack [1] development tools, but circa 1982 I had access to a microcomputer project (eventually killed by the PC's dominance), and although self- hosted tools did appear by the end of development, all of the initial work was done in a timeshared unix environment: sources were edited and cross-compiled on the mini(s) and the resulting executables transferred to the micros. No IDE's or mice, but they had full screen editors, makefiles, and a gcc-like toolchain. Set your xterm to 24x80 green-on-black[2] and the cross-compiling you were doing wouldn't be far off at all from industry practice 30 years ago. I haven't tried this myself yet, as some combination of Q, Freedos, or laptop prevents me from entering ALT-numerics in the dos box. However, I'd think two other tricks might come in handy for a pure bootstrap: - having command.com means you have batch files. granted, .bats have impoverished control structure, but it might save on some machine code in the bootstrap - copy also concatenates files; one could thus minimize transcription errors by using COPY CON for relatively short sequences, then splicing [3] them together to form the final executable. -Dave [0] I have, once in my life, programmed (an application, not an exercise) using front panel switches and the reference manual [1] this is not strictly true; it appears that DEBUG.COM was already present in MS-DOS 1.0, and already incorporated the symbolic assembler by 2.0 http://www.armory.com/~rstevew/Public/Tutor/Debug/debug-manual.html cf http://en.literateprograms.org/Hello_World_(IBM_PC_bootstrap) [2] http://upload.wikimedia.org/wikipedia/commons/2/23/Vt100- adventure.jpg [3] choose naturally concatenative machine code sequences, and it might even be about as easy as programming via DEBUG; after all, they both lack decent symbol table/dictionary support -- To unsubscribe: http://lists.canonical.org/mailman/listinfo/kragen-discuss