Commit graph

2002 commits

Author SHA1 Message Date
Mark Emmer
c256894b62 SDS: Allow LOAD command to accept a more flexible boot sequence
The canonical boot sequence uses WIM 0,2 in location 5 and an initial load address in location 11 (and in the X register). This is limiting for devices like RAD that do not report an end-of-file, or for paper tape that report EOF too late and cause the WIM to fail. A simple load address in location 11, with bit 9 set to satisfy the BRX, doesn't do any word counting.  The BRX always branches back to location 5.

This change allows a true negative word count to be placed in location 11 to work with a WIM XXXXX,2 where XXXXX is one location past the region to be loaded by the boot sequence.  XXXXX plus the negative count in location 11 (buf[3]+buf[7]) initially points to the first location to be loaded, and the BRX will not branch when the word count is exhausted (register X=0) allowing the branch to the start address to be executed.

Old allowable boot sequence:
location  2 = WIM 12,2
location  3 = BRX 2
location  4 = LDX 11
location  5 = WIM 0,2
location  6 = SKS 21000
location  7 = BRX 5
location 10 = BRU Transfer Address
location 11 = Load address with bit 9 set to force BRX to branch

New allowable boot sequence:
location  2 = WIM 12,2
location  3 = BRX 2
location  4 = LDX 11
location  5 = WIM [end load address + 1],2
location  6 = SKS 21000
location  7 = BRX 5
location 10 = BRU Transfer Address
location 11 = Negative count to number of words to load
2014-03-05 19:08:33 -06:00
Mark Pizzolato
9022de500d SCP: Removed the irrelevant sim_deb_PC variable since it duplicates the role sim_PC simulator variable. 2014-03-05 12:53:32 -08:00
Mark Emmer
ef99a17407 SDS: Update README.md for 940 enhancements 2014-03-04 17:40:23 -06:00
Mark Emmer
91c78b79ef SDS: Install better fix for 2x real-time clock speed problem
Received better fix from Mark Pizzolato for the problem of having 120 clock interrupts per second instead of 60. Tested for several hours and verified that wall-clock time matches TSS monitor time.
2014-03-04 17:39:34 -06:00
Mark Pizzolato
0c56397289 Merge remote-tracking branch 'origin/master' 2014-03-03 08:10:31 -08:00
Jordi Guillaumes i Pons
4833bbee4b Merge branch 'master' of git://github.com/simh/simh into crFIX-intack 2014-03-03 15:49:52 +01:00
Mark Emmer
a98c9f92fa SDS: Minor additions to SDS documentation
Document new breakpoint types and display and input of packed SDS internal ASCII characters.  Add note describing memory map options for display and input discovered in code. Word change tracking enabled.
2014-03-02 22:58:08 -06:00
Mark Emmer
cf56b11321 SDS: Adjust real-time clock pulse interrupt period
Clock is running twice as fast as it should -- 120 interrupts per second instead of 60.  Cannot find problem in initialization or calibration or count-down code, so for now, divide rtc_tps by 2 prior to invoking sim_rtcn_calb.  Now 940 Executive reports wall-clock time advancing at proper rate.
2014-03-02 22:49:04 -06:00
Mark Emmer
396e78cb26 SDS: Allow specifying breakpoints as being in monitor, user or normal mode only
Breakpoint logic now allows four execution-type breakpoints:
 -E  as before, break if PC equals address, unqualified by mode
 -M break if PC equals address and machine is in monitor mode
 -N break if PC equals address and machine is in normal (SDS 930) mode
 -U break if PC equals address and machine is in user mode
2014-03-02 22:47:39 -06:00
Mark Emmer
614fe87af4 SDS: Alter display and entering of ASCII data
SDS internal ASCII differs from standard external ASCII. Alter the examine and deposit functions with -A switch to properly adjust between the two forms. Also allow strings rather than one-character per word as was in the original code.  Clean up six-bit character display logic to use a loop.

Remove superfluous trailing blanks from lines in file.
2014-03-02 22:44:35 -06:00
Mark Emmer
0c6c4c7916 SDS: Fixed head disk addressing corrected when start new sector
rad_adjda was setting sba=0 at a sector boundary, which did not reflect that the first 12-bits of the sector have already be read or written. Must set sba=1 for proper addressing.

Removed superfluous end-of-line spaces from file.
2014-03-02 22:27:45 -06:00
Mark Emmer
a07addf5fa SDS: Various fixes to asynchronous communication mux
1. In pot_fork, the permanently asserted interrupt, the interrupt bits were assigned in the wrong order -- bit 8 is interrupt 0 and bit 23 is interrupt 017 in each group of 16. Also, the group number was incorrectly calculated -- need to subtract 0200 before dividing by 020.

2. In case 3 of EOM and SKS when in SDS mode, it does not dispatch properly. The device table is set for Genie mode.  Add test for device 077 in SDS mode and switch to device 1, which is Mux in Genie mode.

3. Add test to PIN to verify that scanner is locked before returning PIN data.

4. Mux should not queue a new interrupt for a flag type if it is already queued and pending for a different channel. If do so, when the CPU clears the interrupt, the second interrupt is lost.

5. If POT specifies interrupt but no Tx character present, queue a Tx interrupt immediately if the transmitter is not active. This technique is used by the 940 monitor to start output of the transmit character buffer.

6. Per the 940 reference manual, after servicing the highest priority interrupt on a particular channel, the scanner should look at all other channels before looking for additional interrupt types on the first channel. Change scanner to always resume scan with the Rx interrupt on the next channel from where the scanner paused.

Also removed superfluous trailing blanks from lines in file.
2014-03-02 22:26:44 -06:00
Mark Emmer
5b479c7ab2 SDS: Do not reload channel interlace register if already alerted
From actual monitor code, sequence used to read drum:
             EOD*  10000B   Alert Interlace
GDAC3: EOD    14202    I/O control mode EOD (mode 1)
                                        A=0  High order memory address bits
                                        Hicount=2 (Word count=04000=2KW)
             POT      GDBCL+2  Low-order memory address bits.
             RRF                    (EOD 2226) Read RAD file (mode 0)

Problem is that RRF is clearing the interlace information saved by the previous POT and sets up for a new POT. That is, in sds_io.c, mod 0 of op_eomd always assumes that a POT will follow if the channel is C or greater. Have to add tests of chan_flag.  If interlace is active, do not capture new information from this EOM/EOD.

Also removed superfluous trailing blanks from lines in file.
2014-03-02 22:24:28 -06:00
Mark Emmer
d5acbc6f7a SDS: Fix clock pulse interrupt bug
The single-instruction Clock Pulse interrupt (75 octal) may be a MIN or SKR instruction. The function rtc_inst increments (MIN) or decrements (SKR) the operand and tests for zero and generates a Clock Sync interrupt (74 octal) if so. However, the SDS 940 reference manual is incorrect; in the SKR case, the test should be if the result is negative.
2014-03-02 22:22:20 -06:00
Mark Emmer
5270c44117 SDS: Fix bugs in Monitor-to-User Transition
1. When transitioning from monitor to user mode with the trap enabled, the trap was latching the monitor address of the transferring branch rather than the user-mode address of the branch target.

2. When executing a BRU, BRX or BRM in monitor mode, if the effective address was in user mode, the code neglected to transition the machine to user mode. And after doing so, it is necessary to check for an armed monitor-to-user trap.

Also removed superfluous trailing blanks from lines in file.
2014-03-02 22:21:13 -06:00
Mark Pizzolato
879e2b9554 PDP11, PDP10, VAX, AltairZ80: enhanced the macro which aborts on an unexpected status from an expression with side effects to also write a message to sim_log or sim_deb if they happen to be open. 2014-03-02 14:50:43 +01:00
Mark Pizzolato
9320c56f3f PDP11, PDP10, AltairZ80: Fixed cases where assert() macro is called with an expression which has side effects and therefore wouldn't get executed if compiled with NDEBUG defined. 2014-03-02 14:50:43 +01:00
Mark Pizzolato
dbe8533352 PDP10, PDP11: Fix compiler indicated invalid check. Fixed #118 2014-03-02 14:50:42 +01:00
Mark Pizzolato
6b1dd7065f PDP11, PDP10, VAX, AltairZ80: enhanced the macro which aborts on an unexpected status from an expression with side effects to also write a message to sim_log or sim_deb if they happen to be open. 2014-03-01 17:56:12 -08:00
Mark Pizzolato
a15858315a PDP11, PDP10, AltairZ80: Fixed cases where assert() macro is called with an expression which has side effects and therefore wouldn't get executed if compiled with NDEBUG defined. 2014-03-01 17:15:10 -08:00
Jordi Guillaumes i Pons
f046887e0c PDP11,VAX: Minor change in pdp11_cr.c 2014-03-01 01:20:09 +01:00
Jordi Guillaumes i Pons
8c9a76bf5a PDP11,VAX: Fixed data overrun due to lost interrupts whith idle enabled; fixed garbage got after EOF due to unnecesary interrupt. 2014-02-28 18:58:20 +01:00
Mark Pizzolato
5217c6148b PDP10, PDP11: Fix compiler indicated invalid check. Fixed #118 2014-02-27 13:57:12 -08:00
Jordi Guillaumes i Pons
9f0261be11 PDP10: Fixed TOD drift due to truncation to milliseconds. 2014-02-25 10:47:32 +01:00
Mark Pizzolato
d0d3742504 SWTP6800: Added build support for internally contained swtbug.bin as a built-in ROM image 2014-02-24 18:13:12 -08:00
Mark Pizzolato
d81825cdba ETHER: Updated documentation for building with network support on Mac OS/X. Fix #112 2014-02-24 08:51:47 -08:00
Mark Pizzolato
44f66e90eb MUX: Added delay after closing a socket created to validate a port specification. Suggested by Mark Emmer
The network stack on Windows XP needs an opportunity to cleanup after closing a listening socket which was created but not used,
2014-02-23 08:54:00 -08:00
Mark Pizzolato
02cb5c2d88 Compiler suggested cleanups.
Mostly silencing noise warnings, but bugs were found in sim_console.c and pdp11_dmc.c
2014-02-14 17:07:45 -08:00
Mark Pizzolato
dcbb89499e PDP11,VAX: Fix bug which scheduled the wrong unit when more than one VH device is configured, Fix #113 2014-02-14 11:21:42 -08:00
Mark Pizzolato
5d82b9a960 ETHER: Fix support on OSX so that builds will succeed when building network capable simulators and libpcap development components are not available but TUN/TAP components are available. 2014-02-14 06:43:40 -08:00
Mark Pizzolato
55822918a5 ETHER: Fix support on OSX so that builds will succeed when building network capable simulators and libpcap development components are not available. 2014-02-13 16:03:38 -08:00
Mark Pizzolato
d50d9529a8 PDP10: Change display of CPU memory size to be in KW (1024) instead of (1000) 2014-02-13 08:22:49 -08:00
Mark Pizzolato
2b512818e9 VS-BUILD: fix warning messages produced when converting VS2008 projects to VS2010 or VS2012 2014-02-13 05:21:12 -08:00
Mark Pizzolato
59d0602b0d PDP8: Add device buffer flush capability and keep track of data written state in the device buffer. Fixes #87
Finishing the last DECtape device which was missed when this functionality was added to pdp11_dt, pdp18b_dt and pdp8_dt
in commits: 2934112a70 and c9e8121c16

Cleaned up the pdp11, pdp18b and other pdp8 implementations to make backporting cleaner.
Made sure that buffer flushing happens correctly when simulation returns to the sim> prompt.
2014-02-12 21:08:18 -08:00
Mark Pizzolato
f1a10a7ff9 PDP11,VAX: Cleanup declared but undefined local routine. 2014-02-12 17:18:44 -08:00
Mark Pizzolato
e75e52d9a2 PDP10: Fixed display of Unibus and Vector for RY device. 2014-02-12 17:17:46 -08:00
Mark Pizzolato
22bce48689 PDP10: Change incorrect interrupt bits defined for DMC/DMR device which conflicted with KMC/KDP device. Fixes issue #107
Also removed unreferenced defines for shared Unibus devices which get address and vectors through autoconfiguration.
2014-02-12 13:47:01 -08:00
Mark Pizzolato
c8991a4084 SOCK: avoid calling strcpy with overlapping arguments when converting IPv4-mapped address strings. Fixes issue #111 2014-02-12 03:40:10 -08:00
Mark Pizzolato
519f7f2c03 PDP8: Revised fix for Binary loader can't read multiple section tapes (#74) to make reading all sections optional based on the -A switch (from Dave Gesswein) 2014-02-11 18:58:19 -08:00
Mark Pizzolato
9068ea0e8e SCP: Fleshing out more of the hierarchical help content. 2014-02-11 14:24:45 -08:00
Mark Pizzolato
3f9a125727 MAKEFILE: Added support to detect libSDL on host platforms which use /usr/pkg for OS supplied package installation location. Fix #110 2014-02-11 14:11:07 -08:00
Mark Pizzolato
07b64e3f72 Compiler suggested cleanups. 2014-02-11 13:33:48 -08:00
Mark Pizzolato
d7c63d61f2 PDP10,PDP11,VAX: Fix for DMC/DMR error which lost track of pending transmit buffers when timeouts happened during DDCMP protocol startup. Fixes #109 2014-02-11 13:32:37 -08:00
Mark Pizzolato
897491deea PDP10: Correct time interpolation when reading the timebase and the interval calculation when setting the clock tick interval. Fixes issue #108 (from Jordi Guillaumes) 2014-02-11 07:17:42 -08:00
Mark Pizzolato
545aa85677 SCP: Cleaned up the hierarchical help APIs to follow the same indentation style used in the rest of scp.c. Fixed the help prompt to avoid adding an extra level to the prompt when the current level has no children. 2014-02-10 17:25:07 -08:00
Mark Pizzolato
b1fb809210 PDP10, PDP11, VAX: Added the DDCMP corruption troll to the DDCMP layer and removed it from the KDP device.
Now all DDCMP capable devices KDP, DUP and DMC/DMR have access to packet corruption generation to simulate real world imperfect data lines for protocol testing.
2014-02-10 17:22:19 -08:00
Mark Pizzolato
d7690ce060 PDP8: Binary loader can now read multiple section tapes. Fix from Dave Gesswein to issue #74. 2014-02-08 05:39:03 -08:00
Mark Pizzolato
2934112a70 PDP11,PDP18B: Add device buffer flush capability and keep track of data written state in the device buffer. These are cousin bugs described in issue #87 2014-02-08 05:29:46 -08:00
Mark Pizzolato
b2133aede8 Compiler indicated cleanups 2014-02-07 14:49:55 -08:00
Mark Pizzolato
7ce7317f7c PDP8: Add new breakpoint command based on instruction value (Opcode) (from Dave Gesswein) as discussed in issue #75 2014-02-07 11:43:52 -08:00