diff --git a/BESM6/besm6_cpu.c b/BESM6/besm6_cpu.c index 637586c5..9ae36106 100644 --- a/BESM6/besm6_cpu.c +++ b/BESM6/besm6_cpu.c @@ -148,7 +148,7 @@ MTAB cpu_mod[] = { { MTAB_XTD|MTAB_VDV, 0, "IDLE", "IDLE", &sim_set_idle, &sim_show_idle, NULL, "Enables idle detection mode" }, { MTAB_XTD|MTAB_VDV, 0, NULL, "NOIDLE", &sim_clr_idle, NULL, NULL, "Disables idle detection" }, { MTAB_XTD|MTAB_VDV, 0, NULL, "REQ", &cpu_req, NULL, NULL, "Sends a request interrupt" }, - { MTAB_XTD|MTAB_VDV, 0, "PANEL", "PANEL", &besm6_init_panel, NULL, NULL, "Displays graphical panel" }, + { MTAB_XTD|MTAB_VDV, 0, "PANEL", "PANEL", &besm6_init_panel, &besm6_show_panel, NULL, "Displays graphical panel" }, { MTAB_XTD|MTAB_VDV, 0, NULL, "NOPANEL", &besm6_close_panel, NULL, NULL, "Closes graphical panel" }, { MTAB_XTD|MTAB_VDV|MTAB_VALO, 0, "PULT", "PULT", &cpu_set_pult, &cpu_show_pult, NULL, "Selects a hardwired program or switch reg." }, { 0 } @@ -364,7 +364,8 @@ t_stat cpu_reset (DEVICE *dptr) SPSW_INTR_DISABLE; GRP = MGRP = 0; - PC = 1; /* "reset cpu; go" should start from 1 */ + // Disabled due to a conflict with loading + // PC = 1; /* "reset cpu; go" should start from 1 */ sim_brk_types = SWMASK ('E') | SWMASK('R') | SWMASK('W'); sim_brk_dflt = SWMASK ('E'); @@ -404,7 +405,7 @@ t_stat cpu_set_pult (UNIT *u, int32 val, char *cptr, void *desc) t_stat cpu_show_pult (FILE *st, struct sim_unit *up, int32 v, void *dp) { - sim_printf("Pult packet switch position is %d\n", pult_packet_switch); + fprintf(st, "Pult packet switch position is %d", pult_packet_switch); return SCPE_OK; } diff --git a/BESM6/besm6_defs.h b/BESM6/besm6_defs.h index ed12ef70..7695c5f0 100644 --- a/BESM6/besm6_defs.h +++ b/BESM6/besm6_defs.h @@ -360,7 +360,8 @@ t_stat fprint_sym (FILE *of, t_addr addr, t_value *val, void besm6_draw_panel (int force); t_stat besm6_init_panel (UNIT *u, int32 val, char *cptr, void *desc); t_stat besm6_close_panel (UNIT *u, int32 val, char *cptr, void *desc); - +t_stat besm6_show_panel (FILE *st, struct sim_unit *up, int32 v, void *dp); + /* * Арифметика. */ diff --git a/BESM6/besm6_panel.c b/BESM6/besm6_panel.c index d4ac0d9b..af03dae1 100644 --- a/BESM6/besm6_panel.c +++ b/BESM6/besm6_panel.c @@ -29,6 +29,7 @@ * authorization from Leonid Broukhis and Serge Vakulenko. */ +#include "besm6_defs.h" #if defined (HAVE_LIBSDL) #if !defined (FONTFILE) #include "besm6_panel_font.h" @@ -39,8 +40,6 @@ #endif /* defined (HAVE_LIBSDL) */ #ifdef HAVE_LIBSDL - -#include "besm6_defs.h" #include /* @@ -389,6 +388,15 @@ t_stat besm6_close_panel (UNIT *u, int32 val, char *cptr, void *desc) return SCPE_OK; } +t_stat besm6_show_panel (FILE *st, struct sim_unit *up, int32 v, void *dp) +{ + if (screen) + fprintf(st, "Panel displayed"); + else + fprintf(st, "Panel closed"); + return SCPE_OK; +} + #if SDL_MAJOR_VERSION == 2 static SDL_Window *sdlWindow; @@ -468,6 +476,7 @@ t_stat besm6_init_panel (UNIT *u, int32 val, char *cptr, void *desc) SDL_RenderClear(sdlRenderer); SDL_RenderCopy(sdlRenderer, sdlTexture, NULL, NULL); SDL_RenderPresent (sdlRenderer); + return SCPE_OK; } /* @@ -560,6 +569,7 @@ t_stat besm6_init_panel (UNIT *u, int32 val, char *cptr, void *desc) /* Tell SDL to update the whole screen */ SDL_UpdateRect (screen, 0, 0, WIDTH, HEIGHT); + return SCPE_OK; } /* @@ -597,6 +607,20 @@ void besm6_draw_panel (int force) #endif /* SDL_MAJOR_VERSION */ #else /* HAVE_LIBSDL */ +t_stat besm6_init_panel (UNIT *u, int32 val, char *cptr, void *desc) +{ + return sim_messagef(SCPE_OPENERR, "Need SDL and SDLttf libraries"); +} + +t_stat besm6_close_panel (UNIT *u, int32 val, char *cptr, void *desc) +{ + return SCPE_NOTATT; +} + +t_stat besm6_show_panel (FILE *st, struct sim_unit *up, int32 v, void *dp) +{ +} + void besm6_draw_panel (int force) { } diff --git a/BESM6/besm6_tty.c b/BESM6/besm6_tty.c index 7270b351..0c869027 100644 --- a/BESM6/besm6_tty.c +++ b/BESM6/besm6_tty.c @@ -1228,7 +1228,7 @@ void consul_print (int dev_num, uint32 cmd) besm6_debug(">>> CONSUL%o: Native charset not implemented", line_num); break; } - // PRP |= CONS_CAN_PRINT[dev_num]; + PRP |= CONS_CAN_PRINT[dev_num]; vt_idle = 0; }