fx-5800Pだと、文法的に通らないところがいくつかあるので、そのままでは動きません。
主な問題点は次の三つです。
1. 変数名に「X1」「A1」などは使えない
fx-5800P の変数は「A~Z」「θ」「r」など、基本的に1文字だけです。
「X1」「Y1」「A1」などと書くと、「X×1」「A×1」といった“式”として解釈されてしまい、
「X→X1」「X2-X1→A1」などの行で構文エラーになります。
なので、例えば
X1, Y1, X2, Y2, X3, Y3, A1, B1, C1, D1 などは
X1 → A
Y1 → B
X2 → C
Y2 → D
X3 → E
Y3 → F
A1 → G
B1 → H
C1 → I
D1 → J
のように、1文字の変数に割り当て直して書き換える必要があります。
もしくは List を使って「X→List 1[1]」のように配列で管理します。
2. Locate を1行に2回続けて書いている
質問文では
Locate 1,1+N,“X=“Locate 3,1+N,X
のように、Locate が続けて書かれていますが、
この場合は
Locate 1,1+N,“X=”:Locate 3,1+N,X
のように「:」で区切るか、行を分けて
Locate 1,1+N,“X=”
Locate 3,1+N,X
と書かないと文法エラーになります。
Y の方も同様です。
3. X=A/2, X=A の条件が成立しないことがある
ループ内で X は「X+P→X」とピッチ P ずつ増えていますが、
P の値によっては「X=A/2」や「X=A」がぴったり成立しないままループを抜けます。
その場合、X2,Y2 や X3,Y3 が一度も代入されず、後の計算が正しくできません。
例えば
If X=A/2 Then
の代わりに
If Abs(X-A/2)≤P/2 Then
のように「近くに来たら代入する」という判定にした方が安全です。
まずは
・変数名を全て1文字に直す
・Locate の行を「:」または改行で分ける
を直して、文法エラーが出ない形にしてから、
必要に応じて条件式(X=A/2 など)の見直しをすると良いと思います。