test how magrst behaves. It treats this just like a real tape error,
which is good. If mtwrite is used to re-create a physical tape from a
.tap file, it cannot re-create tape errors, so writes a 4-byte zero
record instead. Prime magrst will still see this as an error record
since it isn't long enough to be a real magsav record.
add DNS lookup on every license server connect to handle dynamic IP
made keyboard chars ^O, ^Y, and ^V work on system console
added printf in fatal() if any messages were logged to error.log
supports ^b in Primos II to reboot from tape w/Primos II in memory
to allow running make rev 19 from Primos II, but it's still broken
fixed cylinder limits for some disk models (couldn't format some drive types)
fixed devdisk problem: a error on one unit could cause bogus errors on another
IMPORTANT: fixed rare bug where emulator would hang in sleep (IMPS=0)
added licensing dongle support
boot option supports filename, sense and data switches:
-boot filename sswitch dswitch (for D. Boone)
-ds option (like VCP) as alternate way to set data switches (for D. Boone)
removed -v and -vv: they were old and didn't do anything
tries to read ring0.map and ring3.map if no -map option used
fixed bug with new connect for multiple AMLC controllers
default build is now for 32 amlc lines
fixed disk geometry for CMD; added geometry for Model 4935 (1.1G NEC)
fixed tape boot for variable record sizes (for D. Boone), but rev 19 loops
added EMULATOR_VERSION #define and version printf()
changed tape drive filenames from dev14u0-4 to mt0-4
changed disk drive filenames from dev26u0 to disk26u0
added license manager tracing
changed to automatically redirect stderr to error.log on startup
changed to create mtx tape drive files if they don't exist
tested write-protected tape drive files
changed invalid seek from a fatal error (emulator halt) to a disk error
disable Nagle algorithm for telnet connections (OSX buggy delay)
error setting terminfo flags for USB serial devices is no longer fatal
changed "pio to unimplemented device" from error to trace
changes for hobby version (no amlc, one disk drive)
new files geom.h, geomhash.h, geomhash.c for hobby version
added checksum to disk geometry tables to thwart hacking hobby version
added head offset check to disk driver for hobby version
added -boot help to display help with booting
added initial support for Matrixlock dongle
emulator handles xon/xoff on console to avoid blocking
supports read-only tape files (Unix read-only mode)
changed clock catch-up code (slower) so rev 20 doesn't crash after suspend
changed disk driver to controller 0-7 instead of device 0-64
demand-based variable interrupt rate for amlc controllers
fixed devdisk error reading zero bytes past disk eof (for D. Boone)
devdisk sets read check status bit on Unix read error
added INA '1114 for cpboot (for D. Boone)
changed SETCC_16/32, tcr, tch for speed, checked with Shark
support for real serial ports
added "amlc" config file to tie specific amlc lines to serial ports
changed amlc context to controller 0-7 rather than device 0-64
use lword bit 7 to enable hardware flow control: 2413 -> 3413
poll amlc faster if dmq buffer full (output), but don't do this for
input because user input buffer might overflow
-- this was causing the LISTENER_ORDER$ signals after DIAG
-- also was causing HELP to fail sporadically (HELP MTRESUME)
removed TB_xxx flags (identical to T_xxx)
added some eap hints
changed to pop the concealed stack earlier
changed LDLR/LDAR to load result from RP if ea is 7
changed STLR/STAR to store result in RP if ea is 7
added new trace flags for GET/PUT (unimplemented)
reworked ring/register fix so that Primos nevers sees RP faulted
but we don't have to do extra tests in the fetch loop
changed EAxxx routines to use RP segno when EA = register
added FP exception fault to ieeepr8 and all FP routines
added round flag to ieeepr8 (though not sure it's rounding correctly)
used gcov info to reorder some stuff in ea16s, ea32s, ea32r64r
changed warn() and fatal() to use get16t; prevpc might be a register
IMPORTANT NOTE: to compile with -O0, also use -DNOREG (gcc bug)
changed ARGT to add ring bits to LB & SB in brsave[]
major TRACE update, to debug Information tsrc$$ problem
changed MAXMB default for non-OSX platforms (PS3) to 32MB
changed B(I,D)(X,Y) instructions to increment/decrement inside if;
(avoids reloading values to test them) and removed B(X,Y)NE macros
changed default cpuid to 15 so real time clock is always set
use ppa instead of ppn to avoid << 10 on every memory reference
changed newkeys() so illegal keys give illegal instruction vs fatal()
removed hack to patch Primos for rev 23 SSSN check
added code to SSSN to skip the check loop immediately following
removed #ifdef FAST from a few places, just use the faster code
added code to LDA trace to also display as two octal bytes
added get32m & put32m: these always map
changed get32 and put32 to be inlined
changed mem[] references to MEM[] to allow experiments
tried using register for MEM pointer - not so great
tried using register for instcount - screwed up (very sluggish)
added INCRP macro - now does 32-bit increments of RP for speed
added ADDRP macro to return RP incremented by n (CGT)
changed globals to static (didn't help speed much - thought it might)
moved around some functions
changed shift instructions to create bitmask at runtime (faster)
manually inlined mathexception (but used inline keyword in later revs)
changed get16/put16 to get16t/put16t where address trap might occur
this eliminates ea<0 test for all other non-trappable get16/put16 calls
changed crs & crsl to macros to reference a union vs 2 distinct variables
changed crs and RP to be register variables (regs.h)
fixed tape drive problems
sent to Garth around 8/15/07
supports 512MB memory
device "terminate" call
added XED emulation
more FP changes
changed devmt to emulate Kennedy tape drive & controller
devmt changes to support higher revs / fix bugs
added IOTLB, mapio, and get/put16io macros so rev23 would boot
changed device drivers to go through IOTLB, not STLB
removed SVC Primos II emulation code
changed floating point register format to match memory
began PNC driver
put16r0 macro shortcuts like get16r0
branch instructions use inline code (macros) instead of gotos
devasr blocks when possible
lock disk files to prevent corruption from multiple emulators
devamlc select to ensure output socket buffer isn't full
devamlc partial write error is now a warning vs fatal
ECONNRESET test in devamlc (spurious emulator crashes)
lots of changes to PNC driver (not working yet)
added T_TERM for system terminal output tracing
added specific user tracing:
- 2-digit number after trace (user number)
- 6-digit octal number = OWNERL (for devices)
added specific procedure tracing
major bug in PCL: indirect bit offsets not working,
causing SAC JIM:PDALURW to be SAC JIM:PAUW
for R-mode MPY, do the math THEN generate the exception
DIV exception handling was wrong, code was wrong too
a few devasr changes
changed devamlc to always turn off parity instead of flipping it
writes tracing to a buffered log file instead of stderr
added clear of first 32K of physical memory to master clear
changed all exit() calls to fatal() calls
more changes to the devmt tape driver
need to restore interval timer when new process dispatched
process level was incorrect when new process dispatched
changes setting process abort flag in PCB when timer overflows