Пока что получается вот так:
Код:
ORG #8000
DI:LD SP,#8000
CALL INIT ; инициализируем табличку координат
START
HALT
LD BC,#0000
CALL RIS ; затираем старые линии
LD HL,(STP) ; смещаемся
LD DE,(SPD)
ADD HL,DE
RES 2,H
LD (STP),HL
LD BC,#FFFF
CALL RIS ; рисуем новую позицию
JR START
STP DW 0 ; текущий шаг
SPD DW #0040; скорость "полёта"
RIS EXX
LD (RIS0+1),SP
LD HL,0
LD DE,(STP)
RIS1
LD A,H
EXX
CP #60
JR NC,RIS0
ADD A,A
LD L,A
LD H,high TAB_COOR
LD A,(HL)
INC L
LD H,(HL)
LD L,A
LD SP,HL
REPT 16
PUSH BC
ENDR
EXX
ADD HL,DE
INC D
INC D
INC D
INC D
JR RIS1
RIS0 LD SP,0
RET
TAB_COOR EQU #C000
INIT LD DE,#489F
LD HL,TAB_COOR
LD B,#60
INI1 INC DE
LD (HL),E
INC HL
LD (HL),D
INC HL
DEC DE
CALL DINC
DJNZ INI1
RET
DINC
INC D
LD A,D
AND 7
RET NZ
LD A,E
SUB #E0
LD E,A
SBC A,A
AND #F8
ADD A,D
LD D,A
RET
Но в moonsweeper`е всё равно красивше
(во вложении два снапшота для сравнения)