From 35eac703c319a6e855d600300e8e3a900ee9dd9a Mon Sep 17 00:00:00 2001 From: Bob Supnik Date: Mon, 26 Apr 2010 06:04:00 -0700 Subject: [PATCH] Notes For V3.8 The makefile now works for Linux and most Unix's. However, for Solaris and MacOS, you must first export the OSTYPE environment variable: > export OSTYPE > make Otherwise, you will get build errors. 1. New Features 1.1 3.8-0 1.1.1 SCP and Libraries - BREAK, NOBREAK, and SHOW BREAK with no argument will set, clear, and show (respectively) a breakpoint at the current PC. 1.1.2 GRI - Added support for the GRI-99 processor. 1.1.3 HP2100 - Added support for the BACI terminal interface. - Added support for RTE OS/VMA/EMA, SIGNAL, VIS firmware extensions. 1.1.4 Nova - Added support for 64KW memory (implemented in third-party CPU's). 1.1.5 PDP-11 - Added support for DC11, RC11, KE11A, KG11A. - Added modem control support for DL11. - Added ASCII character support for all 8b devices. 1.2 3.8-1 1.2.1 SCP and libraries - Added capability to set line connection order for terminal multiplexers. 1.2.2 HP2100 - Added support for 12620A/12936A privileged interrupt fence. - Added support for 12792C eight-channel asynchronous multiplexer. 1.3 3.8-2 1.3.1 1401 - Added "no rewind" option to magtape boot. 1.3.2 PDP-11 - Added RD32 support to RQ - Added debug support to RL 1.3.3 PDP-8 - Added FPP support (many thanks to Rick Murphy for debugging the code) 2. Bugs Fixed Please see the revision history on http://simh.trailing-edge.com or in the source module sim_rev.h. --- 0readme_38.txt | 17 +- ALTAIR/altair_dsk.c | 4 +- AltairZ80/altairZ80_cpu.c | 75 +- AltairZ80/altairZ80_defs.h | 14 +- AltairZ80/altairZ80_dsk.c | 29 +- AltairZ80/altairZ80_sio.c | 227 +-- AltairZ80/altairZ80_sys.c | 20 +- AltairZ80/altairz80_cpu_nommu.c | 9 +- AltairZ80/altairz80_doc.pdf | Bin 0 -> 416146 bytes AltairZ80/altairz80_hdsk.c | 300 ++-- AltairZ80/altairz80_net.c | 7 +- AltairZ80/flashwriter2.c | 2 +- AltairZ80/i8272.c | 10 +- AltairZ80/i86_decode.c | 1 - AltairZ80/i86_ops.c | 70 +- AltairZ80/i86_prim_ops.c | 1 - AltairZ80/mfdc.c | 28 +- AltairZ80/n8vem.c | 22 +- AltairZ80/s100_disk2.c | 41 +- AltairZ80/s100_disk3.c | 44 +- AltairZ80/s100_fif.c | 16 +- AltairZ80/s100_hdc1001.c | 39 +- AltairZ80/s100_mdsad.c | 19 +- AltairZ80/sim_imd.c | 62 +- AltairZ80/sim_imd.h | 5 + AltairZ80/vfdhd.c | 26 +- AltairZ80/wd179x.c | 11 +- H316/h316_cpu.c | 7 +- HP2100/hp2100_cpu.h | 7 +- I1401/i1401_cd.c | 139 +- I1401/i1401_cpu.c | 68 +- I1401/i1401_mt.c | 2 +- Ibm1130/ibm1130_sca.c | 6 +- PDP11/pdp11_cr.c | 3 +- PDP11/pdp11_kg.c | 5 +- PDP11/pdp11_rk.c | 5 +- PDP11/pdp11_rl.c | 12 +- PDP11/pdp11_rq.c | 26 +- PDP11/pdp11_vh.c | 25 +- PDP8/pdp8_fpp.c | 425 ++++-- PDP8/pdp8_sys.c | 5 +- VAX/vax_cpu.c | 25 +- descrip.mms | 109 +- makefile | 13 +- sim_rev.h | 36 +- swtp/6800boot.dsk | Bin 0 -> 1474560 bytes swtp/6800work.dsk | Bin 0 -> 1474560 bytes swtp/swtp | Bin 0 -> 258454 bytes swtp/swtp.txt | 100 ++ swtp/swtp6800 | 9 + swtp/swtp_cpu.c | 2293 +++++++++++++++++++++++++++++++ swtp/swtp_defs.h | 46 + swtp/swtp_dsk.c | 506 +++++++ swtp/swtp_sio.c | 312 +++++ swtp/swtp_sys.c | 425 ++++++ 55 files changed, 4948 insertions(+), 760 deletions(-) create mode 100644 AltairZ80/altairz80_doc.pdf create mode 100644 swtp/6800boot.dsk create mode 100644 swtp/6800work.dsk create mode 100644 swtp/swtp create mode 100644 swtp/swtp.txt create mode 100644 swtp/swtp6800 create mode 100644 swtp/swtp_cpu.c create mode 100644 swtp/swtp_defs.h create mode 100644 swtp/swtp_dsk.c create mode 100644 swtp/swtp_sio.c create mode 100644 swtp/swtp_sys.c diff --git a/0readme_38.txt b/0readme_38.txt index ffa2798b..befc49c0 100644 --- a/0readme_38.txt +++ b/0readme_38.txt @@ -1,7 +1,7 @@ Notes For V3.8 -The makefile now works for Linux and most Unix's. Howevr, for Solaris +The makefile now works for Linux and most Unix's. However, for Solaris and MacOS, you must first export the OSTYPE environment variable: > export OSTYPE @@ -49,6 +49,21 @@ Otherwise, you will get build errors. - Added support for 12620A/12936A privileged interrupt fence. - Added support for 12792C eight-channel asynchronous multiplexer. +1.3 3.8-2 + +1.3.1 1401 + +- Added "no rewind" option to magtape boot. + +1.3.2 PDP-11 + +- Added RD32 support to RQ +- Added debug support to RL + +1.3.3 PDP-8 + +- Added FPP support (many thanks to Rick Murphy for debugging the code) + 2. Bugs Fixed diff --git a/ALTAIR/altair_dsk.c b/ALTAIR/altair_dsk.c index 4218f1d7..64ef739c 100644 --- a/ALTAIR/altair_dsk.c +++ b/ALTAIR/altair_dsk.c @@ -1,6 +1,6 @@ /* altair_dsk.c: MITS Altair 88-DISK Simulator - Copyright (c) 1997-2005, Charles E. Owen + Copyright (c) 1997-2010, Charles E. Owen Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -325,6 +325,8 @@ int32 dsk12(int32 io, int32 data) cur_sect[cur_disk]);*/ pos = DSK_TRACSIZE * cur_track[cur_disk]; pos += DSK_SECTSIZE * cur_sect[cur_disk]; + if ((uptr == NULL) || (uptr->fileref == NULL)) + return 0; rtn = fseek(uptr -> fileref, pos, 0); rtn = fread(dskbuf, 137, 1, uptr -> fileref); cur_byte[cur_disk] = 1; diff --git a/AltairZ80/altairZ80_cpu.c b/AltairZ80/altairZ80_cpu.c index 26c54e2c..5c19ed64 100644 --- a/AltairZ80/altairZ80_cpu.c +++ b/AltairZ80/altairZ80_cpu.c @@ -1,6 +1,6 @@ /* altairz80_cpu.c: MITS Altair CPU (8080 and Z80) - Copyright (c) 2002-2008, Peter Schorn + Copyright (c) 2002-2010, Peter Schorn Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -144,6 +144,8 @@ extern int32 simh_dev (const int32 port, const int32 io, const int32 data); extern int32 sr_dev (const int32 port, const int32 io, const int32 data); extern void install_ALTAIRbootROM(void); extern void do_SIMH_sleep(void); +extern void prepareMemoryAccessMessage(const t_addr loc); +extern void prepareInstructionMessage(const t_addr loc, const uint32 op); extern FILE *sim_deb; @@ -1279,10 +1281,9 @@ static const uint8 cpTable[256] = { 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, }; -/* remove comments to generate table contents and define globally NEED_SIM_VM_INIT -static void altairz80_init(void); -void (*sim_vm_init) (void) = &altairz80_init; -static void altairz80_init(void) { +/* remove comments to generate table contents and add a call to + altairz80_print_tables in the altairz80_init +static void altairz80_print_tables(void) { */ /* parityTable */ /* @@ -1591,7 +1592,7 @@ uint32 sim_map_resource(uint32 baseaddr, uint32 size, uint32 resource_type, printf("%s memory 0x%05x, handler=%p\n", unmap ? "Unmapping" : " Mapping", addr, routine); if (unmap) { - if (mmu_table[page].routine == routine) /* unmap only if it was mapped */ + if (mmu_table[page].routine == routine) { /* unmap only if it was mapped */ if (MEMORYSIZE < MAXBANKSIZE) if (addr < MEMORYSIZE) mmu_table[page] = RAM_PAGE; @@ -1599,6 +1600,7 @@ uint32 sim_map_resource(uint32 baseaddr, uint32 size, uint32 resource_type, mmu_table[page] = EMPTY_PAGE; else mmu_table[page] = RAM_PAGE; + } } else { mmu_table[page] = ROM_PAGE; @@ -1785,44 +1787,32 @@ static int32 sim_brk_lookup (const t_addr loc, const int32 btyp) { return (sim_brk_pend[0] && (loc == sim_brk_ploc[0])) ? MASK_BRK : FALSE; } -static void prepareMemoryAccessMessage(t_addr loc) { - extern char memoryAccessMessage[]; - sprintf(memoryAccessMessage, "Memory access breakpoint [%05xh]", loc); -} - #define PUSH(x) { \ MM_PUT_BYTE(SP, (x) >> 8); \ MM_PUT_BYTE(SP, x); \ } #define CHECK_BREAK_BYTE(a) \ - if (sim_brk_summ && sim_brk_test((a) & 0xffff, SWMASK('M'))) { \ - reason = STOP_MEM; \ - prepareMemoryAccessMessage((a) & 0xffff); \ - goto end_decode; \ + if (sim_brk_summ) { \ + if (sim_brk_test((a) & 0xffff, SWMASK('M'))) { \ + reason = STOP_MEM; \ + prepareMemoryAccessMessage((a) & 0xffff); \ + goto end_decode; \ + } \ + sim_brk_pend[0] = FALSE; \ } #define CHECK_BREAK_TWO_BYTES_EXTENDED(a1, a2, iCode) \ if (sim_brk_summ) { \ - br1 = sim_brk_lookup((a1) & 0xffff, SWMASK('M')); \ - br2 = br1 ? FALSE : sim_brk_lookup((a2) & 0xffff, SWMASK('M'));\ - if ((br1 == MASK_BRK) || (br2 == MASK_BRK)) { \ - sim_brk_pend[0] = FALSE; \ - } \ - else if (br1 || br2) { \ + int32 brl = sim_brk_lookup((a1) & 0xffff, SWMASK('M')); \ + if ((brl == TRUE) || (brl == FALSE) && (sim_brk_lookup((a2) \ + & 0xffff, SWMASK('M')) == TRUE)) { \ reason = STOP_MEM; \ - if (br1) { \ - prepareMemoryAccessMessage((a1) & 0xffff); \ - } \ - else { \ - prepareMemoryAccessMessage((a2) & 0xffff); \ - } \ + prepareMemoryAccessMessage((brl ? (a1):(a2)) & 0xffff); \ iCode; \ goto end_decode; \ } \ - else { \ - sim_brk_pend[0] = FALSE; \ - } \ + sim_brk_pend[0] = FALSE; \ } #define CHECK_BREAK_TWO_BYTES(a1, a2) CHECK_BREAK_TWO_BYTES_EXTENDED(a1, a2,;) @@ -1908,7 +1898,7 @@ static t_stat sim_instr_mmu (void) { register uint32 tStates; uint32 tStatesInSlice; /* number of t-states in 10 mSec time-slice */ uint32 startTime, now; - int32 br1, br2, tStateModifier = FALSE; + int32 tStateModifier = FALSE; switch_cpu_now = TRUE; /* hharte */ @@ -1991,12 +1981,13 @@ static t_stat sim_instr_mmu (void) { } if (sim_brk_summ) { - if (sim_brk_lookup(PC, SWMASK('E')) == TRUE) { /* breakpoint? */ + if (sim_brk_test(PC, (2u << SIM_BKPT_V_SPC) | SWMASK('E'))) { /* breakpoint? */ reason = STOP_IBKPT; /* stop simulation */ break; } if (sim_brk_test(GetBYTE(PC), (1u << SIM_BKPT_V_SPC) | SWMASK('I'))) { /* instruction breakpoint? */ - reason = STOP_IBKPT; /* stop simulation */ + reason = STOP_INSTR; /* stop simulation */ + prepareInstructionMessage(PC, GetBYTE(PC)); break; } } @@ -3826,7 +3817,7 @@ static t_stat sim_instr_mmu (void) { case 0xdd: /* DD prefix */ CHECK_CPU_8080; - switch (op = RAM_PP(PC)) { + switch (RAM_PP(PC)) { case 0x09: /* ADD IX,BC */ tStates += 15; @@ -4712,7 +4703,7 @@ static t_stat sim_instr_mmu (void) { case 0xed: /* ED prefix */ CHECK_CPU_8080; - switch (op = RAM_PP(PC)) { + switch (RAM_PP(PC)) { case 0x40: /* IN B,(C) */ tStates += 12; @@ -5205,7 +5196,6 @@ static t_stat sim_instr_mmu (void) { case 0xb0: /* LDIR */ tStates -= 5; - acu = HIGH_REGISTER(AF); BC &= ADDRMASK; if (BC == 0) BC = 0x10000; @@ -5456,7 +5446,7 @@ static t_stat sim_instr_mmu (void) { case 0xfd: /* FD prefix */ CHECK_CPU_8080; - switch (op = RAM_PP(PC)) { + switch (RAM_PP(PC)) { case 0x09: /* ADD IY,BC */ tStates += 15; @@ -6388,10 +6378,10 @@ static char *ramTypeToString[] = { "AZ80", "HRAM", "VRAM", "CRAM" }; static t_stat chip_show(FILE *st, UNIT *uptr, int32 val, void *desc) { fprintf(st, cpu_unit.flags & UNIT_CPU_OPSTOP ? "ITRAP, " : "NOITRAP, "); if (chiptype <= MAX_CHIP_TYPE) - fprintf(st, chipTypeToString[chiptype]); + fprintf(st, "%s", chipTypeToString[chiptype]); fprintf(st, ", "); if (ramtype <= MAX_RAM_TYPE) - fprintf(st, ramTypeToString[ramtype]); + fprintf(st, "%s", ramTypeToString[ramtype]); return SCPE_OK; } @@ -6603,8 +6593,8 @@ static void cpu_set_chiptype_short(int32 value, uint32 need_cpu_clear) { extern REG *sim_PC; if ((chiptype == value) || (chiptype > MAX_CHIP_TYPE)) return; /* nothing to do */ - if ((chiptype == CHIP_TYPE_8080) && (value == CHIP_TYPE_Z80) || - (chiptype == CHIP_TYPE_Z80) && (value == CHIP_TYPE_8080)) { + if (((chiptype == CHIP_TYPE_8080) && (value == CHIP_TYPE_Z80)) || + ((chiptype == CHIP_TYPE_Z80) && (value == CHIP_TYPE_8080))) { chiptype = value; return; } @@ -6783,7 +6773,7 @@ static t_stat cpu_set_memory(UNIT *uptr, int32 value, char *cptr, void *desc) { return SCPE_ARG; result = sscanf(cptr, "%i%n", &size, &i); if ((result == 1) && (cptr[i] == 'K') && ((cptr[i + 1] == 0) || - (cptr[i + 1] == 'B') && (cptr[i + 2] == 0))) + ((cptr[i + 1] == 'B') && (cptr[i + 2] == 0)))) return set_size(size); return SCPE_ARG; } @@ -6791,6 +6781,7 @@ static t_stat cpu_set_memory(UNIT *uptr, int32 value, char *cptr, void *desc) { /* AltairZ80 Simulator initialization */ void altairz80_init(void) { cpu_clear(); +/* altairz80_print_tables(); */ } void (*sim_vm_init) (void) = &altairz80_init; diff --git a/AltairZ80/altairZ80_defs.h b/AltairZ80/altairZ80_defs.h index 2059407d..c16f7121 100644 --- a/AltairZ80/altairZ80_defs.h +++ b/AltairZ80/altairZ80_defs.h @@ -1,6 +1,6 @@ /* altairz80_defs.h: MITS Altair simulator definitions - Copyright (c) 2002-2008, Peter Schorn + Copyright (c) 2002-2010, Peter Schorn Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -57,7 +57,8 @@ #define STOP_HALT 0 /* HALT */ #define STOP_IBKPT 1 /* breakpoint (program counter) */ #define STOP_MEM 2 /* breakpoint (memory access) */ -#define STOP_OPCODE 3 /* invalid operation encountered (8080, Z80, 8086) */ +#define STOP_INSTR 3 /* breakpoint (instruction access) */ +#define STOP_OPCODE 4 /* invalid operation encountered (8080, Z80, 8086) */ #define UNIT_CPU_V_OPSTOP (UNIT_V_UF+0) /* stop on invalid operation */ #define UNIT_CPU_OPSTOP (1 << UNIT_CPU_V_OPSTOP) @@ -74,8 +75,11 @@ #define UNIT_CPU_V_SWITCHER (UNIT_V_UF+6) /* switcher 8086 <--> 8080/Z80 enabled */ #define UNIT_CPU_SWITCHER (1 << UNIT_CPU_V_SWITCHER) -#define UNIX_PLATFORM (defined (__linux) || defined(__NetBSD__) \ - || defined (__OpenBSD__) || defined (__FreeBSD__) || defined (__APPLE__)) +#if defined (__linux) || defined(__NetBSD__) || defined (__OpenBSD__) || defined (__FreeBSD__) || defined (__APPLE__) +#define UNIX_PLATFORM 1 +#else +#define UNIX_PLATFORM 0 +#endif #define ADDRESS_FORMAT "[0x%05x]" @@ -86,7 +90,7 @@ #define NLP "\n" #endif -#if defined (__MWERKS__) && defined (macintosh) +#if (defined (__MWERKS__) && defined (macintosh)) || defined(__DECC) #define __FUNCTION__ __FILE__ #endif diff --git a/AltairZ80/altairZ80_dsk.c b/AltairZ80/altairZ80_dsk.c index 6944fd96..070b8b6f 100644 --- a/AltairZ80/altairZ80_dsk.c +++ b/AltairZ80/altairZ80_dsk.c @@ -1,6 +1,6 @@ /* altairz80_dsk.c: MITS Altair 88-DISK Simulator - Copyright (c) 2002-2008, Peter Schorn + Copyright (c) 2002-2010, Peter Schorn Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -319,7 +319,7 @@ static t_stat dsk_boot(int32 unitno, DEVICE *dptr) { } static int32 dskseek(const UNIT *xptr) { - return fseek(xptr -> fileref, DSK_TRACSIZE * current_track[current_disk] + + return sim_fseek(xptr -> fileref, DSK_TRACSIZE * current_track[current_disk] + DSK_SECTSIZE * current_sector[current_disk], SEEK_SET); } @@ -338,9 +338,9 @@ static void writebuf(void) { printf("DSK%i: " ADDRESS_FORMAT " fseek failed D%d T%d S%d" NLP, current_disk, PCX, current_disk, current_track[current_disk], current_sector[current_disk]); } - rtn = fwrite(dskbuf, DSK_SECTSIZE, 1, uptr -> fileref); - if (rtn != 1) { - printf("DSK%i: " ADDRESS_FORMAT " fwrite failed T%d S%d Return=%d" NLP, current_disk, + rtn = sim_fwrite(dskbuf, 1, DSK_SECTSIZE, uptr -> fileref); + if (rtn != DSK_SECTSIZE) { + printf("DSK%i: " ADDRESS_FORMAT " sim_fwrite failed T%d S%d Return=%d" NLP, current_disk, PCX, current_track[current_disk], current_sector[current_disk], rtn); } } @@ -507,7 +507,7 @@ int32 dsk11(const int32 port, const int32 io, const int32 data) { /* Disk Data In/Out */ int32 dsk12(const int32 port, const int32 io, const int32 data) { - int32 i; + int32 i, rtn; UNIT *uptr; if (current_disk >= NUM_OF_DSK) { @@ -530,8 +530,21 @@ int32 dsk12(const int32 port, const int32 io, const int32 data) { PCX, current_disk, current_track[current_disk], current_sector[current_disk])); for (i = 0; i < DSK_SECTSIZE; i++) dskbuf[i] = 0; - dskseek(uptr); - fread(dskbuf, DSK_SECTSIZE, 1, uptr -> fileref); + if (dskseek(uptr)) { + if ((dsk_dev.dctrl & VERBOSE_MSG) && (warnDSK12 < warnLevelDSK)) { + warnDSK12++; + printf("DSK%i: " ADDRESS_FORMAT " fseek error D%d T%d S%d" NLP, current_disk, + PCX, current_disk, current_track[current_disk], current_sector[current_disk]); + } + } + rtn = sim_fread(dskbuf, 1, DSK_SECTSIZE, uptr -> fileref); + if (rtn != DSK_SECTSIZE) { + if ((dsk_dev.dctrl & VERBOSE_MSG) && (warnDSK12 < warnLevelDSK)) { + warnDSK12++; + printf("DSK%i: " ADDRESS_FORMAT " sim_fread error D%d T%d S%d" NLP, current_disk, + PCX, current_disk, current_track[current_disk], current_sector[current_disk]); + } + } current_byte[current_disk] = 0; } return dskbuf[current_byte[current_disk]++] & 0xff; diff --git a/AltairZ80/altairZ80_sio.c b/AltairZ80/altairZ80_sio.c index 20c956fe..1ae1b935 100644 --- a/AltairZ80/altairZ80_sio.c +++ b/AltairZ80/altairZ80_sio.c @@ -1,6 +1,6 @@ /* altairz80_sio.c: MITS Altair serial I/O card - Copyright (c) 2002-2008, Peter Schorn + Copyright (c) 2002-2010, Peter Schorn Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -105,8 +105,8 @@ #define PORT_TABLE_SIZE 256 /* size of port mapping table */ #define SLEEP_ALLOWED_START_DEFAULT 100 /* default initial value for sleepAllowedCounter*/ +#define DEFAULT_TIMER_DELTA 100 /* default value for timer delta in ms */ -static t_stat sio_set_verbose (UNIT *uptr, int32 value, char *cptr, void *desc); static t_stat simh_dev_set_timeron (UNIT *uptr, int32 value, char *cptr, void *desc); static t_stat simh_dev_set_timeroff (UNIT *uptr, int32 value, char *cptr, void *desc); static t_stat sio_reset(DEVICE *dptr); @@ -154,6 +154,19 @@ extern UNIT cpu_unit; extern volatile int32 stop_cpu; extern int32 sim_interval; +#define TRACE_PRINT(device, level, args) if (device.dctrl & level) { \ + printf args; \ + } + +/* Debug Flags */ +static DEBTAB generic_dt[] = { + { "IN", IN_MSG }, + { "OUT", OUT_MSG }, + { "CMD", CMD_MSG }, + { "VERBOSE", VERBOSE_MSG }, + { NULL, 0 } +}; + /* SIMH pseudo device status registers */ /* ZSDOS clock definitions */ static time_t ClockZSDOSDelta = 0; /* delta between real clock and Altair clock */ @@ -168,12 +181,12 @@ static int32 setClockCPM3Adr = 0; /* address in M of 5 byte parame static int32 getClockCPM3Pos = 0; /* determines state for sending clock information */ static int32 daysCPM3SinceOrg = 0; /* days since 1 Jan 1978 */ -/* interrupt related */ +/* timer interrupt related */ static uint32 timeOfNextInterrupt; /* time when next interrupt is scheduled */ int32 timerInterrupt = FALSE; /* timer interrupt pending */ int32 timerInterruptHandler = 0x0fc00; /* default address of interrupt handling routine */ static int32 setTimerInterruptAdrPos= 0; /* determines state for receiving timerInterruptHandler */ -static int32 timerDelta = 100; /* interrupt every 100 ms */ +static int32 timerDelta = DEFAULT_TIMER_DELTA; /* interrupt every 100 ms */ static int32 setTimerDeltaPos = 0; /* determines state for receiving timerDelta */ /* stop watch and timer related */ @@ -270,7 +283,7 @@ static MTAB sio_mod[] = { { UNIT_SIO_BS, 0, "BS", "BS", NULL }, /* map delete to backspace */ { UNIT_SIO_BS, UNIT_SIO_BS, "DEL", "DEL", NULL }, /* map backspace to delete */ { UNIT_SIO_VERBOSE, 0, "QUIET", "QUIET", NULL }, /* quiet, no error messages */ - { UNIT_SIO_VERBOSE, UNIT_SIO_VERBOSE, "VERBOSE", "VERBOSE", &sio_set_verbose }, + { UNIT_SIO_VERBOSE, UNIT_SIO_VERBOSE, "VERBOSE", "VERBOSE", NULL }, /* verbose, display warning messages */ { UNIT_SIO_MAP, 0, "NOMAP", "NOMAP", NULL }, /* disable character mapping */ { UNIT_SIO_MAP, UNIT_SIO_MAP, "MAP", "MAP", NULL }, /* enable all character mapping */ @@ -291,12 +304,16 @@ DEVICE sio_dev = { 1, 10, 31, 1, 8, 8, NULL, NULL, &sio_reset, NULL, &sio_attach, &sio_detach, - NULL, 0, 0, - NULL, NULL, "Serial Input Output SIO" + NULL, DEV_DEBUG, 0, + generic_dt, NULL, "Serial Input Output SIO" +}; + +static MTAB ptpptr_mod[] = { + { 0 } }; static UNIT ptr_unit = { - UDATA (NULL, UNIT_SEQ | UNIT_ATTABLE | UNIT_ROABLE, 0) + UDATA (NULL, UNIT_ATTABLE | UNIT_ROABLE, 0) }; static REG ptr_reg[] = { @@ -305,25 +322,25 @@ static REG ptr_reg[] = { }; DEVICE ptr_dev = { - "PTR", &ptr_unit, ptr_reg, NULL, + "PTR", &ptr_unit, ptr_reg, ptpptr_mod, 1, 10, 31, 1, 8, 8, NULL, NULL, &ptr_reset, NULL, NULL, NULL, - NULL, DEV_DISABLE, 0, - NULL, NULL, "Paper Tape Reader PTR" + NULL, (DEV_DISABLE | DEV_DEBUG), 0, + generic_dt, NULL, "Paper Tape Reader PTR" }; static UNIT ptp_unit = { - UDATA (NULL, UNIT_SEQ + UNIT_ATTABLE, 0) + UDATA (NULL, UNIT_ATTABLE, 0) }; DEVICE ptp_dev = { - "PTP", &ptp_unit, NULL, NULL, + "PTP", &ptp_unit, NULL, ptpptr_mod, 1, 10, 31, 1, 8, 8, NULL, NULL, &ptp_reset, NULL, NULL, NULL, - NULL, DEV_DISABLE, 0, - NULL, NULL, "Paper Tape Puncher PTP" + NULL, (DEV_DISABLE | DEV_DEBUG), 0, + generic_dt, NULL, "Paper Tape Puncher PTP" }; /* Synthetic device SIMH for communication @@ -373,37 +390,19 @@ static MTAB simh_mod[] = { { 0 } }; -#define TRACE_PRINT(level, args) if (simh_device.dctrl & level) { \ - printf args; \ - } - -/* Debug Flags */ -static DEBTAB simh_dt[] = { - { "IN", IN_MSG }, - { "OUT", OUT_MSG }, - { "CMD", CMD_MSG }, - { "VERBOSE", VERBOSE_MSG }, - { NULL, 0 } -}; - DEVICE simh_device = { "SIMH", &simh_unit, simh_reg, simh_mod, 1, 10, 31, 1, 16, 4, NULL, NULL, &simh_dev_reset, NULL, NULL, NULL, NULL, (DEV_DISABLE | DEV_DEBUG), 0, - simh_dt, NULL, "Pseudo Device SIMH" + generic_dt, NULL, "Pseudo Device SIMH" }; static void resetSIOWarningFlags(void) { warnUnattachedPTP = warnUnattachedPTR = warnPTREOF = warnUnassignedPort = 0; } -static t_stat sio_set_verbose(UNIT *uptr, int32 value, char *cptr, void *desc) { - resetSIOWarningFlags(); - return SCPE_OK; -} - static t_stat sio_attach(UNIT *uptr, char *cptr) { t_stat r = SCPE_IERR; sio_unit.u3 = FALSE; /* no character in terminal input buffer */ @@ -439,6 +438,7 @@ static void pollConnection(void) { /* reset routines */ static t_stat sio_reset(DEVICE *dptr) { int32 i; + TRACE_PRINT(sio_dev, VERBOSE_MSG, ("SIO: " ADDRESS_FORMAT " Reset" NLP, PCX)); sio_unit.u3 = FALSE; /* no character in terminal input buffer */ resetSIOWarningFlags(); if (sio_unit.u4) { /* is terminal input attached to a file? */ @@ -454,6 +454,7 @@ static t_stat sio_reset(DEVICE *dptr) { } static t_stat ptr_reset(DEVICE *dptr) { + TRACE_PRINT(ptr_dev, VERBOSE_MSG, ("PTR: " ADDRESS_FORMAT " Reset" NLP, PCX)); resetSIOWarningFlags(); ptr_unit.u3 = FALSE; /* End Of File not yet reached */ if (ptr_unit.flags & UNIT_ATT) /* attached? */ @@ -464,6 +465,7 @@ static t_stat ptr_reset(DEVICE *dptr) { } static t_stat ptp_reset(DEVICE *dptr) { + TRACE_PRINT(ptp_dev, VERBOSE_MSG, ("PTP: " ADDRESS_FORMAT " Reset" NLP, PCX)); resetSIOWarningFlags(); sim_map_resource(0x12, 1, RESOURCE_TYPE_IO, &sio1s, dptr->flags & DEV_DIS); sim_map_resource(0x13, 1, RESOURCE_TYPE_IO, &sio1d, dptr->flags & DEV_DIS); @@ -625,17 +627,18 @@ static void voidSleep(void) { } /* generic status port for keyboard input / terminal output */ -int32 sio0s(const int32 port, const int32 io, const int32 data) { +static int32 sio0sCore(const int32 port, const int32 io, const int32 data) { int32 ch, result; SIO_PORT_INFO spi = lookupPortInfo(port, &ch); assert(spi.port == port); pollConnection(); if (io == 0) { /* IN */ - if (sio_unit.u4) /* attached to a file? */ + if (sio_unit.u4) { /* attached to a file? */ if (sio_unit.u5) /* EOF reached? */ sio_detach(&sio_unit); /* detach file and switch to keyboard input */ else return spi.sio_can_read | spi.sio_can_write; + } if (sio_unit.flags & UNIT_ATT) { /* attached to a port? */ if (tmxr_rqln(&TerminalLines[spi.terminalLine])) result = spi.sio_can_read; @@ -664,13 +667,25 @@ int32 sio0s(const int32 port, const int32 io, const int32 data) { checkSleep(); return spi.sio_can_write | spi.sio_cannot_read; } /* OUT follows, no fall-through from IN */ - if (spi.hasReset && (data == spi.sio_reset)) /* reset command */ + if (spi.hasReset && (data == spi.sio_reset)) { /* reset command */ sio_unit.u3 = FALSE; /* indicate that no character is available */ + TRACE_PRINT(sio_dev, CMD_MSG, + ("SIO: " ADDRESS_FORMAT " Command OUT(0x%03x) = 0x%02x" NLP, PCX, port, data)); + } return 0x00; /* ignored since OUT */ } +int32 sio0s(const int32 port, const int32 io, const int32 data) { + const int32 result = sio0sCore(port, io, data); + if ((io == 0) && (sio_dev.dctrl & IN_MSG)) + printf("SIO_S: " ADDRESS_FORMAT " IN(0x%03x) = 0x%02x" NLP, PCX, port, result); + else if ((io) && (sio_dev.dctrl & OUT_MSG)) + printf("SIO_S: " ADDRESS_FORMAT " OUT(0x%03x) = 0x%02x" NLP, PCX, port, data); + return result; +} + /* generic data port for keyboard input / terminal output */ -int32 sio0d(const int32 port, const int32 io, const int32 data) { +static int32 sio0dCore(const int32 port, const int32 io, const int32 data) { int32 ch; SIO_PORT_INFO spi = lookupPortInfo(port, &ch); assert(spi.port == port); @@ -705,14 +720,23 @@ int32 sio0d(const int32 port, const int32 io, const int32 data) { return 0x00; /* ignored since OUT */ } +int32 sio0d(const int32 port, const int32 io, const int32 data) { + const int32 result = sio0dCore(port, io, data); + if ((io == 0) && (sio_dev.dctrl & IN_MSG)) + printf("SIO_D: " ADDRESS_FORMAT " IN(0x%03x) = 0x%02x" NLP, PCX, port, result); + else if ((io) && (sio_dev.dctrl & OUT_MSG)) + printf("SIO_D: " ADDRESS_FORMAT " OUT(0x%03x) = 0x%02x" NLP, PCX, port, data); + return result; +} + /* PTR/PTP status port */ -int32 sio1s(const int32 port, const int32 io, const int32 data) { +static int32 sio1sCore(const int32 port, const int32 io, const int32 data) { if (io == 0) { /* IN */ /* reset I bit iff PTR unit not attached or no more data available. O bit is always set since write always possible. */ if ((ptr_unit.flags & UNIT_ATT) == 0) { /* PTR is not attached */ - if ((sio_unit.flags & UNIT_SIO_VERBOSE) && (warnUnattachedPTR < warnLevelSIO)) { + if ((ptr_dev.dctrl & VERBOSE_MSG) && (warnUnattachedPTR < warnLevelSIO)) { warnUnattachedPTR++; /*06*/ printf("PTR: " ADDRESS_FORMAT " Attempt to test status of unattached PTR[0x%02x]. 0x02 returned." NLP, PCX, port); } @@ -722,24 +746,36 @@ int32 sio1s(const int32 port, const int32 io, const int32 data) { (SIO_CAN_WRITE and SIO_CAN_READ) */ return ptr_unit.u3 ? SIO_CAN_WRITE : (SIO_CAN_READ | SIO_CAN_WRITE); } /* OUT follows */ - if (data == SIO_RESET) + if (data == SIO_RESET) { ptr_unit.u3 = FALSE; /* reset EOF indicator */ + TRACE_PRINT(ptr_dev, CMD_MSG, + ("PTR: " ADDRESS_FORMAT " Command OUT(0x%03x) = 0x%02x" NLP, PCX, port, data)); + } return 0x00; /* ignored since OUT */ } +int32 sio1s(const int32 port, const int32 io, const int32 data) { + const int32 result = sio1sCore(port, io, data); + if ((io == 0) && ((ptr_dev.dctrl & IN_MSG) || (ptp_dev.dctrl & IN_MSG))) + printf("PTP/PTR_S: " ADDRESS_FORMAT " IN(0x%02x) = 0x%02x" NLP, PCX, port, result); + else if ((io) && ((ptr_dev.dctrl & OUT_MSG) || (ptp_dev.dctrl & OUT_MSG))) + printf("PTP/PTR_S: " ADDRESS_FORMAT " OUT(0x%02x) = 0x%02x" NLP, PCX, port, data); + return result; +} + /* PTR/PTP data port */ -int32 sio1d(const int32 port, const int32 io, const int32 data) { +static int32 sio1dCore(const int32 port, const int32 io, const int32 data) { int32 ch; if (io == 0) { /* IN */ if (ptr_unit.u3) { /* EOF reached, no more data available */ - if ((sio_unit.flags & UNIT_SIO_VERBOSE) && (warnPTREOF < warnLevelSIO)) { + if ((ptr_dev.dctrl & VERBOSE_MSG) && (warnPTREOF < warnLevelSIO)) { warnPTREOF++; /*07*/ printf("PTR: " ADDRESS_FORMAT " PTR[0x%02x] attempted to read past EOF. 0x00 returned." NLP, PCX, port); } return 0x00; } if ((ptr_unit.flags & UNIT_ATT) == 0) { /* not attached */ - if ((sio_unit.flags & UNIT_SIO_VERBOSE) && (warnUnattachedPTR < warnLevelSIO)) { + if ((ptr_dev.dctrl & VERBOSE_MSG) && (warnUnattachedPTR < warnLevelSIO)) { warnUnattachedPTR++; /*08*/ printf("PTR: " ADDRESS_FORMAT " Attempt to read from unattached PTR[0x%02x]. 0x00 returned." NLP, PCX, port); } @@ -754,13 +790,22 @@ int32 sio1d(const int32 port, const int32 io, const int32 data) { if (ptp_unit.flags & UNIT_ATT) /* unit must be attached */ putc(data, ptp_unit.fileref); /* else ignore data */ - else if ((sio_unit.flags & UNIT_SIO_VERBOSE) && (warnUnattachedPTP < warnLevelSIO)) { + else if ((ptp_dev.dctrl & VERBOSE_MSG) && (warnUnattachedPTP < warnLevelSIO)) { warnUnattachedPTP++; /*09*/ printf("PTP: " ADDRESS_FORMAT " Attempt to output '0x%02x' to unattached PTP[0x%02x] - ignored." NLP, PCX, data, port); } return 0x00; /* ignored since OUT */ } +int32 sio1d(const int32 port, const int32 io, const int32 data) { + const int32 result = sio1dCore(port, io, data); + if ((io == 0) && ((ptr_dev.dctrl & IN_MSG) || (ptp_dev.dctrl & IN_MSG))) + printf("PTP/PTR_D: " ADDRESS_FORMAT " IN(0x%02x) = 0x%02x" NLP, PCX, port, result); + else if ((io) && ((ptr_dev.dctrl & OUT_MSG) || (ptp_dev.dctrl & OUT_MSG))) + printf("PTP/PTR_D: " ADDRESS_FORMAT " OUT(0x%02x) = 0x%02x" NLP, PCX, port, data); + return result; +} + static t_stat toBool(char tf, int *result) { if (tf == 'T') { *result = TRUE; @@ -856,8 +901,8 @@ static t_stat sio_dev_set_port(UNIT *uptr, int32 value, char *cptr, void *desc) printf("\n"); port_table[position] = sip; sim_map_resource(sip.port, 1, RESOURCE_TYPE_IO, (sip.hasOUT || - (sip.sio_can_read == 0) && (sip.sio_cannot_read == 0) && - (sip.sio_can_write == 0)) ? &sio0d : &sio0s, FALSE); + ((sip.sio_can_read == 0) && (sip.sio_cannot_read == 0) && + (sip.sio_can_write == 0))) ? &sio0d : &sio0s, FALSE); return SCPE_OK; } @@ -888,9 +933,8 @@ static t_stat sio_dev_set_interruptoff(UNIT *uptr, int32 value, char *cptr, void } static t_stat sio_svc(UNIT *uptr) { - if (sio0s(0, 0, 0) & KBD_HAS_CHAR) { + if (sio0s(0, 0, 0) & KBD_HAS_CHAR) keyboardInterrupt = TRUE; - } if (sio_unit.flags & UNIT_SIO_INTERRUPT) sim_activate(&sio_unit, sio_unit.wait); /* activate unit */ return SCPE_OK; @@ -909,12 +953,10 @@ static void mapAltairPorts(void) { int32 nulldev(const int32 port, const int32 io, const int32 data) { if ((sio_unit.flags & UNIT_SIO_VERBOSE) && (warnUnassignedPort < warnLevelSIO)) { warnUnassignedPort++; - if (io == 0) { + if (io == 0) printf("SIO: " ADDRESS_FORMAT " Attempt to input from unassigned port 0x%04x - ignored." NLP, PCX, port); - } - else { + else printf("SIO: " ADDRESS_FORMAT " Attempt to output 0x%02x to unassigned port 0x%04x - ignored." NLP, PCX, data, port); - } } return io == 0 ? 0xff : 0; } @@ -1063,7 +1105,7 @@ static t_stat simh_dev_reset(DEVICE *dptr) { } static void warnNoRealTimeClock(void) { - TRACE_PRINT(VERBOSE_MSG, + TRACE_PRINT(simh_device, VERBOSE_MSG, ("SIMH: " ADDRESS_FORMAT " Sorry - no real time clock available." NLP, PCX)); } @@ -1078,20 +1120,32 @@ static t_stat simh_dev_set_timeron(UNIT *uptr, int32 value, char *cptr, void *de static t_stat simh_dev_set_timeroff(UNIT *uptr, int32 value, char *cptr, void *desc) { timerInterrupt = FALSE; - sim_cancel(&simh_unit); + if (rtc_avail) + sim_cancel(&simh_unit); return SCPE_OK; } static t_stat simh_svc(UNIT *uptr) { - uint32 n = sim_os_msec(); - if (n >= timeOfNextInterrupt) { + uint32 now = sim_os_msec(); + if (now >= timeOfNextInterrupt) { timerInterrupt = TRUE; - timeOfNextInterrupt += timerDelta; - if (n >= timeOfNextInterrupt) /* time of next interrupt is not in the future */ - timeOfNextInterrupt = n + timerDelta; /* make sure it is in the future! */ + if (timerDelta == 0) + timeOfNextInterrupt = now + DEFAULT_TIMER_DELTA; + else { + uint32 newTimeOfNextInterrupt = now + timerDelta - (now - timeOfNextInterrupt) % timerDelta; + if (newTimeOfNextInterrupt != timeOfNextInterrupt + timerDelta) { + TRACE_PRINT(simh_device, VERBOSE_MSG, + ("SIMH: " ADDRESS_FORMAT " Timer interrupts skipped %i. Delta %i. Expect %i. Got %i." NLP, PCX, + (newTimeOfNextInterrupt - timeOfNextInterrupt) / timerDelta - 1, + timerDelta, + timeOfNextInterrupt + timerDelta - now, newTimeOfNextInterrupt - now)); + } + timeOfNextInterrupt = newTimeOfNextInterrupt; + } } + /* post condition: now < timeOfNextInterrupt */ if (simh_unit.flags & UNIT_SIMH_TIMERON) - sim_activate(&simh_unit, simh_unit.wait); /* activate unit */ + sim_activate(&simh_unit, simh_unit.wait); /* activate unit */ return SCPE_OK; } @@ -1175,7 +1229,7 @@ static int32 simh_in(const int32 port) { case getHostFilenamesCmd: #if UNIX_PLATFORM - if (globValid) + if (globValid) { if (globPosNameList < globS.gl_pathc) { if (!(result = globS.gl_pathv[globPosNameList][globPosName++])) { globPosNameList++; @@ -1187,13 +1241,13 @@ static int32 simh_in(const int32 port) { lastCommand = 0; globfree(&globS); } + } #elif defined (_WIN32) if (globValid) if (globFinished) globValid = FALSE; - else if (firstPathCharacter <= lastPathSeparator) { + else if (firstPathCharacter <= lastPathSeparator) result = cpmCommandLine[firstPathCharacter++]; - } else if (!(result = FindFileData.cFileName[globPosName++])) { globPosName = firstPathCharacter = 0; if (!FindNextFile(hFind, &FindFileData)) { @@ -1296,7 +1350,7 @@ static int32 simh_in(const int32 port) { result = getBankSelect(); else { result = 0; - TRACE_PRINT(VERBOSE_MSG, + TRACE_PRINT(simh_device, VERBOSE_MSG, ("SIMH: " ADDRESS_FORMAT " Get selected bank ignored for non-banked memory." NLP, PCX)); } lastCommand = 0; @@ -1340,7 +1394,7 @@ static int32 simh_in(const int32 port) { break; default: - TRACE_PRINT(VERBOSE_MSG, + TRACE_PRINT(simh_device, VERBOSE_MSG, ("SIMH: " ADDRESS_FORMAT " Undefined IN from SIMH pseudo device on port %03xh ignored." NLP, PCX, port)); result = lastCommand = 0; @@ -1349,6 +1403,10 @@ static int32 simh_in(const int32 port) { } void do_SIMH_sleep(void) { + /* Do not sleep when timer interrupts are pending or are about to be created. + Otherwise there is the possibility that such interrupts are skipped. */ + if ((simh_unit.flags & UNIT_SIMH_TIMERON) && rtc_avail && (sim_os_msec() + 1 >= timeOfNextInterrupt)) + return; #if defined (_WIN32) if ((SIMHSleep / 1000) && !sio_unit.u4) /* time to sleep and SIO not attached to a file */ Sleep(SIMHSleep / 1000); @@ -1390,7 +1448,7 @@ static int32 simh_out(const int32 port, const int32 data) { if (cpu_unit.flags & UNIT_CPU_BANKED) setBankSelect(data & BANKMASK); else { - TRACE_PRINT(VERBOSE_MSG, + TRACE_PRINT(simh_device, VERBOSE_MSG, ("SIMH: " ADDRESS_FORMAT " Set selected bank to %i ignored for non-banked memory." NLP, PCX, data & 3)); } @@ -1405,6 +1463,12 @@ static int32 simh_out(const int32 port, const int32 data) { else { timerDelta |= (data << 8); setTimerDeltaPos = lastCommand = 0; + if (timerDelta == 0) { + timerDelta = DEFAULT_TIMER_DELTA; + TRACE_PRINT(simh_device, VERBOSE_MSG, + ("SIMH: " ADDRESS_FORMAT " Timer delta set to 0 ms ignored. Using %i ms instead." + NLP, PCX, DEFAULT_TIMER_DELTA)); + } } break; @@ -1420,7 +1484,7 @@ static int32 simh_out(const int32 port, const int32 data) { break; default: - TRACE_PRINT(CMD_MSG, + TRACE_PRINT(simh_device, CMD_MSG, ("SIMH: " ADDRESS_FORMAT " CMD(0x%02x) <- %i (0x%02x, '%s')" NLP, PCX, port, data, data, (0 <= data) && (data <= lastSIMHCommand) ? cmdNames[data] : "Unknown command")); @@ -1435,7 +1499,7 @@ static int32 simh_out(const int32 port, const int32 data) { createCPMCommandLine(); globError = glob(cpmCommandLine, GLOB_ERR, NULL, &globS); if (globError) { - TRACE_PRINT(VERBOSE_MSG, + TRACE_PRINT(simh_device, VERBOSE_MSG, ("SIMH: " ADDRESS_FORMAT " Cannot expand '%s'. Error is %i." NLP, PCX, cpmCommandLine, globError)); globfree(&globS); @@ -1451,7 +1515,7 @@ static int32 simh_out(const int32 port, const int32 data) { setLastPathSeparator(); hFind = FindFirstFile(cpmCommandLine, &FindFileData); if (hFind == INVALID_HANDLE_VALUE) { - TRACE_PRINT(VERBOSE_MSG, + TRACE_PRINT(simh_device, VERBOSE_MSG, ("SIMH: " ADDRESS_FORMAT " Cannot expand '%s'. Error is %lu." NLP, PCX, cpmCommandLine, GetLastError())); globValid = FALSE; @@ -1465,21 +1529,18 @@ static int32 simh_out(const int32 port, const int32 data) { break; case printTimeCmd: /* print time */ - if (rtc_avail) { + if (rtc_avail) printf("SIMH: " ADDRESS_FORMAT " Current time in milliseconds = %d." NLP, PCX, sim_os_msec()); - } - else { + else warnNoRealTimeClock(); - } break; case startTimerCmd: /* create a new timer on top of stack */ if (rtc_avail) if (markTimeSP < TIMER_STACK_LIMIT) markTime[markTimeSP++] = sim_os_msec(); - else { + else printf("SIMH: " ADDRESS_FORMAT " Timer stack overflow." NLP, PCX); - } else warnNoRealTimeClock(); break; @@ -1490,15 +1551,14 @@ static int32 simh_out(const int32 port, const int32 data) { uint32 delta = sim_os_msec() - markTime[--markTimeSP]; printf("SIMH: " ADDRESS_FORMAT " Timer stopped. Elapsed time in milliseconds = %d." NLP, PCX, delta); } - else { + else printf("SIMH: " ADDRESS_FORMAT " No timer active." NLP, PCX); - } else warnNoRealTimeClock(); break; case resetPTRCmd: /* reset ptr device */ - ptr_reset(NULL); + ptr_reset(&ptr_dev); break; case attachPTRCmd: /* attach ptr to the file with name at beginning of CP/M command line */ @@ -1569,9 +1629,8 @@ static int32 simh_out(const int32 port, const int32 data) { uint32 delta = sim_os_msec() - markTime[markTimeSP - 1]; printf("SIMH: " ADDRESS_FORMAT " Timer running. Elapsed in milliseconds = %d." NLP, PCX, delta); } - else { + else printf("SIMH: " ADDRESS_FORMAT " No timer active." NLP, PCX); - } else warnNoRealTimeClock(); break; @@ -1622,7 +1681,7 @@ static int32 simh_out(const int32 port, const int32 data) { break; default: - TRACE_PRINT(CMD_MSG, + TRACE_PRINT(simh_device, CMD_MSG, ("SIMH: " ADDRESS_FORMAT " Unknown command (%i) to SIMH pseudo device on port %03xh ignored." NLP, PCX, data, port)); } @@ -1635,13 +1694,13 @@ int32 simh_dev(const int32 port, const int32 io, const int32 data) { int32 result = 0; if (io == 0) { result = simh_in(port); - TRACE_PRINT(IN_MSG, + TRACE_PRINT(simh_device, IN_MSG, ("SIMH: " ADDRESS_FORMAT " IN(0x%02x) -> %i (0x%02x, '%c')" NLP, PCX, port, result, result, (32 <= (result & 0xff)) && ((result & 0xff) <= 127) ? (result & 0xff) : '?')); } else { - TRACE_PRINT(OUT_MSG, + TRACE_PRINT(simh_device, OUT_MSG, ("SIMH: " ADDRESS_FORMAT " OUT(0x%02x) <- %i (0x%02x, '%c')" NLP, PCX, port, data, data, (32 <= (data & 0xff)) && ((data & 0xff) <= 127) ? (data & 0xff) : '?')); simh_out(port, data); diff --git a/AltairZ80/altairZ80_sys.c b/AltairZ80/altairZ80_sys.c index 66534a9c..f02b826f 100644 --- a/AltairZ80/altairZ80_sys.c +++ b/AltairZ80/altairZ80_sys.c @@ -1,6 +1,6 @@ /* altairz80_sys.c: MITS Altair system interface - Copyright (c) 2002-2008, Peter Schorn + Copyright (c) 2002-2010, Peter Schorn Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -76,6 +76,8 @@ extern DEVICE fpc_dev; extern int32 chiptype; extern long disasm (unsigned char *data, char *output, int segsize, long offset); +void prepareMemoryAccessMessage(const t_addr loc); +void prepareInstructionMessage(const t_addr loc, const uint32 op); t_stat fprint_sym (FILE *of, t_addr addr, t_value *val, UNIT *uptr, int32 sw); t_stat parse_sym(char *cptr, t_addr addr, UNIT *uptr, t_value *val, int32 sw); @@ -123,11 +125,13 @@ DEVICE *sim_devices[] = { NULL }; -char memoryAccessMessage[80]; +static char memoryAccessMessage[256]; +static char instructionMessage[256]; const char *sim_stop_messages[] = { "HALT instruction", "Breakpoint", memoryAccessMessage, + instructionMessage, "Invalid Opcode" }; @@ -347,6 +351,15 @@ static char *const MnemonicsXCB[256] = { "SET 7,B", "SET 7,C", "SET 7,D", "SET 7,E", "SET 7,H", "SET 7,L", "SET 7,(I%@h)", "SET 7,A" /* f8-ff */ }; +void prepareMemoryAccessMessage(const t_addr loc) { + sprintf(memoryAccessMessage, "Memory access breakpoint [%05xh]", loc); +} + +void prepareInstructionMessage(const t_addr loc, const uint32 op) { + sprintf(instructionMessage, "Instruction \"%s\" breakpoint [%05xh]", chiptype == CHIP_TYPE_8080 ? Mnemonics8080[op & 0xff] : + (chiptype == CHIP_TYPE_Z80 ? MnemonicsZ80[op & 0xff] : "???"), loc); +} + /* Symbolic disassembler Inputs: @@ -504,7 +517,7 @@ static int32 checkbase(char ch, const char *numString) { static int32 numok(char ch, const char **numString, const int32 minvalue, const int32 maxvalue, const int32 requireSign, int32 *result) { int32 sign = 1, value = 0, base; - if (requireSign) + if (requireSign) { if (ch == '+') ch = *(*numString)++; else if (ch == '-') { @@ -513,6 +526,7 @@ static int32 numok(char ch, const char **numString, const int32 minvalue, } else return FALSE; + } if (!(base = checkbase(ch, *numString))) return FALSE; while (isxdigit(ch)) { diff --git a/AltairZ80/altairz80_cpu_nommu.c b/AltairZ80/altairz80_cpu_nommu.c index c952539c..fa1a9221 100644 --- a/AltairZ80/altairz80_cpu_nommu.c +++ b/AltairZ80/altairz80_cpu_nommu.c @@ -1,6 +1,6 @@ /* altairz80_cpu_opt.c: MITS Altair CPU (8080 and Z80) - Copyright (c) 2002-2008, Peter Schorn + Copyright (c) 2002-2010, Peter Schorn Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -2353,7 +2353,7 @@ t_stat sim_instr_nommu(void) { case 0xdd: /* DD prefix */ CHECK_CPU_8080; - switch (op = RAM_PP(PC)) { + switch (RAM_PP(PC)) { case 0x09: /* ADD IX,BC */ IX &= ADDRMASK; @@ -3019,7 +3019,7 @@ t_stat sim_instr_nommu(void) { case 0xed: /* ED prefix */ CHECK_CPU_8080; - switch (op = RAM_PP(PC)) { + switch (RAM_PP(PC)) { case 0x40: /* IN B,(C) */ temp = in(LOW_REGISTER(BC)); @@ -3405,7 +3405,6 @@ t_stat sim_instr_nommu(void) { break; case 0xb0: /* LDIR */ - acu = HIGH_REGISTER(AF); BC &= ADDRMASK; if (BC == 0) BC = 0x10000; @@ -3594,7 +3593,7 @@ t_stat sim_instr_nommu(void) { case 0xfd: /* FD prefix */ CHECK_CPU_8080; - switch (op = RAM_PP(PC)) { + switch (RAM_PP(PC)) { case 0x09: /* ADD IY,BC */ IY &= ADDRMASK; diff --git a/AltairZ80/altairz80_doc.pdf b/AltairZ80/altairz80_doc.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1d9f22d9814301a3fed9d345b8d1bd1d78f5718b GIT binary patch literal 416146 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

Y@89G7#ML&X&)5gyGvw_ElF$Jq>7&nhM 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

YYkpg#1uI%td7gULc%H~@Hj|=Eq3DIA1 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%0AW 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 D*h)3a literal 0 HcmV?d00001 diff --git a/AltairZ80/altairz80_hdsk.c b/AltairZ80/altairz80_hdsk.c index 21327dbf..009fb0e5 100644 --- a/AltairZ80/altairz80_hdsk.c +++ b/AltairZ80/altairz80_hdsk.c @@ -1,6 +1,6 @@ /* altairz80_hdsk.c: simulated hard disk device to increase capacity - Copyright (c) 2002-2008, Peter Schorn + Copyright (c) 2002-2010, Peter Schorn Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -42,6 +42,7 @@ static t_stat show_format(FILE *st, UNIT *uptr, int32 val, void *desc); static t_stat hdsk_reset(DEVICE *dptr); static t_stat hdsk_attach(UNIT *uptr, char *cptr); +static t_stat hdsk_detach(UNIT *uptr); #define UNIT_V_HDSK_WLK (UNIT_V_UF + 0) /* write locked */ #define UNIT_HDSK_WLK (1 << UNIT_V_HDSK_WLK) @@ -77,60 +78,143 @@ extern t_stat set_iobase(UNIT *uptr, int32 val, char *cptr, void *desc); extern t_stat show_iobase(FILE *st, UNIT *uptr, int32 val, void *desc); extern uint32 sim_map_resource(uint32 baseaddr, uint32 size, uint32 resource_type, int32 (*routine)(const int32, const int32, const int32), uint8 unmap); +extern int32 find_unit_index(UNIT *uptr); static t_stat hdsk_boot(int32 unitno, DEVICE *dptr); int32 hdsk_io(const int32 port, const int32 io, const int32 data); static int32 hdskLastCommand = HDSK_NONE; static int32 hdskCommandPosition = 0; -static int32 paramcount = 0; +static int32 parameterCount = 0; static int32 selectedDisk; static int32 selectedSector; static int32 selectedTrack; static int32 selectedDMA; typedef struct { - char name[DPB_NAME_LENGTH + 1]; /* name of CP/M disk parameter block */ - t_addr capac; /* capacity */ - uint16 spt; /* sectors per track */ - uint8 bsh; /* data allocation block shift factor */ - uint8 blm; /* data allocation block mask */ - uint8 exm; /* extent mask */ - uint16 dsm; /* maximum data block number */ - uint16 drm; /* total number of directory entries */ - uint8 al0; /* determine reserved directory blocks */ - uint8 al1; /* determine reserved directory blocks */ - uint16 cks; /* size of directory check vector */ - uint16 off; /* number of reserved tracks */ - uint8 psh; /* physical record shift factor, CP/M 3 */ - uint8 phm; /* physical record mask, CP/M 3 */ + char name[DPB_NAME_LENGTH + 1]; /* name of CP/M disk parameter block */ + t_addr capac; /* capacity */ + uint16 spt; /* sectors per track */ + uint8 bsh; /* data allocation block shift factor */ + uint8 blm; /* data allocation block mask */ + uint8 exm; /* extent mask */ + uint16 dsm; /* maximum data block number */ + uint16 drm; /* total number of directory entries */ + uint8 al0; /* determine reserved directory blocks */ + uint8 al1; /* determine reserved directory blocks */ + uint16 cks; /* size of directory check vector */ + uint16 off; /* number of reserved tracks */ + uint8 psh; /* physical record shift factor, CP/M 3 */ + uint8 phm; /* physical record mask, CP/M 3 */ + int32 physicalSectorSize; /* 0 for 128 << psh, > 0 for special */ + int32 offset; /* offset in physical sector where logical sector starts */ + int32 *skew; /* pointer to skew table or NULL */ } DPB; typedef struct { PNP_INFO pnp; /* Plug and Play */ } HDSK_INFO; -static HDSK_INFO hdsk_info_data = { { 0x0000, 0, 0xFD, 1 } }; -/* static HDSK_INFO *hdsk_info = &hdsk_info_data; */ +#define SPT16 16 +#define SPT32 32 +#define SPT26 26 -/* Note in the following CKS = 0 for fixed media which are not supposed to be changed while CP/M is executing */ +static HDSK_INFO hdsk_info_data = { { 0x0000, 0, 0xFD, 1 } }; + +static int32 standard8[SPT26] = { 0, 6, 12, 18, 24, 4, 10, 16, + 22, 2, 8, 14, 20, 1, 7, 13, + 19, 25, 5, 11, 17, 23, 3, 9, + 15, 21 }; + +static int32 appple_ii_DOS[SPT16] = { 0, 6, 12, 3, 9, 15, 14, 5, + 11, 2, 8, 7, 13, 4, 10, 1 }; + +static int32 appple_ii_DOS2[SPT32] = { 0, 1, 12, 13, 24, 25, 6, 7, + 18, 19, 30, 31, 28, 29, 10, 11, + 22, 23, 4, 5, 16, 17, 14, 15, + 26, 27, 8, 9, 20, 21, 2, 3 }; + +static int32 appple_ii_PRODOS[SPT16] = { 0, 9, 3, 12, 6, 15, 1, 10, + 4, 13, 7, 8, 2, 11, 5, 14 }; + +static int32 appple_ii_PRODOS2[SPT32] = { 0, 1, 18, 19, 6, 7, 24, 25, + 12, 13, 30, 31, 2, 3, 20, 21, + 8, 9, 26, 27, 14, 15, 16, 17, + 4, 5, 22, 23, 10, 11, 28, 29 }; + +static int32 mits[SPT32] = { 0, 17, 2, 19, 4, 21, 6, 23, + 8, 25, 10, 27, 12, 29, 14, 31, + 16, 1, 18, 3, 20, 5, 22, 7, + 24, 9, 26, 11, 28, 13, 30, 15 }; + +/* Note in the following CKS = 0 for fixed media which are not supposed to be + changed while CP/M is executing. Also note that spt (sectors per track) is + measured in CP/M sectors of size 128 bytes. Standard format "HDSK" must be + first as index 0 is used as default in some cases. + */ static DPB dpb[] = { -/* name capac spt bsh blm exm dsm drm al0 al1 cks off psh phm */ - { "HDSK", HDSK_CAPACITY, 32, 0x05, 0x1F, 0x01, 0x07f9, 0x03FF, 0xFF, 0x00, 0x0000, 0x0006, 0x00, 0x00 }, /* AZ80 HDSK */ - { "EZ80FL", 131072, 32, 0x03, 0x07, 0x00, 127, 0x003E, 0xC0, 0x00, 0x0000, 0x0000, 0x02, 0x03 }, /* 128K FLASH */ - { "P112", 1474560, 72, 0x04, 0x0F, 0x00, 710, 0x00FE, 0xF0, 0x00, 0x0000, 0x0002, 0x02, 0x03 }, /* 1.44M P112 */ - { "SU720", 737280, 36, 0x04, 0x0F, 0x00, 354, 0x007E, 0xC0, 0x00, 0x0020, 0x0002, 0x02, 0x03 }, /* 720K Super I/O */ - { "OSB1", 102400, 20, 0x04, 0x0F, 0x01, 45, 0x003F, 0x80, 0x00, 0x0000, 0x0003, 0x02, 0x03 }, /* Osborne1 5.25" SS SD */ - { "OSB2", 204800, 40, 0x03, 0x07, 0x00, 184, 0x003F, 0xC0, 0x00, 0x0000, 0x0003, 0x02, 0x03 }, /* Osborne1 5.25" SS DD */ - { "NSSS1", 179200, 40, 0x03, 0x07, 0x00, 0xA4, 0x003F, 0xC0, 0x00, 0x0010, 0x0002, 0x02, 0x03 }, /* Northstar SSDD Format 1 */ - { "NSSS2", 179200, 40, 0x04, 0x0F, 0x01, 0x51, 0x003F, 0x80, 0x00, 0x0010, 0x0002, 0x02, 0x03 }, /* Northstar SSDD Format 2 */ - { "NSDS2", 358400, 40, 0x04, 0x0F, 0x01, 0xA9, 0x003F, 0x80, 0x00, 0x0010, 0x0002, 0x02, 0x03 }, /* Northstar DSDD Format 2 */ - { "VGSS", 315392, 32, 0x04, 0x0F, 0x00, 149, 0x007F, 0xC0, 0x00, 0x0020, 0x0002, 0x02, 0x03 }, /* Vector SS SD */ - { "VGDS", 632784, 32, 0x04, 0x0F, 0x00, 299, 0x007F, 0xC0, 0x00, 0x0020, 0x0004, 0x02, 0x03 }, /* Vector DS SD */ - /* Note on DISK1A Images: this is a bit of a mess. The first track on the disk is 128x26 bytes (SD) and to make this work - I had to "move" the data from 0x2d00 in the DSK image file down to 0x4000 (2-tracks in). I used WinHex to do it. */ - { "DISK1A", 630784, 64, 0x04, 0x0F, 0x00, 299, 0x007F, 0xC0, 0x00, 0x0020, 0x0002, 0x02, 0x03 }, /* CompuPro Disk1A 8" SS SD */ - { "SSSD8", 256256, 26, 0x03, 0x07, 0x00, 242, 0x003F, 0xC0, 0x00, 0x0000, 0x0002, 0x00, 0x00 }, /* Standard 8" SS SD */ +/* name capac spt bsh blm exm dsm drm + al0 al1 cks off psh phm ss off skew */ + { "HDSK", HDSK_CAPACITY, 32, 0x05, 0x1F, 0x01, 0x07f9, 0x03FF, + 0xFF, 0x00, 0x0000, 0x0006, 0x00, 0x00, 0, 0, NULL }, /* AZ80 HDSK */ + + { "EZ80FL", 131072, 32, 0x03, 0x07, 0x00, 127, 0x003E, + 0xC0, 0x00, 0x0000, 0x0000, 0x02, 0x03, 0, 0, NULL }, /* 128K FLASH */ + + { "P112", 1474560, 72, 0x04, 0x0F, 0x00, 710, 0x00FE, + 0xF0, 0x00, 0x0000, 0x0002, 0x02, 0x03, 0, 0, NULL }, /* 1.44M P112 */ + + { "SU720", 737280, 36, 0x04, 0x0F, 0x00, 354, 0x007E, + 0xC0, 0x00, 0x0020, 0x0002, 0x02, 0x03, 0, 0, NULL }, /* 720K Super I/O */ + + { "OSB1", 102400, 20, 0x04, 0x0F, 0x01, 45, 0x003F, + 0x80, 0x00, 0x0000, 0x0003, 0x02, 0x03, 0, 0, NULL }, /* Osborne1 5.25" SS SD */ + + { "OSB2", 204800, 40, 0x03, 0x07, 0x00, 184, 0x003F, + 0xC0, 0x00, 0x0000, 0x0003, 0x02, 0x03, 0, 0, NULL }, /* Osborne1 5.25" SS DD */ + + { "NSSS1", 179200, 40, 0x03, 0x07, 0x00, 0xA4, 0x003F, + 0xC0, 0x00, 0x0010, 0x0002, 0x02, 0x03, 0, 0, NULL }, /* Northstar SSDD Format 1 */ + + { "NSSS2", 179200, 40, 0x04, 0x0F, 0x01, 0x51, 0x003F, + 0x80, 0x00, 0x0010, 0x0002, 0x02, 0x03, 0, 0, NULL }, /* Northstar SSDD Format 2 */ + + { "NSDS2", 358400, 40, 0x04, 0x0F, 0x01, 0xA9, 0x003F, + 0x80, 0x00, 0x0010, 0x0002, 0x02, 0x03, 0, 0, NULL }, /* Northstar DSDD Format 2 */ + + { "VGSS", 315392, 32, 0x04, 0x0F, 0x00, 149, 0x007F, + 0xC0, 0x00, 0x0020, 0x0002, 0x02, 0x03, 0, 0, NULL }, /* Vector SS SD */ + + { "VGDS", 630784, 32, 0x04, 0x0F, 0x00, 299, 0x007F, + 0xC0, 0x00, 0x0020, 0x0004, 0x02, 0x03, 0, 0, NULL }, /* Vector DS SD */ + + { "DISK1A", 630784, 64, 0x04, 0x0F, 0x00, 299, 0x007F, + 0xC0, 0x00, 0x0020, 0x0002, 0x02, 0x03, 0, 0, NULL }, /* CompuPro Disk1A 8" SS SD */ + + { "SSSD8", 256256, SPT26, 0x03, 0x07, 0x00, 242, 0x003F, + 0xC0, 0x00, 0x0000, 0x0002, 0x00, 0x00, 0, 0, NULL }, /* Standard 8" SS SD */ + + { "SSSD8S", 256256, SPT26, 0x03, 0x07, 0x00, 242, 0x003F, + 0xC0, 0x00, 0x0000, 0x0002, 0x00, 0x00, 0, 0, standard8 }, /* Standard 8" SS SD with skew */ + + { "APPLE-DO",143360, SPT32, 0x03, 0x07, 0x00, 127, 0x003F, + 0xC0, 0x00, 0x0000, 0x0003, 0x01, 0x01, 0, 0, appple_ii_DOS }, /* Apple II DOS 3.3 */ + + { "APPLE-PO",143360, SPT32, 0x03, 0x07, 0x00, 127, 0x003F, + 0xC0, 0x00, 0x0000, 0x0003, 0x01, 0x01, 0, 0, appple_ii_PRODOS }, /* Apple II PRODOS */ + + { "APPLE-D2",143360, SPT32, 0x03, 0x07, 0x00, 127, 0x003F, + 0xC0, 0x00, 0x0000, 0x0003, 0x00, 0x00, 0, 0, appple_ii_DOS2 }, /* Apple II DOS 3.3, deblocked */ + + { "APPLE-P2",143360, SPT32, 0x03, 0x07, 0x00, 127, 0x003F, + 0xC0, 0x00, 0x0000, 0x0003, 0x00, 0x00, 0, 0, appple_ii_PRODOS2 }, /* Apple II PRODOS, deblocked */ + + { "MITS", 337568, SPT32, 0x03, 0x07, 0x00, 254, 0x00FF, + 0xFF, 0x00, 0x0000, 0x0006, 0x00, 0x00, 137, 3, mits }, /* MITS Altair original */ + + { "MITS2", 1113536, SPT32, 0x04, 0x0F, 0x00, 0x1EF, 0x00FF, + 0xF0, 0x00, 0x0000, 0x0006, 0x00, 0x00, 137, 3, mits }, /* MITS Altair original, extra */ + { "", 0 } }; @@ -180,7 +264,7 @@ DEVICE hdsk_dev = { "HDSK", hdsk_unit, hdsk_reg, hdsk_mod, 8, 10, 31, 1, 8, 8, NULL, NULL, &hdsk_reset, - &hdsk_boot, &hdsk_attach, NULL, + &hdsk_boot, &hdsk_attach, &hdsk_detach, &hdsk_info_data, (DEV_DISABLE | DEV_DEBUG), 0, hdsk_dt, NULL, "Hard Disk HDSK" }; @@ -212,7 +296,7 @@ static t_stat hdsk_attach(UNIT *uptr, char *cptr) { return r; /* Step 1: Determine capacity of this disk */ - uptr -> capac = sim_fsize(uptr -> fileref); /* the file length is a good candidate */ + uptr -> capac = sim_fsize(uptr -> fileref); /* the file length is a good indication */ if (uptr -> capac == 0) { /* file does not exist or has length 0 */ uptr -> capac = uptr -> HDSK_NUMBER_OF_TRACKS * uptr -> HDSK_SECTORS_PER_TRACK * uptr -> HDSK_SECTOR_SIZE; @@ -252,10 +336,10 @@ static t_stat hdsk_attach(UNIT *uptr, char *cptr) { } } else { /* Case 2: disk parameter block found */ - uptr -> HDSK_SECTORS_PER_TRACK = dpb[uptr -> HDSK_FORMAT_TYPE].spt >> dpb[uptr -> HDSK_FORMAT_TYPE].psh; - uptr -> HDSK_SECTOR_SIZE = (128 << dpb[uptr -> HDSK_FORMAT_TYPE].psh); + uptr -> HDSK_SECTORS_PER_TRACK = dpb[uptr -> HDSK_FORMAT_TYPE].spt >> dpb[uptr -> HDSK_FORMAT_TYPE].psh; + uptr -> HDSK_SECTOR_SIZE = (128 << dpb[uptr -> HDSK_FORMAT_TYPE].psh); } - assert(uptr -> HDSK_SECTORS_PER_TRACK && uptr -> HDSK_SECTOR_SIZE); + assert((uptr -> HDSK_SECTORS_PER_TRACK) && (uptr -> HDSK_SECTOR_SIZE) && (uptr -> HDSK_FORMAT_TYPE >= 0)); /* Step 4: Number of tracks is smallest number to accomodate capacity */ uptr -> HDSK_NUMBER_OF_TRACKS = (uptr -> capac + uptr -> HDSK_SECTORS_PER_TRACK * @@ -264,9 +348,23 @@ static t_stat hdsk_attach(UNIT *uptr, char *cptr) { uptr -> HDSK_SECTOR_SIZE) < uptr -> capac) && (uptr -> capac <= (t_addr) (uptr -> HDSK_NUMBER_OF_TRACKS * uptr -> HDSK_SECTORS_PER_TRACK * uptr -> HDSK_SECTOR_SIZE) ) ); + return SCPE_OK; } +static t_stat hdsk_detach(UNIT *uptr) { + t_stat result; + if (uptr == NULL) + return SCPE_IERR; + result = detach_unit(uptr); + uptr -> capac = HDSK_CAPACITY; + uptr -> HDSK_FORMAT_TYPE = 0; + uptr -> HDSK_SECTOR_SIZE = 0; + uptr -> HDSK_SECTORS_PER_TRACK = 0; + uptr -> HDSK_NUMBER_OF_TRACKS = 0; + return result; +} + /* Set disk geometry routine */ static t_stat set_geom(UNIT *uptr, int32 val, char *cptr, void *desc) { uint32 numberOfTracks, numberOfSectors, sectorSize; @@ -276,6 +374,10 @@ static t_stat set_geom(UNIT *uptr, int32 val, char *cptr, void *desc) { return SCPE_ARG; if (uptr == NULL) return SCPE_IERR; + if (((uptr -> flags) & UNIT_ATT) == 0) { + printf("Cannot set geometry for not attached unit %i.\n", find_unit_index(uptr)); + return SCPE_ARG; + } result = sscanf(cptr, "%d/%d/%d%n", &numberOfTracks, &numberOfSectors, §orSize, &n); if ((result != 3) || (result == EOF) || (cptr[n] != 0)) { result = sscanf(cptr, "T:%d/N:%d/S:%d%n", &numberOfTracks, &numberOfSectors, §orSize, &n); @@ -311,6 +413,10 @@ static t_stat set_format(UNIT *uptr, int32 val, char *cptr, void *desc) { return SCPE_IERR; if (sscanf(cptr, "%" QUOTE2(DPB_NAME_LENGTH) "s", fmtname) == 0) return SCPE_ARG; + if (((uptr -> flags) & UNIT_ATT) == 0) { + printf("Cannot set format for not attached unit %i.\n", find_unit_index(uptr)); + return SCPE_ARG; + } for (i = 0; dpb[i].capac != 0; i++) { if (strncmp(fmtname, dpb[i].name, strlen(fmtname)) == 0) { uptr -> HDSK_FORMAT_TYPE = i; @@ -405,8 +511,8 @@ static t_stat hdsk_boot(int32 unitno, DEVICE *dptr) { ; parameter block cmd: db HDSK_READ or HDSK_WRITE hd: db 0 ; 0 .. 7, defines hard disk to be used - sector: db 0 ; 0 .. 31, defines sector - track: dw 0 ; 0 .. 2047, defines track + sector: db 0 ; 0 .. 31, defines sector + track: dw 0 ; 0 .. 2047, defines track dma: dw 0 ; defines where result is placed in memory ; routine to execute @@ -444,12 +550,13 @@ static t_stat hdsk_boot(int32 unitno, DEVICE *dptr) { /* check the parameters and return TRUE iff parameters are correct or have been repaired */ static int32 checkParameters(void) { - UNIT *uptr = &hdsk_dev.units[selectedDisk]; + UNIT *uptr; if ((selectedDisk < 0) || (selectedDisk >= HDSK_NUMBER)) { TRACE_PRINT(VERBOSE_MSG, ("HDSK%d: " ADDRESS_FORMAT " Disk %i does not exist, will use HDSK0 instead." NLP, selectedDisk, PCX, selectedDisk)); selectedDisk = 0; } + uptr = &hdsk_dev.units[selectedDisk]; if ((hdsk_dev.units[selectedDisk].flags & UNIT_ATT) == 0) { TRACE_PRINT(VERBOSE_MSG, ("HDSK%d: " ADDRESS_FORMAT " Disk %i is not attached." NLP, selectedDisk, PCX, selectedDisk)); @@ -475,28 +582,33 @@ static int32 checkParameters(void) { return TRUE; } +/* pre-condition: checkParameters has been executed to repair any faulty parameters */ static int32 doSeek(void) { UNIT *uptr = &hdsk_dev.units[selectedDisk]; - if (fseek(uptr -> fileref, - (uptr -> HDSK_SECTORS_PER_TRACK * uptr -> HDSK_SECTOR_SIZE) * selectedTrack + - (uptr -> HDSK_SECTOR_SIZE * selectedSector), SEEK_SET)) { - TRACE_PRINT(VERBOSE_MSG, ("HDSK%d: " ADDRESS_FORMAT " Could not access Sector=%02d Track=%04d." NLP, - selectedDisk, PCX, selectedSector, selectedTrack)); + int32 hostSector = (dpb[uptr -> HDSK_FORMAT_TYPE].skew == NULL) ? + selectedSector : dpb[uptr -> HDSK_FORMAT_TYPE].skew[selectedSector]; + int32 sectorSize = (dpb[uptr -> HDSK_FORMAT_TYPE].physicalSectorSize == 0) ? + uptr -> HDSK_SECTOR_SIZE : dpb[uptr -> HDSK_FORMAT_TYPE].physicalSectorSize; + if (sim_fseek(uptr -> fileref, + sectorSize * (uptr -> HDSK_SECTORS_PER_TRACK * selectedTrack + hostSector) + + dpb[uptr -> HDSK_FORMAT_TYPE].offset, SEEK_SET)) { + TRACE_PRINT(VERBOSE_MSG, ("HDSK%d: " ADDRESS_FORMAT " Could not access Sector=%02d[=%02d] Track=%04d." NLP, + selectedDisk, PCX, selectedSector, hostSector, selectedTrack)); return CPM_ERROR; } - else - return CPM_OK; + return CPM_OK; } uint8 hdskbuf[HDSK_MAX_SECTOR_SIZE] = { 0 }; /* data buffer */ +/* pre-condition: checkParameters has been executed to repair any faulty parameters */ static int32 doRead(void) { int32 i; UNIT *uptr = &hdsk_dev.units[selectedDisk]; if (doSeek()) return CPM_ERROR; - if (fread(hdskbuf, uptr -> HDSK_SECTOR_SIZE, 1, uptr -> fileref) != 1) { + if (sim_fread(hdskbuf, 1, uptr -> HDSK_SECTOR_SIZE, uptr -> fileref) != (size_t)(uptr -> HDSK_SECTOR_SIZE)) { for (i = 0; i < uptr -> HDSK_SECTOR_SIZE; i++) hdskbuf[i] = CPM_EMPTY; TRACE_PRINT(VERBOSE_MSG, ("HDSK%d: " ADDRESS_FORMAT " Could not read Sector=%02d Track=%04d." NLP, @@ -508,18 +620,20 @@ static int32 doRead(void) { return CPM_OK; } +/* pre-condition: checkParameters has been executed to repair any faulty parameters */ static int32 doWrite(void) { int32 i; - + size_t rtn; UNIT *uptr = &hdsk_dev.units[selectedDisk]; if (((uptr -> flags) & UNIT_HDSK_WLK) == 0) { /* write enabled */ if (doSeek()) return CPM_ERROR; for (i = 0; i < uptr -> HDSK_SECTOR_SIZE; i++) hdskbuf[i] = GetBYTEWrapper(selectedDMA + i); - if (fwrite(hdskbuf, uptr -> HDSK_SECTOR_SIZE, 1, uptr -> fileref) != 1) { - TRACE_PRINT(VERBOSE_MSG, ("HDSK%d: " ADDRESS_FORMAT " Could not write Sector=%02d Track=%04d." NLP, - selectedDisk, PCX, selectedSector, selectedTrack)); + rtn = sim_fwrite(hdskbuf, 1, uptr -> HDSK_SECTOR_SIZE, uptr -> fileref); + if (rtn != (size_t)(uptr -> HDSK_SECTOR_SIZE)) { + TRACE_PRINT(VERBOSE_MSG, ("HDSK%d: " ADDRESS_FORMAT " Could not write Sector=%02d Track=%04d Result=%zd." NLP, + selectedDisk, PCX, selectedSector, selectedTrack, rtn)); return CPM_ERROR; } } @@ -531,57 +645,59 @@ static int32 doWrite(void) { return CPM_OK; } -static int32 hdsk_in(const int32 port) { - UNIT *uptr = &hdsk_dev.units[selectedDisk]; +#define PARAMETER_BLOCK_SIZE 19 +static uint8 parameterBlock[PARAMETER_BLOCK_SIZE]; - int32 result; +static int32 hdsk_in(const int32 port) { if ((hdskCommandPosition == 6) && ((hdskLastCommand == HDSK_READ) || (hdskLastCommand == HDSK_WRITE))) { - result = checkParameters() ? ((hdskLastCommand == HDSK_READ) ? doRead() : doWrite()) : CPM_ERROR; + int32 result = checkParameters() ? ((hdskLastCommand == HDSK_READ) ? doRead() : doWrite()) : CPM_ERROR; hdskLastCommand = HDSK_NONE; hdskCommandPosition = 0; return result; - } else if (hdskLastCommand == HDSK_PARAM) { - DPB current = dpb[uptr -> HDSK_FORMAT_TYPE]; - uint8 params[17]; - params[ 0] = current.spt & 0xff; params[ 1] = (current.spt >> 8) & 0xff; - params[ 2] = current.bsh; - params[ 3] = current.blm; - params[ 4] = current.exm; - params[ 5] = current.dsm & 0xff; params[ 6] = (current.dsm >> 8) & 0xff; - params[ 7] = current.drm & 0xff; params[ 8] = (current.drm >> 8) & 0xff; - params[ 9] = current.al0; - params[10] = current.al1; - params[11] = current.cks & 0xff; params[12] = (current.cks >> 8) & 0xff; - params[13] = current.off & 0xff; params[14] = (current.off >> 8) & 0xff; - params[15] = current.psh; - params[16] = current.phm; - if (++paramcount >= 19) + } + if (hdskLastCommand == HDSK_PARAM) { + if (++parameterCount >= PARAMETER_BLOCK_SIZE) hdskLastCommand = HDSK_NONE; - if (paramcount <= 17) - return params[paramcount - 1]; - else if (paramcount == 18) - return (uptr -> HDSK_SECTOR_SIZE & 0xff); - else if (paramcount == 19) - return (uptr -> HDSK_SECTOR_SIZE >> 8); - else { - printf("HDSK%d: " ADDRESS_FORMAT " Get parameter error." NLP, - selectedDisk, PCX); - } - - } - else { - TRACE_PRINT(VERBOSE_MSG, ("HDSK%d: " ADDRESS_FORMAT " Illegal IN command detected (port=%03xh, cmd=%d, pos=%d)." NLP, - selectedDisk, PCX, port, hdskLastCommand, hdskCommandPosition)); + return parameterBlock[parameterCount - 1]; } + TRACE_PRINT(VERBOSE_MSG, ("HDSK%d: " ADDRESS_FORMAT " Illegal IN command detected (port=%03xh, cmd=%d, pos=%d)." NLP, + selectedDisk, PCX, port, hdskLastCommand, hdskCommandPosition)); return CPM_OK; } static int32 hdsk_out(const int32 port, const int32 data) { + int32 thisDisk; + UNIT *uptr; + DPB current; + switch(hdskLastCommand) { case HDSK_PARAM: - paramcount = 0; - selectedDisk = data; + parameterCount = 0; + thisDisk = (0 <= data) && (data < HDSK_NUMBER) ? data : 0; + uptr = &hdsk_dev.units[thisDisk]; + if ((uptr -> flags) & UNIT_ATT) { + current = dpb[uptr -> HDSK_FORMAT_TYPE]; + parameterBlock[17] = uptr -> HDSK_SECTOR_SIZE & 0xff; + parameterBlock[18] = (uptr -> HDSK_SECTOR_SIZE >> 8) & 0xff; + } + else { + current = dpb[0]; + parameterBlock[17] = 128; + parameterBlock[18] = 0; + } + parameterBlock[ 0] = current.spt & 0xff; parameterBlock[ 1] = (current.spt >> 8) & 0xff; + parameterBlock[ 2] = current.bsh; + parameterBlock[ 3] = current.blm; + parameterBlock[ 4] = current.exm; + parameterBlock[ 5] = current.dsm & 0xff; parameterBlock[ 6] = (current.dsm >> 8) & 0xff; + parameterBlock[ 7] = current.drm & 0xff; parameterBlock[ 8] = (current.drm >> 8) & 0xff; + parameterBlock[ 9] = current.al0; + parameterBlock[10] = current.al1; + parameterBlock[11] = current.cks & 0xff; parameterBlock[12] = (current.cks >> 8) & 0xff; + parameterBlock[13] = current.off & 0xff; parameterBlock[14] = (current.off >> 8) & 0xff; + parameterBlock[15] = current.psh; + parameterBlock[16] = current.phm; break; case HDSK_READ: diff --git a/AltairZ80/altairz80_net.c b/AltairZ80/altairz80_net.c index 4c67b206..c4fa016c 100644 --- a/AltairZ80/altairz80_net.c +++ b/AltairZ80/altairz80_net.c @@ -1,6 +1,6 @@ /* altairz80_net.c: networking capability - Copyright (c) 2002-2008, Peter Schorn + Copyright (c) 2002-2010, Peter Schorn Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -67,7 +67,7 @@ static struct { int32 outputPosRead; /* position of next character to write to ioSocket */ int32 outputPosWrite; /* position of next character to append to output buffer */ int32 outputSize; /* number of characters in circular output buffer */ -} serviceDescriptor[MAX_CONNECTIONS+1] = { /* serviceDescriptor[0] holds the information for a client */ +} serviceDescriptor[MAX_CONNECTIONS + 1] = { /* serviceDescriptor[0] holds the information for a client */ /* stat dat ms ios in inPR inPW inS out outPR outPW outS */ {0x32, 0x33, 0, 0, {0}, 0, 0, 0, {0}, 0, 0, 0}, /* client Z80 port 50 and 51 */ {0x28, 0x29, 0, 0, {0}, 0, 0, 0, {0}, 0, 0, 0}, /* server Z80 port 40 and 41 */ @@ -290,7 +290,7 @@ int32 netData(const int32 port, const int32 io, const int32 data) { return 0; net_svc(&net_unit); for (i = 0; i <= MAX_CONNECTIONS; i++) - if (serviceDescriptor[i].Z80DataPort == port) + if (serviceDescriptor[i].Z80DataPort == port) { if (io == 0) { /* IN */ if (serviceDescriptor[i].inputSize == 0) { printf("re-read from %i" NLP, port); @@ -323,5 +323,6 @@ int32 netData(const int32 port, const int32 io, const int32 data) { (32 <= data) && (data <= 127) ? data : '?')); return 0; } + } return 0; } diff --git a/AltairZ80/flashwriter2.c b/AltairZ80/flashwriter2.c index d4511ce6..ba11478f 100644 --- a/AltairZ80/flashwriter2.c +++ b/AltairZ80/flashwriter2.c @@ -3,7 +3,7 @@ * $Id: flashwriter2.c 1941 2008-06-13 05:31:03Z hharte $ * * * * Copyright (c) 2007-2008 Howard M. Harte. * - * http:/*www.hartetec.com * + * http://www.hartetec.com * * * * Permission is hereby granted, free of charge, to any person obtaining * * a copy of this software and associated documentation files (the * diff --git a/AltairZ80/i8272.c b/AltairZ80/i8272.c index af828bab..5a11ad4a 100644 --- a/AltairZ80/i8272.c +++ b/AltairZ80/i8272.c @@ -149,9 +149,6 @@ extern uint8 GetByteDMA(const uint32 Addr); #define UNIT_I8272_VERBOSE (1 << UNIT_V_I8272_VERBOSE) #define I8272_CAPACITY (77*2*16*256) /* Default Micropolis Disk Capacity */ #define I8272_CAPACITY_SSSD (77*1*26*128) /* Single-sided Single Density IBM Diskette1 */ -#define IMAGE_TYPE_DSK 1 /* Flat binary "DSK" image file. */ -#define IMAGE_TYPE_IMD 2 /* ImageDisk "IMD" image file. */ -#define IMAGE_TYPE_CPT 3 /* CP/M Transfer "CPT" image file. */ /* Intel 8272 Commands */ #define I8272_READ_TRACK 0x02 @@ -307,8 +304,8 @@ t_stat i8272_attach(UNIT *uptr, char *cptr) i8272_info->drive[i].ready = 0; if(uptr->capac > 0) { - fgets(header, 4, uptr->fileref); - if(strncmp(header, "IMD", 3)) { + char *rtn = fgets(header, 4, uptr->fileref); + if((rtn != NULL) && strncmp(header, "IMD", 3)) { printf("I8272: Only IMD disk images are supported\n"); i8272_info->drive[i].uptr = NULL; return SCPE_OPENERR; @@ -414,8 +411,7 @@ uint8 I8272_Read(const uint32 Addr) return 0xFF; } - cData = 0x00; - + /* the switch statement ensures that cData is set in all cases! */ switch(Addr & 0x3) { case I8272_FDC_MSR: cData = i8272_info->fdc_msr | I8272_MSR_RQM; diff --git a/AltairZ80/i86_decode.c b/AltairZ80/i86_decode.c index b83979ad..2b15e27f 100644 --- a/AltairZ80/i86_decode.c +++ b/AltairZ80/i86_decode.c @@ -86,7 +86,6 @@ static void i86_intr_handle(PC_ENV *m) if (intr & INTR_SYNCH) /* raised by something */ { intno = m->intno; - tmp = (uint16) mem_access_word(m, intno * 4); { tmp = m->R_FLG; push_word(m, tmp); diff --git a/AltairZ80/i86_ops.c b/AltairZ80/i86_ops.c index d289a5be..cb60407e 100644 --- a/AltairZ80/i86_ops.c +++ b/AltairZ80/i86_ops.c @@ -108,7 +108,7 @@ extern uint32 in(const uint32 Port); So, without further ado, ... */ -extern char parity_tab[]; +extern uint8 parity_tab[]; static void i86op_illegal_op(PC_ENV *m) { @@ -3823,7 +3823,6 @@ static void i86op_ret_far(PC_ENV *m) static void i86op_int3(PC_ENV *m) { uint16 tmp; - tmp = (uint16) mem_access_word(m, 3 * 4); /* access the segment register */ { tmp = m->R_FLG; @@ -3855,7 +3854,6 @@ static void i86op_int_IMM(PC_ENV *m) uint16 tmp; uint8 intnum; intnum = fetch_byte_imm(m); - tmp = mem_access_word(m, intnum * 4); { tmp = m->R_FLG; push_word(m, tmp); @@ -3886,7 +3884,6 @@ static void i86op_into(PC_ENV *m) uint16 tmp; if (ACCESS_FLAG(m,F_OF)) { - tmp = mem_access_word(m, 4 * 4); { tmp = m->R_FLG; push_word(m, tmp); @@ -4150,8 +4147,7 @@ static void i86op_aam(PC_ENV *m) /* opcode=0xd5*/ static void i86op_aad(PC_ENV *m) -{ uint8 a; - a = fetch_byte_imm(m); +{ m->R_AX = aad_word(m,m->R_AX); DECODE_CLEAR_SEGOVR(m); } @@ -5050,22 +5046,19 @@ static void i86op_esc_coprocess_d8(PC_ENV *m) static void i86op_esc_coprocess_d9(PC_ENV *m) { uint16 mod,rl,rh; - uint16 destoffset; - uint8 stkelem; FETCH_DECODE_MODRM(m,mod,rh,rl); switch (mod) { case 0: - destoffset=decode_rm00_address(m,rl); + decode_rm00_address(m,rl); break; case 1: - destoffset=decode_rm01_address(m,rl); + decode_rm01_address(m,rl); break; case 2: - destoffset=decode_rm10_address(m,rl); + decode_rm10_address(m,rl); break; case 3: /* register to register */ - stkelem = (uint8) rl; break; } DECODE_CLEAR_SEGOVR(m); @@ -5075,22 +5068,19 @@ static void i86op_esc_coprocess_d9(PC_ENV *m) static void i86op_esc_coprocess_da(PC_ENV *m) { uint16 mod,rl,rh; - uint16 destoffset; - uint8 stkelem; FETCH_DECODE_MODRM(m,mod,rh,rl); switch (mod) { case 0: - destoffset=decode_rm00_address(m,rl); + decode_rm00_address(m,rl); break; case 1: - destoffset=decode_rm01_address(m,rl); + decode_rm01_address(m,rl); break; case 2: - destoffset=decode_rm10_address(m,rl); + decode_rm10_address(m,rl); break; case 3: /* register to register */ - stkelem = (uint8) rl; break; } DECODE_CLEAR_SEGOVR(m); @@ -5100,19 +5090,17 @@ static void i86op_esc_coprocess_da(PC_ENV *m) static void i86op_esc_coprocess_db(PC_ENV *m) { uint16 mod,rl,rh; - uint16 destoffset; -/* uint8 stkelem;*/ FETCH_DECODE_MODRM(m,mod,rh,rl); switch (mod) { case 0: - destoffset=decode_rm00_address(m,rl); + decode_rm00_address(m,rl); break; case 1: - destoffset=decode_rm01_address(m,rl); + decode_rm01_address(m,rl); break; case 2: - destoffset=decode_rm10_address(m,rl); + decode_rm10_address(m,rl); break; case 3: /* register to register */ break; @@ -5124,22 +5112,19 @@ static void i86op_esc_coprocess_db(PC_ENV *m) static void i86op_esc_coprocess_dc(PC_ENV *m) { uint16 mod,rl,rh; - uint16 destoffset; - uint8 stkelem; FETCH_DECODE_MODRM(m,mod,rh,rl); switch (mod) { case 0: - destoffset=decode_rm00_address(m,rl); + decode_rm00_address(m,rl); break; case 1: - destoffset=decode_rm01_address(m,rl); + decode_rm01_address(m,rl); break; case 2: - destoffset=decode_rm10_address(m,rl); + decode_rm10_address(m,rl); break; case 3: /* register to register */ - stkelem = (uint8) rl; break; } DECODE_CLEAR_SEGOVR(m); @@ -5149,22 +5134,19 @@ static void i86op_esc_coprocess_dc(PC_ENV *m) static void i86op_esc_coprocess_dd(PC_ENV *m) { uint16 mod,rl,rh; - uint16 destoffset; - uint8 stkelem; FETCH_DECODE_MODRM(m,mod,rh,rl); switch (mod) { case 0: - destoffset=decode_rm00_address(m,rl); + decode_rm00_address(m,rl); break; case 1: - destoffset=decode_rm01_address(m,rl); + decode_rm01_address(m,rl); break; case 2: - destoffset=decode_rm10_address(m,rl); + decode_rm10_address(m,rl); break; case 3: /* register to register */ - stkelem = (uint8) rl; break; } DECODE_CLEAR_SEGOVR(m); @@ -5174,22 +5156,19 @@ static void i86op_esc_coprocess_dd(PC_ENV *m) static void i86op_esc_coprocess_de(PC_ENV *m) { uint16 mod,rl,rh; - uint16 destoffset; - uint8 stkelem; FETCH_DECODE_MODRM(m,mod,rh,rl); switch (mod) { case 0: - destoffset=decode_rm00_address(m,rl); + decode_rm00_address(m,rl); break; case 1: - destoffset=decode_rm01_address(m,rl); + decode_rm01_address(m,rl); break; case 2: - destoffset=decode_rm10_address(m,rl); + decode_rm10_address(m,rl); break; case 3: /* register to register */ - stkelem = (uint8) rl; break; } DECODE_CLEAR_SEGOVR(m); @@ -5199,22 +5178,19 @@ static void i86op_esc_coprocess_de(PC_ENV *m) static void i86op_esc_coprocess_df(PC_ENV *m) { uint16 mod,rl,rh; - uint16 destoffset; - uint8 stkelem; FETCH_DECODE_MODRM(m,mod,rh,rl); switch (mod) { case 0: - destoffset=decode_rm00_address(m,rl); + decode_rm00_address(m,rl); break; case 1: - destoffset=decode_rm01_address(m,rl); + decode_rm01_address(m,rl); break; case 2: - destoffset=decode_rm10_address(m,rl); + decode_rm10_address(m,rl); break; case 3: /* register to register */ - stkelem = (uint8) rl; break; } DECODE_CLEAR_SEGOVR(m); diff --git a/AltairZ80/i86_prim_ops.c b/AltairZ80/i86_prim_ops.c index 109f31f4..44355110 100644 --- a/AltairZ80/i86_prim_ops.c +++ b/AltairZ80/i86_prim_ops.c @@ -1106,7 +1106,6 @@ uint8 shr_byte(PC_ENV *m, uint8 d, uint8 s) uint16 shr_word(PC_ENV *m, uint16 d, uint16 s) { uint32 cnt,res,cf,mask; - res = d; if (s < 16) { cnt = s % 16; diff --git a/AltairZ80/mfdc.c b/AltairZ80/mfdc.c index 503230e9..bc6f3531 100644 --- a/AltairZ80/mfdc.c +++ b/AltairZ80/mfdc.c @@ -130,9 +130,6 @@ static SECTOR_FORMAT sdata; #define UNIT_V_MFDC_VERBOSE (UNIT_V_UF + 1) /* verbose mode, i.e. show error messages */ #define UNIT_MFDC_VERBOSE (1 << UNIT_V_MFDC_VERBOSE) #define MFDC_CAPACITY (77*16*MFDC_SECTOR_LEN) /* Default Micropolis Disk Capacity */ -#define IMAGE_TYPE_DSK 1 /* Flat binary "DSK" image file. */ -#define IMAGE_TYPE_IMD 2 /* ImageDisk "IMD" image file. */ -#define IMAGE_TYPE_CPT 3 /* CP/M Transfer "CPT" image file. */ static t_stat mfdc_reset(DEVICE *mfdc_dev); static t_stat mfdc_attach(UNIT *uptr, char *cptr); @@ -237,7 +234,6 @@ t_stat mfdc_reset(DEVICE *dptr) /* Attach routine */ t_stat mfdc_attach(UNIT *uptr, char *cptr) { - char header[4]; t_stat r; unsigned int i = 0; @@ -258,16 +254,10 @@ t_stat mfdc_attach(UNIT *uptr, char *cptr) uptr->u3 = IMAGE_TYPE_DSK; if(uptr->capac > 0) { - fgets(header, 4, uptr->fileref); - if(!strcmp(header, "IMD")) { - uptr->u3 = IMAGE_TYPE_IMD; - } else if(!strcmp(header, "CPT")) { - printf("CPT images not yet supported\n"); - uptr->u3 = IMAGE_TYPE_CPT; + r = assignDiskType(uptr); + if (r != SCPE_OK) { mfdc_detach(uptr); - return SCPE_OPENERR; - } else { - uptr->u3 = IMAGE_TYPE_DSK; + return r; } } @@ -386,6 +376,7 @@ static uint8 MFDC_Read(const uint32 Addr) { uint8 cData; MFDC_DRIVE_INFO *pDrive; + int32 rtn; cData = 0x00; @@ -482,10 +473,13 @@ static uint8 MFDC_Read(const uint32 Addr) } else { sim_fseek((pDrive->uptr)->fileref, sec_offset, SEEK_SET); #ifdef USE_VGI - fread(sdata.raw, MFDC_SECTOR_LEN, 1, (pDrive->uptr)->fileref); + rtn = sim_fread(sdata.raw, 1, MFDC_SECTOR_LEN, (pDrive->uptr)->fileref); + if (rtn != MFDC_SECTOR_LEN) #else - fread(sdata.u.data, 256, 1, (pDrive->uptr)->fileref); + rtn = sim_fread(sdata.u.data, 1, 256, (pDrive->uptr)->fileref); + if (rtn != 256) #endif /* USE_VGI */ + printf("%s: sim_fread error. Result = %d." NLP, __FUNCTION__, rtn); } break; case IMAGE_TYPE_CPT: @@ -603,9 +597,9 @@ static uint8 MFDC_Write(const uint32 Addr, uint8 cData) } else { sim_fseek((pDrive->uptr)->fileref, sec_offset, SEEK_SET); #ifdef USE_VGI - fwrite(sdata.raw, MFDC_SECTOR_LEN, 1, (pDrive->uptr)->fileref); + sim_fwrite(sdata.raw, 1, MFDC_SECTOR_LEN, (pDrive->uptr)->fileref); #else - fwrite(sdata.u.data, 256, 1, (pDrive->uptr)->fileref); + sim_fwrite(sdata.u.data, 1, 256, (pDrive->uptr)->fileref); #endif /* USE_VGI */ } break; diff --git a/AltairZ80/n8vem.c b/AltairZ80/n8vem.c index 7f34c383..c1dbdbe2 100644 --- a/AltairZ80/n8vem.c +++ b/AltairZ80/n8vem.c @@ -165,7 +165,7 @@ static t_stat n8vem_reset(DEVICE *dptr) { PNP_INFO *pnp = (PNP_INFO *)dptr->ctxt; - TRACE_PRINT(VERBOSE_MSG, ("N8VEM: Reset." NLP)); + TRACE_PRINT(VERBOSE_MSG, ("N8VEM: Reset.\n")); if(dptr->flags & DEV_DIS) { /* Disconnect I/O Ports */ sim_map_resource(pnp->io_base, pnp->io_size, RESOURCE_TYPE_IO, &n8vemdev, TRUE); @@ -196,7 +196,7 @@ static t_stat n8vem_reset(DEVICE *dptr) static t_stat n8vem_boot(int32 unitno, DEVICE *dptr) { - TRACE_PRINT(VERBOSE_MSG, ("N8VEM: Boot." NLP)); + TRACE_PRINT(VERBOSE_MSG, ("N8VEM: Boot.\n")); /* Clear the RAM and ROM mapping registers */ n8vem_info->mpcl_ram = 0; @@ -211,7 +211,7 @@ static t_stat n8vem_boot(int32 unitno, DEVICE *dptr) static t_stat n8vem_attach(UNIT *uptr, char *cptr) { t_stat r; - int32 i = 0; + int32 i = 0, rtn; i = find_unit_index(uptr); @@ -226,7 +226,7 @@ static t_stat n8vem_attach(UNIT *uptr, char *cptr) /* Determine length of this disk */ uptr->capac = sim_fsize(uptr->fileref); - TRACE_PRINT(VERBOSE_MSG, ("N8VEM: Attach %s." NLP, i == 0 ? "ROM" : "RAM")); + TRACE_PRINT(VERBOSE_MSG, ("N8VEM: Attach %s.\n", i == 0 ? "ROM" : "RAM")); if(i == 0) { /* Attaching ROM */ n8vem_info->rom_attached = TRUE; @@ -239,8 +239,10 @@ static t_stat n8vem_attach(UNIT *uptr, char *cptr) if (uptr->capac > N8VEM_ROM_SIZE) uptr->capac = N8VEM_ROM_SIZE; - TRACE_PRINT(VERBOSE_MSG, ("N8VEM: Reading %d bytes into ROM.\n", uptr->capac)); - fread((void *)(n8vem_info->rom), uptr->capac, 1, uptr->fileref); + rtn = fread((void *)(n8vem_info->rom), uptr->capac, 1, uptr->fileref); + TRACE_PRINT(VERBOSE_MSG, ("N8VEM: Reading %d bytes into ROM." + " Result = %ssuccessful.\n", + uptr->capac, rtn == 1 ? "" : "not ")); } } else { /* attaching RAM */ /* Erase RAM */ @@ -251,8 +253,10 @@ static t_stat n8vem_attach(UNIT *uptr, char *cptr) if(uptr->capac > N8VEM_RAM_SIZE) uptr->capac = N8VEM_RAM_SIZE; - TRACE_PRINT(VERBOSE_MSG, ("N8VEM: Reading %d bytes into RAM.\n", uptr->capac)); - fread((void *)(n8vem_info->ram), uptr->capac, 1, uptr->fileref); + rtn = fread((void *)(n8vem_info->ram), uptr->capac, 1, uptr->fileref); + TRACE_PRINT(VERBOSE_MSG, ("N8VEM: Reading %d bytes into RAM." + " Result = %ssuccessful.\n", + uptr->capac, rtn == 1 ? "" : "not ")); } } return r; @@ -270,7 +274,7 @@ static t_stat n8vem_detach(UNIT *uptr) return (SCPE_IERR); } - TRACE_PRINT(VERBOSE_MSG, ("N8VEM: Detach %s." NLP, i == 0 ? "ROM" : "RAM")); + TRACE_PRINT(VERBOSE_MSG, ("N8VEM: Detach %s.\n", i == 0 ? "ROM" : "RAM")); /* rewind to the beginning of the file. */ sim_fseek(uptr->fileref, 0, SEEK_SET); diff --git a/AltairZ80/s100_disk2.c b/AltairZ80/s100_disk2.c index a0cdc5fb..1af9a918 100644 --- a/AltairZ80/s100_disk2.c +++ b/AltairZ80/s100_disk2.c @@ -132,9 +132,6 @@ extern void raise_ss1_interrupt(uint8 intnum); #define UNIT_V_DISK2_VERBOSE (UNIT_V_UF + 1) /* verbose mode, i.e. show error messages */ #define UNIT_DISK2_VERBOSE (1 << UNIT_V_DISK2_VERBOSE) #define DISK2_CAPACITY (C20MB_NTRACKS*C20MB_NHEADS*C20MB_NSECTORS*C20MB_SECTSIZE) /* Default Disk Capacity */ -#define IMAGE_TYPE_DSK 1 /* Flat binary "DSK" image file. */ -#define IMAGE_TYPE_IMD 2 /* ImageDisk "IMD" image file. */ -#define IMAGE_TYPE_CPT 3 /* CP/M Transfer "CPT" image file. */ static t_stat disk2_reset(DEVICE *disk2_dev); static t_stat disk2_attach(UNIT *uptr, char *cptr); @@ -226,7 +223,6 @@ static t_stat disk2_attach(UNIT *uptr, char *cptr) { t_stat r = SCPE_OK; DISK2_DRIVE_INFO *pDrive; - char header[4]; int i = 0; i = find_unit_index(uptr); @@ -260,16 +256,10 @@ static t_stat disk2_attach(UNIT *uptr, char *cptr) uptr->u3 = IMAGE_TYPE_DSK; if(uptr->capac > 0) { - fgets(header, 4, uptr->fileref); - if(!strcmp(header, "IMD")) { - uptr->u3 = IMAGE_TYPE_IMD; - } else if(!strcmp(header, "CPT")) { - printf("CPT images not yet supported\n"); - uptr->u3 = IMAGE_TYPE_CPT; + r = assignDiskType(uptr); + if (r != SCPE_OK) { disk2_detach(uptr); - return SCPE_OPENERR; - } else { - uptr->u3 = IMAGE_TYPE_DSK; + return r; } } @@ -395,6 +385,7 @@ static uint8 DISK2_Write(const uint32 Addr, uint8 cData) uint8 i; long file_offset; DISK2_DRIVE_INFO *pDrive; + size_t rtn; pDrive = &disk2_info->drive[disk2_info->sel_drive]; @@ -457,7 +448,10 @@ static uint8 DISK2_Write(const uint32 Addr, uint8 cData) sim_fseek((pDrive->uptr)->fileref, track_offset + (disk2_info->head_sel * pDrive->nsectors * (pDrive->sectsize + 3)), SEEK_SET); for(i=0;insectors;i++) { /* Read sector */ - fread(sdata.raw, (pDrive->sectsize + 3), 1, (pDrive->uptr)->fileref); + rtn = sim_fread(sdata.raw, 1, (pDrive->sectsize + 3), (pDrive->uptr)->fileref); + if (rtn != (size_t)(pDrive->sectsize + 3)) { + TRACE_PRINT(ERROR_MSG, ("DISK2: " ADDRESS_FORMAT " READ_DATA: sim_fread error." NLP, PCX)); + } if(sdata.u.header[2] == disk2_info->sector) { if(sdata.u.header[0] != disk2_info->cyl) { /*pDrive->track) { */ printf("DISK2: " ADDRESS_FORMAT " READ_DATA Incorrect header: track" NLP, PCX); @@ -497,7 +491,10 @@ static uint8 DISK2_Write(const uint32 Addr, uint8 cData) for(i=0;insectors;i++) { /* Read sector */ file_offset = ftell((pDrive->uptr)->fileref); - fread(sdata.raw, 3, 1, (pDrive->uptr)->fileref); + rtn = sim_fread(sdata.raw, 1, 3, (pDrive->uptr)->fileref); + if (rtn != 3) { + TRACE_PRINT(ERROR_MSG, ("DISK2: " ADDRESS_FORMAT " WRITE_DATA: sim_fread error." NLP, PCX)); + } if(sdata.u.header[2] == disk2_info->sector) { if(sdata.u.header[0] != disk2_info->cyl) { printf("DISK2: " ADDRESS_FORMAT " WRITE_DATA Incorrect header: track" NLP, PCX); @@ -510,10 +507,13 @@ static uint8 DISK2_Write(const uint32 Addr, uint8 cData) selchan_dma(sdata.u.data, pDrive->sectsize); sim_fseek((pDrive->uptr)->fileref, file_offset+3, SEEK_SET); - fwrite(sdata.u.data, (pDrive->sectsize), 1, (pDrive->uptr)->fileref); + sim_fwrite(sdata.u.data, 1, (pDrive->sectsize), (pDrive->uptr)->fileref); break; } - fread(sdata.raw, pDrive->sectsize, 1, (pDrive->uptr)->fileref); + rtn = sim_fread(sdata.raw, 1, pDrive->sectsize, (pDrive->uptr)->fileref); + if (rtn != (size_t)(pDrive->sectsize)) { + TRACE_PRINT(ERROR_MSG, ("DISK2: " ADDRESS_FORMAT " WRITE_DATA: sim_fread error." NLP, PCX)); + } if(i == pDrive->nsectors) { printf("DISK2: " ADDRESS_FORMAT " Sector not found" NLP, PCX); disk2_info->timeout = 1; @@ -532,7 +532,7 @@ static uint8 DISK2_Write(const uint32 Addr, uint8 cData) i = disk2_info->hdr_sector; selchan_dma(sdata.raw, 3); sim_fseek((pDrive->uptr)->fileref, track_offset + (disk2_info->head_sel * (pDrive->sectsize + 3) * pDrive->nsectors) + (i * (pDrive->sectsize + 3)), SEEK_SET); - fwrite(sdata.raw, 3, 1, (pDrive->uptr)->fileref); + sim_fwrite(sdata.raw, 1, 3, (pDrive->uptr)->fileref); disk2_info->hdr_sector++; if(disk2_info->hdr_sector >= pDrive->nsectors) { @@ -544,7 +544,10 @@ static uint8 DISK2_Write(const uint32 Addr, uint8 cData) track_offset = pDrive->track * pDrive->nheads * pDrive->nsectors * (pDrive->sectsize + 3); TRACE_PRINT(CMD_MSG, ("DISK2: " ADDRESS_FORMAT " READ_HEADER Command" NLP, PCX)); sim_fseek((pDrive->uptr)->fileref, track_offset + (disk2_info->head_sel * pDrive->nsectors * (pDrive->sectsize + 3)), SEEK_SET); - fread(sdata.raw, 3, 1, (pDrive->uptr)->fileref); + rtn = sim_fread(sdata.raw, 1, 3, (pDrive->uptr)->fileref); + if (rtn != 3) { + TRACE_PRINT(ERROR_MSG, ("DISK2: " ADDRESS_FORMAT " READ_HEADER: sim_fread error." NLP, PCX)); + } selchan_dma(sdata.raw, 3); break; diff --git a/AltairZ80/s100_disk3.c b/AltairZ80/s100_disk3.c index 6602f9cb..9d578a83 100644 --- a/AltairZ80/s100_disk3.c +++ b/AltairZ80/s100_disk3.c @@ -193,9 +193,6 @@ extern uint8 GetByteDMA(const uint32 Addr); #define UNIT_V_DISK3_VERBOSE (UNIT_V_UF + 1) /* verbose mode, i.e. show error messages */ #define UNIT_DISK3_VERBOSE (1 << UNIT_V_DISK3_VERBOSE) #define DISK3_CAPACITY (C20MB_NTRACKS*C20MB_NHEADS*C20MB_NSECTORS*C20MB_SECTSIZE) /* Default Disk Capacity */ -#define IMAGE_TYPE_DSK 1 /* Flat binary "DSK" image file. */ -#define IMAGE_TYPE_IMD 2 /* ImageDisk "IMD" image file. */ -#define IMAGE_TYPE_CPT 3 /* CP/M Transfer "CPT" image file. */ static t_stat disk3_reset(DEVICE *disk3_dev); static t_stat disk3_attach(UNIT *uptr, char *cptr); @@ -293,8 +290,7 @@ static t_stat disk3_attach(UNIT *uptr, char *cptr) { t_stat r = SCPE_OK; DISK3_DRIVE_INFO *pDrive; - char header[4]; - unsigned int i = 0; + int i = 0; i = find_unit_index(uptr); if (i == -1) { @@ -326,16 +322,10 @@ static t_stat disk3_attach(UNIT *uptr, char *cptr) uptr->u3 = IMAGE_TYPE_DSK; if(uptr->capac > 0) { - fgets(header, 4, uptr->fileref); - if(!strcmp(header, "IMD")) { - uptr->u3 = IMAGE_TYPE_IMD; - } else if(!strcmp(header, "CPT")) { - printf("CPT images not yet supported\n"); - uptr->u3 = IMAGE_TYPE_CPT; + r = assignDiskType(uptr); + if (r != SCPE_OK) { disk3_detach(uptr); - return SCPE_OPENERR; - } else { - uptr->u3 = IMAGE_TYPE_DSK; + return r; } } @@ -517,6 +507,7 @@ static uint8 DISK3_Write(const uint32 Addr, uint8 cData) uint32 file_offset; uint32 xfr_count = 0; uint8 *dataBuffer; + size_t rtn; if(disk3_info->mode == DISK3_MODE_ABS) { TRACE_PRINT(ERROR_MSG, ("DISK3: Absolute addressing not supported." NLP)); @@ -539,16 +530,19 @@ static uint8 DISK3_Write(const uint32 Addr, uint8 cData) sim_fseek((pDrive->uptr)->fileref, file_offset, SEEK_SET); if(disk3_info->iopb[DISK3_IOPB_ARG1] == 1) { /* Read */ - TRACE_PRINT(RD_DATA_MSG, ("DISK3[%d]: " ADDRESS_FORMAT " READ @0x%05x T:%04d/S:%04d/#:%d" NLP, - disk3_info->sel_drive, - PCX, - disk3_info->dma_addr, - pDrive->cur_track, - pDrive->cur_sect, - pDrive->xfr_nsects - )); + rtn = sim_fread(dataBuffer, 1, xfr_len, (pDrive->uptr)->fileref); + + TRACE_PRINT(RD_DATA_MSG, + ("DISK3[%d]: " ADDRESS_FORMAT " READ @0x%05x T:%04d/S:%04d/#:%d %s" NLP, + disk3_info->sel_drive, + PCX, + disk3_info->dma_addr, + pDrive->cur_track, + pDrive->cur_sect, + pDrive->xfr_nsects, + rtn == (size_t)xfr_len ? "OK" : "NOK" + )); - fread(dataBuffer, xfr_len, 1, (pDrive->uptr)->fileref); /* Perform DMA Transfer */ for(xfr_count = 0;xfr_count < xfr_len; xfr_count++) { @@ -569,7 +563,7 @@ static uint8 DISK3_Write(const uint32 Addr, uint8 cData) dataBuffer[xfr_count] = GetByteDMA(disk3_info->dma_addr + xfr_count); } - fwrite(dataBuffer, xfr_len, 1, (pDrive->uptr)->fileref); + sim_fwrite(dataBuffer, 1, xfr_len, (pDrive->uptr)->fileref); } free(dataBuffer); @@ -618,7 +612,7 @@ static uint8 DISK3_Write(const uint32 Addr, uint8 cData) memset(fmtBuffer, disk3_info->iopb[DISK3_IOPB_ARG2], data_len); sim_fseek((pDrive->uptr)->fileref, file_offset, SEEK_SET); - fwrite(fmtBuffer, data_len, 1, (pDrive->uptr)->fileref); + sim_fwrite(fmtBuffer, 1, data_len, (pDrive->uptr)->fileref); free(fmtBuffer); diff --git a/AltairZ80/s100_fif.c b/AltairZ80/s100_fif.c index 0b7e8b1c..913de8e0 100644 --- a/AltairZ80/s100_fif.c +++ b/AltairZ80/s100_fif.c @@ -2,7 +2,7 @@ IMSAI FIF Disk Controller by Ernie Price - Based on altairz80_dsk.c, Copyright (c) 2002-2008, Peter Schorn + Based on altairz80_dsk.c, Copyright (c) 2002-2010, Peter Schorn Plug-n-Play added by Howard M. Harte @@ -197,6 +197,7 @@ static int DoDiskOperation(desc_t *dsc, uint8 val) addr; FILE *cpx; UNIT *uptr; + int32 rtn; #if 0 printf("%02x %02x %02x %02x %02x %02x %02x %02x \n", @@ -242,14 +243,19 @@ static int DoDiskOperation(desc_t *dsc, uint8 val) /* write a track worth of sectors */ for (kt=0; kt < SPT; kt++) { - fwrite(blanksec, 1, sizeof(blanksec), cpx); + sim_fwrite(blanksec, 1, sizeof(blanksec), cpx); } break; case READ_SEC: addr = (dsc->track * SPT) + dsc->sector - 1; sim_fseek(cpx, addr * SEC_SZ, SEEK_SET); - fread(blanksec, 1, SEC_SZ, cpx); + rtn = sim_fread(blanksec, 1, SEC_SZ, cpx); + if ( (rtn != SEC_SZ) && (current_disk_flags & UNIT_DSK_VERBOSE) && + (warnAttached[current_disk] < warnLevelDSK) ) { + warnAttached[current_disk]++; + printf("FIF%i: " ADDRESS_FORMAT " sim_fread error." NLP, current_disk, PCX); + } addr = dsc->addr_l + (dsc->addr_h << 8); /* no assumption on endianness */ for (kt = 0; kt < SEC_SZ; kt++) { PutBYTEWrapper(addr++, blanksec[kt]); @@ -263,7 +269,7 @@ static int DoDiskOperation(desc_t *dsc, uint8 val) for (kt = 0; kt < SEC_SZ; kt++) { blanksec[kt] = GetBYTEWrapper(addr++); } - fwrite(blanksec, 1, SEC_SZ, cpx); + sim_fwrite(blanksec, 1, SEC_SZ, cpx); break; default: @@ -447,7 +453,7 @@ uint8 FTP(int32 BC, int32 DE) case 20: memset(temp, 0x1a, SEC_SZ); - retval = fread(temp, 1, SEC_SZ, myfile) ? 0 : 1; + retval = sim_fread(temp, 1, SEC_SZ, myfile) ? 0 : 1; xfero( DE, temp, SEC_SZ); if (retval) { diff --git a/AltairZ80/s100_hdc1001.c b/AltairZ80/s100_hdc1001.c index 75cf1fd3..a5afa7fb 100644 --- a/AltairZ80/s100_hdc1001.c +++ b/AltairZ80/s100_hdc1001.c @@ -112,9 +112,6 @@ extern uint8 GetBYTEWrapper(const uint32 Addr); #define UNIT_V_HDC1001_VERBOSE (UNIT_V_UF + 1) /* verbose mode, i.e. show error messages */ #define UNIT_HDC1001_VERBOSE (1 << UNIT_V_HDC1001_VERBOSE) #define HDC1001_CAPACITY (77*2*16*256) /* Default Micropolis Disk Capacity */ -#define IMAGE_TYPE_DSK 1 /* Flat binary "DSK" image file. */ -#define IMAGE_TYPE_IMD 2 /* ImageDisk "IMD" image file. */ -#define IMAGE_TYPE_CPT 3 /* CP/M Transfer "CPT" image file. */ static t_stat hdc1001_reset(DEVICE *hdc1001_dev); static t_stat hdc1001_attach(UNIT *uptr, char *cptr); @@ -137,13 +134,13 @@ static REG hdc1001_reg[] = { }; static MTAB hdc1001_mod[] = { - { MTAB_XTD|MTAB_VDV, 0, "IOBASE", "IOBASE", &set_iobase, &show_iobase, NULL }, - { UNIT_HDC1001_WLK, 0, "WRTENB", "WRTENB", NULL }, - { UNIT_HDC1001_WLK, UNIT_HDC1001_WLK, "WRTLCK", "WRTLCK", NULL }, + { MTAB_XTD|MTAB_VDV, 0, "IOBASE", "IOBASE", &set_iobase, &show_iobase, NULL }, + { UNIT_HDC1001_WLK, 0, "WRTENB", "WRTENB", NULL }, + { UNIT_HDC1001_WLK, UNIT_HDC1001_WLK, "WRTLCK", "WRTLCK", NULL }, /* quiet, no warning messages */ - { UNIT_HDC1001_VERBOSE, 0, "QUIET", "QUIET", NULL }, + { UNIT_HDC1001_VERBOSE, 0, "QUIET", "QUIET", NULL }, /* verbose, show warning messages */ - { UNIT_HDC1001_VERBOSE, UNIT_HDC1001_VERBOSE, "VERBOSE", "VERBOSE", NULL }, + { UNIT_HDC1001_VERBOSE, UNIT_HDC1001_VERBOSE, "VERBOSE", "VERBOSE", NULL }, { 0 } }; @@ -198,8 +195,7 @@ static t_stat hdc1001_attach(UNIT *uptr, char *cptr) { t_stat r = SCPE_OK; HDC1001_DRIVE_INFO *pDrive; - char header[4]; - unsigned int i = 0; + int i = 0; i = find_unit_index(uptr); if (i == -1) { @@ -231,16 +227,10 @@ static t_stat hdc1001_attach(UNIT *uptr, char *cptr) uptr->u3 = IMAGE_TYPE_DSK; if(uptr->capac > 0) { - fgets(header, 4, uptr->fileref); - if(!strcmp(header, "IMD")) { - uptr->u3 = IMAGE_TYPE_IMD; - } else if(!strcmp(header, "CPT")) { - printf("CPT images not yet supported\n"); - uptr->u3 = IMAGE_TYPE_CPT; + r = assignDiskType(uptr); + if (r != SCPE_OK) { hdc1001_detach(uptr); - return SCPE_OPENERR; - } else { - uptr->u3 = IMAGE_TYPE_DSK; + return r; } } @@ -372,7 +362,6 @@ static uint8 HDC1001_Write(const uint32 Addr, uint8 cData) switch(Addr & 0x07) { case TF_SDH: hdc1001_info->sel_drive = (cData >> 3) & 0x03; - pDrive = &hdc1001_info->drive[hdc1001_info->sel_drive]; case TF_DATA: case TF_ERROR: case TF_SECNT: @@ -393,14 +382,10 @@ static uint8 HDC1001_Write(const uint32 Addr, uint8 cData) hdc1001_info->taskfile[TF_SDH] & 0x07, hdc1001_info->taskfile[TF_SECNO], pDrive->xfr_nsects)); - break; default: break; } - - - return 0; } @@ -541,7 +526,7 @@ static uint8 HDC1001_Read(const uint32 Addr) pDrive->xfr_nsects )); - fread(dataBuffer, xfr_len, 1, (pDrive->uptr)->fileref); + sim_fread(dataBuffer, 1, xfr_len, (pDrive->uptr)->fileref); /* Perform DMA Transfer */ for(xfr_count = 0;xfr_count < xfr_len; xfr_count++) { @@ -562,7 +547,7 @@ static uint8 HDC1001_Read(const uint32 Addr) dataBuffer[xfr_count] = GetBYTEWrapper(hdc1001_info->dma_addr + xfr_count); } - fwrite(dataBuffer, xfr_len, 1, (pDrive->uptr)->fileref); + sim_fwrite(dataBuffer, 1, xfr_len, (pDrive->uptr)->fileref); } free(dataBuffer); @@ -593,7 +578,7 @@ static uint8 HDC1001_Read(const uint32 Addr) memset(fmtBuffer, hdc1001_info->iopb[4], data_len); sim_fseek((pDrive->uptr)->fileref, file_offset, SEEK_SET); - fwrite(fmtBuffer, data_len, 1, (pDrive->uptr)->fileref); + sim_fwrite(fmtBuffer, 1, data_len, (pDrive->uptr)->fileref); free(fmtBuffer); diff --git a/AltairZ80/s100_mdsad.c b/AltairZ80/s100_mdsad.c index 7e29d069..639df98c 100644 --- a/AltairZ80/s100_mdsad.c +++ b/AltairZ80/s100_mdsad.c @@ -42,6 +42,7 @@ /*#define DBG_MSG*/ #include "altairz80_defs.h" +#include "sim_imd.h" #if defined (_WIN32) #include @@ -160,8 +161,6 @@ static SECTOR_FORMAT sdata; #define UNIT_V_MDSAD_VERBOSE (UNIT_V_UF + 1) /* verbose mode, i.e. show error messages */ #define UNIT_MDSAD_VERBOSE (1 << UNIT_V_MDSAD_VERBOSE) #define MDSAD_CAPACITY (70*10*MDSAD_SECTOR_LEN) /* Default North Star Disk Capacity */ -#define IMAGE_TYPE_DSK 1 /* Flat binary "DSK" image file. */ -#define IMAGE_TYPE_CPT 3 /* CP/M Transfer "CPT" image file. */ /* MDS-AD Controller Subcases */ #define MDSAD_READ_ROM 0 @@ -325,8 +324,8 @@ t_stat mdsad_attach(UNIT *uptr, char *cptr) uptr->u3 = IMAGE_TYPE_DSK; if(uptr->capac > 0) { - fgets(header, 4, uptr->fileref); - if(!strcmp(header, "CPT")) { + char *rtn = fgets(header, 4, uptr->fileref); + if((rtn != NULL) && (strncmp(header, "CPT", 3) == 0)) { printf("CPT images not yet supported\n"); uptr->u3 = IMAGE_TYPE_CPT; mdsad_detach(uptr); @@ -338,7 +337,7 @@ t_stat mdsad_attach(UNIT *uptr, char *cptr) if (uptr->flags & UNIT_MDSAD_VERBOSE) printf("MDSAD%d, attached to '%s', type=%s, len=%d\n", i, cptr, - uptr->u3 == uptr->u3 == IMAGE_TYPE_CPT ? "CPT" : "DSK", + uptr->u3 == IMAGE_TYPE_CPT ? "CPT" : "DSK", uptr->capac); return SCPE_OK; @@ -450,6 +449,7 @@ static uint8 MDSAD_Read(const uint32 Addr) uint8 cData; uint8 ds; MDSAD_DRIVE_INFO *pDrive; + int32 rtn; cData = 0x00; @@ -502,7 +502,7 @@ static uint8 MDSAD_Read(const uint32 Addr) printf(".fileref is NULL!" NLP); } else { sim_fseek((pDrive->uptr)->fileref, sec_offset, SEEK_SET); - fwrite(sdata.u.data, MDSAD_SECTOR_LEN, 1, + sim_fwrite(sdata.u.data, 1, MDSAD_SECTOR_LEN, (pDrive->uptr)->fileref); } break; @@ -735,8 +735,11 @@ static uint8 MDSAD_Read(const uint32 Addr) } else { sim_fseek((pDrive->uptr)->fileref, sec_offset, SEEK_SET); - fread(&sdata.u.data[0], MDSAD_SECTOR_LEN, - 1, (pDrive->uptr)->fileref); + rtn = sim_fread(&sdata.u.data[0], 1, MDSAD_SECTOR_LEN, + (pDrive->uptr)->fileref); + if (rtn != MDSAD_SECTOR_LEN) { + TRACE_PRINT(ERROR_MSG, ("MDSAD: " ADDRESS_FORMAT " READ: sim_fread error." NLP, PCX)); + } } break; case IMAGE_TYPE_CPT: diff --git a/AltairZ80/sim_imd.c b/AltairZ80/sim_imd.c index c487fa76..3d746d93 100644 --- a/AltairZ80/sim_imd.c +++ b/AltairZ80/sim_imd.c @@ -63,8 +63,11 @@ #endif /* use NLP for new line printing while the simulation is running */ -#define UNIX_PLATFORM (defined (__linux) || defined(__NetBSD__) \ -|| defined (__OpenBSD__) || defined (__FreeBSD__) || defined (__APPLE__)) +#if defined (__linux) || defined(__NetBSD__) || defined (__OpenBSD__) || defined (__FreeBSD__) || defined (__APPLE__) +#define UNIX_PLATFORM 1 +#else +#define UNIX_PLATFORM 0 +#endif #if UNIX_PLATFORM #define NLP "\r\n" @@ -72,7 +75,7 @@ #define NLP "\n" #endif -#if defined (__MWERKS__) && defined (macintosh) +#if (defined (__MWERKS__) && defined (macintosh)) || defined(__DECC) #define __FUNCTION__ __FILE__ #endif @@ -174,7 +177,7 @@ static t_stat diskParse(DISK_INFO *myDisk, uint32 isVerbose) do { DBG_PRINT(("start of track %d at file offset %ld" NLP, myDisk->ntracks, ftell(myDisk->file))); - fread(&imd, 1, 5, myDisk->file); + sim_fread(&imd, 1, 5, myDisk->file); if (feof(myDisk->file)) break; sectorSize = 128 << imd.sectsize; @@ -197,7 +200,10 @@ static t_stat diskParse(DISK_INFO *myDisk, uint32 isVerbose) myDisk->track[imd.cyl][imd.head].nsects = imd.nsects; myDisk->track[imd.cyl][imd.head].sectsize = sectorSize; - fread(sectorMap, 1, imd.nsects, myDisk->file); + if (sim_fread(sectorMap, 1, imd.nsects, myDisk->file) != imd.nsects) { + printf("SIM_IMD: Corrupt file [Sector Map]." NLP); + return (SCPE_OPENERR); + } myDisk->track[imd.cyl][imd.head].start_sector = imd.nsects; DBG_PRINT(("\tSector Map: ")); for(i=0;itrack[imd.cyl][imd.head].start_sector)); if(sectorHeadwithFlags & IMD_FLAG_SECT_HEAD_MAP) { - fread(sectorHeadMap, 1, imd.nsects, myDisk->file); + if (sim_fread(sectorHeadMap, 1, imd.nsects, myDisk->file) != imd.nsects) { + printf("SIM_IMD: Corrupt file [Sector Head Map]." NLP); + return (SCPE_OPENERR); + } DBG_PRINT(("\tSector Head Map: ")); for(i=0;ifile); + if (sim_fread(sectorCylMap, 1, imd.nsects, myDisk->file) != imd.nsects) { + printf("SIM_IMD: Corrupt file [Sector Cyl Map]." NLP); + return (SCPE_OPENERR); + } DBG_PRINT(("\tSector Cyl Map: ")); for(i=0;itrack[Cyl][Head].sectsize, myDisk->file); + if (sim_fread(buf, 1, myDisk->track[Cyl][Head].sectsize, myDisk->file) != myDisk->track[Cyl][Head].sectsize) { + printf("SIM_IMD[%s]: sim_fread error for SECT_RECORD_NORM_DAM." NLP, __FUNCTION__); + } *readlen = myDisk->track[Cyl][Head].sectsize; break; case SECT_RECORD_NORM_COMP_ERR: /* Compressed Normal Data */ @@ -641,7 +655,7 @@ t_stat sectWrite(DISK_INFO *myDisk, } fputc(sectRecordType, myDisk->file); - fwrite(buf, 1, myDisk->track[Cyl][Head].sectsize, myDisk->file); + sim_fwrite(buf, 1, myDisk->track[Cyl][Head].sectsize, myDisk->file); *writelen = myDisk->track[Cyl][Head].sectsize; return(SCPE_OK); @@ -729,9 +743,9 @@ t_stat trackWrite(DISK_INFO *myDisk, track_header.sectsize = sectorLen; /* Forward to end of the file, write track header and sector map. */ - fseek(myDisk->file, 0, SEEK_END); - fwrite(&track_header, sizeof(IMD_HEADER), 1, fileref); - fwrite(sectorMap, 1, numSectors, fileref); + sim_fseek(myDisk->file, 0, SEEK_END); + sim_fwrite(&track_header, 1, sizeof(IMD_HEADER), fileref); + sim_fwrite(sectorMap, 1, numSectors, fileref); /* Compute data length, and fill a sector buffer with the * sector record type as the first byte, and fill the sector @@ -744,7 +758,7 @@ t_stat trackWrite(DISK_INFO *myDisk, /* For each sector on the track, write the record type and sector data. */ for(i=0;ifileref) == NULL) + uptr->u3 = IMAGE_TYPE_DSK; + else if (strncmp(header, "IMD", 3) == 0) + uptr->u3 = IMAGE_TYPE_IMD; + else if(strncmp(header, "CPT", 3) == 0) { + printf("CPT images not yet supported.\n"); + uptr->u3 = IMAGE_TYPE_CPT; + result = SCPE_OPENERR; + } + else + uptr->u3 = IMAGE_TYPE_DSK; + return result; +} + diff --git a/AltairZ80/sim_imd.h b/AltairZ80/sim_imd.h index e90dc394..b6989111 100644 --- a/AltairZ80/sim_imd.h +++ b/AltairZ80/sim_imd.h @@ -85,6 +85,10 @@ typedef struct { #define IMD_MODE_FM(x) (x <= IMD_MODE_250K_FM) #define IMD_MODE_MFM(x) (x >= IMD_MODE_500K_MFM) +#define IMAGE_TYPE_DSK 1 /* Flat binary "DSK" image file. */ +#define IMAGE_TYPE_IMD 2 /* ImageDisk "IMD" image file. */ +#define IMAGE_TYPE_CPT 3 /* CP/M Transfer "CPT" image file. */ + typedef struct { uint8 mode; uint8 nsects; @@ -121,3 +125,4 @@ extern t_stat trackWrite(DISK_INFO *myDisk, uint8 mode, uint8 fillbyte, uint32 *flags); +extern t_stat assignDiskType(UNIT *uptr); diff --git a/AltairZ80/vfdhd.c b/AltairZ80/vfdhd.c index c0173e10..df021b87 100644 --- a/AltairZ80/vfdhd.c +++ b/AltairZ80/vfdhd.c @@ -146,9 +146,6 @@ extern uint32 sim_map_resource(uint32 baseaddr, uint32 size, uint32 resource_typ #define UNIT_V_VFDHD_VERBOSE (UNIT_V_UF + 1) /* verbose mode, i.e. show error messages */ #define UNIT_VFDHD_VERBOSE (1 << UNIT_V_VFDHD_VERBOSE) #define VFDHD_CAPACITY (77*2*16*256) /* Default Micropolis Disk Capacity */ -#define IMAGE_TYPE_DSK 1 /* Flat binary "DSK" image file. */ -#define IMAGE_TYPE_IMD 2 /* ImageDisk "IMD" image file. */ -#define IMAGE_TYPE_CPT 3 /* CP/M Transfer "CPT" image file. */ static t_stat vfdhd_reset(DEVICE *vfdhd_dev); static t_stat vfdhd_attach(UNIT *uptr, char *cptr); @@ -230,7 +227,6 @@ static t_stat vfdhd_reset(DEVICE *dptr) /* Attach routine */ static t_stat vfdhd_attach(UNIT *uptr, char *cptr) { - char header[4]; t_stat r; unsigned int i = 0; @@ -252,16 +248,10 @@ static t_stat vfdhd_attach(UNIT *uptr, char *cptr) } if(uptr->capac > 0) { - fgets(header, 4, uptr->fileref); - if(!strcmp(header, "IMD")) { - uptr->u3 = IMAGE_TYPE_IMD; - } else if(!strcmp(header, "CPT")) { - printf("CPT images not yet supported\n"); - uptr->u3 = IMAGE_TYPE_CPT; + r = assignDiskType(uptr); + if (r != SCPE_OK) { vfdhd_detach(uptr); - return SCPE_OPENERR; - } else { - uptr->u3 = IMAGE_TYPE_DSK; + return r; } } else { /* creating file, must be DSK format. */ @@ -542,6 +532,7 @@ static void VFDHD_Command(void) uint32 sec_offset; uint32 flags; + int32 rtn; pDrive = &(vfdhd_info->drive[vfdhd_info->sel_drive]); @@ -604,7 +595,10 @@ static void VFDHD_Command(void) printf(".fileref is NULL!" NLP); } else { sim_fseek((pDrive->uptr)->fileref, sec_offset, SEEK_SET); - fread(&sdata.u.sync, 274, /*VFDHD_SECTOR_LEN,*/ 1, (pDrive->uptr)->fileref); + rtn = sim_fread(&sdata.u.sync, 1, 274, /*VFDHD_SECTOR_LEN,*/ (pDrive->uptr)->fileref); + if (rtn != 274) { + TRACE_PRINT(ERROR_MSG, ("VFDHD: " ADDRESS_FORMAT " READ: sim_fread error." NLP, PCX)); + } memset(&sdata.u.preamble, 0, 40); memset(&sdata.u.ecc, 0, 5); /* Clear out the ECC and ECC Valid bytes */ @@ -670,9 +664,9 @@ static void VFDHD_Command(void) vfdhd_info->sector)); sim_fseek((pDrive->uptr)->fileref, sec_offset, SEEK_SET); #ifdef USE_VGI - fwrite(&sdata.u.sync, VFDHD_SECTOR_LEN, 1, (pDrive->uptr)->fileref); + sim_fwrite(&sdata.u.sync, 1, VFDHD_SECTOR_LEN, (pDrive->uptr)->fileref); #else - fwrite(sdata.u.data, 256, 1, (pDrive->uptr)->fileref); + sim_fwrite(sdata.u.data, 1, 256, (pDrive->uptr)->fileref); #endif /* USE_VGI */ } break; diff --git a/AltairZ80/wd179x.c b/AltairZ80/wd179x.c index dc1621fb..e0f77454 100644 --- a/AltairZ80/wd179x.c +++ b/AltairZ80/wd179x.c @@ -152,6 +152,7 @@ extern t_stat set_iobase(UNIT *uptr, int32 val, char *cptr, void *desc); extern t_stat show_iobase(FILE *st, UNIT *uptr, int32 val, void *desc); extern uint32 sim_map_resource(uint32 baseaddr, uint32 size, uint32 resource_type, int32 (*routine)(const int32, const int32, const int32), uint8 unmap); +extern int32 find_unit_index (UNIT *uptr); t_stat wd179x_svc (UNIT *uptr); @@ -165,9 +166,6 @@ extern uint8 GetBYTEWrapper(const uint32 Addr); #define UNIT_WD179X_VERBOSE (1 << UNIT_V_WD179X_VERBOSE) #define WD179X_CAPACITY (77*2*16*256) /* Default Micropolis Disk Capacity */ #define WD179X_CAPACITY_SSSD (77*1*26*128) /* Single-sided Single Density IBM Diskette1 */ -#define IMAGE_TYPE_DSK 1 /* Flat binary "DSK" image file. */ -#define IMAGE_TYPE_IMD 2 /* ImageDisk "IMD" image file. */ -#define IMAGE_TYPE_CPT 3 /* CP/M Transfer "CPT" image file. */ /* Write Track (format) Statemachine states */ #define FMT_GAP1 1 @@ -197,7 +195,6 @@ extern uint8 GetBYTEWrapper(const uint32 Addr); static int32 wd179xdev(const int32 port, const int32 io, const int32 data); static t_stat wd179x_reset(DEVICE *dptr); -int32 find_unit_index (UNIT *uptr); uint8 floorlog2(unsigned int n); WD179X_INFO wd179x_info_data = { { 0x0, 0, 0x30, 4 } }; @@ -278,8 +275,6 @@ static t_stat wd179x_reset(DEVICE *dptr) return SCPE_OK; } -extern int32 find_unit_index (UNIT *uptr); - void wd179x_external_restore(void) { WD179X_DRIVE_INFO *pDrive; @@ -330,8 +325,8 @@ t_stat wd179x_attach(UNIT *uptr, char *cptr) wd179x_info->drive[i].ready = 0; if(uptr->capac > 0) { - fgets(header, 4, uptr->fileref); - if(strncmp(header, "IMD", 3)) { + char *rtn = fgets(header, 4, uptr->fileref); + if ((rtn != NULL) && strncmp(header, "IMD", 3)) { printf("WD179X: Only IMD disk images are supported\n"); wd179x_info->drive[i].uptr = NULL; return SCPE_OPENERR; diff --git a/H316/h316_cpu.c b/H316/h316_cpu.c index d336ee4a..4f3d64ed 100644 --- a/H316/h316_cpu.c +++ b/H316/h316_cpu.c @@ -1,6 +1,6 @@ /* h316_cpu.c: Honeywell 316/516 CPU simulator - Copyright (c) 1999-2008, Robert M. Supnik + Copyright (c) 1999-2010, Robert M. Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -25,6 +25,7 @@ cpu H316/H516 CPU + 10-Jan-10 RMS Fixed bugs in LDX, STX introduced in 3.8-1 (from Theo Engel) 28-Apr-07 RMS Removed clock initialization 03-Apr-06 RMS Fixed bugs in LLL, LRL (from Theo Engel) 22-Sep-05 RMS Fixed declarations (from Sterling Garwood) @@ -614,13 +615,13 @@ switch (I_GETOP (MB)) { /* case on <1:6> */ break; case 015: case 055: /* STX */ - if (reason = Ea (MB, &Y)) /* eff addr */ + if (reason = Ea (MB & ~IDX, &Y)) /* eff addr */ break; Write (Y, XR); /* store XR */ break; case 035: case 075: /* LDX */ - if (reason = Ea (MB, &Y)) /* eff addr */ + if (reason = Ea (MB & ~IDX, &Y)) /* eff addr */ break; XR = Read (Y); /* load XR */ break; diff --git a/HP2100/hp2100_cpu.h b/HP2100/hp2100_cpu.h index 707c4af0..4b1f8e94 100644 --- a/HP2100/hp2100_cpu.h +++ b/HP2100/hp2100_cpu.h @@ -1,6 +1,6 @@ /* hp2100_cpu.h: HP 2100 CPU definitions - Copyright (c) 2005-2008, Robert M. Supnik + Copyright (c) 2005-2010, Robert M. Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -23,6 +23,7 @@ be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from Robert M Supnik. + 03-Jan-10 RMS Changed declarations of mp_control, mp_mefvv, for VMS compiler 15-Jul-08 JDB Rearranged declarations with hp2100_cpu.c and hp2100_defs.h 26-Jun-08 JDB Added mp_control to CPU state externals 24-Apr-08 JDB Added calc_defer() prototype @@ -285,10 +286,10 @@ extern uint32 dms_enb; extern uint32 dms_ump; extern uint32 dms_sr; extern uint32 dms_vr; -extern uint32 mp_control; +extern FLIP_FLOP mp_control; extern uint32 mp_fence; extern uint32 mp_viol; -extern uint32 mp_mevff; +extern FLIP_FLOP mp_mevff; extern uint32 iop_sp; extern t_bool ion_defer; extern uint32 intaddr; diff --git a/I1401/i1401_cd.c b/I1401/i1401_cd.c index eea3b5b2..f1912cf7 100644 --- a/I1401/i1401_cd.c +++ b/I1401/i1401_cd.c @@ -1,6 +1,6 @@ /* i1401_cd.c: IBM 1402 card reader/punch - Copyright (c) 1993-2008, Robert M. Supnik + Copyright (c) 1993-2010, Robert M. Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -35,6 +35,8 @@ Cards are represented as ASCII text streams terminated by newlines. This allows cards to be created and edited as normal files. + 24-Mar-09 RMS Fixed read stacker operation in column binary mode + Fixed punch stacker operation (from Van Snyder) 28-Jun-07 RMS Added support for SS overlap modifiers 19-Jan-07 RMS Added UNIT_TEXT flag 20-Sep-05 RMS Revised for new code tables, compatible colbinary treatment @@ -59,10 +61,16 @@ extern int32 ind[64], ssa, iochk; extern int32 conv_old; int32 s1sel, s2sel, s4sel, s8sel; -char rbuf[2 * CBUFSIZE]; /* > CDR_WIDTH */ +char cdr_buf[(2 * CBUFSIZE) + 1]; /* > CDR_WIDTH */ +char cdp_buf[(2 * CDP_WIDTH) + 1]; /* + null */ +int32 cdp_buf_full = 0; /* punch buf full? */ + t_stat cdr_svc (UNIT *uptr); t_stat cdr_boot (int32 unitno, DEVICE *dptr); t_stat cdr_attach (UNIT *uptr, char *cptr); +t_stat cdp_attach (UNIT *uptr, char *cptr); +t_stat cdp_detach (UNIT *uptr); +t_stat cdp_npr (UNIT *uptr, int32 val, char *cptr, void *desc); t_stat cd_reset (DEVICE *dptr); int32 bcd2asc (int32 c, UNIT *uptr); char colbin_to_bcd (uint32 cb); @@ -85,7 +93,7 @@ REG cdr_reg[] = { { FLDATA (S2, s2sel, 0) }, { DRDATA (POS, cdr_unit.pos, T_ADDR_W), PV_LEFT }, { DRDATA (TIME, cdr_unit.wait, 24), PV_LEFT }, - { BRDATA (BUF, rbuf, 8, 8, CDR_WIDTH) }, + { BRDATA (BUF, cdr_buf, 8, 8, CDR_WIDTH * 2) }, { NULL } }; @@ -112,12 +120,17 @@ REG cdp_reg[] = { { FLDATA (S4, s4sel, 0) }, { FLDATA (S8, s8sel, 0) }, { DRDATA (POS, cdp_unit.pos, T_ADDR_W), PV_LEFT }, + { BRDATA (BUF, cdp_buf, 8, 8, CDP_WIDTH * 2) }, + { FLDATA (FULL, cdp_buf_full, 0) }, { NULL } }; MTAB cdp_mod[] = { { UNIT_PCH, 0, "business set", "BUSINESS" }, { UNIT_PCH, UNIT_PCH, "Fortran set", "FORTRAN" }, + { MTAB_XTD|MTAB_VDV|MTAB_NMO, 0, NULL, "NPR", + &cdp_npr, NULL }, + { 0 } }; @@ -125,7 +138,7 @@ DEVICE cdp_dev = { "CDP", &cdp_unit, cdp_reg, cdp_mod, 1, 10, 31, 1, 8, 7, NULL, NULL, &cd_reset, - NULL, NULL, NULL + NULL, &cdp_attach, &cdp_detach }; /* Stacker data structures @@ -152,7 +165,7 @@ REG stack_reg[] = { }; DEVICE stack_dev = { - "STKR", stack_unit, stack_reg, cdp_mod, + "STKR", stack_unit, stack_reg, NULL, 5, 10, 31, 1, 8, 7, NULL, NULL, &cd_reset, NULL, NULL, NULL @@ -178,9 +191,9 @@ if ((cdr_unit.flags & UNIT_ATT) == 0) /* attached? */ return SCPE_UNATT; ind[IN_READ] = ind[IN_LST] = s1sel = s2sel = 0; /* default stacker */ cbn = ((ilnt == 2) || (ilnt == 5)) && (mod == BCD_C); /* col binary? */ -for (i = 0; i < 2 * CBUFSIZE; i++) /* clear extended buf */ - rbuf[i] = 0; -fgets (rbuf, (cbn)? 2 * CBUFSIZE: CBUFSIZE, /* rd bin/char card */ +for (i = 0; i < (2 * CBUFSIZE) + 1; i++) /* clear extended buf */ + cdr_buf[i] = 0; +fgets (cdr_buf, (cbn)? 2 * CBUFSIZE: CBUFSIZE, /* rd bin/char card */ cdr_unit.fileref); if (feof (cdr_unit.fileref)) /* eof? */ return STOP_NOCD; @@ -202,12 +215,12 @@ if (ssa) { /* if last cd on */ if (cbn) { /* column binary */ for (i = 0; i < CDR_WIDTH; i++) { if (conv_old) { - c1 = ascii2bcd (rbuf[i]); - c2 = ascii2bcd (rbuf[CDR_WIDTH + i]); + c1 = ascii2bcd (cdr_buf[i]); + c2 = ascii2bcd (cdr_buf[CDR_WIDTH + i]); } else { - c1 = ascii2bcd (rbuf[2 * i]); - c2 = ascii2bcd (rbuf[(2 * i) + 1]); + c1 = ascii2bcd (cdr_buf[2 * i]); + c2 = ascii2bcd (cdr_buf[(2 * i) + 1]); } M[CD_CBUF1 + i] = (M[CD_CBUF1 + i] & WM) | c1; M[CD_CBUF2 + i] = (M[CD_CBUF2 + i] & WM) | c2; @@ -216,8 +229,8 @@ if (cbn) { /* column binary */ } /* end if col bin */ else { /* normal read */ for (i = 0; i < CDR_WIDTH; i++) { /* cvt to BCD */ - rbuf[i] = ascii2bcd (rbuf[i]); - M[CDR_BUF + i] = (M[CDR_BUF + i] & WM) | rbuf[i]; + c1 = ascii2bcd (cdr_buf[i]); + M[CDR_BUF + i] = (M[CDR_BUF + i] & WM) | c1; } } M[CDR_BUF - 1] = 060; /* mem mark */ @@ -228,12 +241,15 @@ return SCPE_OK; /* Card reader service. If a stacker select is active, copy to the selected stacker. Otherwise, copy to the normal stacker. If the unit is unattached, simply exit. + + The original card buffer (cdr_buf) has not been changed from its input + format (ASCII text), with its newline attached. There is a guaranteed + null at the end, because the buffer was zeroed prior to the read, and + is one character longer than the maximum string length. */ t_stat cdr_svc (UNIT *uptr) { -int32 i; - if (s1sel) /* stacker 1? */ uptr = &stack_unit[1]; else if (s2sel) /* stacker 2? */ @@ -241,13 +257,7 @@ else if (s2sel) /* stacker 2? */ else uptr = &stack_unit[0]; /* then default */ if ((uptr->flags & UNIT_ATT) == 0) /* attached? */ return SCPE_OK; -for (i = 0; i < CDR_WIDTH; i++) - rbuf[i] = bcd2ascii (rbuf[i], uptr->flags & UNIT_PCH); -for (i = CDR_WIDTH - 1; (i >= 0) && (rbuf[i] == ' '); i--) - rbuf[i] = 0; -rbuf[CDR_WIDTH] = 0; /* null at end */ -fputs (rbuf, uptr->fileref); /* write card */ -fputc ('\n', uptr->fileref); /* plus new line */ +fputs (cdr_buf, uptr->fileref); /* write card */ uptr->pos = ftell (uptr->fileref); /* update position */ if (ferror (uptr->fileref)) { /* error? */ perror ("Card stacker I/O error"); @@ -262,23 +272,22 @@ return SCPE_OK; Modifiers have been checked by the caller C modifier is recognized (column binary is implemented) + + - Run out any previously buffered card + - Clear stacker select + - Copy card from memory buffer to punch buffer */ t_stat punch_card (int32 ilnt, int32 mod) { int32 i, cbn, c1, c2; -static char pbuf[(2 * CDP_WIDTH) + 1]; /* + null */ t_bool use_h; -UNIT *uptr; +t_stat r; -if (s8sel) /* stack 8? */ - uptr = &stack_unit[2]; -else if (s4sel) /* stack 4? */ - uptr = &stack_unit[4]; -else uptr = &cdp_unit; /* normal output */ -if ((uptr->flags & UNIT_ATT) == 0) /* attached? */ - return SCPE_UNATT; -use_h = uptr->flags & UNIT_PCH; +r = cdp_npr (NULL, 0, NULL, NULL); /* write card */ +if (r != SCPE_OK) + return r; +use_h = cdp_unit.flags & UNIT_PCH; ind[IN_PNCH] = s4sel = s8sel = 0; /* clear flags */ cbn = ((ilnt == 2) || (ilnt == 5)) && (mod == BCD_C); /* col binary? */ @@ -288,26 +297,46 @@ if (cbn) { /* column binary */ c1 = bcd2ascii (M[CD_CBUF1 + i] & CHAR, use_h); c2 = bcd2ascii (M[CD_CBUF2 + i] & CHAR, use_h); if (conv_old) { - pbuf[i] = c1; - pbuf[i + CDP_WIDTH] = c2; + cdp_buf[i] = c1; + cdp_buf[i + CDP_WIDTH] = c2; } else { - pbuf[2 * i] = c1; - pbuf[(2 * i) + 1] = c2; + cdp_buf[2 * i] = c1; + cdp_buf[(2 * i) + 1] = c2; } } - for (i = 2 * CDP_WIDTH - 1; (i >= 0) && (pbuf[i] == ' '); i--) - pbuf[i] = 0; - pbuf[2 * CDP_WIDTH] = 0; /* trailing null */ + for (i = (2 * CDP_WIDTH) - 1; (i >= 0) && (cdp_buf[i] == ' '); i--) + cdp_buf[i] = 0; + cdp_buf[2 * CDP_WIDTH] = 0; /* trailing null */ } else { /* normal */ for (i = 0; i < CDP_WIDTH; i++) - pbuf[i] = bcd2ascii (M[CDP_BUF + i] & CHAR, use_h); - for (i = CDP_WIDTH - 1; (i >= 0) && (pbuf[i] == ' '); i--) - pbuf[i] = 0; - pbuf[CDP_WIDTH] = 0; /* trailing null */ + cdp_buf[i] = bcd2ascii (M[CDP_BUF + i] & CHAR, use_h); + for (i = CDP_WIDTH - 1; (i >= 0) && (cdp_buf[i] == ' '); i--) + cdp_buf[i] = 0; + cdp_buf[CDP_WIDTH] = 0; /* trailing null */ } -fputs (pbuf, uptr->fileref); /* output card */ +cdp_buf_full = 1; /* card buffer full */ +return SCPE_OK; +} + +/* Punch buffered card (also handles non-process runout button) */ + +t_stat cdp_npr (UNIT *notused, int32 val, char *cptr, void *desc) +{ +UNIT *uptr; + +if (cdp_buf_full == 0) /* any card? */ + return SCPE_OK; /* no, done */ +cdp_buf_full = 0; /* buf empty */ +if (s8sel) /* stack 8? */ + uptr = &stack_unit[2]; +else if (s4sel) /* stack 4? */ + uptr = &stack_unit[4]; +else uptr = &cdp_unit; /* normal output */ +if ((uptr->flags & UNIT_ATT) == 0) /* attached? */ + return SCPE_UNATT; +fputs (cdp_buf, uptr->fileref); /* output card */ fputc ('\n', uptr->fileref); /* plus new line */ uptr->pos = ftell (uptr->fileref); /* update position */ if (ferror (uptr->fileref)) { /* error? */ @@ -380,6 +409,26 @@ saved_IS = BOOT_START; return SCPE_OK; } +/* Card punch attach */ + +t_stat cdp_attach (UNIT *uptr, char *cptr) +{ +cdp_buf_full = 0; +return attach_unit (uptr, cptr); +} + +/* Card punch detach */ + +t_stat cdp_detach (UNIT *uptr) +{ +t_stat r; + +r = cdp_npr (NULL, 0, NULL, NULL); +if (r != SCPE_OK) + return r; +return detach_unit (uptr); +} + /* Column binary to BCD This is based on documentation in the IBM 1620 manual and may not be diff --git a/I1401/i1401_cpu.c b/I1401/i1401_cpu.c index 851f0c2a..3a1196a0 100644 --- a/I1401/i1401_cpu.c +++ b/I1401/i1401_cpu.c @@ -1,6 +1,6 @@ /* i1401_cpu.c: IBM 1401 CPU simulator - Copyright (c) 1993-2008, Robert M. Supnik + Copyright (c) 1993-2010, Robert M. Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -23,6 +23,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from Robert M Supnik. + 24-Apr-10 RMS Revised divide algorithm (from Van Snyder) 11-Jul-08 RMS Added missing A magtape modifier (from Van Snyder) Fixed tape indicator implementation (from Bob Abeles) Fixed bug in ZA and ZS (from Bob Abeles) @@ -210,8 +211,8 @@ t_stat cpu_show_conv (FILE *st, UNIT *uptr, int32 val, void *desc); int32 store_addr_h (int32 addr); int32 store_addr_t (int32 addr); int32 store_addr_u (int32 addr); -int32 div_add (int32 ap, int32 bp, int32 aend); -int32 div_sub (int32 ap, int32 bp, int32 aend); +int32 div_add (int32 ap, int32 bp); +int32 div_sub (int32 ap, int32 bp); void div_sign (int32 dvrc, int32 dvdc, int32 qp, int32 rp); t_stat iomod (int32 ilnt, int32 mod, const int32 *tptr); t_stat iodisp (int32 dev, int32 unit, int32 flag, int32 mod); @@ -518,7 +519,7 @@ int32 IS, ilnt, flags; int32 op, xa, t, wm, ioind, dev, unit; int32 a, b, i, k, asave, bsave; int32 carry, lowprd, sign, ps; -int32 quo, ahigh, qs; +int32 quo, qs; int32 qzero, qawm, qbody, qsign, qdollar, qaster, qdecimal; t_stat reason, r1, r2; @@ -1432,19 +1433,16 @@ CHECK_LENGTH: - AS points to the low order divisor digit. - BS points to the high order dividend digit. - The low order dividend digit is identified by sign (zone) bits. - - To the left of the dividend is a zero field of length LS + 1. - The low quotient is at low dividend - LS - 1. As BS points to the - high dividend, the low dividend is at BS + LD - 1, so the low - quotient is at BS + LD - LS - 2. The longest possible quotient is - LD - LS + 1, so the first possible non-zero quotient bit will be - found as BS - 2. + - To the left of the dividend is a (zero) field of length LS + 1. + So the quotient starts as BS - LS - 1. + The divide process starts with a subdividend that begins at BS - LS + and ends at BS. (Note that the subdividend is one digit wider than + the divisor, to allow for borrows during the divide process.) This + means that non-zero digits in the "zero" field to the left of the + dividend CAN affect the divide. - This pointer calculation assumes that the divisor has no leading zeroes. - For each leading zero, the start of the quotient will be one position - further left. - - Start by locating the high order non-zero digit of the divisor. This - also tests for a divide by zero. + Start by computing the length of the divisor and testing for divide + by zero. Instruction lengths: @@ -1458,17 +1456,17 @@ CHECK_LENGTH: case OP_DIV: asave = AS; - ahigh = -1; - do { + t = 0; /* assume all 0's */ + do { /* scan divisor */ a = M[AS]; /* get dvr char */ - if ((a & CHAR) != BCD_ZERO) /* mark non-zero */ - ahigh = AS; + if ((bcd_to_bin[a & DIGIT]) != 0) /* mark non-zero */ + t = 1; MM (AS); } while ((a & WM) == 0); if (reason) /* address err? */ break; - if (ahigh < 0) { /* div by zero? */ + if (t == 0) { /* div by zero? */ ind[IN_OVF] = 1; /* set ovf indic */ qs = bsave = BS; /* quo, dividend */ do { @@ -1485,15 +1483,15 @@ CHECK_LENGTH: BS = (BS - 2) - (asave - (AS + 1)); /* final bs */ break; } - bsave = BS + (asave - ahigh); /* end subdivd */ - qs = (BS - 2) - (ahigh - (AS + 1)); /* quo start */ + bsave = BS; /* end subdivd */ + qs = BS - (asave - AS) - 1; /* quo start */ /* Divide loop - done with subroutines to keep the code clean. In the loop, - asave = low order divisor - bsave = low order subdividend - qs = current quotient digit + asave = low order divisor (constant) + bsave = low order subdividend (increments) + qs = current quotient digit (increments) */ do { @@ -1504,11 +1502,13 @@ CHECK_LENGTH: } b = M[bsave]; /* save low divd */ do { - t = div_sub (asave, bsave, ahigh); /* subtract */ + t = div_sub (asave, bsave); /* subtract */ quo++; /* incr quo digit */ } while (t == 0); /* until borrow */ - div_add (asave, bsave, ahigh); /* restore */ + div_add (asave, bsave); /* restore */ quo--; + if (quo > 9) /* overflow? */ + ind[IN_OVF] = 1; /* set ovf indic */ M[qs] = (M[qs] & WM) | sum_table[quo]; /* store quo digit */ bsave++; /* adv divd, quo */ qs++; @@ -1695,7 +1695,7 @@ return bin_to_bcd[addr % 10] | (thous << (V_ZONE - 2)); /* div_add - add string for divide */ -int32 div_add (int32 ap, int32 bp, int32 aend) +int32 div_add (int32 ap, int32 bp) { int32 a, b, c, r; @@ -1709,13 +1709,13 @@ do { M[bp] = sum_table[r]; /* store result */ ap--; bp--; - } while (ap >= aend); + } while ((a & WM) == 0); return c; } /* div_sub - substract string for divide */ -int32 div_sub (int32 ap, int32 bp, int32 aend) +int32 div_sub (int32 ap, int32 bp) { int32 a, b, c, r; @@ -1729,9 +1729,9 @@ do { M[bp] = sum_table[r + 10]; /* store result */ ap--; bp--; - } while (ap >= aend); -b = M[bp] & CHAR; /* borrow position */ -if (b && (b != BCD_ZERO)) { /* non-zero? */ + } while ((a & WM) == 0); +b = M[bp]; /* borrow position */ +if (bcd_to_bin[b & DIGIT] != 0) { /* non-zero? */ r = bcd_to_bin[b & DIGIT] - c; /* subtract borrow */ M[bp] = sum_table[r]; /* store result */ return 0; /* subtract worked */ diff --git a/I1401/i1401_mt.c b/I1401/i1401_mt.c index 2da50d84..54c97ef1 100644 --- a/I1401/i1401_mt.c +++ b/I1401/i1401_mt.c @@ -1,6 +1,6 @@ /* i1401_mt.c: IBM 1401 magnetic tape simulator - Copyright (c) 1993-2008, Robert M. Supnik + Copyright (c) 1993-2010, Robert M. Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), diff --git a/Ibm1130/ibm1130_sca.c b/Ibm1130/ibm1130_sca.c index 3571166c..1e41d3c8 100644 --- a/Ibm1130/ibm1130_sca.c +++ b/Ibm1130/ibm1130_sca.c @@ -7,7 +7,7 @@ 2005.03.08 - Started - * (C) Copyright 2005, Brian Knittel. + * (C) Copyright 2005-2010, Brian Knittel. * You may freely use this program, but: it offered strictly on an AS-IS, AT YOUR OWN * RISK basis, there is no warranty of fitness for any purpose, and the rest of the * usual yada-yada. Please keep this notice and the copyright in any distributions @@ -343,7 +343,7 @@ static void sca_flush (void) #endif if (sca_sock != INVALID_SOCKET) { - nbytes = sim_write_sock(sca_sock, sca_sendbuf, sca_n2send); + nbytes = sim_write_sock(sca_sock, (char *) sca_sendbuf, sca_n2send); if (nbytes == SOCKET_ERROR) sca_socket_error(); @@ -655,7 +655,7 @@ static void sca_check_indata (void) #else /* read socket; 0 is returned if no data is available */ - nbytes = sim_read_sock(sca_sock, sca_rcvbuf, SCA_RCVBUF_SIZE); + nbytes = sim_read_sock(sca_sock, (char *) sca_rcvbuf, SCA_RCVBUF_SIZE); #endif diff --git a/PDP11/pdp11_cr.c b/PDP11/pdp11_cr.c index 55e6b71a..d8ee8258 100644 --- a/PDP11/pdp11_cr.c +++ b/PDP11/pdp11_cr.c @@ -1,6 +1,6 @@ /* pdp11_cr.c: CR/CM/CD-11 card reader simulator - Copyright (c) 2005-2007, John A. Dundas III + Copyright (c) 2005-2010, John A. Dundas III Portions derived from work by Douglas W. Jones, jones@cs.uiowa.edu Portions derived from work by Robert M Supnik @@ -87,6 +87,7 @@ Revision History: + 03-Jan-10 JAD Eliminate gcc warnings 01-Feb-07 RMS Added PDP-10 support 12-May-06 JAD Modify the DEBUG code to use the SIMH DEBUG_x macros. Modify the UNIT structure to include diff --git a/PDP11/pdp11_kg.c b/PDP11/pdp11_kg.c index 3e643531..6597250f 100644 --- a/PDP11/pdp11_kg.c +++ b/PDP11/pdp11_kg.c @@ -1,6 +1,6 @@ /* pdp11_kg.c - Communications Arithmetic Option KG11-A - Copyright (c) 2007-2008, John A. Dundas III + Copyright (c) 2007-2010, John A. Dundas III Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -25,6 +25,7 @@ kg KG11-A Communications Arithmetic Option (M7251) + 03-Jan-10 JAD Eliminate gcc warnings 08-Jan-08 JAD First public release integrated with SIMH V3.7-3. 09-Dec-07 JAD SIMH-style debugging. Finished validating against real hardware. @@ -178,7 +179,7 @@ static t_stat set_units (UNIT *, int32, char *, void *); /* 16-bit rotate right */ -#define ROR(n,v) (((v >> n) & DMASK) | (v << (16 - n)) & DMASK) +#define ROR(n,v) (((v >> n) & DMASK) | ((v << (16 - n)) & DMASK)) /* 8-bit rotate right */ diff --git a/PDP11/pdp11_rk.c b/PDP11/pdp11_rk.c index ccee5026..2b7c089c 100644 --- a/PDP11/pdp11_rk.c +++ b/PDP11/pdp11_rk.c @@ -1,6 +1,6 @@ /* pdp11_rk.c: RK11/RKV11 cartridge disk simulator - Copyright (c) 1993-2008, Robert M Supnik + Copyright (c) 1993-2009, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -25,6 +25,7 @@ rk RK11/RKV11/RK05 cartridge disk + 20-Mar-09 RMS Fixed bug in read header (from Walter F Mueller) 16-Aug-05 RMS Fixed C++ declaration and cast problems 07-Jul-05 RMS Removed extraneous externs 30-Sep-04 RMS Revised Unibus interface @@ -533,7 +534,7 @@ if (wc && (err == 0)) { /* seek ok? */ wc = i; /* trim transfer */ break; } - rkxb[i] = (cda / RK_NUMWD) / (RK_NUMSF * RK_NUMSC); + rkxb[i] = ((cda / RK_NUMWD) / (RK_NUMSF * RK_NUMSC)) << RKDA_V_CYL; cda = cda + RK_NUMWD; /* next sector */ } /* end for wc */ } /* end if format */ diff --git a/PDP11/pdp11_rl.c b/PDP11/pdp11_rl.c index 46fc1657..19944926 100644 --- a/PDP11/pdp11_rl.c +++ b/PDP11/pdp11_rl.c @@ -1,6 +1,6 @@ /* pdp11_rl.c: RL11 (RLV12) cartridge disk simulator - Copyright (c) 1993-2008, Robert M Supnik + Copyright (c) 1993-2009, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -25,6 +25,7 @@ rl RL11(RLV12)/RL01/RL02 cartridge disk + 10-Oct-09 RMS Added debug support 22-Sep-05 RMS Fixed declarations (from Sterling Garwood) 16-Aug-05 RMS Fixed C++ declaration and cast problems 07-Jul-05 RMS Removed extraneous externs @@ -192,6 +193,7 @@ extern uint32 cpu_opt; #define RLBAE_IMP 0000077 /* implemented */ extern int32 int_req[IPL_HLVL]; +extern FILE *sim_deb; uint16 *rlxb = NULL; /* xfer buffer */ int32 rlcs = 0; /* control/status */ @@ -283,7 +285,7 @@ DEVICE rl_dev = { RL_NUMDR, DEV_RDX, 24, 1, DEV_RDX, 16, NULL, NULL, &rl_reset, &rl_boot, &rl_attach, NULL, - &rl_dib, DEV_DISABLE | DEV_UBUS | DEV_QBUS + &rl_dib, DEV_DEBUG | DEV_DISABLE | DEV_UBUS | DEV_QBUS }; /* I/O dispatch routines, I/O addresses 17774400 - 17774407 @@ -333,6 +335,9 @@ switch ((PA >> 1) & 07) { /* decode PA<2:1> */ break; } /* end switch */ +if (DEBUG_PRS (rl_dev)) + fprintf (sim_deb, ">>RL read: reg%d=%o\n", (PA >> 1) & 07, *data); + return SCPE_OK; } @@ -341,6 +346,9 @@ t_stat rl_wr (int32 data, int32 PA, int32 access) int32 curr, offs, newc, maxc; UNIT *uptr; +if (DEBUG_PRS (rl_dev)) + fprintf (sim_deb, ">>RL write: reg%d=%o\n", (PA >> 1) & 07, data); + switch ((PA >> 1) & 07) { /* decode PA<2:1> */ case 0: /* RLCS */ diff --git a/PDP11/pdp11_rq.c b/PDP11/pdp11_rq.c index 3def339a..89da0cb5 100644 --- a/PDP11/pdp11_rq.c +++ b/PDP11/pdp11_rq.c @@ -1,6 +1,6 @@ /* pdp11_rq.c: MSCP disk controller simulator - Copyright (c) 2002-2008, Robert M Supnik + Copyright (c) 2002-2010, Robert M Supnik Derived from work by Stephen F. Shirron Permission is hereby granted, free of charge, to any person obtaining a @@ -26,6 +26,7 @@ rq RQDX3 disk controller + 14-Jan-09 JH Added support for RD32 disc drive 18-Jun-07 RMS Added UNIT_IDLE flag to timer thread 31-Oct-05 RMS Fixed address width for large files 16-Aug-05 RMS Fixed C++ declaration and cast problems @@ -127,7 +128,7 @@ extern int32 cpu_opt; #define UNIT_V_WLK (UNIT_V_UF + 1) /* hwre write lock */ #define UNIT_V_ATP (UNIT_V_UF + 2) /* attn pending */ #define UNIT_V_DTYPE (UNIT_V_UF + 3) /* drive type */ -#define UNIT_M_DTYPE 0xF +#define UNIT_M_DTYPE 0x1F #define UNIT_ONL (1 << UNIT_V_ONL) #define UNIT_WLK (1 << UNIT_V_WLK) #define UNIT_ATP (1 << UNIT_V_ATP) @@ -219,7 +220,7 @@ struct rqpkt { RD51 18 4 306 4 1 36*4 21600 RD31 17 4 615 4 1 3*8 41560 RD52 17 8 512 8 1 4*8 60480 -x RD32 17 6 820 ? ? ? 83236 + RD32 17 6 820 6 1 4*8 83204 x RD33 17 7 1170 ? ? ? 138565 RD53 17 7 1024 7 1 5*8 138672 RD54 17 15 1225 15 1 7*8 311200 @@ -505,6 +506,22 @@ x RA73 70(+1) 21 2667+ 21 1 ? 3920490 #define RA71_MED 0x25641047 #define RA71_FLGS RQDF_SDI +#define RD32_DTYPE 16 +#define RD32_SECT 17 +#define RD32_SURF 6 +#define RD32_CYL 820 +#define RD32_TPG RD32_SURF +#define RD32_GPC 1 +#define RD32_XBN 54 +#define RD32_DBN 48 +#define RD32_LBN 83204 +#define RD32_RCTS 4 +#define RD32_RCTC 8 +#define RD32_RBN 200 +#define RD32_MOD 15 +#define RD32_MED 0x25644020 +#define RD32_FLGS 0 + struct drvtyp { int32 sect; /* sectors */ int32 surf; /* surfaces */ @@ -539,6 +556,7 @@ static struct drvtyp drv_tab[] = { { RQ_DRV (RA90), "RA90" }, { RQ_DRV (RA92), "RA92" }, { RQ_DRV (RA8U), "RAUSER" }, { RQ_DRV (RA60), "RA60" }, { RQ_DRV (RA81), "RA81" }, { RQ_DRV (RA71), "RA71" }, + { RQ_DRV (RD32), "RD32" }, { 0 } }; @@ -724,6 +742,8 @@ MTAB rq_mod[] = { &rq_set_type, NULL, NULL }, { MTAB_XTD | MTAB_VUN, RD31_DTYPE, NULL, "RD31", &rq_set_type, NULL, NULL }, + { MTAB_XTD | MTAB_VUN, RD32_DTYPE, NULL, "RD32", + &rq_set_type, NULL, NULL }, { MTAB_XTD | MTAB_VUN, RD51_DTYPE, NULL, "RD51", &rq_set_type, NULL, NULL }, { MTAB_XTD | MTAB_VUN, RD52_DTYPE, NULL, "RD52", diff --git a/PDP11/pdp11_vh.c b/PDP11/pdp11_vh.c index 2fdde2a7..72f09280 100644 --- a/PDP11/pdp11_vh.c +++ b/PDP11/pdp11_vh.c @@ -1,6 +1,6 @@ /* pdp11_vh.c: DHQ11 asynchronous terminal multiplexor simulator - Copyright (c) 2004-2008, John A. Dundas III + Copyright (c) 2004-2010, John A. Dundas III Portions derived from work by Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a @@ -26,6 +26,7 @@ vh DHQ11 asynch multiplexor for SIMH + 03-Jan-10 JAD Eliminate gcc warnings 19-Nov-08 RMS Revised for common TMXR show routines 18-Jun-07 RMS Added UNIT_IDLE flag 29-Oct-06 RMS Synced poll and clock @@ -258,13 +259,13 @@ static const int32 bitmask[4] = { 037, 077, 0177, 0377 }; /* RX FIFO state */ static int32 rbuf_idx[VH_MUXES] = { 0 };/* index into vh_rbuf */ -static uint32 vh_rbuf[VH_MUXES][FIFO_SIZE] = { 0 }; +static uint32 vh_rbuf[VH_MUXES][FIFO_SIZE] = { { 0 } }; /* TXQ state */ #define TXQ_SIZE (16) static int32 txq_idx[VH_MUXES] = { 0 }; -static uint32 vh_txq[VH_MUXES][TXQ_SIZE] = { 0 }; +static uint32 vh_txq[VH_MUXES][TXQ_SIZE] = { { 0 } }; /* Need to extend the TMLN structure */ @@ -279,9 +280,9 @@ typedef struct { uint16 txchar; /* single character I/O */ } TMLX; -static TMLN vh_ldsc[VH_MUXES * VH_LINES] = { 0 }; +static TMLN vh_ldsc[VH_MUXES * VH_LINES] = { { 0 } }; static TMXR vh_desc = { VH_MUXES * VH_LINES, 0, 0, vh_ldsc }; -static TMLX vh_parm[VH_MUXES * VH_LINES] = { 0 }; +static TMLX vh_parm[VH_MUXES * VH_LINES] = { { 0 } }; /* Forward references */ static t_stat vh_rd (int32 *data, int32 PA, int32 access); @@ -675,7 +676,7 @@ static void vh_getc ( int32 vh ) for (i = 0; i < VH_LINES; i++) { lp = &vh_parm[(vh * VH_LINES) + i]; - while (c = tmxr_getc_ln (lp->tmln)) { + while ((c = tmxr_getc_ln (lp->tmln)) != 0) { if (c & SCPE_BREAK) { fifo_put (vh, lp, RBUF_FRAME_ERR | RBUF_PUTLINE (i)); @@ -786,7 +787,7 @@ static t_stat vh_wr ( int32 data, if (access == WRITEB) data = (PA & 1) ? (vh_csr[vh] & 0377) | (data << 8) : - (vh_csr[vh] & ~0377) | data & 0377; + (vh_csr[vh] & ~0377) | (data & 0377); if (data & CSR_MASTER_RESET) { if ((vh_unit[vh].flags & UNIT_MODEDHU) && (data & CSR_SKIP)) data &= ~CSR_MASTER_RESET; @@ -877,7 +878,7 @@ static t_stat vh_wr ( int32 data, if (access == WRITEB) data = (PA & 1) ? (lp->lpr & 0377) | (data << 8) : - (lp->lpr & ~0377) | data & 0377; + (lp->lpr & ~0377) | (data & 0377); /* Modify only if CSR<3:0> == 0 */ if (CSR_GETCHAN (vh_csr[vh]) != 0) data &= ~LPR_DISAB_XRPT; @@ -926,7 +927,7 @@ static t_stat vh_wr ( int32 data, if (access == WRITEB) data = (PA & 1) ? (lp->lnctrl & 0377) | (data << 8) : - (lp->lnctrl & ~0377) | data & 0377; + (lp->lnctrl & ~0377) | (data & 0377); /* catch the abort TX transition */ if (!(lp->lnctrl & LNCTRL_TX_ABORT) && (data & LNCTRL_TX_ABORT)) { @@ -993,7 +994,7 @@ static t_stat vh_wr ( int32 data, if (access == WRITEB) data = (PA & 1) ? (lp->tbuf1 & 0377) | (data << 8) : - (lp->tbuf1 & ~0377) | data & 0377; + (lp->tbuf1 & ~0377) | (data & 0377); lp->tbuf1 = data; break; case 6: /* TBUFFAD2 */ @@ -1008,7 +1009,7 @@ static t_stat vh_wr ( int32 data, if (access == WRITEB) data = (PA & 1) ? (lp->tbuf2 & 0377) | (data << 8) : - (lp->tbuf2 & ~0377) | data & 0377; + (lp->tbuf2 & ~0377) | (data & 0377); lp->tbuf2 = data; /* if starting a DMA, clear DMA_ERR */ if (vh_unit[vh].flags & UNIT_FASTDMA) { @@ -1028,7 +1029,7 @@ static t_stat vh_wr ( int32 data, if (access == WRITEB) data = (PA & 1) ? (lp->tbuffct & 0377) | (data << 8) : - (lp->tbuffct & ~0377) | data & 0377; + (lp->tbuffct & ~0377) | (data & 0377); lp->tbuffct = data; break; default: diff --git a/PDP8/pdp8_fpp.c b/PDP8/pdp8_fpp.c index 3937127e..4fb04c01 100644 --- a/PDP8/pdp8_fpp.c +++ b/PDP8/pdp8_fpp.c @@ -1,6 +1,6 @@ /* pdp8_fpp.c: PDP-8 floating point processor (FPP8A) - Copyright (c) 2007-2008, Robert M Supnik + Copyright (c) 2007-2010, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -25,6 +25,27 @@ fpp FPP8A floating point processor + 03-Jan-10 RMS Initialized variables statically, for VMS compiler + 19-Apr-09 RHM FPICL does not clear all command and status reg bits + modify fpp_reset to conform with FPP + 27-Mar-09 RHM Fixed handling of Underflow fix (zero FAC on underflow) + Implemented FPP division and multiplication algorithms + FPP behavior on traps - FEXIT does not update APT + Follow FPP settings for OPADD + Correct detection of DP add/sub overflow + Detect and handle add/sub overshift + Single-step mode made consistent with FPP + Write calculation results prior to traps + 24-Mar-09 RMS Many fixes from Rick Murphy: + Fix calculation of ATX shift amount + Added missing () to read, write XR macros + Fixed indirect address calculation + Fixed == written as = in normalization + Fixed off-by-one count bug in multiplication + Removed extraneous ; in divide + Fixed direction of compare in divide + Fixed count direction bug in alignment + Floating point formats: 00 01 02 03 04 05 06 07 08 09 10 11 @@ -85,8 +106,8 @@ extern UNIT cpu_unit; /* Index registers are in memory */ -#define fpp_read_xr(xr) fpp_read (fpp_xra + xr) -#define fpp_write_xr(xr,d) fpp_write (fpp_xra +xr, d) +#define fpp_read_xr(xr) fpp_read (fpp_xra + (xr)) +#define fpp_write_xr(xr,d) fpp_write (fpp_xra + (xr), d) /* Command register */ @@ -112,8 +133,7 @@ extern UNIT cpu_unit; #define FPS_IOVX 00200 /* int ovf exit */ #define FPS_FOVX 00100 /* flt ovf exit */ #define FPS_UNF 00040 /* underflow */ -#define FPS_UNFX 00020 /* undf exit */ -#define FPS_XXXM 00010 /* FADDM/FMULM */ +#define FPS_XXXM 00020 /* FADDM/FMULM */ #define FPS_LOCK (FPC_LOCK) /* lockout */ #define FPS_EP 00004 /* ext prec */ #define FPS_PAUSE 00002 /* paused */ @@ -124,24 +144,28 @@ extern UNIT cpu_unit; #define FPN_FRSIGN 04000 #define FPN_NFR_FP 2 /* std precision */ #define FPN_NFR_EP 5 /* ext precision */ +#define FPN_NFR_MDS 6 /* mul/div precision */ #define EXACT (uint32)((fpp_sta & FPS_EP)? FPN_NFR_EP: FPN_NFR_FP) #define EXTEND ((uint32) FPN_NFR_EP) typedef struct { - int32 exp; - uint32 fr[FPN_NFR_EP]; + int32 exp; + uint32 fr[FPN_NFR_MDS+1]; } FPN; -uint32 fpp_apta; /* APT pointer */ -uint32 fpp_aptsvf; /* APT saved field */ -uint32 fpp_opa; /* operand pointer */ -uint32 fpp_fpc; /* FP PC */ -uint32 fpp_bra; /* base reg pointer */ -uint32 fpp_xra; /* indx reg pointer */ -uint32 fpp_cmd; /* command */ -uint32 fpp_sta; /* status */ -uint32 fpp_flag; /* flag */ +uint32 fpp_apta = 0; /* APT pointer */ +uint32 fpp_aptsvf = 0; /* APT saved field */ +uint32 fpp_opa = 0; /* operand pointer */ +uint32 fpp_fpc = 0; /* FP PC */ +uint32 fpp_bra = 0; /* base reg pointer */ +uint32 fpp_xra = 0; /* indx reg pointer */ +uint32 fpp_cmd = 0; /* command */ +uint32 fpp_sta = 0; /* status */ +uint32 fpp_flag = 0; /* flag */ FPN fpp_ac; /* FAC */ +uint32 fpp_ssf = 0; /* single-step flag */ +uint32 fpp_last_lockbit = 0; /* last lockbit */ + static FPN fpp_zero = { 0, { 0, 0, 0, 0, 0 } }; static FPN fpp_one = { 1, { 02000, 0, 0, 0, 0 } }; @@ -155,13 +179,13 @@ uint32 fpp_2wd_dir (uint32 ir); uint32 fpp_indir (uint32 ir); uint32 fpp_ad15 (uint32 hi); uint32 fpp_adxr (uint32 ir, uint32 base_ad); -t_bool fpp_add (FPN *a, FPN *b, uint32 sub); -t_bool fpp_mul (FPN *a, FPN *b); -t_bool fpp_div (FPN *a, FPN *b); +void fpp_add (FPN *a, FPN *b, uint32 sub); +void fpp_mul (FPN *a, FPN *b); +void fpp_div (FPN *a, FPN *b); t_bool fpp_imul (FPN *a, FPN *b); -uint32 fpp_fr_add (uint32 *c, uint32 *a, uint32 *b); -void fpp_fr_sub (uint32 *c, uint32 *a, uint32 *b); -void fpp_fr_mul (uint32 *c, uint32 *a, uint32 *b); +uint32 fpp_fr_add (uint32 *c, uint32 *a, uint32 *b, uint32 cnt); +void fpp_fr_sub (uint32 *c, uint32 *a, uint32 *b, uint32 cnt); +void fpp_fr_mul (uint32 *c, uint32 *a, uint32 *b, t_bool fix); t_bool fpp_fr_div (uint32 *c, uint32 *a, uint32 *b); uint32 fpp_fr_neg (uint32 *a, uint32 cnt); int32 fpp_fr_cmp (uint32 *a, uint32 *b, uint32 cnt); @@ -214,6 +238,8 @@ REG fpp_reg[] = { { ORDATA (BRA, fpp_bra, 15) }, { ORDATA (XRA, fpp_xra, 15) }, { ORDATA (OPA, fpp_opa, 15) }, + { ORDATA (SSF, fpp_ssf, 12) }, + { ORDATA (LASTLOCK, fpp_last_lockbit, 12) }, { FLDATA (FLAG, fpp_flag, 0) }, { NULL } }; @@ -242,6 +268,7 @@ switch (IR & 07) { /* decode IR<9:11> */ case 3: /* FPCOM */ if (!fpp_flag && !(fpp_sta & FPS_RUN)) { /* flag clr, !run? */ fpp_cmd = AC; /* load cmd */ + fpp_last_lockbit = fpp_cmd & FPS_LOCK; /* remember lock state */ fpp_sta = (fpp_sta & ~FPC_STA) | /* copy flags */ (fpp_cmd & FPC_STA); /* to status */ } @@ -251,16 +278,25 @@ switch (IR & 07) { /* decode IR<9:11> */ if (fpp_sta & FPS_RUN) { /* running? */ if (fpp_sta & FPS_PAUSE) /* paused? */ fpp_fpc = (fpp_fpc - 1) & ADDRMASK; /* decr FPC */ + fpp_sta &= ~FPS_PAUSE; /* no longer paused */ sim_cancel (&fpp_unit); /* stop execution */ fpp_dump_apt (fpp_apta, FPS_HLTX); /* dump APT */ + fpp_ssf = 1; /* assume sstep */ } - else sim_activate (&fpp_unit, 0); /* single step */ + else if (!fpp_flag) + fpp_ssf = 1; /* FPST sing steps */ + if (fpp_sta & FPS_DVZX) /* fix diag timing */ + fpp_sta |= FPS_HLTX; break; case 5: /* FPST */ if (!fpp_flag && !(fpp_sta & FPS_RUN)) { /* flag clr, !run? */ + if (fpp_ssf) + fpp_sta |= fpp_last_lockbit; + fpp_sta &= ~FPS_HLTX; /* Clear halted */ fpp_apta = (FPC_GETAPTF (fpp_cmd) << 12) | AC; fpp_load_apt (fpp_apta); /* load APT */ + fpp_opa = fpp_fpc; sim_activate (&fpp_unit, 0); /* start unit */ return IOT_SKP | AC; } @@ -278,7 +314,7 @@ switch (IR & 07) { /* decode IR<9:11> */ if (fpp_flag) { /* if flag set */ uint32 old_sta = fpp_sta; fpp_flag = 0; /* clr flag, status */ - fpp_sta = 0; + fpp_sta &= ~(FPS_DP|FPS_EP|FPS_TRPX|FPS_DVZX|FPS_IOVX|FPS_FOVX|FPS_UNF); int_req &= ~INT_FPP; /* clr int req */ return IOT_SKP | old_sta; /* ret old status */ } @@ -296,8 +332,10 @@ int32 fpp56 (int32 IR, int32 AC) switch (IR & 07) { /* decode IR<9:11> */ case 7: /* FPEP */ - if ((AC & 04000) && !(fpp_sta & FPS_RUN)) /* if AC0, not run, */ + if ((AC & 04000) && !(fpp_sta & FPS_RUN)) { /* if AC0, not run, */ fpp_sta = (fpp_sta | FPS_EP) & ~FPS_DP; /* set ep */ + AC = 0; + } break; default: @@ -314,6 +352,7 @@ t_stat fpp_svc (UNIT *uptr) FPN x; uint32 ir, op, op2, op3, ad, ea, wd; uint32 i; +int32 sc; fpp_ac.exp = SEXT12 (fpp_ac.exp); /* sext AC exp */ do { /* repeat */ @@ -332,7 +371,11 @@ do { /* repeat */ switch (op3) { /* case on subsubop */ case 0: /* FEXIT */ - fpp_dump_apt (fpp_apta, 0); + /* if already trapped, don't update APT, just update status */ + if (fpp_sta & (FPS_DVZX|FPS_IOVX|FPS_FOVX|FPS_UNF)) + fpp_sta |= FPS_HLTX; + else + fpp_dump_apt (fpp_apta, 0); break; case 1: /* FPAUSE */ @@ -351,8 +394,7 @@ do { /* repeat */ if (!(fpp_sta & FPS_DP)) { /* fp or ep only */ fpp_copy (&x, &fpp_ac); /* copy AC */ fpp_norm (&x, EXACT); /* do exact length */ - if (!fpp_test_xp (&x)) /* no trap? */ - fpp_copy (&fpp_ac, &x); /* copy back */ + fpp_copy (&fpp_ac, &x); /* copy back */ } break; @@ -360,8 +402,7 @@ do { /* repeat */ if (fpp_sta & FPS_EP) { /* if ep, */ fpp_copy (&x, &fpp_ac); /* copy AC */ fpp_round (&x); /* round */ - if (!fpp_test_xp (&x)) /* no trap? */ - fpp_copy (&fpp_ac, &x); /* copy back */ + fpp_copy (&fpp_ac, &x); /* copy back */ } fpp_sta &= ~(FPS_DP|FPS_EP); break; @@ -377,17 +418,22 @@ do { /* repeat */ break; case 001: /* ALN */ - if (op3 != 0) /* if xr, */ + if (op3 != 0) { /* if xr, */ wd = fpp_read_xr (op3); /* use val */ + fpp_opa = fpp_xra + op3; + } else wd = 027; /* else 23 */ if (!(fpp_sta & FPS_DP)) { /* fp or ep? */ - int32 t = wd - fpp_ac.exp; /* alignment */ - fpp_ac.exp = SEXT12 (wd); /* new exp */ - wd = t & 07777; + sc = (SEXT12(wd) - fpp_ac.exp) & 07777; /* alignment */ + sc = SEXT12 (sc); + fpp_ac.exp = SEXT12(wd); /* new exp */ } - if (wd & 04000) /* left? */ - fpp_fr_lshn (fpp_ac.fr, 04000 - wd, EXACT); - else fpp_fr_algn (fpp_ac.fr, wd, EXACT); + else sc = SEXT12 (wd); /* dp - simple cnt */ + if (sc < 0) /* left? */ + fpp_fr_lshn (fpp_ac.fr, -sc, EXACT); + else fpp_fr_algn (fpp_ac.fr, sc, EXACT); + if (fpp_fr_test (fpp_ac.fr, 0, EXACT) == 0) /* zero? */ + fpp_ac.exp = 0; /* clean exp */ break; case 002: /* ATX */ @@ -395,10 +441,10 @@ do { /* repeat */ fpp_write_xr (op3, fpp_ac.fr[1]); /* xr<-FAC<12:23> */ else { fpp_copy (&x, &fpp_ac); /* copy AC */ - wd = (fpp_ac.exp - 027) & 07777; /* shift amt */ - if (wd & 04000) /* left? */ - fpp_fr_lshn (x.fr, 04000 - wd, EXACT); - else fpp_fr_algn (x.fr, wd, EXACT); + sc = 027 - x.exp; /* shift amt */ + if (sc < 0) /* left? */ + fpp_fr_lshn (x.fr, -sc, EXACT); + else fpp_fr_algn (x.fr, sc, EXACT); fpp_write_xr (op3, x.fr[1]); /* xr<-val<12:23> */ } break; @@ -411,10 +457,11 @@ do { /* repeat */ x.exp = 027; /* standard exp */ if (!(fpp_sta & FPS_DP)) { /* fp or ep? */ fpp_norm (&x, EXACT); /* normalize */ - if (fpp_test_xp (&x)) /* exception? */ - break; } fpp_copy (&fpp_ac, &x); /* result to AC */ + if (fpp_sta & FPS_DP) /* dp skips exp */ + fpp_ac.exp = x.exp; /* so force copy */ + fpp_opa = fpp_xra + op3; break; case 004: /* NOP */ @@ -431,12 +478,14 @@ do { /* repeat */ case 010: /* LDX */ wd = fpp_ad15 (0); /* load XR immed */ fpp_write_xr (op3, wd); + fpp_opa = fpp_xra + op3; break; case 011: /* ADDX */ wd = fpp_ad15 (0); wd = wd + fpp_read_xr (op3); /* add to XR immed */ fpp_write_xr (op3, wd); /* trims to 12b */ + fpp_opa = fpp_xra + op3; break; default: @@ -452,6 +501,9 @@ do { /* repeat */ case 002: ea = fpp_2wd_dir (ir); fpp_read_op (ea, &fpp_ac); + if (fpp_sta & FPS_DP) + fpp_opa = ea + 1; + else fpp_opa = ea + 2; break; case 003: @@ -480,13 +532,14 @@ do { /* repeat */ case 012: /* JSA */ fpp_write (ad, 01030 + (fpp_fpc >> 12)); /* save return */ fpp_write (ad + 1, fpp_fpc); /* trims to 12b */ - fpp_fpc = (ad + 2) & ADDRMASK; + fpp_fpc = (ad + 2) & ADDRMASK; + fpp_opa = fpp_fpc - 1; break; case 013: /* JSR */ fpp_write (fpp_bra + 1, 01030 + (fpp_fpc >> 12)); fpp_write (fpp_bra + 2, fpp_fpc); /* trims to 12b */ - fpp_fpc = ad; + fpp_opa = fpp_fpc = ad; break; default: @@ -512,17 +565,18 @@ do { /* repeat */ fpp_add (&fpp_ac, &x, 0); break; - case 010: /* JNX */ + case 010: { /* JNX */ + uint32 xrn = op2 & 07; ad = fpp_ad15 (op3); /* get 15b addr */ - wd = fpp_read_xr (op2 & 07); /* read xr */ - if (ir & 00100) { /* inc? */ + wd = fpp_read_xr (xrn); /* read xr */ + if (op2 & 010) { /* inc? */ wd = (wd + 1) & 07777; - fpp_write_xr (op2 & 07, wd); /* ++xr */ + fpp_write_xr (xrn, wd); /* ++xr */ } if (wd != 0) /* xr != 0? */ fpp_fpc = ad; /* jump */ break; - + } case 011: /* FSUB */ ea = fpp_1wd_dir (ir); fpp_read_op (ea, &x); @@ -591,24 +645,24 @@ do { /* repeat */ fpp_sta |= FPS_XXXM; ea = fpp_1wd_dir (ir); fpp_read_op (ea, &x); - if (!fpp_add (&x, &fpp_ac, 0)) /* no trap? */ - fpp_write_op (ea, &x); /* store result */ + fpp_add (&x, &fpp_ac, 0); + fpp_write_op (ea, &x); /* store result */ break; case 026: fpp_sta |= FPS_XXXM; ea = fpp_2wd_dir (ir); fpp_read_op (ea, &x); - if (!fpp_add (&x, &fpp_ac, 0)) /* no trap? */ - fpp_write_op (ea, &x); /* store result */ + fpp_add (&x, &fpp_ac, 0); + fpp_write_op (ea, &x); /* store result */ break; case 027: fpp_sta |= FPS_XXXM; ea = fpp_indir (ir); fpp_read_op (ea, &x); - if (!fpp_add (&x, &fpp_ac, 0)) /* no trap? */ - fpp_write_op (ea, &x); /* store result */ + fpp_add (&x, &fpp_ac, 0); + fpp_write_op (ea, &x); /* store result */ break; case 030: /* IMUL/LEA */ @@ -649,6 +703,7 @@ do { /* repeat */ fpp_sta = (fpp_sta | FPS_DP) & ~FPS_EP; /* set dp */ fpp_ac.fr[0] = (ea >> 12) & 07; fpp_ac.fr[1] = ea & 07777; + fpp_opa = ea; } break; @@ -656,30 +711,35 @@ do { /* repeat */ fpp_sta |= FPS_XXXM; ea = fpp_1wd_dir (ir); fpp_read_op (ea, &x); - if (!fpp_mul (&x, &fpp_ac)) /* no trap? */ - fpp_write_op (ea, &x); /* store result */ + fpp_mul (&x, &fpp_ac); + fpp_write_op (ea, &x); /* store result */ break; case 036: fpp_sta |= FPS_XXXM; ea = fpp_2wd_dir (ir); fpp_read_op (ea, &x); - if (!fpp_mul (&x, &fpp_ac)) /* no trap? */ - fpp_write_op (ea, &x); /* store result */ + fpp_mul (&x, &fpp_ac); + fpp_write_op (ea, &x); /* store result */ break; case 037: fpp_sta |= FPS_XXXM; ea = fpp_indir (ir); fpp_read_op (ea, &x); - if (!fpp_mul (&x, &fpp_ac)) /* no trap? */ - fpp_write_op (ea, &x); /* store result */ + fpp_mul (&x, &fpp_ac); + fpp_write_op (ea, &x); /* store result */ break; } /* end sw op+mode */ + if (fpp_ssf) { + fpp_dump_apt (fpp_apta, FPS_HLTX); /* dump APT */ + fpp_ssf = 0; + } + if (sim_interval) sim_interval = sim_interval - 1; - } while ((sim_interval > 0) && + } while ((sim_interval > 0) && ((fpp_sta & (FPS_RUN|FPS_PAUSE|FPS_LOCK)) == (FPS_RUN|FPS_LOCK))); if ((fpp_sta & (FPS_RUN|FPS_PAUSE)) == FPS_RUN) sim_activate (uptr, 1); @@ -696,7 +756,11 @@ uint32 ad; ad = fpp_bra + ((ir & 0177) * 3); /* base + 3*7b off */ if (fpp_sta & FPS_DP) /* dp? skip exp */ ad = ad + 1; -return ad & ADDRMASK; +ad = ad & ADDRMASK; +if (fpp_sta & FPS_DP) + fpp_opa = ad + 1; +else fpp_opa = ad + 2; +return ad; } uint32 fpp_2wd_dir (uint32 ir) @@ -709,13 +773,18 @@ return fpp_adxr (ir, ad); /* do indexing */ uint32 fpp_indir (uint32 ir) { -uint32 ad, iad, wd1, wd2; +uint32 ad, wd1, wd2; ad = fpp_bra + ((ir & 07) * 3); /* base + 3*3b off */ -iad = fpp_adxr (ir, ad); /* do indexing */ -wd1 = fpp_read (iad + 1); /* read wds 2,3 */ -wd2 = fpp_read (iad + 2); -return ((wd1 & 07) << 12) | wd2; /* return addr */ +wd1 = fpp_read (ad + 1); /* bp+off points to */ +wd2 = fpp_read (ad + 2); +ad = ((wd1 & 07) << 12) | wd2; /* indirect ptr */ + +ad = fpp_adxr (ir, ad); /* do indexing */ +if (fpp_sta & FPS_DP) + fpp_opa = ad + 1; +else fpp_opa = ad + 2; +return ad; } uint32 fpp_ad15 (uint32 hi) @@ -738,8 +807,10 @@ if (ir & 0100) { /* increment? */ fpp_write_xr (xr, wd); } if (xr != 0) { /* indexed? */ - if (fpp_sta & FPS_EP) wd = wd * 6; /* scale by len */ - else if (fpp_sta & FPS_DP) wd = wd * 2; + if (fpp_sta & FPS_EP) + wd = wd * 6; /* scale by len */ + else if (fpp_sta & FPS_DP) + wd = wd * 2; else wd = wd * 3; return (base_ad + wd) & ADDRMASK; /* return index */ } @@ -748,22 +819,28 @@ else return base_ad & ADDRMASK; /* return addr */ /* Computation routines */ -/* Fraction/floating add - return true if overflow */ +/* Fraction/floating add */ -t_bool fpp_add (FPN *a, FPN *b, uint32 sub) +void fpp_add (FPN *a, FPN *b, uint32 sub) { FPN x, y, z; -uint32 ediff, c; +uint32 c, ediff; fpp_zcopy (&x, a); /* copy opnds */ fpp_zcopy (&y, b); if (sub) /* subtract? */ fpp_fr_neg (y.fr, EXACT); /* neg B, exact */ if (fpp_sta & FPS_DP) { /* dp? */ - fpp_fr_add (z.fr, x.fr, y.fr); /* z = a + b */ - if ((~x.fr[0] ^ y.fr[0]) & (x.fr[0] ^ z.fr[0]) & FPN_FRSIGN) { + uint32 cout = fpp_fr_add (z.fr, x.fr, y.fr, EXTEND);/* z = a + b */ + uint32 zsign = z.fr[0] & FPN_FRSIGN; + cout = (cout? 04000: 0); /* make sign bit */ + /* overflow is indicated when signs are equal and overflow does not + match the result sign bit */ + fpp_copy (a, &z); /* result is z */ + if (!((x.fr[0] ^ y.fr[0]) & FPN_FRSIGN) && (cout != zsign)) { + fpp_copy (a, &z); /* copy out result */ fpp_dump_apt (fpp_apta, FPS_IOVX); /* int ovf? */ - return TRUE; + return; } } else { /* fp or ep */ @@ -778,11 +855,11 @@ else { /* fp or ep */ y = z; } ediff = x.exp - y.exp; /* exp diff */ - z.exp = x.exp; /* result exp */ - if (ediff <= (fpp_sta & FPS_EP)? 59: 24) { /* any add? */ + if (ediff <= (uint32) ((fpp_sta & FPS_EP)? 59: 24)) { /* any add? */ + z.exp = x.exp; /* result exp */ if (ediff != 0) /* any align? */ fpp_fr_algn (y.fr, ediff, EXTEND); /* align, 60b */ - c = fpp_fr_add (z.fr, x.fr, y.fr); /* add fractions */ + c = fpp_fr_add (z.fr, x.fr, y.fr, EXTEND); /* add fractions */ if ((((x.fr[0] ^ y.fr[0]) & FPN_FRSIGN) == 0) && /* same signs? */ (c || /* carry out? */ ((~x.fr[0] & z.fr[0] & FPN_FRSIGN)))) { /* + to - change? */ @@ -790,57 +867,66 @@ else { /* fp or ep */ z.exp = z.exp + 1; /* incr exp */ } /* end same signs */ } /* end in range */ + else z = x; /* ovrshift */ } /* end ops != 0 */ if (fpp_norm (&z, EXTEND)) /* norm, !exact? */ fpp_round (&z); /* round */ - if (fpp_test_xp (&z)) /* ovf, unf? */ - return TRUE; + fpp_copy (a, &z); /* copy out */ + fpp_test_xp (&z); /* ovf, unf? */ } /* end else */ -fpp_copy (a, &z); /* result is z */ -return FALSE; +return; } -/* Fraction/floating multiply - return true if overflow */ +/* Fraction/floating multiply */ -t_bool fpp_mul (FPN *a, FPN *b) +void fpp_mul (FPN *a, FPN *b) { FPN x, y, z; fpp_zcopy (&x, a); /* copy opnds */ fpp_zcopy (&y, b); +if ((fpp_fr_test(y.fr, 0, EXACT-1) == 0) && (y.fr[EXACT-1] < 2)) { + y.exp = 0; + y.fr[EXACT-1] = 0; +} if (fpp_sta & FPS_DP) /* dp? */ - fpp_fr_mul (z.fr, x.fr, y.fr); /* mult frac */ + fpp_fr_mul (z.fr, x.fr, y.fr, TRUE); /* mult frac */ else { /* fp or ep */ + fpp_norm (&x, EXACT); + fpp_norm (&y, EXACT); z.exp = x.exp + y.exp; /* add exp */ - fpp_fr_mul (z.fr, x.fr, y.fr); /* mult frac */ + fpp_fr_mul (z.fr, x.fr, y.fr, TRUE); /* mult frac */ if (fpp_norm (&z, EXTEND)) /* norm, !exact? */ fpp_round (&z); /* round */ - if (fpp_test_xp (&z)) /* ovf, unf? */ - return TRUE; + fpp_copy (a, &z); + if (z.exp > 2047) + fpp_dump_apt (fpp_apta, FPS_FOVX); /* trap */ + return; } fpp_copy (a, &z); /* result is z */ -return FALSE; +return; } -/* Fraction/floating divide - return true if div by zero or overflow */ +/* Fraction/floating divide */ -t_bool fpp_div (FPN *a, FPN *b) +void fpp_div (FPN *a, FPN *b) { FPN x, y, z; if (fpp_fr_test (b->fr, 0, EXACT) == 0) { /* divisor 0? */ fpp_dump_apt (fpp_apta, FPS_DVZX); /* error */ - return TRUE; + return; } if (fpp_fr_test (a->fr, 0, EXACT) == 0) /* dividend 0? */ - return FALSE; /* quotient is 0 */ + return; /* quotient is 0 */ fpp_zcopy (&x, a); /* copy opnds */ fpp_zcopy (&y, b); if (fpp_sta & FPS_DP) { /* dp? */ if (fpp_fr_div (z.fr, x.fr, y.fr)) { /* fr div, ovflo? */ fpp_dump_apt (fpp_apta, FPS_IOVX); /* error */ - return TRUE; + return; } + fpp_copy (a, &z); /* result is z */ } else { /* fp or ep */ fpp_norm (&y, EXACT); /* norm divisor */ @@ -856,11 +942,15 @@ else { /* fp or ep */ } if (fpp_norm (&z, EXTEND)) /* norm, !exact? */ fpp_round (&z); /* round */ - if (fpp_test_xp (&z)) /* ovf, unf? */ - return TRUE; + fpp_copy (a, &z); + if (z.exp > 2048) { /* underflow? */ + if (fpp_cmd & FPC_UNFX) { /* trap? */ + fpp_dump_apt (fpp_apta, FPS_UNF); + return; + } + } } -fpp_copy (a, &z); /* result is z */ -return FALSE; +return; } /* Integer multiply - returns true if overflow */ @@ -872,15 +962,17 @@ FPN x, y, z; fpp_zcopy (&x, a); /* copy args */ fpp_zcopy (&y, b); -fpp_fr_mul (z.fr, x.fr, y.fr); /* mult fracs */ +fpp_fr_mul (z.fr, x.fr, y.fr, FALSE); /* mult fracs */ +a->fr[0] = z.fr[1]; /* low 24b */ +a->fr[1] = z.fr[2]; +if ((a->fr[0] == 0) && (a->fr[1] == 0)) /* fpp zeroes exp */ + a->exp = 0; /* even in dp mode */ sext = (z.fr[2] & FPN_FRSIGN)? 07777: 0; if (((z.fr[0] | z.fr[1] | sext) != 0) && /* hi 25b == 0 */ ((z.fr[0] & z.fr[1] & sext) != 07777)) { /* or 777777774? */ fpp_dump_apt (fpp_apta, FPS_IOVX); return TRUE; } -a->fr[0] = z.fr[2]; /* low 24b */ -a->fr[1] = z.fr[3]; return FALSE; } @@ -926,7 +1018,7 @@ if (fpp_fr_test (a->fr, 0, cnt) == 0) { /* zero? */ return FALSE; /* don't round */ } while (((a->fr[0] == 0) && !(a->fr[1] & 04000)) || /* lead 13b same? */ - ((a->fr[0] = 07777) && (a->fr[1] & 04000))) { + ((a->fr[0] == 07777) && (a->fr[1] & 04000))) { fpp_fr_lsh12 (a->fr, cnt); /* move word */ a->exp = a->exp - 12; } @@ -967,6 +1059,8 @@ for (i = 0; i < FPN_NFR_EP; i++) { a->fr[i] = b->fr[i]; else a->fr[i] = 0; } +a->fr[i++] = 0; +a->fr[i] = 0; return; } @@ -979,9 +1073,8 @@ if (a->exp > 2047) { /* overflow? */ return TRUE; } if (a->exp < -2048) { /* underflow? */ - fpp_sta |= FPS_UNF; /* set flag */ - if (fpp_sta & FPS_UNFX) { /* trap? */ - fpp_dump_apt (fpp_apta, FPS_UNFX); + if (fpp_cmd & FPC_UNFX) { /* trap? */ + fpp_dump_apt (fpp_apta, FPS_UNF); return TRUE; } fpp_copy (a, &fpp_zero); /* flush to 0 */ @@ -1015,13 +1108,14 @@ return; /* N-precision integer routines */ -/* Fraction add/sub - always carried out to 60b */ +/* Fraction add/sub */ + +uint32 fpp_fr_add (uint32 *c, uint32 *a, uint32 *b, uint32 cnt) -uint32 fpp_fr_add (uint32 *c, uint32 *a, uint32 *b) { uint32 i, cin; -for (i = FPN_NFR_EP, cin = 0; i > 0; i--) { +for (i = cnt, cin = 0; i > 0; i--) { c[i - 1] = a[i - 1] + b[i - 1] + cin; cin = (c[i - 1] >> 12) & 1; c[i - 1] = c[i - 1] & 07777; @@ -1029,11 +1123,11 @@ for (i = FPN_NFR_EP, cin = 0; i > 0; i--) { return cin; } -void fpp_fr_sub (uint32 *c, uint32 *a, uint32 *b) +void fpp_fr_sub (uint32 *c, uint32 *a, uint32 *b, uint32 cnt) { uint32 i, cin; -for (i = FPN_NFR_EP, cin = 0; i > 0; i--) { +for (i = cnt, cin = 0; i > 0; i--) { c[i - 1] = a[i - 1] - b[i - 1] - cin; cin = (c[i - 1] >> 12) & 1; c[i - 1] = c[i - 1] & 07777; @@ -1062,25 +1156,48 @@ return; If a-sign != c-sign, shift-in = result-sign */ -void fpp_fr_mul (uint32 *c, uint32 *a, uint32 *b) +void fpp_fr_mul (uint32 *c, uint32 *a, uint32 *b, t_bool fix) { -uint32 i, cnt, lo, c_old, cin; +uint32 i, cnt, lo, wc, fill, b_sign; -fpp_fr_fill (c, 0, EXTEND); /* clr answer */ +b_sign = b[0] & FPN_FRSIGN; /* remember b's sign */ + +fpp_fr_fill (c, 0, FPN_NFR_MDS); /* clr answer */ if (fpp_sta & FPS_EP) /* ep? */ - lo = FPN_NFR_EP - 1; /* test <59> */ -else lo = FPN_NFR_FP - 1; /* sp, test <23> */ -cnt = (lo + 1) * 12; /* # iterations */ -for (i = 0; i < cnt; i++) { /* loop thru mpcd */ - c_old = c[0]; - if (b[lo] & 1) /* mpcd bit set? */ - fpp_fr_add (c, a, c); /* add mpyr */ - cin = (((a[0] ^ c_old) & FPN_FRSIGN)? c[0]: a[0]) & FPN_FRSIGN; - fpp_fr_rsh1 (c, cin, EXTEND); /* shift answer */ - fpp_fr_rsh1 (b, 0, EXACT); /* shift mpcd */ + lo = FPN_NFR_EP; /* low order mpyr word */ +else + lo = FPN_NFR_FP; /* low order mpyr word */ + +if (fix) + fpp_fr_algn (a, 12, FPN_NFR_MDS + 1); /* fill left with sign */ +wc = 2; /* 3 words at start */ +fill = 0; +cnt = lo * 12; /* total steps */ +for (i = 0; i < cnt; i++) { + if ((i % 12) == 0) { + wc++; /* do another word */ + lo--; /* and next mpyr word */ + fpp_fr_algn (c, 24, wc + 1); + c[wc] = 0; + c[0] = c[1] = fill; /* propagate sign */ + } + if (b[lo] & FPN_FRSIGN) /* mpyr bit set? */ + fpp_fr_add(c, a, c, wc); + fill = ((c[0] & FPN_FRSIGN) ? 07777 : 0); /* remember sign */ + fpp_fr_lsh1 (c, wc); /* shift the result */ + fpp_fr_lsh1 (b + lo, 1); /* shift mpcd */ + } -if (a[0] & FPN_FRSIGN) /* mpyr negative? */ - fpp_fr_sub (c, c, a); /* adjust result */ + +if (!fix) /* imul shifts result */ + fpp_fr_rsh1 (c, c[0] & FPN_FRSIGN, EXACT + 1); /* result is 1 wd right */ +if (b_sign) { /* if mpyr was negative */ + if (fix) + fpp_fr_lsh12 (a, FPN_NFR_MDS+1); /* restore a */ + fpp_fr_sub (c, c, a, EXACT); /* adjust result */ + fpp_fr_sub (c, c, a, EXACT); + } + return; } @@ -1088,29 +1205,35 @@ return; t_bool fpp_fr_div (uint32 *c, uint32 *a, uint32 *b) { -uint32 i, old_c, lo, cnt, sign; +uint32 i, old_c, lo, cnt, sign, b_sign, addsub, limit; +/* Number of words processed by each divide step */ +static uint32 limits[7] = {6, 6, 5, 4, 3, 3, 2}; -fpp_fr_fill (c, 0, EXTEND); /* clr answer */ +fpp_fr_fill (c, 0, FPN_NFR_MDS); /* clr answer */ sign = (a[0] ^ b[0]) & FPN_FRSIGN; /* sign of result */ +b_sign = (b[0] & FPN_FRSIGN); if (a[0] & FPN_FRSIGN) /* |a| */ fpp_fr_neg (a, EXACT); -if (b[0] & FPN_FRSIGN); /* |b| */ - fpp_fr_neg (b, EXACT); -if (fpp_sta & FPS_EP) /* ep? 5 words */ - lo = FPN_NFR_EP - 1; -else lo = FPN_NFR_FP; /* fp, dp? 3 words */ +if (fpp_sta & FPS_EP) /* ep? 6 words */ + lo = FPN_NFR_EP-1; +else lo = FPN_NFR_FP-1; /* fp, dp? 3 words */ cnt = (lo + 1) * 12; +addsub = 04000; /* setup first op */ for (i = 0; i < cnt; i++) { /* loop */ - fpp_fr_lsh1 (c, EXTEND); /* shift quotient */ - if (fpp_fr_cmp (a, b, EXTEND) >= 0) { /* sub work? */ - fpp_fr_sub (a, a, b); /* divd - divr */ - if (a[0] & FPN_FRSIGN) /* sign flip? */ - return TRUE; /* no, overflow */ + limit = limits[i / 12]; /* how many wds this time */ + fpp_fr_lsh1 (c, FPN_NFR_MDS); /* shift quotient */ + if (addsub ^ b_sign) /* diff signs, subtr */ + fpp_fr_sub (a, a, b, limit); /* divd - divr */ + else + fpp_fr_add (a, a, b, limit); /* restore */ + if (!(a[0] & FPN_FRSIGN)) { c[lo] |= 1; /* set quo bit */ + addsub = 04000; /* sign for nxt loop */ } - fpp_fr_lsh1 (a, EXTEND); /* shift dividend */ + else addsub = 0; + fpp_fr_lsh1 (a, limit); /* shift dividend */ } -old_c = c[0]; /* save hi quo */ +old_c = c[0]; /* save ho quo */ if (sign) /* expect neg ans? */ fpp_fr_neg (c, EXTEND); /* -quo */ if (old_c & FPN_FRSIGN) /* sign set before */ @@ -1126,7 +1249,7 @@ uint32 i, cin; for (i = cnt, cin = 1; i > 0; i--) { a[i - 1] = (~a[i - 1] + cin) & 07777; - cin = (a[i - 1] == 0); + cin = (cin != 0 && a[i - 1] == 0); } return cin; } @@ -1244,7 +1367,7 @@ if (sc >= (cnt * 12)) { /* out of range? */ return; } while (sc >= 12) { - for (i = cnt - 1; i > 0; i++) + for (i = cnt - 1; i > 0; i--) a[i] = a[i - 1]; a[0] = sign; sc = sc - 12; @@ -1263,7 +1386,6 @@ void fpp_read_op (uint32 ea, FPN *a) { uint32 i; -fpp_opa = ea; if (!(fpp_sta & FPS_DP)) { a->exp = fpp_read (ea++); a->exp = SEXT12 (a->exp); @@ -1277,7 +1399,7 @@ void fpp_write_op (uint32 ea, FPN *a) { uint32 i; -fpp_opa = ea; +fpp_opa = ea + 2; if (!(fpp_sta & FPS_DP)) fpp_write (ea++, a->exp); for (i = 0; i < EXACT; i++) @@ -1328,7 +1450,7 @@ fpp_fpc = ((wd0 & 07) << 12) | apt_read (ad++); if (FPC_GETFAST (fpp_cmd) != 017) { fpp_xra = ((wd0 & 00070) << 9) | apt_read (ad++); fpp_bra = ((wd0 & 00700) << 6) | apt_read (ad++); - ad++; + fpp_opa = ((wd0 & 07000) << 3) | apt_read (ad++); fpp_ac.exp = apt_read (ad++); for (i = 0; i < EXACT; i++) fpp_ac.fr[i] = apt_read (ad++); @@ -1370,9 +1492,8 @@ return; t_stat fpp_reset (DEVICE *dptr) { sim_cancel (&fpp_unit); -fpp_sta = 0; -fpp_cmd = 0; fpp_flag = 0; +fpp_last_lockbit = 0; int_req &= ~INT_FPP; if (sim_switches & SWMASK ('P')) { fpp_apta = 0; @@ -1382,6 +1503,14 @@ if (sim_switches & SWMASK ('P')) { fpp_xra = 0; fpp_opa = 0; fpp_ac = fpp_zero; + fpp_ssf = 0; + fpp_sta = 0; + fpp_cmd = 0; } +else { + fpp_sta &= ~(FPS_DP|FPS_EP|FPS_TRPX|FPS_DVZX|FPS_IOVX|FPS_FOVX|FPS_UNF); + fpp_cmd &= (FPC_DP|FPC_UNFX|FPC_IE); + } + return SCPE_OK; } diff --git a/PDP8/pdp8_sys.c b/PDP8/pdp8_sys.c index db3a095c..3b550941 100644 --- a/PDP8/pdp8_sys.c +++ b/PDP8/pdp8_sys.c @@ -1,6 +1,6 @@ /* pdp8_sys.c: PDP-8 simulator interface - Copyright (c) 1993-2008, Robert M Supnik + Copyright (c) 1993-2009, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -23,6 +23,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from Robert M Supnik. + 24-Mar-09 RMS Added link to FPP 24-Jun-08 RMS Fixed bug in new rim loader (found by Don North) 24-May-08 RMS Fixed signed/unsigned declaration inconsistency 03-Sep-07 RMS Added FPP8 support @@ -52,6 +53,7 @@ extern DEVICE cpu_dev; extern UNIT cpu_unit; extern DEVICE tsc_dev; +extern DEVICE fpp_dev; extern DEVICE ptr_dev, ptp_dev; extern DEVICE tti_dev, tto_dev; extern DEVICE clk_dev, lpt_dev; @@ -91,6 +93,7 @@ int32 sim_emax = 4; DEVICE *sim_devices[] = { &cpu_dev, &tsc_dev, + &fpp_dev, &clk_dev, &ptr_dev, &ptp_dev, diff --git a/VAX/vax_cpu.c b/VAX/vax_cpu.c index aad5a5f0..933040f3 100644 --- a/VAX/vax_cpu.c +++ b/VAX/vax_cpu.c @@ -1,6 +1,6 @@ /* vax_cpu.c: VAX CPU - Copyright (c) 1998-2008, Robert M Supnik + Copyright (c) 1998-2010, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -25,6 +25,8 @@ cpu VAX central processor + 24-Apr-10 RMS Added OLDVMS idle timer option + Fixed bug in SET CPU IDLE 21-May-08 RMS Removed inline support 28-May-08 RMS Inlined instruction prefetch, physical memory routines 13-Aug-07 RMS Fixed bug in read access g-format indexed specifiers @@ -173,6 +175,8 @@ #define UNIT_CONH (1u << UNIT_V_CONH) #define UNIT_MSIZE (1u << UNIT_V_MSIZE) #define GET_CUR acc = ACC_MASK (PSL_GETCUR (PSL)) +#define VAX_IDLE_DFLT 1000 +#define OLD_IDLE_DFLT 200 #define OPND_SIZE 16 #define INST_SIZE 52 @@ -259,7 +263,7 @@ int32 ibufl, ibufh; /* prefetch buf */ int32 ibcnt, ppc; /* prefetch ctl */ uint32 cpu_idle_ipl_mask = 0x8; /* idle if on IPL 3 */ uint32 cpu_idle_type = 1; /* default to VMS */ -int32 cpu_idle_wait = 1000; /* for these cycles */ +int32 cpu_idle_wait = VAX_IDLE_DFLT; /* for these cycles */ jmp_buf save_env; REG *pcq_r = NULL; /* PC queue reg ptr */ int32 pcq[PCQ_SIZE] = { 0 }; /* PC queue */ @@ -3377,15 +3381,17 @@ return more; struct os_idle { char *name; uint32 mask; + int32 value; }; static struct os_idle os_tab[] = { - { "VMS", 0x8 }, - { "NETBSD", 0x2 }, - { "ULTRIX", 0x2 }, - { "OPENBSD", 0x1 }, - { "32V", 0x1 }, - { NULL, 0 } + { "VMS", 0x8, VAX_IDLE_DFLT }, + { "NETBSD", 0x2, VAX_IDLE_DFLT }, + { "ULTRIX", 0x2, VAX_IDLE_DFLT }, + { "OPENBSD", 0x1, VAX_IDLE_DFLT }, + { "32V", 0x1, VAX_IDLE_DFLT }, + { "OLDVMS", 0xB, OLD_IDLE_DFLT }, + { NULL, 0, 0 } }; /* Set and show idle */ @@ -3399,7 +3405,8 @@ if (cptr != NULL) { if (strcmp (os_tab[i].name, cptr) == 0) { cpu_idle_type = i + 1; cpu_idle_ipl_mask = os_tab[i].mask; - return sim_set_idle (uptr, val, cptr, desc); + cpu_idle_wait = os_tab[i].value; + return sim_set_idle (uptr, val, NULL, desc); } } return SCPE_ARG; diff --git a/descrip.mms b/descrip.mms index f6530a56..1dd77ed7 100644 --- a/descrip.mms +++ b/descrip.mms @@ -2,6 +2,7 @@ # Written By: Robert Alan Byer / byer@mail.ourservers.net # Modified By: Mark Pizzolato / mark@infocomm.com # Norman Lastovica / norman.lastovica@oracle.com +# Camiel Vanderhoeven / camiel@camicom.com # # This MMS/MMK build script is used to compile the various simulators in # the SIMH package for OpenVMS using DEC C v6.0-001(AXP), v6.5-001(AXP), @@ -182,21 +183,24 @@ ALTAIR_OPTIONS = /INCL=($(SIMH_DIR),$(ALTAIR_DIR))/DEF=($(CC_DEFS)) # MITS Altair Z80 Simulator Definitions. # ALTAIRZ80_DIR = SYS$DISK:[.ALTAIRZ80] -ALTAIRZ80_LIB = $(LIB_DIR)ALTAIRZ80-$(ARCH).OLB -ALTAIRZ80_SOURCE = $(ALTAIRZ80_DIR)/ALTAIRZ80_CPU.C,$(ALTAIRZ80_DIR)/ALTAIRZ80_CPU_NOMMU.C,\ - $(ALTAIRZ80_DIR)/ALTAIRZ80_DSK.C,$(ALTAIRZ80_DIR)/DISASM.C,\ - $(ALTAIRZ80_DIR)/ALTAIRZ80_SIO.C,$(ALTAIRZ80_DIR)/ALTAIRZ80_SYS.C,\ - $(ALTAIRZ80_DIR)/ALTAIRZ80_HDSK.C,$(ALTAIRZ80_DIR)/ALTAIRZ80_NET.C,\ - $(ALTAIRZ80_DIR)/FLASHWRITER2.C,$(ALTAIRZ80_DIR)/I86_DECODE.C,\ - $(ALTAIRZ80_DIR)/I86_OPS.C,$(ALTAIRZ80_DIR)/I86_PRIM_OPS.C,\ - $(ALTAIRZ80_DIR)/I8272.C,$(ALTAIRZ80_DIR)/INSNSA.C,$(ALTAIRZ80_DIR)/INSNSD.C,\ - $(ALTAIRZ80_DIR)/MFDC.C,$(ALTAIRZ80_DIR)/N8VEM.C,$(ALTAIRZ80_DIR)/VFDHD.C,\ - $(ALTAIRZ80_DIR)/S100_DISK1A.C,$(ALTAIRZ80_DIR)/S100_DISK2.C,\ - $(ALTAIRZ80_DIR)/S100_FIF.C,$(ALTAIRZ80_DIR)/S100_MDRIVEH.C,\ - $(ALTAIRZ80_DIR)/S100_MDSAD.C,$(ALTAIRZ80_DIR)/S100_SELCHAN.C,\ - $(ALTAIRZ80_DIR)/S100_SS1.C,$(ALTAIRZ80_DIR)/S100_64FDC.C,\ - $(ALTAIRZ80_DIR)/S100_SCP300F.C,$(ALTAIRZ80_DIR)/SIM_IMD.C,\ - $(ALTAIRZ80_DIR)/WD179X.C +ALTAIRZ80_LIB1 = $(LIB_DIR)ALTAIRZ80L1-$(ARCH).OLB +ALTAIRZ80_SOURCE1 = $(ALTAIRZ80_DIR)ALTAIRZ80_CPU.C,$(ALTAIRZ80_DIR)ALTAIRZ80_CPU_NOMMU.C,\ + $(ALTAIRZ80_DIR)ALTAIRZ80_DSK.C,$(ALTAIRZ80_DIR)DISASM.C,\ + $(ALTAIRZ80_DIR)ALTAIRZ80_SIO.C,$(ALTAIRZ80_DIR)ALTAIRZ80_SYS.C,\ + $(ALTAIRZ80_DIR)ALTAIRZ80_HDSK.C,$(ALTAIRZ80_DIR)ALTAIRZ80_NET.C,\ + $(ALTAIRZ80_DIR)FLASHWRITER2.C,$(ALTAIRZ80_DIR)I86_DECODE.C,\ + $(ALTAIRZ80_DIR)I86_OPS.C,$(ALTAIRZ80_DIR)I86_PRIM_OPS.C,\ + $(ALTAIRZ80_DIR)I8272.C,$(ALTAIRZ80_DIR)INSNSA.C,$(ALTAIRZ80_DIR)INSNSD.C,\ + $(ALTAIRZ80_DIR)MFDC.C,$(ALTAIRZ80_DIR)N8VEM.C,$(ALTAIRZ80_DIR)VFDHD.C +ALTAIRZ80_LIB2 = $(LIB_DIR)ALTAIRZ80L2-$(ARCH).OLB +ALTAIRZ80_SOURCE2 = $(ALTAIRZ80_DIR)S100_DISK1A.C,$(ALTAIRZ80_DIR)S100_DISK2.C,\ + $(ALTAIRZ80_DIR)S100_FIF.C,$(ALTAIRZ80_DIR)S100_MDRIVEH.C,\ + $(ALTAIRZ80_DIR)S100_MDSAD.C,$(ALTAIRZ80_DIR)S100_SELCHAN.C,\ + $(ALTAIRZ80_DIR)S100_SS1.C,$(ALTAIRZ80_DIR)S100_64FDC.C,\ + $(ALTAIRZ80_DIR)S100_SCP300F.C,$(ALTAIRZ80_DIR)SIM_IMD.C,\ + $(ALTAIRZ80_DIR)WD179X.C,$(ALTAIRZ80_DIR)S100_DISK3.C,\ + $(ALTAIRZ80_DIR)S100_ADCS6.C,$(ALTAIRZ80_DIR)S100_HDC1001.C,\ + $(ALTAIRZ80_DIR)S100_IF3.C ALTAIRZ80_OPTIONS = /INCL=($(SIMH_DIR),$(ALTAIRZ80_DIR))/DEF=($(CC_DEFS)) # @@ -256,20 +260,21 @@ H316_OPTIONS = /INCL=($(SIMH_DIR),$(H316_DIR))/DEF=($(CC_DEFS)) # Hewlett-Packard HP-2100 Simulator Definitions. # HP2100_DIR = SYS$DISK:[.HP2100] -HP2100_LIB = $(LIB_DIR)HP2100-$(ARCH).OLB -HP2100_SOURCE = $(HP2100_DIR)HP2100_STDDEV.C,$(HP2100_DIR)HP2100_DP.C,\ - $(HP2100_DIR)HP2100_DQ.C,$(HP2100_DIR)HP2100_DR.C,\ - $(HP2100_DIR)HP2100_LPS.C,$(HP2100_DIR)HP2100_MS.C,\ - $(HP2100_DIR)HP2100_MT.C,$(HP2100_DIR)HP2100_MUX.C,\ - $(HP2100_DIR)HP2100_CPU.C,$(HP2100_DIR)HP2100_FP.C,\ - $(HP2100_DIR)HP2100_SYS.C,$(HP2100_DIR)HP2100_LPT.C,\ - $(HP2100_DIR)HP2100_IPL.C,$(HP2100_DIR)HP2100_DS.C,\ - $(HP2100_DIR)HP2100_CPU0.C,$(HP2100_DIR)HP2100_CPU1.C,\ - $(HP2100_DIR)HP2100_CPU2.C,$(HP2100_DIR)HP2100_CPU3.C,\ - $(HP2100_DIR)HP2100_CPU4.C,$(HP2100_DIR)HP2100_CPU5.C,\ - $(HP2100_DIR)HP2100_CPU6.C,$(HP2100_DIR)HP2100_CPU7.C,\ - $(HP2100_DIR)HP2100_FP1.C,$(HP2100_DIR)HP2100_BACI.C,\ - $(HP2100_DIR)HP2100_MPX.C,$(HP2100_DIR)HP2100_PIF.C +HP2100_LIB1 = $(LIB_DIR)HP2100L1-$(ARCH).OLB +HP2100_SOURCE1 = $(HP2100_DIR)HP2100_STDDEV.C,$(HP2100_DIR)HP2100_DP.C,\ + $(HP2100_DIR)HP2100_DQ.C,$(HP2100_DIR)HP2100_DR.C,\ + $(HP2100_DIR)HP2100_LPS.C,$(HP2100_DIR)HP2100_MS.C,\ + $(HP2100_DIR)HP2100_MT.C,$(HP2100_DIR)HP2100_MUX.C,\ + $(HP2100_DIR)HP2100_CPU.C,$(HP2100_DIR)HP2100_FP.C,\ + $(HP2100_DIR)HP2100_SYS.C,$(HP2100_DIR)HP2100_LPT.C,\ + $(HP2100_DIR)HP2100_IPL.C,$(HP2100_DIR)HP2100_DS.C,\ + $(HP2100_DIR)HP2100_CPU0.C,$(HP2100_DIR)HP2100_CPU1.C,\ + $(HP2100_DIR)HP2100_CPU2.C,$(HP2100_DIR)HP2100_CPU3.C,\ + $(HP2100_DIR)HP2100_CPU4.C,$(HP2100_DIR)HP2100_CPU5.C,\ + $(HP2100_DIR)HP2100_CPU6.C,$(HP2100_DIR)HP2100_CPU7.C +HP2100_LIB2 = $(LIB_DIR)HP2100L2-$(ARCH).OLB +HP2100_SOURCE2 = $(HP2100_DIR)HP2100_FP1.C,$(HP2100_DIR)HP2100_BACI.C,\ + $(HP2100_DIR)HP2100_MPX.C,$(HP2100_DIR)HP2100_PIF.C .IF ALPHA_OR_IA64 HP2100_OPTIONS = /INCL=($(SIMH_DIR),$(HP2100_DIR))\ /DEF=($(CC_DEFS),"HAVE_INT64=1") @@ -362,7 +367,7 @@ PDP8_SOURCE = $(PDP8_DIR)PDP8_CPU.C,$(PDP8_DIR)PDP8_CLK.C,\ $(PDP8_DIR)PDP8_SYS.C,$(PDP8_DIR)PDP8_TT.C,\ $(PDP8_DIR)PDP8_TTX.C,$(PDP8_DIR)PDP8_RL.C,\ $(PDP8_DIR)PDP8_TSC.C,$(PDP8_DIR)PDP8_TD.C,\ - $(PDP8_DIR)PDP8_CT.C + $(PDP8_DIR)PDP8_CT.C,$(PDP8_DIR)PDP8_FPP.C PDP8_OPTIONS = /INCL=($(SIMH_DIR),$(PDP8_DIR))/DEF=($(CC_DEFS)) # @@ -509,14 +514,14 @@ I7094_OPTIONS = /INCL=($(SIMH_DIR),$(I7094_DIR))/DEF=($(CC_DEFS)) ALL : ALTAIR ALTAIRZ80 ECLIPSE GRI LGP H316 HP2100 I1401 I1620 IBM1130 ID16 \ ID32 NOVA PDP1 PDP4 PDP7 PDP8 PDP9 PDP10 PDP11 PDP15 S3 VAX VAX780 SDS \ I7094 - @CONTINUE + $! No further actions necessary .ELSE # # Else We Are On VAX And Build Everything EXCEPT the 64b simulators # ALL : ALTAIR ALTAIRZ80 GRI H316 HP2100 I1401 I1620 IBM1130 ID16 ID32 \ NOVA PDP1 PDP4 PDP7 PDP8 PDP9 PDP11 PDP15 S3 VAX VAX780 SDS - @CONTINUE + $! No further actions necessary .ENDIF CLEAN : @@ -559,9 +564,20 @@ $(ALTAIR_LIB) : $(ALTAIR_SOURCE) $ LIBRARY/REPLACE $(MMS$TARGET) $(BLD_DIR)*.OBJ $ DELETE/NOLOG/NOCONFIRM $(BLD_DIR)*.OBJ;* -$(ALTAIRZ80_LIB) : $(ALTAIRZ80_SOURCE) +$(ALTAIRZ80_LIB1) : $(ALTAIRZ80_SOURCE1) $! - $! Building The $(ALTAIRZ80_LIB) Library. + $! Building The $(ALTAIRZ80_LIB1) Library. + $! + $ $(CC)$(ALTAIRZ80_OPTIONS) - + /OBJ=$(BLD_DIR) $(MMS$CHANGED_LIST) + $ IF (F$SEARCH("$(MMS$TARGET)").EQS."") THEN - + LIBRARY/CREATE $(MMS$TARGET) + $ LIBRARY/REPLACE $(MMS$TARGET) $(BLD_DIR)*.OBJ + $ DELETE/NOLOG/NOCONFIRM $(BLD_DIR)*.OBJ;* + +$(ALTAIRZ80_LIB2) : $(ALTAIRZ80_SOURCE2) + $! + $! Building The $(ALTAIRZ80_LIB2) Library. $! $ $(CC)$(ALTAIRZ80_OPTIONS) - /OBJ=$(BLD_DIR) $(MMS$CHANGED_LIST) @@ -628,9 +644,20 @@ $(H316_LIB) : $(H316_SOURCE) $ LIBRARY/REPLACE $(MMS$TARGET) $(BLD_DIR)*.OBJ $ DELETE/NOLOG/NOCONFIRM $(BLD_DIR)*.OBJ;* -$(HP2100_LIB) : $(HP2100_SOURCE) +$(HP2100_LIB1) : $(HP2100_SOURCE1) $! - $! Building The $(HP2100_LIB) Library. + $! Building The $(HP2100_LIB1) Library. + $! + $ $(CC)$(HP2100_OPTIONS) - + /OBJ=$(BLD_DIR) $(MMS$CHANGED_LIST) + $ IF (F$SEARCH("$(MMS$TARGET)").EQS."") THEN - + LIBRARY/CREATE $(MMS$TARGET) + $ LIBRARY/REPLACE $(MMS$TARGET) $(BLD_DIR)*.OBJ + $ DELETE/NOLOG/NOCONFIRM $(BLD_DIR)*.OBJ;* + +$(HP2100_LIB2) : $(HP2100_SOURCE2) + $! + $! Building The $(HP2100_LIB2) Library. $! $ $(CC)$(HP2100_OPTIONS) - /OBJ=$(BLD_DIR) $(MMS$CHANGED_LIST) @@ -918,13 +945,14 @@ ALTAIR : $(SIMH_LIB) $(ALTAIR_LIB) $(BLD_DIR)SCP.OBJ,$(ALTAIR_LIB)/LIBRARY,$(SIMH_LIB)/LIBRARY $ DELETE/NOLOG/NOCONFIRM $(BLD_DIR)*.OBJ;* -ALTAIRZ80 : $(SIMH_LIB) $(ALTAIRZ80_LIB) +ALTAIRZ80 : $(SIMH_LIB) $(ALTAIRZ80_LIB1) $(ALTAIRZ80_LIB2) $! $! Building The $(BIN_DIR)ALTAIRZ80-$(ARCH).EXE Simulator. $! $ $(CC)$(ALTAIRZ80_OPTIONS)/OBJ=$(BLD_DIR) SCP.C $ LINK $(LINK_DEBUG)/EXE=$(BIN_DIR)ALTAIRZ80-$(ARCH).EXE - - $(BLD_DIR)SCP.OBJ,$(ALTAIRZ80_LIB)/LIBRARY,$(SIMH_LIB)/LIBRARY + $(BLD_DIR)SCP.OBJ,$(ALTAIRZ80_LIB1)/LIBRARY, - + $(ALTAIRZ80_LIB2)/LIBRARY,$(SIMH_LIB)/LIBRARY $ DELETE/NOLOG/NOCONFIRM $(BLD_DIR)*.OBJ;* # @@ -976,13 +1004,14 @@ H316 : $(SIMH_LIB) $(H316_LIB) $(BLD_DIR)SCP.OBJ,$(H316_LIB)/LIBRARY,$(SIMH_LIB)/LIBRARY $ DELETE/NOLOG/NOCONFIRM $(BLD_DIR)*.OBJ;* -HP2100 : $(SIMH_LIB) $(HP2100_LIB) +HP2100 : $(SIMH_LIB) $(HP2100_LIB1) $(HP2100_LIB2) $! $! Building The $(BIN_DIR)HP2100-$(ARCH).EXE Simulator. $! $ $(CC)$(HP2100_OPTIONS)/OBJ=$(BLD_DIR) SCP.C $ LINK $(LINK_DEBUG)/EXE=$(BIN_DIR)HP2100-$(ARCH).EXE - - $(BLD_DIR)SCP.OBJ,$(HP2100_LIB)/LIBRARY,$(SIMH_LIB)/LIBRARY + $(BLD_DIR)SCP.OBJ,$(HP2100_LIB1)/LIBRARY, - + $(HP2100_LIB2)/LIBRARY,$(SIMH_LIB)/LIBRARY $ DELETE/NOLOG/NOCONFIRM $(BLD_DIR)*.OBJ;* I1401 : $(SIMH_LIB) $(I1401_LIB) diff --git a/makefile b/makefile index 2b65533f..57cde601 100644 --- a/makefile +++ b/makefile @@ -251,13 +251,19 @@ SDS = ${SDSD}/sds_cpu.c ${SDSD}/sds_drm.c ${SDSD}/sds_dsk.c ${SDSD}/sds_io.c \ ${SDSD}/sds_stddev.c ${SDSD}/sds_sys.c SDS_OPT = -I ${SDSD} +SWTPD = SWTP +SWTP = ${SWTPD}/swtp_cpu.c ${SWTPD}/swtp_dsk.c ${SWTPD}/swtp_sio.c \ + ${SWTPD}/swtp_sys.c +SWTP_OPT = -I ${SWTPD} + + # # Build everything # ALL = pdp1 pdp4 pdp7 pdp8 pdp9 pdp15 pdp11 pdp10 \ vax vax780 nova eclipse hp2100 i1401 i1620 s3 \ altair altairz80 gri i1620 i7094 ibm1130 id16 \ - id32 sds lgp h316 + id32 sds lgp h316 swtp all : ${ALL} @@ -400,3 +406,8 @@ sds : ${BIN}sds${EXE} ${BIN}sds${EXE} : ${SDS} ${SIM} ${CC} ${SDS} ${SIM} ${SDS_OPT} -o $@ ${LDFLAGS} + +swtp : ${BIN}swtp${EXE} + +${BIN}swtp${EXE} : ${SWTP} ${SIM} + ${CC} ${SWTP} ${SIM} ${SWTP_OPT} -o $@ ${LDFLAGS} \ No newline at end of file diff --git a/sim_rev.h b/sim_rev.h index 4ba41b2d..eeaf513e 100644 --- a/sim_rev.h +++ b/sim_rev.h @@ -1,6 +1,6 @@ /* sim_rev.h: simulator revisions and current rev level - Copyright (c) 1993-2008, Robert M Supnik + Copyright (c) 1993-2010, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -29,13 +29,45 @@ #define SIM_MAJOR 3 #define SIM_MINOR 8 -#define SIM_PATCH 1 +#define SIM_PATCH 2 #define SIM_DELTA 0 /* V3.8 revision history patch date module(s) and fix(es) + 2 tbd h316_cpu.c: + - fixed bugs in MPY, DIV introduced in 3.8-1 + + i1401_cd.c: + - fixed read stacker operation in column binary mode + - fixed punch stacker operation (from Van Snyder) + + 1401_cpu.c: + - revised divide algorithm (from Van Snyder) + + i1401_mt.c: + - added no rewind option (from Van Snyder) + + pdp11_rk.c: + - fixed bug in read header (from Walter F Mueller) + + pdp11_rl.c: + - added debug support + + pdp11_rq.c: + - added RD32 support + + pdp8_fpp.c: + - many bug fixes (all from Rick Murphy); now functional + + pdp8_sys.c: + - added link to FPP + + vax_cpu.c: + - added OLDVMS idle timer option + - fixed bug in SET CPU IDLE + 1 08-Feb-09 scp.c: - revised RESTORE unit logic for consistency - "detach_all" ignores error status returns if shutting down (from Dave Bryan) diff --git a/swtp/6800boot.dsk b/swtp/6800boot.dsk new file mode 100644 index 0000000000000000000000000000000000000000..132cd56935e98384e1a2f7f9fdbcc441ac45ceb9 GIT binary patch literal 1474560 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 O{ht!<|5W1h|Nb8cMGD9O literal 0 HcmV?d00001 diff --git a/swtp/6800work.dsk b/swtp/6800work.dsk new file mode 100644 index 0000000000000000000000000000000000000000..34a1da5eaab46067eff4ba6b00b0a236018e457c GIT binary patch literal 1474560 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%0ANejgO{F()TkUKBDADAH$4Cb}&G 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

4u;Qn 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 literal 0 HcmV?d00001 diff --git a/swtp/swtp.txt b/swtp/swtp.txt new file mode 100644 index 00000000..4d16f9fb --- /dev/null +++ b/swtp/swtp.txt @@ -0,0 +1,100 @@ +SWTP 6800 Emulator +===================== + +1. Background. + + The Southwest Technical Products (SWTP) SWTP 6800 was announced 1n the 1976 SWTP Catalog, which boasted you could buy and build this powerful computer kit for only $395. The kit consisted at that time of only the parts to build a case, power supply, mother board, CPU card, serial card with RS-232 or 20 ma loop interface, and memory card with 2048 *bytes* of static memory. + +2. Hardware + + We are simulating a fairly "loaded" SWTP 6800 from about 1978, with the following configuration: + + device simulates + name(s) + + CPU SWTP MP-A with Motorola 6080 CPU board, 62KB of RAM, 2K of EPROM with start boot ROM. + SIO SWTP MP-S Dual Serial Interface Board. Port 1 is assumed to be connected to a serial "glass TTY" that is your terminal running the Simulator. + PTR Second serial port of SIO is assumed to be connected to the paper tap reader/punch. + PTP Second serial port of SIO is assumed to be connected to the paper tap reader/punch. + DSK SWTP DC-4 Floppy Disk controller with up to four drives. + +2.1 The CPU Card (MP-A) + + We allow you to select memory sizes, but be aware that some sample software requires the full 32K (i.e. FLEX). We emulate the SWTP SWTBUG boot rom. + + SET CPU ITRAP Causes the simulator to halt if an invalid 8080 Opcode is detected. + SET CPU NOITRAP Does not stop on an invalid Opcode. This is how the real 6800 operates. + SET CPU MTRAP Causes the simulator to halt if an invalid address is accessed. + SET CPU NOMTRAP Does not stop on invalid address access. This is how a real 6800 operates. + SET CPU 4K + SET CPU 8K + SET CPU 12K + SET CPU 16K + ...... + SET CPU 32K All these set various CPU memory configurations. + The 2K EPROM at the high end of memory is always present and will always boot. + SET CPU MA000 Enable 8 K bytes of memory at $A000-$BFFF. Otherwise, only 128 bytes re available at $A000. + SET CPU NOMA000 Enable only 128 bytes of memory at $A000. + +The SWTBUG EPROM maps to both addresses $E000-E3FF and $FC00-FFFF. + +The real 6800, on receiving a HLT (Halt) instruction, freezes the processor and only an interrupt or CPU hardware reset will restore it. The simulator is a lot nicer, it will halt but send you back to the simulator command line. + +CPU Registers include the following: + + name size comments + + PC 16 Program Counter + A 8 Accumulator A + B 8 Accumulator B + IX 16 Index Register + C 1 Carry flag + Z 1 Zero Flag + H 1 Half-Carry flag + I 1 Interrupt flag + N 1 Negative flag + V 1 Overflao Flag + + +2.2 The Serial I/O Card (MP-S) + + This simple programmed I/O device provides 2 serial ports to the outside world, which could be hardware jumpered to support RS-232 plugs or a TTY current loop interface. The standard I/O addresses assigned by SWTP was $8004-8005 for the first port, and $8006-8007 for the second. We follow this standard in the Simulator. + + The simulator directs I/O to/from the first port to the screen. The second port reads from an attachable "tape reader" file on input, and writes to an attachable "punch file" on output. These files are considered a simple stream of 8-bit bytes. + +2.3 The Floppy Disk controller (DC4) + + The SWTP DC4 is a simple programmed I/O interface to the SWTP MF-68 5-inch dual floppy drive, which was basically a pair of Shugart SA-400s with a power supply and buffer board builtin. The controller supports neither interrupts nor DMA, so floppy access required the sustained attention of the CPU. The standard I/O addresses were $8018-801B, and we follow the standard. Details on controlling this hardware are in the swtp_dsk.c source file. + + +3. Sample Software + + Running an SWTP 6800 in 1978 you would be running the FLEX Version 2.0 Operating System from Technical Systems Consultants, Inc. + +3.1 CP/M Version 2.2 + + This version is a port of the standard FLEX Version 2.0 to the SWTP 6800. + + To boot FLEX: + + sim> set cpu hex + sim> set cpu itrap + sim> set cpu mtrap + sim> att dsk 6800boot.dsk + sim> att dsk1 6800work.dsk + sim> set cpu MA000 + sim> set dsk1 rw + sim> go + + $D ; Capital D causes SWTBUG to boot Flex + FLEX 2.0 + + DATE (MM,DD,YY)? 03,09,99 ; Must enter a date from last century! + + +++ ;Flex prompt! + + + + + + diff --git a/swtp/swtp6800 b/swtp/swtp6800 new file mode 100644 index 00000000..0c8c2d1d --- /dev/null +++ b/swtp/swtp6800 @@ -0,0 +1,9 @@ +reset +set cpu hex +set cpu itrap +set cpu mtrap +att dsk 6800boot.dsk +att dsk1 6800work.dsk +set cpu MA000 +set dsk1 rw +g diff --git a/swtp/swtp_cpu.c b/swtp/swtp_cpu.c new file mode 100644 index 00000000..09cdaa83 --- /dev/null +++ b/swtp/swtp_cpu.c @@ -0,0 +1,2293 @@ +/* swtp_6800_cpu.c: SWTP 6800 Motorola 6800 CPU simulator + + Copyright (c) 2005, 2007, William Beech + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + WILLIAM A. BEECH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of William A. Beech shall not + be used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from William A. Beech. + + Based on work by Charles E Owen (c) 1997 and Peter Schorn (c) 2002-2005 + + cpu 6800 CPU + + The register state for the 6800 CPU is: + + A<0:7> Accumulator A + B<0:7> Accumulator B + IX<0:15> Index Register + H half-carry flag + I interrupt flag + N negative flag + Z zero flag + V overflow flag + C carry flag + PC<0:15> program counter + SP<0:15> Stack Pointer + + The 6800 is an 8-bit CPU, which uses 16-bit registers to address + up to 64KB of memory. + + The 72 basic instructions come in 1, 2, and 3-byte flavors. + + This routine is the instruction decode routine for the 6800. + It is called from the simulator control program to execute + instructions in simulated memory, starting at the simulated PC. + It runs until 'reason' is set non-zero. + + General notes: + + 1. Reasons to stop. The simulator can be stopped by: + + WAI instruction + I/O error in I/O simulator + Invalid OP code (if ITRAP is set on CPU) + Invalid mamory address (if MTRAP is set on CPU) + + 2. Interrupts. + There are 4 types of interrupt, and in effect they do a + hardware CALL instruction to one of 4 possible high memory addresses. + + 3. Non-existent memory. On the SWTP 6800, reads to non-existent memory + return 0FFH, and writes are ignored. In the simulator, the + largest possible memory is instantiated and initialized to zero. + Thus, only writes need be checked against actual memory size. + + 4. Adding I/O devices. These modules must be modified: + + swtp_6800_cpu.c add I/O service routines to dev_table + swtp_sys.c add pointer to data structures in sim_devices +*/ + +#include + +#include "swtp_defs.h" + +//#include +//#include + +#define UNIT_V_OPSTOP (UNIT_V_UF) /* Stop on Invalid OP? */ +#define UNIT_OPSTOP (1 << UNIT_V_OPSTOP) +#define UNIT_V_MSTOP (UNIT_V_UF+1) /* Stop on Invalid memory? */ +#define UNIT_MSTOP (1 << UNIT_V_MSTOP) +#define UNIT_V_MSIZE (UNIT_V_UF+2) /* Memory Size */ +#define UNIT_MSIZE (1 << UNIT_V_MSIZE) +#define UNIT_V_MA000 (UNIT_V_UF+2) /* 128B or 8kB at 0xA000 */ +#define UNIT_MA000 (1 << UNIT_V_MA000) + +uint8 M[MAXMEMSIZE]; /* Memory */ +int32 A = 0; /* Accumulator A */ +int32 B = 0; /* Accumulator B */ +int32 IX = 0; /* Index register */ +int32 SP = 0; /* Stack pointer */ +int32 H = 0; /* Half-carry flag */ +int32 I = 1; /* Interrupt flag */ +int32 N = 0; /* Negative flag */ +int32 Z = 0; /* Zero flag */ +int32 V = 0; /* Overflow flag */ +int32 C = 0; /* Carry flag */ +int32 saved_PC = 0; /* Program counter */ +int32 INTE = 0; /* Interrupt Enable */ +int32 int_req = 0; /* Interrupt request */ + +int32 mem_fault = 0; /* memory fault flag */ + +extern int32 sim_int_char; +extern int32 sim_brk_types, sim_brk_dflt, sim_brk_summ; /* breakpoint info */ + +/* function prototypes */ + +t_stat cpu_ex (t_value *vptr, t_addr addr, UNIT *uptr, int32 sw); +t_stat cpu_dep (t_value val, t_addr addr, UNIT *uptr, int32 sw); +t_stat cpu_reset (DEVICE *dptr); +t_stat cpu_set_size (UNIT *uptr, int32 val, char *cptr, void *desc); +void dump_regs(); +void go_rel(int32 cond); +int32 get_rel_addr(); +int32 get_dir_val(); +int32 get_dir_addr(); +int32 get_indir_val(); +int32 get_indir_addr(); +int32 get_ext_val(); +int32 get_ext_addr(); +int32 get_psw(); +void set_psw(int32 psw); +void condevalH(int32 res); +void condevalN(int32 res); +void condevalZ(int32 res); +void condevalC(int32 res); +void condevalVa(int32 op1, int32 op2); +void condevalVs(int32 op1, int32 op2); +void mem_put_byte(int32 addr, int32 val); +void mem_put_word(int32 addr, int32 val); +int32 mem_get_byte(int32 addr); +int32 mem_get_word(int32 addr); +int32 nulldev(int32 io, int32 data); + +/* external routines */ + +extern int32 sio0s(int32 io, int32 data); +extern int32 sio0d(int32 io, int32 data); +extern int32 sio1s(int32 io, int32 data); +extern int32 sio1d(int32 io, int32 data); +extern int32 fdcdrv(int32 io, int32 data); +extern int32 fdccmd(int32 io, int32 data); +extern int32 fdctrk(int32 io, int32 data); +extern int32 fdcsec(int32 io, int32 data); +extern int32 fdcdata(int32 io, int32 data); +extern int32 fprint_sym (FILE *of, int32 addr, uint32 *val, + UNIT *uptr, int32 sw); + + +/* This is the I/O configuration table. There are 32 possible +device addresses, if a device is plugged into a port it's routine +address is here, 'nulldev' means no device is available +*/ + +struct idev { + int32 (*routine)(); +}; + +struct idev dev_table[32] = { + {&nulldev}, {&nulldev}, {&nulldev}, {&nulldev}, /*Port 0 8000-8003*/ + {&sio0s}, {&sio0d}, {&sio1s}, {&sio1d}, /*Port 1 8004-8007*/ +/* sio1x routines just return the last value read on the matching + sio0x routine. SWTBUG tests for the MP-C with most port reads! */ + {&nulldev}, {&nulldev}, {&nulldev}, {&nulldev}, /*Port 2 8008-800B*/ + {&nulldev}, {&nulldev}, {&nulldev}, {&nulldev}, /*Port 3 800C-800F*/ + {&nulldev}, {&nulldev}, {&nulldev}, {&nulldev}, /*Port 4 8010-8013*/ + {&fdcdrv}, {&nulldev}, {&nulldev}, {&nulldev}, /*Port 5 8014-8017*/ + {&fdccmd}, {&fdctrk}, {&fdcsec}, {&fdcdata}, /*Port 6 8018-801B*/ + {&nulldev}, {&nulldev}, {&nulldev}, {&nulldev} /*Port 7 801C-801F*/ +}; + +/* SWTP 6800 SWTBUG BOOT EPROM, fits at 0E000-0E3FFH and replicated + at 0FC000-0FFFF for the interrupt vectors */ + +#define BOOTLEN 1024 + +int32 bootrom[BOOTLEN] = { +0xFE,0xA0,0x00,0x6E,0x00,0x8D,0x40,0x6E, +0x00,0x10,0x16,0x04,0xBD,0xE3,0x34,0x8D, +0x67,0x81,0x53,0x26,0xFA,0x8D,0x61,0x81, +0x39,0x27,0x29,0x81,0x31,0x26,0xF0,0x7F, +0xA0,0x0F,0x8D,0x31,0x80,0x02,0xB7,0xA0, +0x47,0x8D,0x1C,0x8D,0x28,0x7A,0xA0,0x47, +0x27,0x09,0xA7,0x00,0xA1,0x00,0x26,0x08, +0x08,0x20,0xF0,0x7C,0xA0,0x0F,0x27,0xCF, +0x86,0x3F,0x8D,0x31,0x7E,0xE2,0xD4,0x8D, +0x0C,0xB7,0xA0,0x0D,0x8D,0x07,0xB7,0xA0, +0x0E,0xFE,0xA0,0x0D,0x39,0x8D,0x53,0x48, +0x48,0x48,0x48,0x16,0x8D,0x4C,0x1B,0x16, +0xFB,0xA0,0x0F,0xF7,0xA0,0x0F,0x39,0x44, +0x44,0x44,0x44,0x84,0x0F,0x8B,0x30,0x81, +0x39,0x23,0x02,0x8B,0x07,0x7E,0xE1,0xD1, +0x7E,0xE1,0xAC,0x8D,0xF8,0x08,0xA6,0x00, +0x81,0x04,0x26,0xF7,0x39,0x7E,0xE1,0x4A, +0x8D,0xBD,0xCE,0xE1,0x9D,0x8D,0xEF,0xCE, +0xA0,0x0D,0x8D,0x34,0xFE,0xA0,0x0D,0x8D, +0x31,0x8D,0x31,0x8D,0xDB,0x81,0x20,0x27, +0xFA,0x81,0x0D,0x27,0xE0,0x81,0x5E,0x20, +0x2C,0x01,0x8D,0xCC,0x80,0x30,0x2B,0x4C, +0x81,0x09,0x2F,0x0A,0x81,0x11,0x2B,0x44, +0x81,0x16,0x2E,0x40,0x80,0x07,0x39,0xA6, +0x00,0x8D,0xA4,0xA6,0x00,0x08,0x20,0xA3, +0x8D,0xF5,0x8D,0xF3,0x86,0x20,0x20,0xA5, +0x8E,0xA0,0x42,0x20,0x2C,0x26,0x07,0x09, +0x09,0xFF,0xA0,0x0D,0x20,0xAC,0xFF,0xA0, +0x0D,0x20,0x02,0x20,0x6D,0x81,0x30,0x25, +0xA1,0x81,0x46,0x22,0x9D,0x8D,0xBD,0xBD, +0xE0,0x57,0x09,0xA7,0x00,0xA1,0x00,0x27, +0x91,0x7E,0xE0,0x40,0xBE,0xA0,0x08,0x20, +0x49,0xBF,0xA0,0x08,0x86,0xFF,0xBD,0xE3, +0x08,0xCE,0x80,0x04,0xBD,0xE2,0x84,0xA6, +0x00,0xA1,0x02,0x20,0x02,0x20,0x19,0x26, +0x39,0x86,0x03,0xA7,0x00,0x86,0x11,0xA7, +0x00,0x20,0x2F,0x01,0xBF,0xA0,0x08,0x30, +0x6D,0x06,0x26,0x02,0x6A,0x05,0x6A,0x06, +0xCE,0xE1,0x9D,0xBD,0xE0,0x7E,0xFE,0xA0, +0x08,0x08,0x8D,0x8E,0x8D,0x8C,0x8D,0x8A, +0x8D,0x86,0x8D,0x84,0xCE,0xA0,0x08,0xBD, +0xE0,0xC8,0xFE,0xA0,0x12,0x8C,0xE1,0x23, +0x27,0x19,0x8E,0xA0,0x42,0xCE,0x80,0x04, +0xFF,0xA0,0x0A,0x7F,0xA0,0x0C,0x8D,0x73, +0x27,0x03,0xBD,0xE2,0x7D,0xBD,0xE3,0x53, +0xBD,0xE3,0x47,0xCE,0xE1,0x9C,0xBD,0xE0, +0x7E,0x8D,0x39,0xCE,0xE3,0xD1,0xA1,0x00, +0x26,0x07,0xBD,0xE0,0xCC,0xEE,0x01,0x6E, +0x00,0x08,0x08,0x08,0x8C,0xE3,0xF8,0x26, +0xED,0x20,0xBF,0xFE,0xA0,0x12,0x6E,0x00, +0x53,0x39,0x04,0x0D,0x0A,0x15,0x00,0x00, +0x00,0x53,0x31,0x04,0x13,0x0D,0x0A,0x15, +0x00,0x00,0x00,0x24,0x04,0x20,0x4C,0xFE, +0xA0,0x06,0x6E,0x00,0x20,0x40,0xBD,0xE0, +0x47,0xFF,0xA0,0x04,0xBD,0xE0,0x47,0xBD, +0xE0,0x55,0x16,0xA6,0x00,0xFF,0xA0,0x0D, +0x11,0x27,0x02,0x20,0x21,0xCE,0xE1,0x9D, +0xBD,0xE0,0x7E,0xCE,0xA0,0x0D,0x20,0x10, +0x3B,0x20,0x3A,0xFF,0xA0,0x10,0xFE,0xA0, +0x0A,0x37,0xE6,0x01,0xE1,0x03,0x33,0x39, +0xBD,0xE0,0xC8,0xFE,0xA0,0x0D,0xBC,0xA0, +0x04,0x27,0x9E,0x08,0x20,0xCD,0x8D,0x06, +0x84,0x7F,0x39,0x31,0x31,0x31,0x37,0x8D, +0xDA,0x26,0x28,0x86,0x15,0xA7,0x00,0xA6, +0x00,0x47,0x24,0xFB,0xA6,0x01,0xF6,0xA0, +0x0C,0x27,0x07,0x20,0x11,0x37,0x8D,0xC3, +0x26,0x2E,0xC6,0x11,0xE7,0x00,0xE6,0x00, +0x57,0x57,0x24,0xFA,0xA7,0x01,0x33,0xFE, +0xA0,0x10,0x39,0xA6,0x00,0x2B,0xFC,0x8D, +0x3A,0xC6,0x04,0xE7,0x02,0x58,0x8D,0x2A, +0x0D,0x69,0x00,0x46,0x5A,0x26,0xF7,0x8D, +0x21,0xF6,0xA0,0x0C,0x27,0x13,0x20,0xDE, +0x8D,0x23,0xC6,0x0A,0x6A,0x00,0x8D,0x16, +0x8D,0x10,0xA7,0x00,0x0D,0x46,0x5A,0x26, +0xF7,0xE6,0x02,0x58,0x2A,0xC8,0x8D,0x02, +0x20,0xC4,0x6D,0x02,0x2A,0xFC,0x6C,0x02, +0x6A,0x02,0x39,0x6F,0x02,0x8D,0xF7,0x20, +0xF1,0x8D,0x83,0x16,0x7F,0xA0,0x0B,0xFE, +0xA0,0x0A,0x8D,0x10,0x8D,0x07,0xCE,0xE3, +0xEF,0x17,0x7E,0xE1,0x76,0x86,0x34,0xA7, +0x03,0xA7,0x02,0x39,0x6C,0x00,0x86,0x07, +0xA7,0x01,0x6C,0x00,0xA7,0x02,0x39,0x7F, +0x80,0x14,0x8D,0x2E,0xC6,0x0B,0x8D,0x25, +0xE6,0x04,0xC5,0x01,0x26,0xFA,0x6F,0x06, +0x8D,0x1D,0xC6,0x9C,0x8D,0x17,0xCE,0x24, +0x00,0xC5,0x02,0x27,0x06,0xB6,0x80,0x1B, +0xA7,0x00,0x08,0xF6,0x80,0x18,0xC5,0x01, +0x26,0xEF,0x7E,0x24,0x00,0xE7,0x04,0x8D, +0x00,0x39,0xCE,0xFF,0xFF,0x09,0x8C,0x80, +0x14,0x26,0xFA,0x39,0xCE,0xE0,0x09,0xBD, +0xE0,0x7E,0x8D,0xF1,0xBD,0xE3,0x47,0x20, +0x58,0xCE,0xE1,0x23,0xBC,0xA0,0x12,0x27, +0x1A,0x08,0x8D,0x32,0xBD,0xE0,0x47,0xFF, +0xA0,0x14,0xA6,0x00,0xB7,0xA0,0x16,0x86, +0x3F,0xA7,0x00,0xCE,0xE1,0x23,0x8D,0x1E, +0x7E,0xE1,0x6B,0xFE,0xA0,0x14,0xB6,0xA0, +0x16,0xA7,0x00,0xCE,0xE1,0x24,0x20,0xDA, +0xB7,0xA0,0x43,0xFE,0xA0,0x12,0x8C,0xE1, +0x23,0x27,0x06,0xCE,0xE1,0x24,0xFF,0xA0, +0x12,0x39,0x8D,0x5A,0x20,0x0F,0xCE,0xA0, +0x49,0xFF,0xA0,0x04,0x09,0x8D,0x52,0xCE, +0xE1,0x90,0xBD,0xE0,0x7E,0x8D,0x24,0x8D, +0x91,0x7E,0xE1,0x52,0x73,0xA0,0x0C,0x86, +0x11,0xC6,0x20,0x8D,0x1A,0xBD,0xE1,0xD9, +0x27,0x04,0x86,0x3C,0xA7,0x03,0x39,0x86, +0x13,0xC6,0x10,0x20,0x0A,0x86,0x12,0xC6, +0x04,0x20,0x04,0x86,0x14,0xC6,0x08,0xBD, +0xE0,0x75,0xBD,0xE1,0xD6,0x27,0x16,0x86, +0x02,0xCA,0x01,0x8D,0x0C,0x8D,0x08,0x86, +0x02,0xC6,0x01,0xE7,0x00,0x8D,0x02,0x86, +0x06,0xA7,0x01,0xE7,0x00,0x39,0xFE,0xA0, +0x02,0xFF,0xA0,0x44,0x8D,0xCF,0xB6,0xA0, +0x05,0xB0,0xA0,0x45,0xF6,0xA0,0x04,0xF2, +0xA0,0x44,0x26,0x04,0x81,0x10,0x25,0x02, +0x86,0x0F,0x8B,0x04,0xB7,0xA0,0x47,0x80, +0x03,0xB7,0xA0,0x46,0xCE,0xE1,0x93,0xBD, +0xE0,0x7E,0x5F,0xCE,0xA0,0x47,0x8D,0x24, +0xCE,0xA0,0x44,0x8D,0x1F,0x8D,0x1D,0xFE, +0xA0,0x44,0x8D,0x18,0x7A,0xA0,0x46,0x26, +0xF9,0xFF,0xA0,0x44,0x53,0x37,0x30,0x8D, +0x0B,0x33,0xFE,0xA0,0x44,0x09,0xBC,0xA0, +0x04,0x26,0xB3,0x39,0xEB,0x00,0x7E,0xE0, +0xBF,0x47,0xE1,0xD0,0x5A,0xC0,0x00,0x4D, +0xE0,0x88,0x46,0xE1,0xAE,0x52,0xE1,0x30, +0x4A,0xE0,0x05,0x43,0xE2,0xCC,0x44,0xE2, +0x8F,0x42,0xE2,0xD9,0x4F,0xE2,0x69,0x50, +0xE3,0x1A,0x4C,0xE0,0x0C,0x45,0xE3,0x1E, +0xE0,0x00,0xE1,0x8B,0xE1,0xA7,0xE0,0xD0 +}; + +/* CPU data structures + + cpu_dev CPU device descriptor + cpu_unit CPU unit descriptor + cpu_reg CPU register list + cpu_mod CPU modifiers list */ + +UNIT cpu_unit = { UDATA (NULL, UNIT_FIX + UNIT_BINK, + 32768) }; + +REG cpu_reg[] = { + { HRDATA (PC, saved_PC, 16) }, + { HRDATA (A, A, 8) }, + { HRDATA (B, B, 8) }, + { HRDATA (IX, IX, 16) }, + { HRDATA (SP, SP, 16) }, + { FLDATA (H, H, 16) }, + { FLDATA (I, I, 16) }, + { FLDATA (N, N, 16) }, + { FLDATA (Z, Z, 16) }, + { FLDATA (V, V, 16) }, + { FLDATA (C, C, 16) }, + { FLDATA (INTE, INTE, 16) }, + { ORDATA (WRU, sim_int_char, 8) }, + { NULL } }; + +MTAB cpu_mod[] = { + { UNIT_OPSTOP, UNIT_OPSTOP, "ITRAP", "ITRAP", NULL }, + { UNIT_OPSTOP, 0, "NOITRAP", "NOITRAP", NULL }, + { UNIT_MSTOP, UNIT_MSTOP, "MTRAP", "MTRAP", NULL }, + { UNIT_MSTOP, 0, "NOMTRAP", "NOMTRAP", NULL }, + { UNIT_MSIZE, 4096, NULL, "4K", &cpu_set_size }, + { UNIT_MSIZE, 8192, NULL, "8K", &cpu_set_size }, + { UNIT_MSIZE, 12288, NULL, "12K", &cpu_set_size }, + { UNIT_MSIZE, 16384, NULL, "16K", &cpu_set_size }, + { UNIT_MSIZE, 20480, NULL, "20K", &cpu_set_size }, + { UNIT_MSIZE, 24576, NULL, "24K", &cpu_set_size }, + { UNIT_MSIZE, 28672, NULL, "28K", &cpu_set_size }, + { UNIT_MSIZE, 32768, NULL, "32K", &cpu_set_size }, + { UNIT_MA000, UNIT_MA000, "MA000", "MA000", NULL }, + { UNIT_MA000, 0, "NOMA000", "NOMA000", NULL }, + { 0 } }; + +DEVICE cpu_dev = { + "CPU", &cpu_unit, cpu_reg, cpu_mod, + 1, 16, 16, 1, 16, 8, + &cpu_ex, &cpu_dep, &cpu_reset, + NULL, NULL, NULL }; + +int32 PC; /* global for the helper routines */ + +int32 sim_instr (void) +{ + extern int32 sim_interval; + int32 IR, OP, DAR, reason, hi, lo, op1; +// uint32 val1[3]; + + PC = saved_PC & ADDRMASK; /* load local PC */ + reason = 0; + + /* Main instruction fetch/decode loop */ + + while (reason == 0) { /* loop until halted */ + if (sim_interval <= 0) /* check clock queue */ + if (reason = sim_process_event ()) + break; + if (mem_fault) { /* memory fault? */ + mem_fault = 0; /* reset fault flag */ + reason = STOP_MEMORY; + break; + } + if (int_req > 0) { /* interrupt? */ + /* 6800 interrupts not implemented yet. None were used, + on a standard SWTP 6800. All I/O is programmed. */ + } /* end interrupt */ + if (sim_brk_summ && + sim_brk_test (PC, SWMASK ('E'))) { /* breakpoint? */ + reason = STOP_IBKPT; /* stop simulation */ + break; + } + /* transient routine area - trace */ + /* + if (PC >= 0xa100 && PC < 0xa400) { + dump_regs(); + printf("\n\r%04X: ", PC); + val1[0] = M[PC]; + val1[1] = M[PC+1]; + val1[2] = M[PC+2]; + fprint_sym(stdout, PC, val1, NULL, SWMASK ('M')); + } +*/ + IR = OP = mem_get_byte(PC); /* fetch instruction */ + PC = ++PC & ADDRMASK; /* increment PC */ + sim_interval--; + + /* The Big Instruction Decode Switch */ + + switch (IR) { + + case 0x01: /* NOP */ + break; + case 0x06: /* TAP */ + set_psw(A); + break; + case 0x07: /* TPA */ + A = get_psw(); + break; + case 0x08: /* INX */ + IX = ++IX & ADDRMASK; + condevalZ(IX); + break; + case 0x09: /* DEX */ + IX = --IX & ADDRMASK; + condevalZ(IX); + break; + case 0x0A: /* CLV */ + V = 0; + break; + case 0x0B: /* SEV */ + V = 0x10000; + break; + case 0x0C: /* CLC */ + C = 0; + break; + case 0x0D: /* SEC */ + C = 0x10000; + break; + case 0x0E: /* CLI */ + I = 0; + break; + case 0x0F: /* SEI */ + I = 0x10000; + break; + case 0x10: /* SBA */ + op1 = A; + A = A - B; + condevalN(A); + condevalZ(A); + condevalC(A); + condevalVs(B, op1); + A &= 0xFF; + break; + case 0x11: /* CBA */ + lo = A - B; + condevalN(lo); + condevalZ(lo); + condevalC(lo); + condevalVs(B, A); + break; + case 0x16: /* TAB */ + B = A; + condevalN(B); + condevalZ(B); + V = 0; + break; + case 0x17: /* TBA */ + A = B; + condevalN(B); + condevalZ(B); + V = 0; + break; + case 0x19: /* DAA */ + DAR = A & 0x0F; + op1 = C; + if (DAR > 9 || C) { + DAR += 6; + A &= 0xF0; + A |= DAR & 0x0F; + C = 0; + if (DAR & 0x10) + C = 0x10000; + } + DAR = (A >> 4) & 0x0F; + if (DAR > 9 || C) { + DAR += 6; + if (C) + DAR++; + A &= 0x0F; + A |= (DAR << 4); + } + C = op1; + if ((DAR << 4) & 0x100) + C = 0x10000; + condevalN(A); + condevalZ(A); + A &= 0xFF; + break; + case 0x1B: /* ABA */ + A += B; + condevalH(A); + condevalN(A); + condevalZ(A); + condevalC(A); + condevalVa(A, B); + A &= 0xFF; + break; + case 0x20: /* BRA rel */ + go_rel(1); + break; + case 0x22: /* BHI rel */ + go_rel(!(C | Z)); + break; + case 0x23: /* BLS rel */ + go_rel(C | Z); + break; + case 0x24: /* BCC rel */ + go_rel(!C); + break; + case 0x25: /* BCS rel */ + go_rel(C); + break; + case 0x26: /* BNE rel */ + go_rel(!Z); + break; + case 0x27: /* BEQ rel */ + go_rel(Z); + break; + case 0x28: /* BVC rel */ + go_rel(!V); + break; + case 0x29: /* BVS rel */ + go_rel(V); + break; + case 0x2A: /* BPL rel */ + go_rel(!N); + break; + case 0x2B: /* BMI rel */ + go_rel(N); + break; + case 0x2C: /* BGE rel */ + go_rel(!(N ^ V)); + break; + case 0x2D: /* BLT rel */ + go_rel(N ^ V); + break; + case 0x2E: /* BGT rel */ + go_rel(!(Z | (N ^ V))); + break; + case 0x2F: /* BLE rel */ + go_rel(Z | (N ^ V)); + break; + case 0x30: /* TSX */ + IX = (SP + 1) & ADDRMASK; + break; + case 0x31: /* INS */ + SP = ++SP & ADDRMASK; + break; + case 0x32: /* PUL A */ + SP = ++SP & ADDRMASK; + A = mem_get_byte(SP); + break; + case 0x33: /* PUL B */ + SP = ++SP & ADDRMASK; + B = mem_get_byte(SP); + break; + case 0x34: /* DES */ + SP = --SP & ADDRMASK; + break; + case 0x35: /* TXS */ + SP = (IX - 1) & ADDRMASK; + break; + case 0x36: /* PSH A */ + mem_put_byte(SP, A); + SP = --SP & ADDRMASK; + break; + case 0x37: /* PSH B */ + mem_put_byte(SP, B); + SP = --SP & ADDRMASK; + break; + case 0x39: /* RTS */ + SP = ++SP & ADDRMASK; + PC = mem_get_word(SP) & ADDRMASK; + SP = ++SP & ADDRMASK; + break; + case 0x3B: /* RTI */ + SP = ++SP & ADDRMASK; + set_psw(mem_get_byte(SP)); + SP = ++SP & ADDRMASK; + B = mem_get_byte(SP); + SP = ++SP & ADDRMASK; + A = mem_get_byte(SP); + SP = ++SP & ADDRMASK; + IX = mem_get_word(SP); + SP = (SP += 2) & ADDRMASK; + PC = mem_get_word(SP) & ADDRMASK; + SP = ++SP & ADDRMASK; + break; + case 0x3E: /* WAI */ + SP = --SP & ADDRMASK; + mem_put_word(SP, PC); + SP = (SP -= 2) & ADDRMASK; + mem_put_word(SP, IX); + SP = --SP & ADDRMASK; + mem_put_byte(SP, A); + SP = --SP & ADDRMASK; + mem_put_byte(SP, B); + SP = --SP & ADDRMASK; + mem_put_byte(SP, get_psw()); + SP = --SP & ADDRMASK; + if (I) { + reason = STOP_HALT; + continue; + } else { + I = 0x10000; + PC = mem_get_word(0xFFFE) & ADDRMASK; + } + break; + case 0x3F: /* SWI */ + SP = --SP & ADDRMASK; + mem_put_word(SP, PC); + SP = (SP -= 2) & ADDRMASK; + mem_put_word(SP, IX); + SP = --SP & ADDRMASK; + mem_put_byte(SP, A); + SP = --SP & ADDRMASK; + mem_put_byte(SP, B); + SP = --SP & ADDRMASK; + mem_put_byte(SP, get_psw()); + SP = --SP & ADDRMASK; + I = 0x10000; + PC = mem_get_word(0xFFFB) & ADDRMASK; + break; + case 0x40: /* NEG A */ + A = (0 - A) & 0xFF; + V = 0; + if (A & 0x80) + V = 0x10000; + C = 0; + if (A) + C = 0x10000; + condevalN(A); + condevalZ(A); + break; + case 0x43: /* COM A */ + A = ~A & 0xFF; + V = 0; + C = 0x10000; + condevalN(A); + condevalZ(A); + break; + case 0x44: /* LSR A */ + C = 0; + if (A & 0x01) + C = 0x10000; + A = (A >> 1) & 0xFF; + N = 0; + condevalZ(A); + V = 0; + if (N ^ C) + V = 0x10000; + break; + case 0x46: /* ROR A */ + hi = C; + C = 0; + if (A & 0x01) + C = 0x10000; + A = (A >> 1) & 0xFF; + if (hi) + A |= 0x80; + condevalN(A); + condevalZ(A); + V = 0; + if (N ^ C) + V = 0x10000; + break; + case 0x47: /* ASR A */ + C = 0; + if (A & 0x01) + C = 0x10000; + lo = A & 0x8000; + A = (A >> 1) & 0xFF; + A |= lo; + condevalN(A); + condevalZ(A); + V = 0; + if (N ^ C) + V = 0x10000; + break; + case 0x48: /* ASL A */ + C = 0; + if (A & 0x80) + C = 0x10000; + A = (A << 1) & 0xFF; + condevalN(A); + condevalZ(A); + V = 0; + if (N ^ C) + V = 0x10000; + break; + case 0x49: /* ROL A */ + hi = C; + C = 0; + if (A & 0x80) + C = 0x10000; + A = (A << 1) & 0xFF; + if (hi) + A |= 0x01; + condevalN(A); + condevalZ(A); + V = 0; + if (N ^ C) + V = 0x10000; + break; + case 0x4A: /* DEC A */ + V = 0; + if (A == 0x80) + V = 0x10000; + A = --A & 0xFF; + condevalN(A); + condevalZ(A); + break; + case 0x4C: /* INC A */ + V = 0; + if (A == 0x7F) + V = 0x10000; + A = ++A & 0xFF; + condevalN(A); + condevalZ(A); + break; + case 0x4D: /* TST A */ + lo = (A - 0) & 0xFF; + V = 0; + C = 0; + condevalN(lo); + condevalZ(lo); + break; + case 0x4F: /* CLR A */ + A = 0; + N = V = C = 0; + Z = 0x10000; + break; + case 0x50: /* NEG B */ + B = (0 - V) & 0xFF; + V = 0; + if (B & 0x8000) + V = 0x10000; + C = 0; + if (B) + C = 0x10000; + condevalN(B); + condevalZ(B); + break; + case 0x53: /* COM B */ + B = ~B & 0xFF; + V = 0; + C = 0x10000; + condevalN(B); + condevalZ(B); + break; + case 0x54: /* LSR B */ + C = 0; + if (B & 0x01) + C = 0x10000; + B = (B >> 1) & 0xFF; + N = 0; + condevalZ(B); + V = 0; + if (N ^ C) + V = 0x10000; + break; + case 0x56: /* ROR B */ + hi = C; + C = 0; + if (B & 0x01) + C = 0x10000; + B = (B >> 1) & 0xFF; + if (hi) + B |= 0x80; + condevalN(B); + condevalZ(B); + V = 0; + if (N ^ C) + V = 0x10000; + break; + case 0x57: /* ASR B */ + C = 0; + if (B & 0x01) + C = 0x10000; + lo = B & 0x8000; + B = (B >> 1) & 0xFF; + B |= lo; + condevalN(B); + condevalZ(B); + V = 0; + if (N ^ C) + V = 0x10000; + break; + case 0x58: /* ASL B */ + C = 0; + if (B & 0x80) + C = 0x10000; + B = (B << 1) & 0xFF; + condevalN(B); + condevalZ(B); + V = 0; + if (N ^ C) + V = 0x10000; + break; + case 0x59: /* ROL B */ + hi = C; + C = 0; + if (B & 0x80) + C = 0x10000; + B = (B << 1) & 0xFF; + if (hi) + B |= 0x01; + condevalN(B); + condevalZ(B); + V = 0; + if (N ^ C) + V = 0x10000; + break; + case 0x5A: /* DEC B */ + V = 0; + if (B == 0x80) + V = 0x10000; + B = --B & 0xFF; + condevalN(B); + condevalZ(B); + break; + case 0x5C: /* INC B */ + V = 0; + if (B == 0x7F) + V = 0x10000; + B = ++B & 0xFF; + condevalN(B); + condevalZ(B); + break; + case 0x5D: /* TST B */ + lo = (B - 0) & 0xFF; + V = 0; + C = 0; + condevalN(lo); + condevalZ(lo); + break; + case 0x5F: /* CLR B */ + B = 0; + N = V = C = 0; + Z = 0x10000; + break; + case 0x60: /* NEG ind */ + DAR = get_indir_addr(); + lo = (0 - mem_get_byte(DAR)) & 0xFF; + mem_put_byte(DAR, lo); + V = 0; + if (lo & 0x80) + V = 0x10000; + C = 0; + if (lo) + C = 0x10000; + condevalN(lo); + condevalZ(lo); + break; + case 0x63: /* COM ind */ + DAR = get_indir_addr(); + lo = ~mem_get_byte(DAR) & 0xFF; + mem_put_byte(DAR, lo); + V = 0; + C = 0x10000; + condevalN(lo); + condevalZ(lo); + break; + case 0x64: /* LSR ind */ + DAR = get_indir_addr(); + lo = mem_get_byte(DAR); + C = 0; + if (lo & 0x01) + C = 0x10000; + lo >>= 1; + mem_put_byte(DAR, lo); + N = 0; + condevalZ(lo); + V = 0; + if (N ^ C) + V = 0x10000; + break; + case 0x66: /* ROR ind */ + DAR = get_indir_addr(); + lo = mem_get_byte(DAR); + hi = C; + C = 0; + if (lo & 0x01) + C = 0x10000; + lo >>= 1; + if (hi) + lo |= 0x80; + mem_put_byte(DAR, lo); + condevalN(lo); + condevalZ(lo); + V = 0; + if (N ^ C) + V = 0x10000; + break; + case 0x67: /* ASR ind */ + DAR = get_indir_addr(); + lo = mem_get_byte(DAR); + C = 0; + if (lo & 0x01) + C = 0x10000; + lo = (lo & 0x80) | (lo >> 1); + mem_put_byte(DAR, lo); + condevalN(lo); + condevalZ(lo); + V = 0; + if (N ^ C) + V = 0x10000; + break; + case 0x68: /* ASL ind */ + DAR = get_indir_addr(); + lo = mem_get_byte(DAR); + C = 0; + if (lo & 0x80) + C = 0x10000; + lo <<= 1; + mem_put_byte(DAR, lo); + condevalN(lo); + condevalZ(lo); + V = 0; + if (N ^ C) + V = 0x10000; + break; + case 0x69: /* ROL ind */ + DAR = get_indir_addr(); + lo = mem_get_byte(DAR); + hi = C; + C = 0; + if (lo & 0x80) + C = 0x10000; + lo <<= 1; + if (hi) + lo |= 0x01; + mem_put_byte(DAR, lo); + condevalN(lo); + condevalZ(lo); + V = 0; + if (N ^ C) + V = 0x10000; + break; + case 0x6A: /* DEC ind */ + DAR = get_indir_addr(); + lo = mem_get_byte(DAR); + V = 0; + if (lo == 0x80) + V = 0x10000; + lo = --lo & 0xFF; + mem_put_byte(DAR, lo); + condevalN(lo); + condevalZ(lo); + break; + case 0x6C: /* INC ind */ + DAR= get_indir_addr(); + lo = mem_get_byte(DAR); + V = 0; + if (lo == 0x7F) + V = 0x10000; + lo = ++lo & 0xFF; + mem_put_byte(DAR, lo); + condevalN(lo); + condevalZ(lo); + break; + case 0x6D: /* TST ind */ + lo = (get_indir_val() - 0) & 0xFF; + V = 0; + C = 0; + condevalN(lo); + condevalZ(lo); + break; + case 0x6E: /* JMP ind */ + PC = get_indir_addr(); + break; + case 0x6F: /* CLR ind */ + mem_put_byte(get_indir_addr(), 0); + N = V = C = 0; + Z = 0x10000; + break; + case 0x70: /* NEG ext */ + DAR = get_ext_addr(PC); + lo = (0 - mem_get_byte(DAR)) & 0xFF; + mem_put_byte(DAR, lo); + V = 0; + if (lo & 0x80) + V = 0x10000; + C = 0; + if (lo) + C = 0x10000; + condevalN(lo); + condevalZ(lo); + break; + case 0x73: /* COM ext */ + DAR = get_ext_addr(); + lo = ~mem_get_byte(DAR) & 0xFF; + mem_put_byte(DAR, lo); + V = 0; + C = 0x10000; + condevalN(lo); + condevalZ(lo); + break; + case 0x74: /* LSR ext */ + DAR = get_ext_addr(); + lo = mem_get_byte(DAR); + C = 0; + if (lo & 0x01) + C = 0x10000; + lo >>= 1; + mem_put_byte(DAR, lo); + N = 0; + condevalZ(lo); + V = 0; + if (N ^ C) + V = 0x10000; + break; + case 0x76: /* ROR ext */ + DAR = get_ext_addr(); + hi = C; + lo = mem_get_byte(DAR); + C = 0; + if (lo & 0x01) + C = 0x10000; + lo >>= 1; + if (hi) + lo |= 0x80; + mem_put_byte(DAR, lo); + condevalN(lo); + condevalZ(lo); + V = 0; + if (N ^ C) + V = 0x10000; + break; + case 0x77: /* ASR ext */ + DAR = get_ext_addr(); + lo = mem_get_byte(DAR); + C = 0; + if (lo & 0x01) + C = 0x10000; + hi = lo & 0x80; + lo >>= 1; + lo |= hi; + mem_put_byte(DAR, lo); + condevalN(lo); + condevalZ(lo); + V = 0; + if (N ^ C) + V = 0x10000; + break; + case 0x78: /* ASL ext */ + DAR = get_ext_addr(); + lo = mem_get_byte(DAR); + C = 0; + if (lo & 0x80) + C = 0x10000; + lo <<= 1; + mem_put_byte(DAR, lo); + condevalN(lo); + condevalZ(lo); + V = 0; + if (N ^ C) + V = 0x10000; + break; + case 0x79: /* ROL ext */ + DAR = get_ext_addr(); + lo = mem_get_byte(DAR); + hi = C; + C = 0; + if (lo & 0x80) + C = 0x10000; + lo <<= 1; + if (hi) + lo |= 0x01; + mem_put_byte(DAR, lo); + condevalN(lo); + condevalZ(lo); + V = 0; + if (N ^ C) + V = 0x10000; + break; + case 0x7A: /* DEC ext */ + DAR = get_ext_addr(); + lo = mem_get_byte(DAR); + V = 0; + if (lo == 0x80) + V = 0x10000; + lo = --lo & 0xFF; + mem_put_byte(DAR, lo); + condevalN(lo); + condevalZ(lo); + break; + case 0x7C: /* INC ext */ + DAR = get_ext_addr(); + lo = mem_get_byte(DAR); + V = 0; + if (lo == 0x7F) + V = 0x10000; + lo = ++lo & 0xFF; + mem_put_byte(DAR, lo); + condevalN(lo); + condevalZ(lo); + break; + case 0x7D: /* TST ext */ + lo = mem_get_byte(get_ext_addr()) - 0; + V = 0; + C = 0; + condevalN(lo); + condevalZ(lo & 0xFF); + break; + case 0x7E: /* JMP ext */ + PC = get_ext_addr() & ADDRMASK; + break; + case 0x7F: /* CLR ext */ + mem_put_byte(get_ext_addr(), 0); + N = V = C = 0; + Z = 0x10000; + break; + case 0x80: /* SUB A imm */ + op1 = get_dir_addr(); + A = A - op1; + condevalN(A); + condevalC(A); + condevalVs(A, op1); + A &= 0xFF; + condevalZ(A); + break; + case 0x81: /* CMP A imm */ + op1 = get_dir_addr(); + lo = A - op1; + condevalN(lo); + condevalZ(lo & 0xFF); + condevalC(lo); + condevalVs(lo, op1); + break; + case 0x82: /* SBC A imm */ + op1 = get_dir_addr(); + if (C) + A = A - op1 - 1; + else + A = A - op1; + condevalN(A); + condevalC(A); + condevalVs(A, op1); + A &= 0xFF; + condevalZ(A); + break; + case 0x84: /* AND A imm */ + A = (A & get_dir_addr()) & 0xFF; + V = 0; + condevalN(A); + condevalZ(A); + break; + case 0x85: /* BIT A imm */ + lo = (A & get_dir_addr()) & 0xFF; + V = 0; + condevalN(lo); + condevalZ(lo); + break; + case 0x86: /* LDA A imm */ + A = get_dir_addr(); + V = 0; + condevalN(A); + condevalZ(A); + break; + case 0x88: /* EOR A imm */ + A = (A ^ get_dir_addr()) & 0xFF; + V = 0; + condevalN(A); + condevalZ(A); + break; + case 0x89: /* ADC A imm */ + op1 = get_dir_addr(); + if (C) + A = A + op1 + 1; + else + A = A + op1; + condevalH(A); + condevalN(A); + condevalC(A); + condevalVa(A, op1); + A &= 0xFF; + condevalZ(A); + break; + case 0x8A: /* ORA A imm */ + A = (A | get_dir_addr()) & 0xFF; + V = 0; + condevalN(A); + condevalZ(A); + break; + case 0x8B: /* ADD A imm */ + op1 = get_dir_addr(); + A = A + op1; + condevalH(A); + condevalN(A); + condevalC(A); + condevalVa(A, op1); + A &= 0xFF; + condevalZ(A); + break; + case 0x8C: /* CPX imm */ + op1 = IX - get_ext_addr(); + condevalZ(op1); + condevalN(op1 >> 8); + V = op1 & 0x10000; + break; + case 0x8D: /* BSR rel */ + lo = get_rel_addr(); + SP = --SP & ADDRMASK; + mem_put_word(SP, PC); + SP = --SP & ADDRMASK; + PC = PC + lo; + PC &= ADDRMASK; + break; + case 0x8E: /* LDS imm */ + SP = get_ext_addr(); + condevalN(SP >> 8); + condevalZ(SP); + V = 0; + break; + case 0x90: /* SUB A dir */ + op1 = get_dir_val(); + A = A - op1; + condevalN(A); + condevalC(A); + condevalVs(A, op1); + A &= 0xFF; + condevalZ(A); + break; + case 0x91: /* CMP A dir */ + op1 = get_dir_val(); + lo = A - op1; + condevalN(lo); + condevalZ(lo & 0xff); + condevalC(lo); + condevalVs(A, op1); + break; + case 0x92: /* SBC A dir */ + op1 = get_dir_val(); + if (C) + A = A - op1 - 1; + else + A = A - op1; + condevalN(A); + condevalC(A); + condevalVs(A, op1); + A &= 0xFF; + condevalZ(A); + break; + case 0x94: /* AND A dir */ + A = (A & get_dir_val()) & 0xFF; + V = 0; + condevalN(A); + condevalZ(A); + break; + case 0x95: /* BIT A dir */ + lo = (A & get_dir_val()) & 0xFF; + V = 0; + condevalN(lo); + condevalZ(lo); + break; + case 0x96: /* LDA A dir */ + A = get_dir_val(); + V = 0; + condevalN(A); + condevalZ(A); + break; + case 0x97: /* STA A dir */ + mem_put_byte(get_dir_addr(), A); + V = 0; + condevalN(A); + condevalZ(A); + break; + case 0x98: /* EOR A dir */ + A = (A ^ get_dir_val()) & 0xFF; + V = 0; + condevalN(A); + condevalZ(A); + break; + case 0x99: /* ADC A dir */ + op1 = get_dir_val(); + if (C) + A = A + op1 + 1; + else + A = A + op1; + condevalH(A); + condevalN(A); + condevalC(A); + condevalVa(A, op1); + A &= 0xFF; + condevalZ(A); + break; + case 0x9A: /* ORA A dir */ + A = (A | get_dir_val()) & 0xFF; + V = 0; + condevalN(A); + condevalZ(A); + break; + case 0x9B: /* ADD A dir */ + op1 = get_dir_val(); + A = A + op1; + condevalH(A); + condevalN(A); + condevalC(A); + condevalVa(A, op1); + A &= 0xFF; + condevalZ(A); + break; + case 0x9C: /* CPX dir */ + op1 = IX - mem_get_word(get_dir_addr()); + condevalZ(op1); + condevalN(op1 >> 8); + V = op1 & 0x10000; + break; + case 0x9E: /* LDS dir */ + SP = mem_get_word(get_dir_addr()); + condevalN(SP >> 8); + condevalZ(SP); + V = 0; + break; + case 0x9F: /* STS dir */ + mem_put_word(get_dir_addr(), SP); + condevalN(SP >> 8); + condevalZ(SP); + V = 0; + break; + case 0xA0: /* SUB A ind */ + op1 = get_indir_val(); + A = A - op1; + condevalN(A); + condevalC(A); + condevalVs(A, op1); + A &= 0xFF; + condevalZ(A); + break; + case 0xA1: /* CMP A ind */ + op1 = get_indir_val(); + lo = A - op1; + condevalN(lo); + condevalZ(lo & 0xFF); + condevalC(lo); + condevalVs(A, op1); + break; + case 0xA2: /* SBC A ind */ + op1 = get_indir_val(); + if (C) + A = A - op1 - 1; + else + A = A - op1; + condevalN(A); + condevalC(A); + condevalVs(A, op1); + A &= 0xFF; + condevalZ(A); + break; + case 0xA4: /* AND A ind */ + A = (A & get_indir_val()) & 0xFF; + V = 0; + condevalN(A); + condevalZ(A); + break; + case 0xA5: /* BIT A ind */ + lo = (A & get_indir_val()) & 0xFF; + V = 0; + condevalN(lo); + condevalZ(lo); + break; + case 0xA6: /* LDA A ind */ + A = get_indir_val(); + V = 0; + condevalN(A); + condevalZ(A); + break; + case 0xA7: /* STA A ind */ + mem_put_byte(get_indir_addr(), A); + V = 0; + condevalN(A); + condevalZ(A); + break; + case 0xA8: /* EOR A ind */ + A = (A ^ get_indir_val()) & 0xFF; + V = 0; + condevalN(A); + condevalZ(A); + break; + case 0xA9: /* ADC A ind */ + op1 = get_indir_val(); + if (C) + A = A + op1 + 1; + else + A = A + op1; + condevalH(A); + condevalN(A); + condevalC(A); + condevalVa(A, op1); + A &= 0xFF; + condevalZ(A); + break; + case 0xAA: /* ORA A ind */ + A = (A | get_indir_val()) & 0xFF; + V = 0; + condevalN(A); + condevalZ(A); + break; + case 0xAB: /* ADD A ind */ + op1 = get_indir_val(); + A = A + op1; + condevalH(A); + condevalN(A); + condevalC(A); + condevalVa(A, op1); + A &= 0xFF; + condevalZ(A); + break; + case 0xAC: /* CPX ind */ + op1 = (IX - get_indir_addr()) & ADDRMASK; + condevalZ(op1); + condevalN(op1 >> 8); + V = op1 & 0x10000; + break; + case 0xAD: /* JSR ind */ + DAR = get_indir_addr(); + SP = --SP & ADDRMASK; + mem_put_word(SP, PC); + SP = --SP & ADDRMASK; + PC = DAR; + break; + case 0xAE: /* LDS ind */ + SP = mem_get_word(get_indir_addr()); + condevalN(SP >> 8); + condevalZ(SP); + V = 0; + break; + case 0xAF: /* STS ind */ + mem_put_word(get_indir_addr(), SP); + condevalN(SP >> 8); + condevalZ(SP); + V = 0; + break; + case 0xB0: /* SUB A ext */ + op1 = get_ext_val(); + A = A - op1; + condevalN(A); + condevalC(A); + condevalVs(A, op1); + A &= 0xFF; + condevalZ(A); + break; + case 0xB1: /* CMP A ext */ + op1 = get_ext_val(); + lo = A - op1; + condevalN(lo); + condevalZ(lo & 0xFF); + condevalC(lo); + condevalVs(A, op1); + break; + case 0xB2: /* SBC A ext */ + op1 = get_ext_val(); + if (C) + A = A - op1 - 1; + else + A = A - op1; + condevalN(A); + condevalC(A); + condevalVs(A, op1); + A &= 0xFF; + condevalZ(A); + break; + case 0xB4: /* AND A ext */ + A = (A & get_ext_val()) & 0xFF; + V = 0; + condevalN(A); + condevalZ(A); + break; + case 0xB5: /* BIT A ext */ + lo = (A & get_ext_val()) & 0xFF; + V = 0; + condevalN(lo); + condevalZ(lo); + break; + case 0xB6: /* LDA A ext */ + A = get_ext_val(); + V = 0; + condevalN(A); + condevalZ(A); + break; + case 0xB7: /* STA A ext */ + mem_put_byte(get_ext_addr(), A); + V = 0; + condevalN(A); + condevalZ(A); + break; + case 0xB8: /* EOR A ext */ + A = (A ^ get_ext_val()) & 0xFF; + V = 0; + condevalN(A); + condevalZ(A); + break; + case 0xB9: /* ADC A ext */ + op1 = get_ext_val(); + if (C) + A = A + op1 + 1; + else + A = A + op1; + condevalH(A); + condevalN(A); + condevalC(A); + condevalVa(A, op1); + A &= 0xFF; + condevalZ(A); + break; + case 0xBA: /* ORA A ext */ + A = (A | get_ext_val()) & 0xFF; + V = 0; + condevalN(A); + condevalZ(A); + break; + case 0xBB: /* ADD A ext */ + op1 = get_ext_val(); + A = A + op1; + condevalH(A); + condevalN(A); + condevalC(A); + condevalVa(A, op1); + A &= 0xFF; + condevalZ(A); + break; + case 0xBC: /* CPX ext */ + op1 = (IX - mem_get_word(get_ext_addr())) & ADDRMASK; + condevalZ(op1); + condevalN(op1 >> 8); + V = op1 & 0x10000; + break; + case 0xBD: /* JSR ext */ + DAR = get_ext_addr(); + SP = --SP & ADDRMASK; + mem_put_word(SP, PC); + SP = --SP & ADDRMASK; + PC = DAR; + break; + case 0xBE: /* LDS ext */ + SP = mem_get_word(get_ext_addr()); + condevalN(SP >> 8); + condevalZ(SP); + V = 0; + break; + case 0xBF: /* STS ext */ + mem_put_word(get_ext_addr(), SP); + condevalN(SP >> 8); + condevalZ(SP); + V = 0; + break; + case 0xC0: /* SUB B imm */ + op1 = get_dir_addr(); + B = B - op1; + condevalN(B); + condevalC(B); + condevalVs(B, op1); + B &= 0xFF; + condevalZ(B); + break; + case 0xC1: /* CMP B imm */ + op1 = get_dir_addr(); + lo = B - op1; + condevalN(lo); + condevalZ(lo & 0xFF); + condevalC(lo); + condevalVs(B, op1); + break; + case 0xC2: /* SBC B imm */ + op1 = get_dir_addr(); + if (C) + B = B - op1 - 1; + else + B = B - op1; + condevalN(B); + condevalC(B); + condevalVs(B, op1); + B &= 0xFF; + condevalZ(B); + break; + case 0xC4: /* AND B imm */ + B = (B & get_dir_addr()) & 0xFF; + V = 0; + condevalN(B); + condevalZ(B); + break; + case 0xC5: /* BIT B imm */ + lo = (B & get_dir_addr()) & 0xFF; + V = 0; + condevalN(lo); + condevalZ(lo); + break; + case 0xC6: /* LDA B imm */ + B = get_dir_addr(); + V = 0; + condevalN(B); + condevalZ(B); + break; + case 0xC8: /* EOR B imm */ + B = (B ^ get_dir_addr()) & 0xFF; + V = 0; + condevalN(B); + condevalZ(B); + break; + case 0xC9: /* ADC B imm */ + op1 = get_dir_addr(); + if (C) + B = B + op1 + 1; + else + B = B + op1; + condevalH(B); + condevalN(B); + condevalC(B); + condevalVa(B, op1); + B &= 0xFF; + condevalZ(B); + break; + case 0xCA: /* ORA B imm */ + B = (B | get_dir_addr()) & 0xFF; + V = 0; + condevalN(B); + condevalZ(B); + break; + case 0xCB: /* ADD B imm */ + op1 = get_dir_addr(); + B = B + op1; + condevalH(B); + condevalN(B); + condevalC(B); + condevalVa(B, op1); + B &= 0xFF; + condevalZ(B); + break; + case 0xCE: /* LDX imm */ + IX = get_ext_addr(); + condevalN(IX >> 8); + condevalZ(IX); + V = 0; + break; + case 0xD0: /* SUB B dir */ + op1 = get_dir_val(); + B = B - op1; + condevalN(B); + condevalC(B); + condevalVs(B, op1); + B &= 0xFF; + condevalZ(B); + break; + case 0xD1: /* CMP B dir */ + op1 = get_dir_val(); + lo = B - op1; + condevalN(lo); + condevalZ(lo); + condevalC(lo); + condevalVs(B, op1); + break; + case 0xD2: /* SBC B dir */ + op1 = get_dir_val(); + if (C) + B = B - op1 - 1; + else + B = B - op1; + condevalN(B); + condevalC(B); + condevalVs(B, op1); + B &= 0xFF; + condevalZ(B); + break; + case 0xD4: /* AND B dir */ + B = (B & get_dir_val()) & 0xFF; + V = 0; + condevalN(B); + condevalZ(B); + break; + case 0xD5: /* BIT B dir */ + lo = (B & get_dir_val()) & 0xFF; + V = 0; + condevalN(lo); + condevalZ(lo); + break; + case 0xD6: /* LDA B dir */ + B = get_dir_val(); + V = 0; + condevalN(B); + condevalZ(B); + break; + case 0xD7: /* STA B dir */ + mem_put_byte(get_dir_addr(), B); + V = 0; + condevalN(B); + condevalZ(B); + break; + case 0xD8: /* EOR B dir */ + B = (B ^ get_dir_val()) & 0xFF; + V = 0; + condevalN(B); + condevalZ(B); + break; + case 0xD9: /* ADC B dir */ + op1 = get_dir_val(); + if (C) + B = B + op1 + 1; + else + B = B + op1; + condevalH(B); + condevalN(B); + condevalC(B); + condevalVa(B, op1); + B &= 0xFF; + condevalZ(B); + break; + case 0xDA: /* ORA B dir */ + B = (B | get_dir_val()) & 0xFF; + V = 0; + condevalN(B); + condevalZ(B); + break; + case 0xDB: /* ADD B dir */ + op1 = get_dir_val(); + B = B + op1; + condevalH(B); + condevalN(B); + condevalC(B); + condevalVa(B, op1); + B &= 0xFF; + condevalZ(B); + break; + case 0xDE: /* LDX dir */ + IX = mem_get_word(get_dir_addr()); + condevalN(IX >> 8); + condevalZ(IX); + V = 0; + break; + case 0xDF: /* STX dir */ + mem_put_word(get_dir_addr(), IX); + condevalN(IX >> 8); + condevalZ(IX); + V = 0; + break; + case 0xE0: /* SUB B ind */ + op1 = get_indir_val(); + B = B - op1; + condevalN(B); + condevalC(B); + condevalVs(B, op1); + B &= 0xFF; + condevalZ(B); + break; + case 0xE1: /* CMP B ind */ + op1 = get_indir_val(); + lo = B - op1; + condevalN(lo); + condevalZ(lo & 0xFF); + condevalC(lo); + condevalVs(B, op1); + break; + case 0xE2: /* SBC B ind */ + op1 = get_indir_val(); + if (C) + B = B - op1 - 1; + else + B = B - op1; + condevalN(B); + condevalC(B); + condevalVs(B, op1); + B &= 0xFF; + condevalZ(B); + break; + case 0xE4: /* AND B ind */ + B = (B & get_indir_val()) & 0xFF; + V = 0; + condevalN(B); + condevalZ(B); + break; + case 0xE5: /* BIT B ind */ + lo = (B & get_indir_val()) & 0xFF; + V = 0; + condevalN(lo); + condevalZ(lo); + break; + case 0xE6: /* LDA B ind */ + B = get_indir_val(); + V = 0; + condevalN(B); + condevalZ(B); + break; + case 0xE7: /* STA B ind */ + mem_put_byte(get_indir_addr(), B); + V = 0; + condevalN(B); + condevalZ(B); + break; + case 0xE8: /* EOR B ind */ + B = (B ^ get_indir_val()) & 0xFF; + V = 0; + condevalN(B); + condevalZ(B); + break; + case 0xE9: /* ADC B ind */ + op1 = get_indir_val(); + if (C) + B = B + op1 + 1; + else + B = B + op1; + condevalH(B); + condevalN(B); + condevalC(B); + condevalVa(B, op1); + B &= 0xFF; + condevalZ(B); + break; + case 0xEA: /* ORA B ind */ + B = (B | get_indir_val()) & 0xFF; + V = 0; + condevalN(B); + condevalZ(B); + break; + case 0xEB: /* ADD B ind */ + op1 = get_indir_val(); + B = B + op1; + condevalH(B); + condevalN(B); + condevalC(B); + condevalVa(B, op1); + B &= 0xFF; + condevalZ(B); + break; + case 0xEE: /* LDX ind */ + IX = mem_get_word(get_indir_addr()); + condevalN(IX >> 8); + condevalZ(IX); + V = 0; + break; + case 0xEF: /* STX ind */ + mem_put_word(get_indir_addr(), IX); + condevalN(IX >> 8); + condevalZ(IX); + V = 0; + break; + case 0xF0: /* SUB B ext */ + op1 = get_ext_val(); + B = B - op1; + condevalN(B); + condevalC(B); + condevalVs(B, op1); + B &= 0xFF; + condevalZ(B); + break; + case 0xF1: /* CMP B ext */ + op1 = get_ext_val(); + lo = B - op1; + condevalN(lo); + condevalZ(lo & 0xFF); + condevalC(lo); + condevalVs(B, op1); + break; + case 0xF2: /* SBC B ext */ + op1 = get_ext_val(); + if (C) + B = B - op1 - 1; + else + B = B - op1; + condevalN(B); + condevalC(B); + condevalVs(B, op1); + B &= 0xFF; + condevalZ(B); + break; + case 0xF4: /* AND B ext */ + B = (B & get_ext_val()) & 0xFF; + V = 0; + condevalN(B); + condevalZ(B); + break; + case 0xF5: /* BIT B ext */ + lo = (B & get_ext_val()) & 0xFF; + V = 0; + condevalN(lo); + condevalZ(lo); + break; + case 0xF6: /* LDA B ext */ + B = get_ext_val(); + V = 0; + condevalN(B); + condevalZ(B); + break; + case 0xF7: /* STA B ext */ + mem_put_byte(get_ext_addr(), B); + V = 0; + condevalN(B); + condevalZ(B); + break; + case 0xF8: /* EOR B ext */ + B = (B ^ get_ext_val()) & 0xFF; + V = 0; + condevalN(B); + condevalZ(B); + break; + case 0xF9: /* ADC B ext */ + op1 = get_ext_val(); + if (C) + B = B + op1 + 1; + else + B = B + op1; + condevalH(B); + condevalN(B); + condevalC(B); + condevalVa(B, op1); + B &= 0xFF; + condevalZ(B); + break; + case 0xFA: /* ORA B ext */ + B = (B | get_ext_val()) & 0xFF; + V = 0; + condevalN(B); + condevalZ(B); + break; + case 0xFB: /* ADD B ext */ + op1 = get_ext_val(); + B = B + op1; + condevalH(B); + condevalN(B); + condevalC(B); + condevalVa(B, op1); + B &= 0xFF; + condevalZ(B); + break; + case 0xFE: /* LDX ext */ + IX = mem_get_word(get_ext_addr()); + condevalN(IX >> 8); + condevalZ(IX); + V = 0; + break; + case 0xFF: /* STX ext */ + mem_put_word(get_ext_addr(), IX); + condevalN(IX >> 8); + condevalZ(IX); + V = 0; + break; + + default: { /* Unassigned */ + if (cpu_unit.flags & UNIT_OPSTOP) { + reason = STOP_OPCODE; + PC--; + } + break; + } + } + } + /* Simulation halted - lets dump all the registers! */ + dump_regs(); + saved_PC = PC; + return reason; +} + +/* dump the working registers */ + +void dump_regs() +{ + printf("\r\nPC=%04X SP=%04X IX=%04X ", PC, SP, IX); + printf("A=%02X B=%02X PSW=%02X", A, B, get_psw()); +} + +/* this routine does the jump to relative offset if the condition is + met. Otherwise, execution continues at the current PC. */ + +void go_rel(int32 cond) +{ + int32 temp; + + temp = get_rel_addr(); + if (cond) + PC += temp; + PC &= ADDRMASK; +} + +/* returns the relative offset sign-extended */ + +int32 get_rel_addr() +{ + int32 temp; + + temp = mem_get_byte(PC++); + if (temp & 0x80) + temp |= 0xFF00; + return temp & ADDRMASK; +} + +/* returns the value at the direct address pointed to by PC */ + +int32 get_dir_val() +{ + return mem_get_byte(get_dir_addr()); +} + +/* returns the direct address pointed to by PC */ + +int32 get_dir_addr() +{ + int32 temp; + + temp = mem_get_byte(PC); + PC = ++PC & ADDRMASK; + return temp & 0xFF; +} + +/* returns the value at the indirect address pointed to by PC */ + +int32 get_indir_val() +{ + return mem_get_byte(get_indir_addr()); +} + +/* returns the indirect address pointed to by PC or immediate byte */ + +int32 get_indir_addr() +{ + int32 temp; + + temp = (mem_get_byte(PC++) + IX) & ADDRMASK; + PC &= ADDRMASK; + return temp; +} + +/* returns the value at the extended address pointed to by PC */ + +int32 get_ext_val() +{ + return mem_get_byte(get_ext_addr()); +} + +/* returns the extended address pointed to by PC or immediate word */ + +int32 get_ext_addr() +{ + int32 temp; + + temp = (mem_get_byte(PC) << 8) | mem_get_byte(PC+1); + PC = (PC +2) & ADDRMASK; + return temp; +} + +/* return a PSW from the current flags */ + +int32 get_psw() +{ + int32 psw; + + psw = 0xC0; + if (H) + psw |= 0x20; + if (I) + psw |= 0x10; + if (N) + psw |= 0x08; + if (Z) + psw |= 0x04; + if (V) + psw |= 0x02; + if (C) + psw |= 0x01; + return psw; +} + +/* set the current flags from a PSW */ + +void set_psw(int32 psw) +{ + H = 0; + if (psw & 0x20) + H = 0x10000; + I = 0; + if (psw & 0x10) + I = 0x10000; + N = 0; + if (psw & 0x08) + N = 0x10000; + Z = 0; + if (psw & 0x04) + Z = 0x10000; + V = 0; + if (psw & 0x02) + V = 0x10000; + C = 0; + if (psw & 0x01) + C = 0x10000; +} + +/* test and set H */ + +void condevalH(int32 res) +{ + H = (res & 0x10) << 12; +} + +/* test and set N */ + +void condevalN(int32 res) +{ + N = 0; + if (res & 0x80) + N = 0x10000; +} + +/* test and set Z */ + +void condevalZ(int32 res) +{ + Z = 0; + if (res == 0) + Z = 0x10000; +} + +/* test and set V for addition */ + +void condevalVa(int32 op1, int32 op2) +{ + if (C) { + V = 0; + if (((op1 & 0x80) && (op2 & 0x80)) || + (((op1 & 0x80) == 0) && ((op2 & 0x80) == 0))) + V = 0x10000; + } +} + +/* test and set V for subtraction */ + +void condevalVs(int32 op1, int32 op2) +{ + if (C) { + V = 0; + if (((op1 & 0x80) && ((op2 & 0x80) == 0)) || + (((op1 & 0x80) == 0) && (op2 & 0x80))) + V = 0x10000; + } +} + +/* test and set C */ + +void condevalC(int32 res) +{ + C = (res & 0x100) << 8; +} + +/* memory write operations */ + +/* put word */ + +void mem_put_word(int32 addr, int32 val) +{ + mem_put_byte(addr,val >> 8); + mem_put_byte(addr + 1, val); +} + +/* put byte */ + +void mem_put_byte(int32 addr, int32 val) +{ + if (addr >= 0x0000 && addr < (int32) MEMSIZE) /* memory cards */ + M[addr] = val & 0xFF; + else if (addr >= 0x8000 && addr < 0x8020) /* memory mapped I/O */ + dev_table[addr - 0x8000].routine(1, val); + else if (addr >= 0xA000 && addr < 0xA080) /* CPU memory */ + M[addr] = val & 0xFF; + else if ((addr >= 0xA080 && addr < 0xC000) && /* extended CPU memory */ + cpu_unit.flags & UNIT_MA000) + M[addr] = val & 0xFF; + else { + if (cpu_unit.flags & UNIT_MSTOP) + mem_fault = 1; + printf("Invalid write to %04X\n\r", addr); + } +} + +/* memory read operations */ + +/* get word */ + +int32 mem_get_word(int32 addr) +{ + int32 temp; + + temp = (mem_get_byte(addr) << 8) | mem_get_byte(addr+1); + return temp; +} + +/* get byte */ + +int32 mem_get_byte(int32 addr) +{ + int32 val; + + if (addr >= 0x0000 && addr < (int32) MEMSIZE) /* memory cards */ + val = M[addr]; + else if (addr >= 0x8000 && addr < 0x8020) /* memory mapped I/O */ + val = dev_table[addr - 0x8000].routine(0, 0); + else if (addr >= 0xA000 && addr < 0xA080) /* CPU memory */ + val = M[addr]; + else if ((addr >= 0xA080 && addr < 0xC000) && /* extended CPU memory */ + cpu_unit.flags & UNIT_MA000) + val = M[addr]; + else if (addr >= 0xE000 && addr < 0x10000) /* ROM memory */ + val = M[addr]; + else { + if (cpu_unit.flags & UNIT_MSTOP) + mem_fault = 1; + val = 0xFF; /* default for no memory at address */ + printf("Invalid read of %04X\n\r", addr); + } + return val & 0xFF; +} + +/* calls from the simulator */ + +/* Reset routine */ + +t_stat cpu_reset (DEVICE *dptr) +{ + int i; + + I = 0x10000; + saved_PC = (M[0xFFFE] << 8) | M[0xFFFF]; + int_req = 0; + sim_brk_types = sim_brk_dflt = SWMASK ('E'); + /* copy in rom image at E000 */ + for (i = 0; i < BOOTLEN; i++) { + M[i + 0xE000] = bootrom[i] & 0xFF; + } + /* copy in rom image at FC00 for vectors! */ + for (i = 0; i < BOOTLEN; i++) { + M[i + 0xFC00] = bootrom[i] & 0xFF; + } + return SCPE_OK; +} + +/* Memory examine */ + +t_stat cpu_ex (t_value *vptr, t_addr addr, UNIT *uptr, int32 sw) +{ + if (addr >= MAXMEMSIZE) + return SCPE_NXM; + if (vptr != NULL) + *vptr = mem_get_byte(addr); + return SCPE_OK; +} + +/* Memory deposit */ + +t_stat cpu_dep (t_value val, t_addr addr, UNIT *uptr, int32 sw) +{ + if (addr >= MAXMEMSIZE) + return SCPE_NXM; + mem_put_byte(addr, val); +// printf("Deposit to %04X of %02X\n\r", addr, val); + return SCPE_OK; +} + +/* adjust the memory size for the emulator 4k to 32k in 4k steps */ + +t_stat cpu_set_size (UNIT *uptr, int32 val, char *cptr, void *desc) +{ + int32 mc = 0; + uint32 i; + + if ((val <= 0) || (val > MAXMEMSIZE) || ((val & 0x0FFF) != 0)) + return SCPE_ARG; + for (i = val; i < MEMSIZE; i++) + mc = mc | M[i]; + if ((mc != 0) && (!get_yn ("Really truncate memory [N]?", FALSE))) + return SCPE_OK; + MEMSIZE = val; + return SCPE_OK; +} + +/* dummy i/o device */ + +int32 nulldev(int32 io, int32 data) +{ + if (io == 0) + return (0xFF); + return 0; +} + diff --git a/swtp/swtp_defs.h b/swtp/swtp_defs.h new file mode 100644 index 00000000..9e946c18 --- /dev/null +++ b/swtp/swtp_defs.h @@ -0,0 +1,46 @@ +/* swtp_defs.h: SWTP 6800 simulator definitions + +Copyright (c) 2005, 2007, William Beech + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + WILLIAM A BEECH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of William A Beech shall not + be used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from William A Beech. + + Based on work by Charles E Owen (c) 1997 and Peter Schorn (c) 2002-2005 + +*/ + +#include "../sim_defs.h" // simulator defs + +/* Memory */ + +#define MAXMEMSIZE 65536 // max memory size +#define MEMSIZE (cpu_unit.capac)// actual memory size +#define ADDRMASK (MAXMEMSIZE - 1)// address mask +#define MEM_ADDR_OK(x) (((uint32) (x)) < MEMSIZE) + +/* Simulator stop codes */ + +#define STOP_RSRV 1 // must be 1 +#define STOP_HALT 2 // HALT-really WAI +#define STOP_IBKPT 3 // breakpoint +#define STOP_OPCODE 4 // invalid opcode +#define STOP_MEMORY 5 // invalid memory address + diff --git a/swtp/swtp_dsk.c b/swtp/swtp_dsk.c new file mode 100644 index 00000000..3a636279 --- /dev/null +++ b/swtp/swtp_dsk.c @@ -0,0 +1,506 @@ +/* swtp_dc4_dsk.c: SWTP DC-4 DISK Simulator + + Copyright (c) 2005, William A. Beech + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + ROBERT M SUPNIK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of William A. Beech shall not + be used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from William A. Beech. + + Based on work by Charles E Owen (c) 1997 and Peter Schorn (c) 2002-2005 + + + The DC-4 is a 5-inch floppy controller which can control up + to 4 daisy-chained 5-inch floppy drives. The controller is based on + the Western Digital 1797 Floppy Disk Controller (FDC) chip. This + file only emulates the minimum DC-4 functionality to interface with + the virtual disk file. + + The floppy controller is interfaced to the CPU by use of 5 memory + addreses. These are device numbers 5 and 6 (0x8014-0x801B). + + Address Mode Function + ------- ---- -------- + + 0x8014 Read Returns FDC interrupt status + 0x8014 Write Selects the drive/head/motor control + 0x8018 Read Returns status of FDC + 0x8018 Write FDC command register + 0x8019 Read Returns FDC track register + 0x8019 Write Set FDC track register + 0x801A Read Returns FDC sector register + 0x801A Write Set FDC sector register + 0x801B Read Read data + 0x801B Write Write data + + Drive Select Read (0x8014): + + +---+---+---+---+---+---+---+---+ + | I | D | X | X | X | X | X | X | + +---+---+---+---+---+---+---+---+ + + I = Set indicates an interrupt request from the FDC pending. + D = DRQ pending - same as bit 1 of FDC status register. + + Drive Select Write (0x8014): + + +---+---+---+---+---+---+---+---+ + | M | S | X | X | X | X | Device| + +---+---+---+---+---+---+---+---+ + + M = If this bit is 1, the one-shot is triggered/retriggered to + start/keep the motors on. + S = Side select. If set, side one is selected otherwise side zero + is selected. + X = not used + Device = value 0 thru 3, selects drive 0-3 to be controlled. + + Drive Status Read (0x8018): + + +---+---+---+---+---+---+---+---+ + | R | P | H | S | C | L | D | B | + +---+---+---+---+---+---+---+---+ + + B - When 1, the controller is busy. + D - When 1, index mark detected (type I) or data request - read data + ready/write data empty (type II or III). + H - When 1, track 0 (type I) or lost data (type II or III). + C - When 1, crc error detected. + S - When 1, seek (type I) or RNF (type II or III) error. + H - When 1, head is currently loaded (type I) or record type/ + write fault (type II or III). + P - When 1, indicates that diskette is write-protected. + R - When 1, drive is not ready. + + Drive Control Write (0x8018) for type I commands: + + +---+---+---+---+---+---+---+---+ + | 0 | S2| S1| S0| H | V | R1| R0| + +---+---+---+---+---+---+---+---+ + + R0/R1 - Selects the step rate. + V - When 1, verify on destination track. + H - When 1, loads head to drive surface. + S0/S1/S2 = 000 - home. + 001 - seek track in data register. + 010 - step without updating track register. + 011 - step and update track register. + 100 - step in without updating track register. + 101 - step in and update track register. + 110 - step out without updating track register. + 111 - step out and update track register. + + Drive Control Write (0x8018) for type II commands: + + +---+---+---+---+---+---+---+---+ + | 1 | 0 | T | M | S | E | B | A | + +---+---+---+---+---+---+---+---+ + + A - Zero for read, 1 on write deleted data mark else data mark. + B - When 1, shifts sector length field definitions one place. + E - When, delay operation 15 ms, 0 no delay. + S - When 1, select side 1, 0 select side 0. + M - When 1, multiple records, 0 for single record. + T - When 1, write command, 0 for read. + + Drive Control Write (0x8018) for type III commands: + + +---+---+---+---+---+---+---+---+ + | 1 | 1 | T0| T1| 0 | E | 0 | 0 | + +---+---+---+---+---+---+---+---+ + + E - When, delay operation 15 ms, 0 no delay. + T0/T1 - 00 - read address command. + 10 - read track command. + 11 - write track command. + + Tracks are numbered from 0 up to one minus the last track in the 1797! + + Track Register Read (0x8019): + + +---+---+---+---+---+---+---+---+ + | Track Number | + +---+---+---+---+---+---+---+---+ + + Reads the current 8-bit value from the track position. + + Track Register Write (0x8019): + + +---+---+---+---+---+---+---+---+ + | Track Number | + +---+---+---+---+---+---+---+---+ + + Writes the 8-bit value to the track register. + + Sectors are numbers from 1 up to the last sector in the 1797! + + Sector Register Read (0x801A): + + +---+---+---+---+---+---+---+---+ + | Sector Number | + +---+---+---+---+---+---+---+---+ + + Reads the current 8-bit value from the sector position. + + Sector Register Write (0x801A): + + +---+---+---+---+---+---+---+---+ + | Sector Number | + +---+---+---+---+---+---+---+---+ + + Writes the 8-bit value to the sector register. + + Data Register Read (0x801B): + + +---+---+---+---+---+---+---+---+ + | Data | + +---+---+---+---+---+---+---+---+ + + Reads the current 8-bit value from the data register. + + Data Register Write (0x801B): + + +---+---+---+---+---+---+---+---+ + | Data | + +---+---+---+---+---+---+---+---+ + + Writes the 8-bit value to the data register. + + A FLEX disk is defined as follows: + + Track Sector Use + 0 1 Boot sector + 0 2 Boot sector (cont) + 0 3 Unused + 0 4 System Identity Record (explained below) + 0 5 Unused + 0 6-last Directory - 10 entries/sector (explained below) + 1 1 First available data sector + last-1 last Last available data sector + + System Identity Record + + Byte Use + 0x10 Volume ID (8 bytes) + 0x18 ??? + 0x19 ??? + 0x1A ??? + 0x1B Volume number (2 bytes) + 0x1D First free sector (2 bytes) + 0x1F Last track minus one (byte) + 0x20 Last sector (byte) + 0x21 Total sectors on disk (2 bytes) + 0x23 Month (byte + 0x24 Day (byte) + 0x25 Year (byte) + 0x26 Last track minus one (byte) + 0x27 Last sector (byte) + +*/ + +#include + +#include "swtp_defs.h" + +#define UNIT_V_ENABLE (UNIT_V_UF + 0) /* Write Enable */ +#define UNIT_ENABLE (1 << UNIT_V_ENABLE) + +/* emulate a SS FLEX disk with 72 sectors and 80 tracks */ + +#define NUM_DISK 4 /* standard 1797 maximum */ +#define SECT_SIZE 256 /* standard FLEX sector */ +#define NUM_SECT 72 /* sectors/track */ +#define TRAK_SIZE (SECT_SIZE * NUM_SECT) +#define HEADS 1 /* handle as SS with twice the sectors */ +#define NUM_CYL 80 /* maximum tracks */ +#define DSK_SIZE (NUM_SECT * HEADS * NUM_CYL * SECT_SIZE) + +/* 1797 status bits */ + +#define BUSY 0x01 +#define DRQ 0x02 +#define WRPROT 0x40 +#define NOTRDY 0x80 + +/* debug prints */ + +#define DEBUG 0 + + +/* prototypes */ + +t_stat dsk_svc (UNIT *uptr); +t_stat dsk_reset (DEVICE *dptr); +int32 fdcdrv(int32 io, int32 data); +int32 fdccmd(int32 io, int32 data); +int32 fdctrk(int32 io, int32 data); +int32 fdcsec(int32 io, int32 data); +int32 fdcdata(int32 io, int32 data); + +/* Global data on status */ + +int32 cur_dsk = NUM_DISK; /* Currently selected drive */ +int32 cur_trk[NUM_DISK] = {0, 0, 0, 0}; +int32 cur_sec[NUM_DISK] = {0, 0, 0, 0}; +int32 cur_byt[NUM_DISK] = {0, 0, 0, 0}; +int32 cur_flg[NUM_DISK] = {NOTRDY, NOTRDY, NOTRDY, NOTRDY}; + +/* Variables */ + +uint8 dskbuf[SECT_SIZE]; /* Data Buffer */ +UNIT *dptr = NULL; /* fileref to write dirty buffer to */ +int32 fdcbyte; +int32 intrq = 0; /* interrupt request flag */ + +/* DC-4 Simh Device Data Structures */ + +UNIT dsk_unit[] = { + { UDATA (&dsk_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE, DSK_SIZE) }, + { UDATA (&dsk_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE, DSK_SIZE) }, + { UDATA (&dsk_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE, DSK_SIZE) }, + { UDATA (&dsk_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE, DSK_SIZE) } }; + +REG dsk_reg[] = { + { HRDATA (DISK, cur_dsk, 4) }, + { NULL } }; + +MTAB dsk_mod[] = { + { UNIT_ENABLE, UNIT_ENABLE, "RW", "RW", NULL }, + { UNIT_ENABLE, 0, "RO", "RO", NULL }, + { 0 } }; + +DEVICE dsk_dev = { + "DSK", dsk_unit, dsk_reg, dsk_mod, + NUM_DISK, 16, 16, 1, 16, 8, + NULL, NULL, &dsk_reset, + NULL, NULL, NULL }; + +/* service routines to handle simlulator functions */ + +/* service routine - actually gets char & places in buffer */ + +t_stat dsk_svc (UNIT *uptr) +{ +return SCPE_OK; +} + +/* Reset routine */ + +t_stat dsk_reset (DEVICE *dptr) +{ +cur_dsk = 0; +return SCPE_OK; +} + +/* I/O instruction handlers, called from the CPU module when an + memory read or write to the proper addresses is issued. + + Each function is passed an 'io' flag, where 0 means a read from + the port, and 1 means a write to the port. On input, the actual + input is passed as the return value, on output, 'data' is written + to the device. +*/ + +/* DC-4 drive select register routine - this register is not part of the 1797 +*/ + +int32 fdcdrv(int32 io, int32 data) +{ +/* **** probably need to grab the parameters from the SIR and set the limits */ + if (io) { /* write to DC-4 drive register */ + cur_dsk = data & 0x03; /* only 2 drive select bits */ +#if DEBUG > 0 + printf("Drive set to %d\n\r", cur_dsk); +#endif + if ((dsk_unit[cur_dsk].flags & UNIT_ENABLE) == 0) + cur_flg[cur_dsk] |= WRPROT; /* set WPROT */ + return 0; + } else { /* read from DC-4 drive register */ +#if DEBUG > 0 + printf("Drive read as %02X\n\r", intrq); +#endif + return intrq; + } +} + +/* WD 1797 FDC command register routine */ + +int32 fdccmd(int32 io, int32 data) +{ + static int32 val = 0, val1 = NOTRDY, i; + static long pos; + UNIT *uptr; + + if ((dsk_unit[cur_dsk].flags & UNIT_ATT) == 0) { /* not attached */ + cur_flg[cur_dsk] |= NOTRDY; /* set not ready flag */ + printf("Drive %d is not attached\n\r", cur_dsk); + return 0; + } else { + cur_flg[cur_dsk] &= ~NOTRDY; /* clear not ready flag */ + } + uptr = dsk_dev.units + cur_dsk; /* get virtual drive address */ + if (io) { /* write command to fdc */ + switch(data) { + case 0x8C: /* read command */ + case 0x9C: +#if DEBUG > 0 + printf("Read of disk %d, track %d, sector %d\n\r", + cur_dsk, cur_trk[cur_dsk], cur_sec[cur_dsk]); +#endif + pos = TRAK_SIZE * cur_trk[cur_dsk]; /* calculate file offset */ + pos += SECT_SIZE * (cur_sec[cur_dsk] - 1); +#if DEBUG > 0 + printf("Read pos = %ld ($%04X)\n\r", pos, pos); +#endif + sim_fseek(uptr -> fileref, pos, 0); /* seek to offset */ + sim_fread(dskbuf, 256, 1, uptr -> fileref); /* read in buffer */ + cur_flg[cur_dsk] |= BUSY | DRQ; /* set DRQ & BUSY */ + i = cur_byt[cur_dsk] = 0; /* clear counter */ + break; + case 0xAC: /* write command */ +#if DEBUG > 0 + printf("Write of disk %d, track %d, sector %d\n\r", + cur_dsk, cur_trk[cur_dsk], cur_sec[cur_dsk]); +#endif + if (cur_flg[cur_dsk] & WRPROT) { + printf("Drive %d is write-protected\n\r", cur_dsk); + } else { + pos = TRAK_SIZE * cur_trk[cur_dsk]; /* calculate file offset */ + pos += SECT_SIZE * (cur_sec[cur_dsk] - 1); +#if DEBUG > 1 + printf("Write pos = %ld ($%04X)\n\r", pos, pos); +#endif + sim_fseek(uptr -> fileref, pos, 0); /* seek to offset */ + dptr = uptr; /* save pointer for actual write */ + cur_flg[cur_dsk] |= BUSY | DRQ;/* set DRQ & BUSY */ + i = cur_byt[cur_dsk] = 0; /* clear counter */ + } + break; + case 0x18: /* seek command */ + case 0x1B: + cur_trk[cur_dsk] = fdcbyte; /* set track */ + cur_flg[cur_dsk] &= ~(BUSY | DRQ); /* clear flags */ +#if DEBUG > 0 + printf("Seek of disk %d, track %d\n\r", cur_dsk, fdcbyte); +#endif + break; + case 0x0B: /* restore command */ + cur_trk[cur_dsk] = 0; /* home the drive */ + cur_flg[cur_dsk] &= ~(BUSY | DRQ); /* clear flags */ +#if DEBUG > 0 + printf("Drive %d homed\n\r", cur_dsk); +#endif + break; + default: + printf("Unknown FDC command %02H\n\r", data); + } + } else { /* read status from fdc */ + val = cur_flg[cur_dsk]; /* set return value */ + if (val1 == 0 && val == 0x03) /* delay BUSY going high */ + val = 0x02; /* set DRQ first */ + if (val != val1) { /* now allow BUSY after on read */ + val1 = val; +#if DEBUG > 0 + printf("Drive %d status=%02X\n\r", cur_dsk, cur_flg[cur_dsk]); +#endif + } + } + return val; +} + +/* WD 1797 FDC track register routine */ + +int32 fdctrk(int32 io, int32 data) +{ + if (io) { + cur_trk[cur_dsk] = data & 0xFF; +#if DEBUG > 1 + printf("Drive %d track set to %d\n\r", cur_dsk, data); +#endif + } else + ; +#if DEBUG > 1 + printf("Drive %d track read as %d\n\r", cur_dsk, cur_trk[cur_dsk]); +#endif + return cur_trk[cur_dsk]; +} + +/* WD 1797 FDC sector register routine */ + +int32 fdcsec(int32 io, int32 data) +{ + if (io) { + cur_sec[cur_dsk] = data & 0xFF; + if (cur_sec[cur_dsk] == 0) /* fix for swtp boot! */ + cur_sec[cur_dsk] = 1; +#if DEBUG > 1 + printf("Drive %d sector set to %d\n\r", cur_dsk, data); +#endif + } else + ; +#if DEBUG > 1 + printf("Drive %d sector read as %d\n\r", cur_dsk, cur_sec[cur_dsk]); +#endif + return cur_sec[cur_dsk]; +} + +/* WD 1797 FDC data register routine */ + +int32 fdcdata(int32 io, int32 data) +{ + int32 i; + + if (io) { /* write byte to fdc */ + fdcbyte = data; /* save for seek */ + if ((i = cur_byt[cur_dsk]) < SECT_SIZE) { /* copy bytes to buffer */ +#if DEBUG > 3 + printf("Writing byte %d of %02X\n\r", cur_byt[cur_dsk], data); +#endif + cur_byt[cur_dsk]++; /* step counter */ + dskbuf[i] = data; /* byte into buffer */ + if (cur_byt[cur_dsk] == SECT_SIZE) { + cur_flg[cur_dsk] &= ~(BUSY | DRQ); + if (dptr) { /* if initiated by FDC write command */ + sim_fwrite(dskbuf, 256, 1, dptr -> fileref); /* write it */ + dptr = NULL; + } +#if DEBUG > 0 + printf("Sector write complete\n\r"); +#endif + } + } + return 0; + } else { /* read byte from fdc */ + if ((i = cur_byt[cur_dsk]) < SECT_SIZE) { /* copy bytes from buffer */ +#if DEBUG > 1 + printf("Reading byte %d\n\r", cur_byt[cur_dsk]); +#endif + cur_byt[cur_dsk]++; /* step counter */ + if (cur_byt[cur_dsk] == SECT_SIZE) { /* done? */ + cur_flg[cur_dsk] &= ~(BUSY | DRQ); /* clear flags */ +#if DEBUG > 0 + printf("Sector read complete\n\r"); +#endif + } + return (dskbuf[i] & 0xFF); + } else + return 0; + } +} + diff --git a/swtp/swtp_sio.c b/swtp/swtp_sio.c new file mode 100644 index 00000000..859074c4 --- /dev/null +++ b/swtp/swtp_sio.c @@ -0,0 +1,312 @@ +/* swtp_sio: SWTP serial I/O card + +Copyright (c) 2005, William Beech + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + Willaim Beech BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of William A. Beech shall not + be used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from William A. Beech. + + Based on work by Charles E Owen (c) 1997 and Peter Schorn (c) 2002-2005 + + These functions support a simulated SWTP MP-S interface card. + The card had two physical I/O ports which could be connected + to any serial I/O device that would connect to a current loop + or RS232 interface. Available baud rates were jumper selectable + for each port from 110 to 9600. The ports appear at all 4 addresses. + This fact is used by SWTBUG to determine the presence of the MP-S vice + MP-C serial card. + + All I/O is via either programmed I/O or interrupt controlled I/O. + It has a status port and a data port. A write to the status port + can select some options for the device (0x03 will reset the port). + A read of the status port gets the port status: + + +---+---+---+---+---+---+---+---+ + | I | P | O | F |CTS|DCD|TXE|RXF| + +---+---+---+---+---+---+---+---+ + + RXF - A 1 in this bit position means a character has been received + on the data port and is ready to be read. + TXE - A 1 in this bit means the port is ready to receive a character + on the data port and transmit it out over the serial line. + + A read to the data port gets the buffered character, a write + to the data port writes the character to the device. +*/ + +#include +#include + +#include "swtp_defs.h" + +#define UNIT_V_ANSI (UNIT_V_UF + 0) // ANSI mode +#define UNIT_ANSI (1 << UNIT_V_ANSI) + +t_stat sio_svc (UNIT *uptr); +t_stat sio_reset (DEVICE *dptr); +t_stat ptr_svc (UNIT *uptr); +t_stat ptr_reset (DEVICE *dptr); +t_stat ptp_svc (UNIT *uptr); +t_stat ptp_reset (DEVICE *dptr); + +int32 ptr_stopioe = 0, ptp_stopioe = 0; // stop on error + +// MP-S Standard I/O Data Structures + +UNIT sio_unit = { UDATA (&sio_svc, 0, 0), + KBD_POLL_WAIT }; + +REG sio_reg[] = { + { ORDATA (DATA, sio_unit.buf, 8) }, + { ORDATA (STAT, sio_unit.u3, 8) }, + { NULL } }; + +MTAB sio_mod[] = { + { UNIT_ANSI, 0, "TTY", "TTY", NULL }, + { 0 } }; + +DEVICE sio_dev = { + "MP-S", &sio_unit, sio_reg, sio_mod, + 1, 10, 31, 1, 8, 8, + NULL, NULL, &sio_reset, + NULL, NULL, NULL }; + +UNIT ptr_unit = { UDATA (&ptr_svc, UNIT_SEQ + UNIT_ATTABLE, 0), + KBD_POLL_WAIT }; +DEVICE ptr_dev = { + "PTR", &ptr_unit, NULL, NULL, + 1, 10, 31, 1, 8, 8, + NULL, NULL, &ptr_reset, + NULL, NULL, NULL }; + +UNIT ptp_unit = { UDATA (&ptp_svc, UNIT_SEQ + UNIT_ATTABLE, 0), + KBD_POLL_WAIT }; +DEVICE ptp_dev = { + "PTP", &ptp_unit, NULL, NULL, + 1, 10, 31, 1, 8, 8, + NULL, NULL, &ptp_reset, + NULL, NULL, NULL }; + +/* Service routines to handle simulator functions */ + +/* service routine - actually gets char & places in buffer */ + +int32 ptp_rdr(int32 io, int32 data); + +int32 ptp_flag = 0, ptr_flag = 0; + +/* console input service routine */ + +int32 sio_svc (UNIT *uptr) +{ + int32 temp; + + sim_activate (&sio_unit, sio_unit.wait); // continue poll + if ((temp = sim_poll_kbd ()) < SCPE_KFLAG) + return temp; // no char or error? + sio_unit.buf = temp & 0xFF; // Save char + sio_unit.u3 |= 0x01; // Set RXF flag + + /* Do any special character handling here */ + + sio_unit.pos++; // step character count + return SCPE_OK; +} + +/* paper tape reader input service routine */ + +int32 ptr_svc (UNIT *uptr) +{ + return SCPE_OK; +} + +/* paper tape punch output service routine */ + +int32 ptp_svc (UNIT *uptr) +{ + return SCPE_OK; +} + +/* Reset console */ + +int32 sio_reset (DEVICE *dptr) +{ + sio_unit.buf = 0; // Data buffer + sio_unit.u3 = 0x02; // Status buffer + sim_activate (&sio_unit, sio_unit.wait); // activate unit + return SCPE_OK; +} + +/* Reset paper tape reader */ + +int32 ptr_reset (DEVICE *dptr) +{ + ptr_unit.buf = 0; + ptr_unit.u3 = 0x02; + sim_cancel (&ptr_unit); // deactivate unit + return SCPE_OK; +} + +/* Reset paper tape punch */ + +int32 ptp_reset (DEVICE *dptr) +{ + ptp_unit.buf = 0; + ptp_unit.u3 = 0x02; + sim_cancel (&ptp_unit); // deactivate unit + return SCPE_OK; +} + +/* I/O instruction handlers, called from the CPU module when a + read or write occur to addresses 0x8000-0x801F. + + Each function is passed an 'io' flag, where 0 means a read from + the port, and 1 means a write to the port. On input, the actual + input is passed as the return value, on output, 'data' is written + to the device. + + This code emulates a SWTP MP-S Serial Card with a Model 33 Teletype + attached. The Model 33 uses DC1-DC4 codes to enable or disable the + paper tape reader and punch. Those devices are defined in this module, + and the code built to emulate those functions if the PTP and/or PTR + are attached in the simulator. +*/ + +/* Port 1 (0x8004-0x8007) controls the Model 33 Teletype */ + +int32 ptr_flg1 = 0; +int32 odata, status; + + +int32 sio0s(int32 io, int32 data) +{ + UNIT *uptr; + + if (io == 0) { // control register read + if (ptr_flag) { // reader enabled? + if ((ptr_unit.flags & UNIT_ATT) == 0) // attached? + ptr_unit.u3 &= 0xFE; // no, clear RXF flag + else { + uptr = ptr_dev.units;// not EOF? + if (feof(uptr -> fileref)) + ptr_unit.u3 &= 0xFE; + else + ptr_unit.u3 |= 0x01; + } + return (status = ptr_unit.u3); // no - done + } else { + return (status = sio_unit.u3); // return console status + } + } else { // control register write + if (data == 0x03) { // reset port! + sio_unit.u3 = 0x02; // reset console + sio_unit.buf = 0; + sio_unit.pos = 0; + ptr_unit.u3 = 0x02; // reset reader + ptr_unit.buf = 0; + ptr_unit.pos = 0; + ptp_unit.u3 = 0x02; // reset punch + ptp_unit.buf = 0; + ptp_unit.pos = 0; + } + return (status = 0); // invalid io + } +} + +int32 sio0d(int32 io, int32 data) +{ + UNIT *uptr; + + if (io == 0) { // data register read + if (ptr_flag) { // RDR enabled? + if ((ptr_unit.flags & UNIT_ATT) == 0) // attached? + return 0; // no, done +// printf("ptr_unit.u3=%02X\n", ptr_unit.u3); + if ((ptr_unit.u3 & 0x01) == 0) { // yes, more data? +// printf("Returning old %02X\n", odata); // no, return previous byte + return (odata & 0xFF); + } + uptr = ptr_dev.units; // get data byte + if ((odata = getc(uptr -> fileref)) == EOF) { // end of file? +// printf("Got EOF\n"); + ptr_unit.u3 &= 0xFE; // clear RXF flag + return (odata = 0); // no data + } +// printf("Returning new %02X\n", odata); + ptr_unit.pos++; // step character count + ptr_unit.u3 &= 0xFE; // clear RXF flag + return (odata & 0xFF); // return character + } else { + sio_unit.u3 &= 0xFE; // clear RXF flag + return (odata = sio_unit.buf); // return next char + } + } else { // data register write + if (isprint(data) || data == '\r' || data == '\n') { // printable? + sim_putchar(data); // print character on console + if (ptp_flag && ptp_unit.flags & UNIT_ATT) { // PTP enabled & attached? + uptr = ptp_dev.units; // punch character to file + putc(data, uptr -> fileref); + ptp_unit.pos++; // step character counter + } + } else { // DC1-DC4 control Reader/Punch + switch (data) { + case 0x11: // RDR on + ptr_flag = 1; + ptr_flg1 = 0; + ptr_unit.u3 |= 0x01; +// printf("Reader on\r\n"); + break; + case 0x12: // PTP on + ptp_flag = 1; + ptp_unit.u3 |= 0x02; +// printf("Punch on\r\n"); + break; + case 0x13: // RDR off + ptr_flag = 0; +// printf("Reader off-%d bytes read\r\n", ptr_unit.pos); + break; + case 0x14: // PTP off + ptp_flag = 0; +// printf("Punch off-%d bytes written\r\n", ptp_unit.pos); + break; + default: // ignore all other characters + break; + } + } + } + return (odata = 0); +} + +/* because each port appears at 2 addresses and this fact is used + to determine if it is a MP-C or MP-S repeatedly in the SWTBUG + monitor, this code assures that reads of the high ports return + the same data as was read the last time on the low ports. +*/ + +int32 sio1s(int32 io, int32 data) +{ + return status; +} + +int32 sio1d(int32 io, int32 data) +{ + return odata; +} + diff --git a/swtp/swtp_sys.c b/swtp/swtp_sys.c new file mode 100644 index 00000000..391065cd --- /dev/null +++ b/swtp/swtp_sys.c @@ -0,0 +1,425 @@ +/* swtp_sys.c: SWTP 6800 system interface + + Copyright (c) 2005, William Beech + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + WILLIAM A BEECH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of William A. Beech shall not + be used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from William A. Beech. + + Based on work by Charles E Owen (c) 1997 and Peter Schorn (c) 2002-2005 + +*/ + +#include +#include +#include "swtp_defs.h" + +/* externals */ + +extern DEVICE cpu_dev; +extern DEVICE dsk_dev; +extern UNIT cpu_unit; +extern REG cpu_reg[]; +extern DEVICE sio_dev; +extern DEVICE ptr_dev; +extern DEVICE ptp_dev; +extern DEVICE lpt_dev; +extern unsigned char M[]; +extern int32 saved_PC; +extern int32 sim_switches; +//extern int32 (*sim_vm_fprint_addr)(FILE*, DEVICE*,t_addr); + +/* prototypes */ + +int32 sim_load (FILE *fileref, char *cptr, char *fnam, int flag); +int32 fprint_sym (FILE *of, int32 addr, uint32 *val, + UNIT *uptr, int32 sw); +t_addr fprint_addr(FILE *stream, DEVICE *dptr, t_addr addr); +int32 parse_sym (char *cptr, int32 addr, UNIT *uptr, uint32 *val, int32 sw); +void sim_special_init (void); + +/* links into scp */ + +void (*sim_vm_init)(void) = &sim_special_init; + +/* SCP data structures + + sim_name simulator name string + sim_PC pointer to saved PC register descriptor + sim_emax number of words needed for examine + sim_devices array of pointers to simulated devices + sim_stop_messages array of pointers to stop messages + sim_load binary loader +*/ + +char sim_name[] = "SWTP 6800"; + +REG *sim_PC = &cpu_reg[0]; + +int32 sim_emax = 16; + +DEVICE *sim_devices[] = { &cpu_dev, &sio_dev, &ptp_dev, &ptr_dev, &dsk_dev, NULL }; + +const char *sim_stop_messages[] = { + "Unknown error", + "Unknown I/O Instruction", + "HALT instruction", + "Breakpoint", + "Invalid Opcode", + "Invalid Memory" }; + +static const char *opcode[] = { +"???", "NOP", "???", "???", //0x00 +"???", "???", "TAP", "TPA", +"INX", "DEX", "CLV", "SEV", +"CLC", "SEC", "CLI", "SEI", +"SBA", "CBA", "???", "???", //0x10 +"???", "???", "TAB", "TBA", +"???", "DAA", "???", "ABA", +"???", "???", "???", "???", +"BRA", "???", "BHI", "BLS", //0x20 +"BCC", "BCS", "BNE", "BEQ", +"BVC", "BVS", "BPL", "BMI", +"BGE", "BLT", "BGT", "BLE", +"TSX", "INS", "PULA", "PULB", //0x30 +"DES", "TXS", "PSHA", "PSHB", +"???", "RTS", "???", "RTI", +"???", "???", "WAI", "SWI", +"NEGA", "???", "???", "COMA", //0x40 +"LSRA", "???", "RORA", "ASRA", +"ASLA", "ROLA", "DECA", "???", +"INCA", "TSTA", "???", "CLRA", +"NEGB", "???", "???", "COMB", //0x50 +"LSRB", "???", "RORB", "ASRB", +"ASLB", "ROLB", "DECB", "???", +"INCB", "TSTB", "???", "CLRB", +"NEG", "???", "???", "COM", //0x60 +"LSR", "???", "ROR", "ASR", +"ASL", "ROL", "DEC", "???", +"INC", "TST", "JMP", "CLR", +"NEG", "???", "???", "COM", //0x70 +"LSR", "???", "ROR", "ASR", +"ASL", "ROL", "DEC", "???", +"INC", "TST", "JMP", "CLR", +"SUBA", "CMPA", "SBCA", "???", //0x80 +"ANDA", "BITA", "LDAA", "???", +"EORA", "ADCA", "ORAA", "ADDA", +"CPX", "BSR", "LDS", "???", +"SUBA", "CMPA", "SBCA", "???", //0x90 +"ANDA", "BITA", "LDAA", "STAA", +"EORA", "ADCA", "ORAA", "ADDA", +"CPX", "???", "LDS", "STS", +"SUBA", "CMPA", "SBCA", "???", //0xA0 +"ANDA", "BITA", "LDAA", "STAA", +"EORA", "ADCA", "ORAA", "ADDA", +"CPX X", "JSR X", "LDS X", "STS X", +"SUBA", "CMPA", "SBCA", "???", //0xB0 +"ANDA", "BITA", "LDAA", "STAA", +"EORA", "ADCA", "ORAA", "ADDA", +"CPX", "JSR", "LDS", "STS", +"SUBB", "CMPB", "SBCB", "???", //0xC0 +"ANDB", "BITB", "LDAB", "???", +"EORB", "ADCB", "ORAB", "ADDB", +"???", "???", "LDX", "???", +"SUBB", "CMPB", "SBCB", "???", //0xD0 +"ANDB", "BITB", "LDAB", "STAB", +"EORB", "ADCB", "ORAB", "ADDB", +"???", "???", "LDX", "STX", +"SUBB", "CMPB", "SBCB", "???", //0xE0 +"ANDB", "BITB", "LDAB", "STAB", +"EORB", "ADCB", "ORAB", "ADDB", +"???", "???", "LDX", "STX", +"SUBB", "CMPB", "SBCB", "???", //0xF0 +"ANDB", "BITB", "LDAB", "STAB", +"EORB", "ADCB", "ORAB", "ADDB", +"???", "???", "LDX", "STX", + }; + +int32 oplen[256] = { +0,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1, //0x00 +1,1,0,0,0,0,1,1,0,1,0,1,0,0,0,0, +2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +1,1,1,1,1,1,1,1,0,1,0,1,0,0,1,1, +1,0,0,1,1,0,1,1,1,1,1,0,1,1,0,1, //0x40 +1,0,0,1,1,0,1,1,1,1,1,0,1,1,0,1, +2,0,0,2,2,0,2,2,2,2,2,0,2,2,2,2, +3,0,0,3,3,0,3,3,3,3,3,0,3,3,3,3, +2,2,2,0,2,2,2,0,2,2,2,2,3,2,3,0, //0x80 +2,2,2,0,2,2,2,2,2,2,2,2,2,0,2,2, +2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2, +3,3,3,0,3,3,3,3,3,3,3,3,3,3,3,3, +2,2,2,0,2,2,2,0,2,2,2,2,0,0,3,0, //0xC0 +2,2,2,0,2,2,2,2,2,2,2,2,0,0,2,2, +2,2,2,0,2,2,2,2,2,2,2,2,0,0,2,2, +3,3,3,0,3,3,3,3,3,3,3,3,0,0,3,3 }; + +/* This is the dumper/loader. This command uses the -h to signify a + hex dump/load vice a binary one. If no address is given to load, it + takes the address from the hex record or the current PC for binary. +*/ + +int32 sim_load (FILE *fileref, char *cptr, char *fnam, int flag) +{ + int32 i, cnt = 0, addr = 0, start = 0x10000, end = 0, bytecnt, + cksum1, cksum, bytes[250]; + char buffer[256]; + + sscanf(cptr," %x-%x", &start, &end); + if (flag) { // dump + if (start == 0x10000) // no address parameter + return SCPE_2FARG; + if (sim_switches & 0x80) { // hex dump + addr = start; + while (addr <= end) { // more records to write + if ((addr + 16) <= end) // how many bytes this record + bytecnt = 16 + 3; + else + bytecnt = end - addr + 4; + cksum = -1 - (bytecnt) - (addr >> 8) - (addr & 0xFF); //init cksum + fprintf(fileref, "S1%02X%02X%02X", bytecnt, addr>>8, addr&0xFF); //header + for (i=0; i> 8) - (addr & 0xFF); //init cksum + for (i=0; i < bytecnt-3; i++) + cksum -= bytes[i]; + cksum &= 0xFF; + if (cksum != cksum1) + printf("Checksum error\n"); + else { + for (i=0; i < bytecnt-3; i++) { + M[addr++] = bytes[i]; + cnt++; + } + } + } else if (buffer[1] == '9') // end of file + printf("End of file\n"); + } + } + } else { // binary load + if (start == 0x10000) // no starting address + addr = saved_PC; + else + addr = start; + start = addr; + while ((i = getc (fileref)) != EOF) { + M[addr] = i; + addr++; + cnt++; + } + } + printf ("%d Bytes loaded starting at %04X\n", cnt, start); + } + return (SCPE_OK); +} + +/* Symbolic output + + Inputs: + *of = output stream + addr = current PC + *val = pointer to values + *uptr = pointer to unit + sw = switches + Outputs: + status = error code +*/ + +int32 fprint_sym (FILE *of, int32 addr, uint32 *val, + UNIT *uptr, int32 sw) +{ + int32 i, inst, inst1; + + if (sw & SWMASK ('D')) { // dump memory + for (i=0; i<16; i++) + fprintf(of, "%02X ", val[i]); + fprintf(of, " "); + for (i=0; i<16; i++) + if (isprint(val[i])) + fprintf(of, "%c", val[i]); + else + fprintf(of, "."); + return -15; + } else if (sw & SWMASK ('M')) { // dump instruction mnemonic + inst = val[0]; + if (!oplen[inst]) { // invalid opcode + fprintf(of, "%02X", inst); + return 0; + } + inst1 = inst & 0xF0; + fprintf (of, "%s", opcode[inst]); // mnemonic + if (strlen(opcode[inst]) == 3) + fprintf(of, " "); + if (inst1 == 0x20 || inst == 0x8D) { // rel operand + inst1 = val[1]; + if (val[1] & 0x80) + inst1 |= 0xFF00; + fprintf(of, " $%04X", (addr + inst1 + 2) & ADDRMASK); + } else if (inst1 == 0x80 || inst1 == 0xC0) { // imm operand + if ((inst & 0x0F) < 0x0C) + fprintf(of, " #$%02X", val[1]); + else + fprintf(of, " #$%02X%02X", val[1], val[2]); + } else if (inst1 == 0x60 || inst1 == 0xA0 || inst1 == 0xE0) // ind operand + fprintf(of, " %d,X", val[1]); + else if (inst1 == 0x70 || inst1 == 0xb0 || inst1 == 0xF0) // ext operand + fprintf(of, " $%02X%02X", val[1], val[2]); + return (-(oplen[inst] - 1)); + } else + return SCPE_ARG; +} + +/* address output routine */ + +t_addr fprint_addr(FILE *of, DEVICE *dptr, t_addr addr) +{ + fprintf(of, "%04X", addr); + return 0; +} + +/* Symbolic input + + Inputs: + *cptr = pointer to input string + addr = current PC + *uptr = pointer to unit + *val = pointer to output values + sw = switches + Outputs: + status = error status +*/ + +int32 parse_sym (char *cptr, int32 addr, UNIT *uptr, uint32 *val, int32 sw) +{ + int32 cflag, i = 0, j, r; + char gbuf[CBUFSIZE]; + + cflag = (uptr == NULL) || (uptr == &cpu_unit); + while (isspace (*cptr)) cptr++; /* absorb spaces */ + if ((sw & SWMASK ('A')) || ((*cptr == '\'') && cptr++)) { /* ASCII char? */ + if (cptr[0] == 0) + return SCPE_ARG; /* must have 1 char */ + val[0] = (uint32) cptr[0]; + return SCPE_OK; + } + if ((sw & SWMASK ('C')) || ((*cptr == '"') && cptr++)) { /* ASCII string? */ + if (cptr[0] == 0) + return SCPE_ARG; /* must have 1 char */ + val[0] = ((uint32) cptr[0] << 8) + (uint32) cptr[1]; + return SCPE_OK; + } + +/* An instruction: get opcode (all characters until null, comma, + or numeric (including spaces). +*/ + + while (1) { + if (*cptr == ',' || *cptr == '\0' || + isdigit(*cptr)) + break; + gbuf[i] = toupper(*cptr); + cptr++; + i++; + } + +/* Allow for RST which has numeric as part of opcode */ + + if (toupper(gbuf[0]) == 'R' && + toupper(gbuf[1]) == 'S' && + toupper(gbuf[2]) == 'T') { + gbuf[i] = toupper(*cptr); + cptr++; + i++; + } + +/* Allow for 'MOV' which is only opcode that has comma in it. */ + + if (toupper(gbuf[0]) == 'M' && + toupper(gbuf[1]) == 'O' && + toupper(gbuf[2]) == 'V') { + gbuf[i] = toupper(*cptr); + cptr++; + i++; + gbuf[i] = toupper(*cptr); + cptr++; + i++; + } + +/* kill trailing spaces if any */ + gbuf[i] = '\0'; + for (j = i - 1; gbuf[j] == ' '; j--) { + gbuf[j] = '\0'; + } + +/* find opcode in table */ + for (j = 0; j < 256; j++) { + if (strcmp(gbuf, opcode[j]) == 0) + break; + } + if (j > 255) /* not found */ + return SCPE_ARG; + + val[0] = j; /* store opcode */ + if (oplen[j] < 2) /* if 1-byter we are done */ + return SCPE_OK; + if (*cptr == ',') cptr++; + cptr = get_glyph(cptr, gbuf, 0); /* get address */ + sscanf(gbuf, "%o", &r); + if (oplen[j] == 2) { + val[1] = r & 0xFF; + return (-1); + } + val[1] = r & 0xFF; + val[2] = (r >> 8) & 0xFF; + return (-2); +} + +/* initialize optional interfaces */ + +void sim_special_init (void) +{ +// *sim_vm_fprint_addr = &fprint_addr; +} +