「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|

表示オプション

横に並べて表示:
変化行の前後のみ表示: