Skip to content

Commit

Permalink
sigma: Update latest from Bob Supnik's v3.12-5
Browse files Browse the repository at this point in the history
- Add new CP and CR devices
- COC: Zero delay from SIO to INIT state Detect and UEN on 0xFF order
- COC: Moved SIO int pending test to devices
- DK: Zero delay from SIO to INIT state
- DP: Added case points for RDEES, dp_aio_status
- DP: Zero delay from SIO to INIT state
 - defs:  Added chaining modifier flag
 - defs:  Fixed DVT_NODEV definition
 - defs:  Added chan_chk_dvi definition
 - io: Added chaining modifier flag
- LP: Zero delay from SIO to INIT state
- LP: Added INIT test for illegal command
- LP: Moved SIO interrupt test to devices
- MT: Zero delay from SIO to INIT state
- PT: Zero delay from SIO to INIT state
- PT: Moved SIO interrupt test to devices
- RAD: Zero delay from SIO to INIT state
- RAD: Fixed nx unit test
- RAD: Fixed write protect test
- TT: Zero delay from SIO to INIT state
- TT: Moved SIO int pending test to devices
  • Loading branch information
kenrector authored and pkoning2 committed Sep 5, 2024
1 parent 9ef8bf5 commit 36605c4
Show file tree
Hide file tree
Showing 19 changed files with 958 additions and 46 deletions.
8 changes: 8 additions & 0 deletions Visual Studio Projects/sigma.vcproj
Original file line number Diff line number Diff line change
Expand Up @@ -205,10 +205,18 @@
RelativePath="..\sigma\sigma_coc.c"
>
</File>
<File
RelativePath="..\sigma\sigma_cp.c"
>
</File>
<File
RelativePath="..\sigma\sigma_cpu.c"
>
</File>
<File
RelativePath="..\sigma\sigma_cr.c"
>
</File>
<File
RelativePath="..\sigma\sigma_dk.c"
>
Expand Down
2 changes: 2 additions & 0 deletions Visual Studio Projects/sigma.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,9 @@
<ClCompile Include="..\scp.c" />
<ClCompile Include="..\sigma\sigma_cis.c" />
<ClCompile Include="..\sigma\sigma_coc.c" />
<ClCompile Include="..\sigma\sigma_cp.c" />
<ClCompile Include="..\sigma\sigma_cpu.c" />
<ClCompile Include="..\sigma\sigma_cr.c" />
<ClCompile Include="..\sigma\sigma_dk.c" />
<ClCompile Include="..\sigma\sigma_dp.c" />
<ClCompile Include="..\sigma\sigma_fp.c" />
Expand Down
3 changes: 2 additions & 1 deletion makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2147,7 +2147,8 @@ SIGMA = ${SIGMAD}/sigma_cpu.c ${SIGMAD}/sigma_sys.c ${SIGMAD}/sigma_cis.c \
${SIGMAD}/sigma_coc.c ${SIGMAD}/sigma_dk.c ${SIGMAD}/sigma_dp.c \
${SIGMAD}/sigma_fp.c ${SIGMAD}/sigma_io.c ${SIGMAD}/sigma_lp.c \
${SIGMAD}/sigma_map.c ${SIGMAD}/sigma_mt.c ${SIGMAD}/sigma_pt.c \
${SIGMAD}/sigma_rad.c ${SIGMAD}/sigma_rtc.c ${SIGMAD}/sigma_tt.c
${SIGMAD}/sigma_rad.c ${SIGMAD}/sigma_rtc.c ${SIGMAD}/sigma_tt.c \
${SIGMAD}/sigma_cr.c ${SIGMAD}/sigma_cp.c
SIGMA_OPT = -I ${SIGMAD}

SEL32D = ${SIMHD}/SEL32
Expand Down
2 changes: 2 additions & 0 deletions sigma/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ add_simulator(sigma
sigma_rad.c
sigma_rtc.c
sigma_tt.c
sigma_cp.c
sigma_cr.c
INCLUDES
${CMAKE_CURRENT_SOURCE_DIR}
LABEL sigma
Expand Down
Binary file modified sigma/Design Notes on the Sigma 7.doc
Binary file not shown.
52 changes: 24 additions & 28 deletions sigma/sigma_bugs.txt
Original file line number Diff line number Diff line change
Expand Up @@ -114,36 +114,32 @@
108. DP: TIO status routine always returns DVS_AUTO instead of proper status.
109. DP: DP_SEEK definition is off by 1.
110. DP: reset does not properly initialize controller, seek threads.
111. DP: device address must include unit identifier everywhere, for interrupt generation.
112. DK: device address must include unit identifier everywhere, for interrupt generation.
113. MT: device address must include unit identifier everywhere, for interrupt generation.
114: RAD: device address must include unit identifier everywhere, for interrupt generation.
115. MT: error handling not consistent.
116: IO: dangling else in write direct mode 1 code causes incorrect behavior.
117: CPU: sim_interval is decremented before breakpoint test, which is incorrect.
118. MT: revised error handling failed to set tape mark status on space file forward/reverse.
119. IO: UEND flag in the wrong bit position in status word.
120. DP: SEEK(I), RECAL(I) must be coded as fast operations.
121. COC: Transmit long space is 0x6, and stop transmit is 0xE.
122. COC: Received break generates a data-in channel transaction with a flag bit set
111. DP, DK, MT, RAD: device address must include unit identifier everywhere, for interrupt generation.
112. MT: error handling not consistent.
113: IO: dangling else in write direct mode 1 code causes incorrect behavior.
114: CPU: sim_interval is decremented before breakpoint test, which is incorrect.
115. MT: revised error handling failed to set tape mark status on space file forward/reverse.
116. IO: UEND flag in the wrong bit position in status word.
117. DP: SEEK(I), RECAL(I) must be coded as fast operations.
118. COC: Transmit long space is 0x6, and stop transmit is 0xE.
119. COC: Received break generates a data-in channel transaction with a flag bit set
in the line number.
123. DP: dp_inv_adr error must set a TDV visible flag (i.e., PGE) before UEND.
124. IO, all devices: moved SIO reject-on-interrupt test to devices.
125. DP: SIO will knock down pending device interrupts and allow operation to proceed.
126. MT: AIO must mask unit number before calling TDV status.
127. IO: location 20/21 set incorrectly in the even, non-zero register case.
128. CPU: WAIT must be implemented for correct operation of CP-V.
129. DP: On 10 byte models, SENSE length errors can't happen. On 16 byte models,
120. DP: dp_inv_adr error must set a TDV visible flag (i.e., PGE) before UEND.
121. IO, all devices: moved SIO reject-on-interrupt test to devices.
122. DP: SIO will knock down pending device interrupts and allow operation to proceed.
123. MT: AIO must mask unit number before calling TDV status.
124. IO: location 20/21 set incorrectly in the even, non-zero register case.
125. CPU: WAIT must be implemented for correct operation of CP-V.
126. DP: On 10 byte models, SENSE length errors can't happen. On 16 byte models,
SENSE length errors only occur if length == 0 || length > 16.
130. IO: DVT_NOTDEV macro incorrect.
131. DP: Test for non-existent device returns wrong status.
132. DK: Test for non-existent device returns wrong status.
133. MT: Test for non-existent device returns wrong status.
134. RAD: Test for non-existent device returns wrong status.
135. DP: TIO status should return non-operational for unattached device.
136. DK: TIO status should return non-operational for unattached device.
137. NT: TIO status should return non-operational for unattached device.
138. IO: Device mapping algorithm creates false dispatch points.
127. IO: DVT_NOTDEV macro incorrect.
128. DP, DK, MT, RAD: Test for non-existent device returns wrong status.
129. DP, DK, MT: TIO status should return non-operational for unattached device.
130. IO: Device mapping algorithm creates false dispatch points.
131. All devices: dispatch time to INIT state must be 0.
132. LPT: device must flag illegal commands in IDLE state.
133. COC: must flag 0xFF as illegal command in IDLE state.
134. IO: multiplexor channel implements a "chain modifier" capability, needed by punch.

Diagnostic Notes
----------------
Expand Down
17 changes: 14 additions & 3 deletions sigma/sigma_coc.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/* sigma_coc.c: Sigma character-oriented communications subsystem simulator
Copyright (c) 2007-2022, Robert M Supnik
Copyright (c) 2007-2024, 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"),
Expand All @@ -25,6 +25,9 @@
coc 7611 communications multiplexor
17-Feb-24 RMS Zero delay from SIO to INIT state (Ken Rector)
Detect and UEN on 0xFF order
15-Dec-22 RMS Moved SIO int pending test to devices
24-Aug-22 RMS Transmit long space is 0x6, not 0xD (Ken Rector)
Added LNORDER modifier
*/
Expand Down Expand Up @@ -281,7 +284,7 @@ switch (op) { /* case on op */
*dvst |= (CC2 << DVT_V_CC); /* SIO fails */
else if ((*dvst & DVS_CST) == 0) { /* ctrl idle? */
muxc_cmd = MUXC_INIT; /* start dev thread */
sim_activate (&mux_unit[MUXC], chan_ctl_time);
sim_activate (&mux_unit[MUXC], 0);
}
break;

Expand Down Expand Up @@ -405,7 +408,11 @@ else { /* receive */
return 0;
}

/* Unit service - channel overhead */
/* Unit service - channel overhead
The documentation says that the channel command is thrown away,
but the system exerciser requires a UEN on command 0xFF.
*/

t_stat muxc_svc (UNIT *uptr)
{
Expand All @@ -417,6 +424,10 @@ if (muxc_cmd == MUXC_INIT) { /* init state? */
if (CHS_IFERR (st)) /* channel error? */
mux_chan_err (st); /* go idle */
else muxc_cmd = MUXC_RCV; /* no, receive */
if (cmd == 0xFF) { /* invalid cmd? */
chan_uen (mux_dib.dva); /* uend */
return SCPE_OK;
}
}
else if (muxc_cmd == MUXC_END) { /* end state? */
st = chan_end (mux_dib.dva); /* set channel end */
Expand Down
Loading

0 comments on commit 36605c4

Please sign in to comment.