diff --git a/README.md b/README.md index 86dc2978..fd201623 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,9 @@ # open-roms -A project to create unencumbered open-source ROMs for use on selected retro computers. For the current status check [this document](STATUS.md) +A project to create unencumbered open-source ROMs for use on selected retro computers. Besides this manifest, the following documents are available: + +* [implementation status](STATUS.md) of various APIs and functionalities +* [configuration options](CONFIG.md) for those willing to compile their own, customized build # Problem Statement and Motivation diff --git a/STATUS.md b/STATUS.md index 41e83c98..c2864db9 100644 --- a/STATUS.md +++ b/STATUS.md @@ -1,13 +1,13 @@ # New features -Here are the features of the Open ROMs not found in the original ROMs from the 80s (many of them are [configurable](CONFIG.md)): +Here are the features of the Open ROMs not found in the original ROMs from the 80s (many of them are [configurable](CONFIG.md) during compilation): * improved keyboard scanning, resistant to ghosting and joystick interference (one variant even supports multi-keyy rollover), supports additional C128 keys * joystick can be used to move text cursor * pre-defined function keys * uses RAM under ROM and I/O: 61438 bytes free -* cold/warm start silences multiple SID chips - all $D4xx and $D5xx addresses +* cold/warm start silences multiple SID chips - all $D4xx and $D5xx addresses, configured addresses * wark start due to BRK prints out the instruction address * extended `LOAD` command * start/end addresses are displayed, in the Final cartridge style @@ -24,7 +24,7 @@ NOTE: extra features and their syntax can change in the future! The following ROM features are currently missing and are not planned due to space considerations: * full tape support - VERIFY, SAVE, sequential files; tape is considered a legacy medium, so it's support is going to be limited -* mock 6551 emulation - this inly slows down the RS-232 support for original ROMs, probably noone needs it +* mock 6551 emulation - this only complicates the RS-232 support for original ROMs, probably noone needs it The following ROM features are currently missing: @@ -33,7 +33,6 @@ The following ROM features are currently missing: * BASIC expression parsing * floating point routines * tape (normal mode) support -* IEC support for SAVE * RS-232 support * NMI handling is incomplete @@ -54,8 +53,6 @@ For the current status of the low memory location implementation andd usage chec ### Official BASIC routines -Note: vectors at `$0300` are not supported yet - for now only the locations below can be used! -
| Entry | Unofficial | Name | Status | Remarks | @@ -140,7 +137,7 @@ NOTE: Even the 'DONE' routines won't support features described as missing in on | `$FFD5` | `$F49E` | `LOAD` | DONE | | | `($0330)` | `$F4A5` | `LOAD` | DONE | | | `$FFD8` | `$F5DD` | `SAVE` | DONE | | -| `($0332)` | `$F5ED` | `SAVE` | PARTIAL | not fully tested yet | +| `($0332)` | `$F5ED` | `SAVE` | DONE | | | `$FFDB` | | `SETTIM` | DONE | | | `$FFDE` | | `RDTIM` | DONE | | | `$FFE1` | `$F6ED` | `STOP` | DONE | | @@ -169,7 +166,7 @@ Not all of them - only these we want to have implemented. | `$E544` | clear screen | DONE | | | `$E50C` | set cursor position | PARTIAL | | | `$E566` | home cursor | NOT DONE | | -| `$E5A0` | setup VIC II & IO | DONE | | +| `$E5A0` | setup VIC II & I/O | DONE | | | `$E6B6` | advance cursor | NOT DONE | | | `$E701` | previous line | NOT DONE | | | `$E716` | screen CHROUT | NOT DONE | | diff --git a/bin/basic_generic.rom b/bin/basic_generic.rom index c31a9ff7..2760d057 100644 Binary files a/bin/basic_generic.rom and b/bin/basic_generic.rom differ diff --git a/bin/basic_mega65.rom b/bin/basic_mega65.rom index b3d156e9..7ed322bc 100644 Binary files a/bin/basic_mega65.rom and b/bin/basic_mega65.rom differ diff --git a/bin/basic_testing.rom b/bin/basic_testing.rom index af98c365..89d34c30 100644 Binary files a/bin/basic_testing.rom and b/bin/basic_testing.rom differ diff --git a/bin/basic_ultimate64.rom b/bin/basic_ultimate64.rom index c8caf81c..05bf4fc7 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 8be83105..74f50648 100644 Binary files a/bin/kernal_generic.rom and b/bin/kernal_generic.rom differ diff --git a/bin/kernal_mega65.rom b/bin/kernal_mega65.rom index 10db46b3..1808816e 100644 Binary files a/bin/kernal_mega65.rom and b/bin/kernal_mega65.rom differ diff --git a/bin/kernal_testing.rom b/bin/kernal_testing.rom index 118d094c..2c45f902 100644 Binary files a/bin/kernal_testing.rom and b/bin/kernal_testing.rom differ diff --git a/bin/kernal_ultimate64.rom b/bin/kernal_ultimate64.rom index 3ee5af04..a2b05e35 100644 Binary files a/bin/kernal_ultimate64.rom and b/bin/kernal_ultimate64.rom differ diff --git a/c64/kernal/iec/save_iec.s b/c64/kernal/iec/save_iec.s index f90c5f86..35f3b74f 100644 --- a/c64/kernal/iec/save_iec.s +++ b/c64/kernal/iec/save_iec.s @@ -4,20 +4,12 @@ // -// XXX this is untested! -// also test STAL/EAL - Open ROMs vs hybrid vs original - - - #if CONFIG_IEC save_iec_dev_not_found: jmp lvs_device_not_found_error -save_iec_error: - jmp lvs_device_not_found_error // XXX find a better error - save_iec: @@ -40,7 +32,7 @@ save_iec: // Send file name jsr iec_send_file_name - bcs save_iec_error + bcs save_iec_dev_not_found // Call device to LISTEN once again lda FA @@ -50,9 +42,9 @@ save_iec: lda #$61 // open channel / data (p3) , required according to p13 sta TBTCNT jsr iec_tx_command - bcs save_iec_error + bcs save_iec_dev_not_found - // Save start address XXX optimize this + // Save start address lda STAL+0 sta TBTCNT clc @@ -63,31 +55,26 @@ save_iec: clc jsr iec_tx_byte + jsr lvs_setup_MEMUSS ldy #$00 iec_save_loop: // Retrieve byte to send #if CONFIG_MEMORY_MODEL_60K - ldx #