From af9e6abb8f0d68ddce1f43a79736321239813908 Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Fri, 4 Oct 2019 20:24:13 +0200 Subject: [PATCH] fixes to LOAD, some documentation updates --- .gitignore | 2 +- bin/README.txt | 7 +++- bin/basic_generic.rom | Bin 8192 -> 8192 bytes bin/basic_mega65.rom | Bin 8192 -> 8192 bytes bin/basic_ultimate64.rom | Bin 8192 -> 8192 bytes bin/kernal_generic.rom | Bin 8192 -> 8192 bytes bin/kernal_mega65.rom | Bin 8192 -> 8192 bytes bin/kernal_ultimate64.rom | Bin 8192 -> 8192 bytes c64/,,config_generic.s | 1 + c64/,,config_mega65.s | 1 + c64/,,config_ultimate64.s | 1 + c64/aliases/,aliases_ram_lowmem.s | 55 ++++++++++++++++++------------ c64/basic/cmd_load.s | 12 +++---- c64/kernal/lvs_helpers.s | 3 +- 14 files changed, 50 insertions(+), 32 deletions(-) diff --git a/.gitignore b/.gitignore index 40dc1c36..bd558ebd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ -# Image which is illegal to distribute +# Image which is illegal to distribute - just for extra safety kernal_hybrid.rom diff --git a/bin/README.txt b/bin/README.txt index d3a254bc..de60839c 100644 --- a/bin/README.txt +++ b/bin/README.txt @@ -4,7 +4,12 @@ Follow these rules, or bad things will happen! - Don't mix ROMs for different platforms - use generic BASIC with generic KERNAL, Mega65 BASIC with Mega65 KERNAL, etc. -- Don't mix these ROMs with any other ROMs; the only exception is CHARGEN, this one is fully interchangeable. +- Don't mix these ROMs with any other ROMs; exceptions: + + - kernal_hybrid.rom, which is meant to be used (and has to be used) with the original BASIC ROM; + however, this hybrid ROM cannot be distributed due to legal/copyright reasons + + - chargen.rom - this one is fully interchangeable - Don't mix ROMs from different builds/versions (again, CHARGEN is an exception). diff --git a/bin/basic_generic.rom b/bin/basic_generic.rom index ef561550a2f39c3492b00af085e49527af70ce08..574750553c143803e960ca403f87ebbc9805c5a1 100644 GIT binary patch delta 1028 zcmcgq?{5=j9KYvjySuI3t}W|!Al)7r8 zGAU^=;+ZET@M7_-y7VWhIzziXNAdGOPk3I8&VgNbQ1xovSx=-cCa*N&nwQ+t z$Q$)^Y08fjXB$=BXnMsq| zWqOQ{pg}st9}nmIh^}eFtfnvDy9tX27=s*pDF0TVL*5_wh0?w6z=Q3p@zW3@vcJxT1T(2UDe1Xaf=a5P%?Tfrx&0xgC_{5OhE%{IV>;R@eql zz;*~j7jy%GCt(Nlz)t9eKG+4jAp(0K3jGj+0T_fh?1g=>AD+s<)9?%oK>`lIFgyzf zVFV7rVHkxY|I5QifOdJe(pA1EV-Gl@CbDy5DP?e3QC=uZDRQH1)U%?>&3#@MT*YulX7>$3?y^G7YoZxYOOBB>sp?CnvHKd8E3&nRuJKFtL_%{!(0o z*I5xcTV{Ro!iDjw|DWu8FQt;_k_M-GE^#R5|2wUA+8HI3%wuUDqf^JtX^e7J|3+GF zGIP0H%hil>C#~-KkK>l+IdtkHbDBvvIsGODA&mE%v@X0J(0B(Y8aoMD?>vXeNvirf zTaeYj$dbqCkG@a`1MB9R#@ndouF7LpmHi@Q(fhvmj&-x(t%(KU3Wu6SHr_o!UNRd> zCb-7eT=LiSP-_SJgudMR%83oj-lN3qxWcpRxa18>yXkaQ{KyKREKj~NHNo~PF8PBM z(pyos-3TD(dzLkWh)r{e!w-V!fgj1#sszzAhu6*rk^Py2vo|e2lHLiRPa8?&cmX&3S4bVb$)OuBG$YOZ$D^kdUJ2&qD4RGiki9gc+ zGy3nn|7Yfp4UP?7zVGChC+Gubhej!J__^4%wR25U z=9uzfJ%N&SFQEsNKkD&GeVE>MeMHXF{&lUkKf3NOnX4!VCzMl6?VZRvu0&(0E78e> zLP6gbLS%@3BYZ;pq^-%npWD>WmRK~#24YN%EDQ3eD>kV_t|#OZVJ*zMMmeo3p$#Oo zXqIPzOti$BGtsJ;7iKuVDwL#5lnFOQt2QgjbWRHPwCdwLNtJ!~6Y4KWrBV$ylIev+ zw!=)On`4)p@(f45-mQ;w&oIlN9iAY64|K%y0X^<+=eY_!<-V9~sR$6^Mgt^x(1`Uo zo%=TDg%5r-;Y_~1umJ%~Pc>sBHbF)UUczRCChjb@BE1+y8`?3ysNiL6!B%X;E7*<> z>_7-R(TQCMqYJO18$Ia7YuJs~@do-3!5-|zo9Is>iUGWZK@4FZhVeGu!3g#vh668T z@drTLq!!AH*M)~u)oHalMSm5;?L9_5kZZP_mq=FBIpupJ?V2pB7nV+kzw1)oHK^>~ z_wg~~WVeF}79WZ0oF;0L{Z-20g2`EjnPj!BFu^1>hhE>MKPoG$##(mOQ2Pow@ft_m z-k&&9wY8tp?8LnBl;JGfn6h1T)%dZod(XU)lWN}obJX9BH6a^6E7Tn7&jyofj;a{X zi6xzTq8iU~bK`Wh@x9K4g1IvtHoMb;x%aX|T_~_yR$I|W3Vxyq%2|VnrZ4SKzgklK z^qF%DKAtdCYke=L;a#? zkK5ePU2A!zH0!bc%S+`7SKCmY8M+(t)}*y)KC)ZgRLqV&*;}L(^4bqYN;b~E@R8y< oIUdnD63_SpBz`rszTcZs8t8AqCcd{q?*xbWzNxF*+x{ev0pe`h9RL6T diff --git a/bin/basic_mega65.rom b/bin/basic_mega65.rom index 62f86610081b70abcd928517949e46cb511dca09..2b665a44bdbff98f29822d288b4358848a8d014d 100644 GIT binary patch delta 178 zcmV;j08RgZK!8B79t8m$vmXVK1RJI+q%5fbAl3f}AXxG!kOivBOrPY2Erc#0*OSHx zPXgbmlNt&js6&>pT30j&`Mg$E!2;H3!35Rd~*bmSnt zlYt5w0V|W83LF|Ms;K~l2Zalz2!#x!3#JF=3#ALm+t33{8k5rsCnCeDpn$!F;>rHd g0mvy2$pFv+$lw6*1j?&vmOiL6c<58w*UYD delta 162 zcmV;T0A2rpK!8B79t8m!vmXVK1QwzJpa`h|AQ!5T1**zSpX7!ugf1Y`lgkND1=^`> zFawhu3Oq-Ns>v#lEy*yD2gy3H15AmkrPRVG%bijutO5m z7efEK@DM9lJwjfRtGRMvf0RTM0)vvv5RbuF|EjShv-*!mH}Ma}^SxHlfA0I^KA+F` z$NQ$|)AQ!1k_fuwGwF)>phSL?UgS~OJ0_gEdCeOT#4o$#`oNt>`z7>DN%K^dNVckM z#vrbc#lZ>h0zR+rlg!}NM>N3xwW|sa$FM>~`MmIu%*xNE;BZe*7w5XJBkBOEt`6`v z3^!E|`nU&a(|XeJpmdL};&12;{OxfjU;%ponoXpY?{A~EGBit>I()Tf4nfeR!;JA^ zkA`raY1Mc-bds;Q?q?Po}$w~13Wzvr3zl6 zVVqoxus(5|w}=xQ6UWPRx}U%+bonJ0`&ks{#5hebVuCL5V2LJKki5TAScZin6W0Jd zT{6XyD1Xc&ID1fz*8q)&a!Q*fate*J)g^G4LwCu$enOJ+<4+G68={cy1RumuwUW(d zPqb3%4>9eml~RWzd1<5pgb$uFHo!ladlgcX&xm^!vMaxtfXMfOVJEUbQ{Q zF|09Wq%CVk4O(;N$#!+snY5rYj+PAg{uXSwu;r>Al-%Our9Muyne#2}ZzG0r~ zrOrecS9%!{@f#;+m<#D$#gr-*_7JZTuWsUwcmE9M&7;NbaJOF;?(xeD89v>Jy~SuV zYRc>v?UTR~R{$F(AN8^Y^WK2meoaz1E5XhuBcl>*c!7-fIxa_;PqGViIg_K};9lqJ z$Z*QCZhHg2UBhQFY(6WHEdW;gFl!XU9N$M6F8h_klZZugG1$!gQa3G9z!q+!#f{oi zm+fNB(3yqAl*o9RIh*;i1fOPp$}CEy2bp|XWM*;g!Q2noi~P8BLHyvr!fa%wEN@eq z%JYJ#>bog+P{a%_?Z|&G*6Wvs^|fnKzdl^~5d4)4FJ-*PT3cRt@wrCFiD!?$U%lv9Wfir^3`I*f`HNJ*iR$5kjtjh-k)8qgxV0F^;G@>b|jksehd1FAw# zR->n?QH}9w^bD%4Lx+waq8?S7#1>Lj{ng@zTfV?8ADCreqoQ}%vE&;za`~W)^4zCP z`fp+Viia0RnpUCL$DaeohE)!Y|4=*KTP7;%47sgd7tp#^;Ol;|f{Ch!2@QDv`_bAR zhof!sFOIgu>K|QhxHI;Rh7I;9WK?1Rt|mgZwk4p)H#F?q?Qs}SzTRU=!~va@SB=vg zWpLkx^^f|vEeN)?G{KPQ(ayOyxrP;`3%LGA6jxK~Airv{mDWH~emV|A13(YNQROaJ zLpDL@gZv119&t|(+BtOsOl)G2Ba8GG&)xvQ>e+} zp}f|>yz?e`FA$=gt?UpFO4lM+2OnBAmOjf}Wi$9J!7eo<&%t>PxGfR-KHG*ie#@YS z^-nX@z*hmlspv?qDQ|?zVty`GXPk*pF5dC`#|)-8!jOs#re4t{Szl$YDlSTLR~fBx F<$uo+sQ>@~ diff --git a/bin/kernal_generic.rom b/bin/kernal_generic.rom index 77e705075aae4a0c7ecd3e28b46485d83f0b4823..954448703f6360e140d5439ade471bc779824d85 100644 GIT binary patch delta 1462 zcmbtT|4$QV7{7au(t@G|`En%|Ud6;>0K1W8kckqrq@BJYOl8@YOm88&(?IqEY$MSG zx9r#^V!&4v6}EEWjK$PoG*K`vY-5I!XgV}bN!@gz&0=&OZM`cj*gZ$I+AK;n z9;D><)J!UQJvCv=Ir9w$h0T-8dTJE&uax>^MaA}F6N=oHsm=ssL1adI~f>u zN}ofZ4@_%KypEB6JiV~;h`Y~?>*sKZ4v}os+U~o3JeOtT)HJb)=S1RqDgADcEXo-_ zrV*M;j6FM^Pq``XhnD8WDB>BQeRK8jfN(snYPSn9A1k1tIW=IYWN@H2Ezer3LgnYgNEU%Eay zag`6SRq$n(MmU=l^qb2pFuw5Cjw!> z`cU3T_QmL-+)cJkF=Z^-W=G7+B-`wWL7Viq+}hm@F&vtO#*fGF>R2+D8Tn95=?0np z!Y#(@Fpk5qZqw=?`iqLc|FZYwslL-^&VnKskHDcfDFcXrXCgwM zd#F#%{1z(UUlPQoiRW=;l&pw)8R>+0UK|EZO7vF?P-e+F_C-q@IJi3evjSLonf z*{lq0lZHmp!OEmXTWh!+ECy%wb5qt?hnz5cW0?xXorZY~p^oQ&k^!~vNcYIIIXa(j zM__8cV5=3ZiWukKK|suUt{HJk01Rg!|)@6ITK+1b;#;cKf}79{|(cqEq}^dmqQW3CSxBOBdwCF%Zj8GJC8GC0Crv5!Zr2S?*5*3Nk2`R}^DK zT=al#1N)fv+L~SCaoOT~52+jmWc4+q5bxWSLfE%6g&e*eDdhCMn?hB-`Xxl)DJ+JH z`wQQ&H7~e*oyds-%iP|yu1+M1WcPwdninqjWPXe+yzKNWl5mvT?Qg;u;UgtkVYt5l delta 1524 zcmX|BeN0nV6n}lMr3J+nM0qsUUi_G?@uO~8R-M_1F|%Pe20yl-$@GCy>w+1H&XLUw zx7f~r81#yw&RJgikYbvY;O4-X%xNO8$+9;wOi2~CP~yzgM_c*|2D@je*|`TeSmVI7vp5EZZW-6Ax<4G z{yFL^;cc8tI4kK#&$4b$3&*1FIJu;=ltPsKo&o%P46NCeCh9SVj7ng)$B!P2g&6Fe zCPTVKl|}_kfX_G?%SD)*^0&%)Cmi}mJ7_7za!#)9p)1HT`6Z03b=Ru+ z!DmP$c#&~k=t193We}Q<*54*=CUWSKJ5fxgW-Xy+KrXsN0! zuNVB~9)AdaDtIWarl4X>-KrQ1n?`JWT6NzLmQoHi2D~Zhqwd})lnc6U_T9a~N*X7q z&>hDVDK1*EzD7}Z<=n2D=zh8nZ%lB)Wz#F(C=i+Ei&2fj+h7oWg#r+6V;C-*9`mcw zo&>Ipk)uWHOV%cY-fUFfM1aah7>xGM#ApAM;1_Xk?34)6n*&)*Mik=-RT$xP)`D~tZ zF%X_)2@xPX6e;;HAjy%LEaii9Bs_0fJzO`DRTb1St7?HXAXTmbDlOLpgMA2w3(c0y_Kh6SoyNcHHY>JeCY zdh3&zNwL@C`|0jO#q%^a{e*B`&i7G0=V^2$)pz&0G|s_WVRZ$YXuH1CZGYc#B-MHA z2nn(CH4?eUzPooM1}m}$P6x@R4KDXEl_BcVt7qaSGb()FIlb`A!kYsZn~4=4Z)9TnL&U| z!H;GT8{9sFP;lD}vIV!!AV+Y^3~~l5GKhR&wt~fd=C?~~Ctblt+CfXRTmfxUBkgwM zs!2Dlo$NlHw~IEgyu&wzzeo~`dd{*z zV`-;_c`x*&UxSSKF_&Sd#P4! zG&-Lp!mfx{^vi8=^N%(m7`iPAppp)wyE1ABeGGlVzsF;?RvxD&=4tp8mF{YmE7j(a z!zex_i0ef-{}=3J%(%9wo?e448vPcMV0awvlM2%c&QA83bnZp>PIK5|3{V00l3&G7 zSo+?=GVVU#g3*~!@&avz*Z%_6AFz)TWfPR>;q@rBei|6M}W_Cc#a<+E*2*Nt_|YC7ZeJBv4Yp<6}B$DA^)x z(BAC33#s*z(_0?))aGI=h)D+pNYK1Qe zRp>j6pg%zx96NKlE~>uH=AleclVT5bJinixks~x4SjbIOpU-?4RZyB1rQNwIQv1=r+>aQqL=%O?zXy{SJED*fVGwi7?^= zf(C8OcCjKdx~R-GFzr{GQ8kLs_eTp_no%%_d#8hVV7mLJr4SKE*}IiKsu;f5X2h&< zm}{5@Oo_2fq?n~EZAF7|3QLmAGR#2`AXaykqmBl>At|emED552)^TgdZujctYBDIw z?Z71Gp`OYeIW#)K^lXpvp$@jG6|>Lq*xk>qA;&$H9w~|Y6S#rm>l6=9;fFf@Gl`oM UxSrzC3EV}xJypm;$#;+EKV%7&g8%>k delta 851 zcmXw%Ur1AN6vub(+-5h2|F(H2x}AD3H;sfcg{bsF9PuN{RU|}Q>170BL6DS?56%9_ z%K90p5ze_QPPn<44;e(+Loj=AWE4h036mg`o4f9}EtG!Ot*7((o!>dX^E=;jdYgKi z!Z&r6V8U+=R0}R~FlJa8<7&t3Liw3kPxxPa{*OS2^nY&$Q zSZZfuDPCw4;Mx{&cv)9p*hTKbGzoq82I1o$7{yik8ivDddWCr%X*KvcotyAz2Co)B zqwXgqmCPufEtz+6WPs%bnz>y=oQ2EDZG!WgkV>FiiIB#-=>3F#|H0u>bA_3}m92n5 z3?B0a!+Pi-Xej}10xcV0#y?8;6xNk0=8H>Y2!C7eYmu2SHXW}Wpst$ z17(+tpmsuYwq=bxFRNpWLRy@WjegDSW0wAPjki=Rq^4di5V>ID-Rd1y);+z-uDlcc zhKpe>I51cbF^BOvYlW*V9n$!Gti*hEXroL_7chV$9c5!&fVt;mvnQ>rMdKMYq#&9{ zLs&H=|9^;jLgV<2)k&ZHW$kRONC)zzGpwuyN=4G?9P!er9D(G{QMJ^TqdMtijvA#C z+k{8U?exXh<@MHR#wGQ$b!=>>E0pK!XFVSDGUGwfOymKlW3jpN{azrF=3CKU;jU}Q zmEW!EO4VK73=~thv#4-BMqpQhZUS8laATvb*4#ln)!v}0xftXHmzoF-__%HV9x34w z#9^Rg)It{#N3!%~oz7@Dr1g%_OSzaX^rUT$X}}llPWxOO)ev-pp!)=UPN6Xct!<$G WIO-zk%Q~9I5qmBBB94F9?f(FE6?BjQ diff --git a/bin/kernal_ultimate64.rom b/bin/kernal_ultimate64.rom index 6f0041a705790eab125143798ed0987a2997e0cd..f2e21005026ff3e59d38c8ed18af75497f4ee32c 100644 GIT binary patch delta 1885 zcmX|BeN>az8GrJ=gdmE%V8WL`E`ks+Kt$QJMv1VEwBBhVh~Q~8)pUop&h}W>IqZrl zgl!@$MWR#r&5`x;lZKRHgfok?##dxQJV`m*VVjoY?ve{wT!_`#2M7=Bz=-%{J8 zFKXUdvL(f+E>!KRSXEwDxqH(_El3!`CJSQ|2(G)Zd3zOZYJ0N3{yrJcXwB#wZvEQm8YHZ&E2SETugCQCzuzisB_%Vd4pZ*dK+{u?0ILsh-j2LJv z)M2x~vXBmFXx!Ka78I`1Jgs{XjP`17E-WLB&p2-12y0>bRYZ-QoaE*V4-DV>j=ODc zr?+pLsavSa4k0Uq9zcJKjY=Bo=!0-NY@UXaXk1kY7vXFuuBz0FV%zf|zA9cGFN;^k zcOP<8Lwr+wV_e%`uQQ|eTASDK0e8#RZ!|PII>MlA_J!8N30;Zqpzfw}3s`jaJw-5i z7=96gP;42+mOlv46pmFE!NmJT5Z3U0$p`puHkE;K{tUY&@r#IS7=6LtW)Cse3;dRZ zBjR*D;X{dxw@TL(Ig)?P&6+%Lw^ZnXyC$3LJqvT;4aU@KVS4F=iUq{+52eewWBRxB z$PhxS1v=tO5nh(4Dl`kn&{)7dZXHBlg^&Eo@iezy&6Hn zB>&H}D#`PFZu+ZBzYPr6j_zX+Ck*GJV&0LS#RviZN_v5$nD?i@Q^N^1+H&-58;fIM z*C={pb`Bv)6#pt>z1%t4bw%`g5u#p~J`!E0{rS7rbFJs;wblG5%NivtFPCqS)bj>; zHb+(X6w~1>ch^~oe-hPM|BhY}ua{5YqfwhQxBpDO@@>nTCr-X~>h$laQcEMp5Dl`52I-XqHC`sD z9&Hg}`CQoi0mb?i^!(oZxu2fj@j~!EtZm)0i!1webr?70=4Lv=KN8&GKy%L|)DMRQ1(yjZ%#RrJWWiHMHF$K9SbPS)3|_;r(pr9JlhwL#$#MS>pX@z z#P7;c(ihuus-1Ji+JYty7A9 zCeZ4Ng%|0pgZQhE>y+3WEHVqO)3gO&$tw^$^^UIFV)+ ztKwqLX@7=h>3DMS0l7#^>aO}=eOo>U2-)-t0m$(6-=X#pUeML zqUT>wY6=et`11fhK7|LOcsho=1K2F!ufupOfE#A9R=@)h{v+jzg8xkJSF!uc*!^l2 X=Y?@s052CDekYg!WE1;{;lY0a>&-xF delta 1890 zcmYjRdu&rx7{8Bh9UIcZUL9`i0BTy;uu)6^?O2S_Dn~N`6+?{Iph-6d8Z|-~W*cw| z0X932kAbL{YtKffHJvlTRksW^+B^U7swl)1rK1JK*WKFfZjf>PZZ{wQobPde-{btw z_uZD-mf9O7rq|<*^?Jk_pXd>k6{?Ne6hq@2LWmJY&FK(kNQVrsEy6s*=EC8#1RjL3G z4ZoU*t){V+HiFT3aeHtZ3U>L#0*OJ_cSoSI*;5t{eVKTPq4gb}7;R|o@X&hELmR{z z6M7bUD^7-5y4IYBjzbIz7$HVHiE0J|Jl>l`bWmBM@wg>PcZnaKKR&D@!Y(#Mf?8=(R+*t1}tx7?f z6Z0cz-UT#Zpdll`W6K3I{^5}@!zpg{(J*U@_4w+@|1YTI*>fU1-jfugcyJJ|@?W%U zLto6~k(i-6tq7eoR2%x*XwK$7!f-MC^oRfjWafZ-&H%%qZ;fBn3={}4T~SGZp3QcK zjL0K01F0f)5FA-&9(PMd%#<~d1ybA1)CEJ9z~z31Q&XBHR4WFCasnkG1^_bS_sE>T zM)sg}-87&r{mi`ArZMQ(3z{!WJR}5qu6B0q3O3;ZgLLF?Cx>_&m+B_R_*-+oO4A7X zihR#M&o!PP>nu&Ch*>^iSt91#x)RMxwEjS_xEzb;eA{?h=BF| zR_?t$oY3CNwSzz|9Tk#z&h^Ba>s-1+KZq`+Lg&RGIz5WU$I*{tf_Ubjx6_+Pk1D)Y zjSBnL=e}H!Gmu7`b@J={TiD&Ce8CIz^i<@|{w*9T)Fb7{MWh7|ZhV|X7c6F7B)*{g zjzT>EdjPqC@QE?nkM>MwHFPbF_ot=&1NLcwMioxwLxw;D=B~ctJK^hrn3d$y!i_9L zN{eo2-JhZFauv&`>A`8u$TrY6w+x)b-2g(XclfdQ`H zrserz=G-#7ZCKUO;xww)(Q)%>WNV1=qABum$qih+P7)=Kg@A)AO_|hwC;ou{7&RSw z8*@$|_R=ciEiGSedVU6v>o3y{)*SS&1%ncLJUbT=9{aEL?JX@~osKE`p?00b^uNxb z$YkvE57lu2ezuj~a2w~c_V`?DEA~(J4D2VT93^amoORs()c9n`5JO^*_^xcUb8(3| z%*PKi@!#3FdLPc83NdYMT$qi!c!gDSWGhNc!c^qTY=}9>+{4l5S2sC^6p;^rl-Z-nF@P=8<8D2lDxx)|6YOBI^ zS&clhuo5!vSa@4m>lJVK5a;I90&mFDc8K%&@UvHZxb;e3NB;es)gim3X?%f{SFEZu zmrI9vni!i?D+clDQF_E&5gzT(=~39b=PDMPd-7Vv26iR6T(NA;@w9BE!TZEuBp2Qi zJFl6q368t47JJ^XI_c)|KpJMmn;n|9e5C0SZ9XJFvFH@L zmNZnlmwuVTXHxj3NqjtmKT6?4DZE3+KaSx`DZF7Ccc<~6<7A+6$>PCOqmyr3#y3{+ YxMB?ZQ+Sas#brid80*C?M&0GV0fg&wH~;_u diff --git a/c64/,,config_generic.s b/c64/,,config_generic.s index 909a70ed..3843ec00 100644 --- a/c64/,,config_generic.s +++ b/c64/,,config_generic.s @@ -22,6 +22,7 @@ #define CONFIG_DOS_WEDGE #define CONFIG_BCD_SAFE_INTERRUPTS +#define CONFIG_EXTENDED_SCNKEY // for now has to be enabled // #define CONFIG_DBG_STUBS_BRK // #define CONFIG_DBG_PRINTF diff --git a/c64/,,config_mega65.s b/c64/,,config_mega65.s index f292a412..e856a52c 100644 --- a/c64/,,config_mega65.s +++ b/c64/,,config_mega65.s @@ -22,6 +22,7 @@ #define CONFIG_DOS_WEDGE #define CONFIG_BCD_SAFE_INTERRUPTS +#define CONFIG_EXTENDED_SCNKEY // for now has to be enabled // #define CONFIG_DBG_STUBS_BRK // #define CONFIG_DBG_PRINTF diff --git a/c64/,,config_ultimate64.s b/c64/,,config_ultimate64.s index 1c075909..f7ce1b93 100644 --- a/c64/,,config_ultimate64.s +++ b/c64/,,config_ultimate64.s @@ -22,6 +22,7 @@ #define CONFIG_DOS_WEDGE #define CONFIG_BCD_SAFE_INTERRUPTS +#define CONFIG_EXTENDED_SCNKEY // for now has to be enabled // #define CONFIG_DBG_STUBS_BRK // #define CONFIG_DBG_PRINTF diff --git a/c64/aliases/,aliases_ram_lowmem.s b/c64/aliases/,aliases_ram_lowmem.s index 8a90a931..bc391aae 100644 --- a/c64/aliases/,aliases_ram_lowmem.s +++ b/c64/aliases/,aliases_ram_lowmem.s @@ -105,43 +105,51 @@ .label BUFPNT = $A6 // -- NOT IMPLEMENTED -- .label INBIT = $A7 // -- NOT IMPLEMENTED -- -// #if CONFIG_EXTENDED_SCNKEY +#if CONFIG_EXTENDED_SCNKEY // Reuse RS232 variables, since they should not be used by other things. // Carefully avoid $A7 which is used by 64NET .label KeyQuantity = $A8 // 1 byte .label BufferNew = $A9 // 3 bytes -// #endif // CONFIG_EXTENDED_SCNKEY -// .label BITCI = $A8 // -- NOT IMPLEMENTED -- -// .label RINONE = $A9 // -- NOT IMPLEMENTED -- -// .label RIDDATA = $AA // -- NOT IMPLEMENTED -- -// .label RIPRTY = $AB // -- NOT IMPLEMENTED -- +#else + .label BITCI = $A8 // -- NOT IMPLEMENTED -- + .label RINONE = $A9 // -- NOT IMPLEMENTED -- + .label RIDDATA = $AA // -- NOT IMPLEMENTED -- + .label RIPRTY = $AB // -- NOT IMPLEMENTED -- + +#endif .label SAL = $AC // $AC-$AD -- NOT IMPLEMENTED -- (implemented screen part) .label EAL = $AE // $AE-$AF -- NOT IMPLEMENTED -- [!] used also by screen editor, for temporary color storage when scrolling .label CMP0 = $B0 // $B0-$B1 temporary tape storage, [!] here used for BRK instruction address .label TAPE1 = $B2 // $B2-$B3 tape buffer pointer -// #if CONFIG_EXTENDED_SCNKEY +#if CONFIG_EXTENDED_SCNKEY // Reuse RS232 variables, since they should not be used by other things. // This one should be initialized in cinit to $FF .label BufferQuantity = $B4 // 1 byte -// #endif // CONFIG_EXTENDED_SCNKEY -// .label BITTS = $B4 // -- NOT IMPLEMENTED -- +#else + + .label BITTS = $B4 // -- NOT IMPLEMENTED -- + +#endif .label NXTBIT = $B5 // -- NOT IMPLEMENTED -- -// #if CONFIG_EXTENDED_SCNKEY +#if CONFIG_EXTENDED_SCNKEY // Reuse RS232 variables, since they should not be used by other things. // Carefully avoiding $A7 which is used by 64NET .label TempZP = $B6 // 1 byte -// #endif // CONFIG_EXTENDED_SCNKEY -// .label RODATA = $B6 // -- NOT IMPLEMENTED -- +#else + + .label RODATA = $B6 // -- NOT IMPLEMENTED -- + +#endif .label FNLEN = $B7 // current file name length .label LA = $B8 // current logical_file number @@ -192,13 +200,13 @@ .label BUF = $200 // $200-$250, BASIC line editor input buffer (81 bytes) -// #if CONFIG_EXTENDED_SCNKEY +#if CONFIG_EXTENDED_SCNKEY // $250-$258 is the 81st - 88th characters in BASIC input, a carry over from VIC-20 // and not used on C64, so safe for us to use, probably. .label ScanResult = $250 // 8 bytes -// #endif // CONFIG_EXTENDED_SCNKEY +#endif // [!] XXX document $251-$258 usage .label LAT = $259 // $259-$262, logical file numbers (table, 10 bytes) @@ -221,20 +229,23 @@ .label MODE = $291 // flag, is case switch allowed .label AUTODN = $292 // -- NOT IMPLEMENTED -- screen scroll disable -// #if CONFIG_EXTENDED_SCNKEY +#if CONFIG_EXTENDED_SCNKEY // Reuse RS232 variables, since they should not be used by other things. // This one should be initialized in cinit to $FF .label BufferOld = $293 // 3 bytes .label Buffer = $297 // 4 bytes -// #endif // CONFIG_EXTENDED_SCNKEY -// .label M51CRT = $293 // -- NOT IMPLEMENTED -- mock 6551 -// .label M51CDR = $294 // -- NOT IMPLEMENTED -- mock 6551 -// .label M51AJB = $295 // $295-$296 -- NOT IMPLEMENTED -- mock 6551 -// .label RSSTAT = $297 // -- NOT IMPLEMENTED -- mock 6551, RS-232 status -// .label BITNUM = $298 // -- NOT IMPLEMENTED -- -// .label BAUDOF = $299 // $299-$29A -- NOT IMPLEMENTED -- +#else + + .label M51CRT = $293 // -- NOT IMPLEMENTED -- mock 6551 + .label M51CDR = $294 // -- NOT IMPLEMENTED -- mock 6551 + .label M51AJB = $295 // $295-$296 -- NOT IMPLEMENTED -- mock 6551 + .label RSSTAT = $297 // -- NOT IMPLEMENTED -- mock 6551, RS-232 status + .label BITNUM = $298 // -- NOT IMPLEMENTED -- + .label BAUDOF = $299 // $299-$29A -- NOT IMPLEMENTED -- + +#endif .label RIDBE = $29B // -- NOT IMPLEMENTED -- .label RIDBS = $29C // -- NOT IMPLEMENTED -- diff --git a/c64/basic/cmd_load.s b/c64/basic/cmd_load.s index cc4698d7..374943f1 100644 --- a/c64/basic/cmd_load.s +++ b/c64/basic/cmd_load.s @@ -95,12 +95,15 @@ got_devicenumber: bne got_loadaddress got_secondaryaddress: - ldx #<$0801 // XXX use start text vector - ldy #>$0801 + ldx TXTTAB+0 + ldy TXTTAB+1 got_loadaddress: lda #$00 // LOAD not verify - jsr via_ILOAD + jsr JLOAD + php + jsr print_return + plp bcc !+ // A = KERNAL error code, which also almost match @@ -218,6 +221,3 @@ end_of_line_search: sta OLDTXT+0 jmp basic_relink_loop - -via_ILOAD: - jmp (ILOAD) diff --git a/c64/kernal/lvs_helpers.s b/c64/kernal/lvs_helpers.s index 996fbfa8..4548f58e 100644 --- a/c64/kernal/lvs_helpers.s +++ b/c64/kernal/lvs_helpers.s @@ -124,8 +124,7 @@ lvs_display_done: bpl lvs_display_end ldx #__MSG_KERNAL_TO_HEX - jsr !- - jmp print_return + jmp !- lvs_wrap_around_error: // This error is probably not even detected by C64 Kernal;