*** Protokolldatei gestartet *** Datum: Mi. Apr 4 19:57:10 2012 [Mittwoch, 4. April 2012] [19:57:10] Betreten Sie haben den Kanal #forth-ev betreten (-bernd@p5DCD6239.dip0.t-ipconnect.de). [Mittwoch, 4. April 2012] [19:57:15] Modus Kanalmodi: [Mittwoch, 4. April 2012] [19:57:17] Actually I did contact him, and he sent me his CamelForth code [Mittwoch, 4. April 2012] [19:57:25] Michael Kalus has worked on this: http://forth-ev.de/repos/CF430FR/ [Mittwoch, 4. April 2012] [19:57:42] Thanks [Mittwoch, 4. April 2012] [19:58:33] Hallo! [Mittwoch, 4. April 2012] [19:58:34] Another helpful contact would probably be another Matthias: koch@pci.uni-hannover.de [Mittwoch, 4. April 2012] [19:58:36] We were trying out the sibling project http://forth-ev.de/repos/CF430G2553 /ne [Mittwoch, 4. April 2012] [19:58:37] Hallo Bernd [Mittwoch, 4. April 2012] [19:58:39] en [Mittwoch, 4. April 2012] [19:58:56] these days with interesting discussions. [Mittwoch, 4. April 2012] [19:58:59] Hi Bernd! [Mittwoch, 4. April 2012] [19:59:18] http://mecrisp.sourceforge.net/ is his baby [Mittwoch, 4. April 2012] [19:59:30] Ah, I see. [Mittwoch, 4. April 2012] [19:59:51] There was mention of this on the forth-ev.de page. [Mittwoch, 4. April 2012] [20:00:07] Is there any size limit in that IAR compiler ? [Mittwoch, 4. April 2012] [20:01:11] In the free version? Probably so. But I don't know the details. [Mittwoch, 4. April 2012] [20:02:12] Yes, I have the free version. I have to check if there is any limit. [Mittwoch, 4. April 2012] [20:03:47] BTW I ich lese deutsch, aber mein schreiben is sclechter ! [Mittwoch, 4. April 2012] [20:06:14] So is there still interest in the unified address space question ? [Mittwoch, 4. April 2012] [20:06:43] I'm in favor of unified address spaces. [Mittwoch, 4. April 2012] [20:07:22] I see no real need for it [Mittwoch, 4. April 2012] [20:07:49] It limits the address spaces in an un-nessairy way [Mittwoch, 4. April 2012] [20:08:08] Me neither --- it's another magic. And its hard to come by if it fails, and you dont even know, it exists. [Mittwoch, 4. April 2012] [20:08:34] and makes the interpreter slower (he has to decide wich access method is to be used every time) [Mittwoch, 4. April 2012] [20:09:23] only if you can decide the address space at compile there will be no malus. Seldom enough [Mittwoch, 4. April 2012] [20:09:39] I think its more convenient to use. [Mittwoch, 4. April 2012] [20:10:11] The speed penalty is minor in my opinion, just two clock cycles [Mittwoch, 4. April 2012] [20:10:42] more than 2 cycles. IMHO. You have to compare 16bit numbers [Mittwoch, 4. April 2012] [20:11:01] Test a few bits is sufficient. [Mittwoch, 4. April 2012] [20:11:05] Or you loose even more addressable space [Mittwoch, 4. April 2012] [20:11:26] The lower 8 bit should not matter at all. [Mittwoch, 4. April 2012] [20:11:40] I think its enough to compare just the upper byte of the address, that gives you 256 byte blocks [Mittwoch, 4. April 2012] [20:13:36] anyway: I have a board here with 64KB external RAM. With my amforth I can adress each and every byte of it. And enjoy the EEPROM (ok, not that many) and have 128KB Flash. [Mittwoch, 4. April 2012] [20:13:51] Its easier to get it foolprof, when build the check into @ and ! . Defers will not work that well [Mittwoch, 4. April 2012] [20:14:41] But I've implemented a unified address @/! recently. [Mittwoch, 4. April 2012] [20:15:05] Following you schema: first RAM, than EEPROM and what's left as flash. [Mittwoch, 4. April 2012] [20:15:53] OK, thats good ! [Mittwoch, 4. April 2012] [20:16:01] We'll see what people can tell about it. So far no feedback at all ;) [Mittwoch, 4. April 2012] [20:16:27] But I've made it a compile option that is usually turned off ;) [Mittwoch, 4. April 2012] [20:17:15] I have not seen any large applications for FF that would need so much memory yet. [Mittwoch, 4. April 2012] [20:18:13] But maybe its because FF does not support more than 64 Kb address space, :-) [Mittwoch, 4. April 2012] [20:18:14] I start playing with SD cards and blocks. They do need much RAM [Mittwoch, 4. April 2012] [20:18:49] Or IP stacks [Mittwoch, 4. April 2012] [20:19:02] btw: what do you think about case insensitiveness of dictionary lookups? Useful or not? [Mittwoch, 4. April 2012] [20:20:41] I choose to have it case sensitive, That mainly because I hate press shift, so I code in lower case [Mittwoch, 4. April 2012] [20:20:54] :) Just like me [Mittwoch, 4. April 2012] [20:21:14] Then you all need to implement case insensitive, because standard Forth expects words to be found in upper case ;-). [Mittwoch, 4. April 2012] [20:21:33] This is just history. Ideally, all words would be lower case, and then case sensitivity wouldn't matter. [Mittwoch, 4. April 2012] [20:22:02] Thats why I skipped standard forth :-) No DO LOOP, just FOR NEXT . [Mittwoch, 4. April 2012] [20:22:47] do loop's are a good intellectual challange. Once you've got its even simple ;) [Mittwoch, 4. April 2012] [20:22:58] My previous answer was wrong. FF is case sensitive ! [Mittwoch, 4. April 2012] [20:22:58] leave is more challanging [Mittwoch, 4. April 2012] [20:23:59] I had DO LOOP but threw it out. I have never missed it. [Mittwoch, 4. April 2012] [20:24:54] And in a small Forth the DO LOOP ?DO +LOOP LEAVE takes a lot of code space, which is limited :-) in the FF case [Mittwoch, 4. April 2012] [20:25:20] I found some interesting code with do/loops and no examples with for/next. Made the decision simple ;) [Mittwoch, 4. April 2012] [20:26:12] I get some complaints about the missing do loops, but only from one person, pito ! [Mittwoch, 4. April 2012] [20:26:45] Mister pito? Cool. He left amforth a long time ago ... [Mittwoch, 4. April 2012] [20:27:02] 133 line of source code (inkl. comments and headers, one instruction per line). I don't consider this very much code ;) [Mittwoch, 4. April 2012] [20:27:24] Pito has had good ideas. [Mittwoch, 4. April 2012] [20:27:45] Yes, but he did not like to implement them [Mittwoch, 4. April 2012] [20:27:52] very true ;) [Mittwoch, 4. April 2012] [20:27:57] To be fair: he contributed a module to floating point numbers. [Mittwoch, 4. April 2012] [20:28:27] Good [Mittwoch, 4. April 2012] [20:30:21] cloop.fs in Gforth is also pretty small. [Mittwoch, 4. April 2012] [20:32:01] Yes, but when you have to squeeze it into 8 Kbytes, including the virtual unified address space, some choices are made [Mittwoch, 4. April 2012] [20:32:57] Of course. [Mittwoch, 4. April 2012] [20:34:05] Gforth EC takes 16kB, and I probably should look through it what takes most of the space. [Mittwoch, 4. April 2012] [20:34:46] It could be done as a add on. Also I have skipped the 8 kbyte limit, which was the HW write protection area in a many PICs [Mittwoch, 4. April 2012] [20:35:16] Now I only have SW write protection for the kernel area. It seems enough. [Mittwoch, 4. April 2012] [20:36:05] Is Gforth EC umbilical ? I quess not, since its large. [Mittwoch, 4. April 2012] [20:37:10] I try to fit amforth into 8 KB and put all remaining fuctionality as loadable forth code [Mittwoch, 4. April 2012] [20:37:24] No, Gforth EC is not umbilical. [Mittwoch, 4. April 2012] [20:39:20] FF atmega is 8 KBytes, FF PIC30 is less than 8 Kbytes, FF PIC18 is 9 Kbytes, FF PIC18+USB is 11 Kbytes [Mittwoch, 4. April 2012] [20:41:17] Checking you wordlist, I found a P register. Is that similiar to the A/B/X/Y concept of Stephen Pelc from http://www.complang.tuwien.ac.at/anton/euroforth/ef08/papers/pelc.pdf ? [Mittwoch, 4. April 2012] [20:42:05] Its similar to A but not the same. [Mittwoch, 4. April 2012] [20:42:07] I merged the X/Y into A/B and found it an useful extenstion [Mittwoch, 4. April 2012] [20:43:22] Is there any char fetch store via the A/B/X/Y registers ? I did not see any. [Mittwoch, 4. April 2012] [20:43:47] me too. Would be useful indeed. [Mittwoch, 4. April 2012] [20:44:04] I wonder how many of those registers you really need. [Mittwoch, 4. April 2012] [20:44:27] _really_ need: none of course. [Mittwoch, 4. April 2012] [20:44:30] One is dearly needed - as "current object/structure pointer" it is very helpful. [Mittwoch, 4. April 2012] [20:44:41] It's about diminishing return. [Mittwoch, 4. April 2012] [20:44:43] but they are not completly useless [Mittwoch, 4. April 2012] [20:44:46] One gives you a lot. [Mittwoch, 4. April 2012] [20:44:46] The X/Y was for calling C function libs in Pelcs paper [Mittwoch, 4. April 2012] [20:44:53] The second? [Mittwoch, 4. April 2012] [20:45:29] to be honest: I've used only A so far ;) [Mittwoch, 4. April 2012] [20:46:09] For eaxmple in my CMOVE I have one address on the stack and one in the P register [Mittwoch, 4. April 2012] [20:46:23] But who knows, maybe with my buffers and blocks B may show its use as well? [Mittwoch, 4. April 2012] [20:46:29] Yes, that's what I'm thinking about. [Mittwoch, 4. April 2012] [20:46:48] For copy operations, TOS is already another register. [Mittwoch, 4. April 2012] [20:46:54] The code is essentially the same. [Mittwoch, 4. April 2012] [20:47:03] for A and B [Mittwoch, 4. April 2012] [20:47:35] and since the atmegas do have enough registers, it does not hurt to have them both at the same time [Mittwoch, 4. April 2012] [20:47:42] More registers makes for higher interrupt overhead and higher overhead in PAUSE [Mittwoch, 4. April 2012] [20:47:53] With DO LOOPs, I usually use TOS as one register, and I as the other. [Mittwoch, 4. April 2012] [20:48:00] No need for a special purpose register. [Mittwoch, 4. April 2012] [20:48:59] A and B are global pointers, not task local ones [Mittwoch, 4. April 2012] [20:49:00] Any sort of structure access becomes cumbersome without a current structure register. [Mittwoch, 4. April 2012] [20:49:16] They should be saved and restored on task switches. [Mittwoch, 4. April 2012] [20:49:47] I save P in interrupts and in PAUSE [Mittwoch, 4. April 2012] [20:50:27] Nobody yet complained about that I do not save them.. Probably nobody uses them - [Mittwoch, 4. April 2012] [20:51:34] P is also nestable. !P>R pushes P to the return stack and puts a new value in P [Mittwoch, 4. April 2012] [20:51:47] R>P pops it back [Mittwoch, 4. April 2012] [20:52:16] Yes, that's very useful. [Mittwoch, 4. April 2012] [20:53:18] The same things can be done with A/B/X/Y also. I dont know how MPE Forth handles that [Mittwoch, 4. April 2012] [20:53:24] I made that the default with my O register in bigForth (current object): >O pushes the old value on the return stack, and sets it from the stack, O> restores from return stack. [Mittwoch, 4. April 2012] [20:55:01] >A and A> communicate with the TOS only. [Mittwoch, 4. April 2012] [20:55:37] I was thinking of using P as a base register for structures, but Have not done anything about it [Mittwoch, 4. April 2012] [20:57:37] a@+ can do iterations (auto-incrementing A on every read) as well [Mittwoch, 4. April 2012] [20:58:29] For communication protocols I would love to have structures with bit fields like in C, but there is no good and efficient abstraction for that classic Forth [Mittwoch, 4. April 2012] [20:58:58] In classic Forth :-) [Mittwoch, 4. April 2012] [20:59:48] I use +bit, -bit and bit@ to access individual bits (in bit arrays). [Mittwoch, 4. April 2012] [21:00:30] I put the P incrementing/decrementing in separate words, there would have been too many combinations otherwise [Mittwoch, 4. April 2012] [21:02:06] I found the bitmap words useful: bm-set( bitmask addr -- ) or bm-toggle. Can manipulate more than one bit in one command [Mittwoch, 4. April 2012] [21:02:45] Bitfields in C structs can have any amount of bits, and can be accessed as whole numbers as well [Mittwoch, 4. April 2012] [21:03:58] bm-set is mset in FF. There is mset, mclr and mtst [Mittwoch, 4. April 2012] [21:03:59] For manipulating more than one bit, I have xor! and! and or!. Work similar as +! [Mittwoch, 4. April 2012] [21:04:49] That sound helpful, have to look at those. [Mittwoch, 4. April 2012] [21:06:10] Thanks guys, this has been interesting, I have to go and walk the dogs. [Mittwoch, 4. April 2012] [21:07:06] enjoy [Mittwoch, 4. April 2012] [21:07:12] Bye [Mittwoch, 4. April 2012] [21:07:18] and dont let you be eaten ;) [Mittwoch, 4. April 2012] [21:07:25] Bye [Mittwoch, 4. April 2012] [21:07:48] bye [Mittwoch, 4. April 2012] [21:07:57] What is the command to leave a chat channel ? [Mittwoch, 4. April 2012] [21:08:24] http://www.ircbeginner.com/ircinfo/ircc-commands.html [Mittwoch, 4. April 2012] [21:08:49] slash-quit [Mittwoch, 4. April 2012] [21:08:57] oder so ;) [Mittwoch, 4. April 2012] [21:09:02] Beenden MikaelN hat den Server verlassen ("ChatZilla 0.9.88.1 [Firefox 11.0/20120312181643]"). [Mittwoch, 4. April 2012] [21:09:26] Ist verstanden worden :-) [Mittwoch, 4. April 2012] [21:09:27] ich wollt es nicht eintippen. Mein IRC Client reagiert manchmal komisch bei slashes. [Mittwoch, 4. April 2012] [21:09:43] Manchmal erkennt er führende Leerzeichen, machmal nicht [Mittwoch, 4. April 2012] [21:10:04] Hängt wohl vom Patchstand meines Ubuntus ab, oder so [Mittwoch, 4. April 2012] [21:11:08] Erich haben wir wohl vergrault, scheints? [Mittwoch, 4. April 2012] [21:12:05] Jedenfalls weiß ich jetzt, dass ich nicht der einzige bin, der mit mehr als einem solchem Register-Wort nichts anfangen kann. [Mittwoch, 4. April 2012] [21:12:48] Scheinbar ist das eine nützliche Idee, so ein register direkt mit dem Returnstack zu verbinden. [Mittwoch, 4. April 2012] [21:13:13] Genau, weil man dann das save und restore sehr billig bekommt. [Mittwoch, 4. April 2012] [21:14:12] Die A/B Sachen hab ich vor Jahren mal implementiert, so als Fingerübung. So richtig benutze ich die aber erst seit kurzem (und prompt nen idiotischen Bug gefunden, deswegen weiss ich, dass die keiner je benutzt haben kann) [Mittwoch, 4. April 2012] [21:15:04] Benutzer suchen sich dann Foren, in denen sie über solche Bugs meckern können, ohne dass die Entwickler jemals davon erfahren ;-) [Mittwoch, 4. April 2012] [21:15:47] Ich bin noch da :-) [Mittwoch, 4. April 2012] [21:15:50] wär ja auch zu einfach, zu sagen "hast mist gebaut". [Mittwoch, 4. April 2012] [21:16:23] Deswegen muss ich Erich ja auch so pflegen. Er sagt mir sowas ;) [Mittwoch, 4. April 2012] [21:16:40] Jo. [Mittwoch, 4. April 2012] [21:16:52] Gestern habe ich einen bug in Gforths key?-file gefixt, von dem wusste die meckernde User-Gemeinde schon lange. [Mittwoch, 4. April 2012] [21:17:06] Nur - in dem Forum, in dem sie gemeckert haben, das kannte ich gar nicht... [Mittwoch, 4. April 2012] [21:17:16] Hab ich das jetzt auf die Schnelle richtig verstanden: das sind quasi so Indexregister, die einen Offset nach irgendwohin speichern? [Mittwoch, 4. April 2012] [21:17:37] Sagen wir mal, das ist erst mal ein Adress-Register. [Mittwoch, 4. April 2012] [21:17:48] Kann man zum Laden und Speichern benutzen, und incrementieren. [Mittwoch, 4. April 2012] [21:17:52] Und mit Offset verwenden. [Mittwoch, 4. April 2012] [21:18:47] auf AVRsch also wie die Registerpaare X Y Z ??? Nur daß ich das jetzt aus meinem Programm raus mitbenutzen kann? [Mittwoch, 4. April 2012] [21:19:02] Ja, so ungefähr. [Mittwoch, 4. April 2012] [21:19:07] ja, so etwa. Nur das die Offsets auch dynamisch sind. [Mittwoch, 4. April 2012] [21:19:44] Mir reicht eigentlich, wenn man die Offsets mit ins Programm hineincompiliert, die müssen sich dann nicht mehr zur Laufzeit ändern können. [Mittwoch, 4. April 2012] [21:19:52] Na gut. Wenn mir ein Problem über den Weg läuft, das damit gut geht, dann komm ich bestimmt drauf zurück. sleep hab ich ja auch erst nach Jahren gebraucht :-) [Mittwoch, 4. April 2012] [21:21:00] Jo, das ist nichts, was wirklich wichtig wäre. Ganz im Gegensatz zur Reihenfolge der Werte im .S ;) [Mittwoch, 4. April 2012] [21:22:09] Na warts ab. Ich bereite ja grad den 3-Tage-Kurs vor. Mit Sachen wieder in Assembler schreiben und dann nochmal in C und nochmal in Forth. Vielleicht fällt mir dann noch was ein zu A/B ... [Mittwoch, 4. April 2012] [21:23:03] Der Forth-Interpreter hat gegenüber C und Assembler einen ganz wichtigen Vorzug: Er hat einen Wort-Parser dabei, der auch Zahlen erkennt [Mittwoch, 4. April 2012] [21:23:12] Gibts zu den A/B Dingsen ein Beispiel auf der webseite? Oder sonstwo? Ach in dem o.g. Artikel. [Mittwoch, 4. April 2012] [21:23:28] Viele basteln sowas in C und bauen Krücken, die schaurig aussehen. [Mittwoch, 4. April 2012] [21:23:51] Ein Beispiel zu den A/B Dingern hab ich keines (noch nicht) [Mittwoch, 4. April 2012] [21:25:16] Biquad Filter example. Na Mahlzeit. Das versteh ich um die Zeit nicht mehr. [Mittwoch, 4. April 2012] [21:29:26] Eins hat Mikael aber bei mir erreicht: [Mittwoch, 4. April 2012] [21:29:52] ich von 9600 auf 38400 bit/sec beim seriellen Terminal umgestiegen. [Mittwoch, 4. April 2012] [21:30:01] Ist beeindruckend schneller :) [Mittwoch, 4. April 2012] [21:30:30] Dafür geht mein VT420 nicht mehr so einfach. [Mittwoch, 4. April 2012] [21:31:21] Und auto-Baud hab ich nicht verstanden, was da und wie da funktioniert [Mittwoch, 4. April 2012] [21:32:47] Bei Auto-Baud lässt man sich zunächst ein Zeichen mit ungeradem Code schicken (als "A" oder sowas), und misst die Zeit des Startbits aus. [Mittwoch, 4. April 2012] [21:33:51] Das serielle Debugging-Interface in meinem b16 macht das so. [Mittwoch, 4. April 2012] [21:33:54] d.h. man drückt solange A bis das auch erkannt wird und löscht dann die Eingabezeile (wegen offensichtlichem Müll) [Mittwoch, 4. April 2012] [21:33:59] ? [Mittwoch, 4. April 2012] [21:34:10] Ja, so ungefähr ;-) [Mittwoch, 4. April 2012] [21:35:01] Wenn man das schön nahtlos machen will (wie bei Hayes-Modems mit AT-Befehlssatz oder eben bei dem b16-Debugger), dann sind halt alle Kommandos per Definition mit ungeraden Codes versehen. [Mittwoch, 4. April 2012] [21:35:30] Die Hayes-Modems waren übrigens in Forth programmiert, weshalb auf AT xx auch immer "OK" zurückkam. [Mittwoch, 4. April 2012] [21:36:03] ungerader Code heisst ungerade Anzahl 1 bits? [Mittwoch, 4. April 2012] [21:36:19] Nein, LSB gesetzt. [Mittwoch, 4. April 2012] [21:36:26] ah so [Mittwoch, 4. April 2012] [21:36:39] C würd also auch gehen? [Mittwoch, 4. April 2012] [21:36:41] Es geht ja darum, nur ein Bit auszumessen. [Mittwoch, 4. April 2012] [21:36:43] Klar. [Mittwoch, 4. April 2012] [21:37:05] ok, danke [Mittwoch, 4. April 2012] [21:37:32] Carriage Return geht auch, aber Linefeed geht nicht. [Mittwoch, 4. April 2012] [21:38:18] Damit hätte die Windows-Welt also wieder mal keine Probleme zu erwarten ;) [Mittwoch, 4. April 2012] [21:38:20] Also solange cr senden bis ein "ok" kommt, ist schon mal ein brauchbarer ansatz. [Mittwoch, 4. April 2012] [21:39:03] dann schau ich mal, ob's nicht schon passenden Code gibt (sollt mich wundern, wenn nicht) [Mittwoch, 4. April 2012] [21:40:20] Ich mach mich dann mal auch von Acker [Mittwoch, 4. April 2012] [21:40:24] Ciao [Mittwoch, 4. April 2012] [21:40:27] viel spass noch [Mittwoch, 4. April 2012] [21:40:35] Beenden MatthiasT hat den Server verlassen (""). [Mittwoch, 4. April 2012] [21:42:35] Na, dann wünsch ich mal schönes Has-Jagen, und bis demNeXT. [Mittwoch, 4. April 2012] [21:42:48] Beenden erwaelde hat den Server verlassen ("ERC Version 5.3 (IRC client for Emacs)"). [Mittwoch, 4. April 2012] [21:42:54] * BerndPaysan macht das Licht aus