puts っぽい処理だと 8bit no-parity で取れるので良いのかな。
ただ、リセット直後がおかしい。もう少し待たないとだめみたい。何回かリセット押しているとうまくいくけど、気のせいだと思う。
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, SCLK=P36/16
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 : A2 00 LDX #$0
38/ F01F : EA NOP
39/ F020 : EA NOP
40/ F021 : CONOUT0:
41/ F021 : EA NOP
42/ F022 : EA NOP
43/ F023 : BD 00 F2 LDA WSTR,X ; WSTR
44/ F026 : F0 09 BEQ ECHOBACK
45/ F028 : CONOUT:
46/ F028 : 37 F5 FD BBC 1,$0F5,CONOUT
47/ F02B : 85 F6 STA $0F6
48/ F02D : E8 INX
49/ F02E : EA NOP
50/ F02F : 80 F0 BRA CONOUT0
51/ F031 : ;
52/ F031 : ECHOBACK:
53/ F031 : 77 F5 FD BBC 3,$0F5,ECHOBACK ;get one character
54/ F034 : A5 F7 LDA $0F7
55/ F036 : CONOUT1:
56/ F036 : 37 F5 FD BBC 1,$0F5,CONOUT1
57/ F039 : 85 F6 STA $0F6
58/ F03B : 80 F4 BRA ECHOBACK
59/ F03D : ;
60/ F200 : ORG $F20061/ F200 : WSTR:
62/ F200 : 4F 2C 20 62 72 61 FCB "O, brave new world, That has such people in't",$0D,$0A,$00
76 65 20 6E 65 77
20 77 6F 72 6C 64
2C 20 54 68 61 74
20 68 61 73 20 73
75 63 68 20 70 65
6F 70 6C 65 20 69
6E 27 74 0D 0A 00
63/ F230 :
64/ F230 : END