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 へ戻る