diff --git a/CONFIG.md b/CONFIG.md index b33a17ed..bd8182f2 100644 --- a/CONFIG.md +++ b/CONFIG.md @@ -105,12 +105,14 @@ Memory model the original machine uses - memory available for BASIC ends at `$9F ### `CONFIG_MEMORY_MODEL_46K` and `CONFIG_MEMORY_MODEL_50K` -Planned for the future - not available yet. +These models additionaly use RAM under BASIC, and the 50K additionally takes over `$C000`-`$CFFF` range. They should still be highly compatible (no additional RAM for helper routines is needed), and the performance penalty should be much lower than 60K model. ### `CONFIG_MEMORY_MODEL_60K` Uses RAM under BASIC, I/O and KERNAL, takes over `$C000`-`$CFFF` area requires special helper routines installed in `$2A7`-`$2FF` area (normally unused and free for the user). Gives the most free memory for BASIC programs, but it's the slowest (for example, forces disabling optimized LOAD loop for JiffyDOS) and the least compatible model. +It is currently not compatible with Mega65 extended ROMs. + Comparing to standard memory model, it needs about 180 bytes in BASIC segment and 80 bytes in KERNAL segment - at the moment of doing the test, these values are expected to change often. ## IEC devices diff --git a/STATUS.md b/STATUS.md index 8f757777..897686d2 100644 --- a/STATUS.md +++ b/STATUS.md @@ -22,7 +22,7 @@ Here are the features of the Open ROMs not found in the original ROMs from the 8 * command with just the file name tries to use the last device if it's number seems sane; otherwise uses 8 * command without parameters tries to load first file from drive chosen as above -* uses RAM under ROM and I/O: 61438 bytes free +* uses RAM under ROM and I/O: 51199 bytes free (up to `$CFFF`) by default, but 61438 is also possible * cold/warm start silences multiple SID chips * warm start due to BRK prints out the instruction address @@ -41,8 +41,8 @@ The following ROM features are currently missing: * most BASIC commands * BASIC variables -* BASIC expression parsing -* floating point routines +* BASIC expression handling +* most floating point routines * RS-232 support * NMI handling is incomplete diff --git a/bin/basic_generic.rom b/bin/basic_generic.rom index 5d1d0d42..1451d210 100644 Binary files a/bin/basic_generic.rom and b/bin/basic_generic.rom differ diff --git a/bin/basic_ultimate64.rom b/bin/basic_ultimate64.rom index eaac04ce..6bd95ad4 100644 Binary files a/bin/basic_ultimate64.rom and b/bin/basic_ultimate64.rom differ diff --git a/bin/kernal_generic.rom b/bin/kernal_generic.rom index 9b1b8b9f..523ca3dc 100644 Binary files a/bin/kernal_generic.rom and b/bin/kernal_generic.rom differ diff --git a/bin/kernal_ultimate64.rom b/bin/kernal_ultimate64.rom index 99bcc4f2..76457332 100644 Binary files a/bin/kernal_ultimate64.rom and b/bin/kernal_ultimate64.rom differ diff --git a/bin/mega65.rom b/bin/mega65.rom index 7590e052..851cfa15 100644 Binary files a/bin/mega65.rom and b/bin/mega65.rom differ diff --git a/bin/mega65_pxlfont.rom b/bin/mega65_pxlfont.rom index e19eca4f..8dd0ecf4 100644 Binary files a/bin/mega65_pxlfont.rom and b/bin/mega65_pxlfont.rom differ diff --git a/c64/,,config_custom.s b/c64/,,config_custom.s index a6ab5010..54c8e7ae 100644 --- a/c64/,,config_custom.s +++ b/c64/,,config_custom.s @@ -39,9 +39,9 @@ // Memory model -#define CONFIG_MEMORY_MODEL_38K -// #define CONFIG_MEMORY_MODEL_46K // please keep disabled for now -// #define CONFIG_MEMORY_MODEL_50K // please keep disabled for now +// #define CONFIG_MEMORY_MODEL_38K +// #define CONFIG_MEMORY_MODEL_46K +#define CONFIG_MEMORY_MODEL_50K // #define CONFIG_MEMORY_MODEL_60K diff --git a/c64/,,config_cx16.s b/c64/,,config_cx16.s index b1ce579a..158500df 100644 --- a/c64/,,config_cx16.s +++ b/c64/,,config_cx16.s @@ -39,6 +39,8 @@ // Memory model #define CONFIG_MEMORY_MODEL_38K +// #define CONFIG_MEMORY_MODEL_46K +// #define CONFIG_MEMORY_MODEL_50K // #define CONFIG_MEMORY_MODEL_60K diff --git a/c64/,,config_generic.s b/c64/,,config_generic.s index aea04a58..209074e8 100644 --- a/c64/,,config_generic.s +++ b/c64/,,config_generic.s @@ -36,7 +36,9 @@ // Memory model -#define CONFIG_MEMORY_MODEL_38K +// #define CONFIG_MEMORY_MODEL_38K +// #define CONFIG_MEMORY_MODEL_46K +#define CONFIG_MEMORY_MODEL_50K // #define CONFIG_MEMORY_MODEL_60K diff --git a/c64/,,config_mega65.s b/c64/,,config_mega65.s index dafe48d5..bf90bfaa 100644 --- a/c64/,,config_mega65.s +++ b/c64/,,config_mega65.s @@ -36,7 +36,9 @@ // Memory model -#define CONFIG_MEMORY_MODEL_38K +// #define CONFIG_MEMORY_MODEL_38K +// #define CONFIG_MEMORY_MODEL_46K +#define CONFIG_MEMORY_MODEL_50K // #define CONFIG_MEMORY_MODEL_60K diff --git a/c64/,,config_testing.s b/c64/,,config_testing.s index c0785af2..9ec523c1 100644 --- a/c64/,,config_testing.s +++ b/c64/,,config_testing.s @@ -37,6 +37,8 @@ // Memory model // #define CONFIG_MEMORY_MODEL_38K +// #define CONFIG_MEMORY_MODEL_46K +// #define CONFIG_MEMORY_MODEL_50K #define CONFIG_MEMORY_MODEL_60K diff --git a/c64/,,config_ultimate64.s b/c64/,,config_ultimate64.s index bb76f26a..0f73f68b 100644 --- a/c64/,,config_ultimate64.s +++ b/c64/,,config_ultimate64.s @@ -36,7 +36,9 @@ // Memory model -#define CONFIG_MEMORY_MODEL_38K +// #define CONFIG_MEMORY_MODEL_38K +// #define CONFIG_MEMORY_MODEL_46K +#define CONFIG_MEMORY_MODEL_50K // #define CONFIG_MEMORY_MODEL_60K diff --git a/c64/basic/e000.under_rom_routines_46k_50k.s b/c64/basic/e000.under_rom_routines_46k_50k.s index 771b5dc2..6aef9262 100644 --- a/c64/basic/e000.under_rom_routines_46k_50k.s +++ b/c64/basic/e000.under_rom_routines_46k_50k.s @@ -43,7 +43,7 @@ peek_under_roms_via_OLDTXT: // Retrieve value from under ROMs - lda (TXTPTR), y + lda (OLDTXT), y #if HAS_OPCODES_65C02 bra peek_under_roms_finalize