The ITS Crystal Author: atsampson Category: Christmas Challenge System: DEC PDP-10 running ITS Language: PDP-10 Assembler Len source code: 435 Len exe file: 423 Len code only: 85.5 Instructions: Connect to a public ITS machine, e.g. hactrn.org. Pick a username for yourself -- I'm assuming XYZZY -- and log in: :login xyzzy Create your home directory if you haven't already done so: :print xyzzy;..new. (udir) Start Emacs on the source file: :emacs cryst mid Paste in the cryst.mid code. Save with ^X^S then exit with ^X^C. Assemble the program with: :midas ts cryst_cryst mid Then run it with: :cryst You can also run it in a local emulator. The binary ts.cryst provided is in ITS evacuate format. Description: The PDP-10 is a 36-bit machine. The executable is actually 94 words (423 8-bit bytes) long, of which the code is 19 words (85.5 bytes). The 36-bit architecture is very handy for this program, as the pattern repeats with a period of 6. The program loads a binary representation of the first line of the pattern (101010101010 octal) into a register, then rotates it for each successive line. Each line is then printed by shifting one bit through this word from left to right, and another from right to left, and printing a * where either of them match. The shifts in the inner loop are done simultaneously using the ITS-specific CIRC instruction. Comments: I prototyped a few ways of doing this in C, and this one stuck out as being well-suited to ITS because of the bidirectional shifts.