;
; Автор:
; Дата создания:
; Дата последнего изменения:
;

;
;
; Программа, демонстрирующая перекодировку знакогенератора EGA
;
;

	dosseg
	.model	small

	.code
start:	mov	ax, @data
	mov	ds, ax
	mov	es, ax

	mov     ah, 9h			; вывод первого сообщения вместе с
        mov     dx, offset mess1	; перекодируемыми символами 'ABCDEF'
        int     21h

	mov	ah, 0h		        ; ожидание нажатия клавиши
	int	16h

        mov     ah, 11h		        ; функция работы со шрифтами
        mov     al, 0		        ; установить свой рисунок шрифта
        mov     bp, offset new_sym      ; его адрес
        mov     cx, 6		        ; число перекодируемых символов - 6
        mov     dx, 'A'		        ; начиная с символа 'A'
        mov     bl, 0		        ; в 0-й банк шрифтов
        mov     bh, 14		        ; шрифт 8*14
        int     10h		        ;

	mov	ah, 9		        ; вывод второго сообщения
	mov	dx, offset mess2
	int	21h
        mov     ah, 0		        ; ожидание нажатия клавиши
        int     16h

        mov     ah, 11h		        ; функция работы со шрифтами
        mov     al, 1		        ; восстановить кодировку 8*14 из BIOS.
				        ; (на самом деле русификатор
					; перехватывает этот вызов
					; и устанавливает свою кодировку -
				        ; русскую, так как в BIOS - английская)
	mov	bl, 0		        ; в банк 0
        int     10h		        ; 

	mov	ah, 9		        ; вывод последнего сообщения
	mov	dx, offset mess3
	int	21h

        mov     ax, 4c00h	        ; конец.
        int     21h

	.data
new_sym db      240     ; 11110000	; первый символ, описан подробно.
        db      192     ; 11000000
        db      160     ; 10100000
        db      144     ; 10010000
        db      8       ; 00001000
        db      4       ; 00000100
        db      2       ; 00000010
        db      1       ; 00000001
	db	0,0,0,0,0,0
					; остальные 5, менее подробно:
        db      240,192,160,144,9,5,3,15,0,0,0,0,0,0
        db      128,64,32,16,9,5,3,15,0,0,0,0,0,0
        db      255,129,129,129,129,129,129,129,129,129,129,129,129,255
        db      16,48,84,146,48,84,146,16,16,16,16,16,16,16
        db      16,16,16,16,146,84,48,146,84,48,146,84,48,16

mess1   db      13, 10, 13, 10
        db      "Кодируемые символы: A B C D E F", 13, 10
	db	"Сейчас работает стандартная кодировка символов", 13, 10
        db      "                         Нажмите любую клавишу", 13, 10, "$"
mess2	db	"Теперь работает модифицированная кодировка", 13, 10
        db      "                     Нажмите любую клавишу...", 13, 10, "$"
mess3	db	"Снова работает стандартная кодировка символов", 13, 10, "$"

        end     start
