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のプログラムを移植するときは苦労します。

  • 画面サイズの変更

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