00:00:00 --- log: started forth/19.11.18 00:02:59 https://www.youtube.com/watch?v=ozF7hxo-FlQ 00:08:28 --- quit: SysDsnEng (Quit: SysDsnEng) 00:08:51 I think it could well 'crush arm' in many areas 00:10:04 i mean I can buy a brand new device with oled, 2 switches, usb, microsd slot for $4 so the mcu must be $0.50 or less I guess 00:11:27 thats getting down there with the ST cortex-M's I have, and a lotc cheaper than Microchip SAM devices especially the PIC32 which is based on the same ARCH as the RISC-V 00:12:05 I guess the GD32VF103 is probably going to hammer PIC32 most 00:14:05 probably 00:14:40 plus microchip-atmel oss support has never been great anyway 00:14:59 --- quit: jsoft (Ping timeout: 240 seconds) 00:17:00 --- join: mtsd joined #forth 00:17:44 I bet they sell 10's of millions of the longan-nano board at the price it is now 00:18:08 that alone is going to get the chip everywhere, almost like free advertising 00:20:13 At some point I'll get off my ass and write a RISC-V assembler vocabulary 00:20:38 youve got more energy than me! 00:20:57 comes from being younger no doubt ;-) 00:22:04 assemblers are usually fairly trivial in Forth (except for the last 20 years of x86, which I wouldn't bother with) 00:23:35 Ive ported my temperature sensor code to the blue pill, so it's pretty much ready for the GD32VF103, so that means I can easily make a tiny relative humidity guage with one, including the OLED display 00:24:13 cool 00:24:31 parts would probably cost $15 including a pc fan, sensors and a wal wart psu 00:25:00 and the longan-nano of course 00:25:36 onit would use wet/dry bulbs and power up the fan before taking measurements 00:25:48 probably work pretty well 00:26:23 the fan is required? 00:26:52 yeah, need to suck local air over the bulbs to get a accurate reading 00:27:29 makes sense 00:28:06 the 'manual' units come on a handle and one swings the sensor around and around while walking about to get a accurate reading 00:28:39 funky 00:28:56 it will make a nice Forth project for the longan-nano I think 00:29:53 Mecrisp-Stellaris for it is still in the experimental stage, Matthias is still tyring to get the interrupts sorted out 00:31:22 --- join: SysDsnEng joined #forth 00:31:33 how did you test the accuracy and precision 00:32:26 hope and prayer ? 00:32:36 --- quit: SysDsnEng (Client Quit) 00:32:53 :)) 00:33:02 using a laser calibrated temperature sensor accurate to 0.3 degrees C is probably a good start 00:34:10 the LMT01 id very impressive, multiple units touching each other agree within 0.1 C here and if they were in a thermally insulated container I dont dount they be within 0.3 00:34:20 I mean 0.03 00:34:55 after that, it's just the use of already available lookup tables for RH 00:35:16 and making sure one gets adequate airflow over the sensors before a reading 00:35:57 I meant did you test it against another (independent/external) device 00:37:41 some sort of benchmark device to compare to 00:38:06 I havent made one yet 00:38:14 it's project #999 00:38:50 :) 00:38:53 Id compare it to the published hourly RH for my area vi athe weather service 00:39:34 thats bound to be close enough, it's only a hobby project for people to build, not something I'd sell 00:40:05 fair enough 00:40:22 if I was really OCD about the accuract I could take it to the airport where the actual weather service device is and compar the readings 00:41:01 it will have a fan drawing air over the bulbs also 00:42:10 lol, put it in the fridge freezer to check 0% RH 00:42:17 :)) 00:47:16 here is a LMT01 hard at work with Forth right now ... 75,87 F 00:48:12 be similar or maybe more for you ? .. 24,43 C ? 00:48:42 32C and expecting rain shortly 00:49:05 then 99% RH ? 00:49:19 The "feels like" is 36C 00:49:25 ouch 00:50:02 --- quit: mtsd (Remote host closed the connection) 00:50:05 it's still 44C here in some parts of Australia 00:50:09 right now 00:50:27 --- join: mtsd joined #forth 00:50:54 ouch, siesta weather 00:50:58 my RH is 56% 00:51:48 we're expecting another tropical storm before the week is over 00:52:46 we aren't :( 00:53:04 no rain forecast but a min of 35C for the next 7 days here 00:53:29 hopefully we may get some storms, but nothing forecast 00:56:08 I dl and installed the latest FreeBSD 12.1 release today, utterly easy including a ZFS bootable filesystem 00:56:44 almost nothing needed to be entered except the root and user passwords 00:57:20 it's ease of install rivals anything else, and is probably way faster than most to BASE stage anyway 00:59:22 I had a box with FreeBSD on it about 10 years or so ago. 00:59:58 --- join: xek joined #forth 01:02:49 you use a mac now ? 01:03:37 Yes 01:04:28 --- join: SysDsnEng joined #forth 01:04:28 --- quit: SysDsnEng (Client Quit) 01:05:35 I got 3 free macs, 2 notebooks and a desktop, gave the notebooks to two of my kids. 01:06:35 nice 01:06:57 I know the FreeBSD devs all use macbooks for code development 01:07:23 MacOS has FreeBSD code in it IIRC 01:08:13 It's POSIX which is all I care about 01:09:27 yeah, that was a smart move by apple 01:09:54 you may be interested in "pandoc" as a utility for your Latex documentation 01:10:01 Ive ben playing with it 01:10:28 it's a floss doc conveter, and very good 01:10:51 just a sec, phone ringing 01:11:01 no problemo 01:12:54 I'm just doing it all by hand with LaTex, I'm wary of automated tools for docs 01:13:57 sure and rightly so 01:14:33 latex is always done by hand, I mentioned Pandoc because it does a nice job converting formats 01:14:51 I'll check it out, thanks 01:15:46 I used Pandoc because I hand author *.md (markdown) docs for my project docs, which is then used by Fossil SCM and rendered as html in the management server 01:17:02 but I dont have a generic MD viewer, only the Fossil system. I use Pandoc to render generic MD to html so I can see what others will see if they have MD viewers 01:17:51 when Irelease a project tarball, the doc file is in MD format 01:19:22 My intent is to produce a single pdf manual and that's it. 01:20:30 my intent is to acquire health, happiness and a million dollars ;-) 01:21:02 Maybe 3 parts, using the host, talking to targets, and internals. 01:21:22 but should you at some point get asked if you have a html version, do remember "pandoc" :) 01:21:54 ok :) 01:23:04 it's probably in the apple ecosystem anyway, just renamed to 'The awesome apple DOC converter" 01:26:34 I don't use any of Apple's GUI based development thingies, just the run of the mill POSIX command line oriented stuff 01:30:32 The homebrew installer works great for getting the latest versions of all the unix tools 01:31:26 shame the guy heading the homebrew project is a twat 01:31:38 complete wanker 01:31:44 I did not know that 01:32:11 just a really defensive, smug, childish grown adult male 01:32:17 I've not had to deal with him personally in any way 01:33:19 unrelated outburst: over 01:33:34 back to the Forth, I didn't realise this was a live conversation I was interrupting 01:33:35 what .. so hes like most geeks ? 01:34:03 WilhelmVonWeiner, no the conversation was heading to a dead end 01:35:37 kids nowadays 01:35:47 :) 01:36:37 :) 01:55:27 --- join: dave0 joined #forth 02:37:02 --- join: farcas82 joined #forth 02:54:18 hah, a very vocal anti Forth poster on a forum I frequent just got banned for breaking forum rules (after many warnings), can't said I'll miss the C zealot. 02:55:26 what was his beef with Forth? 02:56:04 it wasnt C I think 02:56:21 :)) 02:57:04 all the usual anti forth stuff you have heard 10ee99 times already 02:59:33 rdrop-exit, it's a crazy world, C people claim that Forth is complicated and 'write only'. I use the basic chip data to make my Forth programs after parsing the CMSIS-SVD with a XML processor to generate all my Forth Words, the same way that C compiler makers do 03:00:00 generate all the *memory mapped* Words I mean 03:01:09 the C people then go on to make these complex API structures that attempt to make low level "easy", but in so many ways, these API's look just like low level Forth Words 03:01:35 yet they add a massive level of complexity to the compiler support files 03:02:03 AND they are hard to find in the documentation because the syntax is critical 03:02:49 It's never bothered me that Forth isn't more popular 03:02:58 openCM3 is a C library for Gcc arm micros, and it's just horrific to navigate being created by Dozygen 03:03:35 same here, in fact Im glad Forth isnt popular. I dont mean a bit glad, I mean MASSIVELY glad 03:04:01 being popular in my experience ruins everything 03:05:12 Im not on a quest to make Forth popular, I try to produce doc to assist existing Forth users and appeal to people who would love Forth if only they knew about it 03:05:26 kudos for that 03:05:47 and that percentage will always be small, for which Im, very glad 03:07:07 Id have been using Forth since 1776 if only I knew about it. I'd never have used anything else in my embedded career, and it would have helped my earning capacity a LOT 03:07:35 Forth is a secret weapon in the right hands 03:07:48 exactly 03:09:59 and while I cant make a Freebsd if it ever becomes "popular" and is ruined (like Linux on the desktop), I can always build my own Forth (with a LOT more experience) and no one can stop me from benefiting from it 03:12:24 right on 03:12:55 that makes Forth a special kind of tool in my opinion 03:13:53 not just a tool but a body of knowledge for making tools 03:14:03 is FreeBSD every becomes ruined by popularity, I'll just move to openBSD 03:14:25 I want to try NetBSD next 03:15:01 'a body of knowledge for making tools' ? that's not something I've considered or that has occurred to me as yet 03:16:25 when I went to the FreeBSD IRC channel in 2016 after Systemd had infected Linux and I announced I was a "linux refugee", the comments were, 'not another one!" 03:16:40 :) 03:18:49 The goal was very simple: to minimize the complexity of the hardware software combination. As far as I can see no-one else is doing that. (Charles H. Moore) 03:19:09 Hello folks 03:19:14 I remember whan Linux started gaining traction and millions of Windows users started appearing on the Linux forums. Most Windows users were there because they heard that Linux was free, stable and virus free, sadly "free" was the worst reason to jump to Linux because those people immediately started trying to make Linux a 'free' version of Windows 03:19:18 hi mtsd 03:19:32 hiya mtsd :) 03:19:59 mtsd -9 in Sweden today ? 03:20:13 I just saw your discussion, and I agree. Popularity and quality are often at opposite ends of the spectrum :) 03:20:40 23,62 C @ 10:30 pm in NSW, Australia 03:21:03 It is actually +6 where I am. But about -9 in the north 03:21:06 mtsd, sadly true 03:21:51 but 'such is life' ! 03:22:34 I am not a Forth expert, but I think the language is very focused. It does not try to solve every problem for every person. But gives people the tools to find the best solution for their particular case 03:22:41 Something like that.. 03:22:51 correctamundo! 03:23:02 well said! 03:23:17 Thanks 03:24:14 I mean, my own solutions change over time. I learn more about the problem at hand, and can discard the initial version. Build a better one when I know more 03:24:21 When I met "Mr Forth", it said to me, "Terry, from this point Forth you can have anything you can imagine, and have the skills to build" 03:25:06 my limitations have been those of imagination and ability, not much else 03:25:13 Yes. The skills and imagine parts are very important. And we have to work on those parts ourselves. No one can do that for us 03:25:32 do true 03:25:37 so true! 03:25:55 Just like running. You have to run every single step when training for a marathon. But also, you are the one who benefits. No one else 03:27:39 when I came to small embedded forth, everyone used a slow 115200 baud terminal (or slower) and mostly typed in programs by hand with some clunky uploading of programs by using 200 millisecond End of Line Delays so the on chip compiler didnt choke. This did not work for me 03:27:55 mtsd, 100% accurate :) 03:28:37 I like to think about that, especially when I feel stuck. 03:29:27 Im sure that programmers with Eidetic memories and 200WPM typing skills had no problems with the old way, but I'm average and I found it unusable 03:31:04 mtsd, I wrote a rant about 'reinventing the wheel' that you may get a laugh from : https://mecrisp-stellaris-folkdoc.sourceforge.io/rants.html?highlight=rants#reinventing-the-wheel 03:32:23 if someone asked me, 'what is the greatest limitation in ones life' I'd now reply 'the mind', and no matter how they asked that question or how many times, I'd answer the same way a million times 03:32:38 .. 'the mind' 03:35:00 very good 03:35:04 Good rant, tp! I liked reading that 03:36:17 mtsd, :) 03:38:18 It might seem very attractive to start pulling in libraries. It looks like you are moving forward at a great pace 03:38:38 But one day, you face a problem the library does not solve. And you are on your own 03:38:54 exactly 03:39:23 and it may be the kind of problem that is un-solvable for the library user 03:40:29 perhaps a bit not set properly way back at the beginning under tens of kB of code, because the library writer made a mistake, was sloppy or whatever 03:40:54 this problem didnt show up until later when other libraries used it 03:41:19 and the peoplem only occurred under rare and specific instances 03:42:25 Yes, something like that shows up. And you have no idea how the library goes about doing what it does. And no deep knowledge about the problem either, because you never really studied it, just glued libraries together 03:42:33 this is real embedded emgineering and these 'bugs' can last forever, with only the occasional person being killed by it ... 03:43:02 Interesting, I see similar things in the world of web applikations. 03:43:35 Everyone uses large frameworks, things are left as the developers move on to the next big, hip and cool thing 03:44:17 I joke to tabemann that he 'ties his watchdog reset to his system timer' and we have a good laugh about it, bit Toyota did exactly that in a Camry EMU design, and people dies because critical systems failed while driving 03:44:20 Things break all the time. It has all become too complicated. Too brittle 03:45:20 Yes, the Toyota case.. 03:45:26 vulgarization To disseminate widely; popularize. To make vulgar; debase. 03:45:59 one poor woman was killed when her Camry suddenly accelerated out of control and nothing she could do would stop the car. Toyota blamed 'driver error' but it was later proved that their EMU allowed critical systems to fail and yet continued to run 03:46:21 rdrop-exit, perfect! 03:46:21 Terrible... 03:46:45 The Toyota thing. Not what you wrote, rdrop-exit 03:47:00 :) 03:47:13 the Toyota EMU C code had something like 70,000 global variables 03:47:52 I think I read the report? Wasn't Philip Koopmann involved in looking at the code? 03:48:04 I think so 03:48:29 that's his specialty 03:49:11 he was 03:49:16 it was sobering 03:49:36 it changed how I think about embedded design, even in Forth 03:50:24 and oddly I had just finished designing and testing a Forth motor controller for a handicapped person electric vehicle! 03:51:13 I can see his "Better Embedded System Software" on my shelf from where I'm sitting 03:51:31 unlike the Toyota however the vehicle is limited to about 15 kph, but still fast enough to kill the driver under certain circumstances 03:51:31 also his Stack Computers book 03:52:19 I used to make 'flying guilotine" controllers, which can kill a man if not safe 03:53:06 I once visited the Milton Bradley games factory 03:53:15 Ive made my fare share of 'safety critical' systems and some were outright dangerous, it's a miracle no one was killed 03:53:34 They had puzzle cutting machines that were like a century old 03:54:14 The operators had special bracelets, 03:54:16 such as jigsaws ? 03:54:36 I cant remember the names of those games, still made I think 03:54:38 for jigsaw puzzles, yes 03:54:42 a puzzle 03:55:12 as the blades came down to slice up the puzzle board, 03:55:26 Ive seen maimed workers and even had to fix the gear that maimed them 03:55:44 a rope and pulley rig would pull up their arms over their heads 03:55:51 wow 03:56:00 pretty cool 03:56:30 who here has seem a picture of a factory from the 1800's ? 03:56:32 they did this all day, place a board, and have there arms raised 03:57:08 once, the sign of a successful millionare was that his factory HAD A ELECTRIC MOTOR 03:57:19 not thousands of motors, just one 03:57:23 a big one 03:57:33 cool 03:57:57 belts and shafts carried the power from that ONE motor all over the factory 03:58:36 and machine operators would stand all day right next to massive belts flying past all day 03:59:05 the terms "de gloving" and "scalping" were all too common 03:59:26 as workers caught in the belts were killed or maimed 03:59:30 https://www.youtube.com/watch?v=NkQ58I53mjk 03:59:59 this no doubt gave rise to your "a rope and pulley rig that would pull up their arms over their heads" 04:00:10 early OH&S ;-) 04:00:35 right :) 04:03:19 bbiab 04:04:37 no problemo 04:18:41 --- quit: rdrop-exit (Quit: Lost terminal) 04:38:20 --- quit: pareidolia (Read error: Connection reset by peer) 04:39:09 --- join: f-a joined #forth 04:39:54 --- join: pareidolia joined #forth 04:42:15 --- join: SysDsnEng joined #forth 04:50:19 --- join: proteus-guy joined #forth 04:58:52 --- quit: dys (Ping timeout: 252 seconds) 05:06:51 --- quit: SysDsnEng (Quit: SysDsnEng) 05:19:48 --- join: SysDsnEng joined #forth 05:21:43 --- quit: SysDsnEng (Client Quit) 05:34:01 --- quit: dave0 (Quit: dave's not here) 05:48:45 --- join: dys joined #forth 06:06:13 --- quit: djinni (Ping timeout: 265 seconds) 06:06:59 --- quit: ryke (Ping timeout: 240 seconds) 06:07:26 --- join: djinni joined #forth 06:17:45 --- quit: iyzsong (Ping timeout: 245 seconds) 06:41:30 --- quit: dys (Ping timeout: 265 seconds) 06:51:37 --- join: dddddd joined #forth 06:55:37 --- quit: mtsd (Ping timeout: 240 seconds) 06:59:12 --- join: mtsd joined #forth 07:10:22 --- quit: mtsd (Quit: Leaving) 07:11:30 --- quit: farcas82 (Ping timeout: 276 seconds) 07:15:32 --- join: farcas82 joined #forth 07:33:42 --- quit: f-a (Ping timeout: 265 seconds) 07:35:12 --- join: f-a joined #forth 07:41:12 --- quit: tabemann (Ping timeout: 250 seconds) 07:42:29 --- join: dys joined #forth 08:44:25 --- quit: proteus-guy (Ping timeout: 240 seconds) 09:45:50 --- join: WickedShell joined #forth 10:11:55 --- quit: f-a (Read error: Connection reset by peer) 10:27:09 --- quit: dys (Ping timeout: 276 seconds) 10:43:33 --- part: farcas82 left #forth 11:48:52 * crc has added a signature for the 2019.10 release of retro to the release page at http://forthworks.com/retro/ ; future releases (starting with 2020.1) will be signed and include the key for the next release in the source package 11:50:09 Woo! 11:50:17 That was fast 11:51:17 Having things be added to software like that usually talks a month of debate :\ 11:52:57 --- join: jsoft joined #forth 11:55:59 --- quit: gravicappa (Ping timeout: 240 seconds) 12:09:56 Jookia: this is one time where being a small project is a good thing :) 12:10:20 yeah 12:11:41 --- join: dys joined #forth 12:30:25 --- quit: jsoft (Ping timeout: 240 seconds) 12:41:23 plus Forth people get stuff done, Forth is all about doing :) 12:57:38 --- join: ryke joined #forth 13:04:12 --- join: TonySidaway joined #forth 14:14:13 --- quit: ryke (Ping timeout: 250 seconds) 14:15:24 --- join: ryke joined #forth 14:27:26 --- join: jedb_ joined #forth 14:30:20 --- quit: jedb__ (Ping timeout: 265 seconds) 14:41:59 --- quit: X-Scale (Ping timeout: 240 seconds) 14:47:49 I'm not a forther, really. Could somebody who is one answer this question? 14:48:54 Say I'm on an old-time PDP-11. Bye 14:49:00 Sorry 14:49:50 Byte machine, 16-bit registers and supports 16-bit words. But ... 14:51:24 the machine addresses are byte addresses. So if you push a register on the return stack (R6) the value of R6 is reduced by 2. 14:53:55 Byte operations are supported, but as the registers and the native address bus are all 16 bits wide the assumption is that nearly everything occupies two memory locations. 14:55:04 Sometimes in any language you need to address bytes (ASCII characters for instance). 14:57:26 How does Forth address this? I seem to recall that in Learning Forth there was a word called CELLS which (I assume) scaled the TOS to the native addressing of the machine. Is that correct? 14:58:10 I don't think CELLS is ever defined properly in Learning Forth. 15:02:19 A lot of operations in Forth have character equivalents, where a character is usually the smallest unit of memory addressable 15:04:25 --- join: TonySidaway_ joined #forth 15:04:25 --- quit: TonySidaway_ (Client Quit) 15:04:34 CELLS will just take a number and push that number * the size in bytes that a CELL in that Forth system occupies 15:04:35 --- join: TonySidaway_ joined #forth 15:06:46 I really should look at the Forth Standard more often. 15:06:51 http://forth-standard.org/standard/core/CELLS 15:07:11 I don't suppose you caught my last message lol 15:07:37 --- quit: TonySidaway (Ping timeout: 240 seconds) 15:08:01 ryke, thanks for that. It's what I suspected, but you're 15:08:44 but your response prompted me to check the standard. 15:10:57 Yeah, considering the age language, the standard is pretty easy to digest 15:11:09 or at least forth-standard.org makes it easy 15:11:15 I'm adapting a Forth-like language that has some features I really like but is rather extravagant in its use of memory. 15:12:32 What's it look like? 15:12:34 Retro12. I want it to work on really tiny microcontrollers. 15:13:22 Oh yeah, Retro is really neat 15:14:06 I don't know what its footprint looks like though 15:14:55 --- quit: TonySidaway_ (Quit: TonySidaway_) 15:15:32 --- join: dave0 joined #forth 15:19:03 I've been wanting to try my hand at implementing quotations in my own Forth 15:29:37 --- quit: ryke (Ping timeout: 240 seconds) 15:32:14 --- quit: jn__ (Ping timeout: 268 seconds) 15:33:31 --- join: jn__ joined #forth 15:42:22 --- join: jn___ joined #forth 15:45:44 --- quit: jn__ (Ping timeout: 265 seconds) 16:00:49 --- quit: dys (Ping timeout: 240 seconds) 16:18:48 and retro is here! 16:19:12 retro: #2 #15 * #12 + n:put 16:19:12 42 16:37:33 --- join: tpbsd joined #forth 16:37:34 --- quit: tpbsd (Changing host) 16:37:34 --- join: tpbsd joined #forth 16:38:02 --- quit: tp (Remote host closed the connection) 16:42:54 --- join: jsoft joined #forth 16:42:55 --- nick: tpbsd -> tp 16:57:46 --- quit: dave0 (Quit: dave's not here) 17:02:15 --- join: X-Scale joined #forth 17:03:00 --- quit: jsoft (Ping timeout: 276 seconds) 17:05:51 --- join: tabemann joined #forth 17:15:31 hey guys 17:15:41 hey tabemann 17:16:07 now that I've got preemption implemented, I wonder what misguided quest I should go on next 17:17:12 hahaha, none of it is misguided! Forth is yours to do exactly as you want 17:17:59 the limit is only your imagination 17:18:25 of course what I should do next is port it to the DISCOVERY board 17:18:49 well to a Cortex-Mx more exactly 17:18:57 well yah 17:19:42 a disco board is only a Cortex-Mx mcu on a pcb with a SWD/USB interface section powered by a STM32F103 mcu 17:20:16 theres nothing in the target MCU apart from the standard ST serial bootloader 17:20:48 the hard part is figuring out how to do to Flash versus to RAM compilation 17:20:53 and execution 17:21:20 I'll probably need to make a number of changes to support this 17:21:26 i can run all my code forth on a bare naked mcu with no external components 17:22:21 hashforth itself shouldn't have a problem if I strip out the POSIX stuff and rework the interrupt mechanism to handle processor interrupts 17:22:22 tabemann, I have no idea how Mecrisp-Stellaris does ram/flash all I know is that theyre identical to my POV except flash is a bit slower and non volatile 17:23:04 to put code in Flash I just enter "compiletoflash" first 17:23:14 for ram it's "compiletoram" 17:23:36 otherwise it's identical for me as a user 17:23:45 yeah, I'm gonna have to do rework to support that 17:24:03 I recall the Mecrisp-Stellaris author saying that he had to do some 'tricks' to make it behave that way 17:26:19 Mecrisp-Stellaris also has no way to create arrays in ram from flash other than things like this : 17:28:50 what do you mean? 17:29:25 that code being compiled in flash cannot also include created data structures that exist in RAM? 17:31:13 bah - I'm gonna have to compile hashforth into flash on the disco board because there's no way all of hashforth is gonna fit in 128K of RAM 17:31:51 : create_buffer 17:31:51 s" 200 buffer: RAM_BUF" evaluate 17:31:51 ; 17:32:23 thats one way a Mecrisp-Stellaris user creates buffers from flash 17:32:30 and it's the only way 17:32:45 you couldn't do: 17:33:13 : create_buffer compiletoram 200 buffer: RAM_BUF ; ? 17:33:14 yeah, the most ram youll find on a disco is usually 20kB, the cortex-mo I use is only 8kB 17:33:40 the board I have has 1 meg of flash and 128K of RAM 17:34:13 : create_buffer compiletoram 200 buffer: RAM_BUF ; RAM_BUF not found. 17:34:30 tabemann, thats a M4 I imagine ? 17:34:39 yeah 17:34:39 they have MASSIVE amounts of ram and flash 17:35:42 the guy who developed the " s" 200 buffer: RAM_BUF" evaluate" is a really smart Russian, even the designer of Mecrisp-Stellaris hadn't thought of doing it that way 17:36:35 tabemann, it will be great to have someone here discussing hardware with Forth, as thats my main interest 17:37:19 sadly out of the total 42 Forth users in the world, only 3 do hardware-forth, the Mecrisp-Stellaris designer, the russian and I 17:37:39 * tabemann always thought of EVALUATE as one of those things you didn't do - even though he uses it to execute buffers full of Forth code 17:37:55 rules in Forth ? 17:37:59 lol 17:38:06 that's like rules in a knife fight ;-) 17:38:09 but I mean in computing in general 17:38:31 eval is one of those things where there's almost always a better way of doing it 17:39:11 rules are for C and C++ people, definitely Python and Lua people and most certainly Haskel and Perl people 17:39:24 not in this case 17:39:32 except you probably don't know what the rules are in the case of Perl 17:39:52 evaluate is the ONLY way to create a buffer via a program running in flash on Mecrisp-Stellaris 17:40:00 hahah, yeah you do! 17:40:17 --- quit: pareidolia (Ping timeout: 265 seconds) 17:40:21 Perl is pretty easy add handy, it's just write only ;-) 17:40:46 you can't even ALLOT in a program running in flash on mecrisp-stellaris? 17:40:48 Perl will soon advise you of the rules if youre unsure 17:41:33 I dont know 17:41:52 I rarely use allot 17:42:10 I used to use ALLOT a lot 17:42:17 hahah 17:42:21 then I implementetd a heap :D 17:42:26 I see what you did there 17:42:31 LOL 17:43:09 by default I made the heap 16 megs in size 17:43:09 youll be attracting the ZenForth Wizard if you keep this up 17:43:20 lolol 17:43:25 that's PC talk 17:43:36 my world is usually 64kB max 17:43:36 i'm taking a break form working on my forth to go write in the C mines 17:44:04 well C can be yours, I've no desire to make it mine 17:44:12 why would you want to toil away in the C mines? 17:44:13 oh i don't mean mine 17:44:17 i mean the literal mines as a place 17:44:34 Forth has literals also you know 17:44:36 tabemann: because linux and u-boot are in C and drivers are in C and everything is in C 17:44:47 it's a C party 17:45:06 yeah, i know - the core of hashforth itself is written in C 17:45:06 more like a C plague 17:45:42 so i get to write C instead of anything else 17:46:28 the 'best' part about C is how there's no metaprogramming, so you can't create nice safe abstractions 17:46:44 you're limited to #define 17:46:52 yep 17:47:08 Jookia, we are sorry to hear that but the proper place to seek C sympathy is probably the "good Samaritans suicide hotline' 17:47:26 haha 17:47:30 lol 17:47:58 oh, just for the sake of comparison, I have to deal with JavaScript and Java at work 17:48:15 i've found way too many bugs in the kernel just because the devs forgot something when writing code 17:48:48 and then never refactored it 17:49:01 refactoring seems like a good way to get rid of bugs you don't know are there 17:49:49 C is beginning to look a bit like Forth to me thesedays, take this code which uses the libopencm3 17:49:51 int main() { 17:49:52 // First, let's ensure that our clock is running off the high-speed 17:49:52 // internal oscillator (HSI) at 48MHz 17:49:52 rcc_clock_setup_in_hsi_out_48mhz(); 17:50:16 yeah if you squint it looks forthy 17:50:24 rcc_clock_setup_in_hsi_out_48mhz(); <-- Forth plagiarism (apart from the () ) 17:50:35 though i looked it up today and found the 14+ year old bug in linux that affects all preemptive kernels was fixed 17:51:14 well Linux is very complex, Im sure there are lots of bugs, just like anything else 17:51:34 definitely, but this was in core code 17:51:36 not driver code 17:51:41 tabemann, bad Karma ? 17:51:58 the bug being that panic() which is supposed to display an error and halt your machine, didn't halt your machine 17:52:21 Java at least makes it a bit difficult to write the most obvious bugs 17:52:39 JavaScript makes it very easy to write bugs, but without any benefits 17:53:16 whereas Forth makes it easy to write buggy code - but gives you things like easy metaprogramming and a lot of potential for system-building 17:53:59 yeah so with forth what i see is that kind of C-like ability for bugs, but when you encounter a bug in forth you can add some tools or abstraction to prevent that class of bug happening again' 17:54:35 lisp has that too 17:55:06 both forth and lisp allow building all-encompassing abstractions 17:55:12 tabemann, my architect daughter tells me she likes Java, but then she has a eidetic memory which helps I guess 17:55:34 to me Forth seems like the love child of C and Lisp 17:56:02 i really haven't seen any relation between forth and C 17:56:21 Jookia: they're both pretty low level 17:56:22 maybe assembly and lisp 17:56:36 yeah, assembly and lisp is probably a better comparison 17:56:47 to me Forth seems like a tiny Borg that crawled out of the primordial swamp, it never had parents 17:57:35 possibly smalltalk comes to mind that i would see with most relation to forth 17:57:52 I just can't understand why everyone says that "C is low level" or "perfect for bare metal" when to me, C is nothing like that 17:58:09 C never even had facilities for handling bits 17:58:17 it was made for mainframes 17:58:26 C was made for the PDP-11 17:58:54 sure, but before the PDP-11 it was made for larger iron ? 17:59:03 naw 17:59:17 C was the first commercially available non hw vendor OS 17:59:27 C was invented for unix 17:59:31 ^ 17:59:39 C was invented to write Unix in 18:00:10 and Unix originally was for the PDP-7, but was soon ported to the PDP-11 - I think the PDP-7 version of Unix was in assembly 18:00:28 before then OSes were mostly written in assembly i think? 18:00:58 youre both wrong in part 18:01:05 Multics was written in PL/1, but aside from it, yeah 18:01:22 C was written ON a PDP, but not FOR the PDP 18:01:56 Multics was the dominant OS before that, and came with house sized mainframes 18:02:23 Multics was for the GE 645 and was still being developed at the time 18:02:41 The AT&T aim was to produce a commercially available OS for any hardware 18:03:07 Unix was originally written so allow Ritchie, Thompson, Kernighan et al to play video games on the PDP-7 18:03:17 *to allow 18:03:18 this was in the days when smaller than a house hardware was becoming commonly available (to millionaires) 18:03:23 hahah 18:03:38 and lisp machines were invented because wtf 18:03:59 to me, C is a disaster on embedded 18:04:21 I say, "send C back to the PDP where it belongs!" 18:04:41 C and wirewrap, a perfect marriage 18:05:07 the thing is that the PDP-11, at least in its earlier incarnations, probably was close in memory to your embedded system - and somewhat slower too 18:05:39 didnt it have 11 bit words 18:05:40 or bytes 18:05:52 16 bit words 18:06:29 anyways, I've gotta head home 18:06:37 bbl 18:06:51 ciao 18:08:38 cya 18:08:59 on another note, how should i handle exposing overflows to forth? 18:09:09 also i'm still WTFed out that C doesn't expose overflows 18:09:24 --- quit: dddddd (Remote host closed the connection) 18:09:40 whats a 'overflow' ? 18:09:52 uh when i do some operation using the ALU 18:09:57 and the overflow bit is set 18:10:06 the carry bit ? 18:10:13 oops, yes 18:10:26 i guess just add a carry word 18:10:49 --- quit: tabemann (Ping timeout: 240 seconds) 18:10:53 afaik all carries are used in Forth 18:11:04 it's a assembler option 18:11:14 what do you mean used? 18:11:21 for all commands affecting the alu 18:11:39 add with carry, or without carry are the add options 18:11:58 so I imagine he uses the commands with carry 18:12:58 i'll just add a carry flag to my VM and set it when i do ops 18:13:38 there may be cases when the carry is not used, logic ops etc 18:13:47 but I'm not a programmer remember 18:14:13 sure but you've dealt with doing some math and checking if the carry flag was set? 18:14:45 sure, Ive done heaps of maths and logic and every time the result was as expected 18:15:23 I never check the underlying Word because the designer NEVER overlooks details like that. He thinks in assembler 18:15:23 i see 18:16:12 I'm very careful about jumping to conclusions and tripple check then ask someone else before I even think of asking HIM 18:16:48 because it's like confronting GOD, just the light from the designers face can turn me to salt 18:19:00 when you can write a self booting standalone MSP430 led blinky ( with no odd pin states) in 14 bytes, you'll know you're on his level 18:23:41 C was like the Java of the 70s. So it avoid being tied to too many implementation details, allowing it to spread to several different hw archs. 18:23:55 s/avoid/avoided/ 18:25:53 X-Scale, aha, that's what I was searching for 18:28:07 I've noticed quite a few different C implementations for bit handling, they're all different *extensions* to the language, a bit Forth like I think 18:28:31 not that C can redefine itself like C tho 18:28:39 not that C can redefine itself like Forth tho 18:29:14 --- join: pareidolia joined #forth 18:31:28 Makes me remember the amazing adaptability of Lisp/Scheme. But Forth has the important advantage of being able to create very tight, small, and fast machine code. 18:33:06 X-Scale, Im a LISp wanabee, but only at the very basic LISP into stage so far 18:34:01 X-Scale, in my tests, Mecrisp-Stellaris is about 3x slower than Gcc optimised on the same hardware, but I'm happy with that 18:34:44 Ill take a 30x reduction in development time for a 3x reduction in speed 18:37:47 hmm, I think I'll add sunrise and sunset times to my handy always on stm32 discovery 18:37:59 it does temperature, C and F now 18:38:09 33,56 C 18:38:09 92,52 F 18:41:38 --- quit: karswell (Read error: No route to host) 18:42:44 --- join: karswell joined #forth 18:42:45 C never even had facilities for handling bits <-- this is a very pertinent point 18:43:32 Because time has shown you need to handle bits in so many different ways. Look at the SIMD world and how it has expanded in the last 20 something years. 18:43:46 X-Scale, one that modern C fans seem to be unaware of, and that you have exactly pointed out the reason above 18:44:36 hence my confusion everytime someone says that "C is made for low level" 18:45:59 only ONE 'language' is made for "low level" in my experience, and that is Assembly Language, however Forth is the next one up in my opinion 18:51:12 And even most CPU arch intruction sets are very irregular. Notice how we lose so many useful bits when storing quantities that are always small in larger registers (like a simple 0/1 binary flag), because that's all we have to make it fast to avoid constant bit hacking on bit packed registers. 18:52:56 so true, are you familiar with "bit banding" in cortex-m3 ? 18:53:30 in bit banding, a 32 bit register is used to set or reset *one* bit 18:53:48 or at least that register address is 18:54:22 this provides atomic bit manipulations without the need to read and mask etc 18:55:18 Which can make a time difference in very tight loops repeated many millions of times. 18:55:29 absolutely 18:55:43 it's amazing how fast they add up 18:56:21 --- join: jedb__ joined #forth 18:58:49 --- quit: jedb_ (Ping timeout: 240 seconds) 19:40:31 --- join: tabemann joined #forth 19:45:44 --- join: ryke joined #forth 20:39:18 --- join: gravicappa joined #forth 21:42:10 --- join: dys joined #forth 22:41:59 --- quit: dzho (Ping timeout: 240 seconds) 22:46:43 --- quit: karswell (Ping timeout: 246 seconds) 23:33:13 --- quit: xek (Ping timeout: 240 seconds) 23:34:47 --- quit: WickedShell (Remote host closed the connection) 23:36:21 --- join: C-Keen joined #forth 23:43:16 --- quit: ryke (Ping timeout: 265 seconds) 23:54:07 --- join: inode joined #forth 23:59:59 --- log: ended forth/19.11.18