00:00:00 --- log: started forth/19.11.14 00:01:54 it's in assembly but I have some idea what does what 00:02:11 That's the outer interpreter in most compliant Forths 00:02:23 gee, not much in it 00:03:12 and thats where one might "hook" a word to print html ? 00:03:51 That's usually the top level word that gets input and interpret's it 00:04:16 would I use the 'interpret' word ? 00:05:35 --- join: xek joined #forth 00:05:42 gee, my total cluelessness here is really just a sign that I have a opportunity for unbridled Forth learning with this project! 00:06:45 I'm not sure I'm exactly undrestanding what it is you want to do. 00:07:52 I was investigating the possibility of using Mecrisp-Stellaris to process source and produce HTML from it 00:09:26 it's been done in a few other forths as a way to produce website documentation of Forth source 00:10:19 rdrop-exit, I begin to see the Forth outer loop structure in the 'quit' code :) 00:12:53 Some systems have you sprinkle special comments in the source that a glossary or documentation generator uses to produce html or whatever. 00:13:27 Words like \G as a special comment for glossary entries 00:14:22 I think MPE's Forths generate the glossaries in that fashion 00:14:51 sure but I'm not after a literate programming system, I'd just like to turn source into html 00:17:32 I guess surround the file with tags and escape any special characters. 00:21:53 I had thought Id do it on a line by line basis because this is a tiny microprocessor, it doesnt have much in the way of resources 00:22:44 I have plenty of ways to process the Forth source externally on the PC where the file is created in the first place, Im exploring using the target to make the html 00:24:39 --- quit: MrMobius (Read error: Connection reset by peer) 00:26:04 I think ANS has READ-LINE 00:26:23 Read the next line from the file specified by fileid into memory at the address c-addr. At most u1 characters are read. 00:26:46 Is that what you mean? 00:28:00 But that assumes you have file support on the target. 00:28:22 no, because in Mecrisp-Stellaris there are no files, all source is received by the USART 00:28:41 I need to process it as it comes in, before it's compiled 00:28:49 *if* I do it this way 00:28:57 Ah not dead code, more like a log 00:30:41 my forth terminal system has a log I can turn on and name files remotely with, and thats what Id use to capture any html processing by the outer interpreter 00:35:42 So you want your target to produce a syntax highlighted HTML log of the session? 00:36:07 I be confused 00:37:15 --- join: proteus-guy joined #forth 00:37:31 I guess our forths must be quite different 00:38:48 your partially right, I want my target to upon executing a word, to produce html versions of source subsequently uploaded 00:39:06 your partially right, I want my target upon executing a special word, to produce html versions of source subsequently uploaded 00:39:39 wow this must be complex as the terminology is so important 00:41:24 --- join: SysDsnEng joined #forth 00:46:36 It sounds like you just want to echo input except for the "produce html versions" part 00:47:57 right! 00:48:15 Hook into KEY 00:48:37 echo input and add a version that is "HTMLised" 00:49:02 aha, I thought that HOOK may be used here 00:49:48 Ive seen it used whan others have added stuff to Mecrisp-Stellaris, usually they pleaded for a custom 'hook' from the designer 00:51:00 Whether KEY is a defered word (or the equivalent) depends on the specific Forth 00:52:42 Or it could be just a variable that's PERFORMed, see if there's a 'KEY 00:52:50 Our chat so far has produced a nice assembly listing of "quit" at least :) https://mecrisp-stellaris-folkdoc.sourceforge.io/interpreter-outer.html#outer-interpreter-assy 00:53:01 there definitely is a key 00:53:07 Ive used it many times 00:53:22 ahh the key I used was key? 00:53:34 'KEY i.e. KEY prefaced by the letter ' 00:53:58 That's a commonly used naming convention for variables that hold code addresses 00:54:05 hook-emit? ( - - a-addr ) Hooks for redirecting terminal IO on the fly 00:54:06 hook-key? 00:54:06 hook-key 00:54:06 hook-emit 00:54:34 Could be, your into carnal knowledge territory 00:54:55 yes, there is forthicating going on 00:55:03 lol 00:55:43 You know what they say, if you've one Forth, well you've seen ONE Forth 00:55:52 i sure do 00:55:55 * if you've seen 00:55:59 understand 00:56:04 it's so true 00:56:31 ill make it a mission to try more forths after I retire 00:56:40 just because ... 00:56:45 when's the big day? 00:56:58 next october 00:57:10 tick tick tick 00:57:18 yeah 00:57:26 so much happening 00:58:01 I want to cycle around australia when I retire so Ill have to take a tablet and all the forths I can fit on it, plus a solar panel 00:58:55 is it safe to cycle and forthicate at the same time ? 00:58:58 You'll probably take a break for a few months from anything remotely work-like, at least that's what I ded 00:59:07 * did 00:59:47 sure, work is electronics not Forth 01:00:01 Forth is a fond interest these days 01:00:53 Just to show how different Forths can be, this is how I handle having words switch behaviors in my Forth now 01:01:11 : dispatcher ( -- ? ) dummy ; compiled 01:01:18 : ] ( -- ) [^] dispatcher invokes compiler ; 01:01:27 : [ { -- } [^] dispatcher invokes interpreter ; directive 01:01:57 I just swithed to this way on the latest revision of my host 01:02:34 oh oh, there goes your hopes of ANS certification ? 01:02:43 Couldn't care less 01:02:49 01:03:07 This way is more efficient for that particular Forth architecture 01:03:35 words switch behaviors ? 01:03:46 I can make a redirectable word using dummy, then redirect it using invokes 01:03:50 is that like vocabularies ? 01:04:39 No its more like defered words, or indirection through PERFORM or @EXECUTE, just more efficient in this case 01:05:09 ahh I see! 01:05:25 --- join: dys joined #forth 01:05:53 it's a hint how I may change my Forth behaviour upon execution of a special word ? 01:06:02 or a view of how you do that ? 01:06:03 Instead of adding a level or indirection I modify the "dummy" call address. 01:06:46 Different Forths use different ways, some use DEFER, some use 01:06:58 a variable and PERFORM/@EXECUTE 01:07:27 Some just use a sort of self-modifying code 01:09:12 It depends on how much carnal knowledge you can exploit, and *when* you want to pay for the overhead 01:09:30 thank you for the insight :) 01:10:01 in this case the overhead isnt important, it's only used for producing html 01:10:53 If you want to hook into KEY, you need to find out if the author made a provision for that, and the specifics of that provision 01:11:31 ok 01:11:45 Ive a lot to learn yet 01:11:58 or if the Forth comes with a metacompiler you can always recompile a variant version of his Forth 01:12:27 it's all assembly and compiled by arm-none-eabi 01:13:18 if it needed a lot of redesign, I'd just do what I want in any of the several languages I have available on my pc 01:13:44 It's not a meta-compiled Forth? shame 01:13:47 the pc has the Forth sourcecode initally anyway 01:14:14 it's not a issue for me, Im just a Forth user 01:16:10 You'll have plenty of time on your hands once you retire, perhaps you'll produce your ultimate Master Technician Forth (tm) 01:16:41 haha, unlikely 01:17:13 as long as I can modify a Forth slightly for my needs I feel no compulsion to make a complete one 01:17:52 You are lucky to have a Forth that fits you so well 01:18:30 besides others, cold, highly intelligent and calculating are far far better at programming than I 01:19:04 I have a few actually, but the others are for different microprocessors 01:20:01 as Forth was made to work with hardware I always though that there would be choices for me, and there is 01:21:59 the 'OLPC' guy made one for ARM called 'coreforth' and it's pretty nice 01:22:16 but sadly it's also a bit old and I get too many errors compiling it 01:22:27 his doc is excellemt 01:24:52 Open Firmware guy? Mitch Bradley? 01:25:06 Oh ya, he's a Forth eminence grise 01:25:57 Very sharp and very experienced Forther 01:28:17 thats him 01:28:44 i may keep on it until i can compile coreforth 01:30:57 I don't want to have to deal with multiple Forths 01:32:23 let me rephrase that, I don't want to have to deal with other's Forths 01:32:40 others' 01:32:59 it's just part of my Forth learning experiences 01:34:08 his code is great fun to read, I see him trying to whip cortex-m1 crappy gpio instructions into shape 01:34:35 He loves long word names 01:35:01 His names are more like sentences than names 01:35:12 and so do i 01:35:26 I won't hold it against you 01:35:33 i really hate short word, function names 01:35:35 ;) 01:35:58 but I always use 'hotkey' words for testing 01:36:11 shorthands 01:36:12 so the long descriptive words become one letter 01:36:22 that works 01:36:34 because tho I love fully descriptive word names, I'm also lazy 01:37:06 I'm middle of the road + shorthands 01:38:06 I sometimes use prefixes and suffixes 01:38:46 this is typical for me "convert.count.to.degrees.c" 01:39:05 foo!! foo that writes through a cache unconditionally 01:39:08 i want to be able to read my Forth code in a decade 01:39:26 foo?! foo that writes through a cache if dirty 01:39:55 i wondered why Mitch's code was so appealing to me! 01:40:27 :) 01:43:50 The danger with long names is not factoring enough 01:44:49 oh! 01:44:55 ah! 01:45:25 Forth seems to engender a factor mania in me anyway 01:45:51 Forth frantic factormania for fellas 01:47:28 Ideally you want to form sentences from words rather then naming words with sentences 01:48:13 "Choose names that work well in phrases" -- Thinking Forth 01:49:14 good point, I recall that tip now 01:50:03 Synonyms are usefull for that, especially if your Forth has an optimizer 01:50:15 how would you do that given my word above as a example ? 01:50:49 it obtains a total pulse count and then converts it to a degrees C value 01:51:52 It depends on the other words, you try to make a set that works well together 01:51:58 for example 01:52:13 8 bit mask 01:52:30 gives me 11111111 01:52:44 8 bit gives me 100000000 01:52:46 yes, generic programming examples are easy, but the real world is more gnarly 01:53:27 absolutely its a combinatorial optimization problem 01:53:43 in a typical small embedded program there is no easy way to provide a conversational Word for several interrupt handlers and their initialisation 01:53:49 for instance 01:54:14 so I just throw them into my "includes" file 01:55:02 wvery Forth file which describes the problem, has a matching "includes" file full of gnarly bits 01:55:28 even their own mothers didnt love them 01:56:22 you hide your ugly kids in the cellar, for shame 01:57:05 yes, but I feed and water them 01:57:18 definitely no torture either 01:57:50 if I let them out people will be frightened and police will be called, the basement is the best place 01:59:20 rdrop-exit, I meant to mention, I emailed Matthis (author of Mecrisp-Stellaris ) about wheter or not he had a way to stop uploading on error and the answer was "no, you seem to have developed adequate methods tho" 01:59:27 come to think of it, maybe includes are more like the attic 02:00:05 bummer 02:00:42 I never found it useful to keep compiling after an error 02:00:47 I'm fine with his reply, I solved the issue perfectly for me 02:01:17 yeah, I don't understand why anyone would, but this Forth was not written for me :) 02:02:02 Master Technician Forth (tm) has a nicer design 02:02:20 I just received a reply re the questions Ive been asking you, and his answer is 'probably best to use a external parser or your own editor which may have that capability" 02:02:34 bummer 02:03:12 I wonder how Master Technician Forth (tm) does it 02:03:43 the fact that Mecrisp-Stellaris didnt have stuff I wanted did spur me on to design my own solutions. I'd have been annoyed if I had missed features in Mecrisp-Stellaris that did what I spent so much time providing 02:04:13 how I detect errors and stop the upload ? 02:05:29 I implemented hardware handshaking for speed and hacked raising RTS on to the end of the several compiler error messages 02:06:08 later I used SED to look for error terms in the Mecrisp-Stellaris RX line to my terminal 02:06:09 --- join: mtsd joined #forth 02:06:25 I would have that there'd be an exception thrown on a compile error, perfect use case for exception handling 02:06:51 no there isnt 02:07:26 in fact Mecrisp-Stellaris was a unwanted love child of "mecrisp" 02:07:43 Not familiar 02:07:52 Mecrisp was written for the MSP430 and later that was ported to cortex-arm 02:08:20 --- join: dave0 joined #forth 02:08:25 matthias loves MSP430 assembly and so do I, it's beautiful and smooth as silk, a pleasure to write 02:08:58 whereas cortex-m is ugly, rough, gnarly and not fun to write by comparison 02:09:57 Im guessing that matthias did the bare minimum for cortex-m and then went into detox hot salt baths in greenland for 3 months 02:10:31 but your mention of using exceptions for errors is something that never occurr\ed to me! 02:10:44 hmm, added to my notes :) 02:12:30 exceptions are good but only for exceptional situations, some Forthers abuse them 02:14:55 ah 02:15:40 you mean "forth exceptions" not cortex-m exceptions ? 02:16:12 I'm not sure Mecrisp-Stellaris has any 'forth' exceptions ? 02:16:29 yes Forth exceptions, the mechanism requires some return stack build-up and teardown 02:16:55 It probably does if its ANS 02:17:03 * it's 02:17:19 but it's not mandatory 02:17:27 is that like 'trap' ? 02:18:21 er I mean 'catch' 02:18:55 yes, the catch throw mechanism and various variants 02:19:05 AHH! 02:19:19 so catch and throw are Forth exception related ? 02:19:43 Yes, software exceptions 02:19:51 I havent worked with them yet and assumed they were for cortex-m mcu exceptions 02:20:31 IIRC the ANS guys modelled it on Lisp's mechanism 02:20:36 Mecrisp-Stellaris does have 'catch and throw' words but not in the default dictionary 02:21:25 thesedays I have found my own error parser based on SED works perfectly for me 02:21:30 But there were other slightly different mechanisms in other Forths and some FORML and FD articles 02:21:51 so I wont go to any trouble to design something native for Mecrisp-Stellaris 02:24:15 ABORT and similar words are usually implemented via the exception handling machinery 02:24:55 (not on older Forths though) 02:25:43 You could use the exception mechanism for things like buffer overflows 02:26:16 for example 02:27:50 hmm 02:28:16 i made a small jpg of my generic Forth error handling http://s000.tinyupload.com/?file_id=62517964563707276594 02:28:31 I even pinched your favorite upload site to host it 02:28:38 it's only 28KB 02:29:21 It's a heavyweight mechasim though, so you wouldn't use it as a replacement for normal error return codes 02:30:46 that "not found" message is probably printed by an exception handler 02:30:56 ahh 02:31:12 I have a list of all the errors and just grep on them with SED 02:31:50 it's much better to have that in my system rather than patch Mecrisp-Stellaris every release 02:31:52 the "stack underflow" message is also probably printed by an exception handler 02:32:29 i find a terminal BEEP and a RED error are all I need when coding 02:32:48 I say probably, because every Forth is different 02:33:00 i dont need to stop the compiler but hitting the reset button does that anyway 02:33:05 yes 02:33:10 as they should be! 02:34:45 --- quit: proteus-guy (Read error: Connection reset by peer) 02:35:29 Often you want different error handling when loading than when interactively typing in code. 02:35:56 That's one use for exception handling. 02:36:44 oh ? I have seen them as the same thing so far 02:37:25 probably because I rarely type into the terminal directly 02:37:57 For example when a word is not found during loading you might want to stop the load and display a error message, while if you're just typing in a wrong name, a beep is sufficient. 02:39:25 if I even want to test a one line command I usually use the editor 02:39:39 for me thats easier than typing in the Forth terminal 02:39:58 plus I always have a record of the command that way 02:40:07 You never type anything in the terminal? 02:40:24 i usually only use the Forth terminal to display mcu register information 02:40:59 ok 02:41:02 I may enter "gpioa." in the terminal to display all the GPIOA register contents in real time 02:41:29 My editor is part of the Forth, as is the tether terminal 02:41:31 but I never enter Forth program code in the terminal, thats always done at the editor 02:41:55 well yours is tethered so anything is possible :) 02:42:17 correctamundo 02:42:32 I have to work with the Mecrisp-Stellaris system so I do it the old way, but with new tools 02:43:09 my system is so fast that using the editor to upload source is very natural 02:43:34 it occurs when I click the 'make' button in the gui editor 02:45:57 While in a tethered system you not only have code destined for the target, but code of the host. 02:46:44 yes, I also use a tethered system 02:47:33 --- quit: SysDsnEng (Remote host closed the connection) 02:48:18 The tethered version of M-S also uses an external editor? 02:51:43 yes, it's identical to the non tethered one 02:51:57 including compiler error message detction 02:52:15 I see 02:52:23 which means my system uses both quite transparently 02:52:31 cool 02:52:47 the tethered one is only for MSP430 tho, not for cortex-m 02:53:20 which is because MSP430 mcus can have as little as 500 bytes to 2k of flash 02:53:28 I'm more old fashioned, source code in blocks, and a block editor. 02:54:23 i know, but blocks would never work for me. Id need permission from the palaeontology section to use block 02:54:31 s 02:55:05 --- quit: fftww (Read error: Connection reset by peer) 02:55:15 and i *love* my syntax highlighting, even if Forth has no syntax ;-) 02:55:21 blocks are definitely an acquired taste, I switched to files for a few years, but eventually went back to blocks. 02:55:44 I used blocks with Riscy-Pygness for the first time and quite liked them 02:56:04 but they are not supported by Mecrisp-Stellaris or my IDE 02:57:41 I don't even know why I prefer blocks. 02:58:58 I liked blocks, I liked the shadow comment blocks as well, they just seemed efficient and natural 02:59:26 but Im not a Forth purist. Im a Forth using electronics tech 03:00:12 blocks map somewhat well to common storage media — floppies, flash, etc. 03:00:49 true 03:00:54 without requiring a whole lot of storage management code, like a file system driver 03:01:19 jn__, agreed 03:01:41 but they wouldnt work for me and my system 03:02:07 I use a lot of PC processing power to get Forth source to the MCU 03:02:15 *nod* 03:02:29 and to read the Forth compiler replies automatically 03:02:46 I tell people it's like coding on a stack of index cards 03:03:19 and now it looks like I'll also be using something, either Scheme or Bison to parse Forth source to HTML for my doc site 03:03:21 instead of the scrolling parchment metaphor of files. 03:03:34 rdrop-exit, thats a great description 03:04:02 :) 03:04:26 very apt as the blocks are always 1KB 03:07:23 gotta go, catch you all later :) 03:07:40 --- quit: rdrop-exit (Quit: Lost terminal) 03:08:50 cya, thanks for all the advice! 03:28:37 --- quit: mtsd (Quit: Leaving) 03:28:37 --- join: iyzsong joined #forth 03:30:03 --- quit: tabemann (Remote host closed the connection) 03:30:10 --- join: tabemann joined #forth 03:31:29 --- quit: tabemann (Remote host closed the connection) 03:32:08 --- join: tabemann joined #forth 03:35:29 --- join: fftww joined #forth 04:51:36 --- quit: iyzsong (*.net *.split) 04:51:36 --- quit: ryke (*.net *.split) 04:51:38 --- quit: chunkypuffs (*.net *.split) 04:51:38 --- quit: lonjil (*.net *.split) 04:51:38 --- quit: fiddlerwoaroof (*.net *.split) 04:51:38 --- quit: arrdem (*.net *.split) 04:51:39 --- quit: gabc (*.net *.split) 04:51:39 --- quit: crc (*.net *.split) 04:51:39 --- quit: alex4nder (*.net *.split) 04:51:39 --- quit: superjudge (*.net *.split) 04:51:39 --- quit: guan (*.net *.split) 04:54:21 --- join: iyzsong joined #forth 04:54:21 --- join: ryke joined #forth 04:54:21 --- join: chunkypuffs joined #forth 04:54:21 --- join: lonjil joined #forth 04:54:21 --- join: fiddlerwoaroof joined #forth 04:54:21 --- join: arrdem joined #forth 04:54:21 --- join: gabc joined #forth 04:54:21 --- join: crc joined #forth 04:54:21 --- join: superjudge joined #forth 04:54:21 --- join: alex4nder joined #forth 04:54:21 --- join: guan joined #forth 04:54:21 --- mode: tolkien.freenode.net set +v crc 05:45:24 --- quit: ryke (Ping timeout: 276 seconds) 05:47:13 --- join: dddddd joined #forth 06:28:15 --- quit: iyzsong (Quit: ZNC 1.7.1 - https://znc.in) 06:41:01 --- join: MrMobius joined #forth 06:59:14 --- quit: dave0 (Quit: dave's not here) 07:01:08 --- join: proteus-guy joined #forth 07:28:22 --- join: mark4 joined #forth 07:31:47 --- quit: tabemann (Ping timeout: 250 seconds) 08:14:34 --- join: xek_ joined #forth 08:14:49 --- quit: xek (Ping timeout: 240 seconds) 09:36:11 --- quit: mark4 (Quit: Leaving) 09:38:31 --- quit: fftww (Ping timeout: 265 seconds) 09:42:33 --- join: fftww joined #forth 09:46:55 --- quit: fftww (Ping timeout: 245 seconds) 10:03:20 --- join: f-a joined #forth 10:06:55 --- quit: dys (Ping timeout: 250 seconds) 10:13:18 --- join: fftww joined #forth 10:16:28 --- quit: fftww (Read error: Connection reset by peer) 10:17:06 --- join: fftww joined #forth 10:21:45 --- quit: siraben (Read error: Connection reset by peer) 10:21:51 --- quit: nonlinear[m] (Write error: Connection reset by peer) 10:21:52 --- quit: alexshpilkin (Read error: Connection reset by peer) 10:21:56 --- quit: jimt[m] (Write error: Connection reset by peer) 10:43:57 --- join: WickedShell joined #forth 10:45:28 --- join: xek__ joined #forth 10:47:37 --- quit: xek_ (Ping timeout: 240 seconds) 10:51:34 --- quit: fftww (Ping timeout: 250 seconds) 11:20:00 --- join: pareidolia joined #forth 11:33:48 --- join: pareidolia_ joined #forth 11:34:01 --- quit: pareidolia (Ping timeout: 250 seconds) 11:40:54 my outer interpreter is dangerously close to being useful: https://social.tchncs.de/@jookia/103137961181511837 11:46:27 excellent Jookia 11:47:25 :D 11:48:35 it's going to be fun writing the classic comment word 11:51:10 are you planning to writing with the interpreter you are developing? 11:53:37 what do you mean? 11:54:05 i think i'm going to have a bootstrap interpreter that reads some boot code from memory, and have that define a proper interpreter 11:54:14 ok, awesome 11:54:54 is that normal? because it feels a bit redundant 11:55:33 I am not a forth expert myself! 11:55:49 i'm not even a forth beginner :P 12:00:49 --- quit: gravicappa (Ping timeout: 240 seconds) 12:13:24 --- join: fftww joined #forth 12:16:45 --- quit: fftww (Read error: Connection reset by peer) 12:21:45 --- quit: f-a (Quit: leaving) 12:34:00 --- join: fftww joined #forth 13:34:45 --- join: dave0 joined #forth 13:55:09 --- join: retroforth-bot joined #forth 13:55:17 --- quit: retroforth-bot (Remote host closed the connection) 14:00:45 --- join: X-Scale` joined #forth 14:01:21 --- quit: X-Scale (Ping timeout: 250 seconds) 14:01:22 --- nick: X-Scale` -> X-Scale 14:15:23 --- quit: pareidolia_ (Quit: ZNC 1.7.3 - https://znc.in) 14:23:26 --- join: jedb_ joined #forth 14:25:39 --- quit: jedb__ (Ping timeout: 240 seconds) 14:28:16 --- join: pareidolia joined #forth 14:35:17 --- quit: X-Scale (Ping timeout: 265 seconds) 14:39:29 --- join: X-Scale joined #forth 15:11:50 --- join: jedb__ joined #forth 15:14:13 --- quit: jedb_ (Ping timeout: 246 seconds) 15:20:40 --- quit: pareidolia (Ping timeout: 245 seconds) 15:27:22 --- quit: xek__ (Ping timeout: 252 seconds) 15:33:24 --- quit: chunkypuffs (Remote host closed the connection) 15:34:13 --- join: pareidolia joined #forth 16:02:27 --- join: chunkypuffs joined #forth 16:36:15 --- join: TonySidaway joined #forth 17:12:14 --- quit: ovf (Ping timeout: 252 seconds) 17:14:56 --- join: ovf joined #forth 17:40:25 --- join: tabemann joined #forth 17:41:23 --- part: tabemann left #forth 17:42:16 --- join: tabemann joined #forth 17:59:56 --- quit: proteus-guy (Read error: Connection reset by peer) 18:00:22 --- join: proteus-guy joined #forth 18:02:13 --- quit: tabemann (Ping timeout: 246 seconds) 18:02:42 --- join: ryke joined #forth 18:18:04 --- quit: proteus-guy (Read error: Connection reset by peer) 18:18:24 --- join: proteus-guy joined #forth 18:34:21 --- quit: proteus-guy (Ping timeout: 276 seconds) 19:07:52 --- join: farcas82 joined #forth 19:08:06 --- quit: TonySidaway (Quit: TonySidaway) 19:14:13 --- quit: ryke (Ping timeout: 250 seconds) 19:25:14 --- join: retroforth-bot joined #forth 19:31:41 --- quit: retroforth-bot (Remote host closed the connection) 19:46:04 --- join: rdrop-exit joined #forth 19:50:09 --- join: tabemann joined #forth 19:56:35 you know what would be interesting? a forth you could run from irc 19:56:59 : hi ." hi" ; 19:57:01 hi 19:57:28 a forthbot ? 19:57:39 yes! forthbot! 19:58:09 hi 19:58:10 you could code without leaving irc :-) 19:58:41 and now i gotta go.. brb 19:58:54 no worries 20:04:44 hey guys 20:04:59 the problem is that that'd be horribly insecure 20:05:12 consider people being able to directly ! into the forthbot's address space 20:05:25 you'd need to sandbox the forthbot 20:05:38 so you can't affect the system it runs on 20:06:45 tabemann, hi! 20:07:05 tabemann, yeah wouldnt pay for it to control a robot with a gun 20:07:19 I'm modifying hashforth so it can support optional preemptive multitasking 20:07:39 I'm not bothering with locks but rather added the words begin-atomic and end-atomic, which are self-explanatory 20:08:02 tabemann, about 12 years ago my then wifi supplier put a wifi accesspoint webpage online so potential clients could see and play with the configuration 20:08:33 and what happened... 20:08:34 tabemann, in about 3 weeks the online device was bricked permanently 20:08:47 I figured 20:09:23 so I set one up at my IP but with a reverse proxy, and I substituted the "upgrade firmware" page with a screenpic of the real one 20:09:35 hehe 20:10:38 the occasional person tried to upgrade it to wrong firmware on purpose I guess 20:10:42 it's stupid to make a device that is not unbrickable (i.e. having unwritable ROM that provides an inital bootloader which can under any circumstances still load new code into the secondary flash) 20:10:58 they must have work out their mouse clicking on the 'upgrade' button 20:11:40 agreed, but common on cheap junk designed in china 20:11:49 work = worn 20:11:58 yeah 20:12:24 ten again the infamous WRT54G wifi router designe by Linksys had the same problem 20:13:39 that cheap wifi unit I put live on line with the reverse proxy was never bricked and it was online for about 3 years 20:14:30 hehe, in fact it was a customer return that was claimed to lock up intermittently, so I could say that it was tested every day by anonymous users 20:15:04 apparently there is a version of OpenWrt named "Attitude Adjustment" 20:15:20 one doesnt have to be a genious to avoid getting hacked, all it takes is not being stupid 20:15:30 there is, it's ancient 20:15:44 I havent used any of tat old crap for over a decade 20:17:04 tabemann, youre building a monster forth! 20:17:39 i made a secure python IRC bot once 20:17:44 that could run arbitrary python code 20:18:08 maybe i'll do that with forth 20:18:40 --- join: nighty- joined #forth 20:19:11 * tp is adding high speed serial and hardware handshaking to Forth for a STM32L071 today 20:19:33 nice 20:20:08 the thing is that I have to go through all my code and figure out all the places that need begin-atomic/end-atomic 20:21:10 --- quit: nighty- (Remote host closed the connection) 20:23:19 tabemann, but yours is in C not assembly ? 20:25:02 yes 20:25:17 but I mean my Forth/machine Forth code 20:25:34 because as it stands, it is not preemption-safe 20:27:29 i think it's time for a big refactor of my forth junk before i finish up the outer interpreter 20:27:36 my assembly language seems to have reached its limit 20:27:49 my C interpreter is also outputting trash assembly 20:29:09 very exciting though 20:32:04 Jookia, yeah, working on Forth stuff is very addictive I find 20:32:06 --- quit: Keshl_ (Quit: Konversation terminated!) 20:32:43 tp: i posted a screenshot earlier showing it off: https://social.tchncs.de/@jookia/103137961181511837 20:33:56 Jookia, yeah I saw the link but cant look at that kind of stuff as my internet account is throttled until the 25th 20:34:09 oh, yikes 20:34:10 irc is ok tho 20:34:15 hopefully i'll have something good by the 25th 20:34:37 i think i need a better set of macros for my assembly stuff if i'm going to have dictionary entries for builtin types 20:34:43 well youre new to Forth and stuff takes time 20:35:20 Forth is far, far from trivial 20:35:30 it's the simplest language isn't it 20:36:02 I don't know 20:36:03 c[] hola fortheros 20:36:18 g'day Zen Forth Master! 20:36:28 I have to nap for now, ciao 20:36:40 cya 20:36:41 likewise Master Technician 20:38:41 simplicity is hard 20:38:57 so true 20:39:02 hardest of all 20:39:32 I can crank out a complex solution anyday 20:41:45 "The present letter is a very long one, simply because I had no leisure to make it shorter." -- Blaise Pascal 20:42:12 I wrote a solution in Perl once and worked all day and most of the night. I few months later I went to add something to it and it broke, I had a hard look at my code and realised everything was wrong including the design, so I rewrote it from scratch in a couple of hours and it much smaller, neater, prettier and worked 20:42:17 hahahah, so true 20:43:24 which is pretty much how I write forth, first solution is one to throw away, 2nd is better, third is ok 20:44:04 You don't understand a problem until you can simplify it -- C.Moore (from Thinking Forth) 20:44:18 so true 20:45:21 I often feel that Forth is rewiring my neurons to be more effective 20:45:52 I'm not happy with *any* solution, I want a simple one, thats always my goal 20:46:28 naturally the complicated ones always present themselves first 20:47:00 back 20:47:08 welcome back! tabemann 20:47:53 Sometimes Forth is a pain, I can't be satisfied with a sloppy bloated solution in Forth, while other languages are more forgiving 20:47:59 ugh, 'modern' innovations 20:48:15 right now I'm on a fool's errand to add atomic blocks to hashforth 20:48:20 the implementation is very simple 20:48:27 ick 20:48:30 rdrop-exit, but that only illustrates that Forth isnt the answer for *everything* ? 20:48:32 the problem is finding every place in which they are needed 20:48:59 Forth is not the answer if you want to throw some throway code together 20:49:18 the point of it is that a PAUSE can cause a lot of problems when in the wrong place 20:49:29 Something like AWK is much better for that 20:49:35 in 2014 I was certain I'd never write a word of Forth for a pc application ... now I'm less sure 20:49:51 and as I plan on adding an *optional* preemptive multitasking functionality (literally just having the timer interrupt call PAUSE) 20:50:06 double ick 20:50:56 --- join: Keshl joined #forth 20:50:59 tabemann, ten when you make a autonomous e-vehicle control system, you can hook the Watchdog to that same timer ! ;-) 20:51:08 :D 20:51:55 and then we'll blame old people for running down pedestrians, even though the vehicles are supposed to be autonomous! 20:52:08 heheh, always blame the oldies! 20:52:31 Ive never felt so targeted by car drivers as I have this year 20:53:01 what is it about a old guy on a pushbike that makes car drivers want to cut him off ? 20:53:34 theyre lucky we cant concealed carry here 20:53:36 I've never been a fan of car drivers even though I am one of them 20:54:01 tabemann, same, at least I'm a relaxed car driver 20:54:39 and a even more relaxed cyclist 20:54:54 I am probably one of the more mellow car drivers myself, except for the times when I'm on a two-lane highway and I'm driving the exact same speed as the guy next to me, just to piss off all the drivers stuck behind us 20:55:02 i bought a recent STM32L072 Nucleo board 20:55:29 I've heard the DISCOVERY boards are better than the Nucleo board w.r.t. quality 20:55:36 definitely 20:56:00 but theyre all way better than Chinese cheap boards 20:56:10 --- quit: pareidolia (Ping timeout: 246 seconds) 20:56:55 the problem with the Nucleo is it has the ST swd-link V2 firmware 20:57:25 I've heard bad things about those Chinese "blue pill" boards 20:57:31 and as tech moves forward people have to add stuff that tries to make things 'easier' 20:57:41 lol, probably from me 20:57:50 --- join: pareidolia joined #forth 20:58:35 blues pills are definitely worth under $2 if you dont mind old tech that may be faulty, cloned or fake 20:59:15 whats a cup of coffee cost you tabemann ? 20:59:30 more than a Blue Pill I bet ? 20:59:50 what is your sanity worth? More I bet ;) 21:00:12 exactly 21:01:18 oops the nucleos have swd-link V3 now. V2 was fine 21:02:12 V3 assumes everyone uses windows and that to flash a Nucleo they want to drag and drop a binary file into a fake usb storage device belonging to the Nucleo board 21:02:41 ick 21:02:45 which then goes and flashes itself ... or not 21:03:04 ick is right 21:03:38 luckily the old method of using openocd to talk to the V2 sed-link works fine 21:03:43 swd-link 21:04:09 and the serial bootloader still works 21:07:50 back again 21:07:58 wba 21:08:00 from what I can tell, micropython started this trend of using a psuedo bulk storage drive to flash boards 21:08:31 cause it's hip, no nasty software is required, just DND ! 21:18:20 for some reason, Python seems particularly un-embedded 21:18:30 so the idea of MicroPython seems awfully weird to me 21:19:16 --- quit: farcas82 (Ping timeout: 246 seconds) 21:20:57 it has some major differences to Forth 21:21:22 1) much bigger. uPython = 256KB, Forth = 20KB 21:21:41 2) at least 30x slower than Forth on the same embedded hardware 21:21:58 not very micro indeed 21:22:06 maybe milli instead? 21:22:17 MilliPython? 21:22:35 3) The Python GC requires regular cpu time which can be a disaster for a realtime MCU controller 21:22:41 hehe 21:22:49 GC on a MCU WTF? 21:23:03 it's Python, after all 21:23:12 hence uPython wont run on Cortex-m0 because flash - 64KB 21:23:29 Still haven't looked into Python, I might never bother 21:23:41 so uPython usually runs on cortex-M4's at 200 MHz or more 21:24:03 Python is good for quickly cookingup scripts where you don't really care about how fast they are or how much memory they use 21:24:21 That's what I do with AWK 21:24:28 as a result python on embedded = more expensive, useless for battery power, ore heat 21:24:44 more heat 21:25:26 but !!!! ... you do get to DND those pesky binary files with Python 21:25:32 lol 21:26:12 seriously tho, uPython is pretty slick, it sells hardware 21:26:32 I've given up on the smartphone generation 21:26:41 and Python is God's own Programming Language, just ask her ? 21:27:39 rdrop-exit, is that the "smart" phone generation ? ;-) 21:27:53 * tabemann owns a smartphone 21:28:12 * tabemann for a long time owned a dumbphone though 21:28:36 yup, they keep tripping over my dogs 21:28:45 tabemann, i certainly wont hold that against you 21:28:48 however, the dumbphone started literally falling apart, and faced with the obvious utility of smartphones... 21:29:09 yeah, smartphones are awesome, same as smart watches 21:29:28 sadly my smartwatch watch band is broken :( 21:29:36 I only carry a smart phone when I take a flight 21:30:20 rdrop-exit, ... and a charger, comeon, fess up! 21:31:05 * tp has been fasting today and my stomach is trying every trick to get me to eat atm! 21:31:34 my dumb phone lasts many weeks on a charge 21:32:05 96,46 F at my desk atm 21:32:35 phew 21:32:39 rdrop-exit, thats good, but also having a GPS facility can be very handy 21:33:30 everything is a compromise 21:34:06 I have a compass :) 21:34:13 143 days on a charge 21:34:33 https://www.philips.com.ph/c-p/CTE181BK_71/xenium-mobile-phone#see-all-benefits 21:36:00 quad-band dual-sim that's all I care about 21:36:43 --- quit: dddddd (Remote host closed the connection) 21:36:56 wow 21:37:07 go west young rdrop-exit ! 21:37:59 X marks the spot 21:38:45 so 143 days on a charge in a advert results in what, a month in real life ? 21:39:45 I hardly use it, I usually charge it once a month, it usually still has two bars when I do 21:40:07 I've never had it run out 21:40:51 Sometimes my wife uses it to charge her phone when we're out 21:42:00 My needs are simple 21:42:21 Cost me PHP 4,500 21:42:42 2 or 3 years ago 21:43:03 (88 USD) 21:43:30 Sorry, PHP 3,990 21:43:49 ($78 USD) 21:44:16 I'm going to hit the sack shortly, as I have work in the morning 21:44:29 hi ho hi ho 21:45:10 I'm going to have a very late lunch, catch you later 21:45:19 g'night guys 21:45:36 goodnight tabemann 21:50:31 --- join: gravicappa joined #forth 23:59:59 --- log: ended forth/19.11.14