Deployed c9e4f2a with MkDocs version: 1.1.2

This commit is contained in:
nicolasnoble 2021-05-15 21:28:56 +00:00
commit 2a37c9761f
67 changed files with 57388 additions and 0 deletions

0
.nojekyll Normal file
View File

667
404.html Normal file
View File

@ -0,0 +1,667 @@
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="icon" href="/assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-7.1.3">
<title>PlayStation Specifications - psx-spx</title>
<link rel="stylesheet" href="/assets/stylesheets/main.e35208c4.min.css">
<link rel="stylesheet" href="/assets/stylesheets/palette.ef6f36e2.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
<style>:root{--md-text-font-family:"Roboto";--md-code-font-family:"Roboto Mono"}</style>
<link rel="stylesheet" href="/css/extra.css">
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
<script>function __prefix(e){return new URL("/",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
<script>var palette=__get("__palette");if(null!==palette&&"object"==typeof palette.color)for(var key in palette.color)document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="/." title="PlayStation Specifications - psx-spx" class="md-header__button md-logo" aria-label="PlayStation Specifications - psx-spx" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
PlayStation Specifications - psx-spx
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 10a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2 2 2 0 0 1 2-2m10-3a5 5 0 0 1 5 5 5 5 0 0 1-5 5H7a5 5 0 0 1-5-5 5 5 0 0 1 5-5h10M7 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3h10a3 3 0 0 0 3-3 3 3 0 0 0-3-3H7z"/></svg>
</label>
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="blue" data-md-color-accent="blue" type="radio" name="__palette" id="__palette_2">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3z"/></svg>
</label>
</form>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" data-md-state="active" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
</label>
<button type="reset" class="md-search__icon md-icon" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="/." title="PlayStation Specifications - psx-spx" class="md-nav__button md-logo" aria-label="PlayStation Specifications - psx-spx" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"/></svg>
</a>
PlayStation Specifications - psx-spx
</label>
<div class="md-nav__source">
<a href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="/." class="md-nav__link">
Home
</a>
</li>
<li class="md-nav__item">
<a href="/memorymap/" class="md-nav__link">
Memory Map
</a>
</li>
<li class="md-nav__item">
<a href="/iomap/" class="md-nav__link">
I/O Map
</a>
</li>
<li class="md-nav__item">
<a href="/graphicsprocessingunitgpu/" class="md-nav__link">
Graphics Processing Unit (GPU)
</a>
</li>
<li class="md-nav__item">
<a href="/geometrytransformationenginegte/" class="md-nav__link">
Geometry Transformation Engine (GTE)
</a>
</li>
<li class="md-nav__item">
<a href="/macroblockdecodermdec/" class="md-nav__link">
Macroblock Decoder (MDEC)
</a>
</li>
<li class="md-nav__item">
<a href="/soundprocessingunitspu/" class="md-nav__link">
Sound Processing Unit (SPU)
</a>
</li>
<li class="md-nav__item">
<a href="/interrupts/" class="md-nav__link">
Interrupts
</a>
</li>
<li class="md-nav__item">
<a href="/dmachannels/" class="md-nav__link">
DMA Channels
</a>
</li>
<li class="md-nav__item">
<a href="/timers/" class="md-nav__link">
Timers
</a>
</li>
<li class="md-nav__item">
<a href="/cdromdrive/" class="md-nav__link">
CDROM Drive
</a>
</li>
<li class="md-nav__item">
<a href="/controllersandmemorycards/" class="md-nav__link">
Controllers and Memory Cards
</a>
</li>
<li class="md-nav__item">
<a href="/pocketstation/" class="md-nav__link">
Pocketstation
</a>
</li>
<li class="md-nav__item">
<a href="/serialportsio/" class="md-nav__link">
Serial Port (SIO)
</a>
</li>
<li class="md-nav__item">
<a href="/expansionportpio/" class="md-nav__link">
Expansion Port (PIO)
</a>
</li>
<li class="md-nav__item">
<a href="/memorycontrol/" class="md-nav__link">
Memory Control
</a>
</li>
<li class="md-nav__item">
<a href="/unpredictablethings/" class="md-nav__link">
Unpredictable Things
</a>
</li>
<li class="md-nav__item">
<a href="/cpuspecifications/" class="md-nav__link">
CPU Specifications
</a>
</li>
<li class="md-nav__item">
<a href="/kernelbios/" class="md-nav__link">
Kernel (BIOS)
</a>
</li>
<li class="md-nav__item">
<a href="/arcadecabinets/" class="md-nav__link">
Arcade Cabinets
</a>
</li>
<li class="md-nav__item">
<a href="/cheatdevices/" class="md-nav__link">
Cheat Devices
</a>
</li>
<li class="md-nav__item">
<a href="/psxdevboardchipsets/" class="md-nav__link">
PSX Dev-Board Chipsets
</a>
</li>
<li class="md-nav__item">
<a href="/hardwarenumbers/" class="md-nav__link">
Hardware Numbers
</a>
</li>
<li class="md-nav__item">
<a href="/pinouts/" class="md-nav__link">
Pinouts
</a>
</li>
<li class="md-nav__item">
<a href="/aboutcredits/" class="md-nav__link">
About & Credits
</a>
</li>
<li class="md-nav__item">
<a href="/cdromvideocdsvcd/" class="md-nav__link">
CDROM Video CDs (VCD)
</a>
</li>
<li class="md-nav__item">
<a href="/cdrominternalinfoonpsxcdromcontroller/" class="md-nav__link">
CDROM Internal Info on PSX CDROM Controller
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1>404 - Not found</h1>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "/", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}, "search": "/assets/javascripts/workers/search.fe42c31b.min.js", "version": null}</script>
<script src="/assets/javascripts/bundle.4ea5477f.min.js"></script>
</body>
</html>

1
CNAME Normal file
View File

@ -0,0 +1 @@
psx-spx.consoledev.net

678
aboutcredits/index.html Normal file
View File

@ -0,0 +1,678 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8"/>
<meta content="width=device-width,initial-scale=1" name="viewport"/>
<link href="https://psx-spx.consoledev.net/aboutcredits/" rel="canonical"/>
<link href="../assets/images/favicon.png" rel="icon"/>
<meta content="mkdocs-1.1.2, mkdocs-material-7.1.3" name="generator"/>
<title>About &amp; Credits - PlayStation Specifications - psx-spx</title>
<link href="../assets/stylesheets/main.e35208c4.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.ef6f36e2.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font-family:"Roboto";--md-code-font-family:"Roboto Mono"}</style>
<link href="../css/extra.css" rel="stylesheet"/>
</head>
<body data-md-color-accent="indigo" data-md-color-primary="indigo" data-md-color-scheme="default" dir="ltr">
<script>function __prefix(e){return new URL("..",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
<script>var palette=__get("__palette");if(null!==palette&&"object"==typeof palette.color)for(var key in palette.color)document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a class="md-skip" href="#about-credits">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="PlayStation Specifications - psx-spx" class="md-header__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
PlayStation Specifications - psx-spx
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
About &amp; Credits
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="indigo" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Switch to dark mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2 2 2 0 0 1 2-2m10-3a5 5 0 0 1 5 5 5 5 0 0 1-5 5H7a5 5 0 0 1-5-5 5 5 0 0 1 5-5h10M7 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3h10a3 3 0 0 0 3-3 3 3 0 0 0-3-3H7z"></path></svg>
</label>
<input class="md-option" data-md-color-accent="blue" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="blue" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Switch to light mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3z"></path></svg>
</label>
</form>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" data-md-state="active" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</label>
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"></path></svg>
</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="PlayStation Specifications - psx-spx" class="md-nav__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
PlayStation Specifications - psx-spx
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
Home
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../memorymap/">
Memory Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../iomap/">
I/O Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../graphicsprocessingunitgpu/">
Graphics Processing Unit (GPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometrytransformationenginegte/">
Geometry Transformation Engine (GTE)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../macroblockdecodermdec/">
Macroblock Decoder (MDEC)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../soundprocessingunitspu/">
Sound Processing Unit (SPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../interrupts/">
Interrupts
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../dmachannels/">
DMA Channels
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../timers/">
Timers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromdrive/">
CDROM Drive
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../controllersandmemorycards/">
Controllers and Memory Cards
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pocketstation/">
Pocketstation
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../serialportsio/">
Serial Port (SIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../expansionportpio/">
Expansion Port (PIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../memorycontrol/">
Memory Control
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../unpredictablethings/">
Unpredictable Things
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cpuspecifications/">
CPU Specifications
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../kernelbios/">
Kernel (BIOS)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../arcadecabinets/">
Arcade Cabinets
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cheatdevices/">
Cheat Devices
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../psxdevboardchipsets/">
PSX Dev-Board Chipsets
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../hardwarenumbers/">
Hardware Numbers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pinouts/">
Pinouts
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<label class="md-nav__link md-nav__link--active" for="__toc">
About &amp; Credits
<span class="md-nav__icon md-icon"></span>
</label>
<a class="md-nav__link md-nav__link--active" href="./">
About &amp; Credits
</a>
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#credits">
Credits
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#psxspx-homepage">
PSXSPX homepage
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#contact">
Contact
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#index">
Index
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromvideocdsvcd/">
CDROM Video CDs (VCD)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdrominternalinfoonpsxcdromcontroller/">
CDROM Internal Info on PSX CDROM Controller
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#credits">
Credits
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#psxspx-homepage">
PSXSPX homepage
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#contact">
Contact
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#index">
Index
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a class="md-content__button md-icon" href="https://github.com/psx-spx/psx-spx.github.io/edit/master/docs/aboutcredits.md" title="Edit this page">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"></path></svg>
</a>
<h1 id="about-credits">About &amp; Credits</h1>
<h4 id="credits">Credits</h4>
<p>GPU.TXT by doomed/padua; based on info from K-communications &amp;
Nagra/Blackbag<br/>
GTE.TXT by doomed@c64.org / psx.rules.org<br/>
SPU.TXT by doomed@c64.org / psx.rules.org<br/>
CDINFO.TXT by doomed with big thanks to Barubary, who rewrote a large part<br/>
SYSTEM.TXT by doomed with thanx to Herozero for breakpoint info<br/>
PS_ENG.TXT PlayStation PAD/Memory Interface Protocol by HFB03536<br/>
IDT79R3041 Hardware User's Manual by Integrated Device Technology, Inc.<br/>
IDTR3051, R3052 RISController User's Manual by Integrated Device Technology<br/>
PSX.* by Joshua Walker (additional details in various distorted file formats)<br/>
LIBMIRAGE by Rok; info/source code for various cdrom-image formats<br/>
psxdev.ru; cdrom sub-cpu decapping<br/></p>
<h4 id="psxspx-homepage">PSXSPX homepage</h4>
<p>http://problemkaputt.de/psx.htm no$psx emulator/debugger<br/>
http://problemkaputt.de/psx-spx.htm psx specs in html formal<br/>
http://problemkaputt.de/psx-spx.txt psx specs in text formal<br/></p>
<h4 id="contact">Contact</h4>
<p>http://problemkaputt.de/email.htm (spam-shielded)<br/></p>
<h2 id="index">Index</h2>
<p><a href="#contents">Contents</a><br/>
<a href="../memorymap/">Memory Map</a><br/>
<a href="../iomap/">I/O Map</a><br/>
<a href="../graphicsprocessingunitgpu/">Graphics Processing Unit (GPU)</a><br/>
<a href="../graphicsprocessingunitgpu/#gpu-io-ports-dma-channels-commands-vram">GPU I/O Ports, DMA Channels, Commands, VRAM</a><br/>
<a href="../graphicsprocessingunitgpu/#gpu-render-polygon-commands">GPU Render Polygon Commands</a><br/>
<a href="../graphicsprocessingunitgpu/#gpu-render-line-commands">GPU Render Line Commands</a><br/>
<a href="../graphicsprocessingunitgpu/#gpu-render-rectangle-commands">GPU Render Rectangle Commands</a><br/>
<a href="../graphicsprocessingunitgpu/#gpu-rendering-attributes">GPU Rendering Attributes</a><br/>
<a href="../graphicsprocessingunitgpu/#gpu-memory-transfer-commands">GPU Memory Transfer Commands</a><br/>
<a href="../graphicsprocessingunitgpu/#gpu-other-commands">GPU Other Commands</a><br/>
<a href="../graphicsprocessingunitgpu/#gpu-display-control-commands-gp1">GPU Display Control Commands (GP1)</a><br/>
<a href="../graphicsprocessingunitgpu/#gpu-status-register">GPU Status Register</a><br/>
<a href="../graphicsprocessingunitgpu/#gpu-versions">GPU Versions</a><br/>
<a href="../graphicsprocessingunitgpu/#gpu-depth-ordering">GPU Depth Ordering</a><br/>
<a href="../graphicsprocessingunitgpu/#gpu-video-memory-vram">GPU Video Memory (VRAM)</a><br/>
<a href="../graphicsprocessingunitgpu/#gpu-texture-caching">GPU Texture Caching</a><br/>
<a href="../graphicsprocessingunitgpu/#gpu-timings">GPU Timings</a><br/>
<a href="../graphicsprocessingunitgpu/#gpu-misc">GPU (MISC)</a><br/>
<a href="../geometrytransformationenginegte/">Geometry Transformation Engine (GTE)</a><br/>
<a href="../geometrytransformationenginegte/#gte-overview">GTE Overview</a><br/>
<a href="../geometrytransformationenginegte/#gte-registers">GTE Registers</a><br/>
<a href="../geometrytransformationenginegte/#gte-saturation">GTE Saturation</a><br/>
<a href="../geometrytransformationenginegte/#gte-opcode-summary">GTE Opcode Summary</a><br/>
<a href="../geometrytransformationenginegte/#gte-coordinate-calculation-commands">GTE Coordinate Calculation Commands</a><br/>
<a href="../geometrytransformationenginegte/#gte-general-purpose-calculation-commands">GTE General Purpose Calculation Commands</a><br/>
<a href="../geometrytransformationenginegte/#gte-color-calculation-commands">GTE Color Calculation Commands</a><br/>
<a href="../geometrytransformationenginegte/#gte-division-inaccuracy">GTE Division Inaccuracy</a><br/>
<a href="../macroblockdecodermdec/">Macroblock Decoder (MDEC)</a><br/>
<a href="../macroblockdecodermdec/#mdec-io-ports">MDEC I/O Ports</a><br/>
<a href="../macroblockdecodermdec/#mdec-commands">MDEC Commands</a><br/>
<a href="../macroblockdecodermdec/#mdec-decompression">MDEC Decompression</a><br/>
<a href="../macroblockdecodermdec/#mdec-data-format">MDEC Data Format</a><br/>
<a href="../soundprocessingunitspu/">Sound Processing Unit (SPU)</a><br/>
<a href="../soundprocessingunitspu/#spu-overview">SPU Overview</a><br/>
<a href="../soundprocessingunitspu/#spu-adpcm-samples">SPU ADPCM Samples</a><br/>
<a href="../soundprocessingunitspu/#spu-adpcm-pitch">SPU ADPCM Pitch</a><br/>
<a href="../soundprocessingunitspu/#spu-volume-and-adsr-generator">SPU Volume and ADSR Generator</a><br/>
<a href="../soundprocessingunitspu/#spu-voice-flags">SPU Voice Flags</a><br/>
<a href="../soundprocessingunitspu/#spu-noise-generator">SPU Noise Generator</a><br/>
<a href="../soundprocessingunitspu/#spu-control-and-status-register">SPU Control and Status Register</a><br/>
<a href="../soundprocessingunitspu/#spu-memory-access">SPU Memory Access</a><br/>
<a href="../soundprocessingunitspu/#spu-interrupt">SPU Interrupt</a><br/>
<a href="../soundprocessingunitspu/#spu-reverb-registers">SPU Reverb Registers</a><br/>
<a href="../soundprocessingunitspu/#spu-reverb-formula">SPU Reverb Formula</a><br/>
<a href="../soundprocessingunitspu/#spu-reverb-examples">SPU Reverb Examples</a><br/>
<a href="../soundprocessingunitspu/#spu-unknown-registers">SPU Unknown Registers</a><br/>
<a href="../interrupts/">Interrupts</a><br/>
<a href="../dmachannels/">DMA Channels</a><br/>
<a href="../timers/">Timers</a><br/>
<a href="../cdromdrive/">CDROM Drive</a><br/>
<a href="../cdromdrive/#cdrom-controller-io-ports">CDROM Controller I/O Ports</a><br/>
<a href="../cdromdrive/#cdrom-controller-command-summary">CDROM Controller Command Summary</a><br/>
<a href="../cdromdrive/#cdrom-control-commands">CDROM - Control Commands</a><br/>
<a href="../cdromdrive/#cdrom-seek-commands">CDROM - Seek Commands</a><br/>
<a href="../cdromdrive/#cdrom-read-commands">CDROM - Read Commands</a><br/>
<a href="../cdromdrive/#cdrom-status-commands">CDROM - Status Commands</a><br/>
<a href="../cdromdrive/#cdrom-cd-audio-commands">CDROM - CD Audio Commands</a><br/>
<a href="../cdromdrive/#cdrom-test-commands">CDROM - Test Commands</a><br/>
<a href="../cdromdrive/#cdrom-test-commands-version-switches-region-chipset-scex">CDROM - Test Commands - Version, Switches, Region, Chipset, SCEx</a><br/>
<a href="../cdromdrive/#cdrom-test-commands-test-drive-mechanics">CDROM - Test Commands - Test Drive Mechanics</a><br/>
<a href="../cdromdrive/#cdrom-test-commands-prototype-debug-transmission">CDROM - Test Commands - Prototype Debug Transmission</a><br/>
<a href="../cdromdrive/#cdrom-test-commands-readwrite-decoder-ram-and-io-ports">CDROM - Test Commands - Read/Write Decoder RAM and I/O Ports</a><br/>
<a href="../cdromdrive/#cdrom-test-commands-read-hc05-sub-cpu-ram-and-io-ports">CDROM - Test Commands - Read HC05 SUB-CPU RAM and I/O Ports</a><br/>
<a href="../cdromdrive/#cdrom-secret-unlock-commands">CDROM - Secret Unlock Commands</a><br/>
<a href="../cdromdrive/#cdrom-video-cd-commands">CDROM - Video CD Commands</a><br/>
<a href="../cdromdrive/#cdrom-mainloopresponses">CDROM - Mainloop/Responses</a><br/>
<a href="../cdromdrive/#cdrom-response-timings">CDROM - Response Timings</a><br/>
<a href="../cdromdrive/#cdrom-responsedata-queueing">CDROM - Response/Data Queueing</a><br/>
<a href="../cdromdrive/#cdrom-disk-format">CDROM Disk Format</a><br/>
<a href="../cdromdrive/#cdrom-subchannels">CDROM Subchannels</a><br/>
<a href="../cdromdrive/#cdrom-sector-encoding">CDROM Sector Encoding</a><br/>
<a href="../cdromdrive/#cdrom-xa-subheader-file-channel-interleave">CDROM XA Subheader, File, Channel, Interleave</a><br/>
<a href="../cdromdrive/#cdrom-xa-audio-adpcm-compression">CDROM XA Audio ADPCM Compression</a><br/>
<a href="../cdromdrive/#cdrom-iso-volume-descriptors">CDROM ISO Volume Descriptors</a><br/>
<a href="../cdromdrive/#cdrom-iso-file-and-directory-descriptors">CDROM ISO File and Directory Descriptors</a><br/>
<a href="../cdromdrive/#cdrom-iso-misc">CDROM ISO Misc</a><br/>
<a href="../cdromdrive/#cdrom-file-formats">CDROM File Formats</a><br/>
<a href="../cdromdrive/#cdrom-protection-scex-strings">CDROM Protection - SCEx Strings</a><br/>
<a href="../cdromdrive/#cdrom-protection-bypassing-it">CDROM Protection - Bypassing it</a><br/>
<a href="../cdromdrive/#cdrom-protection-modchips">CDROM Protection - Modchips</a><br/>
<a href="../cdromdrive/#cdrom-protection-chipless-modchips">CDROM Protection - Chipless Modchips</a><br/>
<a href="../cdromdrive/#cdrom-protection-libcrypt">CDROM Protection - LibCrypt</a><br/>
<a href="../cdromdrive/#cdrom-disk-images-ccdimgsub-clonecd">CDROM Disk Images CCD/IMG/SUB (CloneCD)</a><br/>
<a href="../cdromdrive/#cdrom-disk-images-cdi-discjuggler">CDROM Disk Images CDI (DiscJuggler)</a><br/>
<a href="../cdromdrive/#cdrom-disk-images-cuebincdt-cdrwin">CDROM Disk Images CUE/BIN/CDT (Cdrwin)</a><br/>
<a href="../cdromdrive/#cdrom-disk-images-mdsmdf-alcohol-120">CDROM Disk Images MDS/MDF (Alcohol 120%)</a><br/>
<a href="../cdromdrive/#cdrom-disk-images-nrg-nero">CDROM Disk Images NRG (Nero)</a><br/>
<a href="../cdromdrive/#cdrom-disk-imagecontainers-cdz">CDROM Disk Image/Containers CDZ</a><br/>
<a href="../cdromdrive/#cdrom-disk-imagecontainers-ecm">CDROM Disk Image/Containers ECM</a><br/>
<a href="../cdromdrive/#cdrom-subchannel-images">CDROM Subchannel Images</a><br/>
<a href="../cdromdrive/#cdrom-disk-images-other-formats">CDROM Disk Images Other Formats</a><br/>
<a href="../cdrominternalinfoonpsxcdromcontroller/">CDROM Internal Info on PSX CDROM Controller</a><br/>
<a href="../cdrominternalinfoonpsxcdromcontroller/#cdrom-internal-hc05-instruction-set">CDROM Internal HC05 Instruction Set</a><br/>
<a href="../cdrominternalinfoonpsxcdromcontroller/#cdrom-internal-hc05-on-chip-io-ports">CDROM Internal HC05 On-Chip I/O Ports</a><br/>
<a href="../cdrominternalinfoonpsxcdromcontroller/#cdrom-internal-hc05-on-chip-io-ports-extras">CDROM Internal HC05 On-Chip I/O Ports - Extras</a><br/>
<a href="../cdrominternalinfoonpsxcdromcontroller/#cdrom-internal-hc05-io-port-usage-in-psx">CDROM Internal HC05 I/O Port Usage in PSX</a><br/>
<a href="../cdrominternalinfoonpsxcdromcontroller/#cdrom-internal-hc05-motorola-selftest-mode">CDROM Internal HC05 Motorola Selftest Mode</a><br/>
<a href="../cdrominternalinfoonpsxcdromcontroller/#cdrom-internal-hc05-motorola-selftest-mode-52pin-chips">CDROM Internal HC05 Motorola Selftest Mode (52pin chips)</a><br/>
<a href="../cdrominternalinfoonpsxcdromcontroller/#cdrom-internal-hc05-motorola-selftest-mode-80pin-chips">CDROM Internal HC05 Motorola Selftest Mode (80pin chips)</a><br/>
<a href="../cdrominternalinfoonpsxcdromcontroller/#cdrom-internal-cxd1815q-sub-cpu-configuration-registers">CDROM Internal CXD1815Q Sub-CPU Configuration Registers</a><br/>
<a href="../cdrominternalinfoonpsxcdromcontroller/#cdrom-internal-cxd1815q-sub-cpu-sector-status-registers">CDROM Internal CXD1815Q Sub-CPU Sector Status Registers</a><br/>
<a href="../cdrominternalinfoonpsxcdromcontroller/#cdrom-internal-cxd1815q-sub-cpu-address-registers">CDROM Internal CXD1815Q Sub-CPU Address Registers</a><br/>
<a href="../cdrominternalinfoonpsxcdromcontroller/#cdrom-internal-cxd1815q-sub-cpu-misc-registers">CDROM Internal CXD1815Q Sub-CPU Misc Registers</a><br/>
<a href="../cdrominternalinfoonpsxcdromcontroller/#cdrom-internal-commands-cx0x3x-cxa1782br-servo-amplifier">CDROM Internal Commands CX(0x..3x) - CXA1782BR Servo Amplifier</a><br/>
<a href="../cdrominternalinfoonpsxcdromcontroller/#cdrom-internal-commands-cx4xex-cxd2510q-signal-processor">CDROM Internal Commands CX(4x..Ex) - CXD2510Q Signal Processor</a><br/>
<a href="../cdrominternalinfoonpsxcdromcontroller/#cdrom-internal-commands-cx0xex-cxd2545q-servosignal-combo">CDROM Internal Commands CX(0x..Ex) - CXD2545Q Servo/Signal Combo</a><br/>
<a href="../cdrominternalinfoonpsxcdromcontroller/#cdrom-internal-commands-cx0xex-cxd2938q-servosignalspu-combo">CDROM Internal Commands CX(0x..Ex) - CXD2938Q Servo/Signal/SPU Combo</a><br/>
<a href="../cdrominternalinfoonpsxcdromcontroller/#cdrom-internal-commands-cxxx-notes">CDROM Internal Commands CX(xx) - Notes</a><br/>
<a href="../cdrominternalinfoonpsxcdromcontroller/#cdrom-internal-commands-cxxx-summary-of-used-cxxx-commands">CDROM Internal Commands CX(xx) - Summary of Used CX(xx) Commands</a><br/>
<a href="../cdrominternalinfoonpsxcdromcontroller/#cdrom-internal-coefficients-for-cxd2545q">CDROM Internal Coefficients (for CXD2545Q)</a><br/>
<a href="../cdromvideocdsvcd/">CDROM Video CDs (VCD)</a><br/>
<a href="../cdromvideocdsvcd/#vcd-iso-basic-files-info-entries-avseqnn-iso-filesystem">VCD ISO Basic Files (INFO, ENTRIES, AVSEQnn, ISO Filesystem)</a><br/>
<a href="../cdromvideocdsvcd/#vcd-iso-playback-control-pbc-files-psd-lot-itemnnnn">VCD ISO Playback Control PBC Files (PSD, LOT, ITEMnnnn)</a><br/>
<a href="../cdromvideocdsvcd/#vcd-iso-search-files-scandata-search-tracks-spicontx">VCD ISO Search Files (SCANDATA, SEARCH, TRACKS, SPICONTX)</a><br/>
<a href="../cdromvideocdsvcd/#vcd-iso-misc-files-captnn-audionn-karinfo-pictures-cdi">VCD ISO Misc files (CAPTnn, AUDIOnn, KARINFO, PICTURES, CDI)</a><br/>
<a href="../cdromvideocdsvcd/#vcd-mpeg-1-multiplex-stream">VCD MPEG-1 Multiplex Stream</a><br/>
<a href="../cdromvideocdsvcd/#vcd-mpeg-1-video-stream">VCD MPEG-1 Video Stream</a><br/>
<a href="../cdromvideocdsvcd/#vcd-mp2-audio-stream">VCD MP2 Audio Stream</a><br/>
<a href="../cdromvideocdsvcd/#inflate">Inflate</a><br/>
<a href="../cdromvideocdsvcd/#inflate-core-functions">Inflate - Core Functions</a><br/>
<a href="../cdromvideocdsvcd/#inflate-initialization--tree-creation">Inflate - Initialization &amp; Tree Creation</a><br/>
<a href="../cdromvideocdsvcd/#inflate-headers-and-checksums">Inflate - Headers and Checksums</a><br/>
<a href="../controllersandmemorycards/">Controllers and Memory Cards</a><br/>
<a href="../controllersandmemorycards/#controller-and-memory-card-io-ports">Controller and Memory Card I/O Ports</a><br/>
<a href="../controllersandmemorycards/#controller-and-memory-card-misc">Controller and Memory Card Misc</a><br/>
<a href="../controllersandmemorycards/#controller-and-memory-card-signals">Controller and Memory Card Signals</a><br/>
<a href="../controllersandmemorycards/#controller-and-memory-card-multitap-adaptor">Controller and Memory Card Multitap Adaptor</a><br/>
<a href="../controllersandmemorycards/#controllers-communication-sequence">Controllers - Communication Sequence</a><br/>
<a href="../controllersandmemorycards/#controllers-standard-digitalanalog-controllers">Controllers - Standard Digital/Analog Controllers</a><br/>
<a href="../controllersandmemorycards/#controllers-mouse">Controllers - Mouse</a><br/>
<a href="../controllersandmemorycards/#controllers-racing-controllers">Controllers - Racing Controllers</a><br/>
<a href="../controllersandmemorycards/#controllers-lightguns">Controllers - Lightguns</a><br/>
<a href="../controllersandmemorycards/#controllers-lightguns-namco-guncon">Controllers - Lightguns - Namco (GunCon)</a><br/>
<a href="../controllersandmemorycards/#controllers-lightguns-konami-justifierhyperblaster-irq10">Controllers - Lightguns - Konami Justifier/Hyperblaster (IRQ10)</a><br/>
<a href="../controllersandmemorycards/#controllers-lightguns-psx-lightgun-games">Controllers - Lightguns - PSX Lightgun Games</a><br/>
<a href="../controllersandmemorycards/#controllers-rumble-configuration">Controllers - Rumble Configuration</a><br/>
<a href="../controllersandmemorycards/#controllers-dance-mats">Controllers - Dance Mats</a><br/>
<a href="../controllersandmemorycards/#controllers-fishing-controllers">Controllers - Fishing Controllers</a><br/>
<a href="../controllersandmemorycards/#controllers-i-mode-adaptor-mobile-internet">Controllers - I-Mode Adaptor (Mobile Internet)</a><br/>
<a href="../controllersandmemorycards/#controllers-additional-inputs">Controllers - Additional Inputs</a><br/>
<a href="../controllersandmemorycards/#controllers-misc">Controllers - Misc</a><br/>
<a href="../controllersandmemorycards/#memory-card-readwrite-commands">Memory Card Read/Write Commands</a><br/>
<a href="../controllersandmemorycards/#memory-card-data-format">Memory Card Data Format</a><br/>
<a href="../controllersandmemorycards/#memory-card-images">Memory Card Images</a><br/>
<a href="../controllersandmemorycards/#memory-card-notes">Memory Card Notes</a><br/>
<a href="../pocketstation/">Pocketstation</a><br/>
<a href="../pocketstation/#pocketstation-overview">Pocketstation Overview</a><br/>
<a href="../pocketstation/#pocketstation-io-map">Pocketstation I/O Map</a><br/>
<a href="../pocketstation/#pocketstation-memory-map">Pocketstation Memory Map</a><br/>
<a href="../pocketstation/#pocketstation-io-video-and-audio">Pocketstation IO Video and Audio</a><br/>
<a href="../pocketstation/#pocketstation-io-interrupts-and-buttons">Pocketstation IO Interrupts and Buttons</a><br/>
<a href="../pocketstation/#pocketstation-io-timers-and-real-time-clock">Pocketstation IO Timers and Real-Time Clock</a><br/>
<a href="../pocketstation/#pocketstation-io-infrared">Pocketstation IO Infrared</a><br/>
<a href="../pocketstation/#pocketstation-io-memory-control">Pocketstation IO Memory-Control</a><br/>
<a href="../pocketstation/#pocketstation-io-communication-ports">Pocketstation IO Communication Ports</a><br/>
<a href="../pocketstation/#pocketstation-io-power-control">Pocketstation IO Power Control</a><br/>
<a href="../pocketstation/#pocketstation-swi-function-summary">Pocketstation SWI Function Summary</a><br/>
<a href="../pocketstation/#pocketstation-swi-misc-functions">Pocketstation SWI Misc Functions</a><br/>
<a href="../pocketstation/#pocketstation-swi-communication-functions">Pocketstation SWI Communication Functions</a><br/>
<a href="../pocketstation/#pocketstation-swi-execute-functions">Pocketstation SWI Execute Functions</a><br/>
<a href="../pocketstation/#pocketstation-swi-datetimealarm-functions">Pocketstation SWI Date/Time/Alarm Functions</a><br/>
<a href="../pocketstation/#pocketstation-swi-flash-functions">Pocketstation SWI Flash Functions</a><br/>
<a href="../pocketstation/#pocketstation-swi-useless-functions">Pocketstation SWI Useless Functions</a><br/>
<a href="../pocketstation/#pocketstation-bu-command-summary">Pocketstation BU Command Summary</a><br/>
<a href="../pocketstation/#pocketstation-bu-standard-memory-card-commands">Pocketstation BU Standard Memory Card Commands</a><br/>
<a href="../pocketstation/#pocketstation-bu-basic-pocketstation-commands">Pocketstation BU Basic Pocketstation Commands</a><br/>
<a href="../pocketstation/#pocketstation-bu-custom-pocketstation-commands">Pocketstation BU Custom Pocketstation Commands</a><br/>
<a href="../pocketstation/#pocketstation-file-headericons">Pocketstation File Header/Icons</a><br/>
<a href="../pocketstation/#pocketstation-file-images">Pocketstation File Images</a><br/>
<a href="../pocketstation/#pocketstation-xboo-cable">Pocketstation XBOO Cable</a><br/>
<a href="../serialportsio/">Serial Port (SIO)</a><br/>
<a href="../expansionportpio/">Expansion Port (PIO)</a><br/>
<a href="../expansionportpio/#exp1-expansion-rom-header">EXP1 Expansion ROM Header</a><br/>
<a href="../expansionportpio/#exp2-dual-serial-port-for-tty-debug-terminal">EXP2 Dual Serial Port (for TTY Debug Terminal)</a><br/>
<a href="../expansionportpio/#exp2-dtl-h2000-io-ports">EXP2 DTL-H2000 I/O Ports</a><br/>
<a href="../expansionportpio/#exp2-post-registers">EXP2 Post Registers</a><br/>
<a href="../expansionportpio/#exp2-nocash-emulation-expansion">EXP2 Nocash Emulation Expansion</a><br/>
<a href="../memorycontrol/">Memory Control</a><br/>
<a href="../unpredictablethings/">Unpredictable Things</a><br/>
<a href="../cpuspecifications/">CPU Specifications</a><br/>
<a href="../cpuspecifications/#cpu-registers">CPU Registers</a><br/>
<a href="../cpuspecifications/#cpu-opcode-encoding">CPU Opcode Encoding</a><br/>
<a href="../cpuspecifications/#cpu-loadstore-opcodes">CPU Load/Store Opcodes</a><br/>
<a href="../cpuspecifications/#cpu-alu-opcodes">CPU ALU Opcodes</a><br/>
<a href="../cpuspecifications/#cpu-jump-opcodes">CPU Jump Opcodes</a><br/>
<a href="../cpuspecifications/#cpu-coprocessor-opcodes">CPU Coprocessor Opcodes</a><br/>
<a href="../cpuspecifications/#cpu-pseudo-opcodes">CPU Pseudo Opcodes</a><br/>
<a href="../cpuspecifications/#cop0-register-summary">COP0 - Register Summary</a><br/>
<a href="../cpuspecifications/#cop0-exception-handling">COP0 - Exception Handling</a><br/>
<a href="../cpuspecifications/#cop0-misc">COP0 - Misc</a><br/>
<a href="../cpuspecifications/#cop0-debug-registers">COP0 - Debug Registers</a><br/>
<a href="../kernelbios/">Kernel (BIOS)</a><br/>
<a href="../kernelbios/#bios-overview">BIOS Overview</a><br/>
<a href="../kernelbios/#bios-memory-map">BIOS Memory Map</a><br/>
<a href="../kernelbios/#bios-function-summary">BIOS Function Summary</a><br/>
<a href="../kernelbios/#bios-file-functions">BIOS File Functions</a><br/>
<a href="../kernelbios/#bios-file-execute-and-flush-cache">BIOS File Execute and Flush Cache</a><br/>
<a href="../kernelbios/#bios-cdrom-functions">BIOS CDROM Functions</a><br/>
<a href="../kernelbios/#bios-memory-card-functions">BIOS Memory Card Functions</a><br/>
<a href="../kernelbios/#bios-interruptexception-handling">BIOS Interrupt/Exception Handling</a><br/>
<a href="../kernelbios/#bios-event-functions">BIOS Event Functions</a><br/>
<a href="../kernelbios/#bios-event-summary">BIOS Event Summary</a><br/>
<a href="../kernelbios/#bios-thread-functions">BIOS Thread Functions</a><br/>
<a href="../kernelbios/#bios-timer-functions">BIOS Timer Functions</a><br/>
<a href="../kernelbios/#bios-joypad-functions">BIOS Joypad Functions</a><br/>
<a href="../kernelbios/#bios-gpu-functions">BIOS GPU Functions</a><br/>
<a href="../kernelbios/#bios-memory-allocation">BIOS Memory Allocation</a><br/>
<a href="../kernelbios/#bios-memory-fillcopycompare-slow">BIOS Memory Fill/Copy/Compare (SLOW)</a><br/>
<a href="../kernelbios/#bios-string-functions">BIOS String Functions</a><br/>
<a href="../kernelbios/#bios-numberstringcharacter-conversion">BIOS Number/String/Character Conversion</a><br/>
<a href="../kernelbios/#bios-misc-functions">BIOS Misc Functions</a><br/>
<a href="../kernelbios/#bios-internal-boot-functions">BIOS Internal Boot Functions</a><br/>
<a href="../kernelbios/#bios-more-internal-functions">BIOS More Internal Functions</a><br/>
<a href="../kernelbios/#bios-pc-file-server">BIOS PC File Server</a><br/>
<a href="../kernelbios/#bios-tty-console-stdio">BIOS TTY Console (std_io)</a><br/>
<a href="../kernelbios/#bios-character-sets">BIOS Character Sets</a><br/>
<a href="../kernelbios/#bios-control-blocks">BIOS Control Blocks</a><br/>
<a href="../kernelbios/#bios-versions">BIOS Versions</a><br/>
<a href="../kernelbios/#bios-patches">BIOS Patches</a><br/>
<a href="../arcadecabinets/">Arcade Cabinets</a><br/>
<a href="../cheatdevices/">Cheat Devices</a><br/>
<a href="../cheatdevices/#cheat-devices-datel-io">Cheat Devices - Datel I/O</a><br/>
<a href="../cheatdevices/#cheat-devices-datel-db25-comms-link-protocol">Cheat Devices - Datel DB25 Comms Link Protocol</a><br/>
<a href="../cheatdevices/#cheat-devices-datel-chipset-pinouts">Cheat Devices - Datel Chipset Pinouts</a><br/>
<a href="../cheatdevices/#cheat-devices-datel-cheat-code-format">Cheat Devices - Datel Cheat Code Format</a><br/>
<a href="../cheatdevices/#cheat-devices-xplorer-memory-and-io-map">Cheat Devices - Xplorer Memory and I/O Map</a><br/>
<a href="../cheatdevices/#cheat-devices-xplorer-db25-parallel-port-function-summary">Cheat Devices - Xplorer DB25 Parallel Port Function Summary</a><br/>
<a href="../cheatdevices/#cheat-devices-xplorer-db25-parallel-port-command-handler">Cheat Devices - Xplorer DB25 Parallel Port Command Handler</a><br/>
<a href="../cheatdevices/#cheat-devices-xplorer-db25-parallel-port-low-level-transfer-protocol">Cheat Devices - Xplorer DB25 Parallel Port Low Level Transfer Protocol</a><br/>
<a href="../cheatdevices/#cheat-devices-xplorer-versions">Cheat Devices - Xplorer Versions</a><br/>
<a href="../cheatdevices/#cheat-devices-xplorer-chipset-pinouts">Cheat Devices - Xplorer Chipset Pinouts</a><br/>
<a href="../cheatdevices/#cheat-devices-xplorer-cheat-code-format">Cheat Devices - Xplorer Cheat Code Format</a><br/>
<a href="../cheatdevices/#cheat-devices-xplorer-cheat-code-and-rom-image-decryption">Cheat Devices - Xplorer Cheat Code and ROM-Image Decryption</a><br/>
<a href="../cheatdevices/#cheat-devices-flasheeproms">Cheat Devices - FLASH/EEPROMs</a><br/>
<a href="../psxdevboardchipsets/">PSX Dev-Board Chipsets</a><br/>
<a href="../hardwarenumbers/">Hardware Numbers</a><br/>
<a href="../pinouts/">Pinouts</a><br/>
<a href="../pinouts/#pinouts-controller-ports-and-memory-card-ports">Pinouts - Controller Ports and Memory-Card Ports</a><br/>
<a href="../pinouts/#pinouts-audio-video-power-expansion-ports">Pinouts - Audio, Video, Power, Expansion Ports</a><br/>
<a href="../pinouts/#pinouts-sio-pinouts">Pinouts - SIO Pinouts</a><br/>
<a href="../pinouts/#pinouts-chipset-summary">Pinouts - Chipset Summary</a><br/>
<a href="../pinouts/#pinouts-cpu-pinouts">Pinouts - CPU Pinouts</a><br/>
<a href="../pinouts/#pinouts-gpu-pinouts-for-old-160-pin-gpu">Pinouts - GPU Pinouts (for old 160-pin GPU)</a><br/>
<a href="../pinouts/#pinouts-gpu-pinouts-for-new-208-pin-gpu">Pinouts - GPU Pinouts (for new 208-pin GPU)</a><br/>
<a href="../pinouts/#pinouts-spu-pinouts">Pinouts - SPU Pinouts</a><br/>
<a href="../pinouts/#pinouts-drv-pinouts">Pinouts - DRV Pinouts</a><br/>
<a href="../pinouts/#pinouts-vcd-pinouts">Pinouts - VCD Pinouts</a><br/>
<a href="../pinouts/#pinouts-hc05-pinouts">Pinouts - HC05 Pinouts</a><br/>
<a href="../pinouts/#pinouts-mem-pinouts">Pinouts - MEM Pinouts</a><br/>
<a href="../pinouts/#pinouts-clk-pinouts">Pinouts - CLK Pinouts</a><br/>
<a href="../pinouts/#pinouts-pwr-pinouts">Pinouts - PWR Pinouts</a><br/>
<a href="../pinouts/#pinouts-component-list-and-chipset-pin-outs-for-digital-joypad-scph-1080">Pinouts - Component List and Chipset Pin-Outs for Digital Joypad, SCPH-1080</a><br/>
<a href="../pinouts/#pinouts-component-list-and-chipset-pin-outs-for-analog-joypad-scph-1150">Pinouts - Component List and Chipset Pin-Outs for Analog Joypad, SCPH-1150</a><br/>
<a href="../pinouts/#pinouts-component-list-and-chipset-pin-outs-for-analog-joypad-scph-1200">Pinouts - Component List and Chipset Pin-Outs for Analog Joypad, SCPH-1200</a><br/>
<a href="../pinouts/#pinouts-component-list-and-chipset-pin-outs-for-analog-joypad-scph-110">Pinouts - Component List and Chipset Pin-Outs for Analog Joypad, SCPH-110</a><br/>
<a href="../pinouts/#pinouts-component-list-and-chipset-pin-outs-for-namco-lightgun-npc-103">Pinouts - Component List and Chipset Pin-Outs for Namco Lightgun, NPC-103</a><br/>
<a href="../pinouts/#pinouts-component-list-and-chipset-pin-outs-for-multitap-scph-1070">Pinouts - Component List and Chipset Pin-Outs for Multitap, SCPH-1070</a><br/>
<a href="../pinouts/#pinouts-memory-cards">Pinouts - Memory Cards</a><br/>
<a href="../pinouts/#mods-nocash-psx-xboo-upload">Mods - Nocash PSX-XBOO Upload</a><br/>
<a href="../pinouts/#mods-palntsc-color-mods">Mods - PAL/NTSC Color Mods</a><br/>
<a href="./">About &amp; Credits</a><br/></p>
<p>[extracted from no$psx v2.0 documentation]<br/>
</p></article></div></div></main></div></body></html>
<footer class="md-footer">
<nav aria-label="Footer" class="md-footer__inner md-grid">
<a class="md-footer__link md-footer__link--prev" href="../pinouts/" rel="prev">
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</div>
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Previous
</span>
Pinouts
</div>
</div>
</a>
<a class="md-footer__link md-footer__link--next" href="../cdromvideocdsvcd/" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Next
</span>
CDROM Video CDs (VCD)
</div>
</div>
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"></path></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" rel="noopener" target="_blank">
Material for MkDocs
</a>
... <a class="link--pdf-download" download href="../psx-spx.pdf" title="PDF">download PDF</a></div>
</div>
</div>
</footer>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}, "search": "../assets/javascripts/workers/search.fe42c31b.min.js", "version": null}</script>
<script src="../assets/javascripts/bundle.4ea5477f.min.js"></script>

443
arcadecabinets/index.html Normal file
View File

@ -0,0 +1,443 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8"/>
<meta content="width=device-width,initial-scale=1" name="viewport"/>
<link href="https://psx-spx.consoledev.net/arcadecabinets/" rel="canonical"/>
<link href="../assets/images/favicon.png" rel="icon"/>
<meta content="mkdocs-1.1.2, mkdocs-material-7.1.3" name="generator"/>
<title>Arcade Cabinets - PlayStation Specifications - psx-spx</title>
<link href="../assets/stylesheets/main.e35208c4.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.ef6f36e2.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font-family:"Roboto";--md-code-font-family:"Roboto Mono"}</style>
<link href="../css/extra.css" rel="stylesheet"/>
</head>
<body data-md-color-accent="indigo" data-md-color-primary="indigo" data-md-color-scheme="default" dir="ltr">
<script>function __prefix(e){return new URL("..",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
<script>var palette=__get("__palette");if(null!==palette&&"object"==typeof palette.color)for(var key in palette.color)document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a class="md-skip" href="#arcade-cabinets">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="PlayStation Specifications - psx-spx" class="md-header__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
PlayStation Specifications - psx-spx
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Arcade Cabinets
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="indigo" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Switch to dark mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2 2 2 0 0 1 2-2m10-3a5 5 0 0 1 5 5 5 5 0 0 1-5 5H7a5 5 0 0 1-5-5 5 5 0 0 1 5-5h10M7 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3h10a3 3 0 0 0 3-3 3 3 0 0 0-3-3H7z"></path></svg>
</label>
<input class="md-option" data-md-color-accent="blue" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="blue" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Switch to light mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3z"></path></svg>
</label>
</form>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" data-md-state="active" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</label>
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"></path></svg>
</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="PlayStation Specifications - psx-spx" class="md-nav__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
PlayStation Specifications - psx-spx
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
Home
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../memorymap/">
Memory Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../iomap/">
I/O Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../graphicsprocessingunitgpu/">
Graphics Processing Unit (GPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometrytransformationenginegte/">
Geometry Transformation Engine (GTE)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../macroblockdecodermdec/">
Macroblock Decoder (MDEC)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../soundprocessingunitspu/">
Sound Processing Unit (SPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../interrupts/">
Interrupts
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../dmachannels/">
DMA Channels
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../timers/">
Timers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromdrive/">
CDROM Drive
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../controllersandmemorycards/">
Controllers and Memory Cards
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pocketstation/">
Pocketstation
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../serialportsio/">
Serial Port (SIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../expansionportpio/">
Expansion Port (PIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../memorycontrol/">
Memory Control
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../unpredictablethings/">
Unpredictable Things
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cpuspecifications/">
CPU Specifications
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../kernelbios/">
Kernel (BIOS)
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<label class="md-nav__link md-nav__link--active" for="__toc">
Arcade Cabinets
<span class="md-nav__icon md-icon"></span>
</label>
<a class="md-nav__link md-nav__link--active" href="./">
Arcade Cabinets
</a>
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#psx-based-arcade-boards">
PSX-Based Arcade Boards
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#cpu">
CPU
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#gpu">
GPU
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#rom-vs-cdrom">
ROM vs CDROM
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#spu">
SPU
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#controls">
Controls
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cheatdevices/">
Cheat Devices
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../psxdevboardchipsets/">
PSX Dev-Board Chipsets
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../hardwarenumbers/">
Hardware Numbers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pinouts/">
Pinouts
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../aboutcredits/">
About &amp; Credits
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromvideocdsvcd/">
CDROM Video CDs (VCD)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdrominternalinfoonpsxcdromcontroller/">
CDROM Internal Info on PSX CDROM Controller
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#psx-based-arcade-boards">
PSX-Based Arcade Boards
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#cpu">
CPU
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#gpu">
GPU
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#rom-vs-cdrom">
ROM vs CDROM
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#spu">
SPU
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#controls">
Controls
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a class="md-content__button md-icon" href="https://github.com/psx-spx/psx-spx.github.io/edit/master/docs/arcadecabinets.md" title="Edit this page">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"></path></svg>
</a>
<h1 id="arcade-cabinets">Arcade Cabinets</h1>
<h4 id="psx-based-arcade-boards">PSX-Based Arcade Boards</h4>
<pre><code> Namco System 11, System 12 (and System 10?)
Capcom/Sony ZN-1, ZN-2
Konami GV, Konami GQ
Taito FX-1A, Taito FX-1B
Atlus PSX, PS Arcade 95, Tecmo TPS
</code></pre>
<h4 id="cpu">CPU</h4>
<p>Same as in PSX. Except, one board is said to be having the CPU clocked at
48MHz, instead of 33MHz???<br/></p>
<h4 id="gpu">GPU</h4>
<p>Same as in PSX. Except, most or all boards are said to have 2MB VRAM instead of
1MB. Unknown how the extra VRAM is accessed... maybe as Y=512..1023... (though
the PSX VRAM transfer commands are limited to 9bit Ysiz values, but maybe Y
coordinates can be 10bit wide).<br/></p>
<h4 id="rom-vs-cdrom">ROM vs CDROM</h4>
<p>Arcade games are stored on ROM (or FLASH) instead of using CDROM drives.<br/></p>
<h4 id="spu">SPU</h4>
<p>Most PSX-based arcade boards are having the PSX-SPU replaced by a different
sound chip (with each arcade manufacturer using their own custom sound chip,
often controlled by a separate sound CPU).<br/></p>
<h4 id="controls">Controls</h4>
<p>Arcade boards are typically having digital joysticks instead of joypads, with
differently named buttons (instead of /\,[],(),&gt;\&lt;), probably accessed via
custom I/O ports (instead of serial transmission)? Plus additional coin inputs
and DIP switches.<br/></p>
<p>Note: There's no documentation for those arcade boards yet, however, it might
be possible to extract that info from MAME source code.<br/></p>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<nav aria-label="Footer" class="md-footer__inner md-grid">
<a class="md-footer__link md-footer__link--prev" href="../kernelbios/" rel="prev">
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</div>
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Previous
</span>
Kernel (BIOS)
</div>
</div>
</a>
<a class="md-footer__link md-footer__link--next" href="../cheatdevices/" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Next
</span>
Cheat Devices
</div>
</div>
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"></path></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" rel="noopener" target="_blank">
Material for MkDocs
</a>
... <a class="link--pdf-download" download href="../psx-spx.pdf" title="PDF">download PDF</a></div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}, "search": "../assets/javascripts/workers/search.fe42c31b.min.js", "version": null}</script>
<script src="../assets/javascripts/bundle.4ea5477f.min.js"></script>
</body>
</html>

BIN
assets/images/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,18 @@
/*!
* Lunr languages, `Danish` language
* https://github.com/MihaiValentin/lunr-languages
*
* Copyright 2014, Mihai Valentin
* http://www.mozilla.org/MPL/
*/
/*!
* based on
* Snowball JavaScript Library v0.3
* http://code.google.com/p/urim/
* http://snowball.tartarus.org/
*
* Copyright 2010, Oleg Mazko
* http://www.mozilla.org/MPL/
*/
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.da=function(){this.pipeline.reset(),this.pipeline.add(e.da.trimmer,e.da.stopWordFilter,e.da.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.da.stemmer))},e.da.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA--",e.da.trimmer=e.trimmerSupport.generateTrimmer(e.da.wordCharacters),e.Pipeline.registerFunction(e.da.trimmer,"trimmer-da"),e.da.stemmer=function(){var r=e.stemmerSupport.Among,i=e.stemmerSupport.SnowballProgram,n=new function(){function e(){var e,r=f.cursor+3;if(d=f.limit,0<=r&&r<=f.limit){for(a=r;;){if(e=f.cursor,f.in_grouping(w,97,248)){f.cursor=e;break}if(f.cursor=e,e>=f.limit)return;f.cursor++}for(;!f.out_grouping(w,97,248);){if(f.cursor>=f.limit)return;f.cursor++}d=f.cursor,d<a&&(d=a)}}function n(){var e,r;if(f.cursor>=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(c,32),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del();break;case 2:f.in_grouping_b(p,97,229)&&f.slice_del()}}function t(){var e,r=f.limit-f.cursor;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.find_among_b(l,4)?(f.bra=f.cursor,f.limit_backward=e,f.cursor=f.limit-r,f.cursor>f.limit_backward&&(f.cursor--,f.bra=f.cursor,f.slice_del())):f.limit_backward=e)}function s(){var e,r,i,n=f.limit-f.cursor;if(f.ket=f.cursor,f.eq_s_b(2,"st")&&(f.bra=f.cursor,f.eq_s_b(2,"ig")&&f.slice_del()),f.cursor=f.limit-n,f.cursor>=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(m,5),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del(),i=f.limit-f.cursor,t(),f.cursor=f.limit-i;break;case 2:f.slice_from("løs")}}function o(){var e;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.out_grouping_b(w,97,248)?(f.bra=f.cursor,u=f.slice_to(u),f.limit_backward=e,f.eq_v_b(u)&&f.slice_del()):f.limit_backward=e)}var a,d,u,c=[new r("hed",-1,1),new r("ethed",0,1),new r("ered",-1,1),new r("e",-1,1),new r("erede",3,1),new r("ende",3,1),new r("erende",5,1),new r("ene",3,1),new r("erne",3,1),new r("ere",3,1),new r("en",-1,1),new r("heden",10,1),new r("eren",10,1),new r("er",-1,1),new r("heder",13,1),new r("erer",13,1),new r("s",-1,2),new r("heds",16,1),new r("es",16,1),new r("endes",18,1),new r("erendes",19,1),new r("enes",18,1),new r("ernes",18,1),new r("eres",18,1),new r("ens",16,1),new r("hedens",24,1),new r("erens",24,1),new r("ers",16,1),new r("ets",16,1),new r("erets",28,1),new r("et",-1,1),new r("eret",30,1)],l=[new r("gd",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1)],m=[new r("ig",-1,1),new r("lig",0,1),new r("elig",1,1),new r("els",-1,1),new r("løst",-1,2)],w=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],p=[239,254,42,3,0,0,0,0,0,0,0,0,0,0,0,0,16],f=new i;this.setCurrent=function(e){f.setCurrent(e)},this.getCurrent=function(){return f.getCurrent()},this.stem=function(){var r=f.cursor;return e(),f.limit_backward=r,f.cursor=f.limit,n(),f.cursor=f.limit,t(),f.cursor=f.limit,s(),f.cursor=f.limit,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.da.stemmer,"stemmer-da"),e.da.stopWordFilter=e.generateStopWordFilter("ad af alle alt anden at blev blive bliver da de dem den denne der deres det dette dig din disse dog du efter eller en end er et for fra ham han hans har havde have hende hendes her hos hun hvad hvis hvor i ikke ind jeg jer jo kunne man mange med meget men mig min mine mit mod ned noget nogle nu når og også om op os over på selv sig sin sine sit skal skulle som sådan thi til ud under var vi vil ville vor være været".split(" ")),e.Pipeline.registerFunction(e.da.stopWordFilter,"stopWordFilter-da")}});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.ja=function(){this.pipeline.reset(),this.pipeline.add(e.ja.trimmer,e.ja.stopWordFilter,e.ja.stemmer),r?this.tokenizer=e.ja.tokenizer:(e.tokenizer&&(e.tokenizer=e.ja.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.ja.tokenizer))};var t=new e.TinySegmenter;e.ja.tokenizer=function(i){var n,o,s,p,a,u,m,l,c,f;if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(t){return r?new e.Token(t.toLowerCase()):t.toLowerCase()});for(o=i.toString().toLowerCase().replace(/^\s+/,""),n=o.length-1;n>=0;n--)if(/\S/.test(o.charAt(n))){o=o.substring(0,n+1);break}for(a=[],s=o.length,c=0,l=0;c<=s;c++)if(u=o.charAt(c),m=c-l,u.match(/\s/)||c==s){if(m>0)for(p=t.segment(o.slice(l,c)).filter(function(e){return!!e}),f=l,n=0;n<p.length;n++)r?a.push(new e.Token(p[n],{position:[f,p[n].length],index:a.length})):a.push(p[n]),f+=p[n].length;l=c+1}return a},e.ja.stemmer=function(){return function(e){return e}}(),e.Pipeline.registerFunction(e.ja.stemmer,"stemmer-ja"),e.ja.wordCharacters="一二三四五六七八九十百千万億兆一-龠々〆ヵヶぁ-んァ-ヴーア-ン゙a-zA-Z--0-9-",e.ja.trimmer=e.trimmerSupport.generateTrimmer(e.ja.wordCharacters),e.Pipeline.registerFunction(e.ja.trimmer,"trimmer-ja"),e.ja.stopWordFilter=e.generateStopWordFilter("これ それ あれ この その あの ここ そこ あそこ こちら どこ だれ なに なん 何 私 貴方 貴方方 我々 私達 あの人 あのかた 彼女 彼 です あります おります います は が の に を で え から まで より も どの と し それで しかし".split(" ")),e.Pipeline.registerFunction(e.ja.stopWordFilter,"stopWordFilter-ja"),e.jp=e.ja,e.Pipeline.registerFunction(e.jp.stemmer,"stemmer-jp"),e.Pipeline.registerFunction(e.jp.trimmer,"trimmer-jp"),e.Pipeline.registerFunction(e.jp.stopWordFilter,"stopWordFilter-jp")}});

View File

@ -0,0 +1 @@
module.exports=require("./lunr.ja");

View File

@ -0,0 +1 @@
!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){e.multiLanguage=function(){for(var t=Array.prototype.slice.call(arguments),i=t.join("-"),r="",n=[],s=[],p=0;p<t.length;++p)"en"==t[p]?(r+="\\w",n.unshift(e.stopWordFilter),n.push(e.stemmer),s.push(e.stemmer)):(r+=e[t[p]].wordCharacters,e[t[p]].stopWordFilter&&n.unshift(e[t[p]].stopWordFilter),e[t[p]].stemmer&&(n.push(e[t[p]].stemmer),s.push(e[t[p]].stemmer)));var o=e.trimmerSupport.generateTrimmer(r);return e.Pipeline.registerFunction(o,"lunr-multi-trimmer-"+i),n.unshift(o),function(){this.pipeline.reset(),this.pipeline.add.apply(this.pipeline,n),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add.apply(this.searchPipeline,s))}}}});

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,18 @@
/*!
* Lunr languages, `Norwegian` language
* https://github.com/MihaiValentin/lunr-languages
*
* Copyright 2014, Mihai Valentin
* http://www.mozilla.org/MPL/
*/
/*!
* based on
* Snowball JavaScript Library v0.3
* http://code.google.com/p/urim/
* http://snowball.tartarus.org/
*
* Copyright 2010, Oleg Mazko
* http://www.mozilla.org/MPL/
*/
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.no=function(){this.pipeline.reset(),this.pipeline.add(e.no.trimmer,e.no.stopWordFilter,e.no.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.no.stemmer))},e.no.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA--",e.no.trimmer=e.trimmerSupport.generateTrimmer(e.no.wordCharacters),e.Pipeline.registerFunction(e.no.trimmer,"trimmer-no"),e.no.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){function e(){var e,r=w.cursor+3;if(a=w.limit,0<=r||r<=w.limit){for(s=r;;){if(e=w.cursor,w.in_grouping(d,97,248)){w.cursor=e;break}if(e>=w.limit)return;w.cursor=e+1}for(;!w.out_grouping(d,97,248);){if(w.cursor>=w.limit)return;w.cursor++}a=w.cursor,a<s&&(a=s)}}function i(){var e,r,n;if(w.cursor>=a&&(r=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,e=w.find_among_b(m,29),w.limit_backward=r,e))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:n=w.limit-w.cursor,w.in_grouping_b(c,98,122)?w.slice_del():(w.cursor=w.limit-n,w.eq_s_b(1,"k")&&w.out_grouping_b(d,97,248)&&w.slice_del());break;case 3:w.slice_from("er")}}function t(){var e,r=w.limit-w.cursor;w.cursor>=a&&(e=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,w.find_among_b(u,2)?(w.bra=w.cursor,w.limit_backward=e,w.cursor=w.limit-r,w.cursor>w.limit_backward&&(w.cursor--,w.bra=w.cursor,w.slice_del())):w.limit_backward=e)}function o(){var e,r;w.cursor>=a&&(r=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,e=w.find_among_b(l,11),e?(w.bra=w.cursor,w.limit_backward=r,1==e&&w.slice_del()):w.limit_backward=r)}var s,a,m=[new r("a",-1,1),new r("e",-1,1),new r("ede",1,1),new r("ande",1,1),new r("ende",1,1),new r("ane",1,1),new r("ene",1,1),new r("hetene",6,1),new r("erte",1,3),new r("en",-1,1),new r("heten",9,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",12,1),new r("s",-1,2),new r("as",14,1),new r("es",14,1),new r("edes",16,1),new r("endes",16,1),new r("enes",16,1),new r("hetenes",19,1),new r("ens",14,1),new r("hetens",21,1),new r("ers",14,1),new r("ets",14,1),new r("et",-1,1),new r("het",25,1),new r("ert",-1,3),new r("ast",-1,1)],u=[new r("dt",-1,-1),new r("vt",-1,-1)],l=[new r("leg",-1,1),new r("eleg",0,1),new r("ig",-1,1),new r("eig",2,1),new r("lig",2,1),new r("elig",4,1),new r("els",-1,1),new r("lov",-1,1),new r("elov",7,1),new r("slov",7,1),new r("hetslov",9,1)],d=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],c=[119,125,149,1],w=new n;this.setCurrent=function(e){w.setCurrent(e)},this.getCurrent=function(){return w.getCurrent()},this.stem=function(){var r=w.cursor;return e(),w.limit_backward=r,w.cursor=w.limit,i(),w.cursor=w.limit,t(),w.cursor=w.limit,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.no.stemmer,"stemmer-no"),e.no.stopWordFilter=e.generateStopWordFilter("alle at av bare begge ble blei bli blir blitt både båe da de deg dei deim deira deires dem den denne der dere deres det dette di din disse ditt du dykk dykkar då eg ein eit eitt eller elles en enn er et ett etter for fordi fra før ha hadde han hans har hennar henne hennes her hjå ho hoe honom hoss hossen hun hva hvem hver hvilke hvilken hvis hvor hvordan hvorfor i ikke ikkje ikkje ingen ingi inkje inn inni ja jeg kan kom korleis korso kun kunne kva kvar kvarhelst kven kvi kvifor man mange me med medan meg meget mellom men mi min mine mitt mot mykje ned no noe noen noka noko nokon nokor nokre nå når og også om opp oss over på samme seg selv si si sia sidan siden sin sine sitt sjøl skal skulle slik so som som somme somt så sånn til um upp ut uten var vart varte ved vere verte vi vil ville vore vors vort vår være være vært å".split(" ")),e.Pipeline.registerFunction(e.no.stopWordFilter,"stopWordFilter-no")}});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
!function(r,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(r.lunr)}(this,function(){return function(r){r.stemmerSupport={Among:function(r,t,i,s){if(this.toCharArray=function(r){for(var t=r.length,i=new Array(t),s=0;s<t;s++)i[s]=r.charCodeAt(s);return i},!r&&""!=r||!t&&0!=t||!i)throw"Bad Among initialisation: s:"+r+", substring_i: "+t+", result: "+i;this.s_size=r.length,this.s=this.toCharArray(r),this.substring_i=t,this.result=i,this.method=s},SnowballProgram:function(){var r;return{bra:0,ket:0,limit:0,cursor:0,limit_backward:0,setCurrent:function(t){r=t,this.cursor=0,this.limit=t.length,this.limit_backward=0,this.bra=this.cursor,this.ket=this.limit},getCurrent:function(){var t=r;return r=null,t},in_grouping:function(t,i,s){if(this.cursor<this.limit){var e=r.charCodeAt(this.cursor);if(e<=s&&e>=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor++,!0}return!1},in_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e<=s&&e>=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor--,!0}return!1},out_grouping:function(t,i,s){if(this.cursor<this.limit){var e=r.charCodeAt(this.cursor);if(e>s||e<i)return this.cursor++,!0;if(e-=i,!(t[e>>3]&1<<(7&e)))return this.cursor++,!0}return!1},out_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e>s||e<i)return this.cursor--,!0;if(e-=i,!(t[e>>3]&1<<(7&e)))return this.cursor--,!0}return!1},eq_s:function(t,i){if(this.limit-this.cursor<t)return!1;for(var s=0;s<t;s++)if(r.charCodeAt(this.cursor+s)!=i.charCodeAt(s))return!1;return this.cursor+=t,!0},eq_s_b:function(t,i){if(this.cursor-this.limit_backward<t)return!1;for(var s=0;s<t;s++)if(r.charCodeAt(this.cursor-t+s)!=i.charCodeAt(s))return!1;return this.cursor-=t,!0},find_among:function(t,i){for(var s=0,e=i,n=this.cursor,u=this.limit,o=0,h=0,c=!1;;){for(var a=s+(e-s>>1),f=0,l=o<h?o:h,_=t[a],m=l;m<_.s_size;m++){if(n+l==u){f=-1;break}if(f=r.charCodeAt(n+l)-_.s[m])break;l++}if(f<0?(e=a,h=l):(s=a,o=l),e-s<=1){if(s>0||e==s||c)break;c=!0}}for(;;){var _=t[s];if(o>=_.s_size){if(this.cursor=n+_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n+_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},find_among_b:function(t,i){for(var s=0,e=i,n=this.cursor,u=this.limit_backward,o=0,h=0,c=!1;;){for(var a=s+(e-s>>1),f=0,l=o<h?o:h,_=t[a],m=_.s_size-1-l;m>=0;m--){if(n-l==u){f=-1;break}if(f=r.charCodeAt(n-1-l)-_.s[m])break;l++}if(f<0?(e=a,h=l):(s=a,o=l),e-s<=1){if(s>0||e==s||c)break;c=!0}}for(;;){var _=t[s];if(o>=_.s_size){if(this.cursor=n-_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n-_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},replace_s:function(t,i,s){var e=s.length-(i-t),n=r.substring(0,t),u=r.substring(i);return r=n+s+u,this.limit+=e,this.cursor>=i?this.cursor+=e:this.cursor>t&&(this.cursor=t),e},slice_check:function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>r.length)throw"faulty slice operation"},slice_from:function(r){this.slice_check(),this.replace_s(this.bra,this.ket,r)},slice_del:function(){this.slice_from("")},insert:function(r,t,i){var s=this.replace_s(r,t,i);r<=this.bra&&(this.bra+=s),r<=this.ket&&(this.ket+=s)},slice_to:function(){return this.slice_check(),r.substring(this.bra,this.ket)},eq_v_b:function(r){return this.eq_s_b(r.length,r)}}}},r.trimmerSupport={generateTrimmer:function(r){var t=new RegExp("^[^"+r+"]+"),i=new RegExp("[^"+r+"]+$");return function(r){return"function"==typeof r.update?r.update(function(r){return r.replace(t,"").replace(i,"")}):r.replace(t,"").replace(i,"")}}}}});

View File

@ -0,0 +1,18 @@
/*!
* Lunr languages, `Swedish` language
* https://github.com/MihaiValentin/lunr-languages
*
* Copyright 2014, Mihai Valentin
* http://www.mozilla.org/MPL/
*/
/*!
* based on
* Snowball JavaScript Library v0.3
* http://code.google.com/p/urim/
* http://snowball.tartarus.org/
*
* Copyright 2010, Oleg Mazko
* http://www.mozilla.org/MPL/
*/
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.sv=function(){this.pipeline.reset(),this.pipeline.add(e.sv.trimmer,e.sv.stopWordFilter,e.sv.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.sv.stemmer))},e.sv.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA--",e.sv.trimmer=e.trimmerSupport.generateTrimmer(e.sv.wordCharacters),e.Pipeline.registerFunction(e.sv.trimmer,"trimmer-sv"),e.sv.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,t=new function(){function e(){var e,r=w.cursor+3;if(o=w.limit,0<=r||r<=w.limit){for(a=r;;){if(e=w.cursor,w.in_grouping(l,97,246)){w.cursor=e;break}if(w.cursor=e,w.cursor>=w.limit)return;w.cursor++}for(;!w.out_grouping(l,97,246);){if(w.cursor>=w.limit)return;w.cursor++}o=w.cursor,o<a&&(o=a)}}function t(){var e,r=w.limit_backward;if(w.cursor>=o&&(w.limit_backward=o,w.cursor=w.limit,w.ket=w.cursor,e=w.find_among_b(u,37),w.limit_backward=r,e))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:w.in_grouping_b(d,98,121)&&w.slice_del()}}function i(){var e=w.limit_backward;w.cursor>=o&&(w.limit_backward=o,w.cursor=w.limit,w.find_among_b(c,7)&&(w.cursor=w.limit,w.ket=w.cursor,w.cursor>w.limit_backward&&(w.bra=--w.cursor,w.slice_del())),w.limit_backward=e)}function s(){var e,r;if(w.cursor>=o){if(r=w.limit_backward,w.limit_backward=o,w.cursor=w.limit,w.ket=w.cursor,e=w.find_among_b(m,5))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:w.slice_from("lös");break;case 3:w.slice_from("full")}w.limit_backward=r}}var a,o,u=[new r("a",-1,1),new r("arna",0,1),new r("erna",0,1),new r("heterna",2,1),new r("orna",0,1),new r("ad",-1,1),new r("e",-1,1),new r("ade",6,1),new r("ande",6,1),new r("arne",6,1),new r("are",6,1),new r("aste",6,1),new r("en",-1,1),new r("anden",12,1),new r("aren",12,1),new r("heten",12,1),new r("ern",-1,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",18,1),new r("or",-1,1),new r("s",-1,2),new r("as",21,1),new r("arnas",22,1),new r("ernas",22,1),new r("ornas",22,1),new r("es",21,1),new r("ades",26,1),new r("andes",26,1),new r("ens",21,1),new r("arens",29,1),new r("hetens",29,1),new r("erns",21,1),new r("at",-1,1),new r("andet",-1,1),new r("het",-1,1),new r("ast",-1,1)],c=[new r("dd",-1,-1),new r("gd",-1,-1),new r("nn",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1),new r("tt",-1,-1)],m=[new r("ig",-1,1),new r("lig",0,1),new r("els",-1,1),new r("fullt",-1,3),new r("löst",-1,2)],l=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,24,0,32],d=[119,127,149],w=new n;this.setCurrent=function(e){w.setCurrent(e)},this.getCurrent=function(){return w.getCurrent()},this.stem=function(){var r=w.cursor;return e(),w.limit_backward=r,w.cursor=w.limit,t(),w.cursor=w.limit,i(),w.cursor=w.limit,s(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return t.setCurrent(e),t.stem(),t.getCurrent()}):(t.setCurrent(e),t.stem(),t.getCurrent())}}(),e.Pipeline.registerFunction(e.sv.stemmer,"stemmer-sv"),e.sv.stopWordFilter=e.generateStopWordFilter("alla allt att av blev bli blir blivit de dem den denna deras dess dessa det detta dig din dina ditt du där då efter ej eller en er era ert ett från för ha hade han hans har henne hennes hon honom hur här i icke ingen inom inte jag ju kan kunde man med mellan men mig min mina mitt mot mycket ni nu när någon något några och om oss på samma sedan sig sin sina sitta själv skulle som så sådan sådana sådant till under upp ut utan vad var vara varför varit varje vars vart vem vi vid vilka vilkas vilken vilket vår våra vårt än är åt över".split(" ")),e.Pipeline.registerFunction(e.sv.stopWordFilter,"stopWordFilter-sv")}});

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.vi=function(){this.pipeline.reset(),this.pipeline.add(e.vi.stopWordFilter,e.vi.trimmer)},e.vi.wordCharacters="[A-Za-ẓ̀͐́͑̉̃̓ÂâÊêÔôĂ-ăĐ-đƠ-ơƯ-ư]",e.vi.trimmer=e.trimmerSupport.generateTrimmer(e.vi.wordCharacters),e.Pipeline.registerFunction(e.vi.trimmer,"trimmer-vi"),e.vi.stopWordFilter=e.generateStopWordFilter("là cái nhưng mà".split(" "))}});

View File

@ -0,0 +1,206 @@
/**
* export the module via AMD, CommonJS or as a browser global
* Export code from https://github.com/umdjs/umd/blob/master/returnExports.js
*/
;(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(factory)
} else if (typeof exports === 'object') {
/**
* Node. Does not work with strict CommonJS, but
* only CommonJS-like environments that support module.exports,
* like Node.
*/
module.exports = factory()
} else {
// Browser globals (root is window)
factory()(root.lunr);
}
}(this, function () {
/**
* Just return a value to define the module export.
* This example returns an object, but the module
* can return a function as the exported value.
*/
return function(lunr) {
// TinySegmenter 0.1 -- Super compact Japanese tokenizer in Javascript
// (c) 2008 Taku Kudo <taku@chasen.org>
// TinySegmenter is freely distributable under the terms of a new BSD licence.
// For details, see http://chasen.org/~taku/software/TinySegmenter/LICENCE.txt
function TinySegmenter() {
var patterns = {
"[一二三四五六七八九十百千万億兆]":"M",
"[一-龠々〆ヵヶ]":"H",
"[ぁ-ん]":"I",
"[ァ-ヴーア-ン゙ー]":"K",
"[a-zA-Z--]":"A",
"[0-9-]":"N"
}
this.chartype_ = [];
for (var i in patterns) {
var regexp = new RegExp(i);
this.chartype_.push([regexp, patterns[i]]);
}
this.BIAS__ = -332
this.BC1__ = {"HH":6,"II":2461,"KH":406,"OH":-1378};
this.BC2__ = {"AA":-3267,"AI":2744,"AN":-878,"HH":-4070,"HM":-1711,"HN":4012,"HO":3761,"IA":1327,"IH":-1184,"II":-1332,"IK":1721,"IO":5492,"KI":3831,"KK":-8741,"MH":-3132,"MK":3334,"OO":-2920};
this.BC3__ = {"HH":996,"HI":626,"HK":-721,"HN":-1307,"HO":-836,"IH":-301,"KK":2762,"MK":1079,"MM":4034,"OA":-1652,"OH":266};
this.BP1__ = {"BB":295,"OB":304,"OO":-125,"UB":352};
this.BP2__ = {"BO":60,"OO":-1762};
this.BQ1__ = {"BHH":1150,"BHM":1521,"BII":-1158,"BIM":886,"BMH":1208,"BNH":449,"BOH":-91,"BOO":-2597,"OHI":451,"OIH":-296,"OKA":1851,"OKH":-1020,"OKK":904,"OOO":2965};
this.BQ2__ = {"BHH":118,"BHI":-1159,"BHM":466,"BIH":-919,"BKK":-1720,"BKO":864,"OHH":-1139,"OHM":-181,"OIH":153,"UHI":-1146};
this.BQ3__ = {"BHH":-792,"BHI":2664,"BII":-299,"BKI":419,"BMH":937,"BMM":8335,"BNN":998,"BOH":775,"OHH":2174,"OHM":439,"OII":280,"OKH":1798,"OKI":-793,"OKO":-2242,"OMH":-2402,"OOO":11699};
this.BQ4__ = {"BHH":-3895,"BIH":3761,"BII":-4654,"BIK":1348,"BKK":-1806,"BMI":-3385,"BOO":-12396,"OAH":926,"OHH":266,"OHK":-2036,"ONN":-973};
this.BW1__ = {",と":660,",同":727,"B1あ":1404,"B1同":542,"、と":660,"、同":727,"」と":1682,"あっ":1505,"いう":1743,"いっ":-2055,"いる":672,"うし":-4817,"うん":665,"から":3472,"がら":600,"こう":-790,"こと":2083,"こん":-1262,"さら":-4143,"さん":4573,"した":2641,"して":1104,"すで":-3399,"そこ":1977,"それ":-871,"たち":1122,"ため":601,"った":3463,"つい":-802,"てい":805,"てき":1249,"でき":1127,"です":3445,"では":844,"とい":-4915,"とみ":1922,"どこ":3887,"ない":5713,"なっ":3015,"など":7379,"なん":-1113,"にし":2468,"には":1498,"にも":1671,"に対":-912,"の一":-501,"の中":741,"ませ":2448,"まで":1711,"まま":2600,"まる":-2155,"やむ":-1947,"よっ":-2565,"れた":2369,"れで":-913,"をし":1860,"を見":731,"亡く":-1886,"京都":2558,"取り":-2784,"大き":-2604,"大阪":1497,"平方":-2314,"引き":-1336,"日本":-195,"本当":-2423,"毎日":-2113,"目指":-724,"B1あ":1404,"B1同":542,"」と":1682};
this.BW2__ = {"..":-11822,"11":-669,"――":-5730,"":-13175,"いう":-1609,"うか":2490,"かし":-1350,"かも":-602,"から":-7194,"かれ":4612,"がい":853,"がら":-3198,"きた":1941,"くな":-1597,"こと":-8392,"この":-4193,"させ":4533,"され":13168,"さん":-3977,"しい":-1819,"しか":-545,"した":5078,"して":972,"しな":939,"その":-3744,"たい":-1253,"たた":-662,"ただ":-3857,"たち":-786,"たと":1224,"たは":-939,"った":4589,"って":1647,"っと":-2094,"てい":6144,"てき":3640,"てく":2551,"ては":-3110,"ても":-3065,"でい":2666,"でき":-1528,"でし":-3828,"です":-4761,"でも":-4203,"とい":1890,"とこ":-1746,"とと":-2279,"との":720,"とみ":5168,"とも":-3941,"ない":-2488,"なが":-1313,"など":-6509,"なの":2614,"なん":3099,"にお":-1615,"にし":2748,"にな":2454,"によ":-7236,"に対":-14943,"に従":-4688,"に関":-11388,"のか":2093,"ので":-7059,"のに":-6041,"のの":-6125,"はい":1073,"はが":-1033,"はず":-2532,"ばれ":1813,"まし":-1316,"まで":-6621,"まれ":5409,"めて":-3153,"もい":2230,"もの":-10713,"らか":-944,"らし":-1611,"らに":-1897,"りし":651,"りま":1620,"れた":4270,"れて":849,"れば":4114,"ろう":6067,"われ":7901,"を通":-11877,"んだ":728,"んな":-4115,"一人":602,"一方":-1375,"一日":970,"一部":-1051,"上が":-4479,"会社":-1116,"出て":2163,"分の":-7758,"同党":970,"同日":-913,"大阪":-2471,"委員":-1250,"少な":-1050,"年度":-8669,"年間":-1626,"府県":-2363,"手権":-1982,"新聞":-4066,"日新":-722,"日本":-7068,"日米":3372,"曜日":-601,"朝鮮":-2355,"本人":-2697,"東京":-1543,"然と":-1384,"社会":-1276,"立て":-990,"第に":-1612,"米国":-4268,"":-669};
this.BW3__ = {"あた":-2194,"あり":719,"ある":3846,"い.":-1185,"い。":-1185,"いい":5308,"いえ":2079,"いく":3029,"いた":2056,"いっ":1883,"いる":5600,"いわ":1527,"うち":1117,"うと":4798,"えと":1454,"か.":2857,"か。":2857,"かけ":-743,"かっ":-4098,"かに":-669,"から":6520,"かり":-2670,"が,":1816,"が、":1816,"がき":-4855,"がけ":-1127,"がっ":-913,"がら":-4977,"がり":-2064,"きた":1645,"けど":1374,"こと":7397,"この":1542,"ころ":-2757,"さい":-714,"さを":976,"し,":1557,"し、":1557,"しい":-3714,"した":3562,"して":1449,"しな":2608,"しま":1200,"す.":-1310,"す。":-1310,"する":6521,"ず,":3426,"ず、":3426,"ずに":841,"そう":428,"た.":8875,"た。":8875,"たい":-594,"たの":812,"たり":-1183,"たる":-853,"だ.":4098,"だ。":4098,"だっ":1004,"った":-4748,"って":300,"てい":6240,"てお":855,"ても":302,"です":1437,"でに":-1482,"では":2295,"とう":-1387,"とし":2266,"との":541,"とも":-3543,"どう":4664,"ない":1796,"なく":-903,"など":2135,"に,":-1021,"に、":-1021,"にし":1771,"にな":1906,"には":2644,"の,":-724,"の、":-724,"の子":-1000,"は,":1337,"は、":1337,"べき":2181,"まし":1113,"ます":6943,"まっ":-1549,"まで":6154,"まれ":-793,"らし":1479,"られ":6820,"るる":3818,"れ,":854,"れ、":854,"れた":1850,"れて":1375,"れば":-3246,"れる":1091,"われ":-605,"んだ":606,"んで":798,"カ月":990,"会議":860,"入り":1232,"大会":2217,"始め":1681,"市":965,"新聞":-5055,"日,":974,"日、":974,"社会":2024,"カ月":990};
this.TC1__ = {"AAA":1093,"HHH":1029,"HHM":580,"HII":998,"HOH":-390,"HOM":-331,"IHI":1169,"IOH":-142,"IOI":-1015,"IOM":467,"MMH":187,"OOI":-1832};
this.TC2__ = {"HHO":2088,"HII":-1023,"HMM":-1154,"IHI":-1965,"KKH":703,"OII":-2649};
this.TC3__ = {"AAA":-294,"HHH":346,"HHI":-341,"HII":-1088,"HIK":731,"HOH":-1486,"IHH":128,"IHI":-3041,"IHO":-1935,"IIH":-825,"IIM":-1035,"IOI":-542,"KHH":-1216,"KKA":491,"KKH":-1217,"KOK":-1009,"MHH":-2694,"MHM":-457,"MHO":123,"MMH":-471,"NNH":-1689,"NNO":662,"OHO":-3393};
this.TC4__ = {"HHH":-203,"HHI":1344,"HHK":365,"HHM":-122,"HHN":182,"HHO":669,"HIH":804,"HII":679,"HOH":446,"IHH":695,"IHO":-2324,"IIH":321,"III":1497,"IIO":656,"IOO":54,"KAK":4845,"KKA":3386,"KKK":3065,"MHH":-405,"MHI":201,"MMH":-241,"MMM":661,"MOM":841};
this.TQ1__ = {"BHHH":-227,"BHHI":316,"BHIH":-132,"BIHH":60,"BIII":1595,"BNHH":-744,"BOHH":225,"BOOO":-908,"OAKK":482,"OHHH":281,"OHIH":249,"OIHI":200,"OIIH":-68};
this.TQ2__ = {"BIHH":-1401,"BIII":-1033,"BKAK":-543,"BOOO":-5591};
this.TQ3__ = {"BHHH":478,"BHHM":-1073,"BHIH":222,"BHII":-504,"BIIH":-116,"BIII":-105,"BMHI":-863,"BMHM":-464,"BOMH":620,"OHHH":346,"OHHI":1729,"OHII":997,"OHMH":481,"OIHH":623,"OIIH":1344,"OKAK":2792,"OKHH":587,"OKKA":679,"OOHH":110,"OOII":-685};
this.TQ4__ = {"BHHH":-721,"BHHM":-3604,"BHII":-966,"BIIH":-607,"BIII":-2181,"OAAA":-2763,"OAKK":180,"OHHH":-294,"OHHI":2446,"OHHO":480,"OHIH":-1573,"OIHH":1935,"OIHI":-493,"OIIH":626,"OIII":-4007,"OKAK":-8156};
this.TW1__ = {"につい":-4681,"東京都":2026};
this.TW2__ = {"ある程":-2049,"いった":-1256,"ころが":-2434,"しょう":3873,"その後":-4430,"だって":-1049,"ていた":1833,"として":-4657,"ともに":-4517,"もので":1882,"一気に":-792,"初めて":-1512,"同時に":-8097,"大きな":-1255,"対して":-2721,"社会党":-3216};
this.TW3__ = {"いただ":-1734,"してい":1314,"として":-4314,"につい":-5483,"にとっ":-5989,"に当た":-6247,"ので,":-727,"ので、":-727,"のもの":-600,"れから":-3752,"十二月":-2287};
this.TW4__ = {"いう.":8576,"いう。":8576,"からな":-2348,"してい":2958,"たが,":1516,"たが、":1516,"ている":1538,"という":1349,"ました":5543,"ません":1097,"ようと":-4258,"よると":5865};
this.UC1__ = {"A":484,"K":93,"M":645,"O":-505};
this.UC2__ = {"A":819,"H":1059,"I":409,"M":3987,"N":5775,"O":646};
this.UC3__ = {"A":-1370,"I":2311};
this.UC4__ = {"A":-2643,"H":1809,"I":-1032,"K":-3450,"M":3565,"N":3876,"O":6646};
this.UC5__ = {"H":313,"I":-1238,"K":-799,"M":539,"O":-831};
this.UC6__ = {"H":-506,"I":-253,"K":87,"M":247,"O":-387};
this.UP1__ = {"O":-214};
this.UP2__ = {"B":69,"O":935};
this.UP3__ = {"B":189};
this.UQ1__ = {"BH":21,"BI":-12,"BK":-99,"BN":142,"BO":-56,"OH":-95,"OI":477,"OK":410,"OO":-2422};
this.UQ2__ = {"BH":216,"BI":113,"OK":1759};
this.UQ3__ = {"BA":-479,"BH":42,"BI":1913,"BK":-7198,"BM":3160,"BN":6427,"BO":14761,"OI":-827,"ON":-3212};
this.UW1__ = {",":156,"、":156,"「":-463,"あ":-941,"う":-127,"が":-553,"き":121,"こ":505,"で":-201,"と":-547,"ど":-123,"に":-789,"の":-185,"は":-847,"も":-466,"や":-470,"よ":182,"ら":-292,"り":208,"れ":169,"を":-446,"ん":-137,"・":-135,"主":-402,"京":-268,"区":-912,"午":871,"国":-460,"大":561,"委":729,"市":-411,"日":-141,"理":361,"生":-408,"県":-386,"都":-718,"「":-463,"・":-135};
this.UW2__ = {",":-829,"、":-829,"":892,"「":-645,"」":3145,"あ":-538,"い":505,"う":134,"お":-502,"か":1454,"が":-856,"く":-412,"こ":1141,"さ":878,"ざ":540,"し":1529,"す":-675,"せ":300,"そ":-1011,"た":188,"だ":1837,"つ":-949,"て":-291,"で":-268,"と":-981,"ど":1273,"な":1063,"に":-1764,"の":130,"は":-409,"ひ":-1273,"べ":1261,"ま":600,"も":-1263,"や":-402,"よ":1639,"り":-579,"る":-694,"れ":571,"を":-2516,"ん":2095,"ア":-587,"カ":306,"キ":568,"ッ":831,"三":-758,"不":-2150,"世":-302,"中":-968,"主":-861,"事":492,"人":-123,"会":978,"保":362,"入":548,"初":-3025,"副":-1566,"北":-3414,"区":-422,"大":-1769,"天":-865,"太":-483,"子":-1519,"学":760,"実":1023,"小":-2009,"市":-813,"年":-1060,"強":1067,"手":-1519,"揺":-1033,"政":1522,"文":-1355,"新":-1682,"日":-1815,"明":-1462,"最":-630,"朝":-1843,"本":-1650,"東":-931,"果":-665,"次":-2378,"民":-180,"気":-1740,"理":752,"発":529,"目":-1584,"相":-242,"県":-1165,"立":-763,"第":810,"米":509,"自":-1353,"行":838,"西":-744,"見":-3874,"調":1010,"議":1198,"込":3041,"開":1758,"間":-1257,"「":-645,"」":3145,"ッ":831,"ア":-587,"カ":306,"キ":568};
this.UW3__ = {",":4889,"1":-800,"":-1723,"、":4889,"々":-2311,"":5827,"」":2670,"〓":-3573,"あ":-2696,"い":1006,"う":2342,"え":1983,"お":-4864,"か":-1163,"が":3271,"く":1004,"け":388,"げ":401,"こ":-3552,"ご":-3116,"さ":-1058,"し":-395,"す":584,"せ":3685,"そ":-5228,"た":842,"ち":-521,"っ":-1444,"つ":-1081,"て":6167,"で":2318,"と":1691,"ど":-899,"な":-2788,"に":2745,"の":4056,"は":4555,"ひ":-2171,"ふ":-1798,"へ":1199,"ほ":-5516,"ま":-4384,"み":-120,"め":1205,"も":2323,"や":-788,"よ":-202,"ら":727,"り":649,"る":5905,"れ":2773,"わ":-1207,"を":6620,"ん":-518,"ア":551,"グ":1319,"ス":874,"ッ":-1350,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278,"・":-3794,"一":-1619,"下":-1759,"世":-2087,"両":3815,"中":653,"主":-758,"予":-1193,"二":974,"人":2742,"今":792,"他":1889,"以":-1368,"低":811,"何":4265,"作":-361,"保":-2439,"元":4858,"党":3593,"全":1574,"公":-3030,"六":755,"共":-1880,"円":5807,"再":3095,"分":457,"初":2475,"別":1129,"前":2286,"副":4437,"力":365,"動":-949,"務":-1872,"化":1327,"北":-1038,"区":4646,"千":-2309,"午":-783,"協":-1006,"口":483,"右":1233,"各":3588,"合":-241,"同":3906,"和":-837,"員":4513,"国":642,"型":1389,"場":1219,"外":-241,"妻":2016,"学":-1356,"安":-423,"実":-1008,"家":1078,"小":-513,"少":-3102,"州":1155,"市":3197,"平":-1804,"年":2416,"広":-1030,"府":1605,"度":1452,"建":-2352,"当":-3885,"得":1905,"思":-1291,"性":1822,"戸":-488,"指":-3973,"政":-2013,"教":-1479,"数":3222,"文":-1489,"新":1764,"日":2099,"旧":5792,"昨":-661,"時":-1248,"曜":-951,"最":-937,"月":4125,"期":360,"李":3094,"村":364,"東":-805,"核":5156,"森":2438,"業":484,"氏":2613,"民":-1694,"決":-1073,"法":1868,"海":-495,"無":979,"物":461,"特":-3850,"生":-273,"用":914,"町":1215,"的":7313,"直":-1835,"省":792,"県":6293,"知":-1528,"私":4231,"税":401,"立":-960,"第":1201,"米":7767,"系":3066,"約":3663,"級":1384,"統":-4229,"総":1163,"線":1255,"者":6457,"能":725,"自":-2869,"英":785,"見":1044,"調":-562,"財":-733,"費":1777,"車":1835,"軍":1375,"込":-1504,"通":-1136,"選":-681,"郎":1026,"郡":4404,"部":1200,"金":2163,"長":421,"開":-1432,"間":1302,"関":-1282,"雨":2009,"電":-1045,"非":2066,"駅":1620,"":-800,"」":2670,"・":-3794,"ッ":-1350,"ア":551,"グ":1319,"ス":874,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278};
this.UW4__ = {",":3930,".":3508,"―":-4841,"、":3930,"。":3508,"":4999,"「":1895,"」":3798,"〓":-5156,"あ":4752,"い":-3435,"う":-640,"え":-2514,"お":2405,"か":530,"が":6006,"き":-4482,"ぎ":-3821,"く":-3788,"け":-4376,"げ":-4734,"こ":2255,"ご":1979,"さ":2864,"し":-843,"じ":-2506,"す":-731,"ず":1251,"せ":181,"そ":4091,"た":5034,"だ":5408,"ち":-3654,"っ":-5882,"つ":-1659,"て":3994,"で":7410,"と":4547,"な":5433,"に":6499,"ぬ":1853,"ね":1413,"の":7396,"は":8578,"ば":1940,"ひ":4249,"び":-4134,"ふ":1345,"へ":6665,"べ":-744,"ほ":1464,"ま":1051,"み":-2082,"む":-882,"め":-5046,"も":4169,"ゃ":-2666,"や":2795,"ょ":-1544,"よ":3351,"ら":-2922,"り":-9726,"る":-14896,"れ":-2613,"ろ":-4570,"わ":-1783,"を":13150,"ん":-2352,"カ":2145,"コ":1789,"セ":1287,"ッ":-724,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637,"・":-4371,"ー":-11870,"一":-2069,"中":2210,"予":782,"事":-190,"井":-1768,"人":1036,"以":544,"会":950,"体":-1286,"作":530,"側":4292,"先":601,"党":-2006,"共":-1212,"内":584,"円":788,"初":1347,"前":1623,"副":3879,"力":-302,"動":-740,"務":-2715,"化":776,"区":4517,"協":1013,"参":1555,"合":-1834,"和":-681,"員":-910,"器":-851,"回":1500,"国":-619,"園":-1200,"地":866,"場":-1410,"塁":-2094,"士":-1413,"多":1067,"大":571,"子":-4802,"学":-1397,"定":-1057,"寺":-809,"小":1910,"屋":-1328,"山":-1500,"島":-2056,"川":-2667,"市":2771,"年":374,"庁":-4556,"後":456,"性":553,"感":916,"所":-1566,"支":856,"改":787,"政":2182,"教":704,"文":522,"方":-856,"日":1798,"時":1829,"最":845,"月":-9066,"木":-485,"来":-442,"校":-360,"業":-1043,"氏":5388,"民":-2716,"気":-910,"沢":-939,"済":-543,"物":-735,"率":672,"球":-1267,"生":-1286,"産":-1101,"田":-2900,"町":1826,"的":2586,"目":922,"省":-3485,"県":2997,"空":-867,"立":-2112,"第":788,"米":2937,"系":786,"約":2171,"経":1146,"統":-1169,"総":940,"線":-994,"署":749,"者":2145,"能":-730,"般":-852,"行":-792,"規":792,"警":-1184,"議":-244,"谷":-1000,"賞":730,"車":-1481,"軍":1158,"輪":-1433,"込":-3370,"近":929,"道":-1291,"選":2596,"郎":-4866,"都":1192,"野":-1100,"銀":-2213,"長":357,"間":-2344,"院":-2297,"際":-2604,"電":-878,"領":-1659,"題":-792,"館":-1984,"首":1749,"高":2120,"「":1895,"」":3798,"・":-4371,"ッ":-724,"ー":-11870,"カ":2145,"コ":1789,"セ":1287,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637};
this.UW5__ = {",":465,".":-299,"1":-514,"E2":-32768,"]":-2762,"、":465,"。":-299,"「":363,"あ":1655,"い":331,"う":-503,"え":1199,"お":527,"か":647,"が":-421,"き":1624,"ぎ":1971,"く":312,"げ":-983,"さ":-1537,"し":-1371,"す":-852,"だ":-1186,"ち":1093,"っ":52,"つ":921,"て":-18,"で":-850,"と":-127,"ど":1682,"な":-787,"に":-1224,"の":-635,"は":-578,"べ":1001,"み":502,"め":865,"ゃ":3350,"ょ":854,"り":-208,"る":429,"れ":504,"わ":419,"を":-1264,"ん":327,"イ":241,"ル":451,"ン":-343,"中":-871,"京":722,"会":-1153,"党":-654,"務":3519,"区":-901,"告":848,"員":2104,"大":-1296,"学":-548,"定":1785,"嵐":-1304,"市":-2991,"席":921,"年":1763,"思":872,"所":-814,"挙":1618,"新":-1682,"日":218,"月":-4353,"査":932,"格":1356,"機":-1508,"氏":-1347,"田":240,"町":-3912,"的":-3149,"相":1319,"省":-1052,"県":-4003,"研":-997,"社":-278,"空":-813,"統":1955,"者":-2233,"表":663,"語":-1073,"議":1219,"選":-1018,"郎":-368,"長":786,"間":1191,"題":2368,"館":-689,"":-514,"":-32768,"「":363,"イ":241,"ル":451,"ン":-343};
this.UW6__ = {",":227,".":808,"1":-270,"E1":306,"、":227,"。":808,"あ":-307,"う":189,"か":241,"が":-73,"く":-121,"こ":-200,"じ":1782,"す":383,"た":-428,"っ":573,"て":-1014,"で":101,"と":-105,"な":-253,"に":-149,"の":-417,"は":-236,"も":-206,"り":187,"る":-135,"を":195,"ル":-673,"ン":-496,"一":-277,"中":201,"件":-800,"会":624,"前":302,"区":1792,"員":-1212,"委":798,"学":-960,"市":887,"広":-695,"後":535,"業":-697,"相":753,"社":-507,"福":974,"空":-822,"者":1811,"連":463,"郎":1082,"":-270,"":306,"ル":-673,"ン":-496};
return this;
}
TinySegmenter.prototype.ctype_ = function(str) {
for (var i in this.chartype_) {
if (str.match(this.chartype_[i][0])) {
return this.chartype_[i][1];
}
}
return "O";
}
TinySegmenter.prototype.ts_ = function(v) {
if (v) { return v; }
return 0;
}
TinySegmenter.prototype.segment = function(input) {
if (input == null || input == undefined || input == "") {
return [];
}
var result = [];
var seg = ["B3","B2","B1"];
var ctype = ["O","O","O"];
var o = input.split("");
for (i = 0; i < o.length; ++i) {
seg.push(o[i]);
ctype.push(this.ctype_(o[i]))
}
seg.push("E1");
seg.push("E2");
seg.push("E3");
ctype.push("O");
ctype.push("O");
ctype.push("O");
var word = seg[3];
var p1 = "U";
var p2 = "U";
var p3 = "U";
for (var i = 4; i < seg.length - 3; ++i) {
var score = this.BIAS__;
var w1 = seg[i-3];
var w2 = seg[i-2];
var w3 = seg[i-1];
var w4 = seg[i];
var w5 = seg[i+1];
var w6 = seg[i+2];
var c1 = ctype[i-3];
var c2 = ctype[i-2];
var c3 = ctype[i-1];
var c4 = ctype[i];
var c5 = ctype[i+1];
var c6 = ctype[i+2];
score += this.ts_(this.UP1__[p1]);
score += this.ts_(this.UP2__[p2]);
score += this.ts_(this.UP3__[p3]);
score += this.ts_(this.BP1__[p1 + p2]);
score += this.ts_(this.BP2__[p2 + p3]);
score += this.ts_(this.UW1__[w1]);
score += this.ts_(this.UW2__[w2]);
score += this.ts_(this.UW3__[w3]);
score += this.ts_(this.UW4__[w4]);
score += this.ts_(this.UW5__[w5]);
score += this.ts_(this.UW6__[w6]);
score += this.ts_(this.BW1__[w2 + w3]);
score += this.ts_(this.BW2__[w3 + w4]);
score += this.ts_(this.BW3__[w4 + w5]);
score += this.ts_(this.TW1__[w1 + w2 + w3]);
score += this.ts_(this.TW2__[w2 + w3 + w4]);
score += this.ts_(this.TW3__[w3 + w4 + w5]);
score += this.ts_(this.TW4__[w4 + w5 + w6]);
score += this.ts_(this.UC1__[c1]);
score += this.ts_(this.UC2__[c2]);
score += this.ts_(this.UC3__[c3]);
score += this.ts_(this.UC4__[c4]);
score += this.ts_(this.UC5__[c5]);
score += this.ts_(this.UC6__[c6]);
score += this.ts_(this.BC1__[c2 + c3]);
score += this.ts_(this.BC2__[c3 + c4]);
score += this.ts_(this.BC3__[c4 + c5]);
score += this.ts_(this.TC1__[c1 + c2 + c3]);
score += this.ts_(this.TC2__[c2 + c3 + c4]);
score += this.ts_(this.TC3__[c3 + c4 + c5]);
score += this.ts_(this.TC4__[c4 + c5 + c6]);
// score += this.ts_(this.TC5__[c4 + c5 + c6]);
score += this.ts_(this.UQ1__[p1 + c1]);
score += this.ts_(this.UQ2__[p2 + c2]);
score += this.ts_(this.UQ3__[p3 + c3]);
score += this.ts_(this.BQ1__[p2 + c2 + c3]);
score += this.ts_(this.BQ2__[p2 + c3 + c4]);
score += this.ts_(this.BQ3__[p3 + c2 + c3]);
score += this.ts_(this.BQ4__[p3 + c3 + c4]);
score += this.ts_(this.TQ1__[p2 + c1 + c2 + c3]);
score += this.ts_(this.TQ2__[p2 + c2 + c3 + c4]);
score += this.ts_(this.TQ3__[p3 + c1 + c2 + c3]);
score += this.ts_(this.TQ4__[p3 + c2 + c3 + c4]);
var p = "O";
if (score > 0) {
result.push(word);
word = "";
p = "B";
}
p1 = p2;
p2 = p3;
p3 = p;
word += seg[i];
}
result.push(word);
return result;
}
lunr.TinySegmenter = TinySegmenter;
};
}));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

8530
cdromdrive/index.html Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

2131
cdromvideocdsvcd/index.html Normal file

File diff suppressed because it is too large Load Diff

2083
cheatdevices/index.html Normal file

File diff suppressed because it is too large Load Diff

BIN
controller-pinout.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

File diff suppressed because it is too large Load Diff

1865
cpuspecifications/index.html Normal file

File diff suppressed because it is too large Load Diff

10
css/extra.css Normal file
View File

@ -0,0 +1,10 @@
@media print {
.md-typeset {
font-size: 1rem !important;
font-family: Verdana, Arial, Helvetica, sans-serif;
}
.md-typeset code {
font-size: 1em !important;
font-family: Menlo, Monaco, Consolas, "Courier New", monospace !important;
}
}

643
dmachannels/index.html Normal file
View File

@ -0,0 +1,643 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8"/>
<meta content="width=device-width,initial-scale=1" name="viewport"/>
<link href="https://psx-spx.consoledev.net/dmachannels/" rel="canonical"/>
<link href="../assets/images/favicon.png" rel="icon"/>
<meta content="mkdocs-1.1.2, mkdocs-material-7.1.3" name="generator"/>
<title>DMA Channels - PlayStation Specifications - psx-spx</title>
<link href="../assets/stylesheets/main.e35208c4.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.ef6f36e2.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font-family:"Roboto";--md-code-font-family:"Roboto Mono"}</style>
<link href="../css/extra.css" rel="stylesheet"/>
</head>
<body data-md-color-accent="indigo" data-md-color-primary="indigo" data-md-color-scheme="default" dir="ltr">
<script>function __prefix(e){return new URL("..",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
<script>var palette=__get("__palette");if(null!==palette&&"object"==typeof palette.color)for(var key in palette.color)document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a class="md-skip" href="#dma-channels">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="PlayStation Specifications - psx-spx" class="md-header__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
PlayStation Specifications - psx-spx
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
DMA Channels
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="indigo" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Switch to dark mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2 2 2 0 0 1 2-2m10-3a5 5 0 0 1 5 5 5 5 0 0 1-5 5H7a5 5 0 0 1-5-5 5 5 0 0 1 5-5h10M7 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3h10a3 3 0 0 0 3-3 3 3 0 0 0-3-3H7z"></path></svg>
</label>
<input class="md-option" data-md-color-accent="blue" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="blue" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Switch to light mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3z"></path></svg>
</label>
</form>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" data-md-state="active" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</label>
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"></path></svg>
</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="PlayStation Specifications - psx-spx" class="md-nav__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
PlayStation Specifications - psx-spx
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
Home
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../memorymap/">
Memory Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../iomap/">
I/O Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../graphicsprocessingunitgpu/">
Graphics Processing Unit (GPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometrytransformationenginegte/">
Geometry Transformation Engine (GTE)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../macroblockdecodermdec/">
Macroblock Decoder (MDEC)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../soundprocessingunitspu/">
Sound Processing Unit (SPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../interrupts/">
Interrupts
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<label class="md-nav__link md-nav__link--active" for="__toc">
DMA Channels
<span class="md-nav__icon md-icon"></span>
</label>
<a class="md-nav__link md-nav__link--active" href="./">
DMA Channels
</a>
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#dma-register-summary">
DMA Register Summary
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801080hn10h-d_madr-dma-base-address-channel-06-rw">
1F801080h+N*10h - D#_MADR - DMA base address (Channel 0..6) (R/W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801084hn10h-d_bcr-dma-block-control-channel-06-rw">
1F801084h+N*10h - D#_BCR - DMA Block Control (Channel 0..6) (R/W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801088hn10h-d_chcr-dma-channel-control-channel-06-rw">
1F801088h+N*10h - D#_CHCR - DMA Channel Control (Channel 0..6) (R/W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f8010f0h-dpcr-dma-control-register-rw">
1F8010F0h - DPCR - DMA Control Register (R/W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f8010f4h-dicr-dma-interrupt-register-rw">
1F8010F4h - DICR - DMA Interrupt Register (R/W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f8010f8h-usually-7ffac68bh-or-0bfac688h">
1F8010F8h (usually 7FFAC68Bh? or 0BFAC688h)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f8010fch-usually-00fffff7h-maybe-otc-fill-value">
1F8010FCh (usually 00FFFFF7h) (...maybe OTC fill-value)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#commonly-used-dma-control-register-values-for-starting-dma-transfers">
Commonly used DMA Control Register values for starting DMA transfers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#dma-transfer-rates">
DMA Transfer Rates
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#dram-hyper-page-mode">
DRAM Hyper Page mode
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#cpu-operation-during-dma">
CPU Operation during DMA
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../timers/">
Timers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromdrive/">
CDROM Drive
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../controllersandmemorycards/">
Controllers and Memory Cards
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pocketstation/">
Pocketstation
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../serialportsio/">
Serial Port (SIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../expansionportpio/">
Expansion Port (PIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../memorycontrol/">
Memory Control
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../unpredictablethings/">
Unpredictable Things
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cpuspecifications/">
CPU Specifications
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../kernelbios/">
Kernel (BIOS)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../arcadecabinets/">
Arcade Cabinets
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cheatdevices/">
Cheat Devices
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../psxdevboardchipsets/">
PSX Dev-Board Chipsets
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../hardwarenumbers/">
Hardware Numbers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pinouts/">
Pinouts
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../aboutcredits/">
About &amp; Credits
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromvideocdsvcd/">
CDROM Video CDs (VCD)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdrominternalinfoonpsxcdromcontroller/">
CDROM Internal Info on PSX CDROM Controller
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#dma-register-summary">
DMA Register Summary
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801080hn10h-d_madr-dma-base-address-channel-06-rw">
1F801080h+N*10h - D#_MADR - DMA base address (Channel 0..6) (R/W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801084hn10h-d_bcr-dma-block-control-channel-06-rw">
1F801084h+N*10h - D#_BCR - DMA Block Control (Channel 0..6) (R/W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801088hn10h-d_chcr-dma-channel-control-channel-06-rw">
1F801088h+N*10h - D#_CHCR - DMA Channel Control (Channel 0..6) (R/W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f8010f0h-dpcr-dma-control-register-rw">
1F8010F0h - DPCR - DMA Control Register (R/W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f8010f4h-dicr-dma-interrupt-register-rw">
1F8010F4h - DICR - DMA Interrupt Register (R/W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f8010f8h-usually-7ffac68bh-or-0bfac688h">
1F8010F8h (usually 7FFAC68Bh? or 0BFAC688h)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f8010fch-usually-00fffff7h-maybe-otc-fill-value">
1F8010FCh (usually 00FFFFF7h) (...maybe OTC fill-value)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#commonly-used-dma-control-register-values-for-starting-dma-transfers">
Commonly used DMA Control Register values for starting DMA transfers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#dma-transfer-rates">
DMA Transfer Rates
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#dram-hyper-page-mode">
DRAM Hyper Page mode
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#cpu-operation-during-dma">
CPU Operation during DMA
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a class="md-content__button md-icon" href="https://github.com/psx-spx/psx-spx.github.io/edit/master/docs/dmachannels.md" title="Edit this page">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"></path></svg>
</a>
<h1 id="dma-channels">DMA Channels</h1>
<h4 id="dma-register-summary">DMA Register Summary</h4>
<pre><code> 1F80108xh DMA0 channel 0 MDECin (RAM to MDEC)
1F80109xh DMA1 channel 1 MDECout (MDEC to RAM)
1F8010Axh DMA2 channel 2 GPU (lists + image data)
1F8010Bxh DMA3 channel 3 CDROM (CDROM to RAM)
1F8010Cxh DMA4 channel 4 SPU
1F8010Dxh DMA5 channel 5 PIO (Expansion Port)
1F8010Exh DMA6 channel 6 OTC (reverse clear OT) (GPU related)
1F8010F0h DPCR - DMA Control register
1F8010F4h DICR - DMA Interrupt register
</code></pre>
<p>These ports control DMA at the CPU-side. In most cases, you'll additionally
need to initialize an address (and transfer direction, transfer enabled, etc.)
at the remote-side (eg. at the GPU-side for DMA2).<br/></p>
<h4 id="1f801080hn10h-d_madr-dma-base-address-channel-06-rw">1F801080h+N*10h - D#_MADR - DMA base address (Channel 0..6) (R/W)</h4>
<pre><code> 0-23 Memory Address where the DMA will start reading from/writing to
24-31 Not used (always zero)
</code></pre>
<p>In SyncMode=0, the hardware doesn't update the MADR registers (it will contain
the start address even during and after the transfer) (unless Chopping is
enabled, in that case it does update MADR, same does probably also happen when
getting interrupted by a higher priority DMA channel).<br/>
In SyncMode=1 and SyncMode=2, the hardware does update MADR (it will contain
the start address of the currently transferred block; at transfer end, it'll
hold the end-address in SyncMode=1, or the 00FFFFFFh end-code in SyncMode=2)<br/>
Note: Address bit0-1 are writeable, but any updated current/end addresses are
word-aligned with bit0-1 forced to zero.<br/></p>
<h4 id="1f801084hn10h-d_bcr-dma-block-control-channel-06-rw">1F801084h+N*10h - D#_BCR - DMA Block Control (Channel 0..6) (R/W)</h4>
<p>For SyncMode=0 (ie. for OTC and CDROM):<br/></p>
<pre><code> 0-15 BC Number of words (0001h..FFFFh) (or 0=10000h words)
16-31 0 Not used (usually 0 for OTC, or 1 ("one block") for CDROM)
</code></pre>
<p>For SyncMode=1 (ie. for MDEC, SPU, and GPU-vram-data):<br/></p>
<pre><code> 0-15 BS Blocksize (words) ;for GPU/SPU max 10h, for MDEC max 20h
16-31 BA Amount of blocks ;ie. total length = BS*BA words
</code></pre>
<p>For SyncMode=2 (ie. for GPU-command-lists):<br/></p>
<pre><code> 0-31 0 Not used (should be zero) (transfer ends at END-CODE in list)
</code></pre>
<p>BC/BS/BA can be in range 0001h..FFFFh (or 0=10000h). For BS, take care not to
set the blocksize larger than the buffer of the corresponding unit can hold.
(GPU and SPU both have a 16-word buffer). A larger blocksize means faster
transfer.<br/>
SyncMode=1 decrements BA to zero, SyncMode=0 with chopping enabled decrements
BC to zero (aside from that two cases, D#_BCR isn't changed during/after
transfer).<br/></p>
<h4 id="1f801088hn10h-d_chcr-dma-channel-control-channel-06-rw">1F801088h+N*10h - D#_CHCR - DMA Channel Control (Channel 0..6) (R/W)</h4>
<pre><code> 0 Transfer Direction (0=To Main RAM, 1=From Main RAM)
1 Memory Address Step (0=Forward;+4, 1=Backward;-4)
2-7 Not used (always zero)
8 Chopping Enable (0=Normal, 1=Chopping; run CPU during DMA gaps)
9-10 SyncMode, Transfer Synchronisation/Mode (0-3):
0 Start immediately and transfer all at once (used for CDROM, OTC)
1 Sync blocks to DMA requests (used for MDEC, SPU, and GPU-data)
2 Linked-List mode (used for GPU-command-lists)
3 Reserved (not used)
11-15 Not used (always zero)
16-18 Chopping DMA Window Size (1 SHL N words)
19 Not used (always zero)
20-22 Chopping CPU Window Size (1 SHL N clks)
23 Not used (always zero)
24 Start/Busy (0=Stopped/Completed, 1=Start/Enable/Busy)
25-27 Not used (always zero)
28 Start/Trigger (0=Normal, 1=Manual Start; use for SyncMode=0)
29 Unknown (R/W) Pause? (0=No, 1=Pause?) (For SyncMode=0 only?)
30 Unknown (R/W)
31 Not used (always zero)
</code></pre>
<p>The Start/Trigger bit is automatically cleared upon BEGIN of the transfer, this
bit needs to be set only in SyncMode=0 (setting it in other SyncModes would
force the first block to be transferred instantly without DRQ, which isn't
desired).<br/>
The Start/Busy bit is automatically cleared upon COMPLETION of the transfer,
this bit must be always set for all SyncModes when starting a transfer.<br/>
For DMA6/OTC there are some restrictions, D6_CHCR has only three
read/write-able bits: Bit24,28,30. All other bits are read-only: Bit1 is always
1 (step=backward), and the other bits are always 0.<br/></p>
<h4 id="1f8010f0h-dpcr-dma-control-register-rw">1F8010F0h - DPCR - DMA Control Register (R/W)</h4>
<pre><code> 0-2 DMA0, MDECin Priority (0..7; 0=Highest, 7=Lowest)
3 DMA0, MDECin Master Enable (0=Disable, 1=Enable)
4-6 DMA1, MDECout Priority (0..7; 0=Highest, 7=Lowest)
7 DMA1, MDECout Master Enable (0=Disable, 1=Enable)
8-10 DMA2, GPU Priority (0..7; 0=Highest, 7=Lowest)
11 DMA2, GPU Master Enable (0=Disable, 1=Enable)
12-14 DMA3, CDROM Priority (0..7; 0=Highest, 7=Lowest)
15 DMA3, CDROM Master Enable (0=Disable, 1=Enable)
16-18 DMA4, SPU Priority (0..7; 0=Highest, 7=Lowest)
19 DMA4, SPU Master Enable (0=Disable, 1=Enable)
20-22 DMA5, PIO Priority (0..7; 0=Highest, 7=Lowest)
23 DMA5, PIO Master Enable (0=Disable, 1=Enable)
24-26 DMA6, OTC Priority (0..7; 0=Highest, 7=Lowest)
27 DMA6, OTC Master Enable (0=Disable, 1=Enable)
28-30 Unknown, Priority Offset or so? (R/W)
31 Unknown, no effect? (R/W)
</code></pre>
<p>Initial value on reset is 07654321h. If two or more channels have the same
priority setting, then the priority is determined by the channel number
(DMA0=Lowest, DMA6=Highest).<br/></p>
<h4 id="1f8010f4h-dicr-dma-interrupt-register-rw">1F8010F4h - DICR - DMA Interrupt Register (R/W)</h4>
<pre><code> 0-5 Unknown (read/write-able)
6-14 Not used (always zero)
15 Force IRQ (sets bit31) (0=None, 1=Force Bit31=1)
16-22 IRQ Enable for DMA0..DMA6 (0=None, 1=Enable)
23 IRQ Master Enable for DMA0..DMA6 (0=None, 1=Enable)
24-30 IRQ Flags for DMA0..DMA6 (0=None, 1=IRQ) (Write 1 to reset)
31 IRQ Master Flag (0=None, 1=IRQ) (Read only)
</code></pre>
<p>IRQ flags in Bit(24+n) are set upon DMAn completion - but caution - they are
set ONLY if enabled in Bit(16+n).<br/>
Bit31 is a simple readonly flag that follows the following rules:<br/></p>
<pre><code> IF b15=1 OR (b23=1 AND (b16-22 AND b24-30)&gt;0) THEN b31=1 ELSE b31=0
</code></pre>
<p>Upon 0-to-1 transition of Bit31, the IRQ3 flag (in Port 1F801070h) gets set.<br/>
Bit24-30 are acknowledged (reset to zero) when writing a "1" to that bits (and,
additionally, IRQ3 must be acknowledged via Port 1F801070h).<br/></p>
<h4 id="1f8010f8h-usually-7ffac68bh-or-0bfac688h">1F8010F8h (usually 7FFAC68Bh? or 0BFAC688h)</h4>
<pre><code> (changes to 7FE358D1h after DMA transfer)
</code></pre>
<h4 id="1f8010fch-usually-00fffff7h-maybe-otc-fill-value">1F8010FCh (usually 00FFFFF7h) (...maybe OTC fill-value)</h4>
<pre><code> (stays so even after DMA transfer)
</code></pre>
<p>Contains strange read-only values (but not the usual "Garbage").<br/>
Not yet tested during transfer, might be remaining length and address?<br/></p>
<h4 id="commonly-used-dma-control-register-values-for-starting-dma-transfers">Commonly used DMA Control Register values for starting DMA transfers</h4>
<pre><code> DMA0 MDEC.IN 01000201h (always)
DMA1 MDEC.OUT 01000200h (always)
DMA2 GPU 01000200h (VramRead), 01000201h (VramWrite), 01000401h (List)
DMA3 CDROM 11000000h (normal), 11400100h (chopped, rarely used)
DMA4 SPU 01000201h (write), 01000200h (read, rarely used)
DMA5 PIO N/A (not used by any known games)
DMA6 OTC 11000002h (always)
</code></pre>
<p>XXX: DMA2 values 01000201h (VramWrite), 01000401h (List) aren't 100% confirmed
to be used by ALL existing games. All other values are always used as listed
above.<br/></p>
<h4 id="dma-transfer-rates">DMA Transfer Rates</h4>
<pre><code> DMA0 MDEC.IN 1 clk/word ;0110h clks per 100h words ;\plus whatever
DMA1 MDEC.OUT 1 clk/word ;0110h clks per 100h words ;/decompression time
DMA2 GPU 1 clk/word ;0110h clks per 100h words ;-plus ...
DMA3 CDROM/BIOS 24 clks/word ;1800h clks per 100h words ;\plus single/double
DMA3 CDROM/GAMES 40 clks/word ;2800h clks per 100h words ;/speed sector rate
DMA4 SPU 4 clks/word ;0420h clks per 100h words ;-plus ...
DMA5 PIO 20 clks/word ;1400h clks per 100h words ;-not actually used
DMA6 OTC 1 clk/word ;0110h clks per 100h words ;-plus nothing
</code></pre>
<p>MDEC decompression time is still unknown (may vary on RLE and color/mono).<br/>
GPU polygon rendering time is unknown (may be quite slow for large polys).<br/>
GPU vram read/write time is unknown (may vary on horizontal screen resolution).<br/>
CDROM BIOS default is 24 clks, for some reason most games change it to 40 clks.<br/>
SPU transfer is unknown (may have some extra delays).<br/>
XXX is SPU really only 4 clks (theoretically SPU access should be slower)?<br/>
PIO isn't used by any games (and if used: could be configured to other rates)<br/>
OTC is just writing to RAM without extra overload.<br/>
CDROM/SPU/PIO timings can be configured via Memory Control registers.<br/></p>
<h4 id="dram-hyper-page-mode">DRAM Hyper Page mode</h4>
<p>DMA is using DRAM Hyper Page mode, allowing it to access DRAM rows at 1 clock
cycle per word (effectively around 17 clks per 16 words, due to required row
address loading, probably plus some further minimal overload due to refresh
cycles). This is making DMA much faster than CPU memory accesses (CPU DRAM
access takes 1 opcode cycle plus 6 waitstates, ie. 7 cycles in total)<br/></p>
<h4 id="cpu-operation-during-dma">CPU Operation during DMA</h4>
<p>Basically, the CPU is stopped during DMA (theoretically, the CPU could be kept
running when accessing only cache, scratchpad and on-chip I/O ports like DMA
registers, and during the CDROM/SPU/PIO waitstates it could even access Main
RAM, but these situations aren't supported).<br/>
However, the CPU operation resumes during periods when DMA gets interrupted
(ie. after SyncMode 1 blocks, after SyncMode 2 list entries) (or in SyncMode 0
with Chopping enabled).<br/></p>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<nav aria-label="Footer" class="md-footer__inner md-grid">
<a class="md-footer__link md-footer__link--prev" href="../interrupts/" rel="prev">
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</div>
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Previous
</span>
Interrupts
</div>
</div>
</a>
<a class="md-footer__link md-footer__link--next" href="../timers/" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Next
</span>
Timers
</div>
</div>
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"></path></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" rel="noopener" target="_blank">
Material for MkDocs
</a>
... <a class="link--pdf-download" download href="../psx-spx.pdf" title="PDF">download PDF</a></div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}, "search": "../assets/javascripts/workers/search.fe42c31b.min.js", "version": null}</script>
<script src="../assets/javascripts/bundle.4ea5477f.min.js"></script>
</body>
</html>

1491
expansionportpio/index.html Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

859
hardwarenumbers/index.html Normal file
View File

@ -0,0 +1,859 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8"/>
<meta content="width=device-width,initial-scale=1" name="viewport"/>
<link href="https://psx-spx.consoledev.net/hardwarenumbers/" rel="canonical"/>
<link href="../assets/images/favicon.png" rel="icon"/>
<meta content="mkdocs-1.1.2, mkdocs-material-7.1.3" name="generator"/>
<title>Hardware Numbers - PlayStation Specifications - psx-spx</title>
<link href="../assets/stylesheets/main.e35208c4.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.ef6f36e2.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font-family:"Roboto";--md-code-font-family:"Roboto Mono"}</style>
<link href="../css/extra.css" rel="stylesheet"/>
</head>
<body data-md-color-accent="indigo" data-md-color-primary="indigo" data-md-color-scheme="default" dir="ltr">
<script>function __prefix(e){return new URL("..",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
<script>var palette=__get("__palette");if(null!==palette&&"object"==typeof palette.color)for(var key in palette.color)document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a class="md-skip" href="#hardware-numbers">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="PlayStation Specifications - psx-spx" class="md-header__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
PlayStation Specifications - psx-spx
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Hardware Numbers
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="indigo" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Switch to dark mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2 2 2 0 0 1 2-2m10-3a5 5 0 0 1 5 5 5 5 0 0 1-5 5H7a5 5 0 0 1-5-5 5 5 0 0 1 5-5h10M7 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3h10a3 3 0 0 0 3-3 3 3 0 0 0-3-3H7z"></path></svg>
</label>
<input class="md-option" data-md-color-accent="blue" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="blue" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Switch to light mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3z"></path></svg>
</label>
</form>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" data-md-state="active" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</label>
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"></path></svg>
</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="PlayStation Specifications - psx-spx" class="md-nav__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
PlayStation Specifications - psx-spx
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
Home
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../memorymap/">
Memory Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../iomap/">
I/O Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../graphicsprocessingunitgpu/">
Graphics Processing Unit (GPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometrytransformationenginegte/">
Geometry Transformation Engine (GTE)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../macroblockdecodermdec/">
Macroblock Decoder (MDEC)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../soundprocessingunitspu/">
Sound Processing Unit (SPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../interrupts/">
Interrupts
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../dmachannels/">
DMA Channels
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../timers/">
Timers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromdrive/">
CDROM Drive
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../controllersandmemorycards/">
Controllers and Memory Cards
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pocketstation/">
Pocketstation
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../serialportsio/">
Serial Port (SIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../expansionportpio/">
Expansion Port (PIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../memorycontrol/">
Memory Control
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../unpredictablethings/">
Unpredictable Things
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cpuspecifications/">
CPU Specifications
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../kernelbios/">
Kernel (BIOS)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../arcadecabinets/">
Arcade Cabinets
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cheatdevices/">
Cheat Devices
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../psxdevboardchipsets/">
PSX Dev-Board Chipsets
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<label class="md-nav__link md-nav__link--active" for="__toc">
Hardware Numbers
<span class="md-nav__icon md-icon"></span>
</label>
<a class="md-nav__link md-nav__link--active" href="./">
Hardware Numbers
</a>
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#sonys-own-hardware-for-psx-can-be-also-used-with-psone">
Sony's own hardware (for PSX) (can be also used with PSone)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sonys-own-hardware-for-psone">
Sony's own hardware (for PSone)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sonys-own-devkits">
Sony's own devkits
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sn-system-psy-q-devkit-add-ons-scsi-cards">
SN System / Psy-Q devkit add-ons / SCSI cards
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-licensed-hardware-japan">
Sony Licensed Hardware (Japan)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-licensed-hardware-europe">
Sony Licensed Hardware (Europe)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-licensed-hardware-usa">
Sony Licensed Hardware (USA)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-licensed-hardware-asia">
Sony Licensed Hardware (Asia)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#newer-hardware-add-ons">
Newer hardware add-ons?
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#note">
Note
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#software-cdrom-game-codes">
Software (CDROM Game Codes)
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pinouts/">
Pinouts
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../aboutcredits/">
About &amp; Credits
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromvideocdsvcd/">
CDROM Video CDs (VCD)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdrominternalinfoonpsxcdromcontroller/">
CDROM Internal Info on PSX CDROM Controller
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#sonys-own-hardware-for-psx-can-be-also-used-with-psone">
Sony's own hardware (for PSX) (can be also used with PSone)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sonys-own-hardware-for-psone">
Sony's own hardware (for PSone)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sonys-own-devkits">
Sony's own devkits
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sn-system-psy-q-devkit-add-ons-scsi-cards">
SN System / Psy-Q devkit add-ons / SCSI cards
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-licensed-hardware-japan">
Sony Licensed Hardware (Japan)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-licensed-hardware-europe">
Sony Licensed Hardware (Europe)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-licensed-hardware-usa">
Sony Licensed Hardware (USA)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-licensed-hardware-asia">
Sony Licensed Hardware (Asia)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#newer-hardware-add-ons">
Newer hardware add-ons?
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#note">
Note
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#software-cdrom-game-codes">
Software (CDROM Game Codes)
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a class="md-content__button md-icon" href="https://github.com/psx-spx/psx-spx.github.io/edit/master/docs/hardwarenumbers.md" title="Edit this page">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"></path></svg>
</a>
<h1 id="hardware-numbers">Hardware Numbers</h1>
<h4 id="sonys-own-hardware-for-psx-can-be-also-used-with-psone">Sony's own hardware (for PSX) (can be also used with PSone)</h4>
<pre><code> SCPH-1000 PlayStation (1994) (NTSC-J) (with S-Video)
SCPH-1001 PlayStation (1995) (NTSC-U/C) (without S-Video)
SCPH-1002 PlayStation (199x) (PAL) (without S-Video)
SCPH-1010 Digital joypad (with short cable) (1994)
SCPH-1020 Memory Card 1Mbits (1994)
SCPH-1030 2-button Mouse (with short cable) (1994)
SCPH-1040 Serial Link Cable
SCPH-1050 RGB Cable (21-pin RGB Connector)
SCPH-1060 RFU Cable/Adaptor (antennae connector) (NTSC-JP?) (1995)
SCPH-1061 RFU Cable/Adaptor (antennae connector) (NTSC-US?)
SCPH-1062 RFU Cable/Adaptor (antennae connector) (PAL)
SCPH-1070 Multitap adaptor (four controllers/memory cards on one slot) (1995)
SCPH-1080 Digital joypad (with longer cable) (1996)
SCPH-1090 2-button Mouse (with longer cable) (1998)
SCPH-1100 S Video Cable (1995)
SCPH-1110 Analog Joystick (1996)
SCPH-1120 RFU Adaptor (antennae connector) (NTSC-JP?) (1996)
SCPH-1121 RFU Adaptor (antennae connector) (NTSC-US?)
SCPH-1122 RFU Adaptor (antennae connector) (PAL)
SCPH-1130 AC Power Cord (1996)
SCPH-1140 AV Cable (1997)
SCPH-1150 Analog Joypad (with one vibration motor, with red/green led) (1997)
SCPH-1160 AV Adaptor (1997)
SCPH-1170 Memory Card Triple Pack (three Memory Cards) (1996)
SCPH-1180 Analog Joypad (without vibration motors, with red/green led)
SCPH-119X Memory Card (X=different colors) (1997)
SCPH-1200 Analog Joypad (with two vibration motors) (dualshock) (1997)
SCPH-1210 Memory Card Case (1998)
SCPH-2000 Keyboard/Mouse adapter (PS/2 to PSX controller port; for Lightspan)
SCPH-3000 PlayStation (1995) (NTSC-J) (with the S-video output removed)
SCPH-3500 PlayStation Fighting Box (console bundled with 2 controllers)(1996)
SCPH-4000 PocketStation (Memory Card with LCD-screen) (1999)
SCPH-4010 VPick (guitar-pick controller) (for Quest for Fame, Stolen Song)
SCPH-4020 Long Strap for PocketStation (1999)
SCPH-4030 Wrist Strap for PocketStation (1999)
SCPH-5000 PlayStation (cost reduced) (Japan) (1996) ;\exists in these three
SCPH-5001 PlayStation (cost reduced) (North America) ; regions only (not
SCPH-5003 PlayStation (Asia) ;/in Europe)
SCPH-5500 PlayStation without Cinch sockets (ie. AV Multi Out only) (1996)(J)
SCPH-5501 "" North American version of the 5500
SCPH-5502 "" European version of the 5500 (shipped with 1 digital joypad)
SCPH-5552 Same as SCPH-5502 (but shipped with memcard and 2 digital joypads)
SCPH-5903 PlayStation with built-in MPEG Video-CD decoder (Asia-only)
SCPH-7000 PlayStation with Dualshock (1997) (Japan)
SCPH-7001 PlayStation with Dualshock (199x) (North America)
SCPH-7002 PlayStation with Dualshock (199x) (Europe)
SCPH-7003 PlayStation with Dualshock (199x) (Asia)
SCPH-7000W PlayStation (10 million model, not for sale, blue, region free)
SCPH-7500 PlayStation with Dualshock, cost reduced (1999) (Japan)
SCPH-7501 PlayStation with Dualshock, cost reduced (199x) (North America)
SCPH-7502 PlayStation with Dualshock, cost reduced (199x) (Europe)
SCPH-7503 PlayStation with Dualshock, cost reduced (199x) (Asia)
SCPH-9000 PlayStation without Parallel I/O port (1999) (Japan)
SCPH-9001 PlayStation without Parallel I/O port (199x) (North America)
SCPH-9002 PlayStation without Parallel I/O port (199x) (Europe)
SCPH-9003 PlayStation without Parallel I/O port (199x) (Asia)
SCPH-9903 Rare SCEx-free PSX (Property of Sony Computer Entertainment, U/C)
SFX-100 PlayStation Super Disc Prototype (with SNES chipset, no PSX chips)
</code></pre>
<h4 id="sonys-own-hardware-for-psone">Sony's own hardware (for PSone)</h4>
<pre><code> SCPH-100 PSone (miniaturized PlayStation) (2000) (Japan)
SCPH-101 PSone (miniaturized PlayStation) (200x) (North America)
SCPH-102 PSone (miniaturized PlayStation) (200x) (Europe)
SCPH-103 PSone (miniaturized PlayStation) (200x) (Asia)
SCPH-102A PSone Europe (UK/AU, with A/V cable) ;\revision of "SCPH-102"
SCPH-102B PSone Europe (UK, with RFU adaptor) ; with PM-41(2) board ?
SCPH-102C PSone Europe (Continent, with A/V cable) ;/
SCPH-110 Dual Analog Pad (for PSone) (Dualshock) (2000)
SCPH-111 Multitap for PSone (seems to be quite rare, except in brazil)
SCPH-112 AC adapter for PSone (In: 110-220VAC, Out: 7.5VDC, 2.0A, Japan)
SCPH-113 AC adapter for PSone (In: 120VAC/60Hz, Out: 7.5VDC, 2.0A, USA)
SCPH-114 AC adapter for PSone (In: 220-240VAC, Out: 7.5VDC, 2.0A, Europe)
SCPH-115 AC adapter for PSone (In: 220-240VAC, Out: 7.5VDC, 2.0A, UK)
SCPH-116 AC adapter for PSone (In: 220-240VAC, Out: 7.5VDC, 2.0A, Australia)
SCPH-117 AC adapter for PSone (In: 110VAC, Out: 7.5VDC, 2.0A, Asia?)
SCPH-120 AC adapter for PSone with LCD Screen (In: 100VAC, Out: 7.5VDC, 3.0A)
SCPH-130 LCD Screen for PSone (to be attached to the console) (2001)
SCPH-140 PSone and LCD screen combo (2001)
SCPH-152 LCD screen for PSone (PAL SCPH-152C)
SCPH-162 PSone and LCD screen (PAL SCPH-162C)
SCPH-170 Car Adapter for PSone from car cigarette lighter (2001)
SCPH-180 AV Connection Cable for LCD-screen's AV IN
SCPH-10180K DoCoMo I-Mode Adaptor Cable (for internet via mobile phones)
</code></pre>
<h4 id="sonys-own-devkits">Sony's own devkits</h4>
<pre><code> DTL-H201A Graphic Artist Board (ISA bus) (with NTSC video out)
DTL-H240 PS-X RGB Cable
DTL-H500C Digital joypad prototype (SNES-style design, with DB9 connector)
DTL-H505 PS-X (Code Name) Target Box ? (PSX prototype, SCSI instead CDROM?)
DTL-H700 Sound Artist Board (NuBus for Mac)
DTL-H800 Sound Artist Board (PCI Bus for IBM) (with optical fibre sound out)
DTL-H1000 Debugging Station (CD-R compatible PSX console) (Japan)
DTL-H1001 Debugging Station (CD-R compatible PSX console) (North America)
DTL-H1002 Debugging Station (CD-R compatible PSX console) (Europe)
DTL-H1030 Mouse ?
DTL-H1040 Link Cable ?
DTL-H1050 RGB Cable ?
DTL-H110x Debugging Station revision? (DC-powered)
DTL-H120x Debugging Station revision? (AC-powered)
DTL-H1500 Stand-Alone Box ? With ethernet, for SGI Workstation ?
DTL-H2000 Dev board v1 (PSX on two ISA carts) (old pre-retail)
DTL-H2010 Black External CDROM Drive for DTL-H2000 (CD-R compatible)
DTL-H2040 Memory Box ?
DTL-H2050 Adaptor for Controller port ?
DTL-H2060 Serial Link cable
DTL-H2070 RGB Cable ?
DTL-H2080 Controller Box (joypad/memcard adaptor for DTL-H2000/DTL-xxxx?)
DTL-H2500 Dev board (PCI bus)
DTL-H2510 Gray Internal CDROM Drive for DTL-H2500/DTL-H2700 (CD-R compatible)
DTL-H2700 Dev board (ISA bus) (CPU, ANALYZER ...?)
DTL-H3000 Net Yaroze (hobby programmer dev kit) (Japan)
DTL-H3001 Net Yaroze (hobby programmer dev kit) (North America)
DTL-H3002 Net Yaroze (hobby programmer dev kit) (Europe)
DTL-H3020 Access Card (for yaroze)
DTL-H3050 Communication Cable (link port to rs232, for yaroze)
DTL-D2020 Documentation: BUILD CD (Manual of Programmer's Tool)
DTL-D2120 Documentation: (Manual of Programmer's Tool)
DTL-D2130 Documentation: PsyQ (Manual of Programmer's Tool)
DTL-D2130 Documentation: SdevTC (Manual of Programmer's Tool)
DTL-D2140A Documentation: Ver.1.0 (Manual of Programmer's Tool)
DTL-D2150A Documentation: Ver.2.0 (Manual of Programmer's Tool)
</code></pre>
<h4 id="sn-system-psy-q-devkit-add-ons-scsi-cards">SN System / Psy-Q devkit add-ons / SCSI cards</h4>
<pre><code> DTL-S510B Unknown (another CDROM emulator version?)
DTL-S2020 CD-ROM EMULATOR for DTL-H2000/DTL-H2500/DTL-H2700
</code></pre>
<h4 id="sony-licensed-hardware-japan">Sony Licensed Hardware (Japan)</h4>
<pre><code> SLPH-00001 Namco neGcon (white) (NPC-101), Twist controller (SLEH-0003)
SLPH-00002 Hori Fighting stick, digital stick with autofire/slowmotion/rumble
SLPH-00003 ASCII Fighter stick V, psx-shaped digital stick (SLEH-0002)
SLPH-00004 Sunsoft Sunstation pad, digital pad with autofire/slowmotion
SLPH-00005 ASCII ASCIIPAD V, digital pad with autofire/slowmotion
SLPH-00006 Imagineer Sandapaddo ThunderPad
SLPH-00007 SANKYO N.ASUKA aka Nasca Pachinco Handle, bizarre paddle
SLPH-00008 Spital SANGYO Programmable joystick
SLPH-00009 Hori Fighting commander 2way controller
SLPH-00010 Optec Super Pro Commander
SLPH-00011 Super Pro Commander Accessory / Extended memo repack memory
SLPH-00012 Hori Fighting Commander 10B Pad (gray), digital pad with extras
SLPH-00013 Konami Hyper Blaster (green) ;\IRQ10-based Lightgun
SLPH-00014 Konami Hyper Blaster (black) ;/(SLEH-0005/SLUH-00017)
SLPH-00015 Namco Volume controller, paddle with 2 buttons
SLPH-00016 Waka Up Scan Converter "[chiyo] clean! peripheral equipment?"
SLPH-00017 Hori Fighting Commander 10B Pad (black), digital pad with extras
SLPH-00018 Hori Real Arcade Stick, digital stick, small L1/L2 (HPS-10)
SLPH-00019 Konami Hyperstick
SLPH-00020 Imagineer Thunder Pad Transparent
SLPH-00021 Imagineer Imagegun
SLPH-00022 Optec AI Commander Pro, digital pad with extras / lcd display
SLPH-00023 Namco Joystick (SLEH-00004)
SLPH-00024 Optec Cockpit Wheel, analog joystick/analog pedals or so
SLPH-00025 Optec AI Commander Accessory (extended memo repack ZERO2 version)
SLPH-00026 Hori Command Stick PS (SLPH-00026 aka HPS11)
SLPH-00027 ASCII Grip, single-handed digital pad (SLEH-00008)
SLPH-00028 Hori Grip (gray) (see also: SLPH-00040, and 00086..00088)
SLPH-00029 Hori Horipad (clear), digital pad
SLPH-00030 Hori Horipad (black), digital pad
SLPH-00031 Hori Horipad (gray), digital pad
SLPH-00032 Hori Horipad (white), digital pad
SLPH-00033 Hori Horipad (blue), digital pad
SLPH-00034 Namco G-CON 45, Cinch-based Lightgun (SLEH-0007/SLUH-00035)
SLPH-00035 ASCII Fighter stick V Jr. (SLEH-00009)
SLPH-00036 Optec Wireless Dual Shot, digital pad with turbo button
SLPH-00037 ?
SLPH-00038 ASCII Pad V Jr., digital pad without any extras
SLPH-00039 ASCII Pad V2 (gray), digital pad with turbo switches (SLEH-00010)
SLPH-00040 Hori Grip (black)
SLPH-00041 ASCII Grip V
SLPH-00042 ASCII Grip V plus (Derby Stallion'99 supplement set), single-hand
SLPH-00043 ASCII Pad V2 (clear pink)
SLPH-00044 ASCII Pad V2 (clear white)
SLPH-00045 ASCII Pad V2 (clear blue)
SLPH-00046 ASCII Pad V2 (clear green)
SLPH-00047 ASCII Pad V2 (clear black)
SLPH-00048 ASCII Pad V2 (clear red/lead?)
SLPH-00049 ASCII Pad V2 (clear yellow)
SLPH-00050 ASCII Pad V2 (clear orange)
SLPH-00051 Taito Streetcar GO! Controller 2 steering "wheel?" tie toe strange
SLPH-00052 Koei Video Capture, Ergosoft EGWord, and Lexmark Printer bundle
SLPH-00053 Koei Word Processor Ergosoft September EGWORD Ver.2.00
SLPH-00054 Hori Zerotech Steering Controller (black)
SLPH-00055 Hori Grip (clear blue)
SLPH-00056 Hori Grip (clear pink)
SLPH-00057 Hori Grip (clear yellow)
SLPH-00058 ASCII Pad V2 (gold)
SLPH-00059 ASCII Pad V2 (silver)
SLPH-00060 ASCII Biohazard, digital pad with re-arranged buttons (SLEH-0011)
SLPH-00061 ASCII Pad V2 (pearl white)
SLPH-00062 ASCII Pad V2 (pearl blue)
SLPH-00063 ASCII Pad V2 (pearl pink)
SLPH-00064 ASCII Pad V2 (pearl green)
SLPH-00065 ASCII Pad V Pro, with lcd for button-combinations (ASC-0508GX)
SLPH-00066 ASCII Arcade Stick 3 "Ultimate"
SLPH-00067 ASCII Pad V2 (purple metallic)
SLPH-00068 ASCII Pad V2 (lead metallic)
SLPH-00069 Namco neGcon (black) (NPC-104), Twist controller (SLEH-0003)
SLPH-00070 Sankyo Pachinko FF Controller (alternate to SLPH-00007)
SLPH-00071 Hori Command Stick PS Custom
SLPH-00072 ASCII Command Pack (memory card add-on or so)
SLPH-00073 Optec Wireless digital set (gray) ;\
SLPH-00074 Optec Wireless digital set (black) ; pad with receiver
SLPH-00075 Optec Wireless digital set (clear) ;
SLPH-00076 Optec Wireless digital set (clear blue) ;
SLPH-00077 Optec Wireless digital set (clear black) ;/
SLPH-00078 Optec Wireless digital shot (gray) ;\
SLPH-00079 Optec Wireless digital shot (black) ; extra pad for
SLPH-00080 Optec Wireless digital shot (clear) ; second player
SLPH-00081 Optec Wireless digital shot (clear blue) ; (without receiver)
SLPH-00082 Optec Wireless digital shot (clear black) ;/
SLPH-00083 ASCII Stick Justice controller
SLPH-00084 Hori ZeroTech Steering Controller (clear)
SLPH-00085 Hori Compact joystick (black)
SLPH-00086 Hori Compact joystick (clear)
SLPH-00087 Hori Compact joystick (clear blue)
SLPH-00088 Hori Multi Analog Pad (clear) or Hori Grip (pink?)
SLPH-00089 Hori AV Cable with selector
SLPH-00090 Hori Multi Analogue Pad (clear black)
SLPH-00091 Hori AV Multi-Out Converter
SLPH-00092 ASCII Pad V2 (margin green)
SLPH-00093 ASCII Pad V2 (margin blue)
SLPH-00094 ASCII Pad V2 (margin pink)
SLPH-00095 ASCII Pad V2 (margin orange)
SLPH-00096 ASCII Hyper Steering V ("high pass tear ring V controller?")
SLPH-00097 Hori S Cable with selector (uh, maybe S-video or so?) (HPS-36)
SLPH-00098 NSYSCOM Pachinko slot controller (NSC-1)
SLPH-00099 ASCII Pad V2 (rainbow)
SLPH-00100 ASCII 'Hanging' Fishing Controller, controller for fishing games
SLPH-00101 Optec Cockpit big shock
SLPH-00102 ASCII Grip V (set for mars story)
SLPH-00103 Hori Pad V2 (clear)
SLPH-00104 Hori Pad V2 (clear blue)
SLPH-00105 Hori Pad V2 (clear pink)
SLPH-00106 Hori Pad V2 (black)
SLPH-00107 Hori Compact Joystick (camouflage)
SLPH-00108 Hori Rumble Digital Pad (clear blue)
SLPH-00109 Hori Monoaural AV Cable
SLPH-00110 ASCII Pad V2 (marble)
SLPH-00111 ASCII Pad V2 (camouflage)
SLPH-00112 ASCII Pad V3
SLPH-00113 ASCII Pad V3 with cable reel
SLPH-00114 ASCII Pad V3 with V2 (pearl white) bundle
SLPH-00115 ASCII Pad V3 with V2 (pearl pink) bundle
SLPH-00116 ASCII Pad V3 with V2 (pearl blue) bundle
SLPH-00117 ASCII Pad V3 (blue) with V2 (pearl green) bundle
SLPH-00118 Hori Pad V3
SLPH-00119 Hori Pad V3 (white)
SLPH-00120 Hori Analog Rumble Pad (clear pink)
SLPH-00121 Hori Analog Rumble Pad (clear)
SLPH-00122 Hori Analog Rumble Pad (clear blue)
SLPH-00123 Hori Analog Rumble Pad (clear red)
SLPH-00124 Hori Analog Rumble Pad (clear black)
SLPH-00125 Hori Analog Rumble Pad (clear yellow)
SLPH-00126 Namco Jogcon, digital pad, steering dial (SLEH-0020/SLUH-00059)
SLPH-00127 ?
SLPH-00128 ASCII stick ZERO3
SLPH-00129 ASCII Pad V2 (wood grain pitch)
SLPH-00130 Hori Real Arcade (camouflage)
SLPH-00131 Hori Ehrgeiz Stick
SLPH-00132 ASCII Pad V3 (blue)
SLPH-00133 ASCII Fighter Stick V Jr. (limited edition)
SLPH-00134 ASCII Pad V3 (blue) with cable reel
SLPH-00135 ASCII Pad V3 (blue) with V2 (silver)
SLPH-00136 ASCII Pad V3 with V2 (purple metallic)
SLPH-00137 ASCII Pad V3 with V2 (gold)
SLPH-00138 ASCII Pad V3 with "VPRO. aka Ascii Fighter Stick V"
SLPH-00139 Hori Analog Rumble Pad (gray)
SLPH-00140 Hori Analog Rumble Pad (black)
SLPH-00141 Hori Analog Rumble Pad (blue)
</code></pre>
<p>And, maybe unlicensed (they don't have official SLPH numbers, still they are
listed as official controllers on PSX CDROM back covers):<br/></p>
<pre><code> ASC-05158B ASCII Beatmania Junk (similar to SLEH-0021)
ASC-0528T Sammy Shakkato Tambourine
BANC-0001 Bandai Fishing Controller
BANC-0002 Bandai Kids Station
RU017 Konami Dance Dance Revolution Controller (Dance Mat)
GAE001 G.A.E. Baton stick with 2 buttons (for The Maestromusic)
</code></pre>
<p>And whatever:<br/></p>
<pre><code> RU029 Konami Beatmania IIDX
RU014 Konami Pop'n Music (buttons A,B,C,D,E,F,G,H,I, and Select/Start)
RU014-J2 Konami Pop'n Controller 2
RU036 Konami Pop'n Controller (Arcade Style)
? Produce! Paca Paca Passion
? Sega/Ascii Minimoni Shakatto Tambourine
</code></pre>
<h4 id="sony-licensed-hardware-europe">Sony Licensed Hardware (Europe)</h4>
<pre><code> SLEH-00001 Ascii Specialized Pad (similar to SLPH-00005: ASCII ASCIIPAD V)
SLEH-00002 Ascii Arcade Stick, psx-shaped digital stick (SLPH-00003)
SLEH-00003 Namco Negcon, Twist controller (SLPH-00001)
SLEH-00004 Namco Arcade Stick (SLPH-00023)
SLEH-00005 Konami Hyper Blaster, IRQ10-based Lightgun (SLPH-00014/SLUH-00017)
SLEH-00006 Mad Catz Steering Wheel (SLPH-?)
SLEH-00007 Namco G-Con 45, Cinch-based Lightgun (SLPH-00034/SLUH-00035)
SLEH-00008 Ascii Grip, single-handed digital pad (SLPH-00027/SLUH-00038)
SLEH-00009 Ascii Arcade Stick v2 (SLPH-00035)
SLEH-00010 Ascii Enhanced Control Pad (similar as SLEH-00001) (SLPH-00039)
SLEH-00011 Resident Evil Pad (aka SLPH-00060 ASCII Biohazard)
SLEH-00012 Reality-Quest The Glove (right-handed only) (SLUH-00045/SLPH-?)
SLEH-00013 CD Case (small nylon bag for fourteen CDs) (SLPH-?)
SLEH-00014 ?
SLEH-00015 PlayStation Case (bigger bag for the console) (SLPH-?)
SLEH-00016 PlayStation Case + Digital Joypad + Memory Card
SLEH-00017 ?
SLEH-00018 Ascii Sphere 360 (SLUH-00028/SLPH-?)
SLEH-00019 Interact V3 Racing Wheel (SLPH-?)
SLEH-00020 Namco JogCon, digital pad, steering dial (SLPH-00126/SLUH-00059)
SLEH-00021 Konami Beatmania Controller (SLPH-?)
SLEH-00022 ?
SLEH-00023 Official Dance Mat (RU017/SLUH-00071) (for PSone and PS2)
SLEH-00024 Fanatec Speedster 2 (wheel with pedals) (for PSone and PS2)
SLEH-00025 Mad Catz 8MB Memory Card (for PS2)
SLEH-00026 Olympus Eye-Trek FMD-20P Game/DVD glasses (for PS2)
SLEH-00027 Logitech Cordless Controller... or Eye-Trek FMD-20P, too? (PSx?)
SLEH-00028 ?
SLEH-00029 Fanatec Speedster 3 (for PS2)
SLEH-00030 Logitech Eye Toy (camera?) (for PS2)
</code></pre>
<p>And, maybe unlicensed:<br/></p>
<pre><code> Mad Catz Wrist Rumbler (rumble add-on for pre-dualshock controllers)
</code></pre>
<h4 id="sony-licensed-hardware-usa">Sony Licensed Hardware (USA)</h4>
<pre><code> SLUH-00001 Specialized Joystick (single-axis, digital?)
SLUH-00002 Control Pad (redesigned joypad)
SLUH-00003 InterAct Piranha Pad, digital pad, autofire/slowmotion
SLUH-00017 Konami Justifier, IRQ10-based Lightgun (Hyperblaster/SLPH-00014)
SLUH-00018 Enhanced Pad (joypad with whatever extra functions)
SLUH-00022 Analog and Digital Steering Wheel with pedals (for testdrive 4?)
SLUH-00026 Optec Mach 1 (gray steering/flight controller with pedals)
SLUH-00028 Ascii Sphere 360 (SLEH-00018)
SLUH-00029 Namco NPC-102 Joystick (single-axis, digital?)
SLUH-00031 Interact Program Pad
SLUH-00033 Piranha Pad (redesigned joypad)
SLUH-00034 NUBY Manufacturing The Heater, white lightgun (irq10 or cinch?)
SLUH-00035 Namco G-CON 45, Cinch-based Lightgun (SLEH-0007/SLPH-00034)
SLUH-00037 Arcade Stick (single-axis, digital?)
SLUH-00038 ASCII Grip V, single-handed digital pad (SLPH-00027/SLEH-00008)
SLUH-00040 System Organizer (huh? looks like... a black storage box?)
SLUH-00041 V3 Racing Wheel with pedals
SLUH-00043 GunCon (bundled with Time Crisis 1)
SLUH-00044 Remote Wizard (looks like wireless joypad or so)
SLUH-00045 Reality-Quest The Glove (right-handed only) (SLEH-00012/SLPH-?)
SLUH-00046 GunCon (bundled with Point Blank)
SLUH-00055 Aftershock Wheel with pedals
SLUH-00056 UltraRacer Steering Controller (grip-style)
SLUH-00057 EA Sports Game Pad (redesigned joypad)
SLUH-00058 something for point blank 2 (?) (maybe a lightgun)
SLUH-00059 Namco Jogcon, digital pad, steering dial (SLEH-0020/SLPH-00126)
SLUH-00061 MadCatz MC2 Racing Wheel (black/gray)
SLUH-00063 Bass Landing Fishing Reel controller
SLUH-00066 Sportster racing wheel
SLUH-00068 Jungle Book Rhythm N Groove Dance Pack
SLUH-00071 Konami Dance Pad (DDR Dance Pad) (RU017)
SLUH-00072 GunCon (bundled with Point Blank 3)
SLUH-00073 GunCon (bundled with Time Crisis 2 - Project Titan)
SLUH-00077 Logitech Cordless Controller, analog pad (ps1/ps2)
SLUH-00081 Logitech NetPlay Controller, pad with keyboard (usb/ps2)
SLUH-00083 Konami Dance Dance Revolution Controller (for PS1 and PS2)
SLUH-00084 NYKO iType2, pad with keyboard (usb/ps2)
SLUH-00085 Logitech Cordless Action Controller (for PS2)
SLUH-00086 Namco/Taiko Drum Master (Taiko Controller Pack) (for PS2)
SLUH-00088 RedOctane In the Groove Dance Pad Controller ?
SLUH-00090 Dance Pad (bundled with Pump It Up) (for PS2)
</code></pre>
<h4 id="sony-licensed-hardware-asia">Sony Licensed Hardware (Asia)</h4>
<pre><code> Unknown (if any)
</code></pre>
<h4 id="newer-hardware-add-ons">Newer hardware add-ons?</h4>
<pre><code> SCEH-0001 SingStar (USB to Microfon) (for PS2)
</code></pre>
<h4 id="note">Note</h4>
<p>Early SLEH/SLUH devices used 4-digit numbers (eg. the "official" name for
SLEH-00003 is SLEH-0003; unlike as shown in the above list).<br/></p>
<h4 id="software-cdrom-game-codes">Software (CDROM Game Codes)</h4>
<pre><code> SCES-NNNNN Sony Computer Europe Software
SCED-NNNNN Sony Computer Europe Demo
SLES-NNNNN Sony Licensed Europe Software
SLED-NNNNN Sony Licensed Europe Demo
SCPS-NNNNN Sony Computer Japan Software
SLPS-NNNNN Sony Licensed Japan Software
SLPM-NNNNN Sony Licensed Japan ... ?
SCUS-NNNNN Sony Computer USA Software
SLUS-NNNNN Sony Licensed USA Software
PAPX-NNNNN Demo ...?
LSP-NNNNNN Lightspan series (non-retail educational games)
</code></pre>
<p>Note: Multi-disc games have more than one game code. The game code for Disc 1
is also printed on the CD cover, and used in memory card filenames. The
per-disk game codes are printed on the discs, and are used as boot-executable
name in SYSTEM.CNF file. There is no fixed rule for the multi-disc numbering;
some games are using increasing numbers of XNNNN or NNNNX (with X increasing
from 0 upwards), and some are randomly using values like NNNXX and NNNYY for
different discs.<br/></p>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<nav aria-label="Footer" class="md-footer__inner md-grid">
<a class="md-footer__link md-footer__link--prev" href="../psxdevboardchipsets/" rel="prev">
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</div>
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Previous
</span>
PSX Dev-Board Chipsets
</div>
</div>
</a>
<a class="md-footer__link md-footer__link--next" href="../pinouts/" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Next
</span>
Pinouts
</div>
</div>
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"></path></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" rel="noopener" target="_blank">
Material for MkDocs
</a>
... <a class="link--pdf-download" download href="../psx-spx.pdf" title="PDF">download PDF</a></div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}, "search": "../assets/javascripts/workers/search.fe42c31b.min.js", "version": null}</script>
<script src="../assets/javascripts/bundle.4ea5477f.min.js"></script>
</body>
</html>

341
index.html Normal file
View File

@ -0,0 +1,341 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8"/>
<meta content="width=device-width,initial-scale=1" name="viewport"/>
<link href="https://psx-spx.consoledev.net/" rel="canonical"/>
<link href="assets/images/favicon.png" rel="icon"/>
<meta content="mkdocs-1.1.2, mkdocs-material-7.1.3" name="generator"/>
<title>PlayStation Specifications - psx-spx</title>
<link href="assets/stylesheets/main.e35208c4.min.css" rel="stylesheet"/>
<link href="assets/stylesheets/palette.ef6f36e2.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font-family:"Roboto";--md-code-font-family:"Roboto Mono"}</style>
<link href="css/extra.css" rel="stylesheet"/>
</head>
<body data-md-color-accent="indigo" data-md-color-primary="indigo" data-md-color-scheme="default" dir="ltr">
<script>function __prefix(e){return new URL(".",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
<script>var palette=__get("__palette");if(null!==palette&&"object"==typeof palette.color)for(var key in palette.color)document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="PlayStation Specifications - psx-spx" class="md-header__button md-logo" data-md-component="logo" href="." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
PlayStation Specifications - psx-spx
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Home
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="indigo" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Switch to dark mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2 2 2 0 0 1 2-2m10-3a5 5 0 0 1 5 5 5 5 0 0 1-5 5H7a5 5 0 0 1-5-5 5 5 0 0 1 5-5h10M7 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3h10a3 3 0 0 0 3-3 3 3 0 0 0-3-3H7z"></path></svg>
</label>
<input class="md-option" data-md-color-accent="blue" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="blue" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Switch to light mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3z"></path></svg>
</label>
</form>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" data-md-state="active" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</label>
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"></path></svg>
</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="PlayStation Specifications - psx-spx" class="md-nav__button md-logo" data-md-component="logo" href="." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
PlayStation Specifications - psx-spx
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<a class="md-nav__link md-nav__link--active" href=".">
Home
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="memorymap/">
Memory Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="iomap/">
I/O Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="graphicsprocessingunitgpu/">
Graphics Processing Unit (GPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="geometrytransformationenginegte/">
Geometry Transformation Engine (GTE)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="macroblockdecodermdec/">
Macroblock Decoder (MDEC)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="soundprocessingunitspu/">
Sound Processing Unit (SPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="interrupts/">
Interrupts
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="dmachannels/">
DMA Channels
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="timers/">
Timers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="cdromdrive/">
CDROM Drive
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="controllersandmemorycards/">
Controllers and Memory Cards
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="pocketstation/">
Pocketstation
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="serialportsio/">
Serial Port (SIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="expansionportpio/">
Expansion Port (PIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="memorycontrol/">
Memory Control
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="unpredictablethings/">
Unpredictable Things
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="cpuspecifications/">
CPU Specifications
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="kernelbios/">
Kernel (BIOS)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="arcadecabinets/">
Arcade Cabinets
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="cheatdevices/">
Cheat Devices
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="psxdevboardchipsets/">
PSX Dev-Board Chipsets
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="hardwarenumbers/">
Hardware Numbers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="pinouts/">
Pinouts
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="aboutcredits/">
About &amp; Credits
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="cdromvideocdsvcd/">
CDROM Video CDs (VCD)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="cdrominternalinfoonpsxcdromcontroller/">
CDROM Internal Info on PSX CDROM Controller
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a class="md-content__button md-icon" href="https://github.com/psx-spx/psx-spx.github.io/edit/master/docs/index.md" title="Edit this page">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"></path></svg>
</a>
<h1>Home</h1>
<p>This is a conversion/edition of Martin "nocash" Korth's Playstation specs document originally hosted at <a href="https://problemkaputt.de/psx-spx.htm">https://problemkaputt.de/psx-spx.htm</a>. See <a href="https://github.com/psx-spx/psx-spx.github.io#readme">https://github.com/psx-spx/psx-spx.github.io#readme</a> for more details.<br/>
You can also download this website as a <a href="psx-spx.pdf">single-page pdf</a>.</p>
<p><a href="memorymap/">Memory Map</a><br/>
<a href="iomap/">I/O Map</a><br/>
<a href="graphicsprocessingunitgpu/">Graphics Processing Unit (GPU)</a><br/>
<a href="geometrytransformationenginegte/">Geometry Transformation Engine (GTE)</a><br/>
<a href="macroblockdecodermdec/">Macroblock Decoder (MDEC)</a><br/>
<a href="soundprocessingunitspu/">Sound Processing Unit (SPU)</a><br/>
<a href="interrupts/">Interrupts</a><br/>
<a href="dmachannels/">DMA Channels</a><br/>
<a href="timers/">Timers</a><br/>
<a href="cdromdrive/">CDROM Drive</a><br/>
<a href="controllersandmemorycards/">Controllers and Memory Cards</a><br/>
<a href="pocketstation/">Pocketstation</a><br/>
<a href="serialportsio/">Serial Port (SIO)</a><br/>
<a href="expansionportpio/">Expansion Port (PIO)</a><br/>
<a href="memorycontrol/">Memory Control</a><br/>
<a href="unpredictablethings/">Unpredictable Things</a><br/>
<a href="cpuspecifications/">CPU Specifications</a><br/>
<a href="kernelbios/">Kernel (BIOS)</a><br/>
<a href="arcadecabinets/">Arcade Cabinets</a><br/>
<a href="cheatdevices/">Cheat Devices</a><br/>
<a href="psxdevboardchipsets/">PSX Dev-Board Chipsets</a><br/>
<a href="hardwarenumbers/">Hardware Numbers</a><br/>
<a href="pinouts/">Pinouts</a><br/>
<a href="aboutcredits/">About &amp; Credits</a><br/>
<a href="cdromvideocdsvcd/">CDROM Video CDs (VCD)</a><br/>
<a href="cdrominternalinfoonpsxcdromcontroller/">CDROM Internal Info on PSX CDROM Controller</a><br/></p>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<nav aria-label="Footer" class="md-footer__inner md-grid">
<a class="md-footer__link md-footer__link--next" href="memorymap/" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Next
</span>
Memory Map
</div>
</div>
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"></path></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" rel="noopener" target="_blank">
Material for MkDocs
</a>
... <a class="link--pdf-download" download href="./psx-spx.pdf" title="PDF">download PDF</a></div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": ".", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}, "search": "assets/javascripts/workers/search.fe42c31b.min.js", "version": null}</script>
<script src="assets/javascripts/bundle.4ea5477f.min.js"></script>
</body>
</html>

496
interrupts/index.html Normal file
View File

@ -0,0 +1,496 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8"/>
<meta content="width=device-width,initial-scale=1" name="viewport"/>
<link href="https://psx-spx.consoledev.net/interrupts/" rel="canonical"/>
<link href="../assets/images/favicon.png" rel="icon"/>
<meta content="mkdocs-1.1.2, mkdocs-material-7.1.3" name="generator"/>
<title>Interrupts - PlayStation Specifications - psx-spx</title>
<link href="../assets/stylesheets/main.e35208c4.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.ef6f36e2.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font-family:"Roboto";--md-code-font-family:"Roboto Mono"}</style>
<link href="../css/extra.css" rel="stylesheet"/>
</head>
<body data-md-color-accent="indigo" data-md-color-primary="indigo" data-md-color-scheme="default" dir="ltr">
<script>function __prefix(e){return new URL("..",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
<script>var palette=__get("__palette");if(null!==palette&&"object"==typeof palette.color)for(var key in palette.color)document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a class="md-skip" href="#interrupts">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="PlayStation Specifications - psx-spx" class="md-header__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
PlayStation Specifications - psx-spx
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Interrupts
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="indigo" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Switch to dark mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2 2 2 0 0 1 2-2m10-3a5 5 0 0 1 5 5 5 5 0 0 1-5 5H7a5 5 0 0 1-5-5 5 5 0 0 1 5-5h10M7 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3h10a3 3 0 0 0 3-3 3 3 0 0 0-3-3H7z"></path></svg>
</label>
<input class="md-option" data-md-color-accent="blue" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="blue" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Switch to light mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3z"></path></svg>
</label>
</form>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" data-md-state="active" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</label>
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"></path></svg>
</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="PlayStation Specifications - psx-spx" class="md-nav__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
PlayStation Specifications - psx-spx
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
Home
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../memorymap/">
Memory Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../iomap/">
I/O Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../graphicsprocessingunitgpu/">
Graphics Processing Unit (GPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometrytransformationenginegte/">
Geometry Transformation Engine (GTE)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../macroblockdecodermdec/">
Macroblock Decoder (MDEC)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../soundprocessingunitspu/">
Sound Processing Unit (SPU)
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<label class="md-nav__link md-nav__link--active" for="__toc">
Interrupts
<span class="md-nav__icon md-icon"></span>
</label>
<a class="md-nav__link md-nav__link--active" href="./">
Interrupts
</a>
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801070h-i_stat-interrupt-status-register-rstatus-wacknowledge">
1F801070h I_STAT - Interrupt status register (R=Status, W=Acknowledge)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801074h-i_mask-interrupt-mask-register-rw">
1F801074h I_MASK - Interrupt mask register (R/W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#secondary-irq10-controller-port-1f802030h">
Secondary IRQ10 Controller (Port 1F802030h)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#interrupt-request-execution">
Interrupt Request / Execution
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#interrupt-acknowledge">
Interrupt Acknowledge
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#cop0-interrupt-handling">
COP0 Interrupt Handling
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#psx-specific-cop0-notes">
PSX specific COP0 Notes
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#halt-function-wait-for-interrupt">
Halt Function (Wait for Interrupt)
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../dmachannels/">
DMA Channels
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../timers/">
Timers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromdrive/">
CDROM Drive
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../controllersandmemorycards/">
Controllers and Memory Cards
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pocketstation/">
Pocketstation
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../serialportsio/">
Serial Port (SIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../expansionportpio/">
Expansion Port (PIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../memorycontrol/">
Memory Control
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../unpredictablethings/">
Unpredictable Things
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cpuspecifications/">
CPU Specifications
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../kernelbios/">
Kernel (BIOS)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../arcadecabinets/">
Arcade Cabinets
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cheatdevices/">
Cheat Devices
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../psxdevboardchipsets/">
PSX Dev-Board Chipsets
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../hardwarenumbers/">
Hardware Numbers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pinouts/">
Pinouts
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../aboutcredits/">
About &amp; Credits
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromvideocdsvcd/">
CDROM Video CDs (VCD)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdrominternalinfoonpsxcdromcontroller/">
CDROM Internal Info on PSX CDROM Controller
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801070h-i_stat-interrupt-status-register-rstatus-wacknowledge">
1F801070h I_STAT - Interrupt status register (R=Status, W=Acknowledge)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801074h-i_mask-interrupt-mask-register-rw">
1F801074h I_MASK - Interrupt mask register (R/W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#secondary-irq10-controller-port-1f802030h">
Secondary IRQ10 Controller (Port 1F802030h)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#interrupt-request-execution">
Interrupt Request / Execution
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#interrupt-acknowledge">
Interrupt Acknowledge
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#cop0-interrupt-handling">
COP0 Interrupt Handling
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#psx-specific-cop0-notes">
PSX specific COP0 Notes
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#halt-function-wait-for-interrupt">
Halt Function (Wait for Interrupt)
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a class="md-content__button md-icon" href="https://github.com/psx-spx/psx-spx.github.io/edit/master/docs/interrupts.md" title="Edit this page">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"></path></svg>
</a>
<h1 id="interrupts">Interrupts</h1>
<h4 id="1f801070h-i_stat-interrupt-status-register-rstatus-wacknowledge">1F801070h I_STAT - Interrupt status register (R=Status, W=Acknowledge)</h4>
<h4 id="1f801074h-i_mask-interrupt-mask-register-rw">1F801074h I_MASK - Interrupt mask register (R/W)</h4>
<p>Status: Read I_STAT (0=No IRQ, 1=IRQ)<br/>
Acknowledge: Write I_STAT (0=Clear Bit, 1=No change)<br/>
Mask: Read/Write I_MASK (0=Disabled, 1=Enabled)<br/></p>
<pre><code> 0 IRQ0 VBLANK (PAL=50Hz, NTSC=60Hz)
1 IRQ1 GPU Can be requested via GP0(1Fh) command (rarely used)
2 IRQ2 CDROM
3 IRQ3 DMA
4 IRQ4 TMR0 Timer 0 aka Root Counter 0 (Sysclk or Dotclk)
5 IRQ5 TMR1 Timer 1 aka Root Counter 1 (Sysclk or H-blank)
6 IRQ6 TMR2 Timer 2 aka Root Counter 2 (Sysclk or Sysclk/8)
7 IRQ7 Controller and Memory Card - Byte Received Interrupt
8 IRQ8 SIO
9 IRQ9 SPU
10 IRQ10 Controller - Lightpen Interrupt. Also shared by PIO and DTL cards.
11-15 Not used (always zero)
16-31 Garbage
</code></pre>
<h4 id="secondary-irq10-controller-port-1f802030h">Secondary IRQ10 Controller (Port 1F802030h)</h4>
<p><a href="../expansionportpio/#exp2-dtl-h2000-io-ports">EXP2 DTL-H2000 I/O Ports</a><br/></p>
<h4 id="interrupt-request-execution">Interrupt Request / Execution</h4>
<p>The interrupt request bits in I_STAT are edge-triggered, ie. the get set ONLY
if the corresponding interrupt source changes from "false to true".<br/>
If one or more interrupts are requested and enabled, ie. if "(I_STAT AND
I_MASK)=nonzero", then cop0r13.bit10 gets set, and when cop0r12.bit10 and
cop0r12.bit0 are set, too, then the interrupt gets executed.<br/></p>
<h4 id="interrupt-acknowledge">Interrupt Acknowledge</h4>
<p>To acknowledge an interrupt, write a "0" to the corresponding bit in I_STAT.
Most interrupts (except IRQ0,4,5,6) must be additionally acknowledged at the
I/O port that has caused them (eg. JOY_CTRL.bit4).<br/>
Observe that the I_STAT bits are edge-triggered (they get set only on
High-to-Low, or False-to-True edges). The correct acknowledge order is:<br/></p>
<pre><code> First, acknowledge I_STAT (eg. I_STAT.bit7=0)
Then, acknowledge corresponding I/O port (eg. JOY_CTRL.bit4=1)
</code></pre>
<p>When doing it vice-versa, the hardware may miss further IRQs (eg. when first
setting JOY_CTRL.4=1, then a new IRQ may occur in JOY_STAT.4 within a single
clock cycle, thereafter, setting I_STAT.7=0 would successfully reset I_STAT.7,
but, since JOY_STAT.4 is already set, there'll be no further edge, so I_STAT.7
won't be ever set in future).<br/></p>
<h4 id="cop0-interrupt-handling">COP0 Interrupt Handling</h4>
<p>Relevant COP0 registers are cop0r13 (CAUSE, reason flags), and cop0r12 (SR,
control flags), and cop0r14 (EPC, return address), and, cop0cmd=10h (aka RFE
opcode) is used to prepare the return from interrupts. For more info, see<br/>
<a href="../cpuspecifications/#cop0-exception-handling">COP0 - Exception Handling</a><br/></p>
<h4 id="psx-specific-cop0-notes">PSX specific COP0 Notes</h4>
<p>COP0 has six hardware interrupt bits, of which, the PSX uses only cop0r13.bit10
(the other ones, cop0r13.bit11-15 are always zero). cop0r13.bit10 is NOT a
latch, ie. it gets automatically cleared as soon as "(I_STAT AND I_MASK)=zero",
so there's no need to do an acknowledge at the cop0 side. COP0 additionally has
two software interrupt bits, cop0r13.bit8-9, which do exist in the PSX, too,
these bits are read/write-able latches which can be set/cleared manually to
request/acknowledge exceptions by software.<br/></p>
<h4 id="halt-function-wait-for-interrupt">Halt Function (Wait for Interrupt)</h4>
<p>The PSX doesn't have a HALT opcode, so, even if the program is merely waiting
for an interrupt to occur, the CPU is always running at full speed, which is
resulting in high power consumption, and, in case of emulators, high CPU
emulation load. To save energy, and to make emulation smoother on slower
computers, I've added a Halt function for use in emulators:<br/>
<a href="../expansionportpio/#exp2-nocash-emulation-expansion">EXP2 Nocash Emulation Expansion</a><br/></p>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<nav aria-label="Footer" class="md-footer__inner md-grid">
<a class="md-footer__link md-footer__link--prev" href="../soundprocessingunitspu/" rel="prev">
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</div>
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Previous
</span>
Sound Processing Unit (SPU)
</div>
</div>
</a>
<a class="md-footer__link md-footer__link--next" href="../dmachannels/" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Next
</span>
DMA Channels
</div>
</div>
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"></path></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" rel="noopener" target="_blank">
Material for MkDocs
</a>
... <a class="link--pdf-download" download href="../psx-spx.pdf" title="PDF">download PDF</a></div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}, "search": "../assets/javascripts/workers/search.fe42c31b.min.js", "version": null}</script>
<script src="../assets/javascripts/bundle.4ea5477f.min.js"></script>
</body>
</html>

805
iomap/index.html Normal file
View File

@ -0,0 +1,805 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8"/>
<meta content="width=device-width,initial-scale=1" name="viewport"/>
<link href="https://psx-spx.consoledev.net/iomap/" rel="canonical"/>
<link href="../assets/images/favicon.png" rel="icon"/>
<meta content="mkdocs-1.1.2, mkdocs-material-7.1.3" name="generator"/>
<title>I/O Map - PlayStation Specifications - psx-spx</title>
<link href="../assets/stylesheets/main.e35208c4.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.ef6f36e2.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font-family:"Roboto";--md-code-font-family:"Roboto Mono"}</style>
<link href="../css/extra.css" rel="stylesheet"/>
</head>
<body data-md-color-accent="indigo" data-md-color-primary="indigo" data-md-color-scheme="default" dir="ltr">
<script>function __prefix(e){return new URL("..",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
<script>var palette=__get("__palette");if(null!==palette&&"object"==typeof palette.color)for(var key in palette.color)document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a class="md-skip" href="#io-map">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="PlayStation Specifications - psx-spx" class="md-header__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
PlayStation Specifications - psx-spx
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
I/O Map
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="indigo" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Switch to dark mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2 2 2 0 0 1 2-2m10-3a5 5 0 0 1 5 5 5 5 0 0 1-5 5H7a5 5 0 0 1-5-5 5 5 0 0 1 5-5h10M7 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3h10a3 3 0 0 0 3-3 3 3 0 0 0-3-3H7z"></path></svg>
</label>
<input class="md-option" data-md-color-accent="blue" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="blue" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Switch to light mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3z"></path></svg>
</label>
</form>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" data-md-state="active" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</label>
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"></path></svg>
</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="PlayStation Specifications - psx-spx" class="md-nav__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
PlayStation Specifications - psx-spx
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
Home
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../memorymap/">
Memory Map
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<label class="md-nav__link md-nav__link--active" for="__toc">
I/O Map
<span class="md-nav__icon md-icon"></span>
</label>
<a class="md-nav__link md-nav__link--active" href="./">
I/O Map
</a>
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#expansion-region-1">
Expansion Region 1
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#scratchpad">
Scratchpad
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#memory-control-1">
Memory Control 1
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#peripheral-io-ports">
Peripheral I/O Ports
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#memory-control-2">
Memory Control 2
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#interrupt-control">
Interrupt Control
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#dma-registers">
DMA Registers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#timers-aka-root-counters">
Timers (aka Root counters)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#cdrom-registers-addressreadwriteindex">
CDROM Registers (Address.Read/Write.Index)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#gpu-registers">
GPU Registers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#mdec-registers">
MDEC Registers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#spu-voice-023-registers">
SPU Voice 0..23 Registers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#spu-control-registers">
SPU Control Registers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#spu-reverb-configuration-area">
SPU Reverb Configuration Area
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#spu-internal-registers">
SPU Internal Registers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#expansion-region-2-default-128-bytes-max-8-kbytes">
Expansion Region 2 (default 128 bytes, max 8 KBytes)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#expansion-region-2-dual-serial-port-for-tty-debug-terminal">
Expansion Region 2 - Dual Serial Port (for TTY Debug Terminal)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#expansion-region-2-intdippost">
Expansion Region 2 - Int/Dip/Post
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#expansion-region-2-nocash-emulation-expansion">
Expansion Region 2 - Nocash Emulation Expansion
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#expansion-region-3-default-1-byte-max-2-mbytes">
Expansion Region 3 (default 1 byte, max 2 MBytes)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#bios-region-default-512-kbytes-max-4-mbytes">
BIOS Region (default 512 Kbytes, max 4 MBytes)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#memory-control-3-cache-control">
Memory Control 3 (Cache Control)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#coprocessor-registers">
Coprocessor Registers
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../graphicsprocessingunitgpu/">
Graphics Processing Unit (GPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometrytransformationenginegte/">
Geometry Transformation Engine (GTE)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../macroblockdecodermdec/">
Macroblock Decoder (MDEC)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../soundprocessingunitspu/">
Sound Processing Unit (SPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../interrupts/">
Interrupts
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../dmachannels/">
DMA Channels
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../timers/">
Timers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromdrive/">
CDROM Drive
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../controllersandmemorycards/">
Controllers and Memory Cards
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pocketstation/">
Pocketstation
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../serialportsio/">
Serial Port (SIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../expansionportpio/">
Expansion Port (PIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../memorycontrol/">
Memory Control
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../unpredictablethings/">
Unpredictable Things
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cpuspecifications/">
CPU Specifications
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../kernelbios/">
Kernel (BIOS)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../arcadecabinets/">
Arcade Cabinets
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cheatdevices/">
Cheat Devices
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../psxdevboardchipsets/">
PSX Dev-Board Chipsets
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../hardwarenumbers/">
Hardware Numbers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pinouts/">
Pinouts
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../aboutcredits/">
About &amp; Credits
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromvideocdsvcd/">
CDROM Video CDs (VCD)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdrominternalinfoonpsxcdromcontroller/">
CDROM Internal Info on PSX CDROM Controller
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#expansion-region-1">
Expansion Region 1
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#scratchpad">
Scratchpad
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#memory-control-1">
Memory Control 1
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#peripheral-io-ports">
Peripheral I/O Ports
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#memory-control-2">
Memory Control 2
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#interrupt-control">
Interrupt Control
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#dma-registers">
DMA Registers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#timers-aka-root-counters">
Timers (aka Root counters)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#cdrom-registers-addressreadwriteindex">
CDROM Registers (Address.Read/Write.Index)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#gpu-registers">
GPU Registers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#mdec-registers">
MDEC Registers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#spu-voice-023-registers">
SPU Voice 0..23 Registers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#spu-control-registers">
SPU Control Registers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#spu-reverb-configuration-area">
SPU Reverb Configuration Area
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#spu-internal-registers">
SPU Internal Registers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#expansion-region-2-default-128-bytes-max-8-kbytes">
Expansion Region 2 (default 128 bytes, max 8 KBytes)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#expansion-region-2-dual-serial-port-for-tty-debug-terminal">
Expansion Region 2 - Dual Serial Port (for TTY Debug Terminal)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#expansion-region-2-intdippost">
Expansion Region 2 - Int/Dip/Post
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#expansion-region-2-nocash-emulation-expansion">
Expansion Region 2 - Nocash Emulation Expansion
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#expansion-region-3-default-1-byte-max-2-mbytes">
Expansion Region 3 (default 1 byte, max 2 MBytes)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#bios-region-default-512-kbytes-max-4-mbytes">
BIOS Region (default 512 Kbytes, max 4 MBytes)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#memory-control-3-cache-control">
Memory Control 3 (Cache Control)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#coprocessor-registers">
Coprocessor Registers
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a class="md-content__button md-icon" href="https://github.com/psx-spx/psx-spx.github.io/edit/master/docs/iomap.md" title="Edit this page">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"></path></svg>
</a>
<h1 id="io-map">I/O Map</h1>
<h4 id="expansion-region-1">Expansion Region 1</h4>
<pre><code> 1F000000h 80000h Expansion Region (default 512 Kbytes, max 8 MBytes)
1F000000h 100h Expansion ROM Header (IDs and Entrypoints)
</code></pre>
<h4 id="scratchpad">Scratchpad</h4>
<pre><code> 1F800000h 400h Scratchpad (1K Fast RAM) (Data Cache mapped to fixed address)
</code></pre>
<h4 id="memory-control-1">Memory Control 1</h4>
<pre><code> 1F801000h 4 Expansion 1 Base Address (usually 1F000000h)
1F801004h 4 Expansion 2 Base Address (usually 1F802000h)
1F801008h 4 Expansion 1 Delay/Size (usually 0013243Fh; 512Kbytes 8bit-bus)
1F80100Ch 4 Expansion 3 Delay/Size (usually 00003022h; 1 byte)
1F801010h 4 BIOS ROM Delay/Size (usually 0013243Fh; 512Kbytes 8bit-bus)
1F801014h 4 SPU_DELAY Delay/Size (usually 200931E1h)
1F801018h 4 CDROM_DELAY Delay/Size (usually 00020843h or 00020943h)
1F80101Ch 4 Expansion 2 Delay/Size (usually 00070777h; 128-bytes 8bit-bus)
1F801020h 4 COM_DELAY / COMMON_DELAY (00031125h or 0000132Ch or 00001325h)
</code></pre>
<h4 id="peripheral-io-ports">Peripheral I/O Ports</h4>
<pre><code> 1F801040h 1/4 JOY_DATA Joypad/Memory Card Data (R/W)
1F801044h 4 JOY_STAT Joypad/Memory Card Status (R)
1F801048h 2 JOY_MODE Joypad/Memory Card Mode (R/W)
1F80104Ah 2 JOY_CTRL Joypad/Memory Card Control (R/W)
1F80104Eh 2 JOY_BAUD Joypad/Memory Card Baudrate (R/W)
1F801050h 1/4 SIO_DATA Serial Port Data (R/W)
1F801054h 4 SIO_STAT Serial Port Status (R)
1F801058h 2 SIO_MODE Serial Port Mode (R/W)
1F80105Ah 2 SIO_CTRL Serial Port Control (R/W)
1F80105Ch 2 SIO_MISC Serial Port Internal Register (R/W)
1F80105Eh 2 SIO_BAUD Serial Port Baudrate (R/W)
</code></pre>
<h4 id="memory-control-2">Memory Control 2</h4>
<pre><code> 1F801060h 4/2 RAM_SIZE (usually 00000B88h; 2MB RAM mirrored in first 8MB)
</code></pre>
<h4 id="interrupt-control">Interrupt Control</h4>
<pre><code> 1F801070h 2 I_STAT - Interrupt status register
1F801074h 2 I_MASK - Interrupt mask register
</code></pre>
<h4 id="dma-registers">DMA Registers</h4>
<pre><code> 1F80108xh DMA0 channel 0 - MDECin
1F80109xh DMA1 channel 1 - MDECout
1F8010Axh DMA2 channel 2 - GPU (lists + image data)
1F8010Bxh DMA3 channel 3 - CDROM
1F8010Cxh DMA4 channel 4 - SPU
1F8010Dxh DMA5 channel 5 - PIO (Expansion Port)
1F8010Exh DMA6 channel 6 - OTC (reverse clear OT) (GPU related)
1F8010F0h DPCR - DMA Control register
1F8010F4h DICR - DMA Interrupt register
1F8010F8h unknown
1F8010FCh unknown
</code></pre>
<h4 id="timers-aka-root-counters">Timers (aka Root counters)</h4>
<pre><code> 1F80110xh Timer 0 Dotclock
1F80111xh Timer 1 Horizontal Retrace
1F80112xh Timer 2 1/8 system clock
</code></pre>
<h4 id="cdrom-registers-addressreadwriteindex">CDROM Registers (Address.Read/Write.Index)</h4>
<pre><code> 1F801800h.x.x 1 CD Index/Status Register (Bit0-1 R/W, Bit2-7 Read Only)
1F801801h.R.x 1 CD Response Fifo (R) (usually with Index1)
1F801802h.R.x 1/2 CD Data Fifo - 8bit/16bit (R) (usually with Index0..1)
1F801803h.R.0 1 CD Interrupt Enable Register (R)
1F801803h.R.1 1 CD Interrupt Flag Register (R/W)
1F801803h.R.2 1 CD Interrupt Enable Register (R) (Mirror)
1F801803h.R.3 1 CD Interrupt Flag Register (R/W) (Mirror)
1F801801h.W.0 1 CD Command Register (W)
1F801802h.W.0 1 CD Parameter Fifo (W)
1F801803h.W.0 1 CD Request Register (W)
1F801801h.W.1 1 Unknown/unused
1F801802h.W.1 1 CD Interrupt Enable Register (W)
1F801803h.W.1 1 CD Interrupt Flag Register (R/W)
1F801801h.W.2 1 Unknown/unused
1F801802h.W.2 1 CD Audio Volume for Left-CD-Out to Left-SPU-Input (W)
1F801803h.W.2 1 CD Audio Volume for Left-CD-Out to Right-SPU-Input (W)
1F801801h.W.3 1 CD Audio Volume for Right-CD-Out to Right-SPU-Input (W)
1F801802h.W.3 1 CD Audio Volume for Right-CD-Out to Left-SPU-Input (W)
1F801803h.W.3 1 CD Audio Volume Apply Changes (by writing bit5=1)
</code></pre>
<h4 id="gpu-registers">GPU Registers</h4>
<pre><code> 1F801810h.Write 4 GP0 Send GP0 Commands/Packets (Rendering and VRAM Access)
1F801814h.Write 4 GP1 Send GP1 Commands (Display Control)
1F801810h.Read 4 GPUREAD Read responses to GP0(C0h) and GP1(10h) commands
1F801814h.Read 4 GPUSTAT Read GPU Status Register
</code></pre>
<h4 id="mdec-registers">MDEC Registers</h4>
<pre><code> 1F801820h.Write 4 MDEC Command/Parameter Register (W)
1F801820h.Read 4 MDEC Data/Response Register (R)
1F801824h.Write 4 MDEC Control/Reset Register (W)
1F801824h.Read 4 MDEC Status Register (R)
</code></pre>
<h4 id="spu-voice-023-registers">SPU Voice 0..23 Registers</h4>
<pre><code> 1F801C00h+N*10h 4 Voice 0..23 Volume Left/Right
1F801C04h+N*10h 2 Voice 0..23 ADPCM Sample Rate
1F801C06h+N*10h 2 Voice 0..23 ADPCM Start Address
1F801C08h+N*10h 4 Voice 0..23 ADSR Attack/Decay/Sustain/Release
1F801C0Ch+N*10h 2 Voice 0..23 ADSR Current Volume
1F801C0Eh+N*10h 2 Voice 0..23 ADPCM Repeat Address
</code></pre>
<h4 id="spu-control-registers">SPU Control Registers</h4>
<pre><code> 1F801D80h 4 Main Volume Left/Right
1F801D84h 4 Reverb Output Volume Left/Right
1F801D88h 4 Voice 0..23 Key ON (Start Attack/Decay/Sustain) (W)
1F801D8Ch 4 Voice 0..23 Key OFF (Start Release) (W)
1F801D90h 4 Voice 0..23 Channel FM (pitch lfo) mode (R/W)
1F801D94h 4 Voice 0..23 Channel Noise mode (R/W)
1F801D98h 4 Voice 0..23 Channel Reverb mode (R/W)
1F801D9Ch 4 Voice 0..23 Channel ON/OFF (status) (R)
1F801DA0h 2 Unknown? (R) or (W)
1F801DA2h 2 Sound RAM Reverb Work Area Start Address
1F801DA4h 2 Sound RAM IRQ Address
1F801DA6h 2 Sound RAM Data Transfer Address
1F801DA8h 2 Sound RAM Data Transfer Fifo
1F801DAAh 2 SPU Control Register (SPUCNT)
1F801DACh 2 Sound RAM Data Transfer Control
1F801DAEh 2 SPU Status Register (SPUSTAT) (R)
1F801DB0h 4 CD Volume Left/Right
1F801DB4h 4 Extern Volume Left/Right
1F801DB8h 4 Current Main Volume Left/Right
1F801DBCh 4 Unknown? (R/W)
</code></pre>
<h4 id="spu-reverb-configuration-area">SPU Reverb Configuration Area</h4>
<pre><code> 1F801DC0h 2 dAPF1 Reverb APF Offset 1
1F801DC2h 2 dAPF2 Reverb APF Offset 2
1F801DC4h 2 vIIR Reverb Reflection Volume 1
1F801DC6h 2 vCOMB1 Reverb Comb Volume 1
1F801DC8h 2 vCOMB2 Reverb Comb Volume 2
1F801DCAh 2 vCOMB3 Reverb Comb Volume 3
1F801DCCh 2 vCOMB4 Reverb Comb Volume 4
1F801DCEh 2 vWALL Reverb Reflection Volume 2
1F801DD0h 2 vAPF1 Reverb APF Volume 1
1F801DD2h 2 vAPF2 Reverb APF Volume 2
1F801DD4h 4 mSAME Reverb Same Side Reflection Address 1 Left/Right
1F801DD8h 4 mCOMB1 Reverb Comb Address 1 Left/Right
1F801DDCh 4 mCOMB2 Reverb Comb Address 2 Left/Right
1F801DE0h 4 dSAME Reverb Same Side Reflection Address 2 Left/Right
1F801DE4h 4 mDIFF Reverb Different Side Reflection Address 1 Left/Right
1F801DE8h 4 mCOMB3 Reverb Comb Address 3 Left/Right
1F801DECh 4 mCOMB4 Reverb Comb Address 4 Left/Right
1F801DF0h 4 dDIFF Reverb Different Side Reflection Address 2 Left/Right
1F801DF4h 4 mAPF1 Reverb APF Address 1 Left/Right
1F801DF8h 4 mAPF2 Reverb APF Address 2 Left/Right
1F801DFCh 4 vIN Reverb Input Volume Left/Right
</code></pre>
<h4 id="spu-internal-registers">SPU Internal Registers</h4>
<pre><code> 1F801E00h+N*04h 4 Voice 0..23 Current Volume Left/Right
1F801E60h 20h Unknown? (R/W)
1F801E80h 180h Unknown? (Read: FFh-filled) (Unused or Write only?)
</code></pre>
<h4 id="expansion-region-2-default-128-bytes-max-8-kbytes">Expansion Region 2 (default 128 bytes, max 8 KBytes)</h4>
<pre><code> 1F802000h 80h Expansion Region (8bit data bus, crashes on 16bit access?)
</code></pre>
<h4 id="expansion-region-2-dual-serial-port-for-tty-debug-terminal">Expansion Region 2 - Dual Serial Port (for TTY Debug Terminal)</h4>
<pre><code> 1F802020h/1st DUART Mode Register 1.A (R/W)
1F802020h/2nd DUART Mode Register 2.A (R/W)
1F802021h/Read DUART Status Register A (R)
1F802021h/Write DUART Clock Select Register A (W)
1F802022h/Read DUART Toggle Baud Rate Generator Test Mode (Read=Strobe)
1F802022h/Write DUART Command Register A (W)
1F802023h/Read DUART Rx Holding Register A (FIFO) (R)
1F802023h/Write DUART Tx Holding Register A (W)
1F802024h/Read DUART Input Port Change Register (R)
1F802024h/Write DUART Aux. Control Register (W)
1F802025h/Read DUART Interrupt Status Register (R)
1F802025h/Write DUART Interrupt Mask Register (W)
1F802026h/Read DUART Counter/Timer Current Value, Upper/Bit15-8 (R)
1F802026h/Write DUART Counter/Timer Reload Value, Upper/Bit15-8 (W)
1F802027h/Read DUART Counter/Timer Current Value, Lower/Bit7-0 (R)
1F802027h/Write DUART Counter/Timer Reload Value, Lower/Bit7-0 (W)
1F802028h/1st DUART Mode Register 1.B (R/W)
1F802028h/2nd DUART Mode Register 2.B (R/W)
1F802029h/Read DUART Status Register B (R)
1F802029h/Write DUART Clock Select Register B (W)
1F80202Ah/Read DUART Toggle 1X/16X Test Mode (Read=Strobe)
1F80202Ah/Write DUART Command Register B (W)
1F80202Bh/Read DUART Rx Holding Register B (FIFO) (R)
1F80202Bh/Write DUART Tx Holding Register B (W)
1F80202Ch/None DUART Reserved Register (neither R nor W)
1F80202Dh/Read DUART Input Port (R)
1F80202Dh/Write DUART Output Port Configuration Register (W)
1F80202Eh/Read DUART Start Counter Command (Read=Strobe)
1F80202Eh/Write DUART Set Output Port Bits Command (Set means Out=LOW)
1F80202Fh/Read DUART Stop Counter Command (Read=Strobe)
1F80202Fh/Write DUART Reset Output Port Bits Command (Reset means Out=HIGH)
</code></pre>
<h4 id="expansion-region-2-intdippost">Expansion Region 2 - Int/Dip/Post</h4>
<pre><code> 1F802000h 1 DTL-H2000: ATCONS STAT (R)
1F802002h 1 DTL-H2000: ATCONS DATA (R and W)
1F802004h 2 DTL-H2000: Whatever 16bit data ?
1F802030h 1/4 DTL-H2000: Secondary IRQ10 Flags
1F802032h 1 DTL-H2000: Whatever IRQ Control ?
1F802040h 1 DTL-H2000: Bootmode "Dip switches" (R)
1F802041h 1 PSX: POST (external 7 segment display, indicate BIOS boot status)
1F802042h 1 DTL-H2000: POST/LED (similar to POST) (other addr, 2-digit wide)
1F802070h 1 PS2: POST2 (similar to POST, but PS2 BIOS uses this address)
</code></pre>
<h4 id="expansion-region-2-nocash-emulation-expansion">Expansion Region 2 - Nocash Emulation Expansion</h4>
<pre><code> 1F802060h Emu-Expansion ID1 "E" (R)
1F802061h Emu-Expansion ID2 "X" (R)
1F802062h Emu-Expansion ID3 "P" (R)
1F802063h Emu-Expansion Version (01h) (R)
1F802064h Emu-Expansion Enable1 "O" (R/W)
1F802065h Emu-Expansion Enable2 "N" (R/W)
1F802066h Emu-Expansion Halt (R)
1F802067h Emu-Expansion Turbo Mode Flags (R/W)
</code></pre>
<h4 id="expansion-region-3-default-1-byte-max-2-mbytes">Expansion Region 3 (default 1 byte, max 2 MBytes)</h4>
<pre><code> 1FA00000h - Not used by BIOS or any PSX games
1FA00000h - POST3 (similar to POST, but PS2 BIOS uses this address)
</code></pre>
<h4 id="bios-region-default-512-kbytes-max-4-mbytes">BIOS Region (default 512 Kbytes, max 4 MBytes)</h4>
<pre><code> 1FC00000h 80000h BIOS ROM (512Kbytes) (Reset Entrypoint at BFC00000h)
</code></pre>
<h4 id="memory-control-3-cache-control">Memory Control 3 (Cache Control)</h4>
<pre><code> FFFE0130h 4 Cache Control
</code></pre>
<h4 id="coprocessor-registers">Coprocessor Registers</h4>
<pre><code> COP0 System Control Coprocessor - 32 registers (not all used)
COP1 N/A
COP2 Geometry Transformation Engine (GTE) - 64 registers (most are used)
COP3 N/A
</code></pre>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<nav aria-label="Footer" class="md-footer__inner md-grid">
<a class="md-footer__link md-footer__link--prev" href="../memorymap/" rel="prev">
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</div>
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Previous
</span>
Memory Map
</div>
</div>
</a>
<a class="md-footer__link md-footer__link--next" href="../graphicsprocessingunitgpu/" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Next
</span>
Graphics Processing Unit (GPU)
</div>
</div>
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"></path></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" rel="noopener" target="_blank">
Material for MkDocs
</a>
... <a class="link--pdf-download" download href="../psx-spx.pdf" title="PDF">download PDF</a></div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}, "search": "../assets/javascripts/workers/search.fe42c31b.min.js", "version": null}</script>
<script src="../assets/javascripts/bundle.4ea5477f.min.js"></script>
</body>
</html>

6575
kernelbios/index.html Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

644
memorycontrol/index.html Normal file
View File

@ -0,0 +1,644 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8"/>
<meta content="width=device-width,initial-scale=1" name="viewport"/>
<link href="https://psx-spx.consoledev.net/memorycontrol/" rel="canonical"/>
<link href="../assets/images/favicon.png" rel="icon"/>
<meta content="mkdocs-1.1.2, mkdocs-material-7.1.3" name="generator"/>
<title>Memory Control - PlayStation Specifications - psx-spx</title>
<link href="../assets/stylesheets/main.e35208c4.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.ef6f36e2.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font-family:"Roboto";--md-code-font-family:"Roboto Mono"}</style>
<link href="../css/extra.css" rel="stylesheet"/>
</head>
<body data-md-color-accent="indigo" data-md-color-primary="indigo" data-md-color-scheme="default" dir="ltr">
<script>function __prefix(e){return new URL("..",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
<script>var palette=__get("__palette");if(null!==palette&&"object"==typeof palette.color)for(var key in palette.color)document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a class="md-skip" href="#memory-control">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="PlayStation Specifications - psx-spx" class="md-header__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
PlayStation Specifications - psx-spx
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Memory Control
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="indigo" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Switch to dark mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2 2 2 0 0 1 2-2m10-3a5 5 0 0 1 5 5 5 5 0 0 1-5 5H7a5 5 0 0 1-5-5 5 5 0 0 1 5-5h10M7 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3h10a3 3 0 0 0 3-3 3 3 0 0 0-3-3H7z"></path></svg>
</label>
<input class="md-option" data-md-color-accent="blue" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="blue" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Switch to light mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3z"></path></svg>
</label>
</form>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" data-md-state="active" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</label>
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"></path></svg>
</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="PlayStation Specifications - psx-spx" class="md-nav__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
PlayStation Specifications - psx-spx
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
Home
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../memorymap/">
Memory Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../iomap/">
I/O Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../graphicsprocessingunitgpu/">
Graphics Processing Unit (GPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometrytransformationenginegte/">
Geometry Transformation Engine (GTE)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../macroblockdecodermdec/">
Macroblock Decoder (MDEC)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../soundprocessingunitspu/">
Sound Processing Unit (SPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../interrupts/">
Interrupts
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../dmachannels/">
DMA Channels
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../timers/">
Timers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromdrive/">
CDROM Drive
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../controllersandmemorycards/">
Controllers and Memory Cards
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pocketstation/">
Pocketstation
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../serialportsio/">
Serial Port (SIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../expansionportpio/">
Expansion Port (PIO)
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<label class="md-nav__link md-nav__link--active" for="__toc">
Memory Control
<span class="md-nav__icon md-icon"></span>
</label>
<a class="md-nav__link md-nav__link--active" href="./">
Memory Control
</a>
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801000h-expansion-1-base-address-usually-1f000000h">
1F801000h - Expansion 1 Base Address (usually 1F000000h)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801004h-expansion-2-base-address-usually-1f802000h">
1F801004h - Expansion 2 Base Address (usually 1F802000h)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801008h-expansion-1-delaysize-usually-0013243fh-512kbytes-8bit-bus">
1F801008h - Expansion 1 Delay/Size (usually 0013243Fh) (512Kbytes, 8bit bus)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f80100ch-expansion-3-delaysize-usually-00003022h-1-byte">
1F80100Ch - Expansion 3 Delay/Size (usually 00003022h) (1 byte)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801010h-bios-rom-delaysize-usually-0013243fh-512kbytes-8bit-bus">
1F801010h - BIOS ROM Delay/Size (usually 0013243Fh) (512Kbytes, 8bit bus)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801014h-spu-delaysize-200931e1h-use-220931e1h-for-spu-ram-reads">
1F801014h - SPU Delay/Size (200931E1h) (use 220931E1h for SPU-RAM reads)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801018h-cdrom-delaysize-00020843h-or-00020943h">
1F801018h - CDROM Delay/Size (00020843h or 00020943h)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f80101ch-expansion-2-delaysize-usually-00070777h-128-bytes-8bit-bus">
1F80101Ch - Expansion 2 Delay/Size (usually 00070777h) (128 bytes, 8bit bus)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801020h-com_delay-common_delay-00031125h-or-0000132ch-or-00001325h">
1F801020h - COM_DELAY / COMMON_DELAY (00031125h or 0000132Ch or 00001325h)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801060h-ram_size-rw-usually-00000b88h-or-00000888h">
1F801060h - RAM_SIZE (R/W) (usually 00000B88h) (or 00000888h)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#fffe0130h-cache-control-rw">
FFFE0130h Cache Control (R/W)
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../unpredictablethings/">
Unpredictable Things
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cpuspecifications/">
CPU Specifications
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../kernelbios/">
Kernel (BIOS)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../arcadecabinets/">
Arcade Cabinets
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cheatdevices/">
Cheat Devices
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../psxdevboardchipsets/">
PSX Dev-Board Chipsets
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../hardwarenumbers/">
Hardware Numbers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pinouts/">
Pinouts
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../aboutcredits/">
About &amp; Credits
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromvideocdsvcd/">
CDROM Video CDs (VCD)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdrominternalinfoonpsxcdromcontroller/">
CDROM Internal Info on PSX CDROM Controller
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801000h-expansion-1-base-address-usually-1f000000h">
1F801000h - Expansion 1 Base Address (usually 1F000000h)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801004h-expansion-2-base-address-usually-1f802000h">
1F801004h - Expansion 2 Base Address (usually 1F802000h)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801008h-expansion-1-delaysize-usually-0013243fh-512kbytes-8bit-bus">
1F801008h - Expansion 1 Delay/Size (usually 0013243Fh) (512Kbytes, 8bit bus)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f80100ch-expansion-3-delaysize-usually-00003022h-1-byte">
1F80100Ch - Expansion 3 Delay/Size (usually 00003022h) (1 byte)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801010h-bios-rom-delaysize-usually-0013243fh-512kbytes-8bit-bus">
1F801010h - BIOS ROM Delay/Size (usually 0013243Fh) (512Kbytes, 8bit bus)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801014h-spu-delaysize-200931e1h-use-220931e1h-for-spu-ram-reads">
1F801014h - SPU Delay/Size (200931E1h) (use 220931E1h for SPU-RAM reads)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801018h-cdrom-delaysize-00020843h-or-00020943h">
1F801018h - CDROM Delay/Size (00020843h or 00020943h)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f80101ch-expansion-2-delaysize-usually-00070777h-128-bytes-8bit-bus">
1F80101Ch - Expansion 2 Delay/Size (usually 00070777h) (128 bytes, 8bit bus)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801020h-com_delay-common_delay-00031125h-or-0000132ch-or-00001325h">
1F801020h - COM_DELAY / COMMON_DELAY (00031125h or 0000132Ch or 00001325h)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801060h-ram_size-rw-usually-00000b88h-or-00000888h">
1F801060h - RAM_SIZE (R/W) (usually 00000B88h) (or 00000888h)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#fffe0130h-cache-control-rw">
FFFE0130h Cache Control (R/W)
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a class="md-content__button md-icon" href="https://github.com/psx-spx/psx-spx.github.io/edit/master/docs/memorycontrol.md" title="Edit this page">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"></path></svg>
</a>
<h1 id="memory-control">Memory Control</h1>
<p>The Memory Control registers are initialized by the BIOS, and, normally
software doesn't need to change that settings. Some registers are useful for
expansion hardware (allowing to increase the memory size and bus width).<br/></p>
<h4 id="1f801000h-expansion-1-base-address-usually-1f000000h">1F801000h - Expansion 1 Base Address (usually 1F000000h)</h4>
<h4 id="1f801004h-expansion-2-base-address-usually-1f802000h">1F801004h - Expansion 2 Base Address (usually 1F802000h)</h4>
<pre><code> 0-23 Base Address (Read/Write)
24-31 Fixed (Read only, always 1Fh)
</code></pre>
<p>For Expansion 1, the address is forcefully aligned to the selected expansion
size (see below), ie. if the size is bigger than 1 byte, then the lower bit(s)
of the base address are ignored.<br/>
For Expansion 2, trying to use ANY other value than 1F802000h seems to disable
the Expansion 2 region, rather than mapping it to the specified address (ie.
Port 1F801004h doesn't seem to work).<br/>
For Expansion 3, the address seems to be fixed (1FA00000h).<br/></p>
<h4 id="1f801008h-expansion-1-delaysize-usually-0013243fh-512kbytes-8bit-bus">1F801008h - Expansion 1 Delay/Size (usually 0013243Fh) (512Kbytes, 8bit bus)</h4>
<h4 id="1f80100ch-expansion-3-delaysize-usually-00003022h-1-byte">1F80100Ch - Expansion 3 Delay/Size (usually 00003022h) (1 byte)</h4>
<h4 id="1f801010h-bios-rom-delaysize-usually-0013243fh-512kbytes-8bit-bus">1F801010h - BIOS ROM Delay/Size (usually 0013243Fh) (512Kbytes, 8bit bus)</h4>
<h4 id="1f801014h-spu-delaysize-200931e1h-use-220931e1h-for-spu-ram-reads">1F801014h - SPU Delay/Size (200931E1h) (use 220931E1h for SPU-RAM reads)</h4>
<h4 id="1f801018h-cdrom-delaysize-00020843h-or-00020943h">1F801018h - CDROM Delay/Size (00020843h or 00020943h)</h4>
<h4 id="1f80101ch-expansion-2-delaysize-usually-00070777h-128-bytes-8bit-bus">1F80101Ch - Expansion 2 Delay/Size (usually 00070777h) (128 bytes, 8bit bus)</h4>
<pre><code> 0-3 Write Delay (00h..0Fh=01h..10h Cycles)
4-7 Read Delay (00h..0Fh=01h..10h Cycles)
8 Recovery Period (0=No, 1=Yes, uses COM0 timings)
9 Hold Period (0=No, 1=Yes, uses COM1 timings)
10 Floating Period (0=No, 1=Yes, uses COM2 timings)
11 Pre-strobe Period (0=No, 1=Yes, uses COM3 timings)
12 Data Bus-width (0=8bits, 1=16bits)
13 Auto Increment (0=No, 1=Yes)
14-15 Unknown (R/W)
16-20 Memory Window Size (1 SHL N bytes) (0..1Fh = 1 byte ... 2 gigabytes)
21-23 Unknown (always zero)
24-27 DMA timing override
28 Address error flag. Write 1 to it to clear it.
29 DMA timing select (0=use normal timings, 1=use bits 24-27)
30 Wide DMA (0=use bit 12, 1=override to full 32 bits)
31 Wait (1=wait on external device before being ready)
</code></pre>
<p>When booting, all these registers are using the maximum cycle delays for both
reads and writes. Then, the BIOS will immediately select a faster read
access delay, resulting in a visible speed up after the first few instructions.
The effects aren't immediate however. The BIOS boots using the following instructions:</p>
<pre><code class="language-mips">bfc00000 lui $t0, 0x0013
bfc00004 ori $t0, 0x243f
bfc00008 lui $at, 0x1f80
bfc0000c sw $t0, 0x1010($at)
bfc00010 nop
bfc00014 li $t0, 0x0b88
bfc00018 lui $at, 0x1f80
bfc0001c sw $t0, 0x1060($at)
bfc00020 nop
</code></pre>
<p>When using a logic analyzer to monitor the boot sequence, the instruction at
bfc00014 is still read using the old timings since reset, and then the instruction
at bfc00018 is finally read using the sped up timings.</p>
<p>Reads and writes access times aren't symmetrical, and are each controlled with
their own values. By default, EXP1 will be set to 16 cycles when writing, which
is the slowest possible. If the programmer wants to write to a flash chip on
EXP1, or communicate with a computer, speeding up write access is recommended.</p>
<p>The fastest a port could go would be by setting the lowest 16 bits to zero, which
will result in 3 CPU cycles for a single byte access.</p>
<p>!CS always goes active at least one cycle before !WR or !RD go active. The various
timing changes are between all the events inside the data read/write waveform. The
whole formula for computing the total access time is fairly complex overall, and
difficult to properly describe.</p>
<ul>
<li>The pre-strobe period will add delays between the moment the data bus is set,
and the moment !CS goes active.</li>
<li>The hold period will keep the data in the data bus for some more cycles after
!WR goes inactive, and before !CS goes inactive. The accessed device is supposed
to sample the data bus during this interval.</li>
<li>The floating period will keep the data bus floating for some more cycles after
!RD goes inactive, and before !CS goes inactive. The accessed device is supposed
to stop driving the data bus during this interval. The CPU will sample the data
bus somewhere before or exactly when !CS goes inactive.</li>
<li>The recovery period will add delays between two operations.</li>
</ul>
<p>The data bus width will influence if the CPU does full 16 bits reads, or only
8 bits. When doing 32 bits operations, the CPU will issue 2 16-bits operations,
or 4 8-bits operations, keeping !CS active the whole time, and strobing !WR or
!RD accordingly. When doing these sequences, the address bus will also increment
automatically between each operation, if the auto-increment bit is active.</p>
<p>This means it is possible to slightly shorten the read time of 4 bytes off the
same address by disabling auto-increment, and reading a full word. The CPU will
then read 4 bytes off the same address, and place them all into each byte of
the loaded register.</p>
<p>The DMA timing override portion will replace the access timing when doing DMA,
only if the DMA override flag is set.</p>
<p>The Wide DMA flag will enable full 32 bits DMA operations on the bus, by reusing
the low 16-bits address signals as the high 16-bits data. This means that if
the CPU is doing Wide DMA reads, the low 16-bits of the address bus will become
inputs.</p>
<p>Trying to access addresses that exceed the selected size causes a bus exception.
Maximum size would be Expansion 1 = 17h (8MB), BIOS = 16h (4MB), Expansion 2 =
0Dh (8KB), Expansion 3 = 15h (2MB). Trying to select larger sizes would overlap
the internal I/O ports, and crash the PSX. The Size bits seem to be ignored for
SPU/CDROM. The SPU timings seem to be applied for both the 200h-byte SPU region
at 1F801C00h and for the 200h-byte unknown region at 1F801E00h.<br/></p>
<h4 id="1f801020h-com_delay-common_delay-00031125h-or-0000132ch-or-00001325h">1F801020h - COM_DELAY / COMMON_DELAY (00031125h or 0000132Ch or 00001325h)</h4>
<pre><code> 0-3 COM0 - Recovery period cycles
4-7 COM1 - Hold period cycles
8-11 COM2 - Floating release cycles
12-15 COM3 - Strobe active-going edge delay
16-31 Unknown/unused (read: always 0000h)
</code></pre>
<p>This register contains clock cycle offsets that can be added to the Access Time
values in Port 1F801008h..1Ch. Works (somehow) like so:<br/></p>
<pre><code> 1ST=0, SEQ=0, MIN=0
IF Use_COM0 THEN 1ST=1ST+COM0-1, SEQ=SEQ+COM0-1
IF Use_COM2 THEN 1ST=1ST+COM2, SEQ=SEQ+COM2
IF Use_COM3 THEN MIN=COM3
IF 1ST&lt;6 THEN 1ST=1ST+1 ;(somewhat like so)
1ST=1ST+AccessTime+2, SEQ=SEQ+AccessTime+2
IF 1ST&lt;(MIN+6) THEN 1ST=(MIN+6)
IF SEQ&lt;(MIN+2) THEN SEQ=(MIN+2)
</code></pre>
<p>The total access time is the sum of First Access, plus any Sequential
Access(es), eg. for a 32bit access with 8bit bus: Total=1ST+SEQ+SEQ+SEQ.<br/>
If the access is done from code in (uncached) RAM, then 0..4 cycles are added
to the Total value (the exact number seems to vary depending on the used COMx
values or so).<br/></p>
<h4 id="1f801060h-ram_size-rw-usually-00000b88h-or-00000888h">1F801060h - RAM_SIZE (R/W) (usually 00000B88h) (or 00000888h)</h4>
<pre><code> 0-2 Unknown (no effect)
3 Crashes when zero (except PU-7 and EARLY-PU-8, which &lt;do&gt; set bit3=0)
4-6 Unknown (no effect)
7 Delay on simultaneous CODE+DATA fetch from RAM (0=None, 1=One Cycle)
8 Unknown (no effect) (should be set for 8MB, cleared for 2MB)
9-11 Define 8MB Memory Window (first 8MB of KUSEG,KSEG0,KSEG1)
12-15 Unknown (no effect)
16-31 Unknown (Garbage)
</code></pre>
<p>Possible values for Bit9-11 are:<br/></p>
<pre><code> 0 = 1MB Memory + 7MB Locked
1 = 4MB Memory + 4MB Locked
2 = 1MB Memory + 1MB HighZ + 6MB Locked
3 = 4MB Memory + 4MB HighZ
4 = 2MB Memory + 6MB Locked ;&lt;--- would be correct for PSX
5 = 8MB Memory ;&lt;--- default by BIOS init
6 = 2MB Memory + 2MB HighZ + 4MB Locked ;&lt;-- HighZ = Second /RAS
7 = 8MB Memory
</code></pre>
<p>The BIOS initializes this to setting 5 (8MB) (ie. the 2MB RAM repeated 4 times),
although the "correct" would be setting 4 (2MB, plus other 6MB Locked). The
remaining memory, after the first 8MB, and up to the Expansion/IO/BIOS region
seems to be always Locked.<br/>
The HighZ regions are FFh-filled, that even when grounding data lines on the
system bus (ie. it is NOT a mirror of the PIO expansion region).<br/>
Locked means that the CPU generates an exception when accessing that area.<br/>
Note: Wipeout uses a BIOS function that changes RAM_SIZE to 00000888h (ie. with
corrected size of 2MB, and with the unknown Bit8 cleared). Gundam Battle
Assault 2 does actually use the "8MB" space (with stacktop in mirrored RAM at
807FFFxxh).<br/>
Clearing bit7 causes many games to hang during CDROM loading on both EARLY-PU-8
and LATE-PU-8 (but works on PU-18 through PM-41).<br/></p>
<h4 id="fffe0130h-cache-control-rw">FFFE0130h Cache Control (R/W)</h4>
<pre><code> 0-2 Unknown (Read/Write) (R/W)
3 Scratchpad Enable 1 (0=Disable, 1=Enable when Bit7 is set, too) (R/W)
4-5 Unknown (Read/Write) (R/W)
6 Unknown (read=always zero) (R) or (W) or unused..?
7 Scratchpad Enable 2 (0=Disable, 1=Enable when Bit3 is set, too) (R/W)
8 Unknown (R/W)
9 Crash (0=Normal, 1=Crash if code-cache enabled) (R/W)
10 Unknown (read=always zero) (R) or (W) or unused..?
11 Code-Cache Enable (0=Disable, 1=Enable) (R/W)
12-31 Unknown (R/W)
</code></pre>
<p>Used by BIOS to initialize cache (in combination with COP0), like so:<br/></p>
<pre><code> Init Cache Step 1:
[FFFE0130h]=00000804h, then set cop0_sr=00010000h, then
zerofill each FOURTH word at [0000..0FFFh], then set cop0_sr=zero.
Init Cache Step 2:
[FFFE0130h]=00000800h, then set cop0_sr=00010000h, then
zerofill ALL words at [0000h..0FFFh], then set cop0_sr=zero.
Finish Initialization:
read 8 times 32bit from [A0000000h], then set [FFFE0130h]=0001E988h
</code></pre>
<p>Note: FFFE0130h is described in LSI's "L64360" datasheet, chapter 14 (and
probably also in their LR33300/LR33310 datasheet, if it were available in
internet).<br/></p>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<nav aria-label="Footer" class="md-footer__inner md-grid">
<a class="md-footer__link md-footer__link--prev" href="../expansionportpio/" rel="prev">
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</div>
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Previous
</span>
Expansion Port (PIO)
</div>
</div>
</a>
<a class="md-footer__link md-footer__link--next" href="../unpredictablethings/" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Next
</span>
Unpredictable Things
</div>
</div>
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"></path></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" rel="noopener" target="_blank">
Material for MkDocs
</a>
... <a class="link--pdf-download" download href="../psx-spx.pdf" title="PDF">download PDF</a></div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}, "search": "../assets/javascripts/workers/search.fe42c31b.min.js", "version": null}</script>
<script src="../assets/javascripts/bundle.4ea5477f.min.js"></script>
</body>
</html>

573
memorymap/index.html Normal file
View File

@ -0,0 +1,573 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8"/>
<meta content="width=device-width,initial-scale=1" name="viewport"/>
<link href="https://psx-spx.consoledev.net/memorymap/" rel="canonical"/>
<link href="../assets/images/favicon.png" rel="icon"/>
<meta content="mkdocs-1.1.2, mkdocs-material-7.1.3" name="generator"/>
<title>Memory Map - PlayStation Specifications - psx-spx</title>
<link href="../assets/stylesheets/main.e35208c4.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.ef6f36e2.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font-family:"Roboto";--md-code-font-family:"Roboto Mono"}</style>
<link href="../css/extra.css" rel="stylesheet"/>
</head>
<body data-md-color-accent="indigo" data-md-color-primary="indigo" data-md-color-scheme="default" dir="ltr">
<script>function __prefix(e){return new URL("..",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
<script>var palette=__get("__palette");if(null!==palette&&"object"==typeof palette.color)for(var key in palette.color)document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a class="md-skip" href="#memory-map">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="PlayStation Specifications - psx-spx" class="md-header__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
PlayStation Specifications - psx-spx
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Memory Map
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="indigo" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Switch to dark mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2 2 2 0 0 1 2-2m10-3a5 5 0 0 1 5 5 5 5 0 0 1-5 5H7a5 5 0 0 1-5-5 5 5 0 0 1 5-5h10M7 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3h10a3 3 0 0 0 3-3 3 3 0 0 0-3-3H7z"></path></svg>
</label>
<input class="md-option" data-md-color-accent="blue" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="blue" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Switch to light mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3z"></path></svg>
</label>
</form>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" data-md-state="active" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</label>
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"></path></svg>
</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="PlayStation Specifications - psx-spx" class="md-nav__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
PlayStation Specifications - psx-spx
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
Home
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<label class="md-nav__link md-nav__link--active" for="__toc">
Memory Map
<span class="md-nav__icon md-icon"></span>
</label>
<a class="md-nav__link md-nav__link--active" href="./">
Memory Map
</a>
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#memory-map_1">
Memory Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#additional-memory-not-mapped-to-the-cpu-bus">
Additional Memory (not mapped to the CPU bus)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#kusegkseg0kseg1kseg2-memory-regions">
KUSEG,KSEG0,KSEG1,KSEG2 Memory Regions
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#i-cache">
i-Cache
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#scratchpad">
Scratchpad
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#memory-mirrors">
Memory Mirrors
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#memory-exceptions">
Memory Exceptions
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#write-queue">
Write queue
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#more-memory-info">
More Memory Info
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../iomap/">
I/O Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../graphicsprocessingunitgpu/">
Graphics Processing Unit (GPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometrytransformationenginegte/">
Geometry Transformation Engine (GTE)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../macroblockdecodermdec/">
Macroblock Decoder (MDEC)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../soundprocessingunitspu/">
Sound Processing Unit (SPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../interrupts/">
Interrupts
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../dmachannels/">
DMA Channels
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../timers/">
Timers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromdrive/">
CDROM Drive
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../controllersandmemorycards/">
Controllers and Memory Cards
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pocketstation/">
Pocketstation
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../serialportsio/">
Serial Port (SIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../expansionportpio/">
Expansion Port (PIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../memorycontrol/">
Memory Control
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../unpredictablethings/">
Unpredictable Things
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cpuspecifications/">
CPU Specifications
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../kernelbios/">
Kernel (BIOS)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../arcadecabinets/">
Arcade Cabinets
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cheatdevices/">
Cheat Devices
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../psxdevboardchipsets/">
PSX Dev-Board Chipsets
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../hardwarenumbers/">
Hardware Numbers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pinouts/">
Pinouts
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../aboutcredits/">
About &amp; Credits
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromvideocdsvcd/">
CDROM Video CDs (VCD)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdrominternalinfoonpsxcdromcontroller/">
CDROM Internal Info on PSX CDROM Controller
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#memory-map_1">
Memory Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#additional-memory-not-mapped-to-the-cpu-bus">
Additional Memory (not mapped to the CPU bus)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#kusegkseg0kseg1kseg2-memory-regions">
KUSEG,KSEG0,KSEG1,KSEG2 Memory Regions
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#i-cache">
i-Cache
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#scratchpad">
Scratchpad
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#memory-mirrors">
Memory Mirrors
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#memory-exceptions">
Memory Exceptions
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#write-queue">
Write queue
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#more-memory-info">
More Memory Info
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a class="md-content__button md-icon" href="https://github.com/psx-spx/psx-spx.github.io/edit/master/docs/memorymap.md" title="Edit this page">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"></path></svg>
</a>
<h1 id="memory-map">Memory Map</h1>
<h4 id="memory-map_1">Memory Map</h4>
<pre><code> KUSEG KSEG0 KSEG1
00000000h 80000000h A0000000h 2048K Main RAM (first 64K reserved for BIOS)
1F000000h 9F000000h BF000000h 8192K Expansion Region 1 (ROM/RAM)
1F800000h 9F800000h -- 1K Scratchpad (D-Cache used as Fast RAM)
1F801000h 9F801000h BF801000h 8K I/O Ports
1F802000h 9F802000h BF802000h 8K Expansion Region 2 (I/O Ports)
1FA00000h 9FA00000h BFA00000h 2048K Expansion Region 3 (SRAM BIOS region for DTL cards)
1FC00000h 9FC00000h BFC00000h 512K BIOS ROM (Kernel) (4096K max)
FFFE0000h (in KSEG2) 0.5K Internal CPU control registers (Cache Control)
</code></pre>
<p>Additionally, there are a number of memory mirrors.<br/></p>
<h4 id="additional-memory-not-mapped-to-the-cpu-bus">Additional Memory (not mapped to the CPU bus)</h4>
<pre><code> 1024K VRAM (Framebuffers, Textures, Palettes) (with 2KB Texture Cache)
512K Sound RAM (Capture Buffers, ADPCM Data, Reverb Workspace)
0.5K CDROM controller RAM (see CDROM Test commands)
16.5K CDROM controller ROM (Firmware and Bootstrap for MC68HC05 cpu)
32K CDROM Buffer (IC303) (32Kx8) (BUG: only two sectors accessible?)
128K External Memory Card(s) (EEPROMs)
</code></pre>
<h4 id="kusegkseg0kseg1kseg2-memory-regions">KUSEG,KSEG0,KSEG1,KSEG2 Memory Regions</h4>
<pre><code> Address Name i-Cache Write-Queue
00000000h KUSEG Yes Yes
80000000h KSEG0 Yes Yes
A0000000h KSEG1 No No
C0000000h KSEG2 (No code) No
</code></pre>
<p>Kernel Memory: KSEG1 is the normal physical memory (uncached), KSEG0 is a
mirror thereof (but with cache enabled). KSEG2 is usually intended to contain
virtual kernel memory, but in the PSX it's containing Cache Control hardware registers.<br/>
User Memory: KUSEG is intended to contain 2GB virtual memory (on extended MIPS
processors), the PSX doesn't support virtual memory, and KUSEG simply contains
a mirror of KSEG0/KSEG1 (in the first 512MB) (trying to access memory in the
remaining 1.5GB causes an exception).<br/></p>
<h4 id="i-cache">i-Cache</h4>
<p>The i-Cache can hold 4096 bytes, or 1024 instructions.<br/>
It is only active in the cached regions (KUSEG and KSEG0).<br/>
There are reportedly some restrictions... not sure there... eventually it is
using the LSBs of the address as cache-line number... so, for example, it
couldn't simultaneously memorize opcodes at BOTH address 80001234h, AND at
address 800F1234h (?)<br/></p>
<h4 id="scratchpad">Scratchpad</h4>
<p>MIPS CPUs usually have a d-Cache, but, in the PSX, Sony has assigned it as
what's referenced as the "Scratchpad", mapped to a fixed memory location at
1F800000h..1F8003FFh, ie. it's used as Fast RAM, rather than as cache.<br/>
There \&lt;might&gt; be a way to disable that behavior (via Port FFFE0130h or
so), but, the Kernel is accessing I/O ports via KUSEG, so activating Data Cache
would cause the Kernel to access cached I/O ports.<br/>
The purpose of the scratchpad is to have a more flexible cache system available
to the programmer. Neither the kernel nor the Sony libraries will try to make use
of it, so it is therefore completely up for grabs to the programmer. A good example
would be if you were to write a piece of code that's doing a lot of CRC computation,
to use the 1KB scratchpad to initially load the CRC lookup tables, which incidentally,
is exactly 1KB large. Doing this will relieve SDRAM page changes overhead while reading
the data to checksum linearly, while also keeping the whole CRC code in the i-Cache,
hence being more optimal than what you'd get with an automatic d-Cache system.</p>
<h4 id="memory-mirrors">Memory Mirrors</h4>
<p>As described above, the 512Mbyte KUSEG, KSEG0, and KSEG1 regions are mirrors of
each other. Additional mirrors within these 512MB regions are:<br/></p>
<pre><code> 2MB RAM can be mirrored to the first 8MB (strangely, enabled by default)
512K BIOS ROM can be mirrored to the last 4MB (disabled by default)
Expansion hardware (if any) may be mirrored within expansion region
The seven DMA Control Registers at 1F8010x8h are mirrored to 1F8010xCh
</code></pre>
<p>The size of the RAM, BIOS, Expansion regions can be configured by software, for
Expansion Region it's also possible to change base address, see:<br/>
<a href="../memorycontrol/">Memory Control</a><br/>
The Scratchpad is mirrored only in KUSEG and KSEG0, but not in KSEG1.<br/></p>
<h4 id="memory-exceptions">Memory Exceptions</h4>
<pre><code> Memory Error ------&gt; Misalignments
(and probably also KSEG access in User mode)
Bus Error ------&gt; Unused Memory Regions (including Gaps in I/O Region)
(unless RAM/BIOS/Expansion mirrors are mapped to "unused" area)
</code></pre>
<h4 id="write-queue">Write queue</h4>
<p>The MIPS CPU has a 4-words deep pass-through write queue, in order to relieve
some bus contention when writing to memory. If reading the same memory location
that just got written into the write queue, it will first be flushed before
being read back from memory.<br/>
It is important to realize that the write queue's mechanism is only viable for
normal memory attached to the main CPU, and that any hardware register state machine
will get messed up by it.<br/>
The typical example is the typical JEDEC standard to access flash, which usually does
the following sequence to read the ID of a flash chip:</p>
<pre><code class="language-C"> base[0xAAA] = 0xAA;
base[0x555] = 0x55;
base[0xAAA] = 0x90;
uint8_t mnfctrID = base[0x000];
uint8_t deviceId = base[0x002];
</code></pre>
<p>In this example above, if <code>base</code> is located in a memory segment that has the write queue
enabled, even if the low level assembly code will do the first 3 stores before doing 2 loads,
the physical signals sent to that device through the CPU bus will be seen in the sequence:</p>
<pre><code>store(0xaaa, 0xaa)
load(0x000)
store(0x555, 0x55)
load(0x002)
store(0xaaa, 0x90)
</code></pre>
<p>Therefore, using KSEG1 that disables the write queue is the only way to ensure that the
operations are done in the proper way.</p>
<p>The above is valid for most of the hardware connected to the main CPU, such as the CDROM
controller, exp1, exp2, the SPU, or the GPU. Therefore, using BF80180xh to access the
CDROM registers is more correct than using 1F80180xh.</p>
<p>It is noteworthy that the Sony code will still incorrectly use KUSEG as the memory map
for all hardware registers, and they then spend a lot of time writing 4 dummy values
somewhere, in order to ensure the write queue has been flushed.</p>
<p>The SN debugger in contrast is properly using the KSEG1 memory map for all the hardware
registers, nullifying the need to flush the write queue when accessing it.</p>
<p>It's also noteworthy that doing ANY KSEG1 access (read OR write) will automatically stall
the CPU in order to flush the whole write queue before proceeding with the operation.
Therefore, all BIOS ROM operations will naturally and effectively have the write queue
disabled, as this code requires the CPU to read from KSEG1 constantly.</p>
<p>This also means that if using KUSEG for the hardware registers, another method to flush
the write queue, albeit potentially slightly less efficient, would be to simply read
the first byte located at BFC00000h. The latter is what is effectively described as the
official method to flush the write queue in the MIPS handbook. This could be potentially
useful to flush the write queue all at once, instead of flushing it word by word.</p>
<h4 id="more-memory-info">More Memory Info</h4>
<p>For Info on Exception vectors, Unused/Garbage memory locations, I/O Ports,
Expansion ROM Headers, and Memory Waitstate Control, etc. see:<br/>
<a href="../iomap/">I/O Map</a><br/>
<a href="../memorycontrol/">Memory Control</a><br/>
<a href="../expansionportpio/#exp1-expansion-rom-header">EXP1 Expansion ROM Header</a><br/>
<a href="../kernelbios/#bios-memory-map">BIOS Memory Map</a><br/>
<a href="../kernelbios/#bios-memory-allocation">BIOS Memory Allocation</a><br/>
<a href="../cpuspecifications/#cop0-exception-handling">COP0 - Exception Handling</a><br/>
<a href="../unpredictablethings/">Unpredictable Things</a><br/></p>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<nav aria-label="Footer" class="md-footer__inner md-grid">
<a class="md-footer__link md-footer__link--prev" href=".." rel="prev">
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</div>
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Previous
</span>
Home
</div>
</div>
</a>
<a class="md-footer__link md-footer__link--next" href="../iomap/" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Next
</span>
I/O Map
</div>
</div>
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"></path></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" rel="noopener" target="_blank">
Material for MkDocs
</a>
... <a class="link--pdf-download" download href="../psx-spx.pdf" title="PDF">download PDF</a></div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}, "search": "../assets/javascripts/workers/search.fe42c31b.min.js", "version": null}</script>
<script src="../assets/javascripts/bundle.4ea5477f.min.js"></script>
</body>
</html>

4704
pinouts/index.html Normal file

File diff suppressed because it is too large Load Diff

4116
pocketstation/index.html Normal file

File diff suppressed because it is too large Load Diff

BIN
psx-spx.pdf Normal file

Binary file not shown.

View File

@ -0,0 +1,821 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8"/>
<meta content="width=device-width,initial-scale=1" name="viewport"/>
<link href="https://psx-spx.consoledev.net/psxdevboardchipsets/" rel="canonical"/>
<link href="../assets/images/favicon.png" rel="icon"/>
<meta content="mkdocs-1.1.2, mkdocs-material-7.1.3" name="generator"/>
<title>PSX Dev-Board Chipsets - PlayStation Specifications - psx-spx</title>
<link href="../assets/stylesheets/main.e35208c4.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.ef6f36e2.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font-family:"Roboto";--md-code-font-family:"Roboto Mono"}</style>
<link href="../css/extra.css" rel="stylesheet"/>
</head>
<body data-md-color-accent="indigo" data-md-color-primary="indigo" data-md-color-scheme="default" dir="ltr">
<script>function __prefix(e){return new URL("..",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
<script>var palette=__get("__palette");if(null!==palette&&"object"==typeof palette.color)for(var key in palette.color)document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a class="md-skip" href="#psx-dev-board-chipsets">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="PlayStation Specifications - psx-spx" class="md-header__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
PlayStation Specifications - psx-spx
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
PSX Dev-Board Chipsets
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="indigo" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Switch to dark mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2 2 2 0 0 1 2-2m10-3a5 5 0 0 1 5 5 5 5 0 0 1-5 5H7a5 5 0 0 1-5-5 5 5 0 0 1 5-5h10M7 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3h10a3 3 0 0 0 3-3 3 3 0 0 0-3-3H7z"></path></svg>
</label>
<input class="md-option" data-md-color-accent="blue" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="blue" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Switch to light mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3z"></path></svg>
</label>
</form>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" data-md-state="active" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</label>
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"></path></svg>
</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="PlayStation Specifications - psx-spx" class="md-nav__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
PlayStation Specifications - psx-spx
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
Home
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../memorymap/">
Memory Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../iomap/">
I/O Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../graphicsprocessingunitgpu/">
Graphics Processing Unit (GPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometrytransformationenginegte/">
Geometry Transformation Engine (GTE)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../macroblockdecodermdec/">
Macroblock Decoder (MDEC)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../soundprocessingunitspu/">
Sound Processing Unit (SPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../interrupts/">
Interrupts
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../dmachannels/">
DMA Channels
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../timers/">
Timers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromdrive/">
CDROM Drive
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../controllersandmemorycards/">
Controllers and Memory Cards
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pocketstation/">
Pocketstation
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../serialportsio/">
Serial Port (SIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../expansionportpio/">
Expansion Port (PIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../memorycontrol/">
Memory Control
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../unpredictablethings/">
Unpredictable Things
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cpuspecifications/">
CPU Specifications
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../kernelbios/">
Kernel (BIOS)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../arcadecabinets/">
Arcade Cabinets
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cheatdevices/">
Cheat Devices
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<label class="md-nav__link md-nav__link--active" for="__toc">
PSX Dev-Board Chipsets
<span class="md-nav__icon md-icon"></span>
</label>
<a class="md-nav__link md-nav__link--active" href="./">
PSX Dev-Board Chipsets
</a>
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-dtl-h2000-cpu-board">
Sony DTL-H2000 CPU Board
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-dtl-h2000-pio-board">
Sony DTL-H2000 PIO Board
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-dtl-h2500-dev-board-pci-bus">
Sony DTL-H2500 Dev board (PCI bus)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-dtl-h2700-dev-board-isa-bus-cpu-analyzer">
Sony DTL-H2700 Dev board (ISA bus) (CPU, ANALYZER ...?)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-dtl-h201a-dt-hv-graphic-artist-board-ibm-pcats-to-ntsc-video">
Sony DTL-H201A / DT-HV - Graphic Artist Board (IBM PC/ATs to NTSC video)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#dtl-s2020-aka-psy-q-cd-emu">
DTL-S2020 aka Psy-Q CD Emu
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#psy-q-development-system-psygnosis-1994">
PSY-Q Development System (Psygnosis 1994)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-dtl-h800-sound-artist-board-with-optical-fibre-audio-out">
Sony DTL-H800 Sound Artist Board (with optical fibre audio out)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-coh-2000-unknown-purpose">
Sony COH-2000 (unknown purpose)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-dtl-h2010-black-external-cdrom-drive-for-dtl-h2000-cd-r-compatible">
Sony DTL-H2010 (Black External CDROM Drive for DTL-H2000, CD-R compatible)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-dtl-h2510-gray-internal-cdrom-drive">
Sony DTL-H2510 (Gray Internal CDROM Drive)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-scph-9903-gray-scex-free-playstation">
Sony SCPH-9903 (Gray SCEx-free Playstation)
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../hardwarenumbers/">
Hardware Numbers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pinouts/">
Pinouts
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../aboutcredits/">
About &amp; Credits
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromvideocdsvcd/">
CDROM Video CDs (VCD)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdrominternalinfoonpsxcdromcontroller/">
CDROM Internal Info on PSX CDROM Controller
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-dtl-h2000-cpu-board">
Sony DTL-H2000 CPU Board
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-dtl-h2000-pio-board">
Sony DTL-H2000 PIO Board
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-dtl-h2500-dev-board-pci-bus">
Sony DTL-H2500 Dev board (PCI bus)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-dtl-h2700-dev-board-isa-bus-cpu-analyzer">
Sony DTL-H2700 Dev board (ISA bus) (CPU, ANALYZER ...?)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-dtl-h201a-dt-hv-graphic-artist-board-ibm-pcats-to-ntsc-video">
Sony DTL-H201A / DT-HV - Graphic Artist Board (IBM PC/ATs to NTSC video)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#dtl-s2020-aka-psy-q-cd-emu">
DTL-S2020 aka Psy-Q CD Emu
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#psy-q-development-system-psygnosis-1994">
PSY-Q Development System (Psygnosis 1994)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-dtl-h800-sound-artist-board-with-optical-fibre-audio-out">
Sony DTL-H800 Sound Artist Board (with optical fibre audio out)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-coh-2000-unknown-purpose">
Sony COH-2000 (unknown purpose)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-dtl-h2010-black-external-cdrom-drive-for-dtl-h2000-cd-r-compatible">
Sony DTL-H2010 (Black External CDROM Drive for DTL-H2000, CD-R compatible)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-dtl-h2510-gray-internal-cdrom-drive">
Sony DTL-H2510 (Gray Internal CDROM Drive)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sony-scph-9903-gray-scex-free-playstation">
Sony SCPH-9903 (Gray SCEx-free Playstation)
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a class="md-content__button md-icon" href="https://github.com/psx-spx/psx-spx.github.io/edit/master/docs/psxdevboardchipsets.md" title="Edit this page">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"></path></svg>
</a>
<h1 id="psx-dev-board-chipsets">PSX Dev-Board Chipsets</h1>
<h4 id="sony-dtl-h2000-cpu-board">Sony DTL-H2000 CPU Board</h4>
<pre><code> CL825 20pin pin test points (2x10 pins)
CL827 20pin pin test points (2x10 pins)
U83 64pin SEC KM4216V256G-60 (DRAM 256Kx16) ;dual-ported VRAM
U84 64pin SEC KM4216V256G-60 (DRAM 256Kx16) ;dual-ported VRAM
CL828 20pin pin test points (2x10 pins)
CL826 20pin pin test points (2x10 pins)
X10 4pin JC53.20 (PAL, 53.203425MHz)
X2 4pin 53.69317MHz (NTSC, 53.693175MHz)
U62 20pin LVT244 (dual 4-bit 3-state noninverting buffer/line driver)
U27 64pin Sony CXD2923AR ;GPU'b
CL813 20pin pin test points (2x10 pins)
CL814 20pin pin test points (2x10 pins) (with one resistor or so installed)
U16 160pin Sony CXD8514Q ;GPU'a
X7 4pin 67.73760 MHz
CL807 20pin pin test points (2x10 pins)
CL809 20pin pin test points (2x10 pins)
CL811 20pin pin test points (2x10 pins)
U801 208pin Sony CXD8530BQ ;CPU
U11 28pin SEC KM48V2104AJ-6 (DRAM 2Mx8) ;Main RAM
U10 28pin SEC KM48V2104AJ-6 (DRAM 2Mx8) ;Main RAM
U9 28pin SEC KM48V2104AJ-6 (DRAM 2Mx8) ;Main RAM
U8 28pin SEC KM48V2104AJ-6 (DRAM 2Mx8) ;Main RAM
CN801 100pin Blue connector (to other ISA board)
U66 48pin LVT16244? (quad 4-bit 3-state noninverting buffer/line driver)
U65 48pin LVT16244? (quad 4-bit 3-state noninverting buffer/line driver)
U64 48pin LVT16245? (dual 8-bit 3-state noninverting bus transceiver)
U34 100pin Sony CXD2922Q ;SPU
U63 14pin 74F74N (dual flipflop)
U32 44pin SEC KM416V256B1-8 (DRAM 256Kx16) ;SoundRAM
CL801 20pin pin test points (2x10 pins)
CL802 20pin pin test points (2x10 pins)
Q881 3pin voltage stuff?
U31 20pin 74ACT244P (dual 4-bit 3-state noninverting buffer/line driver)
U35 18pin Sony CXD2554P or OKI M6538-01 (aka MSM6538-01?) (audio related?)
U36 20pin Sanyo LC78815 ;16bit D/A Converter
U37 8pin NEC ...? C4558C? D426N0B or 9426HOB or so?
J806 8pin solder pads...
J805 9pin solder pads...
J804 10pin solder pads... (11pins, with only 10 contacts?)
- 48pin solder pads (12x4pin config jumpers or so)
U26 20pin SN74ALSxxx logic?
U71 24pin Sony CXA1xxxx? ;RGB?
JPxx 9pin PAL/NTSC Jumpers (three 3pin jumpers)
J801 24pin solder pads...
J803 9pin rear connector: Serial Port (3.3V) (aka "J308") (DB9) (5+4pin)
J802 15pin rear connector: AV Multi-out (5+5+5pin)
CN881 98pin ISA Bus Cart-edge (2x31 basic pins, plus 2x18 extended pins)
</code></pre>
<h4 id="sony-dtl-h2000-pio-board">Sony DTL-H2000 PIO Board</h4>
<pre><code> JP72x 68pin Black connector (maybe equivalent to 68pin PSX expansion port?)
SWI 5pin solder pads...
U371 40pin HN27C4000G-12 (512Kx8 / 256Kx16 EPROM) (sticker: "94/7/27")
U370 84pin Altera EPM7160ELC84-12 (sticker: "U730, cntl 1")
U3 14pin SN74ALS1004N (hex inverters)
U43 44pin Altera EPM7032LC44-10 (sticker: "U43, add 1")
U716 28pin Sharp LH5498D-35 (FIFO 2Kx9)
U717 28pin Sharp LH5498D-35 (FIFO 2Kx9)
U719 28pin Sharp LH5498D-35 (FIFO 2Kx9)
U720 28pin Sharp LH5498D-35 (FIFO 2Kx9)
U724 20pin SN74ALS688N (8bit inverting identity comparator with enable)
U722 20pin SN74ALS245AN (8bit tristate noninverting bus transceiver)
U47 20pin 74FCT244ATP (dual 4-bit 3-state noninverting buffer/line driver)
U732 48pin LVT16245? (dual 8-bit 3-state noninverting bus transceiver)
U711 20pin SN74ALS244BN (dual 4-bit 3-state noninverting buffer/line driver)
U712 20pin SN74ALS244BN (dual 4-bit 3-state noninverting buffer/line driver)
U713 20pin 74HC244AP (dual 4-bit 3-state noninverting buffer/line driver)
U714 20pin 74HC244AP (dual 4-bit 3-state noninverting buffer/line driver)
U721 20pin SN74ALS244BN (dual 4-bit 3-state noninverting buffer/line driver)
U55 14pin SN74ALS08N (quad 2-input AND gates)
U726 20pin SN74ALS245AN (8bit tristate noninverting bus transceiver)
U715 20pin 74HC244AP (dual 4-bit 3-state noninverting buffer/line driver)
JPxx 100pin Blue connector (to other ISA board)
U738 20pin LVT244 (SMD) (dual 4-bit 3-state noninverting buffer/line driver)
U734 32pin KM684000G-7 (SRAM 512Kx8) ;\maybe 1Mbyte EXP3 RAM ?
U733 32pin KM684000G-7 (SRAM 512Kx8) ;/
U725 20pin SN74ALS688N (8bit inverting identity comparator with enable)
S700 24pin 12bit DIP switch (select I/O Address bits A15..A4)
JP700 8pin Jumper (4x2 pins) (select IRQ15/IRQ12/IRQ11/IRQ10)
JP7xx 12pin Jumper (3x4 pins) (select DMA7/DMA6/DMA5)
U64 48pin LVT16245? (dual 8-bit 3-state noninverting bus transceiver)
U65 48pin LVT16244? (quad 4-bit 3-state noninverting buffer/line driver)
U66 48pin LVT16244? (quad 4-bit 3-state noninverting buffer/line driver)
U737 48pin LVT16244? (quad 4-bit 3-state noninverting buffer/line driver)
U710 20pin SN74ALS244BN (dual 4-bit 3-state noninverting buffer/line driver)
U709 20pin HD74HC245P (8bit tristate noninverting bus transceiver)
U723 14pin SN74ALS38AN (quad open-collector NAND gates with buffered output)
U2 14pin SN74LS19AN (hex inverters with schmitt-trigger)
U1 8pin Dallas DS1232 (MicroMonitor Chip) ;power-good-detect ?
U708 20pin HD74HC245P (8bit tristate noninverting bus transceiver)
X3 2pin 4.1900 (4.19MHz for SPC700 CPU)
U42 80pin P823, U01Q (Sony CXP82300 SPC700 CPU with piggyback EPROM socket)
U42' 32pin 27C256A-15 (EPROM 32Kx8) (sticker: "94/11/28")
U706 10pin some slim chip with 1x10 pins
BT700 2pin battery (or super-cap?) for DS1302S (?) (not installed)
U729? 5pin voltage stuff?
U40 8pin Dallas DS1302S (real time clock)
X4 2pin small crystal (32.768kHz for DS1302S)
JP702 34pin Black connector (maybe for internal CDROM Emulator ISA cart?)
U736 28pin Sony CXK58257ASP-70L (SRAM 32Kx8) ;CDROM Sector Buffer?
U735 100pin Sony CXD1199BQ ;CDROM Decoder/FIFO
JP715 40pin Blue connector... to external DTL-H2010 CDROM drive?
JP721 9pin rear connector: Joypad/Memcard 2 (DB9)
JP719 9pin rear connector: Joypad/Memcard 1 (DB9)
? - rear hole for cdrom-cable to Blue 40pin connector?
J70x 98pin ISA Bus Cart-edge (2x31 basic pins, plus 2x18 extended pins)
</code></pre>
<p>JP715 must be either connected to an external CDROM drive, or to some of
"terminator" plug (which shortcuts Pin23 and Pin26 with each other; software
may hang upon certain I/O operations without that terminator).<br/></p>
<h4 id="sony-dtl-h2500-dev-board-pci-bus">Sony DTL-H2500 Dev board (PCI bus)</h4>
<p>Newer revision of the DTL-H2000 board. Consists of a single PCI card (plus tiny
daughterboard with Controller ports).<br/></p>
<pre><code> Mainboard "PI-27 1-589-867-11, DTL-H2500, MAIN BOARD 1575E01A0, SONY"
Daughterboard "SONY,CN-102 1-589-865-11,CONNECTOR BOARD,DTL-H2500,1575E02A0"
CJ1 9pin rear connector: DB9
CJ2? 15pin rear connector: AV Multi-out (5+5+5pin)
CJ3 10pin gray connector (to controller daughterboard with two DB9's)
CJ4 34pin black connector (maybe for internal CDROM Emulator ISA cart?)
CJ5 50pin black connector (to DTL-H2510, Gray Internal CDROM Drive?)
CJ6 68pin black connector (maybe equivalent to 68pin PSX expansion port?)
- 124pin PCI bus cart edge connector
CJ1' 9pin rear connector: DB9 (CTR1, joypad 1) ;\
CJ2' 9pin rear connector: DB9 (CTR2, joypad 2) ; on daughterboard
CJ3' 10pin gray ribbon cable (to CJ3 on main board) ;/
IC103 208pin Sony CXD8530CQ (CPU)
IC106 28pin SEC KM48V2104AT-6 (DRAM 2Mx8)
IC107 28pin SEC KM48V2104AT-6 (DRAM 2Mx8)
IC108 28pin SEC KM48V2104AT-6 (DRAM 2Mx8)
IC109 28pin SEC KM48V2104AT-6 (DRAM 2Mx8)
IC201 64pin SEC KM4216V256G-60 (DRAM 256Kx16) ;dual-ported VRAM
IC202 64pin SEC KM4216V256G-60 (DRAM 256Kx16) ;dual-ported VRAM
IC203 160pin Sony CXD8514Q ;GPU'a
IC207 64pin Sony CXD2923AR ;GPU'b
IC303 28pin HM62W256LFP-7T (CDROM SRAM 32Kx8) ;on back side
IC304 52pin "D 2021, SC430920PB, G64C 185, JSAA9618A" (Sub-CPU) ;on back
IC305 100pin Sony CXD1199BQ (CDROM Decoder/FIFO) ;on back side
IC308 100pin Sony CXD2922BQ (SPU) ;on back side
IC310 44pin SEC KM416V256BLT-7 (DRAM 256Kx16) ;SoundRAM ;on back side
IC402 24pin something bigger
IC404 8pin something small
IC405 8pin something small
IC501 24pin Sony CXA1645M (Analog RGB to Composite) ;on back side
IC701 4pin "RD, 5B" or so ;on back side
IC801 +++pin "ALTERA, FLEX, EPF8820ARC208-3, A9607"
IC802 20pin LVT245A &lt;-- ;on back side
IC803 52pin "IDT71321, LA35J, S9704P" (2Kx8 dual port SRAM)
IC804 20pin LVT244A
IC805 8pin something with socket (sticker: "PD3")
IC807-2 32pin MX 27C1000MC-90 (PROM) ;\on back side
IC808 32pin F 29F040A-90 (FLASH) ;/BIOS on these chip(s) or so?
IC901 4pin 37, 69 ;\on back side
IC902 4pin 37, 69 ;/
ICxxx? 28pin "DALLAS, DS1230Y-100, NONVOLATILE SRAM"
U28 20pin LVT244A
Z1 20pin LVT244A ;\on back side
Z2 20pin LVT245A &lt;-- ;/
Z3 20pin LVT244A
Z4 20pin LVT244A ;\
Z5 20pin LVT245A &lt;-- ; on back side
Z6 20pin LVT244A ;/
Z7 20pin LVT244A
Z8 20pin LVT244A
Z9 20pin LVT244A
X101 4pin RC67.73, JVC 5L (67.7376MHz oscillator for main cpu)
X201 4pin JC53.20, JVC 6A (for GPU, PAL)
X202 4pin JC53.69, JVC 6A (for GPU, NTSC)
X302 3pin 4.000MHz (for sub-cpu)
</code></pre>
<h4 id="sony-dtl-h2700-dev-board-isa-bus-cpu-analyzer">Sony DTL-H2700 Dev board (ISA bus) (CPU, ANALYZER ...?)</h4>
<p>Another revision of the DTL-H2000/DTL-H2500 boards. Consists of a single ISA
card stacked together with two huge daughterboards, and probably additionally
having a small connector daughterboard. Exact chipset is unknown (there might
be components on both sides of the PCBs, most of them not visible due to the
PCB stacking, so taking photos/scans of the PCBs would require advanced
techniques with screwdrivers).<br/>
Currently the only known chip name is an EPROM (MX 27C1000DC-90, with sticker
"Title=DTL-H2700, Ver=1.00, Date=96.12.4, Sum=046B No."). The ISA card is
having markings: "SONY HCD MWB-7? MADE IN JAPAN, PA47 1-589-003-01 1642E03A0".<br/>
One uncommon feature is an extra connector for a "trigger switch" (foot pedal),
which is reportedly used for activating performance analyzer logging.<br/></p>
<h4 id="sony-dtl-h201a-dt-hv-graphic-artist-board-ibm-pcats-to-ntsc-video">Sony DTL-H201A / DT-HV - Graphic Artist Board (IBM PC/ATs to NTSC video)</h4>
<pre><code> X2 xpin TXC-2 OSC 66.000MHz
X1 xpin TXC-2AOSC 53.693MHz
U16 14pin 74F74 (dual flipflop)
U29 14pin 74AS04 (hex inverters)
U14 20pin LVT244 (dual 4-bit 3-state noninverting buffer/line driver)
U18 20pin LVT244 (dual 4-bit 3-state noninverting buffer/line driver)
U15 20pin ACT244 (dual 4-bit 3-state noninverting buffer/line driver)
U11 84pin Altera EPM7096LC84-12 (sticker: "artpc13" or "ARTPC13")
U13 160pin Sony CXD8514Q ;GPU'a
U5 14pin ALS38A ? (quad open-collector NAND gates with buffered output)
U27 20pin ALS244AJ ? (dual 4bit tristate noninverting buffer/line driver)
Q1 3pin T B596
U23 64pin KM4216V256G-60 (DRAM 256Kx16) ;dual-ported VRAM
U22 64pin KM4216V256G-60 (DRAM 256Kx16) ;dual-ported VRAM
U28 64pin Sony CXD2923AR ;GPU'b
S1 16pin 8bit DIP switch (select I/O address A15..A8)
S2 8pin 4bit DIP switch (select I/O address A7..A4)
U1 20pin SN74ALS688N (8bit inverting identity comparator with enable)
U2 20pin SN74ALS688N (8bit inverting identity comparator with enable)
U3 20pin ALS245A (8bit tristate noninverting bus transceiver)
JP9 12pin Jumper (6x2 pins) (select IRQ15/IRQ11/IRQ10/IRQ9/IRQ5/IRQ3)
U26 24pin Sony CXA1145M ? ;RGB?
JP10 3pin Jumper ;\
JP12 3pin Jumper ; select "S" or "O" (?)
JP11 3pin Jumper ;/
J3 2pin? Yellow connector (composite video out?)
J2? pin? Mini DIN? connector (maybe S-video out?)
J1 15pin High Density SubD (maybe video multi out?)
CJx 98pin ISA Bus Cart-edge (2x31 basic pins, plus 2x18 extended pins)
</code></pre>
<h4 id="dtl-s2020-aka-psy-q-cd-emu">DTL-S2020 aka Psy-Q CD Emu</h4>
<pre><code> Yellow PCB "CD Emulator System, (C) Cirtech &amp; SN Systems Ldt, 1994 v1.2"
IC 24pin GAL20V8B
IC 68pin Analog Devices ADSP-2101 (16bit DSP Microprocessor)
IC 20pin HD74HC244P
IC15 20pin HD74HC244P
IC14 20pin CD74HCT245E
IC7 28pin 27C512-10 (EPROM 64Kx8) (yellow sticker, without text)
IC 28pin HY62256ALP-70 (SRAM 32Kx8)
IC12 28pin HY62256ALP-70 (SRAM 32Kx8)
IC 28pin HY62256ALP-70 (SRAM 32Kx8)
IC13 84pin Emulex/QLogic FAS216 (Fast Architecture SCSI Processor)
IC5 84pin Emulex/QLogic FAS216 (Fast Architecture SCSI Processor)
IC4 24pin GAL20V8B (near IO Addr jumpers)
IC 20pin 74LS244B1 (near lower 8bit of ISA databus)
IC 20pin SN74LS245N? (near lower 8bit of ISA databus)
IC 20pin SN74LS245N (near upper 8bit of ISA databus)
DMA 12pin Jumpers (select DMA7/6/5)
IRQ 12pin Jumpers (select IRQ15/12/11/10/7/5)
IO 16pin Jumpers (select IO Addr 300/308/310/318/380/388/390/398)
SCSI 6pin Jumpers (select SCSI ID 4/2/1) (aka 3bit 0..7 ?)
PL3 34pin Connector to DTL-H2000 ?
PL1 50pin Connector to INTERNAL SCSI hardware ?
PL2 50pin? Connector to EXTERNAL SCSI hardware ? (25pin plug/50pin cable?)
Jx 98pin ISA Bus Cart-edge (2x31 basic pins, plus 2x18 extended pins)
</code></pre>
<p>Note: There's also a similar ISA cart (DTL-S510B) with less chips and less
connectors.<br/>
Note: The SN Systems carts seem to have been distributed by Sony (with
"DTL-Sxxxx" numbers), and also distributed by Psygnosis. The external SCSI
connectors can be possibly also used with Psy-Q Development Systems for SNES
and Sega Saturn?<br/></p>
<h4 id="psy-q-development-system-psygnosis-1994">PSY-Q Development System (Psygnosis 1994)</h4>
<pre><code> 32pin GM76C8128ALLFW85 (SRAM 128Kx8)
44pin ALTERA EPM7032LC44-15T
34pin EMULEX FAS101 (SCSI Interface Processor)
28pin 27C64 (EPROM 8Kx8) (green sticker, without text)
20pin LCX245 (=74245?)
8pin 2112, CPA, H9527 (?)
3pin transistor? voltage regulator?
20pin DIP socket (containing two 10pin resistor networks)
20pin DIP socket (containing two 10pin resistor networks)
2pin CR2032 Battery 3V
68pin Connector to PSX "Parallel I/O" expansion port
25pin Connector to SCSI hardware (to DTL-S510B or DTL-S2020 ISA cart or so?)
</code></pre>
<h4 id="sony-dtl-h800-sound-artist-board-with-optical-fibre-audio-out">Sony DTL-H800 Sound Artist Board (with optical fibre audio out)</h4>
<pre><code> U15 24pin ?
U5 28pin 27C256 (EPROM 32Kx8) (not installed)
U7 4pin 67.7376MHz oscillator
U8 14pin ?
U11 44pin SEC KM416V256B1-8 (DRAM 256Kx16) ;SoundRAM
(44pin package with middle 4pin missing, 40pins used)
U10 100pin Sony CXD2925Q ;SPU
U4 160pin Lattice IspLSI 3256 (sticker: "VER3")
U6 128pin Lattice IspLSI xxxx ?
U12 48pin ?
U13 48pin ?
U3 20pin 74ACT244
U14 5pin "LM25755, -3.3 P+" ?
U2 54pin ?
U1 54pin ?
U9 ?pin GP1F31T (light transmitting unit for optical fibre cable)
? 124pin PCI bus cart edge connector
? 8pin internal jumper/connector? (7pin installed, 1pin empty)
</code></pre>
<p>Note: There's also a similar board (DTL-H700) for MAC/NuBus instead of PCI bus.<br/></p>
<h4 id="sony-coh-2000-unknown-purpose">Sony COH-2000 (unknown purpose)</h4>
<pre><code> U1 14pin SN74ALS388N ?
U2 20pin SN74ALS688N (8bit inverting identity comparator with enable)
U3 20pin SN74ALS688N (8bit inverting identity comparator with enable)
U4 24pin PALxxx ?
U5 20pin SN74ALS245AN
U6 20pin SN74ALS245AN
U7 20pin SN74ALS244N
U8 20pin SN74ALS244N
U9 20pin SN74ALS245AN
U10 20pin SN74ALS245AN
U11 20pin SN74ALS244N
S2 16pin 8bit DIP switch (ISA 15/14/13/12/11/10/9/8) ;I/O address bit15-8
S1 8pin 4bit DIP switch (ISA 7/6/5/4) ;I/O address bit7-4
S3 8pin 4bit DIP switch (BISO? 3/2/1/0) ;BISO? or BISD? or 8150?
JPxx .... several jumpers (unknown purpose)
Jx 98pin ISA Bus Cart-edge (2x31 basic pins, plus 2x18 extended pins)
J5 68pin Connector on rear side (unknown purpose)
</code></pre>
<p>Unknown what COH-2000 was used for. One theory was that it's related to
PSX-based arcade cabinets. The 68pin connector might be also related to the
68pin PSX "Parallel I/O" expansion port.<br/></p>
<h4 id="sony-dtl-h2010-black-external-cdrom-drive-for-dtl-h2000-cd-r-compatible">Sony DTL-H2010 (Black External CDROM Drive for DTL-H2000, CD-R compatible)</h4>
<p>External front loading CDROM drive with Eject button. Connects to the blue
40pin connector on DTL-H2000 boards.<br/></p>
<pre><code> IC101 100pin SONY CXD2515Q (Signal Processor + Servo Amp) ;\
IC102 28pin BA6297AFP ; on mainboard
ICxx 20pin SONY CXA1571N (RF Amp) (on tiny daughtboard) ; (HCMK-81X)
CN101 21pin connector to DEX2010.SCH board ;
CN10x 12pin connector to KSS-240A (laser pickup) ;
S101 2pin pos0 switch or so? ;
M101 2pin spindle motor ;/
U1 20pin 74ALS244BN ;\
U2 20pin 74ALS244BN ;
U3 20pin 74ALS244BN ; on DEX2010.SCH board
J1 2pin connector to EJECT BUTTON ;
J2 5pin connector to LOADING MOTOR ;
J3 21pin connector to mainboard ;
JP1 40pin external connector to DTL-H2000 ;/
CN151 5pin connector to DEX2010.SCH board ;\
M151 2pin loading motor (eject motor) ; on CDM 14, CMK PSX board
S151 2pin OUT SW ;\switches, probably to ;
S152 2pin IN SW ;/sense load/eject status ;/
CN1 2pin connector to DEX2010.SCH board ;\on DTL-H2010(1) board
SW1 2pin eject button ;/
</code></pre>
<p>The required cable consists of a Yamaichi NFS-40a female connector (blue
connector on DTL-H2000 side), 0.635mm pitch ribbon cable, and 3M Sub-D MDR40
connector (silver connector on DTL-H2010 side). But caution: the odd/even pins
on the cable are somewhat swapped, on DTL-H2000 side the wires should be
ordered 1,2,3,4,..,39,40, but on DTL-H2010 side they should be ordered
2,1,4,3,..,40,39.<br/></p>
<h4 id="sony-dtl-h2510-gray-internal-cdrom-drive">Sony DTL-H2510 (Gray Internal CDROM Drive)</h4>
<p>This is some sort of a mimmicked front loading PC CDROM drive (consisting of a
tray that contains a normal (top-loading) PSX cdrom drive unit).<br/></p>
<pre><code> IC309 80pin Sony CXD2510Q (CDROM Signal Processor)
ICxx ?pin Unknown if there are further ICs (eg. CXA1782BR should exist?)
CN1 10pin Connector to daughterboard (with drive unit)
CN2 4pin Connector to PC power supply (12V/5V and 2xGND)
CN3 50pin Connector to DTL-H2500 or so? (need "PCS-E50FC" plug?)
</code></pre>
<p>There is no eject button, unknown if there's some eject motor, or if one
needs to push/pull the drive tray manually.<br/></p>
<h4 id="sony-scph-9903-gray-scex-free-playstation">Sony SCPH-9903 (Gray SCEx-free Playstation)</h4>
<p>A rare SCEx-free Playstation that can boot from CDR's without SCEx strings;
maybe intended for beta-testers. Marked "Property of Sony Computer
Entertainment", "U/C".<br/></p>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<nav aria-label="Footer" class="md-footer__inner md-grid">
<a class="md-footer__link md-footer__link--prev" href="../cheatdevices/" rel="prev">
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</div>
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Previous
</span>
Cheat Devices
</div>
</div>
</a>
<a class="md-footer__link md-footer__link--next" href="../hardwarenumbers/" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Next
</span>
Hardware Numbers
</div>
</div>
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"></path></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" rel="noopener" target="_blank">
Material for MkDocs
</a>
... <a class="link--pdf-download" download href="../psx-spx.pdf" title="PDF">download PDF</a></div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}, "search": "../assets/javascripts/workers/search.fe42c31b.min.js", "version": null}</script>
<script src="../assets/javascripts/bundle.4ea5477f.min.js"></script>
</body>
</html>

1
search/search_index.json Normal file

File diff suppressed because one or more lines are too long

728
serialportsio/index.html Normal file
View File

@ -0,0 +1,728 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8"/>
<meta content="width=device-width,initial-scale=1" name="viewport"/>
<link href="https://psx-spx.consoledev.net/serialportsio/" rel="canonical"/>
<link href="../assets/images/favicon.png" rel="icon"/>
<meta content="mkdocs-1.1.2, mkdocs-material-7.1.3" name="generator"/>
<title>Serial Port (SIO) - PlayStation Specifications - psx-spx</title>
<link href="../assets/stylesheets/main.e35208c4.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.ef6f36e2.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font-family:"Roboto";--md-code-font-family:"Roboto Mono"}</style>
<link href="../css/extra.css" rel="stylesheet"/>
</head>
<body data-md-color-accent="indigo" data-md-color-primary="indigo" data-md-color-scheme="default" dir="ltr">
<script>function __prefix(e){return new URL("..",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
<script>var palette=__get("__palette");if(null!==palette&&"object"==typeof palette.color)for(var key in palette.color)document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a class="md-skip" href="#serial-port-sio">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="PlayStation Specifications - psx-spx" class="md-header__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
PlayStation Specifications - psx-spx
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Serial Port (SIO)
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="indigo" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Switch to dark mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2 2 2 0 0 1 2-2m10-3a5 5 0 0 1 5 5 5 5 0 0 1-5 5H7a5 5 0 0 1-5-5 5 5 0 0 1 5-5h10M7 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3h10a3 3 0 0 0 3-3 3 3 0 0 0-3-3H7z"></path></svg>
</label>
<input class="md-option" data-md-color-accent="blue" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="blue" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Switch to light mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3z"></path></svg>
</label>
</form>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" data-md-state="active" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</label>
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"></path></svg>
</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="PlayStation Specifications - psx-spx" class="md-nav__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
PlayStation Specifications - psx-spx
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
Home
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../memorymap/">
Memory Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../iomap/">
I/O Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../graphicsprocessingunitgpu/">
Graphics Processing Unit (GPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometrytransformationenginegte/">
Geometry Transformation Engine (GTE)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../macroblockdecodermdec/">
Macroblock Decoder (MDEC)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../soundprocessingunitspu/">
Sound Processing Unit (SPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../interrupts/">
Interrupts
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../dmachannels/">
DMA Channels
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../timers/">
Timers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromdrive/">
CDROM Drive
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../controllersandmemorycards/">
Controllers and Memory Cards
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pocketstation/">
Pocketstation
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<label class="md-nav__link md-nav__link--active" for="__toc">
Serial Port (SIO)
<span class="md-nav__icon md-icon"></span>
</label>
<a class="md-nav__link md-nav__link--active" href="./">
Serial Port (SIO)
</a>
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801050h-sio_tx_data-w">
1F801050h SIO_TX_DATA (W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801050h-sio_rx_data-r">
1F801050h SIO_RX_DATA (R)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801054h-sio_stat-r">
1F801054h SIO_STAT (R)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801058h-sio_mode-rw-eg-004eh-8n1-with-factormul16">
1F801058h SIO_MODE (R/W) (eg. 004Eh --&gt; 8N1 with Factor=MUL16)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f80105ah-sio_ctrl-rw">
1F80105Ah SIO_CTRL (R/W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f80105ch-sio_misc-rw">
1F80105Ch SIO_MISC (R/W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f80105eh-sio_baud-rw-eg-00dch-9600-bauds-when-factormul16">
1F80105Eh SIO_BAUD (R/W) (eg. 00DCh --&gt; 9600 bauds; when Factor=MUL16)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sio_tx_data-notes">
SIO_TX_DATA Notes
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sio_rx_data-notes">
SIO_RX_DATA Notes
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#interrupt-acknowledge-notes">
Interrupt Acknowledge Notes
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sio_baud-notes">
SIO_BAUD Notes
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sio-ports-vs-joy-ports">
SIO Ports vs JOY Ports
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#note">
Note
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sio-games">
SIO Games
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#8251a-note">
8251A Note
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../expansionportpio/">
Expansion Port (PIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../memorycontrol/">
Memory Control
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../unpredictablethings/">
Unpredictable Things
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cpuspecifications/">
CPU Specifications
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../kernelbios/">
Kernel (BIOS)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../arcadecabinets/">
Arcade Cabinets
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cheatdevices/">
Cheat Devices
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../psxdevboardchipsets/">
PSX Dev-Board Chipsets
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../hardwarenumbers/">
Hardware Numbers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pinouts/">
Pinouts
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../aboutcredits/">
About &amp; Credits
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromvideocdsvcd/">
CDROM Video CDs (VCD)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdrominternalinfoonpsxcdromcontroller/">
CDROM Internal Info on PSX CDROM Controller
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801050h-sio_tx_data-w">
1F801050h SIO_TX_DATA (W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801050h-sio_rx_data-r">
1F801050h SIO_RX_DATA (R)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801054h-sio_stat-r">
1F801054h SIO_STAT (R)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801058h-sio_mode-rw-eg-004eh-8n1-with-factormul16">
1F801058h SIO_MODE (R/W) (eg. 004Eh --&gt; 8N1 with Factor=MUL16)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f80105ah-sio_ctrl-rw">
1F80105Ah SIO_CTRL (R/W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f80105ch-sio_misc-rw">
1F80105Ch SIO_MISC (R/W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f80105eh-sio_baud-rw-eg-00dch-9600-bauds-when-factormul16">
1F80105Eh SIO_BAUD (R/W) (eg. 00DCh --&gt; 9600 bauds; when Factor=MUL16)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sio_tx_data-notes">
SIO_TX_DATA Notes
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sio_rx_data-notes">
SIO_RX_DATA Notes
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#interrupt-acknowledge-notes">
Interrupt Acknowledge Notes
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sio_baud-notes">
SIO_BAUD Notes
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sio-ports-vs-joy-ports">
SIO Ports vs JOY Ports
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#note">
Note
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sio-games">
SIO Games
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#8251a-note">
8251A Note
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a class="md-content__button md-icon" href="https://github.com/psx-spx/psx-spx.github.io/edit/master/docs/serialportsio.md" title="Edit this page">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"></path></svg>
</a>
<h1 id="serial-port-sio">Serial Port (SIO)</h1>
<h4 id="1f801050h-sio_tx_data-w">1F801050h SIO_TX_DATA (W)</h4>
<pre><code> 0-7 Data to be sent
8-31 Not used
</code></pre>
<p>Writing to this register starts transmit (if, or as soon as, TXEN=1 and CTS=on
and SIO_STAT.2=Ready). Writing to this register while SIO_STAT.0=Busy causes
the old value to be overwritten.<br/>
The "TXEN=1" condition is a bit more complex: Writing to SIO_TX_DATA latches
the current TXEN value, and the transfer DOES start if the current TXEN value
OR the latched TXEN value is set (ie. if TXEN gets cleared after writing to
SIO_TX_DATA, then the transfer may STILL start if the old latched TXEN value
was set; this appears for SIO transfers in Wipeout 2097).<br/></p>
<h4 id="1f801050h-sio_rx_data-r">1F801050h SIO_RX_DATA (R)</h4>
<pre><code> 0-7 Received Data (1st RX FIFO entry) (oldest entry)
8-15 Preview (2nd RX FIFO entry)
16-23 Preview (3rd RX FIFO entry)
24-31 Preview (4th RX FIFO entry) (5th..8th cannot be previewed)
</code></pre>
<p>A data byte can be read when SIO_STAT.1=1. Data should be read only via 8bit
memory access (the 16bit/32bit "preview" feature is rather unusable).<br/></p>
<h4 id="1f801054h-sio_stat-r">1F801054h SIO_STAT (R)</h4>
<pre><code> 0 TX Ready Flag 1 (1=Ready/Started) (depends on CTS) (TX requires CTS)
1 RX FIFO Not Empty (0=Empty, 1=Not Empty)
2 TX Ready Flag 2 (1=Ready/Finished) (depends on TXEN and on CTS)
3 RX Parity Error (0=No, 1=Error; Wrong Parity, when enabled) (sticky)
4 RX FIFO Overrun (0=No, 1=Error; Received more than 8 bytes) (sticky)
5 RX Bad Stop Bit (0=No, 1=Error; Bad Stop Bit) (when RXEN) (sticky)
6 RX Input Level (0=Normal, 1=Inverted) ;only AFTER receiving Stop Bit
7 DSR Input Level (0=Off, 1=On) (remote DTR) ;DSR not required to be on
8 CTS Input Level (0=Off, 1=On) (remote RTS) ;CTS required for TX
9 Interrupt Request (0=None, 1=IRQ) (sticky)
10 Unknown (always zero)
11-25 Baudrate Timer (15bit timer, decrementing at 33MHz)
26-31 Unknown (usually zero, sometimes all bits set)
</code></pre>
<p>Note: Bit0 gets cleared after sending the Startbit, Bit2 gets cleared after
sending all bits up to including the Stopbit.<br/></p>
<h4 id="1f801058h-sio_mode-rw-eg-004eh-8n1-with-factormul16">1F801058h SIO_MODE (R/W) (eg. 004Eh --&gt; 8N1 with Factor=MUL16)</h4>
<pre><code> 0-1 Baudrate Reload Factor (1=MUL1, 2=MUL16, 3=MUL64) (or 0=STOP)
2-3 Character Length (0=5bits, 1=6bits, 2=7bits, 3=8bits)
4 Parity Enable (0=No, 1=Enable)
5 Parity Type (0=Even, 1=Odd) (seems to be vice-versa...?)
6-7 Stop bit length (0=Reserved/1bit, 1=1bit, 2=1.5bits, 3=2bits)
8-15 Not used (always zero)
</code></pre>
<h4 id="1f80105ah-sio_ctrl-rw">1F80105Ah SIO_CTRL (R/W)</h4>
<pre><code> 0 TX Enable (TXEN) (0=Disable, 1=Enable, when CTS=On)
1 DTR Output Level (0=Off, 1=On)
2 RX Enable (RXEN) (0=Disable, 1=Enable) ;Disable also clears RXFIFO
3 TX Output Level (0=Normal, 1=Inverted, during Inactivity &amp; Stop bits)
4 Acknowledge (0=No change, 1=Reset SIO_STAT.Bits 3,4,5,9) (W)
5 RTS Output Level (0=Off, 1=On)
6 Reset (0=No change, 1=Reset most SIO_registers to zero) (W)
7 Unknown? (read/write-able when FACTOR non-zero) (otherwise always zero)
8-9 RX Interrupt Mode (0..3 = IRQ when RX FIFO contains 1,2,4,8 bytes)
10 TX Interrupt Enable (0=Disable, 1=Enable) ;when SIO_STAT.0-or-2 ;Ready
11 RX Interrupt Enable (0=Disable, 1=Enable) ;when N bytes in RX FIFO
12 DSR Interrupt Enable (0=Disable, 1=Enable) ;when SIO_STAT.7 ;DSR=On
13-15 Not used (always zero)
</code></pre>
<h4 id="1f80105ch-sio_misc-rw">1F80105Ch SIO_MISC (R/W)</h4>
<p>This is an internal register, which usually shouldn't be accessed by software.
Messing with it has rather strange effects: After writing a value "X" to this
register, reading returns "X ROR 8" eventually "ANDed with 1F1Fh and ORed with
C0C0h or 8080h" (depending on the character length in SIO_MODE).<br/></p>
<h4 id="1f80105eh-sio_baud-rw-eg-00dch-9600-bauds-when-factormul16">1F80105Eh SIO_BAUD (R/W) (eg. 00DCh --&gt; 9600 bauds; when Factor=MUL16)</h4>
<pre><code> 0-15 Baudrate Reload value for decrementing Baudrate Timer
</code></pre>
<p>The Baudrate is calculated (based on SIO_BAUD, and on Factor in SIO_MODE):<br/></p>
<pre><code> BitsPerSecond = (44100Hz*300h) / MIN(((Reload*Factor) AND NOT 1),Factor)
</code></pre>
<h4 id="sio_tx_data-notes">SIO_TX_DATA Notes</h4>
<p>The hardware can hold (almost) 2 bytes in the TX direction (one being currently
transferred, and, once when the start bit was sent, another byte can be stored
in SIO_TX_DATA). When writing to SIO_TX_DATA, both SIO_STAT.0 and SIO_STAT.2
become zero. As soon as the transfer starts, SIO_STAT.0 becomes set (indicating
that one can write a new byte to SIO_TX_DATA; although the transmission is
still busy). As soon as the transfer of the most recently written byte ends,
SIO_STAT.2 becomes set.<br/></p>
<h4 id="sio_rx_data-notes">SIO_RX_DATA Notes</h4>
<p>The hardware can hold 8 bytes in the RX direction (when receiving further
byte(s) while the RX FIFO is full, then the last FIFO entry will by overwritten
by the new byte, and SIO_STAT.4 gets set; the hardware does NOT automatically
disable RTS when the FIFO becomes full).<br/>
Data can be read from SIO_RX_DATA when SIO_STAT.1 is set, that flag gets
automatically cleared after reading from SIO_RX_DATA (unless there are still
further bytes in the RX FIFO). Note: The hardware does always store incoming
data in RX FIFO (even when Parity or Stop bits are invalid).<br/>
Note: A 16bit read allows to read two FIFO entries at once; nethertheless, it
removes only ONE entry from the FIFO. On the contrary, a 32bit read DOES remove
FOUR entries (although, there's nothing that'd indicate if the FIFO did
actually contain four entries).<br/>
Reading from Empty RX FIFO returns either the most recently received byte or
zero (the hardware stores incoming data in ALL unused FIFO entries; eg. if five
entries are used, then the data gets stored thrice, after reading 6 bytes, the
FIFO empty flag gets set, but nethertheless, the last byte can be read two more
times, but doing further reads returns 00h).<br/></p>
<h4 id="interrupt-acknowledge-notes">Interrupt Acknowledge Notes</h4>
<p>First reset I_STAT.8, then set SIO.CTRL.4 (when doing it vice-versa, the
hardware may miss a new IRQ which may occur immediately after setting
SIO.CTRL.4) (and I_STAT.8 is edge triggered, so that bit can be reset even
while SIO_STAT.9 is still set).<br/>
When acknowledging via SIO_CTRL.4 with the enabled condition(s) in
SIO_CTRL.10-12 still being true (eg. the RX FIFO is still not empty): the IRQ
does trigger again (almost) immediately (it goes off only for a very short
moment; barely enough to allow I_STAT.8 to sense a edge).<br/></p>
<h4 id="sio_baud-notes">SIO_BAUD Notes</h4>
<p>Timer reload occurs when writing to SIO_BAUD, and, automatically when the
Baudrate Timer reaches zero. There should be two 16bit SIO timers (for TX and
RX), the upper 15bit of one of that timers can be read from SIO_STAT (not sure
which one, and no idea if there's a way to read the other timer, too).<br/>
Or... maybe there is only ONE timer, and RX/TX are separated only by separate
"timer ellapsed" counters, in that case the MUL1 factor won't work properly,
but, with the MUL16 or MUL64 factors, RX could start anytime (eg. when TX has
already ellapsed a bunch of times)...?<br/>
The maximum baud rate may vary depending on the length and quality of the
cable, whether and how many inverters and anti-inverters are used (on the
mainboard and in external adaptor, and on whether signals are externally
converted to +/-12V levels)... anyways, rates up to 9600 baud should be working
in all cases.<br/>
However, running in no$psx, Wipeout 2097 seems to use about 2 million bauds...
although, in older no$psx versions, I believe I did see it using some kind of
baudrate detection, where it did try different rates in steps of 200 bauds or
so...?<br/></p>
<h4 id="sio-ports-vs-joy-ports">SIO Ports vs JOY Ports</h4>
<p>SIO uses I/O Addresses 1F801050h..1F80105Fh, which seem to be organized similar
to the Controller/Memory Card registers at 1F801040h..1F80104Fh, though not
identical, and with an additional register at 1F80105Ch, which has no
corresponding port at 1F80104Ch.<br/>
SIO_BAUD is \&lt;effectively&gt; same as for JOY_BAUD, but, \&lt;internally&gt;
they are a bit different:<br/></p>
<pre><code> JOY_BAUD is multiplied by Factor, and does then ellapse "2" times per bit.
SIO_BAUD is NOT multiplied, and, instead, ellapses "2*Factor" times per bit.
</code></pre>
<p>Unlike for the Controller/Memory Card ports, the data is transferred without
CLK signal, instead, it's using RS232 format, ie. the transfer starts with a
start bit, and is then transferred at a specific baudrate (which must be
configured identically at the receiver side). For RS232, data is usually 8bit,
and may optionally end with a parity bit, and one or two stop bits.<br/></p>
<h4 id="note">Note</h4>
<p>For SIO Pinouts, PSone SIO upgrading, and for building RS232 adaptors, see:<br/>
<a href="../pinouts/#pinouts-sio-pinouts">Pinouts - SIO Pinouts</a><br/>
Aside from the internal SIO port, the PSX BIOS supports two additional external
serial ports, connected to the expansion port,<br/>
<a href="../expansionportpio/#exp2-dual-serial-port-for-tty-debug-terminal">EXP2 Dual Serial Port (for TTY Debug Terminal)</a><br/></p>
<h4 id="sio-games">SIO Games</h4>
<p>The SIO ports on two consoles can be connected with an SCPH-1040 Link Cable (known as Taisen Cable, or "Fight Cable" in Japan) for multiplayer functionality on games that support this method. This was used by a small number of games in the console's lifecycle, but inconveniently required a second console and copy of the game.</p>
<p>Two-Console Link Cable Games (Incomplete List):</p>
<pre><code>Andretti Racing
Armored Core (and Armored Core "Link Versus Demo" disc)
Armored Core Project Phantasma
Armored Core Master of Arena
Assault Rigs
Ayrton Senna Kart Duel
Blast Radius
Bogey Dead 6
Burning Road
Bushido Blade
Bushido Blade 2
C1 -Circuit-
CART World Series
Command &amp; Conquer Red Alert
Command &amp; Conquer Red Alert Retaliation
Cool Boarders 2
Dead in the Water
Descent
Descent Maximum
Destruction Derby
Duke Nukem Total Meltdown
Dodgem Arena
Doom
Dune 2000
Explosive Racing (X Racing in NTSC-J)
Final Doom
Formula 1
Formula 1 98
Grand Tour Racing '98 (Gekisou!! Grand Racing -Total Driving'- in NTSC-J, Total Drivin in PAL)
Independence Day
Krazy Ivan
Leading Jockey Highbred
Metal Jacket
Mobile Suit Z-Gundam
Monaco Grand Prix Racing Simulation 2 (Monaco Grand Prix in NTSC-U/C)
Motor Toon Grand Prix (reportedly NTSC-U/C version only)
Motor Toon Grand Prix 2
Motor Toon Grand Prix USA Edition
The Need for Speed (Over Drivin' DX in NTSC-J)
PrePre Vol. 2
Pro Pinball Big Race USA
RacinGroovy
Real Robots Final Attack
Red Asphalt (Rock &amp; Roll Racing 2 Red Asphalt in PAL)
Ridge Racer Revolution
R4 Ridge Racer Type 4
Robo Pit
Rogue Trip Vacation 2012
San Francisco Rush Extreme Racing (reportedly PAL version only)
Shutokou Battle R
Sidewinder
Sidewinder USA
Soukou Kihei Votoms Gaiden: Ao no Kishi Berserga Monogatari
Streak Hoverboard Racing
Test Drive 4
Test Drive Off-Road (reportedly NTSC-U/C only)
TOCA 2 Touring Car Challenge (TOCA 2 Touring Cars in PAL)
Trick'N Snowboarder (Tricky Sliders Freestyle Snowboard in NTSC-J)
Twisted Metal III
Wing Over
Wipeout
Wipeout 3 Special Edition
Wipeout XL (Wipeout 2097 in PAL)
Zero Pilot Ginyoku no Senshi
</code></pre>
<p>The serial port is used (for 2-player link) by Wipeout 2097 (that game
accidently assumes BAUDs based on 64*1024*1025 Hz rather than on 600h*44100
Hz).<br/>
Ridge Racer Revolution is also said to support 2P link.<br/>
Keitai Eddy seems to allow to connect a mobile phone to the SIO port (the games
CD cover suggests so; this seems to be something different than the "normal"
I-Mode adaptor, which would connect to controller port, not to SIO port).<br/></p>
<h4 id="8251a-note">8251A Note</h4>
<p>The Playstation Serial Port is apparently based/inspired on the Intel 8251A
USART chip; which has very similar 8bit Mode/Command/Status registers.<br/></p>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<nav aria-label="Footer" class="md-footer__inner md-grid">
<a class="md-footer__link md-footer__link--prev" href="../pocketstation/" rel="prev">
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</div>
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Previous
</span>
Pocketstation
</div>
</div>
</a>
<a class="md-footer__link md-footer__link--next" href="../expansionportpio/" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Next
</span>
Expansion Port (PIO)
</div>
</div>
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"></path></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" rel="noopener" target="_blank">
Material for MkDocs
</a>
... <a class="link--pdf-download" download href="../psx-spx.pdf" title="PDF">download PDF</a></div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}, "search": "../assets/javascripts/workers/search.fe42c31b.min.js", "version": null}</script>
<script src="../assets/javascripts/bundle.4ea5477f.min.js"></script>
</body>
</html>

111
sitemap.xml Normal file
View File

@ -0,0 +1,111 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url>
<loc>https://psx-spx.consoledev.net/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/memorymap/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/iomap/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/graphicsprocessingunitgpu/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/geometrytransformationenginegte/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/macroblockdecodermdec/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/soundprocessingunitspu/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/interrupts/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/dmachannels/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/timers/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/cdromdrive/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/controllersandmemorycards/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/pocketstation/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/serialportsio/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/expansionportpio/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/memorycontrol/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/unpredictablethings/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/cpuspecifications/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/kernelbios/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/arcadecabinets/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/cheatdevices/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/psxdevboardchipsets/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/hardwarenumbers/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/pinouts/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/aboutcredits/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/cdromvideocdsvcd/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>https://psx-spx.consoledev.net/cdrominternalinfoonpsxcdromcontroller/</loc>
<lastmod>2021-05-15</lastmod>
<changefreq>daily</changefreq>
</url>
</urlset>

BIN
sitemap.xml.gz Normal file

Binary file not shown.

File diff suppressed because it is too large Load Diff

456
timers/index.html Normal file
View File

@ -0,0 +1,456 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8"/>
<meta content="width=device-width,initial-scale=1" name="viewport"/>
<link href="https://psx-spx.consoledev.net/timers/" rel="canonical"/>
<link href="../assets/images/favicon.png" rel="icon"/>
<meta content="mkdocs-1.1.2, mkdocs-material-7.1.3" name="generator"/>
<title>Timers - PlayStation Specifications - psx-spx</title>
<link href="../assets/stylesheets/main.e35208c4.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.ef6f36e2.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font-family:"Roboto";--md-code-font-family:"Roboto Mono"}</style>
<link href="../css/extra.css" rel="stylesheet"/>
</head>
<body data-md-color-accent="indigo" data-md-color-primary="indigo" data-md-color-scheme="default" dir="ltr">
<script>function __prefix(e){return new URL("..",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
<script>var palette=__get("__palette");if(null!==palette&&"object"==typeof palette.color)for(var key in palette.color)document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a class="md-skip" href="#timers">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="PlayStation Specifications - psx-spx" class="md-header__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
PlayStation Specifications - psx-spx
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Timers
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="indigo" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Switch to dark mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2 2 2 0 0 1 2-2m10-3a5 5 0 0 1 5 5 5 5 0 0 1-5 5H7a5 5 0 0 1-5-5 5 5 0 0 1 5-5h10M7 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3h10a3 3 0 0 0 3-3 3 3 0 0 0-3-3H7z"></path></svg>
</label>
<input class="md-option" data-md-color-accent="blue" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="blue" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Switch to light mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3z"></path></svg>
</label>
</form>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" data-md-state="active" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</label>
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"></path></svg>
</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="PlayStation Specifications - psx-spx" class="md-nav__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
PlayStation Specifications - psx-spx
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
Home
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../memorymap/">
Memory Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../iomap/">
I/O Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../graphicsprocessingunitgpu/">
Graphics Processing Unit (GPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometrytransformationenginegte/">
Geometry Transformation Engine (GTE)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../macroblockdecodermdec/">
Macroblock Decoder (MDEC)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../soundprocessingunitspu/">
Sound Processing Unit (SPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../interrupts/">
Interrupts
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../dmachannels/">
DMA Channels
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<label class="md-nav__link md-nav__link--active" for="__toc">
Timers
<span class="md-nav__icon md-icon"></span>
</label>
<a class="md-nav__link md-nav__link--active" href="./">
Timers
</a>
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801100hn10h-timer-02-current-counter-value-rw">
1F801100h+N*10h - Timer 0..2 Current Counter Value (R/W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801104hn10h-timer-02-counter-mode-rw">
1F801104h+N*10h - Timer 0..2 Counter Mode (R/W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801108hn10h-timer-02-counter-target-value-rw">
1F801108h+N*10h - Timer 0..2 Counter Target Value (R/W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#dotclockhblank">
Dotclock/Hblank
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromdrive/">
CDROM Drive
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../controllersandmemorycards/">
Controllers and Memory Cards
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pocketstation/">
Pocketstation
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../serialportsio/">
Serial Port (SIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../expansionportpio/">
Expansion Port (PIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../memorycontrol/">
Memory Control
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../unpredictablethings/">
Unpredictable Things
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cpuspecifications/">
CPU Specifications
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../kernelbios/">
Kernel (BIOS)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../arcadecabinets/">
Arcade Cabinets
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cheatdevices/">
Cheat Devices
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../psxdevboardchipsets/">
PSX Dev-Board Chipsets
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../hardwarenumbers/">
Hardware Numbers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pinouts/">
Pinouts
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../aboutcredits/">
About &amp; Credits
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromvideocdsvcd/">
CDROM Video CDs (VCD)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdrominternalinfoonpsxcdromcontroller/">
CDROM Internal Info on PSX CDROM Controller
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801100hn10h-timer-02-current-counter-value-rw">
1F801100h+N*10h - Timer 0..2 Current Counter Value (R/W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801104hn10h-timer-02-counter-mode-rw">
1F801104h+N*10h - Timer 0..2 Counter Mode (R/W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#1f801108hn10h-timer-02-counter-target-value-rw">
1F801108h+N*10h - Timer 0..2 Counter Target Value (R/W)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#dotclockhblank">
Dotclock/Hblank
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a class="md-content__button md-icon" href="https://github.com/psx-spx/psx-spx.github.io/edit/master/docs/timers.md" title="Edit this page">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"></path></svg>
</a>
<h1 id="timers">Timers</h1>
<h4 id="1f801100hn10h-timer-02-current-counter-value-rw">1F801100h+N*10h - Timer 0..2 Current Counter Value (R/W)</h4>
<pre><code> 0-15 Current Counter value (incrementing)
16-31 Garbage
</code></pre>
<p>This register is automatically incrementing. It is write-able (allowing to set
it to any value). It gets forcefully reset to 0000h on any write to the Counter
Mode register, and on counter overflow (either when exceeding FFFFh, or when
exceeding the selected target value).<br/></p>
<h4 id="1f801104hn10h-timer-02-counter-mode-rw">1F801104h+N*10h - Timer 0..2 Counter Mode (R/W)</h4>
<pre><code> 0 Synchronization Enable (0=Free Run, 1=Synchronize via Bit1-2)
1-2 Synchronization Mode (0-3, see lists below)
Synchronization Modes for Counter 0:
0 = Pause counter during Hblank(s)
1 = Reset counter to 0000h at Hblank(s)
2 = Reset counter to 0000h at Hblank(s) and pause outside of Hblank
3 = Pause until Hblank occurs once, then switch to Free Run
Synchronization Modes for Counter 1:
Same as above, but using Vblank instead of Hblank
Synchronization Modes for Counter 2:
0 or 3 = Stop counter at current value (forever, no h/v-blank start)
1 or 2 = Free Run (same as when Synchronization Disabled)
3 Reset counter to 0000h (0=After Counter=FFFFh, 1=After Counter=Target)
4 IRQ when Counter=Target (0=Disable, 1=Enable)
5 IRQ when Counter=FFFFh (0=Disable, 1=Enable)
6 IRQ Once/Repeat Mode (0=One-shot, 1=Repeatedly)
7 IRQ Pulse/Toggle Mode (0=Short Bit10=0 Pulse, 1=Toggle Bit10 on/off)
8-9 Clock Source (0-3, see list below)
Counter 0: 0 or 2 = System Clock, 1 or 3 = Dotclock
Counter 1: 0 or 2 = System Clock, 1 or 3 = Hblank
Counter 2: 0 or 1 = System Clock, 2 or 3 = System Clock/8
10 Interrupt Request (0=Yes, 1=No) (Set after Writing) (W=1) (R)
11 Reached Target Value (0=No, 1=Yes) (Reset after Reading) (R)
12 Reached FFFFh Value (0=No, 1=Yes) (Reset after Reading) (R)
13-15 Unknown (seems to be always zero)
16-31 Garbage (next opcode)
</code></pre>
<p>In one-shot mode, the IRQ is pulsed/toggled only once (one-shot mode doesn't
stop the counter, it just suppresses any further IRQs until a new write to the
Mode register occurs; if both IRQ conditions are enabled in Bit4-5, then
one-shot mode triggers only one of those conditions; whichever occurs first).<br/>
Normally, Pulse mode should be used (Bit10 is permanently set, except for a few
clock cycles when an IRQ occurs). In Toggle mode, Bit10 is set after writing to
the Mode register, and becomes inverted on each IRQ (in one-shot mode, it
remains zero after the IRQ) (in repeat mode it inverts Bit10 on each IRQ, so
IRQ4/5/6 are triggered only each 2nd time, ie. when Bit10 changes from 1 to 0).<br/>
The "free run" mode is simply saying that the counter will not reset at a given threshold value.</p>
<h4 id="1f801108hn10h-timer-02-counter-target-value-rw">1F801108h+N*10h - Timer 0..2 Counter Target Value (R/W)</h4>
<pre><code> 0-15 Counter Target value
16-31 Garbage
</code></pre>
<p>When the Target flag is set (Bit3 of the Control register), the counter
increments up to (including) the selected target value, and does then restart
at 0000h.<br/></p>
<h4 id="dotclockhblank">Dotclock/Hblank</h4>
<p>For more info on dotclock and hblank timings, see:<br/>
<a href="../graphicsprocessingunitgpu/#gpu-timings">GPU Timings</a><br/>
Caution: Reading the Current Counter Value can be a little unstable (when using
dotclk or hblank as clock source); the GPU clock isn't in sync with the CPU
clock, so the timer may get changed during the CPU read cycle. As a workaround:
repeat reading the timer until the received value is the same (or slightly
bigger) than the previous value.<br/></p>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<nav aria-label="Footer" class="md-footer__inner md-grid">
<a class="md-footer__link md-footer__link--prev" href="../dmachannels/" rel="prev">
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</div>
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Previous
</span>
DMA Channels
</div>
</div>
</a>
<a class="md-footer__link md-footer__link--next" href="../cdromdrive/" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Next
</span>
CDROM Drive
</div>
</div>
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"></path></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" rel="noopener" target="_blank">
Material for MkDocs
</a>
... <a class="link--pdf-download" download href="../psx-spx.pdf" title="PDF">download PDF</a></div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}, "search": "../assets/javascripts/workers/search.fe42c31b.min.js", "version": null}</script>
<script src="../assets/javascripts/bundle.4ea5477f.min.js"></script>
</body>
</html>

View File

@ -0,0 +1,645 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8"/>
<meta content="width=device-width,initial-scale=1" name="viewport"/>
<link href="https://psx-spx.consoledev.net/unpredictablethings/" rel="canonical"/>
<link href="../assets/images/favicon.png" rel="icon"/>
<meta content="mkdocs-1.1.2, mkdocs-material-7.1.3" name="generator"/>
<title>Unpredictable Things - PlayStation Specifications - psx-spx</title>
<link href="../assets/stylesheets/main.e35208c4.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.ef6f36e2.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font-family:"Roboto";--md-code-font-family:"Roboto Mono"}</style>
<link href="../css/extra.css" rel="stylesheet"/>
</head>
<body data-md-color-accent="indigo" data-md-color-primary="indigo" data-md-color-scheme="default" dir="ltr">
<script>function __prefix(e){return new URL("..",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
<script>var palette=__get("__palette");if(null!==palette&&"object"==typeof palette.color)for(var key in palette.color)document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a class="md-skip" href="#unpredictable-things">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="PlayStation Specifications - psx-spx" class="md-header__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
PlayStation Specifications - psx-spx
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Unpredictable Things
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="indigo" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Switch to dark mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2 2 2 0 0 1 2-2m10-3a5 5 0 0 1 5 5 5 5 0 0 1-5 5H7a5 5 0 0 1-5-5 5 5 0 0 1 5-5h10M7 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3h10a3 3 0 0 0 3-3 3 3 0 0 0-3-3H7z"></path></svg>
</label>
<input class="md-option" data-md-color-accent="blue" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="blue" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Switch to light mode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3z"></path></svg>
</label>
</form>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" data-md-state="active" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</label>
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"></path></svg>
</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="PlayStation Specifications - psx-spx" class="md-nav__button md-logo" data-md-component="logo" href=".." title="PlayStation Specifications - psx-spx">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"></path></svg>
</a>
PlayStation Specifications - psx-spx
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://github.com/psx-spx/psx-spx.github.io/" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
Home
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../memorymap/">
Memory Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../iomap/">
I/O Map
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../graphicsprocessingunitgpu/">
Graphics Processing Unit (GPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometrytransformationenginegte/">
Geometry Transformation Engine (GTE)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../macroblockdecodermdec/">
Macroblock Decoder (MDEC)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../soundprocessingunitspu/">
Sound Processing Unit (SPU)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../interrupts/">
Interrupts
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../dmachannels/">
DMA Channels
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../timers/">
Timers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromdrive/">
CDROM Drive
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../controllersandmemorycards/">
Controllers and Memory Cards
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pocketstation/">
Pocketstation
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../serialportsio/">
Serial Port (SIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../expansionportpio/">
Expansion Port (PIO)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../memorycontrol/">
Memory Control
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<label class="md-nav__link md-nav__link--active" for="__toc">
Unpredictable Things
<span class="md-nav__icon md-icon"></span>
</label>
<a class="md-nav__link md-nav__link--active" href="./">
Unpredictable Things
</a>
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#io-write-datasize">
I/O Write Datasize
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#io-read-datasize">
I/O Read Datasize
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#cache-problems">
Cache Problems
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#writebuffer-problems">
Writebuffer Problems
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#cpu-loadstore-problems">
CPU Load/Store Problems
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#cpu-register-problems-r1-at-r26-k0-r29-sp">
CPU Register Problems - R1 (AT), R26 (K0), R29 (SP)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#locked-locations-in-memory-and-io-area">
Locked Locations in Memory and I/O Area
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#mirrors-in-io-area">
Mirrors in I/O Area
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#garbage-locations-in-io-area">
Garbage Locations in I/O Area
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#psx-as-abbreviation-for-playstation-1">
PSX as Abbreviation for Playstation 1
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#psx-as-abbreviation-for-posix1">
PSX as Abbreviation for POSIX.1
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#psx-as-abbreviation-for-an-extended-playstation-2">
PSX as Abbreviation for an Extended Playstation 2
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cpuspecifications/">
CPU Specifications
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../kernelbios/">
Kernel (BIOS)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../arcadecabinets/">
Arcade Cabinets
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cheatdevices/">
Cheat Devices
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../psxdevboardchipsets/">
PSX Dev-Board Chipsets
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../hardwarenumbers/">
Hardware Numbers
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../pinouts/">
Pinouts
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../aboutcredits/">
About &amp; Credits
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdromvideocdsvcd/">
CDROM Video CDs (VCD)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../cdrominternalinfoonpsxcdromcontroller/">
CDROM Internal Info on PSX CDROM Controller
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#io-write-datasize">
I/O Write Datasize
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#io-read-datasize">
I/O Read Datasize
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#cache-problems">
Cache Problems
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#writebuffer-problems">
Writebuffer Problems
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#cpu-loadstore-problems">
CPU Load/Store Problems
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#cpu-register-problems-r1-at-r26-k0-r29-sp">
CPU Register Problems - R1 (AT), R26 (K0), R29 (SP)
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#locked-locations-in-memory-and-io-area">
Locked Locations in Memory and I/O Area
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#mirrors-in-io-area">
Mirrors in I/O Area
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#garbage-locations-in-io-area">
Garbage Locations in I/O Area
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#psx-as-abbreviation-for-playstation-1">
PSX as Abbreviation for Playstation 1
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#psx-as-abbreviation-for-posix1">
PSX as Abbreviation for POSIX.1
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#psx-as-abbreviation-for-an-extended-playstation-2">
PSX as Abbreviation for an Extended Playstation 2
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a class="md-content__button md-icon" href="https://github.com/psx-spx/psx-spx.github.io/edit/master/docs/unpredictablethings.md" title="Edit this page">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"></path></svg>
</a>
<h1 id="unpredictable-things">Unpredictable Things</h1>
<p>Normally, I/O ports should be accessed only at their corresponding size (ie.
16bit read/write for 16bit ports), and of course, only existing memory and I/O
addresses should be used. When not recursing that rules, some more or less
(un-)predictable things may happen...<br/></p>
<h4 id="io-write-datasize">I/O Write Datasize</h4>
<pre><code> Address Content W.8bit W.16bit W.32bit
00000000h-00xFFFFFh Main RAM OK OK OK
1F800000h-1F8003FFh Scratchpad OK OK OK
1F801000h-1F801023h MEMCTRL (w32) (w32) OK
1F80104xh JOY_xxx (w16) OK CROP
1F80105xh SIO_xxx (w16) OK CROP
1F801060h-1F801063h RAM_SIZE (w32) (w32) OK (with crash)
1F801070h-1F801077h IRQCTRL (w32) (w32) OK
1F8010x0h-1F8010x3h DMAx.ADDR (w32) (w32) OK
1F8010x4h-1F8010x7h DMAx.LEN OK OK OK
1F8010x8h-1F8010xFh DMAx.CTRL/MIRR (w32) (w32) OK
1F8010F0h-1F8010F7h DMA.DPCR/DICR (w32) (w32) OK
1F8010F8h-1F8010FFh DMA.unknown IGNORE IGNORE IGNORE
1F801100h-1F80110Bh Timer 0 (w32) (w32) OK
1F801110h-1F80110Bh Timer 1 (w32) (w32) OK
1F801120h-1F80110Bh Timer 2 (w32) (w32) OK
1F801800h-1F801803h CDROM OK ? ?
1F801810h-1F801813h GPU.GP0 ? ? OK
1F801814h-1F801817h GPU.GP1 ? ? OK
1F801820h-1F801823h MDEC.CMD/DTA ? ? OK
1F801824h-1F801827h MDEC.CTRL ? ? OK
1F801C00h-1F801E7Fh SPU (i16) OK OK
1F801E80h-1F801FFFh SPU.UNUSED IGNORE IGNORE IGNORE
1F802020h-1F80202Fh DUART OK ? ?
1F802041h POST OK ? ?
FFFE0130h-FFFE0133h CACHE.CTRL (i32) (i32) OK
</code></pre>
<p>Whereas,<br/></p>
<pre><code> OK works
(w32) write full 32bits (left-shifted if address isn't word-aligned)
(w16) write full 16bits (left-shifted if address isn't halfword-aligned)
(i32) write full 32bits (ignored if address isn't word-aligned)
(i16) write full 16bits (ignored if address isn't halfword-aligned)
CROP write only lower 16bit (and leave upper 16bit unchanged)
</code></pre>
<p>It's somewhat "legit" to use 16bit writes on 16bit registers like RAM_SIZE,
I_STAT, I_MASK, and Timer 0-2.<br/>
Non-4-byte aligned 8bit/16bit writes to RAM_SIZE do crash (probably because the
"(w32)" effect is left-shifting the value, so lower 8bit become zero).<br/>
Results on unaligned I/O port writes (via SWL/SWR opcodes) are unknown.<br/></p>
<h4 id="io-read-datasize">I/O Read Datasize</h4>
<p>In most cases, I/O ports can be read in 8bit, 16bit, or 32bit units, regardless
of their size, among others allowing to read two 16bit ports at once with a
single 32bit read. If there's only one 16bit port within a 32bit region, then
32bit reads often return garbage in the unused 16bits. Also, 8bit or 16bit VRAM
data reads via GPUREAD probably won't work? Expansion 2 Region can be accessed
only via 8bit reads, and 16bit/32bit reads seem to cause exceptions (or rather:
no such exception!) (except, probably 16bit reads are allowed when the region
is configured to 16bit databus width).<br/>
There are at least some special cases:<br/></p>
<pre><code> FFFE0130h-FFFE0133h 8bit (+16bit?) read works ONLY from word-aligned address
</code></pre>
<h4 id="cache-problems">Cache Problems</h4>
<p>The functionality of the Cache is still widely unknown. Not sure if DMA
transfers are updating or invalidating cache. Cached Data within KSEG0 should
be automatically also cached at the corresponding mirrored address in KUSEG and
vice versa. Mirrors within KSEG1 (or within KUSEG) may be a different thing,
eg. when using addresses spead across the first 8MB region to access the 2MB
RAM. Same problems may occor for Expansion and BIOS mirrors, although, not sure
if that regions are cached.<br/></p>
<h4 id="writebuffer-problems">Writebuffer Problems</h4>
<p>The writebuffer seems to be disabled for the normal I/O area at 1F801000h,
however, it appears to be enabled for the Expansion I/O region at 1F802000h
(after writing to 1F802041h, the BIOS issues 4 dummy writes to RAM, apparently
(?) in order to flush the writebuffer). The same might apply for Expansion
Memory region at 1F000000h, although usually that region would contain ROM, so
it'd be don't care whether it is write-buffered or not.<br/></p>
<h4 id="cpu-loadstore-problems">CPU Load/Store Problems</h4>
<p>XXcpuREG ---&gt; applies ONLY to LOAD (not to store)<br/>
Memory read/write opcodes take a 1-cycle delay until the data arrives at the
destination, ie. the next opcode should not use the destination register (or
more unlikely, the destination memory location) as source operand. Usually,
when trying to do so, the second opcode would receive the OLD value - however,
if an exception occurs between the two opcodes, then the read/write operation
may finish, and the second opcode would probably receive the NEW value.<br/></p>
<h4 id="cpu-register-problems-r1-at-r26-k0-r29-sp">CPU Register Problems - R1 (AT), R26 (K0), R29 (SP)</h4>
<p>Exception handlers cannot preserve all registers, before returning, they must
load the return address into a general purpose register (conventionally R26 aka
K0), so be careful not to use that register, unless you are 100% sure that no
interrupts and no other exceptions can occur. Some exception handlers might
also destroy R27 aka K1 (though execption handler in the PSX Kernel leaves that
register unchanged).<br/>
Some assemblers (not a22i in nocash syntax mode) are internally using R1 aka AT
as scratch register for some pseudo opcodes, including for a "sw rx,imm32"
pseudo opcode (which is nearly impossible to separate from the normal "sw
rx,imm16" opcode), be careful not to use R1, unless you can trust your
assembler not to destroy that register behind your back.<br/>
The PSX Kernel uses "Full-Decrementing-Wasted-Stack", where "Wasted" means that
when calling a sub-function with N parameters, then the caller must
pre-allocate N works on stack, and the sub-function may freely use and destroy
these words; at [SP+0..N*4-1].<br/></p>
<h4 id="locked-locations-in-memory-and-io-area">Locked Locations in Memory and I/O Area</h4>
<pre><code> 00800000h ;-when Main RAM configured to end at 7FFFFFh
1F080000h 780000h ;-when Expansion 1 configured to end at 7FFFFh
1F800400h C00h ;-region after Scratchpad
1F801024h 1Ch ;\
1F801064h 0Ch ;
1F801078h 08h ;
1F801140h 6C0h ; gaps in I/O region
1F801804h 0Ch ;
1F801818h 08h ;
1F801828h 3D8h ;/
1F802080h 3FDF80h ;-when Expansion 2 configured to end at 7Fh
1FC80000h 60380000h ;-when BIOS ROM configured to end at 7FFFFh
C0000000h 1FFE0000h ;\
FFFE0020h E0h ; gaps in KSEG2 (cache control region)
FFFE0140h 1FEC0h ;/
</code></pre>
<p>Trying to access these locations generates an exception. For KSEG0 and KSEG1,
locked regions are same as for first 512MB of KUSEG.<br/></p>
<h4 id="mirrors-in-io-area">Mirrors in I/O Area</h4>
<pre><code> 1F80108Ch+N*10h - D#_CHCR Mirrors - (N=0..6, for DMA channel 0..6)
</code></pre>
<p>Read/writeable mirrors of DMA Control registers at 1F801088h+N*10h.<br/></p>
<h4 id="garbage-locations-in-io-area">Garbage Locations in I/O Area</h4>
<pre><code> 1F801062h (2 bytes) ;\
1F801072h (2 bytes) ; unused addresses in Memory and Interrupt Control area
1F801076h (2 bytes) ;/
1F801102h (2 bytes) ;\
1F801106h (2 bytes) ; unused addresses in Timer 0 area
1F80110Ah (6 bytes) ;/
1F801112h (2 bytes) ;\
1F801116h (2 bytes) ; unused addresses in Timer 1 area
1F80111Ah (6 bytes) ;/
1F801122h (2 bytes) ;\
1F801126h (2 bytes) ; unused addresses in Timer 2 area and next some bytes
1F80112Ah (22 bytes) ;/
1F801820h (4 bytes) ;-read MDEC Data-Out port (if there is no data)
FFFE0000h (32 bytes) ;\
FFFE0100h (48 bytes) ; unused addresses in Cache control area
FFFE0132h (2 bytes) ; (including write-only upper 16bit of Port FFFE0130h)
FFFE0134h (12 bytes) ;/
</code></pre>
<p>Unlike all other unused I/O addresses, these addresses are unlocked (ie. they
do not trigger exceptions on access), however they do not seem to contain
anything useful. The BIOS never seems to use them. Writing any values to them
seems to have no effect. And reading acts somewhat unstable:<br/>
Usually returns zeros in most cases. Except that, the first byte on a 10h-byte
boundary often returns the lower 8bit of the memory address (eg.
[FFFE0010h]=10h). And, when [FFFE0130h].Bit11=0, then reading from these
registers does return the 32bit opcode that is to be executed next (or at some
locations, the opcode thereafter).<br/></p>
<h4 id="psx-as-abbreviation-for-playstation-1">PSX as Abbreviation for Playstation 1</h4>
<p>In gaming and programming scene, "PSX" is most commonly used as abbreviation
for the original Playstation series (occasionally including PSone). Sony has
never officially used that abbreviation, however, the Playstation BIOS contains
the ASCII strings "PSX" and "PS-X" here and there. The letters "PS" are widely
believed to stand for PlayStation, and the meaning of the "X" is totally
unknown (although, actually it may stand for POSIX.1, see below).<br/></p>
<h4 id="psx-as-abbreviation-for-posix1">PSX as Abbreviation for POSIX.1</h4>
<p>According to JMI Software Systems, "PSX" is a trademark of themselves, and
stands for "single-user, single-group, subset of POSIX.1" (POSIX stands for
something commonly used by HLL programmers under UNIX or so). That "PSX" kernel
from JMI is available for various processors, including MIPS processors, and
like the playstation, it does include functions like "atoi", and does support
TTY access via Signetics 2681 DUART chips. The DTL-H2000 does also have
POSIX-style "PSX&gt;" prompt. So, altogether, it's quite possible that Sony has
licensed the kernel from JMI.<br/></p>
<h4 id="psx-as-abbreviation-for-an-extended-playstation-2">PSX as Abbreviation for an Extended Playstation 2</h4>
<p>As everybody agrees, PSX should be used only as abbreviation for Playstation 1,
and nobody should never ever use it for the Playstation 2. Well, nobody, except
Sony... despite of the common use as abbreviation for Playstation 1 (and
despite of the JMI trademark)... in 2003, Sony has have released a "Playstation
2 with built-in HDD/DVD Videorecorder" and called that thing "PSX" for the best
of confusion.<br/></p>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<nav aria-label="Footer" class="md-footer__inner md-grid">
<a class="md-footer__link md-footer__link--prev" href="../memorycontrol/" rel="prev">
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
</div>
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Previous
</span>
Memory Control
</div>
</div>
</a>
<a class="md-footer__link md-footer__link--next" href="../cpuspecifications/" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Next
</span>
CPU Specifications
</div>
</div>
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"></path></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" rel="noopener" target="_blank">
Material for MkDocs
</a>
... <a class="link--pdf-download" download href="../psx-spx.pdf" title="PDF">download PDF</a></div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}, "search": "../assets/javascripts/workers/search.fe42c31b.min.js", "version": null}</script>
<script src="../assets/javascripts/bundle.4ea5477f.min.js"></script>
</body>
</html>