Author: Jonathan Harston Category: Christmas Challenge System: PDP11 running Bell Unix Language: PDP11 machine code Source length: 2408 bytes File length: 112 bytes Executable length: 98 bytes Instructions: Copy the file 'xmas2025e' to a Bell Unix PDP11 system. Ensure it is executable by setting the access with 'chmod 555 xmas2025e'. Run by typing 'xmas2025e'. The image shows the program running on an emulated PDP11 with an ASR33 teletype at mdfs.net/tty. Boot unix by entering 'unix', then run the demo by typing 'xmas2025'. Description: The program uses a similar method to the BASIC versions, representing half of each line of the star as a bitmap, and displaying the bitmap with spaces and star characters. To be able to use a zero byte as a terminator, each byte of data is stored with 1 subtracted. When fetched it is incremented to its actual value. To be able to represent 9 bits in each 8-bit value, there is a special case check for a value of 255 which represents a full line of pixels and an extra pixel is added. While rotating each byte to create the bitmap it is also rotated the opposite way to create the reflected bitmap for the opposite side. Once the string is built up in the string buffer, it is simply written to standard output. With the zero loop terminator already being in R0, this is simply incremented to one to select STDOUT, saving one byte of code. I tried several times to reflect the bottom half of the star from the top half data, but the code to do this always ended up larger than just having the nine bytes of data.