mirror of
https://github.com/simh/simh.git
synced 2026-02-13 03:15:25 +00:00
Notes For V2.9-11
1. New Features 1.1 GRI-909 - This is a new simulator for the GRI-909. - It has been hand-tested; so far, no software has been discovered. 1.2 VAX - SET CPU CONHALT will cause a HALT instruction to return to the boot ROM console rather than to SIMH. SET CPU SIMHALT restores the default behavior. - BRB/W self at IPL 1F stops the simulator. This is the default behavior of VMS at exit. 1.3 PDP-18b - ATTACH -A PTR/PTP attaches the reader and punch in ASCII mode. In ASCII mode, the reader automatically sets the high order bit of incoming alphabetic data, and the punch clears the high order bit of outgoing data. 1.4 SCP - DO -V echoes commands from the file as they are executed. - Under Windows, execution priority is set BELOW_NORMAL when the simulator is running. 2. Release Notes 2.1 Bugs Fixed - PDP-11 CPU: fixed updating of MMR0 on a memory management error. - VAX FPA: changed function names to avoid conflict with C math library. - 1401 MT: read end of record generates group mark without word mark. - 1401 DP: fixed address generation and checking. - SCP: an EXIT within a DO command will cause the simulator to exit. 3. In Progress - Interdata 16b/32b: coded, not tested. - SDS 940: coded, not tested. - IBM 1620: coded, not tested. If you would like to help with the debugging of the untested simulators, they can be made available by special request.
This commit is contained in:
committed by
Mark Pizzolato
parent
701f0fe028
commit
df6475181c
@@ -2,8 +2,8 @@
|
||||
|
||||
Modified from the original NOVA simulator by Robert Supnik.
|
||||
|
||||
Copyright (c) 1998-2001, Charles E Owen
|
||||
Portions Copyright (c) 1993-2001, Robert M Supnik
|
||||
Copyright (c) 1998-2002, Charles E Owen
|
||||
Portions Copyright (c) 1993-2002, Robert M Supnik
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
cpu Eclipse central processor
|
||||
|
||||
28-Jan-02 RMS Cleaned up compiler warnings
|
||||
30-Nov-01 RMS Added extended SET/SHOW support
|
||||
01-Jun-01 RMS Added second terminal, plotter support
|
||||
26-Apr-01 RMS Added device enable/disable support
|
||||
@@ -431,6 +432,7 @@ t_stat map_svc (UNIT *uptr);
|
||||
int32 GetMap(int32 addr);
|
||||
int32 PutMap(int32 addr, int32 data);
|
||||
int32 Debug_Entry(int32 PC, int32 inst, int32 inst2, int32 AC0, int32 AC1, int32 AC2, int32 AC3, int32 flags);
|
||||
|
||||
extern int32 ptr (int32 pulse, int32 code, int32 AC);
|
||||
extern int32 ptp (int32 pulse, int32 code, int32 AC);
|
||||
extern int32 tti (int32 pulse, int32 code, int32 AC);
|
||||
@@ -444,8 +446,7 @@ extern int32 dsk (int32 pulse, int32 code, int32 AC);
|
||||
extern int32 dkp (int32 pulse, int32 code, int32 AC);
|
||||
extern int32 mta (int32 pulse, int32 code, int32 AC);
|
||||
int32 nulldev (int32 pulse, int32 code, int32 AC);
|
||||
extern t_stat sim_activate (UNIT *uptr, int32 delay);
|
||||
t_stat fprint_sym (FILE *of, t_addr addr, t_value *val,
|
||||
extern t_stat fprint_sym (FILE *of, t_addr addr, t_value *val,
|
||||
UNIT *uptr, int32 sw);
|
||||
|
||||
/* IOT dispatch table */
|
||||
@@ -1640,7 +1641,7 @@ if ((IR & 0100017) == 0100010) { /* This pattern for all */
|
||||
AC[3] = da;
|
||||
d = GetMap(GetMap(044) + op);
|
||||
PC = indirect(d) & AMASK;
|
||||
if ((GetMap(040) & AMASK) > GetMap(042) & AMASK) {
|
||||
if ((GetMap(040) & AMASK) > (GetMap(042) & AMASK)) {
|
||||
pushrtn(PC);
|
||||
PC = indirect(GetMap(043));
|
||||
PutMap(040, (GetMap(040) & 077777));
|
||||
@@ -3406,6 +3407,42 @@ int32 Debug_Dump(UNIT *uptr, int32 val, char *cptr, void *desc)
|
||||
ctr = 0;
|
||||
}
|
||||
fclose(Dumpf);
|
||||
printf("\n%d records dumped to history.log\n");
|
||||
printf("\n%d records dumped to history.log\n", count);
|
||||
return SCPE_OK;
|
||||
}
|
||||
|
||||
/* Device enable routine */
|
||||
|
||||
t_stat set_enb (UNIT *uptr, int32 val, char *cptr, void *desc)
|
||||
{
|
||||
DEVICE *dptr;
|
||||
|
||||
if (cptr != NULL) return SCPE_ARG;
|
||||
if ((uptr == NULL) || (val == 0)) return SCPE_IERR;
|
||||
dptr = find_dev_from_unit (uptr);
|
||||
if (dptr == NULL) return SCPE_IERR;
|
||||
iot_enb = iot_enb | val;
|
||||
if (dptr -> reset) dptr -> reset (dptr);
|
||||
return SCPE_OK;
|
||||
}
|
||||
|
||||
/* Device disable routine */
|
||||
|
||||
t_stat set_dsb (UNIT *uptr, int32 val, char *cptr, void *desc)
|
||||
{
|
||||
int32 i;
|
||||
DEVICE *dptr;
|
||||
UNIT *up;
|
||||
|
||||
if (cptr != NULL) return SCPE_ARG;
|
||||
if ((uptr == NULL) || (val == 0)) return SCPE_IERR;
|
||||
dptr = find_dev_from_unit (uptr);
|
||||
if (dptr == NULL) return SCPE_IERR;
|
||||
for (i = 0; i < dptr -> numunits; i++) { /* check units */
|
||||
up = (dptr -> units) + i;
|
||||
if ((up -> flags & UNIT_ATT) || sim_is_active (up))
|
||||
return SCPE_NOFNC; }
|
||||
iot_enb = iot_enb & ~val;
|
||||
if (dptr -> reset) dptr -> reset (dptr);
|
||||
return SCPE_OK;
|
||||
}
|
||||
|
||||
@@ -1,27 +1,32 @@
|
||||
/* eclipse_tt.c: Eclipse console terminal simulator
|
||||
|
||||
Copyright (c) 1993-1997,
|
||||
Robert M Supnik, Digital Equipment Corporation
|
||||
Copyright (c) 1998-2002, Charles E Owen
|
||||
Portions copyright (c) 1993-2002, Robert M Supnik
|
||||
Written by Charles Owen, used by gracious permission
|
||||
Commercial use prohibited
|
||||
|
||||
tti terminal input
|
||||
tto terminal output
|
||||
|
||||
30-May-02 RMS Widened POS to 32b
|
||||
28-Jan-02 RMS Cleaned up compiler warnings
|
||||
*/
|
||||
|
||||
#include "nova_defs.h"
|
||||
|
||||
#define UNIT_V_DASHER (UNIT_V_UF + 0) /* Dasher mode */
|
||||
#define UNIT_DASHER (1 << UNIT_V_DASHER)
|
||||
|
||||
extern int32 int_req, dev_busy, dev_done, dev_disable;
|
||||
|
||||
t_stat tti_svc (UNIT *uptr);
|
||||
t_stat tto_svc (UNIT *uptr);
|
||||
t_stat tti_reset (DEVICE *dptr);
|
||||
t_stat tto_reset (DEVICE *dptr);
|
||||
t_stat ttx_setmod (UNIT *uptr, int32 value);
|
||||
extern t_stat sim_activate (UNIT *uptr, int32 delay);
|
||||
extern t_stat sim_cancel (UNIT *uptr);
|
||||
extern t_stat sim_poll_kbd (void);
|
||||
extern t_stat sim_putchar (int32 out);
|
||||
void translate_in();
|
||||
int32 translate_out(int32 c);
|
||||
int32 putseq(char *seq);
|
||||
|
||||
/* TTI data structures
|
||||
|
||||
@@ -39,7 +44,7 @@ REG tti_reg[] = {
|
||||
{ FLDATA (DONE, dev_done, INT_V_TTI) },
|
||||
{ FLDATA (DISABLE, dev_disable, INT_V_TTI) },
|
||||
{ FLDATA (INT, int_req, INT_V_TTI) },
|
||||
{ DRDATA (POS, tti_unit.pos, 31), PV_LEFT },
|
||||
{ DRDATA (POS, tti_unit.pos, 32), PV_LEFT },
|
||||
{ DRDATA (TIME, tti_unit.wait, 24), REG_NZ + PV_LEFT },
|
||||
{ FLDATA (MODE, tti_unit.flags, UNIT_V_DASHER), REG_HRO },
|
||||
{ NULL } };
|
||||
@@ -70,7 +75,7 @@ REG tto_reg[] = {
|
||||
{ FLDATA (DONE, dev_done, INT_V_TTO) },
|
||||
{ FLDATA (DISABLE, dev_disable, INT_V_TTO) },
|
||||
{ FLDATA (INT, int_req, INT_V_TTO) },
|
||||
{ DRDATA (POS, tto_unit.pos, 31), PV_LEFT },
|
||||
{ DRDATA (POS, tto_unit.pos, 32), PV_LEFT },
|
||||
{ DRDATA (TIME, tto_unit.wait, 24), PV_LEFT },
|
||||
{ FLDATA (MODE, tto_unit.flags, UNIT_V_DASHER), REG_HRO },
|
||||
{ NULL } };
|
||||
@@ -132,7 +137,7 @@ int spec200 = 0; /* signals next char is 'special' */
|
||||
|
||||
/* Translation: Vt100 input to D200 keycodes. */
|
||||
|
||||
int32 translate_in()
|
||||
void translate_in()
|
||||
{
|
||||
char rev = 0;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* nova_clk.c: NOVA real-time clock simulator
|
||||
|
||||
Copyright (c) 1993-2001, Robert M. Supnik
|
||||
Copyright (c) 1993-2002, Robert M. Supnik
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* nova_cpu.c: NOVA CPU simulator
|
||||
|
||||
Copyright (c) 1993-2001, Robert M. Supnik
|
||||
Copyright (c) 1993-2002, Robert M. Supnik
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
cpu Nova central processor
|
||||
|
||||
30-Dec-01 RMS Added old PC queue
|
||||
07-Dec-01 RMS Revised to use breakpoint package
|
||||
30-Nov-01 RMS Added extended SET/SHOW support
|
||||
10-Aug-01 RMS Removed register in declarations
|
||||
@@ -202,6 +203,10 @@
|
||||
|
||||
#include "nova_defs.h"
|
||||
|
||||
#define PCQ_SIZE 64 /* must be 2**n */
|
||||
#define PCQ_MASK (PCQ_SIZE - 1)
|
||||
#define PCQ_ENTRY pcq[pcq_p = (pcq_p - 1) & PCQ_MASK] = PC
|
||||
|
||||
#define INCA(x) (((x) + 1) & AMASK)
|
||||
#define DECA(x) (((x) - 1) & AMASK)
|
||||
#define SEXT(x) (((x) & SIGN)? ((x) | ~DMASK): (x))
|
||||
@@ -241,7 +246,9 @@ int32 pimask = 0; /* priority int mask */
|
||||
int32 pwr_low = 0; /* power fail flag */
|
||||
int32 ind_max = 16; /* iadr nest limit */
|
||||
int32 stop_dev = 0; /* stop on ill dev */
|
||||
int32 old_PC = 0; /* previous PC */
|
||||
uint16 pcq[PCQ_SIZE] = { 0 }; /* PC queue */
|
||||
int32 pcq_p = 0; /* PC queue ptr */
|
||||
REG *pcq_r = NULL; /* PC queue reg ptr */
|
||||
extern int32 sim_int_char;
|
||||
extern int32 sim_brk_types, sim_brk_dflt, sim_brk_summ; /* breakpoint info */
|
||||
|
||||
@@ -336,14 +343,15 @@ REG cpu_reg[] = {
|
||||
{ FLDATA (ISTK, cpu_unit.flags, UNIT_V_STK), REG_HRO },
|
||||
{ FLDATA (IBYT, cpu_unit.flags, UNIT_V_BYT), REG_HRO },
|
||||
{ DRDATA (INDMAX, ind_max, 16), REG_NZ + PV_LEFT },
|
||||
{ ORDATA (OLDPC, old_PC, 15), REG_RO },
|
||||
{ BRDATA (PCQ, pcq, 8, 16, PCQ_SIZE), REG_RO+REG_CIRC },
|
||||
{ ORDATA (PCQP, pcq_p, 6), REG_HRO },
|
||||
{ ORDATA (WRU, sim_int_char, 8) },
|
||||
{ ORDATA (IOTENB, iot_enb, 32), REG_HRO },
|
||||
{ NULL } };
|
||||
|
||||
MTAB cpu_mod[] = {
|
||||
{ UNIT_IOPT, UNIT_NOVA4, "NOVA4", "NOVA4", NULL },
|
||||
{ UNIT_IOPT, UNIT_NOVA3, "NOVA3", "NOVA3", NULL },
|
||||
{ UNIT_IOPT, UNIT_NOVA4, "NOVA4", "NOVA4", NULL },
|
||||
{ UNIT_IOPT, UNIT_MDV, "MDV", "MDV", NULL },
|
||||
{ UNIT_IOPT, 0, "none", "NONE", NULL },
|
||||
{ UNIT_MSIZE, 4096, NULL, "4K", &cpu_set_size },
|
||||
@@ -386,8 +394,9 @@ if (sim_interval <= 0) { /* check clock queue */
|
||||
|
||||
if (int_req > INT_PENDING) { /* interrupt? */
|
||||
int32 MA, indf;
|
||||
int_req = int_req & ~INT_ION;
|
||||
old_PC = M[INT_SAV] = PC;
|
||||
int_req = int_req & ~INT_ION; /* intr off */
|
||||
PCQ_ENTRY; /* save old PC */
|
||||
M[INT_SAV] = PC;
|
||||
if (int_req & INT_STK) { /* stack overflow? */
|
||||
int_req = int_req & ~INT_STK; /* clear */
|
||||
MA = STK_JMP; } /* jmp @3 */
|
||||
@@ -470,8 +479,9 @@ if (IR & I_OPR) { /* operate? */
|
||||
switch (I_GETSKP (IR)) { /* decode skip */
|
||||
case 0: /* nop */
|
||||
if ((IR & I_NLD) && (cpu_unit.flags & UNIT_STK)) {
|
||||
int32 indf, MA; /* Nova 3 or 4 trap */
|
||||
old_PC = M[TRP_SAV] = (PC - 1) & AMASK;
|
||||
int32 indf, MA; /* Nova 3 or 4 trap */
|
||||
PCQ_ENTRY; /* save old PC */
|
||||
M[TRP_SAV] = (PC - 1) & AMASK;
|
||||
MA = TRP_JMP; /* jmp @47 */
|
||||
for (i = 0, indf = 1; indf && (i < ind_max); i++) {
|
||||
indf = IND_STEP (MA); } /* resolve ind */
|
||||
@@ -541,7 +551,7 @@ else if (IR < 060000) { /* mem ref? */
|
||||
case 001: /* JSR */
|
||||
AC[3] = PC;
|
||||
case 000: /* JMP */
|
||||
old_PC = PC;
|
||||
PCQ_ENTRY;
|
||||
PC = MA;
|
||||
break;
|
||||
case 002: /* ISZ */
|
||||
@@ -675,7 +685,7 @@ else { /* IOT */
|
||||
AC[3] = FP = SP & AMASK;
|
||||
STK_CHECK (SP, 5); }
|
||||
if (pulse == iopC) { /* retn */
|
||||
old_PC = PC;
|
||||
PCQ_ENTRY;
|
||||
SP = FP & AMASK;
|
||||
C = (M[SP] << 1) & CBIT;
|
||||
PC = M[SP] & AMASK;
|
||||
@@ -791,6 +801,7 @@ else { /* IOT */
|
||||
/* Simulation halted */
|
||||
|
||||
saved_PC = PC;
|
||||
pcq_r -> qptr = pcq_p; /* update pc q ptr */
|
||||
return reason;
|
||||
}
|
||||
|
||||
@@ -823,6 +834,9 @@ int_req = int_req & ~(INT_ION | INT_STK);
|
||||
pimask = 0;
|
||||
dev_disable = 0;
|
||||
pwr_low = 0;
|
||||
pcq_r = find_reg ("PCQ", NULL, dptr);
|
||||
if (pcq_r) pcq_r -> qptr = 0;
|
||||
else return SCPE_IERR;
|
||||
sim_brk_types = sim_brk_dflt = SWMASK ('E');
|
||||
return SCPE_OK;
|
||||
}
|
||||
@@ -912,3 +926,46 @@ for (i = 0; i < BOOT_LEN; i++) M[BOOT_START + i] = boot_rom[i];
|
||||
saved_PC = BOOT_START;
|
||||
return SCPE_OK;
|
||||
}
|
||||
|
||||
/* Device enable routine */
|
||||
|
||||
t_stat set_enb (UNIT *uptr, int32 val, char *cptr, void *desc)
|
||||
{
|
||||
DEVICE *dptr;
|
||||
|
||||
if (cptr != NULL) return SCPE_ARG;
|
||||
if ((uptr == NULL) || (val == 0)) return SCPE_IERR;
|
||||
dptr = find_dev_from_unit (uptr);
|
||||
if (dptr == NULL) return SCPE_IERR;
|
||||
iot_enb = iot_enb | val;
|
||||
if (dptr -> reset) dptr -> reset (dptr);
|
||||
return SCPE_OK;
|
||||
}
|
||||
|
||||
/* Device disable routine */
|
||||
|
||||
t_stat set_dsb (UNIT *uptr, int32 val, char *cptr, void *desc)
|
||||
{
|
||||
int32 i;
|
||||
DEVICE *dptr;
|
||||
UNIT *up;
|
||||
|
||||
if (cptr != NULL) return SCPE_ARG;
|
||||
if ((uptr == NULL) || (val == 0)) return SCPE_IERR;
|
||||
dptr = find_dev_from_unit (uptr);
|
||||
if (dptr == NULL) return SCPE_IERR;
|
||||
for (i = 0; i < dptr -> numunits; i++) { /* check units */
|
||||
up = (dptr -> units) + i;
|
||||
if ((up -> flags & UNIT_ATT) || sim_is_active (up))
|
||||
return SCPE_NOFNC; }
|
||||
iot_enb = iot_enb & ~val;
|
||||
if (dptr -> reset) dptr -> reset (dptr);
|
||||
return SCPE_OK;
|
||||
}
|
||||
|
||||
/* 1-to-1 map for I/O devices */
|
||||
|
||||
int32 MapAddr (int32 map, int32 addr)
|
||||
{
|
||||
return addr;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* nova_defs.h: NOVA/Eclipse simulator definitions
|
||||
|
||||
Copyright (c) 1993-2001, Robert M. Supnik
|
||||
Copyright (c) 1993-2002, Robert M. Supnik
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
@@ -233,3 +233,9 @@ struct ndev {
|
||||
/* #define PI_DCM 0100000 */
|
||||
/* #define PI_CAS 0000040 */
|
||||
/* #define PI_ADCV 0000002 */
|
||||
|
||||
/* Function prototypes */
|
||||
|
||||
int32 MapAddr (int32 map, int32 addr);
|
||||
t_stat set_enb (UNIT *uptr, int32 val, char *cptr, void *desc);
|
||||
t_stat set_dsb (UNIT *uptr, int32 val, char *cptr, void *desc);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* nova_dkp.c: NOVA moving head disk simulator
|
||||
|
||||
Copyright (c) 1993-2001, Robert M. Supnik
|
||||
Copyright (c) 1993-2002, Robert M. Supnik
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
dkp moving head disk
|
||||
|
||||
06-Jan-02 RMS Revised enable/disable support
|
||||
30-Nov-01 RMS Added read only unit, extended SET/SHOW support
|
||||
24-Nov-01 RMS Changed FLG, CAPAC to arrays
|
||||
26-Apr-01 RMS Added device enable/disable support
|
||||
@@ -286,11 +287,6 @@ t_stat dkp_boot (int32 unitno);
|
||||
t_stat dkp_attach (UNIT *uptr, char *cptr);
|
||||
t_stat dkp_go (void);
|
||||
t_stat dkp_set_size (UNIT *uptr, int32 val, char *cptr, void *desc);
|
||||
#if defined (ECLIPSE)
|
||||
extern int32 MapAddr (int32 map, int32 addr);
|
||||
#else
|
||||
#define MapAddr(m,a) (a)
|
||||
#endif
|
||||
|
||||
/* DKP data structures
|
||||
|
||||
@@ -329,7 +325,7 @@ REG dkp_reg[] = {
|
||||
{ NULL } };
|
||||
|
||||
MTAB dkp_mod[] = {
|
||||
{ UNIT_WLK, 0, "write enabled", "ENABLED", NULL },
|
||||
{ UNIT_WLK, 0, "write enabled", "WRITEENABLED", NULL },
|
||||
{ UNIT_WLK, UNIT_WLK, "write locked", "LOCKED", NULL },
|
||||
{ (UNIT_DTYPE+UNIT_ATT), (TYPE_FLP << UNIT_V_DTYPE) + UNIT_ATT,
|
||||
"6030 (floppy)", NULL, NULL },
|
||||
@@ -423,6 +419,8 @@ MTAB dkp_mod[] = {
|
||||
NULL, "4231", &dkp_set_size },
|
||||
{ (UNIT_AUTO+UNIT_DTYPE), (TYPE_4231 << UNIT_V_DTYPE),
|
||||
NULL, "3330", &dkp_set_size },
|
||||
{ MTAB_XTD|MTAB_VDV, INT_DKP, NULL, "ENABLED", &set_enb },
|
||||
{ MTAB_XTD|MTAB_VDV, INT_DKP, NULL, "DISABLED", &set_dsb },
|
||||
{ 0 } };
|
||||
|
||||
DEVICE dkp_dev = {
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
To: Users
|
||||
From: Bob Supnik
|
||||
Subj: Nova Simulator Usage
|
||||
Date: 1-Dec-01
|
||||
Date: 15-Jun-2002
|
||||
|
||||
COPYRIGHT NOTICE
|
||||
|
||||
The following copyright notice applies to both the SIMH source and binary:
|
||||
|
||||
Original code published in 1993-2001, written by Robert M Supnik
|
||||
Copyright (c) 1993-2001, Robert M Supnik
|
||||
Original code published in 1993-2002, written by Robert M Supnik
|
||||
Copyright (c) 1993-2002, Robert M Supnik
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
@@ -68,7 +68,7 @@ CPU Nova CPU with 32KW of memory
|
||||
- hardware multiply/divide
|
||||
PTR,PTP paper tape reader/punch
|
||||
TTI,TTO console terminal
|
||||
TTI1,TTO1 second terminal
|
||||
TTI1,TTO1 second terminal
|
||||
LPT line printer
|
||||
PLT plotter
|
||||
CLK real-time clock
|
||||
@@ -76,7 +76,7 @@ DK head-per-track disk controller
|
||||
DP moving head disk controller with four drives
|
||||
MT magnetic tape controller with eight drives
|
||||
|
||||
The TTI1/TTO1, PLT, DK, DP, and MT devices can be DISABLEd.
|
||||
The TTI1/TTO1, PLT, DK, DP, and MT devices can be set DISABLED.
|
||||
|
||||
The Nova simulator implements these unique stop conditions:
|
||||
|
||||
@@ -134,7 +134,8 @@ control registers for the interrupt system.
|
||||
DISABLE 15 device interrupt disable flags
|
||||
STOP_DEV 1 stop on undefined IOT
|
||||
INDMAX 15 maximum number of nested indirects
|
||||
OLDPC 15 PC prior to last JMP, JMS, or interrupt
|
||||
PCQ[0:63] 15 PC prior to last JMP, JMS, or interrupt;
|
||||
most recent PC change first
|
||||
WRU 8 interrupt character
|
||||
|
||||
2.2 Programmed I/O Devices
|
||||
@@ -154,7 +155,7 @@ The paper tape reader implements these registers:
|
||||
DONE 1 device done flag
|
||||
DISABLE 1 interrupt disable flag
|
||||
INT 1 interrupt pending flag
|
||||
POS 31 position in the input file
|
||||
POS 32 position in the input file
|
||||
TIME 24 time from I/O initiation to interrupt
|
||||
STOP_IOE 1 stop on I/O error
|
||||
|
||||
@@ -185,7 +186,7 @@ The paper tape punch implements these registers:
|
||||
DONE 1 device done flag
|
||||
DISABLE 1 interrupt disable flag
|
||||
INT 1 interrupt pending flag
|
||||
POS 31 position in the output file
|
||||
POS 32 position in the output file
|
||||
TIME 24 time from I/O initiation to interrupt
|
||||
STOP_IOE 1 stop on I/O error
|
||||
|
||||
@@ -219,7 +220,7 @@ The terminal input implements these registers:
|
||||
DONE 1 device done flag
|
||||
DISABLE 1 interrupt disable flag
|
||||
INT 1 interrupt pending flag
|
||||
POS 31 number of characters input
|
||||
POS 32 number of characters input
|
||||
TIME 24 keyboard polling interval
|
||||
|
||||
2.2.4 Terminal Output (TTO)
|
||||
@@ -243,7 +244,7 @@ The terminal output implements these registers:
|
||||
DONE 1 device done flag
|
||||
DISABLE 1 interrupt disable flag
|
||||
INT 1 interrupt pending flag
|
||||
POS 31 number of characters output
|
||||
POS 32 number of characters output
|
||||
TIME 24 time from I/O initiation to interrupt
|
||||
|
||||
2.2.5 Line Printer (LPT)
|
||||
@@ -261,7 +262,7 @@ The line printer implements these registers:
|
||||
DONE 1 device done flag
|
||||
DISABLE 1 interrupt disable flag
|
||||
INT 1 interrupt pending flag
|
||||
POS 31 position in the output file
|
||||
POS 32 position in the output file
|
||||
TIME 24 time from I/O initiation to interrupt
|
||||
STOP_IOE 1 stop on I/O error
|
||||
|
||||
@@ -308,7 +309,7 @@ The plotter implements these registers:
|
||||
DONE 1 device done flag
|
||||
DISABLE 1 interrupt disable flag
|
||||
INT 1 interrupt pending flag
|
||||
POS 31 position in the output file
|
||||
POS 32 position in the output file
|
||||
TIME 24 time from I/O initiation to interrupt
|
||||
STOP_IOE 1 stop on I/O error
|
||||
|
||||
@@ -328,7 +329,7 @@ The additional terminal performs input and output through a Telnet session
|
||||
connecting into a user-specified port. The ATTACH command specifies the
|
||||
port to be used:
|
||||
|
||||
ATTACH TTI1 <port>(cr) -- set up listening port
|
||||
ATTACH TTI1 <port> set up listening port
|
||||
|
||||
where port is a decimal number between 1 and 65535 that is not being used
|
||||
for other TCP/IP activities.
|
||||
@@ -349,8 +350,9 @@ setting limited Dasher-compatibility mode or ANSI mode:
|
||||
Setting either TTI1 or TTO1 changes both devices. In Dasher mode, carriage
|
||||
return is changed to newline on input, and ^X is changed to backspace.
|
||||
|
||||
The SHOW TTI1 LINESTATUS command displays the current connection to the
|
||||
second terminal.
|
||||
The SHOW TTI1 CONNECTIONS command displays the current connection to TTI1.
|
||||
The SHOW TTI1 STATISTICS command displays statistics for the current connection.
|
||||
The SET TTI1 DISCONNECT{=0} disconnects the current connection.
|
||||
|
||||
The second terminal input implements these registers:
|
||||
|
||||
@@ -361,7 +363,6 @@ The second terminal input implements these registers:
|
||||
DONE 1 device done flag
|
||||
DISABLE 1 interrupt disable flag
|
||||
INT 1 interrupt pending flag
|
||||
POS 31 number of characters input
|
||||
TIME 24 keyboard polling interval
|
||||
|
||||
The second terminal output implements these registers:
|
||||
@@ -373,7 +374,6 @@ The second terminal output implements these registers:
|
||||
DONE 1 device done flag
|
||||
DISABLE 1 interrupt disable flag
|
||||
INT 1 interrupt pending flag
|
||||
POS 31 number of characters output
|
||||
TIME 24 time from I/O initiation to interrupt
|
||||
|
||||
2.3 Fixed Head Disk (DK)
|
||||
@@ -411,7 +411,7 @@ Moving head disk options include the ability to make units write enabled or
|
||||
write locked, and to select the type of drive:
|
||||
|
||||
SET DPn LOCKED set unit n write locked
|
||||
SET DPn ENABLED set unit n write enabled
|
||||
SET DPn WRITEENABLED set unit n write enabled
|
||||
SET DPn FLOPPY set unit n to floppy disk
|
||||
SET DPn D31 set unit n to Diablo 31
|
||||
SET DPn D44 set unit n to Diablo 44
|
||||
@@ -424,8 +424,8 @@ write locked, and to select the type of drive:
|
||||
SET DPn 6103 set unit n to 6103
|
||||
SET DPn 4231 set unit n to 4231
|
||||
|
||||
Units can also be REMOVEd or ADDed to the configuration. The moving head
|
||||
disk controller supports the BOOT command.
|
||||
Units can also be set ONLINE or OFFLINE. The moving head disk controller
|
||||
supports the BOOT command.
|
||||
|
||||
All drives have 256 16b words per sector. The other disk parameters are:
|
||||
|
||||
@@ -474,10 +474,10 @@ Magnetic tape options include the ability to make units write enabled or
|
||||
or write locked.
|
||||
|
||||
SET MTn LOCKED set unit n write locked
|
||||
SET MTn ENABLED set unit n write enabled
|
||||
SET MTn WRITEENABLED set unit n write enabled
|
||||
|
||||
Units can also be REMOVEd or ADDed to the configuration. The magnetic
|
||||
tape controller supports the BOOT command.
|
||||
Units can also be set ONLINE or OFFLINE. The magnetic tape controller
|
||||
supports the BOOT command.
|
||||
|
||||
The magnetic tape controller implements these registers:
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* nova_dsk.c: 4019 fixed head disk simulator
|
||||
|
||||
Copyright (c) 1993-2001, Robert M. Supnik
|
||||
Copyright (c) 1993-2002, Robert M. Supnik
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
dsk fixed head disk
|
||||
|
||||
06-Jan-02 RMS Revised enable/disable support
|
||||
23-Aug-01 RMS Fixed bug in write watermarking
|
||||
26-Apr-01 RMS Added device enable/disable support
|
||||
10-Dec-00 RMS Added Eclipse support
|
||||
@@ -88,11 +89,6 @@ int32 dsk_time = 100; /* time per sector */
|
||||
t_stat dsk_svc (UNIT *uptr);
|
||||
t_stat dsk_reset (DEVICE *dptr);
|
||||
t_stat dsk_boot (int32 unitno);
|
||||
#if defined (ECLIPSE)
|
||||
extern int32 MapAddr (int32 map, int32 addr);
|
||||
#else
|
||||
#define MapAddr(m,a) (a)
|
||||
#endif
|
||||
|
||||
/* DSK data structures
|
||||
|
||||
@@ -119,8 +115,13 @@ REG dsk_reg[] = {
|
||||
{ FLDATA (*DEVENB, iot_enb, INT_V_DSK), REG_HRO },
|
||||
{ NULL } };
|
||||
|
||||
MTAB dsk_mod[] = {
|
||||
{ MTAB_XTD|MTAB_VDV, INT_DSK, NULL, "ENABLED", &set_enb },
|
||||
{ MTAB_XTD|MTAB_VDV, INT_DSK, NULL, "DISABLED", &set_dsb },
|
||||
{ 0 } };
|
||||
|
||||
DEVICE dsk_dev = {
|
||||
"DK", &dsk_unit, dsk_reg, NULL,
|
||||
"DK", &dsk_unit, dsk_reg, dsk_mod,
|
||||
1, 8, 21, 1, 8, 16,
|
||||
NULL, NULL, &dsk_reset,
|
||||
&dsk_boot, NULL, NULL };
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* nova_lp.c: NOVA line printer simulator
|
||||
|
||||
Copyright (c) 1993-2001, Robert M. Supnik
|
||||
Copyright (c) 1993-2002, Robert M. Supnik
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
@@ -24,6 +24,8 @@
|
||||
in this Software without prior written authorization from Robert M Supnik.
|
||||
|
||||
lpt line printer
|
||||
|
||||
30-May-02 RMS Widened POS to 32b
|
||||
*/
|
||||
|
||||
#include "nova_defs.h"
|
||||
@@ -49,7 +51,7 @@ REG lpt_reg[] = {
|
||||
{ FLDATA (DONE, dev_done, INT_V_LPT) },
|
||||
{ FLDATA (DISABLE, dev_disable, INT_V_LPT) },
|
||||
{ FLDATA (INT, int_req, INT_V_LPT) },
|
||||
{ DRDATA (POS, lpt_unit.pos, 31), PV_LEFT },
|
||||
{ DRDATA (POS, lpt_unit.pos, 32), PV_LEFT },
|
||||
{ DRDATA (TIME, lpt_unit.wait, 24), PV_LEFT },
|
||||
{ FLDATA (STOP_IOE, lpt_stopioe, 0) },
|
||||
{ NULL } };
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* nova_mta.c: NOVA magnetic tape simulator
|
||||
|
||||
Copyright (c) 1993-2001, Robert M. Supnik
|
||||
Copyright (c) 1993-2002, Robert M. Supnik
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
@@ -25,6 +25,9 @@
|
||||
|
||||
mta magnetic tape
|
||||
|
||||
30-May-02 RMS Widened POS to 32b
|
||||
22-Apr-02 RMS Added maximum record length test
|
||||
06-Jan-02 RMS Revised enable/disable support
|
||||
30-Nov-01 RMS Added read only unit, extended SET/SHOW support
|
||||
24-Nov-01 RMS Changed POS, USTAT, FLG to an array
|
||||
26-Apr-01 RMS Added device enable/disable support
|
||||
@@ -60,6 +63,7 @@
|
||||
#define UNIT_W_UF 2 /* saved flags width */
|
||||
#define USTAT u3 /* unit status */
|
||||
#define UNUM u4 /* unit number */
|
||||
#define MTA_MAXFR (1 << 16) /* max record lnt */
|
||||
#define DTSIZE (1 << 14) /* max data xfer */
|
||||
#define DTMASK (DTSIZE - 1)
|
||||
#define UNIT_WPRT (UNIT_WLK | UNIT_RO) /* write protect */
|
||||
@@ -153,11 +157,6 @@ t_stat mta_detach (UNIT *uptr);
|
||||
int32 mta_updcsta (UNIT *uptr);
|
||||
void mta_upddsta (UNIT *uptr, int32 newsta);
|
||||
t_stat mta_vlock (UNIT *uptr, int32 val, char *cptr, void *desc);
|
||||
#if defined (ECLIPSE)
|
||||
extern int32 MapAddr (int32 map, int32 addr);
|
||||
#else
|
||||
#define MapAddr(m,a) (a)
|
||||
#endif
|
||||
|
||||
static const int ctype[32] = { /* c vs r timing */
|
||||
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
|
||||
@@ -195,7 +194,7 @@ REG mta_reg[] = {
|
||||
{ DRDATA (CTIME, mta_cwait, 24), PV_LEFT },
|
||||
{ DRDATA (RTIME, mta_rwait, 24), PV_LEFT },
|
||||
{ URDATA (UST, mta_unit[0].USTAT, 8, 32, 0, MTA_NUMDR, 0) },
|
||||
{ URDATA (POS, mta_unit[0].pos, 8, 31, 0,
|
||||
{ URDATA (POS, mta_unit[0].pos, 8, 32, 0,
|
||||
MTA_NUMDR, REG_RO | PV_LEFT) },
|
||||
{ URDATA (FLG, mta_unit[0].flags, 8, UNIT_W_UF, UNIT_V_UF - 1,
|
||||
MTA_NUMDR, REG_HRO) },
|
||||
@@ -203,8 +202,10 @@ REG mta_reg[] = {
|
||||
{ NULL } };
|
||||
|
||||
MTAB mta_mod[] = {
|
||||
{ UNIT_WLK, 0, "write enabled", "ENABLED", &mta_vlock },
|
||||
{ UNIT_WLK, 0, "write enabled", "WRITEENABLED", &mta_vlock },
|
||||
{ UNIT_WLK, UNIT_WLK, "write locked", "LOCKED", &mta_vlock },
|
||||
{ MTAB_XTD|MTAB_VDV, INT_MTA, NULL, "ENABLED", &set_enb },
|
||||
{ MTAB_XTD|MTAB_VDV, INT_MTA, NULL, "DISABLED", &set_dsb },
|
||||
{ 0 } };
|
||||
|
||||
DEVICE mta_dev = {
|
||||
@@ -347,6 +348,7 @@ case CU_READNS: /* read non-stop */
|
||||
uptr -> pos = uptr -> pos + sizeof (t_mtrlnt);
|
||||
break; }
|
||||
tbc = MTRL (tbc); /* ignore error flag */
|
||||
if (tbc > MTA_MAXFR) return SCPE_MTRLNT; /* record too long? */
|
||||
cbc = wc * 2; /* expected bc */
|
||||
if (tbc & 1) mta_sta = mta_sta | STA_ODD; /* odd byte count? */
|
||||
if (tbc > cbc) mta_sta = mta_sta | STA_WCO; /* too big? */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* nova_plt.c: NOVA plotter simulator
|
||||
|
||||
Copyright (c) 2000-2001, Robert M. Supnik
|
||||
Copyright (c) 2000-2002, Robert M. Supnik
|
||||
Written by Bruce Ray and used with his gracious permission.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@@ -26,6 +26,8 @@
|
||||
|
||||
plt plotter
|
||||
|
||||
30-May-02 RMS Widened POS to 32b
|
||||
06-Jan-02 RMS Revised enable/disable support
|
||||
26-Apr-01 RMS Added device enable/disable support
|
||||
*/
|
||||
|
||||
@@ -52,14 +54,19 @@ REG plt_reg[] = {
|
||||
{ FLDATA (DONE, dev_done, INT_V_PLT) },
|
||||
{ FLDATA (DISABLE, dev_disable, INT_V_PLT) },
|
||||
{ FLDATA (INT, int_req, INT_V_PLT) },
|
||||
{ DRDATA (POS, plt_unit.pos, 31), PV_LEFT },
|
||||
{ DRDATA (POS, plt_unit.pos, 32), PV_LEFT },
|
||||
{ DRDATA (TIME, plt_unit.wait, 24), PV_LEFT },
|
||||
{ FLDATA (STOP_IOE, plt_stopioe, 0) },
|
||||
{ FLDATA (*DEVENB, iot_enb, INT_V_PLT), REG_HRO },
|
||||
{ NULL } };
|
||||
|
||||
MTAB plt_mod[] = {
|
||||
{ MTAB_XTD|MTAB_VDV, INT_PLT, NULL, "ENABLED", &set_enb },
|
||||
{ MTAB_XTD|MTAB_VDV, INT_PLT, NULL, "DISABLED", &set_dsb },
|
||||
{ 0 } };
|
||||
|
||||
DEVICE plt_dev = {
|
||||
"PLT", &plt_unit, plt_reg, NULL,
|
||||
"PLT", &plt_unit, plt_reg, plt_mod,
|
||||
1, 10, 31, 1, 8, 8,
|
||||
NULL, NULL, &plt_reset,
|
||||
NULL, NULL, NULL };
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* nova_pt.c: NOVA paper tape read/punch simulator
|
||||
|
||||
Copyright (c) 1993-2001, Robert M. Supnik
|
||||
Copyright (c) 1993-2002, Robert M. Supnik
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
@@ -26,6 +26,7 @@
|
||||
ptr paper tape reader
|
||||
ptp paper tape punch
|
||||
|
||||
30-May-02 RMS Widened POS to 32b
|
||||
29-Nov-01 RMS Added read only unit support
|
||||
*/
|
||||
|
||||
@@ -55,7 +56,7 @@ REG ptr_reg[] = {
|
||||
{ FLDATA (DONE, dev_done, INT_V_PTR) },
|
||||
{ FLDATA (DISABLE, dev_disable, INT_V_PTR) },
|
||||
{ FLDATA (INT, int_req, INT_V_PTR) },
|
||||
{ DRDATA (POS, ptr_unit.pos, 31), PV_LEFT },
|
||||
{ DRDATA (POS, ptr_unit.pos, 32), PV_LEFT },
|
||||
{ DRDATA (TIME, ptr_unit.wait, 24), PV_LEFT },
|
||||
{ FLDATA (STOP_IOE, ptr_stopioe, 0) },
|
||||
{ NULL } };
|
||||
@@ -82,7 +83,7 @@ REG ptp_reg[] = {
|
||||
{ FLDATA (DONE, dev_done, INT_V_PTP) },
|
||||
{ FLDATA (DISABLE, dev_disable, INT_V_PTP) },
|
||||
{ FLDATA (INT, int_req, INT_V_PTP) },
|
||||
{ DRDATA (POS, ptp_unit.pos, 31), PV_LEFT },
|
||||
{ DRDATA (POS, ptp_unit.pos, 32), PV_LEFT },
|
||||
{ DRDATA (TIME, ptp_unit.wait, 24), PV_LEFT },
|
||||
{ FLDATA (STOP_IOE, ptp_stopioe, 0) },
|
||||
{ NULL } };
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* nova_sys.c: NOVA simulator interface
|
||||
|
||||
Copyright (c) 1993-2001, Robert M. Supnik
|
||||
Copyright (c) 1993-2002, Robert M. Supnik
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* nova_tt.c: NOVA console terminal simulator
|
||||
|
||||
Copyright (c) 1993-2001, Robert M. Supnik
|
||||
Copyright (c) 1993-2002, Robert M. Supnik
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
@@ -26,6 +26,7 @@
|
||||
tti terminal input
|
||||
tto terminal output
|
||||
|
||||
30-May-02 RMS Widened POS to 32b
|
||||
30-Nov-01 RMS Added extended SET/SHOW support
|
||||
17-Sep-01 RMS Removed multiconsole support
|
||||
07-Sep-01 RMS Moved function prototypes
|
||||
@@ -59,7 +60,7 @@ REG tti_reg[] = {
|
||||
{ FLDATA (DONE, dev_done, INT_V_TTI) },
|
||||
{ FLDATA (DISABLE, dev_disable, INT_V_TTI) },
|
||||
{ FLDATA (INT, int_req, INT_V_TTI) },
|
||||
{ DRDATA (POS, tti_unit.pos, 31), PV_LEFT },
|
||||
{ DRDATA (POS, tti_unit.pos, 32), PV_LEFT },
|
||||
{ DRDATA (TIME, tti_unit.wait, 24), REG_NZ + PV_LEFT },
|
||||
{ FLDATA (MODE, tti_unit.flags, UNIT_V_DASHER), REG_HRO },
|
||||
{ NULL } };
|
||||
@@ -90,7 +91,7 @@ REG tto_reg[] = {
|
||||
{ FLDATA (DONE, dev_done, INT_V_TTO) },
|
||||
{ FLDATA (DISABLE, dev_disable, INT_V_TTO) },
|
||||
{ FLDATA (INT, int_req, INT_V_TTO) },
|
||||
{ DRDATA (POS, tto_unit.pos, 31), PV_LEFT },
|
||||
{ DRDATA (POS, tto_unit.pos, 32), PV_LEFT },
|
||||
{ DRDATA (TIME, tto_unit.wait, 24), PV_LEFT },
|
||||
{ FLDATA (MODE, tto_unit.flags, UNIT_V_DASHER), REG_HRO },
|
||||
{ NULL } };
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* nova_tt1.c: NOVA second terminal simulator
|
||||
|
||||
Copyright (c) 1993-2001, Robert M. Supnik
|
||||
Copyright (c) 1993-2002, Robert M. Supnik
|
||||
Written by Bruce Ray and used with his gracious permission.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@@ -27,6 +27,9 @@
|
||||
tti1 second terminal input
|
||||
tto1 second terminal output
|
||||
|
||||
30-May-02 RMS Widened POS to 32b
|
||||
06-Jan-02 RMS Revised enable/disable support
|
||||
30-Dec-01 RMS Added show statistics, set disconnect
|
||||
30-Nov-01 RMS Added extended SET/SHOW support
|
||||
17-Sep-01 RMS Changed to use terminal multiplexor library
|
||||
07-Sep-01 RMS Moved function prototypes
|
||||
@@ -53,7 +56,8 @@ t_stat tto1_reset (DEVICE *dptr);
|
||||
t_stat ttx1_setmod (UNIT *uptr, int32 val, char *cptr);
|
||||
t_stat tti1_attach (UNIT *uptr, char *cptr);
|
||||
t_stat tti1_detach (UNIT *uptr);
|
||||
t_stat tti1_status (FILE *st, UNIT *uptr, int32 val, void *desc);
|
||||
t_stat tti1_summ (FILE *st, UNIT *uptr, int32 val, void *desc);
|
||||
t_stat tti1_show (FILE *st, UNIT *uptr, int32 val, void *desc);
|
||||
|
||||
/* TTI1 data structures
|
||||
|
||||
@@ -71,22 +75,28 @@ REG tti1_reg[] = {
|
||||
{ FLDATA (DONE, dev_done, INT_V_TTI1) },
|
||||
{ FLDATA (DISABLE, dev_disable, INT_V_TTI1) },
|
||||
{ FLDATA (INT, int_req, INT_V_TTI1) },
|
||||
{ DRDATA (POS, tt1_ldsc.rxcnt, 31), PV_LEFT },
|
||||
{ DRDATA (POS, tt1_ldsc.rxcnt, 32), PV_LEFT },
|
||||
{ DRDATA (TIME, tti1_unit.wait, 24), REG_NZ + PV_LEFT },
|
||||
{ FLDATA (MODE, tti1_unit.flags, UNIT_V_DASHER), REG_HRO },
|
||||
{ FLDATA (*DEVENB, iot_enb, INT_V_TTI1), REG_HRO },
|
||||
{ NULL } };
|
||||
|
||||
MTAB ttx1_mod[] = {
|
||||
MTAB tti1_mod[] = {
|
||||
{ UNIT_DASHER, 0, "ANSI", "ANSI", &ttx1_setmod },
|
||||
{ UNIT_DASHER, UNIT_DASHER, "Dasher", "DASHER", &ttx1_setmod },
|
||||
{ UNIT_ATT, UNIT_ATT, "line status", NULL, NULL, &tti1_status },
|
||||
{ MTAB_XTD | MTAB_VDV | MTAB_VUN | MTAB_NMO, 0, "LINE", NULL,
|
||||
NULL, &tti1_status, NULL },
|
||||
{ UNIT_ATT, UNIT_ATT, "summary", NULL, NULL, &tti1_summ },
|
||||
{ MTAB_XTD | MTAB_VDV, 0, NULL, "DISCONNECT",
|
||||
&tmxr_dscln, NULL, &tt_desc },
|
||||
{ MTAB_XTD | MTAB_VDV | MTAB_NMO, 1, "CONNECTIONS", NULL,
|
||||
NULL, &tti1_show, NULL },
|
||||
{ MTAB_XTD | MTAB_VDV | MTAB_NMO, 0, "STATISTICS", NULL,
|
||||
NULL, &tti1_show, NULL },
|
||||
{ MTAB_XTD|MTAB_VDV, INT_TTI1 | INT_TTO1, NULL, "ENABLED", &set_enb },
|
||||
{ MTAB_XTD|MTAB_VDV, INT_TTI1 | INT_TTO1, NULL, "DISABLED", &set_dsb },
|
||||
{ 0 } };
|
||||
|
||||
DEVICE tti1_dev = {
|
||||
"TTI1", &tti1_unit, tti1_reg, ttx1_mod,
|
||||
"TTI1", &tti1_unit, tti1_reg, tti1_mod,
|
||||
1, 10, 31, 1, 8, 8,
|
||||
&tmxr_ex, &tmxr_dep, &tti1_reset,
|
||||
NULL, &tti1_attach, &tti1_detach };
|
||||
@@ -106,14 +116,19 @@ REG tto1_reg[] = {
|
||||
{ FLDATA (DONE, dev_done, INT_V_TTO1) },
|
||||
{ FLDATA (DISABLE, dev_disable, INT_V_TTO1) },
|
||||
{ FLDATA (INT, int_req, INT_V_TTO1) },
|
||||
{ DRDATA (POS, tt1_ldsc.txcnt, 31), PV_LEFT },
|
||||
{ DRDATA (POS, tt1_ldsc.txcnt, 32), PV_LEFT },
|
||||
{ DRDATA (TIME, tto1_unit.wait, 24), PV_LEFT },
|
||||
{ FLDATA (MODE, tto1_unit.flags, UNIT_V_DASHER), REG_HRO },
|
||||
{ FLDATA (*DEVENB, iot_enb, INT_V_TTI1), REG_HRO },
|
||||
{ FLDATA (*DEVENB, iot_enb, INT_V_TTO1), REG_HRO },
|
||||
{ NULL } };
|
||||
|
||||
MTAB tto1_mod[] = {
|
||||
{ UNIT_DASHER, 0, "ANSI", "ANSI", &ttx1_setmod },
|
||||
{ UNIT_DASHER, UNIT_DASHER, "Dasher", "DASHER", &ttx1_setmod },
|
||||
{ 0 } };
|
||||
|
||||
DEVICE tto1_dev = {
|
||||
"TTO1", &tto1_unit, tto1_reg, ttx1_mod,
|
||||
"TTO1", &tto1_unit, tto1_reg, tto1_mod,
|
||||
1, 10, 31, 1, 8, 8,
|
||||
NULL, NULL, &tto1_reset,
|
||||
NULL, NULL, NULL };
|
||||
@@ -267,10 +282,20 @@ sim_cancel (uptr); /* stop poll */
|
||||
return r;
|
||||
}
|
||||
|
||||
/* Status routine */
|
||||
/* Show summary processor */
|
||||
|
||||
t_stat tti1_status (FILE *st, UNIT *uptr, int32 val, void *desc)
|
||||
t_stat tti1_summ (FILE *st, UNIT *uptr, int32 val, void *desc)
|
||||
{
|
||||
tmxr_fstatus (st, &tt1_ldsc, -1);
|
||||
if (tt1_ldsc.conn) fprintf (st, "connected");
|
||||
else fprintf (st, "disconnected");
|
||||
return SCPE_OK;
|
||||
}
|
||||
}
|
||||
|
||||
/* SHOW CONN/STAT processor */
|
||||
|
||||
t_stat tti1_show (FILE *st, UNIT *uptr, int32 val, void *desc)
|
||||
{
|
||||
if (val) tmxr_fconns (st, &tt1_ldsc, -1);
|
||||
else tmxr_fstats (st, &tt1_ldsc, -1);
|
||||
return SCPE_OK;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user