-
-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
OpenMSX support #25
OpenMSX support #25
Conversation
Hi, incredible work. Haven‘t done yet anything with MSX. Does it work on macos, too? Could you add a chapter to Usage.md on how to set it up wirth DeZog. Would help me as well for testing. And could you add another column to the comparison table for the supported features (maybe checkout the version from develop branch, guess it is more uptodate). Does it support coverage and did you test the reverse debugging? |
I just uploaded a video to Youtube where I demonstrate Dezog + OpenMSX. You find it here. I also put the supported features and additional information in the Usage.md. |
Just looked your video. Great work. Only thing: do you maybe have a higher resolution? And thanks for the update of the Usage.md. For your pull request please give me 1-2 weeks. BTW have you tried the asm-code-lens extension? It has sjasmplus problem matcher, syntax highlighting plus completion provider etc. |
Yes, I have the asm-code-lens as well. The video should now be high-res. Youtube took a bit longer than usual to show the high-res one. Let me know if it’s okay now.
… On 19 Jul 2020, at 15:37, maziac ***@***.***> wrote:
Just looked your video. Great work. Only thing: do you maybe have a higher resolution?
And thanks for the update of the Usage.md.
For your pull request please give me 1-2 weeks.
I want to release the 1.4 with ZX Next support soon.
Afterwards I can integrate/test your pull request.
BTW have you tried the asm-code-lens extension? It has sjasmplus problem matcher, syntax highlighting plus completion provider etc.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub <#25 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/ABGC6KEWWIUSYEDUXQ2YOXLR4LZJ7ANCNFSM4OX3TKQQ>.
|
Hi, I also had a look at your source changes. In general they look very good to me. Of course, I would have a few comments but these are more minor things. But there is one fundamental thing we need to discuss: Up to now there is no real concept in DeZog to handle memory banks in a good way simply because I haven't found any good solution yet. Your approach e.g. would fail in case the memory bank is dynamically changed. Another thing is that I will not accept changes in the labels.ts at the moment. |
Could you explain what thr pcInSlot exactly does. |
Hi Maziac,
Thanks for having a look at my code. I put some answers/remarks below.
I explained the pcInSlot variable and what I did to support Glass. I would consider the latter optional though.
Regards,
Mario
On 25 Jul 2020, at 16:04, maziac ***@***.***> wrote:
Hi,
youtube resolution is fine now.
I was able to to DeZog debugging with openMSX according your video. Nice to see that it is working in a completely different environment than ZX Spectrum :-)
Yes, I had a similar experience checking out Spectrum emulators. My first computer was a ZX81 so a big trip down memory lane.
I also had a look at your source changes. In general they look very good to me. Of course, I would have a few comments but these are more minor things.
But there is one fundamental thing we need to discuss:
You introduced the pcInSlot variable.
As I understand it it is the default memory bank configuration. The one used for source file lines and breakpoints.
Up to now there is no real concept in DeZog to handle memory banks in a good way simply because I haven't found any good solution yet.
Yes I did in my subsequent release after the pull request. Let’s start with a bit of theory. At the MSX you have 64Kb addressable memory just like the Spectrum. Very quickly they realised this was not enough so they introduced slots and subslots. Every 16kb page (0000-4000, 4000-8000,8000-c000,c000-ffff) can point to a slot and a subslot. There are max 4 slots and 4 subslots per slot. In theory 4*4 is 16 combinations. Later in the MSX2 they added RAM mappers enabling a further 255 pages to me mapped to a RAM slot/subslot combination. In the MSX2 that I have ROM sits in slot 0-0 and RAM in slot 3-2 which is memory mapped with 32 pages. In order to debug code at say 0x0100 you could set a normal breakpoint but it would trigger for BIOS ROM, DISK ROM and any program you have in RAM. I thought that when you’re debugging you probably know your memory layout and which slot, subslot and page. Hence I introduced the pcInSlot (program counter in slot) variable that tells the emulator to only hit breakpoints at certain slot,subslot and page. I do understand this is a bit MSX specific so maybe we need a MSX section in your launch.json or find a more cross-platform approach.
Your approach e.g. would fail in case the memory bank is dynamically changed.
However, since I don't have any clever idea either, it might be a good compromise but I need to think about it a little bit.
Another thing is that I will not accept changes in the labels.ts at the moment.
(I think you changed something most probably to support the glass assembler.)
labels.ts is a mess at the moment as it is trying to support 3 assembler list file styles together.
I have missed the right time to split it up but that is something I will do in the next future.
So that each assembler gets its own method.
Then it will also be easier to add another assembler like glass.
I am perfectly fine with sjasmplus but the MSX community asked me if I could add Glass to the mix. I check your labels.ts and I didn’t want to change a lot. So I used your filter mechanic to select the address, bytes and mnemonic out of Glass’s list file and rewrite it as SjasmPlus compatible. This way we could keep the code similar whatever assembler. On the other hand I agree we could come up with an extension system just like you did with the different emulators. This would keep the code in it’s own subdirectory and without a lot of if’s and else’s. For now ignore this changes for your official release I would say because I don’t use Glass myself.
… —
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub <#25 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/ABGC6KFKBMCSAHZM3GYCQLDR5LQ6BANCNFSM4OX3TKQQ>.
|
Sure. You mean to do it just like:
"remoteType": "zsim",
"zsim": {
"loadZxRom": true
},
But then:
"remoteType": “openmsx",
“openmsx": {
“pcInSlot": “3 2 1"
},
Let me know if this approach is okay by you and I’ll implement it as such.
… On 26 Jul 2020, at 09:06, maziac ***@***.***> wrote:
Could you explain what thr pcInSlot exactly does.
Is it possible to move it to the openmsx remoteType parameters?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub <#25 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/ABGC6KCPWLFR22KVATV4FF3R5PIVZANCNFSM4OX3TKQQ>.
|
Yes, I think it's better located in the "openmsx" section. Thanks for the explanation. In general I understand. But e.g. the "3 2 1". What exactly does it mean? |
I already made the update. The pcInSlot is now in a separate “openmsx” section.
The parameters are in the following order: primary slot, secondary slot, segment.
Primary slot is 0..3, Secondary slot is 0..3 and segment is 0..255.
In theory you can have 16Kb*255*4*4 = 64Mb of memory like this. ;-)
In reality only MSX-es with max 512Kb came out. Nowadays people make cartridges that do 4Mb per slot.
… On 26 Jul 2020, at 19:32, maziac ***@***.***> wrote:
Yes, I think it's better located in the "openmsx" section.
Thanks for the explanation. In general I understand. But e.g. the "3 2 1". What exactly does it mean?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub <#25 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/ABGC6KFCKWORVATYSU4EVN3R5RSBXANCNFSM4OX3TKQQ>.
|
What if the program extends 2 pages and the pages have different slot configurations? |
Good question.
If the program spreads across multiple 16Kb pages, which is a big program, then 1 default pcInSlot configuration wouldn’t work. I guess there are two options to tackle that:
1. Have an option in the UI when you set the breakpoint.
2. Solve it like you have done with the ASSERTS. Add a remark to the source code like ; BPS_IN_SLOT primary,[secondary],[segment]
… On 26 Jul 2020, at 21:59, maziac ***@***.***> wrote:
What if the program extends 2 pages and the pages have different slot configurations?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub <#25 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/ABGC6KAQPQY7ESZXDALVRWLR5SDL7ANCNFSM4OX3TKQQ>.
|
Why don't you work with 4 "pcInSlot" configurations? |
Could work. But again only makes sense when developing >16kb programs who at the MSX flip the segment, or slot, subslot dynamically while running.
The only way to tackle this is having a UI. See screenshot included in this email of an existing debugger for the MSX. Or instrument the code.
… On 27 Jul 2020, at 17:32, maziac ***@***.***> wrote:
Why don't you work with 4 "pcInSlot" configurations?
The user only has to assign the one(s) he really uses.
E.g.
page0Slot
page1Slot
page2Slot
page4Slot
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub <#25 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/ABGC6KCZEO47YEVAVIN6HYDR5WMXZANCNFSM4OX3TKQQ>.
|
Could you confirm that your code is also MIT licensed, so that I can include it. |
Confirmed. Of course, thanks for checking.
Sent by phone
…________________________________
From: maziac <notifications@github.com>
Sent: Saturday, August 8, 2020 3:33:07 PM
To: maziac/DeZog <DeZog@noreply.github.com>
Cc: S0urceror <mario.smit.nl@gmail.com>; Author <author@noreply.github.com>
Subject: Re: [maziac/DeZog] OpenMSX support (#25)
Could you confirm that your code is also MIT licensed, so that I can include it.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub<#25 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ABGC6KCQBHSQFT5TWNAJRBDR7VHZHANCNFSM4OX3TKQQ>.
|
Thanks. With your latest commit a lot of dependencies have been added. I normally try to keep the number of dependencies low. I also found some authentication, credential, security stuff in there. |
To support OpenMSX on Windows I had to support SSPI authentication.
I also asked the maintainer of OpenMSX why they did this. On Windows they use standard TCPIP sockets. Without security anything on the (local) network can connect to them. So they implemented authentication. On Mac (what I use) and Unix the System sockets only open on the system itself hence no extra authentication needed.
Understand this introduces additional dependencies.
Sent by phone
…________________________________
From: maziac <notifications@github.com>
Sent: Sunday, August 9, 2020 12:19:17 PM
To: maziac/DeZog <DeZog@noreply.github.com>
Cc: S0urceror <mario.smit.nl@gmail.com>; Author <author@noreply.github.com>
Subject: Re: [maziac/DeZog] OpenMSX support (#25)
Thanks.
With your latest commit a lot of dependencies have been added. I normally try to keep the number of dependencies low.
What is the use of it?
I also found some authentication, credential, security stuff in there.
Why do we need authentication?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub<#25 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ABGC6KBGJ427DPNWUFPVSODR7ZZ2LANCNFSM4OX3TKQQ>.
|
OK, I see. I created a new branch 'openmsx' and merged your pull request there. The branch now contains the youngest master, i.e. all changes regarding ZX Next support. Could you please checkout to see if it is still working for you. (I guess if you make additional changes you need to do a new pull request for the "openmsx" branch) And a few other things you could add:
A question: you mention a " autoexec.bas" file in the OpenMSX section. Is it correct or is it a typo? Did you mean " autoexec.bat"? |
Hello S0urceror, maybe you missed my last comment. Are you still interested to get the openmsx support into the official DeZog release? There are just a few issues, could you please look at my previous comment. |
Hi Maziac,
Sorry was a bit caught up other things (normal life). I’ll check out your latest branch this evening and check. Are there specific things you are referring to? Let me know.
Sent by phone
…________________________________
From: maziac <notifications@github.com>
Sent: Saturday, August 29, 2020 11:52:14 AM
To: maziac/DeZog <DeZog@noreply.github.com>
Cc: S0urceror <mario.smit.nl@gmail.com>; Author <author@noreply.github.com>
Subject: Re: [maziac/DeZog] OpenMSX support (#25)
Hello S0urceror,
maybe you missed my last comment. Are you still interested to get the openmsx support into the official DeZog release?
There are just a few issues, could you please look at my previous comment.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub<#25 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ABGC6KGYIXLOVVEGSEF2QCDSDDFU5ANCNFSM4OX3TKQQ>.
|
No problem. No other specific things other than my comments from 9th of August. |
Checked out your OpenMSX branch. Works perfectly here except for the Glass support that requires a change in labels.ts. I'm okay with that because I use SjasmPlus anyway. I would recommend removing some logging and have a proposed description for the pcInSlot variable. Created a diff for you to easily update your OpenMSX branch.
|
I incorporated your changes together with a few of mine (branch openmsx).
|
Hi S0urceror, |
Sorry Maziac, am involved in a couple of projects, all besides something called a day job ;-). I'm afraid this has moved a bit to the back. I promise to spend time on it this week. Would really like to work with you on a full release. Couple of answers I can already give you: "I changed your logging": "15 secs timeout in 'connect': This is too long": |
OK, looking forward to hear from you. :-) |
Hi There i just want to say awesome work on this, I have been using it on the spectrum next, and i was looking to see if the memory dump could be displayed as words rather than just bytes. I can't find the command :( Many thanks Patricia |
For the memdump I moved the discussion here #30. |
Hello S0urceror, |
Hi,
I have created OpenMSX support for Dezog. Since you already created the framework to support multiple emulators I thought to just add one. And it works great!
Currently I don’t support watch points, history and code coverage yet. I’ll work with the OpenMSX guys to get that included as well.
Would be great to merge our efforts. Like Dezog a lot!
Regards,
Mario