$v{noiselevel}=
($cname =~ m/nmradone/ ? 3 :
$cname =~ m/p[io]ng/ ? 2 :
- $cname =~ m/detect/ ? 1 :
+ $cname =~ m/detect/ ? 2 :
0);
$v{cnameyn}= $cname.$yval;
$v{cnameynu}= uc($cname.$yval);
" detection interrupts\"", objnum);
}
-void on_pic_detect1(const PicInsnInfo *pii, const PicInsn *pi, int segn) {
- Segment *seg;
- if (segn >= NUM_SEGMENTS) die("PIC sent detect @#%#x out of range",segn);
+static SegmentNum on_pic_detect_prep(int detyn, int objnum) {
+ SegmentNum segn;
+
+ if (objnum >= info_segmentmaplen ||
+ (segn= info_segmentmap[objnum]) < 0)
+ die("PIC sent detect%d @#%#x not in map",detyn,objnum);
+ oprintf(UPO,"picio in detect%d %s\n",detyn,info_segments[segn].pname);
+
+ return segn;
+}
+
+void on_pic_detect1(const PicInsnInfo *pii, const PicInsn *pi, int objnum) {
+ SegmentNum segn;
+ Segment *seg;
+
+ segn= on_pic_detect_prep(1,objnum);
seg= &segments[segn];
switch (sta_state) {
}
void on_pic_detect0(const PicInsnInfo *pii, const PicInsn *pi, int objnum) {
+ on_pic_detect_prep(0,objnum);
}
void choreographers_all_abandon(void) { }
}
o("\n};\n");
o("const BoardObject info_maxreverse= $maxreverseobjnum;\n");
- o("#define U -1\n");
+ o("#define u -1\n");
o("const SegmentNumInMap info_segmentmap[]= {\n");
$i=0;
foreach $seg (@sensemap) {
o(!$i ? ' ' :
!($i % 12) ? ",\n " :
",");
- o(defined($seg) ? sprintf("%4d",$seg) : ' U');
+ o(defined($seg) ? sprintf("%4d",$seg) : ' u');
$i++;
}
o("\n};\n".
+ "#undef u\n".
"const int info_segmentmaplen= ".scalar(@sensemap).";\n");
}