use32 ; включить 32-битный режим ассемблера org 0 ; адресация с нуля db 'MENUET01' ; 8-байтный идентификатор MenuetOS dd 1 ; версия заголовка (1 либо 2, см. док-ю) dd START ; адрес первой команды dd I_END ; размер программы dd MEM ; количество памяти dd STACKTOP ; адрес вершины стэка dd DEF_CMDLINE ; адрес буфера для параметров dd 0 ; под адрес на путь к файлу include "macros.inc" ; display_d -emul ; display_d START: mcall 68, 11 ; parse cmdline cmp dword[DEF_CMDLINE], '-emu' je start_emul ; start demon for input in serial port jmp exit start_emul: ; init shared buffer mcall 68, 22, SHARED_NAME, 16*2, 8+1 test edx, edx jnz exit test eax, eax jz exit mov [buff_ptr], eax mcall 40, 101b ; btn + readraw .win_draw: mcall 12, 1 mcall 48, 4 mov ecx, eax add ecx, 16*2+20 mcall 0, 16*8+2*15, , 0x330f0f0f, 0, title; mcall 12, 2 .loop: call draw_info mcall 23, 100 ; 1s test eax, eax jz .loop dec eax ; rdrw jz .win_draw cmp eax, 3-1 ; btn jne .loop mcall 17 cmp eax, 1 je .loop exit: mcall -1 draw_info: mov edx, [buff_ptr] mov ebx, (10 shl 16) + 10 mcall 4, , 0x5000FFFF, , 16, 0x000000FF add edx, 16 add ebx, 16 mcall 4, , ;0x5000FFFF, , 16, 0x000000FF ret title: db 3, 'Эмулятор ' SHARED_NAME: db 'DISPLAY_16_2_D',0 buff_ptr: dd ? align 16 I_END: DEF_CMDLINE: rb 256 align 16 rb 1024; one page STACKTOP: align 16 MEM: