Jump to content
IGNORED

Detecting U1MB and Incognito


Panther

Recommended Posts

6 hours ago, Panther said:

I'm trying to find the best method of determining the presense of Ultimate 1MB or Incognito in a system and whether it's possible to retrieve the firmware version.

This is deliberately difficult since U1MB obfuscates its registers precisely to prevent software from disturbing the configuration or encountering data or registers not compatible with a system without U1MB.

 

Aside from a famously publicised corner case regarding repeated PIA registers which - if deliberately exploited - will simply leave you with a locked up system, the only way to positively ID the hardware is via the same method employed by UFLASH, and that is to manipulate the SDX banking register in order to access the firmware metadata encoded in ROM. The metadata is fully documented in the technical documentation, but if SpartaDOS X happens to be disabled on the target system, even this detection method will be impossible. You could instead try probing the RTC's SPI registers (which should always be present), but it would be impossible to differentiate between an Incognito machine and an U1MB machine in this way, and there are some important differences between the two.

 

Caveat to that last point: you could use the SPI registers to read the NVRAM configuration data. If that produced meaningful data (i.e. a configuration with a valid checksum), you'd then have to discern from the NVRAM data whether it belonged to an U1MB or Incognito system.

 

If SDX is turned off in the configuration, there is absolutely no way to obtain the firmware revision information, let alone positively identify the hardware.

 

Moreover, you have the problem of detecting U1MB and Incognito hardware which uses the original firmware, which had (rudimentary) versioning information which is totally incompatible with the versioning info in the newer firmware.

Edited by flashjazzcat
Link to comment
Share on other sites

11 minutes ago, flashjazzcat said:

will simply leave you with a locked up system

I didn't know that u1mb crashes when reading from repeated registers. I thought it only crashed when writing to repeated registers.

Thanks for the info.

  • Haha 2
Link to comment
Share on other sites

14 minutes ago, xxl said:

I didn't know that u1mb crashes when reading from repeated registers. I thought it only crashed when writing to repeated registers.

Thanks for the info.

Never tried. Don't know.

 

Could one establish the presence of U1MB merely by reading from the repeated registers? Thanks in advance for the info.

 

By the way: where did I assert that reading from the repeated registers would crash the system? My: you almost had me believing your own bullshit there. :) I was insinuating that if you wrote to the repeated registers in the manner you're fond of doing, then the locked up system would tell you that the system had U1MB installed. But nowhere did I infer that this outcome was of any practical use whatsoever to the OP. :D

 

Edited by flashjazzcat
Link to comment
Share on other sites

Just now, xxl said:

if it does not hang when reading from repeated registers, it will not give the correct result anyway when we have u1mb, so this moteda could tell if it is u1mb or not.

Excellent. If this operation can also be used to differentiate between Incognito and U1MB, the OP's problem is solved.

 

 

Link to comment
Share on other sites

1 minute ago, xxl said:

so there is need to find a method to distinguish 400/800HW from XL/XE HW and from combining both you will get the answer which modification was instaled ?

Seems so, but since Incognito in XL/XE mode impersonates an XL/XE system, attempting to detect 800 hardware will not be much use, and if the Incognito happens to return 'normal' PIA register reads, it will be hard to know whether it's an Incognito machine or a standard XL/XE. This is why I suggested the RTC as a possibility, since SPI reads will return determinate data on an U1MB/Incognito system and random bus data on anything else. The final task would then be to differentiate U1MB NVRAM data from Incognito NVRAM data.

 

Link to comment
Share on other sites

5 hours ago, flashjazzcat said:

Aside from a famously publicised corner case regarding repeated PIA registers which - if deliberately exploited - will simply leave you with a locked up system, the only way to positively ID the hardware is via the same method employed by UFLASH, and that is to manipulate the SDX banking register in order to access the firmware metadata encoded in ROM. The metadata is fully documented in the technical documentation, but if SpartaDOS X happens to be disabled on the target system, even this detection method will be impossible. You could instead try probing the RTC's SPI registers (which should always be present), but it would be impossible to differentiate between an Incognito machine and an U1MB machine in this way, and there are some important differences between the two.

Thank you, I will look into how the RTC is accessed.  Detecting U1MB vs. Incognito isn't at all important, so I won't worry about that.  I'll avoid attacking the U1MB via repeated register writes.  :)

Link to comment
Share on other sites

40 minutes ago, flashjazzcat said:

This will give you a running start (the U1MB RTC driver I wrote for Sparta 3.x and derivatives).

The clock detection routine will effectively confirm the presence of U1MB/Incognito.

 

Thank you.  I was looking at a routine posted by Candle at some point, but so far that wasn't working.  This shows the addresses $d5fe for select and $d5ff for I/O.  I'll look at what your code is doing.

Link to comment
Share on other sites

I also just found this with this help of archive.org's Internet Way Back Machine...

 

D3E2 RTCOUT (W)

Bit 0 Chip Enable
Bit 1 SPI Clock
Bit 2 SPI MOSI (Master Out, Slave In)
Bits 7-3 Reserved


D3E2 RTCIN (R)

Bit 0-2 Reserved
Bit 3 SPI MISO (Master In, Slave Out)
Bit 7-4 Reserved

 

  • Like 1
Link to comment
Share on other sites

@Panther Nice work. Will it also at some stage be able to detect Sophia 1/2, UAV, Super colour board, VXBE and Rapidus? (Will it be able to scan small planets for alien life forms too? ;))

 

Also are you planning on incorporating any other features similar to Sysinfo in either this or a future program perchance? (Just curious):)

 

 

130XE behaves in a weird way - memory problem? - Atari 8-Bit Computers -  AtariAge Forums    Atari 8-bit (400/800 XL/XL) pictorial fault guide

Edited by Beeblebrox
Link to comment
Share on other sites

I'm not going into so much detail on OS versions and dates, benchmarks, or disk info.  I'm designing this to be run from a cartridge so no DOS info either, although it can also be an executable.  This is primarily just a basic hardware info screen.  I'm just trying to keep this fairly small and simple for some quick info, although I did just add sound output to test POKEY sound with left and right channel capability.  I'm not trying to replace SysInfo or XRAM.

  • Thanks 1
Link to comment
Share on other sites

Sophia 1, SCCC and UAV would be challenging to detect in software given the fact they are completely passive upgrades which don't show up anywhere on the system bus. Perhaps the software could instruct the user to open the case, look in the machine, and then respond to some Y/N prompts asking what they saw. :)

  • Like 1
  • Haha 4
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...