やっと気分的に手が空いたので、とりあえずシリアルまでは動かしました。
1/ 0 : ;;; SERTEST for Sig 2650A
2/ 0 : ;;; 2023/09/21 efialtes_htn
3/ 0 : ;;;
4/ 0 : CPU 2650
5/ 0 : INTSYNTAX +H'hex'
6/ 0 : ;
7/ 0 : ="2650" TARGET: EQU "2650"
8/ 0 : ;
9/ 0 : =$0 SERBASE: EQU H'00' ; 2661 - 0x00 to 0x7f
10/ 0 :
11/ 0 : STARTUP: ORG 0
12/ 0 : 60 lodz r0
13/ 1 : 03 lodz r3
14/ 2 : 92 lpsu
15/ 3 : 1F 00 80 bcta,un CSTART
16/ 6 : ;
17/ 80 : ORG H'0080'
18/ 80 : CSTART:
19/ 80 : 04 AE lodi,r0 H'AE' ; async, nopari, 8bit, 16xrate
20/ 82 : D4 02 wrte,r0 H'02'
21/ 84 : 04 FE lodi,r0 H'FE' ; 19200bps, 16X, BKDET
22/ 86 : D4 02 wrte,r0 H'02'
23/ 88 : 04 37 lodi,r0 H'37' ; /RTS, /DTR low, error reset, TX/RX enable
24/ 8A : D4 03 wrte,r0 H'03'
25/ 8C : ;
26/ 8C : 04 00 CSSWAIT: lodi,r0 0
27/ 8E : CSSWAIT1:
28/ 8E : 84 01 addi,r0 1
29/ 90 : 98 7C bcfr,eq CSSWAIT1
30/ 92 : ;
31/ 92 : 06 00 CSS1: lodi,r2 0
32/ 94 : 0E 20 BC CSS2: loda,r0 MSGS-1,r2,+
33/ 97 : 1C 00 A6 bcta,eq ENDMSG
34/ 9A : D4 00 wrte,r0 SERBASE
35/ 9C : 55 01 CSS3: rede,r1 SERBASE+1
36/ 9E : 45 01 andi,r1 H'01' ; trasmit holding register empty
37/ A0 : 1C 00 9C bcta,eq CSS3
38/ A3 : 1F 00 94 bcta,un CSS2
39/ A6 : ;
40/ A6 : ENDMSG:
41/ A6 : 04 00 lodi r0,0 ; small wait
42/ A8 : INPUTLOOP:
43/ A8 : 55 01 rede,r1 SERBASE+1
44/ AA : 45 02 andi,r1 H'02'
45/ AC : 1C 00 A8 bcta,eq INPUTLOOP
46/ AF : 54 00 rede,r0 SERBASE
47/ B1 : ECHOLOOP:
48/ B1 : 55 01 rede,r1 SERBASE+1
49/ B3 : 45 01 andi,r1 H'01'
50/ B5 : 1C 00 B1 bcta,eq ECHOLOOP
51/ B8 : D4 00 wrte,r0 SERBASE
52/ BA : 1F 00 A6 bcta,un ENDMSG
53/ BD :
54/ BD : 57 65 20 61 72 65 MSGS: db "We are such stuff as dreams are made on",H'0D',H'0A',0
C3 : 20 73 75 63 68 20
C9 : 73 74 75 66 66 20
CF : 61 73 20 64 72 65
D5 : 61 6D 73 20 61 72
DB : 65 20 6D 61 64 65
E1 : 20 6F 6E 0D 0A 00
55/ E7 :
56/ E7 : end

さて次は PIPBUG のつもりですけど、asano さんの Unimon を先に動かすかもしれません。どっちにせよ、前に書いている通り、まずプログラム転送ルーチンからですけど。現時点で RAM が間接アドレッシング以外で読めないのが面倒すぎる。