问题标签 [floppy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
x86 - IRQ 6 软盘控制器中断未触发
出于某种原因,IRQ 6 从未在我的 Qemu、Bochs、VMWare 或 VirtualBox 仿真器中运行。我需要某种类型的虚拟软盘驱动器或其他东西吗?这是我的 IRq6 处理程序:
它从不说“IRQ 6 HIT”,不仅如此,在我调用内核的 irq6 的安装函数中:
如您所见,我调用了一个重置软盘驱动器控制器的函数。让我们看看那个函数:
您可以在上面看到,我通过检查是否为 1 来等待 IRQ 完成_FloppyDiskIRQ
,这是我在它命中时设置的。我也注意到了这个常见的错误。代码永远不会通过该while()
循环,因为 IRQ6 永远不会触发。是否有一个原因?如何修复它以便 IRQ 6 可以触发?我想我必须在我的模拟器中添加一些东西(比如我为我的 ATA 控制器添加了一个虚拟硬盘)。
我还通过打印 IRQ 进行了测试,截至目前只有 0、1、12 次(第 6 次)...
c - C 程序无法获得软盘驱动器的句柄
我有一个配置了软盘驱动器 (A:) 的 Windows 7 VM。我正在尝试将软盘驱动器的引导扇区读入结构。但是,每次我运行这个程序时,它都找不到软驱。我可以确认它是可访问的。
代码:
输出/错误:
系统返回的错误码是2:系统找不到指定的文件。
由于无法打开软盘驱动器,因此结构变量会保存垃圾值。
有人可以帮忙吗?
vbscript - 使用 autorun.inf 在软盘上运行 .vbs 文件
所以我有一个 1.44MB 的软盘,其中有一个名为 .vbs 的文件autorun.vbs
。我autorun.inf
在它的根目录上也有一个文件。autorun.inf
看起来像这样:
什么都没发生。我尝试将软盘放入我的新 Vista 计算机,但没有任何反应(脚本打开一个MsgBox
. 我应该添加autorun.inf
什么?
是的,我知道 MS 在 7 中摆脱了 AutoPlay 并为 Vista 进行了更新,但我没有连接到 Internet,我使用的是 Vista SP2。
assembly - 软盘读取 (AH=0x2, int 0x13) 未完成
在我的引导加载程序的第二阶段,我试图将虚拟软盘上的一些扇区加载到bochs的内存中,但是在调用int 0x13
时,例程就不会返回。
我相信我第二阶段的相关代码是:
所有代码都可以在我的Github 存储库中找到。要构建,只需使用BOCHSmake all
,然后使用命令运行bochs
我做的第一件事是验证我确实得到了所有参数。r
在 bochs 的壳产量中:
ah = 0x2
(例程 ID)、al = 0x1
(扇区数)、(ch = 0x0
柱面编号的低字节)、cl = 0x5
(扇区编号和柱面编号的高两位)、dh = 0x0
(磁头编号)、dl = 0x0
(驱动器编号)。
sreg
打印es
:
并且,正如我所期望的那样bx = 0x0
,该扇区被加载到。0x0:0x0
我尝试了几件事:
加载到物理地址
0x600
我认为在执行 BIOS 中断例程期间覆盖 IVT 或 BDA 可能不是一个好主意,所以我尝试将扇区加载到
0x600
(es = 0x60
,bx = 0x0
) (我知道 BDA 的大小只有 256 字节)。结果相同。加载磁盘上的第一个扇区
也许阅读第五个部门以某种方式越界或其他什么?用于读取我的第二阶段的代码
int 0x13
按预期工作。在int 0x13
我的第二阶段是相似的,所以我希望它能够工作。作为测试,我将第二阶段更改为读取扇区 1,但仍然无法正常工作。将上半部分归零
eax
我想也许 BIOS 例程中确实存在一个错误,并且以某种方式
eax
使用而不是ax
。我尝试将 ... 的高 16 位部分归零,eax
但无济于事。
正如我之前所说,我已经将一些扇区从磁盘加载到内存中。之前的 GPR 的内容int 0x13
如下(r
在 bochs shell 中获得):
sreg
yield es:0x8f60
,它是 EBDA 之前的动态计算地址。
比较两者,我没有看到可能影响中断例程功能的显着差异,因此问题不在于通过寄存器传递的参数。
有人对该怎么做有其他建议吗?
assembly - 如何使用 16 位汇编在 DOS 中格式化软盘?
我在旧书中学习 DOS 的 x86 汇编编程,在关于中断的讨论中,我看到了 13h 那个。书上说我可以用它来格式化驱动器。但不幸的是,我的书中没有提供更多关于如何做到这一点的信息。
我变得很好奇,并试图自己使用它,但它不起作用。如何使用 16 位 x86 程序集格式化驱动器 A: 中的软盘?做起来简单吗?我正在使用 TASM 编译和链接,并在 MS-DOS 中运行。
也许除了使用之外还有其他方法int 13h
吗?
c - 禁止“将软盘插入驱动器 X:”
我正在尝试检查驱动器 A 中是否存在任何磁盘:(在我的程序安装后,我需要确保计算机不会从安装软盘启动)。我尝试过使用 _access 方法(未定义的引用...)、FILE* 并在软盘内创建目录并在检查后将其删除。不幸的是,DOS 显示关于将磁盘放入驱动器的丑陋文本(破坏我的 TUI 并使用户认为驱动器中的软盘很重要)。那么如何抑制此消息,或安全地检查驱动器中是否存在磁盘?
windows - 如何在 Windows 10 pro 64 位上将二进制文件刻录到通过软盘 USB 插入的软盘的扇区 0
大家好,我正在Assembly 16 bit NASM windows 10 64 bit(具体来说)编写一个操作系统并将其编译为2个二进制.bin文件:
kernel.bin
boot.bin
你可能猜到boot.bin加载kernel.bin和做一个文件系统,没关系。但问题是我需要在真机上测试它来测试硬件的反应,而不仅仅是虚拟机!所以我得到了软盘(3.5" 1.44MB),这已经绰绰有余了,但是我尝试将引导加载程序(boot.bin)写入带有软盘USB驱动器的软盘的扇区0(驱动器和软盘正在以它们应该的方式工作! ) 我使用以下步骤将操作系统放在 cmd 中的软盘上:
它启动......但不正确:它说:
请删除所有媒体...按任意键重新启动...`
它重新启动到 Windows 10
问题
我怎样才能解决这个问题?我现在在 dosbox 中使用 dosbox 和 debug.exe(来自 windows 7 x32 的 debug.exe),例如:我复制内核并刻录加载程序,但它实际上可以工作!并加载我的操作系统!
assembly - 汇编中软盘上各种文件的内存访问
当我尝试从程序集访问软盘时,我无法解决软盘上的内存映射问题。
顺便说一句,我的操作系统项目有一些基本的东西。
现在一切正常。
现在,在第三个文件中,我正在尝试打印另一个变量,但它正在打印随机字符。
我录制到软盘映像并在 Linux 的 qemu-system-i386 模拟器中引导的每个文件。
c# - 如何检测插入的软盘然后复制文件?
我有一船载有图像的旧软盘。我想复制它们,但它们的文件名经常重复。我有一个批处理文件,可以复制和重命名文件,但每次插入光盘时都必须运行它。我试图制作一个 C# 应用程序来检测驱动器状态何时更改,然后根据当前日期/时间自动复制和重命名文件。
提前致谢。
java - Disable Caching When Reading from Floppy
TLDR: 如果您在 MacOS 上轮询软盘,请使用 rdisk 并清理该文件上的所有句柄!
晚上好!
我想用一些旧的软盘作为身份证,所以我需要知道何时将一张软盘插入我的 USB 读卡器。由 Sony 制造的阅读器在 Linux 和 MacOS 下显示为磁盘驱动器,这让我认为(如果我错了,请纠正我)当我插入软盘时我不会从它那里得到信号。所以我转向投票。我在下面编写了 Java,它使用 FileReader 轮询原始磁盘,直到它可以读取某些内容然后返回。我做同样的事情inverse = true
来检测卡何时弹出。第一步工作并在插入磁盘时返回。尝试检测磁盘的删除时出现了我的问题。某些东西正在缓存数据,因为当我弹出软盘时,System.out.println(f.read());
会不断打印存储在软盘上的第一个字符的字符代码。但是,当我调用head -c 100 /dev/disk2
,它会正确检测读取错误。什么可能存储读取的字节,我如何强制 Java 直接从磁盘刷新数据?
这是我的完整程序的输出。
驱动连接。没有软盘
驱动连接。软盘插入。读取先打印的数据。
驱动连接。软盘已移除
编辑:2018 年 8 月 20 日
我回答了我自己的问题。我的方法中有两个错误。首先是我从 中读取/dev/disk2
,它实现了缓存,而不是/dev/rdisk2
没有。第二个问题是我在设备上留下了打开的文件句柄,使其处于无效状态。使用 try/catch/finally 我现在确保我FileReader
的 for/dev/rdisk2
总是关闭,尽管预期 IOExceptions。这是修改后的代码。