CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

ソース移植作業

まずAS68Kで処理したときのアセンブルエラーの除去から。
これは意外と単純で
(1)ソース中の数式に括弧が使えない
× DC.B    'LIS',('T'+$80)   
  ↓
○ DC.B    'LIS','T'+$80     

(2)ラベル名に「.」が使えない
× TAB1.1 DC.W    LIST              
  ↓
○ TAB1_1 DC.W    LIST              

(3)イミディエイト処理のニーモニックに「I」が必要
× CMP.B   #27,D0          
  ↓
○ CMPI.B  #27,D0          
このソース修正で最初200行以上あったエラーが全てなくなりました


次にハードウェアに合わせるカスタマイズです
(1)コードのスタートアドレスを変更(とりあえずRAM上に配置)
ORG     $900            first free address using Tutor
    ↓
ORG     $40000          first free address using Tutor

(2)ユーザメモリの底を変更
ENDMEM  DC.L    $8000           end of available memory
  ↓
ENDMEM  DC.L    $7ff00          end of available memory


(3)シリアル入出力をデバイスに合わせて変更(MC6850→MC68901)
OUTC    BTST    #1,$10040       is port 1 ready for a character?
        BEQ     OUTC            if not, wait for it
        MOVE.B  D0,$10042       out it goes.
        RTS
  ↓
OUTC    BTST    #7,tsr          is port 1 ready for a character?
        BEQ     OUTC            if not, wait for it
        MOVE.B  D0,udr          out it goes.
        RTS

INC     BTST    #0,$10040       is character ready?
        BEQ     INCRET          if not, return Zero status
        MOVE.B  $10042,D0       else get the character
        AND.B   #$7F,D0         zero out the high bit
        RTS
  ↓
INC     BTST    #7,rsr          is character ready?
        BEQ     INCRET          if not, return Zero status
        MOVE.B  udr,D0          else get the character
        AND.B   #$7F,D0         zero out the high bit
        RTS

これでOKのはずなのですが・・・