// #define WRD_VERBOSE static void wrdt_apply(int cmd, int wrd_argc, int wrd_args[]) { char *p; char *text; int i, len; static txtclr_preserve=0; if ( !w32g_wrd_wnd.active ) return; switch(cmd) { case WRD_LYRIC: p = wrd_event2string(wrd_args[0]); len = strlen(p); text = (char *)new_segment(&tmpbuffer, SAFE_CONVERT_LENGTH(len)); /*This must be not good thing,but as far as I know no wrd file written in EUC-JP code found*/ strcpy(text,p); #ifdef WRD_VERBOSE // ctl->cmsg(CMSG_INFO, VERB_VERBOSE, // "[WRD_LYRIC]\n%s", text ); #endif putstring_with_esc(text); reuse_mblock(&tmpbuffer); break; case WRD_NL: /* Newline (Ignored) */ esc_nextline(); // putchar('\n'); break; case WRD_COLOR: /*Compatibility Hack,This remaps color(17-29 color seems to be ignored in kterm)*/ esc_characterattribute(wrd_args[0]); break; case WRD_END: /* Never call */ break; case WRD_ESC: borlandc_esc(wrd_event2string(wrd_args[0])); break; case WRD_EXEC: /*I don't spaun another program*/ ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@EXEC(%s)", wrd_event2string(wrd_args[0])); break; case WRD_FADE: wrd_graphic_fade ( wrd_args[0], wrd_args[1], wrd_args[2] ); #ifdef WRD_VERBOSE ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@FADE(%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2]); #endif break; case WRD_FADESTEP: wrd_graphic_fadestep ( wrd_args[0] ); #ifdef WRD_VERBOSE ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@FADESTEP(%d/%d)", wrd_args[0], WRD_MAXFADESTEP); #endif break; case WRD_GCIRCLE: wrd_graphic_gcircle ( wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5] ); ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@GCIRCLE(%d,%d,%d,%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5]); break; case WRD_GCLS: wrd_graphic_gcls ( wrd_args[0] ); #ifdef WRD_VERBOSE ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@GCLS(%d)", wrd_args[0]); #endif break; case WRD_GINIT: wrd_graphic_ginit (); #ifdef WRD_VERBOSE ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@GINIT()"); #endif break; case WRD_GLINE: wrd_graphic_gline ( wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5], wrd_args[6] ); #ifdef WRD_VERBOSE ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@GLINE(%d,%d,%d,%d,%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5], wrd_args[6]); #endif break; case WRD_GMODE: wrd_graphic_gmode ( wrd_args[0] ); #ifdef WRD_VERBOSE ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@GMODE(%d)", wrd_args[0]); #endif break; case WRD_GMOVE: wrd_graphic_gmove ( wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5], wrd_args[6], wrd_args[7], wrd_args[8] ); #ifdef WRD_VERBOSE ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@GMOVE(%d,%d,%d,%d,%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5], wrd_args[6], wrd_args[7], wrd_args[8]); #endif break; case WRD_GON: wrd_graphic_gon ( wrd_args[0] ); #ifdef WRD_VERBOSE ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@GON(%d)", wrd_args[0]); #endif break; case WRD_GSCREEN: wrd_graphic_gscreen ( wrd_args[0], wrd_args[1] ); #ifdef WRD_VERBOSE ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@GSCREEN(%d,%d)", wrd_args[0], wrd_args[1]); #endif break; case WRD_INKEY: inkey_flag = 1; ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@INKEY - begin"); break; case WRD_OUTKEY: inkey_flag = 0; ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@INKEY - end"); break; case WRD_LOCATE: { int x = wrd_args[0], y = wrd_args[1]; WrdWndGoto(x-1, y-1); } break; case WRD_LOOP: /* Never call */ break; case WRD_MAG: wrd_graphic_mag ( wrd_event2string(wrd_args[0]), wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4]); #ifdef WRD_VERBOSE p = (char *)new_segment(&tmpbuffer, MIN_MBLOCK_SIZE); strcpy(p, "@MAG("); strcat(p, wrd_event2string(wrd_args[0])); strcat(p, ","); for(i = 1; i < 3; i++) { if(wrd_args[i] == WRD_NOARG) strcat(p, "*,"); else sprintf(p + strlen(p), "%d,", wrd_args[i]); } sprintf(p + strlen(p), "%d,%d)", wrd_args[3], wrd_args[4]); ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "%s", p); reuse_mblock(&tmpbuffer); #endif break; case WRD_MIDI: /* Never call */ break; case WRD_OFFSET: /* Never call */ break; case WRD_PAL: wrd_graphic_pal_g4r4b4 (wrd_args[0], wrd_args + 1, 16 ); #ifdef WRD_VERBOSE p = (char *)new_segment(&tmpbuffer, MIN_MBLOCK_SIZE); sprintf(p, "@PAL(%03x", wrd_args[0]); for(i = 1; i < 17; i++) sprintf(p + strlen(p), ",%03x", wrd_args[i]); strcat(p, ")"); ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "%s", p); reuse_mblock(&tmpbuffer); #endif break; case WRD_PALCHG: wrd_graphic_apply_pal ( wrd_args[0] ); #ifdef WRD_VERBOSE ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@PALCHG(%s)", wrd_event2string(wrd_args[0])); #endif break; case WRD_PALREV: wrd_graphic_palrev ( wrd_args[0] ); #ifdef WRD_VERBOSE ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@PALREV(%d)", wrd_args[0]); #endif break; case WRD_PATH: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@PATH(%s)", wrd_event2string(wrd_args[0])); break; case WRD_PLOAD: wrd_graphic_pload ( wrd_event2string(wrd_args[0]) ); #ifdef WRD_VERBOSE ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@PLOAD(%s)", wrd_event2string(wrd_args[0])); #endif break; case WRD_REM: p = wrd_event2string(wrd_args[0]); len = strlen(p); text = (char *)new_segment(&tmpbuffer, SAFE_CONVERT_LENGTH(len)); code_convert(p, text, SAFE_CONVERT_LENGTH(len), NULL, NULL); ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@REM %s", text); reuse_mblock(&tmpbuffer); break; case WRD_REMARK: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@REMARK(%s)", wrd_event2string(wrd_args[0])); break; case WRD_REST: /* Never call */ break; case WRD_SCREEN: /* Not supported */ break; case WRD_SCROLL: wrd_text_scroll (wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5], wrd_args[6]); #ifdef WRD_VERBOSE ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@SCROLL(%d,%d,%d,%d,%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5], wrd_args[6]); #endif break; case WRD_STARTUP: WrdWndReset (); inkey_flag = 0; #ifdef WRD_VERBOSE ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@STARTUP(%d)", wrd_args[0]); #endif esc_clearscreen(); break; case WRD_STOP: /* Never call */ break; case WRD_TCLS: { char fillbuf[1024]; { int left = wrd_args[0], right = wrd_args[2]; int top = wrd_args[1], bottom = wrd_args[3]; SEIKIX(left); SEIKIX(right); SEIKIY(top); SEIKIY(bottom); if(left>right) right = left; if(top>bottom) bottom = top; memset(fillbuf,wrd_args[5],right-left);/*X2-X1*/ fillbuf[right-left]=0; // borlandc_con_save_attr(); esc_characterattribute(wrd_args[4]); for(i=top;i<=bottom;i++)/*Y1 to Y2*/ { WrdWndGoto(left-1,i-1); putstring(fillbuf); } // borlandc_con_restore_attr(); } } break; case WRD_TON: wrd_text_ton ( wrd_args[0] ); ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@TON(%d)", wrd_args[0]); break; case WRD_WAIT: /* Never call */ break; case WRD_WMODE: /* Never call */ break; /* Ensyutsukun */ case WRD_eFONTM: print_ecmd("FONTM", wrd_args, 1); break; case WRD_eFONTP: print_ecmd("FONTP", wrd_args, 4); break; case WRD_eFONTR: print_ecmd("FONTR", wrd_args, 17); break; case WRD_eGSC: print_ecmd("GSC", wrd_args, 1); break; case WRD_eLINE: print_ecmd("LINE", wrd_args, 1); break; case WRD_ePAL: print_ecmd("PAL", wrd_args, 2); break; case WRD_eREGSAVE: print_ecmd("REGSAVE", wrd_args, 17); break; case WRD_eSCROLL: print_ecmd("SCROLL",wrd_args, 2); break; case WRD_eTEXTDOT: print_ecmd("TEXTDOT", wrd_args, 1); break; case WRD_eTMODE: print_ecmd("TMODE", wrd_args, 1); break; case WRD_eTSCRL: print_ecmd("TSCRL", wrd_args, 0); break; case WRD_eVCOPY: print_ecmd("VCOPY", wrd_args, 9); break; case WRD_eVSGET: print_ecmd("VSGE", wrd_args, 4); break; case WRD_eVSRES: print_ecmd("VSRES", wrd_args, 0); break; case WRD_eXCOPY: wrd_graphic_xcopy ( wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5], wrd_args[6], wrd_args[7], wrd_args[8], wrd_args[9], wrd_args[10], wrd_args[11], wrd_args[12], wrd_args[13] ); print_ecmd("XCOPY", wrd_args, 14); break; case WRD_START_SKIP: wrd_start_skip (); #ifdef WRD_VERBOSE ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "WRD_START_SKIP"); #endif break; case WRD_END_SKIP: wrd_end_skip (); #ifdef WRD_VERBOSE ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "WRD_END_SKIP"); #endif break; /* Extensionals */ } }
static void wrdt_apply(int cmd, int wrd_argc, int wrd_args[]) { char *p; char *text; int i, len; static int txtclr_preserve=0; #if 0 if(inkey_flag) printf("* "); #endif switch(cmd) { case WRD_LYRIC: p = wrd_event2string(wrd_args[0]); len = strlen(p); text = (char *)new_segment(&tmpbuffer, SAFE_CONVERT_LENGTH(len)); /*This must be not good thing,but as far as I know no wrd file written in EUC-JP code found*/ code_convert(p, text, SAFE_CONVERT_LENGTH(len), "SJIS", (char *)-1); printf("%s",text); fflush(stdout); reuse_mblock(&tmpbuffer); break; case WRD_NL: /* Newline (Ignored) */ putchar('\n'); break; case WRD_COLOR: txtclr_preserve=wrd_args[0]; if(16 <= txtclr_preserve && txtclr_preserve <= 23) txtclr_preserve = wrd_color_remap[txtclr_preserve - 16] + 30; printf("\033[%dm", txtclr_preserve); break; case WRD_END: /* Never call */ break; case WRD_ESC: printf("\033[%s", wrd_event2string(wrd_args[0])); break; case WRD_EXEC: /*I don't spaun another program*/ ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@EXEC(%s)", wrd_event2string(wrd_args[0])); break; case WRD_FADE: ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@FADE(%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2]); break; case WRD_FADESTEP: ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@FADESTEP(%d/%d)", wrd_args[0], WRD_MAXFADESTEP); break; case WRD_GCIRCLE: ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@GCIRCLE(%d,%d,%d,%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5]); break; case WRD_GCLS: ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@GCLS(%d)", wrd_args[0]); break; case WRD_GINIT: ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@GINIT()"); break; case WRD_GLINE: ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@GLINE(%d,%d,%d,%d,%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5], wrd_args[6]); fflush(stdout); break; case WRD_GMODE: ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@GMODE(%d)", wrd_args[0]); break; case WRD_GMOVE: ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@GMOVE(%d,%d,%d,%d,%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5], wrd_args[6], wrd_args[7], wrd_args[8]); break; case WRD_GON: ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@GON(%d)", wrd_args[0]); break; case WRD_GSCREEN: ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@GSCREEN(%d,%d)", wrd_args[0], wrd_args[1]); break; case WRD_INKEY: inkey_flag = 1; ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@INKEY - begin"); break; case WRD_OUTKEY: inkey_flag = 0; ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@INKEY - end"); break; case WRD_LOCATE: printf("\033[%d;%dH", wrd_args[1], wrd_args[0]); break; case WRD_LOOP: /* Never call */ break; case WRD_MAG: p = (char *)new_segment(&tmpbuffer, MIN_MBLOCK_SIZE); strcpy(p, "@MAG("); strcat(p, wrd_event2string(wrd_args[0])); strcat(p, ","); for(i = 1; i < 3; i++) { if(wrd_args[i] == WRD_NOARG) strcat(p, "*,"); else sprintf(p + strlen(p), "%d,", wrd_args[i]); } sprintf(p + strlen(p), "%d,%d)", wrd_args[3], wrd_args[4]); ctl->cmsg(CMSG_INFO, VERB_DEBUG, "%s", p); reuse_mblock(&tmpbuffer); break; case WRD_MIDI: /* Never call */ break; case WRD_OFFSET: /* Never call */ break; case WRD_PAL: p = (char *)new_segment(&tmpbuffer, MIN_MBLOCK_SIZE); sprintf(p, "@PAL(%03x", wrd_args[0]); for(i = 1; i < 17; i++) sprintf(p + strlen(p), ",%03x", wrd_args[i]); strcat(p, ")"); ctl->cmsg(CMSG_INFO, VERB_DEBUG, "%s", p); reuse_mblock(&tmpbuffer); break; case WRD_PALCHG: ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@PALCHG(%s)", wrd_event2string(wrd_args[0])); break; case WRD_PALREV: ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@PALREV(%d)", wrd_args[0]); break; case WRD_PATH: ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@PATH(%s)", wrd_event2string(wrd_args[0])); break; case WRD_PLOAD: ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@PLOAD(%s)", wrd_event2string(wrd_args[0])); break; case WRD_REM: p = wrd_event2string(wrd_args[0]); len = strlen(p); text = (char *)new_segment(&tmpbuffer, SAFE_CONVERT_LENGTH(len)); code_convert(p, text, SAFE_CONVERT_LENGTH(len), NULL, NULL); ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@REM %s", text); reuse_mblock(&tmpbuffer); break; case WRD_REMARK: ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@REMARK(%s)", wrd_event2string(wrd_args[0])); break; case WRD_REST: /* Never call */ break; case WRD_SCREEN: /* Not supported */ break; case WRD_SCROLL: ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@SCROLL(%d,%d,%d,%d,%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5], wrd_args[6]); break; case WRD_STARTUP: inkey_flag = 0; ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@STARTUP(%d)", wrd_args[0]); printf("\033[0m\033[H\033[J"); fflush(stdout); break; case WRD_STOP: /* Never call */ break; case WRD_TCLS: { char fillbuf[1024]; fillbuf[0]=0x1b; fillbuf[1]='7'; fillbuf[2]=0; printf(fillbuf); /* 0-7: normal, 8-16: reverse */ if(wrd_args[4] <= 7) wrd_args[4] += 30; else wrd_args[4] += 32; printf("\033[%dm",wrd_args[4]); memset(fillbuf,wrd_args[5],wrd_args[2]-wrd_args[0]);/*X2-X1*/ fillbuf[wrd_args[2]-wrd_args[0]]=0; for(i=wrd_args[1];i<=wrd_args[3];i++)/*Y1 to Y2*/ printf("\033[%d;%dH%s",i,wrd_args[0],fillbuf);/*X1to....*/ fillbuf[0]=0x1b; fillbuf[1]='8'; fillbuf[2]=0; printf(fillbuf); printf("\033[%dm",txtclr_preserve); fflush(stdout); } #if 0 ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@TCLS(%d,%d,%d,%d,%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5]); #endif break; case WRD_TON: ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@TON(%d)", wrd_args[0]); break; case WRD_WAIT: /* Never call */ break; case WRD_WMODE: /* Never call */ break; /* Ensyutsukun */ case WRD_eFONTM: break; case WRD_eFONTP: break; case WRD_eFONTR: break; case WRD_eGSC: break; case WRD_eLINE: break; case WRD_ePAL: break; case WRD_eREGSAVE: break; case WRD_eSCROLL: break; case WRD_eTEXTDOT: break; case WRD_eTMODE: break; case WRD_eTSCRL: break; case WRD_eVCOPY: break; case WRD_eVSGET: break; case WRD_eVSRES: break; case WRD_eXCOPY: break; default: break; } wrd_argc = 0; }
static void wrdt_apply(int cmd, int wrd_argc, int wrd_args[]) { char *p; char *text; int i, len; if(cmd == WRD_MAGPRELOAD) return; /* Load MAG file */ if(cmd == WRD_PHOPRELOAD) return; /* Load PHO file - Not implemented */ if(inkey_flag) printf("* "); switch(cmd) { case WRD_LYRIC: p = wrd_event2string(wrd_args[0]); len = strlen(p); text = (char *)new_segment(&tmpbuffer, SAFE_CONVERT_LENGTH(len)); code_convert(p, text, SAFE_CONVERT_LENGTH(len), NULL, NULL); ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "%s", text); reuse_mblock(&tmpbuffer); break; case WRD_NL: /* Newline (Ignored) */ break; case WRD_COLOR: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@COLOR(%d)", wrd_args[0]); break; case WRD_END: /* Never call */ break; case WRD_ESC: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@ESC(%s)", wrd_event2string(wrd_args[0])); break; case WRD_EXEC: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@EXEC(%s)", wrd_event2string(wrd_args[0])); break; case WRD_FADE: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@FADE(%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2]); break; case WRD_FADESTEP: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@FADESTEP(%d/%d)", wrd_args[0], WRD_MAXFADESTEP); break; case WRD_GCIRCLE: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@GCIRCLE(%d,%d,%d,%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5]); break; case WRD_GCLS: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@GCLS(%d)", wrd_args[0]); break; case WRD_GINIT: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@GINIT()"); break; case WRD_GLINE: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@GLINE(%d,%d,%d,%d,%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5], wrd_args[6]); break; case WRD_GMODE: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@GMODE(%d)", wrd_args[0]); break; case WRD_GMOVE: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@GMOVE(%d,%d,%d,%d,%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5], wrd_args[6], wrd_args[7], wrd_args[8]); break; case WRD_GON: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@GON(%d)", wrd_args[0]); break; case WRD_GSCREEN: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@GSCREEN(%d,%d)", wrd_args[0], wrd_args[1]); break; case WRD_INKEY: inkey_flag = 1; ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@INKEY - begin"); break; case WRD_OUTKEY: inkey_flag = 0; ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@INKEY - end"); break; case WRD_LOCATE: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@LOCATE(%d,%d)", wrd_args[0], wrd_args[1]); break; case WRD_LOOP: /* Never call */ break; case WRD_MAG: p = (char *)new_segment(&tmpbuffer, MIN_MBLOCK_SIZE); snprintf(p, MIN_MBLOCK_SIZE-1, "@MAG(%s", wrd_event2string(wrd_args[0])); p[MIN_MBLOCK_SIZE-1] = '\0'; /* fail safe */ for(i = 1; i < 5; i++) { if(wrd_args[i] == WRD_NOARG) strncat(p, ",*", MIN_MBLOCK_SIZE - strlen(p) - 1); else { char q[CHAR_BIT*sizeof(int)]; snprintf(q, sizeof(q)-1, ",%d", wrd_args[i]); strncat(p, q, MIN_MBLOCK_SIZE - strlen(p) - 1); } } strncat(p, ")", MIN_MBLOCK_SIZE - strlen(p) - 1); ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "%s", p); reuse_mblock(&tmpbuffer); break; case WRD_MIDI: /* Never call */ break; case WRD_OFFSET: /* Never call */ break; case WRD_PAL: p = (char *)new_segment(&tmpbuffer, MIN_MBLOCK_SIZE); snprintf(p, MIN_MBLOCK_SIZE, "@PAL(%03x", wrd_args[0]); for(i = 1; i < 17; i++) { char q[5]; snprintf(q, sizeof(q)-1, ",%03x", wrd_args[i]); strncat(p, q, MIN_MBLOCK_SIZE - strlen(p) - 1); } strncat(p, ")", MIN_MBLOCK_SIZE - strlen(p) - 1); ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "%s", p); reuse_mblock(&tmpbuffer); break; case WRD_PALCHG: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@PALCHG(%s)", wrd_event2string(wrd_args[0])); break; case WRD_PALREV: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@PALREV(%d)", wrd_args[0]); break; case WRD_PATH: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@PATH(%s)", wrd_event2string(wrd_args[0])); break; case WRD_PLOAD: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@PLOAD(%s)", wrd_event2string(wrd_args[0])); break; case WRD_REM: p = wrd_event2string(wrd_args[0]); len = strlen(p); text = (char *)new_segment(&tmpbuffer, SAFE_CONVERT_LENGTH(len)); code_convert(p, text, SAFE_CONVERT_LENGTH(len), NULL, NULL); ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@REM %s", text); reuse_mblock(&tmpbuffer); break; case WRD_REMARK: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@REMARK(%s)", wrd_event2string(wrd_args[0])); break; case WRD_REST: /* Never call */ break; case WRD_SCREEN: /* Not supported */ break; case WRD_SCROLL: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@SCROLL(%d,%d,%d,%d,%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5], wrd_args[6]); break; case WRD_STARTUP: inkey_flag = 0; ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@STARTUP(%d)", wrd_args[0]); break; case WRD_STOP: /* Never call */ break; case WRD_TCLS: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@TCLS(%d,%d,%d,%d,%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5]); break; case WRD_TON: ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@TON(%d)", wrd_args[0]); break; case WRD_WAIT: /* Never call */ break; case WRD_WMODE: /* Never call */ break; /* Ensyutsukun */ case WRD_eFONTM: print_ecmd("FONTM", wrd_args, 1); break; case WRD_eFONTP: print_ecmd("FONTP", wrd_args, 4); break; case WRD_eFONTR: print_ecmd("FONTR", wrd_args, 17); break; case WRD_eGSC: print_ecmd("GSC", wrd_args, 1); break; case WRD_eLINE: print_ecmd("LINE", wrd_args, 1); break; case WRD_ePAL: print_ecmd("PAL", wrd_args, 2); break; case WRD_eREGSAVE: print_ecmd("REGSAVE", wrd_args, 17); break; case WRD_eSCROLL: print_ecmd("SCROLL",wrd_args, 2); break; case WRD_eTEXTDOT: print_ecm