]> git.sur5r.net Git - cc65/blobdiff - libsrc/dbg/dbg.c
Replaced whole bunch for Makefiles with a single generic Makefile.
[cc65] / libsrc / dbg / dbg.c
index 84135ab57e5b68853f2949fe1002af17b112afd7..8090d73ddeb6465bce439b4f36d0f70c0be4e71c 100644 (file)
@@ -44,8 +44,10 @@ static char GetKeyUpdate (void);
 /*                                  Data                                    */
 /*****************************************************************************/
 
+
+
 /* Color definitions */
-#ifdef __PLUS4__
+#if defined(__PLUS4__) || defined(__C16__)
 #  define COLOR_BORDER         (BCOLOR_DARKBLUE | CATTR_LUMA6)
 #  define COLOR_BACKGROUND     COLOR_WHITE
 #  define COLOR_TEXTHIGH               COLOR_BLACK
@@ -53,7 +55,7 @@ static char GetKeyUpdate (void);
 #  define COLOR_FRAMEHIGH      COLOR_BLACK
 #  define COLOR_FRAMELOW       COLOR_GRAY2
 #else
-#  ifdef COLOR_GRAY3
+#  if defined(COLOR_GRAY3)
 #    define COLOR_BORDER       COLOR_BLACK
 #    define COLOR_BACKGROUND   COLOR_BLACK
 #    define COLOR_TEXTHIGH     COLOR_WHITE
@@ -61,7 +63,7 @@ static char GetKeyUpdate (void);
 #    define COLOR_FRAMEHIGH    COLOR_WHITE
 #    define COLOR_FRAMELOW     COLOR_GRAY3
 #  else
-#    ifdef __APPLE2__
+#    if defined(__APPLE2__) || defined(__APPLE2ENH__)
 #      define COLOR_BORDER             COLOR_BLACK
 #      define COLOR_BACKGROUND  COLOR_BLACK
 #      define COLOR_TEXTHIGH   COLOR_BLACK
@@ -78,6 +80,12 @@ static char GetKeyUpdate (void);
 #    endif
 #  endif
 #endif
+#ifndef COLOR_BLACK
+#  define COLOR_BLACK   0
+#endif
+#ifndef COLOR_WHITE
+#  define COLOR_WHITE   1
+#endif
 
 /* Screen definitions */
 #if defined(__CBM610__)
@@ -85,7 +93,7 @@ static char GetKeyUpdate (void);
 #  define MAX_X                80
 #  define MAX_Y                25
 #  define DUMP_BYTES   16
-#elif defined(__APPLE2__) || defined(__ATARI__)
+#elif defined(__APPLE2__) || defined(__APPLE2ENH__) || defined(__ATARI__)
 #  define MAX_X         40
 #  define MAX_Y         24
 #  define DUMP_BYTES     8
@@ -95,7 +103,39 @@ static char GetKeyUpdate (void);
 #  define DUMP_BYTES    8
 #endif
 
+/* Replacement key definitions */
+#if defined(__APPLE2__) || defined(__LYNX__) || defined(__SUPERVISION__)
+#  define CH_DEL        ('H' - 'A' + 1)         /* Ctrl+H */
+#endif
 
+/* Replacement char definitions */
+#ifndef CH_ULCORNER
+#  define CH_ULCORNER   '+'
+#endif
+#ifndef CH_URCORNER
+#  define CH_URCORNER   '+'
+#endif
+#ifndef CH_LLCORNER
+#  define CH_LLCORNER   '+'
+#endif
+#ifndef CH_LRCORNER
+#  define CH_LRCORNER   '+'
+#endif
+#ifndef CH_TTEE
+#  define CH_TTEE       '+'
+#endif
+#ifndef CH_LTEE
+#  define CH_LTEE       '+'
+#endif
+#ifndef CH_RTEE
+#  define CH_RTEE       '+'
+#endif
+#ifndef CH_BTEE
+#  define CH_BTEE       '+'
+#endif
+#ifndef CH_CROSS
+#  define CH_CROSS      '+'
+#endif
 
 /* Defines for opcodes */
 #define        OPC_BRK         0x00
@@ -168,13 +208,14 @@ static TextDesc HelpText [] = {
     { 1,  7, "+         Page down"                             },
     { 1,  8, "-         Page up"                       },
     { 1,  9, "Cursor    Move up/down"                          },
-    { 1, 10, "c         Continue"                      },
-    { 1, 11, "f         Follow instruction"            },
-    { 1, 12, "o         Goto origin"                           },
-    { 1, 13, "p         Use as new PC value"           },
-    { 1, 14, "q         Quit"                          },
-    { 1, 15, "r         Redraw screen"                         },
-    { 1, 16, "s         Skip next instruction"         },
+    { 1, 10, "a/z       Move up/down"                   },
+    { 1, 11, "c         Continue"                      },
+    { 1, 12, "f         Follow instruction"            },
+    { 1, 13, "o         Goto origin"                           },
+    { 1, 14, "p         Use as new PC value"           },
+    { 1, 15, "q         Quit"                          },
+    { 1, 16, "r         Redraw screen"                         },
+    { 1, 17, "s         Skip next instruction"         },
 };
 
 
@@ -305,7 +346,7 @@ BreakPoint* DbgIsBreak (unsigned Addr);
 
 
 
-static void DrawFrame (FrameDesc* F, char Active)
+static void DrawFrame (register FrameDesc* F, char Active)
 /* Draw one window frame */
 {
     TextDesc* T;
@@ -351,7 +392,7 @@ static void DrawFrame (FrameDesc* F, char Active)
     cvlinexy (F->fd_x2, y1, F->fd_height);
 
     /* If the window has static text associated, print the text */
-    textcolor (COLOR_TEXTLOW);
+    (void) textcolor (COLOR_TEXTLOW);
     Count = F->fd_textcount;
     T = F->fd_text;
     while (Count--) {
@@ -360,7 +401,7 @@ static void DrawFrame (FrameDesc* F, char Active)
     }
 
     /* Set the old color */
-    textcolor (OldColor);
+    (void) textcolor (OldColor);
 }
 
 
@@ -386,7 +427,7 @@ static void ActivateFrame (int Num, unsigned char Clear)
 /* Activate a new frame, deactivate the old one */
 {
     unsigned char y;
-    FrameDesc* F;
+    register FrameDesc* F;
 
     if (ActiveFrame != Num) {
 
@@ -400,9 +441,9 @@ static void ActivateFrame (int Num, unsigned char Clear)
                    F = Frames [ActiveFrame];
            /* Clear the frame if requested */
            if (Clear) {
-               for (y = F->fd_y1+1; y < F->fd_y2; ++y) {
-                   cclearxy (F->fd_x1+1, y, F->fd_width);
-               }
+               for (y = F->fd_y1+1; y < F->fd_y2; ++y) {
+                   cclearxy (F->fd_x1+1, y, F->fd_width);
+               }
            }
            DrawFrame (F, 1);
        }
@@ -416,7 +457,7 @@ static void ActivateFrame (int Num, unsigned char Clear)
 
 
 /*****************************************************************************/
-/*                               Prompt line                                */
+/*                               Prompt line                                */
 /*****************************************************************************/
 
 
@@ -431,7 +472,7 @@ static void DisplayPrompt (char* s)
 
     /* Clear the old prompt if there is one */
     if (ActivePrompt) {
-       textcolor (PromptColor);
+       (void) textcolor (PromptColor);
        chlinexy ((MAX_X - PromptLength) / 2, MAX_Y-1, PromptLength);
     }
 
@@ -441,11 +482,11 @@ static void DisplayPrompt (char* s)
     PromptLength = strlen (ActivePrompt);
 
     /* Display the new prompt */
-    textcolor (COLOR_TEXTHIGH);
+    (void) textcolor (COLOR_TEXTHIGH);
     cputsxy ((MAX_X - PromptLength) / 2, MAX_Y-1, ActivePrompt);
 
     /* Restore the old color */
-    textcolor (PromptColor);
+    (void) textcolor (PromptColor);
 }
 
 
@@ -465,6 +506,24 @@ static void AnyKeyPrompt (void)
 
 
 
+static char IsAbortKey (char C)
+/* Return true if C is an abort key */
+{
+#if defined(CH_ESC)
+    if (C == CH_ESC) {
+        return 1;
+    }
+#endif
+#if defined(CH_STOP)
+    if (C == CH_STOP) {
+        return 1;
+    }
+#endif
+    return 0;
+}
+
+
+
 static char Input (char* Prompt, char* Buf, unsigned char Count)
 /* Read input from the user, return 1 on success, 0 if aborted */
 {
@@ -482,7 +541,7 @@ static char Input (char* Prompt, char* Buf, unsigned char Count)
     /* Display the new prompt */
     OldColor = textcolor (COLOR_TEXTHIGH);
     cputsxy (0, MAX_Y-1, Prompt);
-    textcolor (COLOR_TEXTLOW);
+    (void) textcolor (COLOR_TEXTLOW);
 
     /* Remember where we are, enable the cursor */
     x1 = wherex ();
@@ -496,14 +555,14 @@ static char Input (char* Prompt, char* Buf, unsigned char Count)
            Buf [i] = c;
            cputcxy (x1 + i, MAX_Y-1, c);
                    ++i;
-       } else if (i > 0 && c == CH_DEL) {
+               } else if (i > 0 && c == CH_DEL) {
                    --i;
            cputcxy (x1 + i, MAX_Y-1, ' ');
            gotoxy (x1 + i, MAX_Y-1);
        } else if (c == '\n') {
            Buf [i] = '\0';
            done = 1;
-       } else if (c == CH_ESC) {
+       } else if (IsAbortKey (c)) {
            /* Abort */
            done = 2;
        }
@@ -511,7 +570,7 @@ static char Input (char* Prompt, char* Buf, unsigned char Count)
 
     /* Reset settings, display old prompt line */
     cursor (OldCursor);
-    textcolor (OldColor);
+    (void) textcolor (OldColor);
     DrawFrames ();
     Frame = ActiveFrame;
     ActiveFrame = -1;
@@ -621,7 +680,7 @@ static void DbgSetTmpBreak (unsigned Addr)
 static void DbgToggleUserBreak (unsigned Addr)
 /* Set a breakpoint */
 {
-    BreakPoint* B = DbgIsBreak (Addr);
+    register BreakPoint* B = DbgIsBreak (Addr);
 
     if (B) {
        /* We have a breakpoint, remove it */
@@ -634,13 +693,13 @@ static void DbgToggleUserBreak (unsigned Addr)
        } else {
            /* Test if we can set a breakpoint at that address */
            if (!DbgIsRAM (Addr)) {
-               BreakInRomError ();
+               BreakInRomError ();
            } else {
-               /* Set the breakpoint */
-               B = DbgGetBreakSlot ();
-               B->bk_addr = Addr;
-               B->bk_use  = BRK_USER;
-               ++DbgBreakCount;
+               /* Set the breakpoint */
+               B = DbgGetBreakSlot ();
+               B->bk_addr = Addr;
+               B->bk_use  = BRK_USER;
+               ++DbgBreakCount;
            }
        }
     }
@@ -658,7 +717,7 @@ static void DbgResetTmpBreaks (void)
        if (B->bk_use == BRK_TMP) {
            B->bk_use = BRK_EMPTY;
        }
-       ++B;
+       ++B;
     }
 }
 
@@ -673,11 +732,11 @@ static unsigned char DbgTmpBreaksOk (void)
     BreakPoint* B = DbgBreaks;
     for (i = 0; i < MAX_USERBREAKS; ++i) {
                if (B->bk_use == BRK_TMP && !DbgIsRAM (B->bk_addr)) {
-           BreakInRomError ();
-           DbgResetTmpBreaks ();
-           return 0;
+           BreakInRomError ();
+           DbgResetTmpBreaks ();
+           return 0;
        }
-       ++B;
+       ++B;
     }
     return 1;
 }
@@ -685,7 +744,7 @@ static unsigned char DbgTmpBreaksOk (void)
 
 
 /*****************************************************************************/
-/*                         Assembler window stuff                           */
+/*                         Assembler window stuff                           */
 /*****************************************************************************/
 
 
@@ -708,17 +767,17 @@ static unsigned AsmBack (unsigned mem, unsigned char lines)
            adr [in] = cur;
            in = (in + 1) & 0x1F;
                    if (cur >= mem) {
-               if (cur == mem || offs == 12) {
-                   /* Found */
-                   return adr [(in - lines - 1) & 0x1F];
-               } else {
-                   /* The requested address is inside an instruction, go back
-                    * one more byte and try again.
-                    */
+               if (cur == mem || offs == 12) {
+                   /* Found */
+                   return adr [(in - lines - 1) & 0x1F];
+               } else {
+                   /* The requested address is inside an instruction, go back
+                    * one more byte and try again.
+                    */
                            ++offs;
-                   break;
-               }
-           }
+                   break;
+               }
+           }
        }
     }
 }
@@ -736,22 +795,22 @@ static unsigned UpdateAsm (void)
     unsigned      m = AsmBack (AsmAddr, 2);
 
     for (y = AsmFrame.fd_y1+1; y < AsmFrame.fd_y2; ++y) {
-       len = DbgDisAsm (m, buf, width);
+       len = DbgDisAsm (m, buf, width);
                if (m == brk_pc) {
-           buf [4] = '-';
-           buf [5] = '>';
-       }
-       if (DbgIsBreak (m)) {
-           buf [5] = '*';
-       }
-       if (m == AsmAddr) {
-           revers (1);
-           cputsxy (1, y, buf);
-           revers (0);
-       } else {
-           cputsxy (1, y, buf);
-       }
-       m += len;
+           buf [4] = '-';
+           buf [5] = '>';
+       }
+       if (DbgIsBreak (m)) {
+           buf [5] = '*';
+       }
+       if (m == AsmAddr) {
+           revers (1);
+           cputsxy (1, y, buf);
+           revers (0);
+       } else {
+           cputsxy (1, y, buf);
+       }
+       m += len;
     }
     return m;
 }
@@ -771,33 +830,33 @@ static void AsmFollow (void)
 {
     switch (*(unsigned char*) AsmAddr) {
 
-       case OPC_JMP:
-       case OPC_JSR:
+       case OPC_JMP:
+       case OPC_JSR:
                    AsmAddr = AsmArg16 ();
-           break;
+           break;
 
         case OPC_JMPIND:
-           AsmAddr = *(unsigned*)AsmArg16 ();
-           break;
-
-       case OPC_BPL:
-       case OPC_BMI:
-       case OPC_BVC:
-       case OPC_BVS:
-       case OPC_BCC:
-       case OPC_BCS:
-       case OPC_BNE:
-       case OPC_BEQ:
+           AsmAddr = *(unsigned*)AsmArg16 ();
+           break;
+
+       case OPC_BPL:
+       case OPC_BMI:
+       case OPC_BVC:
+       case OPC_BVS:
+       case OPC_BCC:
+       case OPC_BCS:
+       case OPC_BNE:
+       case OPC_BEQ:
                    AsmAddr = AsmAddr + 2 + *(signed char*)(AsmAddr+1);
-           break;
+           break;
 
         case OPC_RTS:
-           AsmAddr = (*(unsigned*) (DbgSP + 0x101) + 1);
-           break;
+           AsmAddr = (*(unsigned*) (DbgSP + 0x101) + 1);
+           break;
 
         case OPC_RTI:
-           AsmAddr = *(unsigned*) (DbgSP + 0x102);
-           break;
+           AsmAddr = *(unsigned*) (DbgSP + 0x102);
+           break;
 
     }
 }
@@ -832,23 +891,23 @@ static char AsmHandler (void)
        /* Update the window contents */
        Last = UpdateAsm ();
 
-       /* Read and handle input */
-       switch (c = GetKeyUpdate ()) {
+       /* Read and handle input */
+       switch (c = GetKeyUpdate ()) {
 
-           case  '+':
-               AsmAddr = Last;
-               break;
+           case  '+':
+               AsmAddr = Last;
+               break;
 
-           case '-':
-               AsmAddr = AsmBack (AsmAddr, AsmFrame.fd_height);
-               break;
+           case '-':
+               AsmAddr = AsmBack (AsmAddr, AsmFrame.fd_height);
+               break;
 
-           case 't':
+           case 't':
 #ifdef CH_F2
            case CH_F2:
 #endif
-               DbgToggleUserBreak (AsmAddr);
-               break;
+               DbgToggleUserBreak (AsmAddr);
+               break;
 
            case 'f':
                AsmFollow ();
@@ -866,11 +925,17 @@ static char AsmHandler (void)
                brk_pc = AsmAddr;
                break;
 
+            case 'a':
+#ifdef CH_CURS_UP
            case CH_CURS_UP:
+#endif
                AsmAddr = AsmBack (AsmAddr, 1);
                break;
 
+            case 'z':
+#ifdef CH_CURS_DOWN
            case CH_CURS_DOWN:
+#endif
                AsmAddr += DbgDisAsmLen (AsmAddr);
                break;
 
@@ -929,7 +994,7 @@ static char RegHandler (void)
 
 
 /*****************************************************************************/
-/*                            Stack window stuff                            */
+/*                            Stack window stuff                            */
 /*****************************************************************************/
 
 
@@ -943,10 +1008,10 @@ static unsigned UpdateStack (void)
     unsigned char y;
 
     for (y = StackFrame.fd_y2-1; y > StackFrame.fd_y1; --y) {
-       gotoxy (x1, y);
-       cputhex8 (mem);
-       gotoxy (x2, y);
-       cputhex8 (* (unsigned char*) (mem + 0x100));
+       gotoxy (x1, y);
+       cputhex8 (mem);
+       gotoxy (x2, y);
+       cputhex8 (* (unsigned char*) (mem + 0x100));
                ++mem;
     }
     return mem;
@@ -979,35 +1044,41 @@ static char StackHandler (void)
 
     while (1) {
 
-       /* Read and handle input */
-       switch (c = GetKeyUpdate ()) {
+       /* Read and handle input */
+       switch (c = GetKeyUpdate ()) {
 
-           case  '+':
+           case  '+':
                        StackAddr += BytesPerPage;
-               break;
+               break;
 
-           case '-':
-               StackAddr -= BytesPerPage;
-               break;
+           case '-':
+               StackAddr -= BytesPerPage;
+               break;
 
-           case 'o':
-               StackHome ();
-               break;
+           case 'o':
+               StackHome ();
+               break;
 
-           case CH_CURS_UP:
-               --StackAddr;
-               break;
+            case 'a':
+#ifdef CH_CURS_UP:
+           case CH_CURS_UP:
+#endif
+               --StackAddr;
+               break;
 
-           case CH_CURS_DOWN:
-               ++StackAddr;
-               break;
+            case 'z':
+#ifdef CH_CURS_DOWN
+           case CH_CURS_DOWN:
+#endif
+               ++StackAddr;
+               break;
 
-           default:
-               return c;
+           default:
+               return c;
 
-       }
+       }
 
-       /* Update the window contents */
+       /* Update the window contents */
                UpdateStack ();
     }
 }
@@ -1028,9 +1099,9 @@ static unsigned UpdateCStack (void)
     unsigned char y;
 
     for (y = CStackFrame.fd_y2-1; y > CStackFrame.fd_y1; --y) {
-       gotoxy (x, y);
-       cputhex16 (* (unsigned*)mem);
-       mem += 2;
+       gotoxy (x, y);
+       cputhex16 (* (unsigned*)mem);
+       mem += 2;
     }
     cputsxy (CStackFrame.fd_x1+1, CStackFrame.fd_y2-1, "->");
     return mem;
@@ -1063,35 +1134,41 @@ static char CStackHandler (void)
 
     while (1) {
 
-       /* Read and handle input */
-       switch (c = GetKeyUpdate ()) {
+       /* Read and handle input */
+       switch (c = GetKeyUpdate ()) {
 
-           case  '+':
+           case  '+':
                        CStackAddr += BytesPerPage;
-               break;
+               break;
 
-           case '-':
-               CStackAddr -= BytesPerPage;
-               break;
+           case '-':
+               CStackAddr -= BytesPerPage;
+               break;
 
-           case 'o':
-               CStackHome ();
-               break;
+           case 'o':
+               CStackHome ();
+               break;
 
-           case CH_CURS_UP:
-               CStackAddr -= 2;
-               break;
+            case 'a':
+#ifdef CH_CURS_UP
+           case CH_CURS_UP:
+#endif
+               CStackAddr -= 2;
+               break;
 
-           case CH_CURS_DOWN:
-               CStackAddr += 2;
-               break;
+            case 'z':
+#ifdef CH_CURS_DOWN
+           case CH_CURS_DOWN:
+#endif
+               CStackAddr += 2;
+               break;
 
-           default:
-               return c;
+           default:
+               return c;
 
-       }
+       }
 
-       /* Update the window contents */
+       /* Update the window contents */
                UpdateCStack ();
     }
 }
@@ -1099,7 +1176,7 @@ static char CStackHandler (void)
 
 
 /*****************************************************************************/
-/*                            Dump window stuff                             */
+/*                            Dump window stuff                             */
 /*****************************************************************************/
 
 
@@ -1114,8 +1191,8 @@ static unsigned UpdateDump (void)
     unsigned char* p = (unsigned char*) mem;
 
     for (y = DumpFrame.fd_y1+1; y < DumpFrame.fd_y2; ++y) {
-       cputsxy (x, y, DbgMemDump (mem, Buf, DUMP_BYTES));
-       mem += DUMP_BYTES;
+       cputsxy (x, y, DbgMemDump (mem, Buf, DUMP_BYTES));
+       mem += DUMP_BYTES;
     }
     return mem;
 }
@@ -1138,37 +1215,43 @@ static char DumpHandler (void)
 
     while (1) {
 
-       /* Read and handle input */
-       switch (c = GetKeyUpdate ()) {
+       /* Read and handle input */
+       switch (c = GetKeyUpdate ()) {
 
-           case  '+':
-               DumpAddr += BytesPerPage;
-               break;
+           case  '+':
+               DumpAddr += BytesPerPage;
+               break;
 
-           case '-':
+           case '-':
                DumpAddr -= BytesPerPage;
-               break;
+               break;
 
-           case 'g':
-               InputGoto (&DumpAddr);
-               break;
+           case 'g':
+               InputGoto (&DumpAddr);
+               break;
 
-           case 'o':
-               DumpHome ();
-               break;
+           case 'o':
+               DumpHome ();
+               break;
 
-           case CH_CURS_UP:
-               DumpAddr -= 8;
-               break;
+            case 'a':
+#ifdef CH_CURS_UP
+           case CH_CURS_UP:
+#endif
+               DumpAddr -= 8;
+               break;
 
-           case CH_CURS_DOWN:
-               DumpAddr += 8;
-               break;
+            case 'z':
+#ifdef CH_CURS_DOWN
+           case CH_CURS_DOWN:
+#endif
+               DumpAddr += 8;
+               break;
 
-           default:
-               return c;
+           default:
+               return c;
 
-       }
+       }
 
        /* Update the window contents */
                UpdateDump ();
@@ -1178,7 +1261,7 @@ static char DumpHandler (void)
 
 
 /*****************************************************************************/
-/*                            Help window stuff                             */
+/*                            Help window stuff                             */
 /*****************************************************************************/
 
 
@@ -1206,7 +1289,7 @@ static char HelpHandler (void)
 
 
 /*****************************************************************************/
-/*                               Singlestep                                 */
+/*                               Singlestep                                 */
 /*****************************************************************************/
 
 
@@ -1242,49 +1325,49 @@ static void SingleStep (char StepInto)
     switch (*(unsigned char*) brk_pc) {
 
         case OPC_JMP:
-           /* Set breakpoint at target */
-           DbgSetTmpBreak (GetArg16 ());
-           return;
+           /* Set breakpoint at target */
+           DbgSetTmpBreak (GetArg16 ());
+           return;
 
        case OPC_JMPIND:
-           /* Indirect jump, ignore CPU error when crossing page */
-           DbgSetTmpBreak (*(unsigned*)GetArg16 ());
-           return;
-
-       case OPC_BPL:
-       case OPC_BMI:
-       case OPC_BVC:
-       case OPC_BVS:
-       case OPC_BCC:
-       case OPC_BCS:
-       case OPC_BNE:
-       case OPC_BEQ:
-           /* Be sure not to set the breakpoint twice if this is a jump to
-            * the following instruction.
-            */
-           Offs = *(signed char*)(brk_pc+1);
-           if (Offs) {
-               DbgSetTmpBreak (brk_pc + Offs + 2);
-           }
-           break;
+           /* Indirect jump, ignore CPU error when crossing page */
+           DbgSetTmpBreak (*(unsigned*)GetArg16 ());
+           return;
+
+       case OPC_BPL:
+       case OPC_BMI:
+       case OPC_BVC:
+       case OPC_BVS:
+       case OPC_BCC:
+       case OPC_BCS:
+       case OPC_BNE:
+       case OPC_BEQ:
+           /* Be sure not to set the breakpoint twice if this is a jump to
+            * the following instruction.
+            */
+            Offs = ((signed char*)brk_pc)[1];
+           if (Offs) {
+               DbgSetTmpBreak (brk_pc + Offs + 2);
+           }
+           break;
 
         case OPC_RTS:
-           /* Set a breakpoint at the return target */
-           SetRTSBreak ();
-           return;
+           /* Set a breakpoint at the return target */
+           SetRTSBreak ();
+           return;
 
         case OPC_RTI:
-           /* Set a breakpoint at the return target */
-           DbgSetTmpBreak (GetStack16 (1));
-           return;
+           /* Set a breakpoint at the return target */
+           DbgSetTmpBreak (GetStack16 (1));
+           return;
 
         case OPC_JSR:
-           if (StepInto) {
-               /* Set breakpoint at target */
-               DbgSetTmpBreak (GetArg16 ());
-               return;
-           }
-           break;
+           if (StepInto) {
+               /* Set breakpoint at target */
+               DbgSetTmpBreak (GetArg16 ());
+               return;
+           }
+           break;
     }
 
     /* Place a breakpoint behind the instruction */
@@ -1294,7 +1377,7 @@ static void SingleStep (char StepInto)
 
 
 /*****************************************************************************/
-/*                       High level window handling                         */
+/*                       High level window handling                         */
 /*****************************************************************************/
 
 
@@ -1306,13 +1389,13 @@ static void RedrawStatic (char Frame)
     ActiveFrame = -1;
 
     /* Clear the screen hide the cursor */
-    bordercolor (COLOR_BORDER);
-    bgcolor (COLOR_BACKGROUND);
+    (void) bordercolor (COLOR_BORDER);
+    (void) bgcolor (COLOR_BACKGROUND);
     clrscr ();
     cursor (0);
 
     /* Build the frame layout of the screen */
-    textcolor (COLOR_FRAMELOW);
+    (void) textcolor (COLOR_FRAMELOW);
     DrawFrames ();
 
     /* Draw the prompt line */
@@ -1378,7 +1461,7 @@ static char GetKeyUpdate (void)
 
 
 /*****************************************************************************/
-/*                      Externally visible functions                        */
+/*                      Externally visible functions                        */
 /*****************************************************************************/
 
 
@@ -1392,15 +1475,15 @@ void DbgEntry (void)
 
     /* If this is the first call, setup the display */
     if (FirstTime) {
-       FirstTime = 0;
-
-       /* Draw the window, default active frame is ASM frame */
-       RedrawStatic (WIN_ASM);
-       InitAsm ();
-       InitReg ();
-       InitStack ();
-       InitCStack ();
-       UpdateDump ();
+       FirstTime = 0;
+
+       /* Draw the window, default active frame is ASM frame */
+       RedrawStatic (WIN_ASM);
+       InitAsm ();
+       InitReg ();
+       InitStack ();
+       InitCStack ();
+       UpdateDump ();
     }
 
     /* Only initialize variables here, don't do a display update. The actual
@@ -1415,24 +1498,24 @@ void DbgEntry (void)
     done = 0;
     while (!done) {
        c = Frames [ActiveFrame]->fd_func ();
-       switch (c) {
-
-           case '1':
-           case '2':
-           case '3':
-           case '4':
-           case '5':
-               ActivateFrame (c - '1', 0);
-               break;
+       switch (c) {
 
-           case '?':
+           case '1':
+           case '2':
+           case '3':
+           case '4':
+           case '5':
+               ActivateFrame (c - '1', 0);
+               break;
+
+           case '?':
 #ifdef CH_F1
                    case CH_F1:
 #endif
                        HelpHandler ();
                        break;
 
-           case 'u':
+           case 'u':
 #ifdef CH_F3
                    case CH_F3:
 #endif
@@ -1441,7 +1524,7 @@ void DbgEntry (void)
                done = 1;
                break;
 
-           case 'h':
+           case 'h':
 #ifdef CH_F4
            case CH_F4:
 #endif
@@ -1463,7 +1546,7 @@ void DbgEntry (void)
                }
                break;
 
-           case '\n':
+           case '\n':
 #ifdef CH_F8
            case CH_F8:
 #endif
@@ -1500,3 +1583,4 @@ void DbgEntry (void)
 }
 
 
+