clock_device.PAS

{* Текущее время *}

Unit CLOCK_DEVICE;
Interface
Implementation
Begin
 writeln('Вот еще один интересный способ узнать текущее время. Я думаю, не все об этом знают. Не используется _ни_один_ unit, не вызываются прерывания DOS/BIOS "дать время". Просто читаем время из файла, который называется "CLOCK$" - это стандартный драйвер устройства "часы" для DOS. BTW, тем же способом можно поставить время, записав его туда.');
End.

Program clock_device;

Uses clock_device.pas; {* Эту строку можно удалить *}
{ (w) by Sergey Top                                 }
{ CLOCK$ is a character device which handles device requests To input And   }
{ output exactly 6 bytes. An input request should return 6 bytes indicating }
{ the current time / date And an output request should accept 6 bytes To Set  }
{ the clock / calendar. The format
For CLOCK$ I / O is :                         }

  Type {* Создание новых типов данных *}
    clock = Record      date : word; { days since Jan 1, 1980         }
  min : byte; { current minute (0 - 59)          }
  hrs : byte; { current hour (0 - 24)            }
  hun : byte; { current 1 / 100 Of second (0 - 99) }
  sec : byte; { current second (0 - 59)          }
  End;
Var {* Объявление переменных *}
  f : File Of byte;
  c : clock;
  Begin
  Assign(f, 'CLOCK$'); {* Подключение к файлу 'CLOCK$' через переменную f *}
  Reset(f); {* Открытие файла для чтения *}
  read(f, byte(c.date));
  Close(f); {* Закрытие файла *}
  writeln('Current time is ', c.hrs : 2, ':', c.min : 2, ':', c.sec : 2);
  End......