現在の私の懸念の 1 つは、LCD 画面で CountRoutes、FindRoutes、または DisplayRoutes を実行するために、C プログラムから呼び出す必要があるいくつかのアセンブリ言語サブルーチンを作成することです。たとえば、これはルートアドレスを保存したコードで、最初のサブルーチンである CountRoutes では、-1 を見つけてカウントを停止する前に、メモリ内にあるルートの数をカウントする必要があります。
これは私がこれまで行ってきたことであり、機能していません。変更する必要があるのは、.byte null 行を無視し (下の 2 つの文字列にジャンプ)、文字列の最後にいるかどうかを確認し (0 を満たす)、別の .word が見つかるまでもう一度ジャンプすることです。 6 または -1。
.word 4
.byte null
.asciz "Dee Bridge"
.asciz ""
.word 5
.byte 'x
.asciz "Echt Terminus"
.asciz "Express"
.word -1 ; route 0xffff terminates the data set
.area text
_RouteCount::
pshx
tfr d,y ;
ldx #0 ; Clear index
Loop: ldab 1,y+ ; Fetch next character; inc Y
bmi Done ; If -1 is found, exit loop
bra Loop ; Repeat loop
ldx #1 ; Store no match flag in X
beq
bra Loop
Done: tfr Y,D ; Transfer index in D
pulx
rts