diff --git a/kernel/branches/Kolibri-A/trunk/boot/bootcode.inc b/kernel/branches/Kolibri-A/trunk/boot/bootcode.inc index d095fdc229..18d9740102 100644 --- a/kernel/branches/Kolibri-A/trunk/boot/bootcode.inc +++ b/kernel/branches/Kolibri-A/trunk/boot/bootcode.inc @@ -62,10 +62,6 @@ cfgmanager: ; mov [es:0x901C], al -; VRR_M USE - -; mov [es:0x9030], byte 2 - ; BOOT DEVICE xor ax, ax diff --git a/kernel/branches/Kolibri-A/trunk/bus/HT.inc b/kernel/branches/Kolibri-A/trunk/bus/HT.inc index f7a1194a8d..cdbb2049b4 100644 --- a/kernel/branches/Kolibri-A/trunk/bus/HT.inc +++ b/kernel/branches/Kolibri-A/trunk/bus/HT.inc @@ -145,7 +145,7 @@ rs7xx_pcie_init: ; (eax = phys. address of PCIe conf.space) ; map_pcie_pages: - or eax, (PG_NOCACHE + PG_SHARED + PG_LARGE + PG_UW) ; UW is unsafe, fix it! + or eax, (PG_NOCACHE + PG_SHARED + PG_LARGE + PG_UW) ; UW is unsafe! mov ecx, PCIe_CONFIG_SPACE ; linear address mov ebx, ecx shr ebx, 20 @@ -163,13 +163,9 @@ map_pcie_pages: add eax, 0x400000 ; +4M phys. add ecx, 0x400000 ; +4M lin. cmp dl, byte[mmio_pcie_cfg_pdes-OS_BASE] - jae .pcie_cfg_mapped + jae pcie_cfg_mapped inc dl jmp .write_pde -; mov eax, cr3 -; mov cr3, eax ; flush TLB -.pcie_cfg_mapped: - ret ; <<< OK >>> ; ---- stepping 10h CPUs and Fusion APUs: the configspace is stored in MSR_C001_0058 ---- align 4 @@ -196,7 +192,25 @@ fusion_pcie_init: add edx, eax ; the upper configspace limit mov dword[mmio_pcie_cfg_lim-OS_BASE], edx - jmp map_pcie_pages +pcie_cfg_mapped: + +create_mmio_pte: + + mov ecx, mmio_pte ; physical address + or ecx, (PG_NOCACHE + PG_SHARED) + mov ebx, FUSION_MMIO ; linear address + shr ebx, 20 + add ebx, (sys_pgdir - OS_BASE) ; PgDir entry @ + mov dword[ebx], ecx ; Fusion MMIO tables + +map_apic_mmio: + mov ecx, 0x01B ; APIC BAR + rdmsr + and eax, 0xFFFFF000 ; physical address + or eax, (PG_NOCACHE + PG_SHARED + PG_UW) ; UW is unsafe! + mov dword[mmio_pte + 0], eax + + ret ; <<< OK >>> ; ================================================================================ diff --git a/kernel/branches/Kolibri-A/trunk/const.inc b/kernel/branches/Kolibri-A/trunk/const.inc index 84186ed5cd..c50b36a20b 100644 --- a/kernel/branches/Kolibri-A/trunk/const.inc +++ b/kernel/branches/Kolibri-A/trunk/const.inc @@ -206,6 +206,8 @@ PUTPIXEL equ (OS_BASE+0x0006820) GETPIXEL equ (OS_BASE+0x0006824) mouseunder equ (OS_BASE+0x0006900) +IDE_DMA equ 0x0007000 + MOUSE_VISIBLE equ (OS_BASE+0x000F204) @@ -266,19 +268,18 @@ MOUSE_BACKGROUND equ (OS_BASE+0x000FFF4) DONT_DRAW_MOUSE equ (OS_BASE+0x000FFF5) DONT_SWITCH equ (OS_BASE+0x000FFFF) -TMP_STACK_TOP equ 0x006CC00 +FONT_II equ (OS_BASE+0x005DC00) +FONT_I equ (OS_BASE+0x005E600) -FONT_II equ (OS_BASE+0x006DC00) -FONT_I equ (OS_BASE+0x006E600) +TMP_STACK_TOP equ 0x006C000 +mmio_pte equ 0x006E000 sys_pgdir equ (OS_BASE+0x006F000) DRIVE_DATA equ (OS_BASE+0x0070000) SLOT_BASE equ (OS_BASE+0x0080000) -;unused -;TMP_BUFF equ (OS_BASE+0x0090000) ;VGABasePtr equ (OS_BASE+0x00A0000) @@ -286,25 +287,18 @@ RAMDISK equ (OS_BASE+0x0100000) RAMDISK_FAT equ (OS_BASE+0x0280000) CLEAN_ZONE equ 0x280000 -IDE_DMA equ 0x284000 -BgrAuxTable equ (OS_BASE+0x0298000) -; unused? -SB16Buffer equ (OS_BASE+0x02A0000) -SB16_Status equ (OS_BASE+0x02B0000) BUTTON_INFO equ (OS_BASE+0x02C0000) RESERVED_PORTS equ (OS_BASE+0x02D0000) IRQ_SAVE equ (OS_BASE+0x02E0000) -;BOOT_VAR equ (OS_BASE+0x02F0000) - stack_data_start equ (OS_BASE+0x0300000) eth_data_start equ (OS_BASE+0x0300000) stack_data equ (OS_BASE+0x0304000) stack_data_end equ (OS_BASE+0x031ffff) resendQ equ (OS_BASE+0x0320000) -;VMODE_BASE equ (OS_BASE+0x0328000) +BgrAuxTable equ (OS_BASE+0x0328000) skin_data equ (OS_BASE+0x0330000) draw_data equ (OS_BASE+0x0338000); @@ -327,6 +321,8 @@ HEAP_MIN_SIZE equ 0x02000000 PCIe_CONFIG_SPACE equ 0xF0000000 USER_DMA_BUFFER equ 0xFD000000 ; linear addr. USER_DMA_SIZE equ 0x00800000 +FUSION_MMIO equ 0xFD800000 +LAPIC_BAR equ 0xFD800000 ; == page_tabs equ 0xFDC00000 app_page_tabs equ 0xFDC00000 diff --git a/kernel/branches/Kolibri-A/trunk/core/sched.inc b/kernel/branches/Kolibri-A/trunk/core/sched.inc index d1549e87a2..0658cf5d25 100644 --- a/kernel/branches/Kolibri-A/trunk/core/sched.inc +++ b/kernel/branches/Kolibri-A/trunk/core/sched.inc @@ -20,7 +20,6 @@ irq0: mov es, ax inc [timer_ticks] mov eax, [timer_ticks] -; call playNote ; <<<--- Speaker driver sub eax,[next_usage_update] cmp eax,100 jb .nocounter diff --git a/kernel/branches/Kolibri-A/trunk/data32.inc b/kernel/branches/Kolibri-A/trunk/data32.inc index 29ee3cd19f..f28d242c60 100644 --- a/kernel/branches/Kolibri-A/trunk/data32.inc +++ b/kernel/branches/Kolibri-A/trunk/data32.inc @@ -105,7 +105,7 @@ char2 db '/sys/FONTS/CHAR2.MT',0 bootpath db '/KOLIBRI ' bootpath2 db 0 vmode db '/sys/drivers/VMODE.MDR',0 -vrr_m db 'VRR_M',0 +;vrr_m db 'VRR_M',0 kernel_file db 'KERNEL MNT' diff --git a/kernel/branches/Kolibri-A/trunk/detect/dev_fd.inc b/kernel/branches/Kolibri-A/trunk/detect/dev_fd.inc deleted file mode 100644 index 41bedcbdc2..0000000000 --- a/kernel/branches/Kolibri-A/trunk/detect/dev_fd.inc +++ /dev/null @@ -1,30 +0,0 @@ -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; ;; -;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;; -;; Distributed under terms of the GNU General Public License ;; -;; ;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -$Revision$ - - -;*************************************************** -; предварительная очистка области таблицы -; поиск и занесение в таблицу приводов FDD -; автор Mario79 -;*************************************************** - xor eax,eax - mov edi,DRIVE_DATA - mov ecx,16384 - cld - rep stosd - - mov al,0x10 - out 0x70,al - mov cx,0xff -wait_cmos: - dec cx - test cx,cx - jnz wait_cmos - in al,0x71 - mov [DRIVE_DATA],al diff --git a/kernel/branches/Kolibri-A/trunk/detect/dev_hdcd.inc b/kernel/branches/Kolibri-A/trunk/detect/dev_hdcd.inc index 64b9327f34..989677fd6e 100644 --- a/kernel/branches/Kolibri-A/trunk/detect/dev_hdcd.inc +++ b/kernel/branches/Kolibri-A/trunk/detect/dev_hdcd.inc @@ -21,25 +21,13 @@ FindHDD: mov [ChannelNumber],1 mov [DiskNumber],0 call FindHDD_3 -; mov ax,[Sector512+176] -; mov [DRIVE_DATA+6],ax -; mov ax,[Sector512+126] -; mov [DRIVE_DATA+8],ax -; mov ax,[Sector512+128] -; mov [DRIVE_DATA+8],ax mov [DiskNumber],1 call FindHDD_3 -; mov al,[Sector512+176] -; mov [DRIVE_DATA+7],al inc [ChannelNumber] mov [DiskNumber],0 call FindHDD_3 -; mov al,[Sector512+176] -; mov [DRIVE_DATA+8],al mov [DiskNumber],1 call FindHDD_1 -; mov al,[Sector512+176] -; mov [DRIVE_DATA+9],al jmp EndFindHDD @@ -57,9 +45,9 @@ FindHDD_1: call DeviceReset cmp [DevErrorCode],0 jne FindHDD_2_2 - call ReadCD_ID - cmp [DevErrorCode],0 - jne FindHDD_2_2 +; call ReadCD_ID +; cmp [DevErrorCode],0 +; jne FindHDD_2_2 inc byte [DRIVE_DATA+1] inc byte [DRIVE_DATA+1] FindHDD_2_2: @@ -111,8 +99,6 @@ ReadHDD_ID: test AL,08h ;состояние сигнала DRQ jz @@WaitCompleet ; Принять блок данных от контроллера -; mov AX,DS -; mov ES,AX mov EDI,Sector512 ;offset Sector512 mov DX,[ATABasePortAddr] ;регистр данных mov CX,256 ;число считываемых слов @@ -201,17 +187,10 @@ SendCommandToHDD: ; Ожидать, пока диск не будет готов inc DX mov ecx,0xfff -; mov eax,[timer_ticks] -; mov [TickCounter_1],eax @@WaitHDReady: ; Проверить время ожидани dec ecx -; cmp ecx,0 jz @@Err1 -; mov eax,[timer_ticks] -; sub eax,[TickCounter_1] -; cmp eax,300 ;ожидать 300 тиков -; ja @@Err1 ;ошибка тайм-аута ; Прочитать регистр состояни in AL,DX ; Проверить состояние сигнала BSY @@ -270,6 +249,7 @@ SendCommandToHDD: ; Завершение работы программы ret +if 0 ;************************************************* ;* ЧТЕНИЕ ИДЕНТИФИКАТОРА УСТРОЙСТВА ATAPI * ;* Входные параметры передаются через глобальные * @@ -299,7 +279,6 @@ ReadCD_ID: @@WaitCompleet_1: ; Проверить врем dec ecx -; cmp ecx,0 jz @@Error1_1 ;ошибка тайм-аута ; Проверить готовность in AL,DX @@ -310,8 +289,6 @@ ReadCD_ID: test AL,08h ;состояние сигнала DRQ jz @@WaitCompleet_1 ; Принять блок данных от контроллера -; mov AX,DS -; mov ES,AX mov EDI,Sector512 ;offset Sector512 mov DX,[ATABasePortAddr] ;порт 1x0h mov CX,256 ;число считываемых слов @@ -326,6 +303,8 @@ ReadCD_ID: @@End_1: ret +end if + ;************************************************* ;* СБРОС УСТРОЙСТВА * ;* Входные параметры передаются через глобальные * diff --git a/kernel/branches/Kolibri-A/trunk/detect/disks.inc b/kernel/branches/Kolibri-A/trunk/detect/disks.inc index aba4571cfb..be7c678238 100644 --- a/kernel/branches/Kolibri-A/trunk/detect/disks.inc +++ b/kernel/branches/Kolibri-A/trunk/detect/disks.inc @@ -8,7 +8,7 @@ $Revision$ -include 'dev_fd.inc' +;include 'dev_fd.inc' include 'dev_hdcd.inc' include 'getcache.inc' include 'sear_par.inc' diff --git a/kernel/branches/Kolibri-A/trunk/kernel.asm b/kernel/branches/Kolibri-A/trunk/kernel.asm index e1f51e729a..5a3e68c111 100644 --- a/kernel/branches/Kolibri-A/trunk/kernel.asm +++ b/kernel/branches/Kolibri-A/trunk/kernel.asm @@ -508,11 +508,11 @@ high_code: out 0xA1, al ; Enable interrupts in IDE controller - mov al, 0 - mov dx, 0x3F6 - out dx, al - mov dl, 0x76 - out dx, al +; mov al, 0 +; mov dx, 0x3F6 +; out dx, al +; mov dl, 0x76 +; out dx, al ;!!!!!!!!!!!!!!!!!!!!!!!!!! include 'detect/disks.inc' @@ -721,7 +721,8 @@ include 'detect/disks.inc' ; LOAD FIRST APPLICATION cli - +if 0 +<<< cmp byte [BOOT_VAR+0x9030],1 jne no_load_vrr_m @@ -732,8 +733,8 @@ include 'detect/disks.inc' sub eax,2 jz first_app_found -no_load_vrr_m: - +no_load_vrr_m: <<< +end if mov ebp, firstapp call fs_execute_from_sysdir diff --git a/kernel/branches/Kolibri-A/trunk/memmap.inc b/kernel/branches/Kolibri-A/trunk/memmap.inc index 10d3019476..aa36b5871a 100644 --- a/kernel/branches/Kolibri-A/trunk/memmap.inc +++ b/kernel/branches/Kolibri-A/trunk/memmap.inc @@ -70,14 +70,10 @@ ; 6000 -> 68FF << free (2k5) -; 6900 -> 7EFF << saved picture under mouse pointer (1k5) +; 6900 -> 6EFF << saved picture under mouse pointer (1k5) ; -; 7F00 -> 7FFF << SB16_Status (256) \\ +; 7000 -> EFFF HDD DMA AREA (32k) ; -; 8000 -> 87FF free (2k) -; 0x80008000 -> 9FFF ramdisk fat (8k) - -; A000 -> F9FF free (23k) ; FA00 byte no of keys in buffer ; FA01 byte 'buffer' @@ -151,11 +147,13 @@ ; -> 3B752 end_of_kernel ; -> 3C000 not used (>200k) ; 0x80050000 -> 090000 zero-filled zone after preinit_mem -; 0x8006CC00 -> 6DBFF stack at boot time (4Kb) +; 0x8006DC00 -> 5E5FF basic text font II +; 0x8006E600 -> 5Efff basic text font I + +; 0x8006C000 -> 6CFFF stack at boot time (4Kb) ; -; 0x8006DC00 -> 6E5FF basic text font II -; 0x8006E600 -> 6Efff basic text font I -; 0x8006F000 -> 6FFFF main page directory +; 0x8006E000 -> 6EFFF MMIO PTE directory (4Kb) +; 0x8006F000 -> 6FFFF main page directory (4Kb) ; 0x80070000 -> 7FFFF data of retrieved disks and partitions (Mario79) ; 0x80080000 -> 8FFFF additional app info, in 256 byte steps - 256 entries @@ -200,28 +198,16 @@ ; BC dword address of debug event memory ; C0 5 dd thread debug registers: DR0,DR1,DR2,DR3,DR7 ; -; 0x80090000 -> 9FFFF wav device buffer (64k) ; << SB16Buffer +; 0x80090000 -> 9FFFF free (64k) ; 0x800A0000 -> AFFFF screen access area << VGA legacy buffer ; 0x800B0000 -> FFFFF bios rest in peace -area (320k), << purpose unknown + ; 0x80100000 -> 283FFF diskette image (1m5) +; 0x80280000 -> 9FFF ramdisk fat (8k) -; 0x80284000 -> HEAP_BASE zero-filled zone after preinit_mem +; 0x80280000 -> HEAP_BASE zero-filled zone after preinit_mem ; -; 0x80284000 -> 28BFFF HDD DMA AREA (32k) -; 0x8028C000 -> 297FFF free (48k) -; -; 0x80298000 -> 29ffff auxiliary table for background smoothing code (32k) -; -; 0x802A0000 -> 2Bffff free (128k) -; 0x80328000 -> 32FFFF !vrr driver (32k) - - -; 0x80338000 -> 338FFF draw data - 256 entries (4k) -; 00 dword draw limit - x start -; 04 dword draw limit - y start -; 08 dword draw limit - x end -; 0C dword draw limit - y end -; 0x80339000 -> 3BFFF3 free (12k) +; 0x80280000 -> 2Bffff free (262k) ; 0x802C0000 -> 2C3fff button info (8k) ; @@ -244,8 +230,20 @@ ; dword start port ; dword end port ; dword 0 + +; 0x802E0000 -> 2EFFFF irq data area (64k) +; 0x802F0000 -> 327fff free (229k) + +; 0x80328000 -> 29ffff auxiliary table for background smoothing code (32k) +; +; 0x80338000 -> 338FFF draw data - 256 entries (4k) +; 00 dword draw limit - x start +; 04 dword draw limit - y start +; 08 dword draw limit - x end +; 0C dword draw limit - y end +; 0x80339000 -> 3BFFF3 free (12k) + ; -; 0x80370000 -> 37FFFF irq data area (64k) ; 0x80380000 -> 38FFFF low memory save (64k) ; ; 0x80390000 -> 3AFFFF tcp memory (128k) @@ -265,7 +263,10 @@ ; 0x80800000 ->827FFFFF kernel heap ; 0xF0000000 -> 0xF1FFFFFF PCI-express extended config space -; 0xFD000000 -> 0xFD3FFFFF static system buffer 4Mb + +; 0xFD000000 -> 0xFD7FFFFF static system buffer (8Mb reserved) +; 0xFD800000 -> 0xFBFFFFFF CPU & Southbridge memory-mapped IO (4Mb reserved) +; +0000..0FFF LAPIC BAR (4k) ; 0xFDC00000 -> 0xFDFFFFFF page tables 4Mb ; 0xFE000000 -> 0xFFFFFFFF LFB 32Mb ; 0xFE000000 -> 0xFE7FFFFF application available LFB 8Mb diff --git a/kernel/branches/Kolibri-A/trunk/sound/playnote.inc b/kernel/branches/Kolibri-A/trunk/sound/playnote.inc deleted file mode 100644 index 065bbc809f..0000000000 --- a/kernel/branches/Kolibri-A/trunk/sound/playnote.inc +++ /dev/null @@ -1,166 +0,0 @@ -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; ;; -;; Copyright (C) KolibriOS team 2004-2008. All rights reserved. ;; -;; Distributed under terms of the GNU General Public License ;; -;; ;; -;; PLAYNOTE.INC version 1.1 22 November 2003 ;; -;; ;; -;; Player Notes for Speaker PC ;; -;; subfunction #55 from function #55 Menuet OS ;; -;; ;; -;; Copyright 2003 VaStaNi ;; -;; vastani@ukr.net ;; -;; >>>- SIMPLY - QUICKLY - SHORTLY -<<< ;; -;; ;; -;; Note: playnote.txt ;; -;; ;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -$Revision$ - -align 4 -sound_interface: - - cmp eax,ebx ; this is subfunction #55 ? - jne retFunc55 ; if no then return. - - cmp byte [sound_flag],0 - jne retFunc55 - - movzx eax, byte [countDelayNote] - or al, al ; player is busy ? - jnz retFunc55 ; return counter delay Note - - mov [memAdrNote],esi;edx - call get_pid - mov [pidProcessNote],eax - xor eax, eax ; Ok! EAX = 0 - retFunc55: - mov [esp+32], eax ; return value EAX for application - ret - -iglobal -align 4 - kontrOctave dw 0x4742, 0x4342, 0x3F7C, 0x3BEC, 0x388F, 0x3562 - dw 0x3264, 0x2F8F, 0x2CE4, 0x2A5F, 0x2802, 0x25BF - memAdrNote dd 0 - pidProcessNote dd 0 - slotProcessNote dd 0 - count_timer_Note dd 1 - mem8253r42 dw 0 - countDelayNote db 0 -endg - -playNote: -; jmp NotPlayNotes - mov esi, [memAdrNote] - or esi, esi ; ESI = 0 ? - OFF Notes Play ? - jz NotPlayNotes ; if ESI = 0 -> ignore play pocedure - cmp eax, [count_timer_Note] - jb NotPlayNotes - push eax - inc eax - mov [count_timer_Note], eax - mov al, [countDelayNote] - dec al ; decrement counter Delay for Playing Note - jz NewLoadNote@Delay - cmp al, 0xFF ; this is first Note Play ? - jne NextDelayNote - ;This is FIRST Note, save counter channel 2 chip 8253 - mov al, 0xB6 ; control byte to timer chip 8253 - out 0x43, al ; Send it to the control port chip 8253 - in al, 0x42 ; Read Lower byte counter channel 2 chip 8253 - mov ah, al ; AH = Lower byte counter channel 2 - in al, 0x42 ; Read Upper byte counter channel 2 chip 8253 - mov [mem8253r42], ax ; Save counter channel 2 timer chip 8253 - NewLoadNote@Delay: - cld -; lodsb ; load AL - counter Delay - call ReadNoteByte - or al, al ; THE END ? - jz EndPlayNote - cmp al, 0x81 - jnc NoteforOctave - mov [countDelayNote], al -; lodsw ; load AX - counter for Note! - call ReadNoteByte - mov ah,al - call ReadNoteByte - xchg al,ah - jmp pokeNote - - EndPlayNote: ; THE END Play Notes! - in al, 0x61 ; Get contents of system port B chip 8255 - and al, 0xFC ; Turn OFF timer and speaker - out 0x61, al ; Send out new values to port B chip 8255 - mov ax, [mem8253r42] ; memorize counter channel 2 timer chip 8253 - xchg al, ah ; reverse byte in word - out 0x42, al ; restore Lower byte counter channel 2 - mov al, ah ; AL = Upper byte counter channel 2 - out 0x42, al ; restore Upper byte channel 2 - xor eax, eax ; EAX = 0 - mov [memAdrNote], eax ; clear header control Delay-Note string - NextDelayNote: - mov [countDelayNote], al ; save new counter delay Note - pop eax - NotPlayNotes: - RET - - NoteforOctave: - sub al, 0x81 ; correction value for delay Note - mov [countDelayNote], al ; save counter delay this new Note -; lodsb ; load pack control code - call ReadNoteByte - cmp al, 0xFF ; this is PAUSE ? - jne packCode ; no, this is PACK CODE - in al, 0x61 ; Get contents of system port B chip 8255 - and al, 0xFC ; Turn OFF timer and speaker - out 0x61, al ; Send out new values to port B chip 8255 - jmp saveESI - - packCode: - mov cl, al ; save code - and al, 0xF ; clear upper bits - dec al ; correction - add al, al ; transform number to offset constant - movsx eax, al ; EAX - offset - add eax, dword kontrOctave ; EAX - address from constant - mov ax, [eax] ; read constant - shr cl, 4 ; transform for number Octave - shr ax, cl ; calculate from Note this Octave! - pokeNote: - out 0x42, al ; Lower byte Out to channel 2 timer chip 8253 - mov al, ah - out 0x42, al ; Upper byte Out to channel 2 timer chip 8253 - in al, 0x61 ; Get contents of system port B chip 8255 - or al, 3 ; Turn ON timer and speaker - out 0x61, al ; Send out new values to port B chip 8255 - saveESI: -; mov [memAdrNote], esi ; save new header control Delay-Note string - pop eax - RET -ReadNoteByte: -;result: -; al - note - push eax - push ecx - push edx - push esi - - mov eax,[pidProcessNote] - call pid_to_slot - test eax,eax - jz .failed - lea ecx,[esp+12] - mov edx,1 - mov esi,[memAdrNote] - inc [memAdrNote] - - call read_process_memory -.failed: - pop esi - pop edx - pop ecx - pop eax - ret -;------------------- END CODE -------------------