add reference files for new skill legacy-circuit-mockups

This commit is contained in:
jhauga
2026-01-19 20:26:57 -05:00
parent 927594eab8
commit 9c5665cbec
9 changed files with 1989 additions and 0 deletions

View File

@@ -0,0 +1,233 @@
# AS6C62256 (32K x 8 SRAM) Emulation Specification
A technical Markdown specification for **emulating the AS6C62256 / 62256-family static RAM**, suitable for 6502-family emulators, SBC simulators, and memory subsystem modeling.
---
## 1. Scope
This document specifies functional behavior for emulating:
* Alliance Memory **AS6C62256**
* Compatible **62256 (32K x 8) SRAM** devices
Out of scope:
* Analog electrical timing margins
* Bus contention and signal rise/fall times
* Power consumption characteristics
---
## 2. Chip Overview
### Core Characteristics
| Feature | Value |
| -------------- | -------------------- |
| Memory Type | Static RAM (SRAM) |
| Capacity | 32,768 bytes (32 KB) |
| Data Width | 8-bit |
| Address Width | 15-bit (A0-A14) |
| Access Type | Asynchronous |
| Supply Voltage | 5 V (typical) |
---
## 3. External Signals (Logical Model)
| Signal | Direction | Purpose |
| ------ | --------- | -------------------------- |
| A0-A14 | Input | Address bus |
| D0-D7 | I/O | Data bus |
| CE# | Input | Chip enable (active low) |
| OE# | Input | Output enable (active low) |
| WE# | Input | Write enable (active low) |
> `#` indicates active-low signals.
---
## 4. Address Space Mapping
* Address range: `0x0000-0x7FFF`
* Address lines select one byte per address
### Typical 6502 System Mapping Example
| CPU Address Range | Device |
| ----------------- | -------------- |
| `$0000-$7FFF` | AS6C62256 SRAM |
| `$8000-$FFFF` | ROM / EEPROM |
---
## 5. Read and Write Behavior
### Read Cycle (Logical)
Conditions:
* `CE# = 0`
* `OE# = 0`
* `WE# = 1`
Behavior:
```text
D[7:0]  memory[A]
```
If `OE# = 1` or `CE# = 1`, data bus is **high-impedance**.
---
### Write Cycle (Logical)
Conditions:
* `CE# = 0`
* `WE# = 0`
Behavior:
```text
memory[A]  D[7:0]
```
* `OE#` is ignored during writes
* Write occurs on active WE#
---
## 6. Control Signal Priority
| CE# | WE# | OE# | Result |
| --- | --- | --- | --------------- |
| 1 | X | X | Disabled (Hi-Z) |
| 0 | 0 | X | Write |
| 0 | 1 | 0 | Read |
| 0 | 1 | 1 | Hi-Z |
---
## 7. Emulator Interface Requirements
An emulator must expose:
```text
read(address) -> byte
write(address, byte)
```
Internal storage:
```text
uint8_t ram[32768]
```
Address masking:
```text
address = address & 0x7FFF
```
---
## 8. Timing Model (Abstracted)
### Emulation Levels
| Level | Description |
| -------------- | ------------------------- |
| Functional | Instantaneous access |
| Cycle-based | Access per CPU cycle |
| Cycle-accurate | Honors enable transitions |
For most systems, **functional emulation** is sufficient.
---
## 9. Power and Data Retention
* SRAM contents persist as long as power is applied
* Emulator shall retain contents until explicitly reset
### Reset Behavior
* **No automatic clearing** on reset
* Memory contents undefined unless initialized
---
## 10. Bus Contention and Hi-Z Modeling (Optional)
Optional advanced behavior:
* Track when SRAM drives the data bus
* Detect illegal simultaneous writes
Most emulators may ignore Hi-Z state.
---
## 11. Error Conditions
| Condition | Emulator Response |
| -------------------- | ----------------------------- |
| Out-of-range address | Mask or ignore |
| Read when disabled | Return last bus value or 0xFF |
| Write when disabled | Ignore write |
---
## 12. Integration with 6502 Emulator
```text
CPU memory access
 address decode
 if in SRAM range:
AS6C62256.read/write
```
* SRAM access is typically single-cycle
* No wait states required
---
## 13. Testing and Validation
### Basic Tests
* Write/read patterns
* Boundary addresses ($0000, $7FFF)
* Randomized memory tests
### Validation Checklist
* Writes persist
* Reads return correct values
* Address wrapping correct
---
## 14. Common Mistakes
| Mistake | Result |
| --------------------- | --------------------------- |
| Clearing RAM on reset | Breaks software assumptions |
| Wrong address mask | Mirrored memory errors |
| Treating as ROM | Writes ignored |
---
## 15. Reference Links
* [Alliance Memory AS6C62256 Datasheet](https://www.alliancememory.com/wp-content/uploads/AS6C62256-23-March-2016-rev1.2.pdf)
* [https://en.wikipedia.org/wiki/Static_random-access_memory](https://en.wikipedia.org/wiki/Static_random-access_memory)
---
**Document Scope:** Software emulation of AS6C62256 SRAM
**Audience:** Emulator developers, retro SBC designers
**Status:** Stable technical reference