PET20001
PET2001のスペック
CPU | 6502 1MHz |
SOUND | なし(オプション) |
ROM | モデルによる |
RAM | モデルによる |
バージョン
まずバージョンナンバが表示されないので厳密にはわかりませんが
特定の基準で付けられているようです
その為4.0マシンより後発のVIC、C64は2.0(V2)となります
また少なくとも日本でも2.0と3.0には数種類あったみたいです
PET2001Sは主に熱対策とメンテナス効率化されたカスタム品なので
考慮していません
1.0 最初期?
2.0 標準?(PET2001、VIC−1001、C64)
3.0 +マシン語モニタ内蔵等?(cbm3016、3032)
4.0 +ディスクコマンド追加等?(CBM4032、8032)
電源を入れると
“*** COMMODORE BASIC ***”とでるのが
旧バージョン(Ver. 2.0)
“### COMMODORE BASIC ###”とでるのが
新バージョン(Ver. 3.0)
“*** COMMODORE BASIC 4.0 ***”が
Ver. 4.0となります
cbm3032が発売された当時
2万8千円で購入かcbm3040(ディスクドライブ)を購入すると
無料交換でVer. 3.0のROM交換が可能
さらに一番古いバージョンはキャラクタROMも違いがあり
VRAMを直接読むプログラムは誤動作する可能性があります
その為見た目でバージョンの判断は不可能といえます
またVer. 3.0ではダイレクトコマンドで
WAIT6502,1(1以外でも可)
と打ち込むと“MICROSOFT!”の文字が
指定した数値分出ます
(0は画面一杯に表示される)
Ver.2.0のバグ
配列の大きさが256超えるとループする
(例 A(260)はA(4)と同じになる)
RIGHT$(X$,0)、LEFT$(X$,0)の場合
パラメータを0にするとエラーになる(新バージョンでは””で長さ0で返す)
バグではないのですがBASIC部分のPEEKが使えない(新バージョンでは使えます)
RND(0)がほとんど乱数として使えない
(Ver. 3.0はタイマを使用した乱数となっている)
IF E=F OR G=H...がIF E=FOR G=H...として認識される
(リストはスペースは空いている)
SPC(0)がSPC(256)と同じになる
TABやPOSで画面表示範囲外の指定だと正常に動作しない
2.0の主なワーク(10進数)
0000−0002:USR関数 $4C,mm,nn
0003:使用中のI/Oアドレス
0008−0009:BASIC行番号
0010−0089:インプットバッファ
0090:カウンタ
0091:$00、$22
0092:インプット・バッファの長さ
0093:配列フラグ(1文字目の文字)
0094:変数タイプ 1=ストリング、0=数値
0095:整変数フラグ 128=整数型、0=実数型
0098:入力の種類 152=READ,64=GET、0=INPUT
0099:TANの符号
0102−0103:ストリング用ワークエリア
0104−0111:変数ポインタ
0116−0121:引数レジスタ
0122−0123:BASICプログラムの先頭
0124−0125:変数エリアの先頭
0126−0127:配列エリアの先頭
0128−0129:変数または配列エリアの最後
0130−0131:ストリングエリアの先頭
0132−0133:1つ前のストリングエリアの先頭
0134−0135:RAMエリアの最後+1
0136−0137:実行中のBASIC行番号
0138−0139:コンティニュー用行番号
0140−0141:コンティニュー用ポインタ
0146−0147:入力用ポインタ
0148−0149:使用中変数名
0150−0151:使用中変数ポインタ
0159−0160:ストリング用ポインタ
0161:ストリングの長さ
0156−0158:関数用 $4C,mm,nn
0172−0173:ブロック転送用ポインタ0
0174−0175:ブロック転送用ポインタ1
0176−0181:実数レジスタ0
0182:実数レジスタ0の符号
0183:実数レジスタ0のシフトカウンタ
0184−0189:実数レジスタ1
0190:オーバーフロー
0191:符号のコピー
0192−0193:実数ストリング変換ポインタ
0194−0202:0194が次の文字、0200がポインタの指す内容
0218−0222:RND
0224−0225:カーソルのある行のポインタ
0226:カーソルの位置
0234:’”’モード
0238:ファイル名の長さ
0239:倫理機番
0240:ファイルセカンド アドレス
0241:物理機番
0242:1行の文字数
0243−0244:テープバッファの先頭
0245:カーソルのある行(画面)
0246:最後に押されたキー
0247−0248:ロード、セーブ用ポインタ
0249−0250:ファイル名ポインタ
0251:インサート用カウンタ
0256−0511:スタックエリア
0512−0514:TI(タイマー)
0515:キーストローク
0516:シフトキー 1=オン
0517−0518:TI補正用カウンタ
0519−0520:カセット用インタラプト
0521:PIAの内容
0523:1=ベリファイ、0=ロード
0524:STの値
0525:キーバッファの文字数
0526:RVS 1=オン、0=オフ
0527−0536:キーバッファ
0537−0538:IRQ ベクタ
0539−0540:BRK ベクタ
0547:キーコード
0548:カーソルの点滅 0=オン
0549:カーソル用カウンタ
0550:カーソルにある文字
0551:カーソルの点滅
0578−0587:倫理機番表
0588−0597:物理機番表
0598−0609:セカンドアドレス表
0610:ファイル数
0611:システム入力 0=キーボード
0612:システム出力 3=画面
0613:テープ パリティ
0621:テープブロック
0624:テープカウンタ(WRITE)
0625:テープバッファ#1
0626:テープバッファ#2
0627:テープカウンタ(READ)
0628−0629:テープエラー用
0630−0631:テープエラーポインタ
0632:テープフラグ(READ)
0633:チェックサム
0634−0825:テープバッファ#1
0826−1017:テープバッファ#2
1018−1023:空き
32768−33767:VRAM
59408−59411:6520(PIA キーボード)
59424−59427:6520(PIA IEEE-488)
59456−59471:6522(VIA)
PCG6500
キャラクタ定義数 64(小文字$40〜$7Fのキャラクタ)
サウンド出力 PB2をアンプ出力
POKE59468,14でPCGのオン(小文字モード)
POKE59468,12でPCGのオフ
PAの8ビットでコントロール($E84F)
PA7〜PA5 コントロール
PA4 オフセットアドレスa4
PA3〜PA0 PCGデータ上位、下位、オフセットアドレスa8〜a5、オフセットアドレスa3〜a0
1ライン分の定義方法(事前にDDRA $E843に$FFを書き込む)
1.PA7〜4=1100+PCGデータd7〜4をPAに書き込み
PA7〜4=0000+PCGデータd7〜4をPAに書き込む
2.PA7〜4=1000+PCGデータd3〜0をPAに書き込み
PA7〜4=0000+PCGデータd3〜0をPAに書き込む
3.PA7〜4=0100+オフセットアドレスa8〜5をPAに書き込み
PA7〜4=0000+オフセットアドレスa8〜5をPAに書き込む
4.PA7〜4=001+オフセットアドレスa4〜0をPAに書き込み
PA7〜4=000+オフセットアドレスa4〜0をPAに書き込む
CGアドレス$0200〜$03FF+オフセットアドレス
Home へ戻る