Currently, this document is a place-holder until I get more info here.
Quick rundown of what I know about the Keyboard Component and the "6502 side" of things:
On the "CP-1600 side":
Also, here are some notes I've made while reading the 6502 ROM dumps.
Miscellaneous stuff noted about kbd component 6502 code
Entry points:
$C000
$C009
$CE79 (ref: code @ $C1E1 ... $C1F3)
$C13B (ref: boot code @ $C23C)
$CC16 (ref: boot code @ $C246)
Subroutines:
$C1E1 Set default ISR vector & init flag? (point $3E8 @ $CE79)
$C363 Copy 12 bytes src=($96) to dst=($340 + A*12).
$C498 Store "$340 + A*12" to $96/$97. Clear Y. X = A*12.
$C926 Copy 12 bytes from $C91E to $340.
$DFBE Block fill >255 w/ zero. Count in $96/$97. $90 used as tmp.
$DFD2 Block fill with zero. Address in $94/$95, count in $90.
$DFD4 Block fill with A. Address in $94/$95, count in $90.
$DFDE Block-move 6 bytes. Src addr in $94/$95, Dst in $96/$97.
$DFE0 Block-move Y bytes. Src addr in $94/$95, Dst in $96/$97.
$DFEE Multiply A by 12, result in both A and X.
Jump vectors:
$94/$95 (ref: code @ $C9C2, $DC73)
$96/$97 (ref: code @ $C12D)
$98/$99 (ref: code @ $D221)
$B1/$B2 (save area for $94/$95 vector? Ref code @ $C878)
$E5/$E6 (save area for $94/$95 vector? Ref code @ $C3C5,$D152)
$302 (ref: code @ $C3F3)
$3D3 (ref: code @ $C06E)
$3E8 (from IRQ routine. Ref code @ $C022)
Jump table at $C2EF .. $C305
$C36B,$C371,$C376,$C381,$C340,$C399,$C3E8,$C3EE,$C3F3,$C3F6,
$C40F,$C422,
Jump table at $C731 .. $C772
$C81A,$C7AF,$C7E0,$C7EF,$C7AF,$C849,$C7AF,$CC0D,$C7AF,$C794,
$C7B0,$C7C8,$C800,$C7FD,$C816,$C784,$C77F,$C7AF,$C7AF,$C789,
$C7AF,$C773,$C824,$CB85,$CB9B,$CB2D,$CB44,$C893,$C43D,$C807,
$C80F,$C790,$CBEE,
Jump table at $C972 .. $C989
$CA01,$CA3E,$C9D2,$C9EB,$CA0C,$CA25,$CA54,$CA50,$CA78,$CA6E,
$CA72,$CB0F,
Jump table at $D2B1 .. $D2F4
$D116,$D337,$D34A,$D356,$D36B,$D36F,$D374,$D385,$D38D,$D39D,
$D3A4,$D3C4,$D3DA,$D3E7,$D411,$D415,$D468,$D46D,$D476,$D489,
$D496,$D621,$D673,$D676,$D728,$D786,$D843,$D981,$D9AC,
Jump table at $DCB5 .. $DCBC
$DCBD,$DCC8,$DCD3,$DCDE,
Jump table at $DCE9 .. $DCF0: Not actually a jump table ???
# $DCF1,$DD08,$DD20,$DD38,
RAM-based vector tables (?) at following locations:
$342-ish (ref: code @ $C0EF, $C10E, $C6B3, $DF68, $DFAA)
$348-ish (ref: code @ $C12D)
$3BB-ish (ref: code @ $C2C2)
Display buffer:
Row 0: $B800 - $B827
Row 1: $B840 - $B867
Row 2: $B880 - $B8A7
Row 3: $B8C0 - $B8E7
Row 4: $B900 - $B927
Row 5: $B940 - $B967
Row 6: $B980 - $B9A7
Row 7: $B9C0 - $B9E7
Row 8: $BA00 - $BA27
Row 9: $BA40 - $BA67
Row 10: $BA80 - $BAA7
Row 11: $BAC0 - $BAE7
Row 12: $BB00 - $BB27
Row 13: $BB40 - $BB67
Row 14: $BB80 - $BBA7
Row 15: $BBC0 - $BBE7
Row 16: $BC00 - $BC27
Row 17: $BC40 - $BC67
Row 18: $BC80 - $BCA7
Row 19: $BCC0 - $BCE7
Row 20: $BD00 - $BD27
Row 21: $BD40 - $BD67
Row 22: $BD80 - $BDA7
Row 23: $BDC0 - $BDE7