📄 dosalloc.ch
字号:
/* ACC -- Automatic Compiler Configuration Copyright (C) 1996-2004 Markus Franz Xaver Johannes Oberhumer All Rights Reserved. This software is a copyrighted work licensed under the terms of the GNU General Public License. Please consult the file "ACC_LICENSE" for details. Markus F.X.J. Oberhumer <markus@oberhumer.com> http://www.oberhumer.com/ */#define __ACCLIB_DOSALLOC_CH_INCLUDED 1#if !defined(ACCLIB_PUBLIC)# define ACCLIB_PUBLIC(r,f) r __ACCLIB_FUNCNAME(f)#endif#if (ACC_OS_OS216)ACC_EXTERN_C unsigned short __far __pascal DosAllocHuge(unsigned short, unsigned short, unsigned short __far *, unsigned short, unsigned short);ACC_EXTERN_C unsigned short __far __pascal DosFreeSeg(unsigned short);#endif/***********************************************************************// dos_alloc************************************************************************/#if (ACC_OS_DOS16 || ACC_OS_WIN16)#if !defined(ACC_CC_AZTECC)ACCLIB_PUBLIC(void __far*, acc_dos_alloc) (unsigned long size){ void __far* p = 0; union REGS ri, ro; if ((long)size <= 0) return p; size = (size + 15) >> 4; if (size > 0xffffu) return p; ri.x.ax = 0x4800; ri.x.bx = (unsigned short) size; int86(0x21, &ri, &ro); if ((ro.x.cflag & 1) == 0) /* if carry flag not set */ p = (void __far*) ACC_MK_FP(ro.x.ax, 0); return p;}ACCLIB_PUBLIC(int, acc_dos_free) (void __far* p){ union REGS ri, ro; struct SREGS rs; if (!p) return 0; if (ACC_FP_OFF(p) != 0) return -1; segread(&rs); ri.x.ax = 0x4900; rs.es = ACC_FP_SEG(p); int86x(0x21, &ri, &ro, &rs); if (ro.x.cflag & 1) /* if carry flag set */ return -1; return 0;}#endif#endif#if (ACC_OS_OS216)ACCLIB_PUBLIC(void __far*, acc_dos_alloc) (unsigned long size){ void __far* p = 0; unsigned short sel = 0; if ((long)size <= 0) return p; if (DosAllocHuge((unsigned short)(size >> 16), (unsigned short)size, &sel, 0, 0) == 0) p = (void __far*) ACC_MK_FP(sel, 0); return p;}ACCLIB_PUBLIC(int, acc_dos_free) (void __far* p){ if (!p) return 0; if (ACC_FP_OFF(p) != 0) return -1; if (DosFreeSeg(ACC_FP_SEG(p)) != 0) return -1; return 0;}#endif/*vi:ts=4:et*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -