Almost lost technologies

ここは昔の CPU を用いた工作記事を書くために用意しました。

μPD751C

なにやらヤフオクで手頃な値段だったので、押さえてしまいました。

μPD751C

公式資料はまるっきりないけど、困らない程度。2個要るか、っていったらいらないかもしれません。これも制作待ちのキュー積みです。

NECの石ばっかり増えてくるような気がします。

SBC SC/MP-III デバッグ開始 (2)

デバッグの進捗ではなくて、デバッグ時に基板変更箇所を書くと前に記載していたのでそのフォローです。

 

SBC8070 基板の回路

変更点は以下。こちらは大きな変更は入っていません。

(1) SIN は 4.7k でプルアップ。

   シリアルが活線挿抜できるわけではないのですが、シリアルI/F 無しで通電する場合は浮きになるので一応対処。プルダウンのほうが良いかもしれない。

(2) RI はGND から 5V に。

    これはNSの参考回路がそうなっているため。どっちでも良いような気はしますが。

(3) 27C256 をジャンパで対応できるようにした。

(4) パスコン1つ追加。DCジャックのところにつけました。

それと、GALの論理を記載しておきます。

  1:Name            DECSCMP3;
  2:Partno          KF010001;
  3:Date            23/08/16;
  4:Revision        01;
  5:Designer        efialtes_htn;
  6:Company         EFIALTES_HTN Design;
  7:Assembly        System 19-5-SC/MP III;
  8:Location        U06;
  9:Device          G16V8;
 10:
 11:/* *************************************************************** */
 12:/* System 1Q IO decorder Glue logic                                */
 13:/*                                                                 */
 14:/* *************************************************************** */
 15:/* target device        GAL18V8 any speed rank is OK               */
 16:/* *************************************************************** */
 17:/* Memory Map                                                      */
 18:/*  0x0000-0x3fff       ROM (NIBL and extension)                   */
 19:/*  0x4000-0xadff       RAM                                        */
 20:/*  0xfc00-0xfc3f       Serial Interface                           */
 21:/*  0xfc40-0xfcff       I/O area                                   */
 22:/*  0xfd00-0xfdff       reserved                                   */
 23:/*  0xfe00-0xffff       RAM (ffc0-ffff internal)                   */
 24:/* *************************************************************** */
 25:/** inputs      **/
 26:Pin 1   =       !NRDS;
 27:Pin 2   =       !NWDS;
 28:Pin 3   =       A15;
 29:Pin 4   =       A14;
 30:Pin 5  =        A13;
 31:Pin 6   =       A12;
 32:Pin 7   =       A11;
 33:Pin 8   =       A10;
 34:Pin 9   =       A9;
 35:Pin 11  =       A8;
 36:Pin 18  =       A7;
 37:Pin 16  =       A6;
 38:
 39:/** outputs     **/
 40:Pin 14  =       !ROMEN;
 41:Pin 15  =       !RAMEN; 
 42:Pin 19  =       !WR; 
 43:Pin 17  =       !RD; 
 44:Pin 12  =       !IOXEN;
 45:Pin 13  =       !SEREN;
 46:
 47:/* logic equations      */
 48:ROMEN   = (NRDS & !A15 & !A14);
 49:RAMEN   = ((!A15 & A14) 
 50:                # (A15 & !A14 & !A13)
 51:                # (A15 & !A14 & !A12)
 52:                # (A15 & !A14 & !A11)
 53:                # (A15 & !A14 & !A10)
 54:                # (A15 & !A14 & !A9)
 55:                # (A15 &  A14 &  A13 &  A12 &  A11 &  A10 &  A9));
 56:RD      = NRDS;
 57:WR      = NWDS;
 58:SEREN   = A15 & A14 & A13 & A12 & A11 & A10 & !A9 & !A8 & !A7 & !A6;
 59:IOXEN   = A15 & A14 & A13 & A12 & A11 & A10 & !A9 & !A8 & !A7 & A6;
 60:
 61:ROMEN.oe = 'b'1;
 62:RAMEN.oe = 'b'1;
 63:RD.oe = 'b'1;
 64:WR.oe = 'b'1;
 65:SEREN.oe = 'b'1;
 66:IOXEN.oe = 'b'1;
 67:





 

SBC SC/MP-III デバッグ開始 (1)

2ヶ月ぐらい前に物自体は作ってあったのですが、やっとデバッグ開始です。

とりあえず Lチカは動いた。これで目視できるぐらいの速度なので遅い。

 

; Lchika for INS8070 by efialtes_yh
	CPU	8070
TARGET:	EQU	"INS8070"


; more constants
STACK:	 EQU	  0x4200      ; hardware stack

CNT0H:	EQU	0xff81

; interpreter starts here
; assumptions "should be" refer to 1K RAM at X'1000-X'13ff)
        ORG 0
        NOP                     ; lost byte because of PC preincrement
        JMP     COLD            ; Jump to cold start
;        JMP     INTA            ; Jump to interrupt a handler
;        JMP     INTB            ; Jump to interrupt b handler

	ORG	0x0040
COLD:   LD	SP,=STACK
	LD      EA, =0x0000
	ST	EA,CNT0L
COLD1:
	LD	EA,CNT0L
	ADD	EA,=1		; increment
	ST	EA,CNT0L
	LD	A,E
	AND	A,=0x0e
	LD	S,A
	JMP	COLD1

SBC SC/MP-III (SBC8070)

今のところ、基板の配線にバグは見つかっていませんが、シルクの R3 と R4 に抵抗値が記載されていて、それが逆なのが発覚 (R3, R4 の位置のシルクは間違ってないです。おまけで書いた抵抗値の問題)。最初それで 16550 側のオシレータが動かなかったのですが、害は小さいかな。

SBC2650 の方は手がついていません。GAL の論理がまずいということがわかっているだけ。少しハンドデバッグかなぁ。

 

SCN2650SBC (2) デバッグ開始

通電してすぐにリセット極性が逆、までは修正したんですけど、CPUは走っているけど ROM アクセスが出ない。GAL の論理問題がないわけではないので書き換えたところ正しく書けず、クロックすら出ない、というところで止まっています。ライタは書けたと言ってくるのに……

また「上手く行く環境」を探索するか、旧DOS環境のライタを使うかの迷い中。

 

 

SCN2650SBC (1) 組み立て

まずこちらの方です。回路は、というか2650UMの方を見ていなかったので page 外がアクセスできないことに気がついていませんでした。最初のページは ROM にしてあったので変更が必要ですが、もともと RAM には 32kB アドレスが入れてあったので、細かく ROM/RAM のアドレスマップを組むのはやめにして、全部 RAM にします。ROMの番地はRAMに書けるようにして、ROMを転送する、というわけです。転送後に非拡張制御 I/O を発行すると、ROM が消えて 全メモリ空間 RAM になります。

その関係で、OPACK 行きは切って GND に、I/Oの A6 は諦めてここに RESET を引き込んで、GALで全部対処します。

  1:Name            DEC2650;
  2:Partno          KF010002;
  3:Date            23/08/30;
  4:Revision        01;
  5:Designer        efialtes_htn;
  6:Company         EFIALTES_HTN Design;
  7:Assembly        System 19-6 SCN2650A;
  8:Location        U06;
  9:Device          G16V8;
 10:
 11:/* *************************************************************** */
 12:/* System 19-6 decorder Glue logic                                 */
 13:/*                                                                 */
 14:/* *************************************************************** */
 15:/* target device        GAL18V8 any speed rank is OK               */
 16:/* *************************************************************** */
 17:/* *************************************************************** */
 18:/** inputs      **/
 19:Pin 1   =       CLK;
 20:Pin 2   =       OPREQ;
 21:Pin 3   =       RW;
 22:Pin 4   =       WRP;
 23:Pin 5  =        MIO;
 24:Pin 6   =       A14;
 25:Pin 7   =       A13;
 26:Pin 8   =       A7;
 27:Pin 9   =       !RES;
 28:Pin 11  =       !OE;
 29:
 30:/** outputs     **/
 31:Pin 12  =       BOOTEN;
 32:Pin 13  =       !SEREN;
 33:Pin 14  =       !ROMEN;
 34:Pin 15  =       !RAMEN; 
 35:Pin 16  =       125M;
 36:Pin 17  =       !RD; 
 37:Pin 18  =       25M;
 38:Pin 19  =       !WR; 
 39:
 40:/* logic equations      */
 41:ROMEN   = (BOOTEN & !A14 & OPREQ & !RW & MIO);
 42:RAMEN   = (BOOTEN & !A14 & OPREQ & RW & MIO)
 43:              # (!BOOTEN & OPREQ & MIO);
 44:/* Memory read or non-extended IO read */
 45:RD      = OPREQ & !RW & (MIO # !A14);
 46:WR      = OPREQ & RW & WRP & (MIO # !A14);
 47:SEREN   = OPREQ & !MIO & !A14 & !A7;
 48:25M.d   = !25M;
 49:125M.d  = (!125M & 25M) # (125M & !25M);
 50:BOOTEN.d = (!RES & OPREQ & RW & !MIO & WRP & !125M & 25M & A14 & A13)
 51:        # (!RES & !OPREQ & BOOTEN)
 52:        # (!RES & MIO & BOOTEN)
 53:        # (!RES & !A14 & BOOTEN)

LISTING FOR LOGIC DESCRIPTION FILE: DEC2650.pld                      Page 2

CUPL(WM): Universal Compiler for Programmable Logic
Version 5.0a Serial# 60008009
Copyright (c) 1983, 1998 Logical Devices, Inc.
Created Wed Aug 30 23:33:00 2023

 54:        # (!RES & !RW & BOOTEN)
 55:        # (!RES & !WRP & BOOTEN);
 56:
 57:
 58:ROMEN.oe = 'b'1;
 59:RAMEN.oe = 'b'1;
 60:RD.oe = 'b'1;
 61:WR.oe = 'b'1;
 62:SEREN.oe = 'b'1;


あと、回路上はTESTピンにインバータ入れて LED をつける回路を入れています。これは「私の」デバッグ用の Lチカのため。小さい 1gate logic 使ったのでつけるのは面倒ですが、まぁオプション回路です。あと、基板見ていたら発振器への電源が細い。REV 2 では直しましょう。それと、発振器の下に電源が通っているのはどうしようか。普通に売っているモジュールだと缶の裏にボッチがあってショートしないんですけど、まぁ困る人がいたら自分で対策?

部品をとりあえず仮取り付けをして記念写真。ROMベースデバッグなのでゼロプレッシャーソケットを重ねています。テストピンはちょっと良いものを使用。電源の電解はここまで良いものを使う理由はないですが、当初予定通り。

2650A SBC



 

基板到着

今回も JLCPCB、輸送は今回は NES Express で、一週間ほどで届きました。

週末にでも手を付けましょう。どちらも回路多少いじったので、説明はまたデバッグのときにでも。

基板2枚

 

SCN2650A SBC暫定版

引き続いて SCN2650A の方も基板まで作りました。こちらは OPACK をどうするかが考えどころです。JIMさんは GND に落としているので、あまり考える必要はないのかも。

回路図

基板図