00:00:00 --- log: started forth/19.01.25 00:19:57 TIL that linked list is patented *facepalm 00:45:49 Unlikely 01:11:08 --- quit: smokeink (Ping timeout: 246 seconds) 01:13:51 --- join: dave0 (~dave0@193.060.dsl.syd.iprimus.net.au) joined #forth 01:14:05 re 01:30:10 * proteusguy avoids ARM and PIC chips. Atmel's are very nice for programmers. Most instructions are 1 cycle. ESP is also a nice device for coding. 01:31:24 i used to use them to make wafer cards and crack pay tv 01:31:29 good times 01:46:15 proteusguy: esp32 or esp8266? 01:46:27 i had a dozen of thems 01:46:41 I didn't have any issues with either of them. 01:55:46 https://patents.google.com/patent/US7028023B2/en 01:58:53 nerfur, goodness... is there a running program created since 1972 that doesn't violate that patent in some manner? 02:01:16 yeah, it is easily will be rejected by prior art I think, but you need to go to court for that and it is obviously probably done for patent trolling/competitors attacks 02:05:06 --- quit: ashirase (Ping timeout: 268 seconds) 02:07:26 --- join: ashirase (~ashirase@modemcable098.166-22-96.mc.videotron.ca) joined #forth 03:06:51 --- join: smokeink (~smokeink@185.189.254.154) joined #forth 03:27:40 --- quit: dave0 (Quit: dave's not here) 03:43:48 my Forth does not violate that patent from what I can see. (My only linked lists are things like the dictionary, with only a single link pointer, whereas the patent appears to cover lists with multiple link pointers) 03:44:58 innovative so much, wow 03:45:06 (re patent thing) 04:09:20 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 04:36:18 --- quit: mark4 (Read error: Connection reset by peer) 06:12:10 --- quit: pierpal (Quit: Poof) 06:12:29 --- join: pierpal (~pierpal@host53-189-dynamic.17-79-r.retail.telecomitalia.it) joined #forth 06:35:17 --- quit: nighty- (Remote host closed the connection) 06:35:49 --- quit: smokeink (Ping timeout: 268 seconds) 06:38:54 --- quit: pierpal (Quit: Poof) 06:39:12 --- join: pierpal (~pierpal@host53-189-dynamic.17-79-r.retail.telecomitalia.it) joined #forth 06:54:00 hm, should i use a harvard or a von neumann arch for my forth cpu 07:02:04 von neumann 07:02:58 hm, then i need to do wait states 07:03:14 for mem access instructions 07:04:05 because i can't fetch an instruction and do a mem read at the same time 07:12:18 --- quit: pierpal (Quit: Poof) 07:12:36 --- join: pierpal (~pierpal@host53-189-dynamic.17-79-r.retail.telecomitalia.it) joined #forth 07:32:50 --- quit: rain1 (Ping timeout: 250 seconds) 07:35:18 --- quit: tabemann (Ping timeout: 240 seconds) 07:37:33 --- join: darithorn (~darithorn@75.174.234.76) joined #forth 08:03:32 but i agree that von neumann would be better 08:03:46 or simpler 08:07:55 --- quit: pierpal (Ping timeout: 245 seconds) 08:07:59 --- join: [1]MrMobius (~default@c-73-134-82-217.hsd1.va.comcast.net) joined #forth 08:11:08 --- quit: MrMobius (Ping timeout: 246 seconds) 08:11:08 --- nick: [1]MrMobius -> MrMobius 08:11:40 --- quit: Zarutian (Ping timeout: 245 seconds) 08:12:13 --- join: Zarutian (~zarutian@173-133-17-89.fiber.hringdu.is) joined #forth 08:39:55 --- join: pierpal (~pierpal@host53-189-dynamic.17-79-r.retail.telecomitalia.it) joined #forth 08:45:45 --- quit: pierpal (Quit: Poof) 08:46:04 --- join: pierpal (~pierpal@host53-189-dynamic.17-79-r.retail.telecomitalia.it) joined #forth 08:55:04 not von neumann actually... :-) why do you imagine it's better? a proper stack machine has the opportunity to avoid the bus contention inherent in von neuman - which is why intel has spent all that money making their complex register based systems. 08:56:36 Is there a word for a pop in the opposite direction (i.e. with a deque/ringbuf) 08:56:59 not push? 08:57:05 append? 08:57:08 enqueue 08:57:38 Push would alter the contents of the buffer 08:57:43 soda 08:57:44 I'll call it pip 08:57:52 kekeke 08:57:53 I like pip. 08:58:06 I'll make it a backronym 08:58:13 i don't understand this operation 08:58:53 if pop is dec+fetch, this is inc+fetch, I suppose 08:59:02 *fetch and dec 08:59:10 the opposite of what I said 08:59:23 * proteusguy is now more confused 08:59:26 same 08:59:32 this is for a queue structure? 09:00:26 IndianGiver 09:00:30 Well I have a deque instead of a stack and I can see potential use from an opposite-pop 09:00:38 haha 09:00:59 WilhelmVonWeiner, so you want a command to pull something off the top but also pull something out of the bottom? 09:03:50 Not off the bottom, I'm only keeping one pointer 09:04:09 oh, maybe off the bottom. Lol. 09:04:27 :-) both ends I presume? 09:04:37 either or. 09:04:56 buttpop 09:05:08 unpush 09:05:34 dededeque 09:06:03 i might be tempted to make dequeue work, but then enqueue would alias to push and that might be weird 09:06:08 assuming i understand this right 09:07:20 unpush is a pop 09:07:26 is it? 09:07:33 unpush is a dec 09:11:55 idk, given that pop already has a definition, i could see an argument for unpush or antipush to be something that operates from the bottom 09:13:00 again, assuming i understand what you're doing correctly (give stack A, B, C where pop would take C, you want 'pip' to take A), i would probably use dequeue 09:13:25 But the data structure is a dequeue 09:13:41 what is a dequeue data structure? 09:13:49 ring buffer 09:13:58 but the inverse 09:14:08 dequeue is a verb 09:14:12 * PoppaVic facepalms... 09:14:28 dbl-link-list 09:14:57 Oh yeah, that too 09:15:04 sorry i never use them without a fixed size 09:15:42 same idea - you just have an array with a moving First-OUT and Next-IN 09:16:10 i'd call it a ringbuf or something and use dequeue as a verb 09:16:41 --- quit: cantstanya (Remote host closed the connection) 09:19:30 --- join: cantstanya (~chatting@gateway/tor-sasl/cantstanya) joined #forth 10:09:56 --- join: dys (~dys@tmo-110-72.customers.d1-online.com) joined #forth 10:24:15 hm, do i need to implement 2/ and some other rshift op for unsigned values? 10:24:42 trying to decide what should be instructions, and what should be done via words 10:43:20 http://tunes.org/~iepos/joy.html 10:43:30 if you want to try and make something stupidly small 10:47:25 oh i'm talking about my cpu design 10:47:39 yeah 10:47:43 I know 10:49:14 so at the moment i have AND, OR, XOR, ADD, 2/, NEGATE, 0<>, 0< 10:51:29 does that seem reasonable? something to exchange? half of the ops are two arg instructions, half of them are single arg 10:56:57 Chuck has a - on the F18A which gives you the one's complement inverse of a number 10:58:21 not two's complement? 10:58:28 i guess i should have sub 10:58:43 derp 10:58:49 two's complement, yeah 10:58:59 I assumed subtractions are - + 11:09:31 --- quit: gravicappa (Ping timeout: 250 seconds) 11:29:01 wait a minute 11:31:08 http://bespin.org/~nef/logs/forth/19.01.10 at 19:05:28 11:31:19 i was right: wtf is an arithmetic shift left 11:32:15 i thought i was having a brain fart. isn't sal the same thing as a shl? 11:34:24 yes 11:35:51 thought i was losing my mind there 11:36:24 from https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-1-manual.pdf 7.3.6.1: The SAL and SHL instructions perform the same operation (see Figure 7-6). They shift the source operand left by from 1 to 31 bit positions. Empty bit positions are cleared. The CF flag is loaded with the last bit shifted out of the 11:36:24 operand. 11:38:23 iirc, x86 has both mnemonics, but they assemble to the same opcode 11:39:05 yeah 11:57:01 --- join: mtsd (~mtsd@94-137-100-130.customers.ownit.se) joined #forth 11:58:46 did i say the wrong shift? 11:59:29 no, i was referring to a conversation i had in here 15 days ago 12:01:58 --- quit: Zarutian (Read error: Connection reset by peer) 12:02:03 --- join: Zarutian_2 (~zarutian@173-133-17-89.fiber.hringdu.is) joined #forth 12:02:34 --- nick: Zarutian_2 -> Zarutian 12:05:01 ok 12:05:19 pls keep up with the topic GOSH 13:21:46 --- join: learning (~learning@47.180.91.163) joined #forth 13:41:29 --- quit: learning (Read error: Connection reset by peer) 13:42:15 --- join: learning (~learning@47.180.91.163) joined #forth 13:43:53 --- quit: mtsd (Quit: WeeChat 1.6) 13:47:28 WilhelmVonWeiner: `suck` -- to remove from a fifo/pipe/straw 13:48:10 pip makes the code suck less 13:48:13 kekeke 14:05:41 --- quit: learning (Remote host closed the connection) 14:46:30 --- join: dave0 (~dave0@193.060.dsl.syd.iprimus.net.au) joined #forth 14:47:03 hi 14:47:21 --- quit: cantstanya (Remote host closed the connection) 14:49:40 --- join: cantstanya (~chatting@gateway/tor-sasl/cantstanya) joined #forth 15:00:27 hey dave 15:01:10 hi WilhelmVonWeiner 15:05:59 --- join: mark4 (~mark4@12.41.103.244) joined #forth 15:12:05 whats up 15:12:29 nuffing 15:12:49 i did a little bit of Forth coding yesterday.. Forth is hard :-) 15:13:09 nah, Forth is easy 15:13:12 thinking is hard. 15:13:58 when you get used to forth you can code it without thinking 15:16:20 if the first definition I write is like `: GAME LOAD BEGIN UPDATE DRAW AGAIN ;` is that top-down design? 15:17:33 --- join: learning (~learning@47.180.91.163) joined #forth 15:17:49 yes 15:18:03 thats top down coding. 15:18:19 define everything needed by load. then define load 15:18:28 define everything needed by update. then define update 15:18:30 etc etc etc 15:18:35 thats bottom up coding 15:18:49 ALWAYS do bottom up coding but top down design :) 15:19:01 I think that's how I forth. 15:19:28 Forth is a verb, obviously. 15:19:35 i often break that rule tho 15:19:50 i designed and wrote my memory manager from the bottom up for example 15:19:56 NONE of these rules are hard fast 15:24:46 of course not 15:24:59 I think the spirit of Forth holds that "rules suck, unless they don't" 15:25:12 i call them hard fast rules of thumb 15:30:48 --- quit: xek (Ping timeout: 240 seconds) 15:54:59 --- quit: learning (Remote host closed the connection) 15:59:53 --- quit: darithorn (Quit: Leaving) 16:14:38 --- join: learning (~learning@47.180.91.163) joined #forth 16:15:06 --- quit: learning (Read error: Connection reset by peer) 16:16:01 --- join: learning (~learning@47.180.91.163) joined #forth 16:17:07 --- quit: proteusguy (Remote host closed the connection) 16:31:44 not soft fast? 16:57:16 --- quit: learning (Remote host closed the connection) 16:58:35 Good mosrning Forthwrights 16:59:17 * morning 16:59:52 hi rdrop-exit 17:00:02 Hi dave0 17:01:32 [_]P 17:02:36 --- join: learning (~learning@47.180.91.163) joined #forth 17:02:38 coffee cup! 17:03:48 I need it, fourth day with flu 17:04:22 bummer 17:04:35 sick on the weekend :-( 17:04:44 make it into a Forth day with flu 17:04:57 :-) 17:10:33 I'm not in any shape to be productive. Just takin' it easy. 17:30:18 --- quit: pierpal (Ping timeout: 240 seconds) 17:31:21 --- quit: learning (Remote host closed the connection) 17:31:57 --- join: smokeink (~smokeink@185.189.254.154) joined #forth 17:39:47 SOunds like yer a congresscritter ;-) 17:47:53 --- join: tabemann (~tabemann@rrcs-162-155-170-75.central.biz.rr.com) joined #forth 18:13:10 --- join: learning (~learning@47.180.91.163) joined #forth 18:15:09 --- quit: X-Scale (Ping timeout: 240 seconds) 18:15:18 --- quit: tabemann (Ping timeout: 240 seconds) 18:46:25 --- quit: dave0 (Read error: Connection reset by peer) 18:46:45 --- join: dave0 (~dave0@193.060.dsl.syd.iprimus.net.au) joined #forth 18:47:05 --- quit: dave0 (Read error: Connection reset by peer) 18:53:41 --- join: dave0 (~dave0@193.060.dsl.syd.iprimus.net.au) joined #forth 19:02:01 --- quit: learning (Remote host closed the connection) 19:28:57 it took me ages, but i got my Forth code to work: http://termbin.com/zbzv 19:30:15 i hope it's not too long for a Forth word 19:37:31 --- join: tabemann (~tabemann@2600:1700:7990:24e0:8d7a:3d82:9669:8573) joined #forth 19:38:33 --- join: learning (~learning@47.180.91.163) joined #forth 19:44:36 --- join: X-Scale (~ARM@83.223.227.56) joined #forth 19:47:06 dave0: looks ok to me 19:47:34 `swap over` is `tuck` 19:50:22 oh! 19:50:38 an optimization! 20:00:00 dave0: cool 20:00:28 dave0: one little problem, I tried it like in my gforth and it didn't work: S" abc" reverse \ now my stack is empty 20:01:05 oh, it should be empty, according to ( c-addr n --) 20:01:13 what is reverse supposed to do ? 20:01:47 Does it reverse in place? 20:02:14 You might have to dup the string pointer and length first before reversing. 20:04:42 ttmrichter: yes 20:12:46 ah should "string" functions always return the string address? 20:13:20 it's just an extra 2dup in the code 20:13:52 --- quit: dddddd (Remote host closed the connection) 20:14:25 brb having a beer with my neighbor 20:20:51 beer always tastes better w/o neighbors.. Or ice, or.. Well, don't dilute it - that is all. 20:26:05 dave0: after you reverse the string you might want to supply it's address and length to the next word in your code, that's why I expected it to return them on the stack 20:29:22 --- quit: learning (Remote host closed the connection) 20:36:52 --- join: gravicappa (~gravicapp@h109-187-28-67.dyn.bashtel.ru) joined #forth 20:40:57 --- join: pierpal (~pierpal@host53-189-dynamic.17-79-r.retail.telecomitalia.it) joined #forth 20:59:46 smokeink: ah okay, i'll do that 20:59:54 easy fix 20:59:57 :-) 21:03:28 --- quit: pierpal (Read error: Connection reset by peer) 21:03:36 --- join: pierpal (~pierpal@host53-189-dynamic.17-79-r.retail.telecomitalia.it) joined #forth 21:06:11 --- quit: pierpal (Read error: Connection reset by peer) 21:10:10 dave0: I would probably do something like this as a first cut. 21:11:15 My chars are bytes. 21:11:38 Untested code ahead: 21:11:41 : btrade ( a1 a2 -- ) tuck b@ \b!@ \b! ; 21:11:42 : step ( x1 x2 -- x1+1 x2-1 ) `1+ 1- ;inline 21:11:42 : btrades ( a1 a2 #trades -- ) for 2dup btrade step next 2drop ; 21:11:42 : opposites ( a # -- a1 a2 ) 1- over + ;inline 21:11:42 : reverse ( a # -- ) tuck opposites rot u2/ btrades ; 21:13:45 ah i see u2/ 21:14:05 thos words are short! 21:14:28 That's always the idea 21:15:43 b@ \b!@ \b! `1+ for next are all non-standard 21:15:59 what is \b ? 21:16:29 \b! = something store? 21:16:49 byte store with arguments reversed (it's a primitive) 21:16:53 \b! ( a x -- ) 21:17:01 aah 21:17:56 \b!@ is a byte exchange with arguments reversed (another primitive) 21:18:16 \b!@ ( a x -- b ) 21:19:08 i used my reverse for the number conversion <# # #> .. instead of building the string in reverse, i built it forward and reversed the string at the end 21:19:11 `1+ ( x1 x2 -- x1+1 x2 ) 21:19:29 rdrop-exit: that looks handy 21:21:16 Some forths use the name under1+ 21:22:02 I prefer to `1+ I also have `1- `- `+ 21:23:03 do you have a >r 1- r> primitive? i found myself using that in loops 21:23:32 oh wait it's not so easy 21:24:01 yes `1- ( x1 x2 -- x1-1 x2 ) 21:31:56 Late lunch, catch you all later. Keep on Forthin' 21:32:21 --- quit: rdrop-exit (Quit: Lost terminal) 21:50:48 --- quit: dys (Ping timeout: 240 seconds) 21:56:02 I've finished initial implementations of uuencode and uudecode. Needs more testing, but seems to work ok with the handful of files I've tested against. 21:59:28 --- quit: smokeink (Ping timeout: 246 seconds) 22:44:36 --- join: pierpal (~pierpal@host53-189-dynamic.17-79-r.retail.telecomitalia.it) joined #forth 22:45:34 --- join: dys (~dys@tmo-103-124.customers.d1-online.com) joined #forth 22:48:50 --- quit: pierpal (Read error: Connection reset by peer) 22:53:20 --- join: pierpal (~pierpal@host53-189-dynamic.17-79-r.retail.telecomitalia.it) joined #forth 22:54:48 --- quit: tabemann (Ping timeout: 240 seconds) 22:58:51 --- quit: pierpal (Read error: Connection reset by peer) 23:01:19 --- join: smokeink (~smokeink@185.189.254.154) joined #forth 23:11:21 --- join: pierpal (~pierpal@host53-189-dynamic.17-79-r.retail.telecomitalia.it) joined #forth 23:52:55 --- quit: pierpal (Ping timeout: 245 seconds) 23:56:26 --- join: pierpal (~pierpal@host53-189-dynamic.17-79-r.retail.telecomitalia.it) joined #forth 23:59:59 --- log: ended forth/19.01.25