00:00:00 --- log: started forth/16.10.02 00:08:11 --- join: Indecipherable (~Howl@41.162.59.11) joined #forth 00:08:54 --- quit: Indecipherable (Max SendQ exceeded) 00:09:10 --- quit: proteusguy (Read error: Connection reset by peer) 00:11:34 --- join: Indecipherable (~Howl@41.162.59.11) joined #forth 00:12:01 --- quit: Indecipherable (Max SendQ exceeded) 00:14:39 --- join: Indecipherable (~Howl@41.162.59.11) joined #forth 00:14:59 --- quit: Indecipherable (Max SendQ exceeded) 00:15:43 --- join: Indecipherable (~Howl@41.162.59.11) joined #forth 00:16:03 --- quit: Indecipherable (Max SendQ exceeded) 00:17:03 --- join: Indecipherable (~Howl@41.162.59.11) joined #forth 00:17:24 --- quit: Indecipherable (Max SendQ exceeded) 00:18:01 --- join: Indecipherable (~Howl@41.162.59.11) joined #forth 00:18:28 --- quit: Indecipherable (Max SendQ exceeded) 00:19:13 I need a botnet 00:19:20 I am itching for one 00:19:35 I've been racking my brain for legal ways to develop a net of tiny bots 00:37:15 --- quit: nal1 (Quit: WeeChat 1.4) 00:38:01 --- join: nal (~nal@adsl-72-50-84-183.prtc.net) joined #forth 00:39:55 John[Lisbeth]: virtual machines 00:40:13 John[Lisbeth]: set up a bunch of VMs, install your bot onto each VM, bingo 00:40:15 legal botnet 00:41:46 --- quit: nal (Client Quit) 01:05:02 --- join: ASau` (~user@176.5.21.64) joined #forth 01:09:05 --- quit: ASau (Ping timeout: 272 seconds) 01:16:51 --- quit: mnemnion (Remote host closed the connection) 01:17:33 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:a0d1:1257:8100:7690) joined #forth 01:17:39 I was thinking 01:17:52 I could convince android users to install a little app on their phone 01:18:01 explain to them that they will literally be in a botnet 01:18:07 put it in the license 01:18:51 I could create a virtual machine in forth in C++ 01:19:06 but set it to that both the storage and ram is on the sd card 01:19:46 So this computer would be very slow but it would use up a finite and small amount of resources over time 01:22:23 --- quit: mnemnion (Ping timeout: 272 seconds) 01:23:35 --- join: proteusguy (~proteusgu@183.88.64.36) joined #forth 01:23:35 --- mode: ChanServ set +v proteusguy 01:30:02 John[Lisbeth], are you actually coding something these days? 01:30:23 I have just been doing research 01:34:25 Four years I have been working on which programming language I want to use 01:39:55 John[Lisbeth], research without action will get you nothing as you will have no context upon which to apply it. Designing in a vacuum is a fool's errand. There is no substitution for capturing your thoughts in code and beating them up against the real world. It's the single most frustrating and rewarding activity we have. 01:40:29 I dunno I think my ideas are sound 01:40:40 forth is capable of doing the style of programming I want 01:42:21 so do it. it's the only way they will become sound. 01:43:00 I've got to think for a while 01:45:11 Nothing gets me thinking better than trying it out in code. 01:47:53 Forth is probably the simplest practical language in existence. But until you've actually done it, there's no way you can understand how its constraints and power imply some very profound concepts. You have to experience it and get a feel for it. Books will only get you aware enough to get you started. Doing is the only way to know what you know. 02:02:47 09:34 < John[Lisbeth]> Four years I have been working on which programming language I want to use 02:02:58 John[Lisbeth]: why don't you just pick one and write some damn code? 02:15:29 Well all I can say is because I was looking for the best thing for me 02:15:32 and forth is really great for me 02:15:46 It is very customizable 02:15:54 very modular 02:15:58 can be used like a unix shell 02:16:03 in a basic computers sort of sense 02:16:07 but better than basic 02:21:27 You can design things so that you can break out of your environment and steal pieces of code and libraries from the language your forth is implemented in 02:21:53 I just like it because I can easily customize it to work exactly how I want 02:22:08 and I can understand how my entire system works if I put in the time 02:24:50 you pick the language that most suits what you're trying to do 02:25:05 sometimes that's something very high level, like Python 02:25:09 sometimes that's assembler 03:25:56 --- quit: nighty (Remote host closed the connection) 03:28:25 --- join: nighty (~nighty@s229123.ppp.asahi-net.or.jp) joined #forth 04:05:41 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:f0c2:d012:afa:9aab) joined #forth 04:10:23 --- quit: mnemnion (Ping timeout: 248 seconds) 04:19:34 --- join: Indecipherable (~Howl@41.162.59.11) joined #forth 05:01:33 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:20a1:4601:2a3d:bc22) joined #forth 05:05:51 --- quit: mnemnion (Ping timeout: 248 seconds) 05:36:55 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 05:36:59 --- quit: Zarutian (Read error: Connection reset by peer) 05:37:40 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 06:07:01 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:f9c7:1902:2a58:44c8) joined #forth 06:11:49 --- quit: mnemnion (Ping timeout: 272 seconds) 06:42:55 --- quit: nighty (Quit: Disappears in a puff of smoke) 07:00:11 --- join: nal (~nal@adsl-72-50-84-183.prtc.net) joined #forth 07:08:26 --- nick: ASau` -> ASau 07:43:38 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:f9c7:1902:2a58:44c8) joined #forth 07:48:43 --- quit: mnemnion (Ping timeout: 272 seconds) 08:00:24 --- join: rgrinberg (~rgrinberg@24-246-56-85.cable.teksavvy.com) joined #forth 08:01:34 --- quit: Indecipherable (Quit: http://i.imgur.com/rWAnqP3.jpg) 08:32:54 --- quit: reepca (Remote host closed the connection) 08:41:31 --- join: OriansJ (~user@107.170.205.175) joined #forth 08:42:56 Anyone here familiar with implementing forth in assembly? 08:47:10 --- join: neceve (~ncv@unaffiliated/neceve) joined #forth 09:05:03 --- join: MickyW (~MickyW@p4FE8C974.dip0.t-ipconnect.de) joined #forth 09:17:00 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:f9c7:1902:2a58:44c8) joined #forth 10:08:03 --- quit: nal (Ping timeout: 272 seconds) 10:10:02 or if no one is familiar with implementing forth in assembly, does any one know of a really short forth implementation in C? 10:12:41 --- quit: mnemnion (Read error: Connection reset by peer) 10:13:15 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:f9c7:1902:2a58:44c8) joined #forth 10:49:33 OriansJ: yes 10:49:38 OriansJ: for what CPU? 10:55:42 gordonjcp: I am hoping to write forth for a CPU architecture known as Knight. It lacks even a C compiler; Thus I am going to have to write this entirely in assembly. 10:57:18 Here is a link to its instruction set if you are curious https://github.com/oriansj/stage0/blob/master/ISA_HEX_Map.org ; I've written a virtual machine to speed up my development. 11:00:27 OriansJ: have you got autoindexed registers, or some way to have a couple of stacks? 11:01:12 actually any register can be used as a stack pointer 11:01:24 okay 11:01:32 now what you need to do is understand threading models 11:01:47 --- quit: Zarutian (Quit: Zarutian) 11:01:56 for which I recommend you read Brad Rodriguez's excellent articles, and also the Jonesforth source code 11:05:36 "Threaded code" technique is even older than Forth itself. 11:05:42 yes 11:05:51 --- quit: rgrinberg (Ping timeout: 252 seconds) 11:09:54 so effectively, I'll be simulating a forth machine; rather than directly executing forth? 11:12:29 It's a "compiler vs interpreter" choice. If you really want a compiler, then you may look for something other than Forth. 11:14:41 OriansJ, I implemented an entire forth-like environment using hex codes into a 6809 CPU back in the 80's. Building from machine level is absolutely a valid option for building forth. 11:16:10 OriansJ, you'll not be simulating. The basic forth engine is typically asm for most embedded work. Then you get the ability to create forth words, implement your primitives and you've got a full blown forth. 11:17:39 proteusguy, But can you fit the whole Forth system into 512 bytes? :) 11:17:55 proteusguy: got it, that makes more sense. 11:18:07 There was a funny language in 70s, that was able to do so :) 11:19:23 true-grue: My goal is for readable/auditable code, as part of a full trust path for a complete Linux distribution. 11:21:23 OriansJ, Linux? So eventually you plan to implement C compiler too? 11:23:17 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 11:23:27 true-grue: Yes and a Lisp interpreter, I've already implemented a line macro assembler in assembly [only 1772 bytes and 441 instructions] 11:25:26 OriansJ, "441 instructions" -- it means that your assembler is running directly on the target device? Why? 11:26:31 true-grue: because I haven't written that abstraction layer yet 11:27:09 --- quit: neceve (Quit: Konversation terminated!) 11:31:00 There is a cross assembler written in C but every piece I have made must produce identical binary results and only depend on the pieces that have already been created, going all the way back to a 284 byte 71 instruction trusted root hex monitor 11:32:34 true-grue, he only has 512 bytes?? 11:33:22 OriansJ: in fact if you look at how Forth's threading works you'll see that can easily be applied to damn near any compiling problem 11:33:33 proteusguy, Yes! And it resembles one of recent Moore's creations :) 11:34:19 true-grue, what's it doing with 16 and 32 bit reference operations and only has 512 bytes? That makes no sense. 11:34:53 proteusguy: Probably means there are only 8bit references 11:35:19 proteusguy, No, the interpreter has 8-bit data path. 11:35:20 The instructions are 4 bytes wide! 11:36:03 It was quite normal for 70s. Especially if we're talking about micros with 4 kb of RAM. 11:39:00 Well you can implement a tiny token threaded interpreter in 512 bytes possibly. Not gonna support any other proper forth model in that size. 11:39:31 Ok, it's not Forth at all. But it's a funny little interpreter. You may even find some similarities with OK. :) 11:39:36 https://en.wikipedia.org/wiki/CHIP-8 11:40:07 true-grue, correct I should have said "stack based forth-like language". 11:40:29 CHIP-8 is register based, btw. 11:41:12 But modern assembler for it looks a bit like Forth :) https://github.com/JohnEarnest/Octo/blob/gh-pages/docs/Chip8%20Programming.md 11:43:40 true-grue: ooooh 11:43:41 nice 11:48:26 gordonjcp: deterministic builds are my chief concern but this implementation work will probably force me to learn all of the things I don't know about forth. 11:54:14 How does this sound as a general strategy: Implement forth in C, to prove general design works; then translate into assembly. 12:05:28 OriansJ, sounds like a mistake. Go straight to assembly. It's honestly simpler to not deal with C's call stack and your space is already very confined. 12:08:26 proteusguy: Actually the current hardware has 16MB of RAM but I'll take your word that it might not be worth the trouble to do it in C 12:12:57 The primary reason my current pieces are small have more to do with the pain of having to hand convert assembly to Commented Hex, which I forced myself to do to ensure that the entire bootstrap is entirely trustworthy [The hex monitor has hand toggled in :D ] 12:13:49 but now that the line macro assembler has been made, I will no longer have to manually convert to hex any assembly I write. 12:15:30 OriansJ, ok I dunno why true-grue was saying you only had 512 bytes of RAM. :) Then probably an ITC model is easiest. CPU already has stack supporting instructions it seems but doesn't, that I can see, inherently support two stacks. (I could be wrong.) 12:20:02 OriansJ: now I am curious what you are going to do with this. 12:20:15 proteusguy: it has 16 registers that can be used for stack operations and/or function call operations. Aka to push a register [R0] onto the stack pointed at in another register [R1], you'll have to PUSHR R0 R1 12:21:41 Should I wish to use a call stack, I'll need to CALLI R0 @FunctionName and RET R0 12:24:55 Zarutian: Build more tools for building infrastructure, until the ultimate objective is reached. 12:31:58 OriansJ: what is the ultimate objective? 12:35:07 Zarutian: Make a fully trusted path to a fully functional Linux system, requiring a single sub 1KB bootstrap binary [Which is written in commented Hex and can be compiled by any third party to produce identical results] 12:37:29 Zarutian: it ultimately all started when I wrote: https://github.com/oriansj/stage0/blob/master/Linux%20Bootstrap/hex0.hex A hex assembler written in commented Hex for Linux 12:37:36 OriansJ: you should look into capros.org too then and probably also use the cloudabi patch-set if you are looking for fully trusted software 12:42:07 Zarutian: yes, that is rather important work. Mine however is much more grind work than anything else. As I am not concerned with the security of the resulting programs, rather that they can be created in a manner than eliminates the risk of the trusting trust attack in terms of software in the Linux ecosystem. 12:43:24 --- quit: dograt (Ping timeout: 265 seconds) 13:01:08 OriansJ: yeah, just implement a basic assembler core (set up stacks, jump to NEXT) 13:01:16 OriansJ: then build up your primitives from there 13:02:08 OriansJ: anyway, how do you know it's "fully trusted"? 13:02:19 unless you've built your own hardware from scratch... 13:02:38 --- quit: true-grue (Read error: Connection reset by peer) 13:04:36 gordonjcp: Well, it is true; I am trusting the manufactor of NAND chips and SRAM chips not to have malicious functionality but by producing a virtual machine; that works identically on multiple platforms and produces identical results. I have reduced the trust scope down to that of trusting your hardware. 13:05:51 --- quit: proteusguy (Quit: Leaving) 13:06:12 The current VM can run in 64KB of RAM, which means I can even use 6502 systems to validate the results. 13:07:09 In short an attacker would need to compromise all of the hardware used in testing to not be discovered. Which includes hand wired CPUs made out of relays. 13:17:13 --- join: proteusguy (~proteusgu@183.88.64.36) joined #forth 13:17:13 --- mode: ChanServ set +v proteusguy 13:17:40 gordonjcp: I plan on turning everything possible against attackers, even if it means I need to hand port the virtual machine to hobbist projects. If that means I spend a month to hand write a line macro assembler, I'll do it. Heck I've already done that. Now I am going to write a forth for it. 13:21:39 --- join: gyxile (~nick@cpc80309-grim18-2-0-cust167.12-3.cable.virginm.net) joined #forth 13:26:10 Having only the hard requirements of Deterministic results, full source code and multiple third party audit/verification; means that I am free to trade speed/size for simplicity. 13:38:45 --- quit: gyxile (Ping timeout: 252 seconds) 13:43:40 --- quit: MickyW (Quit: Verlassend/leaving) 13:51:37 well, you could do it that way 13:51:43 I'd just build my own hardware platform, tbh 13:56:34 --- join: dograt (~dograt@unaffiliated/dograt) joined #forth 14:17:42 --- join: impomatic (~impomatic@host86-191-55-36.range86-191.btcentralplus.com) joined #forth 14:42:02 --- join: nal (~nal@adsl-72-50-84-183.prtc.net) joined #forth 14:42:27 --- join: gyxile (~nick@cpc80309-grim18-2-0-cust167.12-3.cable.virginm.net) joined #forth 14:48:03 --- quit: gyxile (Ping timeout: 252 seconds) 15:03:50 --- join: reepca (~user@std-001.cune.edu) joined #forth 15:11:44 --- join: rgrinberg (~rgrinberg@24-246-56-85.cable.teksavvy.com) joined #forth 15:19:08 --- quit: rgrinberg (Quit: WeeChat 1.5) 15:21:09 --- join: rgrinberg (~rgrinberg@24-246-56-85.cable.teksavvy.com) joined #forth 15:59:50 --- join: impomatic_ (~digital_w@host86-191-55-36.range86-191.btcentralplus.com) joined #forth 16:58:33 was rereading http://www.bradrodriguez.com/papers/tcjassem.txt recently and though "hmm.. many .hex or .srec files were actually on papertape, I wonder if you could change the TC, and TC! and T! (T prefix stands for target) ... 16:58:57 ... words to emit also the srec records for 'updating' that target memory addresses to the new contents. No seeking on media required. 17:48:50 * Zarutian is off to bed 17:48:55 --- quit: Zarutian (Quit: Zarutian) 18:34:39 --- join: neceve (~ncv@79.114.59.215) joined #forth 18:34:39 --- quit: neceve (Changing host) 18:34:39 --- join: neceve (~ncv@unaffiliated/neceve) joined #forth 19:20:13 gordonjcp: Understandable, however the more platforms that can produce identical results; means that in order for a successful hardware attack to go undetected. It would have to successfuly infect all of the platforms, in the same way. In short the attacker would also have to compromise the most arbitrary hardware than anyone chooses to make, including those without network connectivity or logic above TTL. 19:30:26 Trusted hardware in TTL logic is used for the root validation, the virtual machines are for distributed validation and simplification of development. [Aka anyone can help me develop pieces if they wish] 19:38:16 --- quit: groovy2shoes (Quit: Leaving) 20:41:47 --- join: mark4 (~mark4@99-164-75-34.lightspeed.rcsntx.sbcglobal.net) joined #forth 21:04:21 --- quit: nal (Quit: WeeChat 1.4) 21:15:43 --- quit: dzho (Quit: leaving) 21:16:35 --- join: dzho (~dzho@unaffiliated/dzho) joined #forth 21:26:15 --- quit: neceve (Ping timeout: 252 seconds) 22:28:24 --- quit: proteusguy (Ping timeout: 252 seconds) 22:31:12 --- join: nighty (~nighty@p001.gate.atson.jp) joined #forth 23:08:00 --- quit: rgrinberg (Ping timeout: 252 seconds) 23:22:57 that level... 23:23:18 what is this "Knight" ? 23:23:21 some DIY? 23:24:38 --- join: proteusguy (~proteusgu@180.183.131.206) joined #forth 23:24:38 --- mode: ChanServ set +v proteusguy 23:37:29 --- join: groovy2shoes (~groovy2sh@unaffiliated/groovebot) joined #forth 23:44:50 --- quit: mnemnion (Remote host closed the connection) 23:59:59 --- log: ended forth/16.10.02