先月の基板の続きと言えるかどうか・・・
今回は1.のm68008_v0(仮称)に関するものです。
https://www.nxp.com/docs/en/reference-manual/MC68000UM.pdf
資料は下記を参照下さい(すみませんが作成中につき、誤記等の可能性があります)。
以下、同資料から抜粋させて頂きます。
1.基本的な考え方

2.ブロック図

3.マップ

4.回路図

5.パタン図(全レイヤ合成)

6.実装ボード(実物)

左上がMC68008FN10(PLCC52)、右上がPSD834F2J90(PLCC52)、左中が4MbitSRAM、左下が16C550(PLCC44)、右下がAE-FT245RL(秋月)です。
パッケージ替えのバージョンでよく見られる様にMC68008でもDIP(L/Psuffix)とPLCC(FNsuffixx)ではアドレス線(68008Pがa0-19の20bitに対して68008FNはa0-21の22bit、つまり4MBのアドレス空間を有し、本機ではそれをを利用しています(1MBに収められない訳でも無かったのですが何となく・・・不人気故かオークションでもFNでも安かったのでつい:)恥ずかしながら68008にPLCCバージョンが存在する事をretroマイコンのサイトを探検して知りました(あはは)。
オーソドックスな構成と思うので説明は省略しますが、ちょっと驚いたのは68008が結構熱い(CMOSでないのであたりまえ)点でボードの消費電流が0.32A(=1.6W)で大半はCPUで消費している様です(ちなみにhc11f_v1では0.05A(=0.25W)。そういえば1980年代にMC68000L10(10MhzセラミックPKG)も結構熱かったような記憶が・・・)
あと開発ツールに関してはhc11f_v1と同じなので割愛させて頂きます(手抜きですみません)。ISP(In System Program)でPLDもFlashROMもPCから(VMWareのXPゲストOS経由で:)ISP出来るので所謂コタツデバッグ(懐かし)が出来るので大変具合が良いのでありました(とまたさりげなくステマ:)。
7.dba(m68008_v0用)
AS V1.42 Beta [Bld 270] - Source File m08k_t3.asm - Page 1 - 2025年11月05日 10時25分16秒
1/ 0 : ; 20250412 : bra * が動くようになる。原因はberr_n or lvl7の未処理(berrタイマーのPIC12F1501未実装、lvl7はpsdの/irq_en未接続)
2/ 0 : ; 20250509 : t3aをベースにcmd対応。t3と非互換
3/ 0 : ; 20250511 : i-chcheをonにする(CACR.IE(bit0)=on)。
4/ 0 : ; 20250512 : dumpルーチンでdump0に戻してなかった。
5/ 0 : ; 20251105 : m68008_v0に移植
6/ 0 : ; : csiop : $23ff00-23ffff, rs0 : $230000-231fff(8k), fs0 : $000000-03ffff(256k)
7/ 0 : ; : pb7 : $23ff05, ramtop : $230000, rambtm : $231ffe
8/ 0 : ;
9/ 0 :
10/ 0 : cpu 68000
11/ 0 : supmode on ; assumed supervisor mode
12/ 0 :
13/ 0 : org 0
14/ 0 :
15/ 0 : =$231FFE STACK equ $00231ffe ; SSP
16/ 0 :
17/ 0 : =$230000 ramtop equ $00230000 ; 0x00230000 - 0x00231fff (8K)
18/ 0 : =$231000 rambtm equ ramtop+$1000 ; 4KB
19/ 0 : =$23FF00 csiop equ $0023ff00 ; csiop
20/ 0 : =$23FF05 pb7 equ csiop+5 ; psd portb7
21/ 0 : =$23FF01 pbin equ csiop+1
22/ 0 : =$200000 ft245 equ $200000 ; ft245 (byte access)
23/ 0 :
24/ 0 : 0023 1FFE dc.l STACK
25/ 4 : 0000 0008 dc.l initstart
26/ 8 :
27/ 8 : ; 初期化(単なる待ち)中はpb7点灯、その後滅灯
28/ 8 : initstart:
29/ 8 : 13FC 0000 0023 FF05 move.b #$00,pb7 ; pb7 = 0(on)
30/ 10 : 203C 0001 0000 move.l #$10000,d0
31/ 16 : 90BC 0000 0001 dly0 sub.l #1,d0
32/ 1C : 66F8 bne dly0
33/ 1E : 13FC 0080 0023 FF05 move.b #$80,pb7 ; pb7 = 1(off)
34/ 26 :
35/ 26 : ; cmd 待ち
36/ 26 : cmd:
37/ 26 : 13FC 0080 0023 FF05 move.b #$80,pb7 ; pb7 led off
38/ 2E : 6100 00BC bsr pbin0 ; 戻り値はd2.b
39/ 32 : 13FC 0000 0023 FF05 move.b #$00,pb7 ; pb7 led on
40/ 3A : B43C 00D1 cmp.b #$d1,d2 ; memory dump?
41/ 3E : 6604 bne cmd1
42/ 40 : 613C bsr memc
43/ 42 : 60E2 bra cmd
44/ 44 : B43C 00D2 cmd1 cmp.b #$d2,d2 ; go ?
45/ 48 : 6604 bne cmd2
46/ 4A : 613A bsr go
47/ 4C : 60D8 bra cmd
48/ 4E : B43C 00D3 cmd2 cmp.b #$d3,d2 ; memory write?
49/ 52 : 6602 bne cmd3
50/ 54 : 610A bsr memw
51/ 56 : B43C 00D0 cmd3 cmp.b #$d0,d2 ; target id?
52/ 5A : 6602 bne cmd4
53/ 5C : 6144 bsr id
54/ 5E : cmd4:
55/ 5E : 60C6 bra cmd
56/ 60 :
57/ 60 : ; memory write cmd execution
58/ 60 : ; cmd(0xd3),adrs(4byte),length(4byte),data(length(data))
59/ 60 : ; exsample : 0xd3,0x00040000,0x00000001,0x5a
60/ 60 : memw:
AS V1.42 Beta [Bld 270] - Source File m08k_t3.asm - Page 2 - 2025年11月05日 10時25分16秒
61/ 60 : 616E bsr adrin ; a1
62/ 62 : 2449 move.l a1,a2 ; adrs = a2
63/ 64 : 616A bsr adrin ; a1
64/ 66 : 2A09 move.l a1,d5 ; length = d5
65/ 68 : 6100 0082 memw0 bsr pbin0 ; d2.b
66/ 6C : 1482 move.b d2,(a2)
67/ 6E : D5FC 0000 0001 add.l #1,a2
68/ 74 : 9ABC 0000 0001 sub.l #1,d5
69/ 7A : 66EC bne memw0
70/ 7C : 4E75 rts
71/ 7E :
72/ 7E : ; memory dump cmd execution
73/ 7E : memc:
74/ 7E : 6150 bsr adrin
75/ 80 : 6100 0084 bsr dump
76/ 84 : 4E75 rts
77/ 86 :
78/ 86 : ; go cmd execution
79/ 86 : ; サブルーチン(関数)として呼び出す。
80/ 86 : go:
81/ 86 : 6148 bsr adrin ; a1
82/ 88 : 4E91 jsr (a1) ; サブルーチンとして呼び出し
83/ 8A : 4E75 rts
84/ 8C : ; 戻ってきたら常に00で返す
85/ 8C : 1039 0023 FF01 go0 move.b pbin,d0 ; ft245 txe待ち
86/ 92 : C03C 0010 and.b #$10,d0
87/ 96 : 66F4 bne go0
88/ 98 : 13FC 0000 0020 0000 move.b #$00,ft245 ; 常に正常終了(00)
89/ A0 : 4E75 rts
90/ A2 :
91/ A2 : ; ターゲット識別情報を通知
92/ A2 : 227C 0000 012E id move.l #tgt_id,a1 ; ターゲット情報(30バイト固定)
93/ A8 : 283C 0000 001E move.l #30,d4
94/ AE : 1039 0023 FF01 id0 move.b pbin,d0
95/ B4 : C03C 0010 and.b #$10,d0
96/ B8 : 66F4 bne id0
97/ BA : 13D1 0020 0000 move.b (a1),ft245
98/ C0 : D3FC 0000 0001 add.l #1,a1
99/ C6 : 98BC 0000 0001 sub.l #1,d4
100/ CC : 66E0 bne id0
101/ CE : 4E75 rts
102/ D0 :
103/ D0 : 4280 adrin clr.l d0
104/ D2 : 6118 bsr pbin0
105/ D4 : 8082 or.l d2,d0
106/ D6 : 6114 bsr pbin0
107/ D8 : E188 lsl.l #8,d0
108/ DA : 8082 or.l d2,d0
109/ DC : 610E bsr pbin0
110/ DE : E188 lsl.l #8,d0
111/ E0 : 8082 or.l d2,d0
112/ E2 : 6108 bsr pbin0
113/ E4 : E188 lsl.l #8,d0
114/ E6 : 8082 or.l d2,d0
115/ E8 : 2240 move.l d0,a1
116/ EA : 4E75 rts
117/ EC :
118/ EC : 1239 0023 FF01 pbin0 move.b pbin,d1
119/ F2 : C23C 0020 and.b #$20,d1
120/ F6 : 66F4 bne pbin0
AS V1.42 Beta [Bld 270] - Source File m08k_t3.asm - Page 3 - 2025年11月05日 10時25分16秒
121/ F8 : 1439 0020 0000 move.b ft245,d2
122/ FE : C4BC 0000 00FF and.l #$ff,d2
123/ 104 : 4E75 rts
124/ 106 :
125/ 106 : 283C 0000 0100 dump move.l #256,d4
126/ 10C : 1039 0023 FF01 dump0 move.b pbin,d0
127/ 112 : C03C 0010 and.b #$10,d0
128/ 116 : 66F4 bne dump0
129/ 118 : 13D1 0020 0000 move.b (a1),ft245
130/ 11E : D3FC 0000 0001 add.l #1,a1
131/ 124 : 98BC 0000 0001 sub.l #1,d4
132/ 12A : 66E0 bne dump0
133/ 12C : 4E75 rts
134/ 12E :
135/ 12E : ; ターゲット識別情報(単なる文字列、30文字固定)
136/ 12E : ; 123456789012345678901234567890
137/ 12E : 6D36 3830 3038 5F76 tgt_id dc.b 'm68008_v0:20251105E00a '
136 : 303A 3230 3235 3131
13E : 3035 4530 3061 2020
146 : 2020 2020 2020
138/ 14C :
139/ 14C :
140/ 14C : end
AS V1.42 Beta [Bld 270] - Source File m08k_t3.asm - Page 4 - 2025年11月05日 10時25分16秒
Symbol Table (* = unused):
--------------------------ADRIN : D0 C |
*ARCHITECTURE : "x86_64-unknown-linux" - |
*CASESENSITIVE : 0 - | CMD : 26 C |
CMD1 : 44 C | CMD2 : 4E C |
CMD3 : 56 C | CMD4 : 5E C |
*CONSTPI : 3.141592653589793 - | CSIOP : 23FF00 - |
*DATE : "2025\-027\-071\-07611\-026\-100\-12005\-026\-105\-091" - |
DLY0 : 16 C | DUMP : 106 C |
DUMP0 : 10C C | *FALSE : 0 - |
FT245 : 200000 - | *FULLPMMU : 1 - |
GO : 86 C | GO0 : 8C C |
*HAS64 : 1 - | *HASFPU : 0 - |
*HASPMMU : 0 - | ID : A2 C |
ID0 : AE C | INITSTART : 8 C |
*INSUPMODE : 1 - | *LISTON : 1 - |
*MACEXP : 7 - | MEMC : 7E C |
MEMW : 60 C | MEMW0 : 68 C |
*MOMCPU : 68000 - | *MOMCPUNAME : "68000" - |
*NESTMAX : 100 - | *PADDING : 1 - |
PB7 : 23FF05 - | PBIN : 23FF01 - |
PBIN0 : EC C | *RAMBTM : 231000 - |
RAMTOP : 230000 - | *RELAXED : 0 - |
STACK : 231FFE - | TGT_ID : 12E C |
*TIME : "10\-026\-103\-12625\-027\-120\-12216\-025\-089\-110" - |
*TRUE : 1 - | *VERSION : 142F - |46 symbols
21 unused symbolsAS V1.42 Beta [Bld 270] - Source File m08k_t3.asm - Page 5 - 2025年11月05日 10時25分16秒
Code Pages:
----------STANDARD (0 changed characters)
1 code page
0.08 seconds assembly time
142 lines source file
4 passes
0 errors
0 warnings
8.retro μP tool画面

ターゲット名がm68008_v0になっただけで感動に薄いのですがホスト側のpython(tkeasygui)ツールを使いまわしているので楽で良いです(個人的には)。

9.PLD論理式(抜粋)
========= Equations =========
DPLD
EQUATIONS :
=======================
fs0 = !pdn & !a16 & !a15 & !a21 & !a20 & !a17;
fs1 = !pdn & !a16 & a15 & !a21 & !a20 & !a17;
fs2 = !pdn & a16 & !a15 & !a21 & !a20 & !a17;fs3 = !pdn & a16 & a15 & !a21 & !a20 & !a17;
fs4 = !pdn & !a16 & !a15 & !a21 & !a20 & a17;
fs5 = !pdn & !a16 & a15 & !a21 & !a20 & a17;
fs6 = !pdn & a16 & !a15 & !a21 & !a20 & a17;
fs7 = !pdn & a16 & a15 & !a21 & !a20 & a17;
7;
csiop = !pdn & a16 & a15 & a14 & a13 & a12 & a11 & a10 & a9 & a8 & a21 & !a20 & a1
rs0 = !pdn & a16 & !a15 & !a14 & !a13 & !a12 & a21 & !a20 & a17;
PORTA
EQUATIONS :
=======================
PORTB
EQUATIONS :
=======================
!nCF = a16 & !_as & !a15 & !a14 & !a13 & a12 & a21 & !a20 & !a17;
nCF.OE = _reset;
!nIORQ = !a16 & !_as & a21 & !a20 & a17;
nIORQ.OE = _reset;
!nCS16550 = a16 & !_as & !a15 & !a14 & !a13 & !a12 & a21 & !a20 & !a17;
nCS16550.OE = _reset;
!nWR = !_as & !r_w;
nWR.OE = _reset;
nWR.LE = 1;
pb7.OE = _reset;
PORTC
EQUATIONS :
=======================
!nFT245RD = !a16 & !nRD.PIN & a21 & !a20 & !a17;
nFT245RD.OE = _reset;
FT245WR = !a16 & a21 & !a20 & !a17 & !nWR.PIN;
FT245WR.OE = _reset;
!nRAM = !_as & !a21 & a20;
nRAM.OE = _reset;
!nRD = !_as & r_w;
nRD.OE = _reset;
nRD.LE = 1;
10.まとめ
・m68008_v0(仮称)を組立て、動作を確認しました。バグは16c550のcs0,cs1をLにスタックしている為、要改造(しょんぼり)。FT245で開発は出来るので後程(2層なので改造は可能)。
・dba(debug agent の略のつもり:)はm68030_v0のそれをベースに修正。転がせるベースが有ると楽で良いです:)
・SBCと言いながらIOに乏しいのでブレークアウトボード的なポジションで終了かもしれません。チップが熱いのもアレなのでMC68HC001を8bit modeで組むと宜しいのかもしれません(結構、オークションでは高いのですが)。