ify"> pop es
pop ds
popa
call inmem; Встановлено старого обробника переривань
cli; Заборона переривань
call play; Відтворення музики
sti; Дозвіл переривань
call release; Звільнення пам'яті
iret; Вихід з обробника:; Перехід сюди якщо час не співпало
mov al, 20h
out 20h, al
pop es
pop ds
popa
iret
int_7h:; Переривання використовується для завершення
pusha; у разі якщо програма завантажена в
push es; резедентную пам'ять викликається з
push ds; знову завантаженої програми
call inmem
call release
pop ds
pop es
popa
iret:; Початок програми, до поточного місця програм
push cs; залишиться резидентної
pop ds
mov ax, 351Ch; Отримуємо старий вектор переривання 1Ch
int 21h
cmp bx, offset int1Ch
jne @ ne
mov ah, 9
lea dx, Message1; Повідомлення про те що програма вже завантажена
int 21h_a:
mov ah, 8
int 21h
cmp al, 'y'
je unl
cmp al, 'Y'
je unl
cmp al, 'n'
je st_p
cmp al, 'N'
je st_p
jmp lp_a:
int 7h
lea dx, Message3
mov ah, 9
int 21h_p:
mov ah, 4Ch
int 21h
@ ne:
mov oldintoff, bx
mov oldintseg, es
mov ax, 3507h; Отримуємо і зберігаємо старий вектор переривання 07h
int 21h
mov oldintoff7, bx
mov oldintseg7, es
mov ah, 3Dh; Відкрити файл
mov al, 0
lea dx, filename
int 21h
mov bx, ax; Читати всі з файлу
mov ah, 3Fh
mov cx, 100
mov dx, offset timeinfo; Вміст файлу в timeinfo
int 21h