36 lines
1.4 KiB
Forth
36 lines
1.4 KiB
Forth
\ *****************************************************************************
|
|
\ * Copyright (c) 2004, 2008 IBM Corporation
|
|
\ * All rights reserved.
|
|
\ * This program and the accompanying materials
|
|
\ * are made available under the terms of the BSD License
|
|
\ * which accompanies this distribution, and is available at
|
|
\ * http://www.opensource.org/licenses/bsd-license.php
|
|
\ *
|
|
\ * Contributors:
|
|
\ * IBM Corporation - initial implementation
|
|
\ ****************************************************************************/
|
|
|
|
|
|
\ we do all flash accesses as 8-bit
|
|
|
|
9f000000 CONSTANT citrine-flash-addr
|
|
|
|
: >citrine-flash citrine-flash-addr + ;
|
|
: citrine-flash@ >citrine-flash rb@ ;
|
|
: citrine-flash! >citrine-flash rb! ;
|
|
: wait-for-citrine-flash-ready BEGIN 0 citrine-flash@ 80 and UNTIL ;
|
|
: erase-citrine-flash-block ( offset -- )
|
|
cr dup 8 .r ." Erasing..."
|
|
20 over citrine-flash! d0 swap citrine-flash! wait-for-citrine-flash-ready ;
|
|
: write-citrine-flash ( data offset -- )
|
|
over ff = IF 2drop EXIT THEN
|
|
40 over citrine-flash! citrine-flash! wait-for-citrine-flash-ready ;
|
|
: write-citrine-flash-block ( addr offset -- ) \ always writes 128kB!
|
|
." Writing..."
|
|
20000 0 DO over i + c@ over i + write-citrine-flash LOOP 2drop
|
|
." Done." ;
|
|
: citrine-flash ( addr offset size -- )
|
|
BEGIN dup 0 > WHILE >r dup erase-citrine-flash-block
|
|
2dup write-citrine-flash-block >r 20000 + r> 20000 + r> 20000 - REPEAT
|
|
drop 2drop -1 0 citrine-flash! ;
|
|
|