00:00:00 --- log: started forth/19.02.18 00:01:21 the_cuckoo, yeah I don't mind the "embedding" of forth into C++ at all and am a big fan of C++ in fact. (to the shock and dismay of so many) 00:02:54 I'm curious, however, how this plays out in terms of overhead in the execution of the C++ code vs had a person just written their app directly in C++. Have you measured this at all? My concern would be that you've added more indirection within the rpany class library but didn't get rid of the cost of c-style function calls on top of it. 00:03:00 heh - i don't really get the sniffiness to it - historically i agree that c++ started off poorly (little more than a vanity project), but these days its quite a different beast 00:04:37 Anyone who's ever head Bjarne describe the motives behind his efforts should really see what he was doing was absolutely valuable and right. There could have been different ways of going about it but they would have had very different results. Look at how the C++ iso efforts have greatly enhanced C's core language. C was never going that way on its own. 00:05:56 When I see rpany my first impression is that this is a useful implementation of a forth-like language interpreter which can ultimately be turned into a forth-like language compiler. 00:05:58 well, it all depends at what level you're using it - there is overhead involved, in particular, loops are slow - but the way i see it, is that you can use the language to prototype and plug gaps which the c++ functions don't provide - if performance is an issue, you can wrap a c++ function to do th heavy lifting 00:06:51 --- join: dys (~dys@tmo-102-218.customers.d1-online.com) joined #forth 00:08:32 i also think it could form a fully compiled language too - but the implementation (as a header only lib) does constrain me a little :) - still, that's just a detail 00:11:22 as an example relating to perfmance - 0 1000000 0 do i + loop . - takes about 3x as long as a python implementation - a function in c++ which sums the numbers from 0 to 10000000 is about 100x faster than c++ 00:12:07 hence if you expose a c++ function to replace the loop, you get the c++ execution time 00:13:13 s/that c++/in c++/ 00:15:44 as for c++ - yes - i agree - it's come on a long way and has a lot of maturity now, has many interesting concepts and its continued evolvement (esp wrt to its adoption of much of boost) is very welcome 00:18:34 biggest downside is speed of compilation, explosive/unclear errors and warnings during compilation and it often being hard to navigate unfamiliar codebases (all relative of course - most codebases take time to understand) 00:22:10 --- quit: spestov (Ping timeout: 255 seconds) 00:29:22 --- quit: dys (Ping timeout: 255 seconds) 00:31:44 ... or to put it another way, it's perfectly fine to put together filter graphs which do really heavy processing of 4K video and iterate through those graphs, but i wouldn't attempt to write anything in rpany which attempts to manipulate a single 4K image :) 00:33:26 c++ aint interactive, a major disadvantage 00:38:00 --- join: xek (~xek@178.19.178.109) joined #forth 00:39:03 yeah - the idea with rpany is that you get an interactive c++ - or more specifically, you get access to a subset which you can define 00:39:10 what about cling? ,) 00:39:25 not that I have any love for c++ 00:39:25 cling isn't someting i've come across 00:39:48 it is a c++ repl developed on cern afair 00:39:58 ah - interesting 00:42:16 well, i haven't done anything with it yet (or even documented it), but i do have a mechanism for dropping specific c++ containers on the stack - like: https://gitlab.com/lilo_booter/rpany/blob/master/include/rpany/vocab/vector.hpp 00:42:58 will revisit and expand this one at some point 00:47:36 looking at cling - heh - no - that is what not what i'm trying to do at all :) 00:51:42 --- join: spestov (~spestov@cpe-67-245-201-127.nyc.res.rr.com) joined #forth 00:53:04 oh i didn't know clang was sponsored by apple 00:57:00 yeah - and clang is pretty nice - clearer than c++ for warnings/errors (or it was last time i used it) 00:57:08 sorry - g++ 01:24:43 --- quit: spestov (Ping timeout: 246 seconds) 01:32:49 and another domain i want to look into - 3d modelling/printing - basically, you're manipulating a 3d space - the smallest unit is a voxel (3d pixel) which you could simply create with voxel - or voxel translate - a voxel is just a simple 3d object - more complex can be imported directly using, say, an obj file - yoda.obj center 0.5 scale etc 01:34:12 like a postscript type of thing 01:36:03 i wrote a prototype of this some years back - using the utterly wonderful and bizarre https://openjscad.org/ project :D 01:36:54 i can hunt out the prototype if anyone is interested - was implemented in javascript (me, i'm entirely agnostic to languages - will mostly happily use anthing) 01:48:51 not a stack thing, but this was my attempt at customisable cases for single board computers - https://openjscad.org/#http://www.geminidev.be/3d/arduino.jscad - thought it was funny and works quite well (turn on 'instant update' to allow interaction with the panel on the left) 02:03:20 --- quit: ashirase (Ping timeout: 245 seconds) 02:09:53 --- quit: xek (Ping timeout: 268 seconds) 02:10:12 --- join: ashirase (~ashirase@modemcable098.166-22-96.mc.videotron.ca) joined #forth 02:15:53 --- join: rdrop-exit (~markwilli@112.201.168.172) joined #forth 02:18:37 --- join: xek (~xek@178.19.178.109) joined #forth 02:21:25 --- quit: proteusguy (Ping timeout: 255 seconds) 02:24:49 --- quit: xek (Ping timeout: 272 seconds) 02:27:54 --- join: xek (~xek@178.19.178.109) joined #forth 02:34:24 --- quit: xek (Ping timeout: 244 seconds) 02:37:37 --- join: proteusguy (~proteusgu@cm-58-10-208-131.revip7.asianet.co.th) joined #forth 02:37:37 --- mode: ChanServ set +v proteusguy 02:40:49 Have you ever worked with opencv? It is a C++ library, and instead of having clear errors like "Matrices must be same size", it outputs random assertions that are somewhere in the code. 02:41:26 "OpenCV Error: Assertion failed (m.dims >= 2) in cv::Mat::Mat, file " 02:41:55 Then you have the fun job do go into that source file and check out why it failed exactly. 02:42:32 "OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /home/travis/miniconda/conda-bld/conda_1485299292920/work/opencv-3.2.0/modules/imgproc/src/color.cpp, line 9748" 02:42:36 yeah - i've used it, but not recently - i used it a filter for face/object recognition - worked well, but opencv has moved on a lot since 02:42:58 I used it in my Bachelor thesis and my first job :þ 02:43:28 cool :) - it's a very, very powerful library these days - keep meaning to revisit, but never find the time 02:45:21 there was an attempt by one of my colleagues to use a more recent version - also seemed to work, but was ultimately rejected (some issues with supporting it on some rather ancient production systems which the customers weren't willing to replace) 02:49:29 Yeah, opencv has just so many features. You just drop it into a project and suddenly you can detect all kinds of things. 02:51:13 yup - but those bloody ancient systems also restrict us to older c++ for our production stuff - pre c++11 - bloody nuisance :) - we can use recent stuff for our dev tools though, but of course, it excludes a lot of bleeding edge c++ libs (hence we tend toward wrapping c libs) 02:51:54 Just rewrite it in Forth ;þ 02:52:02 :D 02:56:16 for now, i'm starting to look into 3 projects - raspberry pi/embedded use of rpany (should allow control over gpio pins with a view to describing the pins for a specific circuit as a bunch of words), 3d modelling/printing and a general client/server approach for sandboxed access to any rpany extending project 02:56:47 opencv will have to wait :) - and i'm unsure which of those to tackle first - probably the raspi stuff as it's the simplest 03:01:57 it's far too heavy to run on an arduino, but in that case, i can run the rpany stuff on another computer and just have a small/simple protocol implemented on the arduino - hmm - so that's a 4th project :) 03:22:07 --- join: spestov (~spestov@cpe-67-245-201-127.nyc.res.rr.com) joined #forth 03:54:52 --- quit: spestov (Ping timeout: 246 seconds) 03:55:58 Weird, I thought I'd said good morning 03:56:01 morning Forth gang 03:56:46 Good evening WilhelmVonWeiner 03:57:58 Just replaced a 10 FOR @+ ( one of my words) NEXT loop with @+ 10 times 03:58:28 moves it from runtime to compile time if that helps in some way 03:58:43 keeps control flow logic easier to follow in your head 03:59:17 : @+ DUP @ SWAP 1+ ; ? 03:59:42 aye 04:01:09 Doesn't look right corecode 04:01:48 rdrop-exit: you mean @+? 04:01:54 yes 04:02:40 @+ ( addr - n addr) 04:03:10 you return the value at addr, and addr+1 04:03:36 I'm used to seeing @+ ( a -- a' x ) with a being advanced by the cell width 04:03:57 ah true that's probably how I'd usually implement it 04:04:04 I'm using chars though. 04:04:28 b@+ ( a -- a+1 b ) 04:04:30 my mate is writing a sudoku solver in C and so I'm going to Forth one up without doing *any* research 04:04:46 will rename to c@+ good shout 04:05:46 I use @+ for cells, b@+ for bytes 04:06:32 On a 32 bit system @+ would be ( a -- a+4 x ) 04:06:35 c for consistency 04:07:18 characters aren't necessarily single bytes in some systems, so I prefer b@ for bytes 04:07:21 : @+ DUP @ SWAP [ CELL ] + ; 04:07:44 wrong braces? whatever 04:07:54 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 04:08:05 rdrop-exit: i agree that your version makes more sense for an implementation 04:08:32 but to read a whole bunch of values on the stack, the other way around is probably easier 04:08:47 god I hate remembering to type LITERAL 04:08:50 my cpu couldn't leave addr+1 on top 04:09:01 I never would read a whole bunch of values onto the stack 04:09:10 yea, but that was the code 04:09:30 rdrop-exit: Good point on b@. I don't really deal much with those multi-byte characters, but I think b@ and b! has more consistency. 04:10:25 I *might* use the stack to reverse a set of values or something, but it's clearly not a scalable solution - you'd need to know the boundaries of what you might encounter. 04:10:50 To veryify a segment on a sudoku grid the numbers need to sum to the number of spaces in the segment 04:10:59 so I just read em all and sum em 04:11:10 Ok, that's a pretty bounded situation. 04:11:19 I mean, how big of a sudoku is someone going to do? 04:11:28 On a 7-bit ASCII system my c@ would be : c@ ( a -- c ) b@ $ 7f and ; 04:11:40 unless rdrop-exit you'd just `read + read + read +` like a `reduce` 04:12:10 What's the $ ? 04:12:25 It's my hex prefixing word 04:12:26 he's a Haskeller! It's a fold! He's trying to fold! 04:12:31 Lynch him! 04:12:39 Oh, I see - my line split there so I saw it by itself. 04:12:45 Should have put that together. 04:13:12 Well, wait - do you have a space between $ and 7F? 04:13:22 I see a longer line higher up... 04:13:32 With @+ you're advancing through memory getting a cell, disposing of it somehow, then the address of the next cell is sitting there ready for the next one. 04:13:52 Yes, I've got some predecrement/postincrement words like that. 04:13:54 Yes, there's a space between 04:13:54 It's handy. 04:14:02 So $ is a word of its own that looks ahead? 04:14:23 Yes 04:14:25 Interesting. 04:14:32 I tend to shy away from lookahead words. 04:14:44 My number converter will accept strings like this: 04:14:47 Forth word $ hacks a bank, gives you all the money. 04:14:50 : 04:15:04 And I allow x: and b: as shortcuts for hex and binary. 04:15:11 It'll handle bases all the way up to 62. 04:15:22 0-9, A-Z, a-z. 04:15:34 If the radix is 36 or less, then it's case insensitive on the letters. 04:16:04 For higher radix A-Z and a-z are separate. 04:16:09 bbiab 04:17:37 Where do you ever use radixes other than 2, 8, 10 and 16? 04:18:15 back 04:19:22 Never really, but I have a historical interest in old Sumerian astronomy - I've read that their way of calculating had higher accuracy for some things. They used base 60. Mostly, though, it was just a coding exercise. It was easy enough to do, so I did it. 04:19:39 john_cephalopoda: Airport identification codes :^) 04:19:39 I never use 8, really - my common use of hex and binary led to the x: and b: shortcuts. 04:20:07 My interpreter just does decimal, I have $ as word when I want hex, and % when I want binary. I also have factors to make prefix words up to base 40, but never use them. 04:20:15 Basically I just start out in decimal, and if I see a : I "restart" with the value accumulated so far promoted to the base. 04:20:31 So I put 10 on the stack to start with, in the "base" slot of the stack frame. 04:20:42 Then on : I move the accumulator to the base, zero the accumulator, and start again. 04:23:32 written in forth? 04:24:09 SWMBO just arrived, gotta go, catch you all later. 04:24:18 --- quit: rdrop-exit (Quit: Lost terminal) 04:24:32 SWMBO? 04:25:03 "She Who Must Be Obeyed" LOL 04:25:16 corecode: Yes, it's in Forth. Very highly factored - it's about 26 definitions, only one of which winds up in the dictionary, and none of which are longer than 50 chars or so. 04:25:30 It's very vertically integrated - makes a lot of use of my conditional returns, multi-level returns, etc. 04:25:53 I was making a conscious effort to factor my code more, and it was a "training exercise" of sorts. 04:26:19 okay 04:26:37 how do you make words that don't make it into the dictionary? 04:26:38 I don't really have the system to Forth source development level yet - I wrote the Forth as comments and then hand-translated it to assembly. 04:26:40 But rigorously. 04:26:58 I have a word :: that does what : does, but puts the headers on a side list. 04:27:11 They behave entirely normally, until I run the word ::WIPE and discard them. 04:27:11 and then? 04:27:50 ah, so that provides some sort of scoping 04:27:53 So of those 26 defs, 25 are done with :: and just NUMBER with : 04:27:56 i like that 04:27:56 Yes. 04:28:01 I do too. 04:28:12 not sure whether i like the exact implementation 04:28:15 I like it better than nested defintions, because I can use my temporary words in multiple other words. 04:28:24 I'm sure there are lots of ways of doing it. 04:29:33 I wanted something, though - Forth encourages us to factor, and without some sort of trick like this that winds up polluting the dictionary with a lot of stuff you're unlikely ever to use. 04:29:45 yes 04:30:17 so that side list lives where 04:31:48 Well, I don't exactly know yet. As I mentioned, I don't have the system that far a long yet - that "source" is just comments in my assembly. In the assembly I have different macros for defining "in dictionary" and "not in dictionary" words. I've thought that I may just allocate a heap page to put the information in, and then ::WIPE will unlink it and free the heap page. 04:31:58 Another thing that can probably be done a lot of ways. 04:32:22 Those words still need a header (that's where the CFA and PFA live). 04:32:26 HEAP 04:32:29 HE SAID HEAP 04:32:33 Just no name reference and no link. 04:32:34 :-) 04:32:37 Yes. 04:32:40 It's a simple dumb heap. 04:32:43 Fixed size pages only. 04:32:47 No garbage collection. 04:32:57 I'm supporting multiple tasks, multiple processes, etc. 04:33:06 So there needs to be SOME kind of flexible memory management. 04:33:07 you do or you will 04:33:29 I haven't run them yet, but all of the hooks are in place. 04:33:41 what's the difference between a task and a process? 04:33:42 Everything is based off of the base address of process and task blocks. 04:33:49 you have separate address spaces? 04:34:05 A task has its own stacks and its own execution path. 04:34:18 A process can own as many of those as it likes. 04:34:25 Each process has one input and output stream. 04:34:49 Not enforced separate spaces. 04:35:00 okay 04:35:06 At any given time the base process and task addresses live in certain registers. 04:35:16 Things are appropriately relative to those register values. 04:35:34 The first cell of each task block identifies its owning process. 04:36:13 So to switch tasks I 1) save registers to the stack, 2) change the task base address value in that register, 3) pop that tasks registers, 4) continue. 04:36:29 Actually I don't have process base in a register - task base is r14 and process base is [r14]. 04:37:00 yea, classic task switch 04:39:16 Certain variables are "task variables." Each task block has a copy, and they're referenced relative to r14. 04:39:31 Other variables are process variables - those live in the process block and are referenced relative to [r14]. 04:39:57 And then a few things are system variables - those are referenced relative to r15. I developed this on MacOS, and it has pretty stringent relocatability requirements. 04:40:11 I had to work primarily with offsets - my definitions are lists of offsets from the base address of the entire system. 04:40:24 --- join: xek (~xek@user-94-254-224-236.play-internet.pl) joined #forth 04:40:29 I also put my NEXT right at the beginning, so r15 also points to it. 04:40:38 That makes it so I can just jmp r15 to run next. 04:41:15 It was all sort of annoying when I was first figuring it out, but it works and the performance penalty vs. working with absolute addresses is pretty modest. 04:41:18 There, but not so awful. 04:41:37 I've now ported to Linux, and there I could remove that requirement, but I probably won't. 04:42:34 Anyway, the "heap" just regards free memory as a bunch of 4k pages, and hands them out and collects them back in a very simple way. 04:43:02 4k is plenty for a task block - that allows roomy enough stacks. 04:43:16 Processes start out with one 4k page for local definitions and another for headers. 04:43:25 If those become full, it automatically allocates additional ones. 04:44:36 That heap grows upward from the bottom of free RAM. I do expect eventually to have a "real" heap that grows down from the top of free RAM, but that won't be something I think of as part of the "base system." 04:44:47 That will be something fired up for applications that require it. 04:47:39 --- join: xek_ (~xek@user-94-254-224-236.play-internet.pl) joined #forth 04:47:49 --- quit: xek (Remote host closed the connection) 04:54:15 oh you fancy big systems people 04:54:22 Heh heh. 04:54:56 Well, I've got aspirations for being able to write an app that gives me a Matlab/Octave type environment. I'll be wanting to manipulate vectors, arrays, etc. - stuff of variable size. 04:55:05 A proper heap just strikes me as being necessary. 04:55:26 i think that app is called FORTRAN 04:55:35 The Forth stack would wind up a mixture of integers and floats, along with pointers to larger objects. 04:55:44 And I'll have some way of tracking what each of those items means. 04:55:59 Octave is a pretty nice environment. 04:56:19 i wonder how i could implement this temp dictionary in my forth. i only have one memory and memory pointer tho 04:56:40 pretty sure that octave is matlab is fortran 04:57:09 Well, a "cheat" solution would be to put a flag in the headers telling you whether the word was wipable or not, and then ::WIPE would just "link around" those. You'd still be using the memory for the names, but they wouldn't be in the search path. 04:57:25 yes 04:57:29 I think I can do better, but that would get at least some of the benefits. 04:57:35 that wouldn't solve half of the issue 04:57:41 Right. 04:57:43 (memory use) 04:57:47 Yes. 04:58:05 You could just do something like PAD and temporarily use RAM way up above the dictionary. 04:58:16 The thing that complicates it is that you do need ot keep some of the header. 04:58:24 It's only part of it that you're getting rid of. 04:59:06 corecode: i put temporary buffers near the end of the memory block. (currently just a rotating string buffer space, but in a prior forth implementation, I had space there for temporary headers as well) 04:59:14 I haven't actually DONE it yet - it may prove tedious. 04:59:28 --- join: xek__ (~xek@user-94-254-224-236.play-internet.pl) joined #forth 04:59:46 I don't actually have my names in the headers - I have a "symbol table" that they live in, and the headers contain an index into that table. 05:00:03 yea that is easy 05:00:09 if you have a parallel section 05:01:40 --- quit: xek_ (Ping timeout: 250 seconds) 05:06:23 --- quit: xek__ (Remote host closed the connection) 05:06:34 --- join: xek__ (~xek@user-94-254-224-236.play-internet.pl) joined #forth 05:08:56 coecode: Ok, so for a :: word, all I lay down in the "real" header section is a CFA/PFA pair. I put the name reference and the link in the temporary space. But I will also put there a pointer to the "real" CFA/PFA pair. 05:09:24 And the interpreter / compiler will have to regcognize that - it will say "oh, this header is in temporary space" and apply the extra level of indirection when interpreting or compiling. 05:09:49 Then when I ::WIPE I'll have to correct all the links. 05:10:57 When I'm "pointing at a header" I'm pointing at the name reference field, and the CFA/PFA usually immediately follows that. 05:11:11 So instead of hcell + to get to those, I'll need to do hcell + h@. 05:12:18 I could recognize temporary definition by just seeing that it's in a particular memory range, but more likely I'll just put a flat in the high bits of the link field. 05:12:24 flag 05:12:54 That would likely lead to simpler code. 05:13:30 ... hcell + ?temp if h@ then ... 05:14:56 Cool - thanks for talking a little around this; I'm happy to have actually put together a real plan for it. :-) 05:16:07 In theory you could have an unlimited amount of temp definitions, so I'll have to be able to support multiple heap pages of those things. In practice I doubt I'd ever use more than one, though - we're just talking 12 bytes per temporary word in that wipe space. 05:16:39 So one page would hold 300 of them. Maybe I'll just allow the one page - it's hard to imagine ever using that many at once. 05:16:56 Then I could just have a variable that points to it, or is null otherwise. 05:20:29 --- quit: nighty- (Quit: Disappears in a puff of smoke) 05:46:27 --- quit: dne (Remote host closed the connection) 05:47:57 --- join: dne (~dne@jaune.mayonnaise.net) joined #forth 05:51:57 --- join: spestov (~spestov@cpe-67-245-201-127.nyc.res.rr.com) joined #forth 06:24:52 --- quit: spestov (Ping timeout: 255 seconds) 06:29:27 base 12 actually makes for some interesting math. 06:51:15 is your forth dozenal by default 06:51:31 can't say that didn't cross my mind at one point just to be a hipster 07:07:45 met a guy on a flight the other day who was a material engineer/scientist - was really trying to sell base 12 to me :) (no idea how the conversation got there, but iirc, it was before we took off :)) 07:08:01 hehe 07:09:00 as you can imagine, it was a really interesting conversation :) (and, yes, i mean that in a non-sarcastic manner - we spent most of the flight discussing maths :)) 07:09:11 nerds 07:09:15 :D 07:09:26 nuuuurds 07:09:48 say the people in #forth... 07:09:53 lol 07:10:00 :p 07:10:13 say the people in #forth who have each written their own forth interpreter just because they can 07:10:25 * crc continues working on his block editor 07:11:19 (forth probably has one of the highest implementations to users ratios of all languages) 07:11:26 yea 07:11:35 yup 07:12:13 it that probably exceeds 1 07:12:38 * tabemann has two forth implementations under his belt 07:13:27 does a meta compiler count? 07:13:51 * crc has done at least 17... 07:13:59 ony 1 here (z80) was probably incomplete - but i was just a teenager at the time - since then, i've used approaches inspired by it in many different ways in many different things 07:15:14 though most of mine were never released, and the concepts that worked out are mostly folded into retro 07:17:37 I'm probably going to write a fast x86-64 internally-SRT/NCI version of hashforth once I'm done with is slow pure-TTC version 07:18:11 or maybe a fast ARM internally-SRT 07:18:20 /NCI version 07:19:12 anyways, I should go - time for work 07:19:18 see ya guys 07:19:31 later :) 07:22:12 am currently confused as hell with work - trying to play video from an https url (MXF container specifically) - all fine, but if you pause, walk away for a couple of minutes and hit play, it fails - server disconnects us, which is fine - we have a reconnect going on - but all other formats appear to work (MP4, MPG etc) - just this one failing 07:22:51 seem to lose some bytes somewhere, but can't track it down 07:23:39 http (and even ftp) has similar stuff going on, but has no issues at all - 's annoying 07:24:17 --- quit: tabemann (Ping timeout: 268 seconds) 07:52:32 bytes? 07:52:37 or frames 07:55:29 --- nick: lchvdlch_ -> lchvdlch 07:55:39 --- quit: lchvdlch (Changing host) 07:55:39 --- join: lchvdlch (~nestr0@pdpc/supporter/active/lchvdlch) joined #forth 08:02:27 --- quit: dave0 (Quit: dave's not here) 08:11:50 --- join: pierpal (~pierpal@host254-58-dynamic.44-79-r.retail.telecomitalia.it) joined #forth 08:22:07 --- join: spestov (~spestov@cpe-67-245-201-127.nyc.res.rr.com) joined #forth 08:56:07 --- quit: spestov (Ping timeout: 250 seconds) 09:07:22 bytes i think - breaking the decode/demux 09:22:01 whee.. now to test the flow-control ops. 09:30:59 --- join: spestov (~spestov@cpe-67-245-201-127.nyc.res.rr.com) joined #forth 10:17:40 wheeee... control-flow works.. Now, on to enter/exit 10:18:48 --- quit: xek__ (Remote host closed the connection) 10:20:18 --- join: xek__ (~xek@user-94-254-224-236.play-internet.pl) joined #forth 10:20:18 --- quit: xek__ (Remote host closed the connection) 10:20:33 --- join: xek__ (~xek@user-94-254-224-236.play-internet.pl) joined #forth 10:21:38 Heh... I am getting close to "goddamnit, there must be a 'better-way' than assigning bytes in the array.. Oh, yeah - we call that an assembler." *sigh* 10:24:29 --- quit: xek__ (Read error: Connection reset by peer) 10:24:37 --- join: xek__ (~xek@user-94-254-224-236.play-internet.pl) joined #forth 10:26:57 --- join: Slith (~manjaro-u@193.119.60.99) joined #forth 10:30:56 exit 10:30:57 --- quit: xek__ (Remote host closed the connection) 10:31:08 --- quit: Slith (Quit: Konversation terminated!) 10:31:37 --- join: Slith (~manjaro-u@193.119.60.99) joined #forth 10:34:20 --- quit: spestov (Ping timeout: 246 seconds) 10:46:06 --- quit: pierpal (Quit: Poof) 10:46:24 --- join: pierpal (~pierpal@host254-58-dynamic.44-79-r.retail.telecomitalia.it) joined #forth 11:09:40 --- quit: Slith (Quit: Konversation terminated!) 11:13:04 --- join: spestov (~spestov@cpe-67-245-201-127.nyc.res.rr.com) joined #forth 11:20:11 PoppaVic: what are you up to? 11:21:20 corecode: my slower, lazier, more considered #forth vm 11:22:02 I got at least 4 mcu I want to tether, and it sounded like a good reason to revive my ancient history. 11:23:08 So far, this is only implemented in gcc under linux - but it has to survive on some AVR's and a few atmel SAMD's 11:24:07 --- quit: gravicappa (Ping timeout: 255 seconds) 11:26:50 corecode: my entire effort is to completely ignore the interpreter and i/o so far: what must "a forth" accomplish? Since I am implementing a token-code, there is a SYS call for "microcode" (natural host code), but I worried about gymnastics, stacks, call/ret/jmp/math/logic/bin/compares, etc 11:49:49 --- quit: spestov (Ping timeout: 240 seconds) 11:55:33 --- join: spestov (~spestov@cpe-67-245-201-127.nyc.res.rr.com) joined #forth 11:59:50 --- quit: spestov (Ping timeout: 250 seconds) 12:34:08 --- join: spestov (~spestov@cpe-67-245-201-127.nyc.res.rr.com) joined #forth 12:35:33 8 FOR + NEXT or + + + + + + + + 12:36:51 : sum FOR + NEXT ; ... 8 sum 12:36:59 I've not done a loop-op. Nice idea, though 12:37:20 zy]x[yz: I only use it in one word 12:37:22 zy]x[yz: sounds like a nice failstew in the making 12:37:39 failstew? 12:37:54 I've never been sold on the do/loop, myself. 12:38:32 zy]x[yz: no worries. I was typing too fast: it's the usual CAVEAT. 12:38:53 what 12:39:12 * PoppaVic pats zy]x[yz on his noggin... 12:39:26 it's like you're not communicating in human language 12:39:31 You never explained "fail stew". 12:39:53 oddly, I pretty much speak HS engrish.. So, you may have some issues 12:40:13 WilhelmVonWeiner: unroll it if the count is fixed and short enough 12:40:24 what is "short enough" though? 12:40:25 WilhelmVonWeiner: do I need to explain Fail, Stew, or the fact i crawdadded? 12:40:44 zy]x[yz: + + + + + + + + is short enough 12:40:50 fail stew is a stew that failed? 12:40:50 zy]x[yz: depends on the context 12:40:55 WilhelmVonWeiner: looks verbose to me 12:40:55 if the average word length is supposed to be 7 words, is eight +s too long? 12:40:57 + + + + + + + + + + + + + + + + + + + + Is quite long 12:41:35 there's an average word length? 12:41:48 : ++ + + ; : ++++ ++ ++ ; : ++++++++ ++++ ++++ ; there you go 12:41:49 I'd expect this from some half-witted optimizer 12:42:23 That's the Chuck solution, kinda 12:42:52 WilhelmVonWeiner: it's A SOLUTION, but I doubt it's optimal often 12:42:55 : 5X X X X X X ; : 10X 5X 5X ; 12:42:58 yeah except he would have named them _, &, and q, respectively 12:43:13 no zy]x[yz I feel you completely misunderstood the _ 12:43:24 because it's not a NOT gate 12:43:29 or a logical NOT 12:43:36 so why is it named _ 12:43:47 if that's supposed to be an overbar, i will fight you 12:43:54 it is 12:44:02 that is exactly what it's meant to be 12:44:08 * PoppaVic chortles 12:44:08 i'm actually going to fight you 12:44:10 where do you live 12:44:22 kekeke 12:44:24 hot damn, I can get popcorn 12:44:51 only thing dumber than supposed programmers fighting is soyboys 12:44:57 In colorForth it would be M and the shadow block wouldn't mention it 12:45:43 I'd point out no one alive is smart enough to know what "Chuck would do". And then I'd get more popcorn - and add a beer 12:45:57 It's an educated guess 12:46:15 Edumacation is lovely. I look forward to it 12:46:45 "Ten "G"s is simpler than a loop." 12:47:34 WilhelmVonWeiner: I suspect CM has parameters in his head very few grok. 12:48:25 diddling around with bytecode (packed ops), I can already see a lot of wtf;-) 12:51:12 He's not infalliable, but he's not often falliable 12:53:16 zy]x[yz: If you disallowed 8+ char names, then the average would be less than 7. 12:53:18 * PoppaVic sighs 12:53:20 I'm not good with double negation 12:53:29 The average can only be 7 if the max is > 7. 12:53:36 Because we know there are a bunch of 1's and 2's. 12:53:44 KipIngram, no not names, the length of word definitions 12:53:47 YOu don't get it, WilhelmVonWeiner - CM is his own auditor. Ain't no one alive can tell him he's WRONG. 12:53:54 Oh. 12:54:02 unless the word he was defining was nothing but those +s, then that would put the length well over 7 12:54:07 I wouldn't dare 12:54:31 I like seven, because that's what they say our short-term store can hold simultaneously. 12:54:42 yep 12:54:42 WilhelmVonWeiner, that's the same as: He's falliable, but he's also often infalliable 12:54:51 But I'll accept 10 or 11, if the word is nice and clean that way. 12:55:28 I tend to focus on line length more than word count, but I definitely have an aversion to long word names. 12:55:41 I really like symbolic names, rather than alphabetic ones. 12:56:19 KipIngram: Look, if N '+' in a row are "RIGHT" vs "all the shit to start and execute a loop" - go for it 12:56:52 I didn't mean to be arguing against that at all. 12:57:07 I totally agree that sometimes N reps of a word wins, in all respects. 12:57:11 contrary to the loons, that was the point, kip 13:01:12 WilhelmVonWeiner: average definition in the retro stdib is 17 words, or 8 if you consider quotes to be anonymous words 13:02:25 --- join: dys (~dys@tmo-087-19.customers.d1-online.com) joined #forth 13:02:36 quick code to count words in a retro source file http://forth.works/285c4ed977782ad414582eac2c29c7e2 and http://forth.works/c65cf4c90833420ee0a6717fc074aa79 (to count quotes as anonymous words) 13:06:03 (these are probably inflated a little since I'm not filtering out words like {{ ---reveal--- }} which aren't actually used in definitions, just during compilation to control visibility of factors) 13:06:09 --- quit: Guest18112 (Ping timeout: 240 seconds) 13:06:17 crc: all I can say is: "umpty ops may or may not be SMALLER/FASTER than a loop" - I expcet people to compare/test 13:07:01 --- quit: spestov (Ping timeout: 250 seconds) 13:07:01 I can find dumbass everywhere; I expect more from forthers of every stripe. 13:08:44 --- join: rprimus (~micro@unaffiliated/micro) joined #forth 13:10:24 I honestly haven't run across very many cases where I needed some fixed number of loop iterations. Maybe if I wanted to format all the columns of a table the same way or something. But usually loop counts vary based on the specifics of the input data. 13:10:36 PoppaVic: I don't care about the number of ops. I worry more about overall readability 13:11:02 ^ I agree. Length of definition factors into that, but it's just a part of the story. 13:11:10 crc: 8 for + next; done. THat's readable. 13:13:22 + + + + + + + + isn't bad though in this case 13:13:47 I just try to write one-line definitions. As in one line of a traditional Forth 16x64 block screen. 13:13:53 It's a nice length. 13:14:21 But that's because it just happens to be close that that amount of stuff I can easily hold in the fore of my mind. 13:14:34 It's easier to convince myself that the code is right if the definitions aren't too long. 13:14:50 KipIngram: see above. yer not even talkinging with folks that use a block or a byte or.. 13:15:11 Well, I'm not going to be bound by that stuff anymore either on this system. 13:15:13 crc: s:case is a great addition 13:15:19 http://forth.works/e48fa855a4e7c322a3c739ce83cd64a9 has a couple of variation 13:15:20 I've used it a lot 13:15:21 But it just happened to be a friendly length. 13:16:01 PoppaVic: I try to keep lines under 64 chars so they could be put into blocks if needed 13:16:13 ^ Yes. 13:16:25 8 +s is simpler than doing all kinds of FOR NEXT return stack stuff at runtime 13:16:44 I've been reformatting my source to use shorter lines 13:17:23 WilhelmVonWeiner: Folks got dozens of 'tricks'. FOREMOST: write the code; NEXT: make it run right; NEXT: make it run small/fast (take yer pick and stop crying ;-) 13:17:25 Is that the next push with retro, factoring the core code? 13:18:10 WilhelmVonWeiner: cleaning up the core definitions, improving docs, and adding a lot of sample code 13:19:05 Good to know. I will help out if I see anything with which I can 13:19:18 PoppaVic: Before any of that comes "Envision the architecture of the code." 13:19:18 I've added 24 examples since the January release 13:19:32 A lot of problems get solved then rather than after you've written the code. 13:19:50 KipIngram: no, there is "job; do job; do job [better/faster]" 13:20:21 if yer language and processor can't do the job, it pops up in view purty quick 13:20:44 You'll wind up with a better solution if you think it through before you code. 13:21:01 Or code while thinking if you want to, but then you better be willing to throw away some of it. 13:21:22 yup - nothing there surprising to me 13:21:40 Put your feet up and think, or draw pictures, or whatever it is that engages your creation engine. 13:21:56 But *immediately* trying to write production code is pretty much never the right answer. 13:21:56 http://www.ultratechnology.com/method.htm 13:22:01 Just found this page 13:22:04 are you suggesting me to play x-wing at work 13:22:08 Oh, I like that site. 13:22:17 KipIngram: I don't *CARE* wtf it takes to makes folks THINK - well, sans child-abuse/pr0n - i want them to think.' 13:22:25 "10. Write documentation so simple and clear that bugs simply can't happen." 13:22:29 LOL 13:22:42 I love Jeff 13:23:01 WilhelmVonWeiner: "See Spot. See Spot run." 13:23:03 Yeah, the first several of those steps is what I'm talking about. 13:23:54 I love 7. "Continue to return to 1. Until the ideas are "right by design." 13:23:56 Beautiful. 13:24:38 PoppaVic: You can't make them think - they have to make themselves. 13:24:47 I was looking for a quote which was like "The best optimisation is moving code from runtime to compile time, and compile time to design time" 13:25:04 --- join: dave0 (~dave0@193.060.dsl.syd.iprimus.net.au) joined #forth 13:25:19 KipIngram: Agreed, lead them to water - then slit their useless thoats. 13:25:47 hi 13:25:49 WilhelmVonWeiner: I can't argue that 13:25:51 i generally agree but take issue with "Interactively test each Forth word" - it's the only mention of test in the doc and many non-interactive, pre-canned tests will trump that every time 13:25:55 Oh - "If you start at 9 you understand 1% of this methodology." 8-D 13:26:02 Hi dave0. 13:26:17 hi KipIngram 13:26:19 "I agree, but", is why folks die ugly. 13:26:28 :D 13:26:54 i'm not exactly sure what that means though :) 13:26:56 It's hard to write "pre-canned tests" 13:27:05 for Forth words when they're so simple 13:27:24 WilhelmVonWeiner: I am never sure what that means - test-scripts? hand-waving? 13:27:34 you need to write them in parallel with the words is the way i would look at it - check the bounds and edge cases 13:27:54 ensure you get the results you actually want for a given set of inputs 13:28:49 nononono, this is why someone dumbass must write a test-framework - it keeps them employed 13:28:58 I wrote a test harness for my number converter. I made the code compile in GForth - then passed strings through it and compared them to numbers translated by GForth. 13:29:35 It felt like a bit of a cheat, but it uncovered several bugs. 13:29:52 the_cuckoo: idk, sounds pretty interactive 13:30:14 the_cuckoo: I like testing interactively and building up a test suite to look for regressions as I go 13:30:22 WilhelmVonWeiner: I agree that's the best time to write tests, because that's the time you understand your own code best. 13:30:32 I take from that "don't bother fuzzing and wasting your time writing complex analysis tools" 13:30:48 crc: exactly - i tend to do a mix of stuff that way 13:31:20 part of Forth to me has always seemed to be "test against the correct inputs" and focusing on making all your inputs correct, it's why there's barely ever error handling 13:32:14 yeah - i tend to focus on the positives myself 13:34:48 --- join: spestov (~spestov@cpe-67-245-201-127.nyc.res.rr.com) joined #forth 13:38:41 Me too, because most of the code I write is for myself, and if I type in a bogus input and crash it I just re-start it. 13:38:53 I'm not in any sort of "failure is catastrophic" situation. 13:43:14 KipIngram: amusingly, I just finished two days of "wtf?!" tests on the opcodes.. Best, worst; (wtf? try gforth!) - I am not a vendor, I do this for FUN, so - I have no issues with paid-pussies dreaming up tests.. I can still write it in my own shit, gforth or C faster - or laugh at them ;-) 13:43:29 WilhelmVonWeiner, nice read. 14:01:56 I implemented PICK and ROLL, though I have no intention of ever using either: http://forth.works/ae523b721009bdcd86b7fd986cd961d3 and http://forth.works/bc51c530f83c5a0295cdbcd4f7ee75f0 14:02:21 bubububububut.... hw stacks 14:05:27 : swap 1 roll ; : rot 2 roll ; 14:05:40 --- quit: rprimus (Ping timeout: 255 seconds) 14:07:13 dave0: heathen... 14:07:15 dave0: you are, amusingly. missing the point 14:07:32 lol 14:07:40 :-) 14:07:56 : nop 0 roll ; 14:08:03 --- join: rprimus (~micro@unaffiliated/micro) joined #forth 14:08:12 : roll roll ; 14:09:04 :roll a boulder atop yer head; 14:09:42 I hate roll. I'm ok with PICK, though. 14:10:01 I have "hard coded argument" words for PICK up to 6. 14:10:11 So they're as efficient as OVER. 14:10:28 And I have words to do the converse - to store into those items. 14:10:36 Or plus-store or minus-store. 14:10:57 Actually that's not true. Originally that's how those words worked. 14:11:05 But now they work off of my frame pointer instead of the stack pointer. 14:11:12 I've considered having both. 14:11:52 The frame infrastructure is wildly useful. 14:12:16 It really, really cuts down on the stack diddling. 14:13:24 KipIngram: amusingly, my macros will just access their value - or let me change them. omg, I am so evil 14:16:14 That's essentially the same thing I have - I just hand coded them. 14:25:39 i don't think i could even easily do roll or pick on my cpu 14:25:58 would have to do some massive towers of hanoi stuff with the return stack 14:35:20 dave0: that would be *really* inefficient on my forth. swap is a vm instruction. stacks can't be directly addressed, so I have to copy out part or all of the stack to/from ram to implement these words 14:38:08 I think I understand the "don't treat the stack as an array" thing pretty well. First, what if it's a hardware stack? That might not even WORK. And second, why do you need to have that many arguments in your scope? 14:38:11 I agree totally. 14:38:24 Except once in a while, for some problems, you DO have that many arguments in scope. 14:38:33 It's not ALWAYS possible to avoid that. 14:38:52 --- quit: proteusguy (Ping timeout: 246 seconds) 14:39:41 QUERY was a good example for me. Down in there, you have a buffer address, a field size, a number of characters received so far, a latest character, ... 14:40:01 Seems like there was something else too that I'm forgetting right now. 14:40:29 Anyway, in a couple of places in my code I have five or six things I need to have ready access to, and I couldn't figure out a REALLY good way to avoid that. 14:40:35 But that may just be a limitation of me. 14:41:36 my stacks are hardware :) 14:42:30 That's awesome - what hardware are you on? 14:43:39 its a virtual machine for a misc architecture 14:43:57 * crc hopes to eventually implement this in fpga 14:44:11 :-) 14:44:25 I have one I hope to do that with too. 14:44:36 I *could*, at any time, but just seem to always be a little too busy. 14:44:51 Well, I have the outline of one. 14:44:58 Enough to make me feel it's "doable." 14:45:12 Maybe when I retire. 14:45:33 I keep telling myself that this Forth I'm working on now is the OS for that future machine. 14:48:12 Have you done a fair bit of FPGA over the years? 14:48:48 I've never used an FPGA :( 14:49:07 Oh, well, I praise your ambition. :-) 14:49:25 crc: TinyFPGA is a great platofrm 14:49:29 I'm pretty strong in "logic," so please ask questions anytime you like. 14:49:50 It's what I've always considered my primary skill. 14:50:18 The rest is just "stuff I've picked up along the way." 14:50:28 I got no clue about FPGAs and I have to do something with VHDL in uni now. 14:50:39 I hang out in here, but I'm really NOT a professional programmer. Mostly just a hack. 14:50:44 crc: or a DE-0 NANO 14:50:48 --- quit: dave0 (Quit: dave's not here) 14:51:00 john_cephalopoda: buy yourself a DE0 Nano for uni 14:51:05 john_cephalopoda: I like Verilog better. VHDL is so... involved. 14:51:35 Verilog seems to be more about "the common sense essentials." 14:51:43 VHDL is FORMAL. 14:52:16 Have you done much multi-threaded programming? 14:53:20 Honestly, though, my history predates either - for me it was schematics. 14:53:43 so I figured out how to debug traps in openfirmware, sort of 14:53:58 two helpful words are .instruction ftrace 14:54:00 I prefer working on low-level software over doing FPGA stuff. 14:54:00 I haven't done a lot of multithreaded programming on anything but iOS 14:54:32 it looks like my sparc's framebuffer card might be bad, because the bad addresses are all pointing into the framebuffer 14:54:49 I ordered a serial cable so I'm going to try reproducing the issue with a serial console once that arrives 14:54:52 Well, anywhere ought to suffice. If you're used to thinking about how these threads really are all running at the same time, and so you can no longer rely on the sequential layout of source lines to correspond to global timing, then making the jump to what's going on in FPGA circuits shouldn't be too hard. 14:54:59 Think of each gate as a "thread." 14:55:13 I went the other way - threads were gates. 14:55:42 But both are basically about shit happening before, after, or simultaneously, and you don't know which. 14:55:53 So it has to work in all those cases. 14:58:13 spestov: SPARC isn't oft discussed here 14:58:16 spestov: are you slava, the original developer of factor? 14:58:26 WilhelmVonWeiner: I figured openfirmware might be though :) 14:58:28 crc: yes 14:58:48 wow I'm in the presence of a Factor guy? Very cool 14:58:49 cool; I haven't seen you on here in a long time 14:59:11 crc: I'm trying to get an old sparc working so I thought I'd stop by if I had questions 14:59:27 * crc wishes he could help, but it's been a long time since he had a machine with openfimware 14:59:29 I can boot into solaris but it has a hardware problem of some sort 16:01:22 We need more cool Forth stuff! Let's all write more cool Forth stuff! 16:01:52 make me 16:02:36 * john_cephalopoda forces zy]x[yz to make more cool Forth stuff 16:03:00 harassment! 16:04:10 Right. 16:04:38 * john_cephalopoda gives zy]x[yz compensation for the endured inconvenience in form of virtual cake. 16:06:29 --- quit: spestov (Ping timeout: 246 seconds) 16:27:02 --- join: dave0 (~dave0@193.060.dsl.syd.iprimus.net.au) joined #forth 16:27:30 re 16:29:57 Hi dave 16:31:20 john_cephalopoda: do you have suggestions on things to make? 16:33:57 crc: Hmm, some base things would be libraries for various arithmetic things, like matrices. Also libraries for parsing simple file formats, possibly csv. 16:35:04 The csv could be used to create some database system that can be used via cgi for websites. The matrix stuff could be used to do 3D rendering in forth. 16:37:25 I already started some matrix stuff. 16:42:22 --- quit: john_cephalopoda (Ping timeout: 268 seconds) 16:43:17 --- join: spestov (~spestov@cpe-67-245-201-127.nyc.res.rr.com) joined #forth 16:43:38 --- join: john_cephalopoda (~john@unaffiliated/john-cephalopoda/x-6407167) joined #forth 16:45:00 Sorry, timed out. 16:59:08 I'm working on some stuff for CSV for a work related application. I haven't done anything with matrices yet. (I don't really care about 3D rendering, so that application falls outside my realm) 17:04:01 though for database purposes, I'm more likely to use sqlite3 than CSV (I've begun doing some work on this as well) 17:06:48 Well, matrices are useful for a whole lot more than that, but they're not things that are "commonly pursued." 17:07:02 Pretty much anything in physics, if it's a distributed problem. 17:07:28 Finite element methods are pretty fascinating. 17:07:29 forth never does "libraries" - see CM ;- 17:07:32 ) 17:07:35 linear algebra is everywhere 17:07:43 Yeah. 17:07:58 And it's a topic that a one semester course can get your head around pretty well. 17:08:08 basically every equation is solved by linear algebra 17:08:18 Yup. 17:09:20 like i said yesterday: what i did was stupid, but less stupid than the day before. i'm happy if my \nabla(idiot) field has a negative slope in positive t 17:09:42 well, the field is negative, doesn't need a slope really 17:09:50 don't want to accelerate things 17:11:39 PoppaVic: libraries are hard to do when everyone uses an incompatible system :) 17:12:08 Using sqlite in Forth would be fancy. Not sure if I really need a relational db for what I got in mind though. 17:12:58 crc: yes, but ssshhhh - let them figure that out 17:13:19 (atop of which, CM always felt every problem meant a REWRITE) 17:13:26 john_cephalopoda: I have existing data sets already in sqlite that I need to interface with 17:14:54 PoppaVic: What's CM? 17:15:13 CM is Chuck Moore 17:15:38 Ah. Not a big fan of that founder cult. ;D 17:16:24 When you can write routines that can be integrated without much hassle into many forth implementations, that's way better than having everybody rewriting stuff over and over. 17:16:33 zzzzzzzzzzz 17:16:58 I can do that now, with C that's been around for 30 and 40 years. Next? 17:17:22 --- quit: spestov (Ping timeout: 255 seconds) 17:20:03 PoppaVic: But C is a complex language and not easy to port. 17:20:18 gcc manages. Next? 17:20:23 Writing a C compiler is a big hassle while writing a Forth compiler can be done by people who have no clue of anything - like me. 17:20:45 ohhhh, so.. you want a language for the clueless and libs. ok. 17:21:37 good luck with that.. Maybe you want Javam or js, or lua or python.. I dunno, maybe there is a basic around 17:22:01 hmm, whatever happened to Sbasic? ;-P 17:24:07 PoppaVic: All those languages require a C compiler. 17:24:46 do they? I'd have sworn at least one needed asm. Oh, wait - yeah: you need a not-asm-asm, too 17:24:47 Forth is pretty elegant. The base system can be written in relatively short time. It can be ported to any system. 17:25:08 PoppaVic: I wrote an assembler in Forth. Super-easy to do. 17:25:09 --- join: rdrop-exit (~markwilli@112.201.168.172) joined #forth 17:25:23 well, yeah - macros are like that 17:25:28 PoppaVic: I have a copy of SBASIC... 17:25:53 crc: I remember it from the kaypro - pretty nifty ;-P 17:25:58 Of course I need Forth to bootstrap it. But when I got Forth running on a platform I can write assembers for any platform. 17:28:56 what is this about? 17:29:09 turing machines and the lambda calculus? 17:30:07 * PoppaVic chortles 17:36:09 Good morning Forthwrights 17:59:37 corecode: No. Horn clauses. Or Markov algorithms. 18:04:47 --- join: spestov (~spestov@cpe-67-245-201-127.nyc.res.rr.com) joined #forth 18:25:46 --- quit: spestov (Ping timeout: 255 seconds) 18:56:33 --- join: spestov (~spestov@cpe-67-245-201-127.nyc.res.rr.com) joined #forth 18:59:28 --- quit: dddddd (Remote host closed the connection) 19:13:53 Howdy, rdrop-exit. 19:14:12 Hi KipIngram 19:30:31 --- quit: spestov (Ping timeout: 250 seconds) 19:36:00 --- join: spestov (~spestov@cpe-67-245-201-127.nyc.res.rr.com) joined #forth 19:37:04 --- quit: dave0 (Quit: dave's not here) 19:37:47 --- join: tabemann (~travisb@2600:1700:7990:24e0:a106:f1e:e4eb:7e2d) joined #forth 19:55:59 --- join: gravicappa (~gravicapp@h109-187-233-79.dyn.bashtel.ru) joined #forth 20:04:23 --- quit: spestov (Ping timeout: 272 seconds) 20:07:11 --- join: mechaniputer (~alan@fsf/member/mechaniputer) joined #forth 20:12:29 --- quit: rdrop-exit (Quit: Lost terminal) 20:12:48 --- quit: sigjuice_ (Ping timeout: 240 seconds) 20:18:09 --- join: sigjuice (~sigjuice@2604:a880:1:20::83:6001) joined #forth 20:29:29 --- quit: Croran (Quit: No Ping reply in 180 seconds.) 20:30:44 --- join: Croran (~quassel@2601:601:1801:6dde:a024:a39a:633c:7ee8) joined #forth 20:33:27 --- join: spestov (~spestov@cpe-67-245-201-127.nyc.res.rr.com) joined #forth 21:00:59 --- join: dave0 (~dave0@193.060.dsl.syd.iprimus.net.au) joined #forth 21:01:29 re 21:05:25 re o/ 21:05:31 --- quit: spestov (Ping timeout: 255 seconds) 21:27:22 --- join: spestov (~spestov@cpe-67-245-201-127.nyc.res.rr.com) joined #forth 21:43:15 --- join: proteusguy (~proteusgu@223.27.226.101) joined #forth 21:43:15 --- mode: ChanServ set +v proteusguy 21:55:41 --- quit: spestov (Ping timeout: 250 seconds) 22:03:51 --- quit: Croran (Remote host closed the connection) 22:26:27 --- join: spestov (~spestov@cpe-67-245-201-127.nyc.res.rr.com) joined #forth 22:46:59 i just bought a fpga board with vga jet 22:47:11 hope i could try that j1forth on it 22:59:41 --- quit: spestov (Ping timeout: 258 seconds) 23:36:49 --- quit: dys (Ping timeout: 240 seconds) 23:59:59 --- log: ended forth/19.02.18