mirror of
https://github.com/simh/simh.git
synced 2026-02-02 23:02:16 +00:00
Notes For V3.0-1
RESTRICTION: The FP15 and XVM features of the PDP-15 are only partially debugged. Do NOT enable these features for normal operations. 1. New Features in 3.0-1 1.1 PDP-1 - Added block loader format support to LOAD. - Changed BOOT PTR to allow loading of all of the first bank of memory. 1.2 PDP-18b Family - Added PDP-4 EAE support. - Added PDP-15 FP15 support. - Added PDP-15 XVM support. - Added PDP-15 "re-entrancy ECO". - Added PDP-7, PDP-9, PDP-15 hardware RIM loader support in BOOT PTR. 2. Bugs Fixed in 3.0-1 2.1 PDP-11/VAX - Fixed bug in user disk size (found by Chaskiel M Grundman). 2.2 PDP-1 - Updated CPU, line printer, standard devices to detect indefinite I/O wait. - Fixed incorrect logical, missing activate, break in drum simulator. - Fixed bugs in instruction decoding, overprinting for line printer. 2.3 PDP-10 - Fixed bug in RP read header. 2.4 PDP-18b Family - Fixed bug in PDP-4 line printer overprinting. - Fixed bug in PDP-15 memory protect/skip interaction. - Fixed bug in RF set size routine. - Increased PTP TIME for PDP-15 operating systems. 2.5 PDP-8 - Fixed bug in DF, RF set size routine. 2.6 Nova - Fixed bug in DSK set size routine. 2.7 1401 - Revised fetch to model hardware more closely. 2.8 Ibm1130 - Fixed bugs found by APL 1130. 2.9 Altairz80 - Fixed bug in real-time clock on Windows host. 2.10 HP2100 -- Fixed DR drum sizes. -- Fixed DR variable capacity interaction with SAVE/RESTORE. 3. New Features in 3.0 vs prior releases 3.1 SCP and Libraries - Added ASSIGN/DEASSIGN (logical name) commands. - Changed RESTORE to unconditionally detach files. - Added E11 and TPC format support to magtape library. - Fixed bug in SHOW CONNECTIONS. - Added USE_ADDR64 support 3.2 All magtapes - Magtapes support SIMH format, E11 format, and TPC format (read only). - SET <tape_unit> FORMAT=format sets the specified tape unit's format. - SHOW <tape_unit> FORMAT displays the specified tape unit's format. - Tape format can also be set as part of the ATTACH command, using the -F switch. 3.3 VAX - VAX can be compiled without USE_INT64. - If compiled with USE_INT64 and USE_ADDR64, RQ and TQ controllers support files > 2GB. - VAX ROM has speed control (SET ROM DELAY/NODELAY). 4. Bugs Fixed in 3.0 vs prior releases 4.1 VAX - Fixed CVTfi bug: integer overflow not set if exponent out of range - Fixed EMODx bugs: o First and second operands reversed o Separated fraction received wrong exponent o Overflow calculation on separated integer incorrect o Fraction not set to zero if exponent out of range - Fixed interval timer and ROM access to pass power-up self-test even on very fast host processors (fixes from Mark Pizzolato). 4.2 1401 - Fixed mnemonic, instruction lengths, and reverse scan length check bug for MCS. - Fixed MCE bug, BS off by 1 if zero suppress. - Fixed chaining bug, D lost if return to SCP. - Fixed H branch, branch occurs after continue. - Added check for invalid 8 character MCW, LCA. - Fixed magtape load-mode end of record response. 4.3 Nova - Fixed DSK variable size interaction with restore. 4.4 PDP-1 - Fixed DT variable size interaction with restore. 4.5 PDP-11 - Fixed DT variable size interaction with restore. - Fixed bug in MMR1 update (found by Tim Stark). - Added XQ features and fixed bugs: o Corrected XQ interrupts on IE state transition (code by Tom Evans). o Added XQ interrupt clear on soft reset. o Removed XQ interrupt when setting XL or RL (multiple people). o Added SET/SHOW XQ STATS. o Added SHOW XQ FILTERS. o Added ability to split received packet into multiple buffers. o Added explicit runt and giant packet processing. 4.6 PDP-18B - Fixed DT, RF variable size interaction with restore. - Fixed MT bug in MTTR. 4.7 PDP-8 - Fixed DT, DF, RF, RX variable size interaction with restore. - Fixed MT bug in SKTR. 4.8 HP2100 - Fixed bug in DP (13210A controller only), DQ read status. - Fixed bug in DP, DQ seek complete. 4.9 GRI - Fixed bug in SC queue pointer management.
This commit is contained in:
committed by
Mark Pizzolato
parent
4ffd3be790
commit
f9564b81b9
@@ -13,6 +13,7 @@
|
||||
// ASM1130 - IBM 1130 Cross Assembler
|
||||
//
|
||||
// Version
|
||||
// 1.08 - 2003Mar18 - Fixed bug that complained about valid MDX displacement of +127
|
||||
// 1.07 - 2003Jan05 - Filenames are now left in lower case. SYMBOLS.SYS stays all upper case
|
||||
// 1.06 - 2002May02 - Fixed bug in ebdic constants (data goes into low byte)
|
||||
// First stab at adding ISS level # info, this is iffy
|
||||
@@ -156,7 +157,7 @@
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
|
||||
#define VERSION "ASM1130 CROSS ASSEMBLER V1.07"
|
||||
#define VERSION "ASM1130 CROSS ASSEMBLER V1.08"
|
||||
|
||||
#define ISTV 0x33 // magic number from DMS R2V12 monitorm symbol @ISTV
|
||||
|
||||
@@ -3392,7 +3393,7 @@ void mdx_op (struct tag_op *op, char *label, char *mods, char *arg)
|
||||
else
|
||||
getexpr(tok, FALSE, &incr);
|
||||
|
||||
if (incr.value < -128 || incr.value >= 127) // displacement style
|
||||
if (incr.value < -128 || incr.value > 127) // displacement style (fixed in ver 1.08)
|
||||
asm_error("Invalid increment value (8 bits signed)");
|
||||
|
||||
opcode |= (incr.value & 0xFF);
|
||||
|
||||
@@ -426,7 +426,7 @@ void show_data (void)
|
||||
(reloc == R_LIBF) ? 'L' : '@';
|
||||
|
||||
printf("%04x%c ", buf[9+i], ch);
|
||||
rflag << 2;
|
||||
rflag <<= 2;
|
||||
nout++;
|
||||
}
|
||||
putchar('\n');
|
||||
|
||||
@@ -337,7 +337,7 @@ void show_data (unsigned short *buf)
|
||||
(reloc == R_LIBF) ? 'L' : '@';
|
||||
|
||||
printf("%04x%c ", buf[9+i], ch);
|
||||
rflag << 2;
|
||||
rflag <<= 2;
|
||||
nout++;
|
||||
}
|
||||
putchar('\n');
|
||||
|
||||
@@ -15,25 +15,61 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
typedef int BOOL;
|
||||
|
||||
int hollerith_to_ascii (unsigned short h);
|
||||
void bail (char *msg);
|
||||
void format_coldstart (unsigned short *buf);
|
||||
|
||||
int main (int argc, char **argv)
|
||||
{
|
||||
FILE *fd;
|
||||
char line[82];
|
||||
char *fname = NULL, line[82], *arg;
|
||||
BOOL coldstart = FALSE;
|
||||
unsigned short buf[80];
|
||||
int i, lastnb;
|
||||
static char usestr[] =
|
||||
"Usage: viewdeck [-c] deckfile\n"
|
||||
"\n"
|
||||
"-c: convert cold start card to 16-bit format as a C array initializer\n";
|
||||
|
||||
if (argc != 2)
|
||||
bail("Usage: viewdeck deckfile");
|
||||
for (i = 1; i < argc; i++) { // process command line arguments
|
||||
arg = argv[i];
|
||||
|
||||
if ((fd = fopen(argv[1], "rb")) == NULL) {
|
||||
perror(argv[1]);
|
||||
if (*arg == '-') {
|
||||
arg++;
|
||||
while (*arg) {
|
||||
switch (*arg++) {
|
||||
case 'c':
|
||||
coldstart = TRUE;
|
||||
break;
|
||||
default:
|
||||
bail(usestr);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (fname == NULL) // first non-switch arg is file name
|
||||
fname = arg;
|
||||
else
|
||||
bail(usestr); // there can be only one name
|
||||
}
|
||||
|
||||
if (fname == NULL) // there must be a name
|
||||
bail(usestr);
|
||||
|
||||
if ((fd = fopen(fname, "rb")) == NULL) {
|
||||
perror(fname);
|
||||
return 1;
|
||||
}
|
||||
|
||||
while (fread(buf, sizeof(short), 80, fd) == 80) {
|
||||
if (coldstart) {
|
||||
format_coldstart(buf);
|
||||
break;
|
||||
}
|
||||
|
||||
lastnb = -1;
|
||||
for (i = 0; i < 80; i++) {
|
||||
line[i] = hollerith_to_ascii(buf[i]);
|
||||
@@ -45,11 +81,39 @@ int main (int argc, char **argv)
|
||||
fputs(line, stdout);
|
||||
}
|
||||
|
||||
if (coldstart) {
|
||||
if (fread(buf, sizeof(short), 1, fd) == 1)
|
||||
bail("Coldstart deck has more than one card");
|
||||
}
|
||||
|
||||
fclose(fd);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void format_coldstart (unsigned short *buf)
|
||||
{
|
||||
int i, nout = 0;
|
||||
unsigned short word;
|
||||
|
||||
for (i = 0; i < 80; i++) {
|
||||
word = buf[i]; // expand 12-bit card data to 16-bit instruction
|
||||
word = (word & 0xF800) | ((word & 0x0400) ? 0x00C0 : 0x0000) | ((word & 0x03F0) >> 4);
|
||||
|
||||
if (nout >= 8) {
|
||||
fputs(",\n", stdout);
|
||||
nout = 0;
|
||||
}
|
||||
else if (i > 0)
|
||||
fputs(", ", stdout);
|
||||
|
||||
printf("0x%04x", word);
|
||||
nout++;
|
||||
}
|
||||
|
||||
putchar('\n');
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
unsigned short hollerith;
|
||||
char ascii;
|
||||
@@ -103,7 +167,7 @@ static CPCODE cardcode_029[] =
|
||||
0x0120, '\'',
|
||||
0x00A0, '=',
|
||||
0x0060, '"',
|
||||
0x8820, 'c', // cent
|
||||
0x8820, '\xA2', // cent, in MS-DOS encoding
|
||||
0x8420, '.',
|
||||
0x8220, '<', // ) in 026 Fortran
|
||||
0x8120, '(',
|
||||
@@ -114,13 +178,47 @@ static CPCODE cardcode_029[] =
|
||||
0x4220, '*',
|
||||
0x4120, ')',
|
||||
0x40A0, ';',
|
||||
0x4060, 'n', // not
|
||||
0x2820, 'x', // what?
|
||||
0x4060, '\xAC', // not, in MS-DOS encoding
|
||||
0x2420, ',',
|
||||
0x2220, '%', // ( in 026 Fortran
|
||||
0x2120, '_',
|
||||
0x20A0, '>',
|
||||
0x2060, '>',
|
||||
0xB000, 'a',
|
||||
0xA800, 'b',
|
||||
0xA400, 'c',
|
||||
0xA200, 'd',
|
||||
0xA100, 'e',
|
||||
0xA080, 'f',
|
||||
0xA040, 'g',
|
||||
0xA020, 'h',
|
||||
0xA010, 'i',
|
||||
0xD000, 'j',
|
||||
0xC800, 'k',
|
||||
0xC400, 'l',
|
||||
0xC200, 'm',
|
||||
0xC100, 'n',
|
||||
0xC080, 'o',
|
||||
0xC040, 'p',
|
||||
0xC020, 'q',
|
||||
0xC010, 'r',
|
||||
0x6800, 's',
|
||||
0x6400, 't',
|
||||
0x6200, 'u',
|
||||
0x6100, 'v',
|
||||
0x6080, 'w',
|
||||
0x6040, 'x',
|
||||
0x6020, 'y',
|
||||
0x6010, 'z', // these odd punch codes are used by APL:
|
||||
0x1010, '\001', // no corresponding ASCII using ^A
|
||||
0x0810, '\002', // SYN using ^B
|
||||
0x0410, '\003', // no corresponding ASCII using ^C
|
||||
0x0210, '\004', // PUNCH ON using ^D
|
||||
0x0110, '\005', // READER STOP using ^E
|
||||
0x0090, '\006', // UPPER CASE using ^F
|
||||
0x0050, '\013', // EOT using ^K
|
||||
0x0030, '\016', // no corresponding ASCII using ^N
|
||||
0x1030, '\017', // no corresponding ASCII using ^O
|
||||
0x0830, '\020', // no corresponding ASCII using ^P
|
||||
};
|
||||
|
||||
int hollerith_to_ascii (unsigned short h)
|
||||
|
||||
Reference in New Issue
Block a user