[movitz-devel] Re: HD driver
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Mon Apr 19 22:46:41 UTC 2004
Peter Minten <peter.minten at wanadoo.nl> writes:
> Ok, you asked for it :-). I wrote a little IDE driver for ATA-1
> compatible LBA capable disks (AFAIK Bochs disks are of that type),
> it's at
> 'http://www.il.fontys.nl/~silvernerd/harddisk.lisp'. Currently async
> read and write of 1-256 sectors in one go is implemented.
Great, it's nice to see someone accept a challenge :-)
> The code does not compile due to a strange error about a variable
> (data) not being defined. [..]
> I know that using with-slots on a structure is not exactly common
> (though as I understand the HyperSpec it's legal) so I tried
> replacing it with let for a moment to see if the error was in the
> with-slots. Let gave the same result: symbol 'data' undefined. When
> I removed data from the code altogether it started complaining about
> offset.
The problem was simply that there was no with-slots macro in Movitz,
so the compiler tried to compile it as a function call, which should
explain the behavior you saw. I have added a with-slots macro now.
Also, I have re-worked defstructs quite a bit, so that slot-value (and
therefore with-slots) will actually work with structs. So I believe
your code should compile fine now.
I would however suggest to prefer defclass over defstruct in this
case, and in general.
> Furthermore on my box there is a problem with binary-types: [..]
>
> On CMUCL 18e, custom core.
> Binary-types and Movitz version: CVS 17-apr-2004.
>
> Slime error message:
>
> Execution of a form compiled with errors:
> (DEFMETHOD MAKE-LOAD-FORM
> ((BINARY-TYPES::OBJECT BINARY-TYPES::RECORD-SLOT) &OPTIONAL
> BINARY-TYPES::ENVIRONMENT)
> (DECLARE (IGNORE BINARY-TYPES::ENVIRONMENT))
> (WITH-SLOTS
> (BINARY-TYPES::NAME TYPE BINARY-TYPES::MAP-WRITE
> BINARY-TYPES::MAP-READ BINARY-TYPES::MAP-READ-DELAYED
> BINARY-TYPES::HIDDEN-READ-SLOT)
> BINARY-TYPES::OBJECT
> `(BINARY-TYPES::MAKE-RECORD-SLOT :NAME
> ',BINARY-TYPES::NAME
> :TYPE
> ',TYPE
> :MAP-WRITE
> ,BINARY-TYPES::MAP-WRITE
> :MAP-READ
> ,BINARY-TYPES::MAP-READ
> :MAP-READ-DELAYED
> ,BINARY-TYPES::MAP-READ-DELAYED
> :HIDDEN-READ-SLOT
> ',BINARY-TYPES::HIDDEN-READ-SLOT)))
> [Condition of type KERNEL:SIMPLE-PROGRAM-ERROR]
>
> The error disappears when I abort and do (load "load") again.
I don't know what this is. When does it occur? During the first (load
"load")?
--
Frode Vatvedt Fjeld
More information about the movitz-devel
mailing list