Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ЗАЛИВКА АТРИБУТОВ
- из начальной точки берем цвтет который будем заменять
- начальная точка (адрес на экране атрибутов) сохраняется в стэк
- АА - адрес атрибута
- loop
- берем АА из стэка
- если стек переполнен - выход (больше нет искомых)
- если цвет АА является цветом заливки - берем следующий АА из стека (текущий АА не обрабатываем)
- поиск заменяемого цвета по 4м сторонам с сохранением АА в стек если искомый цвет найден
- loop
- залить "fill768.atr" близко к 100 000 тактам, глубина стэка близка к 256 байтам но не превышет.
- ???как то отлавливать не обрабатываемые адреса в стэке что бы не проверять их наличие в процессе заливки???
- */
- module sides
- // borders not checked
- stack equ 49151
- run
- ld (return+1),sp
- ld sp,stack
- ld hl,#5910 // start point
- ld de,32 // line size
- jp code
- return
- ld sp,0
- ret
- //---------------------------------
- code
- ld c,#ff // C = fill color
- ld b,(hl) // B = find color
- push hl
- again
- pause
- aga2
- pop hl
- ld a,h
- cp high stack + 1
- jp nc,return // stack is over
- ld a,(hl)
- cp c
- jp z,aga2 // does not need processing
- ld a,b // find color
- ld (hl),c // fill color
- left
- dec hl
- cp (hl)
- jp nz,down
- push hl
- down
- inc hl
- add hl,de
- cp (hl)
- jp nz,right
- push hl
- right
- inc hl
- or a
- sbc hl,de
- cp (hl)
- jp nz,up
- push hl
- up
- dec hl
- or a
- sbc hl,de
- cp (hl)
- jp nz,again
- push hl
- jp again
- //---------------------------------
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement