1 /*
2 * vim: filetype=c:tabstop=4:ai:expandtab
3 * SPDX-License-Identifier: ICU
4 * scspell-id: 0538414e-f62f-11ec-8915-80ee73e9b8e7
5 *
6 * ---------------------------------------------------------------------------
7 *
8 * Copyright (c) 2007-2013 Michael Mondy
9 * Copyright (c) 2012-2016 Harry Reed
10 * Copyright (c) 2013-2022 Charles Anthony
11 * Copyright (c) 2021-2023 The DPS8M Development Team
12 *
13 * All rights reserved.
14 *
15 * This software is made available under the terms of the ICU
16 * License, version 1.8.1 or later. For more details, see the
17 * LICENSE.md file at the top-level directory of this distribution.
18 *
19 * ---------------------------------------------------------------------------
20 */
21
22 #ifndef _DPS8_SYS_H
23 # define _DPS8_SYS_H
24
25 # include <uv.h>
26 # include "uvutil.h"
27
28 // System-wide info and options not tied to a specific CPU, IOM, or SCU
29 typedef struct
30 {
31 // Delay times are in cycles; negative for immediate
32 struct
33 {
34 int connect; // Delay between CIOC instr & connect channel operation
35 //int chan_activate; // Time for a list service to send a DCW
36 //int boot_time; // delay between CPU start and IOM starting boot process
37 //int terminate_time; // delay between CPU start and IOM starting boot process
38 } iom_times;
39 // struct {
40 // int read;
41 // int xfer;
42 // } mt_times;
43 // bool warn_uninit; // Warn when reading uninitialized memory
44
45 bool no_color;
46 uint sys_poll_interval; // Polling interval in milliseconds
47 uint sys_slow_poll_interval; // Polling interval in polling intervals
48 uint sys_poll_check_rate; // Check for pooling interval rate in CPU cycles
49 } sysinfo_t;
50
51 # ifdef DBGEVENT
52 # define max_dbgevents 128u
53 # define dbgevent_tagsize 128
54 struct dbgevent_t
55 {
56 word15 segno;
57 word18 offset;
58 bool t0;
59 char tag[dbgevent_tagsize];
60 };
61
62 extern uint n_dbgevents;
63 extern struct dbgevent_t dbgevents[max_dbgevents];
64 extern struct timespec dbgevent_t0;
65 int dbgevent_lookup (word15 segno, word18 offset);
66 # endif
67
68 extern vol word36 * M; //-V707
69 extern sysinfo_t sys_opts;
70 extern uint64 sim_deb_start;
71 extern uint64 sim_deb_stop;
72 extern uint64 sim_deb_break;
73 # define DEBUG_SEGNO_LIMIT 1024
74 extern bool sim_deb_segno_on;
75 extern bool sim_deb_segno[DEBUG_SEGNO_LIMIT];
76 # define NO_SUCH_RINGNO ((uint64) -1ll)
77 extern uint64 sim_deb_ringno;
78 extern uint64 sim_deb_skip_limit;
79 extern uint64 sim_deb_mme_cntdwn;
80 extern uint64 sim_deb_skip_cnt;
81 extern bool sim_deb_bar;
82 extern DEVICE *sim_devices[];
83 extern uint dbgCPUMask;
84 extern bool breakEnable;
85
86 char * lookup_address (word18 segno, word18 offset, char * * compname, word18 * compoffset);
87 void list_source (char * compname, word18 offset, uint dflag);
88 //t_stat computeAbsAddrN (word24 * absAddr, int segno, uint offset);
89
90 t_stat brkbrk (int32 arg, const char * buf);
91 extern int32 luf_flag;
92
93 #endif