\ *********************************************************************
\ *
\ Filename: util38.txt *
\ FlashForth: 3.8 *
\ MCU PIC18F *
\ Application: *
\ *
\ Author: Pete Zawasky *
\ Created: 12:55 PM 9/30/2011 ppz *
\ Last Edit 11:37 AM 6/8/2013 ppz *
\ *
\ *********************************************************************
\ Based on util.fth by Mikael Nordman *
\ *********************************************************************
\ FlashForth is licensed acording to the GNU General Public License *
\ *********************************************************************
-util
marker -util
decimal ram
\ *********************************************************************
: forget ( <name> -- )
bl word latest @ (f) abort" ?"
c>n 2- dup @ abort" ?"
dup flash dp ! @ latest ! ram ;
: .mem ( -- ) \ print current memory locations
base @ hex
cr ." flash " flash here #4 u.r
cr ." eeprom " eeprom here #4 u.r
cr ." ram " ram here #4 u.r
base ! ;
: <= ( n1 n2 -- flag )
- 1- 0< ; \ leave true flag if n1 less than or equal to n2
: ?dup ( x -- 0 | x x )
dup if dup then ; \ duplicate TOS only if non-zero
: fill ( c-addr u c -- ) \ fill u bytes with c starting at c-addr
rot !p>r swap
for
dup pc! p+
next
r>p drop ;
: erase ( c-addr u -- )
0 fill ;
: blanks ( c-addr u -- )
bl fill ;
: pick ( xu ... x0 u -- xu ... x0 xu)
2* 3 + sp@ swap - @ ;
: ? ( addr -- ) \ print unsigned contents at addr
2 spaces @ u. ; \ in the current base (non-standard)
: c? ( addr -- ) \ print byte contents at addr
2 spaces c@ . ; \ in the current base
: c?% ( addr -- ) \ print byte contents at addr
2 spaces base @ swap \ in binary
c@ 8 bin u.r base ! ;
\ Compile a word which creates n cell indexed arrays.
\ compile-time n array <name> where n is size of array
\ run-time i <name> where i is the array index
\ and i is zero based (0...n-1)
: array ( n -- )
create cells allot
does> ( i -- 'cell ) swap cells + ;
\ Compile a word which creates n indexed character arrays.
\ compile-time n carray <name> where n is size of array
\ run-time i <name> where i is the array index
\ and i is zero based (0...n-1)
: carray ( n -- )
create allot
does> ( i -- 'char ) + ;
\ Create a 20 character array in eeprom called CALIBRATE.
\ eeprom
\ decimal 20 carray calibrate
\ ram
ram hex