-| $00 | Output register B (write), input register B (read) |
-| $01 | Output register A (write), input register A (read) |
-| $02 | Data direction register B |
-| $03 | Data direction register A |
-| $04 | Timer 1 latch LSB (write), timer 1 counter LSB (read) |
-| $05 | Timer 1 counter MSB |
-| $06 | Timer 1 latch LSB |
-| $07 | Timer 1 latch MSB |
-| $08 | Timer 2 latch LSB (write), timer 2 counter LSB (read) |
-| $09 | Timer 2 counter MSB |
-| $0A | Shift register |
-| $0B | Auxiliary control register |
-| $0C | Peripheral control register |
-| $0D | Interrupt flag register |
-| $0E | Interrupt enable register |
-| $0F | Same as register $01, but with no effect on handshake |
-
"
- - Timer 1 can operate in one-shot mode or free-running mode (square wave).
- - Timer 2 can operate in one-shot mode or pulse-counting mode (counts negative pulses on PB6).
- - "Counters for timers in one-shot or free-running mode decrement at the ∅2 clock rate."
- - The shift register is 8 bits wide, can shift in or out, and can generate its own clock or shift under the control of an external clock on CB1.
-...
-
+ - 'In older chips, ~IRQ was an open drain output. In the W65C22S, it is fully driven.'
+ - 'Registers:

| $00 | Output register B (write), input register B (read) |

| $01 | Output register A (write), input register A (read) |

| $02 | Data direction register B |

| $03 | Data direction register A |

| $04 | Timer 1 latch LSB (write), timer 1 counter LSB (read) |

| $05 | Timer 1 counter MSB |

| $06 | Timer 1 latch LSB |

| $07 | Timer 1 latch MSB |

| $08 | Timer 2 latch LSB (write), timer 2 counter LSB (read) |

| $09 | Timer 2 counter MSB |

| $0A | Shift register |

| $0B | Auxiliary control register |

| $0C | Peripheral control register |

| $0D | Interrupt flag register |

| $0E | Interrupt enable register |

| $0F | Same as register $01, but with no effect on handshake |


'
+ - 'Timer 1 can operate in one-shot mode or free-running mode (square wave).'
+ - 'Timer 2 can operate in one-shot mode or pulse-counting mode (counts negative pulses on PB6).'
+ - 'Counters for timers in one-shot or free-running mode decrement at the ∅2 clock rate.'
+ - 'The shift register is 8 bits wide, can shift in or out, and can generate its own clock or shift under the control of an external clock on CB1.'
+packages:
+ DIP:
+ - GND
+ - PA0
+ - PA1
+ - PA2
+ - PA3
+ - PA4
+ - PA5
+ - PA6
+ - PA7
+ - PB0
+ - PB1
+ - PB2
+ - PB3
+ - PB4
+ - PB5
+ - PB6
+ - PB7
+ - CB1
+ - CB2
+ - Vcc
+ - '~IRQ'
+ - 'R/~W'
+ - '~CS2'
+ - CS1
+ - '∅2'
+ - D7
+ - D6
+ - D5
+ - D4
+ - D3
+ - D2
+ - D1
+ - D0
+ - '~RES'
+ - RS3
+ - RS2
+ - RS1
+ - RS0
+ - CA2
+ - CA1
diff --git a/6581.yaml b/6581.yaml
index c845efa..0c17cb4 100644
--- a/6581.yaml
+++ b/6581.yaml
@@ -1,138 +1,106 @@
----
-description: "Sound Interface Device (SID)"
-aliases: [SID]
-package: DIP
-pincount: 28
-family: "MOS Technology"
-datasheet: "http://www.waitingforfriday.com/index.php/Commodore_SID_6581_Datasheet"
+description: 'Sound Interface Device (SID)'
+aliases:
+ - SID
+family: 'MOS Technology'
+datasheet: 'http://www.waitingforfriday.com/index.php/Commodore_SID_6581_Datasheet'
pins:
- - num: 1
- sym: CAP1A
- desc: capacitor C1 connection
- - num: 2
- sym: CAP1B
- desc: capacitor C1 connection
- - num: 3
- sym: CAP2A
- desc: capacitor C2 connection
- - num: 4
- sym: CAP2B
- desc: capacitor C2 connection
- - num: 5
- sym: ~RES
- desc: master reset
- - num: 6
- sym: "∅2"
- desc: master clock
- - num: 7
- sym: R/~W
- desc: read/write select
- - num: 8
- sym: ~CS
- desc: chip select (active low)
- - num: 9
- sym: A0
- desc: address bus (register select)
- - num: 10
- sym: A1
- desc: address bus (register select)
- - num: 11
- sym: A2
- desc: address bus (register select)
- - num: 12
- sym: A3
- desc: address bus (register select)
- - num: 13
- sym: A4
- desc: address bus (register select)
- - num: 14
- sym: GND
+ CAP1A:
+ desc: 'capacitor C1 connection'
+ CAP1B:
+ desc: 'capacitor C1 connection'
+ CAP2A:
+ desc: 'capacitor C2 connection'
+ CAP2B:
+ desc: 'capacitor C2 connection'
+ '~RES':
+ desc: 'master reset'
+ '∅2':
+ desc: 'master clock'
+ 'R/~W':
+ desc: 'read/write select'
+ '~CS':
+ desc: 'chip select (active low)'
+ A0:
+ desc: 'address bus (register select)'
+ A1:
+ desc: 'address bus (register select)'
+ A2:
+ desc: 'address bus (register select)'
+ A3:
+ desc: 'address bus (register select)'
+ A4:
+ desc: 'address bus (register select)'
+ GND:
desc: ground
- - num: 15
- sym: D0
- desc: data bus
- - num: 16
- sym: D1
- desc: data bus
- - num: 17
- sym: D2
- desc: data bus
- - num: 18
- sym: D3
- desc: data bus
- - num: 19
- sym: D4
- desc: data bus
- - num: 20
- sym: D5
- desc: data bus
- - num: 21
- sym: D6
- desc: data bus
- - num: 22
- sym: D7
- desc: data bus
- - num: 23
- sym: POTY
- desc: Y-axis potentiometer input
- - num: 24
- sym: POTX
- desc: X-axis potentiometer input
- - num: 25
- sym: Vcc
- desc: "+5VDC supply"
- - num: 26
- sym: EXT IN
- desc: external audio input
- - num: 27
- sym: AUDIO OUT
- desc: audio output
- - num: 28
- sym: Vdd
- desc: "+12VDC supply"
+ D0:
+ desc: 'data bus'
+ D1:
+ desc: 'data bus'
+ D2:
+ desc: 'data bus'
+ D3:
+ desc: 'data bus'
+ D4:
+ desc: 'data bus'
+ D5:
+ desc: 'data bus'
+ D6:
+ desc: 'data bus'
+ D7:
+ desc: 'data bus'
+ POTY:
+ desc: 'Y-axis potentiometer input'
+ POTX:
+ desc: 'X-axis potentiometer input'
+ Vcc:
+ desc: '+5VDC supply'
+ 'EXT IN':
+ desc: 'external audio input'
+ 'AUDIO OUT':
+ desc: 'audio output'
+ Vdd:
+ desc: '+12VDC supply'
specs:
- - param: "Minimum clock cycle time"
- val: 1
- unit: "µs"
+ -
+ param: 'Minimum clock cycle time'
+ val: '1'
+ unit: 'µs'
notes:
- - C1 and C2 are integrating capacitors for the filter; polystyrene capacitors are preferred.
- - C1 and C2 should have the same value. 2200 pF gives good operation over the audio range (30Hz-12kHz).
- - "Filter cutoff frequency is approx. 2.6×10
-| $00 | Voice 1 frequency low byte |
-| $01 | Voice 1 frequency high byte |
-| $02 | Voice 1 pulse width low byte |
-| $03 | Voice 1 pulse width high byte (bits 3-0) |
-| $04 | Voice 1 control (gate, sync, ring mod, waveform) |
-| $05 | Voice 1 attack/decay rates |
-| $06 | Voice 1 sustain level/release rate |
-| $07 | Voice 2 frequency low byte |
-| $08 | Voice 2 frequency high byte |
-| $09 | Voice 2 pulse width low byte |
-| $0A | Voice 2 pulse width high byte (bits 3-0) |
-| $0B | Voice 2 control (gate, sync, ring mod, waveform) |
-| $0C | Voice 2 attack/decay rates |
-| $0D | Voice 2 sustain level/release rate |
-| $0E | Voice 3 frequency low byte |
-| $0F | Voice 3 frequency high byte |
-| $10 | Voice 3 pulse width low byte |
-| $11 | Voice 3 pulse width high byte (bits 3-0) |
-| $12 | Voice 3 control (gate, sync, ring mod, waveform) |
-| $13 | Voice 3 attack/decay rates |
-| $14 | Voice 3 sustain level/release rate |
-| $15 | Filter cutoff frequency low byte |
-| $16 | Filter cutoff frequency high byte (bits 2-0) |
-| $17 | Filter resonance/control |
-| $18 | Filter mode/volume control |
-| $19 | POTX value (0-255), updated every 512 clock cycles |
-| $1A | POTY value (0-255), updated every 512 clock cycles |
-| $1B | Upper 8 bits of Oscillator 3 value (random number if noise waveform is selected) |
-| $1C | Upper 8 bits of Voice 3 envelope generator value |
-
"
- - "Oscillator frequency = (Fn × Fclk/16777216) Hz"
- - "Pulse width = (PWn/40.95) %"
-...
-
+ - 'C1 and C2 are integrating capacitors for the filter; polystyrene capacitors are preferred.'
+ - 'C1 and C2 should have the same value. 2200 pF gives good operation over the audio range (30Hz-12kHz).'
+ - 'Filter cutoff frequency is approx. 2.6×10
| $00 | Voice 1 frequency low byte |

| $01 | Voice 1 frequency high byte |

| $02 | Voice 1 pulse width low byte |

| $03 | Voice 1 pulse width high byte (bits 3-0) |

| $04 | Voice 1 control (gate, sync, ring mod, waveform) |

| $05 | Voice 1 attack/decay rates |

| $06 | Voice 1 sustain level/release rate |

| $07 | Voice 2 frequency low byte |

| $08 | Voice 2 frequency high byte |

| $09 | Voice 2 pulse width low byte |

| $0A | Voice 2 pulse width high byte (bits 3-0) |

| $0B | Voice 2 control (gate, sync, ring mod, waveform) |

| $0C | Voice 2 attack/decay rates |

| $0D | Voice 2 sustain level/release rate |

| $0E | Voice 3 frequency low byte |

| $0F | Voice 3 frequency high byte |

| $10 | Voice 3 pulse width low byte |

| $11 | Voice 3 pulse width high byte (bits 3-0) |

| $12 | Voice 3 control (gate, sync, ring mod, waveform) |

| $13 | Voice 3 attack/decay rates |

| $14 | Voice 3 sustain level/release rate |

| $15 | Filter cutoff frequency low byte |

| $16 | Filter cutoff frequency high byte (bits 2-0) |

| $17 | Filter resonance/control |

| $18 | Filter mode/volume control |

| $19 | POTX value (0-255), updated every 512 clock cycles |

| $1A | POTY value (0-255), updated every 512 clock cycles |

| $1B | Upper 8 bits of Oscillator 3 value (random number if noise waveform is selected) |

| $1C | Upper 8 bits of Voice 3 envelope generator value |


'
+ - 'Oscillator frequency = (Fn × Fclk/16777216) Hz'
+ - 'Pulse width = (PWn/40.95) %'
+packages:
+ DIP:
+ - CAP1A
+ - CAP1B
+ - CAP2A
+ - CAP2B
+ - '~RES'
+ - '∅2'
+ - 'R/~W'
+ - '~CS'
+ - A0
+ - A1
+ - A2
+ - A3
+ - A4
+ - GND
+ - D0
+ - D1
+ - D2
+ - D3
+ - D4
+ - D5
+ - D6
+ - D7
+ - POTY
+ - POTX
+ - Vcc
+ - 'EXT IN'
+ - 'AUDIO OUT'
+ - Vdd
diff --git a/6809E.yaml b/6809E.yaml
index 54d6f2f..2aff0de 100644
--- a/6809E.yaml
+++ b/6809E.yaml
@@ -1,182 +1,142 @@
----
-description: "8-bit microprocessor"
-aliases: [68A09E, 68B09E]
-package: DIP
-pincount: 40
-family: "Motorola"
-datasheet: "http://www.classiccmp.org/dunfield/r/6809e.pdf"
+description: '8-bit microprocessor'
+aliases:
+ - 68A09E
+ - 68B09E
+family: Motorola
+datasheet: 'http://www.classiccmp.org/dunfield/r/6809e.pdf'
pins:
- - num: 1
- sym: Vss
+ Vss:
desc: ground
- - num: 2
- sym: ~NMI
- desc: non-maskable interrupt (active low)
- - num: 3
- sym: ~IRQ
- desc: interrupt request (active low)
- - num: 4
- sym: ~FIRQ
- desc: fast interrupt request (active low)
- - num: 5
- sym: BS
- desc: bus status output
- - num: 6
- sym: BA
- desc: bus available output
- - num: 7
- sym: Vcc
- desc: supply voltage
- - num: 8
- sym: A0
- desc: address bus
- - num: 9
- sym: A1
- desc: address bus
- - num: 10
- sym: A2
- desc: address bus
- - num: 11
- sym: A3
- desc: address bus
- - num: 12
- sym: A4
- desc: address bus
- - num: 13
- sym: A5
- desc: address bus
- - num: 14
- sym: A6
- desc: address bus
- - num: 15
- sym: A7
- desc: address bus
- - num: 16
- sym: A8
- desc: address bus
- - num: 17
- sym: A9
- desc: address bus
- - num: 18
- sym: A10
- desc: address bus
- - num: 19
- sym: A11
- desc: address bus
- - num: 20
- sym: A12
- desc: address bus
- - num: 21
- sym: A13
- desc: address bus
- - num: 22
- sym: A14
- desc: address bus
- - num: 23
- sym: A15
- desc: address bus
- - num: 24
- sym: D7
- desc: data bus
- - num: 25
- sym: D6
- desc: data bus
- - num: 26
- sym: D5
- desc: data bus
- - num: 27
- sym: D4
- desc: data bus
- - num: 28
- sym: D3
- desc: data bus
- - num: 29
- sym: D2
- desc: data bus
- - num: 30
- sym: D1
- desc: data bus
- - num: 31
- sym: D0
- desc: data bus
- - num: 32
- sym: R/~W
- desc: bus read/write
- - num: 33
- sym: BUSY
- desc: busy status
- - num: 34
- sym: E
- desc: clock input
- - num: 35
- sym: Q
- desc: quadrature clock input
- - num: 36
- sym: AVMA
- desc: advanced VMA signal (indicates bus will be used in the next cycle)
- - num: 37
- sym: ~RESET
- desc: reset (active low)
- - num: 38
- sym: LIC
- desc: last instruction cycle (high during last cycle of instruction)
- - num: 39
- sym: TSC
- desc: three-state control (active high; tri-states address, data, R/~W~)
- - num: 40
- sym: ~HALT
- desc: halt (active low)
+ '~NMI':
+ desc: 'non-maskable interrupt (active low)'
+ '~IRQ':
+ desc: 'interrupt request (active low)'
+ '~FIRQ':
+ desc: 'fast interrupt request (active low)'
+ BS:
+ desc: 'bus status output'
+ BA:
+ desc: 'bus available output'
+ Vcc:
+ desc: 'supply voltage'
+ A0:
+ desc: 'address bus'
+ A1:
+ desc: 'address bus'
+ A2:
+ desc: 'address bus'
+ A3:
+ desc: 'address bus'
+ A4:
+ desc: 'address bus'
+ A5:
+ desc: 'address bus'
+ A6:
+ desc: 'address bus'
+ A7:
+ desc: 'address bus'
+ A8:
+ desc: 'address bus'
+ A9:
+ desc: 'address bus'
+ A10:
+ desc: 'address bus'
+ A11:
+ desc: 'address bus'
+ A12:
+ desc: 'address bus'
+ A13:
+ desc: 'address bus'
+ A14:
+ desc: 'address bus'
+ A15:
+ desc: 'address bus'
+ D7:
+ desc: 'data bus'
+ D6:
+ desc: 'data bus'
+ D5:
+ desc: 'data bus'
+ D4:
+ desc: 'data bus'
+ D3:
+ desc: 'data bus'
+ D2:
+ desc: 'data bus'
+ D1:
+ desc: 'data bus'
+ D0:
+ desc: 'data bus'
+ 'R/~W':
+ desc: 'bus read/write'
+ BUSY:
+ desc: 'busy status'
+ E:
+ desc: 'clock input'
+ Q:
+ desc: 'quadrature clock input'
+ AVMA:
+ desc: 'advanced VMA signal (indicates bus will be used in the next cycle)'
+ '~RESET':
+ desc: 'reset (active low)'
+ LIC:
+ desc: 'last instruction cycle (high during last cycle of instruction)'
+ TSC:
+ desc: 'three-state control (active high; tri-states address, data, R/~W~)'
+ '~HALT':
+ desc: 'halt (active low)'
specs:
- - param: "Clock speed"
- val: [1 (6809E), 1.5 (68A09E), 2 (68B09E)]
- unit: MHz
+ -
+ param: 'Clock speed'
+ val:
+ - '1 (6809E)'
+ - '1.5 (68A09E)'
+ - '2 (68B09E)'
+ unit: MHz
notes:
- - "Registers:
-