📄 initoem.c
字号:
/****************************************************************//* *//* initoem.c *//* *//* OEM Initializattion Functions *//* *//* Copyright (c) 1995 *//* Pasquale J. Villani *//* All Rights Reserved *//* *//* This file is part of DOS-C. *//* *//* DOS-C is free software; you can redistribute it and/or *//* modify it under the terms of the GNU General Public License *//* as published by the Free Software Foundation; either version *//* 2, or (at your option) any later version. *//* *//* DOS-C is distributed in the hope that it will be useful, but *//* WITHOUT ANY WARRANTY; without even the implied warranty of *//* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See *//* the GNU General Public License for more details. *//* *//* You should have received a copy of the GNU General Public *//* License along with DOS-C; see the file COPYING. If not, *//* write to the Free Software Foundation, 675 Mass Ave, *//* Cambridge, MA 02139, USA. *//* *//****************************************************************/#include "portab.h"#include "init-mod.h"#ifdef VERSION_STRINGSstatic BYTE *RcsId = "$Id: initoem.c,v 1.13 2003/09/04 19:14:16 bartoldeman Exp $";#endif#define EBDASEG 0x40e#define RAMSIZE 0x413unsigned init_oem(void){ iregs r; init_call_intr(0x12, &r); return r.a.x;}void movebda(size_t bytes, unsigned new_seg){ unsigned old_seg = peek(0, EBDASEG); fmemcpy(MK_FP(new_seg, 0), MK_FP(old_seg, 0), bytes); poke(0, EBDASEG, new_seg); poke(0, RAMSIZE, ram_top);}unsigned ebdasize(void){ unsigned ebdaseg = peek(0, EBDASEG); unsigned ramsize = ram_top; if (ramsize * 64 == ebdaseg && ramsize < 640 && peek(0, RAMSIZE) == ramsize) { unsigned ebdasz = peekb(ebdaseg, 0); /* sanity check: is there really no more than 63 KB? * must be at 640k (all other values never seen and are untested) */ if (ebdasz <= 63 && ramsize + ebdasz == 640) return ebdasz * 1024U; } return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -