Beta 3 is great and your demo too. However, I corrected the demo. There was 2 important bugs about the progression bar. It didn't wait 27 seconds before exiting, but around 16 seconds (1 tick is 1/50 second not 1/30), and the progress bar continued a little after reaching the end. So here is the code :
mlccode:
line0 db 'ML2:',0
line1 db '#FNCT MAIN',0
line2 db '#CLRS',0
line3 db '%WaitTime=27',0
line4 db '#RECT 9,19,100,60,10,0',0
line5 db '#RECT 10,27,99,20,10,10',0
line6 db '$Hello="Hello "',0
line7 db '#TEXT 10,19,$Hello+"World",9',0
line8 db '$Hello="Wait "',0
line9 db '#PIXL 5,5,1',0
line10 db '#TEXT 12,29,"Press Key"+" now",9',0
line11 db '#MSET',0
line12 db '#FRUN PAUSE',0
line13 db '#CSTR %WaitTime,*$Number',0
line14 db '#TEXT 10,37,$Hello+$Number+" sec ...",9',0
line15 db '#RECT 15,46,97,49,10,0',0
line16 db '#RECT 34,51,80,59,10,0',0
line17 db '#TEXT 45,52,"ABORT",9',0
line18 db '#MFNC MOUSE_HANDLER',0
line19 db '#BREG 34,51,80,59,*%ID_Abort',0
line20 db '%Counter=0',0
line21 db '#FORL 1,%WaitTime*3,1,FORTEST',0
line22 db '#HALT',0
line23 db '#FEND',0
line24 db '#FNCT PAUSE',0
line25 db '#SKEY',0
line26 db '#FEND',0
line27 db '#FNCT FORTEST',0
line28 db '%Counter=%Counter+1',0
line29 db '#RECT 15,47,%Counter+15,48,10,10',0
line30 db '#WAIT 17',0
line31 db '#FEND',0
line32 db '#FNCT MOUSE_HANDLER',0
line34 db '#MOFF',0
line33 db '#TEXT 1,1,"Moused",9',0
line35 db '#WAIT 25',0
line36 db '#FRUN MAIN',0
line37 db '#FEND',0,0
I think you should add a button to force the interruption of the programme as AC/On. Because when there're bugs in the code, as an infinite loop, we must press the "P" button.
It could be a good idea to add a variable to the for loop. So we could use this directly in the loop function. For now, we must create a var to do it. I propose the syntaxe : FORL <var>,init,end,step,<function name>.
Is there a limit to the number of loop with FORL ? I've made a prog that lead to a strange calc behavior. Here it is :
mlccode:
line0 db 'ML2:',0
line1 db '#FNCT MAIN',0
line2 db '#CLRS',0
line11 db '#MSET',0
line18 db '#MFNC MOUSE_HANDLER',0
line19 db '#BREG 34,51,80,59,*%ID_Abort',0
line20 db '%A=0',0
line21 db '#FORL 1,33000,1,A',0
line22 db '#FEND',0
line23 db '#FNCT A',0
line24 db '#CSTR %A,*$A',0
line25 db '#CLRS',0
line26 db '#RECT 34,51,80,59,10,0',0
line27 db '#TEXT 45,52,"ABORT",9',0
line28 db '#TEXT 10,10,$A,9',0
line29 db '%A=%A+2',0
line30 db '#WAIT 15',0
line31 db '#FEND',0
line32 db '#FNCT MOUSE_HANDLER',0
line34 db '#HALT',0
line37 db '#FEND',0,0
This prog should count from 0 to 32 767 with a step=2, and then make an error because of the limit. However, it count like this :
0,2,...,254,000,2,4,...,254,000,2,4,6,calc menu !!!
I don't understand why. I tried the same prog using %A=%A*2 in place of +2, and starting at %A=1, and it count like this :
1,2,4,...,128,000,1024,2048,... error.
So I think there's an error with 256, but I don't know if it's a var error or a string error or anything else. I think there's also a little error with FORL.
I'd like to see a command to return at the beginning of the function, as FGOB did it in MLC 1, because if we use FRUN, an error occure very quickly.
We can see : "Compilation finished"... on one of the starting sceen. It would be better if this screen was cleared after pressing a key. For now, the prog starts with this screen, so we must clear it ourselves.
I feel the mouse cursor is quite slow. Could you increase its speed ?
I don't get all about the mouse programming. Can we have some MFNC or only one ? What represents *%ID_Abort ? I don't understand what it is. How should I proceed if I want the user to make a choice between 2 boxes ?
On your demo, if I press EXE when I'm out the abort button, nothing happens (ok, it works), but after, if I come on the button, the EXE press have been memorised and the prog directly execute the mouse function. Is it a bug ?
Why mouse diag (up+left, ...) doesn't work ?
What's the difference between #CSTR %WaitTime,*$Number and #CSTR %WaitTime,$Number ?
You did well, so continue like this. It's amasing. Don't be discouraged by what I said.