код из Exolon плюс мое дополнение: печать кода и символа
;sjasmplus
device zxspectrum128
ORG #6000
begin
loc_6FE8:
call sub_ACD1 ; key scan
or a
jr z, loc_6FE8
;print char
ld (msg),a
;code
push af
srl a
srl a
srl a
srl a
call hex0
ld (msg+2),a
pop af
call hex0
ld (msg+3),a
;print msg
ld ix,msg
ld de,$4000
prm:
ld l,(ix+0):inc ix
add hl,hl
ld h,15
add hl,hl
add hl,hl
push de
ld b,8
ch8:
ld a,(hl),(de),a
inc hl,d
djnz ch8
pop de
inc e
ld a,(ix+0)
or a:jr nz,prm
jr loc_6FE8
hex0:
and $0F
cp 10
sbc a,$69
daa
ret
msg:
db "0:00",0
;-----------------------------------------------------------
sub_ACD1:
push bc
push hl
ld hl, unk_ACEF
ld d, 0FEh ; 'ю'
loc_ACD8:
ld a, d
in a, (0FEh)
ld e, 1
ld b, 5
loc_ACDF:
rrca
jr nc, loc_ACEB
inc hl
sla e
djnz loc_ACDF
rlc d
jr c, loc_ACD8
loc_ACEB:
ld a, (hl)
pop hl
pop bc
ret
; ---------------------------------------------------------------------------
unk_ACEF: db 1
db 5Ah ; Z
db 58h ; X
db 43h ; C
db 56h ; V
db 41h ; A
db 53h ; S
db 44h ; D
db 46h ; F
db 47h ; G
db 51h ; Q
db 57h ; W
db 45h ; E
db 52h ; R
db 54h ; T
db 31h ; 1
db 32h ; 2
db 33h ; 3
db 34h ; 4
db 35h ; 5
db 30h ; 0
db 39h ; 9
db 38h ; 8
db 37h ; 7
db 36h ; 6
db 50h ; P
db 4Fh ; O
db 49h ; I
db 55h ; U
db 59h ; Y
db 0Dh
db 4Ch ; L
db 4Bh ; K
db 4Ah ; J
db 48h ; H
db 20h
db 2
db 4Dh ; M
db 4Eh ; N
db 42h ; B
db 0
end
display /d,end-begin
savesna "!void.sna",begin
device zxspectrum128
ORG #6000
begin
loc_6FE8:
call sub_ACD1 ; key scan
or a
jr z, loc_6FE8
;print char
ld (msg),a
;code
push af
srl a
srl a
srl a
srl a
call hex0
ld (msg+2),a
pop af
call hex0
ld (msg+3),a
;print msg
ld ix,msg
ld de,$4000
prm:
ld l,(ix+0):inc ix
add hl,hl
ld h,15
add hl,hl
add hl,hl
push de
ld b,8
ch8:
ld a,(hl),(de),a
inc hl,d
djnz ch8
pop de
inc e
ld a,(ix+0)
or a:jr nz,prm
jr loc_6FE8
hex0:
and $0F
cp 10
sbc a,$69
daa
ret
msg:
db "0:00",0
;-----------------------------------------------------------
sub_ACD1:
push bc
push hl
ld hl, unk_ACEF
ld d, 0FEh ; 'ю'
loc_ACD8:
ld a, d
in a, (0FEh)
ld e, 1
ld b, 5
loc_ACDF:
rrca
jr nc, loc_ACEB
inc hl
sla e
djnz loc_ACDF
rlc d
jr c, loc_ACD8
loc_ACEB:
ld a, (hl)
pop hl
pop bc
ret
; ---------------------------------------------------------------------------
unk_ACEF: db 1
db 5Ah ; Z
db 58h ; X
db 43h ; C
db 56h ; V
db 41h ; A
db 53h ; S
db 44h ; D
db 46h ; F
db 47h ; G
db 51h ; Q
db 57h ; W
db 45h ; E
db 52h ; R
db 54h ; T
db 31h ; 1
db 32h ; 2
db 33h ; 3
db 34h ; 4
db 35h ; 5
db 30h ; 0
db 39h ; 9
db 38h ; 8
db 37h ; 7
db 36h ; 6
db 50h ; P
db 4Fh ; O
db 49h ; I
db 55h ; U
db 59h ; Y
db 0Dh
db 4Ch ; L
db 4Bh ; K
db 4Ah ; J
db 48h ; H
db 20h
db 2
db 4Dh ; M
db 4Eh ; N
db 42h ; B
db 0
end
display /d,end-begin
savesna "!void.sna",begin
Комментарии
Отправить комментарий