rem: KPrintF( "IO at %04lx, length %02lx.",
add: KPrintF( "IO at 0x%04lx, length 0x%02lx.",
context: ShowResource( struct ISAPNP_Resource* resource,              struct ISAPNPBase*      res ){  switch( resource->m_Type )  {    case ISAPNP_NT_IRQ_RESOURCE:    {      struct ISAPNP_IRQResource* r = (struct ISAPNP_IRQResource*) resource;      int                        b;            KPrintF( "IRQ" );            for( b = 0; b < 16; ++b )      {        if( r->m_IRQMask & ( 1 << b ) )        {          KPrintF( " %ld", b );        }      }            KPrintF( ", type" );            if( r->m_IRQType & ISAPNP_IRQRESOURCE_ITF_HIGH_EDGE )      {        KPrintF( " +E" );      }      if( r->m_IRQType & ISAPNP_IRQRESOURCE_ITF_LOW_EDGE )      {        KPrintF( " -E" );      }      if( r->m_IRQType & ISAPNP_IRQRESOURCE_ITF_HIGH_LEVEL )      {        KPrintF( " +L" );      }      if( r->m_IRQType & ISAPNP_IRQRESOURCE_ITF_LOW_LEVEL )      {        KPrintF( " -L" );      }            KPrintF( "\n" );      break;    }    case ISAPNP_NT_DMA_RESOURCE:    {      struct ISAPNP_DMAResource* r = (struct ISAPNP_DMAResource*) resource;      int                        b;            KPrintF( "DMA" );            for( b = 0; b < 8; ++b )      {        if( r->m_ChannelMask & ( 1 << b ) )        {          KPrintF( " %ld", b );        }      }      KPrintF( ", " );      switch( r->m_Flags & ISAPNP_DMARESOURCE_F_TRANSFER_MASK )      {        case ISAPNP_DMARESOURCE_F_TRANSFER_8BIT:          KPrintF( "8" );          break;        case ISAPNP_DMARESOURCE_F_TRANSFER_BOTH:          KPrintF( "8 and 16" );          break;                  case ISAPNP_DMARESOURCE_F_TRANSFER_16BIT:          KPrintF( "16" );          break;              }      KPrintF( " bit transfer, " );            switch( r->m_Flags & ISAPNP_DMARESOURCE_F_SPEED_MASK )      {        case ISAPNP_DMARESOURCE_F_SPEED_COMPATIBLE:          KPrintF( "compatible" );          break;        case ISAPNP_DMARESOURCE_F_SPEED_TYPE_A:          KPrintF( "type A" );          break;        case ISAPNP_DMARESOURCE_F_SPEED_TYPE_B:          KPrintF( "type B" );          break;        case ISAPNP_DMARESOURCE_F_SPEED_TYPE_F:               KPrintF( "type F" );          break;      }            KPrintF( " speed." );      if( r->m_Flags & ISAPNP_DMARESOURCE_FF_BUS_MASTER )      {        KPrintF( " [Bus master]" );      }      if( r->m_Flags & ISAPNP_DMARESOURCE_FF_BYTE_MODE )      {        KPrintF( " [Byte mode]" );      }      if( r->m_Flags & ISAPNP_DMARESOURCE_FF_WORD_MODE )      {        KPrintF( " [Word mode]" );      }      KPrintF( "\n" );      break;    }    case ISAPNP_NT_IO_RESOURCE:    {      struct ISAPNP_IOResource* r = (struct ISAPNP_IOResource*) resource;      if( r->m_MinBase == r->m_MaxBase )      {        KPrintF( "IO at %04lx, length %02lx.",                 r->m_MinBase, r->m_Length );      }      else      {        KPrintF( "IO between %04lx and %04lx, length %02lx, %ld byte aligned.",                 r->m_MinBase, r->m_MaxBase, r->m_Length, r->m_Alignment );      }                 if( ( r->m_Flags & ISAPNP_IORESOURCE_FF_FULL_DECODE ) == 0 )      {        KPrintF( " [10 bit decode only]" );      }      KPrintF( "\n" );      break;    }    case ISAPNP_NT_MEMORY_RESOURCE:      KPrintF( "Memory\n" );      break;    default:      KPrintF( "Unknown resource!" );      break;  }}