なにやらヤフオクで手頃な値段だったので、押さえてしまいました。
公式資料はまるっきりないけど、困らない程度。2個要るか、っていったらいらないかもしれません。これも制作待ちのキュー積みです。
#NECの石ばっかり増えてくるような気がします。
デバッグの進捗ではなくて、デバッグ時に基板変更箇所を書くと前に記載していたのでそのフォローです。
変更点は以下。こちらは大きな変更は入っていません。
(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:
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
今のところ、基板の配線にバグは見つかっていませんが、シルクの R3 と R4 に抵抗値が記載されていて、それが逆なのが発覚 (R3, R4 の位置のシルクは間違ってないです。おまけで書いた抵抗値の問題)。最初それで 16550 側のオシレータが動かなかったのですが、害は小さいかな。
SBC2650 の方は手がついていません。GAL の論理がまずいということがわかっているだけ。少しハンドデバッグかなぁ。
通電してすぐにリセット極性が逆、までは修正したんですけど、CPUは走っているけど ROM アクセスが出ない。GAL の論理問題がないわけではないので書き換えたところ正しく書けず、クロックすら出ない、というところで止まっています。ライタは書けたと言ってくるのに……
また「上手く行く環境」を探索するか、旧DOS環境のライタを使うかの迷い中。
まずこちらの方です。回路は、というか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ベースデバッグなのでゼロプレッシャーソケットを重ねています。テストピンはちょっと良いものを使用。電源の電解はここまで良いものを使う理由はないですが、当初予定通り。
引き続いて SCN2650A の方も基板まで作りました。こちらは OPACK をどうするかが考えどころです。JIMさんは GND に落としているので、あまり考える必要はないのかも。