--- You are now known as Bagder --> Zagor2 (~bjst@labb.contactor.se) has joined #rockbox --- Zagor2 is now known as Zagor aloha! hey ho --- Bagder gives channel operator status to Zagor uh y%8 should be y&7 in lcd.c for the pixel functionss I'll fix yes, i realized that too. but it turns out as the same thing when compiled? i don't know about the code, but the logic is the same yes, logic is the same but % is generally a much slower operation ok * Bagder does an "Alan" hehe, don't be mean * Bagder chuckles woo new mozilla to get --> wavey (~wavey@dlan1431.dircon.co.uk) has joined #rockbox morn it is a sunny and fine morning here overcast and cool here --> alkorr (jbcoax@srs04m-8-117.n.club-internet.fr) has joined #rockbox for the CVS $Id, what must i put it in a source, so CVS fills it ? hi btw $Id$ hi :) oky :) do we have a standard file header to include at the top? yes i.e the rockbox copyright and logo? yeep so rather than specifying the Id tag specify the header :) and put the tag in the herder header yes, that's how it is so why did alan ask about the id tag? ask alan :) * wavey lol because i didn't know that :) because it isn't stated anywhere :) alan: you changed the license for your FAT code. was that intentional? nope at all they were my old headers ok, so I should change it back to GPL? just forget to change them if you are tempted :) i am :) okay i looked at it a bit yesterday. what did you mean when you said the code is "obsolete"? which code ? the fat code that you mailed me ah yes... hum because i plan to split it and maybe a little bit more generic for PC test ok, because I started working on it... :) is that so ? yes i plan to have an image of a FAT32 disk in a file to do testing on for your purpose ? ? zag: how will the main program body service user events while keeping the dsp full of data? will we just set up some sort of dma to allow the dsp to read data until complete, leaving the program thread to manipulate memory etc? or is there some other way? that's a good question, which among other things we will be discussing tonight :) i need to switch tunnels, brb <-- Zagor (~bjst@labb.contactor.se) has left #rockbox bag: we = .se? european people ;) yes me, Linus, Björn and a forth friend --> Zagor2 (~bjst@labb.contactor.se) has joined #rockbox ok --- Zagor2 is now known as Zagor cool oh you mean off-irc, Bagder ? we're gonna gather tonight right in real life wow there's an outside? * wavey is scared * Zagor is now in a clean, nice, pure ssl tunnel you worked out the CONNECT part? yup. found a perl script coolio i'll write up a twiki page knowing http pays off B-P seriously i see Zagor has change PAIOR and PBIOR to be ((volatile ...) i would try to avoid such a thing why? sometimes to have a byte access is better than a word access these are registers, yes? yes but byte access is a special case or a 32-bit access better than a 16-bit access also a special case this is the normal case --> Linus (~linus@labb.contactor.se) has joined #rockbox du to the fact, we write them in C, i don't see objections to leave them as address ant programmer to use the word access he wants ... and let ... it makes a mess in the code to always typecast them. this way, the registers are registers, as defined in the data sheet register ??? if you want to access them in a non-standard way, *then* you do special typecasts manual says we can access such registers as well byte as word, so there is no real non-standard way well the manual says the register is 16 bits wide, so that's how I define "standard" I define the "standard size" to be the register size. I would guess the the size the programmer wants would be the register size in 99% of all cases. i try to use a homogene way to access those register, and having SI,HI or QI remove the necessity to guess what size the register is. But due to the fact i'm in minority, i suppose i can only approve your changes unwillingly i really don't like the SI/HI/QI thing by the way i could need the addresses of those register (DMA with SCI0 for example) Except that noone can guess what QI, SI and HI means without searching in the header files. yes, we probably need double macros. one with the address and one for register access yes but i find more ugly explicit typecasting anyway Absolutely. We will probably still nedd both ways of doing it. explicit typecasting is good in special cases because then it shows that it's a special case i use GCC convention which has in internal the modes SI, HI and QI if you could find something else, i could be okay * Zagor has never seen SI/HI/QI in his 15 years of programming... Yes. But I have yet to see any C source code using that convention. but must be short anyway Absolutely. look at the gcc source --> Bagder2 (~chatzilla@as3-3-2.ras.s.bonet.se) has joined #rockbox I have looked at the GCC source code. The QI/HI/SI stuff is not C it is a pseudo language. * Bagder2 tries chatzilla Bagder2: good? nah, I think I prefer X-chat yes, your defines is not much more standard than mine anyway actually, they are <-- Bagder2 has quit (Remote closed the connection) look at any microcontroller C compiler registers are reserved uppercase symbols i don't call them 'standard' well no, but it's the most common way to represent registers it is not that kind of stuff i will call standard for me, they are libs like stdlib or stdio, no our own source I agree, it's not a standard. but it's a style that many people have seen before yeah.. yeah.. well.. well.. your momma! * Zagor twitches. Adi - awake? not really... for what its worth.. and i know its not much... but to me... SI HI QI makes no sense... BTW, the Archos guys have really made an odd I2C bus connection between the 7034 and the MAS... :-( because to anyone who doesn't immediatly recognize it.. well.. they are clueless to what it means.. but thats just my opin... so change them for another convention that's my point exactly and the MAS uses a really odd I2C protocol variant... Linus: will it set any limitations or just make it difficult? * adi|sleep also points out he isn't attacking anyone... A little tricky...and perhaps slower that necessary. anyway, for me they are not really register since SH7034 use a memory map to access peripheral registers => not a register for SH, register for peripheral on-chip. * Linus agrees with adi|sleep Linus: what about the trouble ? alan: it's the same thing. many controllers use memory-mapped registers For example the PIC and the PowerPC Well, not the POowerPC core, but all PowerPC-microcontrollers yes * adi|sleep points out that your reality is nothing but lies and baldardash and he is happy to say he has know understand of it. And the 8051, IIRC * adi|sleep goes back to sleep adi seems a bit... off ? Zombie? me? no no no.... so, he's talking in his sleep ;-) im on 'nuetrel' a victim of the Umbrella Corporation? i make a difference between cpu register and port registers that all. The way to access them is different which is latin for "its way to fucking hot and humid outside for 0430 " one use direct opcode, the other use peek/poke that's all Agreed. You dont access the CPU registers at all in C source code. poke 53280, 0 Black border a reset ? Linus: about I²C ? then what did the old "register" thing in C do? * Bagder hands the award to Linus what's the trouble adi|atWork adi|sleep adi|atWork adi|sleep adi|sleep: it tries to allocate a variable to a register nods instead of putting it on the stack okay.. now i remember. no one uses anymore register, because a lot of C compiler implicily uses registers as possible They have used a diode to simulate an open collector bus. That makes it tricky to communicate in both directions. * Zagor agrees so register is a void attribute in gcc yup yes but then gcc is a mighty fine compiler there are a bazillioin of worse ones out there * Bagder has been hit by a few GCC is good on some processors, worse on others. true but it has a good general engine Generally, GCC wants CPU's with a lot of registers well don't we all? for IA32 or SH, humm i mean.. come on.. cpus with lotsa registers are just so much more sexy not to mention better in bed. speaking of bed IA64 you mean ADI. Are you drunk? :-) only with powerlessness * adi|sleep cackles evilly I bet its the heat Linus: i'm not sure to understand, what do you mean by "communicate in both directions" ? nods and the lack of decent sleep. * adi|sleep giggles furiously as he missreads sleep with sheep... no wouldn't _that_ have been a freudian slip. hehe I mean that the data (and the clock in the case of the MAS) is bidirectional. Both read and write. And the diode makes that difficult. But not impossible. Just tricky. what's the australian definition of "safe sex"? * wavey pats adi|sleep on the head you X-mark the sheep that kicks * wavey -so- needs to learn some electronics is there a beginners bible? I don't know It's really simple. Just have a father that explains it to you. :-) yes but you can read, cannot you ? er i'm talking to Linus :) ah read MAS good :) hahaha! :) Yes I can read. Ti is working. But it is slow at the moment. I will add another trick from my bag to make it faster. it is the code or the electronic part which is really slow ? * Bagder likes bags with tricks Tha MAS is really nasty, as it drives the clock even when it is slave. :-( The data line takes a lot of time to go from 1 to 0 when reading, since the line is unconnected because of the diode. I will have to discharge it explicitly to make it faster. the MAS manual says it can held the clock to let it handle some things before reading further data okay Yup. And that is really nasty. Especially since the clock is also connected via a diode. in fact, you're telling us that MAS could run faster if the data line can discharge more rapidly Only the I2C line. That is only used for settings and configuration. but it only regards the I²C line A pull-down would really help. okay, not a real problem, just a nasty design Exactly. lines I²C shouldn't have pull-ups ? Yes. On the bus side. I was talkin about the CPU side of the diode. okay just a note if you disassembly the I²C part of the player firmware, they don't use the common way to set/clear the I²C lines instead of using IN direction to set line at 1, they use OUT direction and set to 1 that is, when setting port, always in OUT direction from the CPU when reading (checking line status), in IN direction daniel - you still capturing the logs? I do I suppose you don't use the same way to communicate with MAS (when setting 0, OUT dir.; when setting 1, IN dir.) cool can we automate it? stick a bot on and pipe it to the website? it is certainly possible and add a search engine? :) this is a wealth of info i added a search form yesterday it uses google especially to newcomers that will come along cool uses google's cache or realtime search? the cache ok but they index the site pretty regularly lovely regularly or frequently? ;) frequently :) i've nearly got the C++ XML library ready for inclusion just getting the CORBA interfaces ready first this firmware will kick ass haha hihi what about the web browser? ;-) :) bad you will need to convert it to plain C ;) now, this might be a ridiculous idea... but can we use more of the limited memory buffer for audio more? ??? hang on by using the disk to store our program data? and load it back when needed? we have a 2 MB DRAM, whatever we can have in or is that silly that is silly :) depending what you want to do i think to understand what Wavey means yes it could be a cool idea but not the priority alkorr: That is why they have the diode. They don't want to set it ton IN to drive a 1 on the bus. For some reason. the possibility to load a game when you want to play, instead always having them in memory yeah, keep a nucleus of program in memory, and demand load the bits we need how large is the footprint of archos firmware? archos apparently has no real dynamic memory it seems to use a lot of tables What is "real dynamic memory"? malloc Ah. so their size should be fixed i guess :) malloc is a dynamic memory a true dynamic memory, if you like do i misremember malloc's free not shrinking the process memory usage? not that it matters that's OS dependent wavey: that's a unix thing with only 1 process ok what i mean is if we want to have the ability to load specific code at a ponctual time you surely need a dynamic memory so when we only use the player (or recorder) we can use all the memory and to prevent us to work with fixed address (so binary code not reusable with new firmware) but you still need a code addresses relocator :) well, not the first thing rockbox will have no one knows how large the archos firmware is in memory? nope :) I xould guess about 100K. interesting :) But I might be wrong their firmware decompresses the mod, yes? .ajz in fact we can export some data in harddisk for exemple if we have messages in different language I guess the recorder decompreses the firmware. That would explain the long start time. i can't see the benefit of a compressed mod except to piss people off :) Neither can I. save disk space? hehehe hehe ooh, 60GB in your palm. Download time on the internet? I mean if you can save 1 second... :-) Wav. scrambling maybe so like yeah i remember all the things my c64 could do with 1mhz 1mhz? or 1mb? what interesting things can be done with a whole 12mhz of processing power heh ah yes :) i just with the player's LCD was even just a tiny bit better like to be able to draw the blocks between characters heh yup, all the fun games will only be for the recorder :*) nah i did a rather nice little thing where you run around a map overhead and it scrolls through the 2 lines quite nicely i think the messages inf the firmware must take a lot of space, it could be interesting to see when removed how many it saves space in memory to have just the messages of the right langage it's pointless till i can read levels in files and such but i just wanted to find out if it was possible to make a game playable in 2 lines and it is just be cooler with a little more capabilities heh that's might cool +y to have a < 64 KB code should be a good point alkorr: yes we have a very big advantage in that we can always compile in just the features and data that we need Hehe. The libc code is about 30k... ick libc? who needs libc? for div or shift operations when the shifter is not an immediate I use it for sprintf at the moment. The string functions are there too there's a diet libc we could check out we can use a simpler sprintf We have the source. We remove what we don't want. precisely * Bagder agrees Actually, I think newlib ha a diet sprintf. s/a/has/ "ha has" ? but due to the fact you use a library, you only integrate functions from libc you really use in your source* heheh * Linus has thick fingers today Not functions, modules Unfortunately, many finctions are located in the same .o file in the library, and they often call each other. ah bad But correctable. i thought they used a .c file for each functions Often they do. And sprintf() is a mighty beast. shure I use it for debugging output at the moment. using sprintf from linux? Nope. In the firmware. On the GDB console. a less capable sprintf() could of course be much smaller and still do just about what you'd want * Linus thinks of Trio that is not less Linus: i know but i'm speaking about what version sprintf is But you know how to strip it. true ;-) I don't know of any versions of sprintf. It's just Newlib. Version 10.0.1, IIRC we probably want a sprinf() for screen text formatting too yup one possibility i saw a tiny sprintf for gameboy advance Go get it. * wavey looks is to use a generic printf which call a function for a character not fast well that's how they all work but you can directly display without have a buffer more or less so ? so that is probably what we'll get but so when you use this function, just call this function with a callback ? I doubt that anyway will printf() to the display anyone ah yeah, it is another thing for the LCD recorder story right --- Zagor is now known as Zagor|lunch --- Linus is now known as Linus|lunch c u bye Alan <-- alkorr has quit (Read error: 110 (Connection timed out)) http://www.frotz.net/gbadev/remote/printf.c pretty tiny yes --- Zagor|lunch is now known as Zagor --- Linus|lunch is now known as Linus http://yugop.com/ver3/stuff/03/fla.html cute (and work safe) cool! http://www.oqo.com/ <= seen this? bleh, flash yeah annoying site, cool box <-- Linus (~linus@labb.contactor.se) has left #rockbox do you know why uisimulator has a garbled window title? no what's the variable in emacs that says to only indent with spaces? (setq-default indent-tabs-mode nil) I think ok closing tunnel, brb --> Linus (~linus@labb.contactor.se) has joined #rockbox lcd_update in lcd-x11.c doesn't ever clear pixels, does it? uh, no ;-) i noticed :) oops * Zagor has been scratching his head a while over this :) I'm not sure how to do that the best possible way though I mean to avoid flickering how about just redrawing the whole screen. performance is not really an issue on X flickering only happens if you do it very frequently or maybe have an "old" array which you compare against well, we would need to fill the whole rect first, then draw all pixels and then draw all new and clear all old that's what I had in mind so do it :) can't do it right now k it'll have to wait a bit The I2C is rocking like HELL! And fast too! * Zagor wonders just how much hell is rocking any sounds from the MAS yet? Wait. There's a bunch of commands to be sent to it to configure it. * Bagder caaaan't wait ;-) * Linus wants to please Bagder * Zagor can't wait for a working lcd_update... so just clear the screen first hmm, what does this "X11" mean? ;) * Linus thinks Bagder is lazy * Bagder reminds you about who wrote the uisim in the first place ;-) so tell me, how do I clear the screen? XDrawRect() or XFillRect() or something ok find a page about one of the other X* functions and click some links that's how I've made it this far ;-) --> alkorr (jbcoax@srs05v-2-184.n.club-internet.fr) has joined #rockbox Hi alan! The I2C is rocking like HELL! And fast too! hi again how do you do ? :) * Zagor has a little surprise for you all... I drive the data and clock lines low right before switching from output to input. That way I don't have to wait for the slow transition. uh ? i mean how do you get it ? :) okay * Linus is waiting for Zagor so you force discharge by this way soon soooooon... Yup. Works like a charm. hum some news from Dragan ? uh, i haven't mailed him yet. i forgot... * Bagder pokes Zagor with a large stick * Linus hits him hard alan: are you working on the fat code? then i shouldn't be poking on it yet... :) * Linus sees a major commit from Alan a lot of things to add in fact so don't rush lots of c++ comments ;-) * Bagder hides hehe sorry but there were here before you ;P You'll be surprised how little code you need to screw up your hard drive... :-) lol to screew up ? you mean to destroy ? Yup. No, not destroy. Just screw up. well my code never destroys or screws up ;P Of course. Not _your_ code. :-) but you're right. Just a lock command and you are bad under windows hopefully i can unlock with your modified drive *relief* driver we need to fix something like that for the recorder too ah yes USB 2.0 just a precision about my fat.c, i think the main thing that will stir you is probably the ata callback mechanism * Linus is still waiting for Zagors surprise * alkorr too paitence, children... :) patience, even alkorr: you mean except for the 1-byte arrays? ;) to understand what is it : it is way to handle, compute, swap or format data during a read or write operation in a atomic way (we cannot have simultanous readings sectors) yes because BPB is a real mess : all the fields are unaligned and using callback will create a too large function whereas I just need some fields in fact normally i don't keep in memory any boot sectors (like MBR, BPB or FSINFO) what's the history of the disk code we're cutting? has it been tried and tested elsewhere? or is it all new yes in the obsolete fat.c i gave to Zagor and the ones I lost during a harddisk crash SH really dislikes misunligned accesses I gotta go, see ya guys later **** ENDING LOGGING AT Fri Apr 19 14:34:13 2002