LisaList2

Advanced search  

News:

2022.06.03 added links to LisaList1 and LisaFAQ to the General Category

Pages: [1]   Go Down

Author Topic: 10MB ProFile Diagnostic Commands  (Read 2078 times)

AlexTheCat123

  • Sr. Member
  • ****
  • Karma: +59/-0
  • Online Online
  • Posts: 196
10MB ProFile Diagnostic Commands
« on: June 01, 2023, 05:23:45 pm »

I just got myself a 10Mb ProFile and I'm trying to get the 10MB diagnostic command set (which uses a completely different command format from the one used in the 5MB ProFile and the 10MB ProFile with the R/W ROM) working with the ArduinoFile's drive tester mode. I've been having lots of success so far, but I've encountered a bit of a weird problem with some of the commands.

All of the commands seem to work fine, except for Read Header (command 0x07), Write Sector Marks (command 0x09), and Write Headers (command 0x0A). Whenever I try to send one of these, the ProFile sends back a command response byte of 1 instead of the expected [command byte + 2]. At first, I just figured that these commands were weird and that they used 1 as their command response, so I changed my code such that it doesn't check the value of that byte before continuing. But when I do that, the command still clearly fails (the heads don't even seek), so clearly these aren't weird commands that always respond with a 1 or anything.

Does anyone have any ideas about what could be going wrong? I'm following the command formats listed in the 10MB LLF ROM disassembly done by @patrick but something's clearly still wrong. I wish I had a USBWidEx that I could hook my logic analyzer to in order to see if there's some detail that I'm missing (I'm assuming that USBWidEx has implemented these commands), but I can't find my USBWidEx anywhere!
Logged

AlexTheCat123

  • Sr. Member
  • ****
  • Karma: +59/-0
  • Online Online
  • Posts: 196
Re: 10MB ProFile Diagnostic Commands
« Reply #1 on: June 11, 2023, 02:28:18 pm »

Welp, I've made some progress!

Looking through the 10MB LLF ROM disassembly, it seems as if the drive only copies over the first seven command bytes from the command buffer to the Z8's registers, so anything after that seventh byte gets ignored. And all three commands that I was struggling with were longer than seven bytes once you add on the length byte at the beginning and the checksum at the end. So it's just impossible to send any command with a length byte of seven or greater!

I was able to get around this limitation with the Read Header command since I could just omit the retry count byte at the end. For this command, the retry count just changes how the sectors are numbered and I was able to use an interleave table to convert between the two numbering schemes, so that command works just fine now!

But the other two commands require you to specify the number of sector marks or headers that you want to write in the retry count, so omitting the retry counts just won't work since that would result in no sector marks or headers actually being written. As far as I can tell, there's no easy way to get around this, so Write Sector Marks and Write Headers just aren't going to work. I guess it's really not a huge deal since I can't think of any situations in which you'd want to run each of those commands individually instead of just doing a full format of a track. But at least the most useful command of the three, Read Header, is functional!

I doubt that anybody really cares about this right now, but I figured that I'd post it anyway in case anybody else ever has the same problem in the future!
Logged
Pages: [1]   Go Up