Altair 8800 simulatorの使い方メモ


Windowsで、CP/M2.2をシミュレートする方法を中心に書いています。
分からない所は、消し去ったり、自分の思いでこうだったら良いのにと都合のよいように適当に勝手に翻訳+解説しています。
自分のメモ程度のものなので覚悟して読んでくださいね。間違いなどご指摘ありましたら修正しますので教えてね。


1.概要
Altair 8800 simulator は、シミュレータSIMH上で動作する仮想マイコンです。
現在のバージョンは 3.7-3 です。
SIMHは、汎用を持たせた、いろんなシミュレータを動かすための土台となるもです。
Altair 8800 simulatorシミュレータは、Peter Schorn さんによるものです。

昔、活躍した実際の MITS Altair 8800 と比較すると以下の特徴があります。
8080 CPU, Z80 CPU または 8086 CPU のCPUの選択が可能
オプションでバンクメモリを持つ (64Kバイトを16バンク) 
ROM と メモリマップド I/O は、MMUをサポート
記憶容量を増やすためハードドライブを追加している
クライアント/サバーシステムのための、TCP/IPネットワーク
4つ以上のコンソールをサポート
タイマとキーボード割り込みを生成
Northstar、Vector Graphic、CompuPro のいろいろなデバイスに対応
リアルタイムなクロックスピード能力 (ゲーム用途のため) 

2.準備(windows)
http://www.schorn.ch/cpm/intro.php の一番上の表の一番上の行(下図の赤丸)
PC Download Download the simulator with documentation and CP/M 2.2.


simulator をクリックして、altairz80.zipをダウンロードします。 CP/M 2.2. をクリックして、cpm2.zipをダウンロードします。 それぞれを解凍して、 altairz80.exe 本体 CPM2.DSK ディスクイメージ cpm2 コマンドファイル これらのファイルを一つのフォルダに格納します。 3.使い方 altairz80.exe をダブルクリックで起動します。 メッセージとプロンプトが表示されるので、DO CPM2とキーで入力します。 (詳細は、以下参照)
do コマンドは、バッチファイルのようなものです。 単独でCP/Mをブートするためには以下のようにタイプします。 sim> attach dsk cpm2.dsk sim> boot dsk 4.cpm2.dskの内容一覧 ASM .COM 8K CP/M assembler BDOS .MAC 66K Basic Disk Operating System assembler source code BOOT .COM 2K transfer control to boot ROM BOOT .MAC 2K source for BOOT.COM BOOTGEN .COM 2K put a program on the boot sectors CBIOSX .MAC 48K CP/M 2 BIOS source for Altair CCP .MAC 26K Console Command Processor assembler source code, original Digital Research CCPZ .MAC 50K Console Command Processor assembler source code, Z80 replacement with some extra features CCPZ .TXT 40K documentation for CCPZ CFGCCP .LIB 2K configuration file for system generation, original CCP CFGCCPZ .LIB 2K configuration file for system generation, with CCPZ COPY .COM 2K copy disks CPU .COM 2K get and set the CPU type (8080 or Z80) CPU .MAC 2K source for CPU.COM CREF80 .COM 4K cross reference utility DDT .COM 6K 8080 debugger DDTZ .COM 10K Z80 debugger DIF .COM 4K determine differences between two files DO .COM 4K batch processing with SuperSub (SUBMIT.COM replacement) DSKBOOT .MAC 8K source for boot ROM DUMP .COM 2K hex dump a file ED .COM 8K line editor ELIZA .BAS 10K Eliza game in Basic EX .MAC 48K source for EX8080.COM, EXZ80DOC.COM, EXZ80ALL.COM EX .SUB 2K benchmark execution of EX8080.COM,EXZ80DOC.COM,EXZ80ALL.COM EX8080 .COM 12K exercise 8080 instruction set EXZ80ALL .COM 12K exercise Z80 instruction set, undefined status bits taken into account EXZ80DOC .COM 12K exercise Z80 instruction set, no undefined status bits taken into account FORMAT .COM 2K format disks GO .COM 0K start the currently loaded program at 100H HALT .COM 2K execute the HALT operation for returning to the sim> command prompt ?useful as the last command in a script HDSKBOOT .MAC 6K boot code for hard disk L80 .COM 12K Microsoft linker LADDER .COM 40K game LADDER .DAT 2K high score file for LADDER.COM LIB80 .COM 6K library utility LOAD .COM 2K load hex files LS .COM 4K directory utility LU .COM 20K library utility M80 .COM 20K Microsoft macro assembler MBASIC .COM 24K Microsoft Basic interpreter MC .SUB 2K assemble and link an assembler program MCC .SUB 2K read, assemble and link an assembler program MCCL .SUB 2K assemble, link and produce listing MOVER .MAC 2K moves operating system in place OTHELLO .COM 12K Othello (Reversi) game PIP .COM 8K Peripheral Interchange Program PRELIM .COM 2K preliminary CPU tests PRELIM .MAC 6K source code for PRELIM.COM R .COM 4K read files from SIMH environment. Supports wild card expansion on UNIX and Windows for reading multiple files. RSETSIMH .COM 2K reset SIMH interface RSETSIMH .MAC 2K assembler source for RSETSIMH.COM SHOWSEC .COM 2K show sectors on a disk SID .COM 8K debugger for 8080 SPEED .COM 2K utility to measure the clock speed of the simulated CPU STAT .COM 6K provide information about currently logged disks SUBMIT .COM 2K batch processing SURVEY .COM 2K system survey SURVEY .MAC 16K assembler source for SURVEY.COM SYSCOPY .COM 2K copy system tracks between disks SYSCPM2 .SUB 2K create CP/M 2 on drive A:, Digital Research CCP and BDOS SYSCPM2Z .SUB 2K Create CP/M 2 on drive A:, CCPZ and Digital Research BDOS TIMER .COM 2K perform various timer operations TIMER .MAC 2K source code for TIMER.COM UNCR .COM 8K un-crunch utility UNERA .COM 2K un-erase a file UNERA .MAC 16K source for UNERA.COM USQ .COM 2K un-squeeze utility W .COM 2K write files to SIMH environment. Supports CP/M wild card expansion for writing multiple files. WM .COM 12K word master screen editor WM .HLP 4K help file for WM.COM WORM .COM 4K worm game for VT100 terminal XFORMAT .COM 2K initialize a drive (floppy or hard disk) XSUB .COM 2K support for DO.COM ZAP .COM 10K SuperZap 5.2 disk editor configured for VT100 ZSID .COM 10K debugger for Z80 ZTRAN4 .COM 4K translate 8080 mnemonics into Z80 equivalents 5.イメージファイルの操作 Windowsとファイルのやり取りをする唯一の方法です。 R,Wコマンド共にCP/Mから操作します。 Rコマンド Windowsにあるファイルを、CP/Mイメージディスク内にコピーします。 A>R FOO.EXT CP/Mで R FOO.EXT を実行すると、カレントディレクトリ(altairz80.exeがあるディレクトリ)にあるfoo.extというファイルをCP/Mディスクイメージにコピーすることができます。 Wコマンド CP/Mイメージディスク内のファイルをWindowsにコピーします。 テキストファイルの場合は A>W filename.ext バイナリファイルの場合は、Bオプションを付けて A>W filename.ext B 複数のファイルを移す最も単純な方法は、R,Wを含む「.SUB」バッチファイルを作成することです。 より多くの収納場所を必要とするならば、ドライブI,Jでシミュレーションされたハードディスクを使うことができます 使用方法 HDSK0 hdi.dsk XFORMAT I: XFORMAT J: 空の状態にディスクを初期化します。 6.イメージファイルのフォーマット スキューがあります。以下はcbiosの抜粋です。 dirent equ 255 ; number of directory entries restrk equ 6 ; reserved tracks dsm06 equ 1efh ; maximum data block number for disks 0 to 6 dsm07 equ 254 ; maximum data block number for disk 7 spt equ 32 ; sectors per track sptmask equ spt-1 ; mask corresponding to 'spt' cks equ (dirent+1)/4 cr equ 13 ; Carriage Return lf equ 10 ; Line Feed ; ; diskette drives ; dpbase equ $ dw atrans,0,0,0,dirbf,mits2,chk00,all00 dw atrans,0,0,0,dirbf,mits2,chk01,all01 dw atrans,0,0,0,dirbf,mits2,chk02,all02 dw atrans,0,0,0,dirbf,mits2,chk03,all03 dw atrans,0,0,0,dirbf,mits2,chk04,all04 dw atrans,0,0,0,dirbf,mits2,chk05,all05 dw atrans,0,0,0,dirbf,mits2,chk06,all06 dw atrans,0,0,0,dirbf,mits, chk07,all07 ; speedball (copylib) skewtable atrans: db 01,18,03,20,05,22,07,24 db 09,26,11,28,13,30,15,32 db 17,02,19,04,21,06,23,08 db 25,10,27,12,29,14,31,16 ; copylib (default) format mits: dw spt ; spt, sectors per track db 3 ; allocation block shift factor, bsh db 7 ; data allocation block mask, blm, allocation size (bls) = 1024 db 0 ; extent mask dw dsm07 ; dsm, maximum data block number dw dirent ; drm, number of directory entries - 1 db 0ffh,0 ; al0, al1, 8 blocks reserved to hold all entries ; 256 * 32 = 8 * 1024 ; (drm+1) * 32 = (number of bits in al0 and al1) * bls dw cks ; cks = (drm + 1)/4 dw restrk ; off, number of tracks skipped at beginning of disk db 0 ; PSH db 0 ; PHM mits2: dw spt ; spt, sectors per track db 4 ; allocation block shift factor, bsh db 15 ; data allocation block mask, blm, allocation size (bls) = 2048 db 0 ; extent mask dw dsm06 ; dsm, maximum data block number dw dirent ; drm, number of directory entries - 1 db 0f0h,0 ; al0, al1, 4 blocks reserved to hold all entries ; 256 * 32 = 4 * 2048 ; (drm+1) * 32 = (number of bits in al0 and al1) * bls dw cks ; cks = (drm + 1)/4 dw restrk ; off, number of tracks skipped at beginning of disk db 0 ; PSH db 0 ; PHM 7.VT100を必要とするプログラムの使い方 ワードマスタ(WM.COM)などのカーソル制御をともなうアプリの使い方です。 おすすめの方法は、VT100を次のように使います。 1)いつものように、CP/Mをブートします。 2)^E (Control E) を押し、シミュレータをストップします。 3)"ATTACH SIO 23"とタイプし"リターン"を押す。 (23は、デフォルトで Telnetのポートです。このポートにソケットを作成する権限が必要です。   権限がなければ、シミュレータを "root" または、sudo command または、他のポートを使用しなければいけません) 4)"GO"とキー入力し"リターン"を押す。 5)Telnet開始 6)Telnet 127.0.0.1 に接続する。 (もし、ポート23から違ったポートを使用するなら、3)で選択した特別なポートを使う) これで、VT100 エミュレーションをサポートしたTelnetターミナルウインドで、すべてのコマンドを実行できます。 ワードスターを使用したくて、上を試したのですが、この説明(訳)では、うまくTelnetを起動することができなかったです。 だれか、図解で説明してくれないかな。 2011.12.31 糠を足せ(仮)! mosakuさんから動くよとのこと、もう一度、丁寧に操作したら、ターミナルの操作を誤っていたことに気がつきました。 Telnetの接続
ワードスターの実行