wchrmas pattern by AttentionWhore
wchrmas pattern Author: Losso / AttentionWhore Category: Christmas Challenge System: Amiga Language: Assembler Len source code: 390 Len exe file: 96 Len code only: 60 Instructions: Execute the file in a CLI/Shell window on any Kickstart version. WinUAE will auto-run the file when passed as an argument. Or use the provided ADF disk image in any other Amiga emulator. Loops forever when done. Description: A compact pattern writer for all Amigas. The AmigaDOS overhead for executable files is 36 bytes, so we have: 36 bytes overhead + 60 bytes code = 96 bytes Tricks used to keep it small: - Text output using the "wchr" BCPL call - Use initial register contents of d0, d4 - Lots of experiments with different constants, counting methods, compare-free abort conditions It took about a week of night-time coding to get the initial version from 88 bytes of code down to 60. Yet, I am almost sure I still missed an optimizing opportunity or two... :) Expect a little write-up at: https://heckmeck.de/demoscene/wchrmas-pattern/ Comments: File and code breakdown: ----- HEADER tag, table, CODE tag ----------- 0000: 0000 03f3 0000 0000 0000 0001 0000 0000 0010: 0000 0000 0000 000f 0000 03e9 0000 000f ----- Code ---------------------------------- 0020: 7c04 7e04 7220 6122 6120 d07c 06bc 6808 0030: 7000 5246 5747 720a 48e7 fffe 7020 286a 0040: 00e0 4e95 4cdf 7fff 60da 5346 6c02 5c46 0050: 6606 722a 5404 65fe cd47 4e75 ----- END tag ------------------------------- 0050: 0000 03f2 7c04 | moveq #4,d6 7e04 | moveq #4,d7 7220 | .loop moveq #32,d1 6122 | bsr.b .mod 6120 | bsr.b .mod d07c 06bc | add.w #1724,d0 6808 | bvc.b .puts 7000 | moveq #0,d0 5246 | addq.w #1,d6 5747 | subq.w #3,d7 720a | moveq #10,d1 48e7 fffe | .puts movem.l d0-a6,-(a7) 7020 | moveq #32,d0 286a 00e0 | move.l 224(a2),a4 4e95 | jsr (a5) 4cdf 7fff | movem.l (a7)+,d0-a6 60da | bra.b .loop 5346 | .mod subq.w #1,d6 6c02 | bge.b .norst 5c46 | addq #6,d6 6606 | .norst bne.b .nostr 722a | moveq #42,d1 5404 | addq.b #2,d4 65fe | .done bcs.b done cd47 | .nostr exg d6,d7 4e75 | rts
[ back to the prod ]