我从网上发现了一个叫MenuetOS的小操作系统,下载下来后只有800多K;据说这个操作系统是作者利用业余时间写的。该操作系统的官方网站上还有关于如何在MenuetOS上编程的示例,但是只有汇编语言的,下面就是其中的一个:

  1 ;
  2 ;   64 bit Menuet example
  3 ;
  4 ;   Compile with FASM 1.60 or above
  5 ;
  6 
  7 use64
  8 
  9     org   0x0
 10 
 11     db    'MENUET64'              ; Header identifier
 12     dq    0x01                    ; Version
 13     dq    START                   ; Start of code
 14     dq    image_end               ; Size of image
 15     dq    0x100000                ; Memory for app
 16     dq    0xffff0                 ; Esp
 17     dq    0x00                    ; Prm 
 18     dq    0x00                    ; Icon
 19 
 20 
 21 START:
 22 
 23     call  draw_window       ; At first, draw the window
 24 
 25 still:
 26 
 27     mov   rax , 0xA         ; Wait here for event
 28     int   0x60
 29 
 30     test  rax , 0x1         ; Window redraw
 31     jnz   window_event
 32     test  rax , 0x2         ; Keyboard press
 33     jnz   key_event
 34     test  rax , 0x4         ; Button press
 35     jnz   button_event
 36 
 37     jmp   still
 38 
 39 window_event:
 40 
 41     call  draw_window
 42     jmp   still
 43 
 44 key_event:
 45 
 46     mov   rax , 0x2        ; Read the key and ignore
 47     int   0x60
 48 
 49     jmp   still
 50 
 51 button_event:
 52 
 53     mov   rax , 0x11
 54     int   0x60
 55 
 56     ; rax = status
 57     ; rbx = button id
 58 
 59     cmp   rbx , 0x10000001
 60     jne   no_application_terminate_button
 61     mov   rax , 0x200
 62     int   0x60
 63   no_application_terminate_button:
 64 
 65     cmp   rbx , 0x106
 66     jne   no_application_terminate_menu
 67     mov   rax , 0x200
 68     int   0x60
 69   no_application_terminate_menu:
 70 
 71     jmp   still
 72 
 73 
 74 draw_window:
 75 
 76     mov   rax , 0xC                          ; Beginning of window draw
 77     mov   rbx , 0x1
 78     int   0x60
 79 
 80     mov   rax , 0x0                          ; Draw window
 81     mov   rbx , 0x0000010000000100           ; x start & size
 82     mov   rcx , 0x00000080000000C0           ; y start & size
 83     mov   rdx , 0x0000000000FFFFFF           ; type    & border color  
 84     mov   r8  , 0x0000000000000001           ; draw flags
 85     mov   r9  , window_label                 ; 0 or label - asciiz
 86     mov   r10 , menu_struct                  ; 0 or pointer to menu struct
 87     int   0x60
 88 
 89     mov   rax , 0x4                          ; Display text
 90     mov   rbx , text
 91     mov   rcx , 0x20
 92     mov   rdx , 0x40
 93     mov   rsi , 0x0
 94     mov   r9  , 0x1
 95     mov   r8  , 0x3
 96 
 97   newline:
 98 
 99     int   0x60
100 
101     add   rbx , 0x1F
102     add   rdx , 0x10
103     dec   r8
104     jnz   newline
105 
106     mov   rax , 0xC                          ; End of window draw
107     mov   rbx , 0x2
108     int   0x60
109 
110     ret
111 
112 
113 ; Data area
114 
115 window_label:
116 
117     db    'EXAMPLE',0     ; Window label
118 
119 text:
120 
121     db    'HELLO WORLD FROM 64 BIT MENUET',0
122     db    'Second line                   ',0
123     db    'Third line                    ',0
124 
125 menu_struct:               ; Menu Struct
126 
127     dq   0                 ; Version
128 
129     dq   0x100             ; Start value of ID to return ( ID + Line )
130 
131                            ; Returned when menu closes and
132                            ; user made no selections.
133 
134     db   0,'FILE',0        ; ID = 0x100 + 1
135     db   1,'New',0         ; ID = 0x100 + 2
136     db   1,'Open..',0      ; ID = 0x100 + 3
137     db   1,'Save..',0      ; ID = 0x100 + 4
138     db   1,'-',0           ; ID = 0x100 + 5
139     db   1,'Quit',0        ; ID = 0x100 + 6
140 
141     db   0,'HELP',0        ; ID = 0x100 + 7
142     db   1,'Contents..',0  ; ID = 0x100 + 8
143     db   1,'About..',0     ; ID = 0x100 + 9
144 
145     db   255               ; End of Menu Struct
146 
147 image_end:
148 
149 

我不懂汇编,但是我感觉汇编语言的语句似乎都比较短。
下面是一些官方网站上提供的截图:

谁知道这会不会是下一个Windows呢?

转载于:https://www.cnblogs.com/empty/archive/2008/07/16/1244162.html

小巧的menuetOS相关推荐

  1. 小巧的日志记录组件 - 开源研究系列文章

    今天给大家带来一个小巧的日志记录组件LogHelper.这个组件是由Log4Net这个组件的由来而来的,不过只是写入.txt文本文件而已.如果能够对大家的项目有帮助那就更好了. 首先,打开.SLN解决 ...

  2. 清瘦的记录者: 一个比dbutils更小巧、好用的的持久化工具

    https://gitee.com/bitprince/memory 1. 概述 1.1 连接.语句和结果集 从JDBC的规范上看,其对数据访问层有相当简洁的抽象:1.连接(connection) 2 ...

  3. 精心分享7个小巧却强大的电脑端小软件,让人大开眼界!

    分享7个小巧却强大的电脑端小软件 1.PotPlayer PotPlayer是一款非常强大的PC端播放器软件,支持多种媒体格式,启动速度极快,播放稳定,还支持给视频加字幕,设置个性皮肤等. Potpl ...

  4. TaxonKit:小巧、高效、实用的NCBI分类学数据命令行工具

    TaxonKit: 小巧.高效.实用的NCBI分类学数据命令行工具集 宏基因组按:NCBI物种分类注释信息格式复杂,存在层级不整齐.缺失.名称变动等问题,在使用中存在一定困难.最近发现了一款分类信息查 ...

  5. Mac上小巧实用的GIF格式录屏软件 LICEcap

    很多时候,作为程序猿,你将不只是一名程序猿,你得会十八般武艺才能笑傲江湖,东方不败.哈哈!!! 美工有事请假了,我要临时上岗,打开PS,各种截图.产品请假了,或许我得临时给自己套上产品助理的角色,为刚 ...

  6. 微型小乐器 : MicroSynth 小巧而优美

    简 介: 介绍了由 David Levi 的博客中他制作的一款小巧优雅的电子琴.他巧妙的利用了电阻网络形成了指数电压电路,进而产生了准确的音节频率.这样的设计给与我们更多有趣的电路设计技巧.很可惜在其 ...

  7. 可以分屏的软件_分享一款非常好用,且小巧的分屏软件

    首先需要说明的是分屏软件并不是安装上就给你把屏幕分成一块一块从此一个窗口无法全屏显示.而是大部分情况下你依然是全屏显示.但如果你拖动窗口标题栏,就可以快速把他们显示到制定的区域.就像下图动画显示的这样 ...

  8. waves服务器系统盘,Waves 新款小巧化 SoundGrid 服务器 Server One-C 和 Extreme Server-C 公开...

    继超便携的SoundGrid Mobile Server服务器之后,Waves新款机架版Server One-C和Extreme Server-C服务器也终于在官网上可以看到了. 产品名中的" ...

  9. Duktape:一个新的小巧的超精简可嵌入式JavaScript引擎

    Duktape是一个可嵌入的Javascript引擎,主要关注便携性和精简及紧凑性. Duktape很容易集成到C/C++项目: 添加duktape.c和duktape.h到您的build中,并使用D ...

  10. 固态硬盘怎么看出厂日期_闲置的M.2固态硬盘怎么办?做个小巧便携高速的移动固态硬盘吧...

    随着存储技术的升级,很多人都用上了M.2接口的固态硬盘,特别是2018年迎来了集中爆发,存储芯片的价格一降再降,固态硬盘的容量不断攀升.价格不断跳水,让许多人都用上了大容量固态硬盘,毕竟选择更大容量的 ...

最新文章

  1. emmet中文文档 (转载)
  2. 要成为一个成熟的软件工程师不容易啊
  3. 在ubuntu上搭建LNMP服务器
  4. VBScript的参数引用
  5. JFace中TableViewer的使用
  6. vue比php的优势,vue.js的优势是什么
  7. 在一切都是虚的世界里,你能做的是什么?
  8. 国外工程师这样分析女人
  9. 我们整理了20个Python项目,送给正在求职的你
  10. C#生成Word文档
  11. 虚拟机3-11-14:53,工作记录
  12. 极光短信验证码的集成过程
  13. 如何在iPhone或iPad上使用控制中心
  14. vue webapp之music(六)利用axios与后端接口代理请求歌单推荐数据
  15. stk中天体坐标系的定义
  16. 【读书笔记】TableauFineBi 学习小记
  17. 亚马逊云科技的十年创新之路
  18. 第1章 数字图像处理绪论
  19. H3C设备链路聚合(LACP/PAGP)
  20. android电视怎么打开网页,智能电视怎么浏览网页?这三款浏览器完美解决!

热门文章

  1. 用计算机中的知识秀恩爱,用你的专业,说最美的情话......
  2. 苹果app退款_你有一笔来自苹果App Store的不明扣款
  3. fiilt1左耳连不上_FIIL T1完美解决真无线耳机的痛点:更快更稳更自由
  4. Android xml 画上半圆 矩形,Android 半圆矩形的实现
  5. 强大的 Stream 函数式编程
  6. 2023跨境出海指南:韩国网红营销白皮书
  7. BZOJ 1778: [Usaco2010 Hol]Dotp 驱逐猪猡
  8. 新的用户故事待办列表就是一副地图
  9. 世界线(bzoj2894)(广义后缀自动机)
  10. GL-Currencies-Rates-Daily:Error:APP-FND-01206: This record already exists-文档 ID 292731.1