00:00:00 --- log: started retro/12.12.14 02:24:52 --- quit: harrison (Ping timeout: 240 seconds) 03:31:23 --- quit: karswell_ (Ping timeout: 255 seconds) 03:35:52 --- join: karswell_ (~coat@93-97-29-243.zone5.bethere.co.uk) joined #retro 05:43:21 tangentstorm: in the pl0 compiler, test 10 fails (see http://sprunge.us/ddCN ) 05:49:54 nice 07:05:09 okay. i just enhanced that the test script so you don't have to run the test files manually anymore 07:05:17 now to actually fix the compiler :) 07:12:45 'morning tangentstorm 07:37:18 hey beretta 07:38:45 crc : should all be working again now : https://github.com/tangentstorm/PL0-Language-Tools/commit/b7dabd3b7d8632c14ea028e31f964aed78f7a593 07:44:44 hmm. nope. still broken. 07:45:06 it doesn't complain but it puts the constant's name instead of the actual value 07:50:43 ok. fixed, and also added expected *.rx output for all the test programs 09:16:53 --- join: harrison (~quassel@li89-226.members.linode.com) joined #retro 09:35:18 tangentstorm: looks good 09:45:32 tangentstorm: I ported the changes to the parable implementation 09:46:56 :) 10:28:41 now I'm looking at plzero.pas, wondering if I can adapt that to generate parable/retro code... 11:46:10 it should be pretty close to the python version, except for the comment syntax. 11:46:18 his oberon0 language is a little bit more advanced, with records and arrays. 11:46:44 http://www.inf.ethz.ch/personal/wirth/Articles/CompilerConstruction/index.html 11:50:27 --- join: kumul (~kumul@cvx-ppp-66-50-141-36.coqui.net) joined #retro 12:32:36 --- quit: tangentstorm (Ping timeout: 250 seconds) 12:37:21 --- join: tangentstorm (~michal@108-218-151-22.lightspeed.rcsntx.sbcglobal.net) joined #retro 12:49:38 --- join: intothev01d (~intothev0@unaffiliated/intothev01d) joined #retro 14:08:05 --- join: Mat2 (~Claude@91-65-144-133-dynip.superkabel.de) joined #retro 14:08:22 hello 14:10:52 heya :) 14:13:49 hi tangentstorm 14:14:11 I hope you have relaxed a bit 14:14:37 yeah :) i don't really feel prepared for ludum dare here but my eyeballs have recovered :) 14:22:11 that's good 14:23:26 I'm just back from work and hungry so take a little break in the kitchen 14:23:37 --- nick: Mat2 -> Mat2-lunch 14:39:59 --- nick: Mat2-lunch -> Mat2 14:50:05 so, what are your plans for ludum ? 14:54:42 good question :) 14:55:08 pac-man or pong ? 14:56:05 i did kind of like the text adventure game idea, but i'm not married to it 14:56:19 getting a sprite engine working with retro would be cool too :) 14:56:50 kind of just depends on who all shows up and what they want to do :) 14:58:32 the problem I see is the time left before this contest start 14:58:55 I will see what I can do 14:59:31 well i was planning to do the 72-hour jam, and to aim pretty low on the game no matter what it is 14:59:46 i want to ship a simple game but mostly focus on the tools 15:00:26 ok, let's take the pascal vm and write a shape engine first, that should be easy 15:00:50 retro would be a good fit for an adventure 15:00:54 what kind of shapes? 15:02:08 rectangular shapes, some graphics which can be mapped onto a screen though a simple xor operation 15:02:41 this is fast, easy and monochrome 15:03:00 and exactly the way prites are simulated on the zx spectrum 15:03:11 ^sprites 15:03:23 the rest is art design 15:03:35 we could also use http://zengl.org/ :) 15:08:38 not interested? 15:16:06 looks nice, I stundy the interface 15:17:20 ok, let's use it 15:17:21 what if we had some ram inside of retro set aside for "video memory" 15:17:30 but instead of drawing pixels... 15:18:22 we could just have a big array of ( x, y, dx, dy, sprite_id ) records or something? 15:18:31 the video memory is already there but indirectly addressed though the VDP code 15:20:43 accessing is done similar to the real v98xx chip of the msx2 series 15:20:44 i guess i'm not really talking about video ram... i don't know what to call it 15:21:02 like a hardware sprite device 15:22:38 you want to reserve some ports as interface for acessing sprites though coordinates ? 15:22:52 sounds like a vertex buffer 15:22:53 yeah, but not necessarily a port 15:23:21 like i was picturing how in the old days on dos, you would write directly to video ram to put characters on the screen 15:23:45 and the vga card would actually read that whole block of memory directly 15:24:39 ok if you have a say fixed array of coordinates and a routine for plot that at vsync to screen, that's the way the Amiga chipset works 15:25:44 what about a fixed array of sprites? 15:25:56 like reserve 1000 sprite records 15:26:11 and then you can have up to 1000 sprites on the screen 15:27:01 exactly. I think this feature was called copper list and array (AMIGA terminology) 15:27:54 and if you want to move sprite number 5, you just write to: sprite_base + (spritesize * 5) + (offset of x ) 15:29:51 should work, but beware this would cost some performance if implemented in software 15:30:50 spritesize would be the size of the record ( x, y, image_number, dx, dy ) ... not the actual image 15:31:01 the actual image would be in the device 15:32:24 ( reading about the copper ... looks like that was the co-processor and did all kinds of things ) 15:35:48 yes, because of the performance demands implementing it 15:40:36 we could also just use SDL, since we already have that set up :D 15:41:33 i guess really they're all the same, as long as we can figure out how to make a bitmap and show it on the display 15:41:43 I have prepared the VDP code for a graphic mode, all needed is primary to extend the character map (to 64 kB) 15:52:39 ok, I think 256 colours are enough ? 15:52:55 works for me 15:55:16 https://www.assembla.com/code/avm/ <- 404 ??? 15:56:01 https://www.assembla.com/code/michalwallace-avm-fork/git/nodes <- also 404 15:56:07 what the heck?! 15:56:25 the site is there but git is gone :/ 15:57:22 * tangentstorm will push a copy to github 15:58:16 hmm, I think there have a serious server problem 16:00:26 good I have make a backup yesterday 16:00:47 well the nice thing about git is it stores the entire history 16:01:07 yes, that's an useful feature 16:01:42 ok, I include a graphic mode in the VDP code tomorrow 16:02:19 then let's search the best way for some shape or sprite support in retro 16:02:30 it's back already 16:02:41 on assembla i mean 16:03:00 well we have the canvas... 16:03:40 i had been thinking about aggpas 16:04:15 but for a 72-hour game i'm perfectly happy with rectangular sprites if you are 16:07:36 yes, that's easy to implement 16:07:54 do you have a google account? 16:08:09 https://docs.google.com/document/d/17tXStyPkBdfnIl0cu_PmQBaA4ipus-vmZ7yZE0XcyKM/edit <- setting up a document here 16:08:54 yes 16:18:36 dambere@web.de 16:19:15 you should have an invite now 16:20:53 ah where ? 16:22:29 at that email address? 16:22:31 no? :/ 16:22:58 it says you can edit... 16:23:12 but you're logged in as "anonymous" instead of that account... 16:27:45 ok seems to work now 17:14:12 --- join: essial (essial@72-28-188-183-dhcp.aik.sc.atlanticbb.net) joined #retro 17:14:21 where's the rest of the design document :) 17:16:14 tangentstorm 17:16:50 the magic of ludum dare is that you start on the actual game when the timer starts :) 17:17:03 essial: which is in 43 minutes :) 17:17:17 I know pascal but know nothing of retro 17:17:54 also I'm on windows 8, if that makes a difference either way 17:20:27 i guess I'll just keep working on my emulator then :p 17:20:30 --- part: essial left #retro 17:22:50 probably an TRS-80 emulator 17:38:28 --- quit: docl (*.net *.split) 17:38:29 --- quit: ivan``_ (*.net *.split) 17:38:29 --- quit: oPless (*.net *.split) 17:38:29 --- quit: SimonRC (*.net *.split) 17:38:30 --- quit: tangentstorm (*.net *.split) 17:38:31 --- quit: Mat2 (*.net *.split) 17:38:32 --- quit: kumul (*.net *.split) 17:38:32 --- quit: intothev01d (*.net *.split) 17:38:33 --- quit: yiyus (*.net *.split) 17:38:34 --- quit: karswell_ (*.net *.split) 17:38:34 --- quit: crc (*.net *.split) 17:38:34 --- quit: saper (*.net *.split) 17:38:35 --- quit: beretta (*.net *.split) 17:38:36 --- quit: ChanServ (*.net *.split) 17:57:05 --- join: yiyus (1242712427@je.je.je) joined #retro 17:57:05 --- join: crc (~crc@li125-93.members.linode.com) joined #retro 17:57:05 --- join: saper (saper@wikipedia/saper) joined #retro 17:57:05 --- join: beretta (~beretta@cpe-107-8-120-84.columbus.res.rr.com) joined #retro 17:57:05 --- join: kumul (~kumul@cvx-ppp-66-50-141-36.coqui.net) joined #retro 17:57:05 --- join: intothev01d (~intothev0@unaffiliated/intothev01d) joined #retro 17:57:05 --- join: Mat2 (~Claude@91-65-144-133-dynip.superkabel.de) joined #retro 17:57:05 --- join: tangentstorm (~michal@108-218-151-22.lightspeed.rcsntx.sbcglobal.net) joined #retro 17:57:05 --- mode: asimov.freenode.net set +o crc 18:02:37 --- join: ivan``_ (~ivan@unaffiliated/ivan/x-000001) joined #retro 18:02:38 * Mat2 back in ten minutes 18:02:38 --- join: carefish (~carefish@095-096-156-068.static.chello.nl) joined #retro 18:02:38 --- quit: Mat2 (*.net *.split) 18:02:40 --- quit: kumul (*.net *.split) 18:02:40 --- quit: intothev01d (*.net *.split) 18:02:41 --- quit: yiyus (*.net *.split) 18:02:41 --- quit: crc (*.net *.split) 18:02:41 --- quit: carefish (*.net *.split) 18:02:42 --- quit: saper (*.net *.split) 18:02:43 --- quit: beretta (*.net *.split) 18:02:44 --- join: karswell_ (~coat@93-97-29-243.zone5.bethere.co.uk) joined #retro 18:02:44 --- join: oPless (~oPless@lart.doosh.net) joined #retro 18:02:44 --- join: SimonRC (~sc@fof.durge.org) joined #retro 18:02:46 --- quit: karswell_ (Write error: Broken pipe) 18:02:46 --- quit: oPless (*.net *.split) 18:02:46 --- quit: SimonRC (*.net *.split) 18:03:27 --- quit: tangentstorm (*.net *.split) 18:03:28 --- quit: ivan``_ (*.net *.split) 18:03:53 --- join: SimonRC (~sc@fof.durge.org) joined #retro 18:03:53 --- join: oPless (~oPless@lart.doosh.net) joined #retro 18:03:53 --- join: ChanServ (ChanServ@services.) joined #retro 18:03:53 --- join: docl (~docl@unaffiliated/docl) joined #retro 18:03:53 --- join: carefish (~carefish@095-096-156-068.static.chello.nl) joined #retro 18:03:53 --- join: yiyus (1242712427@je.je.je) joined #retro 18:03:53 --- join: crc (~crc@li125-93.members.linode.com) joined #retro 18:03:53 --- join: saper (saper@wikipedia/saper) joined #retro 18:03:53 --- join: beretta (~beretta@cpe-107-8-120-84.columbus.res.rr.com) joined #retro 18:03:53 --- join: kumul (~kumul@cvx-ppp-66-50-141-36.coqui.net) joined #retro 18:03:53 --- join: intothev01d (~intothev0@unaffiliated/intothev01d) joined #retro 18:03:53 --- join: Mat2-afk (~Claude@91-65-144-133-dynip.superkabel.de) joined #retro 18:03:53 --- mode: asimov.freenode.net set +oo ChanServ crc 18:05:09 --- join: tangentstorm (~michal@108-218-151-22.lightspeed.rcsntx.sbcglobal.net) joined #retro 18:05:25 --- join: ivan``_ (~ivan@unaffiliated/ivan/x-000001) joined #retro 18:07:59 --- join: karswell_ (~coat@93-97-29-243.zone5.bethere.co.uk) joined #retro 18:18:16 --- join: erider (~chatzilla@unaffiliated/erider) joined #retro 18:18:39 hi all 18:25:21 --- quit: kumul (Ping timeout: 265 seconds) 18:35:31 hey erider 18:38:21 --- join: Seewhen (~IceChat9@ti0008a380-dhcp0637.bb.online.no) joined #retro 18:39:08 --- part: Seewhen left #retro 18:39:30 alright, so should it automatically look for tests to load and run when the vm starts up? or should it be interactive somehow 18:42:44 intothev01d: do you have retro installed? 18:43:27 prob not. i just downloaded the ngaro thing 18:44:09 we have a mirror in the lpmc directory 18:44:37 https://github.com/LearnProgramming/retro-language 18:47:21 --- join: kumul (~kumul@cvx-ppp-66-50-141-36.coqui.net) joined #retro 18:47:59 hi tangentstorm 18:49:15 erider: we're making a game in retro + pascal for ludum dare 18:49:32 https://docs.google.com/document/d/17tXStyPkBdfnIl0cu_PmQBaA4ipus-vmZ7yZE0XcyKM/edit# 18:58:18 that was the text base game you were talking about right 19:42:45 yeah... it looks like we're going to shoot for making a sprite engine though 19:43:39 i'd still like to use the fiction module for maps.. maybe extend it to hold a tile map or something 19:45:49 okay... was just showing intothev01d around the test suite. he's volunteered to help with getting the javascript version of ngaro to work with the test cases 19:46:50 carefish has been putting together some ideas for a possible story... which hopefully he'll be adding to the doc? :) 19:47:31 good deal 19:47:56 i'm going to install zengl here and then try to prototype my idea for a sprite engine device 19:55:24 talk to you tomorrow 19:55:28 caio 19:55:37 --- quit: erider (Quit: ChatZilla 0.9.89 [Firefox 17.0.1/20121129162756]) 20:03:53 --- quit: karswell_ (Remote host closed the connection) 20:14:15 --- join: karswell_ (~coat@93-97-29-243.zone5.bethere.co.uk) joined #retro 20:15:21 looks like zengl ships with precompiled binary files for various platforms 20:15:43 he even keeps *.o *.a in the svn repo... weird 20:20:33 --- quit: docl (Remote host closed the connection) 20:32:59 how do you assign variables when you make a function? 20:33:22 : foo variables|10 a: 20 b: | ; ? 20:35:59 oh, variables| a: 10 | @a putn 20:37:24 wah O-o 20:39:32 i've never done that :) 20:40:16 forth code doesn't use a lot of variables... instead you just take stuff off the stack 20:41:26 in the pl/0 compiler, i replaced the function-local variables with {{ ... }} 20:41:35 well, i'm severely crippled here :D i've been trying to just do 128 * 512 (as an example) 20:41:43 and not really gettin that to work 20:42:07 128 512 * 20:42:12 putn 20:42:33 https://github.com/tangentstorm/PL0-Language-Tools/blob/master/tests/40_procedures.pl0 20:43:03 https://github.com/tangentstorm/PL0-Language-Tools/blob/master/expect/40_procedures.rx 20:43:33 --- quit: karswell_ (Remote host closed the connection) 20:43:38 the second link shows what the compiler generates when compiling the code at the first link 20:44:06 the formatting is ugly because it's generated code 20:44:21 but if you put them side by side it makes sense 20:45:15 see, they're not really "variables" like you have in c/java/pascal 20:45:28 everything is just a word 20:46:00 : isn't special, it's just a word in the dictionary like any other 20:46:10 it just happens to flip the compiler on 20:46:31 and calls the function to read a word 20:46:53 soo 20:46:58 128 test ! 20:47:03 512 wutevz ! 20:47:16 wutevz @ test @ * putn 20:47:24 that's 128 * 512? 20:47:42 yes, provided you've created those as "variables" 20:48:16 what a "variable" is really is a word that pushes an address onto the data stack 20:48:28 ooh, so that's how i could assign those in : whatever ( n-n ) variables|test wutevz| ? 20:48:28 you can see the stack with .s 20:48:54 see you can't really do it inside a colon definition 20:49:25 : sum a @ b @ + ; 20:49:44 you can't define "a" and "b" inside that because you're already defining "sum" 20:49:59 let's say we want "a" to be at memory address 1234 20:50:03 here's what a is: 20:50:09 : a 1234 ; 20:50:23 then if you type 555 a ! 20:50:35 it'll store the number 555 in address 1234 20:50:42 and if you type: 20:50:47 1234 @ putn 20:50:50 it'll then say 555 20:51:05 oh, pointer-like? 20:51:07 yes 20:51:19 when you say variables| a b | 20:51:23 it's doing the exact same thing 20:51:45 ah... forth lessons... free! 20:52:03 except there's a special variable/pointer called HERE that picks the address for you 20:52:15 and each time you allocate some ram, HERE gets that much bigger 20:52:28 in fact if you do that: variables| a b | 20:52:31 and then you type: 20:52:41 a b HERE .s 20:52:45 you'll see the pattern 20:52:57 beretta: :) 20:53:23 uhh.. it might be lower case. "here" 20:53:48 --- join: karswell_ (~coat@93-97-29-243.zone5.bethere.co.uk) joined #retro 20:54:45 hmm. 20:55:26 easier to see with 3 20:55:42 variables| a b c | a b c here .s 20:55:55 you'll see the header is 7 cells 20:56:12 and that here points to the cell right after c 20:56:38 i guess the header is 6 cells, the value is 1 cell 20:57:06 and if you use longer variable names, the header will get longer 20:57:45 retro stores header and code in the same area? 20:57:50 variables| xx yy zz | yy zz - 20:57:56 yes 20:58:02 sure looks that way to me 20:58:13 in fact i know it does 20:58:59 it's one long database 20:59:59 aha 21:00:01 the header contains the name ( terminated with a 0 ), the type, a pointer to the *previous* header... um... 21:00:05 and some other stuff 21:00:06 here here here here .s 21:00:08 oh the doc string 21:00:41 at memory location 2 ( "last" ) there is a pointer to the last header defined 21:02:00 the pointer to the previous header is the first value in the header 21:02:03 so you can actually say 21:02:16 last @ @ @ d->name puts 21:02:31 keep changing the number of @'s and you'll browse the dictionary 21:05:13 i feel dumb xD really can't understand the syntax 21:05:22 carefish: there isn't any syntax :) 21:05:27 it's just one word after another 21:05:34 last puts the number 2 on the stack 21:05:49 @ looks at the value at memory address 2 and leaves that on the stack 21:06:01 @ looks at whatever's at that address and puts that on the stack 21:06:07 @ looks at whatever's at that address and puts that on the stack 21:06:36 d->name is a word that takes a value on the stack, assumes there's a dictionary entry there, and jumps to where the name would be 21:06:43 then puts that address on the stack 21:06:53 (each of these consumes the previous value, btw) 21:07:21 so you'd need to do @ @ @ d->name again ? 21:07:24 puts takes a number off the stack, assumes it's a pointer to a string, and prints each value it sees as a character until it finds a zero 21:07:39 yes 21:07:48 w/o the last? 21:07:51 or w/? 21:07:56 if you want to keep a copy of the number, you can use "dup" 21:07:57 ah... asciz strings... neat. 21:08:40 the convention is that each word consumes its input, so it's the *caller's* responsibility to use "dup" 21:08:58 don't worry about stack juggling .... it get easier with practice. 21:09:33 carefish: yes, you need the word "last" and the first "@" to get the address of the last item in the dictionary 21:09:50 the concept of 'consume' is weird for me :D 21:09:51 the dictionary being the linked list of headers 21:10:09 yeah :) 21:10:11 does that mean it stops existing? 21:10:20 try it: 21:10:23 or that i need to put it back on the stack? 21:10:31 2 .s 3 .s + .s 21:10:41 "reset" clears the entire stack 21:11:27 + consumes the 2 and the 3 and replaces it with a 5 21:11:34 hence ( nn-n ) 21:11:49 oh that's what you mean by consome 21:12:02 :) 21:12:04 so the variable itself wont exist after use? 21:12:21 but i'd need to retrieve it w/ a couple of @'s? 21:12:29 (well, the value at the variable) 21:12:38 the value is still there in ram 21:12:46 and the name is still there in the dictionary 21:12:46 yeah that's what i mean 21:12:57 so if it was named "a" you can use it again 21:13:07 just by using the word "a" again 21:13:34 but it's removed from the data stack 21:13:51 there are two stacks 21:14:03 the data stack is for the data you're working with 21:14:30 and the address stack is primarily for nested procedures 21:14:42 it's where you go back to when you return from a function 21:14:57 function is the wrong word. it's just a "word" 21:15:07 ";" is return 21:15:32 so in a definition like... : sum + ; 21:15:44 ; adds a "return" instruction to the word's definition 21:15:49 and then turns off the compiler 21:16:14 the compiler is just writing instructions to ram and incrementing that "here" variable 21:16:50 this is why you can't define local variables inside the word definition 21:17:18 they would just get written inside the definition of the sum function rather than to the dictionary 21:17:51 ... 21:18:16 well... actually, that's not accurate 21:18:43 : mult a b * ; 21:18:57 so how do i tell retro what a and b are? 21:19:11 you need to define them before you define that function 21:19:22 : a 2 ; 21:19:31 or 2 constant a 21:20:08 if you use variable| a b | then remember a and b will be words that push addresses onto the stack rather than values 21:20:27 but really you would not write it that way 21:20:31 you would just do: 21:20:36 : mult * ; 21:20:42 then: a b mult 21:20:57 and to print the value? 21:21:05 a b mult putn 21:21:30 the forth way of thinking is : lots of simple words chained together :) 21:24:02 okay... i'm gonna get some sleep here... 21:24:13 sleep well :P 21:24:24 i'll fiddle some more with it 21:24:50 Mat2-afk: the ZenGL thing looks pretty cool. i ran the lazarus demos, and there's a nice demo of the sprite engine. i think we can definitely work with this 21:25:00 have fun. see you guys tomorrow :) 21:25:07 --- nick: tangentstorm -> tangentsleep 21:41:48 --- quit: intothev01d (Quit: intothev01d) 22:07:45 --- quit: kumul (Quit: WeeChat 0.3.9.2) 22:46:45 --- nick: Mat2-afk -> Mat2 22:46:49 hello 22:49:01 get some sleep 22:49:18 --- quit: Mat2 (Quit: Verlassend) 23:59:59 --- log: ended retro/12.12.14