LIST 18 ============================================================================ ;##### RAM Map ##### org 8000h ; ← RAM領域に変数を定義 timer ds 2 ;##### I/O Map ##### pio_a equ 001ch ; ← 内蔵PIOのアドレス定義 ;##### RESET ##### org 0000h ; ← リセットするとここから始まる ld sp,09fffh ; ← スタックポインタをセット di ; ← 割り込みを禁止 jp main ; ← メインに飛ぶ ;##### NMI ##### org 0066h ; ← (NMIは来ないが一応入れておく) retn ;##### Main ##### main: ld a,0cfh ; Mode 3 out (pio_a+1),a ld a,00000000b ; 0:Out / 1:In out (pio_a+1),a loop: call timer_check ; ← ソフトウェア・タイマ jr loop timer_check: ld a,(timer+0) inc a ld (timer+0),a cp 0 ret nz ; ← 256回に1回だけ下に行く ld a,(timer+1) inc a ld (timer+1),a cp 100 ret nz ; ← 100回に1回だけ下に行く xor a ld (timer+1),a ld a,(timer+2) inc a ld (timer+2),a xor 11111111b ; ← 負論理なので全ビット反転する out (pio_a),a ; ← PAポートから出力する ret end ============================================================================