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:
@@ -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
|
||||
|
||||
|
||||
@@ -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).
|
||||
|
||||
20
doc/w11a_diff_70_vecflow_abort_sp.md
Normal file
20
doc/w11a_diff_70_vecflow_abort_sp.md
Normal 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).
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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).
|
||||
|
||||
Reference in New Issue
Block a user