From de447bcec4b86a24df150665533c748116868520 Mon Sep 17 00:00:00 2001 From: Yogev Ezra <pr@kolibrios.org> Date: Thu, 9 May 2013 18:49:02 +0000 Subject: [PATCH] Add some more sources from MENUET32 git-svn-id: svn://kolibrios.org@3497 a494cfbc-eb01-0410-851d-a64ba20cac60 --- .../develop/cmd/trunk/examples/AUTOEXEC.CMD | 5 + .../develop/cmd/trunk/examples/EXAMPLE.CMD | 35 ++ programs/develop/cmd/trunk/examples/HELLO.ASM | 70 ++++ programs/develop/cmd/trunk/examples/PARAM.ASM | 55 +++ programs/media/paint/trunk/PAINT.ASM | 365 ++++++++++++++++++ programs/system/mm/trunk/MM.asm | 276 +++++++++++++ 6 files changed, 806 insertions(+) create mode 100644 programs/develop/cmd/trunk/examples/AUTOEXEC.CMD create mode 100644 programs/develop/cmd/trunk/examples/EXAMPLE.CMD create mode 100644 programs/develop/cmd/trunk/examples/HELLO.ASM create mode 100644 programs/develop/cmd/trunk/examples/PARAM.ASM create mode 100644 programs/media/paint/trunk/PAINT.ASM create mode 100644 programs/system/mm/trunk/MM.asm diff --git a/programs/develop/cmd/trunk/examples/AUTOEXEC.CMD b/programs/develop/cmd/trunk/examples/AUTOEXEC.CMD new file mode 100644 index 0000000000..b00dc39ce4 --- /dev/null +++ b/programs/develop/cmd/trunk/examples/AUTOEXEC.CMD @@ -0,0 +1,5 @@ +ver +echo Type 'help' for help. Type '/example' for additional information (RUS) +echo +ends + diff --git a/programs/develop/cmd/trunk/examples/EXAMPLE.CMD b/programs/develop/cmd/trunk/examples/EXAMPLE.CMD new file mode 100644 index 0000000000..4ce0d85bbe --- /dev/null +++ b/programs/develop/cmd/trunk/examples/EXAMPLE.CMD @@ -0,0 +1,35 @@ +cls +echo +echo �� ���⥩訩 �ਬ�� �ᯮ��塞��� �ਯ� ��� �������� ��������� +echo ��ப� CMD ���ᨨ 0.24 +echo �ᯮ���� ������� echo � pause ��� �뢮�� ⥪�� � ���������� +echo ����������⢨� � ���짮��⥫��. +echo � �裡 � �������筮� ��ࠡ�⪮� �������� � ��堭���� �ᯮ������ +echo �ਯ⮢ ����⥫쭮 ᮧ������ �ਯ�� ⮫쪮 � TINYPAD'e � �� �������� 㦥 +echo ��࠭�� �� ࠬ��� 䠩�, ���⮬ �� ��⠢���� �� ������ ���㦭�� +echo ᨬ����� (���ਬ��, ����). +echo +echo �ਬ�� �믮������ ���⥩襩 �ࠪ��� ����� � ������� �ᯮ��塞�� +echo �ਯ⮢: +echo +echo ������ ���� ������� ��� ⮣�, �⮡� ᮧ���� ������� ����� 䠩�� CMD.ASM +pause +cp cmd.asm+cmd.bak +echo +echo ������ ������ ���� ������� ��� ⮣�, �⮡� �뢥�� ��� ⮫쪮 �� +echo ᮧ������� 䠩�� �� ��࠭ � 㤮�⮢������ � ��� ������⢨� �� /RD/1 +pause +ls cmd.bak +echo +echo ������ ������ ���� ������� ��� ⮣�, �⮡� 㤠���� ⮫쪮 �� ᮧ����� +echo 䠩� CMD.BAK � ࠬ��᪠. +pause +del cmd.bak +echo +echo �� �맮�� ������� PAUSE �� ����� ������ ������� ESCAPE, �⮡� ��ࢠ�� +echo ࠡ��� �ਯ�. �믮������ ���譨� ������ � ������ ���ᨨ 㦥 ॠ��������. +echo �ᯮ�짮����� ᨬ���� '/' � �ਯ�� �� ॠ��������. � ������ ���ᨨ +echo �������� �ਯ�� ४��������� �������� �������� ends. +echo ���� ����������. +echo +ends \ No newline at end of file diff --git a/programs/develop/cmd/trunk/examples/HELLO.ASM b/programs/develop/cmd/trunk/examples/HELLO.ASM new file mode 100644 index 0000000000..8799c6ad80 --- /dev/null +++ b/programs/develop/cmd/trunk/examples/HELLO.ASM @@ -0,0 +1,70 @@ +; Hello, World! - Programm example for CMD shell +; Compile with FASM for Menuet +; +; You must run this program from CMD shell only +; + +use32 + + org 0x0 + + db 'MENUET01' + dd 0x01 + dd START + dd I_END + dd 0x100000 + dd 0x7fff0 + dd 0x0 + dd 0x0 + +include "CMDIPC.INC" ; ��������� 䠩� CMDIPC.INC + +START: + call initipc ; ���樠������� ��� ࠡ��� � CMD + + mov eax,26 ; ����� ��ப� + mov ebx,hello_text ; �����⥫� �� ��ப� + call print ; �뢥�� ��ப� + +again: + call getkey ; ������� ������ ������ � ����� �� � key + + cmp byte [key],'Y' ; ��� �ணࠬ�� �����, ����� �� �㦭. ������ + je goodday + cmp byte [key],'y' + je goodday + cmp byte [key],'N' + je goodmorning + cmp byte [key],'n' + je goodmorning + + jmp again ; � �㦭. ������ �� �����, � ����� ������� + ; ������ +goodday: ; �뢥�� �ਢ���⢨� Good Day, World! + call eol ; �ய����� ��ப� + + mov eax,16 + mov ebx,text4 + call print + + call eol ; �ய����� ��ப� + + jmp endipc ; �������� �ணࠬ�� + +goodmorning: ; �뢥�� �ਢ���⢨� Good Morning, World! + call eol + + mov eax,20 + mov ebx,text5 + call print + + call eol + + jmp endipc ; �������� �ணࠬ�� + +hello_text db 'Is it after 12 noon? [Y\N]?' + +text4 db 'Good day, World!' +text5 db 'Good morning, World!' + +I_END: diff --git a/programs/develop/cmd/trunk/examples/PARAM.ASM b/programs/develop/cmd/trunk/examples/PARAM.ASM new file mode 100644 index 0000000000..9e716f6fed --- /dev/null +++ b/programs/develop/cmd/trunk/examples/PARAM.ASM @@ -0,0 +1,55 @@ +use32 + + org 0x0 + + db 'MENUET01' + dd 0x01 + dd START + dd I_END + dd 0x100000 + dd 0x7fff0 + dd I_PARAM ; 㪠��⥫� �� ��ࠬ���� + +include "CMDIPC.INC" ; ��������� 䠩� CMDIPC.INC + +START: + call initipc ; ���樠������� ��� ࠡ��� � CMD + + mov eax,47 ; �뢥�� ᮮ�饭�� + mov ebx,mess + call print + + call eol ; �ய����� ��ப� + call eol + + cmp [I_PARAM],byte 0 ; �����, ���� �� ��ࠬ���� + jz noparam + + mov eax,43 + mov ebx,mess1 + call print + + call eol + + mov eax,30 ; �뢥�� ��ࠬ���� + mov ebx,I_PARAM + call print + + jmp end1 ; ���室 � ����� �ணࠬ�� + +noparam: + mov eax,40 ; �뢥�� ᮮ�饭�� � ⮬, �� ��� ��ࠬ�� + mov ebx,mess2 + call print + +end1: + jmp endipc ; �������� �ணࠬ�� + +mess db 'PARAM.ASM - Test params in IPC programs for CMD' + +mess1 db 'This program was started with this params: ' +mess2 db 'This program was started without params!' + +I_PARAM db 0 + +I_END: \ No newline at end of file diff --git a/programs/media/paint/trunk/PAINT.ASM b/programs/media/paint/trunk/PAINT.ASM new file mode 100644 index 0000000000..c088f7f0bb --- /dev/null +++ b/programs/media/paint/trunk/PAINT.ASM @@ -0,0 +1,365 @@ +;********************************* +;* * +;* PAINT 0.02 ��� MenuetOS * +;* * +;* ���������� FASM'�� * +;* * +;********************************* + +;****************************************************************************** +; ��� �ணࠬ�� �� �㦭� ��쥧�� ��ᬠ�ਢ��� - �� �ᥣ� ���� �ਬ��, +; � ��� ��������, ��� ࠡ���� � ������묨 ��⥬�묨 �㭪�ﬨ ����, +; �� ����� �� ��ଠ��� ����᪨� ।����. ��� �ணࠬ�� ����� ���⮩, +; � ��� �।�����祭� ��� ��, �� ⮫쪮 ��稭��� ������ ��ᥬ����, +; ���⮬� � ��६���� ᤥ���� ��� ��� ����� ����� ������. +; ��� �� �����, ��� �����쭮 ������ ��⨬�����, ��� �� ������� +; ����� ����㤭��� ��� ���������. � ����ࠫ�� ��⥫쭮 �ப��������� +; ��� ����. ����, ���� �ணࠬ�� �ਭ������� �� ���, � Sniper'�, ��� +; ���ண� ���饬-� �� � ��ᠫ���. +; ���� � ���祭�� �ᬠ! +; ���� ����㡭�, ivan-yar@bk.ru +;****************************************************************************** + +; ������砥� ����室��� ������ +include 'macros.inc' + +;****************************************************************************** + +; ������ ��������� +meos_app_start +; ������� ���� +code + mov eax,40 ; ᮮ�騬 ��⥬�, ����� ᮡ��� �㤥� ��ࠡ��뢠�� + mov ebx,0100101b ; ��᪠ ᮡ�⨩ - ����ᮢ�� (1) + ������ (3) + ���� (6 + int 0x40 ; �� ������� ��뢠�� ��⥬��� �㭪�� + + mov [workarea.cx],10 ; ���न���� ࠡ�祩 (�������) ������ + mov [workarea.cy],45 ; ��� �ᮢ���� + +red: + call draw_window ; ��뢠�� ��楤��� ���ᮢ�� ���� + +still: ; ������� ���� ��������� - ���� ��������� ��������� + + mov eax,10 ; �㭪�� 10 - ����� ᮡ���; �ணࠬ�� ��⠭���������� �� + int 0x40 ; ����� ������� �� �㤥� �믮����� �� �� ���, ���� + ; �� �ந������ ᮡ�⨥ + + ; ⥯��� ॣ���� eax ᮤ�ন� ����� ᮡ��� + ; ����।�� �ࠢ��� ��� � �ᥬ� �������묨 ���祭�ﬨ, �⮡� �맢��� + ; �㦭� ��ࠡ��稪 + + cmp eax,1 ; ����ᮢ��� ���� ? + je red ; � ॣ���� eax ࠢ�� ������, � ���室�� �� ���� red + cmp eax,3 ; ����� ������ ? + je button + cmp eax,6 ; ����? + je mouse + + jmp still ; � �ந��諮 ᮡ�⨥, ��� �� �� ��ࠡ��뢠��, + ; ���� �����頥��� � ��砫� 横��, ��� ⠪��� ���� + ; �� ������! �.�. � ��� ������� ��� ����, � + ; ��祣� ���譮�� �� ������. + +;****************************************************************************** + + button: ; ��ࠡ��稪 ������ ������ � ���� �ணࠬ�� + mov eax,17 ; �㭪�� N17 - ������� �����䨪��� ����⮩ ������ + int 0x40 + + ; ⥯��� � ॣ���� ah ᮤ�ন��� �����䨪���. + + shr eax,8 ; ah -> al (ᤢ�� �� 8 ��� ��ࠢ�) + + dec al ; �����䨪���_������--; + jnz .noclose ; � १���� �।��饩 ������� ࠢ�� ���, ����뢠���� + ; ���� - ��� �� ���� noclose + + or eax,-1 ; ��室 �� �ணࠬ�� + int 0x40 + + .noclose: + ; � �� � ������, ����� �����䨪��� ������ �� �� ࠢ�� ���... + ; ⥯��� � ��� � eax ᮤ�ন��� (����� 梥⭮� ������ - 1), + ; �.� ��� 1, ��� 2, ... ,��� 5 + + ; 㬥��訬 �� 1: + dec eax + + ; ��� �� ��� ������� ��������� � eax ������� �� �� ����� colors+eax*4 + ; ��� colors - ᬥ饭�� ��⪨ colors, �� ���ன ���� ������⥫쭮��� + ; 梥⮢, eax*4 - ����� 梥�, 㬭������ �� 4, �.�. �� ���� 梥� �㦭� + ; ���� ����. + mov eax,[colors+eax*4] + + ; ⥯��� �� ��⠭���� 梥�, ᮤ�ঠ騩�� � ॣ���� eax ��� �᭮����: + mov [active_color],eax + + ; �� ���, ᮡ�⢥���, � ���, �� �� ��� �ॡ������� ;) + ; ������ � ��砫� 横�� ��ࠡ�⪨ ᮡ�⨩ + jmp still + +;****************************************************************************** + + mouse: ; ��ࠡ��稪 ��� + mov eax,37 ; ᭠砫� ����稬 ⥪�騥 ���न���� ��� + mov ebx,1 + int 0x40 + + mov ebx,eax ; �८�ࠧ㥬 �� + shr eax,16 ; eax=x; + and ebx,0xffff ; ebx=y; + + cmp ebx,22 + jb save_canvas + + sub eax,[workarea.cx] ; x-=[workarea.cx] + cmp eax,0 ; � ���� ����� ������� ������, + jle .not_pressed ; ��祣� �� ��㥬 + cmp eax,[workarea.sx] ; � ���� �ࠢ��... + jae .not_pressed + + sub ebx,[workarea.cy] + cmp ebx,0 ; ...���... + jle .not_pressed + cmp ebx,[workarea.sy] ; ...����... + jae .not_pressed + + ; ����� ������ ������? + mov eax,37 + mov ebx,2 + int 0x40 + + ; � ����� ������ (�.�. eax = 1), � ����� ����� + cmp eax,1 + je .leftbtn + + .not_pressed: + ; ����� ������ �� �����, �������� ⥪�騥 ���न���� � �㤥� ����� ᮡ��� + mov [mouse_pressed],0 ; ���� �� ����� + mov eax,37 ; ����稬 ���न���� + mov ebx,1 + int 0x40 + mov ebx,eax + shr eax,16 + and ebx,0xffff + mov [old_x],eax ; �������� �� + mov [old_y],ebx + jmp still + + .leftbtn: + ; ����� ������ �����, ���� �� �������! + mov [mouse_pressed],1 + + ; ����稬 ���न���� ����� ��� (�⭮�⥫쭮 ����) + mov eax,37 ; �㭪�� 37 - ������� ���ﭨ� ��� + mov ebx,1 ; ����㭪�� 1 + int 0x40 + + ; ��।����� �� ⠪, �⮡� ��� �뫨 � ࠧ��� ॣ�����, �.�. eax � ebx + mov ebx,eax + shr eax,16 + and ebx,0xffff + + ; �����⮢�� ��ࠬ���� ��� �㭪樨 �ᮢ���� ����� + mov ecx,[old_x] ; ��� ��砫� ����㧨� ���� ���न���� + mov edx,[old_y] + mov [old_x],eax ; ⥯��� ��࠭�� ⥪�騥 � ���� + mov [old_y],ebx + shl ecx,16 ; � ���孥� �� ��砫�� (⥪�騥) ���न���� + shl edx,16 + add eax,ecx ; � � ������ �� ������, �.�. ���� + add ebx,edx + + mov ecx,ebx ; �����塞 ॣ����� ⠪, ��� ��� �㦭� 38 �㭪樨 + mov ebx,eax + mov eax,38 ; ����� �㭪樨 � eax + mov edx,[active_color] ; � edx 梥� + int 0x40 + +; - ����� ���⠢��� ��㣨� ���祭�� (00090001) + mov edi,0x00010001 ; �⮡� ����� �� �뫠 誮� ⮭���, + add ebx,edi ; ����㥬 �冷� �� 3! + int 0x40 + add ecx,edi + int 0x40 + sub ebx,edi + int 0x40 + + sub ebx,edi ; �� � �⮡� ᬮ�५��� ᮢᥬ ����, + int 0x40 ; ����㥬 �� 5! + sub ecx,edi + int 0x40 + sub ecx,edi + int 0x40 + add ebx,edi + int 0x40 + add ebx,edi + int 0x40 + + jmp still + +;****************************************************************************** + +save_canvas: + mov eax,[process.x_size] + add eax,[workarea.cx] + mov ebx,[process.y_size] + add ebx,[workarea.cy] + + jmp still + +;****************************************************************************** + +; ********************************************* +; ******* ����������� � ��������� ���� ******* +; ********************************************* + +draw_window: + + mov eax,48 ; ���������� ��������� ����� + mov ebx,3 + mov ecx,sc + mov edx,sizeof.system_colors + int 0x40 + + mov eax,12 ; �㭪�� 12: ᮮ���� �� �� ���ᮢ�� ���� + mov ebx,1 ; 1, ��稭��� �ᮢ��� + int 0x40 + + ; ������� ���� + mov eax,0 ; �㭪�� 0 : ��।����� � ���ᮢ��� ���� + mov ebx,100*65536+400 ; [x ����] *65536 + [x ࠧ���] + mov ecx,100*65536+300 ; [y ����] *65536 + [y ࠧ���] + mov edx,[sc.work] ; 梥� ࠡ�祩 ������ RRGGBB,8->color gl + or edx,0x02000000 + mov esi,[sc.grab] ; 梥� ������ ��������� RRGGBB,8->color gl + or esi,0x80000000 + mov edi,[sc.frame] ; 梥� ࠬ�� RRGGBB + int 0x40 + + mov eax,9 ; ����稬 ���ଠ�� � ᥡ� + mov ebx,process + mov ecx,-1 + int 0x40 + + mov eax,[process.x_size] ; ����ந� ࠧ��� ࠡ�祩 ������ + add eax,-20 ; (� ࠧ��� ���� - 20) + mov [workarea.sx],eax ; + mov eax,[process.y_size] ; + add eax,-60 ; (� ࠧ��� - 60) + mov [workarea.sy],eax ; + + ; ��������� ���� + mov eax,4 ; �㭪�� 4 : ������� � ���� ⥪�� + mov ebx,8*65536+8 ; [x] *65536 + [y] + mov ecx,[sc.grab_text] ; 梥� + or ecx,0x10000000 ; ���� + mov edx,header ; ���� ��ப� + mov esi,header_len ; � �� ����� + int 0x40 + + ; ������ �������� ���� + mov eax,8 ; �㭪�� 8 : ��।����� � ���ᮢ��� ������ +; mov ebx,(300-19)*65536+12 ; [x ����] *65536 + [x ࠧ���] + mov ebx,[process.x_size] + add ebx,-19 + shl ebx,16 + add ebx,12 + mov ecx,5*65536+12 ; [y ����] *65536 + [y ࠧ���] + mov edx,1 ; �����䨪��� ������ + mov esi,[sc.grab_button] ; 梥� ������ RRGGBB + int 0x40 + + cmp [process.y_size],80 + jb .finish + + ; ᮧ��� ������ �롮� 梥�: + mov ebx,10*65536+10 ; ��砫쭠� x ���न��� � ࠧ��� + mov ecx,27*65536+10 ; ��砫쭠� y ���न��� & size + .new_button: + inc edx ; �����䨪���++; + mov esi,[btn_colors-8+edx*4] ; 梥� ������ + int 0x40 ; �⠢�� ������ + add ebx,12*65536 ; ����� ������ �ࠢ�� �� 12 + cmp edx,9 ; �ࠢ������ edx (�����䨪���) � 9 + jbe .new_button ; � ����� ��� ࠢ�� -> ��� ���� ����� + + mov eax,13 ; ��⨬ "宫��" - ��������� ������� + mov ebx,[workarea.cx] + mov ecx,[workarea.cy] + shl ebx,16 + shl ecx,16 + add ebx,[workarea.sx] + add ecx,[workarea.sy] + mov edx,0xffffff + int 0x40 + + .finish: + mov eax,12 ; ᮮ�頥� ��⥬� � �����襭�� ���ᮢ�� ���� + mov ebx,2 + int 0x40 + + ret + +;****************************************************************************** +; ��砫� ������ ���樠��������� ������ +; � �� ��� �� �����, �� ����� "���樠��������", � ������: +; �� � �����, ����� ����� ��砫쭮� ���祭�� +data + +header: ; ��ப� ��������� + db 'PAINT v0.2 for MenuetOS' +header_len = $ - header ; � �� ����� + + mouse_pressed db 0 ; �����뢠��, ����� �� �뫠 ���� � �।��騩 ������ + +; 梥� ������ +btn_colors: + dd 0xdddddd ; white + dd 0x444444 ; black + dd 0x00dd00 ; green + dd 0x0000dd ; blue + dd 0xdd0000 ; red + dd 0xdd00dd ; magenta + dd 0xdddd00 ; yellow + dd 0x00dddd ; cyan + dd 0x559955 ; warm green + +; 梥� ���� (� ⮬ �� ���浪�, �� � 梥� ������) +colors: + dd 0xffffff ; ���� + dd 0x000000 ; ��� + dd 0x00ff00 ; ������ + dd 0x0000ff ; ᨭ�� + dd 0xff0000 ; ���� + dd 0xff00ff ; ������ + dd 0xffff00 ; ����� + dd 0x00ffff ; ���㡮� + dd 0x77bb77 ; ⥯�� ������ + +;****************************************************************************** +; � ��� ��� ��稭����� ������� �����樠��������� ������, �.�. +; ����� ����� ���祭�� �� �����. � �⫨稥 �� ����., �� 㢥��稢��� ࠧ��� +; 䠩�� + +udata + + active_color dd ? ; ��⨢�� 梥� + + old_x dd ? ; ���� ���न���� ��� + old_y dd ? + + workarea: ; ���न���� � ࠧ���� ������� ������ + .cx dd ? ; c - ��������� + .cy dd ? + .sx dd ? ; s - ࠧ���� + .sy dd ? + + sc system_colors ; ��⥬�� 梥� + process process_information ; ���ଠ�� � ����� + + restflag dd ? + canvas rb 800*600*3 + +meos_app_end diff --git a/programs/system/mm/trunk/MM.asm b/programs/system/mm/trunk/MM.asm new file mode 100644 index 0000000000..ca35763e26 --- /dev/null +++ b/programs/system/mm/trunk/MM.asm @@ -0,0 +1,276 @@ +; Programa Mostra memoria +; Projeto: Clovis Bombardelli e Felipe Gustavo Bombardelli +; Usar Fasm Assembler +; Dez/2007 + + +; Infos: +; keys: w - add 0x200 to current memory address +; s - sub 0x200 +; e - add 0x10 +; d - sub 0x10 +; + +use32 + + org 0x0 + +STACK_SIZE=1024 + + db 'MENUET01' ; 8 byte id + dd 0x01 ; header version + dd START ; start of code + dd I_END ; size of image + dd I_END+STACK_SIZE ; memory for app + dd I_END+STACK_SIZE ; esp + dd 0x0 , 0x0 ; I_Param , I_Icon + + + + + +START: + + +main: + + call monta_quadro + +.a: mov eax, 11 ; espera por evento + int 0x40 ; 0= -> redraw + or al,al + jz .h + cmp al, 2 ; 1= -> REDRAW + jb main ; 2= -> tecla pressionada + jz .c ; 3= -> bot�o pressionado + +; bot�o + mov eax,17 ; + int 0x40 ; OBSERVA��ES + cmp ah,1 ; se o bot�o apertado for fechar, minimizar, maximizar...todos devem ser do sistema + jnz .b ; mover...etc + or eax,-1 ; saida do aplicativo **************************deve ser do sistema + int 0x40 ; nunca do aplicativo + +.b: jmp .a ; loop para novo evento + + +; tecla +.c: mov eax,2 ; getkey + int 0x40 + ;cmp al, 1 + ;jnz .a + cmp ah, 'w' + jne .a1 + add [end_base], 0x200 + jmp main ; +.a1: cmp ah, 's' + jne .a2 + cmp [end_base], dword 0x80000000 + jbe .a2 + sub [end_base], 0x200 + jmp main ; +.a2: cmp ah, 'e' + jne .a3 + add [end_base], 0x10 + jmp main ; +.a3: cmp ah, 'd' + jne .b1 + cmp [end_base], dword 0x80000000 + jbe .b1 + sub [end_base], 0x10 +.b1: jmp main + + +; atualiza apenas o codigo hex / ascii +.h: + call hex_loop +; inc [contador] ; usado apenas para testar a dinamica + jmp .a ; retorna para buscar novo evento + + +monta_quadro: + + ; posi��o inicial, subfun��o 1 + + mov eax,12 + mov ebx,1 + int 0x40 + + ; Desenha o quadro + + mov eax,0 ; fun��o 0 : define e monta o quadro + mov ebx,100*65536+480 ; [x pos] *65536 + [x lar] + mov ecx,100*65536+440 ; [y pos] *65536 + [y alt] + mov edx,[cor_janela] ; cor area RRGGBB + mov edi,titulo ; Titulo + int 0x40 + + ; escreve texto no quadro (barra superior) + + mov edi,[cor_janela] + mov eax,4 + mov ecx, [cor_texto] + mov ebx,8*65536+8 + mov edx,teste + int 0x40 + + add ebx,11 ; adiciona espa�o na coord y + + mov eax,4 + mov ecx, [cor_texto] + mov edx,barra1 + int 0x40 + + call hex_loop + + ; posi��o final, subfun��o 2 + +.d: mov eax,12 + mov ebx,2 + int 0x40 + + ret + + ; buscar conteudo da memoria para mostrar + +hex_loop: + xor eax, eax + mov ebx, [end_base] ; endere�o base + + ; imprime o endere�o + + mov edx, 8*65536+40 ; posi��o inicial hex + mov [pos_ascii], edx + add [pos_ascii], 360*65536 ; posi��o inicial ascii + mov word [pos_x], 0 + mov al, [quant_linhas] + mov edi,[cor_janela] + +.c: push eax ; + push edx ; + + push ebx ; salva endere�o base + mov al, 47 + mov ecx, ebx ; imprime o endere�o + mov ebx, 0x00080100 + mov esi, [cor_endereco] + int 0x40 + pop ebx ; + + add edx, 60*65536 ; pula 8 espa�os mais alguma coisa + + ; busca hexcode + + mov esi, [cor_hexcode] + mov al, 4 + +.b: push eax ; ----------------------------------------------------------ok + + mov al, 72 ; ebx= endere�o de leitura (nao funcionou...) change this service to another + int 0x40 ; retorna ecx= dword da posi��o ebx + + push ebx ; ----------------------------------------------------------ok + mov ebx, 0x00020100 ; 2 digitos, modo hex + mov al, 4 + +.a: push eax ; controle -------------------------------------------------ok + push ecx ; codigo + push edx ; posi��o + and ecx, 0xff + mov al, 47 + int 0x40 + call imprime_car$ + pop edx ; + pop ecx ; + shr ecx, 8 + add edx, (18)*65536 + pop eax ; ----------------------------------------------------------ok + dec al + jnz .a + + pop ebx ; ----------------------------------------------------------ok + add ebx, 4 ; soma 4 ao endere�o base + pop eax ; ----------------------------------------------------------ok + dec al ; imprimir mais 4 vezes incrementando ebx em 4 + jnz .b + + pop edx ; + add edx, 10 ; + + ; imprime a string ascii + + push ebx + push edx + mov al, 4 + mov ebx, [pos_ascii] ; endere�o na tela + mov edx, ascii_string ; endere�o da string + or ecx, [cor_ascii] ; cor + int 0x40 + mov [ascii_x], byte 0 + add [pos_ascii], 10 + pop edx + pop ebx + + pop eax ; + dec al + jnz .c + ret + +imprime_car$: ; ecx tem o caractere a imprimir + + push ebx + xor ebx, ebx + mov bl, [ascii_x] + or cl, cl + jnz .c + mov cl, 0x20 +.c: mov [ebx+ascii_string], cl + inc [ascii_x] + pop ebx + ret + + +; para acessar a memoria do sistema: +; +; acessar a base das tabelas de pagina�ao +; com o endere�o buscar o descritor de pagina +; ler o endere�o f�sico ndo descritor +; ou buscar a pagina do sistema e ler nele o endere�o fisico + +; DATA AREA +align 0x10 +;contador dd 0 ; para testar a dinamica +cor_janela dd 0x346f72c3 ; atrib, tipo, corRGB +cor_texto dd 0xc0fffffe ; fonte variavel, cor branca +cor_endereco dd 0xc0fffffc +cor_hexcode dd 0xc0fffffd +cor_ascii dd 0xc0fffffa +pos_x db 0 +pos_y db 0 +quant_linhas db 0x20 +ascii_x db 0 +end_base dd 0x80000000 ; ok +pos_ascii dd 0 +ascii_string rb 0x11 +reservado rb 3 + + +titulo db 'Mostra a memoria do sistema operacional',0 + +teste db '-------- ------------------ Hex Code ------------------- -- A S C I I --',0 +barra1 db 'Address: 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 0123456789abcdef',0 + + +align 0x10 +I_END: + + +; service 72 from system calls +; +; must contain: +; mov eax, [eax] +; mov [esp+32], eax +; ret + +