Moving software 26 bit to 32 bit
Andrew McCarthy (3688) 605 posts |
Start here. References: Tools: |
Andrew McCarthy (3688) 605 posts |
That would be helpful- I know of someone with a module who would like to get it working on newer hardware. Does anyone fancy coming to the next fireside chat on Saturday, 12th October, to help? I’m appealing to the people in this thread and the wider community. I think this would also make an interesting topic for a talk. |
Andrew McCarthy (3688) 605 posts |
Thank you, Dave. I reached out to them and now have a copy of the file (zipped); I don’t feel comfortable sharing it on the forum as I don’t know enough about the program. I will share the program if anyone would like to look at it. Contacting me can be done in several ways here <- bottom of the linked article. |
Dave Higton (1515) 3526 posts |
I’ve posted to the RISC OS Chat thread on ChatCube. I still don’t know how to contact you to get hold of the module, Andrew. I’m on Telegram and WhatsApp but not Twitter or Mastodon. Except of course we’re both on ChatCube. |
Andrew McCarthy (3688) 605 posts |
Dave, thank you. I’ve dropped the zip file into ChatCube. If that doesn’t work, I still have your email address. Edit: Email sent with more information, and the zip file. |
David J. Ruck (33) 1635 posts |
Rick’s modcode page doesn’t mention the module service call table, or was this only a ROL thing? |
Rick Murray (539) 13840 posts |
I suspect it might have first been in the unreleased 3.8? This stuff is in the code as “Chocolate” options, which were implemented for Ursula, which IIRC was exactly that. Meaning its first public outing would have been RISC OS 4. |
Dave Higton (1515) 3526 posts |
For anyone interested: there are a couple of projects going on live on ChatCube. Feel free to join in! Not only are we interested in updating modules from 26 to 32 bit, we are also looking at translating from assembly language to C. |
Dave Higton (1515) 3526 posts |
Last night I completed the first stage of converting a module to C. No source was available for the module, but it was already 32 bit compatible, and Armalyser generated good source code that could be assembled. The new module has a CMHG header and C main part, and calls the asm routines to implement the star commands. From there it’s just “handle cranking” to convert each one to fully C. Yes, this has been an easy one, but it’s best to start with an easy one to prove that the method is workable. |
Colin Ferris (399) 1814 posts |
Interesting – how did you plan to convert 32bit ARM code into ‘C’? |
Dave Higton (1515) 3526 posts |
Work out what it does, then write a replacement. For bigger tasks, it should be possible to replace a function and still call the lower level functions – replacing one level at a time. But this remains to be tried. |
Jean-Michel BRUCK (3009) 359 posts |
@Dave I’m not done yet…and I need to work on the comments… In any case, it’s a good opportunity for me to review the coding of the modules. Note: !Sid gives the name of the functions directly and the use of DDE macros allows you to practically obtain the text to insert into the CmgHdr. |
Dave Higton (1515) 3526 posts |
Other than the Shared C Library, none. MouseCmd is a bit too simple really. It doesn’t need an assembler file as a start point. But the whole reason, to me, for doing it is to demonstrate the feasibility of one way of doing a translation, where it can be done function by function, and still have a fully working module at each stage. |
Jean-Michel BRUCK (3009) 359 posts |
@Dave |
Dave Higton (1515) 3526 posts |
@J-M So, now on to the next stage. |
Jean-Michel BRUCK (3009) 359 posts |
Thanks Dave for this information. For insertion into the buffer OS_Byte 138 does the job. I looked through the PRM and other Help to find out what values to put in the buffer, but I couldn’t find any. Note: Basically I think I understand what the module does and I’m trying to reproduce its functionalities, but this may not be the right way to approach the conversion? |