チャネル0のGATE入力をメモリマップドI/O 0E008h のビット0から制御することができます。サウンド出力を使用するときはここに1を出力しておきます。
;
; 初期化
;
LD A, 1
LD (0E008h), A ; GATE = H
LD HL, 0E007h ; 8253 コントロールポート
LD (HL), 36h ; チャネル0, モード3, 下位バイト→上位バイトの順にカウンタを設定
;
; サウンド出力
;
LD HL, 0E004h ; 8253 チャネル0
LD (HL), 0F2h ; チャネル0のカウント値の下位バイトを設定
LD (HL), 007h ; チャネル0のカウント値の上位バイトを設定
(音の長さ分のウェイト)
;
; サウンド停止
;
XOR A
LD (0E008h), A ; GATE = L
|
| モード | 初期値 |
|---|---|
| 0 | L |
| 1-5 | H |
オーディオカセットテープを1ビットPCMで再生するサンプルです。プログラムを実行後、データレコーダにテープを入れてPLAYボタンを押すと再生します。
LD HL, 0E002H ; 8255 ポートC
LD DE, 0E007H ; 8253 コントロールポート
LD C, 20h ; チャネル0, モード0, 上位バイトのみカウンタを設定(ダミー)
L1: LD A, (HL) ; データレコーダから1ビット入力
AND C
RRCA
RRCA ; 1ならモード4, 0ならモード0
OR C
LD (DE), A ; 8253 チャネル0 モード設定 (1ビットPCM出力)
JP L1
|