资源简介
里面有一个简单的操作系统,还有操作系统生成的源代码,代码附有注释。
代码片段和文件信息
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整流侧手册
相关资源
- pppd2.4.7源代码以及拨号脚本
- 嵌入式实时操作系统μC/OS-II与eCos的
- 嵌入式实时操作系统在DATU中的应用
- 嵌入式实时操作系统μC/OS-II下通用驱
- 嵌入式实时操作系统μC/OS-II在ARM上的
- 嵌入式操作系统的解析
- SAC型液压支架控制器检测平台的设计
- 酒店预订管理系统源代码
- 基于MSP430单片机的实时多任务操作系
- 机会路由源代码+仿真工具(SCORP)
- 批量替换证件照片的底色(含源代码
- cocos2d-x飞机大战项目
- 分享一个远程控制软件源代码
- 湖南大学操作系统实验报告
- BLE-CC254x-1.3.2 蓝牙官方源代码
- 中标麒麟操作系统指南
- 程序源代码行数统计工具
- flutter_gallery源代码
- 操作系统最新视频教材链接(百度网
- 操作系统教程课后习题答案
- 操作系统教程 第5版 费翔林 骆斌 pp
- 插件式GIS应用框架的设计与实现&mda
- Linux操作系统下配置无密码的RSH访问
- x264源代码
- 游戏物理引擎开发&源代码.zip
- 易语言仿真版源码易语言模拟版本源
- 易语言征途登陆器源代码源码
- 嵌入式实时操作系统的RAM盘扩展
- 深入解析windows操作系统第六版 上册
- win7 和xp操作系统的打印机一键共享
评论
共有 条评论