2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

OSと言えばコレでしょ!CP/Mスレ ver.4

1 :ナイコンさん:2018/10/08(月) 15:49:50.58 .net
「世界初の個人で買えるOS」であるCP/Mについて語るスレです。

前スレ
OSと言えばコレでしょ!CP/Mスレ ver.3
http://matsuri.2ch.net/test/read.cgi/i4004/1416873034/
https://matsuri.5ch.net/test/read.cgi/i4004/1416873034/

186 :ナイコンさん:2021/10/01(金) 07:50:00.65 .net
上のCP/M-86でAztec C Ver 3.2dを使う方法がわかりにくいと思われるので
CP/M-86でAztec C Ver 3.2dを使う方法をまとめてみました

VMware PlayerのCP/M-86上でAztec C Ver3.2dを使う方法
https://pastebin.com/0zpmybh7

187 :ナイコンさん:2021/10/02(土) 12:23:35.35 .net
こちらのVGAの320x200の256色画面のC言語によるプログラミングのサンプルプログラムを
CP/M-86のAztec C 3.2dに移植してみました

256-Color VGA Programming in C
http://www.brackeen.com/vga/

ここのこれらのプログラムを移植しました
pixel.c lines.c rect.c circle.c bitmap.c palette.c unchain.c modes.c
mouse.cはマウスが使えないので移植してません

5chはたくさんのURLを一度に貼れないのでこちらに各ソースコードのURLを貼ってあります
https://pastebin.com/tGGgYmGQ

188 :ナイコンさん:2021/10/02(土) 12:40:42.01 .net
続き
コンパイル方法は8つのプログラムどれも一緒です

コンパイル方法は
cc pixel.c
ln pixel.o m.lib c.lib
です
Bドライブをカレントディレクトリにしてコンパイルする時に
インクルードファイルがBドライブにある場合はccで-iオプションで-ib:のように指定します
cc -ib: pixel.c
ln pixel.o m.lib c.lib
になります

189 :ナイコンさん:2021/10/04(月) 21:05:44.10 .net
PC-9801Fを買ったとき、N88diskBASIC環境でアセンブラがなかったから
CP/M86のディスクだけ買ってきた。
(ディスク1万円、マニュアル1.5万円でNECは売ってたんだよね)

で、CP/M86のアセンブラ使ってプログラム作っては、DiskBasic側で読み込んで
BASIC+機械語の形で動かしてた。

190 :ナイコンさん:2022/05/14(土) 10:57:13.77 .net
ロマンティックが止まらない?

191 :ナイコンさん:2023/01/04(水) 00:52:10.32 .net
CP/M86が動くx86系CPUって、どれが最後なんだろ?

192 :ナイコンさん:2023/01/04(水) 19:51:19.59 .net
リアルモードがある奴ならCP/M86は動きそうな気はするけどFD付かないマザボでも動くんだろうか?

193 :ナイコンさん:2023/01/05(木) 07:23:18.56 .net
vmware上でなら、ryzenでも動いた。実機では試してないけど。

194 :ナイコンさん:2023/01/06(金) 14:18:16.16 .net
どのCPUでもMS-DOSは動くのかな?

195 :ナイコンさん:2023/01/10(火) 08:50:46.09 .net
リヤルモードが切り捨てられない限り

196 :ナイコンさん:2023/01/10(火) 11:10:40.21 .net
uefiのみになってBIOS互換モード廃止されたM/BならCPU自体は対応できても起動できなくなるのでは?

197 :ナイコンさん:2023/01/10(火) 15:50:35.72 .net
いちおうBIOS対応してても動作が酷くて実用にならないようなのもあるしな

198 :ナイコンさん:2023/01/11(水) 10:37:50.21 .net
MS-DOSにはさすがに自己書き換えコードは入ってないかな?

199 :ナイコンさん:2023/01/11(水) 13:44:24.90 .net
どうだろうね。masmの教科書で、任意のソフト割り込みをかけるマクロがint21→バイナリでcd 21だけど、この21を書き換えることで任意の割り込みをかけるようなマクロの記載があったから、そのまま使っていれば自己書き換えするはず

200 :ナイコンさん:2023/05/09(火) 12:04:54.52 .net
ひさびさage

201 :ナイコンさん:2023/05/11(木) 11:49:41.10 .net
>>199
マクロならコンパイルした後は変わらないのでは?

202 :199:2023/05/11(木) 12:49:48.03 .net
Cのマクロならね。
masmだからそのまま展開されます。

203 :ナイコンさん:2023/05/11(木) 13:44:07.26 .net
ソースを書き換えるマクロじゃなくてコードを書き換えるマクロが展開されるならCでもアセンブラでもコード書き換えは出来るか

204 :ナイコンさん:2023/05/11(木) 21:27:51.90 .net
コードセグメントのアドレスさえ手に入れられる言語で、8086のようにコードセグメントでも書き込みができるCPUなら

205 :ナイコンさん:2023/05/12(金) 10:30:50.83 .net
ジャンプテーブルとか動的に生成したりしたよな

206 :ナイコンさん:2023/09/06(水) 10:41:43.22 ID:kiI4WzO5e
日本国民は国家の存亡に関わる陰謀に立ち向かわねは゛なりません.曰本国民の若者を始め武器を持って戦える全ての人は、ためらわずこの義務
を果たしてくた゛さい、力による一方的な現状変更によって滑走路にクソ航空機にと倍増させて都心まで数珠つなぎで鉄道の30倍以上もの莫大
な温室効果ガスまき散らして気候変動させて海水温上昇させてかつてない量の水蒸氣を曰本列島に供給させて洪水に土砂崩れに暴風にと住民の
生命に財産に地球にと破壊することて゛私腹を肥やし続ける世界最悪の殺人テロ組織公明党国土破壞省の陰謀から國を守って國民としての名誉を
得るのです。山口那津男は議員報酬という名目で毎年国民から2000万以上もの金銭を強盗してるし強盗殺人の首魁齋藤鉄夫なんか蓄財3億
円を超えてるわけた゛が、欧州みたいに他人の権利を強奪して私腹を肥やすだけの存在である恥知らず犬コロ公務員と四六時中殺し合ってる社会
を民主主義というんだぞ、マソ゛体質の西曰本被害者とかいつまでモクト ─だの無意味なバカ晒し続けてんた゛か.この私利私欲な動機に基づいた
行為を通じて人の命を非常なまでに軽視するテ口政府には物理的反撃なくしてお前らの生命と財産を守るのは不可能だといい加減理解しよう!
(羽田)Τtps://www.call4.jp/info.Php?tУPе=iΤems&id=I0000062 , TТps://haneda-Ρroject.jimdofreе.com/
(成田)ttps://n-souonhigaisosyoudan.amebaownd.сom/
(テロ組織)TtPs://i.imgur.com/hnli1ga.jРeg

207 :ナイコンさん:2023/10/18(水) 13:11:29.02 .net
わかんねぇわかんねぇって思いながら、ずっと俺のこと考えてな

208 :ナイコンさん:2023/10/19(木) 10:35:26.01 .net
5年で206書き込みか。

209 :ナイコンさん:2023/11/14(火) 20:19:14.86 .net
・CP/M68Kを98に移植する。I/O雑誌 工学社 1986年8月号 (234ページ参照)
------------------------------------------------------------------
https://archive.org/details/Io19868/page/n235/mode/2up
------------------------------------------------------------------

ハード構成: PC-9801本体 + PC-9801-16(68000ポード) + PC-9801-17(68000専用メモリポード)
ソフト構成: CP/M-86(OS) + CPM400.SR など

・CP/M-68K バージョン 1.2 バイナリファイル
------------------------------------------------------------------
http://www.cpm.z80.de/download/68kv1_2.zip
------------------------------------------------------------------

「68kv1_2.zip」を解凍し、「DISK」フォルダの中にある「CPM400.SR」「CPMLIB」「LO68.REL」
「RELOC.REL」ファイルが既に入っています。

210 :ナイコンさん:2023/11/14(火) 20:21:18.68 .net
バイナリエディタで「SREAD.CMD」「L68K.CMD」「HI68.CMD」バイナリファイルを編集しますが、
そのまま実行できないので、以下のようにCMDベッターを作成する必要があります。

[1]「SREAD.CMD」CMDベッターファイル内容は次のとおり。
------------------------------------------------------------------
0000 01 27 00 00 00 27 00 00 ・・・・・・・・・00
0010 00 00 00 00 00 00 00 00 ・・・・・・・・・00

0180 B8 00 00 2E A3 3C 02 B8 ・・・・・・・・・BA
------------------------------------------------------------------

※ PC-9801-16(68000ポード)が無くても「CPM400.SRO」ファイル出力可能です。

[2]「L68K.CMD」CMDベッターファイル内容は次のとおり。
------------------------------------------------------------------
0000 01 31 00 00 00 31 00 00 ・・・・・・・・・00
0010 00 00 00 00 00 00 00 00 ・・・・・・・・・00

0180 BB CA 02 E8 1F 00 B8 00 ・・・・・・・・・41
------------------------------------------------------------------

[3]「HI68.CMD」CMDベッターファイル内容は次のとおり。
------------------------------------------------------------------
0000 01 34 00 00 00 34 00 00 ・・・・・・・・・00
0010 00 00 00 00 00 00 00 00 ・・・・・・・・・00

0180 BB E5 02 E8 0E 00 B8 00 ・・・・・・・・・30
------------------------------------------------------------------

211 :ナイコンさん:2023/11/14(火) 20:24:48.14 .net
「SREAD.CMD」「L68K.CMD」「HI68.CMD」バイナリファイルを編集した後、
できれば、MS-DOS上で逆アセンブルして、「CSEG」「ORG 100H」を追加し、
プログラムを編集してからCP/M-86上でASM86コマンドでアセンブルして、
GENCMDコマンドで「CMD」実行形式ブログラムを出力しておけば良いです。

「SREAD.CMD」バイナリファイルの中に一部の逆アセンブルできない部分がありますが、
しかたなく、DW命令でバイナリデータ([例] DW 2EA3H)を直接編集しておくと良いです。

GENCMDコマンドで「CMD」実行形式ブログラムを出力した後、ちょっと面倒ですが、
バイナリエディタで「A3 2E」<->「2E A3」を逆変換して修正する必要があります。
それは2バイトのチェックサム値っぽいではないか?と推測されますが。

・バイナリエディタ MEDIT
------------------------------------------------------------------
https://www.vector.co.jp/soft/dos/util/se020725.html
------------------------------------------------------------------

・マルチプル機械語エディター EDIX (チェックサム機能付き)
------------------------------------------------------------------
https://www.vector.co.jp/soft/dos/util/se000796.html
------------------------------------------------------------------

212 :ナイコンさん:2023/11/14(火) 22:06:06.55 .net
今どきPC-9801-16なんて誰も持ってないw

213 :ナイコンさん:2023/11/15(水) 03:10:49.88 .net
PC-9801用で68000ボードっていうと勝山システムのKSB-2が圧倒的に
安かったからな
 CPU乗っ取り形じゃなくてI/Oや表示は本体のCPUにやらせてCP/M-86と
CP/M-68Kが98側とボード側で同時に動く変態ボードだった。

214 :ナイコンさん:2023/11/15(水) 20:08:18.81 .net
L68K.CMD からL68D.CMD(デバッグ用)にコピーして、
0239アドレスに下記の5バイト分を書き換える。
------------------------------
0239 F4 E9 FC FF FA
0239 B1 00 CD E0 00
------------------------------

HI68.CMDからHI68D.CMD(デバッグ用)にコピーして、
0254アドレスに下記の5バイト分を書き換える。
------------------------------
0254 F4 E9 FC FF FA
0254 B1 00 CD E0 00
------------------------------

CP/M-68Kが起動できない場合、上記のデバッグプログラムを作成しておけば、
デバッグプログラムを実行後、DDT86コマンドでメモリダンプを参照できます。

A>DDT86
-D1000:0400 (CPM400.SROメモリダンプが表示されるはず)
-D1000:6000 (BIOS68Kメモリダンプが表示されるはず)

215 :ナイコンさん:2023/11/18(土) 16:12:28.05 .net
68000ボードの0番地のアドレス設定値(スイッチ2G2)と
クロック周波数(スイッチ2G3)を取得するプログラムを
作成してみました。
------------------------------------------
BDOS EQU 0E0h
CR EQU 0DH
LF EQU 0AH

cseg
org 100h
in al,9Fh
and ax,0Fh
cmp al,0Ch
jnz LBL1
mov cl,9
mov dx,offset OK1
int BDOS
jmp LBL5
LBL1:
cmp al,0Dh
jnz LBL2
mov cl,9
mov dx,offset OK2
int BDOS
jmp LBL5

216 :ナイコンさん:2023/11/18(土) 16:13:36.28 .net
LBL2:
cmp al,0Eh
jnz LBL3
mov cl,9
mov dx,offset OK3
int BDOS
jmp LBL5
LBL3:
cmp al,0Fh
jnz LBL4
mov cl,9
mov dx,offset OK4
int BDOS
jmp LBL5
LBL4:
mov cl,9
mov dx,offset NG
int BDOS
LBL5:
mov cl,00h
int BDOS

217 :ナイコンさん:2023/11/18(土) 16:14:32.49 .net
dseg
org 100h
OK1 db CR,LF
db 'PC-9801-16 Board 5MHz + 10000h SET OK!!'
db CR,LF,'$'
OK2 db CR,LF
db 'PC-9801-16 Board 5MHz + 20000h SET OK!!'
db CR,LF,'$'
OK3 db CR,LF
db 'PC-9801-16 Board 8MHz + 10000h SET OK!!'
db CR,LF,'$'
OK4 db CR,LF
db 'PC-9801-16 Board 8MHz + 20000h SET OK!!'
db CR,LF,'$'
NG db CR,LF
db 'PC-9801-16 Board no Found!!'
db CR,LF,'$'
end
------------------------------------------

218 :ナイコンさん:2023/11/19(日) 14:05:25.33 .net
現時点では、CP/M-68Kが起動できない原因はまだわかりませんが、
下記のように、スタートアドレス設定が必要とか、スタックをセットし、
INITへジャンプする必要があると思いますけど。

L68K,HI68プログラム(後半)にスタックプログラム(PUSH,POP,IRETなど)が既に入っていますが、
何も実行されない状態で、CP/M-68Kが起動できないみたいですが。

例えば、L68KのCMDベッターにスタートアドレスとか、04のスタックアドレスをセットするとか。
もしくはSR400.MAPファイルを正しく編集するとか。

逆アセンブラで(L68K),HI68プログラムに6F01,(6F06)アドレスが記載されてあり、
INITへジャンプするための作業領域?とか、チェックサム値?をセットするとか?

●SREAD
「スタートアドレスとチェックサムはすべて省略しています」と記載されてありますけど、
スタートアドレスをどのように設定するのがよくわからず、
CMDベッターにスタートアドレスを入れるとか、まだ不明ですが。

219 :ナイコンさん:2023/11/19(日) 14:06:57.44 .net
[参考文献]

https://archive.org/details/Io19837/page/n321/mode/2up

[表1 CP/M-68K 移植手順] (I/O雑誌 1983年7月号 319ページ参照)
--------------------------------------------------------------------------------
?他のシステムもしくは68KモニタなどでBIOSを作成する。
?Sフォーマット・ローダーを作成し、SR400.SYSまたはSR128K.SYSファイルを
メモリにロードする(BDOSとCCPのみのファイル)。
??で作成したBIOSをロードする。
??でロードしたプログラムの頭($400,$15000)から実行する(スタックをセットし、INITへジャンプする)。

注)BIOS作成時のCP/Mのエントリ・ポイントの変更点
-------------------------------------------------
INIT:SR400 $5F96 ,SR128K $19B96
SR400 $4F4 ,SR128K $150F4
-------------------------------------------------

●CCP,BDOS,BIOSはどこにあってもかまいません。
--------------------------------------------------------------------------------

220 :ナイコンさん:2023/11/19(日) 17:52:47.65 .net
[参考文献]

プロセッサ 1985年11月号 技術評論社(54〜64ページ参照)
https://www.suruga-ya.jp/product/detail/ZSARU6973

その内容にPC-9801-16 ボードの機能概要とMS-DOS上で動作する
サポートソフト(NEC製)の概要が記載されてあります。

PC-9801-16 メモリマップとメモリ動作概要とIN,OUT命令(I/Oポート)しかなく、
サポートソフトの概要を読んでも使いものになりません。

221 :ナイコンさん:2023/11/19(日) 19:36:33.88 .net
おう、阪神が西武をこてんぱんにして日本一になった年だな

222 :ナイコンさん:2023/11/20(月) 08:05:52.44 .net
-----------
 :
 :
 CALL SUBR
 RET
----↓-----
 :
 :
 JMP SUBR
----↓-----
 :
 :
SUBR:
-----------

223 :ナイコンさん:2023/11/20(月) 20:42:20.37 .net
-----------
 :
 :
 CALL SUBR
 RET
----↓-----
 :
 :
SUBR:
----↓-----
 :
 :
 JMP SUBR

224 :ナイコンさん:2023/11/25(土) 20:59:01.64 .net
・・・BIOSをCCPとBDOSに接ぎますが、このとき_ccpと_initの2つの
アドレスだけはリンクしなければなりません。
リンカならすぐにできる、この作業も手で書き加えなければなりません。
SR400.SYSの$4F96は、4EF900000000になっています。
4EF9は絶対アドレス・ジャンプで、この次の部分を
_initのアドレスに改めることによりリンクできます。
_ccpは$4F9Cなので、BIOS中の_ccpをこのアドレスにします。

BIOSとのリンクが終わったシステムは、CCPとBDOSの先頭アドレスから
実行を開始することにより、CP/M68Kが走り始めます。
このとき、ディスクが少し動いて何もメッセージもなく、
いきなり、A>のプロンプトが表われ、CP/M68Kが動きます。
このときからCP/M68Kの全ての機能が働きます。
とマイコンピュータNO.12 (徹底特殊 MC68000とCP/M68K)雑誌
(135ページ)に記載してありました。

CPM400.MAPの中身を覗いてみたら、
_ccp(4B8)と_init(6000)アドレスが入っていました。
-----------------------------------------------
_ccp 4B8 global text
cpm 400 global text
_bdos 4C6 global text
_init 6000 equ global abs
-----------------------------------------------

225 :ナイコンさん:2023/11/25(土) 21:01:43.45 .net
DDT.68Kを起動してから「-R BIOS68K」を入力し、
BIOS68Kプログラムを逆アセンブラで覗いてみました。
-----------------------------------------------
movea.l #6F01,A1
   :
jmp $4B8
:
movea.l #6F06,A0
:
movea.l #6F80,A1
:
movea.l #6F80,A2
-----------------------------------------------
上記の6F01と6F06と4B8アドレスが見つかっており、
BIOS68Kプログラムを書き換える必要はないですが、
CP/M86のCMDヘッダ側(04)でスタック領域を確保しておかないと
CP/M68Kが起動できないのではないかと思うけど?

226 :ナイコンさん:2023/11/26(日) 15:59:42.03 .net
例外(動作保証なし)ですが、「SREAD」CMDベッターを編集してみて、
それを実行してみたら、SR400.SROが勝手に出力されました。
------------------------------------------------------------------
0000 01 18 40 00 00 18 40 00 00 02 C0 0B 00 00 C0 0B
0010 00 00 00 00 00 00 00 00 ・・・・・・・・・・・00

0080 B8 00 00 2E A3 3C 02 B8 ・・・・・・・・・・・BA
------------------------------------------------------------------
上記のアドレス0180ではなく、0080でした。半年前だけど、
DSEGセグメント(02)を用いて、プログラム実行を試してみました。

227 :ナイコンさん:2023/11/26(日) 21:03:14.76 .net
再度、BIOS68Kプログラムを逆アセンブラで覗いてみたら、
なぜ、stop命令が入っていたかわからないですが。
----------------------------
move.b D0,$600000
stop #$2000
clr.l D0
----------------------------

228 :ナイコンさん:2023/11/28(火) 21:53:53.94 .net
BDOS機能の呼出しには68000の例外処理命令Trapを使用する。

68000は0番地から3FFFHまでの各4バイトには
255個の例外ベクターを持つ必要があります。

やはり、例外ベクター領域が何も入ってないと
CP/M68Kが起動できないのではないかと思うけど。

https://ipsj.ixsq.nii.ac.jp/ej/index.php?action=pages_view_main&active_action=repository_action_common_download&item_id=25038&item_no=1&attribute_id=1&file_no=1&page_id=13&block_id=8

229 :ナイコンさん:2023/11/28(火) 22:43:59.30 .net
>>224
上の方は_intって書いてあるね

230 :ナイコンさん:2023/11/29(水) 20:34:16.82 .net
>>229
ありがとうございます。_intが既にわかっていたけど、
CP/M68K(英語版)の68ページを参照し、
_ccpが記載してあるけど、_intが見つからなかった。
http://www.bitsavers.org/pdf/digitalResearch/cpm-68k/CPM-68K_System_Guide_Jan83.pdf

166ページに前回(NO.11)の訂正と補足が記載してありますけど、
次回NO.13に訂正箇所が記載してあるかどうか確認すると良いですが。

231 :ナイコンさん:2023/11/30(木) 21:29:49.63 .net
マイコンピュータNO.14 入門特集8086
アセンブリ・プログラミング103ページを参照し、
プログラム本体はコード領域に、メモリはデータ領域に
指定して用いましたが、さらにスタックを用いるときは、
それをスタック領域に、また繰り返し転送、比較を行うときには、
予備領域を用います。これらのいくつかの領域を用いるときは、
それぞれの区分名がどの領域に属するものであるかを、
すべてASSUME命令で指定しておきます。
例えば、CSEG、DSEG、SSEGをそれぞれコード、データ、
スタック領域に指定するには、
ASSUME CS:CSEG
ASSUME DS:DSEG
ASSUME SS:SSEG
ASSUME ES:NOTHING
のように書きます。

232 :ナイコンさん:2023/11/30(木) 21:36:39.99 .net
1つのASSUME命令の処理対象に、いくつかの領域指定を
同時に行うことができます。このときはそれらを ,(カンマ)で
区切って並べておきます。例えば、
上の例は、
ASSUME CS:CSEG , ASSUME DS:DSEG
ASSUME SS:SSEG , ASSUME ES:NOTHING
と書きます。

233 :ナイコンさん:2024/01/21(日) 19:38:09.52 .net
>>213
あぁ勝山さん元気かなぁ?独特の雰囲気のエンジニアだった

234 :ナイコンさん:2024/03/28(木) 20:28:07.88 ID:LzwT+LAF8
税金泥棒た゛らけの日本の茶番政治家と違って日本に原爆落とした世界最惡のならず者國家の国会は政治やってるよな
何しろ『やんのかコラ』『よろこんで』「し゛ゃあ立てよ」『お前か゛立てよ」とか言い合ってるくらいだしな
岸田異次元増税憲法ガン無視地球破壞霸権主義経済音痴文雄にそのくらい言い放とうものならお前ら間違いなく投票するよな
クヒ゛にされた税理士神田憲次財務副大臣は徴税システ厶ぶっ壊すために財務副大臣になったんた゛くらい言えは゛と゛んて゛ん返しだったろうに
天下り賄賂癒着して航空騒音による威力業務妨害まて゛してるだけの害蟲公務員に高額なタタ゛メシ食わしてやるデタラメ許してるせいで
賃金か゛上がらず物価上昇という白々しい結果になってんた゛から片っ端から税金という名目の強盗システ厶をぶっ壊してやんよとか
誰か言ってみせろっつのな,税金不払い運動とかやらないのは曰本くらいなものだから俺も俺もと汚職まみれの世界最惡の腐敗天國に
なったわけだが税金滞納して督促くらってもと゛うということはないと税理士副大臣がハ゛ラしちまったし俺も俺もと誰も払わなくなれは゛いいよな
(ref.) ttps://www.call4.jp/info.php?type=items&id=I0000062
ttps://haneda-project.jimdofree.com/ , ttps://flight-route.com/
ttps://n-souonhigaisosyoudan.amebaownd.com/

235 :ナイコンさん:2024/05/02(木) 02:42:18.31 .net
最近になってPlus初めて使った。
リブートなしってこんなに快適だったのかと

63 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★