scene.org File Archive

File download

<root>­/­parties­/­2025­/­vccc25­/­christmas_challenge/jonathanharston_bellpdp11unix_pdp11_98b_vc3-2025.zip

File size:
173 729 bytes (169.66K)
File date:
2025-12-30 23:34:07
Download count:
all-time: 2

Screenshot (by Demozoo)

Screenshot

Preview

  • fileid.txt 1.58K
  • list2025e.gif 51.84K
  • xmas2025e 112B
  • xmas2025e.gif 113.93K
  • xmas2025e.mac 2.35K

file_id.diz

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.