Index: uspace/app/tetris/scores.c
===================================================================
--- uspace/app/tetris/scores.c	(revision 62140db53b75a953d42ed31acb77916cfc0ee678)
+++ uspace/app/tetris/scores.c	(revision 103bb689fbd9789d2bd117068732c37b209c7772)
@@ -197,4 +197,37 @@
 }
 
+int loadscores(void)
+{
+	FILE *f;
+	size_t cnt;
+	int rc;
+
+	f = fopen("/tetris.sco", "rb");
+	if (f == NULL)
+		return ENOENT;
+
+	cnt = fread(scores, sizeof(struct highscore), NUMSPOTS, f);
+	rc = fclose(f);
+
+	if (cnt != NUMSPOTS || rc != 0)
+		return EIO;
+
+	return EOK;
+}
+
+void savescores(void)
+{
+	FILE *f;
+	size_t cnt;
+	int rc;
+
+	f = fopen("/tetris.sco", "wb");
+	cnt = fwrite(scores, sizeof(struct highscore), NUMSPOTS, f);
+	rc = fclose(f);
+
+	if (cnt != NUMSPOTS || rc != 0)
+		printf("Error saving score table\n");
+}
+
 /** @}
  */
Index: uspace/app/tetris/scores.h
===================================================================
--- uspace/app/tetris/scores.h	(revision 62140db53b75a953d42ed31acb77916cfc0ee678)
+++ uspace/app/tetris/scores.h	(revision 103bb689fbd9789d2bd117068732c37b209c7772)
@@ -65,4 +65,6 @@
 extern void initscores(void);
 extern void insertscore(int score, int level);
+extern int loadscores(void);
+extern void savescores(void);
 
 /** @}
Index: uspace/app/tetris/tetris.c
===================================================================
--- uspace/app/tetris/tetris.c	(revision 62140db53b75a953d42ed31acb77916cfc0ee678)
+++ uspace/app/tetris/tetris.c	(revision 103bb689fbd9789d2bd117068732c37b209c7772)
@@ -50,4 +50,5 @@
 #include <sys/types.h>
 #include <err.h>
+#include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -207,4 +208,5 @@
 				break;
 			case 'h':
+				loadscores();
 				showscores(firstgame);
 				tetris_menu_draw(*level);
@@ -298,5 +300,7 @@
 	
 	scr_init();
-	initscores();
+	if (loadscores() != EOK)
+		initscores();
+
 	while (tetris_menu(&level)) {
 		fallrate = 1000000 / level;
@@ -416,5 +420,7 @@
 		
 		scr_clear();
+		loadscores();
 		insertscore(score, level);
+		savescores();
 		score = 0;
 	}
