В преддверии 1 мая на многих что-то нашло - начали кодить. Занимался кодом и я - готовил некоторый проект. Например, хотелось нарисовать фигуру для демоэффекта:
device zxspectrum48
ORG #6000
begin
ld bc,#8000
gens:
; push bc
ld a,c:or a:jp p,noneg1
neg
noneg1:
sub 64
jr nc,noneg2
neg
noneg2:
; ld c,a
; ld b,a
ld hl,0,d,h,e,a
mul:
add hl,de
dec a:jr nz,mul;djnz mul
; pop bc
add hl,hl
; sub hl,de
ld a,h
sub 32:neg
bit 7,c:jr z,noneg3
neg
noneg3:
ld (bc),a
inc c:jr nz,gens
;-test plot
; ld bc,#8000
;tp:
; ld a,(bc)
; push bc
; add a,40
; ld b,a
; CALL 8933;plot C=X,B=Y,5C7D=COORDS
; pop bc
; inc c:jr nz,tp
; jr $
ld b,0
ylp:
ld c,0
xlp:
ld h,$80
ld l,c
ld a,(hl)
add a,32
ld e,a
ld a,c
add a,64
ld l,a
ld a,(hl)
add a,32
ld d,a
;test
ld a,d
cp e
jr c,noswap;E<D cy=0
ld a,d
ld d,e
ld e,a
noswap:
;; ld a,c
;; cp 160
;; jr nc,nxtp
ld a,b
cp d
jr c,nxtp
cp e
jr nc,nxtp
push bc
ld a,b
add a,64
ld b,a
CALL 8933;plot C=X,B=Y,5C7D=COORDS
pop bc
nxtp:
inc c
jr nz,xlp
inc b
bit 6,b
jr z,ylp
ld hl,$5800,de,$5803,bc,765:set 6,(hl):ldir
jr $
end
display /d,end-begin
savesna "!void.sna",begin
ORG #6000
begin
ld bc,#8000
gens:
; push bc
ld a,c:or a:jp p,noneg1
neg
noneg1:
sub 64
jr nc,noneg2
neg
noneg2:
; ld c,a
; ld b,a
ld hl,0,d,h,e,a
mul:
add hl,de
dec a:jr nz,mul;djnz mul
; pop bc
add hl,hl
; sub hl,de
ld a,h
sub 32:neg
bit 7,c:jr z,noneg3
neg
noneg3:
ld (bc),a
inc c:jr nz,gens
;-test plot
; ld bc,#8000
;tp:
; ld a,(bc)
; push bc
; add a,40
; ld b,a
; CALL 8933;plot C=X,B=Y,5C7D=COORDS
; pop bc
; inc c:jr nz,tp
; jr $
ld b,0
ylp:
ld c,0
xlp:
ld h,$80
ld l,c
ld a,(hl)
add a,32
ld e,a
ld a,c
add a,64
ld l,a
ld a,(hl)
add a,32
ld d,a
;test
ld a,d
cp e
jr c,noswap;E<D cy=0
ld a,d
ld d,e
ld e,a
noswap:
;; ld a,c
;; cp 160
;; jr nc,nxtp
ld a,b
cp d
jr c,nxtp
cp e
jr nc,nxtp
push bc
ld a,b
add a,64
ld b,a
CALL 8933;plot C=X,B=Y,5C7D=COORDS
pop bc
nxtp:
inc c
jr nz,xlp
inc b
bit 6,b
jr z,ylp
ld hl,$5800,de,$5803,bc,765:set 6,(hl):ldir
jr $
end
display /d,end-begin
savesna "!void.sna",begin
А разминкой до этого была печать шестнадцатиричного числа
device zxspectrum48
ORG #6000
begin
; jr $
ld a,$9F
call prhex
jr $
prhex: call pr
pr:
rrca
rrca
rrca
rrca
push af
and 15
cp 10
;2
ld c,a
sbc a,a
and $F9
;1
; jr nc,letter
; add a,$F9 ;Cy=1
;letter:
add a,55
add a,c
rst 16
pop af
ret
end
display /d,end-begin
savesna "!void.sna",begin
ORG #6000
begin
; jr $
ld a,$9F
call prhex
jr $
prhex: call pr
pr:
rrca
rrca
rrca
rrca
push af
and 15
cp 10
;2
ld c,a
sbc a,a
and $F9
;1
; jr nc,letter
; add a,$F9 ;Cy=1
;letter:
add a,55
add a,c
rst 16
pop af
ret
end
display /d,end-begin
savesna "!void.sna",begin
А потом я вспомнил, что есть папка "Этюды" для ассемблера
;8 bytes
cp 9+1
jr c,no7
add a,7
no7:
add a,"0"
;8 bytes
and 0Fh
add a, 90h
daa
adc a, 40h
daa
;7 bytes
and $0F
cp 10
sbc a,$69
daa
cp 9+1
jr c,no7
add a,7
no7:
add a,"0"
;8 bytes
and 0Fh
add a, 90h
daa
adc a, 40h
daa
;7 bytes
and $0F
cp 10
sbc a,$69
daa
Короче, заняться есть чем(:
Комментарии
Отправить комментарий