復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第442回]
●COPYの不具合がクリアできました
前回からの続きです。
前回でも説明しましたが、ZB3DOSのファイルシステムでは、1つのファイルディレクトリでは16KBのデータしか管理できません。
16KBを越えるファイルの場合には同じファイル名のディレクトリが複数作られて、エクステント番号でそれが管理されます。
ファイルをコピーする方法は一通りではありませんが、ZB3DOSではコピー元から1セクタ分(128バイト)をDMAバッファに読み込んで、次にそれをコピー先のディスクにセーブすることを繰り返すという方法で行なっています。
書き込み側では、16KBを越えるところで、新しいディレクトリを作成してエクステントb+1します。
このときは当然ディレクトリバッファにディレクトリデータを読み込んで、新しいディレクトリを作成するという作業が必要となります。
このときDMAバッファアドレスがデフォルトのDMAバッファ(0080H)から、DIRバッファのアドレスに切り換えられるのですが、そのあとうっかりして、DMAバッファアドレスをもとのデフォルトのDMAバッファ(0080H)に戻すことを忘れてしまっていたため、データコピーが16KBを越えた時点からあとのデータが正しくコピーされなくなっていました。
このバグを修正したあとも、さらに別のバグなどがあって、再々修正をしたりしたのですが、最終的にH様からは「今までのおかしかったところは全てクリアできました」というメールをいただきました。
やっとこれで基本的には互換性についての不具合は解消できたようです。
しかし実は現在も、あと少しH様からご指摘いただいた点について検討中のところがありますので、再修正版の配布につきましては、今しばらくお待ちくださいませ。
●BASCOMとCB80
H様からは、上記のCOPYコマンドでの不具合が解消されたというご報告とともに以下の内容のメールをいただきました(一部説明のため加筆しました)。
「BASCOM」と「CB80」が正常に稼動しましたので報告しておきます。
BASCOMはTURBO PASCALと同じホームページ(http://www.retroarchive.org/cpm/lang/lang.htm)からダウンロードできます。
BASCOM53.ZIPとBASCOM.ZIPの二件が登録されていましたが、BASCOM.ZIPの方が動きました。ずっと下の方にあります。
CB80は、
http://www.cpm.z80.de/binary.html
からダウンロードできます。CB80 V2.0の方です。
BASCOMとCB80の使用方法は、共にTURBO PASCAlの説明と同じホームページ(http://ldlabo.gozaru.jp/)にあります。
リンク先のページの右側に各言語の説明へのリンクがあります。
ということで、双方の稼動ログも添付していただきました。
こちらがBASCOMです。
logfile nd80zlog\07141311.txt open ND80ZVに接続しました 0001 0000 - z 1000 00C3 - *** nd80z3 basic **** >/cpm loading zbds4k.bin ...19c1(6593)bytes loaded,from CC00 to E5C0 drive D ................................ drive C ................................ drive B ................................ drive A ................................ A>dir z: Z: BASCOM COM : BASCOM HLP : BASCOM2 HLP : BASLIB REL Z: BCLOAD : BRUN COM : CREF COM : CREF80 COM Z: D COM : L80 COM : LIB80 COM : M80 COM Z: MBASIC COM : OBSLIB REL : RANTEST ASC : RANTEST BAS Z: RANTEST COM : RANTEST REL : SAMPLE BAS : SAMPLE COM Z: SAMPLE REL A>era d:*.* A>copy z:*.* d: BASCOM COM to BASCOM COM................................................................................................................................................................................................................................................................. done BASCOM HLP to BASCOM HLP...................................................................................................................... done BASCOM2 HLP to BASCOM2 HLP...................................................................................................................................................................................................................................... done BASLIB REL to BASLIB REL.................................................................................................................................................................................................... done BCLOAD to BCLOAD .. done BRUN COM to BRUN COM.......................................................................................................................... done CREF COM to CREF COM................................ done CREF80 COM to CREF80 COM................................ done D COM to D COM............... done L80 COM to L80 COM..................................................................................... done LIB80 COM to LIB80 COM...................................... done M80 COM to M80 COM.............................................................................................................................................................. done MBASIC COM to MBASIC COM............................................................................................................................................................................................... done OBSLIB REL to OBSLIB REL........................................................................................................................................................................................................................................................................................................................................................................................... done RANTEST ASC to RANTEST ASC...... done RANTEST BAS to RANTEST BAS.... done RANTEST COM to RANTEST COM............ done RANTEST REL to RANTEST REL...... done SAMPLE BAS to SAMPLE BAS.. done SAMPLE COM to SAMPLE COM...... done SAMPLE REL to SAMPLE REL... done A>d: D>dir D: BASCOM COM : BASCOM HLP : BASCOM2 HLP : BASLIB REL D: BCLOAD : BRUN COM : CREF COM : CREF80 COM D: D COM : L80 COM : LIB80 COM : M80 COM D: MBASIC COM : OBSLIB REL : RANTEST ASC : RANTEST BAS D: RANTEST COM : RANTEST REL : SAMPLE BAS : SAMPLE COM D: SAMPLE REL D>sample This is an example of BASIC-80 D>bascom sample,sample=sample/o 00000 Fatal Error(s) 21105 Bytes Free D>l80 sample,sample/n/e Link-80 3.44 09-Dec-81 Copyright (c) 1981 Microsoft Data 0103 2327 < 8740> 30923 Bytes Free [0114 2327 35] D>era sample.com D>l80 sample,sample/n/e Link-80 3.44 09-Dec-81 Copyright (c) 1981 Microsoft Data 0103 2327 < 8740> 30923 Bytes Free [0114 2327 35] D>sample This is an example of BASIC-80 D>dir D: BASCOM COM : BASCOM HLP : BASCOM2 HLP : BASLIB REL D: BCLOAD : BRUN COM : CREF COM : CREF80 COM D: D COM : L80 COM : LIB80 COM : M80 COM D: MBASIC COM : OBSLIB REL : RANTEST ASC : RANTEST BAS D: RANTEST COM : RANTEST REL : SAMPLE BAS : SAMPLE COM D: SAMPLE REL : SAMPLE PRN D>/exit > 0000 00C3 - リモート接続を終了しました logfile closed at Sun Jul 14 13:45:31 2013 |
logfile nd80zlog\07142035.txt open ND80ZVに接続しました 0001 0000 - z 1000 00C3 - *** nd80z3 basic **** >/cpm loading zbds4k.bin ...19c1(6593)bytes loaded,from CC00 to E5C0 drive D ................................ drive C ................................ drive B ................................ drive A ................................ A>copy z:sample.bas d: SAMPLE BAS to SAMPLE BAS...... done A>d: D>cb80 sample[s] ------------------------------------------------- CBASIC Compiler CB-80 21 May 83 Version 2.0 Serial No. ACB-0000-000072 All rights reserved Copyright (c) 1982, 1983 Digital Research, Inc. ------------------------------------------------- end of pass 1 end of pass 2 1: 005ch \ CB80 sample program for "application CP/M" \ 2: 005ch 3: 005ch INTEGER I,H,A 4: 005ch 5: 005ch \input message out 6: 005ch PRINT 7: 005fh PRINT "1+2+3+....n = x" 8: 0065h INP.MSGOUT: 9: 0065h INPUT "input n (n = 1...250) -->" ; INPVAL 10: 0076h IF (INPVAL<1) OR (INPVAL>250) THEN GOTO INP.MSGOUT 11: 009ah 12: 009ah \compute 13: 009ah GOSUB CALC.SUB 14: 009dh 15: 009dh \out result 16: 009dh PRINT 17: 00a0h PRINT "1+2+3+...." ; INPVAL ; "= " ; ANSX 18: 00beh STOP \program run end 19: 00beh 20: 00c1h \calc subroutine 21: 00c1h CALC.SUB: 22: 00c1h P= INPVAL+1 23: 00d3h ANSX= P * 0.5 * INPVAL 24: 00e8h RETURN 25: 00ech 26: 00ech \list end. end of compilation no errors detected code area size: 236 00ech data area size: 24 0018h common area size: 0 0000h symbol table space remaining: 24583 D>lk80 sample -------------------------------------------------- LK80 Linker 15 Apr 1983 Version 2.0 Serial No. ACB-0000-000072 All rights reserved Copyright (c) 1982,1983 Digital Research, Inc. -------------------------------------------------- code size: 1700 (0100-17FF) common size: 0000 data size: 01AC (1800-19AB) symbol table space remaining: 9B26 D>dir D: CB80 COM : CB80 IRL : CB80 OV1 : CB80 OV2 D: CB80 OV3 : CBASE2 COM : CIRCOM BAS : CRUN2 COM D: DEMOGRAF BAS : GRAPHCOM BAS : GRAPHR BAS : GSXPREP BAS D: LIB COM : LINK COM : LK80 COM : READ ME D: TSTCIR BAS : DEMOGRAF REL : DEMOGRAF SYM : DEMOGRAF COM D: SAMPLE BAS : SAMPLE SYM : SAMPLE REL : SAMPLE COM D>sample 1+2+3+....n = x input n (n = 1...250) --> 500 input n (n = 1...250) --> 250 1+2+3+.... 250 = 31375 D>/exit > 0000 00C3 - リモート接続を終了しました logfile closed at Sun Jul 14 20:42:59 2013 |
ワンボードマイコンでCP/Mを![第442回]
2013.7.21upload
前へ
次へ
ホームページトップへ戻る