sd-8516_technical_manual
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| sd-8516_technical_manual [2025/12/24 04:05] – created appledog | sd-8516_technical_manual [2025/12/24 04:18] (current) – appledog | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| = SD-8516 Technical Manual | = SD-8516 Technical Manual | ||
| - | == Introduction | + | == Introduction |
| The **Stellar Dynamics SD-8516** represents a categorical reimagining of microprocessor architecture. This 16-bit CPU, implemented in AssemblyScript for the VC-3 computer system, delivers performance exceeding conventional silicon constraints through advanced cross-boundary resonance microcascades. | The **Stellar Dynamics SD-8516** represents a categorical reimagining of microprocessor architecture. This 16-bit CPU, implemented in AssemblyScript for the VC-3 computer system, delivers performance exceeding conventional silicon constraints through advanced cross-boundary resonance microcascades. | ||
| Line 9: | Line 8: | ||
| * Clock speed: 10-20 MHz (targeting 3-5 MIPS) | * Clock speed: 10-20 MHz (targeting 3-5 MIPS) | ||
| * Memory: 256KB addressable via 4-bank system | * Memory: 256KB addressable via 4-bank system | ||
| - | * ~10× performance improvement over legacy 8510 design | + | * ~20× performance improvement over legacy 8510 design |
| - | + | ||
| - | == System Lore == | + | |
| + | == System Lore | ||
| Since the days of the first minicomputers, | Since the days of the first minicomputers, | ||
| Line 19: | Line 17: | ||
| These advancements position the Stellar Dynamics SD-8516 as the definitive architecture for next-generation computation: | These advancements position the Stellar Dynamics SD-8516 as the definitive architecture for next-generation computation: | ||
| - | == CPU Architecture | + | == CPU Architecture |
| - | + | ||
| - | === Register Set === | + | |
| + | === Register Set | ||
| The SD-8516 features sixteen 16-bit registers: | The SD-8516 features sixteen 16-bit registers: | ||
| Line 45: | Line 42: | ||
| **Note:** The SD-8516 does not use register pairing except for multiplication operations, which store results in the AB register pair. | **Note:** The SD-8516 does not use register pairing except for multiplication operations, which store results in the AB register pair. | ||
| - | === Register Encoding | + | === Register Encoding |
| Registers are encoded as 4-bit values (0-15), allowing two registers per byte: | Registers are encoded as 4-bit values (0-15), allowing two registers per byte: | ||
| * Low nibble: First operand | * Low nibble: First operand | ||
| Line 53: | Line 49: | ||
| Example: {{{ADD A, B}}} encodes as {{{0x01}}} (A=0, B=1) | Example: {{{ADD A, B}}} encodes as {{{0x01}}} (A=0, B=1) | ||
| - | === Flags Register | + | === Flags Register |
| The 16-bit FLAGS register contains: | The 16-bit FLAGS register contains: | ||
| Line 76: | Line 71: | ||
| Layout: {{{Z N C V - - - - H T B E P I S -}}} | Layout: {{{Z N C V - - - - H T B E P I S -}}} | ||
| - | == Memory Architecture | + | == Memory Architecture |
| - | === Memory Map === | + | === Memory Map |
| |= Address Range |= Description | | |= Address Range |= Description | | ||
| Line 88: | Line 83: | ||
| | $E800-$E8FF | Character ROM (2048 bytes) | | | $E800-$E8FF | Character ROM (2048 bytes) | | ||
| - | === Bank Addressing | + | === Bank Addressing |
| The SD-8516 supports 4 banks of 64KB each (256KB total) through special addressing modes: | The SD-8516 supports 4 banks of 64KB each (256KB total) through special addressing modes: | ||
| Line 103: | Line 98: | ||
| * Bank 3: Secondary video buffer (high-resolution modes) | * Bank 3: Secondary video buffer (high-resolution modes) | ||
| - | === System Variables | + | === System Variables |
| |= Address |= Description | | |= Address |= Description | | ||
| | $EF00 | Video mode register | | | $EF00 | Video mode register | | ||
| Line 122: | Line 116: | ||
| | $EF22-$EF31 | Keyboard buffer (16 bytes) | | | $EF22-$EF31 | Keyboard buffer (16 bytes) | | ||
| - | == Instruction Set Architecture | + | == Instruction Set Architecture |
| - | === Load/Store Instructions | + | === Load/Store Instructions |
| |= Opcode |= Mnemonic |= Description |= Bytes | | |= Opcode |= Mnemonic |= Description |= Bytes | | ||
| Line 148: | Line 142: | ||
| }}} | }}} | ||
| - | === Arithmetic Operations | + | === Arithmetic Operations |
| |= Instruction |= Description |= Flags Affected | | |= Instruction |= Description |= Flags Affected | | ||
| Line 164: | Line 158: | ||
| | DEC | Decrement | Z, N | | | DEC | Decrement | Z, N | | ||
| - | === Logic Operations | + | === Logic Operations |
| |= Instruction |= Description |= Flags Affected | | |= Instruction |= Description |= Flags Affected | | ||
| Line 178: | Line 172: | ||
| | TESTB | Bitwise AND byte (no write) | Z, N | | | TESTB | Bitwise AND byte (no write) | Z, N | | ||
| - | === Shift/ | + | === Shift/ |
| |= Instruction |= Description |= Flags Affected | | |= Instruction |= Description |= Flags Affected | | ||
| Line 190: | Line 184: | ||
| | RORB | Rotate right byte | Z, N, C | | | RORB | Rotate right byte | Z, N, C | | ||
| - | === Comparison & Branching | + | === Comparison & Branching |
| |= Instruction |= Description |= Flags Affected | | |= Instruction |= Description |= Flags Affected | | ||
| Line 209: | Line 203: | ||
| | JNG | Jump if not greater | None | | | JNG | Jump if not greater | None | | ||
| - | === Subroutine Operations | + | === Subroutine Operations |
| |= Instruction |= Description | | |= Instruction |= Description | | ||
| Line 219: | Line 213: | ||
| | POPA | Pop all registers | | | POPA | Pop all registers | | ||
| - | === System Operations | + | === System Operations |
| |= Instruction |= Description | | |= Instruction |= Description | | ||
| Line 237: | Line 231: | ||
| | CLV | Clear overflow flag | | | CLV | Clear overflow flag | | ||
| - | == Sound System (SD-450) | + | == Sound System (SD-450) |
| The SD-8516 is paired with the SD-450 sound subsystem, featuring 4 independent voices with ADSR envelopes. | The SD-8516 is paired with the SD-450 sound subsystem, featuring 4 independent voices with ADSR envelopes. | ||
| - | === Voice Architecture | + | === Voice Architecture |
| Each voice occupies 16 bytes of memory in Bank 1: | Each voice occupies 16 bytes of memory in Bank 1: | ||
| Line 263: | Line 255: | ||
| * Voice 3: {{{$ED30}}} | * Voice 3: {{{$ED30}}} | ||
| - | === Waveforms | + | === Waveforms |
| Gate register values: | Gate register values: | ||
| * 0: Silent (gate off) | * 0: Silent (gate off) | ||
| Line 274: | Line 265: | ||
| * 6: White/ | * 6: White/ | ||
| - | === ADSR Envelope | + | === ADSR Envelope |
| The Attack-Decay-Sustain-Release envelope shapes each note: | The Attack-Decay-Sustain-Release envelope shapes each note: | ||
| * **Attack:** Time to reach peak volume (0-255 × 10ms) | * **Attack:** Time to reach peak volume (0-255 × 10ms) | ||
| Line 293: | Line 283: | ||
| }}} | }}} | ||
| - | == Video System | + | == Video System |
| - | + | ||
| - | === Video Modes === | + | |
| + | === Video Modes | ||
| The VC-3 supports both text and graphics modes: | The VC-3 supports both text and graphics modes: | ||
| Line 306: | Line 295: | ||
| | 8 | 128×128 | 16 | Low-res mode | | | 8 | 128×128 | 16 | Low-res mode | | ||
| - | === Text Mode Architecture | + | === Text Mode Architecture |
| **Mode 1 (40×25):** | **Mode 1 (40×25):** | ||
| * Character buffer: {{{$F000-$F3E7}}} (1000 bytes) | * Character buffer: {{{$F000-$F3E7}}} (1000 bytes) | ||
| Line 319: | Line 307: | ||
| * Scanline doubling for 640×400 output | * Scanline doubling for 640×400 output | ||
| - | === Graphics Mode Architecture | + | === Graphics Mode Architecture |
| **Mode 3 (320×200×16): | **Mode 3 (320×200×16): | ||
| Line 337: | Line 325: | ||
| * 1 byte per pixel (256 colors) | * 1 byte per pixel (256 colors) | ||
| - | === Palette Format | + | === Palette Format |
| Each palette entry is 3 bytes (RGB): | Each palette entry is 3 bytes (RGB): | ||
| {{{ | {{{ | ||
| Line 346: | Line 333: | ||
| }}} | }}} | ||
| - | == KERNAL Functions | + | == KERNAL Functions |
| The KERNAL ROM provides system services at {{{$E000}}}: | The KERNAL ROM provides system services at {{{$E000}}}: | ||
| - | === Input/ | + | === Input/ |
| **GETKEY** - Read keyboard buffer | **GETKEY** - Read keyboard buffer | ||
| {{{ | {{{ | ||
| Line 374: | Line 359: | ||
| }}} | }}} | ||
| - | === Cursor Management | + | === Cursor Management |
| **CTOXY** - Move cursor | **CTOXY** - Move cursor | ||
| {{{ | {{{ | ||
| Line 388: | Line 372: | ||
| }}} | }}} | ||
| - | === String Utilities | + | === String Utilities |
| **STRLEN** - Get string length | **STRLEN** - Get string length | ||
| {{{ | {{{ | ||
| Line 407: | Line 390: | ||
| }}} | }}} | ||
| - | === Arrow Key Handlers | + | === Arrow Key Handlers |
| * **ARR_LEFT** - Move cursor left (bounded) | * **ARR_LEFT** - Move cursor left (bounded) | ||
| * **ARR_RIGHT** - Move cursor right (bounded) | * **ARR_RIGHT** - Move cursor right (bounded) | ||
| Line 414: | Line 396: | ||
| * **ARR_DOWN** - Move cursor down (bounded) | * **ARR_DOWN** - Move cursor down (bounded) | ||
| - | == Assembly Language | + | == Assembly Language |
| - | + | === Syntax | |
| - | === Syntax | + | |
| **Labels:** | **Labels:** | ||
| {{{ | {{{ | ||
| Line 443: | Line 423: | ||
| }}} | }}} | ||
| - | === Example Programs | + | === Example Programs |
| **Hello World:** | **Hello World:** | ||
| {{{ | {{{ | ||
| LDA @MSG | LDA @MSG | ||
| - | LDB @MSG+1 | ||
| LDX #0 | LDX #0 | ||
| LDY #0 | LDY #0 | ||
| Line 504: | Line 482: | ||
| == Performance Characteristics == | == Performance Characteristics == | ||
| - | |||
| **Measured Performance: | **Measured Performance: | ||
| - | * Clock speed: 10 MHz base, up to 100 MHz in optimized configurations | + | * Clock speed: 10 MHz base, up to 100 MHz |
| - | * Sustained MIPS: 35-70 MIPS (typical) | + | * Sustained MIPS: 60 MIPS (i7-12700k) |
| - | * Peak MIPS: 100+ MIPS (with optimizations) | + | |
| * Memory bandwidth: ~280 MB/s | * Memory bandwidth: ~280 MB/s | ||
| * Sound system overhead: < 5% CPU time | * Sound system overhead: < 5% CPU time | ||
| Line 519: | Line 495: | ||
| * Sound updates triggered by register writes (not polling) | * Sound updates triggered by register writes (not polling) | ||
| - | == Technical Implementation | + | == Technical Implementation |
| **Architecture: | **Architecture: | ||
| **Languages: | **Languages: | ||
| - | **Memory Model: | + | **Memory Model: |
| - | **Audio Backend: | + | **Audio Backend: |
| - | **Video Backend: | + | **Video Backend: |
| - | **Debugging: | + | |
| - | **Class-Based Subsystems:** | + | == Appendix: Planned Features |
| - | * Video modes: Polymorphic VideoMode classes | + | |
| - | * Sound voices: Voice instances with ADSR envelopes | + | |
| - | * Bank addressing: Flat memory model with synthetic banking | + | |
| - | == Appendix: Planned Features == | + | === KERNAL Functions (In Development) |
| - | + | # **print_byte** - Display 16-bit number at cursor | |
| - | === KERNAL Functions (In Development) | + | # **print_char_at** - Single character without moving cursor |
| - | + | # **clear_screen** - Fill screen with spaces | |
| - | 1. **print_byte** - Display 16-bit number at cursor | + | # **print_at** - Positioned string output |
| - | 2. **print_char_at** - Single character without moving cursor | + | # **string_compare** - String equality test |
| - | 3. **clear_screen** - Fill screen with spaces | + | # **string_to_upper** - Case conversion |
| - | 4. **print_at** - Positioned string output | + | # **wait_key** - Blocking key wait |
| - | 5. **string_compare** - String equality test | + | # **random_range** - Bounded random numbers |
| - | 6. **string_to_upper** - Case conversion | + | # **draw_box** - Border rendering |
| - | 7. **wait_key** - Blocking key wait | + | # **scroll_region** - Partial screen scrolling |
| - | 8. **random_range** - Bounded random numbers | + | # **save_screen/ |
| - | 9. **draw_box** - Border rendering | + | |
| - | 10. **scroll_region** - Partial screen scrolling | + | |
| - | 11. **save_screen/ | + | |
| - | + | ||
| - | === Graphics Enhancements === | + | |
| + | === Graphics Enhancements | ||
| * Bresenham line drawing (implemented) | * Bresenham line drawing (implemented) | ||
| * Sprite system with hardware acceleration | * Sprite system with hardware acceleration | ||
| Line 556: | Line 523: | ||
| * Bitmap font rendering | * Bitmap font rendering | ||
| - | === Sound Enhancements | + | === Sound Enhancements |
| - | + | ||
| - | * Sample playback (Opus/Ogg compressed) | + | |
| * PCM streaming for voice/SFX | * PCM streaming for voice/SFX | ||
| * Additional waveforms (filtered noise, PWM variants) | * Additional waveforms (filtered noise, PWM variants) | ||
| + | * Other sample playback (Opus/Ogg compressed) | ||
| * LFO and vibrato effects | * LFO and vibrato effects | ||
| Line 566: | Line 532: | ||
| **SD-8516 Technical Manual** - Revision 1.0 | **SD-8516 Technical Manual** - Revision 1.0 | ||
| - | **Copyright © 2025 Stellar Dynamics Corporation** | + | **Copyright © 2025 Appledog Hu** |
| **All specifications subject to change as quantum resonance research continues.** | **All specifications subject to change as quantum resonance research continues.** | ||
sd-8516_technical_manual.1766549101.txt.gz · Last modified: by appledog
