From a4d9679019f7d790c17e37989a30740e2e648f32 Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Thu, 25 Jun 2020 21:23:07 +0200 Subject: [PATCH] fixed mising shift memory implementation for memory models 46K and 50K --- Makefile | 1 + bin/basic_generic.rom | Bin 8192 -> 8192 bytes bin/basic_ultimate64.rom | Bin 8192 -> 8192 bytes bin/kernal_generic.rom | Bin 8192 -> 8192 bytes bin/kernal_ultimate64.rom | Bin 8192 -> 8192 bytes bin/mega65.rom | Bin 131072 -> 131072 bytes bin/mega65_pxlfont.rom | Bin 131072 -> 131072 bytes c64/basic/e000.under_rom_routines_46k_50k.s | 72 --------- .../memory/e107.under_rom_routines_46k_50k.s | 148 ++++++++++++++++++ c64/basic/memory/shift_mem_down_38k.s | 30 ++++ c64/basic/memory/shift_mem_up_38k.s | 30 ++++ .../{ => memory}/under_rom_routines_60k.s | 42 ----- 12 files changed, 209 insertions(+), 114 deletions(-) delete mode 100644 c64/basic/e000.under_rom_routines_46k_50k.s create mode 100644 c64/basic/memory/e107.under_rom_routines_46k_50k.s create mode 100644 c64/basic/memory/shift_mem_down_38k.s create mode 100644 c64/basic/memory/shift_mem_up_38k.s rename c64/basic/{ => memory}/under_rom_routines_60k.s (69%) diff --git a/Makefile b/Makefile index 6b586abb..e3102ca5 100644 --- a/Makefile +++ b/Makefile @@ -25,6 +25,7 @@ SRCDIR_BASIC = $(SRCDIR_COMMON) \ c64/basic/math \ c64/basic/math_consts \ c64/basic/math_mov \ + c64/basic/memory \ c64/basic/print \ c64/basic/rom_revision \ c64/basic/tokenizer \ diff --git a/bin/basic_generic.rom b/bin/basic_generic.rom index fa704fb4bbd494b79f2364f811d5b72ca44e6f6d..68bc99f4a1ad29ddad7d895cabba1430589546e1 100644 GIT binary patch delta 2555 zcmZuz3vd(18D5=iOMXfwG8TSmc{o5Yt^);(6L|~?6A_MSLOXQ}xII6SUqBiX8so&c z%`tAKBr;n!Z4#$KW@XOQzH=$HElb!57<{f1j?{fkGmV8UN|Gt2Tgm{X$FvM@D4A@ zHKiMS`#=Nt_K_z|i*xVwK{x+T3Nt;%j`9ifU2(sFknr}?-+anDG&|%**bpQ;;_6NF zcFY?9yOQ3N?PQUmH0R-<8&P|^eVi7z+dY3W$^aGIg3p@ z`{?x)Wb1zYrrCBk9R+(N^jsFQ-L`z0)S7MM(2*PI=;ON!Z3cAo>ZYHhz4K+N;5g2sch zsz!6HqUYb2MIZPMe|R0j{$K%*3166B%8f>!30v?$L^I(_5!Y(A{4WtV&YPt+0XFfV zwu1NonEz4ansx&=k&xHt7T^qE5=lwgZn@#7uJAc93HEV7b4W6Q(QKmc^K+u(N#_&p6EL|}30JMI~rbIOC<2{iW}@b>!XTcy3fCQgSXHmH95&ot)=R;Wzg|Wbt;dx-z^Pf(!ldBcCPPIN*XQ zW#h8n$V0r(F=U5-zR$rQ?*;H~quaDeC-B0v$vwvhBBUY3%E7cFDa-9J?8MjmJcctB z9iGuLRuYa6su`fs6nivm7#jEl2(N3#0q}W ziw8#vB^25(?x&5RYEWtjRe@4{s1lUwLKRUZ1cfo^YB|8DYfuoF5AwqCDmI62VriyO zunIy?*fe1-CUb_R$Bc2rV$4`p7IgOD(x69=%Yw8B*qr2viHhEh*r<5!y~Q~9FJsoD z?Mf%7Ynw2C?&QC&w6(P*jJCKwak`hQEv__&C&n5;x|bxS6W!O@sgTFxv$=AG?20cl z(Dnj7|K=64H7AREqo3@_$;ls;nSlt59hKEs7pr;#4zDBdq}LI({r-?XIz&$Al=f++54|KDKY#E2mUGSL&W|0saL{L$q%j!+%MD9Oqhl?9ibr24onXZ41q8>Aj{;F4C|6E`Be;NLQHDhKIsl` z8io+Fiw-=`ygne4MVTAY&@^SFWRzrtoTnqH&fFYNSBZ9-Cl(7t$;@G?Ldz^@>55_+ zhwt#x3?7}~TZg^AX`{k*`yPmD&>L=y``b}^BfLdBwqnm$D;0`2(YGEH>!;J*h*Th?y4 z^l3lN_>3y>flvyN{@r@U3I>-RC(s+Ka3P3OU%eQr)FoOXodP^gNlW+x0q>Ny4Kl(O zp!gH&q?XF|R#A`R7mf*B8RTmM>IeVZS<5=v_-iX$dNT07p!1|teM95Ksd24SdIb{v zxYhxOAune?+hSDU;8CV}cC&L+yI4<)#fH}$)@r+0ON(ofSVvbEhHAw|nh&XPFKqRF?nHbA4{>fRHL*dBC>i2y)G1M55uqWa8yHUr)bwe9wY#%W!< zoz_Aa>%?NF{3k1U%hXR&Z98(-08Jp6{oM*D`UKoM%z}j9@w3(7UD9fM;&Hsx&mzTQ n^wsl8TIF4RA|L-{{`mxGic+N4P+9DDSTCh3kAXwd&3vq6Xy delta 2518 zcmZ8j3v5%@8NQDse#MECCBq>h90E8=n?edo6S4(CXjD^f3Jq*XK)35WjGYHVqTN=y zHn8=es9HADE7Z|0)blvDuk*kbVo4l3NmodH(-f{)HjTCG91>@gDb$RWHtK};UzmJy2p`#YBZj;Ufy$ zPAt6e)3nE!cPnz-`lv+7H1AAHQt^z4e4l&Z5q77q&N?>d zQVqJ9IOEFTj?D=Rs&93ptGAsj>@@d4=d+>Dy-2zZH_iU{e5+I<>&WcR1fCU3xN5h1 zR^BBg;tf)_V}~>&=R}g%_{_gDPotOTxN^7j(f=~L6{fQOMtQdn;W?YvCjC-o@N7ix z6N_F$*Ao%>3{NE+|4z={Ecg7vypuvyRA|cRI27}odgApB$Vbp-!c7LyPbM5Jr}a9i z!0{V-9yup)JkCbse~OtnPgLW4nMDVpBG+qRNnURbOY(bj*}-hqJdni>>Dj?dwhS3q zu6{f*@Kn`PLV;?3@#P68Me0u1Mab6Eb#SjfiaU&LI&6=qffjzDT2mGFp*s_P17boT zoaDz@PUR(eMjo8!T7|miNG*6I)0Kvf0qNcXP6SPbx3iz^J~n6b!3GzbT>AfAt_N?! zMq;^QkMHsCCia?`MJn@GNovO`Vlmp)*h1RyQPPUrNDFQy&A0_3(;WZPqQz)!wzgPX zt!>t$%5iy#S5`3W!paFdw(!Ifv)4<=zY)Y05W6DIPC9WH>A;<&9e2Qi_V~w(cB8f3 z+F|Xqb|nRUt_Xrvtn9R4J1?jWMfx9$eGJ_*ZMbLS3Ps^b!-@)r*hf9&Y!`c!rk(6| z{ME&VX;R zMj)_hUhc-YC_qw(&pX4YxZg!NwJ0+tZb{AP)a)f^_)T54PNe!M2K_yOT84zz)GNF1 z^h@hxmSYB_N{2zJ^=C#PJ1Qg;FXP(!(GLbtIDsY;aLwTX<6)E%{$?iAcGFP96mlppx*crZI1r5J&udPzmla!(iiL9-&`T5Ged6Eu7P9 z7_Cv{rJTn=B}c( zcT!jZLA}`bjjvd>NV~Q>?{Zj?)FtbUSsUL(#Jo z+hh3BnKl}Xo@FT@lL#lO0O3S0ARH*|#{pEbzzxs4P)3)j)6`*VHpOr<7M4JnVc z;q{~}){57W(pU>#OH8q5M;v1_*hs(%XTuMr?X|Zcsp5#v|V4PG;Qc<#2QBAm7 zaB$PU^W3zUo}Q7RX6UqJQ?ZMyX1;jfYpa?${9^01>(}N(3&F9#L}={h#Lb0pSU9+H zQ`5flJRiOEyWx@1;8*X&Z2(yF_lON{=#CV4&=hh?j?^>RVcp9iSuZ3 zo;x{49>;a00&nFxm@av+7U0H7alr(!#50IhW<**^WgarxNxAlOvtvAZ>!w3bg5_U9 zO6k2yO7W>>CDC=sP-hceO{@;Nyhy`m09q45XNKVpzZ%&m{4DzU{P_y^<3x-8sGv{k#UxsgRzIG4I00wfwYPwA zV;rRH-qY|LYTDhn7d_MPTtm~&9jN|0JGrN+qTKVTra$+PTB$EiQTlh2+ZB-*?{On!`2WEr!}Bt~6a*vG1!Nzp&*WmoHuZ+k7m(5WO}TzZQ)w zOvd7Td&f@?bsp||^=I9}k)QisJNk>)d)|1{-y8q`4}I0}HTKCO=C=;)3du|1MrrZSoksXWqmv25Fh4)cQe?N9l*= znCpvHYa)`WdaDvrb#Il3AOqn=cavRcNm#(9Z{3?!pBViY2qxhLQDL=`PHciTN z^Ej~>Sb^UON|j0~nH4bL0GPpT_{&pddX&1HHSD8bo%o>0oEO3nYM1ZpJjYAt}nb~jqLOJY}1|ot6p(UCdS~7A*SsexgVCMV`}x7 zOw?ZkT#R89n?LI-#8lj}^)n24TApz&if95csxdKbQ15_c-BpgSq!QCc^$WN^gAj|5 z0U--wOo(HV$-uA{a2ibr85tG=SObI@ED&ThAq!(=853tQaID#6q35l?(QoyF?PY77 zc4R~MMqC`DpV)TOW6oN;jQSCaKS|--DCJ!Rb&rLVhgFU|6;jImE~PS@l^8vkEK_iD zE&1&rj)rh7g{M<~j*Nx$RmRW|VwH0B`5{IhzDI{X8&uNu5S}a@@TIGxT`2mF>`|oL!1LG*YjL*=3@GY#+wQhw$yVvM#xS zr2Q~OKh0jr0)L&3ZR~!H?s8z`etil3zT+F6Oqq;uaTNEB$L!{-)dB+TAd&_1O^ zwM(;4q=Z?yg#2(MIIBJh9NnpO68|@qOKMI67Ak1K^Ok1@p9+$FBg*^#>m1gd`ux## zodb9*=so3C-c(s(Hlg;*hjb#TeLQV*uA*00c(zq(UcnCHd3Pery7{ztJ8OViU`p>1$l$S0@%>ZCC zX+4W?M*($mUPB0jyCwO!)Sz<2dIF!zeqryJ*Mse0V7kL&`4K z50V;$aj8+5l=ccyH!t63z|JThJ?Ym2gb4oS>Hk(=KMOWumhEkA>&f9{ttXd*6vM(O zE?FSs^U`{NuuP~>{sv8niU^5VO{A2}B~cm9Io z;>(uzHYAjpXaCUNe(C*_-UM+B!)N9=sj)ki< zixK%AaZW<*bczF}I-Wn$=(55`^U<92J)uc@N!Ta7DC`BUH0o$H74BROjL+P}D^z9f z_P{%-ijogwy3EwV^3HlqS0zr~Bl0{xbB%OO1|xHpFdMM&1YYYk!3OO~L?n`u8j>cd zS!HF02S1MxY#pd0vy(h1)SoRy*4<5Vq*K#b!e^#+IPK|FoRYobdX-?8oY$)br{uha z6a>-M=QYXh8NkOzsBigmPWUj4;w7I-VfcgU(qpFTUFph;X!PJm2V!atbVM$pelBMT zd9p>wS2eGD* z1)kG$hitvLa4KLv)7V!xMiHUdnf5#%W@XQ=|k3{ji4(46{$LB6=V7W12Ip~6WbB=@DEIJ=_%T1 zttkSawxxlpglv@>SlXm1_2~gNp*bt}386S7I0pwzvZh^Vg&Js+u?-{_Zq=yEhFaKqoy5k@gY}PY zU13_1jnhR)Y)Owm8y(EEI8JU*;%h}L!H+r}H1*Bsa)koZv}tn)akHS(n~6fBskq-U zoy4?%c6D{mcfNDZ_xOE})3>{Cx4a|og_2EIKYj4AXUEmUuXoH{n_G;;`zaY`w(cBaH2*Zjt;n?<>6fT{51BbQj26 zo~N=b9?&6kTH#ck7|6>}T0u&^C+KAIVt#eW?creIScup7V1aOZnEW{Zgkfx4*d9V- z`qSibsalv-f|N(*1LUr7cy+BDRZqRm510S>IfT{ce<_NNR$ zlV22W-uFrx4TNPY;^XLalCIbEf=Q<3HjxS4kW<*87tAts<4M|vW3(N|ZK5bW6S$y0 zCbb4`saENez)jU8T_AG7cK+!RvRJUScf*KC-S7Lg7WqZ$Z(MRKwek+dFt~}jZGHoG zQxATPc3=-k>j0_k0BxIgBjdJt+q~`G4zI`i8oRE3EV3O8r!c$W$8He2$$jz5W%5c$Z|GGVv=TsMT$xXR|TU?D($r-Q`pQbbsB2& z-U)-{Z(3?dW0BB1s##{O&6)rATcH_OT_4W)O!+Hyy`yvm7Aq%QK@Qy>_Kl*Y;h-KU zx=YDw#lgHB8QO`?ECe5%5vC&&cb4PPM_F`gQnCarD4Hdwi`MlPN0co9D~c!$gH~mi zT%3v=)#??b)e1k8(a8u(WYKgM0)r#$@(p>6weMjhxJeu8#!J04Y1&fTM zpc3ju;vNwYw4j-Xq5|A>i&l;%vrnrQH20AAYmQF||B?qpP!i+@8jK0B_gZ#Yy$ebt zE))%jU^JLS4i>*qem71BwaZ`<=yAd16PCjyUTh<@)LwCWSn5NASwLnkEB{+DYbEIx zZ~+4Rx6-HhZ_C75=G+KHc@!6h3PFv6RQL-L+Z zPMlr$ncf(RrVTP5G>GKfhNre^VJVAurFo6zGlN6OQBV$(*c8wO3&C2UdV$>E@Jd7L zdFp*Wi@ieU6sUld7FtI*4guS*eVw{hy*y9- zOKb2p>cGxSv_Oo)#^+2d`6RTSCr;3Ao>v{6{#WREOl!I)T{E6P6WQlaUeQ)K$wq-=!4-wGmX}Lrs)N%%(6s$xXrp;QO*<# zEoxk9!bQ}w)Qm0E@=s3T;I#2hm=?K4(ccqfpz2UBlz0TKyF+Cdz+n-pET9J=t^pWE zeNgb|GSnTO|IcIDp*YkcIuH3bFFAzQ6QOx^KlF&bO7Gw|m8)tg)2(o$u3x!k(dw|^ zO(-A!H}gJYvi%d#c5LYLVc&>P`K8L^`ILHA`U!h1)l(ulw&`1zGYjB0{NVK=@S2>l z?5nzw^x+~v_`ORqbjKXjjZ5sQ1if!t?PR|}CZ*Lct>4aZa1-)a=5bU+{V@h1`B8OM zH*o(#X-B>%-wk-cGip(?>V0_M%4s`ZZ-b|cq0S0S>~9=>w$2do4|NTwYcriQ-7`nj h)mkyfNvUg@&disbT-GuTLbn7qap}xamCqa#zW_--CLaI* diff --git a/bin/kernal_generic.rom b/bin/kernal_generic.rom index 132e1f620fe8c3a473cfb6340219844a857854ad..18729a729054a5916325d00e9902073394648461 100644 GIT binary patch delta 802 zcmYLHZ%9*76n}4T#mq(~t2CQlHhr7qKLm62$I(s65clV@a>QISp|iy zh?1Zl)>WT@+p;iiHX$+>5if$iNZ_=$Fc1x-@RQxAL5IsZKhB@uJ@?!*P&ZK5KMD?p z*dQBV{cI^~XKgI&z@@4Wm0-Ktfr_zB^&%@~RZrN2EVu-f;$mdSR%F8##AZStlm(6h z>bL{fs;4KhLoEY_*eDI#(;Ud1kSP$}1>>(lUow^r<|jeoRhWTuQP>$LUWo>#+;oak z7`PC}ktzn>Uj^HVNTfgq@(W)5 z?_N@NGXBh-TeczE&dIgXGv&BkBuywe@}{(^9Fp%zGvW=plE&gR&Gz3)bJ+b(*lLM2 zW5J=iQ}$R*$`CeVcb;HCZtO$dxC8mH7j<9{^2!wQY<sD^8=MwF zBnxR30&){tRY-wYC1K0Qg2pD`APV6C3SvJBkbM8va%o1$tR&dGL zcPG16zb*Ra$;jUnH1kJm02&N*hv1Jyze(t?0FFdcUEEh6kMLXX+;)EAGe^;AW=b0 z1&GQTK>oOeG{0L$y6)240(O%Pv?jp&ak5))qd-U!yATD#)3+NRG!oN^j&&lFY=YmC uVxQiuGpEIe`jds9V?{rjU37!^uePs(TCFZZAC0XeMnojQbB6*C|EJhMqdPf2Il)`zJLDtzL}2g9oxgw zTEe75HfbGU+(I$2^7HaVV5b0AXYlRu2+L~|*po}K`1*uY^SG|djNcXLsuJgSW(9m6 zEU;Cn=?05Zi>DKh7`}B(z!kmVEOnJOeP;Rj38)w@$g^N4I&cuZNx(}oF$QawW z@-Nd6t!MecIDP`r=nBn?Y&3Z^+>-?RfH$&Dt^&t^FS1eAgLA+isgbqd8VE$Hh-uVOEfr2Vm! zY>+m^Cge(KIyNqsN%2^}ECv}f(=Xm<)`lOB31B5YXe9otHj~RrJkaPt#0zy6#X|yM zrtN|d*jFIsH1k-La?0>dsSKZ*_`pvS|75T$fJbs}QXWJ2)w7hwBv7Eu7x_aJs1-2; zo~U&QyiqH7h!wn~aj8lkF$qWwf&UbzL-c9Z)%{cvZqKER_(2b7sfA?;Xd+Lj&;8Wr zj7j*@z@{E9<}?Sx5>qQ7ygGyTWN8ibXUDOPK%xFGNbJoge+4G2|*hb+$Qj&naiEMy<(PKzn~B=%Aoqb zvuo_X;`rJ)e=Nz5cKiH+;PK{`6Rjstoj!B+T&S)6{DpAG#pM4(`1j)$byAgAZFg*R zaudCq=p-F)$&2kJRT@KHyj!w-)y^#U;lN>L_nsr>hWh#~4V%q-cbPXJ^vCeNHzjo| FegplSY$gBz diff --git a/bin/kernal_ultimate64.rom b/bin/kernal_ultimate64.rom index b228177770ea1c7aa0c2e50d274cb30285e7e397..0880452f31d436301289b3c319c3f6d79f238101 100644 GIT binary patch delta 734 zcma)3O=uHQ5Z+`HZHv(;DMY36NYhP1qZUD$Dwg6Y>Vkh)#ohcY*=$nkNdzGQ9Vk5| z<{~0e7ABe$OF}OmitWMHZcmGXB1Py@b`Jq@m4Xz(_%SE zvaiS$IEBk|F)qqQI4*%PGYcaaH8T*#h?$0AaoK(3KuXAlfsp~gUrJ%rdwUU)-k7|I!=!o|U(H=|%)xQK4xc+VoFa|GPS9C1YiMBbkJg0T-1FEMN)+ZeOzn?ma#5LKz*1C#v!W6Y=>#WvS8A35A_koC6 zn86HW=`1pICg}zPDf^=(2BnmgmNHUSnsM6ouYywniUOxYh8v=QqA6>nb(+#0McJW~ zu>eI>pn!Q$XhYuKvgDwYmlUZW6?;VA93ol;2PuLqFbpH`cMQ5~iaQ)$eqCYtl0oDZ z>K_>7@zPxKNs_u84CWxv2=HH4YD?~0m&xi*YmDr!Xy@%XY3z{auh8fB&oggDdw>iX z^Od|GWN~Zag2{cxrtr?mvSzGAcC3>X9iyADZnVi)T^|Ti9U=x;2 z8}S~(GSBGuOgz4=<>=2Q7O*k_o!wJ|NBeOVPLH z!!f^<#BGZh4YsdNV5F^hHx>4xsA-xz8;*Tc^v=3QXj=p{cyM)sm)102tD3s%Ly{~a zly}D(e*+4Aa!(+nu+8F%_p=TQfNV!DE7(6ca`n(xm0Z?gZ^{4&00RgBA|NLa3{C-I zk&_N5fCFJJzyg;DA{V)wAR-q=P9h2fH#kL*S$U4%#5vs2@$b`X%c8gEBho#I2SxQO zd{I6YDkSFd$!2BQ!#9g9!_z~m#V1IIge-bymYte40&1TTRQq*8J%wd|S+M+elUBt( zj$Jlxlj-vX3x{MKI2#3&<3a780i^b^W2Hod?8i_@EEBo=!o^FM!^2muj*O~f*R<=A d8{^TNw_@?7|DVKh;k;`%K>bDYuZ6Dde*nsSDrEow diff --git a/bin/mega65.rom b/bin/mega65.rom index f28ce902d8837539e4f380623dbd3bc3baf29e9b..f70851d7b6317a631fd434c80393b94e118c4f92 100644 GIT binary patch delta 2230 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 diff --git a/bin/mega65_pxlfont.rom b/bin/mega65_pxlfont.rom index d52ddce0891b3260a921a8f864f4c73f7b009298..91d86cbb65fc9c430c5173f7559e30d90e25765a 100644 GIT binary patch delta 2230 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 diff --git a/c64/basic/e000.under_rom_routines_46k_50k.s b/c64/basic/e000.under_rom_routines_46k_50k.s deleted file mode 100644 index 6aef9262..00000000 --- a/c64/basic/e000.under_rom_routines_46k_50k.s +++ /dev/null @@ -1,72 +0,0 @@ -// #LAYOUT# STD * #TAKE -// #LAYOUT# * BASIC_0 #TAKE -// #LAYOUT# * * #IGNORE - -// XXX extend build_segment tool to allow to specify placement range - - -#if CONFIG_MEMORY_MODEL_46K || CONFIG_MEMORY_MODEL_50K - - -peek_under_roms_via_TXTPTR: - - // Unmap BASIC lower ROM - - lda #$26 - sta CPU_R6510 - - // Retrieve value from under ROMs - - lda (TXTPTR), y - - // FALLTROUGH - -peek_under_roms_finalize: - - // Restore memory mapping - - pha - lda #$27 - sta CPU_R6510 - pla - - // Quit - - rts - -peek_under_roms_via_OLDTXT: - - // Unmap BASIC lower ROM - - lda #$26 - sta CPU_R6510 - - // Retrieve value from under ROMs - - lda (OLDTXT), y - -#if HAS_OPCODES_65C02 - bra peek_under_roms_finalize -#else - jmp peek_under_roms_finalize -#endif - -peek_under_roms_via_FAC1_PLUS_1: - - // Unmap BASIC lower ROM - - lda #$26 - sta CPU_R6510 - - // Retrieve value from under ROMs - - lda (__FAC1 + 1), y - -#if HAS_OPCODES_65C02 - bra peek_under_roms_finalize -#else - jmp peek_under_roms_finalize -#endif - - -#endif diff --git a/c64/basic/memory/e107.under_rom_routines_46k_50k.s b/c64/basic/memory/e107.under_rom_routines_46k_50k.s new file mode 100644 index 00000000..b46a03d1 --- /dev/null +++ b/c64/basic/memory/e107.under_rom_routines_46k_50k.s @@ -0,0 +1,148 @@ +// #LAYOUT# STD * #TAKE +// #LAYOUT# * BASIC_0 #TAKE +// #LAYOUT# * * #IGNORE + +// XXX This can be any address - but definitely $E000 or above +// XXX TODO: extend build_segment tool to allow to specify placement range + + +#if CONFIG_MEMORY_MODEL_46K || CONFIG_MEMORY_MODEL_50K + + +peek_under_roms_via_TXTPTR: + + // Unmap BASIC lower ROM + + lda #$26 + sta CPU_R6510 + + // Retrieve value from under ROMs + + lda (TXTPTR), y + + // FALLTROUGH + +peek_under_roms_finalize: + + // Restore memory mapping + + pha + lda #$27 + sta CPU_R6510 + pla + + // Quit + + rts + +peek_under_roms_via_OLDTXT: + + // Unmap BASIC lower ROM + + lda #$26 + sta CPU_R6510 + + // Retrieve value from under ROMs + + lda (OLDTXT), y + +#if HAS_OPCODES_65C02 + bra peek_under_roms_finalize +#else + jmp peek_under_roms_finalize +#endif + +peek_under_roms_via_FAC1_PLUS_1: + + // Unmap BASIC lower ROM + + lda #$26 + sta CPU_R6510 + + // Retrieve value from under ROMs + + lda (__FAC1 + 1), y + +#if HAS_OPCODES_65C02 + bra peek_under_roms_finalize +#else + jmp peek_under_roms_finalize +#endif + + + +shift_mem_up: + + // Move __memmove_size bytes from __memmove_src to __memmove_dst, + // where __memmove_dst > __memmove_src + // This means we have to copy from the back end down. + // This routine assumes the pointers are already pointed + // to the end of the areas, and that Y is correctly initialised + // to allow the copy to begin. + + // Unmap BASIC lower ROM + + php + + lda #$26 + sta CPU_R6510 + + // Perform the copying +!: + lda (__memmove_src),y + sta (__memmove_dst),y + dey + bne !- + dec __memmove_src+1 + dec __memmove_dst+1 + dec __memmove_size+1 + bne !- + +#if HAS_OPCODES_65C02 + bra shift_mem_finalize +#else + jmp shift_mem_finalize +#endif + + +shift_mem_down: + + // Move __memmove_size bytes from __memmove_src to __memmove_dst, + // where __memmove_dst > __memmove_src + // This means we have to copy from the back end down. + // This routine assumes the pointers are already pointed + // to the end of the areas, and that Y is correctly initialised + // to allow the copy to begin. + + // Unmap BASIC lower ROM + + php + + lda #$26 + sta CPU_R6510 + + // Perform the copying +!: + lda (__memmove_src),y + sta (__memmove_dst),y + iny + bne !- + inc __memmove_src+1 + inc __memmove_dst+1 + dec __memmove_size+1 + bne !- + // FALLTROUGH + +shift_mem_finalize: + + // Restore memory mapping and quit + + lda #$27 + sta CPU_R6510 + + plp + + rts + + +#endif diff --git a/c64/basic/memory/shift_mem_down_38k.s b/c64/basic/memory/shift_mem_down_38k.s new file mode 100644 index 00000000..471ac56b --- /dev/null +++ b/c64/basic/memory/shift_mem_down_38k.s @@ -0,0 +1,30 @@ +// #LAYOUT# STD * #TAKE +// #LAYOUT# * BASIC_0 #TAKE +// #LAYOUT# * * #IGNORE + + +#if CONFIG_MEMORY_MODEL_38K + +shift_mem_down: + + // Move __memmove_size bytes from __memmove_src to __memmove_dst, + // where __memmove_dst > __memmove_src + // This means we have to copy from the back end down. + // This routine assumes the pointers are already pointed + // to the end of the areas, and that Y is correctly initialised + // to allow the copy to begin. + + php +!: + lda (__memmove_src),y + sta (__memmove_dst),y + iny + bne !- + inc __memmove_src+1 + inc __memmove_dst+1 + dec __memmove_size+1 + bne !- + plp + rts + +#endif diff --git a/c64/basic/memory/shift_mem_up_38k.s b/c64/basic/memory/shift_mem_up_38k.s new file mode 100644 index 00000000..c8fab14b --- /dev/null +++ b/c64/basic/memory/shift_mem_up_38k.s @@ -0,0 +1,30 @@ +// #LAYOUT# STD * #TAKE +// #LAYOUT# * BASIC_0 #TAKE +// #LAYOUT# * * #IGNORE + + +#if CONFIG_MEMORY_MODEL_38K + +shift_mem_up: + + // Move __memmove_size bytes from __memmove_src to __memmove_dst, + // where __memmove_dst > __memmove_src + // This means we have to copy from the back end down. + // This routine assumes the pointers are already pointed + // to the end of the areas, and that Y is correctly initialised + // to allow the copy to begin. + + php +!: + lda (__memmove_src),y + sta (__memmove_dst),y + dey + bne !- + dec __memmove_src+1 + dec __memmove_dst+1 + dec __memmove_size+1 + bne !- + plp + rts + +#endif diff --git a/c64/basic/under_rom_routines_60k.s b/c64/basic/memory/under_rom_routines_60k.s similarity index 69% rename from c64/basic/under_rom_routines_60k.s rename to c64/basic/memory/under_rom_routines_60k.s index e4458496..0a07dbc7 100644 --- a/c64/basic/under_rom_routines_60k.s +++ b/c64/basic/memory/under_rom_routines_60k.s @@ -113,46 +113,4 @@ smd1: __ram_routines_end: -#else // CONFIG_MEMORY_MODEL_60K - -shift_mem_up: - // Move __memmove_size bytes from __memmove_src to __memmove_dst, - // where __memmove_dst > __memmove_src - // This means we have to copy from the back end down. - // This routine assumes the pointers are already pointed - // to the end of the areas, and that Y is correctly initialised - // to allow the copy to begin. - php -smu1: - lda (__memmove_src),y - sta (__memmove_dst),y - dey - bne smu1 - dec __memmove_src+1 - dec __memmove_dst+1 - dec __memmove_size+1 - bne smu1 - plp - rts - -shift_mem_down: - // Move __memmove_size bytes from __memmove_src to __memmove_dst, - // where __memmove_dst > __memmove_src - // This means we have to copy from the back end down. - // This routine assumes the pointers are already pointed - // to the end of the areas, and that Y is correctly initialised - // to allow the copy to begin. - php -smd1: - lda (__memmove_src),y - sta (__memmove_dst),y - iny - bne smd1 - inc __memmove_src+1 - inc __memmove_dst+1 - dec __memmove_size+1 - bne smd1 - plp - rts - #endif