Система защиты от несанкционированного копирования

2. Так как программы комплекса отмеряют величины задержек, используя встроенный интервальный таймер, он должен быть запрограммирован стандартным образом.

Фрагменты программ.

Фрагменты программ комплекса, реализующие работу с НГМД на физическом уровне.

1. Макросы, облегчающие работу с процедурами нижнего уровня, непосредственно осуществляющими управление НГМД. (Файл ngmd. mac.) ;

Передача байта в контроллер НГМД out_ngmd MACRO byte LOCAL @Ok mov AH, byte call OutFDC jnc @Ok FatalError @Ok: ENDM ;

Приём байта из контроллера НГМД in_ngmd MACRO Mem LOCAL @Ok push AX call InFDC jnc @Ok jmp @ErrFatal @Ok: IFNB <Mem> mov Mem, AL ENDIF pop AX ENDM ;

Ожидание прерывания от контроллера НГМД WaitInt MACRO LOCAL @Ok call _WaitInt jnc @Ok FatalError @Ok: ENDM ;

Критическая ошибка FatalError MACRO jmp @ErrFatal ENDM ;

Позиционирование головки дисковода ;

Вход: ;

D — номер накопителя ;

HDS — номер головки ;

NCN — номер дорожки ngmdSeek MACRO D, HDS, NCN LOCAL @Ok mov DL, D mov DH, HDS mov CH, NCN shl DH, 2 or DL, DH call _ngmdSeek jnc @Ok FatalError @Ok: ENDM ;

Чтение сектора ;

D — номер дисковода ;

HDS — номер головки (стороны) ;

NCN — номер дорожки ;

R — номер сектора;

Buf — буфер ngmdRead MACRO D, HDS, NCN, R, Buf mov DL, D mov DH, HDS mov CH, NCN mov CL, R mov AX, DS mov ES, AX lea DI, Buf call _ngmdRead ENDM ;

Запись сектора ;

D — номер дисковода ;

HDS — номер головки (стороны) ;

NCN — номер дорожки ;

R — номер сектора;

Buf — буфер ngmdWrite MACRO D, HDS, NCN, R, Buf mov DL, D mov DH, HDS mov CH, NCN mov CL, R mov AX, DS mov ES, AX lea DI, Buf call _ngmdWrite ENDM

2. Фрагмент модуля Frozen, демонстрирующий форматирование дорожки. (Файл frozen. asm.) ;

Переменная для хранения старого вектора 8h Old_8h dd 0 ;

Переменная для организации задержекRtCounter dw 0 ;

Собственный обработчик прерывания 8h (Timer); для организации задержекInt_8h PROC push AX cmp CS: RtCounter, 0 je New08IRet dec CS: RtCounter New08IRet: ;

Стандартные действия по корректировке времени push DS mov AX, 40h ;