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
|
* pre-defined function keys
|
||||||
|
|
||||||
* JiffyDOS protocol support
|
* 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>`, `@`
|
* 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)
|
* 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 |
|
| VIC-II | PARTIAL | 80 chars in logical line support is very buggy |
|
||||||
| VDC 80 col. | NOT DONE | |
|
| VDC 80 col. | NOT DONE | |
|
||||||
|
|
||||||
## Tape storage (LOAD only!)
|
## Tape port (Tapuino, Datasette - LOAD only!)
|
||||||
|
|
||||||
| Driver | Status | Remarks |
|
| 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 |
|
| 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 |
|
| Driver | Status | Remarks |
|
||||||
| :-----------: | :------: | :------------------------------------------------: |
|
| :-----------: | :------: | :------------------------------------------------: |
|
||||||
| standard | DONE | |
|
| standard | DONE | |
|
||||||
| JiffyDOS | DONE | |
|
| JiffyDOS | DONE | |
|
||||||
| DolphinDOS | PARTIAL | for now only LOAD is accelerated |
|
| DolphinDOS | DONE | |
|
||||||
| CIA burst mod | NOT DONE | |
|
| CIA burst mod | NOT DONE | |
|
||||||
| Mega65 burst | NOT DONE | pure software implementation should be feasible |
|
| 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 |
|
| Driver | Status | Remarks |
|
||||||
| :-----------: | :------: | :------------------------------------------------: |
|
| :-----------: | :------: | :------------------------------------------------: |
|
||||||
| CBM cartridge | NOT DONE | |
|
| CBM cartridge | NOT DONE | |
|
||||||
|
|
||||||
## RS-232
|
## RS-232 (modems, parallel port printers)
|
||||||
|
|
||||||
| Driver | Status | Remarks |
|
| 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
|
ora #$F0
|
||||||
|
|
||||||
#if CONFIG_IEC_DOLPHINDOS
|
#if CONFIG_IEC_DOLPHINDOS
|
||||||
/* XXX does not work yet
|
|
||||||
sta TBTCNT
|
sta TBTCNT
|
||||||
jsr iec_tx_command
|
jsr iec_tx_command
|
||||||
bcs !+ // branch if error
|
bcs !+ // branch if error
|
||||||
|
|
||||||
jsr dolphindos_detect
|
jsr dolphindos_detect
|
||||||
jmp iec_tx_command_finalize
|
jmp iec_tx_command_finalize
|
||||||
*/
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
// FALLTROUGH
|
// FALLTROUGH
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ iec_rx_clk_wait2:
|
|||||||
|
|
||||||
iec_rx_acknowledge:
|
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
|
// pulling DATA. At this point, CLK is pulled by the
|
||||||
// talker and DATA by us, i.e., we are ready to receive
|
// talker and DATA by us, i.e., we are ready to receive
|
||||||
// the next byte. (p11).
|
// the next byte. (p11).
|
||||||
|
|||||||
@@ -64,12 +64,6 @@ iec_tx_common:
|
|||||||
jsr iec_wait_for_data_pull
|
jsr iec_wait_for_data_pull
|
||||||
jsr iec_wait_for_data_release
|
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
|
#if CONFIG_IEC_DOLPHINDOS
|
||||||
|
|
||||||
// Check if DolphinDOS was detected
|
// Check if DolphinDOS was detected
|
||||||
@@ -83,8 +77,8 @@ iec_tx_common:
|
|||||||
lda TBTCNT
|
lda TBTCNT
|
||||||
sta CIA2_PRB
|
sta CIA2_PRB
|
||||||
|
|
||||||
// Release CLK to indicate data is now valid (we should not hold DATA nevertheless)
|
// Pull CLK to indicate data is now valid (we should not hold DATA nevertheless)
|
||||||
jsr iec_release_clk_data
|
jsr iec_pull_clk_release_data_oneshot
|
||||||
|
|
||||||
// Finish the flow
|
// Finish the flow
|
||||||
jmp iec_tx_common_finalize
|
jmp iec_tx_common_finalize
|
||||||
@@ -93,6 +87,12 @@ iec_tx_no_dolphindos:
|
|||||||
|
|
||||||
#endif // CONFIG_IEC_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
|
// Now, we can start transmission of 8 bits of data
|
||||||
ldx #7
|
ldx #7
|
||||||
|
|
||||||
|
|||||||
@@ -44,6 +44,12 @@ save_iec:
|
|||||||
jsr iec_tx_command
|
jsr iec_tx_command
|
||||||
bcs save_iec_dev_not_found
|
bcs save_iec_dev_not_found
|
||||||
|
|
||||||
|
#if CONFIG_IEC_DOLPHINDOS
|
||||||
|
|
||||||
|
jsr dolphindos_detect
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
// Save start address
|
// Save start address
|
||||||
lda STAL+0
|
lda STAL+0
|
||||||
sta TBTCNT
|
sta TBTCNT
|
||||||
|
|||||||
@@ -43,8 +43,8 @@ dolphindos_detect:
|
|||||||
dolphindos_detect_loop:
|
dolphindos_detect_loop:
|
||||||
|
|
||||||
lda CIA2_ICR
|
lda CIA2_ICR
|
||||||
and #$10
|
cmp #$10
|
||||||
bne dolphindos_detect_success
|
beq dolphindos_detect_success
|
||||||
lda CIA2_PRB // XXX do we need this read?
|
lda CIA2_PRB // XXX do we need this read?
|
||||||
|
|
||||||
dex
|
dex
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ Turnover (both to listener and to back to talker) is performed as usual.
|
|||||||
|
|
||||||
## Sending a byte
|
## Sending a byte
|
||||||
|
|
||||||
XXX TODO
|
XXX TODO - not fully clear yet
|
||||||
|
|
||||||
## Receiving a byte
|
## Receiving a byte
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user