Hi everyone 
 
The following code has been working successfuly until today
    
        USE16
        ORG 7C00h
        START1:
        jmp START
        DATASECT:
        DAP:
        DAP_Size             db 10h         ;1h
        DAP_Res1             db 0           ;2h
        DAP_Bytes2Transfer   db 1h          ;3h
        DAP_Res2             db 0           ;4h
        DAP_Buff_Addr1       dw 0h          ;6h
        DAP_Buff_Addr2       dw 80h         ;8h
        DAP_LBA              dq 1h          ;11h
        DAT:
        DAT_Disk_Num         db 80h         ;12h          number of device 80h-winchester
        DAT_Num_Of_Sects     dw 8h          ;13h          the number of 512byte sectors, that contain your kernel your kernel + 1
        GDT:
        GDT_DESC:
                    dw GDT_ENDS - GDT_STARTS - 1h            ;15h
                    dd GDT_STARTS                            ;17h
        GDT_STARTS:
        GDT_REC0    dq 0h                                    ;1Bh
        GDT_REC1    dw 0FFFFh        ;kernel code segment           ;23h
                    dw 0h
                    db 0h
                    db 10011010b
                    db 11001111b
                    db 0h
        GDT_REC2    dw 0FFFFh        ;kernel data segment           ;2Bh
                    dw 0h
                    db 0h
                    db 10010010b
                    db 11001111b
                    db 0h
        GDT_REC3    dw 0067h         ;TSS
                    dw 0800h
                    db 0h
                    db 10010010b
                    db 01000000b
                    db 0h
        GDT_REC4    dw 0198h         ;System data segment - for storing system data ROM
                    dw 0868h
                    db 0h
                    db 11110000b
                    db 01000000b
                    db 0h
        GDT_REC5    dw 03FFh         ;IDT ROM
                    dw 0A00h
                    db 0h
                    db 11110000b
                    db 01000000b
                    db 0h
        GDT_REC6    dw 01FFh         ;SYSTEM STACK
                    dw 0E00h
                    db 0h
                    db 10010010b
                    db 01000000b
                    db 0h
        GDT_REC7    dw 0FA00h         ;(interrupts)
                    dw 1000h
                    db 0h
                    db 10011110b
                    db 01001001b
                    db 0h
        GDT_ENDS:
        ERROR:
        jmp ERROR
        START:
        MOV_:
        mov bp, 9FA0h
        mov ds, bp
        mov bp, 7BFFh
        mov cx, 510d
        MOV_LOOP:
        mov si, cx
        mov al, [cs:bp+si]
        mov [ds:si], al
        loop MOV_LOOP
        CHANGE_PLACE:
        push ds
        push JUMP_POINT - START1 + 1
        retf
        JUMP_POINT:
        mov bp, 80h                            ;loading
        mov es, bp                             ;es with 810h, so I can access sectors that were read from HD
        mov bp, 1h                             ;loading base pointer with adderss of start of code, so I can access data easily
        READ_HD:                               ;READ_HD - procedure that reads amount of sectors specified in DAT_Num_Of_Sects to es:0h
        mov ah, 42h                            ;function num - 42h
        xor al, al                             ;al =0
        mov dl, [cs:bp+12h]                    ;loading number of drive(80h by default)
        mov si, cs                             ;loading
        mov ds, si                             ;ds with segment, where our code is
        mov si, DAP - START1 + 1               ;loading si to point to the DAP
        mov word cx, [cs:bp+13h]               ;loading cx with number of sectors to read
        RHD_LOOP:                              ;loop which reads sectors
        pusha                                  ;save all registers
        int 13h                                ;call int 13h with parameters selected above
        jc ERROR                               ;jmp there on error
        popa                                   ;restore registers
        add word [ds:si+8h], 20h               ;next time it will write 512 bytes further
        inc word [ds:si+11h]                   ;incrementing lba of sector to read
        loop RHD_LOOP                          ;doing it amount of times specified in cx
        DETECT_MEMORY:                         ;detecting highest address in memory
        mov ax, 0E801h                         ;loading ax with function number
        pusha                                  ;save all registers
        int 15h                                ;calling int 15h
        jc ERROR                               ;if error jmp to error
        xchg ax, bx                            ;ax = bx, bx = ax
        mov bx, 0FFFFh                         ;amount of high memoty is give in 64k blocks, so, I need to multiply it by amount of bytes in 64k block
        mul bx                                 ;
        shl edx, 10h                           ;part of result is placed into dx
        add eax, edx                           ;so, I combine ax and dx
        add eax, 0FFFFFFh                      ;I dont expect systems with less than 16mb of memory
        mov dword [es:0h], eax                 ;placing this data to os config space
        COLLECT_OTHER_DATA:
        xor eax, eax
        cpuid
        mov [es:4h], ecx
        mov eax, 1h
        cpuid
        mov [es:8h], eax
        mov eax, 80000001h
        cpuid
        mov [es:0Ah], edx
        mov [es:10h], ecx
        mov eax, 80000008h
        cpuid
        mov [es:14h], eax
        ;Maybe will be more, so.........
        PMODEJMP:
        cli
        mov ax, 0x2401                         ;function num
        int 0x15                               ;Damn A20 line
        lea eax, [cs:GDT_DESC-START1+1h]                              ;GDT_DESC-START1+9FA00h
        lgdt [eax]
        mov eax, cr0
        or eax, 1
        mov cr0, eax
        jmp pword 08h:THEMODEP-START1+9FA01h                          ;to count address in bootloader do that - DESTINATION_LABEL-START1+9FA01h
        USE32
        THEMODEP:
        SEG_REG_SET:
        mov sp, 10h
        mov ds, sp
        mov fs, sp
        mov gs, sp
        mov ss, sp
        mov esp, 3071d
        mov ax, 28h
        mov es, ax
        ; __________________________________________________________________
        ;| MOVING GDT TO ITS WORKING LOCATION AT PHYSICAL ADDRESS 00000006h |
        ;|__________________________________________________________________|
        MOVGDT2WORKLOCATION:
        mov word [ds:0000h], 64d
        mov dword [ds:0002h], 6d
        mov ebp, GDT_STARTS-START1+9FA01h
        mov esi, 6d
        mov ecx, 64d
        call MOVE32
        lea eax, [ds:0000h]
        lgdt [eax]
        PASSING_CONTROL:;the place where the shit happens
        jmp 0A00h
        HAPPY_END:
        nop
        jmp HAPPY_END
        MOVE32:
        mov al, [ds:ebp+ecx-1]
        mov [ds:esi+ecx-1], al
        loop MOVE32
        ret
        times 148 db 0
        dw 0AA55h          
 
Kernel is located inside of 2 segments after bootloader(1 and 2 segment)
My debugger shows that problem is somewhere in the place where it loads kernel into memory - the kernel just doesnt gets loaded into memory.
The question is - Why?
*Note: the part that loads kernel worked before