Startup of the KIM-1: RESET

RESET is executed when the user presses the RESET button, and the 6502 RESET input is triggered.


1210   1FF7             ;       ** INTERRUPT VECTORS **
1211   1FFA             
1212   1FFA              
1213   1FFA 1C 1C       NMIENT  .WORD NMIT
1214   1FFC 22 1C       RSTENT  .WORD RST
1215   1FFE 1F 1C       IRQENT  .WORD IRQT

0606   1C22 A2 FF       RST     LDX   #$FF       ; KIM ENTRY VIA RST 
0607   1C24 9A                  TXS   
0608   1C25 86 F2               STX   SPUSER
0609   1C27 20 88 1E            JSR   INITS
0610   1C2A             ;

  .. continue with TTY/KB selection

Subroutine INITS 

0963   1E88             ;
0964   1E88             ;          INITIALIZATION FOR SIGMA   
0965   1E88             ;
0966   1E88 A2 01       INITS   LDX   #$01       ; SET KB MODE TO ADDR
0967   1E8A 86 FF               STX   MODE        
0968   1E8C             ;
0969   1E8C A2 00       INIT1   LDX   #$00        
0970   1E8E 8E 41 17            STX   PADD       ; FOR SIGMA USE SAD
0971   1E91 A2 3F               LDX   #$3F        
0972   1E93 8E 43 17            STX   PBDD       ; FOR SIGMA USE SBDD
0973   1E96 A2 07               LDX   #$07       ; ENABLE DATA IN    
0974   1E98 8E 42 17            STX   SBD        ; OUTPUT
0975   1E9B D8                  CLD
0976   1E9C 78                  SEI
0977   1E9D 60                  RTS

What is happening here?

  • After a hardware RESET (manually, the KIM-1 does not have an automated RESET circuit) the vector in the KIM-1 ROM points to $1C22 (1214)
  • Stack initialized (606-610)
  • INITS called to set hardware ports
    • MODE of LED/display set to Address (Same as pressing AD on keyboard)
    • hardware ports Port A set to input Datadirection register 0 (969 – 970)
    • Ports PIA B PB0-PB5 set to output in Data Direction $3F = 0011111 (971-972)
    • Port PB0 to PB3 set to 1, PB4 and PB5 to 0 by storing $07 = 00000111 to PIA B Data (973-974)
      This sets Row 3 output to 0, see the TTY/KB selection why