#include "parametry.h"

.text
.globl _start
_start:
	jmp  dalej 
_ptutaj:
	jmp tutaj
	.word 0
gdt_dane0:
	.word 24
	.long 0x1100c
gdt0:
	.long 0
	.long 0
	.long 65535
	.long 13606656
	.long 65535
	.long 13603328

 dalej:
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.byte 0x66
	movl $0x1000,%eax
	movw %ax,%ds
/*  Ładujemy adres tabeli gdt jako adres globalnej tabeli 
	deskryptorów. Niestety, 'lgdt _gdt_dane' nie działa 
	gdyż kodowanie argumentów w trybie 32-bitowym jest 
	inne niż w trybie 16-bitowym. 
    Argument 32 bitowy, lgdt */
	.byte  0x66 /* Operacja ma być 32-bitowa */
	/* 'lgdt dane' rozpisane heksadecymalnie */
	.byte 0xf,1,0x16 
	.long gdt_dane0
        
	cli
	.byte 0x66
   	mov %cr0,%eax
	.byte 0x66
	orl $1,%eax
	.byte 0x66
	mov %eax,%cr0
	jmp fiuu
/* Teraz już w trybie z ochroną */
  fiuu:
	.byte 0x66  
/*	.byte 0xea
	.long  0x11002
	.word 8*/
	ljmp $8,$0x11002
        /* _ptutaj */
 tutaj:
	movl $0x10,%eax
	movw %ax,%ds
	movw %ax,%ss
	movw %ax,%es
	mov $0x8000,%eax
	mov %eax,%esp
	call inicjuj_stronnicowanie
	movl $0x1000,%eax
	movl %eax,%cr3
	movl %cr0,%eax
	orl  $(1<<31),%eax
	movl %eax,%cr0 
	jmp 1f
   1:
   /*   Przenosimy licznik rozkazow do adresow virtualnych */
	movl $nastepna,%eax
	jmp %eax
 nastepna:
	call inicjacja 
	movl $OBSZAR_SYSTEMOWY,%esp 
	subl $60,%esp
	cli
	movl $0x13,%eax
	movw %ax,%ds
	movw %ax,%es
	movl $0x30,%eax
	movw %ax,%ss
/*	ljmp $32,$0 */

/* 4:
	jmp 4b */
	jmp jalowa
 3:
	movl $0xcbad,%ebx
  koniec: 
	jmp koniec 
 .globl proba
  proba:
/*	call procc */
  /*      pushl %ebp
        movl %esp,%ebp */

        movl $0xdefa,%ebx
    1: 
        jmp 1b


        movl %ebp,%esp
        popl %ebp
 
	movl $0,%ebx
	push %ebx
 4:
	jmp 4b
 /* _proba */
