data equ $9000
wall equ $8400
;-------+-------+-------+-------+-------+
org $8100
start proc
local L1,L2
call init
L1:
ld hl, data
L2:
ld (pos), hl
call draw
ld hl, (pos)
ld de, 80
add hl, de
ld a, $ff
cp (hl)
jp nz, L2
jp L1
endp
;-------+-------+-------+-------+-------+
init proc
local L1
local param
; ファンクションキー表示スイッチ
ld a, $00
ld ($ea60), a
; WIDTHの設定
ld hl, param
call $0843
; カーソル off
call $0bd2
ld hl, $f300+81
ld de, 120
ld b, 25
L1:
ld (hl), $80
add hl, de
djnz L1
ret
param db '80,25', 0
endp
;-------+-------+-------+-------+-------+
draw proc
local L1,L2
local vram
ld hl, $f300
ld (vram), hl
ld hl, (pos)
ld b, 80
L1:
push bc
push hl
ld a, (hl) ; h = data[x]
add a, a
ld l, a
ld h, 0
ld de, wall
add hl, de ; hl = wall + 2 * h
ld e, (hl) ; de 壁
inc hl
ld d, (hl)
ld hl, (vram)
ld bc, 120
rept 24
ld a, (de)
ld (hl), a
inc de
add hl, bc
endm
ld a, (de)
ld (hl), a
ld hl, vram ; vram++
inc (hl)
pop hl ; x++
inc l
pop bc
djnz L1
ret
vram ds 2
endp
;-------+-------+-------+-------+-------+
pos ds 2