#ifndef __SCREEN_H_ #define __SCREEN_H_ void setup_screen(int Port, long fileSize, char *fileName, unsigned sampleRate, int trunc, int Comp, char *DacPlayerLogo, int dev) { char *smem = (char *) 0xA0000000L; char *filename; long i, ii; if (strlen(fileName) < 30) filename = fileName; else { char *temp = fileName; int ti; filename = (char *) malloc(60); filename[0] = fileName[0]; filename[1] = fileName[1]; filename[2] = fileName[2]; filename[3] = '.'; filename[4] = '.'; filename[5] = '.'; ti = 6; while (*temp) temp++; while (*temp != '\\') temp--; while (*temp) filename[ti++] = *(temp++); filename[ti] = 0; } textattr(0x1); clreol(); textattr(0x1f); gotoxy(40 - (strlen(DacPlayerLogo)/2),1); cprintf(DacPlayerLogo); textattr(0xF); gotoxy(4, 3); cprintf("File name : "); textattr(7); cprintf("%s", filename); gotoxy(4, 4); textattr(15); cprintf("File size :"); textattr(7); cprintf(" %ldk", fileSize >> 10); if(trunc) cprintf(" (trunctuated)"); textattr(15); gotoxy(4,5); cprintf("File type :"); textattr(7); cprintf(" 8-bit mono"); if (Comp) { cprintf(" compressed"); fileSize <<= 1; } i = fileSize / sampleRate; ii = i / 60; i %= 60; gotoxy(4,6); textattr(15); cprintf("File length: "); textattr(7); if (ii) cprintf("%ld minute%s ", ii, ii == 1 ? "" : "s"); if (i) cprintf("%ld second%s", i, i == 1 ? "" : "s"); gotoxy(4,7); textattr(15); cprintf("Device : "); textattr(7); switch (dev) { case SOUNDPLAYER: cprintf("Soundplayer on "); switch(Port) { case 0x378: cprintf("LPT1"); break; case 0x278: cprintf("LPT2"); break; default: cprintf("%Xh", Port); break; } break; case SOUNDBLASTER: cprintf("Soundblaster on %Xh",Port); break; default: cprintf("???"); break; } gotoxy(4,8); textattr(15); cprintf("Sample rate: "); textattr(7); cprintf("%u", sampleRate); textattr(15); gotoxy(4,9); cprintf("Osc Mode :"); textattr(15); gotoxy(50,4); cprintf("Controls: "); textattr(15); gotoxy(52,5); cprintf("ESC -> "); textattr(7); cprintf("Exit"); gotoxy(52,7); textattr(15); cprintf("D -> "); textattr(7); cprintf("Shell"); gotoxy(52,6); textattr(15); cprintf("O -> "); textattr(7); cprintf("Set Osc Mode"); textattr(15); gotoxy(27,24); cprintf("Time elapsed :"); gotoxy(27,25); cprintf("Time remaining:"); textattr(7); for (i = 64; i < 576; i += 8) smem[(240-64)*80 + (i/8)] = 0xff; for (i = 64; i < 576; i += 8) smem[(240+64)*80 + (i/8)] = 0xff; smem[(240-64)*80+7] |= 3; smem[(240+64)*80+7] |= 3; for (i = 240-63; i < 240+65; i++) smem[i*80 + 7] |= 2; smem[(240-64)*80+72] |= 64+128; smem[(240+64)*80+72] |= 64+128; for (i = 240-63; i < 240+65; i++) smem[i*80 + (80-8)] |= 64; if (filename != fileName) free(filename); } void refresh_screen(long fileSize, long totalSamples, unsigned Rate, int looping) { int min, secs; gotoxy(43,24); secs = totalSamples / Rate; min = secs / 60; secs %= 60; cprintf("%02d:%02d", min, secs); cprintf(" %02ld%%", (totalSamples*100)/fileSize); secs = (fileSize - totalSamples) / Rate; min = secs / 60; secs %= 60; gotoxy(43,25); cprintf("%02d:%02d", min, secs); if (looping) cprintf(" (looping)"); } #endif