Jump to content
IGNORED

AspeQt: Yet another SIO2PC/APE clone


cyco130

Recommended Posts

FWIW: Some small suggestions for AspeQt. I'm very impressed with AspeQt, especially considering that it is a relatively recent release. But I do have a few "user friendly" suggestions.

........

4) I had trouble before getting the printer window to open up, but now it seems fine. (?) But looks like you can't print directly to the Win printer. Printing to a text file certainly works, but would be a little more convenient going directly to the printer.

 

-Larry

 

Larry, that suggestion # 4) above is already done, I am now working on adding ATASCII fonts too (both to display and print with)

Cheers.

 

Ray

Edited by atari8warez
Link to comment
Share on other sites

And one convenience request also from me:

I frequently use "Boot Executable" - and very often I forget to press OPTION or (not to press it), so I have to browse for the file again.

I would be more convenient and consistent to "mount" and EXE like a disk or folder.

Link to comment
Share on other sites

5) Make the SIO transmissions compatible with real disk drives.

 

Using a real Speedy 1050 drive causes AspeQt to stop even when just loading from the real drive, like, no ATR's involved.

 

I already identified the code responsible for this, but didn't have the time to check/fix it. It's the following line in the readCommandFrame method, file serialport-unix.cpp / serialport-win32.cpp:

	} while (totalRetries < 100);

After 100 attempts to read a command frame AspeQt just stops. Speedy uses a transmission speed that's incompatible with the standard RS232 speeds, so AspeQt gets a lot of "invalid" command frames.

 

Killing the totalRetries code, and replacing the loop with a "do { ... } while (true);" could be a fix for this issue, not sure if this has any unwanted side-effects.

 

I'll have a look at this as soon as I find some time (not sure when this will be...), and also try phaeron's suggestion.

 

so long,

 

Hias

Link to comment
Share on other sites

Terrific!

 

Thought of another one, and hopefully it is easy to accomplish. "Right-justify" the path info used on the GUI. Reason -- IMO, It is more important to see what image is there and the "low-order" info on the path since currently if the path is long, all you might see is "C:\DOCUMENTS AND SETTINGS\LARRY\SETTINGS\ASPEQT\UTILI" -- i.e. you can't see what image is mounted.

 

-Larry

 

 

Larry, that suggestion # 4) above is already done, I am now working on adding ATASCII fonts too (both to display and print with)

Cheers.

 

Ray

Link to comment
Share on other sites

I don't recall the way that you mention, but would be fine so long as the ATR name gets in there. I have seen the way that I suggested.

 

-Larry

 

Isn't the usual practice with very long pathnames to use an elipsis (...) in the middle? That way, you get to see the start and the end.

Link to comment
Share on other sites

I may be able to change it so that it only shows the name of the file and when you hover your cursor over, shows the whole dir path as a tooltip.

 

Ray

 

 

Terrific!

 

Thought of another one, and hopefully it is easy to accomplish. "Right-justify" the path info used on the GUI. Reason -- IMO, It is more important to see what image is there and the "low-order" info on the path since currently if the path is long, all you might see is "C:\DOCUMENTS AND SETTINGS\LARRY\SETTINGS\ASPEQT\UTILI" -- i.e. you can't see what image is mounted.

 

-Larry

 

Larry, that suggestion # 4) above is already done, I am now working on adding ATASCII fonts too (both to display and print with)

Cheers.

 

Ray

Link to comment
Share on other sites

I found some time this evening and added 2 patches:

 

First one is the suggestion from phaeron, calling timeBeginPeriod(1) to (hopefully) decrease the latency on Win32 systems. I don't have a real Win32 box up and running at the moment, so I couldn't check yet if it improves the performance, but at least the performance didn't decrease in my WinXP VM :)

 

Second one is to remove the retry limit when waiting for a command frame, this should fix the issues with the 1050 Speedy. Again, almost untested, booting MyDOS from AspeQt in an XP VM worked.

 

Please send me some feedback if this version works better or worse than the previous one.

 

Here's the link to the new version: http://www.horus.com...Hias-120215.zip

 

This file includes the win32 executable, the complete source code, in the "src" directory (Linux users just type "qmake; make") and the patches against version 0.6, in the "hias-patches" directory:

01-fix-pokey-divisor-0-1-on-PAL.patch
02-fix-image-size-calculation-support-8k-sectors.patch
03-try-timeBeginPeriod-to-decrease-latency.patch
04-remove-totalRetries-limit-in-readCommandFrame.patch

 

so long,

 

Hias

Link to comment
Share on other sites

This version loads EXEs noticeably faster at 80Kbaud than the stock 0.6 version. Wheeeeeeeee!

 

I still can't go below POKEY divisor 3, though. It feels like the fast SIO routine at least needs more device retries -- right now it mimics the OS and just gives up at one retry. At high speeds I've had AspeQt almost complete a long EXE load, then give up after two retries. I can't see a point to having such a low retry limit if the loader just halts afterward. I also noticed in the source that it isn't waiting for the final serial output ready IRQ before polling serial output complete, which I thought we'd determined was a source of problems.

Link to comment
Share on other sites

Here's another update:

 

I replaced the highspeed SIO code of the EXE-loader with my own code, booting EXEs now works fine up to Pokey divisor 0 (tested in my WinXP VM and natively on Linux).

 

http://www.horus.com...Hias-120221.zip

 

Important note on the patch: the file hias-patches/05-replace-autoboot-highspeed-code-with-hiassoft-code is only half the truth, as "svn diff" skips binary files (diff is text-only). The binaries autoboot.bin and autoboot-hispeed.bin (in src/atari/autoboot) aren't automatically recompiled by the Qt build system, so please also copy these two files from the src directory - or you'll be using the old Atari code. Better just use only the files from src/atari/autoboot.

 

I converted autoboot.s to ATasm format (and renamed it to autoboot.src, so you also need ATasm instead of ca65/ld65 to assemble the code) so I could mate it with my highspeed SIO code.

 

I also noted that 2 unusued variables (address and size, each 2 bytes) were placed at the very beginning of the binary (just after the boot header), so there were 4 BRKs at the beginning of the code - not nice, so I removed them.

 

so long,

 

Hias

Link to comment
Share on other sites

I found a cause of a UI lock-up problem: the Win32 version of the serial port worker prioritizes the command line event higher than the cancel event. This makes it possible for the Atari to lock up the program by sending back-to-back commands, preventing the UI from stopping emulation. There was also a possible handle leak if the poll operation ran synchronously and a dangling I/O operation on the cancel. Modified code:

 

	if (WaitCommEvent(mHandle, &mask, &ov)) {
		CloseHandle(ov.hEvent);

		if (WaitForSingleObject(mCancelHandle, 0) == WAIT_OBJECT_0)
			return data;
	} else {
		if (GetLastError() == ERROR_IO_PENDING) {
			HANDLE events[2];
			events[0] = mCancelHandle;
			events[1] = ov.hEvent;

			const DWORD x = WaitForMultipleObjects(2, events, false, INFINITE);

			if (x != WAIT_OBJECT_0+1)
				CancelIo(mHandle);

			CloseHandle(ov.hEvent);
			if (x == WAIT_OBJECT_0) {
				data.clear();
				return data;
			}
			if (x == WAIT_FAILED) {
				qCritical() << "!e" << tr("Cannot wait for serial port event: %1").arg(lastErrorMessage());
				data.clear();
				return data;
			}

 

I managed to get a Release build with line number information, and CodeAnalyst is showing that at high I/O speeds the UI is chewing up a lot of CPU time, mostly in the Qt library and in GDI. Not sure if there's a good way to fix this.

Link to comment
Share on other sites

Ok folks here are my contributions, along with Hias's latest mods to the AspeQt project. These have been tested fairly good but let me know if you find any problems. I changed the version number to 0.7 as there were enough mods to warrant that. Unfortunately I don't have admin access to the project files in sourceforge so I can not upload the changes there, however the source and the latest binaries (Windows) available for download from my website: http://atari8warez.for-the.biz/support.html

 

AspeQt v.0.7 what's new:

 

+ Disk slots now show the filename without the path and in Uppercase letters (a la 8 bit :) ).

The directory path can be seen as a tooltip to filename, and the full path+filename can be seen as a statusTip on the status bar.

This makes it easier to read the mounted file/folder names. (Ray Ataergin)

+ Decrease the latency on Win32 systems (Matthias Reichl).

+ Remove the retry limit when waiting for a command frame (Matthias Reichl).

+ Modified Atari text output to display Ascii/Atascii split screen window (Ray Ataergin)

+ Added ATASCII font support for Atari text output (Ray Ataergin)

+ Fixed problems with Pokey divisors 0 and 1 on PAL 800XL. Set the baudrates to values actually

supported by the FTDI chip to avoid possible rounding errors - resulting in too high speeds (Matthias Reichl)

+ Fixed small backslash-escape issue in the project file (Matthias Reichl)

+ A (cosmetic) fix for the image size calculation in the "create image" dialog (Matthias Reichl)

+ Added support for ATRs with 8192 byte sectors (Matthias Reichl)

+ Added turkish translation (Ray Ataergin)

+ Added option to send the Atari text output to a PC printer (Ray Ataergin)

+ Added option to display documentation (Ray Ataergin)

+ Relaxed the .atr integrity check rules to allow some .atr files that are larger than the header value to be loaded (Ray Ataergin)

 

Note: The latest Hias mod (two messages above) is not included in this release as I've just noticed it but I will also implement that code once it's tested and verified that it works with no probs.

Link to comment
Share on other sites

With the addition of new GUI features Polish Language translation needs to be updated. If Krzysztof Pyrkosz is reading this, please update the aspeqt_pl.ts file as necessary.

 

Also, I did not experience any performance increase on Windows 7 (64 bit) using Prolific based virtual comm port after the latest Hias mods. I still have problems with command frame errors when trying to write (reads are OK) with 3x speeds. I'd like to know about your experiences, please let me know if you also have issues with similar configuration.

Ray

Edited by atari8warez
Link to comment
Share on other sites

Ok, I just discovered a small bug on the "Disk/New Disk Image" menu item. This is due to file name display mod I've done recently on AspeQt. What happens is: A blank disk image name is displayed on the slot where the new disk is mounted. It should show "Untitled Image x".

 

Attached file is the fixed executable. Updated source and the full binary package can be found on my website here: http://atari8warez.for-the.biz/support.html

aspeqt_v0.7_exe.zip

Edited by atari8warez
Link to comment
Share on other sites

Hi folks I developed a desktop icon for the AspeQt executable, and here I am presenting it for your suggestions/approval. I am open to ideas and to other people's submissions. I must add that I am not a graphics artist, I am sure there is someone here who can make a much better icon and if you are willing to put some work in it you are certainly more than welcome.

 

In the meantime I also attached the executable with the new icon.

 

 

P.S: Next quick change in my agenda is to make a Windows installer for AspeQt, after that, more functional mods as my time permits.

AspeQt.ico

aspeqt_v0.7.zip

Edited by atari8warez
Link to comment
Share on other sites

Hi, I would prefer a more distinct/functional icon. I have so many Atari-Fuji-Icons on my Desktop, it hard to find out what is which emu/tools. Here's how AspeQT is represented on my desktop.

 

post-17404-0-10992600-1330212360.png

 

Regarding the installer: Please keep the normal ".zip" download also in addition. I sync my tools across multiple computers and it's really valueable to be able to use simple file operations without breaking the installation.

Link to comment
Share on other sites

Hi,

 

I want to apologize for my absence and unresponsiveness, which, it seems, will have to continue for a while due to personal stuff and to thank everybody contributing to AspeQt. Today I've granted admin rights to Peter and Ray for the sourceforge project. I've also tried the latest patches and I was pretty impressed :) (Except the uppercase file names; Linux is case-sensitive and I like CamelCasing my images, ha ha, feels good to criticize from the outside :) )

 

Even though hands on coding seems a little far fetched for now, I'll try my best to help with the internals (though I don't really remember that well how they were).

 

I'm very pleased to see the project back from the grave!

 

Regards,

Fatih.

 

PS: As with the folder images, it was just a quick hack, a different approach is necessary for more robust operation. Maybe drac030's Dos2Dos can be a good alternative to support. Without Atari-side awareness, anything I can think of is bound to fail in some circumstances.

  • Like 1
Link to comment
Share on other sites

Hi,

 

(Except the uppercase file names; Linux is case-sensitive and I like CamelCasing my images, ha ha, feels good to criticize from the outside :) )

 

Regards,

Fatih.

 

Hey Fatih, nice to hear from you and thank you for the access to the project repository. As for the Uppercase file names, it's just for your eyes only (meaning display only) will not affect the main code, however if preferred I can change it back to lower, np.

Link to comment
Share on other sites

Here are some minor UI (usability) mods:

 

+ MainWindow position is now saved upon exit and restored upon restart

+ Reorganized About Dialog content

+ Modified main window to use the new application icon

+ Reverted previous UPPERCASE image file name mod, file names now show as is

 

 

Upload is the main .exe file, New source is in the SF repo.

 

Ray

aspeqt_v0.7_exe.zip

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