From eb359b962fc77e2a3762fc87771e048b579c35b4 Mon Sep 17 00:00:00 2001 From: Lars Brinkhoff Date: Mon, 10 Oct 2022 12:32:28 +0200 Subject: [PATCH] PDP11: Add MB11. --- PDP11/pdp11_defs.h | 1 + PDP11/pdp11_io_lib.c | 2 + PDP11/pdp11_mb.c | 187 ++++++++++++++++++++++++++++ PDP11/pdp11_sys.c | 2 + Visual Studio Projects/PDP11.vcproj | 4 + makefile | 1 + 6 files changed, 197 insertions(+) create mode 100644 PDP11/pdp11_mb.c diff --git a/PDP11/pdp11_defs.h b/PDP11/pdp11_defs.h index b46561aa..62339c7f 100644 --- a/PDP11/pdp11_defs.h +++ b/PDP11/pdp11_defs.h @@ -734,6 +734,7 @@ typedef struct pdp_dib DIB; #define INT_INTERNAL1 (INT_PIR1) #define IPL_UCB 7 /* int pri levels */ +#define IPL_MB 7 #define IPL_CLK 6 #define IPL_PCLK 6 #define IPL_DTA 6 diff --git a/PDP11/pdp11_io_lib.c b/PDP11/pdp11_io_lib.c index b3eeea6c..9d06c803 100644 --- a/PDP11/pdp11_io_lib.c +++ b/PDP11/pdp11_io_lib.c @@ -869,6 +869,8 @@ AUTO_CON auto_tab[] = {/*c #v am vm fxa fxv */ {00104} }, /* DAZ */ { { "TV" }, 1, 0, 0, 0, {04100} }, /* TV - raster display */ + { { "MB" }, 1, 1, 0, 0, + {04000}, {0374} }, /* MB11 */ { { NULL }, -1 } /* end table */ }; diff --git a/PDP11/pdp11_mb.c b/PDP11/pdp11_mb.c new file mode 100644 index 00000000..3ee63514 --- /dev/null +++ b/PDP11/pdp11_mb.c @@ -0,0 +1,187 @@ +/* pdp11_mb.c: MB11, MAR and history registers + + Copyright (c) 2022, Lars Brinkhoff + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the names of the authors shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from the authors. +*/ + +#include "pdp11_defs.h" + +t_stat mb_rd(int32 *data, int32 PA, int32 access); +t_stat mb_wr(int32 data, int32 PA, int32 access); +t_stat mb_reset(DEVICE *dptr); +const char *mb_description (DEVICE *dptr); + +#define HSIZE 64 + +static uint16 MBCSR; +static uint16 MBXHGH; +static uint16 MBXLOW; +static uint16 MBYHGH; +static uint16 MBYLOW; +static uint16 MBHHGH; +static uint16 MBHLOW; +static uint16 MBHCNT; +static uint32 history[HSIZE]; + +/* BITS IN MBCSR */ +#define MBINTE 0100 +#define MBAFRZ 0200 +#define MBXAYR 0400 /* X + + diff --git a/makefile b/makefile index 57d3b3ec..b2f1b11b 100644 --- a/makefile +++ b/makefile @@ -1441,6 +1441,7 @@ PDP11 = ${PDP11D}/pdp11_fp.c ${PDP11D}/pdp11_cpu.c ${PDP11D}/pdp11_dz.c \ ${PDP11D}/pdp11_vt.c ${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_io_lib.c \ ${PDP11D}/pdp11_rom.c ${PDP11D}/pdp11_ch.c ${PDP11D}/pdp11_dh.c \ ${PDP11D}/pdp11_ng.c ${PDP11D}/pdp11_daz.c ${PDP11D}/pdp11_tv.c \ + ${PDP11D}/pdp11_mb.c \ ${DISPLAYL} ${DISPLAYNG} ${DISPLAYVT} PDP11_OPT = -DVM_PDP11 -I ${PDP11D} ${NETWORK_OPT} ${DISPLAY_OPT}