+#ifdef MMSMSCANINFO\r
+ {\r
+ unsigned maxq = q;\r
+ boolean done;\r
+ ScanCode scancode;\r
+ int xpos,ypos;\r
+ word qq, ccolor = 3;\r
+ IN_Ack(gvar);\r
+// VL_ClearVideo (8);\r
+ for (qq = 0,done = false;!done;)\r
+ {\r
+ if(scaninfo[qq].scan->attributes & PURGEBITS)\r
+ {\r
+ ccolor = 6; // dark purple = purgable\r
+ }else{\r
+ ccolor = 2; // medium blue = non purgable\r
+ }\r
+ if(scaninfo[qq].scan->attributes & LOCKBIT)\r
+ {\r
+ ccolor = 1; // red = locked\r
+ }\r
+/*typedef struct mmblockstruct{\r
+ word start,length;\r
+ unsigned attributes;\r
+ memptr *useptr; // pointer to the segment start\r
+ struct mmblockstruct far *next;\r
+} mmblocktype;*/\r
+ //modexprint(page, x, y, t, tlsw, color, bgcolor, vidsw, const byte *str);\r
+#define MMSMPRINTMEMINFO modexprint(&(gvar->video.page[0]), xpos, ypos, 1, 0, ccolor, 8, gvar->video.VL_Started, global_temp_status_text); ypos+=8;\r
+ VL_ShowPage(&gvar->video.page[0], 1, 0);\r
+ if(!gvar->video.VL_Started) clrscr();\r
+ sprintf(global_temp_status_text, "block #%04u", qq); MMSMPRINTMEMINFO\r
+// sprintf(global_temp_status_text, "%Fp", scaninfo[qq].scan->useptr); MMSMPRINTMEMINFO\r
+ sprintf(global_temp_status_text, "%04x", (unsigned)scaninfo[qq].scan->useptr); MMSMPRINTMEMINFO\r
+ sprintf(global_temp_status_text, "size: %05u", (unsigned)scan->length); MMSMPRINTMEMINFO\r
+ sprintf(global_temp_status_text, "free: %05u", (unsigned)(scaninfo[qq].scan->next->start-scaninfo[qq].scan->start)); MMSMPRINTMEMINFO\r
+ //if (scan->next && scan->next->start > end+1) free\r
+ xpos = 16;\r
+ ypos = 16;//(gvar->video.page[0].sh-(32));//8*4\r
+ while (!(scancode = gvar->in.inst->LastScan)){}\r
+\r
+ IN_ClearKey(scancode);\r
+ switch (scancode)\r
+ {\r
+ case sc_LeftArrow:\r
+ if(qq>0) qq--;\r
+ else qq = maxq;\r
+ break;\r
+ case sc_RightArrow:\r
+ if(qq<maxq) qq++;\r
+ else qq = 0;\r
+ break;\r
+ case sc_Escape:\r
+ done = true;\r
+ break;\r
+ }\r
+ }\r
+ }\r
+#endif\r
+\r
+ IN_Ack(gvar);\r