HP2100 update from Dave Bryan
This commit is contained in:
parent
a14a1ab5cd
commit
40deb20ccd
16 changed files with 1087 additions and 1022 deletions
|
@ -2,7 +2,8 @@ Notes For V3.9
|
||||||
|
|
||||||
|
|
||||||
The makefile now works for all *nix platforms and with cygwin and MinGW32
|
The makefile now works for all *nix platforms and with cygwin and MinGW32
|
||||||
on Windows.
|
on Windows. It will automatically detect the availability of libpcap
|
||||||
|
components and build network capable simulators if they are available.
|
||||||
|
|
||||||
|
|
||||||
1. New Features
|
1. New Features
|
||||||
|
@ -14,15 +15,32 @@ on Windows.
|
||||||
- added *nix READLINE support (Mark Pizzolato)
|
- added *nix READLINE support (Mark Pizzolato)
|
||||||
- added "SHOW SHOW" and "SHOW <dev> SHOW" commands (Mark Pizzolato)
|
- added "SHOW SHOW" and "SHOW <dev> SHOW" commands (Mark Pizzolato)
|
||||||
- added support for BREAK key on Windows (Mark Pizzolato)
|
- added support for BREAK key on Windows (Mark Pizzolato)
|
||||||
|
- added ethernet support (Mark Pizzolato)
|
||||||
|
windows host <-> simulator NIC sharing
|
||||||
|
native tap interfaces on BSD, Linux and OSX
|
||||||
|
vde (Virtual Distributed Ethernet) networking
|
||||||
|
Large Send Offload support
|
||||||
|
UDP and TCP Checksum offload support
|
||||||
|
dynamic libpcap loading on *nix platforms
|
||||||
|
|
||||||
1.1.2 PDP-8
|
1.1.2 PDP-8
|
||||||
|
|
||||||
- floating point processor is now enabled
|
- floating point processor is now enabled
|
||||||
|
|
||||||
1.1.3 IA64 VMS Ethernet Support
|
1.1.3 HP2100 (Dave Bryan)
|
||||||
|
|
||||||
|
- added support for 12821A HP-IB disk controller,
|
||||||
|
7906H/20H/25H disks
|
||||||
|
|
||||||
|
1.1.4 PDP11 and VAX (Mark Pizzolato)
|
||||||
|
|
||||||
|
- Added DELQA-Plus device.
|
||||||
|
|
||||||
|
1.1.5 IA64 VMS Ethernet Support
|
||||||
|
|
||||||
- Identified compiler version issues and added IA64 support (Matt Burke)
|
- Identified compiler version issues and added IA64 support (Matt Burke)
|
||||||
|
|
||||||
|
1.1.6 Visual Studio Projects (Mark Pizzolato)
|
||||||
|
|
||||||
2. Bugs Fixed
|
2. Bugs Fixed
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
HP 2100 SIMULATOR BUG FIX WRITEUPS
|
HP 2100 SIMULATOR BUG FIX WRITEUPS
|
||||||
==================================
|
==================================
|
||||||
Last update: 2012-03-23
|
Last update: 2012-03-25
|
||||||
|
|
||||||
|
|
||||||
1. PROBLEM: Booting from magnetic tape reports "HALT instruction, P: 77756
|
1. PROBLEM: Booting from magnetic tape reports "HALT instruction, P: 77756
|
||||||
|
@ -6257,3 +6257,26 @@
|
||||||
16-bit dimension count.
|
16-bit dimension count.
|
||||||
|
|
||||||
STATUS: Fixed in version 3.9-0.
|
STATUS: Fixed in version 3.9-0.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
246. PROBLEM: SHOW MTC SHOW lists the FORMAT modifier twice.
|
||||||
|
|
||||||
|
VERSION: 3.8-1
|
||||||
|
|
||||||
|
OBSERVATION: Entering the planned SHOW MTC SHOW command results in the
|
||||||
|
following display:
|
||||||
|
|
||||||
|
sim> SHOW MTC SHOW
|
||||||
|
sh{ow} MTC FORMAT, SC, DEVNO
|
||||||
|
sh{ow} MTCn FORMAT
|
||||||
|
|
||||||
|
FORMAT is listed both as a device and as a unit modifier.
|
||||||
|
|
||||||
|
CAUSE: The FORMAT entry in the modifier table contains both the MTAB_VDV
|
||||||
|
and the MTAB_VUN flags.
|
||||||
|
|
||||||
|
RESOLUTION: Remove the redundant MTAB_VUN flag from the "mtc_mod" array
|
||||||
|
(hp2100_mt.c).
|
||||||
|
|
||||||
|
STATUS: Fixed in version 3.9-0.
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,4 +1,4 @@
|
||||||
/* hp2100_di.h: HP 12821A HP-IB Disc Interface simulator common definitions
|
/* hp2100_di.h: HP 12821A HP-IB Disc Interface simulator definitions
|
||||||
|
|
||||||
Copyright (c) 2010-2012, J. David Bryan
|
Copyright (c) 2010-2012, J. David Bryan
|
||||||
|
|
||||||
|
@ -41,8 +41,8 @@
|
||||||
only the DA device is implemented. However, as the 12821A diagnostic
|
only the DA device is implemented. However, as the 12821A diagnostic
|
||||||
requires two cards to test I/O fully, a dummy DC device is provided by
|
requires two cards to test I/O fully, a dummy DC device is provided by
|
||||||
the DA simulator. It is enabled only when the DA card is configured for
|
the DA simulator. It is enabled only when the DA card is configured for
|
||||||
diagnostic mode. This dummy device may be removed when either the DC or
|
diagnostic mode. This dummy device should be removed when either the DC
|
||||||
MA device is implemented.
|
or MA device is implemented.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
@ -51,19 +51,21 @@
|
||||||
|
|
||||||
#define FIFO_SIZE 16 /* FIFO depth */
|
#define FIFO_SIZE 16 /* FIFO depth */
|
||||||
|
|
||||||
typedef enum { da, dc, ma, /* card IDs */
|
typedef enum {
|
||||||
first_card = da, /* first card ID */
|
da, dc, ma, /* card IDs */
|
||||||
last_card = ma, /* last card ID */
|
first_card = da, /* first card ID */
|
||||||
card_count } CARD_ID; /* count of card IDs */
|
last_card = ma, /* last card ID */
|
||||||
|
card_count /* count of card IDs */
|
||||||
|
} CARD_ID;
|
||||||
|
|
||||||
|
|
||||||
/* Device flags and accessors (leaves space for disc/tape flags) */
|
/* Device flags and accessors (bits 7-0 are reserved for disc/tape flags) */
|
||||||
|
|
||||||
#define DEV_V_BUSADR (DEV_V_UF + 8) /* bits 10-8: HP-IB address */
|
#define DEV_V_BUSADR (DEV_V_UF + 8) /* bits 10-8: interface HP-IB address */
|
||||||
#define DEV_V_DIAG (DEV_V_UF + 11) /* bit 11: diagnostic mode */
|
#define DEV_V_DIAG (DEV_V_UF + 11) /* bit 11: diagnostic mode */
|
||||||
#define DEV_V_W1 (DEV_V_UF + 12) /* bit 12: DCPC pacing jumper */
|
#define DEV_V_W1 (DEV_V_UF + 12) /* bit 12: DCPC pacing jumper */
|
||||||
|
|
||||||
#define DEV_M_BUSADR 7 /* bus address mask */
|
#define DEV_M_BUSADR 07 /* bus address mask */
|
||||||
|
|
||||||
#define DEV_BUSADR (DEV_M_BUSADR << DEV_V_BUSADR)
|
#define DEV_BUSADR (DEV_M_BUSADR << DEV_V_BUSADR)
|
||||||
#define DEV_DIAG (1 << DEV_V_DIAG)
|
#define DEV_DIAG (1 << DEV_V_DIAG)
|
||||||
|
@ -73,11 +75,11 @@ typedef enum { da, dc, ma, /* card IDs */
|
||||||
#define SET_DIADR(f) (((f) & DEV_M_BUSADR) << DEV_V_BUSADR)
|
#define SET_DIADR(f) (((f) & DEV_M_BUSADR) << DEV_V_BUSADR)
|
||||||
|
|
||||||
|
|
||||||
/* Unit flags and accessors (leaves space for disc/tape flags) */
|
/* Unit flags and accessors (bits 7-0 are reserved for disc/tape flags) */
|
||||||
|
|
||||||
#define UNIT_V_BUSADR (UNIT_V_UF + 8) /* bits 10-8: HP-IB address */
|
#define UNIT_V_BUSADR (UNIT_V_UF + 8) /* bits 10-8: unit HP-IB address */
|
||||||
|
|
||||||
#define UNIT_M_BUSADR 7 /* bus address mask */
|
#define UNIT_M_BUSADR 07 /* bus address mask */
|
||||||
|
|
||||||
#define UNIT_BUSADR (UNIT_M_BUSADR << UNIT_V_BUSADR)
|
#define UNIT_BUSADR (UNIT_M_BUSADR << UNIT_V_BUSADR)
|
||||||
|
|
||||||
|
@ -95,10 +97,10 @@ typedef enum { da, dc, ma, /* card IDs */
|
||||||
#define DEB_SERV (1 << 5) /* unit service scheduling calls */
|
#define DEB_SERV (1 << 5) /* unit service scheduling calls */
|
||||||
|
|
||||||
|
|
||||||
/* HP-IB control state bit flags.
|
/* HP-IB control line state bit flags.
|
||||||
|
|
||||||
NOTE that these flags align with the corresponding flags in the DI status
|
NOTE that these flags align with the corresponding flags in the DI status
|
||||||
register, so don't change the order!
|
register, so don't change the numerical values!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define BUS_ATN 0001 /* attention */
|
#define BUS_ATN 0001 /* attention */
|
||||||
|
@ -128,7 +130,7 @@ typedef enum { da, dc, ma, /* card IDs */
|
||||||
#define BUS_UCG 0020 /* universal command group */
|
#define BUS_UCG 0020 /* universal command group */
|
||||||
#define BUS_ACG 0000 /* addressed command group */
|
#define BUS_ACG 0000 /* addressed command group */
|
||||||
|
|
||||||
#define BUS_UNADDRESS 0037 /* unlisten and untalk */
|
#define BUS_UNADDRESS 0037 /* unlisten and untalk addresses */
|
||||||
|
|
||||||
#define PPR(a) (uint8) (1 << (7 - (a))) /* parallel poll response */
|
#define PPR(a) (uint8) (1 << (7 - (a))) /* parallel poll response */
|
||||||
|
|
||||||
|
@ -146,8 +148,10 @@ typedef enum { da, dc, ma, /* card IDs */
|
||||||
#define SET_LOWER(b) (b)
|
#define SET_LOWER(b) (b)
|
||||||
#define SET_BOTH(b) (SET_UPPER (b) | SET_LOWER (b))
|
#define SET_BOTH(b) (SET_UPPER (b) | SET_LOWER (b))
|
||||||
|
|
||||||
typedef enum { upper, /* byte selector */
|
typedef enum {
|
||||||
lower } SELECTOR;
|
upper, /* upper byte selected */
|
||||||
|
lower /* lower byte selected */
|
||||||
|
} SELECTOR;
|
||||||
|
|
||||||
|
|
||||||
/* Per-card state variables */
|
/* Per-card state variables */
|
||||||
|
@ -170,9 +174,9 @@ typedef struct {
|
||||||
uint32 fifo_count; /* FIFO occupancy counter */
|
uint32 fifo_count; /* FIFO occupancy counter */
|
||||||
REG *fifo_reg; /* FIFO register pointer */
|
REG *fifo_reg; /* FIFO register pointer */
|
||||||
|
|
||||||
uint32 acceptors; /* unit bitmap of bus acceptors */
|
uint32 acceptors; /* unit bitmap of the bus acceptors */
|
||||||
uint32 listeners; /* unit bitmap of bus listeners */
|
uint32 listeners; /* unit bitmap of the bus listeners */
|
||||||
uint32 talker; /* unit bitmap of bus talker */
|
uint32 talker; /* unit bitmap of the bus talker */
|
||||||
|
|
||||||
uint8 bus_cntl; /* HP-IB bus control state (ATN, EOI, etc.) */
|
uint8 bus_cntl; /* HP-IB bus control state (ATN, EOI, etc.) */
|
||||||
uint8 poll_response; /* address bitmap of parallel poll responses */
|
uint8 poll_response; /* address bitmap of parallel poll responses */
|
||||||
|
@ -183,7 +187,7 @@ typedef struct {
|
||||||
|
|
||||||
/* Disc interface VM global register definitions.
|
/* Disc interface VM global register definitions.
|
||||||
|
|
||||||
Include these definitions before any device-specific registers.
|
These definitions should be included before any device-specific registers.
|
||||||
|
|
||||||
|
|
||||||
Implementation notes:
|
Implementation notes:
|
||||||
|
@ -222,7 +226,7 @@ typedef struct {
|
||||||
|
|
||||||
/* Disc interface VM global modifier definitions.
|
/* Disc interface VM global modifier definitions.
|
||||||
|
|
||||||
Include these definitions before any device-specific modifiers.
|
These definitions should be included before any device-specific modifiers.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define DI_MODS(dev) \
|
#define DI_MODS(dev) \
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,6 +1,6 @@
|
||||||
SIMH/HP 21XX DIAGNOSTICS PERFORMANCE
|
SIMH/HP 21XX DIAGNOSTICS PERFORMANCE
|
||||||
====================================
|
====================================
|
||||||
Last update: 2012-02-20
|
Last update: 2012-03-30
|
||||||
|
|
||||||
|
|
||||||
The HP 24396 diagnostic suite has been run against the SIMH HP 21xx simulation.
|
The HP 24396 diagnostic suite has been run against the SIMH HP 21xx simulation.
|
||||||
|
@ -70,7 +70,7 @@ The results of the diagnostic runs are summarized below:
|
||||||
103116 12967 Synchronous Interface 1438 - No simulation
|
103116 12967 Synchronous Interface 1438 - No simulation
|
||||||
103017 12966 Asynchronous Data Set 1519 3.8-0 Passed
|
103017 12966 Asynchronous Data Set 1519 3.8-0 Passed
|
||||||
103121 12968 Asynchronous Comm. Interface 1602 - No simulation
|
103121 12968 Asynchronous Comm. Interface 1602 - No simulation
|
||||||
103024 12821 ICD Disc Interface 1928 3.8-2 Passed
|
103024 12821 ICD Disc Interface 1928 3.9-0 Passed
|
||||||
|
|
||||||
104000 2600 Keyboard Display Terminal 1615 - No simulation
|
104000 2600 Keyboard Display Terminal 1615 - No simulation
|
||||||
104003 Teleprinter 1509 3.2-3 Partial
|
104003 Teleprinter 1509 3.2-3 Partial
|
||||||
|
@ -128,8 +128,9 @@ offline diagnostics:
|
||||||
Part Number Diagnostic Name Code Op. Sys. Code Vers. Result
|
Part Number Diagnostic Name Code Op. Sys. Code Vers. Result
|
||||||
----------- ------------------------------- ---- -------- ---- ----- ----------
|
----------- ------------------------------- ---- -------- ---- ----- ----------
|
||||||
12824-16002 Vector Instruction Set Firmware 2026 RTE-IVB 5010 3.8-0 Passed
|
12824-16002 Vector Instruction Set Firmware 2026 RTE-IVB 5010 3.8-0 Passed
|
||||||
91711-12032 ICD/MAC Disc Diagnostic 2201 RTE-IVB 5010 3.8-2 Partial
|
91711-12032 ICD/MAC Disc Diagnostic 2201 RTE-IVB 5010 3.9-0 Partial
|
||||||
92067-16013 Extended Memory Area Firmware 1805 RTE-IVB 5010 3.8-0 Passed
|
92067-16013 Extended Memory Area Firmware 1805 RTE-IVB 5010 3.8-0 Passed
|
||||||
|
|
||||||
12829-16006 Vector Instruction Set Firmware 2226 RTE-6/VM 6200 3.8-0 Passed
|
12829-16006 Vector Instruction Set Firmware 2226 RTE-6/VM 6200 3.8-0 Passed
|
||||||
92084-16423 Virtual Memory Area Firmware 2121 RTE-6/VM 6200 3.8-0 Passed
|
92084-16423 Virtual Memory Area Firmware 2121 RTE-6/VM 6200 3.8-0 Passed
|
||||||
92835-16006 SIGNAL/1000 Firmware Diagnostic 2040 RTE-6/VM 6200 3.8-0 Passed
|
92835-16006 SIGNAL/1000 Firmware Diagnostic 2040 RTE-6/VM 6200 3.8-0 Passed
|
||||||
|
@ -3527,7 +3528,9 @@ BINARY FILE: 91711-12032 Rev. 2201
|
||||||
|
|
||||||
HOST SYSTEM: RTE-IVB Rev. 5010
|
HOST SYSTEM: RTE-IVB Rev. 5010
|
||||||
|
|
||||||
CONFIGURATION: sim> set DS0 FORMAT
|
CONFIGURATION: sim> set DA1 7906H
|
||||||
|
sim> set DA1 FORMAT
|
||||||
|
sim> attach DA1 scratch.U1.7906H.disc
|
||||||
sim> go
|
sim> go
|
||||||
|
|
||||||
TEST REPORT: DIAG : HP-IB DISC DIAGNOSTIC
|
TEST REPORT: DIAG : HP-IB DISC DIAGNOSTIC
|
||||||
|
@ -3540,12 +3543,12 @@ TEST REPORT: DIAG : HP-IB DISC DIAGNOSTIC
|
||||||
DIAG : Start trace at what step ? 0
|
DIAG : Start trace at what step ? 0
|
||||||
DIAG : Trace operations which are not part of the test steps ? NO
|
DIAG : Trace operations which are not part of the test steps ? NO
|
||||||
DIAG : Stop after first failure ? NO
|
DIAG : Stop after first failure ? NO
|
||||||
DIAG : Disc LU ? 41
|
DIAG : Disc LU ? 14
|
||||||
DIAG : Disc address ? 0
|
DIAG : Disc address ? 1
|
||||||
DIAG : Drive model number ? 06
|
DIAG : Drive model number ? 06
|
||||||
DIAG : Do you want to run the interactive part of the test ? YES
|
DIAG : Do you want to run the interactive part of the test ? YES
|
||||||
|
|
||||||
DIAG : LU 41 address 0 select code 25 7906 drive
|
DIAG : LU 14 address 1 select code 12 7906 drive
|
||||||
|
|
||||||
DIAG : CHECK THAT ALL SWITCHES ARE SET CORRECTLY.
|
DIAG : CHECK THAT ALL SWITCHES ARE SET CORRECTLY.
|
||||||
DIAG : THE RUN/STOP SWITCH SHOULD BE IN THE RUN POSITION.
|
DIAG : THE RUN/STOP SWITCH SHOULD BE IN THE RUN POSITION.
|
||||||
|
@ -3569,7 +3572,7 @@ TEST REPORT: DIAG : HP-IB DISC DIAGNOSTIC
|
||||||
DIAG : STEP 1 PASSED
|
DIAG : STEP 1 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : REQUEST STATUS drive type 0 0 0 50 0
|
DIAG : REQUEST STATUS drive type 0 0 0 40 0
|
||||||
DIAG : IDENTIFY result 3 0 0 40 0
|
DIAG : IDENTIFY result 3 0 0 40 0
|
||||||
DIAG : STEP 3 PASSED
|
DIAG : STEP 3 PASSED
|
||||||
|
|
||||||
|
@ -3580,19 +3583,19 @@ TEST REPORT: DIAG : HP-IB DISC DIAGNOSTIC
|
||||||
DIAG : cylinders: 0 - 410 heads: 0 - 3 sectors: 0 - 47
|
DIAG : cylinders: 0 - 410 heads: 0 - 3 sectors: 0 - 47
|
||||||
DIAG : First and last tracks on LU:
|
DIAG : First and last tracks on LU:
|
||||||
DIAG : cylinder 0 head 0 (track 0)
|
DIAG : cylinder 0 head 0 (track 0)
|
||||||
DIAG : cylinder 199 head 1 (track 399)
|
DIAG : cylinder 49 head 1 (track 99)
|
||||||
DIAG : First and last spares on LU:
|
DIAG : First and last spares on LU:
|
||||||
DIAG : cylinder 200 head 0 (track 400)
|
DIAG : cylinder 50 head 0
|
||||||
DIAG : cylinder 202 head 1 (track 405)
|
DIAG : cylinder 49 head 1 (track 99)
|
||||||
DIAG : Heads on LU (first - last): 0 - 1
|
DIAG : Heads on LU (first - last): 0 - 1
|
||||||
DIAG : Searching entire LU for file directory:
|
DIAG : Searching entire LU for file directory:
|
||||||
DIAG : NO DIRECTORY OR UNABLE TO READ DIRECTORY ON TEST LU
|
DIAG : NO DIRECTORY OR UNABLE TO READ DIRECTORY ON TEST LU
|
||||||
DIAG : First and last tracks available for testing:
|
DIAG : First and last tracks available for testing:
|
||||||
DIAG : cylinder 0 head 0 (track 0)
|
DIAG : cylinder 0 head 0 (track 0)
|
||||||
DIAG : cylinder 199 head 1 (track 399)
|
DIAG : cylinder 49 head 1 (track 99)
|
||||||
DIAG : Default test tracks:
|
DIAG : Default test tracks:
|
||||||
DIAG : cylinder 199 head 0 (track 398)
|
DIAG : cylinder 49 head 0 (track 98)
|
||||||
DIAG : cylinder 199 head 1 (track 399)
|
DIAG : cylinder 49 head 1 (track 99)
|
||||||
DIAG : Use default test tracks ? YES
|
DIAG : Use default test tracks ? YES
|
||||||
|
|
||||||
DIAG : Checking test track preambles.
|
DIAG : Checking test track preambles.
|
||||||
|
@ -3601,11 +3604,11 @@ TEST REPORT: DIAG : HP-IB DISC DIAGNOSTIC
|
||||||
DIAG : Beginning part 2 of diagnostic.
|
DIAG : Beginning part 2 of diagnostic.
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : STEP 4 PASSED
|
DIAG : STEP 4 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : REQUEST DISC ADDR cy 199 hd 0 sec 0 0 0 40 0
|
DIAG : REQUEST DISC ADDR cy 49 hd 0 sec 0 0 0 40 0
|
||||||
DIAG : STEP 5 PASSED
|
DIAG : STEP 5 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
|
@ -3614,8 +3617,8 @@ TEST REPORT: DIAG : HP-IB DISC DIAGNOSTIC
|
||||||
DIAG : STEP 6 PASSED
|
DIAG : STEP 6 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : REQUEST SECTOR ADDR sec 2 0 0 40 0
|
DIAG : REQUEST SECTOR ADDR sec 6 0 0 40 0
|
||||||
DIAG : STEP 7 PASSED
|
DIAG : STEP 7 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
|
@ -3626,153 +3629,153 @@ TEST REPORT: DIAG : HP-IB DISC DIAGNOSTIC
|
||||||
DIAG : STEP 8 PASSED
|
DIAG : STEP 8 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : READ FULL SECTOR length 138 0 0 40 0
|
DIAG : READ FULL SECTOR length 138 0 0 40 0
|
||||||
DIAG : decode preamble cy 199 hd 0 sec 0 spd 0
|
DIAG : decode preamble cy 49 hd 0 sec 0 spd 0
|
||||||
DIAG : STEP 9 PASSED
|
DIAG : STEP 9 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : WRITE FULL SECTOR length 138 0 0 40 0
|
DIAG : WRITE FULL SECTOR length 138 0 0 40 0
|
||||||
DIAG : STEP 10 PASSED
|
DIAG : STEP 10 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : VERIFY sector count 1 0 0 40 0
|
DIAG : VERIFY sector count 1 0 0 40 0
|
||||||
DIAG : STEP 11 FAILED
|
DIAG : STEP 11 FAILED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : READ length 128 0 0 40 0
|
DIAG : READ length 128 0 0 40 0
|
||||||
DIAG : STEP 12 FAILED
|
DIAG : STEP 12 FAILED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : READ WITH OFFSET length 128 offset 55 0 0 40 0
|
DIAG : READ WITH OFFSET length 128 offset 55 0 0 40 0
|
||||||
DIAG : STEP 13 FAILED
|
DIAG : STEP 13 FAILED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : READ WITHOUT VERIFY length 128 0 0 40 0
|
DIAG : READ WITHOUT VERIFY length 128 0 0 40 0
|
||||||
DIAG : STEP 14 FAILED
|
DIAG : STEP 14 FAILED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SET FILE MASK mask 0 0 0 40 0
|
DIAG : SET FILE MASK mask 0 0 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 0 sec 47 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 47 0 37 40 0
|
||||||
DIAG : READ FULL SECTOR length 140 0 14 40 1
|
DIAG : READ FULL SECTOR length 140 0 14 40 1
|
||||||
DIAG : STEP 16 PASSED
|
DIAG : STEP 16 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SET FILE MASK mask 2 0 0 40 0
|
DIAG : SET FILE MASK mask 2 0 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 0 sec 47 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 47 0 37 40 0
|
||||||
DIAG : READ FULL SECTOR length 140 0 0 40 0
|
DIAG : READ FULL SECTOR length 140 0 0 40 0
|
||||||
DIAG : STEP 17 PASSED
|
DIAG : STEP 17 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SET FILE MASK mask 2 0 0 40 0
|
DIAG : SET FILE MASK mask 2 0 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 3 sec 47 0 37 40 0
|
DIAG : SEEK cy 49 hd 3 sec 47 0 37 40 0
|
||||||
DIAG : READ FULL SECTOR length 140 0 14 40 1
|
DIAG : READ FULL SECTOR length 140 0 14 40 1
|
||||||
DIAG : STEP 18 PASSED
|
DIAG : STEP 18 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SET FILE MASK mask 3 0 0 40 0
|
DIAG : SET FILE MASK mask 3 0 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 3 sec 47 0 37 40 0
|
DIAG : SEEK cy 49 hd 3 sec 47 0 37 40 0
|
||||||
DIAG : READ FULL SECTOR length 140 0 0 40 0
|
DIAG : READ FULL SECTOR length 140 0 0 40 0
|
||||||
DIAG : REQUEST DISC ADDR cy 200 hd 0 sec 1 0 0 40 0
|
DIAG : REQUEST DISC ADDR cy 50 hd 0 sec 1 0 0 40 0
|
||||||
DIAG : STEP 19 PASSED
|
DIAG : STEP 19 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SET FILE MASK mask 11 0 0 40 0
|
DIAG : SET FILE MASK mask 11 0 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 0 sec 47 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 47 0 37 40 0
|
||||||
DIAG : READ FULL SECTOR length 140 0 0 40 0
|
DIAG : READ FULL SECTOR length 140 0 0 40 0
|
||||||
DIAG : REQUEST DISC ADDR cy 198 hd 0 sec 1 0 0 40 0
|
DIAG : REQUEST DISC ADDR cy 48 hd 0 sec 1 0 0 40 0
|
||||||
DIAG : STEP 20 PASSED
|
DIAG : STEP 20 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : ADDRESS RECORD cy 199 hd 1 sec 0 0 0 40 0
|
DIAG : ADDRESS RECORD cy 49 hd 1 sec 0 0 0 40 0
|
||||||
DIAG : INITIALIZE length 6144 spd 1 1 0 40 0
|
DIAG : INITIALIZE length 6144 spd 1 1 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
||||||
DIAG : decode preamble cy 199 hd 0 sec 0 spd 0
|
DIAG : decode preamble cy 49 hd 0 sec 0 spd 0
|
||||||
DIAG : STEP 21 FAILED
|
DIAG : STEP 21 FAILED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : ADDRESS RECORD cy 199 hd 0 sec 0 0 0 40 0
|
DIAG : ADDRESS RECORD cy 49 hd 0 sec 0 0 0 40 0
|
||||||
DIAG : INITIALIZE length 6144 spd 4 4 0 40 0
|
DIAG : INITIALIZE length 6144 spd 4 4 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
||||||
DIAG : decode preamble cy 199 hd 1 sec 0 spd 0
|
DIAG : decode preamble cy 49 hd 1 sec 0 spd 0
|
||||||
DIAG : STEP 22 FAILED
|
DIAG : STEP 22 FAILED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : ADDRESS RECORD cy 199 hd 1 sec 0 0 0 40 0
|
DIAG : ADDRESS RECORD cy 49 hd 1 sec 0 0 0 40 0
|
||||||
DIAG : INITIALIZE length 6144 spd 2 2 0 40 0
|
DIAG : INITIALIZE length 6144 spd 2 2 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
||||||
DIAG : decode preamble cy 199 hd 1 sec 0 spd 0
|
DIAG : decode preamble cy 49 hd 1 sec 0 spd 0
|
||||||
DIAG : STEP 25 FAILED
|
DIAG : STEP 25 FAILED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : ADDRESS RECORD cy 199 hd 0 sec 0 0 0 40 0
|
DIAG : ADDRESS RECORD cy 49 hd 0 sec 0 0 0 40 0
|
||||||
DIAG : INITIALIZE length 6144 spd 6 6 0 40 0
|
DIAG : INITIALIZE length 6144 spd 6 6 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
||||||
DIAG : decode preamble cy 199 hd 1 sec 0 spd 0
|
DIAG : decode preamble cy 49 hd 1 sec 0 spd 0
|
||||||
DIAG : STEP 26 FAILED
|
DIAG : STEP 26 FAILED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : ADDRESS RECORD cy 199 hd 1 sec 0 0 0 40 0
|
DIAG : ADDRESS RECORD cy 49 hd 1 sec 0 0 0 40 0
|
||||||
DIAG : INITIALIZE length 6144 spd 3 3 0 40 0
|
DIAG : INITIALIZE length 6144 spd 3 3 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
||||||
DIAG : decode preamble cy 199 hd 1 sec 0 spd 0
|
DIAG : decode preamble cy 49 hd 1 sec 0 spd 0
|
||||||
DIAG : STEP 28 FAILED
|
DIAG : STEP 28 FAILED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : ADDRESS RECORD cy 199 hd 0 sec 0 0 0 40 0
|
DIAG : ADDRESS RECORD cy 49 hd 0 sec 0 0 0 40 0
|
||||||
DIAG : INITIALIZE length 6144 spd 4 4 0 40 0
|
DIAG : INITIALIZE length 6144 spd 4 4 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
||||||
DIAG : decode preamble cy 199 hd 1 sec 0 spd 0
|
DIAG : decode preamble cy 49 hd 1 sec 0 spd 0
|
||||||
DIAG : STEP 30 FAILED
|
DIAG : STEP 30 FAILED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : ADDRESS RECORD cy 199 hd 0 sec 0 0 0 40 0
|
DIAG : ADDRESS RECORD cy 49 hd 0 sec 0 0 0 40 0
|
||||||
DIAG : INITIALIZE length 6144 spd 0 0 0 40 0
|
DIAG : INITIALIZE length 6144 spd 0 0 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
||||||
DIAG : decode preamble cy 199 hd 0 sec 0 spd 0
|
DIAG : decode preamble cy 49 hd 0 sec 0 spd 0
|
||||||
DIAG : SET FILE MASK mask 0 0 0 40 0
|
DIAG : SET FILE MASK mask 0 0 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : READ length 128 0 0 40 0
|
DIAG : READ length 128 0 0 40 0
|
||||||
DIAG : STEP 31 PASSED
|
DIAG : STEP 31 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : ADDRESS RECORD cy 199 hd 1 sec 0 0 0 40 0
|
DIAG : ADDRESS RECORD cy 49 hd 1 sec 0 0 0 40 0
|
||||||
DIAG : INITIALIZE length 6144 spd 0 0 0 40 0
|
DIAG : INITIALIZE length 6144 spd 0 0 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
||||||
DIAG : decode preamble cy 199 hd 1 sec 0 spd 0
|
DIAG : decode preamble cy 49 hd 1 sec 0 spd 0
|
||||||
DIAG : SET FILE MASK mask 0 0 0 40 0
|
DIAG : SET FILE MASK mask 0 0 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : READ length 128 0 0 40 0
|
DIAG : READ length 128 0 0 40 0
|
||||||
DIAG : STEP 32 PASSED
|
DIAG : STEP 32 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : WRITE length 128 0 0 40 0
|
DIAG : WRITE length 128 0 0 40 0
|
||||||
DIAG : STEP 35 PASSED
|
DIAG : STEP 35 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : READ length 128 0 0 40 0
|
DIAG : READ length 128 0 0 40 0
|
||||||
DIAG : test data read test passed
|
DIAG : test data read test passed
|
||||||
DIAG : STEP 36 PASSED
|
DIAG : STEP 36 PASSED
|
||||||
|
@ -3801,19 +3804,19 @@ TEST REPORT: DIAG : HP-IB DISC DIAGNOSTIC
|
||||||
DIAG : STEP 40 PASSED
|
DIAG : STEP 40 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : VERIFY sector count 1 0 0 40 0
|
DIAG : VERIFY sector count 1 0 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : VERIFY sector count 2 0 0 40 0
|
DIAG : VERIFY sector count 2 0 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : VERIFY sector count 4 0 0 40 0
|
DIAG : VERIFY sector count 4 0 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : VERIFY sector count 8 0 0 40 0
|
DIAG : VERIFY sector count 8 0 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : VERIFY sector count 16 0 0 40 0
|
DIAG : VERIFY sector count 16 0 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : VERIFY sector count 32 0 0 40 0
|
DIAG : VERIFY sector count 32 0 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : VERIFY sector count 48 0 0 40 0
|
DIAG : VERIFY sector count 48 0 0 40 0
|
||||||
DIAG : STEP 45 PASSED
|
DIAG : STEP 45 PASSED
|
||||||
|
|
||||||
|
@ -3854,38 +3857,38 @@ TEST REPORT: DIAG : HP-IB DISC DIAGNOSTIC
|
||||||
DIAG : STEP 50 PASSED
|
DIAG : STEP 50 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : ADDRESS RECORD cy 198 hd 1 sec 0 0 0 40 0
|
DIAG : ADDRESS RECORD cy 48 hd 1 sec 0 0 0 40 0
|
||||||
DIAG : INITIALIZE length 6144 spd 0 0 0 40 0
|
DIAG : INITIALIZE length 6144 spd 0 0 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
||||||
DIAG : decode preamble cy 199 hd 1 sec 0 spd 0
|
DIAG : decode preamble cy 49 hd 1 sec 0 spd 0
|
||||||
DIAG : STEP 52 FAILED
|
DIAG : STEP 52 FAILED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : ADDRESS RECORD cy 199 hd 0 sec 0 0 0 40 0
|
DIAG : ADDRESS RECORD cy 49 hd 0 sec 0 0 0 40 0
|
||||||
DIAG : INITIALIZE length 6144 spd 0 0 0 40 0
|
DIAG : INITIALIZE length 6144 spd 0 0 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
||||||
DIAG : decode preamble cy 199 hd 1 sec 0 spd 0
|
DIAG : decode preamble cy 49 hd 1 sec 0 spd 0
|
||||||
DIAG : STEP 54 FAILED
|
DIAG : STEP 54 FAILED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : ADDRESS RECORD cy 199 hd 1 sec 0 0 0 40 0
|
DIAG : ADDRESS RECORD cy 49 hd 1 sec 0 0 0 40 0
|
||||||
DIAG : INITIALIZE length 6144 spd 0 0 0 40 0
|
DIAG : INITIALIZE length 6144 spd 0 0 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
||||||
DIAG : decode preamble cy 199 hd 1 sec 0 spd 0
|
DIAG : decode preamble cy 49 hd 1 sec 0 spd 0
|
||||||
DIAG : SET FILE MASK mask 0 0 0 40 0
|
DIAG : SET FILE MASK mask 0 0 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : READ length 128 0 0 40 0
|
DIAG : READ length 128 0 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 1 sec 5 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 5 0 37 40 0
|
||||||
DIAG : READ FULL SECTOR length 138 0 0 40 0
|
DIAG : READ FULL SECTOR length 138 0 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : WRITE FULL SECTOR length 138 0 0 40 0
|
DIAG : WRITE FULL SECTOR length 138 0 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 1 sec 1 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 1 0 37 40 0
|
||||||
DIAG : READ length 128 0 0 40 0
|
DIAG : READ length 128 0 0 40 0
|
||||||
DIAG : STEP 55 FAILED
|
DIAG : STEP 55 FAILED
|
||||||
|
|
||||||
|
@ -3912,7 +3915,7 @@ TEST REPORT: DIAG : HP-IB DISC DIAGNOSTIC
|
||||||
DIAG : STEP 60 PASSED
|
DIAG : STEP 60 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 4 sec 0 0 23 44 1
|
DIAG : SEEK cy 49 hd 4 sec 0 0 23 44 1
|
||||||
DIAG : SEEK cy 0 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 0 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : STEP 72 PASSED
|
DIAG : STEP 72 PASSED
|
||||||
|
|
||||||
|
@ -3922,7 +3925,7 @@ TEST REPORT: DIAG : HP-IB DISC DIAGNOSTIC
|
||||||
DIAG : STEP 73 PASSED
|
DIAG : STEP 73 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 1 sec 49 0 23 44 1
|
DIAG : SEEK cy 49 hd 1 sec 49 0 23 44 1
|
||||||
DIAG : SEEK cy 0 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 0 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : STEP 74 PASSED
|
DIAG : STEP 74 PASSED
|
||||||
|
|
||||||
|
@ -3948,12 +3951,12 @@ TEST REPORT: DIAG : HP-IB DISC DIAGNOSTIC
|
||||||
DIAG : STEP 81 PASSED
|
DIAG : STEP 81 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : ADDRESS RECORD cy 199 hd 1 sec 0 0 0 40 0
|
DIAG : ADDRESS RECORD cy 49 hd 1 sec 0 0 0 40 0
|
||||||
DIAG : INITIALIZE length 6144 spd 2 2 0 40 0
|
DIAG : INITIALIZE length 6144 spd 2 2 0 40 0
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 40 0
|
||||||
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
DIAG : READ FULL SECTOR length 3 0 0 40 0
|
||||||
DIAG : decode preamble cy 199 hd 1 sec 0 spd 0
|
DIAG : decode preamble cy 49 hd 1 sec 0 spd 0
|
||||||
DIAG : STEP 82 FAILED
|
DIAG : STEP 82 FAILED
|
||||||
|
|
||||||
|
|
||||||
|
@ -3965,17 +3968,17 @@ TEST REPORT: DIAG : HP-IB DISC DIAGNOSTIC
|
||||||
DIAG : STEP 83 PASSED
|
DIAG : STEP 83 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 0 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 0 0
|
||||||
DIAG : WRITE length 1 0 0 0 0
|
DIAG : WRITE length 1 0 0 0 0
|
||||||
DIAG : STEP 84 FAILED
|
DIAG : STEP 84 FAILED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 0 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 0 0
|
||||||
DIAG : WRITE FULL SECTOR length 1 0 23 0 1
|
DIAG : WRITE FULL SECTOR length 1 0 23 0 1
|
||||||
DIAG : STEP 85 PASSED
|
DIAG : STEP 85 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 1 sec 0 0 37 0 0
|
DIAG : SEEK cy 49 hd 1 sec 0 0 37 0 0
|
||||||
DIAG : INITIALIZE length 1 spd 0 0 23 0 1
|
DIAG : INITIALIZE length 1 spd 0 0 23 0 1
|
||||||
DIAG : STEP 86 PASSED
|
DIAG : STEP 86 PASSED
|
||||||
|
|
||||||
|
@ -3992,21 +3995,21 @@ TEST REPORT: DIAG : HP-IB DISC DIAGNOSTIC
|
||||||
DIAG : Type <space>,<return>
|
DIAG : Type <space>,<return>
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 140 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 140 0
|
||||||
DIAG : STEP 89 PASSED
|
DIAG : STEP 89 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 140 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 140 0
|
||||||
DIAG : WRITE length 1 0 23 140 1
|
DIAG : WRITE length 1 0 23 140 1
|
||||||
DIAG : STEP 90 PASSED
|
DIAG : STEP 90 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 140 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 140 0
|
||||||
DIAG : WRITE FULL SECTOR length 1 0 23 140 1
|
DIAG : WRITE FULL SECTOR length 1 0 23 140 1
|
||||||
DIAG : STEP 91 PASSED
|
DIAG : STEP 91 PASSED
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 140 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 140 0
|
||||||
DIAG : INITIALIZE length 1 spd 0 0 23 140 1
|
DIAG : INITIALIZE length 1 spd 0 0 23 140 1
|
||||||
DIAG : STEP 92 PASSED
|
DIAG : STEP 92 PASSED
|
||||||
|
|
||||||
|
@ -4015,7 +4018,7 @@ TEST REPORT: DIAG : HP-IB DISC DIAGNOSTIC
|
||||||
DIAG : Type <space>,<return>
|
DIAG : Type <space>,<return>
|
||||||
|
|
||||||
DIAG : operation parameters/results spd cs ds DSJ
|
DIAG : operation parameters/results spd cs ds DSJ
|
||||||
DIAG : SEEK cy 199 hd 0 sec 0 0 37 40 0
|
DIAG : SEEK cy 49 hd 0 sec 0 0 37 40 0
|
||||||
DIAG : STEP 97 PASSED
|
DIAG : STEP 97 PASSED
|
||||||
|
|
||||||
DIAG : Part 3 of diagnostic completed.
|
DIAG : Part 3 of diagnostic completed.
|
||||||
|
|
|
@ -859,7 +859,7 @@ t_stat dpc_svc (UNIT *uptr)
|
||||||
int32 da, drv, err;
|
int32 da, drv, err;
|
||||||
|
|
||||||
err = 0; /* assume no err */
|
err = 0; /* assume no err */
|
||||||
drv = uptr - dpc_dev.units; /* get drive no */
|
drv = uptr - dpc_unit; /* get drive no */
|
||||||
if (uptr->flags & UNIT_UNLOAD) { /* drive down? */
|
if (uptr->flags & UNIT_UNLOAD) { /* drive down? */
|
||||||
|
|
||||||
dpc.command = CLEAR; /* clr cch cmd */
|
dpc.command = CLEAR; /* clr cch cmd */
|
||||||
|
@ -1052,7 +1052,7 @@ return detach_unit (uptr); /* detach unit */
|
||||||
|
|
||||||
t_stat dpc_load_unload (UNIT *uptr, int32 value, char *cptr, void *desc)
|
t_stat dpc_load_unload (UNIT *uptr, int32 value, char *cptr, void *desc)
|
||||||
{
|
{
|
||||||
uint32 drv;
|
int32 drv;
|
||||||
|
|
||||||
if ((uptr->flags & UNIT_ATT) == 0) return SCPE_UNATT; /* must be attached to load */
|
if ((uptr->flags & UNIT_ATT) == 0) return SCPE_UNATT; /* must be attached to load */
|
||||||
|
|
||||||
|
@ -1060,7 +1060,7 @@ if (value == UNIT_UNLOAD) /* unload heads? */
|
||||||
uptr->flags = uptr->flags | UNIT_UNLOAD; /* indicate unload */
|
uptr->flags = uptr->flags | UNIT_UNLOAD; /* indicate unload */
|
||||||
else { /* load heads */
|
else { /* load heads */
|
||||||
uptr->flags = uptr->flags & ~UNIT_UNLOAD; /* indicate load */
|
uptr->flags = uptr->flags & ~UNIT_UNLOAD; /* indicate load */
|
||||||
drv = uptr - dpc_dev.units; /* get drive no */
|
drv = uptr - dpc_unit; /* get drive no */
|
||||||
dpc_sta[drv] = dpc_sta[drv] | STA_ATN | STA_1ST; /* update status */
|
dpc_sta[drv] = dpc_sta[drv] | STA_ATN | STA_1ST; /* update status */
|
||||||
if (dpc_poll) /* polling enabled? */
|
if (dpc_poll) /* polling enabled? */
|
||||||
dpcio (&dpc_dib, ioENF, 0); /* set flag */
|
dpcio (&dpc_dib, ioENF, 0); /* set flag */
|
||||||
|
|
|
@ -678,7 +678,7 @@ t_stat dqc_svc (UNIT *uptr)
|
||||||
int32 da, drv, err;
|
int32 da, drv, err;
|
||||||
|
|
||||||
err = 0; /* assume no err */
|
err = 0; /* assume no err */
|
||||||
drv = uptr - dqc_dev.units; /* get drive no */
|
drv = uptr - dqc_unit; /* get drive no */
|
||||||
if (uptr->flags & UNIT_UNLOAD) { /* drive down? */
|
if (uptr->flags & UNIT_UNLOAD) { /* drive down? */
|
||||||
dqc.command = CLEAR; /* clr cch cmd */
|
dqc.command = CLEAR; /* clr cch cmd */
|
||||||
dqcio (&dqc_dib, ioENF, 0); /* set cch flg */
|
dqcio (&dqc_dib, ioENF, 0); /* set cch flg */
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
|
|
||||||
DS 13037D/13175D disc controller/interface
|
DS 13037D/13175D disc controller/interface
|
||||||
|
|
||||||
02-Mar-12 JDB Rewritten to use the MAC/ICD disc controller library
|
29-Mar-12 JDB Rewritten to use the MAC/ICD disc controller library
|
||||||
ioIOO now notifies controller service of parameter output
|
ioIOO now notifies controller service of parameter output
|
||||||
14-Feb-12 JDB Corrected SRQ generation and FIFO under/overrun detection
|
14-Feb-12 JDB Corrected SRQ generation and FIFO under/overrun detection
|
||||||
Corrected Clear command to conform to the hardware
|
Corrected Clear command to conform to the hardware
|
||||||
|
@ -60,15 +60,14 @@
|
||||||
The 13037D multiple-access (MAC) disc controller supports from one to eight
|
The 13037D multiple-access (MAC) disc controller supports from one to eight
|
||||||
HP 7905 (15 MB), 7906 (20MB), 7920 (50 MB), and 7925 (120 MB) disc drives
|
HP 7905 (15 MB), 7906 (20MB), 7920 (50 MB), and 7925 (120 MB) disc drives
|
||||||
accessed by one to eight CPUs. The controller hardware consists of a 16-bit
|
accessed by one to eight CPUs. The controller hardware consists of a 16-bit
|
||||||
microprogrammed processor constructed from 74S181 bit slices and operating at
|
microprogrammed processor constructed from 74S181 bit slices operating at 5
|
||||||
5 MHz, a device controller providing the interconnections to the drives and
|
MHz, a device controller providing the interconnections to the drives and CPU
|
||||||
CPU interfaces, and error correction circuitry that enables the controller to
|
interfaces, and an error correction controller that enables the correction of
|
||||||
correct up to a 32-bit error burst. 1024 words of 24-bit firmware are stored
|
up to 32-bit error bursts. 1024 words of 24-bit firmware are stored in ROM.
|
||||||
in ROM.
|
|
||||||
|
|
||||||
The 13175D disc interface is used to connect the CPU to the 13037 device
|
The 13175D disc interface is used to connect the HP 1000 CPU to the 13037
|
||||||
controller. In a multiple-CPU system, one interface is strapped to reset the
|
device controller. In a multiple-CPU system, one interface is strapped to
|
||||||
controller when the CPU's front panel PRESET button is pressed.
|
reset the controller when the CPU's front panel PRESET button is pressed.
|
||||||
|
|
||||||
This module simulates a 13037D connected to a single 13175D interface. From
|
This module simulates a 13037D connected to a single 13175D interface. From
|
||||||
one to eight drives may be connected, and drive types may be freely
|
one to eight drives may be connected, and drive types may be freely
|
||||||
|
@ -134,7 +133,7 @@
|
||||||
#define FIFO_STOP (ds.fifo_count >= 5) /* FIFO stop filling test */
|
#define FIFO_STOP (ds.fifo_count >= 5) /* FIFO stop filling test */
|
||||||
#define FIFO_FULL (ds.fifo_count == FIFO_SIZE) /* FIFO full test */
|
#define FIFO_FULL (ds.fifo_count == FIFO_SIZE) /* FIFO full test */
|
||||||
|
|
||||||
#define PRESET_ENABLE TRUE /* Preset Jumper (W4) enabled */
|
#define PRESET_ENABLE TRUE /* Preset Jumper (W4) is enabled */
|
||||||
|
|
||||||
|
|
||||||
/* Debug flags */
|
/* Debug flags */
|
||||||
|
@ -223,7 +222,7 @@ static t_stat activate_unit (UNIT *uptr);
|
||||||
|
|
||||||
1. The validation routine does not allow the model number or autosizing
|
1. The validation routine does not allow the model number or autosizing
|
||||||
option to be changed when the unit is attached. Therefore, specifying
|
option to be changed when the unit is attached. Therefore, specifying
|
||||||
UNIT_ATT in the mask field has no deleterious effect.
|
UNIT_ATT in the mask field has no adverse effect.
|
||||||
|
|
||||||
2. The modifier DEVNO is deprecated in favor of SC but is retained for
|
2. The modifier DEVNO is deprecated in favor of SC but is retained for
|
||||||
compatibility.
|
compatibility.
|
||||||
|
@ -237,14 +236,14 @@ static DIB ds_dib = { &ds_io, DS };
|
||||||
#define UNIT_FLAGS (UNIT_FIX | UNIT_ATTABLE | UNIT_ROABLE | UNIT_DISABLE | UNIT_UNLOAD)
|
#define UNIT_FLAGS (UNIT_FIX | UNIT_ATTABLE | UNIT_ROABLE | UNIT_DISABLE | UNIT_UNLOAD)
|
||||||
|
|
||||||
static UNIT ds_unit [] = {
|
static UNIT ds_unit [] = {
|
||||||
{ UDATA (&ds_service_drive, UNIT_FLAGS | MODEL_7905, D7905_WORDS) }, /* unit 0 */
|
{ UDATA (&ds_service_drive, UNIT_FLAGS | MODEL_7905, D7905_WORDS) }, /* drive unit 0 */
|
||||||
{ UDATA (&ds_service_drive, UNIT_FLAGS | MODEL_7905, D7905_WORDS) }, /* unit 1 */
|
{ UDATA (&ds_service_drive, UNIT_FLAGS | MODEL_7905, D7905_WORDS) }, /* drive unit 1 */
|
||||||
{ UDATA (&ds_service_drive, UNIT_FLAGS | MODEL_7905, D7905_WORDS) }, /* unit 2 */
|
{ UDATA (&ds_service_drive, UNIT_FLAGS | MODEL_7905, D7905_WORDS) }, /* drive unit 2 */
|
||||||
{ UDATA (&ds_service_drive, UNIT_FLAGS | MODEL_7905, D7905_WORDS) }, /* unit 3 */
|
{ UDATA (&ds_service_drive, UNIT_FLAGS | MODEL_7905, D7905_WORDS) }, /* drive unit 3 */
|
||||||
{ UDATA (&ds_service_drive, UNIT_FLAGS | MODEL_7905, D7905_WORDS) }, /* unit 4 */
|
{ UDATA (&ds_service_drive, UNIT_FLAGS | MODEL_7905, D7905_WORDS) }, /* drive unit 4 */
|
||||||
{ UDATA (&ds_service_drive, UNIT_FLAGS | MODEL_7905, D7905_WORDS) }, /* unit 5 */
|
{ UDATA (&ds_service_drive, UNIT_FLAGS | MODEL_7905, D7905_WORDS) }, /* drive unit 5 */
|
||||||
{ UDATA (&ds_service_drive, UNIT_FLAGS | MODEL_7905, D7905_WORDS) }, /* unit 6 */
|
{ UDATA (&ds_service_drive, UNIT_FLAGS | MODEL_7905, D7905_WORDS) }, /* drive unit 6 */
|
||||||
{ UDATA (&ds_service_drive, UNIT_FLAGS | MODEL_7905, D7905_WORDS) }, /* unit 7 */
|
{ UDATA (&ds_service_drive, UNIT_FLAGS | MODEL_7905, D7905_WORDS) }, /* drive unit 7 */
|
||||||
{ UDATA (&ds_service_controller, UNIT_DIS, 0) }, /* controller unit */
|
{ UDATA (&ds_service_controller, UNIT_DIS, 0) }, /* controller unit */
|
||||||
{ UDATA (&ds_service_timer, UNIT_DIS, 0) } /* timer unit */
|
{ UDATA (&ds_service_timer, UNIT_DIS, 0) } /* timer unit */
|
||||||
};
|
};
|
||||||
|
@ -252,8 +251,8 @@ static UNIT ds_unit [] = {
|
||||||
static REG ds_reg [] = {
|
static REG ds_reg [] = {
|
||||||
{ FLDATA (CMFOL, ds.cmfol, 0) },
|
{ FLDATA (CMFOL, ds.cmfol, 0) },
|
||||||
{ FLDATA (CMRDY, ds.cmrdy, 0) },
|
{ FLDATA (CMRDY, ds.cmrdy, 0) },
|
||||||
{ BRDATA (FIFO, ds.fifo, 8, 16, FIFO_SIZE), REG_CIRC },
|
|
||||||
{ DRDATA (FCNT, ds.fifo_count, 5) },
|
{ DRDATA (FCNT, ds.fifo_count, 5) },
|
||||||
|
{ BRDATA (FIFO, ds.fifo, 8, 16, FIFO_SIZE), REG_CIRC },
|
||||||
{ ORDATA (FREG, ds.fifo_reg, 32), REG_HRO },
|
{ ORDATA (FREG, ds.fifo_reg, 32), REG_HRO },
|
||||||
|
|
||||||
{ ORDATA (CNTYPE, mac_cntlr.type, 2), REG_HRO },
|
{ ORDATA (CNTYPE, mac_cntlr.type, 2), REG_HRO },
|
||||||
|
@ -375,13 +374,13 @@ DEVICE ds_dev = {
|
||||||
The control path consists of the usual control, flag buffer, flag, and SRQ
|
The control path consists of the usual control, flag buffer, flag, and SRQ
|
||||||
flip-flops, although flag and SRQ are decoupled to allow the full DCPC
|
flip-flops, although flag and SRQ are decoupled to allow the full DCPC
|
||||||
transfer rate through the FIFO (driving SRQ from the flag limits transfers to
|
transfer rate through the FIFO (driving SRQ from the flag limits transfers to
|
||||||
only every other cycle). SRQ is based on the FIFO level: if data or room in
|
every other cycle). SRQ is based on the FIFO level: if data or room in the
|
||||||
the FIFO is available, SRQ is set to transfer it. The flag is only used to
|
FIFO is available, SRQ is set to initiate a transfer. The flag is only used
|
||||||
signal an interrupt at the end of a command.
|
to signal an interrupt at the end of a command.
|
||||||
|
|
||||||
One unusual aspect is that SFC and SFS test different things, rather than
|
One unusual aspect is that SFC and SFS test different things, rather than
|
||||||
complementary states of the same thing. SFC tests the busy flip-flop, and
|
complementary states of the same thing. SFC tests the controller busy state,
|
||||||
SFS tests the flag flip-flop.
|
and SFS tests the flag flip-flop.
|
||||||
|
|
||||||
In addition, the card contains end-of-data-transfer, command-follows, and
|
In addition, the card contains end-of-data-transfer, command-follows, and
|
||||||
command-ready flip-flops. EDT is set when the DCPC EDT signal is asserted
|
command-ready flip-flops. EDT is set when the DCPC EDT signal is asserted
|
||||||
|
@ -397,16 +396,16 @@ DEVICE ds_dev = {
|
||||||
1. In hardware, SRQ is enabled only when the controller is reading or
|
1. In hardware, SRQ is enabled only when the controller is reading or
|
||||||
writing the disc (IFIN or IFOUT functions are asserted) and set when the
|
writing the disc (IFIN or IFOUT functions are asserted) and set when the
|
||||||
FIFO is not empty (read) or not full (write). In simulation, SRQ is set
|
FIFO is not empty (read) or not full (write). In simulation, SRQ is set
|
||||||
by the unit service read/write data phase transfers and cleared below
|
by the unit service read/write data phase transfers and cleared in the
|
||||||
when the FIFO is empty (read) or full (write).
|
IOI and IOO signal handlers when the FIFO is empty (read) or full
|
||||||
|
(write).
|
||||||
|
|
||||||
2. The DCPC EDT signal cannot set the controller's end-of-data flag directly
|
2. The DCPC EDT signal cannot set the controller's end-of-data flag directly
|
||||||
because a write EOD must occur only after the FIFO has been drained.
|
because a write EOD must occur only after the FIFO has been drained.
|
||||||
|
|
||||||
3. Polling the interface or drives must be deferred to the end of the I/O
|
3. Polling the interface or drives must be deferred to the end of I/O signal
|
||||||
signal service. If they are performed in the IOO/STC handlers
|
handling. If they are performed in the IOO/STC handlers themselves, an
|
||||||
themselves, an associated CLF might clear the flag that was set by the
|
associated CLF might clear the flag that was set by the poll.
|
||||||
poll.
|
|
||||||
|
|
||||||
4. Executing a CLC sets the controller's end-of-data flag, which will abort
|
4. Executing a CLC sets the controller's end-of-data flag, which will abort
|
||||||
a read or write data transfer in progress. Parameter transfers are not
|
a read or write data transfer in progress. Parameter transfers are not
|
||||||
|
@ -417,7 +416,7 @@ DEVICE ds_dev = {
|
||||||
|
|
||||||
5. The hardware Interface Function and Flag Buses are not implemented
|
5. The hardware Interface Function and Flag Buses are not implemented
|
||||||
explicitly. Instead, interface functions and signals are inferred by the
|
explicitly. Instead, interface functions and signals are inferred by the
|
||||||
interface by the current command operation and phase.
|
interface from the current command operation and phase.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
uint32 ds_io (DIB *dibptr, IOCYCLE signal_set, uint32 stat_data)
|
uint32 ds_io (DIB *dibptr, IOCYCLE signal_set, uint32 stat_data)
|
||||||
|
@ -512,7 +511,7 @@ while (working_set) {
|
||||||
if (ds.srq == SET && DEBUG_PRI (ds_dev, DEB_CMDS))
|
if (ds.srq == SET && DEBUG_PRI (ds_dev, DEB_CMDS))
|
||||||
fprintf (sim_deb, ">>DS cmds: [OTx%s] SRQ cleared\n", hold_or_clear);
|
fprintf (sim_deb, ">>DS cmds: [OTx%s] SRQ cleared\n", hold_or_clear);
|
||||||
|
|
||||||
ds.srq = CLEAR; /* clear SRQ */
|
ds.srq = CLEAR; /* clear SRQ to stop filling */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -622,7 +621,7 @@ return stat_data;
|
||||||
overrun error.
|
overrun error.
|
||||||
|
|
||||||
Write transfers set the initial SRQ to request words from the CPU. As each
|
Write transfers set the initial SRQ to request words from the CPU. As each
|
||||||
arrives, it is unloaded from the FIFO into the sector buffer, and SRQ is
|
word arrives, it is unloaded from the FIFO into the sector buffer, and SRQ is
|
||||||
enabled. If the current sector transfer is complete, the controller is moved
|
enabled. If the current sector transfer is complete, the controller is moved
|
||||||
to the end phase. If the FIFO underflows, the write terminates with a data
|
to the end phase. If the FIFO underflows, the write terminates with a data
|
||||||
overrun error.
|
overrun error.
|
||||||
|
@ -639,12 +638,12 @@ return stat_data;
|
||||||
|
|
||||||
Implementation notes:
|
Implementation notes:
|
||||||
|
|
||||||
1. Every command except Seek, Recalibrate, and End set the flag when the
|
1. Every command except Seek, Recalibrate, and End sets the flag when the
|
||||||
command completes. A command completes when the controller is no longer
|
command completes. A command completes when the controller is no longer
|
||||||
busy (it becomes idle for Seek, Recalibrate, and End, and becomes waiting
|
busy (it becomes idle for Seek, Recalibrate, and End, or it becomes
|
||||||
for all others). Seek and Recalibrate may generate errors (e.g., heads
|
waiting for all others). Seek and Recalibrate may generate errors (e.g.,
|
||||||
unloaded), in which case the flag must be set. But in these cases, the
|
heads unloaded), in which case the flag must be set. But in these cases,
|
||||||
controller state is waiting, not idle.
|
the controller state is waiting, not idle.
|
||||||
|
|
||||||
However, it is insufficient simply to check that the controller has moved
|
However, it is insufficient simply to check that the controller has moved
|
||||||
to the wait state, because a seek may complete while the controller is
|
to the wait state, because a seek may complete while the controller is
|
||||||
|
@ -653,8 +652,9 @@ return stat_data;
|
||||||
completes, another command is issued that attempts to access unit 1,
|
completes, another command is issued that attempts to access unit 1,
|
||||||
which is not ready. The command fails with a Status-2 error, and the
|
which is not ready. The command fails with a Status-2 error, and the
|
||||||
controller moves to the wait state. When the seek completes, the
|
controller moves to the wait state. When the seek completes, the
|
||||||
controller is waiting with error status. We must determine if the seek
|
controller is waiting with error status. We must determine whether the
|
||||||
completed successfully or not, as we must interrupt in the latter case.
|
seek completed successfully or not, as we must interrupt in the latter
|
||||||
|
case.
|
||||||
|
|
||||||
Therefore, we determine seek completion by checking if the Attention
|
Therefore, we determine seek completion by checking if the Attention
|
||||||
status was set. Attention sets only if the seek completes successfully.
|
status was set. Attention sets only if the seek completes successfully.
|
||||||
|
@ -663,31 +663,31 @@ return stat_data;
|
||||||
command terminated before the seek ever started. Also, a seek may
|
command terminated before the seek ever started. Also, a seek may
|
||||||
complete while the controller is busy, waiting, or idle.)
|
complete while the controller is busy, waiting, or idle.)
|
||||||
|
|
||||||
2. For debug printouts, we want to print the name of the command that has
|
2. For debug printouts, we want to print the name of the command that has
|
||||||
completed when the controller returns to the idle or wait state.
|
completed when the controller returns to the idle or wait state.
|
||||||
Normally, we would use the controller's "opcode" field to identify the
|
Normally, we would use the controller's "opcode" field to identify the
|
||||||
command that completed. However, while waiting for Seek or Recalibrate
|
command that completed. However, while waiting for Seek or Recalibrate
|
||||||
completion, "opcode" may be set to another command if that command does
|
completion, "opcode" may be set to another command if that command does
|
||||||
not access this drive. For example, it might be set to a Read of
|
not access this drive. For example, it might be set to a Read of another
|
||||||
another unit, or a Request Status for this unit. So we can't rely on
|
unit, or a Request Status for this unit. So we can't rely on "opcode" to
|
||||||
"opcode" to report the correct positioning command completion.
|
report the correct name of the completed positioning command.
|
||||||
|
|
||||||
However, we cannot rely on "uptr->OP" either, as it can be changed
|
However, we cannot rely on "uptr->OP" either, as that can be changed
|
||||||
during the course of a command. For example, Read Without Verify is
|
during the course of a command. For example, Read Without Verify is
|
||||||
changed to Read after a track crossing.
|
changed to Read after a track crossing.
|
||||||
|
|
||||||
Instead, we have to determine whether a seek is completing. If it is,
|
Instead, we have to determine whether a seek is completing. If it is,
|
||||||
then we report "uptr->OP"; otherwise, we report "opcode".
|
then we report "uptr->OP"; otherwise, we report "opcode".
|
||||||
|
|
||||||
3. The initial write SRQ must set only at the transition from the start
|
3. The initial write SRQ must set only at the transition from the start
|
||||||
phase to the data phase. If a write command begins with an auto-seek,
|
phase to the data phase. If a write command begins with an auto-seek,
|
||||||
the drive service will be entered twice in the start phase (the first
|
the drive service will be entered twice in the start phase (the first
|
||||||
entry performs the seek, and the second begins the write). In hardware,
|
entry performs the seek, and the second begins the write). In hardware,
|
||||||
SRQ does not assert until the write begins.
|
SRQ does not assert until the write begins.
|
||||||
|
|
||||||
4. The DCPC EDT signal cannot set the controller's end-of-data flag
|
4. The DCPC EDT signal cannot set the controller's end-of-data flag
|
||||||
directly because a write EOD must only occur after the FIFO has been
|
directly because a write EOD must only occur after the FIFO has been
|
||||||
drained.
|
drained.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
t_stat ds_service_drive (UNIT *uptr)
|
t_stat ds_service_drive (UNIT *uptr)
|
||||||
|
@ -695,9 +695,10 @@ t_stat ds_service_drive (UNIT *uptr)
|
||||||
static const char completion_message [] = ">>DS rwsc: Unit %d %s command completed\n";
|
static const char completion_message [] = ">>DS rwsc: Unit %d %s command completed\n";
|
||||||
t_stat result;
|
t_stat result;
|
||||||
t_bool seek_completion;
|
t_bool seek_completion;
|
||||||
FLIP_FLOP entry_srq = ds.srq; /* SRQ state on entry */
|
int32 unit;
|
||||||
CNTLR_PHASE entry_phase = (CNTLR_PHASE) uptr->PHASE; /* operation phase on entry */
|
FLIP_FLOP entry_srq = ds.srq; /* get the SRQ state on entry */
|
||||||
uint32 entry_status = uptr->STAT; /* drive status on entry */
|
CNTLR_PHASE entry_phase = (CNTLR_PHASE) uptr->PHASE; /* get the operation phase on entry */
|
||||||
|
uint32 entry_status = uptr->STAT; /* get the drive status on entry */
|
||||||
|
|
||||||
result = dl_service_drive (&mac_cntlr, uptr); /* service the drive */
|
result = dl_service_drive (&mac_cntlr, uptr); /* service the drive */
|
||||||
|
|
||||||
|
@ -764,7 +765,7 @@ if ((CNTLR_PHASE) uptr->PHASE == data_phase) /* is the drive in the d
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
default: /* entered with an invalid state */
|
default: /* we were entered with an invalid state */
|
||||||
result = SCPE_IERR; /* return an internal (programming) error */
|
result = SCPE_IERR; /* return an internal (programming) error */
|
||||||
break;
|
break;
|
||||||
} /* end of data phase operation dispatch */
|
} /* end of data phase operation dispatch */
|
||||||
|
@ -774,13 +775,13 @@ if (DEBUG_PRI (ds_dev, DEB_CMDS) && entry_srq != ds.srq)
|
||||||
fprintf (sim_deb, ">>DS cmds: SRQ %s\n", ds.srq == SET ? "set" : "cleared");
|
fprintf (sim_deb, ">>DS cmds: SRQ %s\n", ds.srq == SET ? "set" : "cleared");
|
||||||
|
|
||||||
|
|
||||||
if (uptr->wait) /* is service requested? */
|
if (uptr->wait) /* was service requested? */
|
||||||
activate_unit (uptr); /* schedule the next event */
|
activate_unit (uptr); /* schedule the next event */
|
||||||
|
|
||||||
seek_completion = ~entry_status & uptr->STAT & DL_S2ATN; /* seek is complete when Attention sets */
|
seek_completion = ~entry_status & uptr->STAT & DL_S2ATN; /* seek is complete when Attention sets */
|
||||||
|
|
||||||
if (mac_cntlr.state != cntlr_busy) { /* is the command complete? */
|
if (mac_cntlr.state != cntlr_busy) { /* is the command complete? */
|
||||||
if (mac_cntlr.state == cntlr_wait && !seek_completion) /* is it command and not seek completion? */
|
if (mac_cntlr.state == cntlr_wait && !seek_completion) /* is it command but not seek completion? */
|
||||||
ds_io (&ds_dib, ioENF, 0); /* set the data flag to interrupt the CPU */
|
ds_io (&ds_dib, ioENF, 0); /* set the data flag to interrupt the CPU */
|
||||||
|
|
||||||
poll_interface (); /* poll the interface for the next command */
|
poll_interface (); /* poll the interface for the next command */
|
||||||
|
@ -788,22 +789,22 @@ if (mac_cntlr.state != cntlr_busy) { /* is the command co
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (DEBUG_PRI (ds_dev, DEB_RWSC))
|
if (DEBUG_PRI (ds_dev, DEB_RWSC)) {
|
||||||
|
unit = uptr - ds_unit; /* get the unit number */
|
||||||
|
|
||||||
if (result == SCPE_IERR) /* did an internal error occur? */
|
if (result == SCPE_IERR) /* did an internal error occur? */
|
||||||
fprintf (sim_deb, ">>DS rwsc: Unit %d %s command %s phase service not handled\n",
|
fprintf (sim_deb, ">>DS rwsc: Unit %d %s command %s phase service not handled\n",
|
||||||
uptr - ds_dev.units,
|
unit, dl_opcode_name (MAC, (CNTLR_OPCODE) uptr->OP),
|
||||||
dl_opcode_name (MAC, (CNTLR_OPCODE) uptr->OP),
|
|
||||||
dl_phase_name ((CNTLR_PHASE) uptr->PHASE));
|
dl_phase_name ((CNTLR_PHASE) uptr->PHASE));
|
||||||
|
|
||||||
else if (seek_completion) /* if a seek has completed */
|
else if (seek_completion) /* if a seek has completed */
|
||||||
fprintf (sim_deb, completion_message, /* report the unit command */
|
fprintf (sim_deb, completion_message, /* report the unit command */
|
||||||
uptr - ds_dev.units,
|
unit, dl_opcode_name (MAC, (CNTLR_OPCODE) uptr->OP));
|
||||||
dl_opcode_name (MAC, (CNTLR_OPCODE) uptr->OP));
|
|
||||||
|
|
||||||
else if (mac_cntlr.state == cntlr_wait) /* if the controller has stopped */
|
else if (mac_cntlr.state == cntlr_wait) /* if the controller has stopped */
|
||||||
fprintf (sim_deb, completion_message, /* report the controller command */
|
fprintf (sim_deb, completion_message, /* report the controller command */
|
||||||
uptr - ds_dev.units,
|
unit, dl_opcode_name (MAC, mac_cntlr.opcode));
|
||||||
dl_opcode_name (MAC, mac_cntlr.opcode));
|
}
|
||||||
|
|
||||||
return result; /* return the result of the service */
|
return result; /* return the result of the service */
|
||||||
}
|
}
|
||||||
|
@ -862,11 +863,11 @@ switch ((CNTLR_PHASE) uptr->PHASE) { /* dispatch the current
|
||||||
case clear:
|
case clear:
|
||||||
case set_file_mask:
|
case set_file_mask:
|
||||||
case wakeup:
|
case wakeup:
|
||||||
ds_io (&ds_dib, ioENF, 0); /* complete the operation with the flag set */
|
ds_io (&ds_dib, ioENF, 0); /* complete the operation and set the flag */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
default: /* entered with an invalid state */
|
default: /* we were entered with an invalid state */
|
||||||
result = SCPE_IERR; /* return an internal (programming) error */
|
result = SCPE_IERR; /* return an internal (programming) error */
|
||||||
break;
|
break;
|
||||||
} /* end of operation dispatch */
|
} /* end of operation dispatch */
|
||||||
|
@ -917,7 +918,7 @@ switch ((CNTLR_PHASE) uptr->PHASE) { /* dispatch the current
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
default: /* entered with an invalid state */
|
default: /* we were entered with an invalid state */
|
||||||
result = SCPE_IERR; /* return an internal (programming) error */
|
result = SCPE_IERR; /* return an internal (programming) error */
|
||||||
break;
|
break;
|
||||||
} /* end of operation dispatch */
|
} /* end of operation dispatch */
|
||||||
|
@ -976,7 +977,7 @@ return result; /* return the result of
|
||||||
|
|
||||||
1. During a power-on reset, a pointer to the FIFO simulation register is
|
1. During a power-on reset, a pointer to the FIFO simulation register is
|
||||||
saved to allow access to the "qptr" field during FIFO loading and
|
saved to allow access to the "qptr" field during FIFO loading and
|
||||||
unloading. This enables the SCP to view the FIFO as a circular queue, so
|
unloading. This enables SCP to view the FIFO as a circular queue, so
|
||||||
that the bottom word of the FIFO is always displayed as FIFO[0],
|
that the bottom word of the FIFO is always displayed as FIFO[0],
|
||||||
regardless of where it is in the actual FIFO array.
|
regardless of where it is in the actual FIFO array.
|
||||||
|
|
||||||
|
@ -992,7 +993,7 @@ if (sim_switches & SWMASK ('P')) { /* is this a power-on re
|
||||||
ds.fifo_reg = find_reg ("FIFO", NULL, dptr); /* find the FIFO register entry */
|
ds.fifo_reg = find_reg ("FIFO", NULL, dptr); /* find the FIFO register entry */
|
||||||
|
|
||||||
if (ds.fifo_reg == NULL) /* if it cannot be found, */
|
if (ds.fifo_reg == NULL) /* if it cannot be found, */
|
||||||
return SCPE_IERR; /* report a programming error! */
|
return SCPE_IERR; /* report a programming error */
|
||||||
|
|
||||||
else { /* found it */
|
else { /* found it */
|
||||||
ds.fifo_reg->qptr = 0; /* so reset the FIFO bottom index */
|
ds.fifo_reg->qptr = 0; /* so reset the FIFO bottom index */
|
||||||
|
@ -1064,7 +1065,7 @@ return result;
|
||||||
/* Boot a MAC disc drive.
|
/* Boot a MAC disc drive.
|
||||||
|
|
||||||
The MAC disc bootstrap program is loaded from the HP 12992B Boot Loader ROM
|
The MAC disc bootstrap program is loaded from the HP 12992B Boot Loader ROM
|
||||||
into memory, the I/O instructions are configured from the interface card
|
into memory, the I/O instructions are configured for the interface card's
|
||||||
select code, and the program is run to boot from the specified unit. The
|
select code, and the program is run to boot from the specified unit. The
|
||||||
loader supports booting from cylinder 0 of drive unit 0 only. Before
|
loader supports booting from cylinder 0 of drive unit 0 only. Before
|
||||||
execution, the S register is automatically set as follows:
|
execution, the S register is automatically set as follows:
|
||||||
|
@ -1166,7 +1167,7 @@ if (unitno != 0) /* boot supported on
|
||||||
return SCPE_NOFNC; /* report "Command not allowed" if attempted */
|
return SCPE_NOFNC; /* report "Command not allowed" if attempted */
|
||||||
|
|
||||||
if (ibl_copy (ds_rom, ds_dib.select_code)) /* copy the boot ROM to memory and configure */
|
if (ibl_copy (ds_rom, ds_dib.select_code)) /* copy the boot ROM to memory and configure */
|
||||||
return SCPE_IERR; /* return an internal error if failed */
|
return SCPE_IERR; /* return an internal error if the copy failed */
|
||||||
|
|
||||||
SR = SR & (IBL_OPT | IBL_DS_HEAD) /* set S to a reasonable value */
|
SR = SR & (IBL_OPT | IBL_DS_HEAD) /* set S to a reasonable value */
|
||||||
| IBL_DS | IBL_MAN | (ds_dib.select_code << IBL_V_DEV); /* before boot execution */
|
| IBL_DS | IBL_MAN | (ds_dib.select_code << IBL_V_DEV); /* before boot execution */
|
||||||
|
@ -1193,7 +1194,7 @@ return SCPE_OK;
|
||||||
|
|
||||||
t_stat ds_load_unload (UNIT *uptr, int32 value, char *cptr, void *desc)
|
t_stat ds_load_unload (UNIT *uptr, int32 value, char *cptr, void *desc)
|
||||||
{
|
{
|
||||||
const t_bool load = (value != UNIT_UNLOAD); /* true if heads are loading */
|
const t_bool load = (value != UNIT_UNLOAD); /* true if the heads are loading */
|
||||||
|
|
||||||
return dl_load_unload (&mac_cntlr, uptr, load); /* load or unload the heads */
|
return dl_load_unload (&mac_cntlr, uptr, load); /* load or unload the heads */
|
||||||
}
|
}
|
||||||
|
@ -1265,7 +1266,7 @@ if (uptr) { /* did the command start
|
||||||
time = uptr->wait; /* save the activation time */
|
time = uptr->wait; /* save the activation time */
|
||||||
|
|
||||||
if (time) /* was the unit scheduled? */
|
if (time) /* was the unit scheduled? */
|
||||||
activate_unit (uptr); /* activate it (clears "wait") */
|
activate_unit (uptr); /* activate it (and clear the "wait" field) */
|
||||||
|
|
||||||
if (DEBUG_PRI (ds_dev, DEB_RWSC)) {
|
if (DEBUG_PRI (ds_dev, DEB_RWSC)) {
|
||||||
unit = uptr - ds_unit; /* get the unit number */
|
unit = uptr - ds_unit; /* get the unit number */
|
||||||
|
@ -1337,8 +1338,8 @@ return;
|
||||||
|
|
||||||
void poll_drives (void)
|
void poll_drives (void)
|
||||||
{
|
{
|
||||||
if (mac_cntlr.state == cntlr_idle && ds.control == SET) /* controller is idle and OK to interrupt? */
|
if (mac_cntlr.state == cntlr_idle && ds.control == SET) /* is the controller idle and interrupts are allowed? */
|
||||||
if (dl_poll_drives (&mac_cntlr, ds_unit, DL_MAXDRIVE)) /* poll drives; was Attention seen? */
|
if (dl_poll_drives (&mac_cntlr, ds_unit, DL_MAXDRIVE)) /* poll the drives; was Attention seen? */
|
||||||
ds_io (&ds_dib, ioENF, 0); /* request an interrupt */
|
ds_io (&ds_dib, ioENF, 0); /* request an interrupt */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1455,7 +1456,7 @@ return;
|
||||||
|
|
||||||
static t_stat activate_unit (UNIT *uptr)
|
static t_stat activate_unit (UNIT *uptr)
|
||||||
{
|
{
|
||||||
uint32 unit;
|
int32 unit;
|
||||||
t_stat result;
|
t_stat result;
|
||||||
|
|
||||||
if (DEBUG_PRI (ds_dev, DEB_SERV)) {
|
if (DEBUG_PRI (ds_dev, DEB_SERV)) {
|
||||||
|
|
|
@ -1658,7 +1658,7 @@ return SCPE_OK;
|
||||||
|
|
||||||
t_stat mpx_line_svc (UNIT *uptr)
|
t_stat mpx_line_svc (UNIT *uptr)
|
||||||
{
|
{
|
||||||
const uint32 port = uptr - mpx_unit; /* port number */
|
const int32 port = uptr - mpx_unit; /* port number */
|
||||||
const uint16 rt = mpx_rcvtype [port]; /* receive type for port */
|
const uint16 rt = mpx_rcvtype [port]; /* receive type for port */
|
||||||
const uint32 data_bits = 5 + GET_BPC (mpx_config [port]); /* number of data bits */
|
const uint32 data_bits = 5 + GET_BPC (mpx_config [port]); /* number of data bits */
|
||||||
const uint32 data_mask = (1 << data_bits) - 1; /* mask for data bits */
|
const uint32 data_mask = (1 << data_bits) - 1; /* mask for data bits */
|
||||||
|
|
|
@ -690,7 +690,7 @@ int32 unum;
|
||||||
t_mtrlnt tbc;
|
t_mtrlnt tbc;
|
||||||
t_stat st, r = SCPE_OK;
|
t_stat st, r = SCPE_OK;
|
||||||
|
|
||||||
unum = uptr - msc_dev.units; /* get unit number */
|
unum = uptr - msc_unit; /* get unit number */
|
||||||
|
|
||||||
if ((uptr->FNC != FNC_RWS) && (uptr->flags & UNIT_OFFLINE)) { /* offline? */
|
if ((uptr->FNC != FNC_RWS) && (uptr->flags & UNIT_OFFLINE)) { /* offline? */
|
||||||
msc_sta = (msc_sta | STA_REJ) & ~STA_BUSY; /* reject */
|
msc_sta = (msc_sta | STA_REJ) & ~STA_BUSY; /* reject */
|
||||||
|
@ -905,7 +905,7 @@ else
|
||||||
|
|
||||||
t_stat ms_map_err (UNIT *uptr, t_stat st)
|
t_stat ms_map_err (UNIT *uptr, t_stat st)
|
||||||
{
|
{
|
||||||
int32 unum = uptr - msc_dev.units; /* get unit number */
|
int32 unum = uptr - msc_unit; /* get unit number */
|
||||||
|
|
||||||
if (DEBUG_PRI (msc_dev, DEB_RWS))
|
if (DEBUG_PRI (msc_dev, DEB_RWS))
|
||||||
fprintf (sim_deb,
|
fprintf (sim_deb,
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
|
|
||||||
MT 12559A 3030 nine track magnetic tape
|
MT 12559A 3030 nine track magnetic tape
|
||||||
|
|
||||||
|
25-Mar-12 JDB Removed redundant MTAB_VUN from "format" MTAB entry
|
||||||
10-Feb-12 JDB Deprecated DEVNO in favor of SC
|
10-Feb-12 JDB Deprecated DEVNO in favor of SC
|
||||||
28-Mar-11 JDB Tidied up signal handling
|
28-Mar-11 JDB Tidied up signal handling
|
||||||
29-Oct-10 JDB Fixed command scanning error in mtcio ioIOO handler
|
29-Oct-10 JDB Fixed command scanning error in mtcio ioIOO handler
|
||||||
|
@ -220,7 +221,7 @@ REG mtc_reg[] = {
|
||||||
MTAB mtc_mod[] = {
|
MTAB mtc_mod[] = {
|
||||||
{ MTUF_WLK, 0, "write enabled", "WRITEENABLED", NULL },
|
{ MTUF_WLK, 0, "write enabled", "WRITEENABLED", NULL },
|
||||||
{ MTUF_WLK, MTUF_WLK, "write locked", "LOCKED", NULL },
|
{ MTUF_WLK, MTUF_WLK, "write locked", "LOCKED", NULL },
|
||||||
{ MTAB_XTD | MTAB_VDV | MTAB_VUN, 0, "FORMAT", "FORMAT",
|
{ MTAB_XTD | MTAB_VDV, 0, "FORMAT", "FORMAT",
|
||||||
&sim_tape_set_fmt, &sim_tape_show_fmt, NULL },
|
&sim_tape_set_fmt, &sim_tape_show_fmt, NULL },
|
||||||
{ MTAB_XTD | MTAB_VDV, 1, "SC", "SC", &hp_setsc, &hp_showsc, &mtd_dev },
|
{ MTAB_XTD | MTAB_VDV, 1, "SC", "SC", &hp_setsc, &hp_showsc, &mtd_dev },
|
||||||
{ MTAB_XTD | MTAB_VDV | MTAB_NMO, 1, "DEVNO", "DEVNO", &hp_setdev, &hp_showdev, &mtd_dev },
|
{ MTAB_XTD | MTAB_VDV | MTAB_NMO, 1, "DEVNO", "DEVNO", &hp_setdev, &hp_showdev, &mtd_dev },
|
||||||
|
|
|
@ -985,7 +985,7 @@ return SCPE_OK;
|
||||||
|
|
||||||
t_stat tty_set_opt (UNIT *uptr, int32 val, char *cptr, void *desc)
|
t_stat tty_set_opt (UNIT *uptr, int32 val, char *cptr, void *desc)
|
||||||
{
|
{
|
||||||
int32 u = uptr - tty_dev.units;
|
int32 u = uptr - tty_unit;
|
||||||
|
|
||||||
if (u > TTO) return SCPE_NOFNC;
|
if (u > TTO) return SCPE_NOFNC;
|
||||||
if ((u == TTI) && (val == TT_MODE_7P))
|
if ((u == TTI) && (val == TT_MODE_7P))
|
||||||
|
@ -997,7 +997,7 @@ return SCPE_OK;
|
||||||
|
|
||||||
t_stat tty_set_alf (UNIT *uptr, int32 val, char *cptr, void *desc)
|
t_stat tty_set_alf (UNIT *uptr, int32 val, char *cptr, void *desc)
|
||||||
{
|
{
|
||||||
int32 u = uptr - tty_dev.units;
|
int32 u = uptr - tty_unit;
|
||||||
|
|
||||||
if (u != TTI) return SCPE_NOFNC;
|
if (u != TTI) return SCPE_NOFNC;
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -24,7 +24,7 @@
|
||||||
used in advertising or otherwise to promote the sale, use or other dealings
|
used in advertising or otherwise to promote the sale, use or other dealings
|
||||||
in this Software without prior written authorization from the authors.
|
in this Software without prior written authorization from the authors.
|
||||||
|
|
||||||
19-Mar-12 JDB First release
|
30-Mar-12 JDB First release
|
||||||
09-Nov-11 JDB Created disc controller common library from DS simulator
|
09-Nov-11 JDB Created disc controller common library from DS simulator
|
||||||
|
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@
|
||||||
#define CYL u3 /* current drive cylinder */
|
#define CYL u3 /* current drive cylinder */
|
||||||
#define STAT u4 /* current drive status (Status 2) */
|
#define STAT u4 /* current drive status (Status 2) */
|
||||||
#define OP u5 /* current drive operation in process */
|
#define OP u5 /* current drive operation in process */
|
||||||
#define PHASE u6 /* current command phase */
|
#define PHASE u6 /* current drive operation phase */
|
||||||
|
|
||||||
|
|
||||||
/* Unit flags and accessors */
|
/* Unit flags and accessors */
|
||||||
|
@ -78,7 +78,7 @@
|
||||||
#define UNIT_V_AUTO (UNIT_V_UF + 5) /* bits 5-5: autosize */
|
#define UNIT_V_AUTO (UNIT_V_UF + 5) /* bits 5-5: autosize */
|
||||||
#define DL_V_UF (UNIT_V_UF + 6) /* first free unit flag bit */
|
#define DL_V_UF (UNIT_V_UF + 6) /* first free unit flag bit */
|
||||||
|
|
||||||
#define UNIT_M_MODEL 3 /* model ID mask */
|
#define UNIT_M_MODEL 03 /* model ID mask */
|
||||||
|
|
||||||
#define UNIT_MODEL (UNIT_M_MODEL << UNIT_V_MODEL)
|
#define UNIT_MODEL (UNIT_M_MODEL << UNIT_V_MODEL)
|
||||||
#define UNIT_WLK (1 << UNIT_V_WLK)
|
#define UNIT_WLK (1 << UNIT_V_WLK)
|
||||||
|
@ -96,9 +96,9 @@
|
||||||
|
|
||||||
#define DL_V_S1SPD 13 /* bits 15-13: S/P/D flags */
|
#define DL_V_S1SPD 13 /* bits 15-13: S/P/D flags */
|
||||||
#define DL_V_S1STAT 8 /* bits 12- 8: controller status */
|
#define DL_V_S1STAT 8 /* bits 12- 8: controller status */
|
||||||
#define DL_V_S1UNIT 0 /* bits 7- 0: last unit number */
|
#define DL_V_S1UNIT 0 /* bits 3- 0: last unit number */
|
||||||
|
|
||||||
#define DL_M_S1UNIT 15 /* unit mask */
|
#define DL_M_S1UNIT 017 /* unit number mask */
|
||||||
|
|
||||||
#define GET_S1UNIT(v) (((v) >> DL_V_S1UNIT) & DL_M_S1UNIT)
|
#define GET_S1UNIT(v) (((v) >> DL_V_S1UNIT) & DL_M_S1UNIT)
|
||||||
|
|
||||||
|
@ -107,7 +107,7 @@
|
||||||
#define SET_S1UNIT(v) ((v) << DL_V_S1UNIT)
|
#define SET_S1UNIT(v) ((v) << DL_V_S1UNIT)
|
||||||
|
|
||||||
|
|
||||||
/* Status-2 accessors (+ = kept in unit status, - = determined dynamically */
|
/* Status-2 accessors (+ = kept in unit status, - = determined dynamically) */
|
||||||
|
|
||||||
#define DL_V_S2ERR 15 /* bits 15-15: (-) any error flag */
|
#define DL_V_S2ERR 15 /* bits 15-15: (-) any error flag */
|
||||||
#define DL_V_S2DTYP 9 /* bits 12- 9: (-) drive type */
|
#define DL_V_S2DTYP 9 /* bits 12- 9: (-) drive type */
|
||||||
|
@ -116,7 +116,7 @@
|
||||||
#define DL_V_S2FMT 5 /* bits 5- 5: (-) format enabled flag */
|
#define DL_V_S2FMT 5 /* bits 5- 5: (-) format enabled flag */
|
||||||
#define DL_V_S2FAULT 4 /* bits 4- 4: (+) drive fault flag */
|
#define DL_V_S2FAULT 4 /* bits 4- 4: (+) drive fault flag */
|
||||||
#define DL_V_S2FS 3 /* bits 3- 3: (+) first status flag */
|
#define DL_V_S2FS 3 /* bits 3- 3: (+) first status flag */
|
||||||
#define DL_V_S2SC 2 /* bits 2- 2: (+) seek error flag */
|
#define DL_V_S2SC 2 /* bits 2- 2: (+) seek check flag */
|
||||||
#define DL_V_S2NR 1 /* bits 1- 1: (-) not ready flag */
|
#define DL_V_S2NR 1 /* bits 1- 1: (-) not ready flag */
|
||||||
#define DL_V_S2BUSY 0 /* bits 0- 1: (-) drive busy flag */
|
#define DL_V_S2BUSY 0 /* bits 0- 1: (-) drive busy flag */
|
||||||
|
|
||||||
|
@ -195,8 +195,9 @@
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
MAC = 0,
|
MAC = 0,
|
||||||
ICD, last_type = ICD, /* last valid type */
|
ICD,
|
||||||
TYPE_COUNT /* count of controller types */
|
last_type = ICD, /* last valid type */
|
||||||
|
type_count /* count of controller types */
|
||||||
} CNTLR_TYPE;
|
} CNTLR_TYPE;
|
||||||
|
|
||||||
|
|
||||||
|
@ -224,7 +225,8 @@ typedef enum {
|
||||||
load_tio_register = 023,
|
load_tio_register = 023,
|
||||||
request_disc_address = 024,
|
request_disc_address = 024,
|
||||||
end = 025,
|
end = 025,
|
||||||
wakeup = 026, last_opcode = wakeup /* last valid opcode */
|
wakeup = 026,
|
||||||
|
last_opcode = wakeup /* last valid opcode */
|
||||||
} CNTLR_OPCODE;
|
} CNTLR_OPCODE;
|
||||||
|
|
||||||
#define DL_OPCODE_MASK 037
|
#define DL_OPCODE_MASK 037
|
||||||
|
@ -235,7 +237,8 @@ typedef enum {
|
||||||
typedef enum {
|
typedef enum {
|
||||||
start_phase = 0,
|
start_phase = 0,
|
||||||
data_phase,
|
data_phase,
|
||||||
end_phase, last_phase = end_phase /* last valid phase */
|
end_phase,
|
||||||
|
last_phase = end_phase /* last valid phase */
|
||||||
} CNTLR_PHASE;
|
} CNTLR_PHASE;
|
||||||
|
|
||||||
|
|
||||||
|
@ -324,22 +327,22 @@ typedef struct {
|
||||||
uint32 verify_count; /* count of sectors to verify */
|
uint32 verify_count; /* count of sectors to verify */
|
||||||
uint32 poll_unit; /* last unit polled for attention */
|
uint32 poll_unit; /* last unit polled for attention */
|
||||||
uint16 *buffer; /* data buffer pointer */
|
uint16 *buffer; /* data buffer pointer */
|
||||||
uint32 index; /* data buffer index */
|
uint32 index; /* data buffer current index */
|
||||||
uint32 length; /* data buffer length */
|
uint32 length; /* data buffer valid length */
|
||||||
UNIT *aux; /* auxiliary units (controller and timer) */
|
UNIT *aux; /* MAC auxiliary units (controller and timer) */
|
||||||
int32 seek_time; /* seek delay time (per cylinder) */
|
int32 seek_time; /* per-cylinder seek delay time */
|
||||||
int32 sector_time; /* intersector delay time */
|
int32 sector_time; /* intersector delay time */
|
||||||
int32 cmd_time; /* command start delay time */
|
int32 cmd_time; /* command response time */
|
||||||
int32 data_time; /* data transfer delay time */
|
int32 data_time; /* data transfer response time */
|
||||||
int32 wait_time; /* command wait timeout */
|
int32 wait_time; /* command wait time */
|
||||||
} CNTLR_VARS;
|
} CNTLR_VARS;
|
||||||
|
|
||||||
|
|
||||||
typedef CNTLR_VARS *CVPTR; /* pointer to controller state variables */
|
typedef CNTLR_VARS *CVPTR; /* pointer to controller state variables */
|
||||||
|
|
||||||
/* Controller state variables initialiation.
|
/* Controller state variables initialization.
|
||||||
|
|
||||||
Parameters are:
|
The parameters are:
|
||||||
|
|
||||||
ctype - type of the controller (CNTLR_TYPE)
|
ctype - type of the controller (CNTLR_TYPE)
|
||||||
bufptr - pointer to the data buffer
|
bufptr - pointer to the data buffer
|
||||||
|
|
Binary file not shown.
Loading…
Add table
Reference in a new issue