CALL -151 它在 APPLE 上做了啥][
Posted
技术标签:
【中文标题】CALL -151 它在 APPLE 上做了啥][【英文标题】:CALL -151 What did it do on the APPLE ][CALL -151 它在 APPLE 上做了什么][ 【发布时间】:2010-09-13 16:33:35 【问题描述】:很久以前我有一个苹果 ][ 。
我记得命令调用 - 151 但我不记得它做了什么?
【问题讨论】:
过去的好日子!当我开始使用 call -151 命令时,我才 7 岁。从来都不知道我在做什么,但它仍然很有趣! :-) 【参考方案1】:呼叫 -151
进入机器码监视器-
http://www.skepticfiles.org/cowtext/apple/memorytx.htm
更新:
该链接似乎已失效,这是一个 Wayback Machine 替代方案:
http://web.archive.org/web/20090315100335/http://www.skepticfiles.org/cowtext/apple/memorytx.htm
这是完整的文章,以防万一 Wayback 消失:
APPLE CALL、PEEK、POKE LIST CALL 144 扫描输入缓冲区 呼叫 151 输入显示器标准 APPLE CALL、PEEK、POKE LIST -------------------------------------------------- ---------------------------- 调用 -144 扫描输入缓冲区 呼叫 -151 正常进入显示器 呼叫 -155 进入监视器和响铃 调用 -167 进入监视器并重置 CALL -198 响铃(模拟控制 G) 呼叫 -211 打印“错误”并响铃 CALL -259 从磁带读取 呼叫 -310 写入磁带 调用 -321 显示 A、S、Y、P 和 S 寄存器 CALL -380 设置普通视频模式 CALL -384 设置反向视频模式 呼叫 -415 拆卸 20 条指令 呼叫 -458 验证(比较并列出差异) 拨动 60,61 旧开始 - 62,63 旧结束后调用 -468 内存移动 64,65 新结局 - 66,67 新星 呼叫 -484 移动 CALL -517 显示字符和更新屏幕位置 调用 -531 显示字符、掩码控制字符并保存 7 个寄存器。 & 累加器 CALL -550 显示 A 寄存器的十六进制值(累加器) 呼叫 -656 响铃并等待回车 CALL -657 GET LINE OF INPUT,NO PROMPT,NO L/F, & WAIT(COMMA,COLON OK 调用 -662 获取输入行,有提示,无 L/F 和等待 调用 -665 获取输入行,带有提示、换行和等待 上述 3 次调用 (-657, -662, -665) 指的是来自 512-767 的输入缓冲区 呼叫 -715 获取字符 呼叫 -756 等待按键 CALL -856 时间延迟(戳 69,XX 设置延迟时间) 调用 -868 清除从光标到行尾的光标行 呼叫 -912 将文本向上滚动 1 行 呼叫 -922 换行 呼叫 -936 清除屏幕(主页) CALL -958 从光标到屏幕底部清除屏幕 CALL -998 将光标上移 1 行 CALL -1008 将光标向后移动 1 个空格 调用 -1024 仅显示字符 调用 -1036 将光标向前移动 1 个空格 呼叫 -1063 向电流输出设备发送铃 呼叫 -1216 文本和图形模式 调用 -1233 将光标移动到屏幕底部 呼叫 -1321 控制 E 调用 -1717 将光标下移 5 行 呼叫 -1840 拆卸 1 指令 呼叫 -1953 更改颜色 +3 CALL -1994 清除 LO-RES 屏幕(前 40 行) CALL -1998 清除图形屏幕 (LO-RES) CALL -2007 垂直线 CALL -2023 水平线 致电 -2458 进入迷你组装机 呼叫 -3100 打开第 1 页,无需清除它 呼叫 -3776 保存整数 CALL -3973 加载整数 调用 -6090 运行整数 CALL -8117 列出整数 呼叫 -8189 输入基本信息并继续 CALL -8192 ENTER BASIC 和 RESET (INTEGER BASIC KILL) 呼叫 -16303 文本模式 呼叫 -16304 图形模式 呼叫 -16336 切换扬声器 致电 42350 目录磁盘 调用 54915 清理堆栈,清除“内存不足”错误 呼叫 64166 启动冷启动(磁盘引导) 致电 64246 全新 - 你想办法 呼叫 64367 扫描内存 LOC 1010 和 1011 并将值插入位置 1012 等于 (PEEK(1011)-165) -------------------------------------------------- ---------------------------- PEEK 33 文本窗口宽度 (1-40) PEEK 34 顶部边缘的文本窗口 (0-22) PEEK 35 文字窗口底部 (1-24) PEEK 36 水平光标位置 (0-39) PEEK 37 垂直光标位置 (0-23) PEEK 43 引导槽 X 16(引导后) 最后一个 HLIN、VLIN 或绘图的 PEEK 44 端点 PEEK 48 LO-RES 颜色值 X 17 PEEK 50 文本输出格式:63=反向 255=正常 127=闪光(PEEK 243 设置为 64) PEEK 51 提示字符 PEEK 74,75 LOMEM 地址 (INT) PEEK 76,77 HIMEM 地址 (INT) PEEK 103,104 FP 程序起始地址 PEEK 104 如果返回 8,则 FP 在 ROM 中 PEEK 105,106 FP 可变空间起始地址 PEEK 107,108 FP 阵列起始地址 PEEK 109,110 FP 数字存储地址结束 PEEK 111,112 FP 字符串存储起始地址 PEEK 115,116 FP HIMEM 地址 PEEK 117,118 FP 行号正在执行 程序停止时的 PEEK 119,120 FP 行 PEEK 121,122 FP 行正在执行地址 PEEK 123,124 正在读取数据的行 PEEK 125,126 数据位置地址 PEEK 127,128 输入或数据地址 PEEK 129,130 FP 最后使用的变量名 PEEK 131,132 FP 上次使用的变量地址 PEEK 175,176 FP 程序结束地址 PEEK 202,203 INT 程序起始地址 PEEK 204,205 INT 变量存储结束 PEEK 214 FP 运行标志(自动运行 IF >127) PEEK 216 ONERR 标志(>127 如果 ONERR 处于活动状态) PEEK 218,219 发生错误的行 PEEK 222 ONERR 错误代码 PEEK 224,225 最后一个 HPLOT 的 X 坐标 最后一个 HPLOT 的 PEEK 226 Y 坐标 PEEK 228 盐酸值 0=0 85=2 128=4 213=6 42=1 127=3 170=5 255=7 PEEK 230 高分辨率绘图页(32=第 1 页 64=第 2 页 96=第 3 页) PEEK 231 刻度值 PEEK 232,233 形状表起始地址 PEEK 234 高分辨率碰撞计数器 PEEK 241 256 负速度值 PEEK 243 闪光面罩(64=当 PEEK 50 设置为 127 时闪光) PEEK 249 腐烂值 PEEK 976-978 DOS 重新进入向量 PEEK 1010-1012 重置矢量 PEEK 1013-1015 与号 (&) 矢量 PEEK 1016-1018 CONTROL-Y 矢量 PEEK 43140-43271 DOS 命令表 PEEK 43378-43582 DOS 错误消息表 PEEK 43607 MAXFILES 值 PEEK 43616,46617 上次加载的长度 PEEK 43624 驱动器号 PEEK 43626 插槽号 PEEK 43634,43635 上次 BLOAD 的起始地址 PEEK 43697 MAXFILES 默认值 PEEK 43698 DOS 命令字符 PEEK 43702 基本标志(0=INT 64=FP ROM 128=FP RAM) PEEK 44033 目录编号(17 为标准) PEEK 44567 目录文件名中的字符数减 1 PEEK 44611 位数减 1 扇区数和体积数 PEEK 45991-45998 文件类型代码表 PEEK 45999-46010 磁盘卷标题 PEEK 46017 磁盘卷号 PEEK 46064 扇区数(13=DOS 3.2 16=DOS 3.3) PEEK 49152 读键盘(如果 >127 则按键已被按下 PEEK 49200 拨动式扬声器(点击) PEEK 49248 盒式输入(>127=BINARY 1, 127 如果按钮按下) PEEK 49250 桨 1 按钮 (>127 IF 按钮按下 GD) PEEK 49251 桨 2 按钮 (>127 如果按钮按下) PEEK 49252 阅读游戏桨 0 (0-255) PEEK 49253 阅读游戏桨 1 (0-255) PEEK 49254 阅读游戏桨 2 (0-255) PEEK 49255 阅读游戏桨 3 (0-255) PEEK 49408 读取槽 1 PEEK 49664 读取槽 2 PEEK 49920 读取槽 3 PEEK 50176 读取槽 4 PEEK 50432 读取槽 5 PEEK 50688 读取插槽 6(162=磁盘控制卡) PEEK 50944 读取槽 7 PEEK 64899 指示您正在使用哪台计算机 223=Apple II 或 II+,234=FRANKLIN ACE 或?,255=APPLE IIE POKE 33,33 SCRUNCH 列表并删除报价单中的空格 POKE 36,X 用作打印机选项卡 (X=TAB - 1) POKE 50,128 使屏幕上的所有输出不可见 POKE 50,随机打乱输出到屏幕 POKE 51,0 击败“非直接命令”,有时不起作用 POKE 82,128 使盒式磁带程序在加载时自动运行 POKE 214,255 设置在 FP 中运行标志和任何键击都将运行磁盘程序 POKE 216,0 取消 ONERR 标志 POKE 1010,3 设置复位向量以启动 POKE 1011,150 冷启动(启动) 戳 1010,102 使 戳 1011,213 重置 戳 1012,112 运行 POKE 1014,165 设置与号 (&) 向量 戳 1015,214 列出您的程序 POKE 1014,110 设置与号 (&) 向量 将 1015,165 插入磁盘目录 POKE 1912+SLOT,1 ON APPLE PARALLEL CARD (with P1-02 PROM) 将启用 L/F'S POKE 1912+SLOT,0 ON APPLE PARALLEL CARD (with P1-02 PROM) 将启用 L/F'S POKE 2049,1 这将导致第一行程序重复列出 POKE 40514,20 允许文本文件问候程序 POKE 40514,52 允许二进制文件问候程序 戳 40993,24 这允许 POKE 40994,234 磁盘命令 POKE 40995,234 直接模式 POKE 42319,96 禁用初始化命令 戳 42768,234 全部取消 POKE 42769,234 DOS 错误 戳 42770,234 条消息 POKE 43624,X 选择磁盘驱动器而不执行命令(48K 系统) POKE 43699,0 关闭执行文件,但在 FP 之前将其打开,关闭 POKE 43699,1 重新打开一个执行文件。初始化或 MAXFILES 问题 POKE 44452,24 允许 20 个文件名(额外 2 个) 在目录暂停前戳 44605,23 POKE 44505,234 显示已删除的文件 在目录中戳 44506,234 个名字 POKE 44513,67 目录将只返回锁定的文件 POKE 44513,2 目录恢复正常 POKE 44578,234 取消运输 POKE 44579,234 目录后返回 戳 44580,234 个文件名 戳 44596,234 取消 POKE 44597,234 目录停止 屏幕已满时戳 44598,234 POKE 44599,234 停止每个文件的目录 POKE 44600,234 命名并等待按键 POKE 46922,96 这允许磁盘 POKE 46923,234 初始化 戳 46924,234 不放 在磁盘上戳 44723,4 DOS POKE 49107,234 预防语言 加载中的 POKE 49108,234 卡 重新启动期间戳 49109,234 POKE 49168,0 透明键盘 POKE 49232,0 显示图形 POKE 49233,0 显示文本 POKE 49234,0 显示完整图形 POKE 49235,0 显示文本/图形 POKE 49236,0 显示图形第 1 页 POKE 49237,0 显示图形第 2 页 POKE 49238,0 显示知识 POKE 49239,0 显示雇用 -------------------------------------------------- ---------------------------- 48K 内存图 十进制十六进制用法 -------------------------------------------------- ---------------------------- 0-255 $0-$FF 零页系统存储 256-511 $100-$1FF 系统堆栈 512-767 $200-$2FF 键盘字符缓冲器 768-975 $300-$3CF 通常作为免费空间提供给用户程序 976-1023 $3D0-3FF 系统向量 1024-2047 $400-$7FF 文字和 LO-RES 图形 第 1 页 2048-LOMEM 800 美元的 LOMEM 程序存储 2048-3071 $800-$BFF 文字和 LO-RES 图形第 2 页或可用空间 3072-8191 $C00-$1FFF 可用空间,除非 RAM APPLESOFT 正在使用中 8192-16383 $2000-$3FFF 高分辨率第 1 页或免费空间 16384-24575 $4000-$5FFF 高分辨率第 2 页或免费空间 24576-38999 $6000-$95FF 可用空间和字符串存储 38400-49151 $9600-$BFFF DOS 49152-53247 $C000-$CFFF I/O 硬件(保留) 53248-57343 $D000-$DFFF APPLESOFT 语言卡或 ROM 57344-63487 $E000-$F7FF APPLESOFT 或 INTEGER BASIC 语言卡或 ROM 63488-65535 $F800-$FFFF 系统监视器 PEEK:检查任何内存位置 L,打印 PEEK (L),其中 L 是小数 号码 0-65535。在后续位置 L 和 L+1,打印 PEEK (L) + PEEK (L+1) * 256 POKE:将值 X (0-255) 分配给位置 L;戳 L,X。戳两字节 数字(如果 X>255 则需要)、POKE L,X-INT(X/256)*256 和 POKE L+1,INT(X/256)。 CALL:要在位置 L 执行机器语言子程序,请调用 L。 只是为了好玩试试这个:戳 33,90。然后尝试列出您的程序。或尝试: 0,99 或戳 50,250 或戳 50,127。使用复位返回正常。 对于真正的随机数生成,试试这个:X= RND(PEEK(78)+PEEK(79)*256) 要找到最后一个加载文件的起始地址,请使用:PEEK(-21902)+PEEK (-21901)*256(结果为十六进制) 确定最后加载文件的长度使用:PEEK(-21920)+PEEK(-21919 *256(结果为十六进制) 要确定导致错误发生的行号,请将 X 设置为:PEEK(218 +窥视(219)*256 -------------------------------------------------- ---------------------------- 电子邮件 Fredric L. Rice / 怀疑论者坦克【讨论】:
是的,调用-151可以进入机器码监视器,但是用PR#6和IN#6启动软盘有什么区别呢? 如果您键入 PR#6 将加载 Slot 6(即磁盘驱动器)的引导代码,如果您已经在汇编程序中,那么您可以键入 C600G,它将开始加载相同的引导代码为 PR#6。来源《Beneath Apple DOS》一书 我认为“精英”是你所追求的。【参考方案2】:Crikey,这是过去的爆炸。我认为它进入了监视器 ROM(我在这和 Integer BASIC 之间纠结,但我很确定它是监视器)。
您可以下载 Apple II 模拟器并找出答案。
【讨论】:
【参考方案3】:调用 -151 进入监视器,3D0G 将您带回 BASIC,然后在监视器中键入插槽 #,然后按 Ctrl-P 将启动该设备。令人惊奇的是 20 年后的记忆!
【讨论】:
有趣的是,年轻时所知道的事情,以新的眼光看待,突然变得有意义。我不知道呼叫-155。如果六岁的我看到了,他会认为这只是另一个神奇的数字。 N 岁的我说:“哦,当然。因为它高 4 个字节;它可能会进入例行程序以按铃,然后返回并立即在监视器顶部拿起。基本失败。”【参考方案4】:我还要补充一点,-151 是 apple ][ 表示十六进制数的方式,应该表示 $FF69(Apple II 中使用的十六进制语法,即 0xFF68)。 CALL 是一个 Apple Basic 命令,它调用由参数(此处为 -151)给出的程序集子例程。 IIRC,此命令可以接受地址为负十进制值,用于使用 2 的补码解释在 $8000-$FFFF 之间的地址。
对于那些对历史感兴趣的人,这里是 Apple ][ 的监视器 rom 列表(在 6502 程序集中),地址 $FF69 带有标签 MONZ,它是处理机器代码处理命令的命令提示符的开始来自用户。使用“*”作为提示符的一种。一个非常原始的命令提示符。
Apple II System Monitor
【讨论】:
在一些 ROM 中还有一个基本的迷你汇编器,价格为 F666 美元。【参考方案5】:附带说明,这是一个负数而不是正确的 CALL 65385 的原因是因为 Apple II 的第一种 BASIC 形式被称为 Integer BASIC。它只理解从-32768到32767的有符号16位整数值,因此无法以正常的正值方式直接寻址超过32767的内存。
如果您尝试在 Integer BASIC 中实际输入 POKE 49200,0 或 CALL 65385,您将收到类似 ">32767 ERR" 的消息
当使用浮点数替换 Microsoft Applesoft BASIC(是的,来自他们)时,它们包括对负 POKE 值的支持,以便在一定程度上向后兼容旧的 Integer BASIC 程序。虽然这种兼容性是有限的,因为 Applesoft 缺乏 Integer 的其他编程功能,例如 MOD 除法余数。
由于早期 Integer BASIC 编程方法的强大影响,有许多 PEEK POKE 和 CALL 命令通常只能通过其十六进制和负十进制值来识别,而不能通过其正十进制值来识别。
【讨论】:
以上是关于CALL -151 它在 APPLE 上做了啥][的主要内容,如果未能解决你的问题,请参考以下文章