forked from MirrorRepos/RomWBW
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
3.0 KiB
115 lines
3.0 KiB
/* monitor.c 7/22/2012 dwg - look around, see what's goin down */
|
|
|
|
#include "stdio.h"
|
|
#include "asmiface.h"
|
|
#include "ctermcap.h"
|
|
#include "cnfgdata.h"
|
|
#include "diagnose.h"
|
|
#include "syscfg.h"
|
|
|
|
struct SYSCFG * pSYSCFG;
|
|
|
|
char visible[256] = {
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 00 */
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 10 */
|
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 20 */
|
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 30 */
|
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 40 */
|
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 50 */
|
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 60 */
|
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, /* 70 */
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 80 */
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 90 */
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* A0 */
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* B0 */
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* C0 */
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* D0 */
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* E0 */
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* F0 */
|
|
};
|
|
|
|
display(sector)
|
|
char * sector;
|
|
{
|
|
int i,j;
|
|
int offset;
|
|
unsigned char byte;
|
|
|
|
offset = 0;
|
|
for(i=0;i<8;i++) {
|
|
printf("%04x: ",sector+offset);
|
|
offset += 16;
|
|
for(j=0;j<16;j++) {
|
|
printf("%02x ",sector[(i*8)+j]);
|
|
}
|
|
printf(" ");
|
|
for(j=0;j<16;j++) {
|
|
byte = sector[(i*8)+j];
|
|
if(1 == visible[byte]) {
|
|
printf("%c",byte);
|
|
} else {
|
|
printf(".");
|
|
}
|
|
}
|
|
printf("\n");
|
|
}
|
|
printf("\n");
|
|
}
|
|
|
|
|
|
#define HIGHSEG 0x0c000
|
|
#define GETSYSCFG 0x0f000
|
|
|
|
main()
|
|
{
|
|
char bRun;
|
|
unsigned int offset;
|
|
struct SYSCFG * pSYSCFG;
|
|
|
|
pSYSCFG = HIGHSEG;
|
|
|
|
hregbc = GETSYSCFG; /* function = Get System Config */
|
|
hregde = HIGHSEG; /* addr of dest (must be high) */
|
|
diagnose(); /* invoke the NBIOS function */
|
|
crtinit(pSYSCFG->cnfgdata.termtype);
|
|
crtclr();crtlc(0,0);
|
|
printf("monitor.c 7/22/2012 dwg - view contents of memory");
|
|
offset = HIGHSEG;
|
|
bRun = 1;
|
|
|
|
while(1 == bRun) {
|
|
crtlc(3,0);
|
|
display(offset);
|
|
display(offset+128);
|
|
printf(
|
|
"Options: 0(0x0000) 1(0x1000) 2(0x2000) 3(0x3000) 4(0x4000) 5(0x5000)\n");
|
|
printf(
|
|
" 6(0x6000) 7(0x7000) 8(0x8000) 9(0x9000) a(0xa000) b(0xb000)\n");
|
|
printf(
|
|
" c(syscfg) n(ext) p(revious) q(uit) ?");
|
|
|
|
asmif(5,1,00);
|
|
printf("%c",0x0d);
|
|
switch(xrega) {
|
|
case '0': offset = 0x00000; break;
|
|
case '1': offset = 0x01000; break;
|
|
case '2': offset = 0x02000; break;
|
|
case '3': offset = 0x03000; break;
|
|
case '4': offset = 0x04000; break;
|
|
case '5': offset = 0x05000; break;
|
|
case '6': offset = 0x06000; break;
|
|
case '7': offset = 0x07000; break;
|
|
case '8': offset = 0x08000; break;
|
|
case '9': offset = 0x09000; break;
|
|
case 'a': offset = 0x0a000; break;
|
|
case 'b': offset = 0x0b000; break;
|
|
case 'd': offset = 0x0d000; break;
|
|
case 'c': offset = 0x0c000; break;
|
|
case 'n': offset += 2*128; break;
|
|
case 'p': offset -= 2*128; break;
|
|
case 'x':
|
|
case 'q': bRun = 0; break;
|
|
}
|
|
}
|
|
}
|
|
|