AltairZ80 SOL20: Minor corrections and formatting

While working on the AltairZ80 documentation, I found some problems
with the SOL20 registers and fixed some formatting issues.
Added static and "vdm1_" prefix to "charset" variable in s100_vdm1.c
This commit is contained in:
Patrick Linstruth 2023-03-21 18:52:59 -07:00
parent 7a8cfcac05
commit d70a0a16c5
2 changed files with 36 additions and 31 deletions

View file

@ -79,7 +79,7 @@ static enum vdm1_switch vdm1_ctrl = VDM1_MODE4;
static enum vdm1_switch vdm1_cursor = VDM1_NOBLINK; static enum vdm1_switch vdm1_cursor = VDM1_NOBLINK;
static enum vdm1_switch vdm1_display = VDM1_NORMAL; static enum vdm1_switch vdm1_display = VDM1_NORMAL;
const uint8 charset[128][VDM1_CHAR_YSIZE] = static const uint8 vdm1_charset[128][VDM1_CHAR_YSIZE] =
{{0x00,0x7f,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x7f,0x00,0x00,0x00}, {{0x00,0x7f,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x7f,0x00,0x00,0x00},
{0x00,0x7f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00}, {0x00,0x7f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00},
{0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x7f,0x00,0x00,0x00}, {0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x7f,0x00,0x00,0x00},
@ -537,7 +537,7 @@ static void vdm1_render_char(uint8 byte, uint8 x, uint8 y)
pixel = start + (VDM1_XSIZE * ry); pixel = start + (VDM1_XSIZE * ry);
c = charset[byte & 0x7f][ry]; c = vdm1_charset[byte & 0x7f][ry];
if (!vdm1_blink && byte & 0x80) { if (!vdm1_blink && byte & 0x80) {
c = ~(c & 0xff); c = ~(c & 0xff);

View file

@ -54,7 +54,7 @@
format allowed about 88K of storage per diskette. Later, the DSDD North format allowed about 88K of storage per diskette. Later, the DSDD North
Star controller increased capacity to 350K of storage per diskette. Star controller increased capacity to 350K of storage per diskette.
Both SSSD (MDSA) and DSDD (MDSAD) are supported by AltairZ80. Both SSSD (MDSA) and SSDD/DSDD (MDSAD) are supported by AltairZ80.
Disk images of North Star DOS and CP/M for both of the North Star Disk images of North Star DOS and CP/M for both of the North Star
controllers, along with utilities for disk image transfer, are available at controllers, along with utilities for disk image transfer, are available at
@ -63,7 +63,7 @@
Example: Example:
SET SOL20 ENA SET SOL20 ENA
SET SOL20 ROM=13C SET SOL20 VER=13C
SET MDSA ENA SET MDSA ENA
ATTACH MDSA0 CPM22b14-48K-SDC-SOL.NSI ATTACH MDSA0 CPM22b14-48K-SDC-SOL.NSI
BOOT SOL20 BOOT SOL20
@ -937,12 +937,12 @@ static uint8 *sol20_rom = sol20_rom_41; /* Default 4.1 ROM */
/* /*
** PORT ASSIGNMENTS ** PORT ASSIGNMENTS
*/ */
#define SOL20_SERST 0xf8 /* SERIAL STATUS PORT */ #define SOL20_SERST 0xf8 /* SERIAL STATUS PORT */
#define SOL20_SDATA 0xf9 /* SERIAL DATA */ #define SOL20_SDATA 0xf9 /* SERIAL DATA */
#define SOL20_STAPT 0xfa /* STATUS PORT GENERAL */ #define SOL20_STAPT 0xfa /* STATUS PORT GENERAL */
#define SOL20_TDATA 0xfb /* TAPE DATA */ #define SOL20_TDATA 0xfb /* TAPE DATA */
#define SOL20_KDATA 0xfc /* KEYBOARD DATA */ #define SOL20_KDATA 0xfc /* KEYBOARD DATA */
#define SOL20_PDATA 0xfd /* PARALLEL DATA */ #define SOL20_PDATA 0xfd /* PARALLEL DATA */
/* /*
** BIT ASSIGNMENT MASKS ** BIT ASSIGNMENT MASKS
*/ */
@ -1001,7 +1001,7 @@ static MTAB sol20_mod[] = {
&set_membase, &show_membase, NULL, "ROM address"}, &set_membase, &show_membase, NULL, "ROM address"},
{ MTAB_XTD|MTAB_VDV|MTAB_VALR, 0, "VER", "VER={13,13C,41}", { MTAB_XTD|MTAB_VDV|MTAB_VALR, 0, "VER", "VER={13,13C,41}",
&sol20_set_rom, &sol20_show_rom, NULL, "ROM version"}, &sol20_set_rom, &sol20_show_rom, NULL, "ROM version"},
{ MTAB_XTD|MTAB_VDV, 0, "PORT", "PORT", { MTAB_XTD|MTAB_VDV, 0, "PORT", "PORT",
NULL, sol20_show_ports, NULL, "I/O port address" }, NULL, sol20_show_ports, NULL, "I/O port address" },
{ 0 } { 0 }
}; };
@ -1078,6 +1078,8 @@ static SOL20_PORT_CTX sol20k_ctx = {
}; };
static REG sol20k_reg[] = { static REG sol20k_reg[] = {
{ HRDATAD (RDR, sol20k_ctx.rdr, 1, "Keyboard port RX data ready"), },
{ HRDATAD (RXD, sol20k_ctx.rxd, 8, "Keyboard port RX data register"), },
{ NULL } { NULL }
}; };
@ -1086,9 +1088,9 @@ static UNIT sol20k_unit[] = {
}; };
static MTAB sol20k_mod[] = { static MTAB sol20k_mod[] = {
{ MTAB_XTD|MTAB_VDV, 0, "PORT", "PORT", { MTAB_XTD|MTAB_VDV, 0, "PORT", "PORT",
NULL, sol20_show_ports, NULL, "Show serial I/O ports" }, NULL, sol20_show_ports, NULL, "Show serial I/O ports" },
{ MTAB_XTD|MTAB_VDV|MTAB_VALR, 0, "BAUD", "BAUD", { MTAB_XTD|MTAB_VDV|MTAB_VALR, 0, "BAUD", "BAUD",
&sol20_set_baud, &sol20_show_baud, NULL, "Set baud rate (default=9600)" }, &sol20_set_baud, &sol20_show_baud, NULL, "Set baud rate (default=9600)" },
{ 0 } { 0 }
}; };
@ -1151,12 +1153,11 @@ static SOL20_PORT_CTX sol20t_ctx = {
}; };
static REG sol20t_reg[] = { static REG sol20t_reg[] = {
{ HRDATAD (BAUD, sol20t_ctx.baud, 16, "Tape port baud register"), }, { HRDATAD (STATUS, sol20t_ctx.status, 8, "Tape port status register"), },
{ HRDATAD (STATUS, sol20t_ctx.baud, 8, "Tape port status register"), }, { HRDATAD (TBE, sol20t_ctx.tbe, 1, "Tape port TX buffer empty register"), },
{ HRDATAD (TXP, sol20t_ctx.tbe, 8, "Tape port TX buffer empty register"), }, { HRDATAD (TXD, sol20t_ctx.txd, 8, "Tape port TX data register"), },
{ HRDATAD (TXD, sol20t_ctx.txd, 8, "Tape port TX data register"), }, { HRDATAD (RDR, sol20t_ctx.rdr, 1, "Tape port RX data ready"), },
{ HRDATAD (RXD, sol20t_ctx.rdr, 8, "Tape port RX data ready"), }, { HRDATAD (RXD, sol20t_ctx.rxd, 8, "Tape port RX data register"), },
{ HRDATAD (RXD, sol20t_ctx.rxd, 8, "Tape port RX data register"), },
{ NULL } { NULL }
}; };
@ -1227,10 +1228,11 @@ static SOL20_PORT_CTX sol20s_ctx = {
}; };
static REG sol20s_reg[] = { static REG sol20s_reg[] = {
{ HRDATAD (BAUD, sol20s_ctx.baud, 16, "Modem port baud register"), }, { HRDATAD (BAUD, sol20s_ctx.baud, 16, "Serial port baud register"), },
{ HRDATAD (TXP, sol20s_ctx.tbe, 8, "Modem port TX buffer empty register"), }, { HRDATAD (TBE, sol20s_ctx.tbe, 1, "Serial port TX buffer empty register"), },
{ HRDATAD (TXD, sol20s_ctx.txd, 8, "Modem port TX data register"), }, { HRDATAD (TXD, sol20s_ctx.txd, 8, "Serial port TX data register"), },
{ HRDATAD (RXD, sol20s_ctx.rxd, 8, "Modem port RX register"), }, { HRDATAD (RDR, sol20s_ctx.rdr, 1, "Serial port RX data ready"), },
{ HRDATAD (RXD, sol20s_ctx.rxd, 8, "Serial port RX register"), },
{ NULL } { NULL }
}; };
@ -1239,9 +1241,9 @@ static UNIT sol20s_unit[] = {
}; };
static MTAB sol20s_mod[] = { static MTAB sol20s_mod[] = {
{ MTAB_XTD|MTAB_VDV, 0, "PORT", "PORT", { MTAB_XTD|MTAB_VDV, 0, "PORT", "PORT",
NULL, sol20_show_ports, NULL, "Show serial I/O ports" }, NULL, sol20_show_ports, NULL, "Show serial I/O ports" },
{ MTAB_XTD|MTAB_VDV|MTAB_VALR, 0, "BAUD", "BAUD", { MTAB_XTD|MTAB_VDV|MTAB_VALR, 0, "BAUD", "BAUD",
&sol20_set_baud, &sol20_show_baud, NULL, "Set baud rate (default=9600)" }, &sol20_set_baud, &sol20_show_baud, NULL, "Set baud rate (default=9600)" },
{ 0 } { 0 }
}; };
@ -1301,8 +1303,11 @@ static SOL20_PORT_CTX sol20p_ctx = {
}; };
static REG sol20p_reg[] = { static REG sol20p_reg[] = {
{ HRDATAD (TXP, sol20p_ctx.tbe, 8, "Printer port buffer empty register"), }, { HRDATAD (BAUD, sol20s_ctx.baud, 16, "Serial port baud register"), },
{ HRDATAD (TBE, sol20p_ctx.tbe, 1, "Printer port buffer empty register"), },
{ HRDATAD (TXD, sol20p_ctx.txd, 8, "Printer port data register"), }, { HRDATAD (TXD, sol20p_ctx.txd, 8, "Printer port data register"), },
{ HRDATAD (RDR, sol20k_ctx.rdr, 1, "Printer port RX data ready"), },
{ HRDATAD (RXD, sol20p_ctx.rxd, 8, "Printer port RX data register"), },
{ NULL } { NULL }
}; };
@ -1311,7 +1316,7 @@ static UNIT sol20p_unit[] = {
}; };
static MTAB sol20p_mod[] = { static MTAB sol20p_mod[] = {
{ MTAB_XTD|MTAB_VDV|MTAB_VALR, 0, "BAUD", "BAUD", { MTAB_XTD|MTAB_VDV|MTAB_VALR, 0, "BAUD", "BAUD",
&sol20_set_baud, &sol20_show_baud, NULL, "Set baud rate (default=9600)" }, &sol20_set_baud, &sol20_show_baud, NULL, "Set baud rate (default=9600)" },
{ 0 } { 0 }
}; };
@ -2262,11 +2267,11 @@ static t_stat sol20_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, const
fprintf(st, "F2: Eject tape\n"); fprintf(st, "F2: Eject tape\n");
fprintf(st, "F3: Erase tape\n"); fprintf(st, "F3: Erase tape\n");
fprintf(st, "F4: Tape speed\n"); fprintf(st, "F4: Tape speed\n");
fprintf(st, "F5: Load\n"); fprintf(st, "F5: LOAD\n");
fprintf(st, "F6: Mode Select\n"); fprintf(st, "F6: MODE SELECT\n");
fprintf(st, "F7: Clear\n"); fprintf(st, "F7: CLEAR\n");
fprintf(st, "F8: CAPS lock\n"); fprintf(st, "F8: CAPS lock\n");
fprintf(st, "F10: Reboot\n"); fprintf(st, "F10: Reboot System\n");
return SCPE_OK; return SCPE_OK;