Annotation of uae/src/xdebug.c, revision 1.1.1.1

1.1       root        1:  /* 
                      2:   * UAE - The Un*x Amiga Emulator
                      3:   * 
                      4:   * XGUI and XDebugger 
                      5:   *
                      6:   * Copyright 1996 Christian Schmitt <[email protected]>
                      7:   */
                      8: 
                      9: #include "sysconfig.h"
                     10: #include "sysdeps.h"
                     11: 
                     12: #include <ctype.h>
                     13: #include <signal.h>
                     14: 
                     15: #if FORMS_H_VARIANT == 0
                     16: #include <forms.h>
                     17: #else
                     18: #include <X11/forms.h>
                     19: #endif
                     20: 
                     21: #include "config.h"
                     22: #include "options.h"
                     23: #include "memory.h"
                     24: #include "custom.h"
                     25: #include "readcpu.h"
                     26: #include "machdep/m68k.h"
                     27: #include "newcpu.h"
                     28: #include "debug.h"
                     29: #include "cia.h"
                     30: #include "disk.h"
                     31: #include "xwin.h"
                     32: #include "gui.h"
                     33: 
                     34: /* First the Forms stuff */
                     35: 
                     36: FL_FORM *Control;
                     37: 
                     38: FL_OBJECT
                     39:         *udf0,
                     40:         *I_df3,
                     41:         *DF0,
                     42:         *Reset,
                     43:         *Debug,
                     44:         *Exit,
                     45:         *Power,
                     46:         *Text_1,
                     47:         *Text_2,
                     48:         *E_df0,
                     49:         *I_df0,
                     50:         *E_df1,
                     51:         *I_df1,
                     52:         *E_df2,
                     53:         *I_df2,
                     54:         *E_df3,
                     55:         *Led_0,
                     56:         *DF1,
                     57:         *DF2,
                     58:         *DF3,
                     59:         *l_power,
                     60:         *l_df0,
                     61:         *l_df1,
                     62:         *l_df2,
                     63:         *l_df3;
                     64: 
                     65: FL_FORM *Debugger;
                     66: 
                     67: FL_OBJECT
                     68:         *a0,
                     69:         *a1,
                     70:         *a2,
                     71:         *a3,
                     72:         *a4,
                     73:         *a5,
                     74:         *a6,
                     75:         *a7,
                     76:         *d0,
                     77:         *d1,
                     78:         *d2,
                     79:         *d3,
                     80:         *d4,
                     81:         *d5,
                     82:         *d6,
                     83:         *d7,
                     84:         *usp,
                     85:         *isp,
                     86:         *msp,
                     87:         *vbr,
                     88:         *pc,
                     89:         *adress,
                     90:         *imask,
                     91:         *Output,
                     92:         *f_s,
                     93:         *f_m,
                     94:         *f_x,
                     95:         *f_n,
                     96:         *f_z,
                     97:         *f_v,
                     98:         *f_c,
                     99:         *f_t;
                    100: 
                    101: FL_FORM *Custom;
                    102: 
                    103: FL_OBJECT
                    104:         *a_cra,
                    105:         *a_crb,
                    106:         *a_imask,
                    107:         *a_tod,
                    108:         *a_ta,
                    109:         *a_tb,
                    110:         *b_cra,
                    111:         *b_crb,
                    112:         *b_imask,
                    113:         *b_tod,
                    114:         *b_ta,
                    115:         *b_tb,
                    116:         *uae_dmacon,
                    117:         *uae_intena,
                    118:         *uae_intreq,
                    119:         *uae_vpos,
                    120:         *uae_hpos,
                    121:         *uae_frames;
                    122: 
                    123: FL_FORM *FPU;
                    124: 
                    125: FL_OBJECT
                    126:         *fpu0,
                    127:         *fpu1,
                    128:         *fpu2,
                    129:         *fpu3,
                    130:         *fpu4,
                    131:         *fpu5,
                    132:         *fpu6,
                    133:         *fpu7,
                    134:         *fpu_n,
                    135:         *fpu_z,
                    136:         *fpu_i,
                    137:         *fpu_nan;
                    138: 
                    139: FL_FORM *Memory;
                    140: 
                    141: FL_OBJECT
                    142:         *uaectrl_down,
                    143:         *memory_field,
                    144:         *uaectrl_up,
                    145:         *memory_start;
                    146: 
                    147: FL_FORM *Disasm;
                    148: 
                    149: FL_OBJECT
                    150:         *disasm_field,
                    151:         *disasm_start,
                    152:         *disasm_down,
                    153:         *disasm_up;
                    154: 
                    155: 
                    156: static CPTR nextpc;
                    157: 
                    158: static char* ccnames[] =
                    159: { "T ","F ","HI","LS","CC","CS","NE","EQ",
                    160:   "VC","VS","PL","MI","GE","LT","GT","LE" };
                    161: 
                    162: 
                    163: static void uaectrl_disasm(CPTR addr, CPTR *nextpc, int cnt,char *buffer)
                    164: {
                    165:     CPTR pc = m68k_getpc();
                    166:     CPTR newpc = 0;
                    167:     int i,j,oldcnt=cnt;
                    168:     char dummy[120];
                    169:     char buf[120];
                    170:     m68k_setpc(addr);
                    171:     for (;cnt--;){
                    172:         char instrname[20],*ccpt;
                    173:         int opwords;
                    174:         ULONG opcode;
                    175:         struct mnemolookup *lookup;
                    176:         struct instr *dp;
                    177:        
                    178:         sprintf(buf,"%08lx: ", (unsigned long int)m68k_getpc());
                    179:        if (oldcnt == 1) {
                    180:            for(opwords = 0; opwords < 5; opwords++) {
                    181:                sprintf(dummy, "%04x ", (unsigned int)(get_word(m68k_getpc()+opwords*2)));
                    182:                strcat(buf, dummy);
                    183:            }
                    184:         }
                    185: 
                    186:         opcode = nextiword();
                    187:         if (cpufunctbl[opcode] == op_illg) {
                    188:             opcode = 0x4AFC;
                    189:         }
                    190:         dp = table68k + opcode;
                    191:         for (lookup = lookuptab;lookup->mnemo != dp->mnemo; lookup++)
                    192:             ;
                    193:         strcpy(instrname,lookup->name);
                    194:         ccpt = strstr(instrname,"cc");
                    195:         if (ccpt != 0) {
                    196:             strncpy(ccpt,ccnames[dp->cc], 2);
                    197:         }
                    198:        strcat(buf, instrname);
                    199: 
                    200:         switch(dp->size){
                    201:          case sz_byte: strcat(buf,".B "); break;
                    202:          case sz_word: strcat(buf,".W "); break;
                    203:          case sz_long: strcat(buf,".L "); break;
                    204:          default: strcat(buf,"   ");break;
                    205:         }
                    206: 
                    207:         if (dp->suse) {
                    208:             newpc = m68k_getpc() + ShowEA(dp->sreg, dp->smode, dp->size, buf);
                    209:         }
                    210:         if (dp->suse && dp->duse)
                    211:             strcat(buf,",");
                    212:         if (dp->duse) {
                    213:             newpc = m68k_getpc() + ShowEA(dp->dreg, dp->dmode, dp->size, buf);
                    214:         }
                    215:         if (ccpt != 0) {
                    216:             if (cctrue(dp->cc))
                    217:                 sprintf(dummy, " == %08lx (TRUE)", (unsigned long int)newpc);
                    218:             else
                    219:                 sprintf(dummy, " == %08lx (FALSE)", (unsigned long int)newpc);
                    220:            strcat(buf, dummy);
                    221:         } else if ((opcode & 0xff00) == 0x6100) { /* BSR */
                    222:             sprintf(dummy, " == %08lx", (unsigned long int)newpc);
                    223:            strcat(buf, dummy);
                    224:        }
                    225:         strcat(buffer,buf);
                    226:         if(oldcnt > 1) { 
                    227:            strcat(buffer, "\n");
                    228:        }
                    229:     }
                    230:     if (nextpc)
                    231:        *nextpc = m68k_getpc();
                    232:     m68k_setpc(pc);
                    233: }
                    234: 
                    235: int debugger_active = 0;
                    236: static CPTR skipaddr;
                    237: static int do_skip;
                    238: int debugging = 0;
                    239: static char exit_debug;
                    240: 
                    241: static char custom=0,fpu=0,memory=0,disasm=0;
                    242: static LONG xgui_debug_adress,xgui_memory_adress,xgui_disasm_adress;
                    243: 
                    244: 
                    245: /* callbacks for form Control */
                    246: static void ctrl_insert(FL_OBJECT *ob, long data)
                    247: {
                    248:     /* fill-in code for callback */
                    249:     const char *buf;
                    250:     char buffer[256],path[512];
                    251:     int i=0,j,len;
                    252:     getwd(path);
                    253:     buf=fl_show_fselector("Disk-Image",path,"*.adf*","");
                    254:     if(buf!=0) {
                    255:         len=strlen(buf);
                    256:         if(len!=0){
                    257:             for(i=len;(i>0)&&(buf[i]!='/');i--);
                    258:             for(j=0;j<=i;j++) path[j]=buf[j];
                    259:             path[j]=0;
                    260:             chdir(path);
                    261:             for(i=0,j=0;buf[i]!=0;i++) if(buf[i]=='/') j=i;
                    262:             j++;
                    263:             for(i=j;buf[i]!=0;i++) buffer[i-j]=buf[i];
                    264:             buffer[i-j]=0;
                    265:         } else {
                    266:             buffer[0]=0;
                    267:         }
                    268: 
                    269: 
                    270:        if(ob==I_df0) {
                    271:            fl_set_object_label(DF0,buffer);
                    272:            fl_redraw_object(DF0);
                    273:            if (disk_empty(0)) disk_insert(0,buf);
                    274:        }
                    275:         if(ob==I_df1) {
                    276:            fl_set_object_label(DF1,buffer);
                    277:            fl_redraw_object(DF1);
                    278:            if (disk_empty(1)) disk_insert(1,buf); 
                    279:         }
                    280:         if(ob==I_df2) {
                    281:            fl_set_object_label(DF2,buffer);
                    282:            fl_redraw_object(DF2);
                    283:            if (disk_empty(2)) disk_insert(2,buf);
                    284:         }
                    285:         if(ob==I_df3) {
                    286:            fl_set_object_label(DF3,buffer);
                    287:            fl_redraw_object(DF3);
                    288:            if (disk_empty(3)) disk_insert(3,buf); 
                    289:         }
                    290:     }
                    291: }
                    292: 
                    293: static void ctrl_reset(FL_OBJECT *ob, long data)
                    294: {
                    295:     /* fill-in code for callback */
                    296:     m68k_reset();
                    297: }
                    298: 
                    299: static void ctrl_debug(FL_OBJECT *ob, long data)
                    300: {
                    301:     /* fill-in code for callback */
                    302:     fl_hide_form(Control);
                    303:     fl_show_form(Debugger,FL_PLACE_CENTER,FL_FULLBORDER,"UAE - Debuger");
                    304:     fl_deactivate_object(f_s);
                    305:     fl_deactivate_object(f_m);
                    306:     fl_deactivate_object(f_x);
                    307:     fl_deactivate_object(f_n);
                    308:     fl_deactivate_object(f_z);
                    309:     fl_deactivate_object(f_v);
                    310:     fl_deactivate_object(f_c);
                    311:     fl_deactivate_object(f_t);
                    312:     fpu = 0;
                    313:     custom = 0;
                    314:     activate_debugger();
                    315: }
                    316: 
                    317: static void ctrl_exit(FL_OBJECT *ob, long data)
                    318: {
                    319:     if (fl_show_question("Do you really want to quit ??","","")!=0) 
                    320:        exit(1);
                    321: }
                    322: 
                    323: static void ctrl_eject(FL_OBJECT *ob, long data)
                    324: {
                    325:     if(ob==E_df0) {
                    326:        fl_set_object_label(DF0,"");
                    327:        fl_redraw_object(DF0);
                    328:        disk_eject(0);
                    329:     }
                    330:     if(ob==E_df1) {
                    331:        fl_set_object_label(DF1,"");
                    332:         fl_redraw_object(DF1);
                    333:         disk_eject(1);
                    334:     }
                    335:     if(ob==E_df2) {
                    336:        fl_set_object_label(DF2,"");
                    337:         fl_redraw_object(DF2);
                    338:         disk_eject(2);
                    339:     }
                    340:     if(ob==E_df3) {
                    341:        fl_set_object_label(DF3,"");
                    342:         fl_redraw_object(DF3);
                    343:         disk_eject(3);
                    344:     }
                    345: }
                    346: 
                    347: 
                    348: 
                    349: /* callbacks for form Debugger */
                    350: static void ctrl_custom(FL_OBJECT *ob, long data)
                    351: {  
                    352:     if (custom == 1){
                    353:         fl_hide_form(Custom);
                    354:         custom=0;
                    355:     } else {
                    356:         fl_show_form(Custom,FL_PLACE_CENTER,FL_FULLBORDER,"Custom");
                    357:         custom=1;
                    358:     }
                    359: }
                    360: 
                    361: static void ctrl_fpu(FL_OBJECT *ob, long data)
                    362: {
                    363:     /* fill-in code for callback */
                    364:     if(fpu==1){
                    365:         fl_hide_form(FPU);
                    366:         fpu=0;
                    367:     } else {
                    368:         fl_show_form(FPU,FL_PLACE_CENTER,FL_FULLBORDER,"FPU");
                    369:        fl_deactivate_object(fpu_n);
                    370:         fl_deactivate_object(fpu_z);
                    371:         fl_deactivate_object(fpu_i);
                    372:         fl_deactivate_object(fpu_nan);
                    373:         fpu=1;
                    374:     }
                    375: }
                    376: 
                    377: 
                    378: static void x_step(void)
                    379: {
                    380:     skipaddr = nextpc;
                    381:     do_skip = 1;
                    382:     regs.spcflags |= SPCFLAG_BRK;
                    383: }
                    384: 
                    385: static void xgui_go(void)
                    386: {
                    387:     m68k_setpc (xgui_debug_adress);
                    388:     debugger_active = 0;
                    389:     debugging = 0;
                    390:     fl_activate_object(f_x);
                    391:     fl_trigger_object(f_x);
                    392:     fl_deactivate_object(f_x);
                    393:     exit_debug=1;
                    394: } 
                    395: 
                    396: static void xgui_forward(void)
                    397: {
                    398:     skipaddr = xgui_debug_adress;
                    399:     do_skip = 1;
                    400:     regs.spcflags |= SPCFLAG_BRK;
                    401:     fl_activate_object(f_x);
                    402:     fl_trigger_object(f_x);
                    403:     fl_deactivate_object(f_x);
                    404:     exit_debug=1;
                    405: } 
                    406: 
                    407: static void xgui_memupdate(void)
                    408: {
                    409:     int lines=17;
                    410:     char buffer[2048];
                    411:     char buf[10],ascii[9];
                    412:     LONG addr=xgui_memory_adress;
                    413:     buffer[0]=0;
                    414:     for (;lines--;){
                    415:        int i;
                    416:        sprintf(buf,"%08lx: ", addr);
                    417:        strcat(buffer,buf);
                    418:        for(i=0; i< 8; i++) {
                    419:             UBYTE j=get_byte(addr);
                    420:             if(isprint(j)) ascii[i]=j; else ascii[i]='.';
                    421:            sprintf(buf,"%02x ",j);
                    422:            strcat(buffer,buf);
                    423:            addr += 1;
                    424:        }
                    425:         ascii[8]=0;
                    426:         strcat(buffer,ascii);
                    427:        sprintf(buf,"\n");
                    428:        strcat(buffer,buf);
                    429:     }  
                    430:     fl_set_object_label(memory_field,buffer);
                    431:     sprintf(buf,"0x%08lx",xgui_memory_adress);
                    432:     fl_set_input(memory_start,buf);
                    433: }
                    434: 
                    435: static void xgui_disasmupdate(void)
                    436: {
                    437:     char buffer[4048];
                    438:     char buf[100];
                    439:     int lines=17;
                    440:     LONG dummy=xgui_disasm_adress;
                    441:     buffer[0]=0;
                    442:     uaectrl_disasm(dummy,NULL,17,buffer);
                    443:     fl_set_object_label(disasm_field,buffer);
                    444:     sprintf(buf,"0x%08lx",xgui_disasm_adress);
                    445:     fl_set_input(disasm_start,buf);
                    446: #if 0
                    447:     for(;;)
                    448:        ;
                    449: #endif
                    450: }
                    451: 
                    452: 
                    453: static void ctrl_mem(FL_OBJECT *ob, long data)
                    454: {
                    455:     if(memory==0) {
                    456:        fl_show_form(Memory,FL_PLACE_CENTER,FL_FULLBORDER,"Memory Browser");
                    457:        memory=1;
                    458:        xgui_memory_adress=xgui_debug_adress;
                    459:        xgui_memupdate();
                    460:     } else {
                    461:        fl_hide_form(Memory);
                    462:        memory=0;
                    463:     }
                    464: }
                    465: 
                    466: static void ctrl_disasm(FL_OBJECT *ob, long data)
                    467: {
                    468: 
                    469:   /* the xgui_disasmupdate() function segfaults; therefor this function
                    470:      is disabled */
                    471: #if 1
                    472:     if(disasm==0) {
                    473:        fl_show_form(Disasm,FL_PLACE_CENTER,FL_FULLBORDER,"Disassembler");
                    474:        disasm=1;
                    475:        xgui_disasm_adress=xgui_debug_adress;
                    476:        xgui_disasmupdate();
                    477:     } else {
                    478:        fl_hide_form(Disasm);
                    479:        disasm=0;
                    480:     }
                    481: #else
                    482:     fl_show_alert("Sorry","This function isn't available yet",NULL,0);
                    483: #endif
                    484: }
                    485: 
                    486: static void ctrl_debug_exit(FL_OBJECT *ob, long data)
                    487: {
                    488:   fl_hide_form(Debugger);
                    489:   if(fpu==1) fl_hide_form(FPU);
                    490:   if(custom==1) fl_hide_form(Custom);
                    491:   if(memory==1) fl_hide_form(Memory);
                    492:   if(disasm==1) fl_hide_form(Disasm);
                    493:   fpu=0;custom=0;memory=0;disasm=0;
                    494:   fl_show_form(Control,FL_PLACE_CENTER,FL_FULLBORDER,"UAE - Control");
                    495:   fl_activate_object(f_x);
                    496:   fl_trigger_object(f_x);
                    497:   fl_deactivate_object(f_x);
                    498:   debugger_active = 0;
                    499:   debugging = 0;
                    500:   exit_debug=1;
                    501: }
                    502: 
                    503: static void ctrl_step(FL_OBJECT *ob, long data)
                    504: {
                    505:     /* fill-in code for callback */
                    506:     regs.spcflags |= SPCFLAG_BRK;
                    507:     debugging=1;
                    508:     exit_debug=0;
                    509:     fl_activate_object(f_s);
                    510:     fl_trigger_object(f_s);
                    511:     fl_deactivate_object(f_s);
                    512: }
                    513: 
                    514: static void ctrl_next(FL_OBJECT *ob, long data)
                    515: {
                    516:     /* fill-in code for callback */
                    517:     x_step();
                    518:     debugging=1;
                    519:     exit_debug=0;
                    520:     fl_activate_object(f_s);
                    521:     fl_trigger_object(f_s);
                    522:     fl_deactivate_object(f_s);
                    523: }
                    524: 
                    525: static void ctrl_go(FL_OBJECT *ob, long data)
                    526: {
                    527:     /* fill-in code for callback */
                    528:     xgui_go();
                    529:     ctrl_debug_exit(NULL,0);
                    530: }
                    531: 
                    532: static void ctrl_forward(FL_OBJECT *ob, long data)
                    533: {
                    534:     /* fill-in code for callback */
                    535:     xgui_forward();
                    536: }
                    537: 
                    538: static void ctrl_address(FL_OBJECT *ob, long data)
                    539: {
                    540:     /* fill-in code for callback */
                    541:     xgui_debug_adress=strtol(fl_get_input(adress),NULL,0);
                    542: }
                    543: 
                    544: 
                    545: /* callbacks for form Memory */
                    546: static void change_memory_start(FL_OBJECT *ob, long data)
                    547: {
                    548:     if(ob==uaectrl_up) xgui_memory_adress-=8;
                    549:     else if(ob==uaectrl_down) xgui_memory_adress+=8;
                    550:     else xgui_memory_adress=strtol(fl_get_input(ob),NULL,16);
                    551:     xgui_memupdate();
                    552: }
                    553: 
                    554: 
                    555: 
                    556: /* callbacks for form Disasm */
                    557: static void change_disasm_start(FL_OBJECT *ob, long data)
                    558: {
                    559:     if(ob==disasm_up) xgui_disasm_adress-=2;
                    560:     else if(ob==disasm_down) xgui_disasm_adress+=2;
                    561:     else xgui_disasm_adress=strtol(fl_get_input(ob),NULL,0);
                    562:     xgui_disasmupdate();
                    563: }
                    564: 
                    565: 
                    566: 
                    567: void activate_debugger(void)
                    568: {
                    569:     do_skip = 0;
                    570:     if (debugger_active)
                    571:        return;
                    572:     debugger_active = 1;
                    573:     regs.spcflags |= SPCFLAG_BRK;
                    574:     debugging = 1;
                    575:     use_debugger = 1;
                    576: }
                    577: 
                    578: static int firsthist = 0;
                    579: static int lasthist = 0;
                    580: #ifdef NEED_TO_DEBUG_BADLY
                    581: 
                    582: static struct regstruct history[MAX_HIST];
                    583: static union flagu historyf[MAX_HIST];
                    584: #else
                    585: static CPTR history[MAX_HIST];
                    586: #endif
                    587: 
                    588: static void uaectrl_update(void);
                    589: 
                    590: extern void x_dumpcia(void);
                    591: extern void x_dumpcustom(void);
                    592: extern LONG xgui_debug_adress,xgui_memory_adress,xgui_disasm_adress;
                    593: 
                    594: 
                    595: /* external variables/functions from custom.c */
                    596: 
                    597: extern UWORD intena,intreq;
                    598: extern int vpos;
                    599: extern unsigned long frametime,timeframes; 
                    600: extern UWORD DMACONR(void);
                    601: extern int current_hpos(void);
                    602: 
                    603: 
                    604: /* external variables/functions from cia.c */
                    605: 
                    606: 
                    607: extern UBYTE ciaaimask,ciabimask;
                    608: extern UBYTE ciaacra,ciaacrb,ciabcra,ciabcrb;
                    609: extern ULONG ciaata,ciaatb,ciabta,ciabtb;
                    610: extern ULONG ciaatod,ciabtod;
                    611: extern int ciaatlatch,ciabtlatch;
                    612: 
                    613:  
                    614: 
                    615: void x_dumpcustom(void)
                    616: {
                    617:     char buf[20];
                    618:     sprintf(buf,"%x",(unsigned int)DMACONR());
                    619:     fl_set_object_label(uae_dmacon,buf);
                    620:     sprintf(buf,"%x",(unsigned int)intena);
                    621:     fl_set_object_label(uae_intena,buf);
                    622:     sprintf(buf,"%x",(unsigned int)intreq);
                    623:     fl_set_object_label(uae_intreq,buf);
                    624:     sprintf(buf,"%x",(unsigned int)vpos);
                    625:     fl_set_object_label(uae_vpos,buf);
                    626:     sprintf(buf,"%x",(unsigned int)current_hpos());
                    627:     fl_set_object_label(uae_hpos,buf);
                    628:     if(timeframes) 
                    629:        sprintf(buf,"%d",frametime/timeframes);
                    630:     else
                    631:        buf[0]=0;
                    632:     fl_set_object_label(uae_frames,buf);
                    633: }
                    634: 
                    635: void x_dumpcia(void)
                    636: {
                    637:     char buf[20];
                    638:     sprintf(buf,"%02x",(unsigned int)ciaacra);
                    639:     fl_set_object_label(a_cra,buf);
                    640:     sprintf(buf,"%02x",(unsigned int)ciaacrb);
                    641:     fl_set_object_label(a_crb,buf);
                    642:     sprintf(buf,"%02x",(unsigned int)ciaaimask);
                    643:     fl_set_object_label(a_imask,buf);
                    644:     sprintf(buf,"%08lx %7s",(unsigned int)ciaatod,ciaatlatch ? " latched" : "");
                    645:     fl_set_object_label(a_tod,buf);
                    646:     sprintf(buf,"%04lx",(unsigned long int)ciaata);
                    647:     fl_set_object_label(a_ta,buf);
                    648:     sprintf(buf,"%04lx",(unsigned long int)ciaatb);
                    649:     fl_set_object_label(a_tb,buf);
                    650:     sprintf(buf,"%02x",(unsigned int)ciabcra);
                    651:     fl_set_object_label(b_cra,buf);
                    652:     sprintf(buf,"%02x",(unsigned int)ciabcrb);
                    653:     fl_set_object_label(b_crb,buf);
                    654:     sprintf(buf,"%02x",(unsigned int)ciabimask);
                    655:     fl_set_object_label(b_imask,buf);
                    656:     sprintf(buf,"%08lx %s",(unsigned long int)ciabtod,ciabtlatch ? " latched" : "");
                    657:     fl_set_object_label(b_tod,buf);
                    658:     sprintf(buf,"%04x",(unsigned int)ciabta);
                    659:     fl_set_object_label(b_ta,buf);
                    660:     sprintf(buf,"%04x",(unsigned int)ciabtb);
                    661:     fl_set_object_label(b_tb,buf);
                    662:  
                    663: }     
                    664: 
                    665: void uaectrl_update(void)
                    666: {
                    667:     char buf[120];
                    668:     fl_freeze_form(Debugger);
                    669:     xgui_debug_adress=m68k_getpc();
                    670:     sprintf(buf,"0x%08lx", (unsigned long int)xgui_debug_adress);
                    671:     fl_set_input(adress,buf);
                    672:     sprintf(buf,"%08lx", (unsigned long int)m68k_areg(regs,0));
                    673:     fl_set_object_label(a0,buf);
                    674:     sprintf(buf,"%08lx", (unsigned long int)m68k_areg(regs,1));
                    675:     fl_set_object_label(a1,buf);
                    676:     sprintf(buf,"%08lx", (unsigned long int)m68k_areg(regs,2));
                    677:     fl_set_object_label(a2,buf);
                    678:     sprintf(buf,"%08lx", (unsigned long int)m68k_areg(regs,3));
                    679:     fl_set_object_label(a3,buf);
                    680:     sprintf(buf,"%08lx", (unsigned long int)m68k_areg(regs,4));
                    681:     fl_set_object_label(a4,buf);
                    682:     sprintf(buf,"%08lx", (unsigned long int)m68k_areg(regs,5));
                    683:     fl_set_object_label(a5,buf);
                    684:     sprintf(buf,"%08lx", (unsigned long int)m68k_areg(regs,6));
                    685:     fl_set_object_label(a6,buf);
                    686:     sprintf(buf,"%08lx", (unsigned long int)m68k_areg(regs,7));
                    687:     fl_set_object_label(a7,buf);
                    688:     sprintf(buf,"%08lx", (unsigned long int)m68k_dreg(regs,0));
                    689:     fl_set_object_label(d0,buf);
                    690:     sprintf(buf,"%08lx", (unsigned long int)m68k_dreg(regs,1));
                    691:     fl_set_object_label(d1,buf);
                    692:     sprintf(buf,"%08lx", (unsigned long int)m68k_dreg(regs,2));
                    693:     fl_set_object_label(d2,buf);
                    694:     sprintf(buf,"%08lx", (unsigned long int)m68k_dreg(regs,3));
                    695:     fl_set_object_label(d3,buf);
                    696:     sprintf(buf,"%08lx", (unsigned long int)m68k_dreg(regs,4));
                    697:     fl_set_object_label(d4,buf);
                    698:     sprintf(buf,"%08lx", (unsigned long int)m68k_dreg(regs,5));
                    699:     fl_set_object_label(d5,buf);
                    700:     sprintf(buf,"%08lx", (unsigned long int)m68k_dreg(regs,6));
                    701:     fl_set_object_label(d6,buf);
                    702:     sprintf(buf,"%08lx", (unsigned long int)m68k_dreg(regs,7));
                    703:     fl_set_object_label(d7,buf);
                    704:     
                    705:     if (regs.s == 0) regs.usp = m68k_areg(regs,7);
                    706:     if (regs.s && regs.m) regs.msp = m68k_areg(regs,7);
                    707:     if (regs.s && regs.m == 0) regs.isp = m68k_areg(regs,7);
                    708:     
                    709:     sprintf(buf,"%08lx",regs.usp);
                    710:     fl_set_object_label(usp,buf);
                    711:     sprintf(buf,"%08lx",regs.msp);
                    712:     fl_set_object_label(msp,buf);
                    713:     sprintf(buf,"%08lx",regs.isp);
                    714:     fl_set_object_label(isp,buf);
                    715:     sprintf(buf,"%08lx",regs.vbr);
                    716:     fl_set_object_label(vbr,buf);
                    717:     sprintf(buf,"%d",regs.intmask);
                    718:     fl_set_object_label(imask,buf);
                    719:     sprintf(buf,"%08lx", (unsigned long int)m68k_getpc());
                    720:     fl_set_object_label(pc,buf);
                    721:     fl_set_button(f_t,regs.t0);
                    722:     fl_set_button(f_s,regs.s);
                    723:     fl_set_button(f_m,regs.m);
                    724:     fl_set_button(f_x,XFLG);
                    725:     fl_set_button(f_n,NFLG);
                    726:     fl_set_button(f_z,ZFLG);
                    727:     fl_set_button(f_v,VFLG);
                    728:     fl_set_button(f_c,CFLG);
                    729:     sprintf(buf,"%g",regs.fp[0]);
                    730:     fl_set_object_label(fpu0,buf);
                    731:     sprintf(buf,"%g",regs.fp[1]);
                    732:     fl_set_object_label(fpu1,buf);
                    733:     sprintf(buf,"%g",regs.fp[2]);
                    734:     fl_set_object_label(fpu2,buf);
                    735:     sprintf(buf,"%g",regs.fp[3]);
                    736:     fl_set_object_label(fpu3,buf);
                    737:     sprintf(buf,"%g",regs.fp[4]);
                    738:     fl_set_object_label(fpu4,buf);
                    739:     sprintf(buf,"%g",regs.fp[5]);
                    740:     fl_set_object_label(fpu5,buf);
                    741:     sprintf(buf,"%g",regs.fp[6]);
                    742:     fl_set_object_label(fpu6,buf);
                    743:     sprintf(buf,"%g",regs.fp[7]);
                    744:     fl_set_object_label(fpu7,buf);
                    745:     fl_set_button(fpu_n,(regs.fpsr & 0x8000000) != 0);
                    746:     fl_set_button(fpu_z,(regs.fpsr & 0x4000000) != 0);
                    747:     fl_set_button(fpu_i,(regs.fpsr & 0x2000000) != 0);
                    748:     fl_set_button(fpu_nan,(regs.fpsr & 0x1000000) != 0);
                    749: 
                    750:     uaectrl_disasm(m68k_getpc(),&nextpc,1,buf);
                    751: 
                    752:     fl_set_object_label(Output,buf);
                    753:     fl_unfreeze_form(Debugger);
                    754:     fl_freeze_form(Custom);
                    755:     x_dumpcia();
                    756:     x_dumpcustom();
                    757:     fl_unfreeze_form(Custom);
                    758: }
                    759: 
                    760: void debug(void)
                    761: {
                    762:     FL_OBJECT *obj;
                    763:     
                    764:     bogusframe = 1;
                    765:     
                    766:     if (do_skip && (m68k_getpc() != skipaddr/* || regs.a[0] != 0x1e558*/)) {
                    767:        regs.spcflags |= SPCFLAG_BRK;
                    768:        return;
                    769:     }
                    770:     do_skip = 0;
                    771: 
                    772: #ifdef NEED_TO_DEBUG_BADLY
                    773:     history[lasthist] = regs;
                    774:     historyf[lasthist] = regflags;
                    775: #else
                    776:     history[lasthist] = m68k_getpc();
                    777: #endif
                    778:     if (++lasthist == MAX_HIST) lasthist = 0;
                    779:     if (lasthist == firsthist) {
                    780:        if (++firsthist == MAX_HIST) firsthist = 0;
                    781:     }
                    782:     do{
                    783:        uaectrl_update();
                    784:        obj = fl_do_forms();
                    785:        if(exit_debug == 0) { debugging = 1; exit_debug = 2; return; }
                    786:        if(exit_debug == 1) { debugging = 0; exit_debug = 2; return; }
                    787:     } while(1);
                    788: 
                    789: }
                    790: 
                    791: 
                    792: int quit_program;
                    793: int speed_up_counter;
                    794: 
                    795: extern char df0[256],df1[256],df2[256],df3[256];
                    796: 
                    797: static void create_form_Control(void)
                    798: {
                    799:   FL_OBJECT *obj;
                    800: 
                    801:   if (Control)
                    802:      return;
                    803: 
                    804:   Control = fl_bgn_form(FL_NO_BOX,380,300);
                    805:   obj = fl_add_box(FL_UP_BOX,0,0,380,300,"");
                    806:   obj = fl_add_frame(FL_ENGRAVED_FRAME,10,20,360,270,"");
                    807:   obj = fl_add_frame(FL_ENGRAVED_FRAME,20,30,330,50,"");
                    808: 
                    809:   udf0 = fl_bgn_group();
                    810:   obj = fl_add_frame(FL_ENGRAVED_FRAME,20,100,340,180,"");
                    811:   fl_end_group();
                    812: 
                    813:   obj = fl_add_frame(FL_DOWN_FRAME,30,240,280,30,"");
                    814:   I_df3 = obj = fl_add_button(FL_NORMAL_BUTTON,260,240,50,30,"Insert");
                    815:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    816:     fl_set_object_callback(obj,ctrl_insert,0);
                    817:   obj = fl_add_frame(FL_DOWN_FRAME,30,120,280,30,"");
                    818:   DF0 = obj = fl_add_text(FL_NORMAL_TEXT,70,120,140,30,"df0.adf");
                    819:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    820:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                    821:   Reset = obj = fl_add_button(FL_NORMAL_BUTTON,30,40,70,30,"Reset");
                    822:     fl_set_button_shortcut(obj,"R",1);
                    823:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    824:     fl_set_object_callback(obj,ctrl_reset,0);
                    825:   Debug = obj = fl_add_button(FL_NORMAL_BUTTON,130,40,60,30,"Debug");
                    826:     fl_set_button_shortcut(obj,"D",1);
                    827:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    828:     fl_set_object_callback(obj,ctrl_debug,0);
                    829:   Exit = obj = fl_add_button(FL_NORMAL_BUTTON,220,40,60,30,"Exit");
                    830:     fl_set_button_shortcut(obj,"E",1);
                    831:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    832:     fl_set_object_callback(obj,ctrl_exit,0);
                    833:   Power = obj = fl_add_button(FL_NORMAL_BUTTON,380,60,40,20,"");
                    834:     fl_set_object_boxtype(obj,FL_NO_BOX);
                    835:     fl_set_object_color(obj,FL_BLACK,FL_RED);
                    836:   Text_1 = obj = fl_add_text(FL_NORMAL_TEXT,140,10,100,20,"UAE - Control");
                    837:     fl_set_object_lsize(obj,FL_MEDIUM_SIZE);
                    838:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                    839:   Text_2 = obj = fl_add_text(FL_NORMAL_TEXT,140,90,110,20,"Floppy Drives");
                    840:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    841:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                    842:   obj = fl_add_frame(FL_DOWN_FRAME,30,160,280,30,"");
                    843:   obj = fl_add_frame(FL_DOWN_FRAME,30,200,280,30,"");
                    844:   E_df0 = obj = fl_add_button(FL_NORMAL_BUTTON,210,120,50,30,"Eject");
                    845:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    846:     fl_set_object_callback(obj,ctrl_eject,0);
                    847:   I_df0 = obj = fl_add_button(FL_NORMAL_BUTTON,260,120,50,30,"Insert");
                    848:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    849:     fl_set_object_callback(obj,ctrl_insert,0);
                    850:   E_df1 = obj = fl_add_button(FL_NORMAL_BUTTON,210,160,50,30,"Eject");
                    851:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    852:     fl_set_object_callback(obj,ctrl_eject,0);
                    853:   I_df1 = obj = fl_add_button(FL_NORMAL_BUTTON,260,160,50,30,"Insert");
                    854:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    855:     fl_set_object_callback(obj,ctrl_insert,0);
                    856:   E_df2 = obj = fl_add_button(FL_NORMAL_BUTTON,210,200,50,30,"Eject");
                    857:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    858:     fl_set_object_callback(obj,ctrl_eject,0);
                    859:   I_df2 = obj = fl_add_button(FL_NORMAL_BUTTON,260,200,50,30,"Insert");
                    860:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    861:     fl_set_object_callback(obj,ctrl_insert,0);
                    862:   E_df3 = obj = fl_add_button(FL_NORMAL_BUTTON,210,240,50,30,"Eject");
                    863:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    864:     fl_set_object_callback(obj,ctrl_eject,0);
                    865:   Led_0 = obj = fl_add_button(FL_NORMAL_BUTTON,390,140,30,40,"");
                    866:     fl_set_object_boxtype(obj,FL_NO_BOX);
                    867:     fl_set_object_color(obj,FL_COL1,FL_GREEN);
                    868:   obj = fl_add_text(FL_NORMAL_TEXT,30,120,40,30,"DF0 :");
                    869:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    870:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                    871:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                    872:   obj = fl_add_text(FL_NORMAL_TEXT,30,160,40,30,"DF1 :");
                    873:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    874:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                    875:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                    876:   obj = fl_add_text(FL_NORMAL_TEXT,30,200,40,30,"DF2 :");
                    877:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    878:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                    879:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                    880:   obj = fl_add_text(FL_NORMAL_TEXT,30,240,40,30,"DF3 :");
                    881:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    882:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                    883:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                    884:   DF1 = obj = fl_add_text(FL_NORMAL_TEXT,70,160,140,30,"df1.adf");
                    885:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    886:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                    887:   DF2 = obj = fl_add_text(FL_NORMAL_TEXT,70,200,140,30,"df2.adf");
                    888:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    889:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                    890:   DF3 = obj = fl_add_text(FL_NORMAL_TEXT,70,240,140,30,"df3.adf");
                    891:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    892:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                    893:   l_power = obj = fl_add_text(FL_NORMAL_TEXT,300,50,30,10,"");
                    894:     fl_set_object_boxtype(obj,FL_FRAME_BOX);
                    895:     fl_set_object_color(obj,FL_BLACK,FL_MCOL);
                    896:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                    897:   l_df0 = obj = fl_add_text(FL_NORMAL_TEXT,320,130,30,10,"");
                    898:     fl_set_object_boxtype(obj,FL_FRAME_BOX);
                    899:     fl_set_object_color(obj,FL_BLACK,FL_GREEN);
                    900:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                    901:   l_df1 = obj = fl_add_text(FL_NORMAL_TEXT,320,170,30,10,"");
                    902:     fl_set_object_boxtype(obj,FL_FRAME_BOX);
                    903:     fl_set_object_color(obj,FL_BLACK,FL_GREEN);
                    904:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                    905:   l_df2 = obj = fl_add_text(FL_NORMAL_TEXT,320,210,30,10,"");
                    906:     fl_set_object_boxtype(obj,FL_FRAME_BOX);
                    907:     fl_set_object_color(obj,FL_BLACK,FL_GREEN);
                    908:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                    909:   l_df3 = obj = fl_add_text(FL_NORMAL_TEXT,320,250,30,10,"");
                    910:     fl_set_object_boxtype(obj,FL_FRAME_BOX);
                    911:     fl_set_object_color(obj,FL_BLACK,FL_GREEN);
                    912:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                    913:   fl_end_form();
                    914: 
                    915: }
                    916: /*---------------------------------------*/
                    917: 
                    918: static void create_form_Debugger(void)
                    919: {
                    920:   FL_OBJECT *obj;
                    921: 
                    922:   if (Debugger)
                    923:      return;
                    924: 
                    925:   Debugger = fl_bgn_form(FL_NO_BOX,460,540);
                    926:   obj = fl_add_box(FL_UP_BOX,0,0,460,540,"");
                    927:   obj = fl_add_frame(FL_ENGRAVED_FRAME,40,330,380,30,"");
                    928:   obj = fl_add_frame(FL_ENGRAVED_FRAME,10,10,440,520,"");
                    929:   obj = fl_add_frame(FL_ENGRAVED_FRAME,20,40,420,370,"");
                    930:   obj = fl_add_frame(FL_ENGRAVED_FRAME,20,420,420,50,"");
                    931:   obj = fl_add_frame(FL_ENGRAVED_FRAME,20,470,420,50,"");
                    932:   obj = fl_add_text(FL_NORMAL_TEXT,150,0,130,30,"UAE - Debugger");
                    933:     fl_set_object_lsize(obj,FL_MEDIUM_SIZE);
                    934:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                    935:   obj = fl_add_text(FL_NORMAL_TEXT,140,30,160,30,"Prozessor Registers");
                    936:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    937:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                    938:   obj = fl_add_text(FL_NORMAL_TEXT,30,70,40,30,"A0 :");
                    939:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    940:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                    941:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                    942:   obj = fl_add_text(FL_NORMAL_TEXT,30,100,40,30,"A1 :");
                    943:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    944:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                    945:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                    946:   obj = fl_add_text(FL_NORMAL_TEXT,30,130,40,30,"A2 :");
                    947:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    948:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                    949:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                    950:   obj = fl_add_text(FL_NORMAL_TEXT,30,160,40,30,"A3 :");
                    951:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    952:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                    953:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                    954:   obj = fl_add_text(FL_NORMAL_TEXT,30,190,40,30,"A4 :");
                    955:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    956:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                    957:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                    958:   obj = fl_add_text(FL_NORMAL_TEXT,30,220,40,30,"A5 :");
                    959:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    960:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                    961:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                    962:   obj = fl_add_text(FL_NORMAL_TEXT,30,250,40,30,"A6 :");
                    963:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    964:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                    965:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                    966:   obj = fl_add_text(FL_NORMAL_TEXT,30,280,40,30,"A7 :");
                    967:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    968:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                    969:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                    970:   obj = fl_add_text(FL_NORMAL_TEXT,160,70,40,30,"D0 :");
                    971:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    972:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                    973:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                    974:   obj = fl_add_text(FL_NORMAL_TEXT,160,100,40,30,"D1 :");
                    975:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    976:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                    977:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                    978:   obj = fl_add_text(FL_NORMAL_TEXT,160,130,40,30,"D2 :");
                    979:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    980:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                    981:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                    982:   obj = fl_add_text(FL_NORMAL_TEXT,160,160,40,30,"D3 :");
                    983:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    984:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                    985:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                    986:   obj = fl_add_text(FL_NORMAL_TEXT,160,190,40,30,"D4 :");
                    987:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    988:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                    989:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                    990:   obj = fl_add_text(FL_NORMAL_TEXT,160,220,40,30,"D5 :");
                    991:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    992:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                    993:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                    994:   obj = fl_add_text(FL_NORMAL_TEXT,160,250,40,30,"D6 :");
                    995:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                    996:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                    997:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                    998:   obj = fl_add_text(FL_NORMAL_TEXT,160,280,40,30,"D7 :");
                    999:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1000:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                   1001:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1002:   a0 = obj = fl_add_text(FL_NORMAL_TEXT,70,70,80,30,"");
                   1003:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1004:     fl_set_object_color(obj,FL_TOP_BCOL,FL_MCOL);
                   1005:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1006:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1007:   a1 = obj = fl_add_text(FL_NORMAL_TEXT,70,100,80,30,"");
                   1008:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1009:     fl_set_object_color(obj,FL_TOP_BCOL,FL_MCOL);
                   1010:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1011:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1012:   a2 = obj = fl_add_text(FL_NORMAL_TEXT,70,130,80,30,"");
                   1013:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1014:     fl_set_object_color(obj,FL_TOP_BCOL,FL_MCOL);
                   1015:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1016:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1017:   a3 = obj = fl_add_text(FL_NORMAL_TEXT,70,160,80,30,"");
                   1018:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1019:     fl_set_object_color(obj,FL_TOP_BCOL,FL_MCOL);
                   1020:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1021:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1022:   a4 = obj = fl_add_text(FL_NORMAL_TEXT,70,190,80,30,"");
                   1023:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1024:     fl_set_object_color(obj,FL_TOP_BCOL,FL_MCOL);
                   1025:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1026:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1027:   a5 = obj = fl_add_text(FL_NORMAL_TEXT,70,220,80,30,"");
                   1028:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1029:     fl_set_object_color(obj,FL_TOP_BCOL,FL_MCOL);
                   1030:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1031:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1032:   a6 = obj = fl_add_text(FL_NORMAL_TEXT,70,250,80,30,"");
                   1033:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1034:     fl_set_object_color(obj,FL_TOP_BCOL,FL_MCOL);
                   1035:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1036:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1037:   a7 = obj = fl_add_text(FL_NORMAL_TEXT,70,280,80,30,"");
                   1038:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1039:     fl_set_object_color(obj,FL_TOP_BCOL,FL_MCOL);
                   1040:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1041:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1042:   d0 = obj = fl_add_text(FL_NORMAL_TEXT,200,70,70,30,"");
                   1043:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1044:     fl_set_object_color(obj,FL_TOP_BCOL,FL_MCOL);
                   1045:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1046:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1047:   d1 = obj = fl_add_text(FL_NORMAL_TEXT,200,100,70,30,"");
                   1048:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1049:     fl_set_object_color(obj,FL_TOP_BCOL,FL_MCOL);
                   1050:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1051:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1052:   d2 = obj = fl_add_text(FL_NORMAL_TEXT,200,130,70,30,"");
                   1053:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1054:     fl_set_object_color(obj,FL_TOP_BCOL,FL_MCOL);
                   1055:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1056:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1057:   d3 = obj = fl_add_text(FL_NORMAL_TEXT,200,160,70,30,"");
                   1058:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1059:     fl_set_object_color(obj,FL_TOP_BCOL,FL_MCOL);
                   1060:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1061:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1062:   d4 = obj = fl_add_text(FL_NORMAL_TEXT,200,190,70,30,"");
                   1063:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1064:     fl_set_object_color(obj,FL_TOP_BCOL,FL_MCOL);
                   1065:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1066:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1067:   d5 = obj = fl_add_text(FL_NORMAL_TEXT,200,220,70,30,"");
                   1068:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1069:     fl_set_object_color(obj,FL_TOP_BCOL,FL_MCOL);
                   1070:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1071:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1072:   d6 = obj = fl_add_text(FL_NORMAL_TEXT,200,250,70,30,"");
                   1073:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1074:     fl_set_object_color(obj,FL_TOP_BCOL,FL_MCOL);
                   1075:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1076:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1077:   d7 = obj = fl_add_text(FL_NORMAL_TEXT,200,280,70,30,"");
                   1078:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1079:     fl_set_object_color(obj,FL_TOP_BCOL,FL_MCOL);
                   1080:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1081:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1082:   obj = fl_add_text(FL_NORMAL_TEXT,280,70,40,30,"USP");
                   1083:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1084:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                   1085:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1086:   usp = obj = fl_add_text(FL_NORMAL_TEXT,330,70,80,30,"");
                   1087:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1088:     fl_set_object_color(obj,FL_TOP_BCOL,FL_MCOL);
                   1089:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1090:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1091:   obj = fl_add_text(FL_NORMAL_TEXT,280,100,40,30,"ISP");
                   1092:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1093:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                   1094:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1095:   obj = fl_add_text(FL_NORMAL_TEXT,280,130,40,30,"MSP");
                   1096:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1097:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                   1098:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1099:   obj = fl_add_text(FL_NORMAL_TEXT,280,160,40,30,"VBR");
                   1100:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1101:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                   1102:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1103:   isp = obj = fl_add_text(FL_NORMAL_TEXT,330,100,80,30,"");
                   1104:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1105:     fl_set_object_color(obj,FL_TOP_BCOL,FL_MCOL);
                   1106:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1107:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1108:   msp = obj = fl_add_text(FL_NORMAL_TEXT,330,130,80,30,"");
                   1109:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1110:     fl_set_object_color(obj,FL_TOP_BCOL,FL_MCOL);
                   1111:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1112:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1113:   vbr = obj = fl_add_text(FL_NORMAL_TEXT,330,160,80,30,"");
                   1114:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1115:     fl_set_object_color(obj,FL_TOP_BCOL,FL_MCOL);
                   1116:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1117:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1118:   pc = obj = fl_add_text(FL_NORMAL_TEXT,330,220,80,30,"");
                   1119:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1120:     fl_set_object_color(obj,FL_TOP_BCOL,FL_MCOL);
                   1121:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1122:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1123:   obj = fl_add_text(FL_NORMAL_TEXT,280,220,40,30,"PC");
                   1124:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1125:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                   1126:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1127:   obj = fl_add_button(FL_NORMAL_BUTTON,30,480,70,30,"Custom");
                   1128:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1129:     fl_set_object_callback(obj,ctrl_custom,0);
                   1130:   obj = fl_add_button(FL_NORMAL_BUTTON,110,480,70,30,"FPU");
                   1131:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1132:     fl_set_object_callback(obj,ctrl_fpu,0);
                   1133:   obj = fl_add_button(FL_NORMAL_BUTTON,190,480,70,30,"Memory");
                   1134:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1135:     fl_set_object_callback(obj,ctrl_mem,0);
                   1136:   obj = fl_add_button(FL_NORMAL_BUTTON,270,480,90,30,"Disassembler");
                   1137:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1138:     fl_set_object_callback(obj,ctrl_disasm,0);
                   1139:   obj = fl_add_button(FL_NORMAL_BUTTON,370,480,60,30,"Exit");
                   1140:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1141:     fl_set_object_callback(obj,ctrl_debug_exit,0);
                   1142:   obj = fl_add_button(FL_NORMAL_BUTTON,30,430,70,30,"Step");
                   1143:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1144:     fl_set_object_callback(obj,ctrl_step,0);
                   1145:   obj = fl_add_button(FL_NORMAL_BUTTON,110,430,70,30,"Next");
                   1146:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1147:     fl_set_object_callback(obj,ctrl_next,0);
                   1148:   obj = fl_add_button(FL_NORMAL_BUTTON,190,430,70,30,"Go");
                   1149:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1150:     fl_set_object_callback(obj,ctrl_go,0);
                   1151:   obj = fl_add_button(FL_NORMAL_BUTTON,270,430,70,30,"Forward");
                   1152:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1153:     fl_set_object_callback(obj,ctrl_forward,0);
                   1154:   adress = obj = fl_add_input(FL_NORMAL_INPUT,350,430,80,30,"");
                   1155:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1156:     fl_set_object_callback(obj,ctrl_address,0);
                   1157:   imask = obj = fl_add_text(FL_NORMAL_TEXT,330,250,80,30,"");
                   1158:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1159:     fl_set_object_color(obj,FL_TOP_BCOL,FL_MCOL);
                   1160:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1161:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1162:   obj = fl_add_text(FL_NORMAL_TEXT,280,250,40,30,"IMask");
                   1163:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1164:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                   1165:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1166:   Output = obj = fl_add_text(FL_NORMAL_TEXT,30,370,400,30,"");
                   1167:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1168:     fl_set_object_color(obj,FL_TOP_BCOL,FL_MCOL);
                   1169:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1170:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1171:   obj = fl_add_text(FL_NORMAL_TEXT,40,330,40,30,"Flags");
                   1172:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1173:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1174:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1175:   f_s = obj = fl_add_checkbutton(FL_PUSH_BUTTON,90,330,40,30,"S");
                   1176:   f_m = obj = fl_add_checkbutton(FL_PUSH_BUTTON,130,330,40,30,"M");
                   1177:   f_x = obj = fl_add_checkbutton(FL_PUSH_BUTTON,170,330,40,30,"X");
                   1178:   f_n = obj = fl_add_checkbutton(FL_PUSH_BUTTON,210,330,40,30,"N");
                   1179:   f_z = obj = fl_add_checkbutton(FL_PUSH_BUTTON,250,330,40,30,"Z");
                   1180:   f_v = obj = fl_add_checkbutton(FL_PUSH_BUTTON,290,330,40,30,"V");
                   1181:   f_c = obj = fl_add_checkbutton(FL_PUSH_BUTTON,330,330,40,30,"C");
                   1182:   f_t = obj = fl_add_checkbutton(FL_PUSH_BUTTON,370,330,40,30,"T");
                   1183:   fl_end_form();
                   1184: 
                   1185: }
                   1186: /*---------------------------------------*/
                   1187: 
                   1188: static void create_form_Custom(void)
                   1189: {
                   1190:   FL_OBJECT *obj;
                   1191: 
                   1192:   if (Custom)
                   1193:      return;
                   1194: 
                   1195:   Custom = fl_bgn_form(FL_NO_BOX,340,290);
                   1196:   obj = fl_add_box(FL_UP_BOX,0,0,340,290,"");
                   1197:   obj = fl_add_frame(FL_ENGRAVED_FRAME,10,10,320,270,"");
                   1198:   obj = fl_add_text(FL_NORMAL_TEXT,100,0,130,20,"Custom Chips");
                   1199:     fl_set_object_lsize(obj,FL_MEDIUM_SIZE);
                   1200:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                   1201:   obj = fl_add_text(FL_NORMAL_TEXT,20,50,50,20,"CRA");
                   1202:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1203:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1204:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1205:   obj = fl_add_text(FL_NORMAL_TEXT,20,70,50,20,"CRB");
                   1206:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1207:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1208:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1209:   obj = fl_add_text(FL_NORMAL_TEXT,20,90,50,20,"IMask");
                   1210:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1211:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1212:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1213:   obj = fl_add_text(FL_NORMAL_TEXT,20,110,50,20,"TOD");
                   1214:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1215:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1216:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1217:   obj = fl_add_text(FL_NORMAL_TEXT,20,130,50,20,"TA");
                   1218:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1219:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1220:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1221:   obj = fl_add_text(FL_NORMAL_TEXT,20,150,50,20,"TB");
                   1222:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1223:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1224:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1225:   obj = fl_add_frame(FL_ENGRAVED_FRAME,70,30,110,160,"");
                   1226:   obj = fl_add_frame(FL_ENGRAVED_FRAME,190,30,110,160,"");
                   1227:   obj = fl_add_text(FL_NORMAL_TEXT,110,20,30,20,"A");
                   1228:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1229:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                   1230:   obj = fl_add_text(FL_NORMAL_TEXT,230,20,30,20,"B");
                   1231:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1232:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                   1233:   a_cra = obj = fl_add_text(FL_NORMAL_TEXT,80,50,90,20,"");
                   1234:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1235:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1236:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1237:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1238:   a_crb = obj = fl_add_text(FL_NORMAL_TEXT,80,70,90,20,"");
                   1239:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1240:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1241:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1242:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1243:   a_imask = obj = fl_add_text(FL_NORMAL_TEXT,80,90,90,20,"");
                   1244:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1245:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1246:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1247:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1248:   a_tod = obj = fl_add_text(FL_NORMAL_TEXT,80,110,90,20,"");
                   1249:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1250:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1251:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1252:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1253:   a_ta = obj = fl_add_text(FL_NORMAL_TEXT,80,130,90,20,"");
                   1254:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1255:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1256:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1257:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1258:   a_tb = obj = fl_add_text(FL_NORMAL_TEXT,80,150,90,20,"");
                   1259:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1260:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1261:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1262:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1263:   b_cra = obj = fl_add_text(FL_NORMAL_TEXT,200,50,90,20,"");
                   1264:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1265:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1266:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1267:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1268:   b_crb = obj = fl_add_text(FL_NORMAL_TEXT,200,70,90,20,"");
                   1269:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1270:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1271:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1272:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1273:   b_imask = obj = fl_add_text(FL_NORMAL_TEXT,200,90,90,20,"");
                   1274:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1275:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1276:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1277:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1278:   b_tod = obj = fl_add_text(FL_NORMAL_TEXT,200,110,90,20,"");
                   1279:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1280:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1281:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1282:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1283:   b_ta = obj = fl_add_text(FL_NORMAL_TEXT,200,130,90,20,"");
                   1284:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1285:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1286:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1287:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1288:   b_tb = obj = fl_add_text(FL_NORMAL_TEXT,200,150,90,20,"");
                   1289:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1290:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1291:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1292:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1293:   uae_dmacon = obj = fl_add_text(FL_NORMAL_TEXT,90,210,90,20,"");
                   1294:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1295:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1296:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1297:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1298:   obj = fl_add_text(FL_NORMAL_TEXT,20,210,70,20,"DMACON");
                   1299:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1300:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1301:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1302:   obj = fl_add_text(FL_NORMAL_TEXT,20,230,70,20,"INTENA");
                   1303:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1304:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1305:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1306:   obj = fl_add_text(FL_NORMAL_TEXT,20,250,70,20,"INTREQ");
                   1307:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1308:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1309:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1310:   uae_intena = obj = fl_add_text(FL_NORMAL_TEXT,90,230,90,20,"");
                   1311:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1312:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1313:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1314:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1315:   uae_intreq = obj = fl_add_text(FL_NORMAL_TEXT,90,250,90,20,"");
                   1316:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1317:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1318:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1319:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1320:   obj = fl_add_text(FL_NORMAL_TEXT,190,210,50,20,"VPOS");
                   1321:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1322:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1323:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1324:   uae_vpos = obj = fl_add_text(FL_NORMAL_TEXT,250,210,50,20,"");
                   1325:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1326:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1327:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1328:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1329:   obj = fl_add_text(FL_NORMAL_TEXT,190,230,50,20,"HPOS");
                   1330:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1331:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1332:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1333:   uae_hpos = obj = fl_add_text(FL_NORMAL_TEXT,250,230,50,20,"");
                   1334:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1335:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1336:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1337:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1338:   obj = fl_add_text(FL_NORMAL_TEXT,190,250,60,20,"Frames");
                   1339:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1340:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1341:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1342:   uae_frames = obj = fl_add_text(FL_NORMAL_TEXT,250,250,50,20,"");
                   1343:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1344:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1345:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1346:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1347:   fl_end_form();
                   1348: 
                   1349: }
                   1350: /*---------------------------------------*/
                   1351: 
                   1352: static void create_form_FPU(void)
                   1353: {
                   1354:   FL_OBJECT *obj;
                   1355: 
                   1356:   if (FPU)
                   1357:      return;
                   1358: 
                   1359:   FPU = fl_bgn_form(FL_NO_BOX,300,160);
                   1360:   obj = fl_add_box(FL_UP_BOX,0,0,300,160,"");
                   1361:   obj = fl_add_frame(FL_ENGRAVED_FRAME,10,10,280,140,"");
                   1362:   obj = fl_add_text(FL_NORMAL_TEXT,130,0,40,20,"FPU");
                   1363:     fl_set_object_lsize(obj,FL_MEDIUM_SIZE);
                   1364:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                   1365:   obj = fl_add_text(FL_NORMAL_TEXT,20,30,50,20,"FP0");
                   1366:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1367:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1368:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1369:   obj = fl_add_text(FL_NORMAL_TEXT,20,50,50,20,"FP1");
                   1370:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1371:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1372:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1373:   obj = fl_add_text(FL_NORMAL_TEXT,20,70,50,20,"FP2");
                   1374:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1375:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1376:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1377:   obj = fl_add_text(FL_NORMAL_TEXT,150,30,50,20,"FP4");
                   1378:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1379:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1380:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1381:   obj = fl_add_text(FL_NORMAL_TEXT,150,50,50,20,"FP5");
                   1382:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1383:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1384:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1385:   obj = fl_add_text(FL_NORMAL_TEXT,150,70,50,20,"FP6");
                   1386:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1387:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1388:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1389:   obj = fl_add_text(FL_NORMAL_TEXT,20,90,50,20,"FP3");
                   1390:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1391:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1392:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1393:   obj = fl_add_text(FL_NORMAL_TEXT,150,90,50,20,"FP7");
                   1394:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1395:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1396:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1397:   fpu0 = obj = fl_add_text(FL_NORMAL_TEXT,60,30,80,20,"");
                   1398:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1399:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1400:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1401:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1402:   fpu1 = obj = fl_add_text(FL_NORMAL_TEXT,60,50,80,20,"");
                   1403:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1404:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1405:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1406:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1407:   fpu2 = obj = fl_add_text(FL_NORMAL_TEXT,60,70,80,20,"");
                   1408:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1409:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1410:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1411:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1412:   fpu3 = obj = fl_add_text(FL_NORMAL_TEXT,60,90,80,20,"");
                   1413:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1414:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1415:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1416:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1417:   fpu4 = obj = fl_add_text(FL_NORMAL_TEXT,190,30,80,20,"");
                   1418:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1419:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1420:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1421:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1422:   fpu5 = obj = fl_add_text(FL_NORMAL_TEXT,190,50,80,20,"");
                   1423:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1424:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1425:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1426:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1427:   fpu6 = obj = fl_add_text(FL_NORMAL_TEXT,190,70,80,20,"");
                   1428:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1429:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1430:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1431:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1432:   fpu7 = obj = fl_add_text(FL_NORMAL_TEXT,190,90,80,20,"");
                   1433:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1434:     fl_set_object_color(obj,FL_MCOL,FL_MCOL);
                   1435:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1436:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1437:   fpu_n = obj = fl_add_checkbutton(FL_PUSH_BUTTON,30,120,40,30,"N");
                   1438:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1439:   fpu_z = obj = fl_add_checkbutton(FL_PUSH_BUTTON,90,120,40,30,"Z");
                   1440:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1441:   fpu_i = obj = fl_add_checkbutton(FL_PUSH_BUTTON,150,120,40,30,"I");
                   1442:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1443:   fpu_nan = obj = fl_add_checkbutton(FL_PUSH_BUTTON,210,120,60,30,"NAN");
                   1444:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1445:   fl_end_form();
                   1446: 
                   1447: }
                   1448: /*---------------------------------------*/
                   1449: 
                   1450: static void create_form_Memory(void)
                   1451: {
                   1452:   FL_OBJECT *obj;
                   1453: 
                   1454:   if (Memory)
                   1455:      return;
                   1456: 
                   1457:   Memory = fl_bgn_form(FL_NO_BOX,440,380);
                   1458:   obj = fl_add_box(FL_UP_BOX,0,0,440,380,"");
                   1459:   obj = fl_add_frame(FL_ENGRAVED_FRAME,10,10,420,360,"");
                   1460:   uaectrl_down = obj = fl_add_button(FL_TOUCH_BUTTON,20,330,30,30,"@2");
                   1461:     fl_set_object_callback(obj,change_memory_start,0);
                   1462:   memory_field = obj = fl_add_text(FL_NORMAL_TEXT,20,30,400,290,"");
                   1463:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1464:     fl_set_object_lsize(obj,FL_MEDIUM_SIZE);
                   1465:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1466:     fl_set_object_lstyle(obj,FL_FIXED_STYLE);
                   1467:   obj = fl_add_text(FL_NORMAL_TEXT,140,0,140,20,"Memory Browser");
                   1468:     fl_set_object_lsize(obj,FL_MEDIUM_SIZE);
                   1469:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                   1470:   uaectrl_up = obj = fl_add_button(FL_TOUCH_BUTTON,390,330,30,30,"@8");
                   1471:     fl_set_object_callback(obj,change_memory_start,0);
                   1472:   memory_start = obj = fl_add_input(FL_NORMAL_INPUT,150,330,180,30,"");
                   1473:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1474:     fl_set_object_lstyle(obj,FL_FIXED_STYLE);
                   1475:     fl_set_object_callback(obj,change_memory_start,0);
                   1476:   obj = fl_add_text(FL_NORMAL_TEXT,90,330,50,30,"Start :");
                   1477:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1478:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1479:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1480:   fl_end_form();
                   1481: 
                   1482: }
                   1483: /*---------------------------------------*/
                   1484: 
                   1485: static void create_form_Disasm(void)
                   1486: {
                   1487:   FL_OBJECT *obj;
                   1488: 
                   1489:   if (Disasm)
                   1490:      return;
                   1491: 
                   1492:   Disasm = fl_bgn_form(FL_NO_BOX,530,370);
                   1493:   obj = fl_add_box(FL_UP_BOX,0,0,530,370,"");
                   1494:   obj = fl_add_frame(FL_ENGRAVED_FRAME,10,10,510,350,"");
                   1495:   obj = fl_add_text(FL_NORMAL_TEXT,160,0,120,20,"Disassembler");
                   1496:     fl_set_object_lsize(obj,FL_MEDIUM_SIZE);
                   1497:     fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                   1498:   disasm_field = obj = fl_add_text(FL_NORMAL_TEXT,20,20,490,290,"");
                   1499:     fl_set_object_boxtype(obj,FL_DOWN_BOX);
                   1500:     fl_set_object_lsize(obj,FL_MEDIUM_SIZE);
                   1501:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1502:     fl_set_object_lstyle(obj,FL_FIXED_STYLE);
                   1503:   disasm_start = obj = fl_add_input(FL_NORMAL_INPUT,170,320,190,30,"");
                   1504:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1505:     fl_set_object_lstyle(obj,FL_FIXED_STYLE);
                   1506:     fl_set_object_callback(obj,change_disasm_start,0);
                   1507:   obj = fl_add_text(FL_NORMAL_TEXT,110,320,50,30,"Start :");
                   1508:     fl_set_object_lsize(obj,FL_NORMAL_SIZE);
                   1509:     fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
                   1510:     fl_set_object_lstyle(obj,FL_BOLD_STYLE);
                   1511:   disasm_down = obj = fl_add_button(FL_NORMAL_BUTTON,20,320,30,30,"@2");
                   1512:     fl_set_object_callback(obj,change_disasm_start,0);
                   1513:   disasm_up = obj = fl_add_button(FL_NORMAL_BUTTON,470,320,30,30,"@8");
                   1514:     fl_set_object_callback(obj,change_disasm_start,0);
                   1515:   fl_end_form();
                   1516: 
                   1517: }
                   1518: /*---------------------------------------*/
                   1519: 
                   1520: static void create_the_forms(void)
                   1521: {
                   1522:   create_form_Control();
                   1523:   create_form_Debugger();
                   1524:   create_form_Custom();
                   1525:   create_form_FPU();
                   1526:   create_form_Memory();
                   1527:   create_form_Disasm();
                   1528: }
                   1529: 
                   1530: /* end of forms stuff */
                   1531: 
                   1532: 
                   1533: 
                   1534: int gui_init(void)
                   1535: {
                   1536:     int argc=1;
                   1537:     char *argv[]={"uae",""};
                   1538:     quit_program = 0;
                   1539:     speed_up_counter=10;
                   1540:     fl_initialize(&argc, argv, 0, 0, 0);
                   1541:     exit_debug=0;
                   1542:     create_the_forms();
                   1543: 
                   1544:     /* fill-in form initialization code */
                   1545: 
                   1546:     /* show the first form */
                   1547:     fl_show_form(Control,FL_PLACE_CENTER,FL_FULLBORDER,"Control");
                   1548:     fl_set_object_label(DF0,df0);
                   1549:     fl_set_object_label(DF1,df1);
                   1550:     fl_set_object_label(DF2,df2);
                   1551:     fl_set_object_label(DF3,df3);
                   1552:     return 1;
                   1553: }
                   1554: 
                   1555: int gui_update(void)
                   1556: {
                   1557:     fl_set_object_label(DF0,df0);
                   1558:     fl_set_object_label(DF1,df1);
                   1559:     fl_set_object_label(DF2,df2);
                   1560:     fl_set_object_label(DF3,df3);
                   1561:     fl_redraw_object(DF0);
                   1562:     fl_redraw_object(DF1);
                   1563:     fl_redraw_object(DF2);
                   1564:     fl_redraw_object(DF3);
                   1565:     return 0;
                   1566: }
                   1567: 
                   1568: void gui_exit(void)
                   1569: {
                   1570: }
                   1571: 
                   1572: void gui_led(int led, int on)
                   1573: {
                   1574:     if(on!=0){
                   1575:        switch(led){
                   1576:         case 0 : fl_set_object_color(l_power,FL_RED,FL_BLACK); break;
                   1577:         case 1 : fl_set_object_color(l_df0,FL_GREEN,FL_BLACK); break;
                   1578:         case 2 : fl_set_object_color(l_df1,FL_GREEN,FL_BLACK); break;
                   1579:         case 3 : fl_set_object_color(l_df2,FL_GREEN,FL_BLACK); break;
                   1580:         case 4 : fl_set_object_color(l_df3,FL_GREEN,FL_BLACK); break;
                   1581:         default: break;
                   1582:        }
                   1583:     } else {
                   1584:         switch(led){
                   1585:         case 0: fl_set_object_color(l_power,FL_BLACK,FL_BLACK); break;
                   1586:         case 1: fl_set_object_color(l_df0,FL_BLACK,FL_BLACK); break;
                   1587:         case 2: fl_set_object_color(l_df1,FL_BLACK,FL_BLACK); break;
                   1588:         case 3: fl_set_object_color(l_df2,FL_BLACK,FL_BLACK); break;
                   1589:         case 4: fl_set_object_color(l_df3,FL_BLACK,FL_BLACK); break;
                   1590:         default: break;
                   1591:         }
                   1592:     }
                   1593: }
                   1594: 
                   1595: void gui_filename(int num, const char *name)
                   1596: {
                   1597:     switch (num) {
                   1598:      case 0: strcpy((char *)df0, name); break;
                   1599:      case 1: strcpy((char *)df1, name); break;
                   1600:      case 2: strcpy((char *)df2, name); break;
                   1601:      case 3: strcpy((char *)df3, name); break;
                   1602:     }
                   1603: 
                   1604: }
                   1605: 
                   1606: void gui_handle_events(void)
                   1607: {
                   1608:     if (--speed_up_counter == 0) {
                   1609:        fl_check_forms();
                   1610:        speed_up_counter = 20;
                   1611:     }
                   1612: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.