Subversion Repositories Kolibri OS

Rev

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

Rev 435 Rev 465
Line 52... Line 52...
52
;;
52
;;
53
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
53
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 54... Line 54...
54
 
54
 
Line 55... Line 55...
55
include 'macros.inc'
55
include 'macros.inc'
Line 56... Line 56...
56
 
56
 
57
$Revision: 435 $
57
$Revision: 465 $
58
 
58
 
Line 59... Line 59...
59
include "proc32.inc"
59
include "proc32.inc"
60
include "kglobals.inc"
-
 
61
include "lang.inc"
-
 
62
 
-
 
63
include "const.inc"
-
 
64
 
60
include "kglobals.inc"
65
;WinMapAddress      equ     0x460000
-
 
66
;display_data       = 0x460000
-
 
67
 
-
 
68
max_processes      equ   255
61
include "lang.inc"
69
 
-
 
70
;window_data        equ   0x0000
-
 
Line -... Line 62...
-
 
62
 
-
 
63
include "const.inc"
-
 
64
max_processes    equ   255
-
 
65
tss_step         equ   (128+8192) ; tss & i/o - 65535 ports, * 256=557056*4
71
;tss_data           equ   0xD20000
66
 
-
 
67
 
-
 
68
os_stack       equ  (os_data_l-gdts)    ; GDTs
-
 
69
os_code        equ  (os_code_l-gdts)
Line 72... Line 70...
72
tss_step           equ   (128+8192) ; tss & i/o - 65535 ports, * 256=557056*4
70
graph_data     equ  (3+graph_data_l-gdts)
73
;draw_data          equ   0xC00000
71
tss0           equ  (tss0_l-gdts)
74
;sysint_stack_data  equ   0xC03000
72
app_code       equ  (3+app_code_l-gdts)
75
 
73
app_data       equ  (3+app_data_l-gdts)
Line 107... Line 105...
107
 
105
 
108
use16
106
use16
109
                  org   0x0
107
                  org   0x0
Line 110... Line -...
110
                  jmp   start_of_code
-
 
111
 
-
 
112
; mike.dld {
-
 
113
        org $+0x10000
-
 
114
db 0
-
 
115
dd servetable-0x10000
-
 
116
draw_line       dd __sys_draw_line
-
 
117
disable_mouse   dd __sys_disable_mouse
-
 
118
draw_pointer    dd __sys_draw_pointer
-
 
119
;//mike.dld, 2006-08-02 [
-
 
120
;drawbar         dd __sys_drawbar
-
 
121
drawbar         dd __sys_drawbar.forced
-
 
122
;//mike.dld, 2006-08-02 ]
-
 
123
putpixel        dd __sys_putpixel
-
 
124
; } mike.dld
108
                  jmp   start_of_code
125
 
-
 
Line 126... Line 109...
126
version           db    'Kolibri OS  version 0.6.5.0      ',13,10,13,10,0
109
 
127
                  ;dd    endofcode-0x10000
-
 
128
 
110
version db    'Kolibri OS  version 0.6.5.0      ',13,10,13,10,0
129
                  ;db   'Boot02'
-
 
130
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
 
131
include "boot/preboot.inc"
-
 
132
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
 
133
 
-
 
Line -... Line 111...
-
 
111
 
134
preboot_lfb       db    0
112
include "boot/bootstr.inc"     ; language-independent boot messages
-
 
113
include "boot/preboot.inc"
135
preboot_bootlog   db    0
114
 
136
 
115
if lang eq en
-
 
116
include "boot/booteng.inc"     ; english system boot messages
137
 
117
else if lang eq ru
-
 
118
include "boot/bootru.inc"      ; russian system boot messages
-
 
119
include "boot/ru.inc"          ; Russian font
138
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
120
else if lang eq et
-
 
121
include "boot/bootet.inc"      ; estonian system boot messages
Line -... Line 122...
-
 
122
include "boot/et.inc"          ; Estonian font
139
;;                                                                      ;;
123
else
Line 140... Line 124...
140
;;                      16 BIT INCLUDED FILES                           ;;
124
include "boot/bootge.inc"      ; german system boot messages
141
;;                                                                      ;;
125
end if
142
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
126
 
143
 
127
include "boot/bootcode.inc"    ; 16 bit system boot code
144
include "kernel16.inc"
128
include "bus/pci/pci16.inc"
Line 145... Line -...
145
 
-
 
146
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
 
147
;;                                                                      ;;
-
 
148
;;                  SWITCH TO 32 BIT PROTECTED MODE                     ;;
-
 
149
;;                                                                      ;;
-
 
150
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
 
151
 
-
 
152
os_data        =  os_data_l-gdts    ; GDTs
-
 
153
os_code        =  os_code_l-gdts
-
 
154
int_code       equ  int_code_l-gdts
-
 
155
int_data       equ  int_data_l-gdts
-
 
Line 156... Line 129...
156
tss0sys        equ  tss0sys_l-gdts
129
 
Line 157... Line 130...
157
graph_data     equ  3+graph_data_l-gdts
130
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 158... Line 131...
158
tss0           equ  tss0_l-gdts
131
;;                                                                      ;;
Line 159... Line 132...
159
app_code       equ  3+app_code_l-gdts
132
;;                  SWITCH TO 32 BIT PROTECTED MODE                     ;;
Line 160... Line 133...
160
app_data       equ  3+app_data_l-gdts
133
;;                                                                      ;;
161
 
134
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
162
 
135
 
163
 
136
 
Line 187... Line 160...
187
   l.7: in      al, 0x64
160
   l.7: in      al, 0x64
188
        test    al, 2
161
        test    al, 2
189
        jnz     l.7
162
        jnz     l.7
190
        mov     al, 0xFF
163
        mov     al, 0xFF
191
        out     0x64, al
164
        out     0x64, al
-
 
165
 
192
        lgdt    [cs:gdts-0x10000]       ; Load GDT
166
        lgdt    [cs:tmp_gdt]            ; Load GDT
193
        mov     eax, cr0                ; Turn on paging // protected mode
167
        mov     eax, cr0                ; protected mode
194
        or      eax, ecx
168
        or      eax, ecx
195
        and     eax, 10011111b *65536*256 + 0xffffff ; caching enabled
169
        and     eax, 10011111b *65536*256 + 0xffffff ; caching enabled
196
        mov     cr0, eax
170
        mov     cr0, eax
197
        jmp     $+2
-
 
198
org $+0x10000
-
 
199
        mov     ax,os_data              ; Selector for os
-
 
200
        mov     ds,ax
-
 
201
        mov     es,ax
-
 
202
        mov     fs,ax
-
 
203
        mov     gs,ax
-
 
204
        mov     ss,ax
-
 
205
        mov     esp,0x3ec00             ; Set stack
-
 
206
        jmp     pword os_code:B32       ; jmp to enable 32 bit mode
171
        jmp     pword os_code:B32       ; jmp to enable 32 bit mode
Line 207... Line -...
207
 
-
 
208
if gdte >= $
-
 
209
error 'GDT overlaps with used code!'
-
 
210
end if
-
 
211
 
-
 
212
use32
-
 
213
 
-
 
214
include 'unpacker.inc'
-
 
215
 
-
 
216
__DEBUG__ fix 1
-
 
217
__DEBUG_LEVEL__ fix 1
-
 
218
include 'fdo.inc'
-
 
219
 
-
 
220
iglobal
-
 
221
  boot_memdetect    db   'Determining amount of memory',0
-
 
222
  boot_fonts        db   'Fonts loaded',0
-
 
223
  boot_tss          db   'Setting TSSs',0
-
 
224
  boot_cpuid        db   'Reading CPUIDs',0
-
 
225
  boot_devices      db   'Detecting devices',0
-
 
226
  boot_timer        db   'Setting timer',0
-
 
227
  boot_irqs         db   'Reprogramming IRQs',0
-
 
228
  boot_setmouse     db   'Setting mouse',0
-
 
229
  boot_windefs      db   'Setting window defaults',0
-
 
230
  boot_bgr          db   'Calculating background',0
-
 
231
  boot_resirqports  db   'Reserving IRQs & ports',0
-
 
232
  boot_setrports    db   'Setting addresses for IRQs',0
172
 
233
  boot_setostask    db   'Setting OS task',0
-
 
234
  boot_allirqs      db   'Unmasking all IRQs',0
-
 
235
  boot_tsc          db   'Reading TSC',0
-
 
236
  boot_pal_ega      db   'Setting EGA/CGA 320x200 palette',0
-
 
237
  boot_pal_vga      db   'Setting VGA 640x480 palette',0
-
 
238
  boot_mtrr         db   'Setting MTRR',0
-
 
239
  boot_tasking      db   'All set - press ESC to start',0
-
 
240
endg
-
 
241
 
-
 
242
iglobal
-
 
243
  boot_y dd 10
-
 
244
endg
-
 
245
 
-
 
246
boot_log:
-
 
Line 247... Line -...
247
         pushad
-
 
248
 
-
 
249
         mov   eax,10*65536
-
 
250
         mov   ax,word [boot_y]
-
 
251
         add   [boot_y],dword 10
-
 
252
         mov   ebx,0x80ffffff   ; ASCIIZ string with white color
173
include "boot/shutdown.inc" ; shutdown or restart
253
         mov   ecx,esi
174
 
Line -... Line 175...
-
 
175
align 8
254
         mov   edi,1
176
tmp_gdt:
-
 
177
 
-
 
178
        dw     23
-
 
179
        dd     tmp_gdt+0x10000
-
 
180
        dw     0
-
 
181
 
-
 
182
        dw     0xffff
-
 
183
        dw     0x0000
-
 
184
        db     0x00
-
 
185
        dw     11011111b *256 +10011010b
255
         call  dtext
186
        db     0x00
-
 
187
 
-
 
188
        dw     0xffff
-
 
189
        dw     0x0000
Line 256... Line -...
256
 
-
 
257
         mov   [novesachecksum],1000
190
        db     0x00
Line 258... Line -...
258
         call  checkVga_N13
-
 
259
 
-
 
260
         cmp   [preboot_blogesc],byte 1
-
 
261
         je    .bll2
-
 
262
 
-
 
263
         cmp   esi,boot_tasking
-
 
264
         jne   .bll2
-
 
265
         ; begin ealex 04.08.05
-
 
266
;         in    al,0x61
-
 
267
;         and   al,01111111b
-
 
268
;         out   0x61,al
-
 
269
         ; end ealex 04.08.05
-
 
270
.bll1:   in    al,0x60    ; wait for ESC key press
-
 
271
         cmp   al,129
-
 
272
         jne   .bll1
-
 
273
 
191
        dw     11011111b *256 +10010010b
274
.bll2:   popad
-
 
275
 
-
 
276
         ret
-
 
277
 
-
 
278
iglobal
-
 
279
  firstapp   db  '/rd/1/LAUNCHER',0
-
 
280
  vrr_m      db  '/rd/1/VRR_M',0
-
 
281
 
-
 
282
  char  dd 0,0,0
-
 
283
   dd 2560
-
 
284
   dd  0x3F600 - std_application_base_address
-
 
285
   db '/RD/1/FONTS/CHAR.MT',0
-
 
286
  char2 	dd 0,0,0
-
 
287
			dd 2560
-
 
288
			dd  0x3EC00 - std_application_base_address
-
 
289
			db '/RD/1/FONTS/CHAR2.MT',0
-
 
290
 
-
 
291
  ;char       db  'FONTS/CHAR.MT',0
-
 
292
  ;char2      db  'FONTS/CHAR2.MT',0
192
        db     0x00
293
  bootpath   db  '/KOLIBRI    '
-
 
294
  bootpath2  db  0
-
 
295
;  vmode      db  'drivers/VMODE.MDR',0
-
 
296
  vmode 	dd 0,0,0
-
 
297
			dd 0x8000
-
 
298
			dd 0x760000 - std_application_base_address
-
 
299
			db '/RD/1/drivers/VMODE.MDR',0
-
 
300
endg
-
 
301
 
-
 
302
 
-
 
Line 303... Line 193...
303
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
193
 
304
;;                                                                      ;;
-
 
305
;;                          32 BIT ENTRY                                ;;
194
include "data16.inc"
-
 
195
 
-
 
196
use32
-
 
197
org $+0x10000
-
 
198
 
-
 
199
align 4
-
 
200
B32:
-
 
201
           mov   ax,os_stack       ; Selector for os
-
 
202
           mov   ds,ax
306
;;                                                                      ;;
203
           mov   es,ax
Line 307... Line 204...
307
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
204
           mov   fs,ax
308
 
205
           mov   gs,ax
309
align 4
206
           mov   ss,ax
310
 
207
           mov   esp,0x3ec00       ; Set stack
311
B32:
208
 
312
; CLEAR 0x280000-0xF00000
-
 
313
 
-
 
Line 314... Line 209...
314
        xor   eax,eax
209
; CLEAR 0x280000 - HEAP_BASE
315
        mov   edi,0x280000
210
 
316
        mov   ecx,(0x100000*0xF-0x280000) / 4
-
 
317
        cld
211
           xor   eax,eax
Line 318... Line 212...
318
        rep   stosd
212
           mov   edi,0x280000
319
; CLEAR 0x80000-0x90000
213
           mov   ecx,(HEAP_BASE-OS_BASE-0x280000) / 4
320
;       xor   eax,eax
214
           cld
321
 
215
           rep   stosd
Line 322... Line 216...
322
        mov   edi,0x80000
216
 
Line 323... Line 217...
323
        mov   ecx,(0x90000-0x80000)/4
217
           mov   edi,0x40000
324
;       cld
218
           mov   ecx,(0x90000-0x40000)/4
325
        rep   stosd
219
           rep   stosd
326
 
-
 
327
; CLEAR KERNEL UNDEFINED GLOBALS
220
 
328
        mov   edi, endofcode
221
; CLEAR KERNEL UNDEFINED GLOBALS
329
        mov   ecx, (uglobals_size/4)+4
-
 
330
        rep   stosd
222
           mov   edi, endofcode-OS_BASE
331
 
-
 
332
; SAVE & CLEAR 0-0xffff
223
           mov   ecx, (uglobals_size/4)+4
Line -... Line 224...
-
 
224
           rep   stosd
-
 
225
 
-
 
226
; SAVE & CLEAR 0-0xffff
-
 
227
 
-
 
228
           xor esi, esi
-
 
229
           mov   edi,0x2F0000
-
 
230
           mov   ecx,0x10000 / 4
-
 
231
           rep   movsd
-
 
232
           xor edi, edi
-
 
233
           mov   ecx,0x10000 / 4
-
 
234
           rep   stosd
-
 
235
 
-
 
236
           call test_cpu
-
 
237
           bts [cpu_caps-OS_BASE], CAPS_TSC     ;force use rdtsc
-
 
238
 
-
 
239
; MEMORY MODEL
-
 
240
           call mem_test
-
 
241
           call init_mem
-
 
242
           call init_page_map
-
 
243
 
-
 
244
; ENABLE PAGING
-
 
245
 
-
 
246
           mov eax, sys_pgdir-OS_BASE
-
 
247
           mov cr3, eax
-
 
248
 
-
 
249
           mov eax,cr0
-
 
250
           or eax,CR0_PG+CR0_WP
-
 
251
           mov cr0,eax
-
 
252
 
-
 
253
           lgdt [gdts]
-
 
254
           jmp pword os_code:high_code
-
 
255
 
-
 
256
__DEBUG__ fix 1
-
 
257
__DEBUG_LEVEL__ fix 1
-
 
258
include 'init.inc'
-
 
259
 
-
 
260
org OS_BASE+$
-
 
261
 
-
 
262
align 4
-
 
263
high_code:
-
 
264
           mov   ax,os_stack
-
 
265
           mov   bx,app_data
-
 
266
           mov   ss,ax
-
 
267
           add esp, OS_BASE
-
 
268
 
333
 
269
           mov   ds,bx
334
        mov   esi,0x0000
270
           mov   es,bx
335
        mov   edi,0x2F0000
271
           mov   fs,bx
336
        mov   ecx,0x10000 / 4
272
           mov   gs,bx
-
 
273
 
-
 
274
           mov dword [sys_pgdir], 0
337
        cld
275
           mov dword [sys_pgdir+4], 0
-
 
276
           mov dword [sys_pgdir+8], 0
-
 
277
 
-
 
278
           mov eax, cr3
-
 
279
           mov cr3, eax           ; flush TLB
-
 
280
 
-
 
281
; SAVE REAL MODE VARIABLES
-
 
282
        mov     ax, [BOOT_VAR + 0x9031]
-
 
283
        mov     [IDEContrRegsBaseAddr], ax
-
 
284
; --------------- APM ---------------------
-
 
285
 
-
 
286
; init selectors
-
 
287
    mov ebx,    [BOOT_VAR+0x9040]              ; offset of APM entry point
-
 
288
    movzx eax, word [BOOT_VAR+0x9050] ; real-mode segment base address of
-
 
289
                                      ; protected-mode 32-bit code segment
-
 
290
    movzx ecx, word [BOOT_VAR+0x9052] ; real-mode segment base address of
-
 
291
                                      ; protected-mode 16-bit code segment
-
 
292
    movzx edx, word [BOOT_VAR+0x9054] ; real-mode segment base address of
-
 
293
                                      ; protected-mode 16-bit data segment
-
 
294
 
-
 
295
    shl    eax, 4
-
 
296
    mov    [dword apm_code_32 + 2], ax
-
 
297
    shr    eax, 16
338
        rep   movsd
298
    mov    [dword apm_code_32 + 4], al
339
        xor   eax,eax
299
 
Line 340... Line 300...
340
        mov   edi,0
300
    shl    ecx, 4
341
        mov   ecx,0x10000 / 4
301
    mov    [dword apm_code_16 + 2], cx
342
        cld
302
    shr    ecx, 16
343
        rep   stosd
303
    mov    [dword apm_code_16 + 4], cl
344
 
304
 
345
; SAVE REAL MODE VARIABLES
305
    shl    edx, 4
346
        mov     ax, [0x2f0000 + 0x9031]
306
    mov    [dword apm_data_16 + 2], dx
347
        mov     [IDEContrRegsBaseAddr], ax
307
    shr    edx, 16
348
; --------------- APM ---------------------
308
    mov    [dword apm_data_16 + 4], dl
349
    mov    eax, [0x2f0000 + 0x9040]    ; entry point
309
 
350
    mov    dword[apm_entry], eax
310
    mov    dword[apm_entry], ebx
351
    mov    word [apm_entry + 4], apm_code_32 - gdts
311
    mov    word [apm_entry + 4], apm_code_32 - gdts
352
 
312
 
353
    mov    eax, [0x2f0000 + 0x9044]    ; version & flags
313
    mov    eax, [BOOT_VAR + 0x9044]    ; version & flags
354
    mov    [apm_vf], eax
314
    mov    [apm_vf], eax
355
; -----------------------------------------
315
; -----------------------------------------
356
;        movzx eax,byte [0x2f0000+0x9010]  ; mouse port
316
;        movzx eax,byte [BOOT_VAR+0x9010]  ; mouse port
357
;        mov   [0xF604],byte 1  ;al
317
;        mov   [0xF604],byte 1  ;al
358
        mov     al, [0x2F0000+0x901F]   ; DMA writing
318
        mov     al, [BOOT_VAR+0x901F]   ; DMA writing
359
        mov     [allow_dma_write], al
319
        mov     [allow_dma_write], al
360
        mov   al,[0x2f0000+0x9000]        ; bpp
320
        mov   al,[BOOT_VAR+0x9000]        ; bpp
361
        mov   [ScreenBPP],al
321
        mov   [ScreenBPP],al
362
        movzx eax,word [0x2f0000+0x900A]  ; X max
322
        movzx eax,word [BOOT_VAR+0x900A]  ; X max
363
        dec   eax
323
        dec   eax
364
        mov   [ScreenWidth],eax
324
        mov   [ScreenWidth],eax
365
        mov   [screen_workarea.right],eax
325
        mov   [screen_workarea.right],eax
366
        movzx eax,word [0x2f0000+0x900C]  ; Y max
326
        movzx eax,word [BOOT_VAR+0x900C]  ; Y max
367
        dec   eax
327
        dec   eax
368
        mov   [ScreenHeight],eax
328
        mov   [ScreenHeight],eax
Line 369... Line 329...
369
        mov   [screen_workarea.bottom],eax
329
        mov   [screen_workarea.bottom],eax
Line 370... Line -...
370
        movzx eax,word [0x2f0000+0x9008]  ; screen mode
-
 
371
        mov   [SCR_MODE],eax
-
 
372
        mov   eax,[0x2f0000+0x9014]       ; Vesa 1.2 bnk sw add
-
 
373
        mov   [BANK_SWITCH],eax
-
 
374
        mov   [BytesPerScanLine],word 640*4         ; Bytes PerScanLine
-
 
375
        cmp   [SCR_MODE],word 0x13          ; 320x200
-
 
376
        je    @f
-
 
377
        cmp   [SCR_MODE],word 0x12          ; VGA 640x480
330
        movzx eax,word [BOOT_VAR+0x9008]  ; screen mode
378
        je    @f
331
        mov   [SCR_MODE],eax
379
        mov   ax,[0x2f0000+0x9001]        ; for other modes
-
 
380
        mov   [BytesPerScanLine],ax
332
        mov   eax,[BOOT_VAR+0x9014]       ; Vesa 1.2 bnk sw add
Line 381... Line 333...
381
      @@:
333
        mov   [BANK_SWITCH],eax
382
 
334
        mov   [BytesPerScanLine],word 640*4         ; Bytes PerScanLine
383
; GRAPHICS ADDRESSES
335
        cmp   [SCR_MODE],word 0x13          ; 320x200
384
 
336
        je    @f
385
        ;mov     eax,0x100000*8                    ; LFB address
337
        cmp   [SCR_MODE],word 0x12          ; VGA 640x480
386
        ;cmp     [0xfe0c],word 0x13
338
        je    @f
387
        ;je      no_d_lfb
339
        mov   ax,[BOOT_VAR+0x9001]        ; for other modes
388
        ;cmp     [0xfe0c],word 0x12
340
        mov   [BytesPerScanLine],ax
389
        ;je      no_d_lfb
341
@@:
390
        ;cmp     [0x2f0000+0x901e],byte 1
342
 
391
        ;jne     no_d_lfb
343
; GRAPHICS ADDRESSES
392
        mov     byte [0x2f0000+0x901e],0x0
344
 
393
        mov     eax,[0x2f0000+0x9018]
345
        mov     byte [BOOT_VAR+0x901e],0x0
394
      ;no_d_lfb:
346
        mov     eax,[BOOT_VAR+0x9018]
395
        mov     [LFBAddress],eax
347
        mov     [LFBAddress],eax
396
 
348
 
397
        cmp     [SCR_MODE],word 0100000000000000b
349
        cmp     [SCR_MODE],word 0100000000000000b
398
        jge     setvesa20
350
        jge     setvesa20
399
        cmp     [SCR_MODE],word 0x13
351
        cmp     [SCR_MODE],word 0x13
400
        je      v20ga32
352
        je      v20ga32
401
        mov     [PUTPIXEL],dword Vesa12_putpixel24  ; Vesa 1.2
353
        mov     [PUTPIXEL],dword Vesa12_putpixel24  ; Vesa 1.2
402
        mov     [0xe024],dword Vesa12_getpixel24
354
        mov     [GETPIXEL],dword Vesa12_getpixel24
403
        cmp     [ScreenBPP],byte 24
355
        cmp     [ScreenBPP],byte 24
404
        jz      ga24
356
        jz      ga24
405
        mov     [PUTPIXEL],dword Vesa12_putpixel32
357
        mov     [PUTPIXEL],dword Vesa12_putpixel32
406
        mov     [0xe024],dword Vesa12_getpixel32
358
        mov     [GETPIXEL],dword Vesa12_getpixel32
Line 407... Line -...
407
      ga24:
-
 
408
        jmp     v20ga24
-
 
409
      setvesa20:
-
 
410
        mov     [PUTPIXEL],dword Vesa20_putpixel24  ; Vesa 2.0
-
 
411
        mov     [0xe024],dword Vesa20_getpixel24
-
 
412
        cmp     [ScreenBPP],byte 24
-
 
413
        jz      v20ga24
-
 
414
      v20ga32:
-
 
415
        mov     [PUTPIXEL],dword Vesa20_putpixel32
-
 
416
        mov     [0xe024],dword Vesa20_getpixel32
-
 
417
      v20ga24:
-
 
418
        cmp     [SCR_MODE],word 0x12                ; 16 C VGA 640x480
359
      ga24:
419
        jne     no_mode_0x12
360
        jmp     v20ga24
420
        mov     [PUTPIXEL],dword VGA_putpixel
361
      setvesa20:
421
        mov     [0xe024],dword Vesa20_getpixel32
362
        mov     [PUTPIXEL],dword Vesa20_putpixel24  ; Vesa 2.0
422
      no_mode_0x12:
363
        mov     [GETPIXEL],dword Vesa20_getpixel24
Line 466... Line 407...
466
	;  and the contents of this field, plus 8, are copied into the SS register.
407
	;  and the contents of this field, plus 8, are copied into the SS register.
467
	; Bit 15–0 During the SYSCALL instruction, this field is copied into the CS register
408
	; Bit 15–0 During the SYSCALL instruction, this field is copied into the CS register
468
	;  and the contents of this field, plus 8, are copied into the SS register.
409
	;  and the contents of this field, plus 8, are copied into the SS register.
Line 469... Line 410...
469
 
410
 
470
	; mov	edx, (os_code + 16) * 65536 + os_code
411
	; mov	edx, (os_code + 16) * 65536 + os_code
Line 471... Line 412...
471
           mov edx, 0x1B0013
412
           mov edx, 0x1B0008
472
 
413
 
473
           mov eax, syscall_entry
414
           mov eax, syscall_entry
474
           mov ecx, MSR_AMD_STAR
415
           mov ecx, MSR_AMD_STAR
475
           wrmsr
416
           wrmsr
Line -... Line 417...
-
 
417
.noSYSCALL:
Line -... Line 418...
-
 
418
; -----------------------------------------
-
 
419
 
Line 476... Line -...
476
.noSYSCALL:
-
 
477
; -----------------------------------------
-
 
478
 
420
; LOAD IDT
479
 
421
 
480
 
422
           call build_interrupt_table
Line 481... Line -...
481
; MEMORY MODEL
-
 
482
           call mem_test
423
           lidt [idtreg]
483
           call init_mtrr
-
 
Line -... Line 424...
-
 
424
 
-
 
425
           call init_kernel_heap
-
 
426
           stdcall kernel_alloc, RING0_STACK_SIZE+512
-
 
427
           mov [os_stack_seg], eax
-
 
428
 
-
 
429
           lea esp, [eax+RING0_STACK_SIZE]
-
 
430
 
-
 
431
           mov [tss._ss0], os_stack
-
 
432
           mov [tss._esp0], esp
484
           call init_mem
433
           mov [tss._esp], esp
-
 
434
           mov [tss._cs],os_code
-
 
435
           mov [tss._ss],os_stack
485
           call init_page_map
436
           mov [tss._ds],app_data
486
 
437
           mov [tss._es],app_data
-
 
438
           mov [tss._fs],app_data
-
 
439
           mov [tss._gs],app_data
Line -... Line 440...
-
 
440
           mov [tss._io],128
487
; ENABLE PAGING
441
;Add IO access table - bit array of permitted ports
-
 
442
           mov edi, tss._io_map_0
488
           mov eax, sys_pgdir
443
           xor eax, eax
489
           mov cr3, eax
444
           not eax
Line 490... Line 445...
490
 
445
           mov ecx, 8192/4
491
           mov eax,cr0
446
           rep stosd                 ; access to 4096*8=65536 ports
492
           or eax,CR0_PG
-
 
493
           mov cr0,eax
447
 
Line 494... Line 448...
494
 
448
           mov  ax,tss0
-
 
449
           ltr  ax
-
 
450
 
-
 
451
           mov [LFBSize], 0x800000
495
           call init_kernel_heap
452
           call init_mtrr
496
           stdcall kernel_alloc, RING0_STACK_SIZE+512
453
 
Line 497... Line 454...
497
           mov [os_stack], eax
454
           call init_LFB
498
 
455
           call init_fpu
Line 525... Line 482...
525
 
482
 
526
           add eax, ebx
483
           add eax, ebx
Line 527... Line 484...
527
           mov [ipc_ptab], eax
484
           mov [ipc_ptab], eax
528
 
-
 
529
           call init_events
485
 
530
 
486
           call init_events
531
           mov eax, srv.fd-SRV_FD_OFFSET
487
           mov eax, srv.fd-SRV_FD_OFFSET
Line 532... Line 488...
532
           mov [srv.fd], eax
488
           mov [srv.fd], eax
Line 543... Line 499...
543
        shr     eax,16
499
        shr     eax,16
544
        mov     [graph_data_l+4],al
500
        mov     [graph_data_l+4],al
545
        mov     [graph_data_l+7],ah
501
        mov     [graph_data_l+7],ah
Line 546... Line 502...
546
 
502
 
547
 
-
 
548
; BUILD SCHEDULER
503
 
549
 
-
 
550
        call   build_scheduler ; sys32.inc
-
 
551
 
504
        mov [CURRENT_TASK],dword 1
552
; LOAD IDT
505
        mov [TASK_COUNT],dword 1
Line 553... Line 506...
553
        lidt   [cs:idtreg]
506
        mov [TASK_BASE],dword TASK_DATA
554
        cli
507
        mov [current_slot], SLOT_BASE+256
555
 
508
 
Line 573... Line 526...
573
include 'vmodeld.inc'
526
include 'vmodeld.inc'
574
;!!!!!!!!!!!!!!!!!!!!!!!
527
;!!!!!!!!!!!!!!!!!!!!!!!
Line 575... Line 528...
575
 
528
 
Line 576... Line 529...
576
; LOAD FONTS I and II
529
; LOAD FONTS I and II
577
 
530
 
578
        mov   [CURRENT_TASK],dword 1
531
        mov   esi,char
579
        mov   [TASK_COUNT],dword 1
-
 
580
        mov   [TASK_BASE],dword TASK_DATA
-
 
581
 
-
 
582
	pushad
-
 
583
	push	eax
532
        xor   ebx,ebx
584
	mov		eax,char  - std_application_base_address
-
 
585
	call	file_system_lfn
533
        mov   ecx,2560
586
	mov		eax,char2  - std_application_base_address
-
 
587
	call	file_system_lfn
-
 
588
	pop	eax
-
 
Line 589... Line -...
589
	popad
-
 
590
 
-
 
591
 
-
 
592
;        mov   esi,char
-
 
593
;        xor   ebx,ebx
-
 
594
;        mov   ecx,2560;26000
-
 
595
;        mov   edx,FONT_I
534
        mov   edx,FONT_I
596
;        call  fs_RamdiskRead
535
        call  fs_RamdiskRead
597
 
536
 
598
;        mov   esi,char2
537
        mov   esi,char2
599
;        xor   ebx,ebx
538
        xor   ebx,ebx
Line 600... Line 539...
600
;        mov   ecx,2560;26000
539
        mov   ecx,2560;26000
601
;        mov   edx,FONT_II
540
        mov   edx,FONT_II
Line 602... Line 541...
602
;        call  fs_RamdiskRead
541
        call  fs_RamdiskRead
Line 625... Line 564...
625
        call  rerouteirqs
564
        call  rerouteirqs
Line 626... Line 565...
626
 
565
 
627
        mov    esi,boot_tss
566
        mov    esi,boot_tss
Line -... Line 567...
-
 
567
        call   boot_log
-
 
568
 
-
 
569
; BUILD SCHEDULER
-
 
570
 
628
        call   boot_log
571
        call   build_scheduler ; sys32.inc
629
 
572
 
630
        mov    esi,boot_devices
573
        mov    esi,boot_devices
Line 631... Line 574...
631
        call   boot_log
574
        call   boot_log
Line 677... Line 620...
677
; SET UP OS TASK
620
; SET UP OS TASK
Line 678... Line 621...
678
 
621
 
679
        mov  esi,boot_setostask
622
        mov  esi,boot_setostask
Line 680... Line 623...
680
        call boot_log
623
        call boot_log
681
 
624
 
682
;        mov eax, fpu_data
625
        mov eax, fpu_data
683
;        mov  dword [SLOT_BASE+APPDATA.fpu_state], eax
626
        mov  dword [SLOT_BASE+APPDATA.fpu_state], eax
Line 684... Line 627...
684
;        mov  dword [SLOT_BASE+APPDATA.fpu_handler], 0
627
        mov  dword [SLOT_BASE+APPDATA.fpu_handler], 0
Line 685... Line 628...
685
;        mov  dword [SLOT_BASE+APPDATA.sse_handler], 0
628
        mov  dword [SLOT_BASE+APPDATA.sse_handler], 0
686
 
629
 
687
        ; name for OS/IDLE process
630
        ; name for OS/IDLE process
688
 
631
 
689
        mov dword [SLOT_BASE+256+APPDATA.app_name],   dword 'OS/I'
632
        mov dword [SLOT_BASE+256+APPDATA.app_name],   dword 'OS/I'
690
        mov dword [SLOT_BASE+256+APPDATA.app_name+4], dword 'DLE '
633
        mov dword [SLOT_BASE+256+APPDATA.app_name+4], dword 'DLE '
-
 
634
        mov edi, [os_stack_seg]
-
 
635
        mov dword [SLOT_BASE+256+APPDATA.pl0_stack], edi
-
 
636
        add edi, 0x2000-512
-
 
637
        mov dword [SLOT_BASE+256+APPDATA.fpu_state], edi
Line 691... Line 638...
691
        mov edi, [os_stack]
638
        mov dword [SLOT_BASE+256+APPDATA.io_map],\
692
        mov dword [SLOT_BASE+256+APPDATA.pl0_stack], edi
639
                  (tss._io_map_0-OS_BASE+PG_MAP)
693
        add edi, RING0_STACK_SIZE
640
        mov dword [SLOT_BASE+256+APPDATA.io_map+4],\
694
        mov dword [SLOT_BASE+256+APPDATA.fpu_state], edi
641
                  (tss._io_map_1-OS_BASE+PG_MAP)
Line 695... Line 642...
695
 
642
 
696
        mov esi, fpu_data
643
        mov esi, fpu_data
697
        mov ecx, 512/4
-
 
698
        cld
-
 
699
        rep movsd
644
        mov ecx, 512/4
Line 700... Line 645...
700
 
645
        cld
701
        mov dword [SLOT_BASE+256+APPDATA.fpu_handler], 0
646
        rep movsd
702
        mov dword [SLOT_BASE+256+APPDATA.sse_handler], 0
647
 
Line 703... Line 648...
703
 
648
        mov dword [SLOT_BASE+256+APPDATA.fpu_handler], 0
-
 
649
        mov dword [SLOT_BASE+256+APPDATA.sse_handler], 0
-
 
650
        mov dword [SLOT_BASE+256+APPDATA.cursor], ebx
-
 
651
 
-
 
652
        mov ebx, SLOT_BASE+256+APP_OBJ_OFFSET
704
        mov ebx, [def_cursor]
653
        mov  dword [SLOT_BASE+256+APPDATA.fd_obj], ebx
705
        mov dword [SLOT_BASE+256+APPDATA.cursor], ebx
654
        mov  dword [SLOT_BASE+256+APPDATA.bk_obj], ebx
706
 
655
 
Line 707... Line -...
707
        mov ebx, SLOT_BASE+256+APP_OBJ_OFFSET
-
 
708
        mov  dword [SLOT_BASE+256+APPDATA.fd_obj], ebx
-
 
709
        mov  dword [SLOT_BASE+256+APPDATA.bk_obj], ebx
-
 
710
 
-
 
711
        ; task list
-
 
712
        mov  [TASK_DATA+TASKDATA.wnd_number], 1 ; on screen number
-
 
713
        mov  [TASK_DATA+TASKDATA.pid], 1        ; process id number
-
 
714
        mov  [TASK_DATA+TASKDATA.mem_start], 0  ; process base address
-
 
715
 
-
 
716
        mov  edi,tss_data+tss_step
-
 
717
        mov ecx, (tss_step)/4
-
 
718
        xor eax, eax
-
 
719
        cld
-
 
720
        rep stosd
-
 
721
 
-
 
722
        mov  edi,tss_data+tss_step
-
 
723
        mov  [edi+TSS._ss0], os_data
-
 
724
        mov  eax,cr3
-
 
725
        mov  [edi+TSS._cr3],eax
-
 
726
        mov  [edi+TSS._eip],osloop
-
 
727
        mov  [edi+TSS._eflags],dword 0x11202 ; sti and resume
-
 
728
        mov eax, [os_stack]
-
 
729
        add eax, RING0_STACK_SIZE
-
 
730
        mov  [edi+TSS._esp], eax
-
 
731
        mov  [edi+TSS._cs],os_code
-
 
732
        mov  [edi+TSS._ss],os_data
656
        ; task list
733
        mov  [edi+TSS._ds],os_data
-
 
-
 
657
        mov  [CURRENT_TASK],dword 1
-
 
658
        mov  [TASK_COUNT],dword 1
-
 
659
        mov  [current_slot], SLOT_BASE+256
Line 734... Line 660...
734
        mov  [edi+TSS._es],os_data
660
        mov  [TASK_BASE],dword TASK_DATA
Line 735... Line 661...
735
        mov  [edi+TSS._fs],os_data
661
        mov  [TASK_DATA+TASKDATA.wnd_number], 1 ; on screen number
736
        mov  [edi+TSS._gs],os_data
662
        mov  [TASK_DATA+TASKDATA.pid], 1        ; process id number
Line 789... Line 715...
789
        movsd
715
        movsd
790
        movsd
716
        movsd
791
        movsd
717
        movsd
792
        call    load_skin
718
        call    load_skin
Line -... Line 719...
-
 
719
 
-
 
720
;protect io permission map
-
 
721
 
-
 
722
           mov esi, [default_io_map]
-
 
723
           stdcall map_page,esi,(tss._io_map_0-OS_BASE), PG_MAP
-
 
724
           add esi, 0x1000
-
 
725
           stdcall map_page,esi,(tss._io_map_1-OS_BASE), PG_MAP
-
 
726
 
-
 
727
           stdcall map_page,tss._io_map_0,\
-
 
728
                   (tss._io_map_0-OS_BASE), PG_MAP
-
 
729
           stdcall map_page,tss._io_map_1,\
-
 
730
                   (tss._io_map_1-OS_BASE), PG_MAP
793
 
731
 
794
; LOAD FIRST APPLICATION
-
 
795
        mov   [CURRENT_TASK],dword 1
-
 
796
        mov   [TASK_COUNT],dword 1
732
; LOAD FIRST APPLICATION
797
        cli
733
        cli
798
        cmp   byte [0x2f0000+0x9030],1
734
        cmp   byte [BOOT_VAR+0x9030],1
Line 799... Line 735...
799
        jne   no_load_vrr_m
735
        jne   no_load_vrr_m
800
 
736
 
801
        mov ebp, vrr_m
737
        mov ebp, vrr_m
Line 818... Line 754...
818
        cli
754
        cli
Line 819... Line 755...
819
 
755
 
820
        ;mov   [TASK_COUNT],dword 2
756
        ;mov   [TASK_COUNT],dword 2
Line 821... Line -...
821
        mov   [CURRENT_TASK],dword 1       ; set OS task fisrt
-
 
822
 
757
        mov   [CURRENT_TASK],dword 1       ; set OS task fisrt
823
 
758
 
824
; SET KEYBOARD PARAMETERS
759
; SET KEYBOARD PARAMETERS
Line 825... Line 760...
825
        mov   al, 0xf6         ; reset keyboard, scan enabled
760
        mov   al, 0xf6         ; reset keyboard, scan enabled
Line 880... Line 815...
880
 
815
 
881
;        mov    [dma_hdd],1
816
;        mov    [dma_hdd],1
882
        cmp     [IDEContrRegsBaseAddr], 0
817
        cmp     [IDEContrRegsBaseAddr], 0
Line -... Line 818...
-
 
818
        setnz   [dma_hdd]
-
 
819
 
883
        setnz   [dma_hdd]
820
;        stdcall init_uart_service, DRV_ENTRY
-
 
821
 
-
 
822
        sti
-
 
823
        call change_task
-
 
824
 
884
 
825
        jmp osloop
Line 885... Line 826...
885
        sti
826
 
Line -... Line 827...
-
 
827
        jmp   $                      ; wait here for timer to take control
-
 
828
 
-
 
829
        ; Fly :)
-
 
830
 
-
 
831
include 'unpacker.inc'
-
 
832
include 'fdo.inc'
-
 
833
 
-
 
834
align 4
-
 
835
boot_log:
-
 
836
         pushad
-
 
837
 
-
 
838
         mov   eax,10*65536
-
 
839
         mov   ax,word [boot_y]
-
 
840
         add   [boot_y],dword 10
-
 
841
         mov   ebx,0x80ffffff   ; ASCIIZ string with white color
-
 
842
         mov   ecx,esi
-
 
843
         mov   edi,1
-
 
844
         call  dtext
-
 
845
 
-
 
846
         mov   [novesachecksum],1000
-
 
847
         call  checkVga_N13
-
 
848
 
-
 
849
         cmp   [preboot_blogesc+OS_BASE+0x10000],byte 1
-
 
850
         je    .bll2
-
 
851
 
-
 
852
         cmp   esi,boot_tasking
-
 
853
         jne   .bll2
-
 
854
         ; begin ealex 04.08.05
-
 
855
;         in    al,0x61
-
 
856
;         and   al,01111111b
-
 
857
;         out   0x61,al
-
 
858
         ; end ealex 04.08.05
-
 
859
.bll1:   in    al,0x60    ; wait for ESC key press
-
 
860
         cmp   al,129
-
 
861
         jne   .bll1
-
 
862
 
-
 
863
.bll2:   popad
886
        jmp   $                      ; wait here for timer to take control
864
 
887
 
865
         ret
888
        ; Fly :)
866
 
889
 
867
 
890
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
868
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 988... Line 966...
988
 
966
 
Line 989... Line 967...
989
reserve_irqs_ports:
967
reserve_irqs_ports:
Line 990... Line 968...
990
 
968
 
991
        pushad
969
        pushad
992
 
970
 
993
        mov  [irq_owner+4*0],byte 1    ; timer
971
        mov  [irq_owner+4*0], 1    ; timer
994
        mov  [irq_owner+4*1],byte 1    ; keyboard
972
        mov  [irq_owner+4*1], 1    ; keyboard
995
        mov  [irq_owner+4*5],byte 1    ; sound blaster
973
        mov  [irq_owner+4*5], 1    ; sound blaster
996
        mov  [irq_owner+4*6],byte 1    ; floppy diskette
974
        mov  [irq_owner+4*6], 1    ; floppy diskette
-
 
975
        mov  [irq_owner+4*13], 1   ; math co-pros
997
        mov  [irq_owner+4*13],byte 1   ; math co-pros
976
        mov  [irq_owner+4*14], 1   ; ide I
998
        mov  [irq_owner+4*14],byte 1   ; ide I
977
        mov  [irq_owner+4*15], 1   ; ide II
999
        mov  [irq_owner+4*15],byte 1   ; ide II
978
 
1000
;        movzx eax,byte [0xf604]        ; mouse irq
979
;        movzx eax,byte [0xf604]        ; mouse irq
1001
;        dec   eax
980
;        dec   eax
Line 1087... Line 1066...
1087
        mov   [KEY_COUNT],byte 0                 ; keyboard buffer
1066
        mov   [KEY_COUNT],byte 0                 ; keyboard buffer
1088
        mov   [BTN_COUNT],byte 0                 ; button buffer
1067
        mov   [BTN_COUNT],byte 0                 ; button buffer
1089
;        mov   [MOUSE_X],dword 100*65536+100    ; mouse x/y
1068
;        mov   [MOUSE_X],dword 100*65536+100    ; mouse x/y
Line 1090... Line 1069...
1090
 
1069
 
1091
        push  eax
1070
        push  eax
1092
        mov   ax,[0x2f0000+0x900c]
1071
        mov   ax,[BOOT_VAR+0x900c]
1093
        shr   ax,1
1072
        shr   ax,1
1094
        shl   eax,16
1073
        shl   eax,16
1095
        mov   ax,[0x2f0000+0x900A]
1074
        mov   ax,[BOOT_VAR+0x900A]
1096
        shr   ax,1
1075
        shr   ax,1
1097
        mov   [MOUSE_X],eax
1076
        mov   [MOUSE_X],eax
Line 1098... Line 1077...
1098
        pop   eax
1077
        pop   eax
1099
 
1078
 
1100
        mov   byte [SB16_Status],0            ; Minazzi Paolo
1079
        mov   byte [SB16_Status],0            ; Minazzi Paolo
Line 1101... Line 1080...
1101
        mov   [display_data-12],dword 1       ; tiled background
1080
        mov   [display_data-12],dword 1       ; tiled background
1102
        mov   [BTN_ADDR],dword BUTTON_INFO    ; address of button list
1081
        mov   [BTN_ADDR],dword BUTTON_INFO    ; address of button list
1103
 
1082
 
Line 1104... Line 1083...
1104
     ;!! IP 04.02.2005:
1083
     ;!! IP 04.02.2005:
Line 1105... Line 1084...
1105
        mov   [next_usage_update], 100
1084
        mov   [next_usage_update], 100
1106
        mov   byte [0xFFFF], 0 ; change task if possible
1085
        mov   byte [DONT_SWITCH], 0 ; change task if possible
Line 1411... Line 1390...
1411
     sub   ecx,eax
1390
     sub   ecx,eax
1412
     add   ecx,esp
1391
     add   ecx,esp
1413
     mov   eax,[esp+64+32-8+4]
1392
     mov   eax,[esp+64+32-8+4]
1414
     push  edx                       ; add window start x & y
1393
     push  edx                       ; add window start x & y
1415
     mov   edx,[TASK_BASE]
1394
     mov   edx,[TASK_BASE]
-
 
1395
 
-
 
1396
     mov   edi,[CURRENT_TASK]
-
 
1397
     shl   edi,8
-
 
1398
 
1416
     mov   ebx,[edx-twdw+WDATA.box.left]
1399
     mov   ebx,[edx-twdw+WDATA.box.left]
1417
     add   ebx, [(edx-CURRENT_TASK)*8+SLOT_BASE+APPDATA.wnd_clientbox.left]
1400
     add   ebx,[edi+SLOT_BASE+APPDATA.wnd_clientbox.left]
1418
     shl   ebx,16
1401
     shl   ebx,16
1419
     add   ebx,[edx-twdw+WDATA.box.top]
1402
     add   ebx,[edx-twdw+WDATA.box.top]
1420
     add   ebx, [(edx-CURRENT_TASK)*8+SLOT_BASE+APPDATA.wnd_clientbox.top]
1403
     add   ebx,[edi+SLOT_BASE+APPDATA.wnd_clientbox.top]
1421
     add   eax,ebx
1404
     add   eax,ebx
1422
     pop   edx
1405
     pop   edx
1423
     mov   ebx,[esp+64+32-12+4]
1406
     mov   ebx,[esp+64+32-12+4]
1424
        and     ebx, not 0x80000000     ; force counted string
1407
        and     ebx, not 0x80000000     ; force counted string
1425
        mov     esi, [esp+64+4+4]
1408
        mov     esi, [esp+64+4+4]
Line 1654... Line 1637...
1654
 
1637
 
1655
sys_setup_err:
1638
sys_setup_err:
1656
     mov  [esp+36],dword -1
1639
     mov  [esp+36],dword -1
Line 1657... Line -...
1657
     ret
-
 
1658
 
1640
     ret
Line 1659... Line 1641...
1659
 
1641
 
Line 1660... Line 1642...
1660
align 4
1642
align 4
Line 1826... Line 1808...
1826
           ret
1808
           ret
1827
msset:
1809
msset:
1828
           ret
1810
           ret
Line 1829... Line 1811...
1829
 
1811
 
1830
app_load_cursor:
1812
app_load_cursor:
1831
           add ebx, new_app_base
1813
      ;     add ebx, new_app_base
1832
           cmp ebx, new_app_base
1814
           cmp ebx, OS_BASE
1833
           jb msset
1815
           jae msset
1834
           stdcall load_cursor, ebx, ecx
1816
           stdcall load_cursor, ebx, ecx
1835
           mov [esp+36], eax
1817
           mov [esp+36], eax
Line 1836... Line 1818...
1836
           ret
1818
           ret
Line 1999... Line 1981...
1999
        jmp     dword [sys_system_table + eax*4]
1981
        jmp     dword [sys_system_table + eax*4]
2000
@@:
1982
@@:
2001
        ret
1983
        ret
Line 2002... Line 1984...
2002
 
1984
 
2003
sysfn_shutdown:         ; 18.1 = BOOT
1985
sysfn_shutdown:         ; 18.1 = BOOT
2004
     mov  [0x2f0000+0x9030],byte 0
1986
     mov  [BOOT_VAR+0x9030],byte 0
Line 2005... Line 1987...
2005
  for_shutdown_parameter:
1987
  for_shutdown_parameter:
2006
 
1988
 
2007
     mov  eax,[TASK_COUNT]
1989
     mov  eax,[TASK_COUNT]
Line 2123... Line 2105...
2123
sysfn_shutdown_param:   ; 18.9 = system shutdown with param
2105
sysfn_shutdown_param:   ; 18.9 = system shutdown with param
2124
     cmp  ebx,1
2106
     cmp  ebx,1
2125
     jl   exit_for_anyone
2107
     jl   exit_for_anyone
2126
     cmp  ebx,4
2108
     cmp  ebx,4
2127
     jg   exit_for_anyone
2109
     jg   exit_for_anyone
2128
     mov  [0x2f0000+0x9030],bl
2110
     mov  [BOOT_VAR+0x9030],bl
2129
     jmp  for_shutdown_parameter
2111
     jmp  for_shutdown_parameter
Line 2130... Line 2112...
2130
 
2112
 
2131
sysfn_minimize:         ; 18.10 = minimize window
2113
sysfn_minimize:         ; 18.10 = minimize window
2132
     mov   [window_minimize],1
2114
     mov   [window_minimize],1
Line 2594... Line 2576...
2594
    ; Window state
2576
    ; Window state
Line 2595... Line 2577...
2595
 
2577
 
2596
    mov    esi,[esp]
2578
    mov    esi,[esp]
2597
    shl    esi,5
2579
    shl    esi,5
2598
    add    esi,window_data + WDATA.box
2580
    add    esi,window_data + WDATA.box
2599
    mov    al,[esi+window_data+WDATA.fl_wstate]
2581
    mov    al,[esi+WDATA.fl_wstate]
Line 2600... Line 2582...
2600
    mov    [edi],al
2582
    mov    [edi],al
2601
 
2583
 
Line 2606... Line 2588...
2606
 
2588
 
2607
    mov    eax,[TASK_COUNT]
2589
    mov    eax,[TASK_COUNT]
2608
    mov    [esp+36],eax
2590
    mov    [esp+36],eax
Line 2609... Line -...
2609
    ret
-
 
2610
 
-
 
2611
 
-
 
2612
 
2591
    ret
2613
 
2592
 
2614
align 4
2593
align 4
2615
sys_clock:
2594
sys_clock:
2616
        cli
2595
        cli
Line 2868... Line 2847...
2868
        test    [edi+window_data+WDATA.fl_wstyle],WSTYLE_HASCAPTION
2847
        test    [edi+window_data+WDATA.fl_wstyle],WSTYLE_HASCAPTION
2869
        jz      @f
2848
        jz      @f
2870
        mov     ecx,[edi*8+SLOT_BASE+APPDATA.wnd_caption]
2849
        mov     ecx,[edi*8+SLOT_BASE+APPDATA.wnd_caption]
2871
        or      ecx,ecx
2850
        or      ecx,ecx
2872
        jz      @f
2851
        jz      @f
2873
        add     ecx,[edi+twdw+TASKDATA.mem_start]
2852
        add     ecx,[edi+CURRENT_TASK+TASKDATA.mem_start]
Line 2874... Line 2853...
2874
 
2853
 
2875
        movzx   eax,[edi+window_data+WDATA.fl_wstyle]
2854
        movzx   eax,[edi+window_data+WDATA.fl_wstyle]
2876
        and     al,0x0F
2855
        and     al,0x0F
2877
        cmp     al,3
2856
        cmp     al,3
Line 3341... Line 3320...
3341
        setne cl
3320
        setne cl
Line 3342... Line 3321...
3342
 
3321
 
3343
        pop  edx eax
3322
        pop  edx eax
Line 3344... Line -...
3344
        ret
-
 
3345
 
-
 
3346
uglobal
-
 
3347
  mouse_active  db  0
3323
        ret
3348
endg
3324
 
3349
iglobal
3325
iglobal
Line 3350... Line 3326...
3350
  cpustring db '/RD/1/CPU',0
3326
  cpustring db '/RD/1/CPU',0
Line 3360... Line 3336...
3360
checkmisc:
3336
checkmisc:
Line 3361... Line 3337...
3361
 
3337
 
3362
    cmp   [ctrl_alt_del], 1
3338
    cmp   [ctrl_alt_del], 1
3363
    jne   nocpustart
3339
    jne   nocpustart
3364
    mov   ebp, cpustring
-
 
3365
    call   fs_execute               ; SPraid 8.03.2007
3340
    mov   ebp, cpustring
3366
    ;lea   esi,[ebp+6]
3341
    lea   esi,[ebp+6]
3367
    ;xor   ebx,ebx               ; no parameters
3342
    xor   ebx,ebx               ; no parameters
3368
    ;xor   edx,edx               ; no flags
3343
    xor   edx,edx               ; no flags
3369
    ;call  fs_RamdiskExecute.flags
3344
    call  fs_RamdiskExecute.flags
-
 
3345
    mov   [ctrl_alt_del], 0
3370
    mov   [ctrl_alt_del], 0
3346
 
3371
  nocpustart:
3347
nocpustart:
3372
    cmp   [mouse_active], 1
3348
    cmp   [mouse_active], 1
3373
    jne   mouse_not_active
3349
    jne   mouse_not_active
3374
    mov   [mouse_active], 0
3350
    mov   [mouse_active], 0
3375
    xor   edi, edi
3351
    xor   edi, edi
3376
    mov   ecx, [TASK_COUNT]
3352
    mov   ecx,  [TASK_COUNT]
3377
   set_mouse_event:
3353
set_mouse_event:
3378
    add   edi, 256
3354
    add   edi, 256
3379
    or    [edi+SLOT_BASE+APPDATA.event_mask], dword 00100000b
3355
    or    [edi+SLOT_BASE+APPDATA.event_mask], dword 100000b
3380
    loop  set_mouse_event
-
 
3381
  mouse_not_active:
-
 
Line -... Line 3356...
-
 
3356
    loop  set_mouse_event
3382
 
3357
 
3383
 
3358
mouse_not_active:
3384
    cmp   [REDRAW_BACKGROUND],byte 0               ; background update ?
3359
    cmp   [REDRAW_BACKGROUND],byte 0               ; background update ?
3385
    jz    nobackgr
3360
    jz    nobackgr
3386
    cmp    [background_defined], 0
3361
    cmp    [background_defined], 0
Line 3397... Line 3372...
3397
    mov   [REDRAW_BACKGROUND],byte 0
3372
    mov   [REDRAW_BACKGROUND],byte 0
3398
    mov   [MOUSE_BACKGROUND],byte 0
3373
    mov   [MOUSE_BACKGROUND],byte 0
Line 3399... Line 3374...
3399
 
3374
 
Line 3400... Line -...
3400
  nobackgr:
-
 
3401
 
3375
nobackgr:
Line 3402... Line 3376...
3402
 
3376
 
3403
    ; system shutdown request
3377
    ; system shutdown request
Line 3409... Line 3383...
3409
    sub  dl,2
3383
    sub  dl,2
Line 3410... Line 3384...
3410
 
3384
 
3411
    cmp  [SYS_SHUTDOWN],dl
3385
    cmp  [SYS_SHUTDOWN],dl
Line 3412... Line 3386...
3412
    jne  no_mark_system_shutdown
3386
    jne  no_mark_system_shutdown
3413
 
3387
 
3414
    mov   edx,0x3040
3388
    mov   edx,OS_BASE+0x3040
3415
    movzx ecx,byte [SYS_SHUTDOWN]
3389
    movzx ecx,byte [SYS_SHUTDOWN]
3416
    add   ecx,5
3390
    add   ecx,5
3417
  markz:
3391
markz:
Line 3448... Line 3422...
3448
    jnz   newct
3422
    jnz   newct
Line 3449... Line 3423...
3449
 
3423
 
Line 3450... Line -...
3450
    ret
-
 
3451
 
-
 
3452
 
3424
    ret
Line 3453... Line 3425...
3453
 
3425
 
Line 3454... Line 3426...
3454
 
3426
 
Line 3808... Line 3780...
3808
 
3780
 
Line 3809... Line 3781...
3809
set_io_access_rights:
3781
set_io_access_rights:
Line 3810... Line -...
3810
 
-
 
3811
     pushad
3782
 
3812
 
-
 
3813
     mov   edi,[CURRENT_TASK]
-
 
Line 3814... Line 3783...
3814
     imul  edi,tss_step
3783
     pushad
3815
     add   edi,tss_data+128
3784
 
Line 3816... Line 3785...
3816
;     add   edi,128
3785
     mov edi, tss._io_map_0
3817
 
3786
 
Line 3818... Line 3787...
3818
     mov   ecx,eax
3787
;     mov   ecx,eax
3819
     and   ecx,7    ; offset in byte
3788
;     and   ecx,7    ; offset in byte
Line 3820... Line 3789...
3820
 
3789
 
3821
     shr   eax,3    ; number of byte
3790
;     shr   eax,3    ; number of byte
Line 3822... Line 3791...
3822
     add   edi,eax
3791
;     add   edi,eax
3823
 
3792
 
-
 
3793
;     mov   ebx,1
Line 3824... Line 3794...
3824
     mov   ebx,1
3794
;     shl   ebx,cl
Line 3825... Line 3795...
3825
     shl   ebx,cl
3795
 
Line 3826... Line 3796...
3826
 
3796
     cmp   ebp,0                ; enable access - ebp = 0
Line -... Line 3797...
-
 
3797
     jne   siar1
3827
     cmp   ebp,0                ; enable access - ebp = 0
3798
 
Line 3828... Line 3799...
3828
     jne   siar1
3799
;     not   ebx
Line 3829... Line 3800...
3829
 
3800
;     and   [edi],byte bl
Line 4061... Line 4032...
4061
 
4032
 
Line 4062... Line 4033...
4062
syscall_putimage:                       ; PutImage
4033
syscall_putimage:                       ; PutImage
4063
 
4034
 
4064
     mov   edx,ecx
4035
     mov   edx,ecx
Line 4065... Line 4036...
4065
     mov   ecx,ebx
4036
     mov   ecx,ebx
4066
        lea     ebx, [eax+std_application_base_address]
4037
     mov   ebx, eax
4067
 
4038
 
4068
sys_putimage:
4039
sys_putimage:
Line 4073... Line 4044...
4073
     test  ecx,0xFFFF0000
4044
     test  ecx,0xFFFF0000
4074
     jnz   @f
4045
     jnz   @f
4075
  .exit:
4046
  .exit:
4076
     ret
4047
     ret
4077
 @@:
4048
 @@:
4078
        mov     edi,[CURRENT_TASK]
4049
        mov     edi,[current_slot]
4079
        shl     edi,8
-
 
4080
        add     dx,word[edi+SLOT_BASE+APPDATA.wnd_clientbox.top]
4050
        add     dx,word[edi+APPDATA.wnd_clientbox.top]
4081
        rol     edx,16
4051
        rol     edx,16
4082
        add     dx,word[edi+SLOT_BASE+APPDATA.wnd_clientbox.left]
4052
        add     dx,word[edi+APPDATA.wnd_clientbox.left]
4083
        rol     edx,16
4053
        rol     edx,16
4084
  .forced:
4054
  .forced:
4085
        push    ebp esi 0
4055
        push    ebp esi 0
4086
        mov     ebp, putimage_get24bpp
4056
        mov     ebp, putimage_get24bpp
4087
        mov     esi, putimage_init24bpp
4057
        mov     esi, putimage_init24bpp
Line 4103... Line 4073...
4103
        dec     [mouse_pause]
4073
        dec     [mouse_pause]
4104
        pop     ebp esi ebp
4074
        pop     ebp esi ebp
4105
        jmp     [draw_pointer]
4075
        jmp     [draw_pointer]
Line 4106... Line 4076...
4106
 
4076
 
4107
syscall_putimage_palette:
4077
syscall_putimage_palette:
4108
        lea     edi, [esi+std_application_base_address]
4078
        mov     edi, esi
4109
        mov     esi, edx
4079
        mov     esi, edx
4110
        mov     edx, ecx
4080
        mov     edx, ecx
4111
        mov     ecx, ebx
4081
        mov     ecx, ebx
4112
        lea     ebx, [eax+std_application_base_address]
4082
        mov     ebx, eax
4113
sys_putimage_palette:
4083
sys_putimage_palette:
4114
; ebx = pointer to image
4084
; ebx = pointer to image
4115
; ecx = [xsize]*65536 + [ysize]
4085
; ecx = [xsize]*65536 + [ysize]
4116
; edx = [xstart]*65536 + [ystart]
4086
; edx = [xstart]*65536 + [ystart]
Line 4176... Line 4146...
4176
; ecx x end
4146
; ecx x end
4177
	; edx y end
4147
	; edx y end
4178
; edi color
4148
; edi color
Line 4179... Line 4149...
4179
 
4149
 
4180
__sys_drawbar:
4150
__sys_drawbar:
4181
        mov     esi,[CURRENT_TASK]
-
 
4182
        shl     esi,8
4151
        mov     esi,[current_slot]
4183
        add     eax,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left]
4152
        add     eax,[esi+APPDATA.wnd_clientbox.left]
4184
        add     ecx,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left]
4153
        add     ecx,[esi+APPDATA.wnd_clientbox.left]
4185
        add     ebx,[esi+SLOT_BASE+APPDATA.wnd_clientbox.top]
4154
        add     ebx,[esi+APPDATA.wnd_clientbox.top]
4186
        add     edx,[esi+SLOT_BASE+APPDATA.wnd_clientbox.top]
4155
        add     edx,[esi+APPDATA.wnd_clientbox.top]
4187
  .forced:
4156
  .forced:
4188
    inc   [mouse_pause]
4157
    inc   [mouse_pause]
4189
;        call    [disable_mouse]
4158
;        call    [disable_mouse]
4190
    cmp   [SCR_MODE],word 0x12
4159
    cmp   [SCR_MODE],word 0x12
Line 4710... Line 4679...
4710
 
4679
 
4711
 
4680
 
4712
     mov   edx,[TASK_BASE]
4681
     mov   edx,[TASK_BASE]
4713
     add   eax,[edx-twdw+WDATA.box.left]
4682
     add   eax,[edx-twdw+WDATA.box.left]
4714
     add   ebx,[edx-twdw+WDATA.box.top]
-
 
4715
        mov     edi,[CURRENT_TASK]
4683
     add   ebx,[edx-twdw+WDATA.box.top]
4716
        shl     edi,8
4684
        mov     edi,[current_slot]
4717
        add     eax,[edi+SLOT_BASE+APPDATA.wnd_clientbox.left]
4685
        add     eax,[edi+APPDATA.wnd_clientbox.left]
4718
        add     ebx,[edi+SLOT_BASE+APPDATA.wnd_clientbox.top]
4686
        add     ebx,[edi+APPDATA.wnd_clientbox.top]
4719
     xor   edi,edi ; no force
4687
     xor   edi,edi ; no force
4720
;     mov   edi,1
4688
;     mov   edi,1
Line 4726... Line 4694...
4726
syscall_writetext:                      ; WriteText
4694
syscall_writetext:                      ; WriteText
Line 4727... Line 4695...
4727
 
4695
 
4728
     mov   edi,[TASK_BASE]
4696
        mov   edi,[TASK_BASE]
4729
     mov   ebp,[edi-twdw+WDATA.box.left]
4697
        mov   ebp,[edi-twdw+WDATA.box.left]
4730
        push    esi
4698
        push  esi
4731
        mov     esi,[CURRENT_TASK]
-
 
4732
        shl     esi,8
4699
        mov   esi,[current_slot]
4733
        add     ebp,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left]
4700
        add   ebp,[esi+APPDATA.wnd_clientbox.left]
4734
     shl   ebp,16
4701
        shl   ebp,16
4735
     add   ebp,[edi-twdw+WDATA.box.top]
4702
        add   ebp,[edi-twdw+WDATA.box.top]
4736
        add     bp,word[esi+SLOT_BASE+APPDATA.wnd_clientbox.top]
4703
        add   bp,word[esi+APPDATA.wnd_clientbox.top]
4737
        pop     esi
4704
        pop   esi
4738
     add   ecx,[edi+TASKDATA.mem_start]
4705
        add   ecx,[edi+TASKDATA.mem_start]
4739
     add   eax,ebp
4706
        add   eax,ebp
4740
     xor   edi,edi
4707
        xor   edi,edi
Line 4766... Line 4733...
4766
     je    drectr
4733
     je    drectr
4767
     movzx ecx,ax
4734
     movzx ecx,ax
4768
     shr   eax,16
4735
     shr   eax,16
4769
     movzx edx,bx
4736
     movzx edx,bx
4770
     shr   ebx,16
4737
     shr   ebx,16
4771
        mov     esi,[CURRENT_TASK]
4738
        mov     esi,[current_slot]
4772
        shl     esi,8
-
 
4773
        add     eax,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left]
4739
        add     eax,[esi+APPDATA.wnd_clientbox.left]
4774
        add     ebx,[esi+SLOT_BASE+APPDATA.wnd_clientbox.top]
4740
        add     ebx,[esi+APPDATA.wnd_clientbox.top]
4775
     add   ecx,eax
4741
     add   ecx,eax
4776
     add   edx,ebx
4742
     add   edx,ebx
4777
     jmp   [drawbar]
4743
     jmp   [drawbar]
4778
    drectr:
4744
    drectr:
4779
     ret
4745
     ret
Line 4826... Line 4792...
4826
     inc   ecx
4792
     inc   ecx
4827
     xor   edx,edx
4793
     xor   edx,edx
4828
     div   ecx
4794
     div   ecx
4829
     mov   ebx,edx
4795
     mov   ebx,edx
4830
     xchg  eax,ebx
4796
     xchg  eax,ebx
4831
     call  dword [0xe024]
4797
     call  dword [GETPIXEL]
4832
     mov   [esp+36],ecx
4798
     mov   [esp+36],ecx
4833
     ret
4799
     ret
Line 4834... Line 4800...
4834
 
4800
 
Line 4848... Line 4814...
4848
syscall_drawline:                       ; DrawLine
4814
syscall_drawline:                       ; DrawLine
Line 4849... Line 4815...
4849
 
4815
 
4850
     mov   edi,[TASK_BASE]
4816
     mov   edi,[TASK_BASE]
4851
     movzx edx,word[edi-twdw+WDATA.box.left]
4817
     movzx edx,word[edi-twdw+WDATA.box.left]
4852
     mov   ebp,edx
4818
     mov   ebp,edx
4853
        mov     esi,[CURRENT_TASK]
-
 
4854
        shl     esi,8
4819
        mov     esi,[current_slot]
4855
        add     ebp,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left]
4820
        add     ebp,[esi+APPDATA.wnd_clientbox.left]
4856
        add     dx,word[esi+SLOT_BASE+APPDATA.wnd_clientbox.left]
4821
        add     dx,word[esi+APPDATA.wnd_clientbox.left]
4857
     shl   edx,16
4822
     shl   edx,16
4858
     add   ebp,edx
4823
     add   ebp,edx
4859
     movzx edx,word[edi-twdw+WDATA.box.top]
4824
     movzx edx,word[edi-twdw+WDATA.box.top]
4860
     add   eax,ebp
4825
     add   eax,ebp
4861
     mov   ebp,edx
4826
     mov   ebp,edx
4862
        add     ebp,[esi+SLOT_BASE+APPDATA.wnd_clientbox.top]
4827
        add     ebp,[esi+APPDATA.wnd_clientbox.top]
4863
        add     dx,word[esi+SLOT_BASE+APPDATA.wnd_clientbox.top]
4828
        add     dx,word[esi+APPDATA.wnd_clientbox.top]
4864
     shl   edx,16
4829
     shl   edx,16
4865
     xor   edi,edi
4830
     xor   edi,edi
4866
     add   edx,ebp
4831
     add   edx,ebp
4867
     add   ebx,edx
4832
     add   ebx,edx
Line 4959... Line 4924...
4959
    jne    @f
4924
    jne    @f
4960
    or    [esp + 56], byte 1    ; error
4925
    or    [esp + 56], byte 1    ; error
4961
    mov    [esp + 36], dword 8    ; 32-bit protected-mode interface not supported
4926
    mov    [esp + 36], dword 8    ; 32-bit protected-mode interface not supported
4962
    ret
4927
    ret
Line -... Line 4928...
-
 
4928
 
4963
 
4929
@@:
4964
@@:    xchg    eax, ecx
4930
    xchg    eax, ecx
Line 4965... Line 4931...
4965
    xchg    ebx, ecx
4931
    xchg    ebx, ecx
4966
 
4932
 
4967
    cmp    al, 3
4933
    cmp    al, 3
Line 4971... Line 4937...
4971
    mov    [esp + 36], eax
4937
    mov    [esp + 36], eax
4972
    shr    eax, 16
4938
    shr    eax, 16
4973
    mov    [esp + 32], eax
4939
    mov    [esp + 32], eax
4974
    ret
4940
    ret
Line -... Line 4941...
-
 
4941
 
-
 
4942
@@:
-
 
4943
 
-
 
4944
    mov esi, [master_tab+(OS_BASE shr 20)]
-
 
4945
    xchg [master_tab], esi
-
 
4946
    push esi
-
 
4947
    mov edi, cr3
-
 
4948
    mov cr3, edi                 ;flush TLB
4975
 
4949
 
-
 
4950
    call    pword [apm_entry]    ; call APM BIOS
-
 
4951
 
-
 
4952
    xchg eax, [esp]
-
 
4953
    mov [master_tab], eax
-
 
4954
    mov eax, cr3
-
 
4955
    mov cr3, eax
-
 
4956
    pop eax
4976
@@:    call    pword [apm_entry]    ; call APM BIOS
4957
 
4977
    mov    [esp + 8 ], edi
4958
    mov    [esp + 8 ], edi
4978
    mov    [esp + 12], esi
4959
    mov    [esp + 12], esi
4979
    mov    [esp + 24], ebx
4960
    mov    [esp + 24], ebx
4980
    mov    [esp + 28], edx
4961
    mov    [esp + 28], edx
4981
    mov    [esp + 32], ecx
4962
    mov    [esp + 32], ecx
4982
    mov    [esp + 36], eax
4963
    mov    [esp + 36], eax
4983
    setc    al
4964
    setc    al
4984
    and    [esp + 56], byte 0xfe
4965
    and    [esp + 56], byte 0xfe
-
 
4966
    or    [esp + 56], al
-
 
4967
 
4985
    or    [esp + 56], al
4968
 
4986
    ret
4969
    ret
Line 4987... Line 4970...
4987
; -----------------------------------------
4970
; -----------------------------------------
Line 4988... Line 4971...
4988
 
4971
 
Line 4989... Line 4972...
4989
align 4
4972
align 4
4990
 
4973
 
Line -... Line 4974...
-
 
4974
undefined_syscall:                      ; Undefined system call
-
 
4975
 
Line 4991... Line -...
4991
undefined_syscall:                      ; Undefined system call
-
 
4992
 
-
 
4993
     mov   [esp+36],dword -1
-
 
4994
     ret
-
 
4995
 
-
 
4996
 
-
 
4997
;clear_busy_flag_at_caller:
4976
     mov   [esp+36],dword -1
4998
 
-
 
4999
;      push  edi
4977
     ret
5000
 
-
 
5001
;      mov   edi,[CURRENT_TASK]    ; restore processes tss pointer in gdt, busyfl?
4978
 
5002
;      imul  edi,8
-
 
5003
;      mov   [edi+gdts+ tss0 +5], word 01010000b *256 +11101001b
-
 
5004
 
-
 
5005
;      pop   edi
-
 
5006
 
-
 
5007
;      ret
-
 
5008
 
-
 
5009
 
-
 
5010
keymap:
-
 
5011
 
-
 
5012
     db   '6',27
-
 
5013
     db   '1234567890-=',8,9
-
 
5014
     db   'qwertyuiop[]',13
-
 
5015
     db   '~asdfghjkl;',39,96,0,'\zxcvbnm,./',0,'45 '
-
 
5016
     db   '@234567890123',180,178,184,'6',176,'7'
-
 
5017
     db   179,'8',181,177,183,185,182
-
 
5018
     db   'AB
-
 
5019
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
4979
align 4
5020
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-
 
5021
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
4980
system_shutdown:          ; shut down the system
5022
 
-
 
5023
 
4981
 
5024
keymap_shift:
-
 
5025
 
-
 
5026
     db   '6',27
-
 
5027
     db   '!@#$%^&*()_+',8,9
-
 
5028
     db   'QWERTYUIOP{}',13
-
 
5029
     db   '~ASDFGHJKL:"~',0,'|ZXCVBNM<>?',0,'45 '
-
 
5030
     db   '@234567890123',180,178,184,'6',176,'7'
-
 
5031
     db   179,'8',181,177,183,185,182
-
 
5032
     db   'AB>D',255,'FGHIJKLMNOPQRSTUVWXYZ'
-
 
5033
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-
 
5034
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
4982
           cmp byte [BOOT_VAR+0x9030], 1
5035
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
4983
           jne @F
5036
 
-
 
5037
 
-
 
5038
keymap_alt:
-
 
5039
 
-
 
5040
     db   ' ',27
-
 
5041
     db   ' @ $  {[]}\ ',8,9
-
 
5042
     db   '            ',13
-
 
5043
     db   '             ',0,'           ',0,'4',0,' '
-
 
5044
     db   '             ',180,178,184,'6',176,'7'
-
 
5045
     db   179,'8',181,177,183,185,182
-
 
5046
     db   'ABCD',255,'FGHIJKLMNOPQRSTUVWXYZ'
-
 
5047
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-
 
5048
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-
 
5049
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-
 
5050
 
-
 
5051
 
-
 
5052
; device irq owners
-
 
5053
uglobal
-
 
5054
irq_owner:       ; process id
-
 
5055
 
-
 
5056
     dd   0x0
-
 
5057
     dd   0x0
-
 
5058
     dd   0x0
-
 
5059
     dd   0x0
-
 
5060
     dd   0x0
-
 
5061
     dd   0x0
-
 
5062
     dd   0x0
-
 
5063
     dd   0x0
-
 
5064
     dd   0x0
-
 
5065
     dd   0x0
-
 
5066
     dd   0x0
-
 
5067
     dd   0x0
-
 
5068
     dd   0x0
-
 
5069
     dd   0x0
-
 
5070
     dd   0x0
-
 
5071
     dd   0x0
-
 
5072
endg
-
 
5073
 
-
 
5074
 
-
 
5075
; on irq read ports
-
 
5076
uglobal
-
 
5077
  irq00read  dd  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-
 
5078
  irq01read  dd  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-
 
5079
  irq02read  dd  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-
 
5080
  irq03read  dd  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-
 
5081
  irq04read  dd  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-
 
5082
  irq05read  dd  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-
 
5083
  irq06read  dd  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-
 
5084
  irq07read  dd  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-
 
5085
  irq08read  dd  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-
 
5086
  irq09read  dd  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-
 
5087
  irq10read  dd  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-
 
Line 5088... Line 4984...
5088
  irq11read  dd  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
4984
           ret
5089
  irq12read  dd  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
4985
@@:
5090
  irq13read  dd  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-
 
5091
  irq14read  dd  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-
 
5092
  irq15read  dd  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-
 
Line -... Line 4986...
-
 
4986
           call stop_all_services
5093
endg
4987
           push 3                ; stop playing cd
5094
 
4988
           pop  eax
5095
; status
4989
           call sys_cd_audio
5096
uglobal
4990
 
-
 
4991
yes_shutdown_param:
-
 
4992
           cli
Line -... Line 4993...
-
 
4993
 
-
 
4994
           mov  eax, kernel_file ; load kernel.mnt to 0x8000:0
5097
  hd1_status                  dd 0x0  ; 0 - free : other - pid
4995
           push 12
5098
  application_table_status    dd 0x0  ; 0 - free : other - pid
4996
           pop  esi
Line 5099... Line 4997...
5099
endg
4997
           xor  ebx,ebx
5100
 
4998
           or   ecx,-1
5101
; device addresses
4999
           mov  edx, OS_BASE+0x80000
-
 
5000
           call fileread
5102
uglobal
5001
 
Line 5103... Line 5002...
5103
  mididp     dd 0x0
5002
           mov  esi, restart_kernel_4000+OS_BASE+0x10000 ; move kernel re-starter to 0x4000:0
Line 5104... Line -...
5104
  midisp     dd 0x0
-
 
5105
 
5003
           mov  edi,OS_BASE+0x40000
5106
  cdbase     dd 0x0
5004
           mov  ecx,1000
5107
  cdid       dd 0x0
-
 
5108
 
-
 
5109
  hdbase              dd   0x0  ; for boot 0x1f0
-
 
5110
  hdid                dd   0x0
5005
           rep  movsb
Line 5111... Line -...
5111
  hdpos               dd   0x0  ; for boot 0x1
-
 
5112
  fat32part           dd   0x0  ; for boot 0x1
5006
 
5113
 
5007
           mov  esi,OS_BASE+0x2F0000    ; restore 0x0 - 0xffff
Line -... Line 5008...
-
 
5008
           mov  edi, OS_BASE
-
 
5009
           mov  ecx,0x10000/4
5114
  ;part2_ld            dd   0x0
5010
           cld
-
 
5011
           rep movsd
Line 5115... Line 5012...
5115
 
5012
 
5116
;* start code - Mario79
5013
           call restorefatchain
-
 
5014
 
Line 5117... Line -...
5117
mouse_pause         dd   0
-
 
5118
MouseTickCounter    dd   0
-
 
5119
ps2_mouse_detected  db   0
-
 
5120
com1_mouse_detected db   0
-
 
5121
com2_mouse_detected db   0
-
 
5122
;* end code - Mario79
-
 
Line 5123... Line -...
5123
 
-
 
5124
wraw_bacground_select db 0
-
 
5125
  lba_read_enabled    dd   0x0  ; 0 = disabled , 1 = enabled
5015
           mov al, 0xFF
5126
  pci_access_enabled  dd   0x0  ; 0 = disabled , 1 = enabled
-
 
5127
 
-
 
Line 5128... Line 5016...
5128
  sb16       dd 0x0
5016
           out 0x21, al
5129
 
-
 
5130
  buttontype         dd 0x0
-
 
Line 5131... Line -...
5131
  windowtypechanged  dd 0x0
-
 
5132
 
-
 
5133
align 4
-
 
5134
  cpu_caps    dd 4 dup(0)
5017
           out 0xA1, al
5135
  pg_data  PG_DATA
5018
 
Line 5136... Line -...
5136
  heap_test   dd ?
-
 
5137
  hd_entries  rd 1     ;unused ? 0xfe10
-
 
5138
endg
-