да код недописан слегка, там один и тот же тайл выводится, то есть работы с картой пока нету попросту.
а так - буфер заполняется одним и тем же тайлом, лежащим по адресу #c000.
Код:
TILESHORIZONTAL EQU 16 ;TILES COUNT (HORIZONTAL)
TILESVERTICAL EQU 10 ;TILES COUNT (VERTICAL)
TILEW EQU 2 ;TILE WIDTH (not used)
TILEH EQU 2 ;TILE HEIGHT
SP_STORAGE DW 0
DRAWBACKGROUND
DI
LD (SP_STORAGE),SP
LD HL,FRAMEBUFFER+(FRAMEBUFFERLINE-SCREEN_WIDTH)/2
LD BC,FRAMEBUFFERLINE-TILEW+1
LD A,TILESVERTICAL
DRAWTILESLINE
EX AF,AF'
LD A,TILESHORIZONTAL
DRAWONETILE
LD SP,#c000 ;TILE ADDRESS IN MEMORY, HARDCODED AT THE MOMENT
DUP TILEH*8
POP DE
LD (HL),E
INC HL
LD (HL),D
ADD HL,BC
EDUP
LD DE,FRAMEBUFFERLINE*TILEH*8-TILEW
SBC HL,DE
DEC A
JP NZ,DRAWONETILE
; ONE LINE IS DRAWN, DRAW NEXT LINE
LD DE,FRAMEBUFFERLINE*TILEH*8-(TILESHORIZONTAL*TILEW)
ADD HL,DE
EX AF,AF'
DEC A
JP NZ,DRAWTILESLINE
LD SP,(SP_STORAGE)
EI
RET
основной минус - нельзя юзать прерывания, но это не сильно страшно, ибо время вывода одного тайла всё же известно, а, значит, теоретически можно дёрнуть halt после определённого их числа.