added 'SYSINFO' BASIC command

This commit is contained in:
FeralChild64 committed 2020-08-23 13:51:14 +02:00
1 parent 9a154b3710
commit 19dfa0f4a1
7 files changed
+210 -42

No files matched your search

+4
View File
@@ -84,6 +84,10 @@ Displays BASIC memory usage information:
* `STRS` - bytes occupied by strings, also the ones belonging to arrays
* `FREE` - unused space
### `SYSINFO` (Mega65)
Displays various system information.
### `CLEAR` (all)
Clears the screen content.
+1
View File
@@ -27,6 +27,7 @@
// MISC registers
.label MISC_BOARDID = $D629 // board identification byte
.label MISC_EMU = $D710 // to enable badlines and slow interrupts
#endif
@@ -22,7 +22,8 @@
// varstr_garbage_collect, // cmd_dispose
cmd_cold,
cmd_mem
cmd_mem,
cmd_sysinfo
)
+105
View File
@@ -0,0 +1,105 @@
// #LAYOUT# M65 * #TAKE
// #LAYOUT# * * #IGNORE
#if SEGMENT_BASIC_0
cmd_sysinfo:
jsr map_BASIC_1
jsr_ind VB1__cmd_sysinfo
jmp map_NORMAL
#else
cmd_sysinfo:
jsr print_return
// Print mode and build information
ldx #IDX__STR_SI_HEADER
jsr print_packed_misc_str
jsr M65_ISMODE65
bcc !+
ldx #IDX__STR_SI_MODE64
skip_2_bytes_trash_nvz
!:
ldx #IDX__STR_SI_MODE65
jsr print_packed_misc_str
ldx #IDX__STR_SI_HDR_REL
jsr print_packed_misc_str
lda #<rom_revision_basic_string
ldy #>rom_revision_basic_string
jsr STROUT
// Print board ID
ldx #IDX__STR_SI_HDR_HW
jsr print_packed_misc_str
lda MISC_BOARDID
ldy #(__cmd_sysinfo_hw_ids_end - cmd_sysinfo_hw_ids - 1)
!:
cmp cmd_sysinfo_hw_ids, y
beq !+
dey
bpl !-
ldy #(__cmd_sysinfo_hw_ids_end - cmd_sysinfo_hw_ids)
!:
ldx cmd_sysinfo_hw_str, y
jsr print_packed_misc_str
// Print video system information
ldx #IDX__STR_SI_HDR_VID
jsr print_packed_misc_str
ldx #IDX__STR_NTSC
lda TVSFLG
beq !+
ldx #IDX__STR_PAL
!:
jsr print_packed_misc_str
// Print build featires information
ldx #IDX__STR_SI_FEATURES
jmp print_packed_misc_str
cmd_sysinfo_hw_ids:
.byte $01
.byte $02
.byte $03
.byte $21
.byte $40
.byte $41
.byte $42
.byte $FD
.byte $FE
__cmd_sysinfo_hw_ids_end:
cmd_sysinfo_hw_str:
.byte IDX__STR_SI_HW_01
.byte IDX__STR_SI_HW_02
.byte IDX__STR_SI_HW_03
.byte IDX__STR_SI_HW_21
.byte IDX__STR_SI_HW_40
.byte IDX__STR_SI_HW_41
.byte IDX__STR_SI_HW_42
.byte IDX__STR_SI_HW_FD
.byte IDX__STR_SI_HW_FE
.byte IDX__STR_SI_HW_XX
#endif
@@ -22,8 +22,9 @@
.label VB1__do_clr = $4000 + 2 * 7
.label VB1__do_restore = $4000 + 2 * 8
.label VB1__cmd_mem_cont = $4000 + 2 * 9
.label VB1__prepare_direct_execution = $4000 + 2 * 10
.label VB1__helper_ask_if_sure = $4000 + 2 * 11
.label VB1__cmd_sysinfo = $4000 + 2 * 10
.label VB1__prepare_direct_execution = $4000 + 2 * 11
.label VB1__helper_ask_if_sure = $4000 + 2 * 12
#if CONFIG_DOS_WEDGE
.label VB1__wedge_dos = $4000 + 2 * 12
@@ -43,6 +44,7 @@
.word do_clr
.word do_restore
.word cmd_mem_cont
.word cmd_sysinfo
.word prepare_direct_execution
.word helper_ask_if_sure
+2
View File
@@ -6,6 +6,8 @@
// Routine is too long to fit in the original location
// XXX banner-related code needs cleanup, move MEGA65 stuff to a separate file
#if ROM_LAYOUT_M65
+92 -39
View File
@@ -202,6 +202,7 @@ const StringEntryList GLOBAL_Keywords_02 = { ListType::KEYWORDS, "keywords_02",
{ false, true, false, false, "K02_07", "COLD", }, // Not present in CBM BASIC dialects, but common to some extensions (*)
{ false, true, false, false, "K02_08", "MEM", }, // Not present in CBM BASIC dialects, Open ROMs specific
{ false, true, false, false, "K02_09", "SYSINFO", }, // Not present in CBM BASIC dialects, Open ROMs specific
// (*) see https://sourceforge.net/p/vice-emu/code/HEAD/tree/trunk/vice/src/petcat.c
} };
@@ -283,22 +284,41 @@ const StringEntryList GLOBAL_Errors = { ListType::STRINGS_BASIC, "errors",
const StringEntryList GLOBAL_MiscStrings = { ListType::STRINGS_BASIC, "misc",
{
// STD M65 U64 X16 --- misc strings as on CBM machines
{ true, true, true, true, "STR_RET_QM", "\r?" },
{ true, true, true, true, "STR_BYTES", " BASIC BYTES FREE" }, // https://github.com/stefanhaustein/expressionparser
{ true, true, true, true, "STR_READY", "\rREADY.\r" }, // https://www.ibm.com/support/knowledgecenter/zosbasics/com.ibm.zos.zconcepts/zconc_whatistsonative.htm https://github.com/stefanhaustein/expressionparser
{ true, true, true, true, "STR_ERROR", " ERROR" }, // simply the word error that is attached to the other parts of messages https://fjkraan.home.xs4all.nl/comp/apple2faq/app2asoftfaq.html
{ true, true, true, true, "STR_IN", " IN " },
{ false, true, false, false, "STR_IF_SURE", "\rARE YOU SURE? " }, // https://docs.microsoft.com/en-us/windows/win32/uxguide/mess-confirm
{ true, true, true, true, "STR_RET_QM", "\r?" },
{ true, true, true, true, "STR_BYTES", " BASIC BYTES FREE" }, // https://github.com/stefanhaustein/expressionparser
{ true, true, true, true, "STR_READY", "\rREADY.\r" }, // https://www.ibm.com/support/knowledgecenter/zosbasics/com.ibm.zos.zconcepts/zconc_whatistsonative.htm https://github.com/stefanhaustein/expressionparser
{ true, true, true, true, "STR_ERROR", " ERROR" }, // simply the word error that is attached to the other parts of messages https://fjkraan.home.xs4all.nl/comp/apple2faq/app2asoftfaq.html
{ true, true, true, true, "STR_IN", " IN " },
{ false, true, false, false, "STR_IF_SURE", "\rARE YOU SURE? " }, // https://docs.microsoft.com/en-us/windows/win32/uxguide/mess-confirm
// STD M65 U64 X16 --- misc strings specific to Open ROMs, not present in CBM ROMs
{ true, true, true, true, "STR_BRK_AT", "\rBRK AT $" },
{ false, true, false, false, "STR_MEM_HDR", "\r\x12 AREA START SIZE \r" },
{ false, true, false, false, "STR_MEM_1", " $" },
{ false, true, false, false, "STR_MEM_2", " " },
{ false, true, false, false, "STR_MEM_TEXT", "\r TEXT" },
{ false, true, false, false, "STR_MEM_VARS", "\r VARS" },
{ false, true, false, false, "STR_MEM_ARRS", "\r ARRS" },
{ false, true, false, false, "STR_MEM_STRS", "\r STRS" },
{ false, true, false, false, "STR_MEM_FREE", "\r\r FREE" },
{ true, true, true, true, "STR_BRK_AT", "\rBRK AT $" },
{ false, true, false, false, "STR_MEM_HDR", "\r\x12 AREA START SIZE \r" },
{ false, true, false, false, "STR_MEM_1", " $" },
{ false, true, false, false, "STR_MEM_2", " " },
{ false, true, false, false, "STR_MEM_TEXT", "\r TEXT" },
{ false, true, false, false, "STR_MEM_VARS", "\r VARS" },
{ false, true, false, false, "STR_MEM_ARRS", "\r ARRS" },
{ false, true, false, false, "STR_MEM_STRS", "\r STRS" },
{ false, true, false, false, "STR_MEM_FREE", "\r\r FREE" },
{ false, true, false, false, "STR_SI_HEADER", "OPEN ROMS, " },
{ false, true, false, false, "STR_SI_MODE64", "LEGACY MODE" },
{ false, true, false, false, "STR_SI_MODE65", "NATIVE MODE" },
{ false, true, false, false, "STR_SI_HDR_REL", "\rRELEASE " },
{ false, true, false, false, "STR_SI_HDR_HW", "\r\rBOARD : " },
{ false, true, false, false, "STR_SI_HW_01", "MEGA65 R1" },
{ false, true, false, false, "STR_SI_HW_02", "MEGA65 R2" },
{ false, true, false, false, "STR_SI_HW_03", "MEGA65 R3" },
{ false, true, false, false, "STR_SI_HW_21", "MEGAPHONE R1" },
{ false, true, false, false, "STR_SI_HW_40", "NEXYS4 PSRAM" },
{ false, true, false, false, "STR_SI_HW_41", "NEXYS4 DDR" },
{ false, true, false, false, "STR_SI_HW_42", "NEXYS4 DDR WIDGET" },
{ false, true, false, false, "STR_SI_HW_FD", "WUKONG A100T" },
{ false, true, false, false, "STR_SI_HW_FE", "SIMULATION VHDL" },
{ false, true, false, false, "STR_SI_HW_XX", "UNKNOWN" },
{ false, true, false, false, "STR_SI_HDR_VID", "\rVIDEO : " },
// Note: depending on configuration, additional strings will be added here
} };
@@ -1108,68 +1128,91 @@ void DataSet::generateConfigDepStrings()
// Generate string to show the build features
std::string featureStr;
std::string featureStrM65 = "\r";
// Tape support features
if (GLOBAL_ConfigOptions["CONFIG_TAPE_NORMAL"] && GLOBAL_ConfigOptions["CONFIG_TAPE_TURBO"])
{
featureStr = "TAPE LOAD NORMAL TURBO\r";
featureStr += "TAPE LOAD NORMAL TURBO\r";
featureStrM65 += "TAPE : LOAD NORMAL TURBO\r";
}
else if (GLOBAL_ConfigOptions["CONFIG_TAPE_NORMAL"])
{
featureStr = "TAPE LOAD NORMAL\r";
featureStr += "TAPE LOAD NORMAL\r";
featureStrM65 += "TAPE : LOAD NORMAL\r";
}
else if (GLOBAL_ConfigOptions["CONFIG_TAPE_TURBO"])
{
featureStr = "TAPE LOAD TURBO\r";
featureStr += "TAPE LOAD TURBO\r";
featureStrM65 += "TAPE : LOAD TURBO\r";
}
// IEC support features
if (GLOBAL_ConfigOptions["CONFIG_IEC"])
{
featureStr += "IEC";
featureStr += "IEC";
featureStrM65 += "IEC :";
bool extendedIEC = false;
if (GLOBAL_ConfigOptions["CONFIG_IEC_BURST_CIA1"])
{
featureStr += " BURST1";
extendedIEC = true;
featureStr += " BURST1";
extendedIEC = true;
}
if (GLOBAL_ConfigOptions["CONFIG_IEC_BURST_CIA2"])
{
featureStr += " BURST2";
extendedIEC = true;
featureStr += " BURST2";
extendedIEC = true;
}
if (GLOBAL_ConfigOptions["CONFIG_IEC_BURST_MEGA65"])
{
featureStr += " BURST";
extendedIEC = true;
featureStr += " BURST";
featureStrM65 += " BURST";
extendedIEC = true;
}
if (GLOBAL_ConfigOptions["CONFIG_IEC_DOLPHINDOS"])
{
featureStr += " DOLPHIN";
extendedIEC = true;
featureStr += " DOLPHIN";
featureStrM65 += " DOLPHIN";
extendedIEC = true;
}
if (GLOBAL_ConfigOptions["CONFIG_IEC_JIFFYDOS"])
{
featureStr += " JIFFY";
extendedIEC = true;
featureStr += " JIFFY";
featureStrM65 += " JIFFY";
extendedIEC = true;
}
if (!extendedIEC) featureStr += " NORMAL";
featureStr += "\r";
if (!extendedIEC)
{
featureStr += " NORMAL ONLY";
featureStrM65 += " NORMAL ONLY";
}
featureStr += "\r";
featureStrM65 += "\r";
}
else
{
featureStrM65 += "IEC : NO\r";
}
// RS-232 support features
if (GLOBAL_ConfigOptions["CONFIG_RS232_UP2400"]) featureStr += "UP2400\r";
if (GLOBAL_ConfigOptions["CONFIG_RS232_UP9600"]) featureStr += "UP9600\r";
featureStrM65 += "RS-232 : NO\r";
// CBDOS features
featureStrM65 += "CBDOS : NO\r";
// Keyboard support features
if (GLOBAL_ConfigOptions["CONFIG_KEYBOARD_C128"]) featureStr += "KBD 128\r";
@@ -1183,18 +1226,28 @@ void DataSet::generateConfigDepStrings()
// List found
if (GLOBAL_ConfigOptions["CONFIG_SHOW_FEATURES"])
if (GLOBAL_ConfigOptions["CONFIG_SHOW_FEATURES"] || GLOBAL_ConfigOptions["CONFIG_BRAND_MEGA_65"])
{
StringEntry newEntry1 = { true, true, true, true, "STR_PAL", "PAL\r" };
StringEntry newEntry2 = { true, true, true, true, "STR_NTSC", "NTSC\r" };
StringEntry newEntry3 = { true, true, true, true, "STR_FEATURES", featureStr };
stringEntryList.list.push_back(newEntry1);
stringEntryList.list.push_back(newEntry2);
stringEntryList.list.push_back(newEntry3);
break;
}
if (GLOBAL_ConfigOptions["CONFIG_SHOW_FEATURES"])
{
StringEntry newEntry = { true, true, true, true, "STR_FEATURES", featureStr };
stringEntryList.list.push_back(newEntry);
}
if (GLOBAL_ConfigOptions["CONFIG_BRAND_MEGA_65"])
{
StringEntry newEntry = { false, true, false, false, "STR_SI_FEATURES", featureStrM65 };
stringEntryList.list.push_back(newEntry);
}
break;
}
}