The TTY CLI

The TTY user interface is quite simple, with a limited number of commands.

Once you get connected (see the page on baud rate detection, GETCH and OUTCH
you are greeted with

KIM
0000

and you can enter one of the single character commands and type insert hex bytes and words.

0636   1C4F             START   JSR   INIT1                              
0636   1C4F 20 8C 1E    
0637   1C52 A9 01               LDA   #$01
0638   1C54 2C 40 17            BIT   SAD
0639   1C57 D0 1E               BNE   TTYKB
0640   1C59 20 2F 1E            JSR   CRLF       ; PRT CR LF
0641   1C5C A2 0A               LDX   #$0A       ; TYPE OUT KIM
0642   1C5E 20 31 1E            JSR   PRTST
0643   1C61 4C AF 1D            JMP   SHOW1

0828   1DA9 20 CC 1F    SPACE   JSR   OPEN       ; OPEN NEW CELL 1
0829   1DAC 20 2F 1E    SHOW    JSR   CRLF       ; PRINT CR LF
0830   1DAF 20 1E 1E    SHOW1   JSR   PRTPNT
0831   1DB2 20 9E 1E            JSR   OUTSP      ; PRT SPACE
0832   1DB5 A0 00               LDY   #$00       ; PRINT DATA SPECIFIED
0833   1DB7 B1 FA               LDA   (POINTL),Y ; BY POINT AD = LDA EXT
0834   1DB9 20 3B 1E            JSR   PRTBYT
0835   1DBC 20 9E 1E            JSR   OUTSP      ; PRT SPACE
0836   1DBF 4C 64 1C            JMP   CLEAR
0837   1DC2             ;             
0838   1DC2 20 63 1F    RTRN    JSR   INCPT      ; OPEN NEXT CELL
0839   1DC5 4C AC 1D            JMP   SHOW

0645   1C64 A9 00       CLEAR   LDA   #$00
0646   1C66 85 F8               STA   INL        ; CLEAR INPUT BUFFER
0647   1C68 85 F9               STA   INH
0648   1C6A 20 5A 1E    READ    JSR   GETCH      ; GET CHAR
0649   1C6D C9 01               CMP   #$01
0650   1C6F F0 06               BEQ   TTYKB
0651   1C71 20 AC 1F            JSR   PACK
0652   1C74 4C DB 1D            JMP   SCAN

1161   1FAC             ;       SHIFT CHAR IN A INTO
1162   1FAC             ;       INL AND INH 
1163   1FAC             ;
1164   1FAC C9 30       PACK    CMP   #$30       ; CHECK FOR HEX 
1165   1FAE 30 1B               BMI   UPDAT2
1166   1FB0 C9 47               CMP   #$47       ; NOT HEX EXIT
1167   1FB2 10 17               BPL   UPDAT2
1168   1FB4 C9 40               CMP   #$40       ; CONVERT TO HEX
1169   1FB6 30 03               BMI   UPDATE
1170   1FB8 18                  CLC   
1171   1FB9 69 09               ADC   #$09
1172   1FBB 2A          UPDATE  ROL   A
1173   1FBC 2A                  ROL   A
1174   1FBD 2A                  ROL   A
1175   1FBE 2A                  ROL   A
1176   1FBF A0 04               LDY   #$04       ; SHIFT INTO I/O BUFFER
1177   1FC1 2A          UPDAT1  ROL   A
1178   1FC2 26 F8               ROL   INL
1179   1FC4 26 F9               ROL   INH
1180   1FC6 88                  DEY   
1181   1FC7 D0 F8               BNE   UPDAT1
1182   1FC9 A9 00               LDA   #$00       ; A=0 IF HEX NUM
1183   1FCB 60          UPDAT2  RTS


0854   1DDB C9 20       SCAN    CMP   #$20       ; OPEN CELL
0855   1DDD F0 CA               BEQ   SPACE
0856   1DDF C9 7F               CMP   #$7F       ; RUB OUT (KIM)
0857   1DE1 F0 1B               BEQ   STV
0858   1DE3 C9 0D               CMP   #$0D       ; NEXT CELL
0859   1DE5 F0 DB               BEQ   RTRN
0860   1DE7 C9 0A               CMP   #$0A       ; PREV CELL
0861   1DE9 F0 1C               BEQ   FEED
0862   1DEB C9 2E               CMP   #'.'       ; MODIFY CELL
0863   1DED F0 26               BEQ   MODIFY
0864   1DEF C9 47               CMP   #'G'       ; GO EXEC
0865   1DF1 F0 D5               BEQ   GOEXEC
0866   1DF3 C9 51               CMP   #'Q'       ; DUMP FROM OPEN CELL TO HI LIMIT
0867   1DF5 F0 0A               BEQ   DUMPV
0868   1DF7 C9 4C               CMP   #'L'       ; LOAD TAPE
0869   1DF9 F0 09               BEQ   LOADV
0870   1DFB 4C 6A 1C            JMP   READ       ; IGNORE ILLEGAL CHAR

0876   1E07 38          FEED    SEC              
0877   1E08 A5 FA               LDA   POINTL     ; DEC DOUBLE BYTE
0878   1E0A E9 01               SBC   #$01       ; AT POINTL AND POINTH
0879   1E0C 85 FA               STA   POINTL
0880   1E0E B0 02               BCS   FEED1
0881   1E10 C6 FB               DEC   POINTH
0882   1E12 4C AC 1D    FEED1   JMP   SHOW
0883   1E15             ;             
0884   1E15 A0 00       MODIFY  LDY   #$00       ; GET CONTENTS OF INPUT BUFF
0885   1E17 A5 F8               LDA   INL        ; INL AND STORE IN LOC
0886   1E19 91 FA               STA   (POINTL),Y ; SPECIFIED BY POINT
0887   1E1B 4C C2 1D            JMP   RTRN

0895   1E1E             ;       SUB TP PRINT POINTL,POINTH
0896   1E1E             ;
0897   1E1E A5 FB       PRTPNT  LDA   POINTH     ; PRINT POINTL, POINTH 
0898   1E20 20 3B 1E            JSR   PRTBYT
0899   1E23 20 91 1F            JSR   CHK
0900   1E26 A5 FA               LDA   POINTL
0901   1E28 20 3B 1E            JSR   PRTBYT
0902   1E2B 20 91 1F            JSR   CHK
0903   1E2E 60                  RTS

0915   1E3B             ;       PRINT 1 HEX BYTE AS 2 ASCII CHAR'S
0916   1E3B             ;   
0917   1E3B 85 FC       PRTBYT  STA   TEMP                             
0918   1E3D 4A                  LSR   A           ; SHIFT CHAR RIGHT 4 BITS
0919   1E3E 4A                  LSR   A
0920   1E3F 4A                  LSR   A
0921   1E40 4A                  LSR   A
0922   1E41 20 4C 1E            JSR   HEXTA       ; CONVERT TO HEX AND PRINT
0923   1E44 A5 FC               LDA   TEMP        ; GET OTHER HALF
0924   1E46 20 4C 1E            JSR   HEXTA       ; CONVERT TO HEX AND PRINT
0925   1E49 A5 FC               LDA   TEMP        ; RESTORE BYTE IN A AND RETURN
0926   1E4B 60                  RTS   
0927   1E4C             ;
0928   1E4C 29 0F       HEXTA   AND   #$0F        ; MASK HI 4 BITS
0929   1E4E C9 0A               CMP   #$0A
0930   1E50 18                  CLC   
0931   1E51 30 02               BMI   HEXTA1
0932   1E53 69 07               ADC   #$07        ; ALPHA HEX
0933   1E55 69 30       HEXTA1  ADC   #$30        ; DEC HEX
0934   1E57 4C A0 1E            JMP   OUTCH       ; PRINT CHAR

What is happening here?

KIM
KIM
0000 00 12345678
5678 00
0000 00 1234.
0001 00 123456.
0002 00

0001 56 ggggg
0000 34 kkkkk
0000 34 123l
0123 00