
=========================================================================================
1.                                tscreen.cpp:
=========================================================================================

******  室
ushort near TScreen::screenMode = 0;
#else
******  
ushort near TScreen::screenMode = 0;
extern "C" void DetectVideoType();
extern "C" void SetVideoMode (short Mode);
extern "C" unsigned char GetCrtMode();
#else
******

******  室
{
  REGS r;
  r.w.ax = 0x1130;
  r.h.bh = 0x0;
  r.h.dl = 0x0;
  int386(0x10,&r,&r);
  if( r.h.dl == 0 ) r.h.dl = 24;
  return r.h.dl + 1;
}
******  
{
//  REGS r;
//  r.w.ax = 0x1130;
//  r.h.bh = 0x0;
//  r.h.dl = 0x0;
//  int386(0x10,&r,&r);
//  if( r.h.dl == 0 ) r.h.dl = 24;
//  return r.h.dl + 1;
    return (*(unsigned char *)(0x0484)+1);
}
******

******  室
{
  REGS r;
  r.h.ah = 0x0F;
  int386(0x10,&r,&r);
  return r.h.ah;
}
******  
{
//  REGS r;
//  r.h.ah = 0x0F;
//  int386(0x10,&r,&r);
//  return r.h.ah;
    return (*(unsigned char *)(0x044A));
}
******

******  室
#endif
  if ( startupMode == 0xFFFF ) {
    startupMode = getCrtMode();
    startupCursor = getCursorType();
******  
#endif
  ::DetectVideoType();
  if ( startupMode == 0xFFFF )
  {
    startupMode = ::GetCrtMode();
    ::SetVideoMode(0xA4); //SetCrtData();
    startupCursor = getCursorType();
******

******  室
{
    if( startupMode != screenMode )
        setVideoMode( startupMode );
    clearScreen();
    setCursorType( startupCursor );
}
******  
{
// if( startupMode != screenMode ) setVideoMode( startupMode );
 ::SetVideoMode(startupMode); //SetCrtData();
 clearScreen();
 setCursorType( startupCursor );
}
******

=========================================================================================
2.                                TMOUSE.CPP
=========================================================================================

******  室

#ifdef __DOS16__
******  

void ShowTextCursor(short x,short y);
void HideTextCursor();
unsigned char OldAttr= 0x00;
short OldMouseX, OldMouseY;
Boolean VisiblCur=True;
Boolean NextCur=False;

#ifdef __DOS16__
******

******  室

void TV_CDECL THWMouse::show() {
  if ( present() ) {
    union REGS r;
    r.w.ax = 1;
    int386(0x33,&r,&r);
  }
}
******  

void TV_CDECL THWMouse::show()
{
 union REGS r;
 if ( present() )
 {
  if(VisiblCur) return;
  VisiblCur=True;
  r.w.ax = 3; int386(0x33,&r,&r);
  ShowTextCursor(r.w.cx>>3,r.w.dx>>3);
//  r.w.ax = 1;
//  int386(0x33,&r,&r);
 }
}
******

******  室

void TV_CDECL THWMouse::hide() {
  if ( buttonCount != 0 ) {
    union REGS r;
    r.w.ax = 2;
    int386(0x33,&r,&r);
  }
}
******  

void TV_CDECL THWMouse::hide()
{
 VisiblCur=False;

 if( buttonCount != 0 )
 {
  VisiblCur=False;
  HideTextCursor();
//  union REGS r;
//  r.w.ax = 2;
//  int386(0x33,&r,&r);
 }
}
******

******  室

TMouse::TMouse()
{
    show();
}
******  

TMouse::TMouse()  {  show();  }

TMouse::~TMouse() {  hide();  }

void ShowTextCursor(short x,short y)
{
 if(!VisiblCur) return;
 if(NextCur) *(unsigned char *)(0xB8000+OldMouseX*2+OldMouseY*TScreen::screenWidth*2+1)=OldAttr;
 OldAttr = *(unsigned char *)(0xB8000+x*2+y*TScreen::screenWidth*2+1);
 *(unsigned char *)(0xB8000+x*2+y*TScreen::screenWidth*2+1) = OldAttr^0x7F;
 OldMouseX = x; OldMouseY = y; NextCur=True;
}
******

******  室

TMouse::~TMouse()
{
    hide();
}
******  

void HideTextCursor()
{
 if(NextCur)
 {
  *(unsigned char *)(0xB8000+OldMouseX*2+OldMouseY*TScreen::screenWidth*2+1)=OldAttr;
  NextCur=False;
 }
}
******

=========================================================================================
2.                                TEVENT.CPP
=========================================================================================
******  室
const unsigned char scGreyEnterKey      = 0xE0;

******  
const unsigned char scGreyEnterKey      = 0xE0;
const unsigned char scAltBackKey        = 0x0E;

******

******  室
#ifdef __DOS32__
void _loadds _far mouseInt(int flag,int buttons,int x,int y)
{
    MouseEventType tempMouse;

    tempMouse.buttons = buttons;
    tempMouse.doubleClick = False;
    tempMouse.where.x = x >> 3;
    tempMouse.where.y = y >> 3;

    if( (flag & 0x1e) != 0 && TEventQueue::eventCount < eventQSize )
        {
        TEventQueue::eventQTail->what = getTicks();
        TEventQueue::eventQTail->mouse.buttons     = TEventQueue::curMouse.buttons    ;
        TEventQueue::eventQTail->mouse.doubleClick = TEventQueue::curMouse.doubleClick;
        TEventQueue::eventQTail->mouse.where.x     = TEventQueue::curMouse.where.x    ;
        TEventQueue::eventQTail->mouse.where.y     = TEventQueue::curMouse.where.y    ;
        if( ++TEventQueue::eventQTail >= TEventQueue::eventQueue + eventQSize )
            TEventQueue::eventQTail = TEventQueue::eventQueue;
        TEventQueue::eventCount++;
        }

    TEventQueue::curMouse.buttons     = tempMouse.buttons    ;
    TEventQueue::curMouse.doubleClick = tempMouse.doubleClick;
    TEventQueue::curMouse.where.x     = tempMouse.where.x    ;
    TEventQueue::curMouse.where.y     = tempMouse.where.y    ;
    TEventQueue::mouseIntFlag = True;
}
******  
#ifdef __DOS32__
#pragma off (check_stack)
void _loadds _far mouseInt(int flag,int buttons,int x,int y)
{
 MouseEventType tempMouse;
 int x_o,y_o;

 tempMouse.buttons = buttons;
 tempMouse.doubleClick = False;
 tempMouse.where.x = x >> 3;
 tempMouse.where.y = y >> 3;

 if( (flag & 0x1e) != 0 && TEventQueue::eventCount < eventQSize )
 {
  TEventQueue::eventQTail->what = getTicks();
  TEventQueue::eventQTail->mouse.buttons     = TEventQueue::curMouse.buttons    ;
  TEventQueue::eventQTail->mouse.doubleClick = TEventQueue::curMouse.doubleClick;
  TEventQueue::eventQTail->mouse.where.x     = TEventQueue::curMouse.where.x    ;
  TEventQueue::eventQTail->mouse.where.y     = TEventQueue::curMouse.where.y    ;
  if( ++TEventQueue::eventQTail >= TEventQueue::eventQueue + eventQSize )
   TEventQueue::eventQTail = TEventQueue::eventQueue;
  TEventQueue::eventCount++;
 }
 TEventQueue::curMouse.buttons     = tempMouse.buttons    ;
 TEventQueue::curMouse.doubleClick = tempMouse.doubleClick;
 TEventQueue::curMouse.where.x     = tempMouse.where.x    ;
 TEventQueue::curMouse.where.y     = tempMouse.where.y    ;
 TEventQueue::mouseIntFlag = True;

 if(flag&0x01 && !(x_o==x&&y_o==y)) ShowTextCursor(x>>3,y>>3);
 x_o=x; y_o=y;
}
******

******  室
        break;
    }
  }
******  
        break;
      case scAltBackKey:
        if ( getShiftState() & kbCtrlShift ) keyDown.keyCode = kbAltBack;
        break;
    }
//   printf("keyCode=%04X\n",keyDown.keyCode);
  }
******

******  室
  { kbAltSpace  , VK_SPACE  },
  { kbAltEqual  , VK_ADD    },
******  
  { kbAltSpace  , VK_SPACE  },
  { kbAltBack   , VK_BACK   },
  { kbAltEqual  , VK_ADD    },
******

=========================================================================================
2.                                TMEMO.CPP
=========================================================================================
******  室
{
    if( event.what != evKeyDown || event.keyDown.keyCode != kbTab )
        TEditor::handleEvent(event);
}
******  
{
 if( event.what == evKeyDown && event.keyDown.keyCode == kbTab ||
     event.what == evBroadcast && event.message.command == cmScrollBarChanged && !(state & sfFocused)) return;
 TEditor::handleEvent(event);
}
******
=========================================================================================
2.                                TCOLLECT.CPP
=========================================================================================
******  室
{
    if( index < 0 || index >= count )
        error(1,0);
    return items[index];
}
******  
{
    if( index < 0 || index >= count ) error(1,0);
    return items[index].item;
}
******

******  室
    count--;
    memmove( &items[index], &items[index+1], (count-index)*sizeof(void *) );
}
******  
    count--;
//    memmove( &items[index], &items[index+1], (count-index)*sizeof(void *) );
    memmove( &items[index], &items[index+1], (count-index)*sizeof(StrIt) );
}
******

******  室
{
    if( index < 0 )
        error(1,0);
    if( count == limit )
        setLimit(count + delta);

    memmove( &items[index+1], &items[index], (count-index)*sizeof(void *) );
    count++;
******  
{
    if( index < 0 ) error(1,0);
    if( count == limit ) setLimit(count + delta);

//    memmove( &items[index+1], &items[index], (count-index)*sizeof(void *) );
    memmove( &items[index+1], &items[index], (count-index)*sizeof(StrIt) );
    count++;
******

******  室

    items[index] = item;
}
******  

    items[index].item = item;
}
******

******  室
{
    if( index >= count )
        error(1,0);

    items[index] = item;
}
******  
{
    if( index >= count ) error(1,0);
    items[index].item = item;
}
******

******  室
{
    for( ccIndex i = 0; i < count; i++ )
        {
        if( Test( items[i], arg ) == True )
            return items[i];
        }
    return 0;
}
******  
{
 for( ccIndex i = 0; i < count; i++ )
  if( Test(items[i].item, arg ) == True ) return items[i].item;
 return 0;
}
******

******  室
{
    for( ccIndex i = count; i > 0; i-- )
        {
        if( Test( items[i-1], arg ) == True )
            return items[i-1];
        }
    return 0;
}
******  
{
 for( ccIndex i = count; i > 0; i-- )
  if( Test( items[i-1].item, arg ) == True ) return items[i-1].item;
 return 0;
}
******

******  室
{
    for( ccIndex i = 0; i < count; i++ )
        action( items[i], arg );
}
******  
{
 for( ccIndex i = 0; i < count; i++ ) action( items[i].item, arg );
}
******

******  室
{
    for( ccIndex i =  0; i < count; i++ )
        freeItem( at(i) );
    count = 0;
}
******  
{
 for( ccIndex i = 0; i < count; i++ ) {items[i].opt=0; freeItem( at(i) );}
 count = 0;
}
******

******  室
{
    for( ccIndex i = 0; i < count; i++ )
        if( item == items[i] )
            return i;

    error(1,0);
    return 0;
}
******  
{
 for( ccIndex i = 0; i < count; i++ ) if( item == items[i].item ) return i;
 error(1,0);
 return 0;
}
******

******  室
{
    if( aLimit < count )
        aLimit =  count;
    if( aLimit > maxCollectionSize)
        aLimit = maxCollectionSize;
    if( aLimit != limit )
        {
        void **aItems;
        if (aLimit == 0 )
            aItems = 0;
        else
            {
            aItems = new void *[aLimit];
            if(!aItems) return; // BF:TNSCollection-2
            if( count !=  0 )
                memcpy( aItems, items, count*sizeof(void *) );
            }
        delete items;
        items =  aItems;
        limit =  aLimit;
        }
}
******  
{
 if( aLimit < count ) aLimit =  count;
 if( aLimit > maxCollectionSize) aLimit = maxCollectionSize;
 if( aLimit != limit )
 {
  StrIt *aItems;
  if (aLimit == 0 ) aItems = 0;
  else
  {
   aItems = (StrIt *)calloc(sizeof(StrIt),aLimit);
//   aItems = new StrIt[aLimit];
   if(!aItems) return; // BF:TNSCollection-2
   if( count !=  0 ) memcpy( aItems, items, count*sizeof(StrIt) );
  }
  delete items;
  items =  aItems;
  limit =  aLimit;
 }
}
******

******  室
{
    os << count << limit << delta;
    for( ccIndex idx = 0; idx < count; idx++ )
        writeItem( items[idx], os );
}
******  
{
 os << count << limit << delta;
 for( ccIndex idx = 0; idx < count; idx++ ) writeItem( items[idx].item, os );
}
******

******  室
{
    int limit;
    is >> count >> limit >> delta;
    limit = 0;
    setLimit(limit);
    for( ccIndex idx = 0; idx < count; idx++ )
        items[idx] = readItem( is );
    return this;
}
******  
{
 int limit;
 is >> count >> limit >> delta;
 limit = 0;
 setLimit(limit);
 for( ccIndex idx = 0; idx < count; idx++ ) items[idx].item = readItem( is );
 return this;
}
******
=========================================================================================
2.                                TSORTCOL.CPP
=========================================================================================
******  室
{
    ccIndex  i;

    if( search( keyOf(item), i ) == 0 )
        return ccNotFound;
    else
        {
        if( duplicates )
            {
            while( i < count && item != items[i] )
                i++;
            }
        if( i < count )
            return i;
        else
            return ccNotFound;
        }
}
******  
{
 ccIndex  i;

 if( search( keyOf(item), i ) == 0 ) return ccNotFound;
 else
 {
  if( duplicates ) while( i < count && item != items[i].item ) i++;
  if( i < count ) return i;
  else  return ccNotFound;
 }
}
******

******  室
{
    ccIndex l = 0;
    ccIndex h = count - 1;
    Boolean res = False;
    while( l <= h )
        {
        ccIndex i = (l +  h) >> 1;
        ccIndex c = compare( keyOf( items[i] ), key );
        if( c < 0 )
            l = i + 1;
        else
            {
            h = i - 1;
            if( c == 0 )
                {
                res = True;
                if( !duplicates )
                    l = i;
                }
            }
        }
    index = l;
    return res;
}
******  
{
 ccIndex l = 0;
 ccIndex h = count - 1;
 Boolean res = False;
 while( l <= h )
 {
  ccIndex i = (l +  h) >> 1;
  ccIndex c = compare( keyOf( items[i].item ), key );
  if( c < 0 ) l = i + 1;
  else
  {
   h = i - 1;
   if( c == 0 )
   {
    res = True;
    if( !duplicates ) l = i;
   }
  }
 }
 index = l;
 return res;
}
******
=========================================================================================
2.                                TLISTBOX.CPP
=========================================================================================
******  室

void TListBox::newList( TCollection *aList )
{
    destroy( items );
    items = aList;
    if( aList != 0 )
        setRange( aList->getCount() );
    else
        setRange(0);
    if( range > 0 )
        focusItem(0);
    drawView();
}
******  

void TListBox::chList( TCollection *aList )
{
    items = aList;
    if( aList != 0 )
        setRange( aList->getCount() );
    else
        setRange(0);
    if( range > 0 )
        focusItem(0);
    drawView();
}

void TListBox::newList( TCollection *aList )
{
    destroy( items );
    items = aList;
    if( aList != 0 )
        setRange( aList->getCount() );
    else
        setRange(0);
    if( range > 0 )
        focusItem(0);
    drawView();
}
******

=========================================================================================
2.                                DRIVERS2.CPP
=========================================================================================
******  室

int cstrlen( const char *s )
******  

char *buf_ch=NULL;

int cstrlen( const char *s )
******

******  室
******  

// Buferr chenges
void put_buf(char *str)
{
 if(buf_ch!=NULL) delete buf_ch;
 buf_ch=(char *)new char[strlen(str)+1];
 strcpy(buf_ch,str);
}
char *get_buf()
{
 return(buf_ch);
}
******


=========================================================================================
2.                                TCLUSTER.CPP
=========================================================================================
******  室
            press(sel);
            drawView();
******  
            press(sel);
            message(owner,evBroadcast,cmClusterChenge,this); // Clicked
            drawView();
******

******  室
                        press(sel);
                        drawView();
******  
                        press(sel);
                        message(owner,evBroadcast,cmClusterChenge,this); // Clicked
                        drawView();
******

******  室
                    press(sel);
                    drawView();
******  
                    press(sel);
                    message(owner,evBroadcast,cmClusterChenge,this); // Clicked
                    drawView();
******

=========================================================================================
2.                                MSGBOX.CPP
=========================================================================================
******  室

ushort messageBoxRect( const TRect &r,
                       ushort aOptions,
                       const char *fmt,
                       ... )
{
******  

ushort cdecl messageBoxRect( const TRect &r, ushort aOptions, const char *fmt, ... )
{
******

******  室

    char msg[4096];
    vsnprintf( msg, sizeof(msg), fmt, argptr );
    va_end( argptr );
******  

    char msg[4048];
    vsprintf(msg, fmt, argptr);
    va_end( argptr );
******

******  室

ushort messageBox( ushort aOptions, const char *fmt, ... )
{
    va_list argptr;
    va_start( argptr, fmt );

    char msg[4096];
    vsnprintf( msg, sizeof(msg), fmt, argptr );
    va_end( argptr );

    return messageBoxRect( makeRect(), msg, aOptions );
}
******  

ushort cdecl messageBox( ushort aOptions, const char *fmt, ... )
{
 va_list argptr;
 va_start (argptr,fmt);

 char msg[4048];
 vsprintf(msg, fmt, argptr);
 va_end(argptr);

 return messageBox( msg, aOptions );
}
******

=========================================================================================
2.                                COLORSEL.CPP
=========================================================================================
******  室
{
    options |= ofSelectable | ofFirstClick | ofFramed;
    eventMask |= evBroadcast;
******  
{
    options |= ofFramed;
    eventMask |= evBroadcast;
******

=========================================================================================
2.                                TKEYS.H
=========================================================================================
******  室
#else
    kbAltSpace  = 0x0200,   kbCtrlIns   = 0x0400,
    kbShiftIns  = 0x0500,   kbCtrlDel   = 0x0600,   kbShiftDel  = 0x0700,
******  
#else
    kbAltSpace  = 0x0200,   kbCtrlIns   = 0x0400,   kbAltBack   = 0x0800,
    kbShiftIns  = 0x0500,   kbCtrlDel   = 0x0600,   kbShiftDel  = 0x0700,
******
=========================================================================================
2.                                TVOBJS.H
=========================================================================================
******  室

class TObject
******  

struct StrIt
{
 char opt;
 void *item;
};


class TObject
******

******  室

    ccIndex getCount()
******  

    void SetOptItem(int item,char opt){if(item<count) items[item].opt=opt;}
    char GetOptItem(int item){return(items[item].opt);}

    ccIndex getCount()
******

******  室
    TNSCollection();

    void **items;
    ccIndex count;
******  
    TNSCollection();
    StrIt *items;
//    void **items;
    ccIndex count;
******

=========================================================================================
2.                                DIALOGS.H
=========================================================================================

******  室
    virtual void getText( char *dest, int item, int maxLen );
    virtual void newList( TCollection *aList );
******  
    virtual void getText( char *dest, int item, int maxLen );
    virtual void chList( TCollection *aList );
    virtual void newList( TCollection *aList );
******
=========================================================================================
2.                                UTIL.H
=========================================================================================
******  室


******  

void put_buf(char *str);
char *get_buf();

******
=========================================================================================
2.                                VIEWS.H
=========================================================================================

******  室

//  Event masks
******  

//  TCluster messages
    cmClusterChenge     = 57,

//  Bufer messages
    cmGetBuf            = 58,
    cmPutBuf            = 59,

//  Event masks
******
=========================================================================================
2.                                MSGBOX.H
=========================================================================================
******  室
ushort messageBox( const char *msg, ushort aOptions );
ushort messageBox( ushort aOptions, const char *msg, ... );

******  
ushort messageBox( const char *msg, ushort aOptions );
ushort cdecl messageBox( ushort aOptions, const char *msg, ... );

******

******  室
ushort messageBoxRect( const TRect &r, const char *msg, ushort aOptions );
ushort messageBoxRect( const TRect &r, ushort aOptions, const char *msg, ... );

******  
ushort messageBoxRect( const TRect &r, const char *msg, ushort aOptions );
ushort cdecl messageBoxRect( const TRect &r, ushort aOptions, const char *msg, ... );

******
