Almost lost technologies

ここは昔の CPU を用いた工作記事を書くために用意しました。

MELPS740 SBC チェック(6) - UART テスト(続き)

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    $F200

      61/    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