LISP routine help

Can anyone help with the LISP routine below.  It works in ACAD, but crashes midway in DS.  Any help is greatly appreciated.

 

(defun c:adl ()

 (setvar "cmdecho" 0)

 (initget "Y N")

 (menucmd "s=divlt1")

 (setq dh (getkword "\\nBottom sash of DH :  "))

 (if (= dh nil)(setq dh "N"))

 (menucmd "s=divlt1a")

 (initget 1 "G A")

 (setq adlgrilles (getkword "\\nrilles or uthentic divided lite:  "))

 (if (= (strcase dh) "Y")

  (progn

   (menucmd "s=divlt3")

   (setq lwb (getint "\\nLites wide bottom sash:  "))

   (menucmd "s=divlt4")

   (setq lhb (getint "\\nLites high bottom sash:  "))

   (if (and (= lwb 1)(= lhb 1))

    ()

    (progn

     (if (= (strcase adlgrilles) "A")

      (progn

       (menucmd "s=divlt2")

       (setq bwb (getreal "\\nBar width :  "))

       (if (= bwb nil)(setq bwb 1.4375))

      )

      (progn

       (menucmd "s=divlt2")

       (setq bwb (getreal "\\nGrille width :  "))

       (if (= bwb nil)(setq bwb 0.75))

      ) 

     )

    )

   )

   (menucmd "s=divlt3")

   (princ "\\nLites wide top sash :  ")

   (setq lwt (getreal))

   (if (= lwt nil)(setq lwt lwb))

   (menucmd "s=divlt4")

   (princ "\\nLites high top sash :  ")

   (setq lht (getreal))

   (if (= lht nil)(setq lht lhb))

   (if (and (= lwt 1)(= lht 1))

   ()

    (progn

     (if (= (strcase adlgrilles) "A")

      (progn

       (if (and (= lwb 1)(= lhb 1))

        (progn

         (menucmd "s=divlt2")

         (setq bwt (getreal "\\nBar width :  "))

         (if (= bwt nil)(setq bwt 1.4375))

        )

        (progn

         (menucmd "s=divlt2")

         (princ "\\nBar width :  ")

         (setq bwt (getreal))

         (if (= bwt nil)(setq bwt bwb))

        )

       )

      )