From 4735677eb9fffa661564c93141a745b5acb598fd Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Fri, 27 Dec 2019 21:48:31 +0100 Subject: [PATCH] fixed byte sending (TX) via DolphinDOS --- STATUS.md | 14 +++++++------- bin/basic_generic.rom | Bin 8192 -> 8192 bytes bin/basic_testing.rom | Bin 8192 -> 8192 bytes bin/basic_ultimate64.rom | Bin 8192 -> 8192 bytes bin/kernal_generic.rom | Bin 8192 -> 8192 bytes bin/kernal_testing.rom | Bin 8192 -> 8192 bytes bin/kernal_ultimate64.rom | Bin 8192 -> 8192 bytes bin/mega65.rom | Bin 131072 -> 131072 bytes c64/kernal/iec/iec_cmd_open.s | 4 ++-- c64/kernal/iec/iec_rx_byte.s | 2 +- c64/kernal/iec/iec_tx_byte.s | 16 ++++++++-------- c64/kernal/iec/save_iec.s | 6 ++++++ c64/kernal/iec_fast/dolphindos_detect.s | 4 ++-- doc/Protocol-DolphinDOS.md | 2 +- 14 files changed, 27 insertions(+), 21 deletions(-) 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 a96065976fc5ec749161b2ccf62e7fbfca701bce..318870c50f3b36734d60026bb42bf4a6575e47d5 100644 GIT binary patch delta 170 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 aZWdo0!@I-S7V=yYDW0O@H@>~uss9gGOU&>9 delta 3101 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 delta 3381 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%0DU{; zyvOJ_hT$f=T1jG^A6KW^32H+V|DPPx+r#I7?-=q*Own6^l}VIzw(&j za@&>1o?jl_w3%JE{+G*gR^{A(|H@?>ezGiwVR#uBtt;6l4qj~QhtFy#}f@i^HUc>3Xsg+<6WibkSn4@JjS zr$u54V4;Z_$l^5nO9hVk)5F9{SwZh;b{rGz;=V$Ws9kUsYog1#g(peD`%H+e3NDO8 ziqnP=`Bm`lY^30)gW|i~8OQ=s98CMiG`{6iNKU7Glh5NDnq9}OJUXi363u825Gjb* zT#bAY{Asew(Qrg`ZsChA7NRop{i{DteMgfRp;j^pN9|Q}We9@oxcaA(GCE?qBo~Nb zy2ha+=9<&u>!4N4C0`_*Y`Wyv>HJf=yx3v6&_U&dI_s{_Xd})Ts^o5Dr*v`WPU$or zO}n6rqdt4F1-eXE*`)Rtl{Iqmu)jn42_}3oR zV<*oK&9xLN*fHeYOx_rJalVA`SsjpHQMYb??|lVCVA9H!4$0vK%1tc`f#Y~}xXW}_4%FNE2 znv5zpzB*X~NSqV;;XDj_gkGGhiPbblO1ARY8WQ_ZqfR0W{!eJ;oNxwjTN{u{WftaV zrmd=Kj1K~q!s1cCNj77275f9l_8D>&+wm)!Kfc=HkEu5M(}8-}cay9QE&RcX5Mh(? zdqIdlfwT2hF$28V!_DpJh7X{%2&8-)9xhaSU%&M`bp&H@jgPJ1|vmyd#jH#N23QMmkxFJ_~&cj|Uq ziZSdr$TwT@ECExrg1kMt@2OnS0TmC2uuWyqf=PI-ddVyt<_pAH8k2{LqIMo)cGXd? z()%QP`V)Awm$g$2-ZbW_JCz7j{GBF#QvW0?o~VD86}|P_+0ODh@q`i9Us}t??lYAf z(qNhsB1wtZ6%^~i!NVc^bO>M-KZePlHS~HAPHZ3cj7TQ*hlnSDZiYOAGfNkwU(cwL zEdE1qShQ4uK6Fnl_Zao;Cw1vrI2qd9rf6)=-asj%O^s z9n$$J2ub*)+*@&im);Y`r775V8g+p`@eCG$1^!3LmdLe|4QQWUM zV}0h*ftRUl?vls(c!QQSCKDG$Gx4s8>bMWyV4HWd``%#p?`HX19FsOJmF^YJlMTwl zC05zSR#{~rb(2+2VC6AT5!(&W3Fx^fH1N4WDr<{15Qi6x4+DmVj^0w9XKqP7KBMwL z*&=kugrV=C^4$o1_*aXM!O_Nsg##raj~%b?IFtn&<`U0Nn77H$%95?6O0S4Lb3M zWI|o^qpfOdy8?kH02qN*uY$8ize^6i4Mmp1`?=~kKTp{_-pWgC)d5xtlfuYqQZaS! zDl#WNVfOxmcPw}}wZ>d}pf)Y}2z{HTg=U35Q(BeSkSU}_u15wVy^(*@xJXo8cWp!q zQ?w&QS;eu@2c!< z>8`Bl?ra&WtQqTUKQG^atwsseba(VX+Q}E%0uWg{omb#w9W0s^uos|LN9~|)vCg$n zPMyqtBoA?u&N%3=$rOOU5-oxXULA)HP@|F$7yvshvPC>f&FE`YbUiA#JaGU#c1I01 z0A1nCG1|p_xn&xCF1|}vvyHR?MVc6LXLKn$Z-T6gW{~eqykrFql>u{HwiLJT<>>(} zXsAVd$h#AHY5fYQCpZ&pamPeazf(Vq^2qSSgDERQ@W(Nth=&cyX#bWhpFC-Lf!vsU z%9Ka&)UuMIa!17x!MTMm6Dr=UEXSMHuFJ^EVDg#GPdxrZ(4n>KnEb^Ie&pxBV3_#C zl(cyuEci7;bKtMW9kkC3wraP?i4A1b;x}b47!B~~e zqKmiNaq|?i2JpfFa8NemKaLvuyM4IzZ=o4d_FQRolb!lK=m`byxQh2p;z5ejR6L?U t(ZJh>@m3Y%FpiEBpPrstJcZ|7-Ii(ImSx_y)Qoc@W!LpX*LBmJ{{ql*t2_Vz 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