Skip to content

Instantly share code, notes, and snippets.

@mistificator
Last active November 23, 2020 18:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mistificator/92cbd9c45b342f7980c24b0d16025c97 to your computer and use it in GitHub Desktop.
Save mistificator/92cbd9c45b342f7980c24b0d16025c97 to your computer and use it in GitHub Desktop.
ZX Spectrum - 4 colors at one char position demo
basic48_cls equ 0x0D6B
org 25000
ld a, 00000111b ; PAPER 0, INK 7
ld (iy + 83), a ; ATTR-P
xor a ; BORDER 0
out (0xFE), a
ld (iy + 14), a ; BORDCR
call basic48_cls
im2_prepare:
ld a, 0xBD
ld i, a
ld h, a
ld l, 0
ld d, h
ld e, 1
ld bc, 256
ld a, 0xBE
ld (hl), a
ldir
im2_copy_jump:
ld hl, im2_jump
ld e, a
ld d, a ; 0xBEBE
ld bc, 3
ldir
im2_start:
im 2
forever_loop:
ei
jr forever_loop
im2_jump:
jp im2_handler
im2_handler:
di
ld a, (counter)
push af
inc a
ld (counter), a
pop af
bit 0, a
call z, set_pattern1
call nz, set_pattern2
ld b, 30
put_char:
push hl
push bc
apply_pattern:
ld a, (hl)
ld de, (attr_ptr)
ld (de), a
inc hl
ld de, (pixel_ptr)
ld b, 8
apply_pattern_loop:
ld a, (hl)
ld (de), a
inc hl
inc d
djnz apply_pattern_loop
ld hl, (attr_ptr)
inc hl
ld (attr_ptr), hl
ld hl, (pixel_ptr)
inc hl
ld (pixel_ptr), hl
pop bc
pop hl
djnz put_char
ld hl, 0x5901
ld (attr_ptr), hl
ld hl, 0x4801
ld (pixel_ptr), hl
ret
set_pattern1:
ld hl, color1
ret
set_pattern2:
ld hl, color2
ret
counter db 0
attr_ptr dw 0x5901
pixel_ptr dw 0x4801
IF 1
color1 db 01110011b
pattern1:
db 00011000b
db 01100110b
db 01100110b
db 10011001b
db 10011001b
db 01100110b
db 01100110b
db 00011000b
color2 db 01100111b
pattern2:
db 00011000b
db 01111110b
db 01111110b
db 11100111b
db 11100111b
db 01111110b
db 01111110b
db 00011000b
ENDIF
@mistificator
Copy link
Author

zx_4color

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment