00:00:00 --- log: started forth/13.01.26 00:14:52 https://github.com/sabren/b4/blob/master/ref/winfield-pascal-83.org 00:15:07 ^^ just transcribed the first of winfield's two articles 00:15:52 turns out he actually did use a technique sort of like retro's class system... so maybe i'm not too crazy :) 00:16:22 * tangentstorm wishes github's formatter didn't butcher *.org files 00:19:51 --- join: protist (~protist@125-237-130-19.jetstream.xtra.co.nz) joined #forth 00:34:41 --- quit: protist (Ping timeout: 252 seconds) 00:37:24 --- join: protist (~protist@125-237-130-19.jetstream.xtra.co.nz) joined #forth 01:08:03 tangentstorm: have you seen Zk 01:08:39 tangentstorm: have you seen Zimmer's Tiny Pascal in Fig Forth? I'm looking for a copy. 01:25:12 good lord http://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC+15145%3A1997#.UQOguJGTthE 01:25:22 $285 for the standard 01:25:28 impomatic: nope 01:25:48 impomatic: but sounds interesting. let me know if you find it :) 01:27:43 --- join: epicmonkey (~epicmonke@188.134.41.175) joined #forth 02:00:34 --- quit: impomatic (Ping timeout: 244 seconds) 02:20:07 --- quit: protist (Ping timeout: 276 seconds) 02:23:13 --- quit: Nisstyre-laptop (Ping timeout: 252 seconds) 02:24:40 --- quit: cataska (Ping timeout: 276 seconds) 02:34:05 --- join: MayDaniel (~MayDaniel@unaffiliated/maydaniel) joined #forth 02:49:04 --- join: cataska (~user@210.64.6.233) joined #forth 03:04:05 --- quit: proteusguy (Read error: Connection reset by peer) 03:24:29 --- join: proteusguy (~proteusgu@ppp-58-8-42-106.revip2.asianet.co.th) joined #forth 03:33:19 --- join: nighty^ (~nighty@tin51-1-82-226-147-104.fbx.proxad.net) joined #forth 03:43:05 --- quit: cataska (Ping timeout: 252 seconds) 03:48:07 --- join: cataska (~user@210.64.6.233) joined #forth 03:54:02 --- quit: cataska (Ping timeout: 240 seconds) 04:09:05 Why would you want a copy of the standard, tangentstorm? 04:09:32 i was actually trying to find the 1979 standard 04:10:40 I'm transcribing an article from 1983 about writing a pascal compiler in forth 04:10:46 I don't think the '79 standard was ANSI? 04:10:48 and translating the code to retroforth 04:11:14 --- join: cataska (~user@210.64.6.233) joined #forth 04:12:02 i thought he was using forth 83 but then i saw he was actually using s Forth , which he says is following the 1979 standard with a few common additions 04:15:15 --- quit: cataska (Read error: Connection reset by peer) 04:16:00 * ttmrichter hunts for the '79 spec. 04:20:02 i think i'm pretty much following what he has to say now 04:20:27 more helpful would be a copy of s Forth for some emulator :) 04:20:48 There's loads of those. 04:20:49 it might be z forth 04:20:54 i can't read it 04:21:56 tangentstorm: http://www.forth.org/fig-forth/contents.html 04:21:59 heck it could be x forth 04:22:02 There's some FIG Forth implementations here. 04:25:44 huh... i downloaded the 9.9mb one and it's a pdf of the assembly code for a forth implementation 04:26:57 Yep. :) 04:27:40 huh.. same for the ibm pc implementation... 04:28:03 You can read the assembler to figure out how it's working though. 04:29:51 neat :) 04:33:07 I *THINK* FIG-Forth is 1979-ish vintage. 04:46:46 tangentstorm: It seems I'm wrong. FIG-Forth was the predecessor to the '79 standard. 04:46:49 * ttmrichter keeps hunting. 04:47:34 --- join: cataska (~user@210.64.6.233) joined #forth 04:53:49 --- quit: cataska (Read error: Connection reset by peer) 04:54:20 --- join: tgunr (~davec@cust-66-249-166-11.static.o1.com) joined #forth 04:57:04 --- join: cataska (~user@210.64.6.233) joined #forth 05:00:15 --- quit: cataska (Read error: Connection reset by peer) 05:01:46 --- join: cataska (~user@210.64.6.233) joined #forth 05:03:37 --- quit: cataska (Read error: Connection reset by peer) 05:04:31 tangentstorm: I can't find a '79 standard, but the '83 standard is here: http://www.forthfreak.net/f83/index.html 05:04:35 --- join: cataska (~user@210.64.6.233) joined #forth 05:10:04 --- quit: cataska (Read error: Connection reset by peer) 05:12:49 ttmrichter: thanks!!! :) 05:13:14 I'm remembering the history now. 05:13:18 '79 was a bit of a disaster. 05:13:23 '83 patched up the errors of '79. 05:13:28 Then '94 fucked everything up. 05:13:58 http://www.forthfreak.net/f83/fst83-12.htm <- pretty darn compact 05:14:41 Yeah. That's the required words list. 05:16:43 --- join: cataska (~user@210.64.6.233) joined #forth 05:19:22 --- quit: cataska (Read error: Connection reset by peer) 05:20:58 --- join: protist (~protist@125-237-130-19.jetstream.xtra.co.nz) joined #forth 05:21:53 --- join: cataska (~user@210.64.6.233) joined #forth 05:35:26 --- quit: protist (Ping timeout: 255 seconds) 05:51:39 --- join: kumul (~Kumool@c-76-26-237-95.hsd1.fl.comcast.net) joined #forth 06:20:15 --- quit: Bahman (Remote host closed the connection) 07:15:23 --- quit: cataska (Read error: Connection reset by peer) 07:58:38 --- quit: proteusguy (Remote host closed the connection) 08:35:38 --- join: kumool (~khwerz@76.26.237.95) joined #forth 09:39:42 --- part: kumool left #forth 09:45:14 --- join: kc5tja (~sfalvo@173-11-86-21-SFBA.hfc.comcastbusiness.net) joined #forth 09:45:14 --- mode: ChanServ set +v kc5tja 10:03:36 --- join: Onionnion (~ryan@adsl-76-228-195-238.dsl.milwwi.sbcglobal.net) joined #forth 10:08:53 --- join: jdavidboyd (~user@72.185.97.240) joined #forth 10:16:59 First Part of SVFIG Meeting: https://www.youtube.com/watch?v=atLIDucFYD4 10:26:32 --- nick: tangentstorm -> tangentsleep 10:34:15 --- join: IAmHere_ (~IAmHere@c-75-70-11-91.hsd1.co.comcast.net) joined #forth 10:36:35 --- quit: IAmHere (Ping timeout: 246 seconds) 10:36:35 --- nick: IAmHere_ -> IAmHere 10:40:54 --- join: fantazo (~fantazo@213.129.230.10) joined #forth 11:00:08 --- join: proteusguy (~proteusgu@ppp-58-8-42-106.revip2.asianet.co.th) joined #forth 11:02:19 --- join: Nisstyre-laptop (~yours@oftn/member/Nisstyre) joined #forth 11:24:34 --- quit: ASau (Remote host closed the connection) 11:29:00 --- join: JDat (JDat@89.248.91.5) joined #forth 11:38:50 --- join: ASau (~user@46.115.52.76) joined #forth 11:51:06 --- quit: fantazo (Ping timeout: 276 seconds) 11:55:35 --- quit: proteusguy (Remote host closed the connection) 12:02:51 --- quit: Onionnion (Ping timeout: 256 seconds) 12:06:01 --- join: Onionnion (~ryan@adsl-68-254-162-79.dsl.milwwi.ameritech.net) joined #forth 12:06:47 --- quit: tgunr (Quit: I'm outta here) 12:08:25 --- join: ncv (~quassel@unaffiliated/neceve) joined #forth 12:12:11 --- join: tgunr (~davec@cust-66-249-166-11.static.o1.com) joined #forth 12:25:31 --- quit: Onionnion (Ping timeout: 256 seconds) 12:37:17 --- join: Onionnion (~ryan@adsl-68-254-175-54.dsl.milwwi.ameritech.net) joined #forth 12:56:08 --- quit: Nisstyre-laptop (Read error: Connection reset by peer) 12:56:45 --- join: Nisstyre-laptop (~yours@oftn/member/Nisstyre) joined #forth 13:48:57 Resuming Forth video stream: https://www.youtube.com/watch?v=MmJpTMy17y4 13:57:44 --- quit: MayDaniel (Read error: Connection reset by peer) 14:03:15 i cant understand anything, so it must be good 14:12:48 --- join: I440r (~zhiming@220.sub-70-194-131.myvzw.com) joined #forth 14:12:48 --- mode: ChanServ set +o I440r 14:12:53 hc5!! 14:12:56 kc5 even 15:41:26 --- quit: JDat (Quit: oldfart retards!) 15:48:43 Yes, that was me who just finished speaking. 15:48:53 And yes, that was my Kestrel-2 that was presenting my slide deck. 16:10:17 --- quit: epicmonkey (Ping timeout: 245 seconds) 16:22:24 Final able to do some more Forth learning 16:22:28 finally* 16:40:30 --- quit: tgunr (Quit: Nity nite) 16:42:35 --- join: tgunr (~davec@cust-66-249-166-11.static.o1.com) joined #forth 17:00:27 --- quit: tgunr (Quit: Nity nite) 17:03:29 --- join: tgunr (~davec@cust-66-249-166-11.static.o1.com) joined #forth 17:21:10 --- join: RodgerTheGreat (~rodger@71-13-215-242.dhcp.mrqt.mi.charter.com) joined #forth 17:21:45 what's up everybody 17:56:05 --- join: protist (~protist@125-237-130-19.jetstream.xtra.co.nz) joined #forth 18:22:24 Forth learning! 18:38:52 Onionnion: :D 18:38:55 afk dinner 18:47:17 --- quit: protist (Ping timeout: 252 seconds) 18:51:56 breakfast coffee is up 18:58:57 --- nick: tangentsleep -> tangentstorm 19:18:30 --- join: protist (~protist@125-237-130-19.jetstream.xtra.co.nz) joined #forth 20:00:47 --- quit: Nisstyre-laptop (Remote host closed the connection) 20:27:12 --- quit: ncv (Remote host closed the connection) 20:31:16 --- join: Onionnion_ (~ryan@adsl-68-254-175-54.dsl.milwwi.ameritech.net) joined #forth 20:34:24 --- nick: tangentstorm -> tangentaway 20:34:43 --- quit: Onionnion (Ping timeout: 276 seconds) 20:41:46 --- join: Bahman (~Bahman@bba141175.alshamil.net.ae) joined #forth 20:59:36 --- quit: protist (Ping timeout: 256 seconds) 21:21:43 --- quit: jdavidboyd (Remote host closed the connection) 21:27:08 --- quit: kumul (Quit: Leaving) 21:50:07 --- join: proteusguy (~proteusgu@ppp-58-8-103-13.revip2.asianet.co.th) joined #forth 22:06:32 --- join: protist_ (~protist@125-237-130-19.jetstream.xtra.co.nz) joined #forth 22:07:03 --- quit: proteusguy (Ping timeout: 264 seconds) 22:08:18 --- quit: protist_ (Client Quit) 22:12:41 --- join: Indecipherable (~Indeciphe@41.13.48.204) joined #forth 22:13:08 --- join: protist (~protist@125-237-130-19.jetstream.xtra.co.nz) joined #forth 22:20:58 --- quit: Indecipherable (Quit: used jmIrc) 22:22:51 --- quit: Onionnion_ (Quit: Leaving) 22:26:48 RodgerTheGreat: i think it may be possible that i might want to use your Cheney algorithm gc cons-pair heap for something i may make in the next few month 22:26:51 s 22:27:06 oh? 22:27:12 RodgerTheGreat: if i do, what would be the proper way to show credit? 22:27:38 you can link to the gist or something like that 22:27:42 I'm easy 22:27:52 what are you thinking about using it for? 22:27:57 RodgerTheGreat: that is all? haha...no name to put on it? 22:28:44 RodgerTheGreat: at this point i really am unsure as to whether i will use it or implement something of my own, or do a different project entirely...but i have some ideas in beginning stages 22:29:41 RodgerTheGreat: oh...i fear saying what i will do here, as someone might jump on it, do it, and ruin my fun :D...but i will say it anyways 22:30:03 RodgerTheGreat: you implemented the cheney on the m.t.a algorithm for your forth? 22:30:08 RodgerTheGreat: i have some ideas as to how i might implement Scheme in Forth 22:30:10 or a different cheney algorithm? :) 22:30:39 protist: well I mean when I put stuff on the internet it's because I want people to be able to look at it and borrow ideas and stuff, not because I'm trying to stake out my genius idea and proclaim to the heavens that if they want to use my code they must acknowledge my contribution 22:30:47 protist: sounds groovy 22:30:53 * tangentaway was just talking about implementing mta algorithm the other day for gc in retro 22:30:54 RodgerTheGreat: alright :D 22:30:57 tangentaway: cheney's algorithm as in a garbage collector 22:31:41 tangentaway: what are you thinking of? 22:31:42 RodgerTheGreat: yeah if i ever sound secretive...it is more because it would be disheartening for someone to take over my little projects i am doing to practice :) 22:32:05 I've thought vaguely about doing a lisp of some kind but I like logo a lot better 22:32:13 yeah. maybe i wasn't in here. i was saying that the way the stack grows in C with the cheney/mta algorithm is the way the heap grows in retro. 22:32:32 tangentaway: what IS the cheney/mta algorithm? 22:32:36 ... 22:32:56 er 22:33:00 cheney must be a guy who made an algorithm and then someone used his name in the title of a paper :) 22:33:05 ok I see 22:33:16 http://www.pipeline.com/~hbaker1/CheneyMTA.html 22:33:37 the MTA is a subway in some song where the guy can never get off the train and rides it forever 22:33:50 https://gist.github.com/4522067 <- this is what I wrote 22:33:52 the paper is about a garbage collection scheme for scheme. 22:34:31 it implements scheme using normal C function calls and the C stack. 22:34:45 so continuation-passing style 22:35:19 i think i must have been talking about it in #learnprogramming, not in here... 22:35:47 protist: if you haven't already looked at it my logo might be useful to read 22:36:40 RodgerTheGreat: if you link it again i may peruse it...but i like to beat my head against the wall a bit and try my own hand at things before i borrow too many ideas :) 22:37:08 https://github.com/JohnEarnest/Mako/tree/master/demos/Loko 22:37:18 protist: me too. that's the fun way to do it :) 22:37:29 RodgerTheGreat: thank you :) 22:37:37 tangentaway: kindred spirit 22:38:53 protist: :) i'm also working on a lisp-like interpreter for forth. not scheme per se, but using s-expressions 22:39:14 mine is more about parsing 22:39:24 RodgerTheGreat: i had a very exciting idea a few days ago....but getting tail-recursion working in a Forth implementation (especially if i use an indirect threaded Forth) will likely not be trivial :P 22:39:30 Mako is in the top 20 F# projects on github 22:39:41 protist: my logo does TCO 22:39:41 hahahaha 22:39:43 has to 22:39:48 that's why it syntax highlights the { }. :) 22:39:53 I do it by stack-smashing 22:40:04 which is pretty easy in forth actually 22:40:35 yeah 22:40:38 basically if you want to implement TCO in a functional language you either use stack smashing or write a continuation-passing-style interpreter 22:40:54 RodgerTheGreat: i am thinking if i recognize recursion when parsing then maybe i can do it similarly to the BEGIN/AGAIN implementations 22:41:14 tangentaway: tell your friends to follow the project. If I get in the top 10 I'm going to email github about how they should properly support forth 22:41:24 --- nick: tangentaway -> tangentstorm 22:41:29 RodgerTheGreat: i'll see when i get there :) 22:41:35 ok 22:42:11 RodgerTheGreat: when i get farther along i may make more sense of what you are saying 22:42:36 no worries. It makes a lot more sense when you've started writing the thing. 22:43:08 the logo evaluation model is pretty different from the model used by a scheme but the core mechanics are very similar 22:43:17 RodgerTheGreat: but i figured out (at least tentatively) how to get the anonymous variable bindings for lambda expression 22:43:20 s 22:43:26 RodgerTheGreat: that seems like a good start 22:43:30 what's your approach? 22:43:50 RodgerTheGreat: i'll link you to a little code...where i was thinking with my keyboard :p 22:45:03 RodgerTheGreat: it seems so simple i fear someone more experienced coud easilly yank this out from under me hehe 22:45:06 RodgerTheGreat: sec 22:45:43 RodgerTheGreat: http://pastebin.com/dqf4whUR 22:46:07 everything's been done before, man- just focus on writing things that are beautiful and it will be good 22:46:39 RodgerTheGreat: i can refine it to get rid of ever using names at all, but at this point you can see that defining an `x' or `y' later on will not affect the proper use of the function `add' 22:46:48 protist: I had the idea to implement pascal in forth. not only did RodgerTheGreat here beat me to it, but I also have an implementation published in a magazine from 1983. :) 22:47:07 protist: hmm. So trying to use forth's temporal scope to produce lexical scope. 22:47:14 RodgerTheGreat: :D! 22:47:20 tangentstorm: nice! :) 22:47:23 tangentstorm: well I didn't really beat you to it because I didn't finish the damn thing 22:47:43 also wirth himself used a stack machine in the 1960's :) 22:47:46 not forth, but... 22:48:05 the core difference between a P-code VM and a forth machine is that the P-code needs frames 22:48:17 the rstack was one of the greatest innovations in forth 22:48:22 --- join: Nisstyre-laptop (~yours@oftn/member/Nisstyre) joined #forth 22:48:22 yeah. 22:48:47 basically the rstack and create...does> 22:49:17 arguably the interpreted/compiled dual nature of the language 22:49:28 forth has a lot of interesting innovations :) 22:49:55 often they're things that are so small and simple by themselves you don't even realize what good ideas they are until you see them in use 22:50:01 and has spawned a lot of interesting innovations 22:50:29 I like to tell people that forth is less a language and more a toolbox of ideas 22:50:32 ( joy too... ) 22:50:35 RodgerTheGreat: you can see how with some extra fiddling i can pass around addresses and only have the parser/interpretter be concerned with the names of the formal parameters :) 22:50:43 RodgerTheGreat: or that is the idea 22:51:21 I guess mainly I don't see how that'll work for recursive procedures 22:51:35 RodgerTheGreat: that is yet to be seen :p 22:51:41 that's pretty core 22:51:56 in Loko I implement scheme-style environment structures 22:52:19 even though a much simpler stack allocator would work 22:52:36 when I started the project I hadn't decided on lexical or dynamic scope 22:52:43 so I went for a general approach 22:53:15 I'm toying with the idea of a logo *compiler*, which would go for the simpler scope mechanism when things cannot be statically compiled 22:54:37 it would seem (at least to me) that the step from direct-threaded Forth to asm should be fairly simple (but looks may deceive) 22:55:20 totally doable 22:56:11 i have been musing a bit about how having a Forth intermediate might simplify making optimizing compilers 22:57:00 problem is there isn't much research on converting an SSA representation into efficient stack machine code 22:57:35 stack code is frequently used as an IR because it is easy to emit, but JITs generally just run it backwards to reconstruct an AST 22:57:38 once you compile down to primitives, there are some fairly trivial optimizations that can be done...and i have read a research paper where a VERY simple compiler just removed things analogous to DUP DROP and got to 96% of C -O2 speed with 1.55 times the source code size of the anologous C 22:58:13 I have noticed that my own peephole optimizer gets ridiculously great results with my stack code 22:58:39 RodgerTheGreat: define IR and SSA 22:58:48 Internal Representation 22:58:53 and Static Single Assignment 22:59:00 wikipedia can tell you more 22:59:02 I need to sleep 22:59:17 alright :) 22:59:22 i move on campus tomorrow 22:59:32 and i will be starting my CS degree :D 22:59:39 sounds like fun 22:59:45 previously i was doing Chemistry, and Physics before that 22:59:53 yeah, I am quite excited 22:59:59 one day you will have a piece of paper like I do 23:00:08 RodgerTheGreat: that is the idea 23:00:12 anyway, 'night 23:00:15 RodgerTheGreat: :)...i want to be a professor 23:00:18 RodgerTheGreat: goodnight 23:00:24 --- quit: RodgerTheGreat (Quit: RodgerTheGreat) 23:07:17 tangentstorm: so what exactly is it you are working on right now? 23:20:33 oh hey, protist. was on another screen. it's kind of a big project with a bunch of parts i guess... but it starts with a little programming course about bootstrapping a programming language. 23:23:06 protist: re optimizing compilers... there's a guy named mat2 that hangs out in #retro who is working on just that. he's reduced forth to 16 or so instructions, which he then packs two to a byte to make very efficient bytecode 23:24:33 tangentstorm: interesting :) 23:24:38 i think part of the idea is to keep the entire interpreter and much of the actual code in a cpu's cache, and to leverage the vector instructions for parallel execution along the way 23:24:51 tangentstorm: sounds awesome :) 23:25:16 tangentstorm: i need to learn about vector instructions 23:26:23 intel and amd chips have a bunch of 128-bit registers for vector processing ( MMX / SME )... you can use them to perform the same instruction on 16 bytes or 8 words or 4 32-bit values or whatever 23:27:00 so if you have something you need to do to every member of an array, it can be very efficient 23:27:08 ah 23:27:21 i will invest some time in learning about this sometime in the coming months :) 23:27:23 but: you can also do things like rotate that whole 128-bit vector 23:28:32 i want to take his 4-bit instruction code and pack entire 32-instruction programs into one register 23:29:08 then rotate the thing to get an infinite loop... :) 23:36:40 haha that sounds cool...i have little understanding of this yet, though :) 23:42:27 --- quit: I440r (Remote host closed the connection) 23:54:54 --- quit: tgunr (Quit: Nity nite) 23:59:59 --- log: ended forth/13.01.26