//////////////////////////////////////////////////////////////// // ベタをP6Tに変換して読込み //////////////////////////////////////////////////////////////// bool cP6T::ConvP6T( const char *filename ) { PRINTD( P6T2_LOG, "[cP6T][ConvP6T] [%s]\n", filename ); FILE *fp; fp = FOPENEN( filename, "rb" ); if( !fp ) return false; // ベタイメージサイズ取得 fseek( fp, 0, SEEK_END ); DWORD BetaSize = ftell( fp ); fseek( fp, 0, SEEK_SET ); // P6T情報設定 SetName( OSD_GetFileNamePart( filename ) ); // データ名(16文字+'00H')はファイル名 Version = 2; // バージョン(とりあえず2) Ainfo.Start = false; // オートスタートフラグ(無効) Ainfo.BASIC = 1; // BASICモード(PC-6001の場合は無意味)(とりあえず1だが無意味) Ainfo.Page = 1; // ページ数(とりあえず1だが無意味) Ainfo.ASKey = 0; // オートスタートコマンドサイズ(0:無効) Ainfo.ask = NULL; // オートスタートコマンド格納領域へのポインタ EHead = 0; // 拡張情報サイズ(0:なし) exh = NULL; // 拡張情報格納領域へのポインタ // PARTを作成 Part = new cP6PART; Part->SetName( "BetaImage" ); // データ名(16文字+'00H')はとりあえず"BetaImage" Part->SetBaud( 1200 ); // ボーレート(1200) // DATAブロックを作成 Part->NewBlock(); Part->FirstData()->SetData( fp, BetaSize ); // データセット Part->FirstData()->SetPeriod( 3400, 6800 ); // 無音部(3400ms),ぴー音(6800ms)時間セット fclose( fp ); return true; }
//////////////////////////////////////////////////////////////// // ウィンドウ更新 //////////////////////////////////////////////////////////////// void cWndStat::Update( void ) { PRINTD( WIN_LOG, "[WndStat][Update]\n" ); const BYTE Kana[] = { 0x96, 0xe5, 0 }; // かな const BYTE KKana[] = { 0xb6, 0xc5, 0 }; // カナ ZCons::Cls(); ZCons::SetColor( FC_WHITE ); // TAPE ZCons::Locate( 0, 0 ); ZCons::Printf( "[TAPE]" ); if( vm->CmtlIsMount() ){ ZCons::SetColor( vm->CmtlIsAutoStart() ? FC_YELLOW : FC_WHITE ); ZCons::Printf( " %-16s", *vm->CmtlGetName() ? vm->CmtlGetName() : OSD_GetFileNamePart( vm->CmtlGetFile() ) ); ZCons::SetColor( FC_WHITE ); ZCons::Locate( ZCons::GetXline()-19, 0 ); if( vm->CpusIsCmtIntrReady() == LOADOPEN ) ZCons::SetColor( FC_WHITE, FC_MAGENTA ); ZCons::Printf( "[%05d/%05d]", vm->CmtlGetCount(), vm->CmtlGetSize() ); ZCons::SetColor( FC_WHITE, FC_GRAY ); } // DISK if( DrvNum > 0 ){ if( vm->DskInAccess( 0 ) ) ZCons::SetColor( FC_WHITE, FC_RED ); else ZCons::SetColor( FC_WHITE, FC_GRAY ); ZCons::Locate( 0, 1 ); ZCons::Printf( "[DRV1]" ); if( vm->DskIsMount( 0 ) ){ ZCons::SetColor( vm->DskIsSystem( 0 ) ? FC_YELLOW : FC_WHITE, vm->DskIsProtect( 0 ) ? FC_DRED : FC_GRAY ); ZCons::Printf( " %-16s", *vm->DskGetName( 0 ) ? vm->DskGetName( 0 ) : OSD_GetFileNamePart( vm->DskGetFile( 0 ) ) ); } } if( DrvNum > 1 ){ if( vm->DskInAccess( 1 ) ) ZCons::SetColor( FC_WHITE, FC_RED ); else ZCons::SetColor( FC_WHITE, FC_GRAY ); ZCons::Locate( 0, 2 ); ZCons::Printf( "[DRV2]" ); if( vm->DskIsMount( 1 ) ){ ZCons::SetColor( vm->DskIsSystem( 1 ) ? FC_YELLOW : FC_WHITE, vm->DskIsProtect( 1 ) ? FC_DRED : FC_GRAY ); ZCons::Printf( " %-16s", *vm->DskGetName( 1 ) ? vm->DskGetName( 1 ) : OSD_GetFileNamePart( vm->DskGetFile( 1 ) ) ); } // アクセスランプ } ZCons::SetColor( FC_WHITE, FC_GRAY ); // かなキー ZCons::Locate( -5, 0 ); switch( vm->KeyGetKeyIndicator() & 3 ){ case KI_KANA: // かな ZCons::PutCharH( Kana[0] ); ZCons::PutCharH( Kana[1] ); break; case KI_KKANA: // カナ ZCons::PutCharH( KKana[0] ); ZCons::PutCharH( KKana[1] ); } // CAPSキー if( vm->KeyGetKeyIndicator() & 4 ) ZCons::Printfr( "ABC" ); // ABC else ZCons::Printfr( "abc" ); // abc // リプレイステータス ZCons::Locate( -2, 0 ); switch( ReplayStatus ){ case REP_RECORD: // 記録中 ZCons::SetColor( FC_RED ); ZCons::Print( "●" ); break; case REP_REPLAY: // 再生中 ZCons::SetColor( FC_GREEN ); ZCons::Print( "■" ); break; } }