//203-288 //;============================================================================== //; //; PCM(PPC/P86)ファイルの読み込み //; P86DRV.COMが常駐していれば.P86を、 //; そうでない場合は.PPCを読む。 //; PMDPPZEが常駐している場合は無条件にPVIをPPZ8に読み込む。 //; //; input DS:AX filename(128byte) //; ES:DI pcm_work(32KB, P86の場合は必要無し) //; output cy = 1 Not Loaded //; PMDB2/PMD86の場合 //; AX=1 SPB/ADPCM-RAMかPMDB2がない //; 86B/P86DRV かPMD86がない //; AX=2 ファイルがない //; AX=3 ファイルがPMDのPCMデータではない //; AX=4 SPB/既に読み込んであるのと同じだった //; 86B/容量OVER //; AX=5 ファイルが読めない //; AX=6 PCMメモリがアクセス中だった //; PMDPPZEの場合 //; AX=1 ファイルの読み込み失敗 //; AX=2 データ形式が違う //; AX=3 メモリが確保できない //; AX=4 EMSハンドルのマッピングができない //; AX=5 PPZ8が常駐していない //; //; .PPC format: //; WORK=PMD内PCMWORK , DATA=PCMRAM先頭のWORK , FILE=PCMFILE //; 123456789012345678901234567890 //; DATA/FILEのみ "ADPCM DATA for PMD ver.4.4- "30bytes //; WORK/DATA/FILE 1Word Next START Address //; 2Word*256 START/STOP //; WORK/DATAのみ 128bytes FILENAME //; DATAのみ 32bytes 予備 //; //; PCMRAM_Work =00000H~00025H //; PCMRAM_Main_data =00026H~01FFFH //; //; .P86 format: //; "PCM86 DATA",0ah,0 12 byte //; P86DRVのversion 1 byte //; 全体のサイズ 3 byte //; 音色table start(3),size(3) * 256 (1536) bytes //; 音色データ 可変 //; //;============================================================================== public void pcm_all_load(string ppcFile) { //cld //r.stack.Push(r.ds); //r.stack.Push(r.es); r.stack.Push(r.bx); r.stack.Push(r.cx); r.stack.Push(r.dx); r.stack.Push(r.si); r.stack.Push(r.di); r.stack.Push(r.bp); pw.filename_ofs = ppcFile; // r.ax; pw.filename_seg = 0; // r.ds; pw.pcmdata_ofs = r.di; pw.pcmdata_seg = 0; // r.es; r.ah = 0xe; //;GET_PCM_ADR pmd.int60_main(r.ax); // int 60h ;DS:DX=PCMワーク pw.pcmwork_ofs = r.dx; pw.pcmwork_seg = 0; // r.ds; all_load(); r.bp = r.stack.Pop(); r.di = r.stack.Pop(); r.si = r.stack.Pop(); r.dx = r.stack.Pop(); r.cx = r.stack.Pop(); r.bx = r.stack.Pop(); //r.es = r.stack.Pop(); //r.ds = r.stack.Pop(); }
public int GetStatus() { if (work.Status < 0) { return(-1); } pmd.int60_main(0x0a00); return(pmd.pw.status2 != 0xff ? 1 : 0); }