Menuetos32桌面- 启动过程

1.磁盘引导(BOOTMOSF.asm,在A086B中,加载kernel.mnt)

2.在kernel中,首先调用BOOTCODE.inc配置参数

3.CR0 Flags - Protected mode and Paging

4.Enabling 32 bit protected mode 进入32位保护模式

5.CLEAR 0x280000-0xF00000

6.SAVE & CLEAR 0-0xffff

7.SAVE REAL MODE VARIABLES

8.GRAPHICS ADDRESSES

9.MEMORY MODEL

10.READ RAMDISK IMAGE FROM HD

11.CALCULATE FAT CHAIN FOR RAMDISK

12.LOAD FONTS I and II

13.REDIRECT ALL IRQ'S TO INT'S 0x20-0x2f

14.BUILD SCHEDULER

15.LOAD IDT

16.READ CPUID RESULT

17.DETECT DEVICES

18.TIMER SET TO 1/100 S

19.SET MOUSE

20.SET PRELIMINARY WINDOW STACK AND POSITIONS

21.SET BACKGROUND DEFAULTS

22.RESERVE SYSTEM IRQ'S JA PORT'S

23.SET PORTS FOR IRQ HANDLERS

24.SET UP OS TASK

     在此处实际上加载了osloop,而osloop中则做了如下:

     call check_mouse_data

  call draw_pointer

    call check_menus
    call check_scrolls
    call checkbuttons
    call checkwindows
    call check_window_move_request

    call checkmisc
    call checkEgaCga

    call stack_handler

    call checkidle

25.READ TSC / SECOND

26.SET VARIABLES

27.STACK AND FDC

28.PALETTE FOR 320x200 and 640x480 16 col

29.LOAD DEFAULT SKIN

30.MTRR'S

31.LOAD FIRST APPLICATION

  在此处调用launcher,而launcher则调用了RDBOOT.dat, 画出了桌面背景,桌面图标和底部任务栏。

32.START MULTITASKING

33.UNMASK ALL IRQ'S

注:从menuetos网站中下载的32位源代码中的launcher.asm有问题。发电子邮件问Ville是否可以给出launcher.asm的源代码,Ville给出一个旧版本的下载地址:https://sourceforge.net/projects/menuet/files/085/c/。从此处下载的launcher.asm源代码是对的。此源代码中注释指出即使没有RDBOOT.DAT, 也会缺省加载桌面背景,桌面图标和底部任务栏。

posted on 2022-07-25 15:37  oemwang  阅读(315)  评论(0)    收藏  举报

导航