![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 07:15 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 祥解:无3方实现任意方向滚屏 |
| 可打印版本 1,227 / 3 |
| 第1楼 sl543001 | 发表于 2010-02-08 17:57 |
| 中级用户 发帖 225 积分 499 | |
|
祥解:无3方实现任意方向滚屏 祥解:无3方实现任意方向滚屏
无需3方,利用DEBUG就能实现任意方向滚屏,配合SYBC的彩色字符输出,可以实现千变万化的绚丽效果。 http://www.cn-dos.net/forum/viewthread.php?tid=50188&fpage=1 目前使用这个技术组合成功实现了全彩的,贪吃蛇打飞机等脚本游戏示例代码。 考虑到大多数人完全搞不懂俺发出来的示例代码,所以在此加上注释详解一下代码: 在此讲解一下关键代码: ====sybc的部分==== SET U=;A80;DB 2D 0D "11230fcS$f6Y$f1B$f9N $f3dll $f9演示脚本 0.01" 0D;;RCX;F0;G;Q (ECHO.%SYBCOM:;=&ECHO.DW %&ECHO.%U:;=&ECHO.%)|DEBUG>NUL 首先把参数写入80位置,从而可以不生成sybc.com文件的情况下运行有参数的sybc.com 其中2D是参数长度的16进制值 引号内的内容是实际的参数 当然我们还需要提前载入sybc才行 ====滚屏的部分==== (echo m b800:%X% fa0 b800:%Y%&echo q)|debug >nul 运行了16位子程序了以后,系统仍然保留在25*80@16的显示模式,没有进度条 在这个模式下,cmd窗口内的全部数据保存在B800:0000-B800:0FA0 保存方式是:一个字节的字母,然后是一个字节的颜色信息 其中如果是中文,则拆分为2个单字节分别加上颜色信息 最后就看到类似 31 07 32 07 33 07 ...... 注意07的意义和color一样哦 一行80个字节算上颜色信息就是160个字节 所以从A0开始是第2行的信息 也就是说我们把0000的开始的所有数据挪到0002意味着全屏右移1字节 把0000的开始的所有数据挪到00A0意味着全屏向下移动1行 把0000的开始的所有数据挪到00A2意味着全屏向右下移动 当然你还可以反过来,或是只移动一部分内容 最后注意移动是用复制的方式,旧内容会被保留 了解了原理,移动的代码就简单了 b800:%X% 是要移动的内容的开头 fa0 是要移动的内容的结尾 b800:%Y% 是移动后的位置 注意,所有数据时16进制,开头的0可以省略 例如b800:00A0 可以省略为b800:A0 [ Last edited by sl543001 on 2010-2-9 at 14:57 ] |
|
| 第2楼 qwd | 发表于 2010-02-08 18:26 |
| 初级用户 发帖 56 积分 161 | |
|
debug 好多人不知道,我也是刚刚接接触!知道是b800写屏,知道一点一点皮毛。做了那个纯批恢复16进制图片。不过还是有空向你多学习一下吧!
|
|
| 第3楼 sl543001 | 发表于 2010-02-09 14:59 |
| 中级用户 发帖 225 积分 499 | |
|
debug可是好东西,利用它可以进行16进制编辑,以及16进制正反汇编,运行程序.
理论上可以吧各种脚本单文件化,把记录配置文件和外部命令全部集成到单个脚本中! |
|
| 第4楼 sl543001 | 发表于 2010-02-23 21:32 |
| 中级用户 发帖 225 积分 499 | |
|
俺正在研究利用DEBUG编写一个可以移动屏幕中任意方形区域的内容到另一区域的子程序,然后添加到sybn dll中.
到时候大家就可以用类似 "call sd y 5 5 10 10 5 5"的命令直接移动屏幕的一部分了, 当然还可以吧这个子程序嵌入大家自己的脚本,然后使用"call :syby 5 5 10 10 5 5" |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |