Board logo

标题: 实时微内核:最新图形模式多窗口演示 [打印本页]

作者: taowentao     时间: 2005-8-15 18:04    标题: 实时微内核:最新图形模式多窗口演示

rtCell ― 实时微内核(可用GCC 3.xx、visual C++ 及 watcom C++ 编译)            
      该内核借鉴了minix、windows NT、linux的部分原理,具有下列功能:

  1.完全抢占的多任务实时微内核,任务调度、等待与唤醒操作均具有良好的确定性(与任务数目无关)
    独立的内核栈,中断和系统调用均切换到内核栈执行;

  2.256个优先级,254个可用优先级1~254, 0为最高优先级(系统保留),255为空闲优先级;

  3.不同优先级可完全抢占,同优先级之间可按先进先出直到阻塞,或时间片轮转方式执行,
    可在任务对象创建时选择其执行方式;

  4.在一系统(定时器服务)任务中实现内核定时器,用于超时等待内核对象、周期性定时器、任
    务延迟;此(定时器服务)任务的优先级由其客户任务的最高优先级驱动,随之动态改变,以
    消除优先级隐式反转现象;

  5.任何内核对象用一整数ID标识,而非指针,从而可避免用户任务空指针的副作用,内核对
    象总数不超过32768(即32K);

  6.提供任务(Task)、互斥信号量(Mutex)、计数信号量(Semaphore)、位域标志(Flag)、
    周期性定时器(Timer)、优先级消息(Message)和环形队列消息(Ring buffer)内核对象;

  7.互斥信号量同时提供优先级继承和优先级置顶协议,在创建时设置,且总是按优先级等待;

  8.其它对象的等待方式有,优先级等待和先进先出等待(节省内存),在创建时设置;

  9.内核数据的同步,除在任务切换,及任务和内核之间切换堆栈时暂时关中断外,其它地
    方均以延迟过程调用机制(DPC)执行;

  10.系统调用以陷阱指令(x86中int指令)实现,易于扩展到具有“内存保护”的分级模式;

  11.在内核中提供一个简单的堆内存分配机制,用于内核对象的动态内存分配;

  12.在内核中实现了中断的进出接口,支持中断嵌套,计数信号量(Semaphore)、位域标志(Flag)、
    优先级消息(Message)和环形队列消息(Ring buffer)的唤醒操作可在中断中执行,用户处理中断
    时只需编写标准的C函数,而不必关心有关中断底层处理的细节。
  

  32位内核,在 windows 2000,mingwin 4.0(gcc 3.xx)和 visual C++ 5.0/6.0 下编译通过;
  16位内核,在 windows 2000,Open watcom C/C++ 1.3 下编译通过。

rtCell_vc5_sources.rar ,rtCell_vc5.rar 是32位实时微内核rtCell32的库文件等源代码(串行通信、磁盘及fat16文件操作),请用visual C++ 5.0/6.0编译。
watcom_C16.rar 是16位实时微内核rtCell的DOS库文件等源代码(仅适用于open watcom c/c++);

bochs.rar 中为 rtCell 在“虚拟机软件 bochs ”中的硬盘引导启动演示;
该演示中用 freedos boot loader 从 fat16 格式文件系统加载到 0x600 处执行。


16位rtCell编译后有 50 k 左右,包括静态分配的 4k 内核栈和4 k 有余的其它内核数据;
32位rtCell编译后有 87 k 左右,包括静态分配的 8k 内核栈和4 k 有余的其它内核数据。


32位 rtCell 在 P4 、1.7G、256 M 内存的“联想机器”上,
进行了连续10天的稳定性、可靠性测试。

  E-mail:taowentao_twt@163.com   

点击超连接下载文件:

附件 2:  
rtCell_vc5.rar (2005-12-16 05:38 PM, 127.07 K)
http://www.cn-dos.net/forum/atta ... 9e88&download=1

附件 3:  
bochs.rar (2005-12-19 10:00 AM, 849.1 K)
http://www.cn-dos.net/forum/atta ... 4727&download=1

附件 4:  
rtCell_vc5_sources.rar (2005-12-19 10:04 AM, 127.07 K)
http://www.cn-dos.net/forum/atta ... 9e88&download=1

下面是16位dos实模式鼠标(ps2普通串口鼠标)、键盘应用演示及其可用库文件;
     
demo.exe 在纯dos下鼠标(ps2)、键盘应用演示,注意:在(win98/2k/xp的)dos窗口不能使用鼠标;

KERNEL.SYS用于 free dos 的 free loader 加载启动的鼠标、键盘演示;

rtCell16.lib 是实时微内核rtCell的16位库文件(仅适用于open watcom c/c++);

rtPC_input.obj是鼠标(ps2)、键盘输入obj文件,进行相应的I/O操作,其源代码请到
FreeDOS-32 release 0.0.5下查阅;

sys_demo.bat及EXEFLAT.EXE用于将demo.exe生成KERNEL.SYS,以便用于 free dos 的 free loader 加载启动。

真正的多任务、多(文本模式)窗口演示

中断驱动的鼠标、键盘,事件驱动的多窗口,真正的多任务,完全抢占的实时微内核;

红色标题为活动窗口,蓝色标题为非活动窗口,非活动窗口可后台动态刷新;

其中一个窗口显示任务状态,另外两个窗口显示当前时间及“窗口”二字,桌面显示键盘输入;

可用鼠标移动、激活窗口、(窗口右下角)改变窗口大小。

“ctrl + z”键切换到任务状态窗口。

附件 1:  qemu_0.8_domo.rar内是在虚拟机上的演示,解压缩,执行rtCell.bat后,鼠标点击窗口;
下载连接:
http://www.cn-dos.net/forum/atta ... 72c0&download=1

附件 2:  dos_demo.rar (demo.exe及demo_.exe)用于在纯dos(windows上无鼠标)下,用串行鼠标演示。
下载连接:
http://www.cn-dos.net/forum/atta ... 2353&download=1


最新图形模式多窗口演示

giCell 真正的图形模式多窗口 - 全部源代码(C 语言)不到六千行,具有下列功能:

1. 完善而精巧的多视口裁剪和消隐处理,与实时微内核rtCell紧密结合;

2. 真正的事件(或消息)驱动的多窗口技术,且支持顶层窗口和透明窗口;

3. 当前支持Label、Edit、Botton、Slider和Checkbox控件,其中的Edit控件支持剪切、复制和粘贴;

4. 支持窗口的平移、缩放,和窗口系统按钮,及窗口和控件的过程回调;

5. 内存需求小(不到64K),窗口和控件所耗内存很小,因此实用性强,包括rtCell、鼠标、键盘及图形驱动,在DOS下也仅 100 多 K 字节。


        演示方法:解压缩gui_Test.rar,在windows下(双击)执行gui_Test.bat,
                  
                  或在纯dos下直接执行bc_gui.exe(在windows的dos窗口中无鼠标)。

        注意:本演示中由于包含一个说明性位图而使得bc_gui.exe比较大。

下载地址:http://zhenlove.com.cn/cndos/fileup/files/gui_Test.rar

[ Last edited by taowentao on 2006-10-5 at 22:24 ]
作者: johnsonlam     时间: 2005-8-17 10:37
taowentao 兄 :

有 沒 有 弄 好 的 boot disk ? 太 低 階 了 , 看 不 懂 ...
沒 有 程 序 怎 樣 測 試 ?

謝 謝 !
作者: johnsonlam     时间: 2005-8-17 11:20
taowentao 兄 :

有 沒 有 弄 好 的 boot disk ? 太 低 階 了 , 看 不 懂 ...
沒 有 程 序 怎 樣 測 試 ?

謝 謝 !
作者: taowentao     时间: 2005-8-22 12:12    标题: 文件太大

文件太大,不能上传;怎么压缩,文件大小都过兆.
你去"http://www.h7.dion.ne.jp/~qemu-win/"下载带freedos映象盘的模拟器,用我做的kernel.sys替换其中的kernel.sys即可,但只能做演示;
要加入自己的功能,必须自己编译,并用tools\下的exeflat重新处理,然后替换.

现在rtCell可以可用中断方式处理硬盘读写(比忙等待要高效,有的dos系统用忙等待处理硬盘读写),可以读取fat16文件系统,等我整理好了,就传过来.


将rtCell_img.rar和Qemu.rar解压缩到同一个文件夹中(不要包含任何子目录),双击(执行)rtCell.bat(执行x86虚拟机),可看到rtCell在虚拟机中的执行.其中一个任务在读取并显示rtCell.img根目录中的bochsrc.txt文件


[ Last edited by taowentao on 2005-8-23 at 16:10 ]
作者: taowentao     时间: 2005-8-23 16:12    标题: rtCell在虚拟机中的执行

将rtCell_img.rar和Qemu.rar解压缩到同一个文件夹中(不要包含任何子目录),双击(执行)rtCell.bat(执行x86虚拟机),可看到rtCell在虚拟机中的执行.其中一个任务在读取并显示rtCell.img根目录中的bochsrc.txt文件

[ Last edited by taowentao on 2005-8-23 at 16:17 ]
作者: taowentao     时间: 2005-8-26 10:49    标题: fat16根目录文件读写

rtDisk.c 用于磁盘读写,以中断方式执行;改变自"TINOS build 206",将其忙等待变为非忙等待,
         将其中断的耗时部分操作放到任务中完成;

rtFat16.C用于fat16根目录文件读写,改变自http://www.ifi.unizh.ch/ailab/embedded/multitaskers/embedpc.zip
         将其bios中断调用变为 rtDisk.c 的磁盘读写;

**********************************************
***** 注意: 执行文件写操作有问题,尚未解决 ****
**********************************************


rtKB\rtKB.C 用于键盘读操作,改变自"TINOS build 206",将其"键盘中断的耗时部分操作"放到任务中完成;

    使用此三文件并不说明它们的使用价值,也不保证其可靠性;仅用于说明rtCell的用法,验证rtCell的性能,以考察rtCell的稳定性.
    cstrt086.asm 是本人对open watcom c/c++ 1.3 启动文件的修改,使程序的启动地址 cstart 变为 0000:0000,使程
序的重定位更容易,这样可用 EXEFLAT.EXE(仅用于 16位 dos 实模式) 生成可执行映象文件;
   
    sys_demo.bat 是一批处理文件,将 demo.exe 变为可由 freedos boot loader 从硬盘引导的KERNEL.SYS
   
    demo.exe 可用于dos实模式下运行; KERNEL.SYS 用于替换 freedos 的 KERNEL.SYS(可将freedos 的 KERNEL.SYS更名),
以实现 freedos boot loader 的硬盘引导;

    分别按下键5,6时,显示5,6处二任务被分别删除,
    分别按下键a,b,c, A,B, C时,显示5,6处二任务, 及rtDisk任务被分别挂起,恢复执行,
    分别按下键t, T时,定时器中断被禁止,使能;
    osKeyBorad是根任务,启动后用于创建其它任务,同时做键盘处理;
    详细信息参看源代码:MAIN_rrsh.c,可执行文件是demo.exe;  
   

*******************************************************
***此二文件最好用虚拟机或模拟器执行,以免破坏硬盘数据***
*******************************************************


中断设置函数做如下更改:

typedef void _cdecl (* PISR)(void *);

/* 设置中断处理过程:
* pISRAddr 说明中断处理函数地址,
* wdIndex 说明中断向量号,
* ppISRArg 存放中断处理函数参数的指针(中断处理函数的参数是一指针,ppISRArg是指
* 针的指针,即*ppISRArg为中断处理函数参数),同时*ppISRArg返回旧中断处理函数地址;
* 若中断处理函数无参数,而要*ppISRArg返回旧中断处理函数地址,应将ppISRArg指向一
* 指针,且令*ppISRArg = NULL; 若中断处理函数即无参数,又不要*ppISRArg返回旧中断处
* 理函数地址,则令ppISRArg = NULL即可.
*/
extern CWORD _cdecl SetVector(PISR pISRAddr, WORD wdIndex, void **ppISRArg);



    总之, 此程序演示"微内核操作系统"的思想: 中断用于收集数据,任务用于处理数据;即可保证中断的响应能力,又
保证关键数据处理优先执行;从而有利于保证整个系统的实时性;当然, rtCell 本身是实时内核是保证实时性的基础.

    那位朋友有问题,有新想法,或者发现错误,请联系:taowentao_twt@163.com

   使用此演示,c:盘根目录下应有一 bochsrc.txt 文件,否则出错!

[ Last edited by taowentao on 2005-8-26 at 10:57 ]
作者: taowentao     时间: 2005-8-28 10:41    标题: 关于fat16根目录文件读写

rtDisk.c 用于磁盘读写,以中断方式执行;源代码只有400余行;

rtFat16.C用于fat16根目录文件读写, 源代码只有620余行;

非常适合嵌入式系统的文件读写操作.
作者: taowentao     时间: 2005-8-28 10:59    标题: 为什么? 为什么? 为什么?

在 <<中國DOS聯盟論壇>> 里我看到很多国人高手,为什么没人愿意合作,共同开发一个国人自己的多任务dos系统?

就算仅仅作个启动盘也行啊 ?!

现在fat16根目录文件读写已基本可用,期待高手们加盟,将之完善!
作者: taowentao     时间: 2005-8-30 08:25    标题: 关于磁盘读写

rtDisk.c 用于磁盘读写;
它不调用任何bios中断;
而是基于微内核rtCell的功能,以中断方式执行,直接操作硬件端口;
完全脱离bios.

rtCell_demo.rar 中包含此文件.


[ Last edited by taowentao on 2005-8-30 at 08:26 ]
作者: taowentao     时间: 2005-8-31 09:34    标题: 关于磁盘及文件读写

若你觉得rtDisk.c 用于磁盘读写时速度比较慢,你可加入DMA操作,不过你要自己处理DMA中断等一系列操作.

另外,文件读写应防止多任务同时操作时破坏数据的一致性: 可加个保护锁;也可以客户/服务器模式执行文件读写,可带来极大的灵活性(如多用户读写权限分级等),但也带来了性能损失.
作者: taowentao     时间: 2005-9-10 10:37    标题: 有没有?

有没有那位朋友愿意合作,写一个(或改写一下)fat,ntfs文件读写等操作?可以基于server/client模式,也可直接的函数调用形式.

期待有兴趣者加盟合作!!!

谢谢!!!
作者: taowentao     时间: 2005-9-28 11:22    标题: 32位内核rtCell

rtCell已经移植到32位保护模式,下面的硬盘映象文件可用。请用 qemu 模拟器运行。依然是用freedos boot loader加载。支持4G内存。

[ Last edited by taowentao on 2005-9-28 at 11:30 ]
作者: taowentao     时间: 2005-10-6 15:21    标题: 32位内核rtCell32的库文件

注意:前 5M(0~4M)内存已由实时微内核保留,请勿动用;
  用户任务可自由分配使用 5M(5~4000M) 以后内存。

  makefile、lk16_32.exe、make.bat、start16.sys、kernel.o、
  mcCLib.h、compile.h、TypeDef.h 是编译脚本、连接工具及库文件,请勿更改;
  
  编译(执行makefile)后执行make.bat,将生成的kernel.sys拷贝到根目录,
  由freedos boot loader加载,即可进入32位实时微内核rtCell32。

  void _cdecl rtShell(void); 是用于初始化用户任务的外壳任务,
  用户务必提供此函数;此外壳任务的初始化优先级为1,且无参数。

  而rtShell.c 是编译脚本makefile编译的唯一的用户文件,请在其中提供函数:
  void _cdecl rtShell(void);

  以上文件在mingwin 4.0(gcc 3.23/3.42)下编译通过。

[ Last edited by taowentao on 2005-10-6 at 15:29 ]
作者: taowentao     时间: 2005-10-7 13:59    标题: 内核rtCell

16位的rtCell中Mutex的置顶协议中有bug,
32位的内核rtCell32中已经修复了此bug;

因此,请不要使用16位的rtCell中置顶协议的Mutex。
另外,32位的内核rtCell32的头文件有更改;
作者: taowentao     时间: 2005-10-8 15:31    标题: 任务切换保存和恢复钩子函数

加入了任务切换保存和恢复钩子函数,可用于保存协处理器状态。附件中有虚拟演示程序和库文件。

[ Last edited by taowentao on 2005-10-8 at 15:36 ]
作者: taowentao     时间: 2005-10-30 15:03
更正了mutex优先级置顶协议中的bug;
新加入了"周期性定时器"内核对象,用于周期性事务处理。说明如下:

/*
*******************************************************************************
*                            周期性定时器对象相关函数                         *
*******************************************************************************
*/

/* 创建周期性定时器对象:
* pTimerName:说明定时器对象名称,
*
* cwIDRBM:说明环形队列消息对象ID,用于周期性定时器超时时发送环形队列消息,
*
* 返回值为周期性定时器对象标识ID,用于周期性定时器对象相关的系统调用。
*/
extern CWORD _cdecl_ CreateTimer(STR *pTimerName, CWORD cwIDRBM);

/* 连接周期性定时器对象,使之有效,周期性发送发送环形队列消息:
* cwIDTimer:周期性定时器对象标识ID,
*
* dwPeriod:说明定时器周期,单位为时间片,
*
* 成功后,返回值为SUCCESS,然后可用GetRBM、GetRBMTry接受消息msg,
* msg.dwSize说明超时的周期性定时器对象ID。
*/
extern CWORD _cdecl_ ConnectTimer(CWORD cwIDTimer, DWORD dwPeriod);

/* 断开周期性定时器对象,使之失效,停止发送发送环形队列消息:
* cwIDTimer:周期性定时器对象标识ID,
*
* 成功后,返回值为SUCCESS,然后可用DeleteObject删除周期性定时器对象。
*/
extern CWORD _cdecl_ UnConnectTimer(CWORD cwIDTimer);

下面有新的库文件及应用实例可供下载。
rtCell16.rar是16位应用实例;rtCell32.rar是32位应用实例。

[ Last edited by taowentao on 2005-10-30 at 15:10 ]
作者: taowentao     时间: 2005-11-11 11:00    标题: rtCell已经移植到visual C++

rtCell已经移植到visual C++和masm。

下面的obj文件用visual C++ 5.0和masm 6.11编译。

压缩文件rtCell_vc5.rar中有五个obj文件和一个实例源代码rtShell.c:
cstart.obj,mcEntry.obj,mcKrnl.obj,mcClib32.obj,rtCell.obj
和visual C++ 5.0工程文件:rtCell.dsp,rtCell.dsw,rtCell.ncb,
rtCell.opt,rtCell.plg可用;请将cstart.obj放在最前面,因其内含
32位启动代码;编译时注意:要四字节对齐。


release文件夹中有二进制工具,用于生成freedos可加载的kernel.sys;

编译后执行make_sys.bat可生成kernel.sys,替换freedos的kernel.sys后;
就可以由freedos loader加载。

[ Last edited by taowentao on 2005-11-14 at 10:01 ]
作者: profree     时间: 2005-11-11 19:25
太深奥了,不懂啊,支持一下
作者: taowentao     时间: 2005-12-5 10:17
ps/2(不是USB)鼠标、键盘演示:
可在红色光标(闪烁)处输入数据;
用鼠标改变光标位置;
支持鼠标滚轮操作;

crl+z切换到全部任务状态列表,再次crl+z切换回原屏幕。

rtCell.rar内是rtcell用于freedos启动的硬盘映象文件;
Qemu.rar内是最新的Qemu虚拟机软件,应用动态编译技术,速度极快;
请将此二文件解压缩到同一个文件夹,执行rtcell.bat,即可演示。

lib.rar内是应用实例,用于GUN C 3.xx,可修改、编译。
rtCell_vc5.rar内是应用实例,用于 rtCell可用visual C++5.0/6.0,可修改、编译。

[ Last edited by taowentao on 2005-12-6 at 17:22 ]
作者: taowentao     时间: 2005-12-10 14:23    标题: rtCell32硬盘、fat16文件系统根目录文件读取操作演示

rtCell32硬盘、fat16文件系统根目录文件读取操作演示:

以中断方式读取硬盘数据;
打开并读取fat16文件系统根目录文件:rtCell.txt且显示其内容。

rtCell.rar内是硬盘启动映象文件(用于Qemu及bochs虚拟机模拟软件),
rtCell32由此被引导启动,并读取其上的fat16文件系统。

[ Last edited by taowentao on 2005-12-10 at 14:29 ]
作者: taowentao     时间: 2005-12-16 17:38    标题: 模块加载

编译后执行make_sys.bat可生成kernel.sys,替换freedos的kernel.sys后;
就可以由freedos loader加载。

目录:usr_file 内的工程文件用于生成usr.sys模块;用于串行端口通信;
编译后执行make_usr_sys.bat可生成usr.sys。

kernel.sys将加载根目录下的usr.sys,向串口2发送“abcdefghijklmnopqrstuvwxyz”字符串;
bochs虚拟软件的scom2.txt文件中可看到结果。

usr32.sys 加载物理地址应与其编译基地址一致;

因kernel.sys大小不超过128k(受freedos loader所限),其加载地址为0x600,
所以usr32.sys 加载物理地址应在(0x20000+0x600 = 0x26000)以后;

本例子中:usr32.sys加载物理地址为0x30000。

以上仅用于fat16格式的“ata 1(14号中断)、主硬盘、主引导分区启动”。

bochs虚拟软件 在配置文件bochsrc.txt中加入系列说明:

mouse: enabled=0, type=imps2
com1: enabled=1, mode=file, dev="scom1.txt"
com2: enabled=1, mode=file, dev="scom2.txt"

rtCell_vc5.rar 中有全部源代码(串行通信、磁盘及fat16文件操作)。
bochs.rar 中为 rtCell 在虚拟机软件 bochs 中的演示。

[ Last edited by taowentao on 2005-12-19 at 10:04 ]
作者: taowentao     时间: 2005-12-19 10:08    标题: rtCell的16位库文件: 用于16位dos实模式

16位dos实模式鼠标(ps2普通串口鼠标)、键盘应用演示:

demo.exe 在纯dos下鼠标(ps2)、键盘应用演示,注意:在(win98/2k/xp的)dos窗口不能使用鼠标;

KERNEL.SYS用于 free dos 的 free loader 加载启动的鼠标、键盘演示;

rtCell16.lib 是实时微内核rtCell的16位库文件(仅适用于open watcom c/c++);

rtPC_input.obj是鼠标(ps2)、键盘输入obj文件,进行相应的I/O操作,其源代码请到
FreeDOS-32 release 0.0.5下查阅;

sys_demo.bat及EXEFLAT.EXE用于将demo.exe生成KERNEL.SYS,以便用于 free dos 的 free loader 加载启动。
作者: taowentao     时间: 2006-1-13 15:12
真正的多任务、多(文本模式)窗口演示程序:

中断驱动的鼠标、键盘,事件驱动的多窗口,真正的多任务,完全抢占的实时微内核;

红色标题为活动窗口,蓝色标题为非活动窗口,非活动窗口可后台动态刷新;

其中一个窗口显示任务状态,另外两个窗口显示当前时间及“窗口”二字,桌面显示键盘输入;

可用鼠标移动、激活窗口、(窗口右下角)改变窗口大小。


“ctrl + z”热键,切换到任务状态窗口。

qemu_0.8_domo.rar内是在虚拟机上的演示,
执行rtCell.bat;
dos_demo.rar (demo.exe及demo_.exe)用于在纯dos(windows上无鼠标)下,用串行鼠标演示。

[ Last edited by taowentao on 2006-1-23 at 12:05 ]
作者: xzxz     时间: 2006-2-7 14:23
你的mcKrnl.obj代码在哪里?还是这部分代码不公开?
作者: taowentao     时间: 2006-2-7 18:03
“源代码公开”的版本正在进行中;这需要一段时间,因为,rtCell的任何版本都应同时满足对16,32位甚至字长更长 cpu 具有较好的可移植性。

[ Last edited by taowentao on 2006-2-8 at 08:17 ]
作者: wanted999     时间: 2006-2-8 15:05    标题: 谢谢啦

说了这么多,
先下下来看看吧!
谢谢啦!
作者: taowentao     时间: 2006-10-5 22:18    标题: giCell - 真正的图形模式多窗口

giCell 真正的图形模式多窗口 - 全部源代码(C 语言)不到六千行,具有下列功能:

1. 完善而精巧的多视口裁剪和消隐处理,与实时微内核rtCell紧密结合;

2. 真正的事件(或消息)驱动的多窗口技术,且支持顶层窗口和透明窗口;

3. 当前支持Label、Edit、Botton、Slider、Listbox、scrollbar、TreeView和Checkbox控件,其中的
    Edit控件支持剪切、复制和粘贴(ctrl+x,ctrl+c,ctrl+v);

4. 支持窗口的平移、缩放,和窗口系统按钮,及窗口和控件的过程回调;

5. 内存需求小(不到64K),窗口和控件所耗内存很小,因此实用性强,包括rtCell、鼠标、键盘及图形驱动,在DOS下也仅 100 多 K 字节。


        演示方法:解压缩gui_Test.rar,在windows下(双击)执行gui_Test.bat,
                  
                  或在纯dos下直接执行bc_gui.exe(在windows的dos窗口中无鼠标)。

        注意:本演示中由于包含一个说明性位图而使得bc_gui.exe比较大。

下载地址:http://zhenlove.com.cn/cndos/fileup/files/gui_Test.rar
              https://gro.clinux.org/frs/download.php/1888/bc_gui.zip

[ Last edited by taowentao on 2006-11-29 at 10:10 AM ]
作者: electronixtar     时间: 2006-10-5 22:23
牛人啊~~~顶~
作者: profree     时间: 2006-10-9 04:16
解压失败,建议楼主重新上传
作者: taowentao     时间: 2006-10-18 22:27
我试了,没问题,请重新下载,并解压缩。
作者: pcwawa     时间: 2006-11-1 10:13
做个记号,回头再来看
作者: scnclisir1     时间: 2007-3-12 10:12    标题: 支持

支持
作者: haohaook     时间: 2007-3-18 06:26
在qemu 8.0以上执行失败
作者: taowentao     时间: 2007-4-4 10:39
请试试这一个:

http://zhenlove.com.cn/cndos/fil ... -0.9.0-windows).rar
它在qemu-0.9.0-windows中没问题。

http://zhenlove.com.cn/cndos/fileup/files/bc_gui_exe.rar

[ Last edited by taowentao on 2007-4-22 at 10:46 AM ]
作者: wind1216     时间: 2007-4-12 12:47    标题: 为什么下载需要积分呢

呵呵,是个好东西哎,我一直很喜欢图形模式的东西。想down下来研究研究。没想却要积分,郁闷
作者: taowentao     时间: 2007-4-22 10:45    标题: 最新演示

最新演示:https://gro.clinux.org/frs/download.php/2000/giCell.rar

自带鼠标、键盘驱动。
演示方法:解压缩 giCell.rar,在windows下(双击)执行my_gui.bat,或在纯dos下直接执行my_gui.exe(在windows的dos窗口中无鼠标)。


rtCell 内核的新增功能:

1. 256(64、32)个优先级,0为最高优先级(系统保留),256(64、32)为空闲优先级;

2. 一次定时(此时需定义一超时后执行的过程);

3. 互斥锁支持优先级继承和优先级置顶协议,在创建时设置该协议,且总按优先级等待,优先级继承协议时仅支持同一互斥锁的嵌套调用,优先级置顶协议还可支持不同互斥锁的多次嵌套调用;

4. 任务对象支持异步过程调用(Window用语APC,相当于UNIX中的信号机制),从而可引导任务异步的执行一个过程(前提是任务栈不小于1024字节),此过程将在该任务下次被调度时执行;

5. 删除避免机制,拥有互斥锁的任务及处于占有状态的互斥锁均具有防止被删除的机制,要删除拥有互斥锁的任务必须自行终止或调用任务终止函数,而要删除任一个互斥锁则必须先使其处于空闲状态,即没有任何任务占有此互斥锁,否则禁止删除;

6. 对象命名机制,同类内核对象可用唯一的名称标识来获取其ID,达到引用目的。


giCell 图形多窗口的新增功能:

1. 鼠标功能改进,与window的鼠标事件更接近;

2. 基于透明视口(或窗口)裁剪和消隐处理,可生成任何非矩形窗口,本示例中的三角窗口 就是通过透明视口的功能来实现的;

3. 鼠标光标动态改变功能。

[ Last edited by taowentao on 2007-5-2 at 04:41 PM ]
作者: happybasic     时间: 2007-4-30 23:34
有最新下载吗?
作者: taowentao     时间: 2007-5-27 22:30    标题: 源代码已经共享

源代码下载:http://www.cn-dos.net/forum/atta ... 1076&download=1
                  https://gro.clinux.org/frs/download.php/2009/C_code.rar

注意:C_code.rar文件纠正了回调函数无法使用浮点数操作的问题...

演示下载:http://zhenlove.com.cn/cndos/fileup/files/gui_demo.rar
最新虚拟机(qemu-0.9.0-windows)演示:http://zhenlove.com.cn/cndos/fileup/files/qemu-0.9.0-windows.rar

完整功能如下所述:

                        rtCell 实时微内核-具有下列功能:

1. 完全抢占的实时微内核结构,独立的内核栈,中断和系统调用均切换到内核栈执行;

2. 256(64、32)个优先级,0为最高优先级(系统保留),256(64、32)为空闲优先级;

3. 不同优先级任务完全抢占,同优先级之间可按先进先出或时间片轮转方式执行;

4. 在一系统(定时器服务)任务中实现内核定时器,用于超时等待内核对象、周期性定时器、任务延迟、一次定时(此时需定义一超时后执行的过程);此服务任务的优先级由其客户任务的最高优先级驱动,随之动态改变,以消除隐式优先级反转现象;

5. 提供任务(Task)、互斥锁(Mutex)、信号量(Semaphore)、位域标志(Flag定时器(Timer)、优先级消息(Message)和环形队列(Ring buffer)内核对象;

6. 任何内核对象用一整数ID标识,而非指针,从而可避免用户任务野指针的副作用,内核对象总数不超过61440(即60K);

7. 互斥锁支持优先级继承和优先级置顶协议,在创建时设置该协议,且总按优先级等待,优先级继承协议时仅支持同一互斥锁的嵌套调用,优先级置顶协议还可支持不同互斥锁的多次嵌套调用;

8. 其它对象的等待方式有:优先级等待和先进先出(节省内存)等待,在创建时设置;

9. 内核数据的同步,除在任务切换,及任务和内核之间切换堆栈时暂时关中断外,其它地方均以延迟过程调用(DPC)方式执行;

10. 任务对象支持异步过程调用(Window用语APC,相当于UNIX中的信号机制),从而可引导任务异步的执行一个过程(前提是任务栈不小于1024字节),此过程将在该任务下次被调度时执行;

11. 删除避免机制,拥有互斥锁的任务及处于占有状态的互斥锁均具有防止被删除的机制,要删除拥有互斥锁的任务必须自行终止或调用任务终止函数,而要删除任一个互斥锁则必须先使其处于空闲状态,即没有任何任务占有此互斥锁,否则禁止删除;

12. 对象命名机制,同类内核对象可用唯一的名称标识来获取其ID,达到引用目的。

13. 在内核中实现了中断的进出接口,因此用户中断处理只需写标准的C函数,而不必关心中断底层处理的细节;

14. 系统调用以陷阱指令(x86中int指令)实现,易于扩展到“内存保护”的进程模式;

15. 在内核库之外提供了一个简单的堆内存分配机制,用于内核对象动态内存分配时调用;

16. 支持毫秒级定时器,内核定时器周期为一毫秒;

17. 支持 X387/287 硬件浮点协处理器的任务状态保护,被动方式的任务浮点状态切换(开中断执行,由于使用了特权指令实现,因此只能在纯DOS实模式下或虚拟机X386/X387及后续机型上执行,而无法在Windows的DOS窗口中运行)。



                    giCell 视口裁减及消隐处理引擎-功能如下:

1. 完善而精巧的多视口裁剪和消隐处理引擎,与微内核rtCell紧密结合;

2. 真正的事件(或消息)驱动的多窗口(视口)技术,支持顶层窗口和透明窗口的显示和裁剪处理;

3. 当前支持Label、Edit、Botton、Slider、Listbox、TreeView和Checkbox控件,其中的Edit控件支持剪切、复制和粘贴(ctrl+x,ctrl+c,ctrl+v);

4. 支持窗口的平移、缩放,光标切换和窗口系统按钮,及窗口和控件的过程回调;

5. 基于透明视口(或窗口)的裁剪和消隐处理,可生成任何非矩形(多态)窗口,本示例中的三角形窗口就是基于透明视口来实现的;

7. 支持图形内存设备(GDC),有效避免窗口重绘时闪烁,易于实现视频及动画处理;

6. 内存需求小,窗口和控件的缺省状态均不使用GDC(而是采用直接屏技术),所耗内存小,因此实用性强,包括rtCell调度器、鼠标、键盘及图形驱动的库文件在DOS下仅77K。



                   关于可文件Engine.lib和mcOutLib.obj:

1. 考虑到DOS内存的限制,库文件Engine.lib中的rtCell内核仅支持32个任务优先级(因为优先级队列太占用内存),这样即使在640K内存下,也可创建上数百个内核及GUI对象,可满足一定规模的应用程序要求;

2. 库文件mcOutLib.obj是目录giCell\mcOSLib下文件的编译结果,用于处理任务的浮点协处理器(硬件)状态切换,任务浮点数状态初始化,内存分配,信息显示等操作(主要用于内核),用户也可自己编译giCell\mcOSLib目录下的文件,注意:Borland C/C++ 3.1可能无法识别其中的某些浮点数操作指令;

3. 文件MAIN.C是对Engine.lib使用的具体实例,在Borland C/C++ 3.1中编译时必须打开X387/287选项和C函数参数传递约定,此文件还对任何使用透明窗口来生成非矩形窗口,以及如何使用GDC生成动画进行了演示;

4. 注意其中的一些执行顺序:浮点数操作不得放到回调函数中执行,而只能在其它任务中执行(可从回调函数中向其它任务发送消息来实现),否则程序将进行无限循环;

5. 因为浮点协处理器的任务状态切换机制使用了特权指令,所生成的可执行文件只能在纯DOS实模式下或虚拟机X386/X387及后续机型上执行,而无法在Windows的DOS窗口中运行;

6. 由MAIN.C所生成的可执行文件在AMD机器DOS实模式、X86虚拟机qemu-0.9.0-windows以及Bochs-2.1.1下均执行良好,注意:生成的可执行文件依然是16位实模式。


    压缩文件C_lib.rar中包含窗口及其子控件的源代码,演示文件MAIN.C和DateTime.c,以及一个专用于Borland C/C++ 3.1的工程文件。

   注意:使用浮点数操作时最好把相关任务的栈设置到2K以上。


联系邮件:taowentao_twt@163.com, taowentao_twt@sohu.com

“附件2”是最新的纯DOS下演示。

[ Last edited by taowentao on 2007-6-21 at 10:16 PM ]
附件 1: 演示截图.JPG (2007-6-21 22:09, 64.63 K,下载次数: 1)


附件 2: gui.rar (2007-6-21 22:14, 67.08 K,下载次数: 17)

作者: beiyuly     时间: 2007-5-28 16:50
不错啊,楼主厉害。
作者: taowentao     时间: 2007-8-19 10:04    标题: 12点阵汉字,调用DOS文件功能

支持12点阵汉字(需要文件 hz12.bin ),可调用DOS文件功能(但是影响实时性能),按下键“SHIFT + ESC”退出rtCell,并返回到DOS系统。


虚拟机演示(下载: http://zhenlove.com.cn/cndos/fileup/files/hz_demo.rar)。

纯DOS演示(下载:http://zhenlove.com.cn/cndos/fileup/files/GUI_DOS.rar)。

C_lib.rar 为最新源代码(http://www.cn-dos.net/forum/atta ... 567&download=1)

[ Last edited by taowentao on 2007-8-19 at 10:07 AM ]
附件 1: demo_HZ.JPG (2007-8-19 10:06, 59.19 K,下载次数: 1)