1
0
mirror of https://github.com/wfjm/w11.git synced 2026-05-05 23:55:01 +00:00

cpu_mmu.mac BUGFIX; minor changes

- tools/make/generic_asm11.mk: fix ldart target rule
- tools/tcode/Makefile: add header line for %.te11 target
- tools/tcode/cpu_mmu.mac
  - C2.6: add e11 handling (w11 and e11 mmr1 difference)
  - D2.1: BUGFIX: use mmr0 page mode for PSW PM if ico=1
  - D2.1: add e11 handling (no PC inc on fetch abort)
This commit is contained in:
wfjm
2023-03-20 09:35:27 +01:00
parent 0e03584e5a
commit 5990a8fe0a
20 changed files with 103 additions and 53 deletions

View File

@@ -30,12 +30,13 @@ The full set of tests is only run for tagged releases.
### Summary
- revamp tap and bridge handling
- support e11 as additional emulator for most systems
- support E11 as additional emulator for most systems
### New features
- new tools
- tools/e11: added configuration files for e11
- oskit/\*/: added startup files for e11 where possible
- tools/e11: added configuration files for E11
- tools/(tcode|xxdp): added startup files for E11
- oskit/\*/: added startup files for E11 where feasible
### Changes
- tools changes
@@ -51,6 +52,8 @@ The full set of tests is only run for tagged releases.
### Bug Fixes
- tools/bin/asm-11
- BUGFIX: fix directly nested .if behavior
- tools/tcode
- BUGFIX: use mmr0 page mode for PSW PM if ico=1
- src/librtools
- RtimerFd.cpp: BUGFIX: SetRelative(): correct is-positive check

View File

@@ -16,10 +16,10 @@ acceptable implementation difference. An instruction re-execution after
an MMU abort relies always on `MMR2`. Only error messages that give a _"PC at
abort"_ might differ.
SimH implements the 11/70 behavior, the `PC` is incremented after the
SimH and E11 implement the 11/70 behavior, the `PC` is incremented after the
successful load of the instruction register.
However, test and verification codes might be sensitive to this behavior.
A [tcode](../tools/tcode/README.md) verifies this saved `PS` and
distinguished between w11 and SimH
(see [cpu_mmu](../tools/tcode/cpu_mmu.mac) tests B4.1).
distinguishes between w11, SimH, and E11.
(see [cpu_mmu](../tools/tcode/cpu_mmu.mac) tests B4.1 and D2.1).

View File

@@ -0,0 +1,20 @@
## Known differences between w11a and KB11-C (11/70)
### `SP` decremented only once after 1st vector push abort
The 11/70 calculates in a vector flow the target addresses for 1st and 2nd
vector push before the 1st memory access is done. State `SVC.50` decrements
`SP` by two. State `SVC.60` decrements `SP` again by two, starts the 1st
push, and checks for check limit. Therefore, the `SP` is decremented twice
when a 1st stack push fails. `MMR1` consequently shows two `SP` decrements
in that case.
The w11 handles the two vector push separately, `SP` is decremented and the
stack limit is checked before each push. Therefore, the `SP` is decremented
only once when the 1st push fails, and `MMR1` consequently shows one `SP`
decrement.
However, test and verification codes might be sensitive to this behavior.
A [tcode](../tools/tcode/README.md) verifies `MMR1` after a vector push
abort and distinguishes between w11 and SimH and e11
(see [cpu_mmu](../tools/tcode/cpu_mmu.mac) tests C2.6).

View File

@@ -5,19 +5,19 @@ The "Ersatz-11" or `e11` a PDP-11 software emulator available from
source, but can be used with some limitations free of charge for
non-commercial applications.
The device emulation concept of e11 is quite different compared to SimH.
The device emulation concept of E11 is quite different compared to SimH.
The operation and behavior of the two emulators differs therefore
- the console DL11 is always connected to the session window for e11.
- the console DL11 is always connected to the session window for E11.
It is not possible to connect it to a telnet session as done for SimH.
- it is not possible to set the 2nd DL11 into 7-bit mode
- device controllers are only activated when at least one unit is mounted.
All disk and tape controllers have therefore a `NULL` mount point active
for the highest supported unit.
- the Ethernet emulation in e11 is currently not supported, the DEUNA device
- the Ethernet emulation in E11 is currently not supported, the DEUNA device
is therefore not active.
Under [tools/e11](../tools/e11) two setup files are provided which
configure e11 to reflect the w11a setup as closely as possible:
configure E11 to reflect the w11a setup as closely as possible:
- [setup_w11a_min.ecmd](../tools/e11/setup_w11a_min.ecmd)
Minimal configuration for low memory boards (as on s3board or Basys3)
- processor: 11/70, no FPP, 1 Mbyte
@@ -27,7 +27,7 @@ configure e11 to reflect the w11a setup as closely as possible:
- processor: 4 Mbyte memory (as on Nexys and Arty type boards)
- periphery: in addition DZ11, RL11/RL02, RM70/RP06, TM11/TU10
**Note**: tested with e11 V7.4, might not work with V7.3 and earlier.
**Note**: tested with E11 V7.4, might not work with V7.3 and earlier.
Startup scripts are provided for some oskits. They usually call the `w11a_max`
configuration and are used with

View File

@@ -9,11 +9,13 @@ The issues of the w11 CPU and systems are listed in a separate document
- [Instruction fetch after `SPL`](w11a_diff_70_spl_bug.md)
- [`CLR` and `SXT` do a write](w11a_diff_70_clr_sxt_write.md)
- [State of N and Z and registers after a `DIV` abort with `V=1`](w11a_diff_70_div_after_v1.md)
- instruction abort handling
- [`PC` is incremented before an instruction fetch abort](w11a_diff_70_fetch_abort.md)
- vector flow abort handling
- [`SP` decremented only once after 1st vector push abort](w11a_diff_70_vecflow_abort_sp.md)
- stack limit and stack error behavior
- [Stack limit checks done independent of register set](w11a_diff_70_stklim_rset.md)
- [No unconditional instruction fetch after stack error abort](w11a_diff_70_ser_forced_fetch.md)
- instruction abort handling
- [`PC` is incremented before an instruction fetch abort](w11a_diff_70_fetch_abort.md)
- memory management behavior
- [`MMR0` instruction complete implementation differences](w11a_diff_70_instruction_complete.md)
- [MMU traps not suppressed when MMU register accessed](w11a_diff_70_mmu_trap_suppression.md)

View File

@@ -5,7 +5,7 @@ For general system setup see notes on
- [FPGA Board setup](w11a_board_connection.md)
- [Rlink and Backend Server setup](w11a_backend_setup.md)
- [SimH simulator setup](w11a_simh_setup.md)
- [e11 simulator setup](w11a_e11_setup.md)
- [E11 simulator setup](w11a_e11_setup.md)
Ready to be used 'oskits' are provided under
[tools/oskit](../tools/oskit/README.md).