aboutsummaryrefslogtreecommitdiff
path: root/emu.c
diff options
context:
space:
mode:
Diffstat (limited to 'emu.c')
-rw-r--r--emu.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/emu.c b/emu.c
index c1e29e1..afcc646 100644
--- a/emu.c
+++ b/emu.c
@@ -103,11 +103,16 @@ hwq(struct context *c, unsigned short *a)
{
struct device *d = &c->dev[*a];
- c->reg[A] = d->id;
- c->reg[B] = d->id >> 16;
- c->reg[C] = d->version;
- c->reg[X] = d->manu;
- c->reg[Y] = d->manu >> 16;
+ if (d) {
+ c->reg[A] = d->id;
+ c->reg[B] = d->id >> 16;
+ c->reg[C] = d->version;
+ c->reg[X] = d->manu;
+ c->reg[Y] = d->manu >> 16;
+ } else {
+ warnx("invalid device %d", *a);
+ errors++;
+ }
cycle += 4;
}
@@ -117,7 +122,7 @@ hwi(struct context *c, unsigned short *a)
{
struct device *d = &c->dev[*a];
- if (d->cb) {
+ if (d && d->cb) {
d->cb(c);
} else {
warnx("invalid device %d", *a);