とりあえず TMS9902A を使ったシリアル送信だけはできるようにやっとなりました。原因は、シリアルのボーレートセットから送信までの待ちが足りていなかったこと。この石適切な設定がされていないと RTS を落としてだんまりになるのよねぇ……
懸案が片付いたのでさっさと終わらせようと。TMS99105A Board 側の Basic が反応しなかったのはボーレート設定の関連と思われるのでなんとかなるかなと。
1/ 0 : cpu tms9900
2/ 0 : padding on
3/ 0 : ;
4/ 0 : ; TEST for TMS9900/9995/99105
5/ 0 : ;
6/ 0 : =0FFB0H MREGS EQU 0FFB0H
7/ 0 : =0FFBAH EREGS EQU 0FFBAH
8/ 0 : =0FFC6H IREGS EQU 0FFC6H
9/ 0 : =0FFD2H DUMYBF EQU 0FFD2H
10/ 0 : =0FFD4H XREGS EQU 0FFD4H
11/ 0 : =0FFF4H ASR EQU 0FFF4H
12/ 0 : =0FFF6H DUMPFG EQU 0FFF6H
13/ 0 : =0FFF8H STEPFG EQU 0FFF8H
14/ 0 : =0FFFAH HALTFG EQU 0FFFAH
15/ 0 : ;
16/ 0 : =3H COUNT EQU 3 ; reg3
17/ 0 : =7H POINT EQU 7 ; reg7
18/ 0 : =0BH LINK EQU 11 ; reg11 = user register
19/ 0 : =0CH CRUBAS EQU 12 ; reg12
20/ 0 : ;
21/ 0 : =7FF0H LEDAD EQU 07FF0H
22/ 0 : =0H SERAD EQU 0000H
23/ 0 : =1FH SERRES EQU 01FH
24/ 0 : =15H SEROSEN EQU 015H
25/ 0 : =14H SERTIM EQU 014H
26/ 0 : =13H SERXBIE EQU 013H
27/ 0 : =12H SERRIE EQU 012H
28/ 0 : =11H SERBKON EQU 011H
29/ 0 : =10H SERRTSO EQU 010H
30/ 0 : =0FH SERTST EQU 00FH
31/ 0 : =0EH SERLDC EQU 00EH
32/ 0 : =0DH SERLSI EQU 00DH
33/ 0 : =0CH SERLRD EQU 00CH
34/ 0 : =0BH SERLXD EQU 00BH
35/ 0 : ;
36/ 0 : =1FH SERINT EQU 01FH
37/ 0 : =1EH SERFLG EQU 01EH
38/ 0 : =1DH SERDSC EQU 01DH
39/ 0 : =1CH SERCTS EQU 01CH
40/ 0 : =1BH SERDSR EQU 01BH
41/ 0 : =1AH SERRTS EQU 01AH
42/ 0 : =19H SERTLP EQU 019H
43/ 0 : =18H SERTER EQU 018H
44/ 0 : =17H SERXSR EQU 017H
45/ 0 : =16H SERXBR EQU 016H
46/ 0 : =15H SERRBR EQU 015H
47/ 0 : =14H SERDSCI EQU 014H
48/ 0 : =13H SERTIMI EQU 013H
49/ 0 : =11H SERXBI EQU 011H
50/ 0 : =10H SERRBI EQU 010H
51/ 0 : =0FH SERRIN EQU 00FH
52/ 0 : =0EH SERRSB EQU 00EH
53/ 0 : =0DH SERRFB EQU 00DH
54/ 0 : =0CH SERRFE EQU 00CH
55/ 0 : =0BH SERROV EQU 00BH
56/ 0 : =0AH SERRPE EQU 00AH
57/ 0 : =9H SERRCER EQU 009H
58/ 0 : ;
59/ 0 : ORG 0
60/ 0 : FFB0 0100 DATA MREGS,INIT
61/ 4 : FFFF FFFF FFFF DATA -1,-1,-1,-1
FFFF
62/ C : FFFF FFFF FFFF DATA -1,-1,-1,-1
FFFF
63/ 14 :
64/ 14 : FFFF FFFF FFFF DATA -1,-1,-1,-1
FFFF
65/ 1C : FFFF FFFF FFFF DATA -1,-1,-1,-1
FFFF
66/ 24 : FFFF FFFF FFFF DATA -1,-1,-1,-1
FFFF
67/ 2C : FFFF FFFF FFFF DATA -1,-1,-1,-1
FFFF
68/ 34 : FFFF FFFF FFFF DATA -1,-1,-1,-1
FFFF
69/ 3C : FFFF FFFF DATA -1,-1
70/ 40 : ;
71/ 40 : ; Note: baud rate 9600, 8bit-character, even parity 2 stop bit
72/ 40 : ; control by polling
73/ 100 : ORG 100H
74/ 100 : INIT:
75/ 100 : 020C 0000 LI R12,SERAD
76/ 104 : ;
77/ 104 : 1D1F SBO SERRES ; reset TMS9902 UART
78/ 106 : 0202 0010 LI R2,10H
79/ 10A : ILOOP0:
80/ 10A : 0200 0000 LI R0,0 ; small wait
81/ 10E : 0602 DEC R2
82/ 110 : 16FC JNE ILOOP0
83/ 112 : ;
84/ 112 : VVV:
85/ 112 : 1D0E SBO 14
86/ 114 : 3220 014E LDCR @CRCR,8 ; initialize control reg
87/ 118 : 1E0E SBZ 14
88/ 11A : 1D0C SBO 12
89/ 11C : 3320 014A LDCR @V9600R,12 ; write both LRDR and LXDR
90/ 120 : 1E0C SBZ 12
91/ 122 : 1D0B SBO 11
92/ 124 : 3320 014C LDCR @V9600T,12 ; write both LRDR and LXDR
93/ 128 : 1E0B SBZ 11
94/ 12A : 1E11 SBZ 17
95/ 12C : 0202 FFFF LI R2,0FFFFH
96/ 130 : VVVLP:
97/ 130 : A000 A R0,R0
98/ 132 : 0602 DEC R2
99/ 134 : 16FD JNE VVVLP
100/ 136 : WCHAR:
101/ 136 : 1D10 SBO 16 ; turn on transmitter
102/ 138 : WCLOOP:
103/ 138 : 1F16 TB 22
104/ 13A : 16FE JNE WCLOOP
105/ 13C : 3220 0150 LDCR @ADATA,8
106/ 140 : 0202 0005 LI R2,5
107/ 144 : WCLOP1:
108/ 144 : 0602 DEC R2
109/ 146 : 16FE JNE WCLOP1
110/ 148 : 10F7 JMP WCLOOP
111/ 14A : ;
112/ 14A : 0034 V9600R: DATA 34H ; 9600bps
113/ 14C : 0034 V9600T: DATA 34H ; 9600bps
114/ 14E : ;
115/ 14E : 6300 CRCR: DATA 6300H ; CTRL, 2stop bit, even parity, div3, 7bit
116/ 150 : 4100 ADATA: DATA 4100H ; 'A'
117/ 152 : ;