fixed byte sending (TX) via DolphinDOS
This commit is contained in:
1 parent
733f9aba1d
commit
4735677eb9
14 files changed
+27
-21
No files matched your search
@@ -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) - `@<drive_number>`, `@<command>`, `@$`, `@$<params>`, `@`
|
||||
|
||||
* 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 |
|
||||
| :-----------: | :------: | :------------------------------------------------: |
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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
|
||||
|
||||
@@ -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).
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in new issue
Block a user