RAMinit 程序编译运行考古记录
本科的时候浅浅研究了DOSBox,今天看到网上挺多关于雷军代码的新闻,我把雷军代码在web上编译出来了,但是我是业余选手,所以做得比较差,不过大家感兴趣可以关注我的dosplay项目,旨在利用js-dos实现汇编语言在web中的运行,目前必须在电脑端打开才能编辑,手机上只能运行,代码使用我的chrome系的浏览器测试通过了,其他浏览器可能有问题。
点击运行雷军的RI.com代码 这个蓝色的链接使用chrome或者edge打开后应该可以看到自动编译RI.com程序,注意需要使用xWorker模拟器,同时打开/C/assembly/LeiJun/RI.asm文件,运行run-com命令。
我的完整编译程序的输出为:
C:\ASSEMBLY\LEIJUN>tasm RI.asm
Turbo Assembler Version 4.1 Copyright (c) 1988, 1996 Borland InternationalAssembling file: RI.asm
Error messages: None
Warning messages: None
Passes: 1
Remaining memory: 408kC:\ASSEMBLY\LEIJUN>tlink /t RI.obj
Turbo Link Version 7.1.30.1. Copyright (c) 1987, 1996 Borland International
Warning: DOSSEG directive ignored in module RI.ASM
运行程序可以获得如下内容:
C:\ASSEMBLY\LEIJUN>RI.com
RAMinit Version 2.12 Copyright (c) 1989-1994 by KingSoft Ltd.
Activate with: C:\ASSEMBLY\LEIJUN>ri /?
RAMinit Version 2.12 Copyright (c) 1989-1994 by KingSoft Ltd.
Programmed by Mr. Leijun Dec 1992Usage: RI [options]/H,/? Display this screen
/CLS Removes all TSR programs after current RI
/RET Removes TSR programs include current RI
/NEW Residents a new data copy of current environment
/ALL Removes all RI copies and all other tsr programs
/Sxyy.. Define Hotkey x=AuxHotkey yy..=shift statusx=auxiliary hotkey (default is "X") x equ "1" means need AuxHotkeyyy..=shift status [CAScas]C: Left Ctrl A: Left Alt S: Left Shiftc: Right Ctrl a: Right Alt s: Right ShiftExample: "RI /S1c" means Hotkey is Right_Ctrl+X"RI /S0Cc" means HotKey is Left_Ctrl+Right_Ctrl"RI /CLS" equals simply press hotkey"RI /RET" Removes all TSRs after current RI and this RIContact me for RAMinit problems: (01)2561155 Call 1997C:\ASSEMBLY\LEIJUN>ri ri /cls
RAMinit Version 2.12 Copyright (c) 1989-1994 by KingSoft Ltd.
可以看到这里面有雷军当年的联系方式,从打印出来的 RAMinit
程序的相关说明可以看出,这个代码的RAMinit
版本为 2.12,由金山软件(KingSoft Ltd.)在 1989 - 1994 年开发,编程者是 Mr. Leijun,编写时间为 1992 年 12 月。该程序主要用于管理内存中的驻留程序(TSR)
- 代码来自 https://github.com/doyou/RAMinit/
- 演示效果可以看 https://www.bilibili.com/video/BV1uF411k7RH
中断程序
该RI.com程序可以中断目前死循环的程序,比如如下的程序,通过tasm编译运行之后显然会陷入死循环,这时就可以调用RI.com中断程序,从而可以做其他的事情。
; the system is blocked when executing main program
; can be solved by RI.386
DATA SEGMENT USE16MESG DB 'I forget to exit my code 5555; press right ctrl + left ctrl to stop me by ri.com plz',0DH,0AH,'$'
DATA ENDS
CODE SEGMENT USE16ASSUME CS:CODE,DS:DATABEG: MOV AX,DATAMOV DS, AXMOV CX,8PRINT: MOV AH,9MOV DX, OFFSET MESGINT 21HLOOP PRINTCHECK_LOOP:CMP CX, 10000JG RESET_CXINC CXJMP CHECK_LOOPRESET_CX:MOV CX, 0JMP CHECK_LOOPMOV AH,4CHINT 21H ;BACK TO DOS
CODE ENDS
END BEG
清除驻留程序TSR
在线的代码给出了一个实例,首先,安装了雷军写的RI程序,然后,运行程序tsr.exe,改程序设置了一个“终止并驻留”程序,其在屏幕右上角显示时间,接下来我们可以按住左右两个CTRL按键或者输入命令ri /cls来清除TSR。
PS 希望有大佬可以具体讲讲相关的知识,我确实不大懂这个程序的功能