00:00:00 --- log: started forth/20.04.24 00:02:26 --- join: dys joined #forth 00:07:21 --- quit: clog (Ping timeout: 265 seconds) 00:07:21 --- log: stopped forth/20.04.24 00:08:01 --- log: started forth/20.04.24 00:08:01 --- join: clog joined #forth 00:08:01 --- topic: 'Forth Programming | logged by clog at http://bit.ly/91toWN backup at http://forthworks.com/forth/irc-logs/ | If you have two (or more) stacks and speak RPN then you're welcome here! | https://github.com/mark4th' 00:08:01 --- topic: set by proteusguy!~proteusgu@cm-58-10-208-146.revip7.asianet.co.th on [Mon Dec 30 10:43:28 2019] 00:08:01 --- names: list (clog dys mtsd _whitelogger gravicappa rdrop-exit boru reepca jsoft cantstanya dave0 tangentstorm WickedShell Zarutian_HTC benjamin-l X-Scale proteus-guy tp Keshl MrMobius jedb nonlinear Lord_Nightmare tabemann ovf guan jpsamaroo pareidolia arrdem cheater patrickg C-Keen deesix APic jimt[m] +proteusguy irsol tolja rpcope djinni Kumool diginet2 siraben naraic_ ornxka Vedran heredoc phadthai dave9 cheers jackdaniel lonjil crest ecraven WilhelmVonWeiner remexre) 00:08:01 --- names: list (DKordic cp- jn__ +crc veltas dzho klys fiddlerwoaroof koisoke +KipIngram pointfree malyn a3f jhei rann catern mjl bluekelp) 00:10:33 --- quit: reepca (Ping timeout: 256 seconds) 00:45:45 crc: I'm on Linux, doesn't need to be that frequent, depends on life of project. Hard to put a number down but at least a bit of dev most months to fix outstanding issues or refactor? 00:47:07 I'm currently looking at ikforth, if someone in here wants to shill their own forth then go for it, just want something vaguelly similar to standard forth 00:49:42 In case more people see: I am looking for a standardish forth for x86-32, that can run under Linux, and is 'actively developed'. I.e. more than a couple commits in the last 2 years ;-) 00:51:05 I am quite open minded within those bounds 00:51:23 --- join: xek joined #forth 01:15:29 tp: bought 5 for < 3€ a piece (including shipping) from a local amazon seller 01:18:19 crest, I bought 12x of a different board, same chip tho years ago for $9 AUD each 01:18:48 crest, which is what I develop for the STM32F103C8 on 01:20:13 this image uses a fast serial connection with handshaking instead of the serial over usb? 01:20:32 crest, the "free" app is rewritten now, it was always slightly wrong as it didnt include the flash the kernel used 01:21:13 crest, yeah, the usb port is useless for development because as you know, a mcu reset drops the device 01:21:46 it's not 01:21:54 ? 01:21:56 there is a simple solution 01:22:05 yeah, use serial 01:22:20 configure picocom to stay quiet and put it in a loop that reconnects 01:23:25 well you can add usb easily enuf 01:23:38 this is the dev version afterall 01:24:06 have you used wireless serial "bridges"? 01:24:13 just upload usb.fs from the Mecrisp-Stellaris release for the stm32f103 01:24:32 no 01:25:57 does mecrisp stellaris support multiple connections e.g. two USARTs? 01:26:20 not as standard afaik 01:27:02 --- join: dddddd joined #forth 02:06:00 --- quit: Zarutian_HTC (Ping timeout: 264 seconds) 02:37:28 --- quit: WickedShell (Remote host closed the connection) 02:49:08 --- quit: patrickg (Remote host closed the connection) 02:50:04 --- join: patrickg joined #forth 03:48:47 --- join: iyzsong joined #forth 04:11:51 --- quit: mtsd (Quit: Leaving) 04:40:30 --- quit: dave0 (Quit: dave's not here) 04:40:42 --- join: mtsd joined #forth 04:41:56 --- quit: rdrop-exit (Quit: Lost terminal) 04:45:12 --- quit: crest (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) 04:45:59 --- quit: mtsd (Read error: Connection reset by peer) 04:46:09 --- join: mtsd joined #forth 04:48:24 --- join: merkc1 joined #forth 04:50:20 --- join: crest joined #forth 05:03:55 --- quit: mtsd (Quit: mtsd) 06:07:57 --- join: Zarutian_HTC joined #forth 06:32:31 what's the difference between cmove and cmove> ? 06:38:56 merkc1: the direction of copying 06:39:14 merkc1: one copies forward and the other in reverse 06:39:34 this is most important it the target and source partially overlap 06:39:59 but some cpus have prefetchers that work better in one direction than the other 06:40:19 So you can nicely implement MOVE with CMOVE and CMOVE>, with no intermediary buffer 06:41:05 If we're talking optimisation, there are a *ton* of performance implications of the description of CMOVE and CMOVE>, and one would hope your platform's MOVE was properly optimised for it 06:41:25 i.e. probably not using CMOVE or CMOVE> at all 06:43:28 --- quit: dddddd (Ping timeout: 256 seconds) 06:44:36 --- quit: gravicappa (Ping timeout: 240 seconds) 06:45:36 --- quit: iyzsong (Quit: ZNC 1.7.1 - https://znc.in) 06:48:56 4thx you 06:49:02 =thank you 06:53:14 --- join: gravicappa joined #forth 07:55:12 --- quit: Keshl (Ping timeout: 264 seconds) 07:56:31 --- join: Keshl joined #forth 08:16:45 --- join: tp_ joined #forth 08:18:56 --- quit: tp (Ping timeout: 240 seconds) 08:30:23 --- quit: jackdaniel (Remote host closed the connection) 08:30:35 --- join: jackdaniel joined #forth 08:35:09 --- quit: Zarutian_HTC (Ping timeout: 260 seconds) 09:03:26 --- quit: dys (Ping timeout: 256 seconds) 09:10:16 --- join: Zarutian_HTC joined #forth 09:16:50 --- join: X-Scale` joined #forth 09:17:27 --- quit: X-Scale (Ping timeout: 256 seconds) 09:17:27 --- nick: X-Scale` -> X-Scale 09:38:17 --- join: TCZ joined #forth 09:55:16 --- quit: TCZ (Quit: Leaving) 09:58:04 --- nick: tp_ -> tp 10:20:22 what does >MARK do ? 11:05:36 --- join: dddddd joined #forth 11:28:51 --- quit: merkc1 (Ping timeout: 256 seconds) 12:00:45 --- join: reepca joined #forth 12:41:52 --- join: merkc0 joined #forth 13:03:29 --- quit: merkc0 (Ping timeout: 260 seconds) 13:10:21 --- quit: jsoft (Ping timeout: 265 seconds) 13:11:07 --- join: WickedShell joined #forth 13:22:31 --- join: merkc0 joined #forth 13:30:04 --- join: X-Scale` joined #forth 13:30:41 --- quit: X-Scale (Ping timeout: 256 seconds) 13:30:44 --- nick: X-Scale` -> X-Scale 13:32:45 --- join: dys joined #forth 14:21:20 --- quit: gravicappa (Ping timeout: 256 seconds) 14:24:55 --- quit: merkc0 (Read error: Connection timed out) 14:31:45 --- join: merkc0 joined #forth 14:39:23 --- join: dave0 joined #forth 14:41:37 --- quit: merkc0 (Ping timeout: 240 seconds) 14:42:26 --- join: xek_ joined #forth 14:42:50 --- join: merkc0 joined #forth 14:45:05 --- quit: xek (Ping timeout: 265 seconds) 14:47:58 --- quit: cheater (Ping timeout: 256 seconds) 15:19:11 --- join: TCZ joined #forth 15:41:38 --- quit: merkc0 (Ping timeout: 265 seconds) 15:43:52 --- join: cheater joined #forth 15:47:07 --- join: merkc0 joined #forth 16:13:43 --- quit: TCZ (Quit: Leaving) 16:15:35 --- join: merkc1 joined #forth 16:17:33 --- quit: merkc0 (Ping timeout: 260 seconds) 16:17:33 --- quit: reepca (Read error: Connection reset by peer) 16:17:52 --- join: reepca joined #forth 16:29:46 --- join: merkc2 joined #forth 16:32:57 --- quit: merkc1 (Ping timeout: 260 seconds) 16:54:13 --- quit: Zarutian_HTC (Read error: No route to host) 16:54:20 --- join: Zarutian_HTC joined #forth 16:56:07 --- join: TCZ joined #forth 17:19:15 --- quit: merkc2 (Read error: Connection timed out) 17:19:47 --- quit: TCZ (Quit: Leaving) 17:19:47 --- join: merkc2 joined #forth 17:26:07 --- quit: merkc2 (Ping timeout: 240 seconds) 17:26:22 --- join: merkc0 joined #forth 17:30:17 --- join: iyzsong joined #forth 17:36:55 --- join: rdrop-exit joined #forth 17:43:03 --- join: merkc1 joined #forth 17:45:45 --- quit: merkc0 (Ping timeout: 256 seconds) 18:01:16 --- join: merkc2 joined #forth 18:04:29 --- quit: merkc1 (Ping timeout: 260 seconds) 18:12:38 good morning Forthers c[] 18:14:31 hey 18:14:43 hi tabemann 18:15:37 --- quit: merkc2 (Ping timeout: 260 seconds) 18:16:14 --- join: merkc0 joined #forth 18:16:52 hi rdrop-exit 18:17:03 hi crc 18:17:29 hey crc 18:31:13 --- quit: reepca (Read error: Connection reset by peer) 18:31:28 --- join: reepca joined #forth 18:31:29 --- quit: merkc0 (Ping timeout: 260 seconds) 18:52:24 --- join: boru` joined #forth 18:52:27 --- quit: boru (Disconnected by services) 18:52:30 --- nick: boru` -> boru 19:02:07 --- quit: phadthai (Quit: bbl) 19:05:09 I just modified enable-task and disable-task so they actually add and remove tasks from the task loop 19:05:38 cool 19:05:56 were they arrested by the false advertising police ? 19:06:40 lol 19:06:45 ;-) 19:07:03 they previously just set a flag saying they were disabled or enabled 19:07:18 hey tabemann, Zeptoforth is moving right along :) 19:07:40 there is still a flag, well actually a counter, to allow nested enable-tasks and disable-tasks to work properly 19:08:04 so you can enable-task twice, and to reverse it, you have to disable-task twice 19:09:14 rdrop-exit, note that disable-task is not STOP because it doesn't call PAUSE, since it can be used on tasks other than the current one 19:09:59 if a task calls disable-task on itself, to have the desired effect it has to call PAUSE afterwards 19:14:59 I'm not sure what your saying, but then I'm half-awake, I gues your STOP is more like HALT 19:15:06 *you're 19:16:26 it's not STOP because you can all it on any task, and it does not result in a transfer of control, with that requiring a PAUSE 19:17:26 *call 19:18:03 so you're STOP is actually HALT I guess 19:18:07 * your 19:19:04 it takes a tcb parameter 19:23:01 yes 19:23:19 ok 19:35:10 here's MPE's glossary entry for HALT 19:35:10 : halt \ tcb -- ; mark thread as halted 19:35:11 Stops an INITIATEd task from running until RESTART is used. 19:35:57 Forth Inc's version is: 19:37:04 HALT ( addr -- ) 19:38:01 Causes the task whose TCB is at addr to cease operation permanently at the next STOP or PAUSE but to remain instantiated. 19:38:09 --- join: phadthai joined #forth 19:41:55 There's a lot of variation though in Forth multitaskers. 19:43:36 That's one reason they chose to keep it out of the 79, 83, and ANS standards. 19:44:08 Although I suspect politics was involved. 19:48:00 --- quit: dave0 (Quit: dave's not here) 19:57:12 The important thing is that Forth Multitasking should be extremely low overhead, task switching is usually just an indirect jump, i.e. PAUSE. 20:14:40 IIRC one of the ANS members is trying to come up with a set of standard names that emcompasses both cooperative and preemptive multitasking. 20:15:40 Personally I've never been interested in premptive multitasking in Forth. 20:16:10 * preemptive 20:16:22 I ran it for a while but it's a bit resource intensive for the tiny chip I use 20:16:44 oops, that was cooperative not premptive 20:19:31 cooperative doesn't have to be resource intensive, but that depends a lot on the particulars of the implementation and the design choices 20:19:48 baked in 20:21:13 The minimum is some data stack space and return stack space 20:22:17 per task 20:23:24 I think it uses about 800 bytes of ram per task in the case of Mecrisp-Stellaris 20:23:33 and I only have a total of 8kB 20:24:10 i think Mecrisp-Stellaris itself only uses 1.5kB of ram 20:25:05 he chose to do it that way, you don't need to pre-assign RAM to a task 20:25:29 (except for stack space) 20:25:47 I think it's related to the stack and register saving 20:26:16 back 20:26:35 but I dont really need it anyway, plus because the terminal is polled, the performance can be a bit poor 20:26:36 it might be adjustable 20:27:00 tabemann, seems to have fixed that issue by using a interrupt for his terminal 20:27:06 need more coffee, bbiab 20:27:47 29,50 C 20:27:47 85,21 F another lovely summery day, hurry up winter! 20:27:48 yeah, I was having trouble with serial IO and multitasking until I switched from polled IO to interrupt IO 20:28:24 thats definitely something I'll look into later 20:29:24 my cooperative implementation is a little more resource heavy because I have to update a whole bunch of shared registers such as base and end registers for stack and rstack (for detecting overrun and underrun), HANDLER (for exceptions), and BASE (obvious) 20:29:55 the reason why HANDLER and BASE are not user variables is because they're in the kernel, and the kernel doesn't really know about multitasking 20:30:06 tabemann, do you know how much ram per task it needs ? 20:30:51 haven't checked - I normally give tasks 256 bytes of stack, 256 bytes of rstack, and 256 bytes of scratch space 20:31:09 haven't had any problems with that much 20:31:21 and on my board I can afford to give out that much RAM per task 20:31:29 of course 20:32:00 the old M4 has a ton of resources 20:32:30 rumour is that a M4 may even run Retro one day :) 20:40:08 --- quit: xek_ (Ping timeout: 240 seconds) 20:40:37 tabemann, how many user variables do you have? 20:40:52 BASE and such... 20:44:48 There's no need to make BASE task specific unless you're doing a multi-user Forth (as opposed to a multi-tasking Forth) 20:45:43 multi-user Forths are a rare bird indeed nowadays 20:45:44 5 20:47:23 what are they? If I may ask. 20:49:21 task-handler, task-wait, task-systick-start, task-systick-delay, and task-base 20:50:01 task-systick-start and task-systick-delay are used for waiting for a particular time 20:50:21 the reason why there are two variables rather than one for this is that it avoids a common bug with rollover 20:51:01 task-wait is if a task is waiting but still in the loop (and will be woken up at the next interrupt) 20:51:15 task-handler is for exception handling 20:51:24 task-base is self-explanatory 20:54:27 ah, you were speaking of this task-base rather then BASE earlier 20:55:39 * than 20:56:04 task-base is copied into BASE by PAUSE 20:56:31 task-base is only known by the multitasker 20:57:08 BASE as in hex, decimal etc...? 20:58:13 or as in some sort of base address? 20:59:50 as in hex, decimal, etc. 21:01:02 Two things puzzle me 21:01:45 why does each task need its own BASE (unless your Forth is "multi-user") 21:02:17 2) even if each task needs its own BASE, why does PAUSE need to copy it? 21:02:34 it's because it's state that has no need to be shared 21:03:03 as for copying it, it's because the normal formatting routines are in the kernel, and the kernel doesn't know about user variables 21:07:35 --- join: jsoft joined #forth 21:12:43 I need more coffee, or maybe a Scotch 21:13:12 too early for a Scotch :( 21:22:09 --- join: merkc0 joined #forth 21:38:26 --- quit: dddddd (Ping timeout: 258 seconds) 22:01:51 --- join: gravicappa joined #forth 22:06:25 --- quit: _whitelogger (Remote host closed the connection) 22:09:28 --- join: _whitelogger joined #forth 22:20:09 --- quit: dys (Ping timeout: 260 seconds) 23:12:56 --- quit: proteus-guy (Ping timeout: 240 seconds) 23:59:59 --- log: ended forth/20.04.24