scene.org File Archive

File download

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

File size:
102 728 bytes (100.32K)
File date:
2025-12-30 23:34:07
Download count:
all-time: 1

Preview

  • file_id.diz 1.43K
  • final.tap 127B
  • main.asm 5.97K
  • result.png 3.18K
  • source.png 43.14K
  • source_and_result.png 60.31K

file_id.diz

VCCC25 Christmas Challenge

Author: spaceWumpus
Category: Christmas Challenge
System:   16/48k ZX Spectrum
Language: Assembler (sjasmplus)
Len source code: 102 bytes (BASIC stub incorporating the assembled code embedded in REM statement)
Len exe file:    127 bytes (Standard header block (17 bytes), code block, plus flag byte and checksum byte for each (4 bytes))
Len code only:   77 bytes  (Relocatable assembly)

Instructions:
Code is a standard TAP file, which should be loadable in any ZX Spectrum emulator.
Tested with Fuse emulator. 
1. Install and start Fuse.
2. Drag 'final.tap' file into the window.
3. Press 'R', then 'Enter' to run.

Description:
Assembled code is embedded into a REM (remark aka comment) in a BASIC program.  
Iterates over a nominally 9x7 grid of character coordinates for the top-right quadrant of the snowflake,
and discards those that are 'above the diagonal', to leave just one octant.
Within this, we check for vertical axis, diagonal axis, plus a small number of special cases to check to 
determine whether we should draw a * or not. This handles one octant.
The remaining octants are handled by recursively mirroring along X,Y and diagonal whenever we print anything.

Comments:
Given more time, could have shaved off two more bytes as described in the source.
Pretty happy with this again.  Bigger code than last year again, but this is a more complex pattern.

Total length of code 77 bytes.