Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.
|
Forum Index : Microcontroller and PC projects : MM BASIC vs ATARI BASIC and Page 6...
Author | Message | ||||
Grogster Admin Group Joined: 31/12/2012 Location: New ZealandPosts: 9307 |
Back in the days of the Atari, you used to be able to call a machine-code program from within the BASIC program. Commonly, this was referred to(by Atari programmers), as PAGE 6. Page 6 was an area of system memory reserved for use for user programs running in machine code. The practical upshot of which, was that you could call for a machine code routine from within the BASIC program, allowing you to program special features etc, that were not available from withing the BASIC language. Commonly, this area of memory was used for things like special function drivers, and graphics processes which would be far to slow running inside the BASIC. Now, I know that MM does not have this ability, but is it perhaps something that might make it into a future release of MM BASIC do you think? The ability to code fancy graphics or even just playing around with fonts etc in native machine code would introduce some amazing abilities for those that WANTED to code a routine in native PIC32(which I think is C?). Thoughts? Opinions? Smoke makes things work. When the smoke gets out, it stops! |
||||
MicroBlocks Guru Joined: 12/05/2012 Location: ThailandPosts: 2209 |
It would be fabulous. You would need to load it from sd card or another source as using data statements and poke would require too much memory. In the most easy case it would maybe possible to use a MM basic string as a placeholder for some machinecode. It is restricted to 255 bytes but that might be enough and if it isn't then using more string variables as machinecode holders could be possible. You then just execute a "string". Of course the datatype string would confuse everything but inventing a new datatype isn't a real problem. Just another keyword. Expand the LOAD command to accept a variable name. You could then do this: LOAD "fastcode.bin", code# result = EXECUTE code#(1,2) LOAD would then be responsible to load a bin file into memory pointed to by the code# variable. EXECUTE would then push parameters 1 and 2 on the stack and then call the code# routine, returning a value which should be of a fixed type to make implementing not overly difficult. I think the EXECUTE keyword can even be optional because the code#(1,2) can already be a defined function just like the other functions in MMBasic. Microblocks. Build with logic. |
||||
Nick Guru Joined: 09/06/2011 Location: AustraliaPosts: 512 |
Another usefull idea for this is to provide MMBASIC the ability to poll hardware at a higher rate than what MMBASIC can. Nick |
||||
JohnS Guru Joined: 18/11/2011 Location: United KingdomPosts: 3802 |
There's a thread on this from ages ago (a year?) but it needs someone to write the internal code for MMBasic. John |
||||
Geoffg Guru Joined: 06/06/2011 Location: AustraliaPosts: 3194 |
This is something that comes up often, so much so that I cover it in my FAQ The problem is that you would need to write the loadable machine code module in MIPS assembler to make it work. The MIPS machine code is intended to be generated by an optimising compiler and it is very difficult for a human to master. So I guess that the short answer is; show me someone who can program in MIPS assembler and I will have a crack at implementing Page 6, loadable machine code, or whatever you want to call it. Geoff Geoff Graham - http://geoffg.net |
||||
MOBI Guru Joined: 02/12/2012 Location: AustraliaPosts: 819 |
Tell me about it. Probably like you and other oldies on the forum, we have all done our fair share of assembly language in a variety of MPUs. I downloaded the instruction set for a MIPS unit, thinking "this'll be much the same" - I think I will leave that area alone. The grey matter is having enough trouble these days trying to cope with C++, C#,8 bit pic machine code and now MMBasic Mind you, if I was really pressed and had the time ...who knows? David M. |
||||
JohnS Guru Joined: 18/11/2011 Location: United KingdomPosts: 3802 |
To do it, I think C would be the way. Much easier to write. Various runtime functions would have to be banned and a few (or maybe none) provided as standard (I suppose those already used by MMBasic). Or provide some APIs callable via gcc's asm construct. Not pretty, but doable. Whether it's worth the effort? Pass. I'm guessing Geoff has a "would like to have" list that's enormous!! Executing a string var is not likely good enough as 255 bytes is so few for a 32-bit MIPS architecture. John |
||||
Grogster Admin Group Joined: 31/12/2012 Location: New ZealandPosts: 9307 |
Okey dokey, thanks guys. I was not expecting it to be any kind of easy add to MM BASIC, or if it would EVER happen let alone anytime soon, but it was a curiosity of mine, if it could be done at all some time in the future. Much like my other thread about showing the available space on the SD card, if it involves so much work to make it happen, it probably is not worth the effort. Smoke makes things work. When the smoke gets out, it stops! |
||||
MOBI Guru Joined: 02/12/2012 Location: AustraliaPosts: 819 |
Don't be disheartened, if nobody came up with ideas, nothig would ever happen. You never know, with technology advances at the rate we see them, your ideas might be quite feasible in the not too distant future. Afterall, when did the first MPU get developed? and look how far we have come in the 35 or so years since. In 1978 when I built my first 1K RAM (8x 2102) I could not conceive puting giga bytes into a chip. The word "giga" didn't apply to very much at all then....but I ramble on. David M. |
||||
Grogster Admin Group Joined: 31/12/2012 Location: New ZealandPosts: 9307 |
Heh, heh. I STILL have a hard time comprehending just how they manage to make 64GB micro-SD cards... Smoke makes things work. When the smoke gets out, it stops! |
||||
MicroBlocks Guru Joined: 12/05/2012 Location: ThailandPosts: 2209 |
What about the terrabyte usb stick from Kingston? :) Microblocks. Build with logic. |
||||
Grogster Admin Group Joined: 31/12/2012 Location: New ZealandPosts: 9307 |
Was not aware of that one - Holy Excrement! EDIT: Are you sure? I cannot find anything bigger then 256GB on the Kingston website... Smoke makes things work. When the smoke gets out, it stops! |
||||
donmck Guru Joined: 09/06/2011 Location: AustraliaPosts: 1313 |
http://www.techradar.com/news/portable-devices/other-devices /kingston-debuts-1-terabyte-usb-3-0-flash-drive-with-matchin g-price-tag-1124153 Not cheap. Don... https://www.dontronics.com |
||||
Grogster Admin Group Joined: 31/12/2012 Location: New ZealandPosts: 9307 |
$3,400 - yikes! That would buy a lot of standard HDD's or even SSD's Smoke makes things work. When the smoke gets out, it stops! |
||||
MOBI Guru Joined: 02/12/2012 Location: AustraliaPosts: 819 |
Whatever ARE you eating??? David M. |
||||
Grogster Admin Group Joined: 31/12/2012 Location: New ZealandPosts: 9307 |
Well, I was going to write Holy S**t, but figured that would be censored and as a newbie around here, would not make me any friends among the moderators. Smoke makes things work. When the smoke gets out, it stops! |
||||
Print this page |