home *** CD-ROM | disk | FTP | other *** search
- /*****************************************************************************
- * $Id: d2debug.c,v 1.3 1993/01/17 10:46:59 ak Exp $
- *****************************************************************************
- * $Log: d2debug.c,v $
- * Revision 1.3 1993/01/17 10:46:59 ak
- * *** empty log message ***
- *
- * Revision 1.2 1992/10/14 16:48:54 ak
- * _fmemcpy as macro
- *
- * Revision 1.1 1992/07/24 11:33:10 ak
- * Initial revision
- *
- * Revision 1.2 1992/01/06 20:09:26 ak
- * *** empty log message ***
- *
- * Revision 1.1.1.1 1992/01/06 19:54:09 ak
- * Alpha version.
- *
- * Revision 1.1 1992/01/06 19:54:07 ak
- * Initial revision
- *
- *****************************************************************************/
-
- #include "dd.h"
- #define INCL_DOS
- #include <os2.h>
- #include <string.h>
- #ifdef __ZTC__
- # define _fmemcpy(d,s,n) movedata(Segment(s), Offset(s), Segment(d), Offset(d), n)
- #else
- # include <memory.h>
- #endif
-
- #define DefaultAddress 0x0B8000L
- #define NCols 80
- #define NRows 25
- #define Attrib 0x0700
-
- static int row, col;
- dword video_address;
-
- void _cdecl
- _STI_d2debug()
- {
- if (video_address == 0)
- video_address = DefaultAddress;
- row = col = 0;
- }
-
- void
- put2c(byte c)
- {
- if (c == '\t') {
- do put2c(' '); while (col & 7);
- } else {
- word _far *scr = PhysToVirt(video_address, NRows * NCols * 2);
- if (scr) {
- if (c == '\n' || col == 80) {
- col = 0;
- row += 1;
- }
- if (row == NRows) {
- int i;
- _fmemmove(scr, scr + NCols, (NRows - 1) * NCols * 2);
- for (i = 0; i < NCols; ++i)
- scr[(NRows - 1) * NCols + i] = ' ' + Attrib;
- row = NRows - 1;
- }
- if (c != '\n')
- scr[row * NCols + col++] = c | Attrib;
- UnPhysToVirt();
- }
- }
- }
-
- void
- put2s(char _far *s)
- {
- while (*s)
- put2c(*s++);
- }
-
- void
- put2x(dword x)
- {
- int i = 32 - 4;
- for (; i != 0; i -= 4)
- if (x >= 1L << i)
- break;
- for (; i >= 0; i -= 4)
- put2c("0123456789ABCDEF"[x >> i & 0x0F]);
- }
-
- void
- put2d(long x)
- {
- if (x == -0x80000000L) {
- put2s("-2147483648");
- return;
- }
- if (x < 0) {
- put2c('-');
- x = -x;
- }
- if (x >= 10) {
- put2d(x / 10);
- x %= 10;
- }
- put2c("0123456789"[x]);
- }
-