00:00:00 --- log: started retro/13.03.14 07:09:30 --- join: kumul (~mool@c-76-26-237-95.hsd1.fl.comcast.net) joined #retro 07:35:53 --- quit: kumul (Read error: Connection reset by peer) 08:00:45 --- join: kumul (~mool@c-76-26-237-95.hsd1.fl.comcast.net) joined #retro 10:03:33 --- quit: oPless (Remote host closed the connection) 10:17:38 --- join: kumool (~mool@c-76-26-237-95.hsd1.fl.comcast.net) joined #retro 10:20:19 --- quit: kumul (Ping timeout: 258 seconds) 10:20:33 --- join: kumul (~mool@c-76-26-237-95.hsd1.fl.comcast.net) joined #retro 10:23:23 --- quit: kumool (Ping timeout: 258 seconds) 11:33:28 --- join: Mat2 (~claude@91-65-144-133-dynip.superkabel.de) joined #retro 11:33:38 hi @ all ! 11:37:19 wb 11:37:31 hi tangentstorm 11:38:02 my b+ tree works :) 11:38:17 congratulations ! 11:38:49 thanks! now I have a very simple core for my database system 11:39:30 I have mastered the struggles of basic VLIW compilation (and its complexity) 11:41:18 ... and an idea for a new vm preventing it 11:41:43 ahm, waht is the purpose of your database system ? 11:41:49 ^what 11:43:50 and why dont you use indexed hash tables ? 11:43:55 It's sort of the main component in my overall project/language thing. I wanted to make a development environment that had a database at its core. 11:44:10 sorry I remember now 11:44:57 I might use a hash table for strings too, but the main tables are all integers, so there's not really anything to hash :) 11:45:16 * tangentstorm looks up VLIW 11:46:39 vl = very long? or variable length? 11:47:03 Very Long Instruction Word architecture 11:47:50 variable length architectures are typical RISC CPU's 11:48:03 sorry CISC I mean of course 11:49:30 the 6502 CPU is a CISC design with reduced instruction set some will label as RISC alike 11:51:11 6502 as in the chip that powered the nintendo entertainment system? :) 11:51:48 plus 6502 was hard-wired and not microcoded... 11:51:53 yes and also the Apple II 11:52:12 and all classic Atari and Commodore home computers 11:54:02 the 6502 misused a PLA for its instruction encoding (computing all possible and valid wire combinations parallel before selecting the right result) 11:54:26 the CPU uses also some kind of simple 2 stage pipeline 11:55:46 combining memory fetching and opcode execution 11:56:39 but otherwise its a classical CISC architecture 11:59:40 hey backer :) 11:59:52 hi backer 12:00:16 Mat2: not sure what that has to do with your vm...? 12:02:06 hi :-) 12:03:21 my vm combines multibe instructions into an opcode and execute it (like the 6502 PLA uses an encoded instruction to execute all of its units parallel) 12:04:01 dependent on the input wires 12:05:47 so you can see it as a simulated VLIW design with only two units executing parallel out of 8 bundled to an opcode 12:07:02 that is why this vm is so fast because the dispatch overhead for each instruction is low 12:08:09 the drawback is: This complicates the compilation because instructions need to be bundled into an opcode (16 of them) 12:17:47 and that is not a trivial 12:19:23 but you have a plan worked out? :) 12:21:05 the compiler works for most combinations, but I need to figure one bug which preventing the correct compilation of some extended opcodes 12:22:12 --- quit: kumul (Ping timeout: 258 seconds) 12:31:40 ok, I have solved the problem 12:37:10 :) 12:39:05 * Mat2 just get an idea of ​​the difficulties to program an efficient compiler for the Itanium architecture 12:41:50 by the way, have I mentioned before that C sucks ? 12:42:17 you know my answer to that one! 12:43:02 speaking of pascal, did i show you empty.pas ? 12:43:20 no 12:43:41 https://github.com/sabren/b4/blob/master/go/empty.pas 12:44:04 it's just the core interpreter of a forth-like system 12:44:14 with a dictionary and a listener but no instructions 12:44:41 used like this: https://github.com/sabren/b4/blob/master/go/helloempty.pas 12:45:07 well that is a start :) 12:45:13 so you can just create procedures and add whatever words you want to it. 12:45:37 i'm going to use it as a front-end to retro 12:45:59 so if you want to hard-code part of your retro program in pascal, you can. 12:46:22 or saiwa ;) 12:47:18 you can also swap out the tokenizer, lookup procedure, etc... everything is a function pointer. 12:48:48 i'm learning how to use lazarus now and taking another look at aggpas and zengl. probably going to fork your vdp code and hook it up to one of those two. 12:49:36 Saiwa uses the colorforth approach of parsing prefixes (actual ASCII characters instead of Hoffman encoded bit streams) so I would need to replace some routines 12:50:01 but thanks for showing me your code, I will use it as base for a Pascal version 12:50:15 sure :) 12:50:26 oh this is part of what the database is for 12:51:20 impomatic said something on his twitter some time ago about how different forth dialects had different words for the same thing 12:51:39 and i suggested that maybe forth needed a thesaurus to go with the dictionary. 12:52:10 The way this database is going to work, you can have many words all pointing to the same dictionary entry. 12:52:19 uh, there exist a forth family of programming languages in reality 12:53:26 I didn't understand that. 12:54:24 because forth is a language for meta programming, ANSI forth for example is a standard for building forth systems from a specified word set 12:54:56 Right but not all forth code is ansi forth. 12:55:18 Like there are huge archives of old stuff for fig forth, forth 83, etc. 12:55:27 And they renamed a lot of words. 12:55:33 Or retro even. 12:56:01 Forth 83 specifies a concrete forth impemenetation 12:56:29 Basically I'm talking about an on-the-fly translator. 12:56:49 The database would have all those languages in it. 12:57:09 So you could write the code in whichever one you wanted. 12:57:23 It's a pain when words are renamed. Even worse when the same word is used, but the meaning changed (e.g. PICK and ROLL) 12:57:28 Sorry. Let me back up. 12:57:40 that is true 12:57:42 There are two dictionaries in the system I'm picturing. 12:58:16 One dictionary is in retro, and you can upload that to the web and run it in the browser or whatever. 12:58:34 Then the other dictionary is in the "shell", in the database, in pascal. 12:59:00 So you can type ansi forth into the shell, and it would be mapped to the retro dictionary. 12:59:41 Any words that didn't have an equivalent translation in retro would have their definitions translated, and so on. 13:00:00 And if you don't like the translation, you can provide a better one. 13:00:15 So you could implement ansi forth words in terms of quotations or whatever so they'd be more retro-like. 13:00:29 Am I making any sense? :) 13:00:35 yes 13:00:54 It's just a way to revive some of that old-code and math the things more compatible. 13:01:02 s/math/make/ 13:01:15 one problem is for example: 13:02:11 in the Forth 79 standard relies on state-smart words which are handled complete different from the later versions in F83 and ANSI forth 13:03:14 so some F83 implementation split these words into different vocabularies and depend on some internal state for switching between them 13:03:56 ^implementations 13:04:42 i'm not familiar with that issue, but i don't *think* it will be a problem. 13:04:58 the shell would just act like forth 79 13:06:21 execution depending on this internal state (that is the reason why the ANSI commitee declare state-smart words as something really bad) 13:07:40 because the ANSI standard is state agnostic this can only be a problem supporting really old code of course so I do not know if it would be problematic 13:08:13 I guess I'll find out :) 13:08:21 :) 13:08:39 The real goal if this works is to then do the same for java, python, pascal, c#... :) 13:08:58 but that's a long ways off 13:09:19 I think you planning the ultimative meta language :) 13:25:18 something like that. :) 13:41:02 ha ! No knowing bugs remain, the compiler works ! 13:41:06 :D 13:42:38 now I must figure out, why divisions by zero results in zero instead of generating an exception ??!?? 13:43:12 new math 13:43:19 *lol* 13:50:13 I suspect the Gnu compiler generate unsafe code 13:51:08 oh no, I was right :( 13:51:36 the compiler optimize the division away... 14:03:02 !! 14:03:09 can you turn off that optimization? 14:03:23 it doesn't really sound very optimal :) 14:03:48 I'm searching for bypassing this bug? 14:05:39 I am not sure which of these hundreds of optimization switches turn it off 14:08:44 :D 14:08:53 maybe ask in #gnu ? 14:09:04 good idea 14:16:07 ok, on the ask list for tomorrow 14:16:24 gget some sleep, ciao 14:16:28 --- quit: Mat2 (Quit: Verlassend) 14:22:37 --- join: kumul (~mool@c-76-26-237-95.hsd1.fl.comcast.net) joined #retro 14:29:10 --- join: kumool (~mool@c-76-26-237-95.hsd1.fl.comcast.net) joined #retro 14:31:16 --- join: goingretro (~goingretr@host86-155-215-196.range86-155.btcentralplus.com) joined #retro 14:32:54 --- quit: kumul (Ping timeout: 258 seconds) 14:58:58 --- join: kumul (~mool@c-76-26-237-95.hsd1.fl.comcast.net) joined #retro 15:01:31 --- quit: kumool (Ping timeout: 260 seconds) 15:16:09 --- quit: goingretro (Read error: Connection reset by peer) 15:40:39 --- join: kumool (~mool@c-76-26-237-95.hsd1.fl.comcast.net) joined #retro 15:44:06 --- quit: kumul (Ping timeout: 264 seconds) 15:46:01 --- join: kumul (~mool@c-76-26-237-95.hsd1.fl.comcast.net) joined #retro 15:48:49 --- quit: kumool (Ping timeout: 258 seconds) 16:31:07 --- join: kumool (~mool@c-76-26-237-95.hsd1.fl.comcast.net) joined #retro 16:33:53 --- quit: kumul (Ping timeout: 264 seconds) 16:58:55 --- join: oPless (simon@lart.doosh.net) joined #retro 21:54:36 --- quit: karswell` (Ping timeout: 252 seconds) 22:08:33 --- join: kumul (~mool@c-76-26-237-95.hsd1.fl.comcast.net) joined #retro 22:10:58 --- quit: kumool (Ping timeout: 258 seconds) 22:28:38 --- join: kumool (~mool@c-76-26-237-95.hsd1.fl.comcast.net) joined #retro 22:31:16 --- quit: kumul (Ping timeout: 260 seconds) 22:38:50 --- quit: kumool (Quit: Leaving) 23:03:19 --- quit: impomatic (Ping timeout: 260 seconds) 23:59:59 --- log: ended retro/13.03.14