1
0
mirror of https://github.com/pkimpel/retro-b5500.git synced 2026-02-27 01:19:50 +00:00
Files
pkimpel.retro-b5500/emulator/B5500SystemConfiguration.js

118 lines
5.8 KiB
JavaScript

/***********************************************************************
* retro-b5500/emulator B5500SystemConfiguration.js
************************************************************************
* Copyright (c) 2012, 2014, Nigel Williams and Paul Kimpel.
* Licensed under the MIT License,
* see http://www.opensource.org/licenses/mit-license.php
************************************************************************
* B5500 System Configuration definition module.
*
* This class defines the system configuration properties for the B5500
* emulator. This is not used directly by the emulator, but serves as a
* central definition of the configuration properties and as a template
* from which actual configuration instances can be cloned.
************************************************************************
* 2012-06-30 P.Kimpel
* Original version, from thin air.
* 2014-08-27 P.Kimpel
* Revise and implement as a constructor with prototype to support the
* new dynamic configuration mechanism.
***********************************************************************/
"use strict";
/**************************************/
function B5500SystemConfiguration() {
/* Constructor for the global SystemConfiguration definition object */
// ...nothing to construct at present... everything's in the prototype.
}
/**************************************/
B5500SystemConfiguration.prototype.configLevel = 1; // configuration object version
B5500SystemConfiguration.prototype.sysDefaultConfigName = "Default";
B5500SystemConfiguration.prototype.sysDefaultStorageName = "B5500DiskUnit";
// Template for Datacom terminal unit (B487) definition object
B5500SystemConfiguration.prototype.sysDefaultTerminalUnit = {
enabled: true, // available in system
adapters: 1, // number of terminal interface adapters
buffers: 2, // number of 28-character buffers/adapter
pingPong: false // use ping-pong buffer management
};
// Template for the global system configuration definition object
B5500SystemConfiguration.prototype.systemConfig = {
configLevel: B5500SystemConfiguration.prototype.configLevel,
configName: B5500SystemConfiguration.prototype.sysDefaultConfigName,
PA: {enabled: true}, // Processor A available
PB: {enabled: false}, // Processor B available
PB1L: false, // PA is P1 (false) | PB is P1 (true)
IO1: {enabled: true}, // I/O Unit 1 available
IO2: {enabled: true}, // I/O Unit 2 available
IO3: {enabled: true}, // I/O Unit 3 available
IO4: {enabled: false}, // I/O Unit 4 available
memMod: [ {enabled: true}, // Memory module 0 available (4KW)
{enabled: true}, // Memory module 1 available (4KW)
{enabled: true}, // Memory module 2 available (4KW)
{enabled: true}, // Memory module 3 available (4KW)
{enabled: true}, // Memory module 4 available (4KW)
{enabled: true}, // Memory module 5 available (4KW)
{enabled: true}, // Memory module 6 available (4KW)
{enabled: true}], // Memory module 7 available (4KW)
units: {
SPO: {enabled: true, // SPO keyboard/printer
algolGlyphs: false},
DKA: {enabled: true, // Disk File Control A
DFX: true, FPM: false,
storageName: B5500SystemConfiguration.prototype.sysDefaultStorageName},
DKB: {enabled: false, // Disk File Control B
DFX: true, FPM: false,
storageName: B5500SystemConfiguration.prototype.sysDefaultStorageName},
CRA: {enabled: true}, // Card Reader A
CRB: {enabled: false}, // Card Reader B
CPA: {enabled: true, // Card Punch A
algolGlyphs: false},
LPA: {enabled: true, // Line Printer A
algolGlyphs: true},
LPB: {enabled: false, // Line Printer B
algolGlyphs: true},
PRA: {enabled: false}, // Paper Tape Reader A
PRB: {enabled: false}, // Paper Tape Reader B
PPA: {enabled: false}, // Paper Tape Punch A
PPB: {enabled: false}, // Paper Tape Punch A
DCA: {enabled: true, // Data Communications Control A
terminalUnits: {
TU1: B5500SystemConfiguration.prototype.sysDefaultTerminalUnit
}},
DRA: {enabled: false}, // Drum/Auxmem A
DRB: {enabled: false}, // Drum/Auxmem B
MTA: {enabled: true}, // Magnetic Tape Unit A
MTB: {enabled: false}, // Magnetic Tape Unit B
MTC: {enabled: false}, // Magnetic Tape Unit C
MTD: {enabled: false}, // Magnetic Tape Unit D
MTE: {enabled: false}, // Magnetic Tape Unit E
MTF: {enabled: false}, // Magnetic Tape Unit F
MTH: {enabled: false}, // Magnetic Tape Unit H
MTJ: {enabled: false}, // Magnetic Tape Unit J
MTK: {enabled: false}, // Magnetic Tape Unit K
MTL: {enabled: false}, // Magnetic Tape Unit L
MTM: {enabled: false}, // Magnetic Tape Unit M
MTN: {enabled: false}, // Magnetic Tape Unit N
MTP: {enabled: false}, // Magnetic Tape Unit P
MTR: {enabled: false}, // Magnetic Tape Unit R
MTS: {enabled: false}, // Magnetic Tape Unit S
MTT: {enabled: false} // Magnetic Tape Unit T
}
};