From 78710b1c30e6731adfab7302608b79322d701f82 Mon Sep 17 00:00:00 2001 From: "Kirill Lipatov (Leency)" Date: Sat, 14 Sep 2013 10:29:55 +0000 Subject: [PATCH] console: example testcon.asm use macros git-svn-id: svn://kolibrios.org@3906 a494cfbc-eb01-0410-851d-a64ba20cac60 --- .../libraries/console/examples/testcon.asm | 84 ++++--------------- 1 file changed, 18 insertions(+), 66 deletions(-) diff --git a/programs/develop/libraries/console/examples/testcon.asm b/programs/develop/libraries/console/examples/testcon.asm index 4fe66eaddc..e868fadcee 100644 --- a/programs/develop/libraries/console/examples/testcon.asm +++ b/programs/develop/libraries/console/examples/testcon.asm @@ -8,62 +8,20 @@ use32 dd 0 dd 0 -REQ_DLL_VER = 2 -DLL_ENTRY = 1 +; useful includes +include '../../../../macros.inc' +purge mov,add,sub +include '../../../../proc32.inc' +include '../../../../dll.inc' start: ; First 3 steps are intended to load/init console DLL ; and are identical for all console programs ; load DLL - mov eax, 68 - mov ebx, 19 - mov ecx, dll_name - int 0x40 + stdcall dll.Load, @IMPORT test eax, eax - jz exit - -; initialize import - mov edx, eax - mov esi, myimport -import_loop: - lodsd - test eax, eax - jz import_done - push edx -import_find: - mov ebx, [edx] - test ebx, ebx - jz exit;import_not_found - push eax -@@: - mov cl, [eax] - cmp cl, [ebx] - jnz import_find_next - test cl, cl - jz import_found - inc eax - inc ebx - jmp @b -import_find_next: - pop eax - add edx, 8 - jmp import_find -import_found: - pop eax - mov eax, [edx+4] - mov [esi-4], eax - pop edx - jmp import_loop -import_done: - -; check version - cmp word [dll_ver], REQ_DLL_VER - jb exit - cmp word [dll_ver+2], REQ_DLL_VER - ja exit - push DLL_ENTRY - call [dll_start] + jnz exit ; yes! Now do some work (say helloworld in this case). push caption @@ -80,27 +38,21 @@ exit: or eax, -1 int 0x40 -dll_name db '/sys/lib/console.obj',0 -caption db 'Console test',0 -aHelloWorld db 'Hello, World!',10,0 +caption db 'Console test',0 +aHelloWorld db 'Hello, World!',10,0 align 4 -myimport: -dll_start dd aStart -dll_ver dd aVersion -con_init dd aConInit -con_write_asciiz dd aConWriteAsciiz -con_exit dd aConExit - dd 0 - -aStart db 'START',0 -aVersion db 'version',0 -aConInit db 'con_init',0 -aConWriteAsciiz db 'con_write_asciiz',0 -aConExit db 'con_exit',0 - +@IMPORT: +library console, 'console.obj' +import console, \ + con_start, 'START', \ + con_init, 'con_init', \ + con_write_asciiz, 'con_write_asciiz', \ + con_exit, 'con_exit', \ + con_gets, 'con_gets' i_end: + align 4 rb 2048 ; stack mem: