README 2 This is the fourth rewrite of the E10-KL10 PDP-10 emulator. The current target is a Model B KL-10. The file KL10_TODO.TXT has the project's current status. This is free software. Have a blast. The mailing list for dealing with this lives at e10@cosmic.com. I can be reached directly at the following addresses: dseagrav@toad.xkl.com dseagrav@flink.com root@bony.umtec.com To install this toy: 1. Make a directory to hold it. 2. Put everything in this directory in it. 3. Edit decsystem10.c, change the #define SERIALNUMBER to some number of your own devising. I may ask for this number later, just to see how many people (ab)use this crock... 4. Type 'make decsystem10' or 'cc decsystem10.c -o decsystem10' Note that this uses GCC's long long type - I dunno if this is special to GCC or standard. If you get odd errors, try using GCC. If you ARE using GCC and you STILL get odd errors, let me know. 5. Type 'make e10asm' or 'cc e10asm.c -o e10asm' to make the assembler. 6. This doesn't load any operating systems at the moment, it can only load core images produced by the assembler, or SBLK files. I plan to change this of course. :) To use the thing: 1. Type "decsystem10" at your shell prompt. 2. You'll get a banner and a KL> prompt. The prompt will tell you if the CPU is running - If the third char of the prompt is a : instead of a >, the CPU is running. 3. At this point, you should load your program in or deposit it in memory yourself. Use either the RS or LC command to read a file, or DM to deposit stuff in memory. Syntax for these is in the HE command's output. 4. Start your program. ST 5. If your program gets into a loop or something odd, pressing ^\ switches between console mode and DTE20 mode. 6. Figure out why your program crashed is some horribly odd manner! ^_^ To hack this: 1. Do the above. (Make the thing run.) 1a. Fetch the Processor Refrence Manual from www.36bit.org. You'll want this. 2. Contact e10@cosmic.com or myself and announce your intentions. I.E. "I wanna write the RH20 device code..." This is to try avoiding duplication of work. If your idea conflicts with someone else's, you will be referred to the other person(s) so you can work with them. (Hopefully...) 3. Add your name to the top of the decsystem10.c file, along with what you did. 4. When you make changes, mail them to the mailing list, so I can put them into the master copy for distribution. Coding style: 1. Do I have one of these? If so, it's undoubtedly messy! ^_^ Using the assembler: The assembler's parser is really stupid. It wants ALL instructions done like this: OPCODEacindex registeraddress (Note that I forgot to include a spot for the indirect bit. :) There are a few pseudo operations: .BLOCKsize Leave a BLOCK of size zeroes. .WORD0leftright Construct this word. .ASCIITEXT Output TEXT. Currently, it's one character to a word. .LOCaddress Skip ahead to address. Leave zeroes behind. It does do symbols in a very crappy format... You can have a symbol in the address field of an instruction, as an equate, or as a label. All symbols must start with $. So... $FOO = 1 Is an equate. $FOO is 1. You can only do numbers like this: You can't do $FOO = 1 + $BAR. JRST 0 0 $ACK Jumps to the value of $ACK. $ACK : Is a label defining ACK. Running the assembler: It works from the command line now. $ e10asm Just typing "e10asm" gets you prompts.