X68000Z上でIOCSコールを利用した音楽プログラムを動かした。
プログラマーのためのX68000環境ハンドブック – Programmers x68000 Environment handbook.PDF (archive.org)
453ページのOPMをIOCSをコールして動かすプログラムがX68000Z上で動いたのでメモっておく。
これで自作音源ドライバの作成に一歩近づいた・・・!
コンパイル環境
xdev68kを利用。
yosshin4004/xdev68k: Cross development environment for the SHARP X68K. (github.com)
makefileにはソースコード名を書く場所があるけど、
- C言語の名前を削除
- 今回のソースコードをアセンブラ枠に記入
で問題なくコンパイルできることを確認。
ソースコード
lea initdata(PC),A1 loop move.b (A1)+,D1 beq play move.b (A1)+,D2 moveq #$68,D0 trap #15 bra loop play lea musicdata(PC),A1 nextnote move.b (A1)+,D3 *D3=音程 beq musstop move.b (A1)+,D4 moveq #$68, D0 move.b #$28, D1 move.b D3, D2 trap #15 moveq #$68, D0 move.b #8, D1 move.b #%1111_000, D2 trap #15 move.l #20000,D0 wait2 subq.l #1,D0 bne wait2 moveq #$68, D0 move.b #8, D1 move.b #%0000_000,D2 trap #15 ext.w D4 mulu #10000,D4 wait subq.l #1,D4 bne wait bra nextnote musstop dc.w $FF00 initdata dc.b $20,%11_000_100 dc.b $40,%010_1000 dc.b $48,%000_0100 dc.b $50,%110_1000 dc.b $58,%000_0100 dc.b $60,31 dc.b $68,31 dc.b $70,0 dc.b $78,0 dc.b $80,31 dc.b $80,31 dc.b $90,31 dc.b $98,31 dc.b $A0,7 dc.b $A8,7 dc.b $B0,3 dc.b $B8,3 dc.b $C0,1 dc.b $C8,1 dc.b $D0,3 dc.b $D8,3 dc.b $E0,10*16+3 dc.b $E8,10*16+3 dc.b $F0,5*16+3 dc.b $F8,5*16+3 dc.b 0 musicdata dc.b $41,20 dc.b $3C,20 dc.b $3E,20 dc.b $35,60 dc.b $35,20 dc.b $3E,20 dc.b $41,20 dc.b $3C,60 dc.b $0