00:00:00 --- log: started forth/18.09.24 00:02:35 --- join: jedb (~jedb@199.66.90.113) joined #forth 00:10:15 --- join: jedb_ (jedb@gateway/vpn/mullvad/x-efivujchyskxydfa) joined #forth 00:12:29 --- quit: jedb (Ping timeout: 245 seconds) 00:37:04 --- quit: jedb_ (Read error: Connection reset by peer) 00:42:51 --- join: jedb_ (jedb@gateway/vpn/mullvad/x-fjbztttppnfcqokh) joined #forth 00:42:57 --- nick: jedb_ -> jedb 01:08:01 --- join: ncv (~neceve@90.194.40.93) joined #forth 01:08:02 --- quit: ncv (Changing host) 01:08:02 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 01:15:49 --- quit: Keshl (Read error: Connection reset by peer) 01:16:01 --- join: Keshl (~Purple@24.115.185.149.res-cmts.gld.ptd.net) joined #forth 02:04:22 --- quit: ashirase (Ping timeout: 260 seconds) 02:06:57 --- join: ashirase (~ashirase@modemcable098.166-22-96.mc.videotron.ca) joined #forth 03:17:59 --- join: dave9 (~dave@90.20.215.218.dyn.iprimus.net.au) joined #forth 03:18:11 hi 03:18:47 hello 03:18:57 hi rdrop-exit 03:19:12 Hi dave9 03:20:41 How’s it Forthin’ 03:22:43 just about to make a cup of tea 03:23:05 same here with coffee, brb 03:26:05 back 04:12:33 --- join: gravicappa (~gravicapp@ppp83-237-171-179.pppoe.mtu-net.ru) joined #forth 04:48:51 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 05:13:55 --- quit: wa5qjh (Remote host closed the connection) 05:55:19 --- join: pierpal (~pierpal@host102-235-dynamic.181-80-r.retail.telecomitalia.it) joined #forth 06:55:55 --- quit: dave9 (Quit: one love) 07:08:49 --- join: Guest5800_ (uid172710@gateway/web/irccloud.com/x-yfsimluqjijugvmq) joined #forth 07:41:00 --- quit: jedb (Read error: Connection reset by peer) 07:45:37 --- quit: tabemann (Ping timeout: 260 seconds) 08:01:57 --- quit: gravicappa (Ping timeout: 260 seconds) 08:10:08 --- quit: mtsd (Quit: Leaving) 08:15:22 --- quit: pierpal (Ping timeout: 260 seconds) 08:35:30 --- quit: dys (Ping timeout: 272 seconds) 09:01:08 --- join: jedb (jedb@gateway/vpn/mullvad/x-gpwtaxxakfwxpckr) joined #forth 10:41:23 --- quit: rdrop-exit (Quit: rdrop-exit) 11:10:10 --- quit: Guest5800_ (Quit: Connection closed for inactivity) 11:21:40 --- join: gravicappa (~gravicapp@ppp83-237-172-229.pppoe.mtu-net.ru) joined #forth 11:38:33 --- quit: ncv (Remote host closed the connection) 12:25:54 --- join: dys (~dys@p57944B46.dip0.t-ipconnect.de) joined #forth 13:56:26 --- quit: Zarutian (Read error: Connection reset by peer) 13:56:38 --- join: Zarutian (~zarutian@173-133-17-89.fiber.hringdu.is) joined #forth 14:00:24 --- quit: reepca (Ping timeout: 245 seconds) 14:23:26 --- quit: cobax (Ping timeout: 240 seconds) 14:34:21 --- quit: gravicappa (Ping timeout: 252 seconds) 14:40:55 --- join: raoul (~Raoul@2a02:120b:c3ce:4d0:6802:24dd:ef50:758) joined #forth 14:47:57 Hi, I am trying to write a Forth on ARM bare metal (using a Cortex A8). All examples I found handle the keyboard using the Linux syscalls. As I understand it, I have to use a bootloader if I don't want to write an USB stack myself. Does that mean that the implementation of a new Forth on bare metal from scratch is actually not as easy a task as it is usually depicted, or am I missing something? How do Forthwrights who want to go bare 14:47:57 metal usually handle the keyboard / write the REPL? 14:53:35 raoul: on what hardware are you doing this? 14:54:13 raoul: Raspberry PI? BeagleBone Black? 14:55:31 raoul: if you have the datasheet for what you are using, you might want for starters, use serial access over two pins. 14:57:42 if you do not have handy serial port on your own computer but do have an arduino lying around you can probably figgure out how to use that to interface with the serial pins on your dev board 14:59:06 --- quit: TeMPOraL (Ping timeout: 252 seconds) 14:59:25 BeagleBone black 14:59:52 Yes, serial via minicom seems like the usual way 15:00:20 but does that dispense me from writing a keyboard handler?? 15:02:55 well, you still need to treat the incomming bytes of the serial link somehow 15:03:19 but not needing to do a whole usb stack is probably plus 15:06:22 --- join: wa5qjh (~quassel@175.158.225.222) joined #forth 15:06:23 --- quit: wa5qjh (Changing host) 15:06:23 --- join: wa5qjh (~quassel@freebsd/user/wa5qjh) joined #forth 15:06:43 I see 15:07:09 Thank you, I think I understand better what I am looking at. 15:08:38 --- join: TeMPOraL (~temporal@hellsgate.pl) joined #forth 15:19:19 --- quit: dk_jackdaniel (Ping timeout: 252 seconds) 15:20:00 --- quit: TeMPOraL (Ping timeout: 252 seconds) 15:21:28 --- quit: jackdaniel (Ping timeout: 272 seconds) 15:53:31 --- join: vxe_ (~vxe@31.153.239.35.bc.googleusercontent.com) joined #forth 15:56:02 --- join: leaverite (~quassel@175.158.225.222) joined #forth 15:56:02 --- quit: leaverite (Changing host) 15:56:02 --- join: leaverite (~quassel@freebsd/user/wa5qjh) joined #forth 15:56:49 --- join: irsol_ (~irsol@198.98.53.181) joined #forth 15:56:56 --- join: rain2 (~rain1@unaffiliated/rain1) joined #forth 15:57:38 --- join: nonlinear (~nonlinear@unaffiliated/discrttm) joined #forth 16:01:12 --- quit: wa5qjh (*.net *.split) 16:01:14 --- quit: sigjuice (*.net *.split) 16:01:14 --- quit: NB0X (*.net *.split) 16:01:15 --- quit: vxe (*.net *.split) 16:01:16 --- quit: rain1 (*.net *.split) 16:01:16 --- quit: irsol (*.net *.split) 16:01:40 --- join: sigjuice (~sigjuice@2604:a880:1:20::83:6001) joined #forth 16:02:34 --- join: TeMPOraL (~temporal@hellsgate.pl) joined #forth 16:04:02 --- join: jackdaniel (~jackdanie@hellsgate.pl) joined #forth 16:13:42 --- quit: dys (Ping timeout: 260 seconds) 16:15:44 --- quit: irsol_ (Changing host) 16:15:44 --- join: irsol_ (~irsol@unaffiliated/contempt) joined #forth 16:15:56 --- nick: irsol_ -> irsol 16:30:29 --- quit: jackdaniel (Quit: ZNC 1.7.0 - https://znc.in) 16:33:12 --- join: jackdaniel (~jackdanie@hellsgate.pl) joined #forth 16:33:36 --- quit: nighty- (Quit: Disappears in a puff of smoke) 16:40:56 --- quit: TeMPOraL (Ping timeout: 240 seconds) 16:41:08 --- quit: jackdaniel (Ping timeout: 240 seconds) 16:50:45 --- quit: epony (Ping timeout: 252 seconds) 16:53:12 --- join: jackdaniel (~jack@hellsgate.pl) joined #forth 16:53:17 --- join: TeMPOraL (~temporal@hellsgate.pl) joined #forth 16:53:32 --- join: dk_jackdaniel (~jackdanie@hellsgate.pl) joined #forth 16:57:08 --- quit: jackdaniel (Ping timeout: 240 seconds) 17:00:10 --- quit: dave0 (Read error: No route to host) 17:06:04 --- quit: raoul (Quit: Leaving) 17:08:09 --- join: rdrop-exit (~markwilli@112.201.162.180) joined #forth 17:08:19 --- quit: TeMPOraL (Ping timeout: 245 seconds) 17:09:17 --- quit: dk_jackdaniel (Ping timeout: 244 seconds) 17:10:08 --- join: nighty- (~nighty@s229123.ppp.asahi-net.or.jp) joined #forth 17:18:53 --- join: jackdaniel (~jackdanie@hellsgate.pl) joined #forth 17:40:10 --- join: TeMPOraL (~temporal@hellsgate.pl) joined #forth 17:51:14 --- quit: TeMPOraL (Ping timeout: 245 seconds) 17:51:39 --- quit: jackdaniel (Ping timeout: 250 seconds) 17:52:45 --- join: TeMPOraL (~temporal@hellsgate.pl) joined #forth 18:05:22 --- join: jackdaniel (~jackdanie@hellsgate.pl) joined #forth 18:06:41 --- join: travisb (~travisb@cpe-24-209-155-210.wi.res.rr.com) joined #forth 18:09:57 --- quit: jackdaniel (Ping timeout: 252 seconds) 18:12:51 --- quit: travisb (Ping timeout: 244 seconds) 18:19:40 --- join: jackdaniel (~jackdanie@hellsgate.pl) joined #forth 18:23:14 --- quit: TeMPOraL (Ping timeout: 272 seconds) 18:23:41 --- quit: jackdaniel (Ping timeout: 244 seconds) 18:35:45 --- join: tabemann (~tabemann@32-82-181-166.mobile.uscc.net) joined #forth 18:37:25 --- join: dave0 (~dave@90.20.215.218.dyn.iprimus.net.au) joined #forth 18:38:18 * tabemann spent way too much time working on something where he was for some reason using [COMPILE] rather than COMPILE, causing all kinds of difficult-to-debug problems 18:38:43 * tabemann is happy that he managed to remove POSTPONE as a primitive though 18:54:01 I’ve been considering bringing back [COMPILE] and COMPILE. POSTPONE is convenient but makes it harder to tell at a glance what is going on. 18:56:45 I'm splitting the difference and supporting all three 18:57:47 even though I'm mostly using POSTPONE in my code, using COMPILE rather to bootstrap POSTPONE (because I need to implement IF ELSE THEN before I can implement POSTPONE, so I need COMPILE to implement those) 18:59:50 next thing up to implement - wordlists 19:02:12 I will eventually either endup sticking with either just POSTPONE or bringing back the other two and getting rid of POSTPONE. It’s not a priority at this point though. 19:04:09 --- join: jackdaniel (~jackdanie@hellsgate.pl) joined #forth 19:05:34 I'm probably going to stick with POSTPONE aside from bootstrapping 19:05:39 I know that some people hate POSTPONE 19:05:59 but to me it is convenient and allows me to change around how words are defined without breaking things 19:06:21 --- join: TeMPOraL (~temporal@hellsgate.pl) joined #forth 19:08:03 I find POSTPONE convenient when writing code and inconvenient when reading code. 19:11:28 apparently the rationale behind POSTPONE was that it gives the implementor more freedom 19:12:05 so they wouldn't have to firmly write into the standard whether each word was compiled or immediate 19:14:54 allowing things like words that are seemingly compiled, but rather are "smart" and are immediate, but check STATE and have different semantics in interpreted and compiled mode 19:20:44 The first rationale makes sense I guess. 19:22:57 I'm tempted to speed up common words by making them "smart" in this fashion 19:23:09 The second is more problematic, the whole NDCS issue. 19:23:13 essentially poor man's inlining 19:23:16 NDCS? 19:23:31 Non-Default Compilation Semantics 19:23:54 yeah 19:23:58 now that I think of it 19:24:13 it'd break if you tried to feed such a word into EXECUTE 19:24:43 because you'd have to add another layer of complexity 19:24:54 making it so that words know when they're being EXECUTEed 19:24:56 I have my own solution to this issue, but the new standard will be going in a totally different direction. 19:25:07 you mean Forth 2012? 19:25:11 Yes 19:26:13 my implementation is a mixture of a subset of Forth 2012 and a whole bunch of purely implementation-dependent crap, like all the multitasking and IO manager stuff 19:27:02 (the IO manager is made necessary by the multitasking, so that IO operations in one task don't block all the other tasks) 19:27:24 My new host Forth uses circular stacks, I haven’t looked into whether that automatically makes it non-compliant. 19:28:00 what do you get out of circular stacks? stacks that can underflow safely? 19:28:20 my Forth executes ABORT when a stack underflows or overflows 19:29:36 Stacks are never empty, it simplifies the VM. 19:31:38 it adds a comparison to one stack operation and a modulus to the other, mind you 19:32:02 mind you my code adds comparisons and branches to all stack operations, but they can be easily commented out 19:32:27 simply by commenting out the #defines that do the checking and replacing them with empty #defines 19:33:14 The way I see it is if you undeflow or overflow your stack, you’re screwed anyway, so might as well simplify by having a circular stack. 19:33:36 I wonder if a modulus is as expensive as a divide 19:34:17 Probably, but why do you need modulus? 19:34:37 For you stack check I mean 19:34:49 s/you/your/ 19:36:08 there's two ways to implement a circular buffer 19:36:23 You should size things in powers of two, so that you can use bitwise operations instead of divisions and multiplications 19:36:42 oh yeah that simplifies it 19:37:02 if your stack is a power of two in size you can simply AND the offset 19:37:14 if you power of two align your stack as well 19:37:27 no that won't work, you still have to base it on an offset 19:38:06 basically if your SP is an address, you have to subtract your base, AND the offset, then add the base 19:38:31 if your SP is an offset, you just have to AND the offset, and then you'll always be adding your base 19:39:20 you still have the expense of loading your base into a register, and doing the math 19:39:29 Align your base, size in a power of 2 19:39:39 whereas a plain linear stack is just adds and subtracts 19:40:18 I'm not sure that'll work 19:40:27 let's say your stack is at $1000 19:40:33 and is $100 in size 19:41:18 you'd need to and it by $FF and then OR it by $1000 19:42:02 you need to AND it before you add or subtract 19:42:20 so that if you treat it as a signed integer 19:42:54 $00 -1 will become, say, $FFFFFFFF, which then you AND down to $FF and then OR with $1000 giving $10FF 19:43:16 it'd work, but it'd still be slower than a linear stack 19:43:27 of course it'd be much faster than my bounds-checked stack 19:45:16 okay, I need to get going - I'll be back on later 19:49:28 --- quit: tabemann (Ping timeout: 240 seconds) 19:50:27 --- join: pierpal (~pierpal@host102-235-dynamic.181-80-r.retail.telecomitalia.it) joined #forth 19:50:47 ??? 19:51:52 --- quit: proteus-guy (Ping timeout: 264 seconds) 19:53:08 --- quit: TeMPOraL (Ping timeout: 240 seconds) 19:53:54 --- quit: jackdaniel (Ping timeout: 252 seconds) 19:54:43 --- quit: mark4 (Remote host closed the connection) 19:54:53 --- quit: rdrop-exit (Quit: rdrop-exit) 19:58:05 --- join: TeMPOraL (~temporal@hellsgate.pl) joined #forth 20:01:08 --- join: [1]MrMobius (~default@c-73-134-82-217.hsd1.va.comcast.net) joined #forth 20:03:20 --- join: proteus-guy (~proteusgu@2403:6200:88a6:329f:99c0:5514:ef06:fbd9) joined #forth 20:03:48 --- quit: MrMobius (Ping timeout: 252 seconds) 20:03:48 --- nick: [1]MrMobius -> MrMobius 20:06:42 --- quit: dddddd (Remote host closed the connection) 20:16:06 --- join: tabemann (~tabemann@2602:30a:c0d3:1890:ccf2:f6ec:5a58:6b88) joined #forth 20:20:49 --- quit: TeMPOraL (Ping timeout: 245 seconds) 20:24:24 --- quit: pierpal (Read error: Connection reset by peer) 20:28:14 --- join: jackdaniel (~jackdanie@hellsgate.pl) joined #forth 20:32:58 --- join: epony (~epony@unaffiliated/epony) joined #forth 20:40:23 is it possible to reduce the executable size by implementing busybox using some forth? 20:41:00 the busybox reduce the final executable size by compack all the tools together , so they could reuse the function 20:41:19 and since forth's word is much smaller than c's function,. is it possible to reduce more size? 20:59:37 --- quit: jackdaniel (Read error: Connection reset by peer) 21:02:32 --- join: jackdaniel (~jackdanie@hellsgate.pl) joined #forth 21:03:03 --- join: TeMPOraL (~temporal@hellsgate.pl) joined #forth 21:41:24 --- join: dave9 (~dave@90.20.215.218.dyn.iprimus.net.au) joined #forth 21:42:02 hi 21:45:12 --- quit: TeMPOraL (Ping timeout: 244 seconds) 21:45:28 --- quit: jackdaniel (Ping timeout: 240 seconds) 22:08:44 --- join: dys (~dys@p5DD5B19D.dip0.t-ipconnect.de) joined #forth 22:09:27 --- quit: dave9 (Quit: one love) 23:01:14 --- quit: Keshl (Read error: Connection reset by peer) 23:03:21 --- join: Keshl (~Purple@24.115.185.149.res-cmts.gld.ptd.net) joined #forth 23:06:26 --- quit: Keshl (Read error: Connection reset by peer) 23:06:49 --- join: Keshl (~Purple@24.115.185.149.res-cmts.gld.ptd.net) joined #forth 23:07:36 --- quit: Keshl (Read error: Connection reset by peer) 23:07:51 --- join: Keshl (~Purple@24.115.185.149.res-cmts.gld.ptd.net) joined #forth 23:22:53 --- join: dave9 (~dave@90.20.215.218.dyn.iprimus.net.au) joined #forth 23:23:05 re 23:23:38 --- quit: Keshl (Read error: Connection reset by peer) 23:26:18 --- join: Keshl (~Purple@24.115.185.149.res-cmts.gld.ptd.net) joined #forth 23:38:51 --- quit: jedb (Ping timeout: 252 seconds) 23:51:30 --- join: jedb (~jedb@199.66.90.113) joined #forth 23:59:59 --- log: ended forth/18.09.24