Jump to content
IGNORED

Altirra 2.10 released


Gury

Recommended Posts

Phaeron, a bug of sorts..

 

ATZ images can have a file association but they don't work from zip files which isn't the bug, but they also don't work if double clicked on when loose in a directory unzipped.

 

Says disk image corrupt or unsupported.

 

Sort of defeats the idea of associating them :)

Link to comment
Share on other sites

Here's a version with read-only folder mounting. I implemented it to test some theories about virtual disk image algorithms, but hey, why not make it a feature.

 

http://www.virtualdu...2.20-test21.zip

http://www.virtualdu...-test21-src.zip

 

I would have loved to try this and take a peek at the source but so many things to do so little time to do them ;), in any case i will squeeze it in :)

Edited by atari8warez
Link to comment
Share on other sites

Folder mounting (be it in AspecQT or and emulator) is useful when you cross-develop stuff that would need a DOS to operate. This way you don't need to pack everything into an ATR every time you want to test. Up to now I've used the H: drive for these things already, but that again requires you to change the paths in the program from "D:" to "H:". So mounting folders diretly will simplify things here.

Link to comment
Share on other sites

More specifically, folder mounting via a virtual image is useful when dealing with a DOS that doesn't allow access to CIO devices. DOS 2 is the most flexible and its DUP allows full functionality with H:. MyDOS 4.5 and SpartaDOS 3.2 have restricted functionality only, and SpartaDOS X doesn't allow CIO device access at all. A virtual image means you can do anything that the DOS would normally let you do with a disk or disk image, except that you don't have to go through hoops to get stuff on and off that disk because the virtual disk image driver does it for you.

 

The downside is that in order to do this the virtual disk image driver has to concoct a bit of a fantasy for DOS to see. One of the issues this causes is that the driver doesn't know when DOS is done with a file, so it can't coordinate sensible locking with the host filesystem. This also means it's harder to respond to file updates, which currently the build I posted doesn't do at all -- it auto-unlocks files after three seconds, but you have to remount the folder if you change a file. A third issue is that it is a lot harder to implement write access this way since there are no guarantees that the DOS will commit data or metadata to disk in a timely fashion or in any sensible order.

 

The particular algorithm I have implemented here presents a stable and consistent view to DOS as long as all of the files fit within a regular 90K single density, DOS 2 formatted floppy. Beyond that it will delay reusing sectors as long as possible to try to avoid DOS seeing a conflict. As with AspeQt, a unique sector is dedicated for the first sector of every file. However, all sectors beyond that are dynamically allocated from a pool of the remainder of the disk (643 sectors). Dynamic sectors are allocated whenever the previous sector is read to establish the link at the end of the sector, and sectors are reused according to an LRU algorithm. In addition, the last sector reported as a link to DOS for each file is always locked and unavailable for reuse. The result is that any DOS that reads data sectors sequentially and does not cache more than one of them will always see correct data. It also allows more than one file to be read at a time. For DOSes that have more sophisticated caching algorithms (SDX), the algorithm relies on the size of the pool to prevent the caching from causing problems.

 

In theory, this algorithm can be generalized to the SpartaDOS file system, but the high branching factor caused by the sector maps is a problem: a single map sector in single density would require pinning up to 62 sectors in the pool. This means that random access on a large file would pretty quickly exhaust the dynamic sector pool on a 90K disk image and force the algorithm to reuse sectors before it was safe to do so. SDX has no problems with large disk sizes, though, which would allow the pool to be greatly enlarged. Subdirectories also pose an additional challenge although I haven't thought that through yet.

  • Like 2
Link to comment
Share on other sites

Since if something is worth doing, it's worth over-doing:

 

http://www.virtualdub.org/beta/Altirra-2.20-test22.zip

http://www.virtualdub.org/beta/Altirra-2.20-test22-src.zip

 

Folder mounting changes: now supports hot update, handles zero-byte files correctly, hidden files are now ignored, sector rotational timings are fixed, and booting is now supported. If you place a 384 byte file called $dosboot.bin containing standard DOS 2 boot sectors in the folder along with DOS.SYS, Altirra will update the boot sector with the correct sector link so that DOS can boot. VTOCFIX will now also pass on the virtual disk image as long as all the files fit, except for the VTOC not reporting free sectors.

 

BTW, if anyone's interested, the code for all of this is in the diskvirtimage.cpp file.

 

I need to rethink the disk UI, as it's got so much weird stuff in it that it now looks more like a sliding puzzle toy than a dialog....

  • Like 5
Link to comment
Share on other sites

Since if something is worth doing, it's worth over-doing:

 

http://www.virtualdu...2.20-test22.zip

http://www.virtualdu...-test22-src.zip

 

Simply done right would be good enough for that matter, but this is bloody brilliant and exactly what I've been dreaming about in an emulator for about three years. Thanks Avery! Simply amazing progress in just a couple of days, and the boot file idea is ingenious. :D

Link to comment
Share on other sites

Just updating from the 5200 thread re Galactic Chase conversion for 5200 not working.

 

Keeping the list current...

 

Phaeron said:

 

Was missing address mirroring for 5200 8K cartridge type (8K cart initing at $8000 instead of $A000). Fixed:

 

http://www.virtualdub.org/beta/Altirra-2.20-test23.zip

http://www.virtualdub.org/beta/Altirra-2.20-test23-src.zip

Link to comment
Share on other sites

Since if something is worth doing, it's worth over-doing:

 

http://www.virtualdu...2.20-test22.zip

http://www.virtualdu...-test22-src.zip

 

Folder mounting changes: now supports hot update, handles zero-byte files correctly, hidden files are now ignored, sector rotational timings are fixed, and booting is now supported. If you place a 384 byte file called $dosboot.bin containing standard DOS 2 boot sectors in the folder along with DOS.SYS, Altirra will update the boot sector with the correct sector link so that DOS can boot. VTOCFIX will now also pass on the virtual disk image as long as all the files fit, except for the VTOC not reporting free sectors.

 

BTW, if anyone's interested, the code for all of this is in the diskvirtimage.cpp file.

 

I need to rethink the disk UI, as it's got so much weird stuff in it that it now looks more like a sliding puzzle toy than a dialog....

 

@Phaeron

 

Hi Avery, I must have missed your post before, so I've just found out that you added boot support to the Folder Image which is quite nice. Am I correct in assuming this is for AtariDOS only ("$dosboot.bin containing standard DOS 2 boot sectors in the folder along with DOS.SYS"). I know I can look at the code to find it out but I am in my lazy mood again so I wanted to ask ;-).

Edited by atari8warez
Link to comment
Share on other sites

I've only tested it with Atari DOS 2.0S. It might work with MyDOS, if that uses the same format and count of boot sectors. Definitely won't work with SpartaDOS since that requires SDFS.

I tested this with a Frost Basic $dosboot.bin and DOS.SYS and it works. Save back to H: drive. With copy paste function of Altirra it seems to be a fun basic enviroment.
Link to comment
Share on other sites

I think I found a bug in the GTIA 16-color mode emulation in 2.20-test22. It appears that COLBK is being interpreted incorrectly unless there is a player or missile with non-zero GRAF value and with an HPOS position between 33 and 221. I'm attaching a test case. It sweeps HPOSM0 from 0-255 in an infinite loop. Only when the missile is between the above values is the display correct. Otherwise, the luminance of COLBK is ignored for the playfield. Also the background and bit pattern 0000 are not forced to black as they should be. I've tested on a NTSC 600XL and it doesn't switch displays like Altirra does.

 

gtia-16-color-mode-bug.zip

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...