暇潰し用日記
部屋掃除しないとヤヴァイ
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
誰得? 俺得。
元楽譜作りはτさんが15分でやってくれました。
適当な曲を鳴らす課題は前の授業で終わったんですが、
まだ自由課題の時間があるので鳴らしますよっと。


τの許可は取ったから、ここに辿り着いた人は勝手に使ってもいいよ!
曲は鳴らしてからのお楽しみw


00: MOV B #00H
01: BON #CH
02: TM1 #1EH
03: BON #AH
04: TM1 #1EH
05: BON #8H
06: TM1 #1EH
07: BON #AH
08: TM1 #1EH
09: BON #8H
0A: TM1 #1EH
0B: INC B
0C: CMP B #02H
0D: JZ L17H
0E: CMP B #03H
0F: JZ L1CH
10: BON #AH
11: TM1 #1EH
12: BON #CH
13: TM1 #1EH
14: BOF
15: TM1 #1EH
16: JMP L01H
17: BON #5H
18: TM1 #1EH
19: BON #8H
1A: TM1 #1EH
1B: JMP L14H
1C: BON #CH
1D: TM1 #2DH
1E: BON #3H
1F: TM1 #0FH
20: BON #5H
21: TM1 #0FH
22: BON #3H
23: TM1 #0FH
24: BON #5H
25: TM1 #0FH
26: BON #3H
27: TM1 #0FH
28: BON #5H
29: TM1 #2DH
2A: BON #3H
2B: TM1 #0FH
2C: BON #5H
2D: TM1 #0FH
2E: BON #3H
2F: TM1 #0FH
30: BON #5H
31: TM1 #0FH
32: BON #3H
33: TM1 #0FH
34: BON #8H
35: TM1 #19H
36: BOF
37: TM1 #05H
38: BON #8H
39: TM1 #1EH
3A: BOF
3B: STP


先生作の実験用エミュレータで動作確認済み。
余計な音が鳴りっぱなしになるバグがあるけど実機なら大丈夫なはず!
アセンブリ言語だけど、プログラミングやった人ならわかるんじゃないかな。
元楽譜は休符含め36音あるんだけど、
この『Electronic Lab 500 in 1』は命令入れるメモリが64個(00~3F)しかなくて
音ならすのにBONとTM1の2命令いるから32音まで
最後に音止めとプログラム止めに BOF と STP 入れると実質31音までしか入らないのさ。


そこを条件分岐上手く使ってなんとかまとめたのが上の楽譜。
ループ制御するのにもメモリ割くから多用すればいいってもんじゃないぜ!
まぁHAGAGを各0.30秒鳴らす箇所が3つあったのをまとめて、
ループに飛ばすついでに休符1個節約しただけなんだが、
3F以内に収めるという目的は達成できたから考えるの止めた。
最適化すればもっと縮まるかもねー

元楽譜を『Electronic Lab 500 in 1』用に最適化するアルゴリズムとか考えるのとかも面白そう。
スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ















管理者にだけ表示を許可する

プロフィール

now_koshmar

Author:now_koshmar
これといった夢もなく
日々を遊んで過ごしている。
成績は並だが、
稀に酷い成績をとる時もある。
周りに流され易い性格でヘタレ。

最近の記事

最近のコメント

最近のトラックバック

月別アーカイブ

カテゴリー

カウンター(物理2倍返し)

FC2ブログランキング

ブロとも申請フォーム

ブログ内検索

RSSフィード

リンク

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。