/* Hi! CMOS killer!
   Ну очень смешная проблемка...
   А вот простенькая програмка, которая показывае пароль.
   
*/

#pragma inline
#include <dos.h>

char     code;
static char     password[7];

char dcode (char symbol)
{
asm     {
  xor  bl,bl
  mov     al,symbol
  }
cont:
asm     {
  test    al,0x80
  jz  _c1
  test al,0x61
  jnp  _c2
  stc
  }
_c2:
asm     {
  rcl      al,1
  jmp  _check
  }
_c1:
asm   {
  test al,0x61
  jp  _c3
  stc
  }
_c3:
asm   rcl  al,1
_check:
asm   {
  inc  bl
  cmp  al,code
  jne  cont
  }
return _BL;
}

char read_byte(char address)
{
outportb(0x70,address);
return inportb(0x71);
}

void main(void)
{
register     i,j;
char b,b1;
int puts(char*);

code = read_byte(0x37) & 0xF0;

for (i = 0;i<=5;i++)
  {
  b1=read_byte(0x38+i);
  if (!b1) break;
  password[i]=dcode(b1);
  code = b1;
  }
puts(password);
}
