Print string


0641   1C5C A2 0A               LDX   #$0A       ; TYPE OUT KIM
0642   1C5E 20 31 1E            JSR   PRTST

0764   1D2E A2 0C               LDX   #$0C       ; X-OFF KIM
..
0767   1D35 20 31 1E            JSR   PRTST

0905   1E2F             ;       PRINT STRING OF ASCII CHAR FROM 
0906   1E2F             ;       TOP+X TO TOP
0907   1E2F             ;
0908   1E2F A2 07       CRLF    LDX   #$07

0909   1E31 BD D5 1F    PRTST   LDA   TOP,X
0910   1E34 20 A0 1E            JSR   OUTCH
0911   1E37 CA                  DEX   
0912   1E38 10 F7               BPL   PRTST       ; STOP ON INDEX ZERO
0913   1E3A 60                  RTS

1197   1FD5 00 00 00 00 TOP     .BYTE  $00, $00, $00, $00, $00, $00, $0A, $0D, "MIK"          
1197   1FD9 00 00 0A 0D 
1197   1FDD 4D 49 4B 
1198   1FE0 20 13 52 52         .BYTE  ' ',$13, "RRE", ' ', $13               
1198   1FE4 45 20 13 

What is happening here?

The KIM-1 monitor types out three strings.
X=07 types CRLF
X=0C type KIM CRLF (at startup)
X=11 type ERR KIM CRLF (when papertape loading ends in in error)
all with trailing 6x 00

The subroutine PRTSTR
– fetches a character from the table at offset in X
– prints the character via OUTCH
– decrements X, back one character in the table
– and loops until X = 0 and the string printed