无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 16050|回复: 27
打印 上一主题 下一主题

[分享] 用GRUB4DOS 修改系统日期的批处理

[复制链接]
跳转到指定楼层
1#
发表于 2011-10-8 10:59:47 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
最近好像有许多要求GRUB4DOS修改系统日期的功能,先用批处理写了一个。

有兴趣可以参考一下就可以改成修改系统时间的的功能,很简单的。

感谢135956提供的中断资料。

批处理源码如下。

复制源码请点击这里:

http://fayaa.com/code/view/23025/raw/


                !BAT
::datefunc for grub4dos by chenall 2011-10-08
setlocal
debug off
set edi=0x60000
set esi=0x60004
set ebp=0x60008
set esp=0x6000C
set ebx=0x60010
set bx=0x60010
set edx=0x60014
set dx=0x60014
set ecx=0x60018
set cx=0x60018
set eax=0x6001C
set ax=0x6001C
set gs=0x60020
set fs=0x60024
set es=0x60028
set ds=0x6002c
set ss=0x60030
set eip=0x60034
set cs=0x60038
set eflags=0x60003c
::时钟服务(Clock Service——INT 1AH)
::04H —读取日期
call :BIOS_INT 1A ax=0x400
set date=%*
if exist date && goto :SET_DATE
call Fn.0 0 "%%04X%%04X" *%cx% *%dx% | set date=
echo -n The current date is: %date:~0,4%-%date:~4,2%-%date:~6%
set /p date=Enter the new date: (yyyy-mm-dd)
  
:SET_DATE  调用BIOS中断修改日期
::05H —设置日期
call :BIOS_INT 1A ax=0x500 cx=0x%date:~0,4% dx=0x%date:~5,2%%%date:~8,2%
exit
  
:BIOS_INT
::初始化系统参数
echo -n > (md)0x300+1
write %cs% -1
write %ss% -1
write %esp% -1
write %eflags% -1
write %ds% -1
write %es% -1
write %fs% -1
write %gs% -1
write %eip% 0xFFFF%1CD
shift 1
  
::设置参数
:参数
if "%2"=="" goto :realmode_run
write %%%1% %2
shift 1
shift 1
goto :参数
:realmode_run
call Fn.53 0x60000
exit [/Font]


[ 本帖最后由 chenall 于 2011-10-8 11:02 编辑 ]
2#
 楼主| 发表于 2011-10-8 12:11:15 | 显示全部楼层
外部命令。。

没有对输入的数据进行检测,自己使用时小心。

date
显示当前日期

date 2011-01-01

修改日期为2011-01-01

下载地址(传送门)

http://bbs.wuyou.net/forum.php?m ... p;page=2#pid2316675

[ 本帖最后由 chenall 于 2011-10-8 15:06 编辑 ]
回复

使用道具 举报

3#
 楼主| 发表于 2011-10-8 14:12:45 | 显示全部楼层

回复 #8 zhaohj 的帖子

汗,显示的时候搞错了。
回复

使用道具 举报

4#
 楼主| 发表于 2011-10-8 15:05:46 | 显示全部楼层
重新上传一下。

date-2011-10-08.zip

486 Bytes, 下载次数: 250, 下载积分: 无忧币 -2

回复

使用道具 举报

5#
 楼主| 发表于 2011-10-8 15:07:10 | 显示全部楼层

回复 #9 wwmy1982 的帖子

时钟服务(Clock Service——INT 1AH)
00H —读取时钟“滴答”计数06H —设置闹钟
01H —设置时钟“滴答”计数07H —闹钟复位
02H —读取时间0AH —读取天数计数
03H —设置时间0BH —设置天数计数
04H —读取日期 80H —设置声音源信息
05H —设置日期
(1)、功能00H
功能描述:读取时钟“滴答”计数
入口参数:AH=00H
出口参数:AL=00H——未过午夜,否则,表示已过午夜
CX:DX=时钟“滴答”计数
(2)、功能01H
功能描述:设置时钟“滴答”计数
入口参数:AH=01H
CX:DX=时钟“滴答”计数
出口参数:无
(3)、功能02H
功能描述:读取时间
入口参数:AH=02H
出口参数:CH=BCD码格式的小时
CL=BCD码格式的分钟
DH=BCD码格式的秒
DL=00H——标准时间,否则,夏令时
CF=0——时钟在走,否则,时钟停止
(4)、功能03H
功能描述:设置时间
入口参数:AH=03H
CH=BCD码格式的小时
CL=BCD码格式的分钟
DH=BCD码格式的秒
DL=00H——标准时间,否则,夏令时
出口参数:无
(5)、功能04H
功能描述:读取日期
入口参数:AH=04H
出口参数:CH=BCD码格式的世纪
CL=BCD码格式的年
DH=BCD码格式的月
DL=BCD码格式的日
CF=0——时钟在走,否则,时钟停止
(6)、功能05H
功能描述:设置日期
入口参数:AH=05H
CH=BCD码格式的世纪
CL=BCD码格式的年
DH=BCD码格式的月
DL=BCD码格式的日
出口参数:无
(7)、功能06H
功能描述:设置闹钟
入口参数:AH=06H
CH=BCD码格式的小时
CL=BCD码格式的分钟
DH=BCD码格式的秒
出口参数:CF=0——操作成功,否则,闹钟已设置或时钟已停止
(8)、功能07H
功能描述:闹钟复位
入口参数:AH=07H
出口参数:无
(9)、功能0AH
功能描述:读取天数计数,仅在PS/2有效,在此从略
(10)、功能0BH
功能描述:设置天数计数,仅在PS/2有效,在此从略
(11)、功能80H
功能描述:设置声音源信息
入口参数:AH=80H
AL=声音源
=00H——8253可编程计时器,通道2
=01H——盒式磁带输入
=02H——I/O通道上的"Audio In"
=03H——声音产生芯片
出口参数:无
回复

使用道具 举报

6#
 楼主| 发表于 2011-10-8 15:41:01 | 显示全部楼层
回复

使用道具 举报

7#
 楼主| 发表于 2011-10-8 16:41:24 | 显示全部楼层
修改时间的批处理在这里,早上一起写的,不过修改时间的比较少用。

http://fayaa.com/code/view/23027/
回复

使用道具 举报

8#
 楼主| 发表于 2011-10-8 17:14:19 | 显示全部楼层

回复 #21 Plantsoot 的帖子

grubcall,还没有去实现,不过已经有人再做类似的工作了,我就暂时不弄了。
回复

使用道具 举报

9#
 楼主| 发表于 2012-6-26 20:04:19 | 显示全部楼层
新手先看看教程...
不懂得运行我也没有办法又不能手把手的教。

这些都是很基本的东西。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-21 13:16

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表