00:00:00 --- log: started forth/21.05.01 02:31:08 --- quit: kiedtl|ltbx (*.net *.split) 02:31:08 --- quit: xybre (*.net *.split) 02:37:27 --- join: kiedtl|ltbx joined #forth 02:37:27 --- join: xybre joined #forth 03:05:00 So, a few weeks ago someone mentioned inlining code even on a direct or indirect threaded machine. That looks like it would be pretty easy. When you arrive at the CFA of the inline code word, IP will be pointing at the start of the code, so you just need to do jmp to start it. Then that code does whatever it does, adds some cell size multiple to IP to jump it past the code, and runs NEXT. Should 03:05:02 work really simply. 03:05:56 The jmp and the add are overhead, though - you wouldn't have those if it were a regular primitive. 03:06:19 So I'm not sure you really gain anything other than a bit of code anonymity. 03:06:44 Well, maybe the jmp isn't overhead. 03:07:06 Or maybe it is. :-) Need caffeine. 03:07:42 Anyway, it's cute. 03:18:09 Ok, on reflecting on it I do think the jmp is overhead. So this adds two instructions to your machine code. Depending on what the code was doing, there might be some compensating savings, but that wouldn't be guaranteed. 03:22:27 If you could control the NEXT part of the word just before this, you could have it jump straight to this code; that would save the jmp . But that would be convoluted as heck to arrange. 03:23:47 Same kind of problem there as trying to mix sizes - you could switch around amongst 16 bit, 32 bit, and 64 bit sizes all you wanted - but only if the word BEFORE the new size knows it needs to do that. 03:24:29 I've thought about something like that at times, and always wind up coming up dry. 03:25:36 It's interesting to note, though, that you COULD do something like this: 03:26:06 32bitA 32bitB 32bitC 32->16 16bitA 16bitB 16->32 32bitD ... 03:26:25 If you're willing to inject those "size change" words, that can work. 04:20:18 You know, it occurs to me that the inline code thing might make a lot more sense for producing inline versions of several straight primitives. You'd avoid all the extra NEXTs. That actually may be worth considering. Just recognize opportunities for that automatically. 04:30:23 Did you notice the pdf I posted a few weeks ago on cuckoo hashing? 04:31:12 A CS friend of mine brought that to my attention, and it was interesting that he did so just before I got on the Lisp bandwagon. I think cuckoo hasing would be a really good way to handle symbol storage for Lisp. 04:31:35 It's quite clever how it arranges to get high utilization density in the hash table. 04:33:52 Oh sorry guys - thought I was in a private channel. :-| 04:50:07 --- quit: pbaille (Read error: Connection reset by peer) 04:50:12 --- join: pbaille_ joined #forth 04:58:32 --- join: pbaille joined #forth 04:59:47 --- quit: pbaille_ (Read error: Connection reset by peer) 05:00:02 --- join: pbaille_ joined #forth 05:03:08 --- quit: pbaille (Ping timeout: 240 seconds) 05:14:30 --- join: pbaille joined #forth 05:17:08 --- quit: pbaille_ (Ping timeout: 240 seconds) 05:17:14 --- join: pbaille_ joined #forth 05:20:48 --- quit: pbaille (Ping timeout: 260 seconds) 06:10:41 --- quit: Zarutian_HTC (Remote host closed the connection) 06:14:04 --- join: proteus-guy joined #forth 06:14:19 please take it back 06:54:32 :-) 07:20:27 --- quit: pbaille_ (Remote host closed the connection) 07:21:02 --- join: pbaille joined #forth 07:25:08 --- quit: pbaille (Ping timeout: 240 seconds) 07:30:48 --- join: pbaille joined #forth 07:35:29 --- quit: pbaille (Ping timeout: 268 seconds) 07:51:32 --- join: pbaille joined #forth 07:55:48 --- quit: pbaille (Ping timeout: 240 seconds) 08:53:44 --- join: pbaille joined #forth 10:11:42 --- quit: wineroots (Remote host closed the connection) 10:25:33 --- join: Zarutian_HTC joined #forth 11:26:16 Well, just sprung for a new notebook. 11:26:30 First computer I've bought for MYSELF in nearly 9 years. 11:26:48 To busy buying them for daughters to be able to think about myself. 12:27:20 --- quit: gravicappa (Ping timeout: 252 seconds) 13:14:09 --- join: actuallybatman joined #forth 13:51:37 --- quit: ovf_ (Ping timeout: 250 seconds) 13:53:46 --- join: dave0 joined #forth 13:54:22 maw 13:55:15 --- quit: dnm (Ping timeout: 258 seconds) 13:55:19 --- quit: guan (Read error: Connection reset by peer) 13:55:21 --- quit: rann (Ping timeout: 245 seconds) 13:55:32 --- join: guan joined #forth 13:55:32 --- join: dnm joined #forth 13:56:35 --- join: ovf joined #forth 13:58:02 --- join: rann joined #forth 14:13:14 --- quit: pbaille (Remote host closed the connection) 14:13:50 --- join: pbaille joined #forth 14:17:54 --- quit: pbaille (Ping timeout: 240 seconds) 14:28:17 --- join: pbaille joined #forth 14:33:35 --- quit: pbaille (Ping timeout: 268 seconds) 14:46:53 --- join: pbaille joined #forth 14:48:30 --- quit: mtsd (Ping timeout: 252 seconds) 15:06:39 --- quit: dave0 (Quit: dave's not here) 15:21:08 --- quit: pbaille (Ping timeout: 240 seconds) 15:30:15 Howdy dave0. 15:33:47 --- join: pbaille joined #forth 15:38:22 --- quit: pbaille (Ping timeout: 252 seconds) 15:49:48 --- join: pbaille joined #forth 15:54:49 --- quit: pbaille (Ping timeout: 240 seconds) 16:18:23 So, calculator groupies - anyone know if the TI nSpire CX is an interesting tinkering target? 16:25:28 Ah, I see this: 16:25:30 https://hackspire.org/index.php?title=Main_Page 16:32:31 --- quit: joe9 (Quit: joe9) 16:55:41 --- join: joe9 joined #forth 16:59:03 --- join: dave0 joined #forth 16:59:56 maw 17:52:14 --- join: pbaille joined #forth 17:57:11 --- quit: pbaille (Ping timeout: 252 seconds) 18:13:26 KipIngram, i stopped with TI at TI-89 which thr last one to support native code execution 18:14:18 there are exploits for nspire but then ti patches them and the stop working until they find another loophole 18:15:31 so i would say no not a great target but it can be made to work especially if youre ok not having newer OS features 18:16:20 HP also doesnt allow it. check out Casio. they provide a C compiler. migjt be your best bet 18:17:16 also they have python in rom and can run Xcas which is the same CAS in the HPs anyway 18:24:31 That's good info. I just found an nspire that one of my daughters used in high school while cleaning out a drawer this afternoon. 18:24:38 Just thought I'd... "investigate." 18:25:14 oh very nice. if youve got one and arent looking to buy then that makes it easy 18:25:15 I've never really understood why companies are so uptight about that sort of thing. 18:25:26 I mean, so what if someone wants to hack their calculator? 18:25:49 Seems like that just makes market demand higher (a little). 18:26:12 Once they sell it to me, what's their interest in what I do with it? 18:26:27 that was very much the attitude for decades. companied provided compilers and docs to make hacking easy 18:27:06 but now engineers dont use them since technology has changed. all thats left is the education market 18:27:21 Yes. 18:27:47 if you allow hacking, the test mode features can be disabled and people can cheat 18:27:57 Ugh. 18:28:09 That makes sense, but it's still a bummer. 18:28:40 so if you really wanna hack, get an HP or TI from before the market shift or get a casio 18:28:55 Makes sense. 18:29:24 Well, I'm not just burning to do it - I just found the thing and thought it was worth at least finding out what was possible. 18:29:34 And the answer is "not much." :-) 18:30:06 i saw a gen 1 HP prime on craigslist for $40 last week and turned it down. i just domt want it if i cant run code unless its su 18:30:13 What I was actually looking for this afternoon, and found, was that little tiny thumb drive Cortex M4 gadget I bought a year or two ago. 18:30:14 per cheap 18:30:34 Now that I've got a new computer that will have working USB ports on order, I'll be able to do stuff with that sort of thing again. 18:31:34 I've thought about porting my Forth to it. 18:32:26 It's got the right sort of resources to land where a mid to late 1990's PC might have landed. 18:32:29 Somewhere in there. 18:33:03 My idea was to have it be able to sleep - you'd just plug it into a computer and do stuff directly on the stick, and then just unplug it and carry it away. 18:34:24 I was hoping to get it so it could do multiple sessions at once, organized kindn of like a Gnu Screen set of windows. 18:35:04 The thing is TINY - you could come really close to covering it up with a quarter. 18:39:10 --- quit: dave0 (Quit: dave's not here) 18:45:14 thats really neat. have a link? 18:52:48 Yeah. It may be obsolete now, but lemme see if I can dredge something up. 18:52:50 one sec. 18:56:14 --- quit: boru (Ping timeout: 240 seconds) 18:57:08 Here you go: 18:57:10 https://www.adafruit.com/product/3800 18:57:55 The way I liked to describe is that it had RAM and storage resources similar to the first IBM PC I ever owned, and about 20x the clock speed. :-) 18:58:37 It shipped with a little Python setup that you can use to program it right away, but I'll be interested in re-flashing it. 19:10:22 That brought about a fairly major change in the last Forth. It had a simple block pool memory allocator. I was thinking in terms of running on a normal desktop environment, so I just set the page size to 64k and figured each session would only ever need one page. 19:10:51 But that little dongle was more memory challenged, and I decided if I wanted to get to have multiple sessions on it I'd need to use much smaller pages. 19:11:06 So, I did, and then coded it so that the dictionary could grow across page boundaries. 19:11:24 I ran it with 4k page size most of the time I used it. 19:12:34 But on the transition to MacOS Mojave something happened to the tool chain and that Forth stopped working. I troubleshot it down to the memory allocator and fixed it well enough to make it run, but I'm mostly just doing the new one. 19:13:41 I'm keeping the memory management a lot simpler this time. 19:13:57 Apple constanntly dicking with their tool suite is one of the reasons I decided to get a new computer. 19:14:20 I swear sometimes it feels like Apple doesn't really want you to write software for their machine. 19:16:03 What I'll have to do now is decide whether to continue forward with this "offset based" Forth design, or change it to use absolute addresses, since with Linux I can do that (I think). I may keep it using offsets just so it'll run both places - we'll see. 19:16:42 Fortunately I already have all of the Linux syscall and ioctl values from the last time, so flipping that all over shouldn't be too bad. 19:37:57 --- quit: sts-q (Ping timeout: 246 seconds) 19:40:37 --- join: dave0 joined #forth 19:45:20 --- quit: dave0 (Client Quit) 19:49:37 --- join: sts-q joined #forth 19:54:26 --- join: pbaille joined #forth 19:58:34 --- quit: pbaille (Ping timeout: 240 seconds) 20:25:59 --- join: pbaille joined #forth 20:30:38 --- quit: pbaille (Ping timeout: 252 seconds) 20:57:46 --- join: pbaille joined #forth 21:01:06 --- quit: sts-q (Quit: ) 21:01:34 --- join: sts-q joined #forth 21:02:18 --- quit: pbaille (Ping timeout: 260 seconds) 21:13:32 --- quit: proteus-guy (Ping timeout: 252 seconds) 21:15:55 can now specify window with / height and their coordinates as a percentage of the screen width/height :) 21:16:35 really im just doing low hanging fruit here, i should be trying to integrate unit testing but thats not something thatas going to be easy for me 21:25:28 --- join: proteus-guy joined #forth 21:26:32 --- join: wineroots joined #forth 21:29:19 --- join: pbaille joined #forth 21:31:30 --- join: mtsd joined #forth 21:33:34 --- quit: pbaille (Ping timeout: 240 seconds) 21:46:42 --- join: pbaille joined #forth 23:11:05 --- join: gravicappa joined #forth 23:47:36 --- quit: wineroots (Remote host closed the connection) 23:59:59 --- log: ended forth/21.05.01