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 上做了啥][的主要内容,如果未能解决你的问题,请参考以下文章

[].forEach.call() 在 JavaScript 中做了啥?

strdup() - 它在 C 中做了啥?

stopLoading() 究竟做了啥?

lock 语句在幕后做了啥?

数据源和委托给自己到底做了啥?

“复制”在 ffmpeg 命令行中做了啥?