avatar_Prodatron

SymbOS CP\/M - run CP/M programs in a virtual machine

Started by Prodatron, 23:48, 21 March 24

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Prodatron

Prevtenet did a first release!

Here is a temporary download link:
http://symbos.org/download/cpvm.zip

I will just post his descriptions from the Discord group here:

Quote from: prevtenetFixed enough problems that a lot of things now work more or less correctly! (Microsoft BASIC, Turbo Pascal, Wordstar, lots of random utilities...)

The drive system has been redesigned. The default configuration is now A: same folder CPvM was launched from (for a live CCP session) or the location of the CP/M program (for a direct command) B: physical drive A: C: physical drive B: ...etc
But, in a live CCP session, you can type "cd c:\symbos" (etc.) to change the physical location of the currently active logical drive (at least for drives A-D).
This lets you configure drives as needed before launching an app.

Outstanding issues: some software still crashes for unexplained reasons and various things could be optimized. As a random example, repeatedly showing/hiding the cursor when doing console input through the BIOS slows down line input for certain programs. Various small things like that.

Using DIR in the new CCP:

You cannot view this attachment.

Microsoft Basic:

You cannot view this attachment.

NYYRIKKI already managed to code, assemble and execute a CP/M program 100% in SymbOS with Notepad, CP\/M and M80.COM/L80.COM:

You cannot view this attachment.


GRAPHICAL Z80 MULTITASKING OPERATING SYSTEM

genesis8

Just as a reminder, I have the Walnut Creek CP/M CD-ROM on my web site

It's a ZIP of 407 Mo de CP/M files (text and programs).

____________
Amstrad news site at Genesis8 Amstrad Page

roudoudou

typo in the URL, 'n' is missing in 'frontend'
My pronouns are RASM and ACE

genesis8

Thanks corrected, then same typo on my web site :doh:
____________
Amstrad news site at Genesis8 Amstrad Page

prevtenet

#29
This is a development build, of course, so expect ongoing tweaks/fixes/compatibility improvements.

I see there is particular interest in Turbo Pascal, so I'll prioritize getting that working well (it does at least boot up right now, but I haven't tested it thoroughly and parts of it [like TINST] seem to have issues with the Z80 shadow registers that are still being worked on - plus various terminal I/O improvements that could still be made).

Tips for those trying this version:
  • Running cpvm.com directly opens a CCP shell session. By default the A: drive is the current folder it was launched from, while other logical drives point to the root folders of physical drives on the system; but you can use commands like CD C:\SYMBOS to set the physical location of the current logical drive. (CD by itself will show what the current physical path is.)
  • cpvm.com can also take a CP/M program as a command-line option when first starting, in which case it will run the program directly. This is useful for creating desktop links.
  • As usual with SymShell, the display will run MUCH faster in fullscreen mode than in windowed mode. Many fullscreen CP/M programs will also expect the display dimensions to be 80x24, which you can set from the SymShell menu.
  • Terminal emulation currently targets VT-52 escape sequences (Amstrad CP/M, etc.), but supports enough ADM-3A and VT-100 codes that software for the Kaypro, etc. should usually run out-of-the-box as well. For software that can be configured for multiple terminals (like Wordstar) you may want to try a few options to see which one works best. [although Wordstar is currently VERY slow due to how it handles I/O... working on it]
  • Make sure to shut down everything properly (close CP/M app, close CPvM session if still running, then close SymShell) so as not to create memory leaks.

m_dr_m

Again, that is fantastic! Mega kudos, as Schopenhauer would have said.

For TurboPascal, is there a list of current issues and/or a roadmap available?
I'm willing to beta-test, although I might not be the ideal person (couldn't make it work on regular CP/M+).

funkheld

the writing is difficult to see.
Something still needs to be done here.

CP/M in FutureOs would be great.

Thanks.
greeting

prevtenet

#32
Quote from: funkheld on 19:15, 08 April 24the writing is difficult to see.
Can you elaborate on what you're seeing?

In general all SymShell apps look better in fullscreen mode. However, there are some other display optimizations that are still being worked on, mainly relating to apps like Wordstar that like to constantly call the BIOS to check for pending keys.

Getting 80% of CP/M software working is easy, the part that takes forever is tracking down all the tiny undocumented expectations that the remaining 20% of apps rely on...

GUNHED

Quote from: prevtenet on 22:42, 09 April 24
Quote from: funkheld on 19:15, 08 April 24the writing is difficult to see.
Can you elaborate on what you're seeing?

In general all SymShell apps look better in fullscreen mode. However, there are some other display optimizations that are still being worked on, mainly relating to apps like Wordstar that like to constantly call the BIOS to check for pending keys.

Getting 80% of CP/M software working is easy, the part that takes forever is tracking down all the tiny undocumented expectations that the remaining 20% of apps rely on...
I guess, Funkheld is talking about the 3 x 5 pixel characters. They can be seen on the pictures above. And they also work on emulators, I guess. However, on a real CPC monitor it's different again.
Offtopic: I don't want to derail the topic (a new can be opened anyway). But if there is interest for CP/M under FutureOS, then we can work together and do this. My part would be to provide the 'BIOS' - anything else probably doesn't need to be changed (too much).
http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

prevtenet

Quote from: GUNHED on 14:37, 10 April 24But if there is interest for CP/M under FutureOS, then we can work together and do this. My part would be to provide the 'BIOS' - anything else probably doesn't need to be changed (too much).
This is probably harder than it sounds because CPvM works at the BDOS (rather than BIOS) level to support FAT file access via SymbOS file handles. So at minimum this would require changing the build process, rewriting the banking system, and replacing all the SymbOS-specific parts of the BDOS with FutureOS-specific versions. This in turn would probably require a fairly complete rewrite of the file-management system (one of the more complicated parts of CPvM) since FutureOS uses track-sector-tables rather than file handles.

I don't use FutureOS much, so I don't have the motivation to do this myself. But, CPvM is open-source, so if someone else wanted to give it a shot I'm happy to provide technical suggestions. Maybe they'd even fix some bugs 8)

Updates: compatibility is steadily improving - we're still working on a shell tweak that should dramatically improve performance for apps like Wordstar and Turbo Pascal, but stay tuned for a new stable release shortly.

GUNHED

That may be of common interest in the thread: How does such a file-handle look like?
http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

prevtenet

I am pleased to share a formal v1.0 release of CP\/M, which may be downloaded at the temporary link: https://github.com/danielgaskell/CPvM/raw/main/cpm/cpvm_1.0.zip. Run classic CP/M-80 software on SymbOS, including Microsoft BASIC, Turbo Pascal, WordStar, dBASE, and numerous other apps and utilities. You could now run a whole 1980s corporation on SymbOS!

While there are still a few improvements planned (mainly one that will improve scroll speed in Turbo Pascal and other apps), this version is considered stable enough for general use and testing. Try it out, and let me know if you want something to work but it doesn't.

Notes:
  • You will need SymShell 2.3 (included) to run CP\/M properly.
  • Please refer to the included manual (in SymbOS Help format) for important usage information and troubleshooting tips. If something doesn't work as expected, it's very likely the manual explains how to fix it.

HAL6128

Amazing. It's far-fetched, but it sounds like running a VirtualBox on a Window OS (CP/M OS runs on SymbOS).
...proudly supported Schnapps Demo, Pentomino and NQ-Music-Disc with GFX

Edoz(MSX)

Pretty Amazing that you were able to this in SymbOS. It is so super cool! Love to test the final version now!

Prodatron

This is just fantastic, I was dreaming about this for a long time, and now it has come true.
Thanks for the great work, prevtenet!

An own section for CPvM has been created on the symbos.org website:

http://www.symbos.org/cpvm.htm

Including screenshots, descriptions and resources.

Quote from: HAL6128 on 07:04, 17 April 24It's far-fetched, but it sounds like running a VirtualBox on a Window OS (CP/M OS runs on SymbOS).

Prevtenet is using the correct term "compatibility layer". So it is like Wine. I still prefer "virtual machine" as it sounds cool haha :D In fact a virtual machine runs a complete different OS inside another OS, which is similiar but not exactly the same for CPvM. But you still have a complete own 8080/Z80 64K environment which is all what is visible for the CP/M program.

GRAPHICAL Z80 MULTITASKING OPERATING SYSTEM

d_kef

I wonder if the compatibility layer could "expose" SymbOS functions (eg. network or printer) to CP\/M?
Anyway, this is already a huge achievement!!!
Time to play with it now  ;D

d_kef

Prodatron

Quote from: d_kef on 17:07, 17 April 24I wonder if the compatibility layer could "expose" SymbOS functions (eg. network or printer) to CP\/M?
Very interesting question, I guess for the printer daemon this makes sense.
But I have no idea about network.
I guess there have never been CP/M apps dealing with TCP/IP (or I am wrong?), so I just wonder how this could work.


Quote from: d_kef on 17:07, 17 April 24Anyway, this is already a huge achievement!!!
Indeed, thanks a lot to prevtenet, I still can't believe, that this is possible...

GRAPHICAL Z80 MULTITASKING OPERATING SYSTEM

d_kef

Quote from: Prodatron on 21:09, 17 April 24I guess there have never been CP/M apps dealing with TCP/IP (or I am wrong?), so I just wonder how this could work.
Now I'm offended. Take a look at my signature man!!! :P
Don't you know that you can use your Cyboard with my port of the KCNet Utilities?
The KCNet utilities run on CP/M Plus as well as on CP/M 2.2
They are currently build for Wiznet's W5100S but I think it would be fairly easy to adapt them for CP\/M if for example DNS and socket functions of SymbOS were available at the compatibility layer.

d_kef

Prodatron

Quote from: d_kef on 21:41, 17 April 24Now I'm offended. Take a look at my signature man!!! :P
Don't you know that you can use your Cyboard with my port of the KCNet Utilities?
The KCNet utilities run on CP/M Plus as well as on CP/M 2.2
They are currently build for Wiznet's W5100S but I think it would be fairly easy to adapt them for CP\/M if for example DNS and socket functions of SymbOS were available at the compatibility layer.

d_kef
Oh, d_kef, I am really sorry!!
I completely forgot about the KCNet tools, which is funny as this is east german stuff, so somehow I should know it :D
Of course I love your W5100 based Cyboard, thanks so much, I will never give it away as it is hardware which is still able to do real "multitasking".

Yes, you are right, let's try to do it! I will have a look at it!

GRAPHICAL Z80 MULTITASKING OPERATING SYSTEM

prevtenet

Quote from: d_kef on 21:41, 17 April 24They are currently build for Wiznet's W5100S but I think it would be fairly easy to adapt them for CP\/M if for example DNS and socket functions of SymbOS were available at the compatibility layer.
Ooh, yes, cool idea. Probably the most trivial way to do this from CP\/M's perspective would be to provide custom BDOS calls for the SymbOS messaging system, which would make most of the OS theoretically accessible, but it should also be straightforward to implement bespoke calls for the socket functions.

Simple printer access should also be fairly straightforward by connecting CP/M's basic "line output" device (which currently does nothing in CP\/M) to the printer daemon, but I didn't have either the code or hardware to actually test this, so future goals :)

Powered by SMFPacks Menu Editor Mod