Jump to content
IGNORED

Just an Altirra reminder


Mclaneinc

Recommended Posts

I'm fairly sure that Altirra is handling bit 1 of PORTB incorrectly and switching in BASIC when that bit is used for extended RAM banks.

 

Aha, got it! Don't know how I missed that the first time. Please verify the fix:

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

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

This seems to have fixed the Memory setup, but now I can't get ALT+8 to open the printer output--- the menu drop down still opens printer output.

Link to comment
Share on other sites

I'm fairly sure that Altirra is handling bit 1 of PORTB incorrectly and switching in BASIC when that bit is used for extended RAM banks.

 

Aha, got it! Don't know how I missed that the first time. Please verify the fix:

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

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

This seems to have fixed the Memory setup, but now I can't get ALT+8 to open the printer output--- the menu drop down still opens printer output.

 

Oops.

 

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

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

 

I reworked the ins/del keys, too.

Link to comment
Share on other sites

It does support the 1Mb and 8Mb Atarimax cart mappers (41 and 42), but it does not support flash operations. I don't have any information on how those work.

 

Atari++ has this support I believe (source code is available for this, so that could be a good source of info on how it works). Also, Steve Tucker of AtariMax (classics on AtariAge) could probably give you the information. Wrathchild wrote a patch for Atari800Win that implements it as well, another source of info potentially.

 

I have Steve's 6502 flashing code, but I have to admit I don't truly understand what it's doing to put the hardware into "flash" mode. :)

Link to comment
Share on other sites

It does support the 1Mb and 8Mb Atarimax cart mappers (41 and 42), but it does not support flash operations. I don't have any information on how those work.

 

Atari++ has this support I believe (source code is available for this, so that could be a good source of info on how it works). Also, Steve Tucker of AtariMax (classics on AtariAge) could probably give you the information. Wrathchild wrote a patch for Atari800Win that implements it as well, another source of info potentially.

 

I have Steve's 6502 flashing code, but I have to admit I don't truly understand what it's doing to put the hardware into "flash" mode. :)

 

I think I worked it out. Try this version:

http://www.virtualdub.org/beta/Altirra-1.7-test24.zip

http://www.virtualdub.org/beta/Altirra-1.7-test24-src.zip

 

It probably isn't entirely correct, but it seems to work with the Atarimax flashing disk images that I have. There are now also options for creating new flash cartridges out of thin air and saving the modified images to disk.

 

Programming a flash chip was a bit of interesting learning. You have to write a series of values with the right data and addresses in order to kick the chip into command mode, and then you can either read out ID information or do write/erase operations. Different flash chips vary in the exact address bits monitored, commands supported, etc. I emulated an Am29F010 flash chip for the 1Mbit cartridge and an Am29F040B flash chip for the 8Mbit one. (Those who actually do hardware will probably spot a problem with the second one. The device ID didn't work out otherwise.) All writes are instantaneous; I wonder what the write speed on a real cart is, as potentially you could write a "flashdisk" driver for it, assuming it's fast enough and the flash has enough endurance. Writing to the flash cartridge doesn't require much code.

Link to comment
Share on other sites

  • 2 weeks later...

Just tested the MYDOS/H: again: can now see files when do a directory of *.xex etc but still cannot copy multiple files (error 165) using C(opy) "H:*.xex,"

 

If it's any help when copying a single file it works using "H:filename.xex,d1:filename.xex" but "h:filename.ext," gives the error 165 also.

Link to comment
Share on other sites

Just tested the MYDOS/H: again: can now see files when do a directory of *.xex etc but still cannot copy multiple files (error 165) using C(opy) "H:*.xex,"

 

If it's any help when copying a single file it works using "H:filename.xex,d1:filename.xex" but "h:filename.ext," gives the error 165 also.

MyDOS even has this problem with the APE interface using the 'MIRROR' drive. I noticed this problem years ago when trying to set up MyIDE partitions.

Link to comment
Share on other sites

All I can suggest is that a multi-file copy may require two open channels on the "H:" device: one for the disk directory, and another for the file streams themselves. The "H:" handler may only allow one channel. We have the same situation with the SDX "CAR:" device. To copy files from CAR:, it was (still is?) necessary to TYPE the file with output redirected to the destination file. It may be that MyDOS closes the directory before opening the source file during a single file copy, but not when copying mutliple files.

 

Of course, my understanding of MyDOS and/or the implementation of the "H:" handler may be completely wrong! :)

Link to comment
Share on other sites

All I can suggest is that a multi-file copy may require two open channels on the "H:" device: one for the disk directory, and another for the file streams themselves. The "H:" handler may only allow one channel. We have the same situation with the SDX "CAR:" device. To copy files from CAR:, it was (still is?) necessary to TYPE the file with output redirected to the destination file. It may be that MyDOS closes the directory before opening the source file during a single file copy, but not when copying mutliple files.

 

Of course, my understanding of MyDOS and/or the implementation of the "H:" handler may be completely wrong! :)

I think you are correct. SDX still required the output redirection to copy from the CAR device. Also, the H: issue is not a fault of the emulator, but it occurs on real hardware as well (the MyDOS + APE issue).

Link to comment
Share on other sites

I think you are correct. SDX still required the output redirection to copy from the CAR device. Also, the H: issue is not a fault of the emulator, but it occurs on real hardware as well (the MyDOS + APE issue).

The problem may not be confined to the emulator, but it could be that the emulator slavishly apes (no pun intended) hardware behaviour. The only way I've ever been able to batch copy files from H: to Dn: and back again is using the file manager in The Last Word (that's not intended as a plug: the file manager allows you to work with any device ID and does not require an always-open channel for the directory, thus overcoming the apparent single-IOCB limitation of H:).

Link to comment
Share on other sites

Latest beta has MyIDE emulation, keys for Ctrl+Esc and Ctrl+Shift+Esc, command-line switches for artifacting, save screenshot command, H: compatibility fixes.

 

http://www.virtualdub.org/beta/Altirra-1.7-test26.zip

 

Hmm, I'd like to know how the MyIDE emulation works. Do you need to create you own IDE "image", and I guess you will need to run one of Mr.Atari's modified OS ROMs.

Link to comment
Share on other sites

I think you are correct. SDX still required the output redirection to copy from the CAR device. Also, the H: issue is not a fault of the emulator, but it occurs on real hardware as well (the MyDOS + APE issue).

The problem may not be confined to the emulator, but it could be that the emulator slavishly apes (no pun intended) hardware behaviour. The only way I've ever been able to batch copy files from H: to Dn: and back again is using the file manager in The Last Word (that's not intended as a plug: the file manager allows you to work with any device ID and does not require an always-open channel for the directory, thus overcoming the apparent single-IOCB limitation of H:).

 

Altirra's H: device can do I/O on all eight IOCB channels. There's no hardware emulation involved in the H: device, so this is purely a software question of whether the caller is using CIO, if the IOCB request is compliant, and if the caller is interpreting the responses correctly.

 

I did find some bugs on my end, but this looks like another bug in MyDOS. I'm seeing a CIO open request ($03) for the wildcard source path, but with the wrong mode. The Atari OS Manual states that if an OPEN DIRECTORY ($03) command is issued with AUX1 = $06, but MyDOS is passing AUX1 = $04 and expecting to get back a directory listing, and that specifies a regular read-only OPEN FILE command. The problem with trying to work around this is that this operation is already defined in the OS Manual as opening the first matching file. The wildcard copy operation fails in Altirra, and presumably with APE, because MyDOS is trying to interpret the contents of a file as a directory listing. Since there is no way to tell from the IOCB itself whether the caller intends official or MyDOS behavior, working around this would require a MyDOS compatibility option.

Link to comment
Share on other sites

That's weird... then how can MyDos differentiate between a normal Open File or Open Directory request, seeing that the data passed can be exactly the same?

 

Or does it only use the AUX1=04 form internally?

 

This only happens with non-disk devices and with the copy command. If you use the list command or if it is working with a Dn: device, it issues AUX1=$06 as expected. It's only for a non-disk device and for the copy command that it uses the wrong mode. Since it was rare to have non-disk CIO devices that supported directories, this might never have been tested properly. I wonder if it might be patchable.

Link to comment
Share on other sites

Latest beta has MyIDE emulation, keys for Ctrl+Esc and Ctrl+Shift+Esc, command-line switches for artifacting, save screenshot command, H: compatibility fixes.

 

http://www.virtualdub.org/beta/Altirra-1.7-test26.zip

 

Hmm, I'd like to know how the MyIDE emulation works. Do you need to create you own IDE "image", and I guess you will need to run one of Mr.Atari's modified OS ROMs.

 

Altirra will create the IDE image for you and emulate the hardware, but it's up to you to initialize it and supply the driver. Since it is hardware emulation, any of the methods will work, including the MyIDE internal OS, the flash+IDE cartridge, or a soft-booted image. I used 4.4F/I to test.

 

Details:

  • The IDE drive itself is 32 sectors/track, 16 heads, and supports I/O up to 32 sectors at a time. It will do both 8-bit and 16-bit bus transfers. It doesn't yet support the full ATA-1 standard, only read/write sector, identify drive, and set feature commands. This is enough to run FDISK and the MyIDE boot driver.
  • The IDE image is 512 bytes per sector in linear order. Because the MyIDE drivers default to using 16-bit transfer mode with an 8-bit bus, normally only the even bytes will be used. It is possible to use all 512 bytes/sector in 8-bit transfer mode, as at least one MyIDE demo does.
  • To use the MyIDE internal ROM, rename the ROM image to otheros.rom and switch the firmware mode to Other. You will need to invert the BASIC setting and turn off Fast Boot, as there is some incompatibility with the patched ROM and the fast boot feature.
  • To use the flash+IDE image, mount the .bin image as a cartridge and set the mapper mode to flash+IDE. If you only have the flasher ATR, you can use that in Altirra, but it's a pain: you will need to mount an empty 1Mbit flash cartridge (NOT flash+IDE), boot and run the flasher, and then save it as a cartridge image without headers. You can't flash it as flash+IDE because the flasher detects a 4Mbit flash cartridge. I don't know why; something with the flash unlock access pattern. Didn't know there even was a 4Mbit cartridge.
  • The IDE interface occupies either $D100-D11F or $D500-D51F depending on which I/O range you select in System > Hard Disk. $00-$07 simply address the IDE command registers, and after that it's just the ATA spec. Reading and writing sectors is shockingly easy, and the drive will go as fast as your code possibly can -- the 6502 can't even break PIO 0 speeds.

 

Setting up MyIDE itself is a bit of a pain. I'm not sure how it works on the real hardware -- I might have something subtly wrong with the hardware interface -- but here's how I had to do it with the flash+IDE cartridge image in Altirra:

  • Cold reset the Atari and hold Start+Select+Option to enter the menu.
  • Select the cartridge (option 3).
  • Select FDISK 2.
  • Select Init/Auto so FDISK sees the correct drive geometry.
  • Select Make, drive 2, single density, 720 sectors.
  • Select Option, boot drive 1, use images, enable IDE, on-screen activity enabled.
  • Mount a DOS disk in D1:.
  • Select Exit and Save to boot into DOS.
  • This part is a bit fidgety. D2: should be active as the disk image on the hard drive, but sometimes it doesn't work until you use a couple of the Ctrl+Shift commands to enable and unprotect it.
  • Copy D1: to virtual D2: in DOS.
  • Soft-cold-reset (Ctrl+Shift+\) and hold S+S+O to go all the way back into FDISK again.
  • Select Swap, change image partition 1 to D1:, save, exit.
  • At this point, if all goes well, the emulated Atari should reset, the border should turn green, and it should boot off the emulated IDE drive. Emulated success!

 

I have to admit, this is a weird (and somewhat roundabout way) of "try before you buy." After going through this, I can't say I'd really recommend the flash+IDE cartridge, for two reasons: the IDE part relies on a soft-kicked ROM, which won't work with software that uses the upper 16K of memory or twiddles the kernel PORTB bit, and the flash part is incompatible with the normal Maxflash 1Mbit cartridge due to a modified banking mechanism. The internal version looks more appealing, though, because with the driver in kernel ROM and with the IDE using $D1xx instead of $D5xx, you don't have a conflict with cartridge banking registers.

Link to comment
Share on other sites

I'm testing with some of the software I wrote for MyIDE and it's working nicely, thanks!

 

Would be nice to know if the resulting image file can be easily transfered to a drive or CF card?

 

But cudos for development of the myIde support, I'll be trying it out this week!

Edited by Wrathchild
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...