Subversion Repositories Kolibri OS

Rev

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

Rev 846 Rev 847
Line 53... Line 53...
53
;;
53
;;
54
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
54
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 55... Line 55...
55
 
55
 
Line 56... Line 56...
56
include 'macros.inc'
56
include 'macros.inc'
Line 57... Line 57...
57
 
57
 
Line 58... Line 58...
58
$Revision: 846 $
58
$Revision: 847 $
Line 103... Line 103...
103
;;    - Pci32.inc     PCI functions
103
;;    - Pci32.inc     PCI functions
104
;;
104
;;
105
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
105
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 106... Line -...
106
 
-
 
107
 
-
 
108
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
 
109
;;                                                                      ;;
-
 
110
;;                  16 BIT ENTRY FROM BOOTSECTOR                        ;;
-
 
111
;;                                                                      ;;
-
 
112
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
106
 
113
 
107
 
114
use16
-
 
115
		  org	0x0
-
 
116
		  jmp	start_of_code
-
 
117
 
-
 
118
version db    'Kolibri OS  version 0.7.1.0      ',13,10,13,10,0
-
 
119
 
-
 
120
include "boot/bootstr.inc"     ; language-independent boot messages
-
 
121
include "boot/preboot.inc"
-
 
122
 
-
 
123
if lang eq en
-
 
124
include "boot/booteng.inc"     ; english system boot messages
-
 
125
else if lang eq ru
-
 
126
include "boot/bootru.inc"      ; russian system boot messages
-
 
127
include "boot/ru.inc"	       ; Russian font
-
 
128
else if lang eq et
-
 
129
include "boot/bootet.inc"      ; estonian system boot messages
-
 
130
include "boot/et.inc"	       ; Estonian font
-
 
131
else
-
 
Line -... Line 108...
-
 
108
use32
-
 
109
org 0x100000
-
 
110
 
132
include "boot/bootge.inc"      ; german system boot messages
111
mboot:
-
 
112
  dd  0x1BADB002
133
end if
113
  dd  0x00010003
134
 
114
  dd  -(0x1BADB002 + 0x00010003)
-
 
115
  dd  mboot
-
 
116
  dd  0x100000
Line 135... Line -...
135
include "boot/bootcode.inc"    ; 16 bit system boot code
-
 
136
include "bus/pci/pci16.inc"
-
 
137
include "detect/biosdisk.inc"
-
 
138
 
-
 
139
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
 
Line -... Line 117...
-
 
117
  dd  __edata - OS_BASE
-
 
118
  dd  LAST_PAGE
-
 
119
  dd  __start
Line -... Line 120...
-
 
120
 
-
 
121
 
-
 
122
align 16
-
 
123
__start:
-
 
124
           cld
-
 
125
 
-
 
126
           mov esp, __os_stack-OS_BASE
-
 
127
           push 0
-
 
128
           popf
-
 
129
 
-
 
130
           cmp eax, 0x2BADB002
-
 
131
           mov ecx, sz_invboot
-
 
132
           jne .fault
140
;;                                                                      ;;
133
 
-
 
134
           bt dword [ebx], 3
Line 141... Line 135...
141
;;                  SWITCH TO 32 BIT PROTECTED MODE                     ;;
135
           mov ecx, sz_nomods
Line -... Line 136...
-
 
136
           jnc .fault
-
 
137
 
-
 
138
           bt dword [ebx], 6
142
;;                                                                      ;;
139
           mov ecx, sz_nommap
-
 
140
           jnc .fault
Line -... Line 141...
-
 
141
 
-
 
142
           mov [_boot_mbi-OS_BASE], ebx
-
 
143
 
-
 
144
           xor eax, eax
143
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
145
           cpuid
Line 144... Line -...
144
 
-
 
145
 
-
 
146
; CR0 Flags - Protected mode and Paging
-
 
147
 
-
 
148
	mov ecx, CR0_PE
-
 
149
 
-
 
150
; Enabling 32 bit protected mode
-
 
151
 
-
 
152
	sidt	[cs:old_ints_h]
146
           cmp eax, 0
153
 
-
 
154
	cli				; disable all irqs
-
 
155
	cld
-
 
156
	mov	al,255			; mask all irqs
-
 
157
	out	0xa1,al
-
 
158
	out	0x21,al
-
 
159
   l.5: in	al, 0x64		; Enable A20
-
 
160
	test	al, 2
-
 
161
	jnz	l.5
-
 
162
	mov	al, 0xD1
-
 
163
	out	0x64, al
-
 
Line 164... Line 147...
164
   l.6: in	al, 0x64
147
           mov ecx, sz_nopse
-
 
148
           jbe .fault
165
	test	al, 2
149
 
-
 
150
           mov eax, 1
166
	jnz	l.6
151
           cpuid
167
	mov	al, 0xDF
152
           bt edx, 3
168
	out	0x60, al
153
           mov ecx, sz_nopse
169
   l.7: in	al, 0x64
-
 
Line 170... Line -...
170
	test	al, 2
-
 
171
	jnz	l.7
154
           jnc .fault
-
 
155
 
-
 
156
; ENABLE PAGING
Line 172... Line -...
172
	mov	al, 0xFF
-
 
173
	out	0x64, al
157
 
174
 
-
 
175
	lgdt	[cs:tmp_gdt]		; Load GDT
-
 
176
	mov	eax, cr0		; protected mode
-
 
177
	or	eax, ecx
-
 
178
	and	eax, 10011111b *65536*256 + 0xffffff ; caching enabled
-
 
179
	mov	cr0, eax
158
           mov ecx, 32
180
	jmp	pword os_code:B32	; jmp to enable 32 bit mode
-
 
181
 
-
 
182
align 8
-
 
183
tmp_gdt:
-
 
184
 
-
 
185
	dw     23
159
           mov edi, _sys_pdbr+(OS_BASE shr 20)-OS_BASE
186
	dd     tmp_gdt+0x10000
160
           mov eax, PG_LARGE+PG_SW
Line -... Line 161...
-
 
161
@@:
-
 
162
           stosd
-
 
163
           add eax, 4*1024*1024
-
 
164
           loop @B
-
 
165
 
-
 
166
           mov dword [_sys_pdbr-OS_BASE],   PG_LARGE+PG_SW
-
 
167
           mov dword [_sys_pdbr-OS_BASE+4], PG_LARGE+PG_SW+4*1024*1024
-
 
168
           mov dword [_sys_pdbr-OS_BASE+(page_tabs shr 20)], sys_pgdir+PG_SW-OS_BASE
-
 
169
 
-
 
170
           mov ebx, cr4
-
 
171
           or ebx, CR4_PSE
-
 
172
           and ebx, not CR4_PAE
-
 
173
           mov cr4, ebx
-
 
174
 
-
 
175
           mov eax, _sys_pdbr-OS_BASE
-
 
176
           mov ebx, cr0
-
 
177
           or ebx,CR0_PG+CR0_WP
-
 
178
 
-
 
179
           mov cr3, eax
-
 
180
           mov cr0, ebx
-
 
181
 
-
 
182
           mov ebx, [_boot_mbi]
-
 
183
 
-
 
184
           mov edx, [ebx+20]
-
 
185
           mov esi, [ebx+24]
-
 
186
           mov ecx, LAST_PAGE
-
 
187
           test edx, edx
-
 
188
           jz .no_mods
-
 
189
.scan_mod:
187
	dw     0
190
           mov ecx, [esi+4]
-
 
191
           add esi, 16
-
 
192
           dec edx
-
 
193
           jnz .scan_mod
-
 
194
 
-
 
195
.no_mods:
-
 
196
           add ecx, 4095
-
 
197
           and ecx, not 4095
-
 
198
 
-
 
199
           lgdt [gdts]
-
 
200
           jmp pword os_code:high_code
-
 
201
 
-
 
202
 
-
 
203
.fault:
-
 
204
;           push ecx
-
 
205
;           call _lcls
-
 
206
;           call __bprintf
-
 
207
_hlt:
Line 188... Line -...
188
 
-
 
189
	dw     0xffff
-
 
Line 190... Line -...
190
	dw     0x0000
-
 
191
	db     0x00
-
 
192
	dw     11011111b *256 +10011010b
-
 
193
	db     0x00
-
 
194
 
-
 
195
	dw     0xffff
-
 
196
	dw     0x0000
-
 
197
	db     0x00
-
 
198
	dw     11011111b *256 +10010010b
-
 
Line 199... Line 208...
199
	db     0x00
208
           hlt
Line 200... Line 209...
200
 
209
           jmp _hlt
201
include "data16.inc"
210
 
202
 
211
sz_invboot db 'Invalid multiboot loader magic value',0x0A
203
use32
212
           db 'Halted',0
204
org $+0x10000
213
 
Line 205... Line 214...
205
 
214
sz_nomods  db 'No modules loaded',0x0A
206
align 4
215
           db 'Halted',0
207
B32:
216
 
Line 208... Line 217...
208
	   mov	 ax,os_stack	   ; Selector for os
217
sz_nommap  db 'No memory table', 0x0A
209
	   mov	 ds,ax
218
           db 'Halted',0
210
	   mov	 es,ax
219
 
211
	   mov	 fs,ax
220
sz_nopse   db 'Page size extensions not supported',0x0A
Line 212... Line 221...
212
	   mov	 gs,ax
221
           db 'Halted',0
Line 213... Line 222...
213
	   mov	 ss,ax
222
 
214
	   mov	 esp,0x3ec00	   ; Set stack
223
 
215
 
224
 
216
; CLEAR 0x280000 - HEAP_BASE
225
; CLEAR 0x280000 - HEAP_BASE
217
 
226
 
218
	   xor	 eax,eax
227
       ;    xor   eax,eax
219
	   mov	 edi,0x280000
228
       ;    mov   edi,0x280000
Line 220... Line 229...
220
           mov   ecx,(0x800000-0x280000) / 4
229
       ;    mov   ecx,(0x800000-0x280000) / 4
221
	   cld
230
       ;    cld
Line 222... Line 231...
222
	   rep	 stosd
231
       ;    rep   stosd
Line 223... Line 232...
223
 
232
 
224
	   mov	 edi,0x40000
233
       ;    mov   edi,0x40000
Line 225... Line 234...
225
	   mov	 ecx,(0x90000-0x40000)/4
234
       ;    mov   ecx,(0x90000-0x40000)/4
Line 259... Line 268...
259
           mov ebx, cr4
268
           mov ebx, cr4
260
           or ebx, CR4_PSE
269
           or ebx, CR4_PSE
261
           and ebx, not CR4_PAE
270
           and ebx, not CR4_PAE
262
           mov cr4, ebx
271
           mov cr4, ebx
Line 263... Line -...
263
 
-
 
Line 264... Line 272...
264
; ENABLE PAGING
272
 
265
 
273
 
266
	   mov eax, sys_pgdir-OS_BASE
274
	   mov eax, sys_pgdir-OS_BASE
Line 275... Line 283...
275
 
283
 
276
align 4
284
align 4
277
bios32_entry	dd ?
285
bios32_entry	dd ?
Line 278... Line 286...
278
tmp_page_tabs	dd ?
286
tmp_page_tabs	dd ?
279
 
287
 
280
use16
288
;use16
281
org $-0x10000
289
;org $-0x10000
282
include "boot/shutdown.inc" ; shutdown or restart
290
;include "boot/shutdown.inc" ; shutdown or restart
Line 283... Line 291...
283
org $+0x10000
291
;org $+0x10000
284
use32
292
;use32
285
 
-
 
Line 286... Line 293...
286
__DEBUG__ fix 1
293
 
Line 287... Line 294...
287
__DEBUG_LEVEL__ fix 1
294
__DEBUG__ fix 1
288
include 'init.inc'
295
__DEBUG_LEVEL__ fix 1
Line 295... Line 302...
295
 
302
 
296
 
303
 
Line -... Line 304...
-
 
304
include 'printf.inc'
-
 
305
include 'core/mm.asm'
-
 
306
 
-
 
307
include 'core/init.asm'
-
 
308
 
-
 
309
align 4
-
 
310
proc test_cpu
-
 
311
           locals
-
 
312
              cpu_type   dd ?
-
 
313
              cpu_id     dd ?
-
 
314
              cpu_Intel  dd ?
-
 
315
              cpu_AMD    dd ?
-
 
316
           endl
-
 
317
 
-
 
318
           mov [cpu_type], 0
-
 
319
           xor eax, eax
-
 
320
           mov [cpu_caps], eax
-
 
321
           mov [cpu_caps+4], eax
-
 
322
 
-
 
323
           pushfd
-
 
324
           pop eax
-
 
325
           mov ecx, eax
-
 
326
           xor eax, 0x40000
-
 
327
           push eax
-
 
328
           popfd
-
 
329
           pushfd
-
 
330
           pop eax
-
 
331
           xor eax, ecx
-
 
332
           mov [cpu_type], CPU_386
-
 
333
           jz .end_cpuid
-
 
334
           push ecx
-
 
335
           popfd
-
 
336
 
-
 
337
           mov [cpu_type], CPU_486
-
 
338
           mov eax, ecx
-
 
339
           xor eax, 0x200000
-
 
340
           push eax
-
 
341
           popfd
-
 
342
           pushfd
-
 
343
           pop eax
-
 
344
           xor eax, ecx
-
 
345
           je .end_cpuid
-
 
346
           mov [cpu_id], 1
-
 
347
 
-
 
348
           xor eax, eax
-
 
349
           cpuid
-
 
350
 
-
 
351
           mov [cpu_vendor], ebx
-
 
352
           mov [cpu_vendor+4], edx
-
 
353
           mov [cpu_vendor+8], ecx
-
 
354
           cmp ebx, dword [intel_str]
-
 
355
           jne .check_AMD
-
 
356
           cmp edx, dword [intel_str+4]
-
 
357
           jne .check_AMD
-
 
358
           cmp ecx, dword [intel_str+8]
-
 
359
           jne .check_AMD
-
 
360
           mov [cpu_Intel], 1
-
 
361
           cmp eax, 1
-
 
362
           jl .end_cpuid
-
 
363
           mov eax, 1
-
 
364
           cpuid
-
 
365
           mov [cpu_sign], eax
-
 
366
           mov [cpu_info],  ebx
-
 
367
           mov [cpu_caps],  edx
-
 
368
           mov [cpu_caps+4],ecx
-
 
369
 
-
 
370
           shr eax, 8
-
 
371
           and eax, 0x0f
-
 
372
           ret
-
 
373
.end_cpuid:
-
 
374
           mov eax, [cpu_type]
-
 
375
           ret
-
 
376
 
-
 
377
.check_AMD:
-
 
378
           cmp ebx, dword [AMD_str]
-
 
379
           jne .unknown
-
 
380
           cmp edx, dword [AMD_str+4]
-
 
381
           jne .unknown
-
 
382
           cmp ecx, dword [AMD_str+8]
-
 
383
           jne .unknown
-
 
384
           mov [cpu_AMD], 1
-
 
385
           cmp eax, 1
-
 
386
           jl .unknown
-
 
387
           mov eax, 1
-
 
388
           cpuid
-
 
389
           mov [cpu_sign], eax
-
 
390
           mov [cpu_info],  ebx
-
 
391
           mov [cpu_caps],  edx
-
 
392
           mov [cpu_caps+4],ecx
-
 
393
           shr eax, 8
-
 
394
           and eax, 0x0f
-
 
395
           ret
-
 
396
.unknown:
-
 
397
           mov eax, 1
-
 
398
           cpuid
-
 
399
           mov [cpu_sign], eax
-
 
400
           mov [cpu_info],  ebx
-
 
401
           mov [cpu_caps],  edx
-
 
402
           mov [cpu_caps+4],ecx
-
 
403
           shr eax, 8
Line 297... Line 404...
297
include 'printf.inc'
404
           and eax, 0x0f
298
include 'core/mm.asm'
405
           ret
299
 
406
endp
300
 
407
 
301
align 4
408
align 4
302
high_code:
409
high_code:
Line 303... Line 410...
303
	   mov ax,os_stack
410
	   mov ax,os_stack
304
	   mov bx,app_data
411
           mov dx,app_data
305
	   mov ss,ax
412
	   mov ss,ax
306
	   add	esp, OS_BASE
413
           mov esp, __os_stack
Line -... Line 414...
-
 
414
 
307
 
415
           mov ds, dx
Line 308... Line 416...
308
	   mov ds,bx
416
           mov es, dx
309
	   mov es,bx
-
 
Line 310... Line 417...
310
	   mov fs,bx
417
           mov fs, dx
-
 
418
           mov gs, dx
Line 311... Line -...
311
	   mov gs,bx
-
 
312
 
-
 
313
           mov dword [sys_pgdir-OS_BASE+(page_tabs shr 20)], sys_pgdir+PG_SW-OS_BASE
-
 
314
 
-
 
315
	   bt [cpu_caps], CAPS_PGE
-
 
316
	   jnc @F
-
 
317
 
419
 
Line 318... Line 420...
318
           or dword [sys_pgdir-OS_BASE+(OS_BASE shr 20)], PG_GLOBAL
420
           push ecx
319
 
421
           push ebx
-
 
422
 
-
 
423
         ;  mov dword [sys_pgdir-OS_BASE+(page_tabs shr 20)], sys_pgdir+PG_SW-OS_BASE
-
 
424
 
-
 
425
         ;  bt [cpu_caps], CAPS_PGE
-
 
426
         ;  jnc @F
Line -... Line 427...
-
 
427
 
-
 
428
         ;  or dword [sys_pgdir-OS_BASE+(OS_BASE shr 20)], PG_GLOBAL
Line 320... Line 429...
320
	   mov ebx, cr4
429
 
321
	   or ebx, CR4_PGE
430
         ;  mov ebx, cr4
322
	   mov cr4, ebx
431
         ;  or ebx, CR4_PGE
Line 323... Line -...
323
@@:
-
 
324
	   xor eax, eax
-
 
325
	   mov dword [sys_pgdir], eax
-
 
326
	   mov dword [sys_pgdir+4], eax
432
         ;  mov cr4, ebx
327
 
-
 
328
	   mov eax, cr3
-
 
329
	   mov cr3, eax 	  ; flush TLB
-
 
330
 
-
 
331
 
-
 
332
           mov edx, 0x3fB
-
 
333
           mov eax, 3
-
 
334
           out dx, al
-
 
335
 
433
@@:
336
; MEMORY MODEL
-
 
337
 
-
 
338
           mov ecx, 1280*1024
-
 
Line 339... Line 434...
339
           fastcall _balloc
434
         ;  xor eax, eax
340
           mov [_display_data], eax
435
         ;  mov dword [sys_pgdir], eax
341
 
436
         ;  mov dword [sys_pgdir+4], eax
342
           mov ecx, (unpack.LZMA_BASE_SIZE+(unpack.LZMA_LIT_SIZE shl \
437
 
343
                    (unpack.lc+unpack.lp)))*4
438
         ;  mov eax, cr3
344
           fastcall _balloc
439
         ;  mov cr3, eax           ; flush TLB
345
           mov [unpack.p], eax
440
 
346
 
441
           mov edx, 0x3fB
Line 368... Line 463...
368
	   rep stosd		     ; access to 4096*8=65536 ports
463
	   rep stosd		     ; access to 4096*8=65536 ports
Line 369... Line 464...
369
 
464
 
370
	   mov	ax,tss0
465
	   mov	ax,tss0
Line -... Line 466...
-
 
466
	   ltr	ax
-
 
467
 
-
 
468
           xchg bx, bx
-
 
469
 
-
 
470
           mov ecx, 1280*1024
-
 
471
           fastcall _balloc
-
 
472
           mov [_display_data], eax
-
 
473
 
-
 
474
           mov ecx, (unpack.LZMA_BASE_SIZE+(unpack.LZMA_LIT_SIZE shl \
-
 
475
                    (unpack.lc+unpack.lp)))*4
-
 
476
           fastcall _balloc
-
 
477
           mov [unpack.p], eax
-
 
478
 
371
	   ltr	ax
479
; MEMORY MODEL
Line 372... Line 480...
372
 
480
 
373
           call init_kernel_heap     ; FIXME initialize heap after pager
481
           call init_kernel_heap     ; FIXME initialize heap after pager
Line -... Line 482...
-
 
482
 
-
 
483
           call _init_mm
-
 
484
           mov [pg_data.pg_mutex], 0
374
 
485
 
375
           call _init_mm
486
           hlt
376
           mov [pg_data.pg_mutex], 0
487
 
377
 
488
 
Line 627... Line 738...
627
;include 'boot/rdload.inc'
738
;include 'boot/rdload.inc'
628
;!!!!!!!!!!!!!!!!!!!!!!!
739
;!!!!!!!!!!!!!!!!!!!!!!!
629
;    mov    [dma_hdd],1
740
;    mov    [dma_hdd],1
630
; CALCULATE FAT CHAIN FOR RAMDISK
741
; CALCULATE FAT CHAIN FOR RAMDISK
Line 631... Line -...
631
 
-
 
632
        mov [_rd_base],     OS_BASE+0x100000
-
 
633
        mov [_rd_fat],      OS_BASE+0x100000 + 512
-
 
634
        mov [_rd_fat_end],  OS_BASE+0x100000 + 512 + 4278
-
 
635
        mov [_rd_root],     OS_BASE+0x100000 + 512*19
-
 
Line 636... Line 742...
636
        mov [_rd_root_end], OS_BASE+0x100000 + 512*33
742
 
Line 637... Line 743...
637
 
743
 
638
	call  calculatefatchain
744
	call  calculatefatchain
639
 
745
 
640
 
746
 
641
  mov ax,[OS_BASE+0x10000+bx_from_load]
747
 ; mov ax,[OS_BASE+0x10000+bx_from_load]
642
  cmp ax,'r1'		; if using not ram disk, then load librares and parameters {SPraid.simba}
748
 ; cmp ax,'r1'           ; if using not ram disk, then load librares and parameters {SPraid.simba}
643
  je  no_lib_load
749
 ; je  no_lib_load
644
; LOADING LIBRARES
750
; LOADING LIBRARES
Line 645... Line 751...
645
   stdcall dll.Load,@IMPORT		    ; loading librares for kernel (.obj files)
751
;   stdcall dll.Load,@IMPORT                 ; loading librares for kernel (.obj files)
Line 646... Line 752...
646
   call load_file_parse_table		    ; prepare file parse table
752
;   call load_file_parse_table               ; prepare file parse table
647
   call set_kernel_conf 		    ; configure devices and gui
753
;   call set_kernel_conf                     ; configure devices and gui
Line 716... Line 822...
716
 
822
 
Line 717... Line 823...
717
	; name for OS/IDLE process
823
	; name for OS/IDLE process
718
 
824
 
719
	mov dword [SLOT_BASE+256+APPDATA.app_name],   dword 'OS/I'
825
	mov dword [SLOT_BASE+256+APPDATA.app_name],   dword 'OS/I'
720
	mov dword [SLOT_BASE+256+APPDATA.app_name+4], dword 'DLE '
826
	mov dword [SLOT_BASE+256+APPDATA.app_name+4], dword 'DLE '
721
	mov edi, [os_stack_seg]
827
        mov edi,  __os_stack-8192+512
722
	mov dword [SLOT_BASE+256+APPDATA.pl0_stack], edi
828
	mov dword [SLOT_BASE+256+APPDATA.pl0_stack], edi
723
	add edi, 0x2000-512
829
	add edi, 0x2000-512
724
	mov dword [SLOT_BASE+256+APPDATA.fpu_state], edi
830
	mov dword [SLOT_BASE+256+APPDATA.fpu_state], edi
Line 826... Line 932...
826
	   stdcall map_page,tss._io_map_0,\
932
	   stdcall map_page,tss._io_map_0,\
827
		   (tss._io_map_0-OS_BASE), PG_MAP
933
		   (tss._io_map_0-OS_BASE), PG_MAP
828
	   stdcall map_page,tss._io_map_1,\
934
	   stdcall map_page,tss._io_map_1,\
829
		   (tss._io_map_1-OS_BASE), PG_MAP
935
		   (tss._io_map_1-OS_BASE), PG_MAP
Line 830... Line 936...
830
 
936
 
831
  mov ax,[OS_BASE+0x10000+bx_from_load]
937
;  mov ax,[OS_BASE+0x10000+bx_from_load]
832
  cmp ax,'r1'		; if not rused ram disk - load network configuration from files {SPraid.simba}
938
;  cmp ax,'r1'           ; if not rused ram disk - load network configuration from files {SPraid.simba}
833
  je  no_st_network
939
;  je  no_st_network
834
	call set_network_conf
940
;        call set_network_conf
Line 835... Line 941...
835
  no_st_network:
941
;  no_st_network:
836
 
942
 
Line 837... Line 943...
837
; LOAD FIRST APPLICATION
943
; LOAD FIRST APPLICATION
Line 889... Line 995...
889
	call  set_lights
995
	call  set_lights
890
     ;// mike.dld ]
996
     ;// mike.dld ]
Line 891... Line 997...
891
 
997
 
Line 892... Line 998...
892
; START MULTITASKING
998
; START MULTITASKING
893
 
999
 
894
if preboot_blogesc
1000
;if preboot_blogesc
895
	mov	esi, boot_tasking
1001
;        mov     esi, boot_tasking
896
	call	boot_log
1002
;        call    boot_log
897
.bll1:	in	al, 0x60	; wait for ESC key press
1003
;.bll1:  in      al, 0x60        ; wait for ESC key press
898
	cmp	al, 129
1004
;        cmp     al, 129
Line 899... Line 1005...
899
	jne	.bll1
1005
;        jne     .bll1
Line 900... Line 1006...
900
end if
1006
;end if
Line 5161... Line 5267...
5161
	   xor	ebx,ebx
5267
	   xor	ebx,ebx
5162
	   or	ecx,-1
5268
	   or	ecx,-1
5163
	   mov	edx, OS_BASE+0x70000
5269
	   mov	edx, OS_BASE+0x70000
5164
	   call fileread
5270
	   call fileread
Line 5165... Line 5271...
5165
 
5271
 
5166
	   mov	esi, restart_kernel_4000+OS_BASE+0x10000 ; move kernel re-starter to 0x4000:0
5272
   ;        mov  esi, restart_kernel_4000+OS_BASE+0x10000 ; move kernel re-starter to 0x4000:0
5167
	   mov	edi,OS_BASE+0x40000
5273
   ;        mov  edi,OS_BASE+0x40000
5168
	   mov	ecx,1000
5274
   ;        mov  ecx,1000
Line 5169... Line 5275...
5169
	   rep	movsb
5275
   ;        rep  movsb
5170
 
5276
 
5171
	   mov	esi,OS_BASE+0x2F0000	; restore 0x0 - 0xffff
5277
           mov  esi,OS_BASE+0x2F0000    ; restore 0x0 - 0xffff
5172
	   mov	edi, OS_BASE
5278
           mov  edi, OS_BASE
Line 5179... Line 5285...
5179
	   mov al, 0xFF
5285
	   mov al, 0xFF
5180
	   out 0x21, al
5286
	   out 0x21, al
5181
	   out 0xA1, al
5287
	   out 0xA1, al
Line 5182... Line 5288...
5182
 
5288
 
5183
if 1
5289
if 1
5184
	   mov	word [OS_BASE+0x467+0],pr_mode_exit
5290
       ;    mov  word [OS_BASE+0x467+0],pr_mode_exit
Line 5185... Line 5291...
5185
	   mov	word [OS_BASE+0x467+2],0x1000
5291
       ;    mov  word [OS_BASE+0x467+2],0x1000
5186
 
5292
 
5187
	   mov	al,0x0F
5293
	   mov	al,0x0F
5188
	   out	0x70,al
5294
	   out	0x70,al
Line 5314... Line 5420...
5314
__REV__ = __REV
5420
__REV__ = __REV
Line 5315... Line 5421...
5315
 
5421
 
5316
uglobals_size = $ - endofcode
5422
uglobals_size = $ - endofcode
Line -... Line 5423...
-
 
5423
diff16 "end of kernel code",0,$
-
 
5424
 
-
 
5425
align 16
-
 
5426