diff --git a/programs/develop/cedit/CEDIT b/programs/develop/cedit/CEDIT
index 0605f62b4c..9c0952ccd9 100644
Binary files a/programs/develop/cedit/CEDIT and b/programs/develop/cedit/CEDIT differ
diff --git a/programs/develop/cedit/CEDIT.INI b/programs/develop/cedit/CEDIT.INI
index 8d05171961..eb3e92115b 100644
--- a/programs/develop/cedit/CEDIT.INI
+++ b/programs/develop/cedit/CEDIT.INI
@@ -45,6 +45,26 @@ key1=0,0,128
 key2=0,128,128
 key3=0,128,128
 
+[color_Tinypad]
+text=0,0,0
+back=255,255,255
+seltext=255,255,255
+selback=10,36,106
+modified=255,238,98
+saved=108,226,108
+curline=255,255,255
+numtext=0,0,0
+numback=221,215,207
+
+comment=128,128,128
+string=176,0,0
+escape=176,0,0
+num=0,144,0
+delim=48,48,240
+key1=48,48,240
+key2=0,128,128
+key3=0,128,128
+
 [lang_Oberon]
 KW1 = ARRAY,BEGIN,BY,CASE,CONST,DIV,DO,ELSE,ELSIF,END,FALSE,FOR,IF,IMPORT,IN,IS,MOD,MODULE,NIL,OF,OR,POINTER,PROCEDURE,RECORD,REPEAT,RETURN,THEN,TO,TRUE,TYPE,UNTIL,VAR,WHILE
 KW2 = ABS,ASR,ASSERT,BITS,BOOLEAN,BYTE,CHAR,CHR,COPY,DEC,DISPOSE,EXCL,FLOOR,FLT,INC,INCL,INTEGER,LEN,LENGTH,LSL,LSR,MAX,MIN,NEW,ODD,ORD,PACK,REAL,ROR,SET,UNPK,WCHAR,WCHR
diff --git a/programs/develop/cedit/SRC/CEdit.ob07 b/programs/develop/cedit/SRC/CEdit.ob07
index 83eec80e00..b3d814a024 100644
--- a/programs/develop/cedit/SRC/CEdit.ob07
+++ b/programs/develop/cedit/SRC/CEdit.ob07
@@ -28,7 +28,7 @@ IMPORT
     RW, Ini, EB := EditBox, Tabs, Toolbar;
 
 CONST
-    HEADER = "CEdit (21-dec-2021)";
+    HEADER = "CEdit (22-dec-2021)";
 
     ShellFilter = "";
     EditFilter = "SH|INC|TXT|ASM|OB07|C|CPP|H|PAS|PP|LUA|INI|JSON";
@@ -73,11 +73,13 @@ CONST
     minWinWidth = 635; minWinHeight = 550;
 
     SEARCH_PADDING = 10;
-    searchLeft = 0;
+    LEFT_PADDING = 1;
+    RIGHT_PADDING = 1;
+
     EditBox_Width = 180;
     EDITBOX_MAXCHARS = 500;
 
-    menuFileX = searchLeft;
+    menuFileX = Menu.MainMenuX;
     menuEditX = menuFileX + 4*fontWidth + 9;
     menuSearchX = menuEditX + 4*fontWidth + 9;
     menuEncodingX = menuSearchX + 6*fontWidth + 9;
@@ -136,8 +138,9 @@ CONST
     menuEOL = 140;
 
     menuPipet = 70;
-    menuBoard = 71;
-    menuSysFunc = 72;
+    menuMagnify = 71;
+    menuBoard = 72;
+    menuSysFunc = 73;
 
     menuFind = 80;
     menuFindNext = 81;
@@ -375,7 +378,7 @@ BEGIN
     SetCaption(text.fileName);
     K.DrawRect(LEFT + 16*fontWidth, TOP + canvas.height + scrollWidth, width - (LEFT + 16*fontWidth), BOTTOM - scrollWidth + 1, K.winColor);
     y := height - (BOTTOM - scrollWidth) + (BOTTOM - scrollWidth - 16) DIV 2;
-    K.DrawText(width - LENGTH(s)*fontWidth, y, K.textColor, s);
+    K.DrawText(width - LENGTH(s)*fontWidth - (RIGHT_PADDING + 1), y, K.textColor, s);
     MarkModified
 END DrawState;
 
@@ -394,7 +397,7 @@ PROCEDURE repaint;
 VAR
     width, height, scrollX, scrollY, y: INTEGER;
 BEGIN
-    IF text # NIL THEN
+    IF (text # NIL) & ~K.RolledUp() THEN
         IF confirm THEN
             K.DeleteButton(btnYes);
             K.DeleteButton(btnNo);
@@ -462,8 +465,8 @@ BEGIN
     K.WinSize(winWidth, winHeight);
     K.ClientSize(cliWidth, cliHeight);
     G.destroy(canvas);
-    canvas := G.CreateCanvas(cliWidth - (LEFT + RIGHT + 2), cliHeight - (TOP + BOTTOM + 1));
-    Tabs.setArea(tabs, LEFT, TOP - Tabs.tabHeight, cliWidth - (LEFT + RIGHT + 2), Tabs.tabHeight);
+    canvas := G.CreateCanvas(cliWidth - (LEFT + RIGHT + 2 + RIGHT_PADDING), cliHeight - (TOP + BOTTOM + 1));
+    Tabs.setArea(tabs, LEFT, TOP - Tabs.tabHeight, cliWidth - (LEFT + RIGHT + 2 + RIGHT_PADDING), Tabs.tabHeight);
     G.SetFont(canvas, font);
     T.setCanvas(canvas);
     T.resize(canvas.width, canvas.height);
@@ -537,6 +540,7 @@ BEGIN
 
         K.DrawRect(0, 0, width, TOP, K.winColor);
         K.DrawRect(0, 0, LEFT, height, K.winColor);
+        K.DrawRect(width - RIGHT_PADDING, 0, RIGHT_PADDING, height, K.winColor);
         K.DrawRect(LEFT + canvas.width + 1, TOP + canvas.height, scrollWidth - 1, scrollWidth, K.winColor);
         Menu.DrawMain(mainMenu);
 
@@ -544,7 +548,7 @@ BEGIN
 
         DrawState(text, width, height);
         IF search & searchOpened THEN
-            SearchPanel(searchLeft, TOP)
+            SearchPanel(LEFT_PADDING, TOP)
         END;
         Tabs.draw(tabs);
         repaint
@@ -704,7 +708,6 @@ PROCEDURE Confirm;
 CONST
     width  = btnWidth*2 + 30;
     height = btnHeight*2 + 20;
-    lineColor = 808080H;
 VAR
     left, top, right, bottom: INTEGER;
 BEGIN
@@ -716,7 +719,7 @@ BEGIN
     right := left + width - 1;
     bottom := top + height - 1;
     K.DrawRect(left, top, width, height, K.winColor);
-    Rect(left, top, right, bottom, lineColor);
+    Rect(left, top, right, bottom, K.borderColor);
     K.DrawText866(left + (width - 10*fontWidth) DIV 2, top + 10, K.textColor, "save file?");
     K.CreateButton(btnYes, left + 10, top + 35, btnWidth, btnHeight, K.btnColor, "yes");
     K.CreateButton(btnNo, left + 20 + btnWidth, top + 35, btnWidth, btnHeight, K.btnColor, "no");
@@ -833,9 +836,9 @@ END open;
 
 PROCEDURE createSearchForm;
 BEGIN
-	EB.create(searchLeft, TOP + 20, EditBox_Width, EDITBOX_MAXCHARS, FindEdit);
-	EB.create(searchLeft, TOP + 20 + 55, EditBox_Width, EDITBOX_MAXCHARS, ReplaceEdit);
-    EB.create(searchLeft, TOP + 20 + 330, EditBox_Width, EDITBOX_MAXCHARS, GotoEdit);
+	EB.create(LEFT_PADDING, TOP + 20, EditBox_Width, EDITBOX_MAXCHARS, FindEdit);
+	EB.create(LEFT_PADDING, TOP + 20 + 55, EditBox_Width, EDITBOX_MAXCHARS, ReplaceEdit);
+    EB.create(LEFT_PADDING, TOP + 20 + 330, EditBox_Width, EDITBOX_MAXCHARS, GotoEdit);
     INCL(GotoEdit.flags, 15);
     CheckBox.create("backward", BKW);
     CheckBox.create("match case", CS);
@@ -861,10 +864,10 @@ END EditBox_GetValue;
 PROCEDURE Search;
 BEGIN
     search := ~search;
-    LEFT := searchLeft;
+    LEFT := LEFT_PADDING;
     IF search THEN
         searchOpened := TRUE;
-        INC(LEFT, EditBox_Width + SEARCH_PADDING*2 + 5);
+        INC(LEFT, EditBox_Width + SEARCH_PADDING*2 + 4);
         IF T.search(text, searchText, cs, whole) THEN END
     ELSE
         IF T.search(text, "", FALSE, FALSE) THEN END
@@ -1250,6 +1253,8 @@ BEGIN
 	    	T.setEol(text, RW.EOL_CR)
 	    |menuPipet:
 	        K.Run("/rd/1/develop/pipet", "")
+	    |menuMagnify:
+	        K.Run("/rd/1/magnify", "")
 	    |menuBoard:
 	        K.Run("/rd/1/develop/board", "")
 	    |menuSysFunc:
@@ -1509,6 +1514,7 @@ VAR
 BEGIN
     menu := List.create(NIL);
     Menu.AddMenuItem(menu, menuPipet,   "pipet");
+    Menu.AddMenuItem(menu, menuMagnify, "magnify");
     Menu.AddMenuItem(menu, menuBoard,   "board");
     Menu.AddMenuItem(menu, menuSysFunc, "system functions");
     RETURN Menu.create(menu, MenuItemClick, MenuKeyDown)
@@ -1566,7 +1572,7 @@ PROCEDURE HideSearch;
 BEGIN
     SetFocus(FindEdit, FALSE);
     searchOpened := FALSE;
-    LEFT := searchLeft;
+    LEFT := LEFT_PADDING;
     resize;
     draw_window
 END HideSearch;
@@ -2000,8 +2006,8 @@ BEGIN
     winHeight := MAX(winHeight, minWinHeight);
     cliWidth := winWidth;
     cliHeight := winHeight;
-    LEFT := searchLeft;
-    canvas := G.CreateCanvas(winWidth - (LEFT + RIGHT + 11), winHeight - (TOP + BOTTOM + 5) - K.SkinHeight());
+    LEFT := LEFT_PADDING;
+    canvas := G.CreateCanvas(winWidth - (LEFT + RIGHT + 11 + RIGHT_PADDING), winHeight - (TOP + BOTTOM + 5) - K.SkinHeight());
     tabs := Tabs.create();
     Tabs.setArea(tabs, LEFT, TOP - Tabs.tabHeight, canvas.width, Tabs.tabHeight);
     font1 := G.CreateFont(1, "", {});
@@ -2042,7 +2048,7 @@ BEGIN
     Menu.AddMainItem(mainMenu, "program", menuProgram);
     Menu.AddMainItem(mainMenu, "tools", menuTools);
 
-    Toolbar.create(toolbar, searchLeft, toolbarTop);
+    Toolbar.create(toolbar, LEFT_PADDING + 1, toolbarTop);
     Toolbar.add(toolbar, btnNew,     2, "");
     Toolbar.add(toolbar, btnOpen,    0, "");
     Toolbar.add(toolbar, btnSave,    5, "");
diff --git a/programs/develop/cedit/SRC/Menu.ob07 b/programs/develop/cedit/SRC/Menu.ob07
index ce59d51e3d..630af03a76 100644
--- a/programs/develop/cedit/SRC/Menu.ob07
+++ b/programs/develop/cedit/SRC/Menu.ob07
@@ -27,6 +27,7 @@ CONST
     fontWidth = 8;
 
     MainMenuHeight* = K.fontHeight + 7;
+	MainMenuX* = 0;
 
     RIGHT = 16;
     LEFT = 16;
@@ -111,7 +112,7 @@ BEGIN
 	IF prev # NIL THEN
 		item.x := prev.x + LENGTH(prev.text)*fontWidth + 9
 	ELSE
-		item.x := 0
+		item.x := MainMenuX
 	END
 END AddMainItem;
 
diff --git a/programs/develop/cedit/SRC/Text.ob07 b/programs/develop/cedit/SRC/Text.ob07
index 4f35bc7988..039416c953 100644
--- a/programs/develop/cedit/SRC/Text.ob07
+++ b/programs/develop/cedit/SRC/Text.ob07
@@ -1501,7 +1501,7 @@ BEGIN
     n := selEnd.Y - selBeg.Y;
     cnt := 0;
     WHILE n >= 0 DO
-        INC(cnt, line.length + (lenEOL + 1));
+        INC(cnt, line.length + (lenEOL + ORD(U.OS = "KOS")));
         NextLine(line);
         DEC(n)
     END;
@@ -1511,7 +1511,7 @@ BEGIN
     n := selEnd.Y - selBeg.Y;
     line := first;
     IF n = 0 THEN
-        CB.append(buffer, line, selBeg.X, selEnd.X - 1)
+        append(buffer, line, selBeg.X, selEnd.X - 1)
     ELSE
         append(buffer, line, selBeg.X, line.length - 1);
         REPEAT