; ZX SPECTRUM code, sjasmplus syntax: https://github.com/z00m128/sjasmplus ; alternative code for Allan Turvey post: https://www.facebook.com/groups/z80asm/posts/1982356728824612/ ORG $8000-8 DEVICE ZXSPECTRUM48, $ - 1 size_start: dg ...#.### dg ....#### dg ...##### dg ...##### dg ..###### dg .#.##### dg .##.#### dg ...##### cauldrondata: ; points at end of data cauldronlogo: push bc ASSERT $00 == low cauldronlogo ; C should be zero here ; or do ld (iy+..),0 for +1 byte size ld (iy+$5C8D-$5C3A),c ; set ATTR_P[$5C8D] to 0 call $0DAF ; CL_ALL clear screen from ZX48 ROM pop hl ; HL = cauldrondata ld de,$5910 .row_loop: dec hl ld b,d ld c,e .dot_loop: rrc (hl) ; read bitmap dot into carry flag sbc a,a ; A = $00 for blank dot, $FF for filled dot dec c ; set attributes in symmetric way ld (bc),a ld (de),a inc e bit 3,e jr z,.dot_loop ; 8x loop for 8 bits (E goes %xxx1'0000 .. %xxx1'1000) ld a,e add a,$20-8 ld e,a jr nc,.row_loop ret DISPLAY "Size: ",/D,$-size_start SAVESNA "fb_cauldron.sna", cauldronlogo