Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Altos ACS8600 crashes inserting a floppy image #12625

Open
seal331 opened this issue Jul 29, 2024 · 0 comments
Open

Altos ACS8600 crashes inserting a floppy image #12625

seal331 opened this issue Jul 29, 2024 · 0 comments

Comments

@seal331
Copy link

seal331 commented Jul 29, 2024

MAME version

0.267 (mame0267)

System information

Windows 11, 64-bit, version 23H2 (22631.3880), 16 GB RAM.

INI configuration details

Doesn't look like I have a mame.ini... is this always the case?

Emulated system/software

Altos ACS8600, both Xenix 2.3's root disk and all known ADX disk dumps showed this issue

Incorrect behaviour

When attempting to insert a floppy converted from IMD using floptool (commandline floptool.exe flopconvert auto mfm ADX8618.IMD ADX8618.MFM), MAME does one of the following:

  1. The floppy silentlly doesn't insert
  2. MAME crashes
  3. MAME indicates that the floppy was inserted successfully but then crashes after system reset

Here is the backtrace:


Exception at EIP=00007ff7b369c24c (floppy_image_format_t::generate_track_from_bitstream(int, int, unsigned char const*, int, floppy_image&, int, int)+0x004c): ACCESS VIOLATION
While attempting to read memory at 0000000000000000

RAX=000001d18e5860b0 RBX=0000000000000000 RCX=0000000000000138 RDX=0000000000000000
RSI=00000000000186a0 RDI=0000000000000000 RBP=0000000000000000 RSP=000000523df28da0
R8=000001d199fee8e0 R9=00000000000186a0 R10=0000000000000000 R11=0000000000000246
R12=0000000000001d40 R13=000001d1905a44f0 R14=000000000000004e R15=000001d199fee8e0

Stack crawl:
000000523df28e20: 00007ff7b369c24c (floppy_image_format_t::generate_track_from_bitstream(int, int, unsigned char const*, int, floppy_image&, int, int)+0x004c)
000000523df28f40: 00007ff7b36aea09 (mfm_format::load(util::random_read&, unsigned int, std::vector<unsigned int, std::allocator > const&, floppy_image&) const+0x01b9)
└─$
000000523df29130: 00007ff7afd522e6 (device_image_interface::finish_loadabi:cxx11+0x0256)
000000523df292e0: 00007ff7afd54f3e (device_image_interface::load_internal[abi:cxx11](std::basic_string_view<char, std::char_traits >, bool, int, util::option_resolution*)+0x018e)
000000523df29370: 00007ff7afd55431 (device_image_interface::load[abi:cxx11](std::basic_string_view<char, std::char_traits >)+0x00f1)
000000523df294b0: 00007ff7b8f4721e (luaopen_lfs+0x907dae)
000000523df29560: 00007ff7b8f479a9 (luaopen_lfs+0x908539)
000000523df295b0: 00007ff7b90fbb20 (luaopen_lfs+0xabc6b0)
000000523df29620: 00007ff7b898d9f5 (luaopen_lfs+0x34e585)
000000523df29730: 00007ff7b78a53c3 (mame_ui_manager::update_and_render(render_container&)+0x01e3)
000000523df29760: 00007ff7b3615130 (emulator_info::draw_user_interface(running_machine&)+0x0020)
000000523df297f0: 00007ff7b37093ae (video_manager::frame_update(bool)+0x021e)
000000523df29860: 00007ff7afbc5063 (screen_device::vblank_begin(int)+0x0233)
000000523df298d0: 00007ff7afbedb8b (device_scheduler::timeslice()+0x014b)
000000523df29a30: 00007ff7afbeacef (running_machine::run(bool)+0x01bf)
000000523df2eff0: 00007ff7b361aa5b (mame_machine_manager::execute()+0x020b)
000000523df2f3d0: 00007ff7b78deb5f (cli_frontend::start_execution(mame_machine_manager*, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&)+0x03cf)
000000523df2f690: 00007ff7b78df16d (cli_frontend::execute(std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > >&)+0x004d)
000000523df2f6f0: 00007ff7b36150d9 (emulator_info::start_frontend(emu_options&, osd_interface&, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > >&)+0x0029)
000000523df2fac0: 00007ff7b95d76bc (luaopen_lfs+0xf9824c)
000000523df2fb90: 00007ff7aada13b1 (__tmainCRTStartup+0x0231)
000000523df2fbc0: 00007ff7aada14e6 (mainCRTStartup+0x0016)
000000523df2fbf0: 00007ffa01b1257d (BaseThreadInitThunk+0x001d)
000000523df2fc70: 00007ffa0202af28 (RtlUserThreadStart+0x0028)

Expected behaviour

MAME successfully inserts the floppy.

Steps to reproduce

  1. Download https://www.bitsavers.org/bits/Altos/8600/8600_Floppy_Images_Aug2017/ADX/ADX8618.IMD
  2. Run "floptool.exe flopconvert auto mfm ADX8618.IMD ADX8618.MFM"
  3. Download the ACS8600 required ROMs
  4. Prepare the hard drive image with "chdman.exe createhd -o xenix23.vhd -chs 512,8,32 -ss 256" (those are the characteristics of the Quantum Q2040 drive, the largest hard drive provided by Altos for this machine)
  5. Start MAME with "mame.exe altos8600 -fd1797:0 8dd -harddisk xenix23.vhd -ui_active -window"
  6. Disable all floppy drives except floppy0, enable rs232a (NOT ics:rs232a)
  7. Insert the converted floppy
  8. Reset the system
  9. Quite possibly observe the crash (see Additional Details)

Additional details

This is a bit weird... When I originally installed MAME to test Altos XENIX, it inserted floppies with no complaints. After my PC was shut down for around 36 hours during a trip, I came back to XENIX, attempted to install it again and reliably got one of 3 results documented in the "Incorrect behaviour" section.

The slot configuration is: rs232a set to terminal, floppy0 set to 8dd, ics:rs232a set to terminal. This issue also happens with the following configuration: floppy0 set to 8dd, ics:rs2321a set to terminal, ics:rs2321b set to terminal.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant