资源简介
里面有一个简单的操作系统,还有操作系统生成的源代码,代码附有注释。

代码片段和文件信息
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
public class HelloWorldOS {
/*
* 这段二进制数据将是我们HelloWorld OS 的内核,它的作用是让BIOS将其加载到地址0x8000然后调用BIOS中断在屏幕上打印出一行字符串
*/
private int[] imgContent = new int[]{
0xeb0x4e0x900x480x450x4c0x4c0x4f0x490x500x4c0x000x020x010x010x000x020xe0
0x000x400x0b0xf00x090x000x120x000x020x000x000x000x000x000x400x0b0x000x000x000x000x29
0xff0xff0xff0xff0x480x450x4c0x4c0x4f0x2d0x4f0x530x200x200x200x460x410x540x310x32
0x200x200x200x000x000x000x000x000x000x000x000x000x000x000x000x000x000x000x000x000x000xb80x000x000x8e
0xd00xbc0x000x7c0x8e0xd80x8e0xc00xbe0x740x7c0x8a
0x040x830xc60x010x3c0x000x740x090xb40x0e0xbb0x0f0x000xcd0x100xeb0xee0xf40xeb0xfd
};
private ArrayList imgByteToWrite = new ArrayList();
public HelloWorldOS(String s) {
for (int i = 0; i < imgContent.length; i++) {
imgByteToWrite.add(imgContent[i]);
}
imgByteToWrite.add(0x0a);
imgByteToWrite.add(0x0a);
for (int j = 0; j < s.length(); j++) {
imgByteToWrite.add((int)s.charAt(j));
}
imgByteToWrite.add(0x0a);
int len = 0x1fe;
int curSize = imgByteToWrite.size();
for (int k = 0; k < len - curSize; k++) {
imgByteToWrite.add(0);
}
/*
* 要想让机器将软盘的头512字节当做操作系统的内核加载到内存,头512字节的最后两个字节必须是55aa
*/
imgByteToWrite.add(0x55);
imgByteToWrite.add(0xaa);
imgByteToWrite.add(0xf0);
imgByteToWrite.add(0xff);
imgByteToWrite.add(0xff);
len = 0x168000; //
curSize = imgByteToWrite.size();
for (int l = 0; l < len - curSize; l++) {
imgByteToWrite.add(0);
}
}
public void makeFllopy() {
try {
/*
* 在磁盘上创建一个1474560字节的二进制文件,将imgContent的内容写入该文件的头512字节,这个二进制文件将作为一个1.5M的虚拟软盘用于当做
* 虚拟机的启动软盘
*/
DataOutputStream out = new DataOutputStream(new FileOutputStream(“system.img“));
for (int i = 0; i < imgByteToWrite.size(); i++) {
out.writeByte(imgByteToWrite.get(i).byteValue());
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
HelloWorldOS op = new HelloWorldOS(“hello this is my first line of my operating system code“);
op.makeFllopy();
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6148 2016-08-05 16:51 操作系统内附源代码\.DS_Store
文件 116602 2016-08-05 16:27 操作系统内附源代码\Be a Hacker.docx
文件 295 2016-08-05 16:07 操作系统内附源代码\HelloWorldOS\.classpath
文件 371 2016-08-05 16:07 操作系统内附源代码\HelloWorldOS\.project
文件 587 2016-08-05 16:07 操作系统内附源代码\HelloWorldOS\.settings\org.eclipse.jdt.core.prefs
文件 2548 2018-01-03 23:20 操作系统内附源代码\HelloWorldOS\bin\HelloWorldOS.class
文件 3092 2016-08-05 16:19 操作系统内附源代码\HelloWorldOS\src\HelloWorldOS.java
文件 1474560 2018-01-03 23:24 操作系统内附源代码\HelloWorldOS\system.img
目录 0 2016-08-05 16:07 操作系统内附源代码\HelloWorldOS\.settings
目录 0 2018-01-03 23:20 操作系统内附源代码\HelloWorldOS\bin
目录 0 2016-08-05 16:08 操作系统内附源代码\HelloWorldOS\src
目录 0 2018-01-04 14:10 操作系统内附源代码\HelloWorldOS
目录 0 2016-08-05 16:27 操作系统内附源代码
----------- --------- ---------- ----- ----
1604203 13
- 上一篇:64位CPU指令集及编程方法
- 下一篇:ACS800整流侧手册
相关资源
- bp神经网络源代码,可直接运行
- 仿知乎界面小程序源代码
- 贪吃蛇源代码.fla
- 升腾Win终端系统升级方法新版.doc
- Uninstall_Cortana_WINCLIENT.CN.rar
- dotnet 写字板 实验 源代码 不好请要不
- 图像二维小波变换的实现源代码
- 八三编码器设计 VHDL代码 简单,包附
- linux应用层的华容道游戏源代码
- 网上拍卖系统完整源代码
- STM32基于rt_thread操作系统的SDHC卡文件
- CSMA/CD等动画演示加源代码
- silicon lab公司的收音IC SI47XX全套开发工
- 合同管理系统的源代码(附数据库)
- 用VC 编写的仿QQ聊天室程序源代码
- STM32F103 串口程序(完整版)
- VPC3_DPV1源代码,Profibus
- PB做的托盘程序(最小化后在左下角显
- 操作系统 LRU算法 实验报告 及 程序代
- 透明加密源码及说明
- [免费]车载CE6.0操作系统
- 分页系统模拟实验 操作系统 课程设
- 排队机叫号 源代码
- 五子棋C 源代码
- CAD LISP24个源代码
- 二叉树基本操作源代码
- 推箱子及人工智能寻路C 源代码
- 模拟段页式虚拟存储管理中地址转换
- opengl轮廓字体源代码
- 冈萨雷斯 数字图像处理 源代码(m文
评论
共有 条评论