STATUS: 33%

0000 T _gethex		compatible
    007e T _zpr			not compatible
    0100 T _debug		not compatible
This commit is contained in:
Oliver Lehmann 2008-06-09 20:06:22 +00:00
parent 505b3ae564
commit 497f2e52c1
1 changed files with 37 additions and 31 deletions

View File

@ -13,6 +13,7 @@
******************************************************************************/ ******************************************************************************/
char debugwstr[] = "@[$]debug.c Rev : 4.1 09/17/83 02:56:07"; char debugwstr[] = "@[$]debug.c Rev : 4.1 09/17/83 02:56:07";
int kdebug = 0;
#include <sys/param.h> #include <sys/param.h>
#include <sys/state.h> #include <sys/state.h>
@ -25,7 +26,6 @@ char debugwstr[] = "@[$]debug.c Rev : 4.1 09/17/83 02:56:07";
#include <sys/user.h> #include <sys/user.h>
#include <sys/proc.h> #include <sys/proc.h>
#include <sys/text.h> #include <sys/text.h>
/*include "debug.h"*/
#define sreg state->s_reg #define sreg state->s_reg
#define eventid state->s_eventid #define eventid state->s_eventid
@ -37,9 +37,9 @@ char debugwstr[] = "@[$]debug.c Rev : 4.1 09/17/83 02:56:07";
#define NBPL 16 #define NBPL 16
#define UMASK 0x3f00ffffL #define UMASK 0x3f00ffffL
#define KMASK 0x7f00ffffL #define KMASK 0x7f00ffffL
#define HMASK (unsigned char)0x0f #define HMASK 0x0f
extern struct { struct {
unsigned a; unsigned a;
union { union {
unsigned int *b; unsigned int *b;
@ -56,11 +56,11 @@ extern char *zpr();
extern mmut; extern mmut;
extern fubyte(), fpbyte(), fkbyte(); extern fubyte(), fpbyte(), fkbyte();
extern getchar(); extern getchar();
extern int kdebug;
static char kdbstr[8]; static char kdbstr[6];
char hzif[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; static char hzif[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
static unsigned char format[19]; static int foo;
static unsigned char format[17];
static unsigned int kval; static unsigned int kval;
long long
@ -156,7 +156,7 @@ struct state *state;
case 'B': case 'B':
case 'b': case 'b':
{ printf("reakpoint @"); { printf("reakpoint @");
kadr = (unsigned int *)((gethex() & UMASK) & KMASK); kadr = (unsigned int *)((long)(gethex() & UMASK) & KMASK);
for (bp_cnt = 0; breakpt[bp_cnt].a && ++bp_cnt<NBPTS; ); for (bp_cnt = 0; breakpt[bp_cnt].a && ++bp_cnt<NBPTS; );
if (bp_cnt >= NBPTS){ if (bp_cnt >= NBPTS){
printf("KDB: No more break slots\n"); printf("KDB: No more break slots\n");
@ -169,13 +169,15 @@ struct state *state;
attr = sdrf.sg_attr; attr = sdrf.sg_attr;
sdrf.sg_attr &= ~RD_AT; sdrf.sg_attr &= ~RD_AT;
loadsd(mmut, hibyte(kadr), &sdrf); loadsd(mmut, hibyte(kadr), &sdrf);
if (!(skbyte(kadr, 0x7f)) && /* 7f02 break */ if ((skbyte(kadr, 0x7f)) || /* 7f02 break */
(skbyte((((char *)kadr)+1), 0x02))){ (skbyte((((char *)kadr)+1), 0x02))){
printf(" FAULT "); printf(" FAULT ");
putchar('\n');
break; break;
} }
sdrf.sg_attr = attr; sdrf.sg_attr = attr;
loadsd(mmut, hibyte(kadr), &sdrf); loadsd(mmut, hibyte(kadr), &sdrf);
putchar('\n');
break; break;
} /* von break - Routine */ } /* von break - Routine */
case 'U': case 'U':
@ -209,6 +211,7 @@ Mdisplay: printf("isplay @");
} }
if ((*sad)(dadr, &format[v1])){ if ((*sad)(dadr, &format[v1])){
printf(" FAULT "); printf(" FAULT ");
putchar('\n');
break; break;
} }
kval = format[v1]<<8; kval = format[v1]<<8;
@ -219,6 +222,7 @@ Mdisplay: printf("isplay @");
dadr++; dadr++;
if ((*sad)(dadr, &format[v1])){ if ((*sad)(dadr, &format[v1])){
printf(" FAULT "); printf(" FAULT ");
putchar('\n');
break; break;
} }
kval |= format[v1]; kval |= format[v1];
@ -261,22 +265,23 @@ Mdisplay: printf("isplay @");
v2 = ((unsigned int)gethex()); v2 = ((unsigned int)gethex());
printf("OK "); printf("OK ");
switch(getchar()){ switch(getchar()){
{ case 'Y': case 'Y':
case 'y': case 'y':
getsd(mmut, hibyte(kadr), &sdrf); getsd(mmut, hibyte(kadr), &sdrf);
attr = sdrf.sg_attr; attr = sdrf.sg_attr;
sdrf.sg_attr &= ~RD_AT; sdrf.sg_attr &= ~RD_AT;
loadsd(mmut, hibyte(kadr), &sdrf); loadsd(mmut, hibyte(kadr), &sdrf);
if ((!(skbyte(kadr, hibyte(v2)))) && if (((skbyte(kadr, hibyte(v2)))) ||
(skbyte(((char *)kadr+1), hibyte(v2)))){ (skbyte(((char *)kadr+1), hibyte(v2)))){
printf(" FAULT "); printf(" FAULT ");
putchar('\n');
break; break;
} }
sdrf.sg_attr = attr; sdrf.sg_attr = attr;
loadsd(mmut, hibyte(kadr), &sdrf); loadsd(mmut, hibyte(kadr), &sdrf);
putchar('\n');
break; break;
} }
}
break; break;
} /* von memory - Routine */ } /* von memory - Routine */
} }
@ -288,11 +293,12 @@ Mdisplay: printf("isplay @");
for (acount = 0; acount < 16; acount++){ for (acount = 0; acount < 16; acount++){
if (!(acount & 7)) if (!(acount & 7))
putchar('\n'); putchar('\n');
printf("r%d:%s ", zpr(sreg[acount])); printf("r%d:%s ", acount, zpr(sreg[acount]));
} }
printf("\nfcw=%s ", zpr(ps)); printf("\nfcw=%s ", zpr(ps));
printf("pcseg=%s ", zpr(pcseg)); printf("pcseg=%s ", zpr(pcseg));
printf("pcoff=%s", zpr(pc)); printf("pcoff=%s", zpr(pc));
putchar('\n');
break; break;
} /* von register - Routine */ } /* von register - Routine */
case 'S': case 'S':