SSブログ
English Version

レトロマイコン86ボードの構想(その16)プリント基板完成 [8086]

 「レトロマイコン86ボードの構想(その10)回路図整理とパターン設計」の記事で書いたV20(8088互換)とPIC24で構成されるPic24V20基板のプリント基板はSEEDさんからとっくに届いていたのですが、74HC573の5.2mm幅のSOPパッケージを手配するのが遅れたため、到着待ちの状態でした。
 漸く、HC573が届いたのでプリント基板に部品を実装しました。

 まずは出来上がったプリント基板のトップ面です。

Pic24V20プリント基板(トップ面)


 ボトム面は割合空いているので74HC573のチップを載せました。

Pic24V20プリント基板(ボトム面)


 しかし、その後ブレッドボード上で動かしていると不安定なので573のアドレスラッチのストローブ部分を少し変更しました。
 上記の回路図の記事に載せた回路図も変更済みです。

 下の写真が部品実装後のトップ面です。PIC24FJ64GA004が実装しているリアルタイムクロック用のクリスタル実装パターン(PICの上の部分)も付けていますがまだ未実装です。

V20ワンボード基板(トップ面)


 下の写真がボトム面です。上記のように基板製造会社に手配後に変更が発生したので抵抗を1本追加しています。
★2019/10/28 追記 {
 他の変更点として、R16をショットキーに変更、D4の極性反転の2点です。
}
 左側の大きな白い線はリアルタイムクロックのためのバックアップ用CR2032電池のホルダで未実装です。

V20ワンボード基板(ボトム面)


★2019/10/27 追記
 今までブレッドボード上ではたまにCP/M-86が起動しなくなったりして、その都度対処していましたが、プリント基板化することでCP/M-86が安定して動作するようになりました^^
 リセット後のCP/M-86の起動メッセージを貼っておきます。
 「loading ...」はブートストラップが表示、「Last Offset」までがCP/Mのコールドスタートローダー(バージョン行はコールドスタートローダー内のBIOSが表示)、「System Genelated」行をCPM.SYS内のBIOSが表示しています。

picle compiler CP/M-86 Ver0.01 2019/07/03 by skyriver

loading ... ok
Pic24V20 ver0.02 CP/M-86 Version 1.1
Segment Address = 0040
    Last Offset = 31FF
  System Generated by skyriver 2019/10/07

A>■

★2019/11/14 変更 ブート時のメッセージを若干変更

★2019/10/20 追記
 今回の基板作成で気が付いた事などメモしておきます。
  • 74HC573のSOPパッケージの入手性
     5.2mm幅のSOPパッケージの入手性はあまりよくない。eBayでポチったがshipされるまで3日間くらい掛かったのでAliExpressでもポチっておいたら、AliExpressの方が早く着いた(業者にもよるだろうけど)。
     そもそも幅の狭いSOPパッケージは373はよく見かけるけど573はあまり見かけない(幅広のものは結構見かけるし所有している)。

  • 表面実装方法
     PIC24FJの44ピンのTQFPを今回、初めてYouTubeで見かけるような半田ごてを使った半田付けにトライした。
     当然ステンシルは作っていないのでクリーム半田をピン毎に塗る手間を考えたら、半田ごての方が作業効率が良さそう。

  • 半田付け用フラックスの除去
     ティッシュにエチルアルコールを含ませて除去したらティッシュの繊維があちこちに残った^^;;
     古い歯ブラシで可能な限り除去したけど、ルーペで見るとイマイチきれいではない。
     その点、クリーム半田はフラックス入りで周りを汚さないし、表面張力で部品の位置もいい感じで収まる。

  • 部品の固定治具
     「表面実装部品固定冶具」の記事で書いた固定治具を今回初めて使ってみた。
     基板に傷が付きそうだったのでカプトンテープで巻いて使ったが、半田ごてでの半田付けや追い半田する際に中々便利だった。

  • ショットキーバリアダイオード
     何種類か準備してあったが丁度いい大きさのものが無かった(eBayでも見つからず)。結局かなり小さいものを使用したがマイナス側のマークはルーペで確認しながら半田付けした。私の使っているルーペは上下左右逆に見えるので注意が必要w

  • 512Kx8Bit SRAM
     SAMSUNG製のK6T4008C1B-DB70が以前より値上がりしてきた(5百円弱程度)ように感じる。AliExpressでピンコンパチの日立製HM628512が5個で千円弱(久々にAliExpressに行ったら100円クーポンが入手できたので更に100円引き)で売っていたのでポチっておいた。
     但し、写真はDIPだけど説明の部分にはDIP型番に併記してフラットパッケージの型番も書いてあったので少し不安ですが・・



[TOP] [ 前へ ] 連載記事 [ 次へ ]

nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

レトロマイコン86ボードの構想(その15)DDT86でパッチ [8086]

 CP/M-86の頃にはパソコンがグラフィック表示対応もして来たり、CP/M-86自体もパーソナルCP/Mとして機種毎に販売されたこと等もあり、TeraTerm接続環境でうまく動かないソフトが結構あります。

 今回はgulperというパックマンライクのゲームにDDT86でパッチをあてて動かしてみたのでメモとして書いておきます。

 最初にダウンロードしたままの状態で起動すると

GULPER実行画面(対処前)


 Pascalのソースも添付されていたので確認してみると

GULPERのソース(抜粋)
PROCEDURE assign_values; { If your computer's character set is different from the IBM PC's you may } { have to assign other characters to these variables } BEGIN normal_gulper := chr (2); { face } super_gulper := chr (234); { square: ~ } ghost := chr (1); { inverse-video face } wall := chr (219); { solidly coloured rectangle: / } den := chr (176); { half-tone rectangle: 0 } bonus := chr (3); { heart shape } power_pill := chr (4); { lozenge } blank := ' '; dot := '.'; terminal := '$' END; { assign_values } PROCEDURE title_page; VAR row: 1..24; PROCEDURE sidescroll (slice: charstring); VAR i, j: 1..24; BEGIN FOR i :=1 TO 16 DO BEGIN GotoXY (1, row); FOR j:= 1 TO i DO write (' '); write (slice) END; row := row + 1 END; { sidescroll }


 機種依存のキャラクタコードの設定は一カ所で行っています。また、ソース内の先頭で設定しているので探し易そうです。

 今回は次のようにキャラクタコードを変更することにしました。
  • 02 -> 4f O
  • EA -> 23 #
  • 01 -> 40 @
  • DB -> 48 H
  • B0 -> 5a Z
  • 03 -> 56 V
  • 04 -> 2A *

 DDT86でパッチを当てる場合、ddt86 gulper.cmdで読込んでパッチを当ててもwコマンドでセーブできないのでrコマンドで読込んでパッチ適用後にwコマンドでセーブしています。
 最初に0080hから逆アセンブルしているのはヘッダ分を飛ばしてコードの先頭から見るためです。
 コードの先頭でスタートアップ処理にジャンプし、スタートアップ処理の直後に上述のキャラクタコード設定処理がありました。

DDT86でのパッチ操作
J>dir J: AZTEC TAR : CTYPE H : FCNTL H : LIBC H J: STDIO H : GULPER CMD J>a:ddt86 DDT86 1.2 -rgulper.cmd START END 77BE:0000 77BE:4A7F -l80 77BE:0080 JMP 2800 77BE:0083 NOP 77BE:0084 NOP 77BE:0085 INT AB 77BE:0087 INC BX 77BE:0088 ??= 6F 77BE:0089 JO 0104 77BE:008B JB 00F6 77BE:008D ??= 67 77BE:008E ??= 68 77BE:008F JZ 00B1 77BE:0091 SUB 29[BP+DI],AL -l2800 77BE:2800 CALL 0741 77BE:2803 ADD AL,[BX+SI] 77BE:2805 DAA 77BE:2806 OR 11[BX+SI],AL 77BE:2809 MOV BP,SP 77BE:280B CALL 23CF 77BE:280E DEC DI 77BE:280F AND DL,E927[BP+SI] 77BE:2813 ??= 0F 77BE:2814 PUSH DS 77BE:2815 PUSH BP 77BE:2816 MOV BP,SP -l 77BE:2818 PUSH BP 77BE:2819 JMP 281C 77BE:281C MOV AX,0002 77BE:281F MOV [02CC],AL 77BE:2822 MOV AX,00EA 77BE:2825 MOV [02CD],AL 77BE:2828 MOV AX,0001 77BE:282B MOV [02CE],AL 77BE:282E MOV AX,00DB 77BE:2831 MOV [02CF],AL 77BE:2834 MOV AX,00B0 77BE:2837 MOV [02D0],AL -s281c 77BE:281C B8 77BE:281D 02 4f 77BE:281E 00 77BE:281F A2 77BE:2820 CC 77BE:2821 02 77BE:2822 B8 77BE:2823 EA 23 77BE:2824 00 77BE:2825 A2 77BE:2826 CD 77BE:2827 02 77BE:2828 B8 77BE:2829 01 40 77BE:282A 00 77BE:282B A2 77BE:282C CE 77BE:282D 02 77BE:282E B8 77BE:282F DB 48 77BE:2830 00 77BE:2831 A2 77BE:2832 CF 77BE:2833 02 77BE:2834 B8 77BE:2835 B0 5a 77BE:2836 00 77BE:2837 A2 77BE:2838 D0 77BE:2839 02 77BE:283A B8 77BE:283B 03 56 77BE:283C 00 77BE:283D A2 77BE:283E D1 77BE:283F 02 77BE:2840 B8 77BE:2841 04 2a 77BE:2842 00 . -wgulper2.cmd -^C J>


 パッチ適用により、下記の画面のように標準のアスキーコードを使った画面にすることができました。

GULPER実行画面(対処後)


★2019/10/14 追記
 twitterに動画付きでコメントをポストしました。
https://twitter.com/wcinp/status/1183623815596634112



[TOP] [ 前へ ] 連載記事 [ 次へ ]

nice!(1)  コメント(0) 
共通テーマ:趣味・カルチャー

レトロマイコン86ボードの構想(その14)untarの製作 [8086]

 今日(2019/10/12 土曜日)の夕方から明日にかけて関東を直撃するおそれがある過去最強クラスとも言われている台風19号のため、JRは全面運休を予定していて、昨日夕方に近くのスーパーマーケットに行ったらレジが長蛇の行列でパンやカップ麺類が殆ど無い状態でした。
 危険なので緊急以外の外出をしないように政府見解もでているので今日はパソコンの前に座っています(いつものことだけどw)

 「レトロマイコン86ボードの構想(その11)xmodemの移植」の記事で書いたように自作のV20ボードで動くCP/M-86上でxmodemが動くようになり、パソコンとのファイル送受信が簡単にできるようになりました。

 kuninetさんが書かれた「KZ80シリーズ、SBC8080 8085でCP M」の最後の方で拙作のxmodemを紹介して頂いていて、ここでは同時にCP/M-80用のunzipも紹介されています。パソコン側のGUI操作で複数ファイルのアーカイブを作り、xmodemでCP/Mへ転送する環境は確かに便利です。

 そこでCP/M-86用のunzipを探してみましたが見つかりませんでした・・・
 パソコンで使用している圧縮/解凍ソフトである7-zipの圧縮ファイル作成時の設定ウィンドを見ていたらなんとtarに対応していました^^

7-zipの圧縮ファイル作成時の設定ウィンド

★追記 2020/12/23
 Windows10自体もtarに対応していました。

コマンドラインでtarコマンド


 そこでCP/M-86用のtarファイルを解凍するuntarを作ってみました。
 tarは古くからあるツールで、tarファイルの構造は単純なので解凍ツールの作成は割合簡単です。

 tarファイルのフォーマットについてはネット上に豊富に情報があり「tar の構造」等を参考にさせて頂きました。

 制作したuntarの操作ログのサンプルを貼っておきます。

untar操作ログ
J>a:xmodem aztec.tar /r /p aztec.tar (PUN/RDR) received 60 block(s). J>a:stat *.* Drive J: User : 0 Recs Bytes FCBs Attributes Name 60 8k 1 Dir RW J:AZTEC .TAR ---------------------------------------------- Total: 8k 1 J: RW, Free Space: 1,936k J>a:untar usage : untar [/l /e] FileName /e : extract all files Ver 0.01 2019/10/11 by skyriver J>a:untar aztec aztec.tar CTYPE.H 638 bytes FCNTL.H 211 bytes LIBC.H 1222 bytes STDIO.H 1306 bytes J>a:untar /e aztec aztec.tar CTYPE.H 638 bytes created FCNTL.H 211 bytes created LIBC.H 1222 bytes created STDIO.H 1306 bytes created J>a:stat *.* Drive J: User : 0 Recs Bytes FCBs Attributes Name 60 8k 1 Dir RW J:AZTEC .TAR 5 2k 1 Dir RW J:CTYPE .H 2 2k 1 Dir RW J:FCNTL .H 10 2k 1 Dir RW J:LIBC .H 11 2k 1 Dir RW J:STDIO .H ---------------------------------------------- Total: 16k 5 J: RW, Free Space: 1,928k J>


 コンパイル時のログも貼っておきます。"-a"オプションで自動的にリンクまで行うようにしています。

B>drc -a untar
--------------------------------------------------
Digital Research C       04/17/84     Version 1.11
Serial No. 3073-0000-001282    All Rights Reserved
Copyright (c) 1983,1984     Digital Research, Inc.
--------------------------------------------------

Digital Research C  Version 1.11 -- Preprocessor

Digital Research C  Version 1.11 -- Code Gen
untar.c:         code:  1541 static:   235 extern:   694

--------------------------------------------------
LINK-86 Linkage Editor  19 March 1984  Version 1.4
Serial No. 3073-0000-001282    All Rights Reserved
Copyright (C) 1982-1984     Digital Research, Inc.
--------------------------------------------------

CODE    06186
DATA    011A1

USE FACTOR:  18%

B>


 最後に、今回作成したuntarプログラムは下記のリンクからダウンロードできます。
 ※商用目的以外であれば自由に使用可能

UNTAR_CPM86_V005.zip

・2021/01/04 Ver 0.05
 Win10のtarコマンド等のヘッダ内サイズデータのデリミタが20Hの場合に対応
・2019/10/24 Ver0.04
 ファイルエンドの処理を修正
・2019/10/18 Ver0.03a
 Aztec C 8086 Ver3.20d でコンパイル(File size was turned to 10KB from 30KB)
・2019/10/16 Ver0.03
 ファイルリスト表示を高速化
・2019/10/13 Ver0.02
 "/l"オプションを廃止し、リスト表示をディフォルトとした
・2019/10/12 Ver0.01a
 ファイルサイズが128の倍数の場合の処理を改善


[TOP] [ 前へ ] 連載記事 [ 次へ ]

nice!(0)  コメント(1) 
共通テーマ:趣味・カルチャー