diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index 6f71b855d9..daea78c1e8 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -37,6 +37,7 @@
 // 64 = STB V1.1
 // 7  = Ultimaker
 // 71 = Ultimaker (Older electronics. Pre 1.5.4. This is rare)
+// 77 = 3Drag Controller
 // 8  = Teensylu
 // 80 = Rumba
 // 81 = Printrboard (AT90USB1286)
diff --git a/Marlin/language.h b/Marlin/language.h
index dcc4112fa8..796e17797b 100644
--- a/Marlin/language.h
+++ b/Marlin/language.h
@@ -29,6 +29,9 @@
 #elif MOTHERBOARD == 80
 	#define MACHINE_NAME "Rumba"
 	#define FIRMWARE_URL "https://github.com/ErikZalm/Marlin/"
+#elif MOTHERBOARD == 77
+	#define MACHINE_NAME "3Drag"
+	#define FIRMWARE_URL "http://3dprint.elettronicain.it/"
 #else
 	#ifdef CUSTOM_MENDEL_NAME
 		#define MACHINE_NAME CUSTOM_MENDEL_NAME
@@ -1004,7 +1007,7 @@
 #if LANGUAGE_CHOICE == 7
 
 	// LCD Menu Messages
-	#define WELCOME_MSG MACHINE_NAME " Pronto."
+	#define WELCOME_MSG MACHINE_NAME " Pronta"
 	#define MSG_SD_INSERTED          "SD Card inserita"
 	#define MSG_SD_REMOVED           "SD Card rimossa"
 	#define MSG_MAIN                 "Menu principale"
@@ -1016,7 +1019,7 @@
 	#define MSG_PREHEAT_PLA_SETTINGS "Preris. PLA Conf"
 	#define MSG_PREHEAT_ABS          "Preriscalda ABS"
 	#define MSG_PREHEAT_ABS_SETTINGS "Preris. ABS Conf"
-	#define MSG_COOLDOWN             "Rafredda"
+	#define MSG_COOLDOWN             "Raffredda"
 	#define MSG_EXTRUDE              "Estrudi"
 	#define MSG_RETRACT              "Ritrai"
 	#define MSG_MOVE_AXIS            "Muovi Asse"
diff --git a/Marlin/pins.h b/Marlin/pins.h
index 58684c4413..ee0e3db61f 100644
--- a/Marlin/pins.h
+++ b/Marlin/pins.h
@@ -298,7 +298,7 @@
 * Arduino Mega pin assignment
 *
 ****************************************************************************************/
-#if MOTHERBOARD == 3 || MOTHERBOARD == 33 || MOTHERBOARD == 34
+#if MOTHERBOARD == 3 || MOTHERBOARD == 33 || MOTHERBOARD == 34 || MOTHERBOARD == 77
 #define KNOWN_BOARD 1
 
 //////////////////FIX THIS//////////////
@@ -308,47 +308,89 @@
  #endif
 #endif
 
+
 // uncomment one of the following lines for RAMPS v1.3 or v1.0, comment both for v1.2 or 1.1
 // #define RAMPS_V_1_3
 // #define RAMPS_V_1_0
 
-#if MOTHERBOARD == 33 || MOTHERBOARD == 34
 
-  #define LARGE_FLASH        true
+#if MOTHERBOARD == 33 || MOTHERBOARD == 34 || MOTHERBOARD == 77
 
-  #define X_STEP_PIN         54
-  #define X_DIR_PIN          55
-  #define X_ENABLE_PIN       38
-  #define X_MIN_PIN           3
-  #define X_MAX_PIN           2
+  #define LARGE_FLASH true
+  
+  #if MOTHERBOARD == 77
+    #define X_STEP_PIN         54
+    #define X_DIR_PIN          55
+    #define X_ENABLE_PIN       38
+    #define X_MIN_PIN           3
+    #define X_MAX_PIN           -1   //2 //Max endstops default to disabled "-1", set to commented value to enable.
 
-  #define Y_STEP_PIN         60
-  #define Y_DIR_PIN          61
-  #define Y_ENABLE_PIN       56
-  #define Y_MIN_PIN          14
-  #define Y_MAX_PIN          15
+    #define Y_STEP_PIN         60
+    #define Y_DIR_PIN          61
+    #define Y_ENABLE_PIN       56
+    #define Y_MIN_PIN          14
+    #define Y_MAX_PIN          -1   //15
 
-  #define Z_STEP_PIN         46
-  #define Z_DIR_PIN          48
-  #define Z_ENABLE_PIN       62
-  #define Z_MIN_PIN          18
-  #define Z_MAX_PIN          19
+    #define Z_STEP_PIN         46
+    #define Z_DIR_PIN          48
+    #define Z_ENABLE_PIN       63
+    #define Z_MIN_PIN          18
+    #define Z_MAX_PIN          -1
 
-  #define Z2_STEP_PIN        36
-  #define Z2_DIR_PIN         34
-  #define Z2_ENABLE_PIN      30
+    #define Z2_STEP_PIN        36
+    #define Z2_DIR_PIN         34
+    #define Z2_ENABLE_PIN      30
 
-  #define E0_STEP_PIN        26
-  #define E0_DIR_PIN         28
-  #define E0_ENABLE_PIN      24
+    #define E0_STEP_PIN        26
+    #define E0_DIR_PIN         28
+    #define E0_ENABLE_PIN      24
 
-  #define E1_STEP_PIN        36
-  #define E1_DIR_PIN         34
-  #define E1_ENABLE_PIN      30
+    #define E1_STEP_PIN        36
+    #define E1_DIR_PIN         34
+    #define E1_ENABLE_PIN      30
 
-  #define SDPOWER            -1
-  #define SDSS               53
-  #define LED_PIN            13
+    #define SDPOWER            -1
+    #define SDSS               25//53
+    #define LED_PIN            13
+
+    #define BEEPER             33    
+
+  #else
+
+    #define X_STEP_PIN         54
+    #define X_DIR_PIN          55
+    #define X_ENABLE_PIN       38
+    #define X_MIN_PIN           3
+    #define X_MAX_PIN           2
+
+    #define Y_STEP_PIN         60
+    #define Y_DIR_PIN          61
+    #define Y_ENABLE_PIN       56
+    #define Y_MIN_PIN          14
+    #define Y_MAX_PIN          15
+
+    #define Z_STEP_PIN         46
+    #define Z_DIR_PIN          48
+    #define Z_ENABLE_PIN       62
+    #define Z_MIN_PIN          18
+    #define Z_MAX_PIN          19
+
+    #define Z2_STEP_PIN        36
+    #define Z2_DIR_PIN         34
+    #define Z2_ENABLE_PIN      30
+
+    #define E0_STEP_PIN        26
+    #define E0_DIR_PIN         28
+    #define E0_ENABLE_PIN      24
+
+    #define E1_STEP_PIN        36
+    #define E1_DIR_PIN         34
+    #define E1_ENABLE_PIN      30
+
+    #define SDPOWER            -1
+    #define SDSS               53
+    #define LED_PIN            13
+  #endif
 
   #if MOTHERBOARD == 33
     #define FAN_PIN            9 // (Sprinter config)
@@ -356,6 +398,10 @@
     #define FAN_PIN            4 // IO pin. Buffer needed
   #endif
 
+  #if MOTHERBOARD == 77
+    #define FAN_PIN            8 
+  #endif
+
   #define PS_ON_PIN          12
 
   #if defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL)
@@ -365,18 +411,27 @@
   #endif
 
   #define HEATER_0_PIN       10   // EXTRUDER 1
-
-  #if MOTHERBOARD == 33
+  #if MOTHERBOARD == 33 
     #define HEATER_1_PIN       -1
   #else
     #define HEATER_1_PIN       9    // EXTRUDER 2 (FAN On Sprinter)
   #endif
+  #define HEATER_2_PIN       -1 
+
+  #if MOTHERBOARD == 77
+    #define HEATER_0_PIN       10   
+    #define HEATER_1_PIN       12 
+    #define HEATER_2_PIN       6   
+  #endif
 
-  #define HEATER_2_PIN       -1
   #define TEMP_0_PIN         13   // ANALOG NUMBERING
   #define TEMP_1_PIN         15   // ANALOG NUMBERING
   #define TEMP_2_PIN         -1   // ANALOG NUMBERING
-  #define HEATER_BED_PIN     8    // BED
+  #if MOTHERBOARD == 77
+    #define HEATER_BED_PIN     9    // BED
+  #else
+    #define HEATER_BED_PIN     8    // BED
+  #endif
   #define TEMP_BED_PIN       14   // ANALOG NUMBERING
 
 
@@ -403,7 +458,7 @@
       #define LCD_PINS_RS 16 
       #define LCD_PINS_ENABLE 17
       #define LCD_PINS_D4 23
-      #define LCD_PINS_D5 25
+      #define LCD_PINS_D5 25 
       #define LCD_PINS_D6 27
       #define LCD_PINS_D7 29
 
@@ -440,22 +495,23 @@
         #endif
     
       #endif
+    
 
     #else //old style panel with shift register
       //arduino pin witch triggers an piezzo beeper
-      #define BEEPER 33   // No Beeper added 
+      #define BEEPER 33		//No Beeper added
 
       //buttons are attached to a shift register
-      // Not wired this yet
+	// Not wired this yet
       //#define SHIFT_CLK 38
       //#define SHIFT_LD 42
       //#define SHIFT_OUT 40
       //#define SHIFT_EN 17
-
-      #define LCD_PINS_RS 16
+    
+      #define LCD_PINS_RS 16 
       #define LCD_PINS_ENABLE 17
       #define LCD_PINS_D4 23
-      #define LCD_PINS_D5 25
+      #define LCD_PINS_D5 25 
       #define LCD_PINS_D6 27
       #define LCD_PINS_D7 29
     #endif 
@@ -463,57 +519,56 @@
 
 #else // RAMPS_V_1_1 or RAMPS_V_1_2 as default (MOTHERBOARD == 3)
 
-  #define X_STEP_PIN         26
-  #define X_DIR_PIN          28
-  #define X_ENABLE_PIN       24
-  #define X_MIN_PIN           3
-  #define X_MAX_PIN          -1    //2
+#define X_STEP_PIN         26
+#define X_DIR_PIN          28
+#define X_ENABLE_PIN       24
+#define X_MIN_PIN           3
+#define X_MAX_PIN          -1    //2
 
-  #define Y_STEP_PIN         38
-  #define Y_DIR_PIN          40
-  #define Y_ENABLE_PIN       36
-  #define Y_MIN_PIN          16
-  #define Y_MAX_PIN          -1    //17
+#define Y_STEP_PIN         38
+#define Y_DIR_PIN          40
+#define Y_ENABLE_PIN       36
+#define Y_MIN_PIN          16
+#define Y_MAX_PIN          -1    //17
 
-  #define Z_STEP_PIN         44
-  #define Z_DIR_PIN          46
-  #define Z_ENABLE_PIN       42
-  #define Z_MIN_PIN          18
-  #define Z_MAX_PIN          -1    //19
+#define Z_STEP_PIN         44
+#define Z_DIR_PIN          46
+#define Z_ENABLE_PIN       42
+#define Z_MIN_PIN          18
+#define Z_MAX_PIN          -1    //19
 
-  #define E0_STEP_PIN         32
-  #define E0_DIR_PIN          34
-  #define E0_ENABLE_PIN       30
+#define E0_STEP_PIN         32
+#define E0_DIR_PIN          34
+#define E0_ENABLE_PIN       30
 
-  #define SDPOWER            48
-  #define SDSS               53
-  #define LED_PIN            13
-  #define PS_ON_PIN          -1
-  #define KILL_PIN           -1
+#define SDPOWER            48
+#define SDSS               53
+#define LED_PIN            13
+#define PS_ON_PIN          -1
+#define KILL_PIN           -1
 
-  #ifdef RAMPS_V_1_0 // RAMPS_V_1_0
-    #define HEATER_0_PIN     12    // RAMPS 1.0
-    #define HEATER_BED_PIN   -1    // RAMPS 1.0
-    #define FAN_PIN          11    // RAMPS 1.0
-  #else // RAMPS_V_1_1 or RAMPS_V_1_2
-    #define HEATER_0_PIN     10    // RAMPS 1.1
-    #define HEATER_BED_PIN    8    // RAMPS 1.1
-    #define FAN_PIN           9    // RAMPS 1.1
-  #endif
+#ifdef RAMPS_V_1_0 // RAMPS_V_1_0
+  #define HEATER_0_PIN     12    // RAMPS 1.0
+  #define HEATER_BED_PIN   -1    // RAMPS 1.0
+  #define FAN_PIN          11    // RAMPS 1.0
+#else // RAMPS_V_1_1 or RAMPS_V_1_2
+  #define HEATER_0_PIN     10    // RAMPS 1.1
+  #define HEATER_BED_PIN    8    // RAMPS 1.1
+  #define FAN_PIN           9    // RAMPS 1.1
+#endif
+#define HEATER_1_PIN        -1
+#define HEATER_2_PIN        -1
+#define TEMP_0_PIN          2    // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!
+#define TEMP_1_PIN          -1   
+#define TEMP_2_PIN          -1   
+#define TEMP_BED_PIN        1    // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!
 
-  #define HEATER_1_PIN        -1
-  #define HEATER_2_PIN        -1
-  #define TEMP_0_PIN          2    // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!
-  #define TEMP_1_PIN          -1
-  #define TEMP_2_PIN          -1
-  #define TEMP_BED_PIN        1    // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!
+#endif // MOTHERBOARD == 33 || MOTHERBOARD == 34 || MOTHERBOARD == 77
 
-#endif// MOTHERBOARD == 33 || MOTHERBOARD == 34
-
-// SPI for Max6675 Thermocouple
+// SPI for Max6675 Thermocouple 
 
 #ifndef SDSUPPORT
-// these pins are defined in the SD library if building with SD support
+// these pins are defined in the SD library if building with SD support  
   #define MAX_SCK_PIN          52
   #define MAX_MISO_PIN         50
   #define MAX_MOSI_PIN         51
@@ -522,7 +577,9 @@
   #define MAX6675_SS       49
 #endif
 
-#endif//MOTHERBOARD == 3 || MOTHERBOARD == 33 || MOTHERBOARD == 34
+#endif //MOTHERBOARD == 3 || MOTHERBOARD == 33 || MOTHERBOARD == 34 || MOTHERBOARD == 77
+
+
 
 /****************************************************************************************
 * Duemilanove w/ ATMega328P pin assignment