Hello World あたたたた N88-BASIC編
この記事は Hello World あたたたた Advent Calendar 2025 の記事です。
今日はN88-BASICで Hello World あたたたた を実装して解説していきます。
そもそも「Hello World あたたたた」が何かは 1日目の記事 をご覧ください。
そもそもN88-BASICの概要と歴史
N88-BASICは、1980年代から1990年代にかけて日本のパソコンで広く使われたBASIC言語です。
NECのPC-8800シリーズで標準搭載されていたことから「N88-BASIC」と呼ばれ、多くの日本のプログラマーがこの言語でプログラミングを学びました。
私が中学生の時に、コンピュータ室にあったのはPC-9801VMで、ROM BASICが入っていて遊んでいたんじゃなかったかなあと思います。最初に触った言語です。
N88-BASICの特徴
- 行番号が必須: 各行に10、20、30...のような行番号が必要
- 1行完結のIF文: IF文は1行で完結する必要があり、複数行に分けられない
-
文字列変数は
$サフィックス: 文字列変数は変数名の末尾に$を付ける - GOTO文の多用: 構造化プログラミングの制約から、GOTO文を使った制御が一般的
- 日本語文字列の扱い: 日本語(全角文字)を文字列として扱える
- シンプルな構文: 初心者にも理解しやすいシンプルな構文
N88-BASICの歴史
- 開発: NEC(日本電気)
- 誕生: 1980年代前半(PC-8800シリーズとともに)
- 影響: 日本のパソコン文化に大きな影響を与えた
- 現在: Windows版の互換環境が存在し、レトロプログラミングとして楽しめる
実行環境
この記事では、N88互換BASIC for Windows95 を使用しました。
コーディング例
10 CLS
20 HAKO$ = ""
30 RUNNING = 1
40 WHILE RUNNING = 1
50 R = INT(RND(1) * 2)
60 IF R = 0 THEN CHAR$ = "あ" ELSE CHAR$ = "た"
70 PRINT CHAR$;
80 HAKO$ = HAKO$ + CHAR$
90 IF LEN(HAKO$) >= 5 AND RIGHT$(HAKO$, 5) = "あたたたた" THEN PRINT "" : PRINT "お前はもう死んでいる" : RUNNING = 0
100 WEND
110 END
コードと文法の解説
画面のクリア(CLS)
プログラム開始時に画面をクリアする。
10 CLS
-
CLSは画面をクリアするコマンド - 実行時に前回の出力が残らないようにする
変数の宣言・代入
N88-BASICでは変数名の末尾に $ を付けると文字列変数になる。
20 HAKO$ = ""
30 RUNNING = 1
-
=は代入(右の値を左の変数に入れる) - 文字列変数は
$で終わる(例:HAKO$、CHAR$) - 数値変数は
$なし(例:RUNNING、R) - 空文字列は
""で表す -
1は真(true)を表す(0が偽)
繰り返し(WHILE-WEND)
条件が真(1)の間ずっと処理を続ける。
40 WHILE RUNNING = 1
' 繰り返したい処理
100 WEND
-
RUNNING = 1の間、ループを続ける -
RUNNING = 0になるとループを抜ける -
WENDでループの終わりを表す
乱数生成(RND)
N88-BASICでは RND 関数で乱数を生成する。
50 R = INT(RND(1) * 2)
-
RND(1)は 0以上1未満の乱数を返す -
RND(1) * 2で 0以上2未満の乱数 -
INT()で整数に変換して 0 または 1 を得る
条件判定(IF-THEN-ELSE)
N88-BASICのIF文は1行で完結する必要がある。
60 IF R = 0 THEN CHAR$ = "あ" ELSE CHAR$ = "た"
-
==ではなく=で等しいかどうかを判定 -
THENの後に真の場合の処理 -
ELSEの後に偽の場合の処理 - 複数の処理を1行で書く場合はコロン(
:)で区切る - N88-BASICでは複数行に分けたIF文は使えない
文字の出力(PRINT)
N88-BASICの PRINT はデフォルトで改行するが、セミコロン(;)を付けると改行しない。
70 PRINT CHAR$;
-
PRINT CHAR$;のセミコロンで改行を抑制。文字が横に並んで出力される
文字列の連結
N88-BASICの文字列は + でつなげられる。
80 HAKO$ = HAKO$ + CHAR$
- 前の文字列に後ろの文字を追加する
文字列から最後の5文字を取り出す(RIGHT$)
N88-BASICでは RIGHT$ 関数で文字列の右側(末尾)を取り出せる。
90 IF LEN(HAKO$) >= 10 AND RIGHT$(HAKO$, 10) = "あたたたた" THEN PRINT "" : PRINT "お前はもう死んでいる" : RUNNING = 0
-
LEN(HAKO$)で文字列の長さを取得- 全角1文字が2バイトで扱われているので、全角5文字は10バイトになる
- 文字列が5文字未満の場合はチェックをスキップ
-
RIGHT$(HAKO$, 10)で最後の5文字を取得 -
RIGHT$(文字列, 文字数)の形式 - 複数の処理を1行で書く場合はコロン(
:)で区切る -
PRINT ""で改行を実行
プログラムの終了(END)
プログラムの終了を明示する。
110 END
-
ENDでプログラムを終了する
個人的なコメント
N88-BASICは、現代のプログラミング言語と比べると制約が多いですが、そのシンプルさが魅力です。
行番号による制御や1行完結のIF文は、現代のプログラマーには新鮮に感じられるかもしれません。
ぱっと思いついたから、AI書いてくれるかなあと思ったら書いてくれるし、エミュレータ環境はあるしで、うれしくなったから書きました。