Jump to content
IGNORED

PCLINK.SYS support?


gozar

Recommended Posts

Yes, you get that, because I didn't push the change I made. In serialport-unix.cpp in methdo readRawFrame, line 618 there is the value 12,000. Append an zero, and you should be good.

Most of the time anyway. The software handshake for SIO2BT works better for PCLINK.

Link to comment
Share on other sites

Ok, I figured the changes weren't pushed yet. I'll try your suggestion.

 

EDIT: Great. That got PCLINK working, albeit only at 1xSIO. Standard disk device access is good at 3x SIO, but encounters issues at higher speeds. Good progress, anyway.

 

EDIT2: PCLink and standard disk access working across SIO2BT as well.

Edited by flashjazzcat
Link to comment
Share on other sites

Yes - understood. Unless the OS X FTDI drivers are inherently crippled, I guess there's no reason we shouldn't eventually see reliable divisor 0 operation, as with Windows.

 

I don't claim to have any special expertise in the area under discussion, but since I've spent the past few weeks testing SIO drivers with the Windows build of RespeQt, I'll be glad to try and help in any way.

Link to comment
Share on other sites

Me neither. But still it bugs me that it works so good under Windows and under OS X RespeQt is such pain.

On the other hand, the software handshake works better than the hardware one.

Since Montezuma gets in the fold, my hope he can figure it out.

Link to comment
Share on other sites

The choice of handshake method (Software, which I only tried with SIO2BT so far under OS X, sticking with CTS on my SIO2PC) might offer some clues in itself, since it assumes no command line whatsoever and just analyses all data on the bus looking for valid command frames. So could this tell us that with CTS/DSR/RI handshake, asserting the command line is somehow being missed at higher speeds? I don't know...

Link to comment
Share on other sites

The choice of handshake method (Software, which I only tried with SIO2BT so far under OS X, sticking with CTS on my SIO2PC) might offer some clues in itself, since it assumes no command line whatsoever and just analyses all data on the bus looking for valid command frames. So could this tell us that with CTS/DSR/RI handshake, asserting the command line is somehow being missed at higher speeds? I don't know...

 

The reason is simple.

Serial port is opened in non blocking mode (O_NDELAY), so read() / write() calls come back immediately (even if a requested number of bytes was not yet read/written).

A loop takes care to continue reading/writing, but it exits afer specifc time.

I increased timeout values for Bluetooth (see readRawFrame() and writeRawFrame() in the source code). That's why you observed different behaviour with SIO2BT handshake.

Now that I have a Mac at home, I will be able to do some measurements and come up with a new formula for timeout for OS X.

Edited by TheMontezuma
Link to comment
Share on other sites

 

The reason is simple.

Serial port is opened in non blocking mode (O_NDELAY), so read() / write() calls come back immediately (even if a requested number of bytes was not yet read/written).

A loop takes care to continue reading/writing, but it exits afer specifc time.

I increased timeout values for Bluetooth (see readRawFrame() and writeRawFrame() in the source code). That's why you observed different behaviour with SIO2BT handshake.

Now that I have a Mac at home, I will be able to do some measurements and come up with a new formula for timeout for OS X.

But I need to use at least ten times (i.e. 5 times the BT value) the normal read timeout to get a somewhat reliable behaviour with a hardware handshake.

BT software handshake is still more reliable than the hardware one with PCLINK.

Edited by JoSch
Link to comment
Share on other sites

In the meantime I finally started adaptations to support reserved file names under Windows.

I want to do it in the same way as Phaeron implemented it in Altirra (for example: creating a folder COM1 on the PCL1, will physically create a folder !COM1 in the host file system, however it will still be visible as COM1 to ATARI).

This will allow to use the same PCLINK directory with Altirra and with a real ATARI :)

 

Reserved names are Windows specific, but I wondered if it would make sense to apply the same logic for Linux and Mac for consisteny reasons?

This way one could exchange file system archives, which would stay compatible between Windows/Linux/Mac users.

Even sio2bsd tool could be easily updated to work in the same way.

Existing (linux) backups containing files/folders named COM1, etc would still work, only new backups would look different.

 

What do you think?

 

Any opinions?

Shall names like "COM1" be replaced with "!COM1" only under Windows or (for consistency) also under Linux/Mac ?

Link to comment
Share on other sites

  • 2 weeks later...

Shortly before my holidays I finished an update of the PCLINK, which now can handle Windows reserved file names.

 

RespeQt-PCLINK3.zip

 

I would be grateful for any feedback.

I haven't created a PULL request in a Github yet, because the changes are not tested very well.

 

If you are interested in the source code, here it is:

https://github.com/TheMontezuma/RespeQt

  • Like 3
Link to comment
Share on other sites

  • 2 weeks later...

Yesterday I finally got time for more testing and implementing of (so far missing) handling for some use cases for reserved file names.

It should behave now like in Altirra, so one can work with the Emulator with folders backed-up from a real ATARI.

For simplicity and consistence, the same handling is applied under Win/Linux/Mac.

RespeQt-PCLINK4.zip

Edited by TheMontezuma
  • Like 4
Link to comment
Share on other sites

The "reserved file names" feature was more tricky, than just integrating sio2bsd PCLINK code to RespeQt, since I had to understand the code from drac030 and the changes mustn't break any functionality. That's why it took a little bit more time, but now it should be safe to use all names that are allowed by Sparta Dos, independent of Windows restrictions :)

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...
drac030 had already clarified the differences between the PCLink and the traditional Folder approach.


As a summery, Atari DOS and compatibles "so far", can access images (R/W) inside PC folders with some success (might be clumsy, but works).

On the other side, SpartaDos has difficulties access PC folders in AtariDOS FS way. Even more, accessing only 64/folder limits some of its strengths.


As a casual user to SpartaDOS (because it is too complex and advanced for me), I have a feeling that RespeQt is (unintentionally) being gradually drifted towards SpartaDOS. The not so good is that users of Atari DOS/MyDOS and a like might find themselves "forced" to use SpartaDOS in order to enjoy the great PCLINK features or resort to the the traditional AspeQt (or Ray's AspeQt 1.01 which can handle folder R/W using AtariDOS as outlined by drac030).


Is is possible to modify PCLINK so that RespeQt is able to work with Atari DOSs ?

I am sure people like me who likes Menu driven Doses and simple command will enjoy this nice product.


madi

Link to comment
Share on other sites

It's not really a question of drifting towards SpartaDOS. The fact is PCLINK originated on SDX and works well there because the highly modular kernel design allows FMS calls to be mapped to PCLINK functions pretty much 1:1, using a formal protocol in which there is no ambiguity (i.e. no need for the server to make best guesses about the purpose of a sector write originating from the client). As a SpartaDOS X user, I find RespeQt's PCLINK functionality to be superior to AspeQt's promised SDFS virtual drive read/write (or even read-only) support, not least because the PCLINK implementation actually exists.

 

Regarding AspeQt virtual folder writing and ATARIDOS.SYS: I understood this was still impossible owing to the unexpected order of written sectors. Where is it written that this problem has been solved?

 

Despite the fact PCLINK returns information in a format compatible with the SDX kernel drivers, I guess drivers could be written for other Disk Operating Systems, but the question is: who will write them?

 

In any case - I guess you can't please all the people all the time. :) RespeQt could probably do with writeable DOS 2.x/MYDOS virtual folders at least (it's a reasonable request), but SDFS virtual folders are pretty much redundant since we already have PCLINK.

Edited by flashjazzcat
  • Like 2
Link to comment
Share on other sites

It's not really a question of drifting towards SpartaDOS. The fact is PCLINK originated on SDX and works well there because the highly modular kernel design allows FMS calls to be mapped to PCLINK functions pretty much 1:1, using a formal protocol in which there is no ambiguity (i.e. no need for the server to make best guesses about the purpose of a sector write originating from the client). As a SpartaDOS X user, I find RespeQt's PCLINK functionality to be superior to AspeQt's promised SDFS virtual drive read/write (or even read-only) support, not least because the PCLINK implementation actually exists.

 

Regarding AspeQt virtual folder writing and ATARIDOS.SYS: I understood this was still impossible owing to the unexpected order of written sectors. Where is it written that this problem has been solved?

 

Thank you flashjazzcat for your prompt input.

What you have illustrated is very true. The whole thing emerges as a result of the fact that virtual folder R/W access is only available under SpartaDOS for RespeQt.

I do understand that AtariDOSs come short against SparatDOS when it come to features and complexity. As a normal user, I would love to have the PCLink feature migrated to Atari compatible DOSs, Of course I know that we have to Waite for someone with skilled programming knowledge to make it.

 

 

 

Regarding AspeQt virtual folder writing and ATARIDOS.SYS: I understood this was still impossible owing to the unexpected order of written sectors. Where is it written that this problem has been solved?

This is the reason of why was carious to import the virtual folder R/W access of PCLink to AtariDOS.

I will send you shortly PM of more info.

 

Thank you again for you usual kind support.

 

madi

  • Like 3
Link to comment
Share on other sites

No problem - and thanks. To clarify my previous post, I was aware of read/write folder support in AspeQt, but also that the support is aimed at DOS 2.x, MYDOS and derivatives, and not envisaged to work with the SDX ATARIDOS.SYS driver for reasons of sector write sequence, etc. That's my understanding of the status-quo, but it's certainly a useful feature for non-SDX users (as it is in APE), even if quite unnecessary for SDX users since RespeQt already has PCLINK. I always considered support for DOSes other than SDX important, and the same applies here.

  • Like 2
Link to comment
Share on other sites

Noticing a strange thing here using SDX 4.48 on U1MB equipped machines SIO2PC/RespeQt. The PCLINK client (PCLINK.SYS) frequently times out a speeds around 57k ("No server response") when booting SDX, but then works fine the next time the PCL: device is accessed. Upping the speed (to - say - Pokey divisor 4 in RespeQt) fixes the issue. I never noticed the issue using SIO2BT.

Edited by flashjazzcat
Link to comment
Share on other sites

  • 1 month later...

Better late than never...
I finally setup my mini MAC (Qt, RespeQt) and was able to see the PCLINK issue (and provide a fix for it).

Background:
Some of the PCLINK actions require a sequence of SIO commands:
P - parameters (setting the action parameters)
S - status
R - results (execution of a PCLINK action)
S - status
where the parameters (for a "P" command) are set not only in AUX1,AUX2 but also in a DATA FRAME following the command.
Even if the ATARI only wants to read a file, first it has to open it, which means sending a "P" command with a data frame containing specific parameters.
The "serial port read timeout" observed was related to this activity (Atari writing a data frame and RespeQt reading it).
Basically RespeQt was not waiting long enough for a data frame.
I didn't test it, but I guess that the same problem may occur under OSX when writing data sectors to the emulated disks (*.atr).

The funny thing is that the timing on the SIO bus is exactly the same under Windows/Linux and OSX, because the delay in sending a data frame is caused by the ATARI.
The solution for the problem was increasing the offset in the formula for calculating the timeout value.
I have tested the PCLINK successfully with 19200 and with 57600 (both with a SIO2BT adapter and with a SIO2PC/USB cable).

The source code is available in the Github repository.

  • Like 2
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...