;#*************** ;#* BNC.MAIN() ;#*************** cTxt equ 0x10000000 cTxtW equ 0x10FFFFFF macro main_loop { draw_window: redraw_begin ;------------------------------ ;--- MainWindow mcall 0,100*65536+250,100*65536+250,0x02FFFFFF ,0x808899AA ,0xFFAAcc ;--- MainWindow TitleBar mcall 4,8*65536+8,0x00224422,header,20 ;--- Button - Close MainWindow mcall 8,230*65536+12, 5*65536+12, 100 ,0xFF6611 ;--- Button - "New" ... mcall 8,190*65536+50,25*65536+15, 200 ,0xAA66CC mcall 4,205*65536+30,cTxtW,new,3 ;--- Button - "Turn" ... ;mcall 8,190*65536+50,50*65536+15, 150 ,0x116611 ;-----------------------------1234-secret-number---show ; mcall 4, 50*65536+30,cTxt ,nA,4 ;-----------------------------9-lines- call paint_list redraw_end ;============================= event_wait: mcall 23,100 ;------------------------------------------------------------------------------- ; event in eax - and what will happen ;------------------------------------------------------------------------------- EventIs EV_REDRAW,draw_window ; redraw window EventIs EV_KEY,key ; pressed key EventIs EV_BUTTON,button ; one clicks button jmp event_wait ; returns at point of waiting for ;------------------------------------------------------------------------------- ; Events handler ;------------------------------------------------------------------------------- key: ; mov eax,2 ; key code in ah. int 0x40 ; cmp ah,27 ; ESC? je close ; exit on ESC call input ; input 0-9,Enter,<_BackSpace jmp draw_window ; event_wait ; button: ; mov eax,17 ; button ID in ah int 0x40 ; ;------------------------------------------------------------------------------- ; Buttons handler ;------------------------------------------------------------------------------- cmp ah,100 ; id=100("Close window")? jne noclose ; close: ; mov eax,-1 ; CLOSE all int 0x40 ; noclose: ; cmp ah,150 ; id=150 "Turn" je @F call rnew ; id=200 "New" ->nA call clears jmp draw_window ;event_wait @@: call paint_list jmp event_wait ; }