チャネル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 |