ANN: data map capability
David McNab <[email protected]> Wed, 08 Dec 2004 02:04:58 +1300
| Newsgroups | gmane.comp.lang.forth.picforth |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --------------080603060007050102020109 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hi all, Attached is a patch against development vers of picforth.fs, which adds a new word called 'dmap'. (Attached also is full picforth.fs, in case the patch is troublesome). 'dmap' is a bit like 'map', except that it dumps out a map of data memory usage. Samuel - you'll see from the code that Forth is not my first language. The code is a bit ugly, but it seems to work ok. I've tried to make the code readable, so if you want to optimise/refactor it (and even extend it to support EEPROM maps), it shouldn't be /too/ painful. -- Cheers David --------------080603060007050102020109 Content-Type: text/x-diff; name="picforth-dmap.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="picforth-dmap.patch" --- picforth.fs.old 2004-12-07 23:26:34.000000000 +1300 +++ picforth.fs 2004-12-08 01:57:40.000000000 +1300 @@ -937,11 +937,92 @@ \ Data and variables \ ---------------------------------------------------------------------- +\ create data structures to keep a map of data mem and eeprom usage +\ added by David McNab <[email protected]> + +meta + +\ in-memory array of 'addr u data-addr' records, plus size +0 allocate [if] .( failed to create data map ) cr bye [then] value map-data-addr +0 value map-data-size + +variable map-tmp-addr +variable map-tmp-len + +: map-strcpy ( addr u -- addr' u ) + + dup allocate abort" failed to copy name" ( addr u newaddr ) + swap ( addr newaddr u ) + 2dup map-tmp-len ! map-tmp-addr ! ( addr newaddr u ) + cmove ( -- ) + map-tmp-addr @ map-tmp-len @ +; + +\ append a 'name data-addr', ie 'addr u data-addr' record to our map + +: map-data-append { addr u daddr } + + \ resize data map array + map-data-addr + map-data-size 1+ 3 cells * + resize ( new-map-data status ) + abort" failed to resize data map" + + \ save new data map array address + to map-data-addr + + \ take a copy of name + addr u map-strcpy to u to addr + + \ save addr, u, daddr as record + map-data-addr map-data-size cells 3 * + \ point to free record at end + map-tmp-addr ! + + addr map-tmp-addr @ ! + u map-tmp-addr @ 1 cells + ! + daddr map-tmp-addr @ 2 cells + ! + + \ update record count + map-data-size 1+ to map-data-size +; + +\ return the ith data map record + +: map-data-i ( i -- addr u data-addr ) + map-data-addr swap + cells 3 * + ( rec.0 ) + dup @ ( rec.0 addr ) + over 1 cells + @ ( rec.0 addr u ) + rot 2 cells + @ ( addr u data-addr ) +; + +\ dump out a text map of data mem usage + +: dmap ( -- ) + map-data-size 0 do + i map-data-i -rot ( data-addr addr u ) + type \ print name + 9 emit \ print a tab + s" 0x" type \ print the '0x' + . cr + loop +; + meta \ RAM -: create ( "name" -- ) create data-here , immediate does> (t-constant) ; +: create ( "name" -- ) + + \ create the word, saving a copy of the name + + name 2dup nextname create ( addr u ) + data-here ( addr u data-addr ) + map-data-append ( ) + data-here , immediate +does> + (t-constant) +; : , data-here t! data-here 1+ data-org ; --------------080603060007050102020109 Content-Type: application/x-gzip; name="picforth.fs.gz" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="picforth.fs.gz" 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 --------------080603060007050102020109 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ PicForth mailing list [email protected] http://lists.rfc1149.net/mailman/listinfo/picforth --------------080603060007050102020109--