3 ms·
Oh, of course I wouldn't recommend ITS for real work today. I wouldn't recommend DOS for real work today, either. But hacking isn't always "real work", per se
by groovy2shoes 10y ago
Oh, of course I wouldn't recommend ITS for real work today. I wouldn't recommend DOS for real work today, either. But hacking isn't always "real work", per se: sometimes it's just tinkering, experimenting, learning, or pushing the system to its limits, etc. Hacking is an opportunity to be knowledgeable, intelligent, creative, and productive at the same time. You could say that, when it comes to hacking, Unix-like systems are like coloring books, in that they're already partially created for you, and whatever you come up with has to fit within that pre-defined framework. ITS and DOS, on the other hand, are more like a blank sheet of graph paper ;)
Here are some resources for DOS:
Ralf Brown's Interrupt List is very handy when doing low-level DOS programming: http://www.cs.cmu.edu/~ralf/files.html http://www.cs.cmu.edu/~ralf/files.html
The Intel architecture reference manuals, too: http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html http://www.intel.com/content/www/us/en/processors/architectu...
Delorie Software maintains a linklist for assorted documentation: http://www.delorie.com/djgpp/doc/ http://www.delorie.com/djgpp/doc/
You'll want a good assembler, too, even if you wind up writing most of your code in a high-level language. GNU as ("gas") is okay, but I prefer the Flat Assembler ("fasm"), the Netwide Assembler ("nasm"), or Yasm (... "yasm"). I think you can still get MASM from Microsoft, but I don't know if recent versions still support DOS targets. You can probably also find older versions of MASM and TASM online somewhere.
Sometimes I'll do my coding directly in DOS, if only for the nostalgia. You might have better luck using more modern tools for development and cross-compiling or cross-assembling. If you want some higher-level DOS tools, here's a (partial) rundown of what I've used:
For real-mode (16-bit) programming, it's hard to beat Borland's old "Turbo" line of tools. Borland used to have a "museum" site where you could download old versions of Turbo C, Turbo C++, and Turbo Pascal for DOS for free. I don't know if the museum is still around, but you should be able to find copies of the tools. There's also Pacific C which is freely available and includes a somewhat Turbo C++-style IDE (but with a different color scheme), and OpenWatcom, which is open-source nowadays and comes with a decent vi clone. I remember a few FORTHs for DOS, too; PC Forth was pretty nice. Might be able to find that somewhere on the 'net still.
For protected-mode (32-bit) programming, I'd recommend DJGPP (Delorie's GNU tools for DOS, including GCC, gmake, and gas), FreePascal, and/or FreeBasic. If I recall correctly, they all include a suitable DPMI server (a.k.a. DOS extender) to provide DOS syscalls in protected mode. OpenWatcom can target protected mode, too; its extender DOS4GW has not been open-sourced with the rest of the system (at least, it wasn't a few years ago). Regardless, DOS4GW is a solid extender and was very popular once upon a time.
Some even-higher-level languages run fine in DOS, too. Lua comes to mind, and I remember messing with Logo, Tcl, Common Lisp, and Scheme on DOS before (XLISP comes to mind). I think DJGPP might have a Perl interpreter for DOS, but since I've never liked Perl, my memory may be hazy on that one ;)
FreeDOS also has a package repository with loads of software including development tools.
I'm not aware of any tools for doing long-mode (64-bit) programming on DOS. I'd assume you'd at the very least either need a DPMI-type thing for long-mode (LPMI?), or you'd need to essentially rewrite all of the BIOS and DOS services in 64-bit code (and at that point, you probably might as well just be doing bare metal).
- qwertyuiop924 10y agoThanks. I do agree that hacking isn't always real work. Like I said, I have an account on one of the last public-access ITS systems in the world. And I have to say, coloring books are pretty fun. Which is to say, I really like UNIX. The (almost) everything is a file model makes dealing with external devices remarkably simple, compared to other systems. And the predisposal towards textuality makes system configuration fairly simple, with little need for special tools. Pipes and sockets make program composition simple, so you can build several small programs instead of one big one, or compose together smaller programs instead of writing a new one. And shell, while not perfect, makes simple automation easy. It's not a perfect system, but it usually works, and it's pretty damn elegant for a system built as what was effectively a weekend hack in the '70s. Oh, and do you know if any assemblers other than GAS support AT&T syntax? I think it's much nicer.
- groovy2shoes 10y ago> And I have to say, coloring books are pretty fun. Which is to say, I really like UNIX. The (almost) everything is a file model makes dealing with external devices remarkably simple, compared to other systems. And the predisposal towards textuality makes system configuration fairly simple, with little need for special tools. Pipes and sockets make program composition simple, so you can build several small programs instead of one big one, or compose together smaller programs instead of writing a new one. And shell, while not perfect, makes simple automation easy. I agree completely. But I still think it's fun to let loose on the hardware sometimes ;) > Oh, and do you know if any assemblers other than GAS support AT&T syntax? I think it's much nicer. I think YASM supports AT&T syntax.
- qwertyuiop924 10y agoYeah. Letting lose on something is always fun And thanks.
- groovy2shoes 10y agoAny time :)