⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 quit.cpp

📁 XOSL 多操作系统管理工具 源代码 多系统引导工具
💻 CPP
字号:
/*
 * Extended Operating System Loader (XOSL)
 * Copyright (c) 1999 by Geurt Vos
 *
 * This code is distributed under GNU General Public License (GPL)
 *
 * The full text of the license can be found in the GPL.TXT file,
 * or at http://www.gnu.org
 */

#include <quit.h>
#include <disk.h>
#include <mouse.h>
#include <graph.h>
#include <apm.h>

#define AddrIpl ( (void *)0x00007c00 )
#define IplJmp() (__emit__(0xea,0x00,0x7c,0x00,0x00)) // jmp 0000:7c00

#define PostResetFlags ( *(unsigned short *)0x00000472 )
#define RebootJmp() (__emit__(0xea,0xf0,0xff,0x00,0xf0)) // jmp f000:fff0

CQuit::CQuit(CMouse *MouseToUse)
{
	Mouse = MouseToUse;
}

CQuit::~CQuit()
{
}

void CQuit::Restart()
{
	CDisk Disk;

	if (Mouse)
		delete Mouse;
	Graph->SetMode(modeText,false);
	Disk.Map(0x80,0);
	Disk.Read(0,AddrIpl,1);
	IplJmp();
}

void CQuit::Shutdown()
{
	CPowerManagement Apm;

	if (Mouse)
		delete Mouse;
	Graph->SetMode(modeText,false);
	Apm.SetPowerState(APM_DEV_ALL,APM_STATE_OFF);
}

void CQuit::Reboot()
{
	if (Mouse)
		delete Mouse;
	Graph->SetMode(modeText,false);
	PostResetFlags = 0x0000; // cold boot. 0x1234 for warm boot
	RebootJmp();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -