起動方法
mon
*L
*G8100

メモリマップ
$8100 機械語コード
$8400 2x101 壁index
$8500 25x101 壁データ
$9000 80x200 デモデータ

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
 
最終更新:2019年11月21日 17:57
添付ファイル