From 3039c108cb745d19bfe8fa82a7c8f09f94458c12 Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Wed, 10 Jul 2019 17:46:44 +0200 Subject: [PATCH] LOAD command is now able to load file from drive 8 --- bin/basic | Bin 8192 -> 8192 bytes bin/kernal | Bin 8192 -> 8192 bytes c64/kernal/iec_rx_byte.s | 24 +++++++++++++----------- c64/kernal/load.s | 12 ++++++++++-- 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/bin/basic b/bin/basic index 2de26fca65877da98a8b7017bdb99069ad551db9..2f38515c7f53f2222863cb9756707f716c5e75cd 100644 GIT binary patch delta 1908 zcmb_dTTB#J7@nPBnY{or)*BU(BNBy*Kx@=>D}-8%SdKTS@u98VT}rz~9!zW>#F!vMXNQ9YF-v4Ke$AC(OzlWTZ0Y@yHNqo37q*r`VtxdWYL(NS67 zCwD{`*n?Dy5egT$wDg<(jp>&DMl>n=43sGX&PLFmuXx9@rpu@|bAf~XD!!tjNpg!_ zRmy90qx35EN}JHJ;iQ#4v}4G;}{oO#2cx5G8l*MMZ(A%1FHArVc4D>Q?x1H+3670@S-HDa~D3 z^mjDUneOW|rcB#NgU!e6gVossF$$ETnq(gG285S`yFu9w$%@-#qZ`d-Nnypl)M$s9? z;+|3PxDs^?Gd8Diim{D5Kyg|P7~RT@2Dmb=jH(O>`$&qfUeT>Y-5KF&Eqqk5Oo7HX ze1^ksD1>tyZXS-I`#ic4!{=fKYZf7RpCh5Gvpk?!>`b_*LWs|>rN^`DRO<1JHiT)( zHN?nu$DaHn@m|)}H7foQ#LMEO#<{qX#Cw@pN<+NM`nkRcg@2N{w9RI?!g*7S&2z`q zYqQ~|I635e$B$YERflu|f;|t-1X=q^L%+#JDfoUxqaD&kdPKT3L$NZFiyq5(GCqDD zkHtY}SY>2e#DQ*R!**>Hk7>u(9IHZ0Rk~WLrIk{h)i@{IE7&2847-JYb4`N$MOrI7s=g9T^TaC9z8bygF1?Is$90RHtSo zFFq}kzWgGh=R3)z{IaS&R7K#Zyd3SJ)N5oj0z{6s?LZ9mDjU(gn3@l42oiz;WQ*NP z$l<)xFT;o$@y$Ul*G6p9)6lfW*4(({fYjIp4=o60NQrBC$?mht4YM33W|`L5)2Q}I z>)>ABT@lhESp+@yt_#^ab$n}p9CNkU4v-&QYeR6-^+KOfWeQXP_h2GJFaq``3VkS; zfRF?$nZ|(0!~T7kveU0M;cGA`4C>G1S!yPSeocT5JgMI-u|zy~Y6{x|QUHpH8w%`a zP6j5r%*il^JV|R*mn7gE*>N(@KPoOlUIatfaEQq$aOaf(ttE-C7nX6GpOYRDVIq-q0CJu3J=;_SPB+<&GJayXAEQxJy-tt-#B>BHmZb>;4^gVl<-9J)>1gSl>i9v2K66NAZziNK_~2^Rm$9rzEzqNS0JobJpu+}VaKIib*FWe3<1LNB6q zXalNoo(xO@yNBBXIoGcnw0EXZqKV9+f}hxGYzH>+l|B9Cgr)TX(E zCM>HcOD31ib1R!@Jcm8SaQ8pVVYQERP8?F*tmlnv_5(MIo2bHwyy&1daaNB*=0_aV zq1^$N?v;tt@>HH6hYt02b!p=|+g~JT42Zi-+B|@7Jghz+-e4JZJ<;?pMl zYM4B*Hg6q_px<~j8o~V$jnnfGtfy7z)|3r2hB+O~D-x#6;=@TdaXj^K5)EHr_-&7n zi~P3dg32k5Z5?p`+JMWI*49@0)j)8#A+!j3Lat9TdwLnRIij3mrhK+5`y<-sDeIMlCSfk6HGXG$B$OjHy};_nsm`m9=(kjt~mbD(7ndi=;0 zhkT@b+$b|7-!XRwN+lqR3(zKkcjr~~qoftUMx0Y=i+GtH5U)&X4E9)2TEhEdBNyNzp(6H-yDYv9)aE&>)+D8lyZho2e}32Tx&il}s4tHC$Y0KU$IbXiJ*{{D zg5xSFbX9WAXUR^Nm;B^f3_Iu)^6cIOG#P_)DY8V^opn;B4qp@xyz zUiWBD875=~X}rTgmZ~KOg>Z1QacZsvYf9B6S? V#d)OB?X}`@3Ad}Ce&H?^{svc~ly?9C diff --git a/bin/kernal b/bin/kernal index 16a9a00b2a973f5ed64f196e156e8b70c5b4851d..e5ac6f3d4ac3bd28da84eb9a7facbe70f6ba44a6 100644 GIT binary patch delta 1555 zcmZ8hZ){Ul6o0*K_os92ZRtn>kpn8M5KKW5nk9se{h`ClriCHPB;Lpe8UsfCA|HVE z!`@s*FeT4~l_1s!H9W(TjuA%(7#KoW!$NV1Korr0E}>@Y?R!sw>8SU<4J5wY{O-Bu z-#zb_b8grd_9ez_AwQhfV3FP@+;xZP;vk%!Y*@dc7Ft@Np>b<-edA`R+X8hMmkV%M z$KU6H=&m3*^Uq?IKNnKp+S1e<*i^TrxwQqF0~p+hwZEI+1E=LXn|fjiCt%UjhS|~R%mhH^m_ z_`hAJ781X~KrIoZQRxO$QhD6A0&Svlwf!~uNJU5J3Oy)~Qpp;5 zndnNTAHo!G>SZ1`ypV?vb#`PfO0g>VnYZaR75u;tm-Uo5$?QQFiAPF(Qp834B`i}- z#07@V7Ym#bW@N#D09P(mih~>di6Rz@H}bK7^E$VjX9-b|1o7Iu^7@5O^70p=FC<01 ztnu;JdDX%Jaj_xS}Zqvtr=?H9MitvDZ}Bj5&2);vx{s zsDgA|Eht4_$|%LA?2O`+TOH1t6TS4+ZqK4S?I``|+C_(0ooq+ZZ78_|Mc+rs-6*;X zVV`!jSN==FOr#m3|~5mfd^<6x#(9zI#ebm!-r%cM0Lk!=qjgVHK8^ z9AqFeaNlEKs(_zz93IZ9Ou=+8^~B%f@AdaNt>x9$v=y(+?s8h?<&{;HtYAksD-u>~ zSk$p6E3d6w8S4B04bNrbwrBT|_#yVB+0=rIcvXSKqiiN@eXJ+r5wkGSeTx^w*cy|5 z!rL_#{9lPa`k0g#tZZ@LWu7VGURVlv?7pAvgzeJV&ScjRkp?@@cb(%#A5*f8vMpBC zEl!h|gCmO;|0c1yN)1uhF`N1xgGosH2E?kKQu+7-w~diX`YrvI5H8d3@o7vbuFc|g zSv=psH+4LrrZQLI?yRv`U$1pJ#uojpfNV}@{>8`4*yh{1yvO;^ ztPS^SwKwtTab`-|NiJ*-`BwYy=R1JCb3 z)G-Qy11)!F;iQZGt`Q7HR+!!iEnPa~+QFj!a34uuEKJ3s)bhpX__0Mhn|!BOA6znS zw05OnjLT!K2EwvUI8nA(13^C@CV!r1A@dJ7r~UF>;%mty&;E_8%F6Mstn&R*q>6+p z4q8;DUe&wC@_Qj6!t0>({ep6jE#D0^{c;pMA2Y0uTIfw1T@TmoO5RWNGen zB+a~5Elgt;sguD#RMHDjUx0y@22hLZKX6sI35_&gPJk&TEs)gJimHU*yG|z6^AO=B5;|&#R3-zTq^Jjj@voPKfg`j zHV30FwhIgi^a|7k`UM6BwhG+O@tBK0I{1@=n!s=F;CTn9?qfjU5`oPE2RW|g=n>c< Tut}g#4Bs*dC8Wv+oG^b0F8<3o diff --git a/c64/kernal/iec_rx_byte.s b/c64/kernal/iec_rx_byte.s index 8ffcf3f7..2d28465f 100644 --- a/c64/kernal/iec_rx_byte.s +++ b/c64/kernal/iec_rx_byte.s @@ -32,23 +32,15 @@ iec_rx_clk_wait: jsr iec_wait60us lda CI2PRA rol - bmi iec_rx_no_eoi_confirmation + bmi iec_rx_set_eoi + + jsr iec_rx_set_eoi ;; Pull data for 60 usec to confirm jsr iec_release_clk_pull_data jsr iec_wait60us jsr iec_release_clk_data -iec_rx_no_eoi_confirmation: - - ;; Store EOI information in IOSTATUS - XXX this should be done by the caller! - lda IOSTATUS - ora #$40 - sta IOSTATUS - - sec - rts - iec_rx_not_eoi: ;; Latch input bits in on rising edge of CLK, eight times for eight bits. @@ -84,6 +76,7 @@ iec_rx_bit_loop: ;; Move data bit into C flag, and loop until bit 6 clears ;; i.e., the clock has been released. + * lda CI2PRA rol bpl - @@ -113,3 +106,12 @@ iec_rx_bit_loop: clc rts +iec_rx_set_eoi: + + ;; Store EOI information in IOSTATUS + lda IOSTATUS + ora #$40 + sta IOSTATUS + + clc + rts diff --git a/c64/kernal/load.s b/c64/kernal/load.s index b7d68db9..d6e9b631 100644 --- a/c64/kernal/load.s +++ b/c64/kernal/load.s @@ -158,7 +158,7 @@ load_loop: bne + inc load_save_start_ptr+1 ;; If we wrap around to $0000, then this is bad. - beq load_error + beq load_error * ;; Check for EOI -- if so, read one last byte lda IOSTATUS @@ -167,13 +167,21 @@ load_loop: load_done: ;; Close file on drive - + ;; Command drive to stop talking and to close the file jsr untlk + + ;; XXX XXX code below runs into infinite loop - so for now just quit + clc + cli + rts + lda current_device_number jsr listen + lda #$e0 jsr iec_tx_command + ;; Tell drive to unlisten jsr unlsn