Fix Netware key card registers

This commit is contained in:
cartifanwlr
2025-07-12 22:31:27 +03:00
parent 7663f37859
commit 615e22d356

View File

@@ -37,24 +37,29 @@ novell_cardkey_read(uint16_t port, void *priv)
novell_cardkey_t* cardkey = (novell_cardkey_t*)priv;
uint8_t val = 0x00;
switch (port) {
/* Byte 5 high nibble + byte 4 high nibble */
case 0x23A:
val = (((cardkey->serial_number_str[11] > 'A') ? ((cardkey->serial_number_str[11] - 'A') + 10) : (cardkey->serial_number_str[11] - '0')) << 4) | (((cardkey->serial_number_str[9] > 'A') ? ((cardkey->serial_number_str[9] - 'A') + 10) : (cardkey->serial_number_str[9] - '0')) << 4);
break;
case 0x23B:
val = (((cardkey->serial_number_str[10] > 'A') ? ((cardkey->serial_number_str[10] - 'A') + 10) : (cardkey->serial_number_str[10] - '0')) << 4) | (((cardkey->serial_number_str[8] > 'A') ? ((cardkey->serial_number_str[8] - 'A') + 10) : (cardkey->serial_number_str[8] - '0')) << 4);
break;
/* Byte 5 low nibble + byte 4 low nibble */
case 0x23B:
val = (((cardkey->serial_number_str[11] > 'A') ? ((cardkey->serial_number_str[11] - 'A') + 10) : (cardkey->serial_number_str[11] - '0')) << 4) | (((cardkey->serial_number_str[9] > 'A') ? ((cardkey->serial_number_str[9] - 'A') + 10) : (cardkey->serial_number_str[9] - '0')) << 4);
break;
/* Byte 2 low nibble + byte 1 low nibble */
case 0x23C:
val = ((cardkey->serial_number_str[4] - '0') << 4) | ((cardkey->serial_number_str[2] - '0'));
val = ((cardkey->serial_number_str[5] - '0') << 4) | ((cardkey->serial_number_str[3] - '0'));
break;
/* Byte 0 high nibble + byte 3 low nibble*/
case 0x23D:
val = ((cardkey->serial_number_str[1] - '0') << 4) | ((cardkey->serial_number_str[6] - '0'));
break;
case 0x23E:
val = ((cardkey->serial_number_str[0] - '0') << 4) | ((cardkey->serial_number_str[7] - '0'));
break;
/* Byte 0 low nibble + byte 3 high nibble */
case 0x23E:
val = ((cardkey->serial_number_str[1] - '0') << 4) | ((cardkey->serial_number_str[6] - '0'));
break;
/* Byte 1 high nibble + byte 2 high nibble*/
case 0x23F:
val = ((cardkey->serial_number_str[3] - '0') << 4) | ((cardkey->serial_number_str[5] - '0'));
val = ((cardkey->serial_number_str[2] - '0') << 4) | ((cardkey->serial_number_str[4] - '0'));
break;
}
return val ^ 0xFF;
@@ -110,7 +115,7 @@ static const device_config_t keycard_config[] = {
const device_t novell_keycard_device = {
.name = "Novell NetWare 2.x Key Card",
.internal_name = "mssystems",
.internal_name = "novellkeycard",
.flags = DEVICE_ISA,
.local = 0,
.init = novell_cardkey_init,