#39; для негативного числа
out_trans: Bindec
; ------------ delay
mov ah, 0; Функція "читання" циклів таймера
int 1Ah; Отримуємо значення лічильника циклів у cx: dx
add dx, 9; Додаємо 5 сек. до молодшого слову в dx
mov bx, dx ; Запам'ятовуємо необхідне значення в bx і виконуємо
; постійну перевірку значень лічильника часу доби
repeat: int 1Ah ; Знову отримуємо значення лічильника
cmp dx, bx ; Порівнюємо з шуканим
jne repeat
ret
endp delay
Процедура очікування (заглушка) Waiting, що реалізує в нескінченному циклі висновок на екран
; обертового курсору. Виробляється фільтрація натискання клавіш:
; Резидентом - комбінація Alt-A - наказ на виконання процедуру обчислення,
; Програмою trans_m - клавіша Esc - вихід з процедури Waiting.
Proc Waiting
push ds
pop es; es = ds (сегмент даних транзитної програми)
window 0,3 Bh, 24,0,24,7922,0 _str mainmes, mainlen, 03Ah
; Отримаємо позицію курсору, використовуючи функцію 03h переривання int 10h
; Виведення на екран спрайта анімації (обертовий курсор) шляхом безпосереднього программиро-
; ованія пам'яті. Перетворимо координати курсора з системи "рядок - стовпчик" в номер пікселя
; (реєстр. ах) на екрані монітора
; Набудуємо пару es: di на адресу виведення
push es
mov ax, 0B800h
mov es, ax
mov di, 24 * 160
mov si, 0 ; Індекс зчитування елементів Sprite
; Висновок в циклі поточного символу рядка sprite
@ @ loop: mov dh, 34h ; червоний по синьому
mov dl, [sprite + si] ; черговий символ
mov [es: di], dx ; висновок на екран
inc si
and si, 03h ; Цикл виведення включає всі елементи Sprite
mov bp, 2
call delay ; Тимчасова затримка
; Перевірка буфера клавіатури без очікування (функція 01h, int 16h) на...