Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .model Spectrum128
- .org #8000
- ; Fade to black
- ;
- ; Syntax for SpecNet IDE
- ; https://dotneteer.github.io/spectnetide/
- SCREEN_START .equ 0x4000
- SCREEN_COLS .equ 32
- SCREEN_ROWS .equ 24
- SCREEN_ATTRIBUTES_COUNT .equ SCREEN_COLS * SCREEN_ROWS
- SCREEN_BITMAP_COUNT .equ SCREEN_ATTRIBUTES_COUNT * 8
- SCREEN_ATTRIBUTES_START .equ SCREEN_START + SCREEN_BITMAP_COUNT
- INK_MASK .equ %00000111
- PAPER_MASK .equ %00111000
- BRIGHT_MASK .equ %01000000
- FLASH_MASK .equ %10000000
- BRIGHT_FLASH_MASK .equ (BRIGHT_MASK | FLASH_MASK)
- BRIGHT_INK_MASK .equ (BRIGHT_MASK | INK_MASK )
- BRIGHT_PAPER_MASK .equ (BRIGHT_MASK |PAPER_MASK )
- ; Put some stuff on the screen to fade
- ld hl, SCREEN_START
- ld bc, SCREEN_BITMAP_COUNT / 2
- Bitmap1:
- ld a, %10101010
- ld (hl), a
- inc hl
- ld a, %00111100
- ld (hl), a
- inc hl
- ; if bc != 0
- dec bc
- dec bc
- xor a
- or b
- jr nz, Bitmap1
- xor a
- or c
- jr nz, Bitmap1
- ld bc, SCREEN_BITMAP_COUNT / 2
- Bitmap2:
- ld a, %01010101
- ld (hl), a
- inc hl
- ld a, %11000011
- ld (hl), a
- inc hl
- ; if bc != 0
- dec bc
- dec bc
- xor a
- cp b
- jr nz, Bitmap2
- xor a
- cp c
- jr nz, Bitmap2
- ld hl, SCREEN_ATTRIBUTES_START
- xor a
- ld b, SCREEN_ATTRIBUTES_COUNT / 4
- Attr1:
- dec a
- ld d, a
- and PAPER_MASK
- ld (hl), a
- inc hl
- ld a, d
- and INK_MASK
- ld (hl), a
- inc hl
- ld a, d
- and BRIGHT_PAPER_MASK
- ld (hl), a
- inc hl
- ld a, d
- and BRIGHT_INK_MASK
- ld (hl), a
- inc hl
- ; if b != 0
- dec b
- xor a
- cp b
- ld a, d
- jr nz, Attr1
- ; Fade to Black
- ld d, 7
- FadeStart:
- ld hl, SCREEN_ATTRIBUTES_START
- ld bc, SCREEN_ATTRIBUTES_COUNT
- .loop 50 ; change to adjust rate
- halt
- .endl
- FadeScreen:
- ld a, (HL)
- exx
- ld b, a
- ld c, a
- ld e, a
- ; and BRIGHT_FLASH_MASK
- and BRIGHT_MASK ; change to exclude flash attribute
- ld b, a
- ld a, c
- and INK_MASK
- jr z, ZeroInk
- dec a
- ZeroInk:
- ld e, a
- ld a, c
- and PAPER_MASK
- jr z, ZeroPaper
- sra a
- sra a
- sra a
- jr z, ZeroPaper
- dec a
- sla a
- sla a
- sla a
- ZeroPaper:
- or e
- or b
- exx
- ld (hl), a
- inc hl
- ; if bc != 0
- dec bc
- xor a
- cp b
- jr nz, FadeScreen
- xor a
- cp c
- jr nz, FadeScreen
- ; if d == 0 end
- dec d
- xor a
- cp d
- jr nz, FadeStart
- ret
- s
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement