Skip to content

Instantly share code, notes, and snippets.

@yang-wei
Last active August 29, 2015 14:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yang-wei/8b96ef75b78fb50241e3 to your computer and use it in GitHub Desktop.
Save yang-wei/8b96ef75b78fb50241e3 to your computer and use it in GitHub Desktop.
ORG 7000H ; プログラムの開始番地
;メインプログラム
MAIN: LD BC,(8F14H) ; 音の長さを設定
CALL OTODASU ; OTODASUへ分岐する
CALL FUYASU ; FUYASUへ分岐する
JP MAIN ; 新しい長さおよび高さで鳴らす
;WAITサブルーチン
WAIT: CPD ; 待ち時間(音の高さ)を減らす
JP PE,WAIT ; 待ち時間(音の高さ)が0になるまでWAITを繰り返す
RET ; 0になると、サブルーチンから戻る
;OTODASUサブルーチン
OTODASU:CPD ; 繰り返す回数で減らす
PUSH AF ; AFレジスタの内容をスタックに転送する
PUSH BC ; 音の長さをスタックに転送
LD A,0 ; 出力データセット
OUT (50H),A ; スピーカーに出力
LD BC,(8F10H) ; 音の高さを設定
CALL WAIT ; 待ち時間(WAITへ分岐)
LD A,1 ; 出力データセット
OUT (50H),A ; スピーカーに出力
LD BC,(8F10H) ; 音の高さ(周期)を設定
CALL WAIT ; 待ち時間(WAITへ分岐)
POP BC ; スタックに記憶した音の高さをレジスタBCに転送する
POP AF ; スタックに記憶した音の長さをレジスタAFに転送する
JP PE,OTODASU ; 繰り返し回数が0ならない限り、OTODASUを繰り返す
RET ; 繰り返し回数が0になったら、無条件にサブルーチンからもどる
;音の長さおよび高さを増やすサブルーチン
FUYASU: LD HL,(8F10H) ; 音の高さを読み出し
LD BC,(8F12H) ; 音の高さの増分を読み出し
ADD HL,BC ; 音の高さを増やす
LD (8F10H),HL ; 音の高さを書き込み
LD HL,(8F14H) ; 音の長さを読み出し
LD BC,(8F16H) ; 音の長さの増分を読み出し
ADD HL,BC ; 音の長さを増やす
LD (8F14H),HL ; 音の長さを書き込み
RET ; MAINへもどる
END ; 終了
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment