Manfred Zindel asks Now what do you think about it? I think it's great that you were able to extend FMSLogo to suit your educational goals. I think you're using Logolib exactly as it was designed to be used. And the GNU GPL ensures that you can redistribute your own version of FMSLogo that has X_DASHED included in it. I suspect that you're not asking for a general opinion of your new command, but whether it should be added to the logolib in FMSLogo's standard installer. In my view, this doesn't follow...
A new command
Sorry that I found no time to answer earlier. Many thanks for your explanations that are very informative and helpful for us, especially as we often shift the KISS.lgo-capsule to new places everywhere - may be even from one computer to the other that may be far away. Your proposals how to handle the Mark of the Web help us to understand the process of "shifting the capsule" better. I think that the existence of "untrusted zones" is a good thing at last, because there may really be zones which are...
Manfred Zindel wrote: logohelp.chw was really missing - I don't know why. Perhaps a robbery AI stole it. The file that contains the help content is called logohelp.chm. I think logohelp.chw is generated by hh.exe when you view the logohelp.chm. It doesn't come with FMSLogo and it's safe to delete. But sometimes the help dialog appears and the explanations at the right side are gone, it is empty. Why? I expect that this is because of the way you're copying the files. If they're copied with a Microsoft...
Manfred writes: To read that there may be not more than 20 really active FMSLogo supporters all over the world By "that potentially helps 20 people" I meant the number people who would EDIT something that was buried...that is, library writers. I've found a few libraries for FMSLogo and I suppose there are a few more I haven't seen, so I estimated it in the 10s, not the 100s or 1000s. There are certainly much more than 20 people who use FMSLogo. The number of downloads has been going up year after...
Empty right part of help
After updating the version because our own debugging program had told us Reported as missing: logohelp.chw everything worked fine again. logohelp.chw was really missing - I don't know why. Perhaps a robbery AI stole it. I canot understand, why this happens from time to time. May be there are some unexpected links, because sometimes I install regularly a new FMSLogo version. After all, there are at least two FMSLogo copies available. One is in C:\Program Files (X86) and the other is in a special folder....
Sorry, perhaps the problem has already been solved. One of our own new check programs told me: Reported as missing: logohelp.chw I looked at the place where it should be, and it wasn't there. I replaced it - everything worked fine. The only remaining question is why it had disappeared before. May be some Artificial Intelligence has stolen it - there are questions which better remain unanswered.
Empty right part of help
For some months we (pbreport) have been absorbed by struggling with commercial things other than FMSLogo, and so I didn't even see these comprehensive considerations above. But now I found it, and it describes very well my thoughts and experiences earlier this year. To read that there may be not more than 20 really active FMSLogo supporters all over the world and comparing that with typical crowds in the internet (millions, billions) lets me doubt that I do something meaningful at all. Nevertheless...
To the sourceforge.net owner, Your posts are always well written.
Add a reminder to upload files in the "media" directory.
Rewrite the instructions for tagging, now that I no longer have the svn root checked out as a working copy.
Tagging source code used to build FMSLogo 8.4.0
Add the result of the 8.4.0 test pass.
Update the results with the third run from the 8.4.0 test pass (after fixing a regression)
Fix a regression that stopped SETTIMER from working in the screensaver.
Update the results with the second run from the 8.4.0 test pass (after a small fix to the test code)
Update with the results of the 8.4.0 test pass.
Add/Fix some LOCAL statements so that global variables are not leaked.
PAUSE should have self-documenting GUI
I've moved this to be a feature request, which it may have been all along. I expect that I'll enhance the PAUSE dialog some day, mostly as a personal favor to you. I doubt I'd add dialog boxes that let you pick procedures for STEP and TRACE, but feel free to open another feature request for that. Maybe someone else will want to do it.
Ticket moved from /p/fmslogo/support-requests/54/
Increment the version to 8.4.0 for a formal release
Yeah, I've never used STEP but I have used PAUSE from time to time. It helped me see what each iteration of a loop is doing. specially in cases when the loop is deeply nested in procedure calls. That way I can see how variables and arguments are instantiated. PAUSE is also useful to see how turtle pictures get created with each iteration of a loop. I run it for a few iterations of the loop but then I need to abort execution altogether to start making changes to the code. The HALT button would be...
The OK and Cancel don't do the same thing. "OK" would be better labelled as "Execute", since it functions like the commander. I agree that "Continue" is a good name for cancel. There could also be a better explanation of what to do. I think a Halt button would make more sense than a THROW "Toplevel since Halt is already a familiar concept and is what Cancel on READWORD does. Similar, the dialog text could explain what Pause mode is. Of course, any change to the text means that languages other than...
deduce that clicking Cancelar acts the same as entering CONTINUE and pressing OK I gather that both buttons do the same thing. It looks like you found the documentation for PAUSE. The part that you didn't quote explains how to get out of it the issue was that PAUSE was in a loop repeat 10000 [fd 10 rt 47 PAUSE] I suppose your STOPALL throws an error, perhaps even THROW "Toplevel Yes. .macro stopall output [THROW "TOPLEVEL] end It seems to me that PAUSE is one of the few debugging tools Logo has,...
The title bar that you can't see on Mint gives a better hint. I have attached a picture of what you'd see on Windows. If you had seen the full title bar, you might have been able to deduce that clicking Cancelar acts the same as entering CONTINUE and pressing OK. I don't think the "pause" dialog box is documented in the manual. The manual mostly documents the language, not the UI. It looks like you found the documentation for PAUSE. The part that you didn't quote explains how to get out of it If...
The commander history font is are stored as many values in the registry key HKCU/Software/FMSLogo. The most important is CommanderFont.FaceName, which is a REG_SZ. You can find the logic for reading and writing these preferences at https://sourceforge.net/p/fmslogo/source/HEAD/tree/logo/tags/VER-8-3-2/src/utils.cpp#l46. By inspecting the code, you should be able to figure out the rest of the values that make up a font.
Is the PAUSE behaviour documented?
Where does FMSLogo store the Command History font setting?
Fix an inaccurate comment (code drift)
Fix an integer overflow bug in tone when running on GNU/Linux.
Fix a typo in a comment
Add a regression test for TONE that tries crash FMSLogo with integer overflow.
TONE plays a minimum frequency of 37 Hz
This is fixed by [r6072]. The fix will be available in FMSLogo 8.4.0. This fix necessitated changing SOUND to reject negative frequencies and durations (which it always should have done, since TONE does it). To fix a different bug, I had rewritten TONE to generate its own sound wave and call sndPlaySound instead of using Beep(). Once that work was done, the lower bound which Beep() imposed was no longer a problem. My hearing is not good enough to hear frequencies below 70 Hz. However, I expect that...
Fix Bug #215; TONE/SOUND now play frequencies <37.
another invoke issue
I have added a special case to retain the previous behavior of "-" when it follows a "?". This is fixed by [r6071]. As far as I know, this bug was never part of a public release.
Add a special case to disable treating a leading "-" as negation when it follows a ?.
After some reflection, I consider the new behavior to be an undesirable compatibility risk. I will restore the previous behavior for this narrow case if I am able to do so without undoing the fix for Bug #589. While ? is documented as procedure, most of the examples make it look like a variable. The error for [(? - 1)] is perhaps a learning moment, but the lesson learned is mostly unenlightening for programming in general. I looked briefly at fixing this and concluded that there's no simple fix....
thanks for those other ways and the explanation given for the behavior.
I'll look into this some more when I have more time, but that might be the correct behavior; it's what I fixed in bug #589. ? is a procedure that takes 0 or 1 inputs. By adding the parens, you're saying "I want ? to be given - 1 as input". ? requires a positive number that is an index into an argument list, so negative or zero gives a "does not like" error. There are other ways write this SHOW INVOKE [? - 1] 1 SHOW INVOKE [(?1 - 1)] 1 SHOW INVOKE [((?) - 1)] 1 SHOW INVOKE [(-1 + ?)] 1
another invoke issue
WAIT doesn't throw stopping error when you press HALT
Despite what I had written earlier, this was a simple coding error in WAIT, not a bug in the evaluation engine. The problem is that the IsTimeToHalt can become true without throwing an error. Whatever checks it must throw the error. This is fixed in [r6070] by calling check_stop instead of merely checking IsTimeToHalt.
Fix Bug #244; Halting WAIT now immediately throws a stopping error.
Add a test to ensure that WAIT is haltable.
Closing bug as invalid, as Jan agreed the the behavior is useful.
WAIT don't work in Commander in subsequent executions
I sympathize with your exasperation. I expect that you first noticed something weird, but wasn't sure what it was. When it happened again, you spent hours, maybe days, tracking down something you thought was a serious bug. At the end, you discovered that FMSLogo is behaving correctly and its sensible behavior has some counter-intuitive aspects that can surprise you if you don't keep in mind what's buried when you use the editor. Ultimately, you discovered that you can edit something that's buried...
Inline :d.ang in POLYGONTEST.COMPLEX.
Inline xexpr.l, yexpr.l, and zexpr.l in POLYGONTEST.COMPLEX.
Remove "IFELSE :bradius=0" from POLYGONTEST.COMPLEX.
Inline bradius.l in POLYGONTEST.COMPLEX.
Save and Exit lets a procedure disappear from the editor all of a sudden.
Inline urange.l in POLYGONTEST.COMPLEX.
Rename rectpoint to POLYGONTEST.COMPLEX.RECTPOINT.
Inline swap. This reduces the procedure namespace pollution of POLYGONTEST.COMPLEX.
Add some test for special cases for ARCTAN and RADARCTAN.
Cleanup: Remove "atan" and replace it with ARCTAN.
Combine tzx, xc, yz, and zc into a single procedure rectpoint.
Inline x, ye, and z. This reduces the procedure namespace pollution of POLYGONTEST.COMPLEX.
Refactoring: Extract :position.list to remove code duplication
Inline rect. This reduces the procedure namespace pollution of POLYGONTEST.COMPLEX.
Inline band. This reduces the procedure namespace pollution of POLYGONTEST.COMPLEX.
Inline vecdiff and rewrite it in terms of MAP.
Inline vecsum and rewrite it in terms of MAP.
Inline sumsq and rewrite it in terms of MAP and APPLY.
The explanations you sent me in March were really interesting and helpful for us. But while I was struggling for the economic survival of pbreport, I found no extra time to answer it. Now everything is fixed, and we're going to complete the things we created around Little Helper. First, let me thank you especially for drawing my attention to what I'd like to call the 'choice'-conflict. This problem arises only when checking variables, but neither for procedures nor for properties. But I can't escape,...
Cleanup: Inline vecprod using MAP
Tail recursive function ignores empty list in IF instruction
By the way, the code you attached demonstrates a second bug in FMSLogo. For example, vecprod is implemented as: to vecprod :k :vec if empty? :vec [[] stop] op fput (:k* first :vec) vecprod :k bf :vec end The first line should just be if empty? :vec [stop] When run in UCBLogo it throws an error ? vecprod 2 [1 2 3] You don't say what to do with [] in vecprod [if empty? :vec [[] stop]] I think UCBLogo has the correct behavior. If you want to post this code, be aware that I may fix this second bug in...
Move the documentation for the bugfix of Bug #592 from README to CHANGELOG.
thanks! appreciate it.
Reformat "band" so that it doesn't need line continuation (~)
Cleanup: Remove the need for assign.val
Cleanup: Remove redundant checks for NULL
3d graphic code stalls
This is fixed by [r6046]. I fixed this by comparing the current 3dsolid.cpp with the 3dsolid.cpp from 6.35.0 and correcting mistakes I made when cleaning it up. I do not claim to understand the code. This fix will be available in FMSLogo 8.4.0.
Fix Bug #592; Complex usage of POLYSTART/POLYEND no longer causes FMSLogo to become unstable.
This suggests that no one has use the polygon functionality for something this complex in seven years. That's why I wanted to resurface them again. So that more people are aware that FMSLogo is capable of doing those things. All I see as Logo Youtube videos is children drawing squares.
I managed to compile the source code for FMSLogo 6.35.0 wxWidgets with the build tools that I currently use to compile the 8.X series. I was not able to reproduce the problem in the resulting executable. This suggests that this is a regression that I made to the source code, not a change to the compiler or the C runtime. In looking at the difference in the polygon code (threed.cpp and 3dsolid.cpp), it looks like I cleaned up 3dsolid.cpp by removing, among other thing, the precompiler switches NO_ASM...
3d graphic code stalls
I was able to reproduce the problem as far back as FMSLogo 7.0.0. I was unable to reproduce it on FMSLogo 6.35.0 OWL or FMSLogo 6.35.0 wxWidgets. CHANGELOG.TXT gives a lot of changes for FMSLogo 7.0.0, but very few related to 3D graphics. I ran the program under valgrind on GNU/Linux and it reported some heap corruption (freed memory read) deep in the BSP tree construction.
Yes! there are a few. On of them is LogoFE But another on is the one attached. Created and shared by David Peacock
Attached is how it looks when finished
Attached is a program that draws a 3D bug using FMSLogo 3D capabilities.
3d graphic code stalls
You can add these files to the logolib folder in your FMSLogo installation folder. That will make these library procedures available: lmul lsum ldiv lsub If you want to work with very large numbers you will have to treat them as strings of digits: show lsum 1 "10000000000000000000000000000000000000000000 10000000000000000000000000000000000000000001 This calculates the factorial of 5: factorial of 5 = 1 * 2 * 3 * 4 * 5 show cascade 5 [product # ?] 1 120 Factorial of 50 using normal numbers: show cascade...
You can add these files to the logolib folder in your FMSLogo installation folder. That will make these library procedures available: lmul lsum ldiv lsub If you want to work with very large numbers you will have to treat them as strings of digits: show lsum 1 "10000000000000000000000000000000000000000000 10000000000000000000000000000000000000000001 This calculates the factorial of 5: factorial of 5 = 1 * 2 * 3 * 4 * 5 show cascade 5 [product # ?] 1 120 Factorial of 50 using normal numbers: show cascade...
You can add these files to the logolib folder in your FMSLogo installation folder. That will make these library procedures available: lmul lsum ldiv lsub If you want to work with very large numbers you will have to treat them as strings for digits: show lsum 1 "10000000000000000000000000000000000000000000 10000000000000000000000000000000000000000001 This calculates the factorial of 5: factorial of 5 = 1 * 2 * 3 * 4 * 5 show cascade 5 [product # ?] 1 120 Factorial of 50 using normal numbers: show...
Attached is a GIF animation showing the procedure in action.
The attached procedures allow us to draw a line that goes through several points using the curves called "Bezier splines". The number 0.4 determines how tight the curve needs to be. The number 100 indicates how many line segments the procedures should use to produce the curve. cs draw.spline [ [0 0] [-295 55] [-185 145] [-205 -45] [-25 95] [-35 -55] [75 35] [215 35] [205 -95] [-5 -115] [-165 -115] ] 0.4 100 The attached procedures were share by Erich Neuwirth to the LogoForum.
attached is an example of one of those EPS vector files converted to PNG for display. The PNG can be made to have more pixels if wanted.
FMSLogo can produce high quality vector pictures using the library attached. It produces EPS files that can be imported into Lout, Latex, Groff. That can also be convert to PDF using the free Sumatra PDF reader https://www.sumatrapdfreader.org/free-pdf-reader or! Inkscape Ghostscript Ghostview