PC8801とかのようにOSなんてものがROM-BASICとゴチャ混ぜ状態だったころのようなあの時代には戻れません。
以下にABのN88BASIC互換性のポイントを挙げる
- ダイレクトモードは無い
- 各種コマンドは無い。SAVE,LOAD,LIST,RUNはもちろんAUTO,KEYも無い。
- READ,DATA関連は無い
- 変数はDimで明記しなければならない
- ON 〇〇 GOTO/GOSUB関連も存在しない
- SCREEN 3,0,0,1:CONSOLE ,,0,1:DEFINT A-Z:CLS 3←CLSしか無い
- テキスト、グラフィックの重ね合わせはできない。
- BEEP(0):BEEP(1)でブザーを作ることはできない。
- 関数は大文字小文字を区別する(ABSはAbs、ASCはAscとなる)
このようなワケで、N88BASICの
プログラムを移植するときは苦労します。
Sub N88SIZE(w As Long, h As Long)
Dim wrc As RECT, crc As RECT
Dim ps[1] As POINTAPI
GetWindowRect(_PromptSys_hWnd, wrc)
GetClientRect(_PromptSys_hWnd, crc)
ps[0].x=crc.left:ps[0].y=crc.top
ps[1].x=crc.right:ps[1].y=crc.bottom
ClientToScreen(_PromptSys_hWnd,ps[0])
ClientToScreen(_PromptSys_hWnd,ps[1])
crc.left=ps[0].x:crc.top=ps[0].y
crc.right=ps[1].x:crc.bottom=ps[1].y
ps[0].x = (crc.left-wrc.left) + (wrc.right-crc.right)+w
ps[0].y = (wrc.bottom -crc.bottom) + (crc.top-wrc.top)+h
SetWindowPos(_PromptSys_hWnd,0,0,0,ps[0].x, ps[0].y, SWP_NOMOVE)
End Sub
ループによるウェイトは速度の問題から使えません。
Sleep()で対処するか、
Time$を使うなどして下さい。
Sub WAIT()
Dim i$ As String
Dim j$ As String
i$=Time$():j$=Time$()
While i$=j$
j$=Time$()
Wend
End Sub
○=ABに存在し互換性がある
△=ABに存在するが利用に注意が必要
×=ABに存在しない
○ |
ABS |
○ |
ASC |
○ |
ATN |
× |
ATTR$ |
× |
AUTO |
△ |
BEEP |
× |
BLOAD |
× |
BSAVE |
× |
CALL |
○ |
CDBL |
× |
CHAIN |
○ |
CHR$ |
○ |
CINT |
△ |
CIRCLE |
× |
CLEAR |
○ |
CLOSE |
△ |
CLS |
× |
COLOR |
× |
COMMON |
× |
CONSOLE |
× |
CONT |
× |
COPY |
○ |
COS |
○ |
CSNG |
× |
CSRLIN |
× |
CVD |
× |
CVI |
× |
CVS |
× |
DATA |
△ |
DATE$ |
△ |
DEF FN |
× |
DEF USR |
× |
DEFDBL |
× |
DEFINT |
× |
DEFSNG |
× |
DEFSTR |
× |
DELETE |
△ |
DIM |
× |
DSKF |
× |
DSKI$ |
× |
DSKO$ |
× |
EDIT |
○ |
END |
○ |
EOF |
× |
ERASE |
× |
ERL |
× |
ERR |
× |
ERROR |
○ |
EXP |
△ |
FIELD |
× |
FILES |
○ |
FIX |
× |
FN |
○ |
FOR~NEXT |
× |
FORMAT |
× |
FPOS |
× |
FRE |
△ |
GET |
× |
GET@ |
○ |
GOSUB |
○ |
GOTO |
× |
HELP ON/OFF/STOP |
○ |
HEX$ |
○ |
IF~THEN~ELSE |
△ |
INKEY$ |
× |
INP |
△ |
INPUT |
△ |
INPUT$ |
△ |
INPUT# |
○ |
INSTR |
○ |
INT |
× |
KEY |
× |
KEY LIST |
× |
KEY ON/OFF/STOP |
○ |
KILL |
○ |
LEFT$ |
○ |
LEN |
○ |
LET |
× |
LFILES |
△ |
LINE |
× |
LINE INPUT |
× |
LINE INPUT# |
× |
LIST |
× |
LLIST |
× |
LOAD |
○ |
LOC |
○ |
LOCATE |
○ |
LOF |
○ |
LOG |
× |
LPOS |
× |
LPRINT |
× |
LSET |
× |
MERGE |
△ |
MID$ |
× |
MKD$ |
× |
MKI$ |
× |
MKS$ |
× |
MON |
× |
MOTOR |
× |
NAME |
× |
NEW |
× |
NEW ON |
○ |
OCT$ |
× |
ON ERROR GOTO |
× |
ON HELP GOSUB |
× |
ON KEY GOSUB |
× |
ON STOP GOSUB |
× |
ON TIME$ GOSUB |
× |
ON~GOSUB |
× |
ON~GOTO |
△ |
OPEN |
× |
OPTION BASE |
× |
OUT |
× |
PAINT |
× |
PEEK |
× |
POINT |
× |
POKE |
× |
POS(0) |
× |
PRESET |
△ |
PRINT |
○ |
PSET |
△ |
PUT |
× |
PUT@ |
△ |
RANDOMIZE |
× |
READ |
○ |
REM |
× |
RENUM |
× |
RESTORE |
× |
RESUME |
○ |
RETURN |
○ |
RIGHT$ |
○ |
RND |
× |
ROLL |
× |
RSET |
× |
RUN |
× |
SAVE |
× |
SCREEN |
× |
SEARCH |
× |
SET |
○ |
SGN |
○ |
SIN |
○ |
SPACE$ |
○ |
SQR |
× |
STOP |
× |
STOP ON/OFF/STOP |
○ |
STR$ |
○ |
STRING$ |
× |
SWAP |
○ |
TAN |
○ |
TIME$ |
× |
TIME$ ON/OFF/STOP |
× |
TROFF |
× |
TRON |
○ |
VAL |
× |
VIEW |
× |
WAIT |
○ |
WHILE~WEND |
× |
WIDTH |
× |
WIDTH PRINT |
× |
WINDOW |
△ |
WRITE |
最終更新:2010年07月20日 00:02