anchor.diff: -(defvar *command-table* nil) 
  -
  -(defun fill-command-table ()
  -  (def-nxt-command 'get-firmware-version #x01 #x88)
  -  (def-nxt-command 'get-device-info      #x01 #x9b)
  -  (def-nxt-command 'find-first           #x01 #x86 :file-name '(string 2 21))
  -  (def-nxt-command 'find-next            #x01 #x87 :handle '(byte 2))
  -  (def-nxt-command 'close                #x01 #x84 :handle '(byte 2))
  -  (def-nxt-command 'play-tone            #x00 #x03 :frequency '(uword 2) :duration '(uword 4))
  -  (def-nxt-command 'get-input-values     #x00 #x07 :port '(byte 2))
  -  (def-nxt-command 'get-output-state     #x00 #x06 :port '(byte 2))
  -  (def-nxt-command 'get-battery-level    #x00 #x0b)
  -  (def-nxt-command 'stop-sound-playback  #x00 #x0c)
  -  (def-nxt-command 'set-input-mode       #x00 #x05 :port '(byte 2) 
  -		   :sensor-type '(byte 3) :sensor-mode '(byte 4))
  -  (def-nxt-command 'message-read         #x00 #x13 
  -		   :remote-inbox '(byte 2) :local-inbox '(byte 3) :remove '(byte 4)))
  +;
  +;; Specification:
  +;;
  +;;     (byte position)   - byte = 8bits
  +;;     (uword position)  - uword = 16bits, Little endian
  +;;     (string position end-position) - string is 0 terminated put in the buffer.
  +;;     (ulong position)  - ulong = 32bits, Little endian
  +;;     (data position)   - This should be the last field and the length determines how
  +;;                         long the command is, or when it is a reply, the
  +;;                         length of the reply determins the length of the data
   
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   ;;; FUNCTIONS THAT HELP DESTRUCTURING THE SPECIFICATION OF THE COMMANDS
  
positive.code: 	      (byte `(write-byte-to-command data-vector ,key ,(second spec)))
  	      (string `(write-string-to-command data-vector ,key ,(second spec) ,(third spec)))
  	      (uword `(write-uword-to-command data-vector ,key ,(second spec)))
  	      (t "Help"))))
  	(write-to-nxt data-vector)
  	,(when (reply-expected-for-type-code type-code)
  	       '(read-nxt-reply))))))
  
  (defmacro def-nxt-command (name name-code type-code &rest rest)
    (apply #'create-nxt-command-form name name-code type-code rest))
  
negative.code: (def-nxt-command get-device-info      #x01 #x9b)
  (def-nxt-command find-first           #x01 #x86 file-name (string 2 21))
  (def-nxt-command find-next            #x01 #x87 handle    (byte 2))
  (def-nxt-command nxt-close                #x01 #x84 handle     (byte 2))
  
  
  ;; (def-nxt-command get-input-values     #x00 #x07 port       (byte 2))
  ;; (def-nxt-command get-output-state     #x00 #x06 port       (byte 2))
  ;; (def-nxt-command get-battery-level    #x00 #x0b)
  ;; (def-nxt-command stop-sound-playback  #x00 #x0c)
  ;; (def-nxt-command set-input-mode       #x00 #x05 port       (byte 2) 
  ;; 		 sensor-type          (byte 3)  sensor-mode (byte 4))
  ;; (def-nxt-command message-read         #x00 #x13 
  ;; 		 remote-inbox         (byte 2)  local-inbox (byte 3) remove (byte 4))
  
  ;; (def-nxt-command get-device-info      #x01 #x9b)
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;; HELPER FUNCTIONS TO BUILD THE COMMAND
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  (defun write-byte-to-command (vector value location)
    (assert (arrayp vector) (vector) "First argument should be a vector!")
    (setf (aref vector location) value))
  
  (defun read-byte-from-reply (vector location)
    (assert (arrayp vector) (vector) "First argument should be a vector!")
    (aref vector location))
  
  
  (defun write-string-to-command (vector value start end)
    "Write the string `value' in the result at the byte range
  