Subversion Repositories Kolibri OS

Rev

Rev 30 | Rev 61 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 30 Rev 46
Line 186... Line 186...
186
 
186
 
Line 187... Line 187...
187
use16
187
use16
Line 188... Line -...
188
 
-
 
189
pr_mode_exit:
-
 
190
 
-
 
191
    mov ax,1000
188
 
192
    mov ds,ax
189
pr_mode_exit:
193
    mov es,ax
190
 
-
 
191
; setup stack
-
 
192
	mov	ax, 3000h
-
 
193
	mov	ss, ax
-
 
194
	mov	esp, 0EC00h
-
 
195
; setup ds
-
 
196
	push	cs
-
 
197
	pop	ds
-
 
198
;    mov ax,1000
-
 
199
;    mov ds,ax
-
 
200
;    mov es,ax
194
    mov fs,ax
201
;    mov fs,ax
195
    mov gs,ax
202
;    mov gs,ax
Line 196... Line 203...
196
    mov ss,ax
203
;    mov ss,ax
Line 206... Line 213...
206
 
213
 
207
rdelay:
214
rdelay:
208
    ret
215
    ret
Line 209... Line 216...
209
real_mode:
216
real_mode:
210
 
-
 
211
    lidt [cs:old_ints_h-0x10000]
217
 
212
    mov  sp,0xfff0
218
    lidt [old_ints_h-0x10000]
213
;remap IRQs
219
;remap IRQs
214
    mov  al,0x11
220
    mov  al,0x11
215
    out  0x20,al
221
    out  0x20,al
Line 235... Line 241...
235
    out  0x21,al
241
    out  0x21,al
236
    call rdelay
242
    call rdelay
237
    out  0xA1,al
243
    out  0xA1,al
238
    call rdelay
244
    call rdelay
Line 239... Line -...
239
    
-
 
240
    mov  al,2
-
 
241
    out  0x21,al
245
    
-
 
246
    mov  al,0
-
 
247
    out  0x21,al
242
    mov  al,0
248
    call rdelay
243
    out  0xA1,al
249
    out  0xA1,al
Line 244... Line 250...
244
    sti
250
    sti
Line 323... Line 329...
323
 
329
 
324
 
330
 
Line 325... Line 331...
325
restart_kernel_4000:
331
restart_kernel_4000:
326
        cli
332
        cli
327
 
333
 
328
        mov     di,0x1000      ; load kernel image from 0x8000:0 -> 0x1000:0
334
;        mov     di,0x1000      ; load kernel image from 0x8000:0 -> 0x1000:0
329
 
335
;
330
      new_kernel_block_move:
336
;      new_kernel_block_move:
331
 
337
;
332
        mov     ebx,0
338
;        mov     ebx,0
333
 
339
;
334
      new_kernel_byte_move:
340
;      new_kernel_byte_move:
-
 
341
;
-
 
342
;        mov     ax,di
-
 
343
;        add     ax,0x7000
-
 
344
;        mov     es,ax
-
 
345
;        mov     dl,[es:bx]
-
 
346
;        mov     es,di
-
 
347
;        mov     [es:bx],dl
-
 
348
;
-
 
349
;        inc     ebx
-
 
350
;        cmp     ebx,65536
-
 
351
;        jbe     new_kernel_byte_move
-
 
352
;
-
 
353
;        add     di,0x1000
-
 
354
;        cmp     di,0x2000
-
 
355
;        jbe     new_kernel_block_move
-
 
356
	push	ds
-
 
357
	pop	es
-
 
358
	mov	cx, 0x8000
-
 
359
	push	cx
-
 
360
	mov	ds, cx
-
 
361
	xor	si, si
-
 
362
	xor	di, di
-
 
363
	rep	movsw
335
 
364
	mov	ax, 0x9000
336
        mov     ax,di
365
	mov	ds, ax
337
        add     ax,0x7000
366
	mov	ax, 0x2000
338
        mov     es,ax
-
 
339
        mov     dl,[es:bx]
-
 
340
        mov     es,di
-
 
341
        mov     [es:bx],dl
-
 
342
 
-
 
343
        inc     ebx
-
 
344
        cmp     ebx,65536
-
 
345
        jbe     new_kernel_byte_move
-
 
346
 
-
 
Line 347... Line 367...
347
        add     di,0x1000
367
	mov	es, ax
Line 348... Line 368...
348
        cmp     di,0x2000
368
	pop	cx
349
        jbe     new_kernel_block_move
369
	rep	movsw
350
 
370
 
351
        wbinvd  ; write and invalidate cache
371
        wbinvd  ; write and invalidate cache
352
 
372
 
-
 
373
;        mov     ax,0x1000
-
 
374
;        mov     es,ax
-
 
375
;        mov     ax,0x3000
-
 
376
;        mov     ss,ax
-
 
377
;        mov     sp,0xec00
-
 
378
; restore timer
-
 
379
	mov	al, 00110100b
-
 
380
	out	43h, al
-
 
381
	jcxz	$+2
353
        mov     ax,0x1000
382
	mov	al, 0xFF
Line -... Line 383...
-
 
383
	out	40h, al
-
 
384
	jcxz	$+2
-
 
385
	out	40h, al
-
 
386
	jcxz	$+2
-
 
387
        sti
354
        mov     es,ax
388
 
Line -... Line 389...
-
 
389
; bootloader interface
-
 
390
	push	0x1000
-
 
391
	pop	ds
-
 
392
	mov	si, .bootloader_block-0x10000
Line 355... Line 393...
355
        mov     ax,0x3000
393
	mov	ax, 'KL'
356
        mov     ss,ax
394
        jmp     0x1000:0000
357
        mov     sp,0xec00
395
 
358
        sti
396
.bootloader_block: