summaryrefslogtreecommitdiffhomepage
path: root/mixlib/xmix_device.c
AgeCommit message (Collapse)Author
2019-04-09Support IOC commands for disk/drum devicesJose Antonio Ortega Ruiz
Thanks to Kevin Brunelle There is a minor fix included with regards to tape devices. The test was failing if M == 0, when it should fail when M != 0. NOTICE: This patch changes the behavior of the VM and changes the function parameters for the ioc_ function. Documentation changes are included. Permits the following: LDX BLKNUM IOC 0(8) OUT ADDR(8) Write block from ADDR into disk[BLKNUM] IOC 0(8) IN ADDR(8) Read block from disk[BLKNUM] into ADDR ... BLKNUM CON 45000 Example possible block on disk I was having an issue writing a block to a drive and then reading back the same block. Because it is impossible to move the SEEK_CUR pointer backwards on a disk device, there was no way for a program to read back a block that it wrote to a disk without restarting or fiddling with ~/.mdk/disk?.dev files and symbolic links. I have added a function parameter to the ioc_ function and used it to pass the value of rX to ioc_. This permits us to use IOC commands to move the read/write head on a disk/drum device. I believe that this conforms to the potential meaning of Knuth's description of IOC for disk/drum devices. I have put in tests to verify that rX is positive and M = 0. I have updated the documentation to reflect this new behavior. This makes disks much more usable. Note: I won't be offended if this patch is rejected because it changed the behavior of the VM. I think it fits the spirit and enhances the functionality in a way that some might find useful. I wanted it for something I was working on, and I felt others might want the same. The thing with the paper-tape should be fixed, though.
2019-03-20Fix: correctly rewind tapeJose Antonio Ortega Ruiz
According to the specification, if M < 0, the tape is skipped backwards M blocks, or to the beginning of the tape, whichever comes first. In the implementation, we don't check to verify that we aren't seeking past the beginning of the file. This causes fseek(3) to fail, and it leaves us at the position we were at. Diagnosis and fix by Kevin Brunelle.
2007-06-25GPL v3 noticesJose A Ortega Ruiz
git-archimport-id: mdk@sv.gnu.org/mdk--devel--1--patch-43
2006-03-20Version 1.2.1 imported1.2.1Jose Antonio Ortega Ruiz
git-archimport-id: mdk@sv.gnu.org/mdk--devel--1--patch-1