「N88BASICとの互換性」の編集履歴(バックアップ)一覧はこちら
「N88BASICとの互換性」(2010/07/20 (火) 00:02:47) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
N88BASIC互換性について
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のプログラムを移植するときは苦労します。
-画面サイズの変更
#asciiart(blockquote){
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$を使うなどして下さい。
#asciiart(blockquote){
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|
N88BASIC互換性について
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のプログラムを移植するときは苦労します。
-画面サイズの変更
#asciiart(blockquote){
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$を使うなどして下さい。
#asciiart(blockquote){
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|