CPU実験室

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

ソース移植作業(2)

アセンブルしたHEXファイルをRAMへ転送し実行させると
オープニングメッセージとプロンプトまで表示されます。
その後BASICステートメントを打ち込んでLISTやRUNさせようとすると
68000システムのバスエラー例外が発生してモニタへ戻ってしまいます。
イメージ 1


モニタのトレースやブレーク機能で各コマンドへの分岐処理を調べると
本来のラベルに分岐していません。
原因は分岐するアドレスの処理を16bitのワードで処理をしているためでした。
オリジナルのソースがメモリ容量が32kB程度のMPUボードをターゲットにしており
分岐処理が絶対アドレスでも16bitに収まってしまうためにこれでも良かったのですが
今回のシステムではRAMのロケーションからして256kBを超えているので32bitで
アドレス計算しないと間に合いません

そのため飛び先テーブルやアドレス算出処理をロングワードで書き直しました

		       * Execution address tables:
000A58 0B44	       TAB1.1  DC.W    LIST		       Direct commands
000A5A 0D80	           DC.W    LOAD
000A5C 0AE6	           DC.W    NEW
000A5E 0AF8	           DC.W    RUN
000A60 0DDE	           DC.W    SAVE
000A62 0C8C	       TAB2.1  DC.W    NEXT		       Direct / statement
000A64 0D70	           DC.W    LET
000A66 0CDC	           DC.W    IF
000A68 0B30	           DC.W    GOTO
                                    :
                                    :
                ↓

                       * Execution address tables:
04017E 000402CE        TAB1_1  DC.L    LIST            Direct commands
040182 00040568                DC.L    LOAD            
040186 00040260                DC.L    NEW             
04018A 00040276                DC.L    RUN             
04018E 000405D2                DC.L    SAVE            
040192 0004044A        TAB2_1  DC.L    NEXT            Direct / statement
040196 00040558                DC.L    LET             
04019A 000404B0                DC.L    IF              
04019E 000402BA                DC.L    GOTO
                  :
                  :