1 /*
2 * vim: filetype=c:tabstop=4:ai:expandtab
3 * SPDX-License-Identifier: ICU
4 * scspell-id: 3ceeac54-f62e-11ec-b6e7-80ee73e9b8e7
5 *
6 * ---------------------------------------------------------------------------
7 *
8 * Copyright (c) 2007-2013 Michael Mondy
9 * Copyright (c) 2012-2016 Harry Reed
10 * Copyright (c) 2013-2018 Charles Anthony
11 * Copyright (c) 2026 Eric Swenson
12 * Copyright (c) 2026 Jeffrey H. Johnson
13 * Copyright (c) 2021-2026 The DPS8M Development Team
14 *
15 * This software is made available under the terms of the ICU License.
16 * See the LICENSE.md file at the top-level directory of this distribution.
17 *
18 * ---------------------------------------------------------------------------
19 */
20
21 #if !defined(DPS8_EM_CONSTS_H)
22 # define DPS8_EM_CONSTS_H
23
24 ////////////////
25 //
26 // System components: SCU, IOM, CPU
27 //
28 ////////////////
29
30 // SCU
31 enum { N_SCU_UNITS_MAX = 8 };
32
33 // IOM
34 enum { N_IOM_UNITS_MAX = 4 };
35
36 // CPU
37 enum { N_CPU_UNITS_MAX = 8 };
38
39 ////////////////
40 //
41 // Controllers
42 //
43 ////////////////
44
45 // URP (Unit record processor)
46 enum { N_URP_UNITS_MAX = 16 };
47
48 // ABSI
49 enum { N_ABSI_UNITS_MAX = 1 };
50
51 // MGP (Chaosnet)
52 enum { N_MGP_UNITS_MAX = 2 };
53
54 // NET (Internet)
55 enum { N_NET_UNITS_MAX = 2 };
56
57 // FNP
58 enum { N_FNP_UNITS_MAX = 16 };
59
60 // OPC (Operator console)
61 enum { N_OPC_UNITS_MAX = 8 };
62
63 // MTP
64 enum { N_MTP_UNITS_MAX = 16 };
65
66 // MSP
67 enum { N_MSP_UNITS_MAX = 16 };
68
69 // IPC
70 enum { N_IPC_UNITS_MAX = 16 };
71
72 // DIA
73 enum { N_DIA_UNITS_MAX = 16 };
74
75 ////////////////
76 //
77 // Peripherals
78 //
79 ////////////////
80
81 // Tape drive
82 enum { N_MT_UNITS_MAX = 34 };
83
84 // Printer
85 enum { N_PRT_UNITS_MAX = 34 };
86
87 // Socket controller
88 enum { N_SKC_UNITS_MAX = 64 };
89
90 // Card reader
91 enum { N_RDR_UNITS_MAX = 16 };
92
93 // Card punch
94 enum { N_PUN_UNITS_MAX = 16 };
95
96 // Disk
97 enum { N_DSK_UNITS_MAX = 64 };
98
99 //
100 // Memory
101 //
102
103 enum { MEMSIZE = MEM_SIZE_MAX };
104
105 //
106 // Controller ports
107 //
108
109 enum { MAX_CTLR_PORTS = 8 };
110
111 //
112 // CPU ports
113 //
114
115 enum { N_DPS8M_CPU_PORTS = 4 };
116 enum { N_L68_CPU_PORTS = 8 };
117 enum { N_CPU_PORTS = 8 }; // For data structures, allocate the worst case and enforce limit at run-time
118
119 #endif // DPS8_EM_CONSTS_H