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