--- mine-sweeper.el.orig	2014-11-30 18:37:14.166661938 +1100
+++ mine-sweeper.el	2014-12-03 18:26:24.491124190 +1100
@@ -53,8 +53,12 @@
   (interactive)
   (setq max-lisp-eval-depth 3000)  ;for recursive call of open.           
   (setq max-specpdl-size 3000)     ;for recursive call of open.
-  (get-buffer-create "Mine")
-  (set-window-buffer (selected-window) "Mine")
+
+  ;; Was:
+  ;; (get-buffer-create "Mine")
+  ;; (set-window-buffer (selected-window) "Mine")
+  (switch-to-buffer "Mine")
+
   (setq overwrite-mode t)
   (setq major-mode 'mine-sweeper-mode
         mode-name  "Mines")
@@ -78,9 +82,17 @@
 			       (int-to-string mine-amount)))))
     (setq mine-field-wsize (if (> wsize 80) mine-field-wsize wsize))
     (setq mine-field-hsize (if (> hsize 40) mine-field-hsize hsize))
+
+    ;; Was:
+    ;; (setq mine-amount 
+    ;;       (if (or (> amount (* mine-field-hsize mine-field-wsize))
+    ;;     	  (> amount 100)) mine-amount amount))
+    ;; allow for more than 100 mines
     (setq mine-amount 
 	  (if (or (> amount (* mine-field-hsize mine-field-wsize))
-		  (> amount 100)) mine-amount amount))
+		  (> amount 100000)) mine-amount amount))
+
+    (setq major-mode 'mine-sweeper)
     (setq mode-name 
 	  (concat "Mines " (int-to-string mine-marked) 
 		  "/" (int-to-string mine-amount)))
@@ -230,7 +242,12 @@
       (progn
 	(aset mine-point 0 row)
 	(aset mine-point 1 column)
-	(goto-line (1+ row))
+
+        ;; Was: (goto-line (1+ row))
+        ;; but prefer not to set the mark each time
+        (goto-char (point-min))
+        (forward-line row)
+
 	(forward-char column))))
 
 (defun mine-display (&optional all)
