Commit graph

193 commits

Author SHA1 Message Date
Mark Pizzolato
f59d86d7c0 VAX: Fix for unaligned longword access to Qbus space from Matt Burke for issue #88
When the conversational boot is waiting for input it uses a BLBC instruction to read the DUART status register and test the RXR bit. This generates an unaligned longword read in Qbus I/O space (Yuk!). I realised that the code to read unaligned data in vax_mmu is broken. It attempts to read the aligned longwords that the data spans, but there was no code to convert the unaligned pa passed in to it's aligned form, thus the wrong bytes are returned and the BLBC never sees the RXR bit.
2013-11-10 13:04:28 -08:00
Mark Pizzolato
b57201b88b QVSS/VIDEO: Fix for mouse tracking on Ultrix from Mike Burke for issue #88 2013-11-08 17:15:02 -08:00
Mark Pizzolato
593c7f45c2 QVSS: Changed prior VSYNC fix to only interrupt quickly immediately after interrupts are enabled to avoid idling issues with the prior fix. From Matt Burke
Also fixed Qbus memory reference issues to properly generate a machine check if the QVSS device is disabled and the frame buffer is referenced.
2013-11-07 08:05:52 -08:00
Mark Pizzolato
304ad39a2b VAX: Avoid potential VAX simulator hangs when code may poll for console input without being interrupted 2013-11-07 08:02:00 -08:00
Mark Pizzolato
5bce9da97c QVSS: Fix to get the VSYNC interrupts to be more reasonable. Addresses Issue #88. From Mike Burke
The vertical sync interrupt generated in vc_svc() was too slow for Ultrix. The driver enables interrupts and then calls DELAY(20000), which I guess is 20ms. This translates to about 10000 simulated instructions, but tmxr_poll works out at ~75000 instructions.  I've added a new unit to simulate just the vsync interrupts activating every 8000 instructions.

This approach will completely disable the ability to idle while the QVSS device is enabled.
2013-11-06 17:00:36 -08:00
Mark Pizzolato
fdb33ce135 Compiler warning cleanup 2013-11-05 16:42:17 -08:00
Mark Pizzolato
be46bac750 PDP8/PDP11/VAX: Support high speed character input on console and other multiplexer ports instead of limiting input data rate to 1 character per clock tick. 2013-10-23 07:50:39 -07:00
Mark Pizzolato
6b45d9b2ad SCP/VIDEO: Added support for libSDL2 video capabilities. Changed existing video layer to carry pixels as 32bpp vs 8bpp for more natural behaviors in libSDL2. 2013-10-01 15:55:10 -07:00
Mark Pizzolato
8617a58c8f VAX/QVSS: Added debugging support to sim_video 2013-09-25 16:41:40 -07:00
Mark Pizzolato
db91afbaaf VAX: Compiler warning cleanup 2013-09-05 23:30:22 -07:00
Mark Pizzolato
1a48d85d73 VAX630: Fix watch chip behavior the first time a file is attached to the NVR device. 2013-08-21 14:31:31 -07:00
Mark Pizzolato
d3135b777d VAX630: NVR corrected to be 64 bytes instead of 128. Added NVR read/write debug tracing.
- Fixed broken NVR Examine/Deposit
   - Added SHOW CPU LEDS
2013-08-21 13:59:22 -07:00
Mark Pizzolato
4e53c5f928 VAX630: Added register bitfields for the IPC (Doorbell) register and read/write tracing. 2013-08-21 13:55:35 -07:00
Mark Pizzolato
19d30d93ce VAX630: Added register bit fields for the watch device and read/write tracing for watch register activity. 2013-08-21 13:54:00 -07:00
Mark Pizzolato
da8dd3c7e6 VAX: Added Register Bit Field definitions for the PSL register 2013-08-21 13:51:25 -07:00
Mark Pizzolato
c8f775a91e QVSS: Fix to handle when cursor is near the right edge of the screen and only partially visible.
Prior fix for cursor tracking allowed this to now be observed.

The description of the prior change should have been:

The status bits need to be set in the upper byte of the DUART receiver buffer. This is not mentioned in the DEC manual but I found a Phillips datasheet for the 2681 chip, which has a small footnote about it.
2013-08-19 06:48:24 -07:00
Mark Pizzolato
47a6bdf952 Revised QVSS mouse support from Matt Burke to address #60
This is definately much better, but I observed some strange behaviors in my initial testing when the mouse reached the window edge.
2013-08-17 10:11:47 -07:00
Timothe Litt
91c7d26095 SHOW IOSPACE, again
Show IOSPACE doesn't always get the number of devices right due to device creativity.

o The distinction between UNIT and DEVICE has blurred
o MUX devices merge several physical devices into one device/unit
o Dynamic device sizing has made things more volatile.

This edit solves the problem for SHOW IOSPACE by adding an (optional) word to the DIBs.
The word contains the amount of IO space consumed by each instance of the physical device that's being emulated.
E.G., if it's a DZ11, the device is the DZ11 module, or 8 lines, even though the MUX device may support 32.

This enables SHOW IOSPACE to determine the number of physical devices being emulated, which is what folks need when configuring software.  The word may have other uses - in a generic dynamic device sizing routine - which is why the amount of IOSPACE per device was chosen rather than the 'number of physical devices.'

The edit should not make any existing device regress.  If the new word (ulnt) is zero (not initialized), SHOW IOSPACE will default to the number of units in the device, or if there's no device (CPUs), 1 as before.  If it is present, the number of devices is the calculated as total allocation/allocation-per-device.

The edit updates all the devices that seem to require this treatment, and all the processors that define the UNIBUS/QBUS DIBs.
2013-07-11 15:39:15 -04:00
Mark Pizzolato
5de0c8db9c Instrumented the qvss activities for better debug support 2013-06-30 08:37:29 -10:00
Mark Pizzolato
65de3d0aed Add descriptions to the QVSS register declarations 2013-06-14 07:25:18 -07:00
Mark Pizzolato
a7a8f3d905 Added reporting of the QVSS window focus release key when Video Windows is created 2013-06-13 07:00:32 -07:00
Mark Pizzolato
b3a9a0d79c Add sim_video and VAX QVSS (VCB01) Monochrome Video Board from Matt Burke 2013-06-12 17:10:23 -07:00
Mark Pizzolato
feeea1e9d2 Remove unused definitions 2013-06-12 16:01:44 -07:00
Mark Pizzolato
651780c481 Remove stray tab characters which crept in over time 2013-06-03 06:29:01 -07:00
Mark Pizzolato
89bd58a6fa Addition of DUP11 simulation to all Unibus simulators (PDP11, PDP10, and all Unibus VAXen) 2013-05-27 16:24:18 -07:00
Mark Pizzolato
6cf54e8341 Fixes for stable operation with SIM_ASYNCH_CLOCKS defined 2013-05-07 11:22:29 -07:00
Mark Pizzolato
1936f7ff75 Fixed VAX8600 simulator boot from console without an attach disk to report a useful error instead of crashing 2013-04-11 08:46:09 -07:00
Mark Pizzolato
e0225c336a Added boot from console floppy support to the VAX780 simulator (Changed console floppy device name from RXC to CS) 2013-04-11 08:45:07 -07:00
Mark Pizzolato
96dbeae08f Added SHOW CPU MEMORY support for all VAX simulators to display the memory controller and board configuration 2013-04-08 12:18:09 -07:00
Mark Pizzolato
471ea3efce Added SHOW CPU MEMORY to the MicroVAX I simulator 2013-04-05 14:52:27 -07:00
Mark Pizzolato
a005822186 Extended the VAX 8600 memory to 512MB and reworked the memory board slot allocation logic to fill as many slots as possible. 2013-04-05 12:16:01 -07:00
Mark Pizzolato
a78c978f96 Fixed pamm initialization for SBI 0 and improved output of SHOW CPU MEMORY - from Johnny Billquist 2013-03-24 16:49:32 -07:00
Mark Pizzolato
8116b7571d Fix VAX 8600 memory controller attribute descriptions to properly reflect the board size and slots.
Fixed value of 8600/8650 SID register ECO and PLANT fields.
Added SHOW CPU MEMORY command to display memory board configuration
2013-03-24 08:44:10 -07:00
Mark Pizzolato
ce41ac867a Fixed the non-functional VAX 8600 boot and use of the console RL02 disk. 2013-03-21 12:05:10 -07:00
Mark Pizzolato
388b2be156 Added missing SET CPU MODEL to VAX 8600 simulator 2013-03-19 07:39:24 -07:00
Mark Pizzolato
51badc2d8e The MicroVAX specific CPU Boot help has been moved to the MicroVAX specific modules 2013-03-19 01:52:31 -07:00
Mark Pizzolato
9b3694b102 Fixed extended VAX 8600 memory of 260MB. 2013-03-18 13:25:49 -07:00
Mark Pizzolato
960c5b5873 Fix issues observed by Sun C compiler 2013-03-18 12:52:43 -07:00
Mark Pizzolato
55e45c99a7 Correct VAX 8600 Maximum memory size since 64MB boards were available (Johnny Billquist)
The actual machine can have a max to 260MB of memory.
There are three different memory boards that exists for the 86x0, from a software point of view.
4MB, 16MB, and 64MB. In addition, you can mix different boards.
The rule is to put large boards first, and smaller boards later.
Even more fun is the fact that the 16MB and 64MB boards are stacked and thus take up two backplane slots in the backplane, while the 4MB board only takes up one slot.
To complete the picture, there are 8 slots in the memory backplane. You start by putting boards in slot 1, going to slot 8. The boards taking up two slots actually use slot n, while covering slot n-1. That means that the board in slot 1 does not cover up any other slot.
If you are using 16MB boards, the max memory is 68MB.
Slot 1,3,5 and 7 will have 16MB boards. And then you can place a 4MB board in slot 8.
Same story with the 64MB boards.
2013-03-18 05:36:24 -07:00
Mark Pizzolato
0605b6dff4 Added support for building on Solaris with the Sun C compiler 2013-03-17 16:50:57 -07:00
Mark Pizzolato
28f645aeab Compiler suggested cleanups 2013-03-13 22:28:14 -07:00
Mark Pizzolato
9bd8305943 Cleanup compiler warnings on Solaris and newer OSX clang compilers.
Add Large File support on Solaris
2013-03-13 20:29:03 -07:00
Mark Pizzolato
d5ca542102 Changed use of compile #defines which start with a _ character to not do this since defined symbols starting with _ are reserved to local compiler/runtime implementations in the C language. This addresses issue #32 2013-03-12 11:07:58 -07:00
Mark Pizzolato
8f9a14c5a1 Fixed clk_help to display the correct device name for the VAX TODR implementations 2013-03-09 12:16:35 -08:00
Mark Pizzolato
b2ee3a5b92 Added VH device to the VAX 8600 system configuration 2013-02-11 10:07:23 -08:00
Mark Pizzolato
a91b6db21e Adding help to VAX system devices 2013-02-06 06:34:31 -08:00
Mark Pizzolato
864b581e35 Adding more device help 2013-02-05 13:59:59 -08:00
Mark Pizzolato
453890f3d7 Adding more device help 2013-02-05 04:41:48 -08:00
Mark Pizzolato
6b4353f257 Returned the pdp11_cr device to the VAX Qbus systems and changed the pdp11_cr device to properly describe itself as a Qbus capable device when CR11 device is being simulated since it is a programmed I/O device and doesn't have bus addressing issues that DMA devices have. 2013-02-04 06:53:10 -08:00
Mark Pizzolato
8640cd6537 - Removed pdp11_cr and pdp11_ry from the Qbus VAX simulators since these devices can't address the full Q22 address range.
- Added validation checks in auto_config to reject enabled devices which aren't Q22 capable on Q22 platforms.
- Changed pdp11_cr device to be default disabled in the PDP11 simulator
2013-02-03 11:29:12 -08:00