diff --git a/STATUS.md b/STATUS.md index 3d0b8baa..8501894a 100644 --- a/STATUS.md +++ b/STATUS.md @@ -9,7 +9,7 @@ Here are the features of the Open ROMs not found in the original ROMs from the 8 * pre-defined function keys * JiffyDOS protocol support -* partial DolphinDOS protocol support (for now only LOAD is accelerated) +* partial DolphinDOS protocol support * DOS wedge (direct mode only) - `@`, `@`, `@$`, `@$`, `@` * turbo tape load support (as device 7, or using `←L`), up to 250 blocks (can store bytes under I/O) @@ -61,30 +61,30 @@ The following ROM features are currently missing: | VIC-II | PARTIAL | 80 chars in logical line support is very buggy | | VDC 80 col. | NOT DONE | | -## Tape storage (LOAD only!) +## Tape port (Tapuino, Datasette - LOAD only!) | Driver | Status | Remarks | | :-----------: | :------: | :------------------------------------------------: | -| normal | PARITAL | no error correction, no tape speed calibratrion | +| normal | PARTIAL | no error correction, no tape speed calibratrion | | turbo | PARTIAL | up to 250 blocks, no tape speed calibratrion yet | -## IEC bus (disk drives, printers, some hard drives) +## IEC bus (SD2IEC, petSD+, µIEC, Pi1541, Ultimate II, most disk drives and printers, some hard drives) | Driver | Status | Remarks | | :-----------: | :------: | :------------------------------------------------: | | standard | DONE | | | JiffyDOS | DONE | | -| DolphinDOS | PARTIAL | for now only LOAD is accelerated | +| DolphinDOS | DONE | | | CIA burst mod | NOT DONE | | | Mega65 burst | NOT DONE | pure software implementation should be feasible | -## IEEE-488 bus (scientific equipment, PET era disk drives and printers) +## IEEE-488 bus (petSD+, PET era disk drives and printers, various scientific equipment) | Driver | Status | Remarks | | :-----------: | :------: | :------------------------------------------------: | | CBM cartridge | NOT DONE | | -## RS-232 +## RS-232 (modems, parallel port printers) | Driver | Status | Remarks | | :-----------: | :------: | :------------------------------------------------: | diff --git a/bin/basic_generic.rom b/bin/basic_generic.rom index a9606597..318870c5 100644 Binary files a/bin/basic_generic.rom and b/bin/basic_generic.rom differ diff --git a/bin/basic_testing.rom b/bin/basic_testing.rom index 5bba5411..63333a93 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 2c786995..ba80d3f4 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 8f5cddb3..972dd4a6 100644 Binary files a/bin/kernal_generic.rom and b/bin/kernal_generic.rom differ diff --git a/bin/kernal_testing.rom b/bin/kernal_testing.rom index 34730d2b..f66e3b19 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 6e0565b3..cd7b5002 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 404a994e..1cc28398 100644 Binary files a/bin/mega65.rom and b/bin/mega65.rom differ diff --git a/c64/kernal/iec/iec_cmd_open.s b/c64/kernal/iec/iec_cmd_open.s index 209702ca..54159d78 100644 --- a/c64/kernal/iec/iec_cmd_open.s +++ b/c64/kernal/iec/iec_cmd_open.s @@ -18,14 +18,14 @@ iec_cmd_open: // similar to TKSA, but without turnaround ora #$F0 #if CONFIG_IEC_DOLPHINDOS -/* XXX does not work yet + sta TBTCNT jsr iec_tx_command bcs !+ // branch if error jsr dolphindos_detect jmp iec_tx_command_finalize -*/ + #else // FALLTROUGH diff --git a/c64/kernal/iec/iec_rx_byte.s b/c64/kernal/iec/iec_rx_byte.s index d0cdeee0..56d54aa6 100644 --- a/c64/kernal/iec/iec_rx_byte.s +++ b/c64/kernal/iec/iec_rx_byte.s @@ -129,7 +129,7 @@ iec_rx_clk_wait2: iec_rx_acknowledge: - // Then we must within 1000 usec acknowledge the frame by + // Then we must within 1000 usec acknowledge the byte by // pulling DATA. At this point, CLK is pulled by the // talker and DATA by us, i.e., we are ready to receive // the next byte. (p11). diff --git a/c64/kernal/iec/iec_tx_byte.s b/c64/kernal/iec/iec_tx_byte.s index 40b0c49a..91b91abb 100644 --- a/c64/kernal/iec/iec_tx_byte.s +++ b/c64/kernal/iec/iec_tx_byte.s @@ -64,12 +64,6 @@ iec_tx_common: jsr iec_wait_for_data_pull jsr iec_wait_for_data_release !: - // Pull CLK back to indicate that DATA is not valid, keep it for 60us - // We can use this routine as we don't hold DATA anyway (and its state doesn't even matter) - - jsr iec_pull_clk_release_data_oneshot - jsr iec_wait60us - #if CONFIG_IEC_DOLPHINDOS // Check if DolphinDOS was detected @@ -83,8 +77,8 @@ iec_tx_common: lda TBTCNT sta CIA2_PRB - // Release CLK to indicate data is now valid (we should not hold DATA nevertheless) - jsr iec_release_clk_data + // Pull CLK to indicate data is now valid (we should not hold DATA nevertheless) + jsr iec_pull_clk_release_data_oneshot // Finish the flow jmp iec_tx_common_finalize @@ -93,6 +87,12 @@ iec_tx_no_dolphindos: #endif // CONFIG_IEC_DOLPHINDOS + // Pull CLK back to indicate that DATA is not valid, keep it for 60us + // We can use this routine as we don't hold DATA anyway (and its state doesn't even matter) + + jsr iec_pull_clk_release_data_oneshot + jsr iec_wait60us + // Now, we can start transmission of 8 bits of data ldx #7 diff --git a/c64/kernal/iec/save_iec.s b/c64/kernal/iec/save_iec.s index 98b5e7d7..bd6aade5 100644 --- a/c64/kernal/iec/save_iec.s +++ b/c64/kernal/iec/save_iec.s @@ -44,6 +44,12 @@ save_iec: jsr iec_tx_command bcs save_iec_dev_not_found +#if CONFIG_IEC_DOLPHINDOS + + jsr dolphindos_detect + +#endif + // Save start address lda STAL+0 sta TBTCNT diff --git a/c64/kernal/iec_fast/dolphindos_detect.s b/c64/kernal/iec_fast/dolphindos_detect.s index dbdafab7..3f622482 100644 --- a/c64/kernal/iec_fast/dolphindos_detect.s +++ b/c64/kernal/iec_fast/dolphindos_detect.s @@ -43,8 +43,8 @@ dolphindos_detect: dolphindos_detect_loop: lda CIA2_ICR - and #$10 - bne dolphindos_detect_success + cmp #$10 + beq dolphindos_detect_success lda CIA2_PRB // XXX do we need this read? dex diff --git a/doc/Protocol-DolphinDOS.md b/doc/Protocol-DolphinDOS.md index e635dfcf..6681e85a 100644 --- a/doc/Protocol-DolphinDOS.md +++ b/doc/Protocol-DolphinDOS.md @@ -35,7 +35,7 @@ Turnover (both to listener and to back to talker) is performed as usual. ## Sending a byte -XXX TODO +XXX TODO - not fully clear yet ## Receiving a byte