SHARP PC-1500A如果不插内存卡,仅靠内置的内存也能正常使用。
输入NEW0 指令会清空内存。这时,它的内存地图如下
40C5 :0xFF BASIC程序结束标志
如果在PRO状态下,编写一小段BASIC程序,会占用一小段内存。
10 PRINT A
20 END
这时,它的内存地图如下:
40C5 :0x00 语句行号10(高字节)
40C6 :0x0A 语句行号10(低字节)
40C7 :0x04 语句字节长度
40C8 :0xF0 PRINT(高字节)
40C9 :0x97 PRINT(低字节)
40CA :0x41 A (PRINT 语句的参数)
40CB :0x0D 语句10结束标志
......
40D2 :0xFF BASIC程序结束标志
====================
BASIC语言中将十进制数转换为十六进制数的代码示例:
todo 有待修改。 下列程序不能运行,由CHATGTP @Claude生成,
伪代码 转换步骤:
将十进制数字除以16。取余数,取商。
余数加入 “十六进制数字 字符串”
整数商 进入下一次迭代。
重复这些步骤, 获取其余的十六进制数字 。直到商等于0。
10 REM 将十进制数转换为十六进制数
20 INPUT "请输入一个十进制数:",D : REM 提示用户输入十进制数
30 REM 计算十六进制数的位数和各位上的数值 , 逐位计算十六进制数
50 N=0:H$=""
70 N=N+1
80 K= INT(D/16^N)
90 D=D-K*16^N
100 IF K>9 THEN H$=CHR$(K+55)+H$ ELSE H$=STR$(K)+H$
110 IF D=0 THEN 140
120 IF N<=4 THEN GOTO 70
130 PRINT "超出范围,无效输入。":GOTO 20
140 PRINT "对应的十六进制数是:";H$
150 END
===========================
PC-1500 命令
NEW
STATUS
PEEK
POKE
CSAVE M
CLOAD M
CALL
---------------------------------------
MEM显示内存
STATUS0 显示剩余的程序步 --0 空洞,未使用
STATUS1 显示已用程序步数 --1 占用,使用
PC-1500主机裸机,最大1850
4K RAM模块 5K
8K RAM模块 10K
16K RAM模块 22K(大约)
PEEK address --读ME0内存数据
PEEK #address --读ME1内存数据
POKE address,VALUE1,VALUE2,....... --写ME0内存数据
例子: POKE &4700,&01,&02,&03 --向ME0内存,地址 0x4700 写入数据
POKE #address,VALUE1,VALUE2,....... --写ME1内存数据,注意ME1 区域包含IO口控制器,防止误操作
CSAVE M "file name" ,address_start,address_end , address_autorun , --M 是Machine language. --address_autorun 是下次装载到内存时自动运行的地址。
CSAVE M-1 --Tape control will be set to the REMOTE-1 side.
CLOAD M "file name" ,expression , --M 是Machine language --expression 优先于CSAVE 的 address_autorun
CLOAD M-1 --Tape control will be set to the REMOTE-1 side.
==========================
运行机器语言方法
1, 在PC上完成机器码语言编程 (汇编语言??)
2,用POKE命令(非语句)写SHARP PC-1500主机
3,直接使用CALL命令,或在BASIC 程序里使用CALL命令 执行上述编程
==========================
导出内存数据的方法
可以用CSAVE 将数据移动到磁带,再用Pocket Tools 工具 解析数据。
可以用汇编语言MOV,将数据移动到用户内存区域,再用BASIC PAUSE 或 PRINT LPRINT命令打印出来
可以将PEEK嵌入BASIC编程 ,虽然PEEK是命令,也可以用于编程。例如,
例如,
100 "A": POKE 30873, PEEK 16375,PEEK 16376
例如, From PC2AssemblyLanguage.pdf page 24
10 DATA &??, &??, &??, &??, &??, &??,
20 M=&40C0
100 FOR I=1 TO 30
110 READ A
120 POKE M+I ,A
130 NEXT I
例如,原创的
10 A=&4000
20 A=A+1
30 PAUSE PEEK A
40 GOTO 20
例如,
10 A=&4000
20 A=A+8
30 PAUSE "ADDR="; A; PEEK A ;PEEK (A+1); PEEK (A+2); PEEK (A+3); PEEK (A+4); PEEK (A+5); PEEK (A+6); PEEK (A+7) --必须带括号
40 GOTO 20
===============================
BASIC 语句
DATA 后跟 多个数据项表构成,由逗号隔开,
可以先写READ语句,后写DATA语句,但是最好不要这样。
DATA 语句除了用行号标记之外,还可加上“字符”标记,便于 RESTORE 语句重置指针
10 DATA "MOBY DICK" , 20000, "WHITE" , "M" , 112
READ 语句使数据项从 DATA读出, 并赋给变量
120 READ N$, WT, C$ , SX$, L
RESTORE 语句重置DATA指针,可以将指针移动到第一个 DATA 数据项,或从中间某个语句DATA数据项
REM 编译器 见到 REM关键字时,就忽略 这一行中剩下的任何字符.
PRINT USING
& 规定一个数字显示域,实行左对齐.
# 规定一个数字显示域,实行右对齐.
PRINT USING “&&&&&&”; X
这台计算机处理10个有效数字,当用超过10 位数时,PRINT、LPRINT 语句显示的末位不正确
GPRINT &F, 54, &3E --todo 不能正确执行??
GPRINT “&F 54 &3E” --todo 不能正确执行??
STOP 语句能使计算机中止程序的执行,
CONT 命令 可以 接着运行
修改BASIC 命令 的时候, 注意: 需要重新写一遍,不能仅仅改动或添加或删除个别字母
INPUT# 从磁带到内存 Data transmission command .
PRINT# 从内存到磁带
===========================
十六进制数的前 带有&号.