易码技术论坛

 找回密码
 加入易码
搜索
查看: 759|回复: 10

大虾解释一下这段代码

[复制链接]
发表于 2008-8-18 07:13:31 | 显示全部楼层 |阅读模式
ggv和Emax的内存查看器满天乱飞,可这是我能找到的唯一pc1Kc专用的内存查看工具了
这是代码:
10 GRAPHOCATE 3,1RINT "     装载中 ...":CLEAR:GOSUB 120
15 GRAPHOCATE 2,1RINT "  Memory Explorer    ":K$=INKEY$
20 GRAPHRINT "请输入起始地址:"
30 K=ASC(INKEY$):IF K=27 THEN POKE 199,141:END
35 IF K=13 THEN 200
40 IF K=23 AND H>0 THEN 110
50 RESTORE100
60 FOR T=0 TO 15:READ P:IF P=K THEN 80
70 NEXT : GOTO 30
80 KEP(H)=T:POKE 724+H+(H>1)+(H>3),CH(T):PRINT
90 H=H+1:IF H=8 THEN 200 ELSE 30
100 DATA 48,98,110,109,103,104,106,116,121,117,97,107,99,100,101,102
110 H=H-1:KEP(H)=0:POKE H+724+(H>1)+(H>3),32:PRINT : GOTO 30
120 RESTORE130: FOR T=0 TO 136:READ P:POKE 4868+T,P:NEXT
130 DATA 8,72,138,72,152,72,165,0,72,165,10,72,165,13,72,165,64,72,165,65
140 DATA 72,173,0,19,133,0,173,1,19,133,10,173,2,19,133,64,173,3,19,133
150 DATA 65,160,80,177,64,153,212,2,136,16,248,104,133,65,104,133,64,104,133,13
160 DATA 104,133,10,104,133,0,104,168,104,170,104,40,96,165,0,72,173,0,19,133
161 DATA 0,165,10,72,173,1,19,133,10,160,2,152,10,170,173,2,19,149,142,173
162 DATA 3,19,149,143,136,208,240,32,135,224,165,146,141,2,19,165,147,141,3,19
165 DATA 165,10,141,1,19,104,133,10,165,0,141,0,19,104,133,0,96
170 DIM CH(15): FOR T=0 TO 15
180 IF T<10 THEN CH(T)=T+48 ELSE CH(T)=T+87
190 NEXT :RETURN
200 Z=KEP(0)*16+KEP(1):A=KEP(2)*16+KEP(3)=KEP(4)*4096+KEP(5)*256+KEP(6)*16+KEP(7):TEXT
210 POKE 704,CH(INT(Z/16)):POKE 705,CH(Z-INT(Z/16)*16):POKE 4864,Z
220 POKE 707,CH(INT(A/16)):POKE 708,CH(A-INT(A/16)*16):POKE 4865,A
230 DA=INT(D/256)B=D-DA*256:POKE 4866,DB:POKE 4867,DA
240 POKE 710,CH(INT(DA/16)):POKE 711,CH(DA-INT(DA/16)*16):POKE 4865,A
250 POKE 712,CH(INT(DB/16)):POKE 713,CH(DB-INT(DB/16)*16):POKE 4865,A
260 CALL 4868:PRINT OCATE 1,11
270 K=ASC(INKEY$):IF K<>27 THEN 295
280 LOCATE 2,1:PRINT "   确定退出 Y[N]    ";:LOCATE 2,18:K$=INKEY$
290 IF K$="y" THEN POKE 199,141:END ELSE 260
295 IF K=28 THEN 550
296 IF K=31 THEN 530
300 RESTORE320: FOR T=1 TO 13:READ P:IF P=K THEN 330
310 NEXT : GOTO 260
320 DATA 48,46,32,98,110,109,104,103,121,13,116,117,106
330 ON T GOTO 340,350,360,370,380,390,400,410,420,430,440,510,520
340 D=D-1: GOTO 450
350 D=D+20: GOTO 450
360 D=D+1: GOTO 450
370 D=D-80: GOTO 450
380 D=D-20: GOTO 450
390 D=D+80: GOTO 450
400 A=A+1: GOTO 470
410 Z=Z+1: GOTO 490
420 A=A-1: GOTO 470
430 A=A+128: GOTO 470
440 Z=Z-1: GOTO 490
450 IF D>65535 THEN D=D-65536:210
460 IF D<0 THEN D=D+65536:210 ELSE 210
470 IF A>255 THEN A=A-256:210
480 IF A<0 THEN A=A+256:210 ELSE 210
490 IF Z>255 THEN Z=Z-256:210
500 IF Z<0 THEN Z=Z+256:210 ELSE 210
510 D=D-4096: GOTO 450
520 D=D+4096: GOTO 450
530 TEXT :CALL 4941
540 CLS: GOTO 210
550 CLEAR:GOSUB 120: GOTO 20

其中4684是在程序运行时闲置的地址(我想应该是这样),我想问往4868地址后写入的那些数字是什么意思?而且CALL后可以直接把内存(不知道叫什么~~)内容显示出来,比PRINT还快,这是为什么??
发表于 2008-8-18 10:07:05 | 显示全部楼层
不研究basic了

太长 看见就犯晕
发表于 2008-8-18 10:17:26 | 显示全部楼层
我记得wqx上有一段显存地址,可以用POKE暂时把图或文字存在里面,然后call出来,这样是很快的
发表于 2008-8-18 10:22:28 | 显示全部楼层
原帖由 西湖绿雨 于 2008-8-18 10:17 发表
我记得wqx上有一段显存地址,可以用POKE暂时把图或文字存在里面,然后call出来,这样是很快的

误导...
wqx分文字缓存和显示缓存
是不重叠的两段独立内存

把数据复制过去并调用刷新中断实现
发表于 2008-8-18 10:26:15 | 显示全部楼层
130 DATA 8,72,138,72,152,72,165,0,72,165,10,72,165,13,72,165,64,72,165,65
实际作用就是保护一些寄存器和某些内存里的值,初始化
POKE 199,141  ;199是按键映射的一个地址,这个作用就是模拟按键
…………
实际上,这就是个简单的bas+6502的程序,data所包括的是一些机器码,poke就是把这些代码搬到指定的内存,call就是执行这些代码了,如果不知道这些机器码的含义,可以找一个6502汇编工具,把这些代码输上去然后反汇编就行了……
发表于 2008-8-18 11:09:58 | 显示全部楼层
原帖由 epcdiy 于 2008-8-18 10:22 发表

误导...
wqx分文字缓存和显示缓存
是不重叠的两段独立内存

把数据复制过去并调用刷新中断实现

我路过的,小E说的对,那个人就是在误导,楼主别听
发表于 2008-8-18 12:07:46 | 显示全部楼层
原帖由 POTO 于 2008-8-18 10:26 发表
130 DATA 8,72,138,72,152,72,165,0,72,165,10,72,165,13,72,165,64,72,165,65
实际作用就是保护一些寄存器和某些内存里的值,初始化
POKE 199,141  ;199是按键映射的一个地址,这个作用就是模拟按键
…………
实际上,这 ...


此解释较为正确
发表于 2008-8-18 12:20:53 | 显示全部楼层
原帖由 凤呈PW 于 2008-8-18 12:07 发表


此解释较为正确

较为正确……如果有什么错误或是漏掉什么的,就请ls补充一下啦……
发表于 2008-8-18 12:39:30 | 显示全部楼层

回复 8# 的帖子

不是有遗漏或者错误的问题,相比前几个帖子的回答,你这个自然是最好的。
发表于 2008-8-18 12:40:58 | 显示全部楼层
哦,我知道什么意思了……
 楼主| 发表于 2008-8-18 12:50:52 | 显示全部楼层
谢谢啊
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-20 17:31 , Processed in 0.009908 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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