MBASIC
MBASICには以下のデータ型があった。
8ビット 文字列データ。文字列長は0から255文字。
16ビット 整数
32ビット 浮動小数点数(単精度)
64ビット 浮動小数点数(倍精度)
文字列演算子には、部分文字列の選択、連結、代入、文字列が等しいかどうかのテストなどがある。
上記のデータ型の配列は7次元まで使用できる。関数や演算子は配列では動作しない。例えば、配列の代入はできない。当時の他のBASICの実装とは異なり、MBASICは行列演算、複素数、金融計算用の十進数(BCD)データ型に対応していない。典型的なCP/Mシステムには浮動小数点演算ハードウェアがなかったため、浮動小数点演算は全てソフトウェアで行われた。内蔵の数学関数(三角関数、対数、指数、平方根)は単精度の結果しか得られなかった。ソフトウェアによる疑似乱数発生器が提供されていた。これは、ユーザが入力したシード値から、ゲームやシミュレーションに有用な数列を得るものである。MBASICには代入文のための LET キーワードがあったが、なくても代入できた。
マイクロコンピュータにおけるのBASICの初期のバージョンでは、1文字または2文字の変数名しか使用できず、複雑なプログラムでは変数の意味を思い出すのが困難となった。MBASICバージョン5では、40文字までの識別子を使用できるようになり、プログラマは変数に読みやすい名前を付けることができるようになった。
MBASIC バージョン5では、最低28 kB のRAMと最低1台のディスクドライブを備えたCP/Mシステムが必要だった。
ホームコンピュータメーカーがそのコンピュータ固有のハードウェア機能を使用するためにカスタマイズしたMicrosoft BASIC-80とは異なり、MBASICは全ての入出力をCP/Mのシステムコールのみに依存していた。使用可能なのはCP/Mのコンソール(スクリーンとキーボード)、ラインプリンタ、ディスクデバイスのみだった。
カスタマイズされていない状態のMBASICには、グラフィックス、カラー、ジョイスティック、マウス、シリアル通信、ネットワーク、サウンド、リアルタイムクロックなどの機能はなかった。MBASICはホストのCP/Mの機能に完全には対応していなかった。例えば、フロッピーディスク上のファイルを整理するためのCP/Mのユーザ領域に対応していなかった。CP/Mシステムは一般的にシングルユーザでスタンドアローンであったため、ファイルやレコードのロックや、いかなる形態のマルチタスクにも対応していなかった。これらの制限を除けば、MBASICは、当時、BASICの強力で有用な実装であると考えられていた。
1970年代後半から1980年代前半の8ビットコンピュータのBASICについての議論は、メモリへの直接読み書きのためのPEEKとPOKEの重要性への言及が不可欠である。これらのシステムには通常、メモリ保護機能がなかったため、プログラマはOSの一部の通常の方法では利用できない機能にアクセスすることができた。これにより、ユーザプログラムによってシステムがハングアップする可能性も高くなった。例えば、CP/Mプログラマは、(システムBIOSが対応していれば)BASIC がコンソールデバイスをシリアルポートに切り替えるために POKE 関数を使用した。リアルタイムクロックを持つマシンでは、時刻を取得するためにPEEK命令を使用していた。
より複雑な操作のために、MBASICはBASICプログラムから呼び出すことができるユーザ定義の関数を仕様できるようにした。これは通常メモリの予約領域に配置されたり、一連の機械語コード(オペコード)として文字列定数にPOKEされたりする。また、MBASICには、8080のハードウェア入出力ポートに直接読み書きするINP命令とOUT命令もある。少なくともOsborne 1では、全てのI/O命令はシステムで使用するためにプリエンプションされていたが、この命令は周辺機器を制御するために使用することができる。
PEEKやPOKE、機械語のユーザ関数を利用したMBASICプログラムは、そのままでは異なる機種間の移植性がなかった。