やっと気分的に手が空いたので、とりあえずシリアルまでは動かしました。
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 が間接アドレッシング以外で読めないのが面倒すぎる。