|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.