Написал от скуки одну бегущую строку, можно было обойтись атрибутной частью, но в другом контексте. Оптимизнуть можно, но не сейчас.
device zxspectrum48
ORG #6000
begin
chb equ $5B00; MUST BE aligned at $NN00!
;prepare stack routine
ld hl,ou
ld de,$4000
f1:
ld (hl),$31:inc hl; ld SP,nnnn
inc de
ld (hl),e:inc hl
ld (hl),d:inc hl
dec de
push de
ld c,16
f3:
ld (hl),$E1:inc hl ; pop hl
ld b,8
push de
f2:
ld (hl),$22:inc hl ; ld (nnnn),HL
ld (hl),e:inc hl
ld (hl),d:inc hl
inc d
djnz f2
pop de
inc de,de
dec c
jr nz,f3
;+
dec de
ld (hl),$1A:inc hl ; ld a,(de)
ld (hl),$1C:inc hl ; inc e
ld b,8
f4: ld (hl),$32:inc hl ; ld (nnnn),a
ld (hl),e:inc hl
ld (hl),d:inc hl
inc d
djnz f4
pop de
;next screen block
ld a,e
add a,32
ld e,a
sbc a,a
and 8
add a,d
ld d,a
cp $48
jr nz,f1
;end routine
ld (hl),$31:inc hl; ld SP,nnnn
ld (ous+2),hl
inc hl,hl
ld (hl),$C9 ; ret
; jr $
sl: ei:halt
ld a,0:out ($FE),a
call ous
ld a,7:out ($FE),a
;letters
ld hl,lb
ld de,chb
ld b,8
chl: rl(hl):inc hl
sbc a,a
; ld c,a
ch2: ld (de),a:inc e
djnz chl
lc:ld a,1
dec a
jr nz,noletter
tp: ld hl,t
tb: ld a,(hl):inc hl
or a:jr nz,nolt
ld hl,t:jr tb
nolt:
ld (tp+1),hl
ld l,a
add hl,hl
ld h,15
add hl,hl
add hl,hl
ld de,lb
ld bc,8
ld a,c;A=8
ldir
noletter:
ld (lc+1),a
jp sl
lb:ds 8
t: db "SCROLLERS suck! ",0
ous: ld (0),sp
ld de,chb
ou:
end
display /d,end-begin
savesna "!void.sna",begin
ORG #6000
begin
chb equ $5B00; MUST BE aligned at $NN00!
;prepare stack routine
ld hl,ou
ld de,$4000
f1:
ld (hl),$31:inc hl; ld SP,nnnn
inc de
ld (hl),e:inc hl
ld (hl),d:inc hl
dec de
push de
ld c,16
f3:
ld (hl),$E1:inc hl ; pop hl
ld b,8
push de
f2:
ld (hl),$22:inc hl ; ld (nnnn),HL
ld (hl),e:inc hl
ld (hl),d:inc hl
inc d
djnz f2
pop de
inc de,de
dec c
jr nz,f3
;+
dec de
ld (hl),$1A:inc hl ; ld a,(de)
ld (hl),$1C:inc hl ; inc e
ld b,8
f4: ld (hl),$32:inc hl ; ld (nnnn),a
ld (hl),e:inc hl
ld (hl),d:inc hl
inc d
djnz f4
pop de
;next screen block
ld a,e
add a,32
ld e,a
sbc a,a
and 8
add a,d
ld d,a
cp $48
jr nz,f1
;end routine
ld (hl),$31:inc hl; ld SP,nnnn
ld (ous+2),hl
inc hl,hl
ld (hl),$C9 ; ret
; jr $
sl: ei:halt
ld a,0:out ($FE),a
call ous
ld a,7:out ($FE),a
;letters
ld hl,lb
ld de,chb
ld b,8
chl: rl(hl):inc hl
sbc a,a
; ld c,a
ch2: ld (de),a:inc e
djnz chl
lc:ld a,1
dec a
jr nz,noletter
tp: ld hl,t
tb: ld a,(hl):inc hl
or a:jr nz,nolt
ld hl,t:jr tb
nolt:
ld (tp+1),hl
ld l,a
add hl,hl
ld h,15
add hl,hl
add hl,hl
ld de,lb
ld bc,8
ld a,c;A=8
ldir
noletter:
ld (lc+1),a
jp sl
lb:ds 8
t: db "SCROLLERS suck! ",0
ous: ld (0),sp
ld de,chb
ou:
end
display /d,end-begin
savesna "!void.sna",begin
Дополнение
Еще один текст, написанный наскоро.Компиляция Pasmo ORG #6080
start
; ld c,$80
ld hl,$1539
sc: halt
exx
ld hl,$5901
ld de,$5900
ld bc,255
ldir
exx
;draw
push hl
ld l,(hl)
add hl,hl
ld h,15
add hl,hl
add hl,hl
ld de,$591F
ld b,8
ch
ld a,(hl)
and c
jr z,pu
ld a,d;6*9
pu: ld (de),a
inc hl
ld a,e
add a,32
ld e,a
djnz ch
pop hl
rrc c
jr nc,nochar
inc hl
bit 7,(hl)
jr z,nochar
ld l,$39
nochar
jr sc
end start
; display /d,end-begin
; savesna "!void.sna",begin
Дополнение 2. в спешке упустил два байта.
bit 7,(hl)
jr nz,start
jr sc
Комментарии
Отправить комментарий