SCP: Remove ASCII source code character set dependency
Provide reasonable behavior on any platform which doesn't use ASCII as a character set. Method suggested by Dave G4UGM.
This commit is contained in:
parent
a747c0f860
commit
7c7b44e409
3 changed files with 17 additions and 4 deletions
12
scp.c
12
scp.c
|
@ -1845,6 +1845,18 @@ return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Convert switch letter to bit mask */
|
||||||
|
|
||||||
|
int32 sim_swmask (int switch_ch)
|
||||||
|
{
|
||||||
|
static char *letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||||
|
char *index = strchr (letters, switch_ch);
|
||||||
|
|
||||||
|
if (index)
|
||||||
|
return (1u << (int)(index - letters));
|
||||||
|
return 0; /* shouldn't happen */
|
||||||
|
}
|
||||||
|
|
||||||
t_stat process_stdin_commands (t_stat stat, char *argv[]);
|
t_stat process_stdin_commands (t_stat stat, char *argv[]);
|
||||||
|
|
||||||
/* Main command loop */
|
/* Main command loop */
|
||||||
|
|
1
scp.h
1
scp.h
|
@ -116,6 +116,7 @@ t_stat sim_run_boot_prep (void);
|
||||||
double sim_gtime (void);
|
double sim_gtime (void);
|
||||||
uint32 sim_grtime (void);
|
uint32 sim_grtime (void);
|
||||||
int32 sim_qcount (void);
|
int32 sim_qcount (void);
|
||||||
|
int32 sim_swmask (int switch_ch);
|
||||||
t_stat attach_unit (UNIT *uptr, char *cptr);
|
t_stat attach_unit (UNIT *uptr, char *cptr);
|
||||||
t_stat detach_unit (UNIT *uptr);
|
t_stat detach_unit (UNIT *uptr);
|
||||||
t_stat assign_device (DEVICE *dptr, char *cptr);
|
t_stat assign_device (DEVICE *dptr, char *cptr);
|
||||||
|
|
|
@ -278,6 +278,10 @@ typedef uint32 t_addr;
|
||||||
#define SIM_SW_REG (1u << 28) /* register value */
|
#define SIM_SW_REG (1u << 28) /* register value */
|
||||||
#define SIM_SW_STOP (1u << 29) /* stop message */
|
#define SIM_SW_STOP (1u << 29) /* stop message */
|
||||||
|
|
||||||
|
/* Convert switch letter to bit mask */
|
||||||
|
|
||||||
|
#define SWMASK(x) sim_swmask ((int)x)
|
||||||
|
|
||||||
/* Simulator status codes
|
/* Simulator status codes
|
||||||
|
|
||||||
0 ok
|
0 ok
|
||||||
|
@ -358,10 +362,6 @@ typedef uint32 t_addr;
|
||||||
#define KBD_LIM_WAIT(x) (((x) > KBD_MAX_WAIT)? KBD_MAX_WAIT: (x))
|
#define KBD_LIM_WAIT(x) (((x) > KBD_MAX_WAIT)? KBD_MAX_WAIT: (x))
|
||||||
#define KBD_WAIT(w,s) ((w)? w: KBD_LIM_WAIT (s))
|
#define KBD_WAIT(w,s) ((w)? w: KBD_LIM_WAIT (s))
|
||||||
|
|
||||||
/* Convert switch letter to bit mask */
|
|
||||||
|
|
||||||
#define SWMASK(x) (1u << (((int) (x)) - ((int) 'A')))
|
|
||||||
|
|
||||||
/* String match - at least one character required */
|
/* String match - at least one character required */
|
||||||
|
|
||||||
#define MATCH_CMD(ptr,cmd) ((NULL == (ptr)) || (!*(ptr)) || strncmp ((ptr), (cmd), strlen (ptr)))
|
#define MATCH_CMD(ptr,cmd) ((NULL == (ptr)) || (!*(ptr)) || strncmp ((ptr), (cmd), strlen (ptr)))
|
||||||
|
|
Loading…
Add table
Reference in a new issue