[openfirmware] r1540 - dev

svn at openfirmware.info svn at openfirmware.info
Sun Dec 6 07:49:17 CET 2009


Author: wmb
Date: 2009-12-06 07:49:17 +0100 (Sun, 06 Dec 2009)
New Revision: 1540

Modified:
   dev/ramdisk.fth
Log:
Ramdisk driver - moved base address and size assumptions out of the driver code; they can be set externally.


Modified: dev/ramdisk.fth
===================================================================
--- dev/ramdisk.fth	2009-12-06 06:18:01 UTC (rev 1539)
+++ dev/ramdisk.fth	2009-12-06 06:49:17 UTC (rev 1540)
@@ -1,23 +1,29 @@
 \ See license at end of file
 purpose: Block-method additions to subrange.fth device to make a RAMdisk device
 
-0 0  " b000000"  " /" begin-package
-   " ramdisk" device-name
-   h# 3800000 constant /device
+\ Define ramdisk-base before loading this file
 
+0 0  ramdisk-base (u.)  " /" begin-package
+
+" ramdisk" device-name
+0 value /device  \ Range size, set later with set-size
+
 external
-\ /device must be defined externally as the length of the subrange
-\ my-space is the base of the subrange
 my-address my-space /device reg
 
 0 value offset			\ seek pointer
 
+\ Reduce adr,len as necessary to fit within the actual device size
 : clip-size  ( adr len -- adr actual )
    offset +   /device min  offset -     ( adr actual )
 ;
+
+\ Update the seek pointer to reflect the result of the previous read or write
 : update-ptr  ( actual -- actual )  dup offset +  to offset  ;
 
 external
+
+\ Standard interface methods for a byte-granularity device
 : open  ( -- flag )  0 to offset  true  ;
 : close  ( -- )  ;
 
@@ -36,9 +42,12 @@
    tuck  offset my-space +  swap  move          ( actual )
    update-ptr
 ;
-: size  ( -- d )  /device 0  ;
+: size  ( -- d )  /device u>d  ;
 
+\ Device-specific method to set the device size when it is known
+: set-size  ( d -- )  drop to /device  ;
 
+\ Standard interface methods for block-granularity access
 h# 200 value block-size
 : #blocks  ( -- n )  /device block-size /  ;
 : read-blocks  ( adr block# #blocks -- actual-#blocks )




More information about the openfirmware mailing list