復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第355回]
●MIDIデータの解読とデータ送信
前回からの続きです。
前回説明をしましたように、必要な設定処理を済ませたあとは、ひたすらトラック用ワークエリアを巡回チェックします。
各トラック用ワークエリアの(IX+02)〜(IX+04)には時間データが書かれていて、その値はZ8S180内蔵カウンタの割込みプログラムによって、時間経過とともにカウントダウンされていきます。
最後に0になると、(IX+01)に00が書き込まれます。
各トラック用ワークエリアを巡回して、その(IX+01)が00であることを確認したら、そのときの時間データの次に書かれているMIDIイベントデータの解読をします。
80CE DD6E05 LD L,(IX+05) 80D1 DD6606 LD H,(IX+06) 80D4 7E LD A,(HL) 80D5 FEFF CP FF 80D7 CA0781 JP Z,CODEFF 80DA FEF0 CP F0 80DC CA5381 JP Z,CODEF0 80DF E6F0 AND F0 80E1 F2FE80 JP P,RUNSTS;running status 80E4 FEC0 CP C0 80E6 CAF580 JP Z,CXOUT 80E9 FED0 CP D0 80EB CAF580 JP Z,CXOUT 80EE 7E LD A,(HL) 80EF DD7707 LD (IX+07),A;code save 80F2 CD4B82 CALL MIDIOUT 80F5 CD4B82 CXOUT:CALL MIDIOUT 80F8 CD4B82 CALL MIDIOUT 80FB C31881 JP NEXTDT |
824B DBFE MIDIOUT:IN A,(FE) 824D E620 AND 20 824F CA4B82 JP Z,MIDIOUT 8252 7E LD A,(HL) 8253 D3FD OUT (FD),A 8255 3E02 LD A,02;bit1=L,bit0=H;bit0-4 are INVERT 8257 D3FE OUT (FE),A 8259 DBFE MIDIOUT2:IN A,(FE) 825B E620 AND 20 825D C25982 JP NZ,MIDIOUT2 8260 AF XOR A 8261 D3FE OUT (FE),A 8263 23 INC HL 8264 C9 RET |