KEYBINDINGS = {
     'KEY_BACKSPACE': 'prompt_backspace',
-    'KEY_ENTER': 'prompt_enter'
+    'KEY_ENTER': 'prompt_enter',
+    'KEY_UP': 'scroll_up',
+    'KEY_DOWN': 'scroll_down',
 }
 
 IRCSPEC_LINE_SEPARATOR = b'\r\n'
         self._term = term
         self._prompt = ''
         self._log_buffer: list[str] = []
+        self._upscroll = 0
         self._calc_and_draw_all()
         self._term.flush()
         super().__init__(*args, **kwargs)
         self._prompt = ''
         self._draw_prompt()
 
+    def _kb__scroll_up(self) -> None:
+        if len(self._log_buffer) > self._upscroll:
+            self._upscroll += 1
+        self._draw_log()
+
+    def _kb__scroll_down(self) -> None:
+        if self._upscroll > 1:
+            self._upscroll -= 1
+        self._draw_log()
+
     def _calc_and_draw_all(self) -> None:
         self._term.clear()
         self._term.calc_geometry()
 
     def _draw_log(self) -> None:
         temp_buffer = [''] * self._term.size.y
-        for line in self._log_buffer:
+        for line in self._log_buffer[:(-self._upscroll if self._upscroll
+                                       else None)]:
             temp_buffer += self._term.wrap(line)
         for i, line in enumerate(temp_buffer[-self._y_separator:]):
             self._term.write_yx(YX(i, 0), line)