From ebe0720627e906f7c961f053f419f9034f419599 Mon Sep 17 00:00:00 2001 From: THEON-1 Date: Mon, 20 Oct 2025 17:03:59 +0200 Subject: [PATCH] notes --- notes/color-video.md | 8 ++++++++ notes/input-output.md | 5 +++++ notes/memory-layout.md | 30 ++++++++++++++++++++++++++++++ notes/monochrome-video.md | 11 +++++++++++ notes/persistent-memory.md | 2 ++ notes/vga.md | 29 +++++++++++++++++++++++++++++ 6 files changed, 85 insertions(+) create mode 100644 notes/color-video.md create mode 100644 notes/input-output.md create mode 100644 notes/memory-layout.md create mode 100644 notes/monochrome-video.md create mode 100644 notes/persistent-memory.md create mode 100644 notes/vga.md diff --git a/notes/color-video.md b/notes/color-video.md new file mode 100644 index 0000000..8bc0ab8 --- /dev/null +++ b/notes/color-video.md @@ -0,0 +1,8 @@ +# Color Video +- 307_200/0x4_B000 Bytes needed (!) +- fits into 9\*32K RAM chips +- alternative 5\*64K RAM chips, 32K additional usable memory +- alternative 2\*128K RAM + 1\*32K RAM +- consider: memory needs to be duplicate + +# TR9C1710 diff --git a/notes/input-output.md b/notes/input-output.md new file mode 100644 index 0000000..6322d79 --- /dev/null +++ b/notes/input-output.md @@ -0,0 +1,5 @@ +# I/O +- Intel-P8254 (Programmable Interval Timer) +- NEC-uPB8214C (Priority Interrupt Controller) +- 6522 (VIA) +- 6551 (ACIA) \ No newline at end of file diff --git a/notes/memory-layout.md b/notes/memory-layout.md new file mode 100644 index 0000000..5b259b4 --- /dev/null +++ b/notes/memory-layout.md @@ -0,0 +1,30 @@ +# Memory Layout +- bank switching using 8-Bit register +- top 32K remain untouched + +| start | end | use | +| :----- | :----- | :-- | +| 0x8000 | 0xDFFF | RAM | +| 0xE000 | 0xFFFF | ROM | + +# Default (0X00) +| start | end | use | +| :----- | :----- | :-- | +| 0x0000 | 0x7FFF | I/O | + +# Persistent Memory (0x01) +| start | end | use | +| :----- | :----- | :------ | +| 0x0000 | 0x7FFF | storage | + +# Monochrome Video (0x0E, 0x0F) +| start | end | use | +| :----- | :----- | :--------------- | +| 0x0000 | 0x4AFF | VRAM | +| 0x6000 | 0x7FFF | character memory | + +# Color Video +| start | end | use | +| :----- | :----- | :--------------- | +| 0x0000 | 0x4AFF | VRAM | +| 0x6000 | 0x7FFF | character memory | diff --git a/notes/monochrome-video.md b/notes/monochrome-video.md new file mode 100644 index 0000000..8cf7ae7 --- /dev/null +++ b/notes/monochrome-video.md @@ -0,0 +1,11 @@ +# Monochrome Video +- need 307_200 bits => 38_400/0x9600 Bytes +- 8K character memory + +- 1x 64K RAM +- split in half +- each half into page (0x0000 - 0x4AFF) +- map character memory into top (0x6000 - 0x7FFF) + +## Design +- derive CS from bank register, leave LSB free -> wire to MSB of VRAM address diff --git a/notes/persistent-memory.md b/notes/persistent-memory.md new file mode 100644 index 0000000..8ed09a7 --- /dev/null +++ b/notes/persistent-memory.md @@ -0,0 +1,2 @@ +# Memory +- maybe implement filesystem diff --git a/notes/vga.md b/notes/vga.md new file mode 100644 index 0000000..543abff --- /dev/null +++ b/notes/vga.md @@ -0,0 +1,29 @@ +# VGA +## Timings +### General Timings +| Attribute | Value | +| :------------------ | :---------- | +| Screan refresh rate | 60Hz | +| Vertical refresh | 31.46875kHz | +| Pixel frequency | 25.175 MHz | + +### Horizontal Timings (line) +| Scanline part | Pixels | Time [us] | +| :------------ | :----- | :--------------- | +| Visible area | 640 | 25.422045680238 | +| Front porch | 16 | 0.63555114200596 | +| Sync Pulse | 96 | 3.8133068520357 | +| Back Porch | 48 | 1.9066534260179 | +| Whole line | 800 | 31.777557100298 | + +### Vertical timing (frame) +| Frame part | Lines | Time [ms] | +| :----------- | :---- | :---------------- | +| Visible Area | 480 | 15.253227408143 | +| Front porch | 10 | 0.31777557100298 | +| Sync pulse | 2 | 0.063555114200596 | +| Back porch | 33 | 1.0486593843098 | +| Whole frame | 525 | 16.683217477656 | + +## Additional Data +- 640*480 = 307_200