П-патриотизм

 


Идея родилась после релиза и возникшего срачика. Короче, я решил попробовать и повторить картинку.

Попытка 1

device zxspectrum128
        ORG #6000
begin
ld hl,$5800
ld b,3
ld de,col
lp:
ld a,(de)
inc de
lp2:
ld (hl),a
inc l
jr nz,lp2
inc h
djnz lp
jr $
col:
 db 7*9,1*9,2*9
end
display /d,end-begin
savesna "!void.sna",begin

21 байт(jr $ против ret -1 байт), но два цикла тут явно лишние.

Попытка 2

device zxspectrum128
        ORG #6000
begin
; db 7*9,1*9,2*9
ld hl,$5800
ld a,7*9
ld b,3
lp:
ld (hl),a
inc l
jr nz,lp
inc h
sub 6*9
jr nc,m1
ld a,2*9
m1: djnz lp
 jr $
end
display /d,end-begin
savesna "!void.sna",begin

Снова 21 байт. Во время перекура появилась одна идейка. Область атрибутов можно разбить на три части: 5800-58FF,5900-59FF, 5A00-5AFF. в первой части используется атрибут 63(белый), при постоянном значении H=$58. Далее - второй $59 - значение 9, третий $5A-18.Идея рождается сама собой  -расположить данные цветов по адресу $6058 и использовать пару BC для обращения к данным. Условие завершения? A=$21

Попытка 3

;компиляция pasmo --tapbas cald.asm cald.tap label.txt huj.txt --listing
 org #$6058
start ; заголовок для pasmo - так удобнее собирать в .tap 
 db 7*9,1*9,2*9;цвета
 ld hl,$5800
lp:
 ld c,h
 ld a,(bc)
 ld (hl),a
 inc hl
 cp $21:условие завершения цикла, попали на LD HL,$5800(байты $21,00,$58)
 jr nz,lp
 ret
END start

Итого 15 байт, но программу можно сократить до 13, правда закраска будет другой.
Сама прога допиливалась с помощью ZX Editor от zx-modules.de
Файл тут, отличный повод поджечь пукан сраным русофобам


Комментарии