AltairZ80: Correct spelling, formatting and years

This commit is contained in:
Peter Schorn 2023-06-30 14:31:06 +02:00
parent 09f67aa06c
commit 4c1aee0887
42 changed files with 286 additions and 288 deletions

View file

@ -1,6 +1,6 @@
/* altairz80_cpu.c: MITS Altair CPU (8080 and Z80)
Copyright (c) 2002-2014, Peter Schorn
Copyright (c) 2002-2023, Peter Schorn
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
@ -451,7 +451,7 @@ REG cpu_reg[] = {
}, /* 65 M68K, PREF_ADDR */
{ HRDATAD (M68K_PREF_DATA, m68k_registers[M68K_REG_PREF_DATA], 32, "M68K Last Prefetch Data register"),
}, /* 66 M68K, PREF_DATA */
{ HRDATAD (M68K_PPC, m68k_registers[M68K_REG_PPC], 32, "M68K Previous Proram Counter register"),
{ HRDATAD (M68K_PPC, m68k_registers[M68K_REG_PPC], 32, "M68K Previous Program Counter register"),
}, /* 67 M68K, PPC */
{ HRDATAD (M68K_IR, m68k_registers[M68K_REG_IR], 32, "M68K Instruction Register"),
}, /* 68 M68K, IR */
@ -6384,7 +6384,7 @@ static t_stat sim_instr_mmu (void) {
/*
* This sequence of instructions is a mix that mimics
* a resonable instruction set that is a close estimate
* a reasonable instruction set that is a close estimate
* to the calibrated result.
*/

View file

@ -1,6 +1,6 @@
/* altairz80_cpu_opt.c: MITS Altair CPU (8080 and Z80)
Copyright (c) 2002-2014, Peter Schorn
Copyright (c) 2002-2023, Peter Schorn
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),

View file

@ -1,6 +1,6 @@
/* altairz80_defs.h: MITS Altair simulator definitions
Copyright (c) 2002-2014, Peter Schorn
Copyright (c) 2002-2023, Peter Schorn
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),

View file

@ -1,6 +1,6 @@
/* altairz80_dsk.c: MITS Altair 88-DISK Simulator
Copyright (c) 2002-2014, Peter Schorn
Copyright (c) 2002-2023, Peter Schorn
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),

View file

@ -1,6 +1,6 @@
/* altairz80_hdsk.c: simulated hard disk device to increase capacity
Copyright (c) 2002-2014, Peter Schorn
Copyright (c) 2002-2023, Peter Schorn
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
@ -419,7 +419,7 @@ static DISK_INFO* hdsk_imd[HDSK_NUMBER];
static REG hdsk_reg[] = {
{ DRDATAD (HDCMD, hdskLastCommand, 32, "Last command"),
REG_RO },
{ DRDATAD (HDPOS, hdskCommandPosition, 32, "Commmand position"),
{ DRDATAD (HDPOS, hdskCommandPosition, 32, "Command position"),
REG_RO },
{ DRDATAD (HDDSK, selectedDisk, 32, "Selected disk"),
REG_RO },
@ -605,7 +605,7 @@ static t_stat hdsk_attach(UNIT *uptr, CONST char *cptr) {
}
ASSURE((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 */
/* Step 4: Number of tracks is smallest number to accommodate capacity */
uptr -> HDSK_NUMBER_OF_TRACKS = (uptr -> capac + uptr -> HDSK_SECTORS_PER_TRACK *
uptr -> HDSK_SECTOR_SIZE - 1) / (uptr -> HDSK_SECTORS_PER_TRACK * uptr -> HDSK_SECTOR_SIZE);
ASSURE( ( (t_addr) ((uptr -> HDSK_NUMBER_OF_TRACKS - 1) * uptr -> HDSK_SECTORS_PER_TRACK *

View file

@ -1,6 +1,6 @@
/* altairz80_mhdsk.c: MITS 88-HDSK Hard Disk simulator
Copyright (c) 2002-2014, Peter Schorn
Copyright (c) 2002-2023, Peter Schorn
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),

View file

@ -1,6 +1,6 @@
/* altairz80_net.c: networking capability
Copyright (c) 2002-2014, Peter Schorn
Copyright (c) 2002-2023, Peter Schorn
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
@ -295,7 +295,7 @@ int32 netData(const int32 port, const int32 io, const int32 data) {
}
sim_debug(IN_MSG, &net_dev, "NET: " ADDRESS_FORMAT " IN(%i)=%03xh (%c)\n", PCX, port, (result & 0xff), (32 <= (result & 0xff)) && ((result & 0xff) <= 127) ? (result & 0xff) : '?');
return result;
} else { /* OUT */
} else { /* OUT */
if (serviceDescriptor[i].outputSize == BUFFER_LENGTH) {
sim_printf("over-write %i to %i\n", data, port);
serviceDescriptor[i].outputBuffer[serviceDescriptor[i].outputPosWrite > 0 ?

View file

@ -1,6 +1,6 @@
/* altairz80_sio.c: MITS Altair serial I/O card
Copyright (c) 2002-2014, Peter Schorn
Copyright (c) 2002-2023, Peter Schorn
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),

View file

@ -1,6 +1,6 @@
/* altairz80_sys.c: MITS Altair system interface
Copyright (c) 2002-2014, Peter Schorn
Copyright (c) 2002-2023, Peter Schorn
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),

View file

@ -35,7 +35,7 @@
EAX & 0xff === AL
EAX & 0xffff == AX
etc. The result is that alot of the calculations can then be
etc. The result is that a lot of the calculations can then be
done using the native instruction set fully.
*/
@ -196,7 +196,7 @@ struct pc_env
struct i386_general_regs Gn_regs;
struct i386_special_regs Sp_regs;
struct i386_segment_regs Sg_regs;
/* our flags structrure. This contains information on
/* our flags structure. This contains information on
REPE prefix 2 bits repe,repne
SEGMENT overrides 5 bits normal,DS,SS,CS,ES
Delayed flag set 3 bits (zero, signed, parity)

View file

@ -77,7 +77,7 @@ void cpu8086_intr(uint8 intrnum);
/* this file includes subroutines which do:
stuff involving decoding instruction formats.
stuff involving accessess of immediate data via IP.
stuff involving accesses of immediate data via IP.
etc.
*/
@ -675,7 +675,7 @@ uint8 fetch_data_byte(PC_ENV *m, uint16 offset)
refer to addresses relative to the SS. So, at the minimum,
all decodings of addressing modes would have to set/clear
a bit describing whether the access is relative to DS or SS.
That is the function of the cpu-state-varible m->sysmode.
That is the function of the cpu-state-variable m->sysmode.
There are several potential states:
repe prefix seen (handled elsewhere)
repne prefix seen (ditto)
@ -683,7 +683,7 @@ uint8 fetch_data_byte(PC_ENV *m, uint16 offset)
ds segment override
es segment override
ss segment override
ds/ss select (in absense of override)
ds/ss select (in absence of override)
Each of the above 7 items are handled with a bit in the sysmode
field.
The latter 5 can be implemented as a simple state machine:

View file

@ -78,7 +78,7 @@ extern uint32 in(const uint32 Port);
to the 256 byte-"opcodes" found on the 8086. The table which
dispatches this is found in the files optab.[ch].
Each opcode proc has a comment preceeding it which gives it's table
Each opcode proc has a comment preceding it which gives it's table
address. Several opcodes are missing (undefined) in the table.
Each proc includes information for decoding (DECODE_PRINTF and
@ -3100,7 +3100,7 @@ static void i86op_movs_byte(PC_ENV *m)
inc = 1;
if (m->sysmode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE))
{
/* dont care whether REPE or REPNE */
/* don't care whether REPE or REPNE */
/* move them until CX is ZERO. */
while (m->R_CX != 0)
{
@ -3133,7 +3133,7 @@ static void i86op_movs_word(PC_ENV *m)
inc = 2;
if (m->sysmode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE))
{
/* dont care whether REPE or REPNE */
/* don't care whether REPE or REPNE */
/* move them until CX is ZERO. */
while (m->R_CX != 0)
{
@ -3291,7 +3291,7 @@ static void i86op_stos_byte(PC_ENV *m)
inc = 1;
if (m->sysmode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE))
{
/* dont care whether REPE or REPNE */
/* don't care whether REPE or REPNE */
/* move them until CX is ZERO. */
while (m->R_CX != 0)
{
@ -3319,7 +3319,7 @@ static void i86op_stos_word(PC_ENV *m)
inc = 2;
if (m->sysmode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE))
{
/* dont care whether REPE or REPNE */
/* don't care whether REPE or REPNE */
/* move them until CX is ZERO. */
while (m->R_CX != 0)
{
@ -3347,7 +3347,7 @@ static void i86op_lods_byte(PC_ENV *m)
inc = 1;
if (m->sysmode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE))
{
/* dont care whether REPE or REPNE */
/* don't care whether REPE or REPNE */
/* move them until CX is ZERO. */
while (m->R_CX != 0)
{
@ -3375,7 +3375,7 @@ static void i86op_lods_word(PC_ENV *m)
inc = 2;
if (m->sysmode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE))
{
/* dont care whether REPE or REPNE */
/* don't care whether REPE or REPNE */
/* move them until CX is ZERO. */
while (m->R_CX != 0)
{

View file

@ -186,7 +186,7 @@ uint8 xor_0x3_tab[] = { 0, 1, 1, 0 };
By inspection, one gets: cc = ab + r'(a + b)
That represents alot of operations, but NO CHOICE....
That represents a lot of operations, but NO CHOICE....
BORROW CHAIN CALCULATION.
The following table represents the
@ -498,7 +498,7 @@ uint8 neg_byte(PC_ENV *m, uint8 s)
CONDITIONAL_SET_FLAG(res & 0x80, m, F_SF);
CONDITIONAL_SET_FLAG(parity_tab[res], m, F_PF);
/* calculate the borrow chain --- modified such that d=0.
substitutiing d=0 into bc= res&(~d|s)|(~d&s);
substituting d=0 into bc= res&(~d|s)|(~d&s);
(the one used for sub) and simplifying, since ~d=0xff...,
~d|s == 0xffff..., and res&0xfff... == res. Similarly
~d&s == s. So the simplified result is:*/
@ -518,7 +518,7 @@ uint16 neg_word(PC_ENV *m, uint16 s)
CONDITIONAL_SET_FLAG(res & 0x8000, m, F_SF);
CONDITIONAL_SET_FLAG(parity_tab[res&0xff], m, F_PF);
/* calculate the borrow chain --- modified such that d=0.
substitutiing d=0 into bc= res&(~d|s)|(~d&s);
substituting d=0 into bc= res&(~d|s)|(~d&s);
(the one used for sub) and simplifying, since ~d=0xff...,
~d|s == 0xffff..., and res&0xfff... == res. Similarly
~d&s == s. So the simplified result is:*/
@ -793,7 +793,7 @@ uint16 rcr_word(PC_ENV *m, uint16 d, uint16 s)
if (cnt==1)
{
cf = d & 0x1;
/* see note above on teh byte version */
/* see note above on the byte version */
ocf = ACCESS_FLAG(m,F_CF) != 0;
}
else
@ -1310,7 +1310,7 @@ void test_byte(PC_ENV *m, uint8 d, uint8 s)
CONDITIONAL_SET_FLAG(res&0x80, m, F_SF);
CONDITIONAL_SET_FLAG(res==0, m, F_ZF);
CONDITIONAL_SET_FLAG(parity_tab[res&0xff], m, F_PF);
/* AF == dont care*/
/* AF == don't care*/
CLEAR_FLAG(m, F_CF);
}
@ -1322,7 +1322,7 @@ void test_word(PC_ENV *m, uint16 d, uint16 s)
CONDITIONAL_SET_FLAG(res&0x8000, m, F_SF);
CONDITIONAL_SET_FLAG(res==0, m, F_ZF);
CONDITIONAL_SET_FLAG(parity_tab[res&0xff], m, F_PF);
/* AF == dont care*/
/* AF == don't care*/
CLEAR_FLAG(m, F_CF);
}

View file

@ -142,10 +142,10 @@ static const char* ibc_description(DEVICE *dptr);
/* IBC Middi Cadet I/O Ports */
#define IBC_SIO 0x04 /* 0x04-0x13: UARTs (using AltairZ80 SIO.) UARTS 0x00-0x03 are using 2sio. */
#define IBC_FDC_DATA 0x28 /* FDC Data Regster */
#define IBC_PARAM 0x2a /* FDC PARAM register */
#define IBC_FDC_DATA 0x28 /* FDC Data Register */
#define IBC_PARAM 0x2a /* FDC PARAM Register */
#define IBC_DIPSWE 0x3c /* CPU Board DIP Switch E */
#define IBC_BANKSEL 0x38 /* Bank Select register */
#define IBC_BANKSEL 0x38 /* Bank Select Register */
#define IBC_FIFO_CTRL 0x3e /* FDC FIFO Control */
#define IBC_ROM_CTRL 0x3f /* ROM Control Register */
#define IBC_SCC_BANKSEL 0x58 /* Bank Select register */
@ -252,7 +252,7 @@ static DEBTAB ibc_dt[] = {
{ "SBD", SBD_MSG, "System Board messages" },
{ "UART", UART_MSG, "UART messages" },
{ "CACHE", CACHE_MSG, "CACHE messages" },
{ "UIO", UNHANDLED_IO_MSG, "Unsuported I/O Ports" },
{ "UIO", UNHANDLED_IO_MSG, "Unsupported I/O Ports" },
{ "FIFO", FIFO_MSG, "FDC FIFO messages" },
{ "DIPSW", DIPSW_MSG, "DIP Switch messages" },
{ NULL, 0, NULL }
@ -1817,7 +1817,7 @@ static int32 ibc_banksel(const int32 port, const int32 io, const int32 data)
* 0xff: Boot from floppy (All off.)
* Switch 1 - 0xfe: Boot into ROM monitor (Switch 1 on.)
* Switch 2 - 0xfd: Boot from hard disk (Switch 2 on.)
* Switch 7 - 0xbe: OFF = Use FDC Interupts, ON = Poll FDC instead.
* Switch 7 - 0xbe: OFF = Use FDC Interrupts, ON = Poll FDC instead.
*/
result = ibc_info->dipsw_E;

View file

@ -240,7 +240,7 @@ static t_stat ibc_hdc_attach(UNIT *uptr, CONST char *cptr)
/* Defaults for the Quantum 2020 Drive */
pDrive->ready = 0;
if (pDrive->ncyls == 0) {
/* If geometry was not specified, default to Quantun 2020 */
/* If geometry was not specified, default to Quantum 2020 */
pDrive->ncyls = 512;
pDrive->nheads = 4;
pDrive->nsectors = 32;

View file

@ -232,7 +232,7 @@ static t_stat ibc_smd_attach(UNIT *uptr, CONST char *cptr)
/* Defaults for the Quantum 2020 Drive */
pDrive->ready = 0;
if (pDrive->ncyls == 0) {
/* If geometry was not specified, default to Quantun 2020 */
/* If geometry was not specified, default to Quantum 2020 */
pDrive->ncyls = 512;
pDrive->nheads = 4;
pDrive->nsectors = 16;

View file

@ -379,7 +379,7 @@ void m68k_set_reg(m68k_register_t reg, unsigned int value);
/* Check if an instruction is valid for the specified CPU type */
unsigned int m68k_is_valid_instruction(unsigned int instruction, unsigned int cpu_type);
/* Disassemble 1 instruction using the epecified CPU type at pc. Stores
/* Disassemble 1 instruction using the specified CPU type at pc. Stores
* disassembly in str_buff and returns the size of the instruction in bytes.
*/
unsigned int m68k_disassemble(char* str_buff, unsigned int pc, unsigned int cpu_type);

View file

@ -140,7 +140,7 @@
* the exception occurs normally.
* The callback looks like int callback(int opcode)
* You should put OPT_SPECIFY_HANDLER here if you cant to use it, otherwise it will
* use a dummy default handler and you'll have to call m68k_set_illg_instr_callback explicitely
* use a dummy default handler and you'll have to call m68k_set_illg_instr_callback explicitly
*/
#define M68K_ILLG_HAS_CALLBACK OPT_OFF
#define M68K_ILLG_CALLBACK(opcode) op_illg(opcode)
@ -199,7 +199,7 @@
*/
/* If ON, the enulation core will use 64-bit integers to speed up some
/* If ON, the emulation core will use 64-bit integers to speed up some
* operations.
*/
#define M68K_USE_64_BIT OPT_ON

View file

@ -973,7 +973,7 @@ int m68k_execute(int num_cycles)
do
{
int i;
/* Set tracing accodring to T1. (T0 is done inside instruction) */
/* Set tracing according to T1. (T0 is done inside instruction) */
m68ki_trace_t1(); /* auto-disable (see m68kcpu.h) */
/* Set the address space for reads */
@ -1037,7 +1037,7 @@ void m68k_end_timeslice(void)
/* ASG: rewrote so that the int_level is a mask of the IPL0/IPL1/IPL2 bits */
/* KS: Modified so that IPL* bits match with mask positions in the SR
* and cleaned out remenants of the interrupt controller.
* and cleaned out remnants of the interrupt controller.
*/
void m68k_set_irq(unsigned int int_level)
{

View file

@ -398,7 +398,7 @@ typedef uint32 uint64;
/* ----------------------------- Configuration ---------------------------- */
/* These defines are dependant on the configuration defines in m68kconf.h */
/* These defines are dependent on the configuration defines in m68kconf.h */
/* Disable certain comparisons if we're not using all CPU types */
#if M68K_EMULATE_040
@ -2015,7 +2015,7 @@ static inline void m68ki_exception_illegal(void)
USE_CYCLES(CYC_EXCEPTION[EXCEPTION_ILLEGAL_INSTRUCTION_M68K] - CYC_INSTRUCTION[REG_IR]);
}
/* Exception for format errror in RTE */
/* Exception for format error in RTE */
static inline void m68ki_exception_format_error(void)
{
uint sr = m68ki_init_exception();
@ -2052,7 +2052,7 @@ static inline void m68ki_exception_address_error(void)
/* Use up some clock cycles. Note that we don't need to undo the
instruction's cycles here as we've longjmp:ed directly from the
instruction handler without passing the part of the excecute loop
instruction handler without passing the part of the execute loop
that deducts instruction cycles */
USE_CYCLES(CYC_EXCEPTION[EXCEPTION_ADDRESS_ERROR]);
}

View file

@ -156,7 +156,7 @@ uint read_imm_8(void);
uint read_imm_16(void);
uint read_imm_32(void);
/* Read data at the PC but don't imcrement the PC */
/* Read data at the PC but don't increment the PC */
uint peek_imm_8(void);
uint peek_imm_16(void);
uint peek_imm_32(void);
@ -3721,7 +3721,7 @@ static void build_opcode_table(void)
/* ================================= API ================================== */
/* ======================================================================== */
/* Disasemble one instruction at pc and store in str_buff */
/* Disassemble one instruction at pc and store in str_buff */
unsigned int m68k_disassemble(char* str_buff, unsigned int pc, unsigned int cpu_type)
{
if(!g_initialized)

View file

@ -1,6 +1,6 @@
/* m68kcpmsim.c: CP/M for Motorola 68000 definitions
Copyright (c) 2014, Peter Schorn
Copyright (c) 2014 - 2023, Peter Schorn
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
@ -48,7 +48,7 @@
sector number to the sector register. This write triggers the requested
operation. The status of the operation can be determined by reading the
status register.
A zero indicates that no error occured.
A zero indicates that no error occurred.
Note that these operations invoke read() and write() system calls directly
so that they will alter the image on the hard disk. KEEP BACKUPS!
@ -98,7 +98,7 @@
/* Memory-mapped IO ports */
/* 6850 serial port like thing. Implements a reduced set of functionallity. */
/* 6850 serial port like thing. Implements a reduced set of functionality. */
#define MC6850_STAT 0xff1000L // command/status register
#define MC6850_DATA 0xff1002L // receive/transmit data register
@ -335,7 +335,7 @@ static int MC6850_device_ack(void) {
static void MC6850_data_write(uint32 value) {
sim_putchar(value);
if ((m68k_MC6850_control & 0x60) == 0x20) { // transmit interupt enabled?
if ((m68k_MC6850_control & 0x60) == 0x20) { // transmit interrupt enabled?
int_controller_clear(IRQ_MC6850);
int_controller_set(IRQ_MC6850);
}

View file

@ -1,6 +1,6 @@
/* m68kcpmsim.h: CP/M for Motorola 68000 definitions
Copyright (c) 2014, Peter Schorn
Copyright (c) 2014 - 2023, Peter Schorn
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),

View file

@ -11,8 +11,6 @@
#ifndef NASM_NASM_H
#define NASM_NASM_H
#include <stdio.h>
#ifndef NULL
#define NULL 0
#endif

View file

@ -65,7 +65,7 @@
We get many calls on how to interface terminals to the 2SIO. The
problem is that the Asynchronous Communications Interface Adapter's
(ACIA) handshaking signals make interfacing with the 2SIO a
somewhat complicated matter. An explaination of the signals and
somewhat complicated matter. An explanation of the signals and
their function should make the job easier. The three handshaking
signals--Data Carrier Detect (DCD), Request to Send (RTS) and
Clear to Send (CTS)--permit limited control of a modem or
@ -79,8 +79,8 @@
section is inhibited and no data can be received by the ACIA.
Information from the two input signals, CTS and DCD, is present in
the ACIA status register. Bit 2 represents *DCD, and bit 3 repre-
sents *CTS. When bit 2 is high, DCD is inactive. When bit 3 is high,
the ACIA status register. Bit 2 represents *DCD, and bit 3
represents *CTS. When bit 2 is high, DCD is inactive. When bit 3 is high,
CTS is inactive. When bit 2 goes low, valid data is sent to the ACIA.
When bit 3 goes low, data can be transmitted.
@ -395,7 +395,7 @@ static t_stat m2sio_reset(DEVICE *dptr, int32 (*routine)(const int32, const int3
c = getClockFrequency() / 5;
dptr->units[0].wait = (c && c < 1000) ? c : 1000;
/* Enable TMXR modem control passthru */
/* Enable TMXR modem control passthrough */
tmxr_set_modem_control_passthru(xptr->tmxr);
/* Reset status registers */
@ -665,7 +665,7 @@ static t_stat m2sio_config_line(UNIT *uptr)
** to run irrelevant, old software, that use TMXR and
** rely on some semblance of timing (Remote CP/M, BYE,
** RBBS, PCGET/PUT, Xmodem, MEX, Modem7, or most
** other communications software), on contemprary
** other communications software), on contemporary
** hardware.
**
** Serial ports are self-limiting and sockets will run

View file

@ -258,7 +258,7 @@ DEVICE cromfdc_dev = {
};
/* This is the CROMFDC RDOS-II ROM.
* The CROMFDC has a single 8K ROM; however ths simulation includes
* The CROMFDC has a single 8K ROM; however this simulation includes
* two different versions of RDOS:
* RDOS 2.52 and RDOS 3.12
* RDOS 2.52 is the default, but RDOS 3.12 can be

View file

@ -313,7 +313,7 @@ static uint8 adcs6_rom[2][ADCS6_ROM_SIZE] = {
*
* MONITOR COMMANDS :
* B = Load disk boot loader
* C = Load disk boot loader from cartriage
* C = Load disk boot loader from cartridge
* DSSSS,QQQQ = Dump memory in hex from S to Q
* FSSSS,QQQQ,BB = Fill memory from S to Q with B
* GAAAA = Go to address A

View file

@ -78,8 +78,8 @@ typedef struct {
uint8 sel_drive; /* Currently selected drive */
uint8 head_sel; /* Head select (signals to drive itself) */
uint8 head; /* Head set by write to the HEAD register */
uint8 cyl; /* Cyl that the current operation is targetting */
uint8 sector; /* Sector the current READ/WRITE operation is targetting */
uint8 cyl; /* Cyl that the current operation is targeting */
uint8 sector; /* Sector the current READ/WRITE operation is targeting */
uint8 hdr_sector; /* Current sector for WRITE_HEADER */
uint8 ctl_attn;
uint8 ctl_run;
@ -152,11 +152,11 @@ static REG disk2_reg[] = {
{ HRDATAD (SEL_DRIVE, disk2_info_data.sel_drive, 3,
"Currently selected drive"), },
{ HRDATAD (CYL, disk2_info_data.cyl, 8,
"Cylinder that the current operation is targetting"), },
"Cylinder that the current operation is targeting"), },
{ HRDATAD (HEAD, disk2_info_data.head, 8,
"Head that the current operation is targetting"), },
"Head that the current operation is targeting"), },
{ HRDATAD (SECTOR, disk2_info_data.sector, 8,
"Sector that the current operation is targetting"), },
"Sector that the current operation is targeting"), },
{ NULL }
};

View file

@ -973,7 +973,7 @@ static DEBTAB dj2d_dt[] = {
{ "WRITE", WR_DATA_MSG, "Write messages" },
{ "STATUS", STATUS_MSG, "Status messages" },
{ "RDDETAIL", RD_DATA_DETAIL_MSG, "Read detail messages" },
{ "WRDETAIL", WR_DATA_DETAIL_MSG, "Write detail messags" },
{ "WRDETAIL", WR_DATA_DETAIL_MSG, "Write detail messages" },
{ "VERBOSE", VERBOSE_MSG, "Verbose messages" },
{ "DEBUG", DEBUG_MSG, "Debug messages" },
{ NULL, 0 }

View file

@ -529,7 +529,7 @@ static uint8 DJHDC_Write(const uint32 Addr, uint8 cData)
/* Point IOPB to new link */
djhdc_info->link_addr = next_link;
/* Read remaineder of IOPB */
/* Read remainder of IOPB */
for(i = 0; i < DJHDC_IOPB_LEN-3; i++) {
djhdc_info->iopb[i] = GetByteDMA((djhdc_info->link_addr) + i);
}

View file

@ -2,7 +2,7 @@
IMSAI FIF Disk Controller by Ernie Price
Based on altairz80_dsk.c, Copyright (c) 2002-2014, Peter Schorn
Based on altairz80_dsk.c, Copyright (c) 2002-2023, Peter Schorn
Plug-n-Play added by Howard M. Harte

View file

@ -27,7 +27,7 @@
This device emulates D.C. Hayes 80-103A and Micromodem 100 communications
adapters.
To provide any useful funcationality, this device need to be attached to
To provide any useful functionality, this device need to be attached to
a socket or serial port. Enter "HELP HAYES" at the "simh>" prompt for
additional information.
*/
@ -199,32 +199,32 @@ static REG hayes_reg[] = {
};
DEVICE hayes_dev = {
HAYES_SNAME, /* name */
hayes_unit, /* unit */
hayes_reg, /* registers */
hayes_mod, /* modifiers */
1, /* # units */
10, /* address radix */
31, /* address width */
1, /* address increment */
8, /* data radix */
8, /* data width */
NULL, /* examine routine */
NULL, /* deposit routine */
HAYES_SNAME, /* name */
hayes_unit, /* unit */
hayes_reg, /* registers */
hayes_mod, /* modifiers */
1, /* # units */
10, /* address radix */
31, /* address width */
1, /* address increment */
8, /* data radix */
8, /* data width */
NULL, /* examine routine */
NULL, /* deposit routine */
&hayes_reset, /* reset routine */
NULL, /* boot routine */
&hayes_attach, /* attach routine */
&hayes_detach, /* detach routine */
&hayes_ctx, /* context */
(DEV_DISABLE | DEV_DIS | DEV_DEBUG | DEV_MUX), /* flags */
0, /* debug control */
hayes_dt, /* debug flags */
NULL, /* mem size routine */
NULL, /* logical name */
NULL, /* help */
NULL, /* attach help */
NULL, /* context for help */
&hayes_description /* description */
NULL, /* boot routine */
&hayes_attach, /* attach routine */
&hayes_detach, /* detach routine */
&hayes_ctx, /* context */
(DEV_DISABLE | DEV_DIS | DEV_DEBUG | DEV_MUX), /* flags */
0, /* debug control */
hayes_dt, /* debug flags */
NULL, /* mem size routine */
NULL, /* logical name */
NULL, /* help */
NULL, /* attach help */
NULL, /* context for help */
&hayes_description /* description */
};
static const char* hayes_description(DEVICE *dptr)
@ -243,7 +243,7 @@ static t_stat hayes_reset(DEVICE *dptr)
/* Set DEVICE for this UNIT */
dptr->units[0].dptr = dptr;
/* Enable TMXR modem control passthru */
/* Enable TMXR modem control passthrough */
tmxr_set_modem_control_passthru(hayes_ctx.tmxr);
/* Reset status registers */
@ -505,7 +505,7 @@ static t_stat hayes_config_line(UNIT *uptr)
** to run irrelevant, old software, that use TMXR and
** rely on some semblance of timing (Remote CP/M, BYE,
** RBBS, PCGET/PUT, Xmodem, MEX, Modem7, or most
** other communications software), on contemprary
** other communications software), on contemporary
** hardware.
**
** Serial ports are self-limiting and sockets will run

View file

@ -261,7 +261,7 @@ static t_stat hdc1001_attach(UNIT *uptr, CONST char *cptr)
/* Defaults for the Quantum 2020 Drive */
pDrive->ready = 0;
if (pDrive->ncyls == 0) {
/* If geometry was not specified, default to Quantun 2020 */
/* If geometry was not specified, default to Quantum 2020 */
pDrive->ncyls = 512;
pDrive->nheads = 4;
pDrive->nsectors = 16;
@ -448,7 +448,7 @@ static uint8 HDC1001_Write(const uint32 Addr, uint8 cData)
break;
case 2:
sim_debug(ERROR_MSG, &hdc1001_dev,DEV_NAME "%d: " ADDRESS_FORMAT
" Invalid sector size specified in SDH registrer.\n", hdc1001_info->sel_drive, PCX);
" Invalid sector size specified in SDH register.\n", hdc1001_info->sel_drive, PCX);
pDrive->cur_sectsize = 512;
break;
case 3:
@ -458,7 +458,7 @@ static uint8 HDC1001_Write(const uint32 Addr, uint8 cData)
if (pDrive->sectsize != pDrive->cur_sectsize) {
sim_debug(ERROR_MSG, &hdc1001_dev,DEV_NAME "%d: " ADDRESS_FORMAT
" Sector size specified in SDH registrer (0x%x) does not match disk geometry (0x%x.)\n",
" Sector size specified in SDH register (0x%x) does not match disk geometry (0x%x.)\n",
hdc1001_info->sel_drive, PCX, pDrive->cur_sectsize, pDrive->sectsize);
}
/* fall through */

View file

@ -655,7 +655,7 @@ static DEBTAB icom_dt[] = {
{ "WRITE", WR_DATA_MSG, "Write messages" },
{ "STATUS", STATUS_MSG, "Status messages" },
{ "RDDETAIL", RD_DATA_DETAIL_MSG, "Read detail messages" },
{ "WRDETAIL", WR_DATA_DETAIL_MSG, "Write detail messags" },
{ "WRDETAIL", WR_DATA_DETAIL_MSG, "Write detail messages" },
{ NULL, 0 }
};
@ -678,7 +678,7 @@ DEVICE icom_dev = {
&icom_detach, /* detach routine */
&icom_info_data, /* context */
(DEV_DISABLE | DEV_DIS | DEV_DEBUG), /* flags */
ERROR_MSG, /* debug control */
ERROR_MSG, /* debug control */
icom_dt, /* debug flags */
NULL, /* mem size routine */
NULL, /* logical name */

View file

@ -31,7 +31,7 @@
and memory address space.
While the Double D is capable to loading many different operating systems,
this emulator is centered around Digital Reasearch's CP/M 2 operating
this emulator is centered around Digital Research's CP/M 2 operating
system as it was released by Jade.
The process of booting CP/M with the DD is a bit more complicated than
@ -312,7 +312,7 @@ static uint8 jade_prom[JADE_PROM_SIZE] = {
#define CMD_MD0 0x01 /* Select DD bank 0 */
#define CMD_MD1 0x03 /* Select DD bank 1 */
#define CMD_SOT 0x00 /* Switch DD mem out of system */
#define CMD_INT 0x02 /* Isssue DD Z80A interrupt */
#define CMD_INT 0x02 /* Issue DD Z80A interrupt */
#define CMD_BGN 0x80 /* Reset Z80 and execute */
#define DC_LOG 0x00 /* Log on diskette */
@ -494,7 +494,7 @@ static DEBTAB jade_dt[] = {
{ "WRITE", WR_DATA_MSG, "Write messages" },
{ "STATUS", STATUS_MSG, "Status messages" },
{ "RDDETAIL", RD_DATA_DETAIL_MSG, "Read detail messages" },
{ "WRDETAIL", WR_DATA_DETAIL_MSG, "Write detail messags" },
{ "WRDETAIL", WR_DATA_DETAIL_MSG, "Write detail messages" },
{ NULL, 0 }
};

View file

@ -190,7 +190,7 @@ static DEBTAB mdsa_dt[] = {
{ "WRITE", WR_DATA_MSG, "Write messages" },
{ "STATUS", STATUS_MSG, "Status messages" },
{ "RDDETAIL", RD_DATA_DETAIL_MSG, "Read detail messages" },
{ "WRDETAIL", WR_DATA_DETAIL_MSG, "Write detail messags" },
{ "WRDETAIL", WR_DATA_DETAIL_MSG, "Write detail messages" },
{ NULL, 0 }
};

View file

@ -111,7 +111,7 @@ typedef struct {
typedef struct {
uint8 dd; /* Controls density on write DD=1 for double density and DD=0 for single density. */
uint8 ss; /* Specifies the side of a double-sided diskette. The bottom side (and only side of a single-sided diskette) is selected when SS=0. The second (top) side is selected when SS=1. */
uint8 dp; /* has shared use. During stepping operations, DP=O specifies a step out and DP=1 specifies a step in. During write operations, write procompensation is invoked if and only if DP=1. */
uint8 dp; /* has shared use. During stepping operations, DP=O specifies a step out and DP=1 specifies a step in. During write operations, write precompensation is invoked if and only if DP=1. */
uint8 st; /* controls the level of the head step signal to the disk drives. */
uint8 pst; /* value of step signal (st) on previous order */
uint8 ds; /* is the drive select field, encoded as follows: */
@ -270,7 +270,7 @@ static DEBTAB mdsad_dt[] = {
{ "STATUS", STATUS_MSG, "Status messages" },
{ "ORDERS", ORDERS_MSG, "Orders messages" },
{ "RDDETAIL", RD_DATA_DETAIL_MSG, "Read detail messages" },
{ "WRDETAIL", WR_DATA_DETAIL_MSG, "Write detail messags" },
{ "WRDETAIL", WR_DATA_DETAIL_MSG, "Write detail messages" },
{ NULL, 0 }
};

View file

@ -33,11 +33,11 @@
The MM-103 uses the Motorola MC6860L digital modem chip. This device does
not have the ability to emulate the modulation and demodulation functions
or the ability to connect to a phone line. All modem features, such as
switch hook, dialtone detection, and dialing, are emulated in such a way
switch hook, dial tone detection, and dialing, are emulated in such a way
that most software written for the MM-103 should function in some useful
fashion.
To provide any useful funcationality, this device need to be attached to
To provide any useful functionality, this device need to be attached to
a socket or serial port. Enter "HELP PMMI" at the "simh>" prompt for
additional information.
*/
@ -222,10 +222,10 @@ static REG pmmi_reg[] = {
};
DEVICE pmmi_dev = {
PMMI_SNAME, /* name */
pmmi_unit, /* unit */
pmmi_reg, /* registers */
pmmi_mod, /* modifiers */
PMMI_SNAME, /* name */
pmmi_unit, /* unit */
pmmi_reg, /* registers */
pmmi_mod, /* modifiers */
1, /* # units */
10, /* address radix */
31, /* address width */
@ -236,18 +236,18 @@ DEVICE pmmi_dev = {
NULL, /* deposit routine */
&pmmi_reset, /* reset routine */
NULL, /* boot routine */
&pmmi_attach, /* attach routine */
&pmmi_detach, /* detach routine */
&pmmi_ctx, /* context */
(DEV_DISABLE | DEV_DIS | DEV_DEBUG | DEV_MUX), /* flags */
0, /* debug control */
pmmi_dt, /* debug flags */
NULL, /* mem size routine */
NULL, /* logical name */
NULL, /* help */
NULL, /* attach help */
NULL, /* context for help */
&pmmi_description /* description */
&pmmi_attach, /* attach routine */
&pmmi_detach, /* detach routine */
&pmmi_ctx, /* context */
(DEV_DISABLE | DEV_DIS | DEV_DEBUG | DEV_MUX), /* flags */
0, /* debug control */
pmmi_dt, /* debug flags */
NULL, /* mem size routine */
NULL, /* logical name */
NULL, /* help */
NULL, /* attach help */
NULL, /* context for help */
&pmmi_description /* description */
};
static const char* pmmi_description(DEVICE *dptr)
@ -266,7 +266,7 @@ static t_stat pmmi_reset(DEVICE *dptr)
/* Set DEVICE for this UNIT */
dptr->units[0].dptr = dptr;
/* Enable TMXR modem control passthru */
/* Enable TMXR modem control passthrough */
tmxr_set_modem_control_passthru(pmmi_ctx.tmxr);
/* Reset status registers */
@ -571,7 +571,7 @@ static t_stat pmmi_config_line(UNIT *uptr)
** to run irrelevant, old software, that use TMXR and
** rely on some semblance of timing (Remote CP/M, BYE,
** RBBS, PCGET/PUT, Xmodem, MEX, Modem7, or most
** other communications software), on contemprary
** other communications software), on contemporary
** hardware.
**
** Serial ports are self-limiting and sockets will run
@ -626,8 +626,8 @@ static int32 pmmi_reg0(int32 io, int32 data)
} else { pmmi_ctx.oreg0 = data; /* Set UART configuration */
pmmi_config_line(&pmmi_dev.units[0]);
if (data & PMMI_SH) { /* If off-hook, clear dialtone bit (active low) */
pmmi_ctx.dtimer = sim_os_msec() + 500; /* Dialtone in 500ms */
if (data & PMMI_SH) { /* If off-hook, clear dial tone bit (active low) */
pmmi_ctx.dtimer = sim_os_msec() + 500; /* Dial tone in 500ms */
if (pmmi_ctx.oreg0 & PMMI_SH) {
pmmi_ctx.ireg2 &= ~PMMI_AP; /* Answer Phone Bit (active low) */
}

View file

@ -190,7 +190,7 @@ static REG scp300f_reg[] = {
{ HRDATAD(SPIC_OCW2, scp300f_pic[SLAVE_PIC].OCW2, 8, "Slave OCW2 register"), },
{ HRDATAD(SPIC_OCW3, scp300f_pic[SLAVE_PIC].OCW3, 8, "Slave OCW3 register"), },
{ HRDATAD(9513_HUND, data9513[0], 8, "9513 Hundreths"), },
{ HRDATAD(9513_HUND, data9513[0], 8, "9513 Hundredths"), },
{ HRDATAD(9513_SS, data9513[1], 8, "9513 Seconds"), },
{ HRDATAD(9513_MM, data9513[2], 8, "9513 Minutes"), },
{ HRDATAD(9513_HH, data9513[3], 8, "9513 Hours"), },
@ -709,7 +709,7 @@ static uint8 SCP300F_Write(const uint32 Addr, uint8 cData)
switch(Addr & SCP300F_IO_MASK) {
case SCP300F_SPIC_0:
sel_pic = SLAVE_PIC; /* intentional falltrough */
sel_pic = SLAVE_PIC; /* intentional fallthrough */
case SCP300F_MPIC_0:
if (cData & 0x10) {
sim_debug(PIC_MSG, &scp300f_dev, "SCP300F: " ADDRESS_FORMAT

View file

@ -483,7 +483,7 @@ static uint8 SS1_Write(const uint32 Addr, uint8 cData)
switch(Addr & 0x0F) {
case SS1_S8259_L:
sel_pic = SLAVE_PIC; /* intentional falltrough */
sel_pic = SLAVE_PIC; /* intentional fallthrough */
case SS1_M8259_L:
if(cData & 0x10) {
sim_debug(PIC_MSG, &ss1_dev, "SS1: " ADDRESS_FORMAT

View file

@ -332,7 +332,7 @@ static DEBTAB tarbell_dt[] = {
{ "WRITE", WR_DATA_MSG, "Write messages" },
{ "STATUS", STATUS_MSG, "Status messages" },
{ "RDDETAIL", RD_DATA_DETAIL_MSG, "Read detail messages" },
{ "WRDETAIL", WR_DATA_DETAIL_MSG, "Write detail messags" },
{ "WRDETAIL", WR_DATA_DETAIL_MSG, "Write detail messages" },
{ NULL, 0 }
};

View file

@ -1091,7 +1091,7 @@ static uint8 Do1793Command(uint8 cCommand)
sdata.raw[wd179x_info->fdc_dataindex] = wd179x_info->fdc_data;
if (wd179x_info->external_fifo_len) {
/* For external FIFO, write the sector immediately, as the sofware pre-fills a FIFO, which is then read out into the FDC using DRQ */
/* For external FIFO, write the sector immediately, as the software pre-fills a FIFO, which is then read out into the FDC using DRQ */
wd179x_info->fdc_status &= ~(WD179X_STAT_DRQ | WD179X_STAT_BUSY); /* Clear DRQ, BUSY */
wd179x_info->drq = 0;
wd179x_info->intrq = 1;