Home

Technics KN5000 Photo: Sound On Sound (March 1998)

Technics KN5000 Documentation

Welcome to the comprehensive technical documentation for the Technics KN5000 music keyboard. This site documents the internal architecture, firmware, and protocols of this 1997-era professional arranger keyboard.

A Digital Archaeology Project

This project preserves technical knowledge of the KN5000 through detailed reverse engineering. As physical hardware becomes scarce, accurate documentation ensures these instruments remain accessible for emulation, repair, and homebrew development.

Project Goals

Goal Description
ROM Reconstruction Create buildable source code that produces byte-identical ROMs
MAME Emulation Full system emulation in the MAME framework
Homebrew Development Enable custom software development for the hardware
Compiler Development LLVM backend for TLCS-900/H2, enabling C/C++ development

Start Here

New to the project? Begin with the System Overview to understand how all the components work together.

View System Overview

Documentation by Topic

Hardware & Memory

Page Description
System Overview Architecture diagram and subsystem guide
Hardware Architecture Physical components from service manual
CPU Subsystem TMP94C241F dual-CPU design
Memory Map Complete address space layout

Subsystems

Page Status Description
Control Panel Protocol Documented Serial protocol for buttons, LEDs, encoders
Audio Subsystem Documented DSP effects, tone generation, voice management
Keybed Scanning Documented Hardware key scanning, note encoding, voice slots
Display Subsystem Documented Framebuffer layout, palette, VGA registers
Storage Subsystem Documented Floppy, flash, Table Data ROM, HDAE5000
MIDI Subsystem Documented 26-channel voice routing, CC handlers, SysEx
UI Framework Documented 550+ widget handlers, event system, drawing API
Sequencer Documented 16-track engine, ring buffer, style system

Protocols

Page Description
Control Panel Protocol MCU serial communication
Inter-CPU Protocol Main/Sub CPU latch protocol
HDAE5000 Disk Interface IDE/ATA and PC parallel port
HDAE5000 Filesystem Custom FSB/FGB/FEB filesystem

Firmware Analysis

Page Description
Boot Sequence Power-on to ready state
SubCPU Payload Loading LZSS decompression, E1 bulk transfer, DMA investigation
Sub CPU Payload Transfer 192KB firmware loading mechanism
ROM Reconstruction Disassembly progress
Source Code Map Guide to every source file in the disassembly
FDC Subsystem Floppy disk handlers
Feature Demo & Presentation System SSF XML scripting, demo assets, planned-but-unshipped floppy loading
Floppy Security Analysis Code injection vectors via crafted update discs
HDAE5000 Hard disk expansion firmware
Firmware v9 vs v10 Detailed comparison of the last two firmware releases

Homebrew

Page Description
Playing Games on MAME Step-by-step guide to running homebrew games in the emulator
Another World VM Full game port: bytecode VM, polygon rendering, input, frame timing

Resources

Page Description
Image Gallery 46+ extracted graphics (42 main CPU, 4 HDAE5000)
ROM Strings Extracted text resources
Reverse Engineering Methodology and strategies
Help Wanted Contribution guide
Open Questions Unsolved mysteries
Issues Project task tracker

Learning Paths

Choose based on your goal:

MAME Emulation Development

  1. System Overview - Understand the architecture
  2. Hardware Architecture - Physical components
  3. Memory Map - Address space
  4. Control Panel Protocol - HLE for buttons/LEDs

Homebrew Development

  1. Playing Games on MAME - Get the emulator running first
  2. CPU Subsystem - TMP94C241F programming
  3. Memory Map - Available resources
  4. Display Subsystem - Graphics output
  5. Another World VM - Full game port example
  6. Help Wanted - Tool development needs

Reverse Engineering Research

  1. ROM Reconstruction - Current progress
  2. Reverse Engineering - Techniques
  3. Open Questions - Areas needing investigation
  4. Issues - Specific tasks

Project Status

ROM Reconstruction Progress

All 6 ROMs: 100% byte-perfect match. Built with a custom LLVM TLCS-900 backend – 279,441 native instructions, zero workaround macros.

Component Size Match Status
Main CPU Program 2MB 100% 239,683 native instructions
Sub CPU Payload 192KB 100% 35,721 native instructions
Sub CPU Boot ROM 128KB 100% 1,357 native instructions
Table Data 2MB 100% 1,678 native instructions + binary data
Custom Data 1MB 100% Binary data (no code)
HDAE5000 ROM 512KB 100% 502 native instructions

Homebrew Development

A homebrew SDK is available for writing custom HDAE5000 extension ROMs. Features a Quick Start guide, C + assembly build pipeline, and a fully playable Minesweeper game as a working example.

MAME Emulation

Component Status
MAME Driver PR #14558 in progress
Display 320x240 LCD working (VGA controller emulated)
Audio DSP protocol decoded, tone generator HLE
Control Panel Protocol documented, button state arrays emulated
HDAE5000 Extension board detected, IDE/ATA wired, homebrew ROMs loadable
Floppy UPD72067 FDC emulated, disk images available

About This Project

Project Lead: Felipe Sanches Arqueologia Digital

This documentation is developed with AI assistance from Claude Code. All content is verified against actual hardware behavior and service documentation. Contributions and corrections are welcome via GitHub issues.

We believe preserving technical knowledge of instruments like the KN5000 is essential for cultural heritage. If you find errors or have additions, please contribute.