最初 0x55 (ascii で 'U') でテストして切れ目がわかりにくかったので、'U:' の2文字連続出力でテストしました。
1/ 0 : ;;; UARTTEST for MELPS740
2/ 0 : ;;; 2023/03/26 efialtes_htn
3/ 0 : ;;;
4/ 0 : ;;; Assumes PHI=8MHz - UART external clock = 307.2KHz
5/ 0 : ;;;
6/ 0 : CPU MELPS740
7/ 0 : ;
8/ 0 : =MELPS740 TARGET: EQU "MELPS740"
9/ 0 : ;
10/ 0 : ;; VECTORS
11/ FFFA : ORG $FFFA
12/ FFFA : 00 00 FDB $0000 ; NMI
13/ FFFC : 00 F0 FDB $F000 ; RESET
14/ FFFE : 00 F0 FDB $F000 ; IRQ/BRK
15/ 10000 : ;
16/ F000 : ORG $F000
17/ F000 : A9 12 CSTART: LDA #$12 ; Stack-page1, Microprocessor mode
18/ F002 : 85 FF STA $0FF
19/ F004 : A6 FF LDX $0FF
20/ F006 : 9A TXS
21/ F007 : D8 CLD
22/ F008 : 12 CLT
23/ F009 : A9 FF LDA #$FF ; all output
24/ F00B : 85 EB STA $0EB ; port4 directional reg
25/ F00D : ;
26/ F00D : A9 08 LDA #$08 ; No sleep, 8bit UART、Ext CLK
27/ F00F : 85 F4 STA $0F4 ; T/R Mode register
28/ F011 : EA NOP
29/ F012 : EA NOP
30/ F013 : EA NOP
31/ F014 : EA NOP
32/ F015 : A9 00 LDA #$0 ; reset every errors. then enable
33/ F017 : 85 F5 STA $0F5
34/ F019 : A9 05 LDA #$5 ; RSV/TRN enabled
35/ F01B : 85 F5 STA $0F5
36/ F01D : ;
37/ F01D : EA NOP
38/ F01E : EA NOP
39/ F01F : CONOUT0:
40/ F01F : EA NOP
41/ F020 : EA NOP
42/ F021 : A9 55 LDA #$55 ; U
43/ F023 : CONOUT:
44/ F023 : 37 F5 FD BBC 1,$0F5,CONOUT
45/ F026 : 85 F6 STA $0F6
46/ F028 : EA NOP
47/ F029 : EA NOP
48/ F02A : A9 3A LDA #$3A
49/ F02C : CONOUT1:
50/ F02C : 37 F5 FD BBC 1,$0F5,CONOUT1
51/ F02F : 85 F6 STA $0F6
52/ F031 : 80 EC BRA CONOUT0
出てきたのがこれです。
なんかそれなりにもっともらしそうに見えるんですけど、CH340E の設定だと 7-bit EVEN Parity でないと取れないなぁ。 ’U8' にするとこうなるのでパリティがあるようには見えない。
もうすこしテストしないといけないかもしれません。