Files
RomWBW/trunk/Apps/crossdev/TMSSTAT.C
2013-02-16 06:42:29 +00:00

114 lines
2.9 KiB
C
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* tmsstat.c 10/30/2012 dwg - */
/* Ther purpose of this program is to read the VRAM of the
TMS9918 video processor and display the contents in the
most usable form. First is the raw hexadecimal dump of
the first 16K of the VRAM, followed by a hexadecimal
dump of the name table by line number, and finally the
charactert generator bitmaps in ASCII order.
*/
#include "stdio.h"
#include "applvers.h"
#include "n8chars.h"
#include "tms9918.h"
char szTemp[128];
char linenum;
char counter;
char outer;
char inner;
char limit;
int index;
unsigned int line;
unsigned char ubyte;
unsigned char bitmask;
int row;
int bit;
int ascii;
int bool;
FILE * fd;
int main(argc,argv)
int argc;
char *argv[];
{
char column;
printf("tmsstat.com 10/04/2012 dwg - create tms9918.dmp files from VRAM\n");
vdp_wrvram(0);
in(DATAP);
fd = fopen("tms9918.dmp","w");
fprintf(fd,"This is a hexadecimal dump of the entire 16K VRAM\n");
fprintf(fd,"Addr: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F\n");
fprintf(fd,"-----------------------------------------------------\n");
for(line=0;line<16384/16;line++) {
fprintf(fd,"%04x: ",line*16);
for(column=0;column<16;column++) {
fprintf(fd,"%02x ",in(DATAP));
}
fprintf(fd,"\n");
printf("%cline %d",0x0d,line);
}
printf("\nDump of VRAM Completed\n");
vdp_wrvram(0);
in(DATAP);
fprintf(fd,"\nThis is a hexadeci8mal dump of the Name Table for \n");
fprintf(fd,"the 24 lines of the display in Text Mode.\n");
fprintf(fd,"-----------------------------------------------------\n");
for(line=0;line<24;line++) {
fprintf(fd,"%2d: ",line);
for(column=0;column<20;column++) {
fprintf(fd,"%02x ",in(DATAP));
}
fprintf(fd,"\n");
fprintf(fd,"%2d: ",line);
for(column=0;column<20;column++) {
fprintf(fd,"%02x ",in(DATAP));
}
fprintf(fd,"\n\n");
printf("%cline %d",0x0d,line);
}
printf("\nDump of Name Table for 40x24 Text Mode Lines Completed\n");
fprintf(fd,"\n This is a Hexadecimal, Decimal, and Graphic dump\n");
fprintf(fd,"of the Character Generator Bitmaps for all 256 ASCII ");
fprintf(fd,"chars.\n\n");
vdp_wrvram(0x800);
in(DATAP);
for(ascii=0;ascii<256;ascii++) {
printf("%cDumping ASCII %d",0x0d,ascii);
fprintf(fd,"0x%2x(%3d):\n",ascii,ascii);
for(row=0;row<8;row++) {
ubyte = in(DATAP);
fprintf(fd,"0x%02x: ",ubyte);
for(bit=0;bit<8;bit++) {
bitmask = 1<<(7-bit);
bool = ubyte & bitmask;
if(0 == bool ) {
fprintf(fd," ");
} else {
fprintf(fd,"*");
}
}
fprintf(fd,"\n");
}
fprintf(fd,"\n");
printf("%cline %d",0x0d,line);
}
fprintf(fd,"-----------------------------------------------------\n");
fclose(fd);
printf("\nDump of Character Bitmap Data Completed.\n");
}