From 13d8c63be4764c0ca6fe78339b11b118d4624d2d Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Fri, 17 Jan 2020 17:51:05 +0100 Subject: [PATCH] updated documentation and binaries --- CONFIG.md | 2 +- 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/banking/4000.interop | 1 + doc/Development.md | 59 +++++++++++++++++++++++++++++--- 10 files changed, 57 insertions(+), 5 deletions(-) create mode 100644 c64/kernal/banking/4000.interop diff --git a/CONFIG.md b/CONFIG.md index f5aa8e83..409511a4 100644 --- a/CONFIG.md +++ b/CONFIG.md @@ -153,7 +153,7 @@ Needs about 700 bytes in KERNAL segment (if both normal and turbo are enabled, a Adds a minimal turbo tape support - just LOAD command (device 7, like on _Action Replay_ and _Final_ cartridges), up to 250 blocks -Needs about 650 bytes in KERNAL segment (if both normal and turbo are enabled, about 950 bytes are needed, as they share some code). If unsure - enable. +Needs about 700 bytes in KERNAL segment (if both normal and turbo are enabled, about 950 bytes are needed, as they share some code). If unsure - enable. ### `CONFIG_TAPE_NO_KEY_SENSE` diff --git a/bin/basic_generic.rom b/bin/basic_generic.rom index d974222787d9af42ba09512e7c0b1b6093bb35ab..e3d073acbe56d49a574c70cb50146e083db16466 100644 GIT binary patch delta 1841 zcmb7EZ){Ul6u*6K*N%?0L>Pmy?b40GfQ=2l{hBuzb2!Ns`B zjcP{E2^LR_;Rbr4pQ0K;HFgia=*>N27VVa*?Aem+@J49eC9&1AtnPnch~Q6o4g7!H z;3j3FWXb2QUJ{2b9`3jzKDKml3ng)@b@{3b{XsV)Xo>qq^4#)>w513mLzn{I-$CuXDcPof6}CkQr?zNjwq-yq#^pmFJr3@CSbMNlP)ndETHUKTb^VHz|GOADv(O z#fqFl?oq$Ua`yQR|0>n8=!n7&DJs#k)J7ettmoz4Dl=06SP4)Yz8lEffr#bFxUn!!OPGAufVIY9d^KL@H*^-U9cPW zz+QOc`M)*K4?%>O=WvTRttZ3+Td!XseT1VwW$3<;;*^}&MGDfba6*^SZN^0)wOmv! z#brTMtqQo*##l}gFLM=M-3s>J0R1FN;~ARB1kCJY)G&qJtPL2oSEcPY8nsH>#k!(& z$6a}zZe}HtJXf{5tT8iNCi#V7RA*xf4wYv{f=)U*V@@K84t*{i%4kmd?abDB!X?@L z0UmuIG)Q`?vg4S-t<0qM2;C?oJS_2;hY?pI6WbXiXe`!&@Yq)4(T*r7lQhJ2=iee6 zI&c{d90^O{=WB%1?&%h#MF=FUfjotvw;<{E1i9|!pod-!%K`l+=7=Te#l;s%u{H^< zAx%%tg*!uCES@3w;boh~)$=$8?1IAx@4)5WqP&`?QA2(jWt%UD?AM4X+j*XtChVv- zt%L_t(Mj2+nsiGFbyCR6(`fI}s=ZUukVAL=8^eBx8ir7R)P}5Hipmb%JYnZU_M{Ot zTID5j`$1ZBC30itYM z_AmzJWS$#17dPF&T5uY*pkC5!C?CN#6)SV++tV^?(6lUW%UwLLI&5_BlQ<%S_Ol04 zt|!7fyx38+$8j+#+f^6V2M+WrMZ3#S-_h<(CP#C$hhax5P4pL1@zZz8ow~zV)xR*E zKW|7UP!{Womu|1CY~NT}O$aSBX8O>~>?@ay;p|4$GD+?fuFGA*moqy~mEb@cRaoE1 z#1Q*<1S`9Hn6`yuxz8$494xMIvnk)QKz1bM;(|qZi`^9;Rnj#w-4Vjeo#EzhRBb!z delta 1954 zcmZuye{5679sl}Q?BFDJN@5I@`0@js0C7x;9YY;(lF_*2bphg)gsNb(hM7_oM4>C$ zG>2#|85&ExH>PY|v`3T|;$IXmO(R%SDug;eOWR&UgoK2&SS-MrX*@elSk}t7d&xHK zk3PM-``+E>`@QddzjvSOc62*Re(`YP;VXNZ8yXwhYFQ;OwYh`fSNYYGAVq&-=vcna z@+Kp8-ejncm|@iokmPE91(HW9f?GzBiFW1*tK=ktJV7vtAP_M9b-ua0of%dOn*Ud# zS{Tt1QTSXb$S6HSw-yvjKNzKt6`s zQ5@NUX2NK2j+(vdzUU-Ea5tL5-Vm8YYaS1kitXSW8l)MyUb_A&eN$d9J&~lBu2Y}af*Xw{xvfGjhlB+*mZaNq%5yGWDwGAo z^bd28C5ZhyXQagKOW~+Q%2CS_3Bv><8B(H~czEl`7HaAi+MnzfF$~1I?yKpymA1kY zNgT0Stnj~&o>2c>0(4aQ?%KgQRw>*WQAR<^Id~ZbGn|1mzZs$Jsyb<1m_Dnj@SRBR zakYN?`SaPsZ zp~8w>8CI;4VRatPR~BH6wh%vuS8I!Kv2G2{*WE%0a20I!;VoP7`f6;#HQ0=|;o28!@pg+9*Wp^*j-7bji&$aD<>tq&9WWl~9uGi$ z5j3H(JIs}ZBTd?S`Xc0dfb7+`VYb(mCXnVNbOh4pfO^`fgNA>ir2~t0H0JK>X!Ny% zXX_h~w*9#g?C3?fYJ{)<(C9lb54&I0-PnB)k`GUIz@00%j7-nzk|LDpf}dvknmVVz z!#*`K?|yF{*oF2sM`j-IA)T4^q)<)A7cl#?)2T)1>1=HVnv}7(xl^fK_YLikI`c1- z+P;y}e$v{saXT#NUYiHH3p`!(*p$uBczi7YF7Rbew!mq42Dg?uhP4@5^#tPY8+4`)#ui4>3zQ*pj`(y3h?!Nu*HyAn%hIT$> z1HZ%QIPLht&;kKR&&di{I0x^gAhk%u!0(BSI^4U-tzugX1$G6x_Hy%3)rT_zd$;ZSDc*a$hJx ze~WlW=<<>pA(t%jp&Ru?#X`LkjSo0u7Lm(F-6BGNynyIZN1`HWh^*{I z528aB<@nLd2NT*Q(jh-18v_0K(X$6HAAQoRU1YtThy7mG%S-icBt##1SdTVE{Ul6p z$T9BaOuUBG5Vy%BF{hzUT_dRPUn8`p5xI&B^GYHgLy_ci*WCX{Zs&E5^$2;Q8ZSe? zjS?MF)9Xq~*9uVrq)gX{ts&KAPeS{Z|CC#Fbu3U|*97`k`6xovu3<(Jt0#OmdzB5C zWz?}@^!G`WJ51f3WMr{=XK$=N$R{25 z7*@q;`(+e)0me%@s%#;C_DTHnJU%_5PLRy3PE6WDBw=c?CApPR&pu_kiA>iSjBT~1 zmzqqq0B93ST%1^;_x`Z>R+JIwr7+v&|2_Ky|0gRW;%UkuuLm`F>(K;t;TC#*`2Cw` y&&c%x6oFqY;ew7*`FIqXr)6XR3!X<^^Z;H1(rmN#7fLLz`p@fj#3l= diff --git a/bin/basic_testing.rom b/bin/basic_testing.rom index a941ab69ecdefd1515a0fe67acf2e0954f333bba..fb950a740dba8a8b03bc1652ea4fef6360eb93c3 100644 GIT binary patch delta 928 zcmZvbO=uHA6o7X(jhi-U6Rk?|rqQ5f!%~8?&3NCiWm!A~|Ty=7#_u(a`-c(t zqUj1v;R=In^&om`nO^j!qPxQhMVwJ2hylKFZnV8R&k5+Q_0{|VVKgo|1;#1M&Z}T$ zPsTZ*We34M8@87tC`@{5yM?AQ8Lr(tDe$_mQMwrdmbM=#5gqAiG`JLRvL%!fCe2lc z*6L|BNG;}x`$4S+lY7wh7hsB3?GkpU$djsLTmR?(KcC61&U-=!u)ES~)|q3g;>bqk zP{%hl3ya+lGcT$8LTXP)b#*U@4MWb5j-ID(`Gcg(edE^Y2jookFTwgmPSngg<7e{& zX|gC@iCT(PEOV^xS+-0qlP?u4^INwR3oZY%MzolYq>60qUqx*Q%8XRB=3+$BwN^Qx z&B~n>j6WA>@lp;rxd8ob3Z4(Vmp5ah9hu4U{OU(FO_ zpWc(syJ3pF1gya*BG>Qd_2y^PdHHP}mY<%S7 zjg`DCq6dcRqCObZw+Xb@AO+VtLC=sG*ZT81z+_Q&t1j7-a3{sjZq-dcnht!&$aDOM zEpz6=*W$Ft{GN1|AmjQ{e#;yb;27)A>-Pj$$5&sK#(^FOlWlvZh)>4&3J5kyGH_D?IWWj!`G$=$YYC-A??SIJ0%e zNvalWuTS#{|lGCha*YDyy(R{FgHYuIty@6 z*zbn&6R#17$UNr-^P27}r6sO}2&|Uq!SqD8UOIvJkZht>@vR}ao?DDDG5&BLbI;uQ z&bjCDoijUIcD5A1bne8tb*pb)xoYLD*XU3A%k`+=i~p*{H51|ndL|!EQZh=bCStR2 z<;_;!DUMZ5iiu_PU>`*oK^PnBJ=R^aPtkpz2KQ7$Z}u#@>Ob%Z)h9fwR@F|h$_s*M zVd~{E@A1w1H{^o9ql`a8iIIxqn;+S*fAjgS;4eJ9^=>W9!?wFZr8D^WCcY{7J*zhK zFQ(3`B=SRViyN+V$ablQCmphgQ<$}XWmg&c+JeeiyLc0C9IH$6rm+R+a;%z>QI+oE z=m>qAvksvj^EB)47d$idU12S7iY)5^ zYD;(5Mv_LJt{n~cg{^(ITN}yR8PS26%-Sbe%>+?*S8QFV-OKB@6YV~JZ__s}ywMkV zZTGez-Q}yEUNgbH&IbvvN!(V8t*~_iRuwM0hV+0U-w6Q;>&}nh*{m|zq^r3!s zp%>k36K<^?*O0bCuZ1P02)}Uxkf%=yzFb%u_K) zTu&?)hsa-;3w`>+;!5{VeL5@N7%@n?&7yW89TIGdklDAI9jsN8%DWpBwk<9Jbc;x> zk%H5LMoXq72d5=l2g{SKsHI}c{irt=^%OSOkcK*h1dq4b?(ue&x5)&w@%C?shIdFq z40WuRFVn8)%@J)m73X-UV8!I7L1?-+HTgJHvE74OD=>%chC3b7mSyoGgO0=>fCu3r zco-gmN8vGe92(&|cmmp>9d^LSur>Z9bim2}2<(KX;AwaUo&^mKCZ6V|Jh8nXCJzX_DGG`!B8ZWaw@db%G zoDHAmeXTep!tr`K}qS}dXA#4(a z556`PM`Lj17TQCPpp{f;v3Q{%p@bQ!Ix z2Kns!Q9GC^Nh#SLH8Ues&{MJfoSMzdu*U^aCkHoC@wKr$@SD}%dv5B5H(}I{hM;Z zi`xCFzJBJN{=+8sSwSQRz7USjyrXvSS$ph!cDUI7A>q%B66ea?;NG*f0mm;_>kka) z*VD#Ml=a4{d6CBYH8<8TCSd!SK>DZ(so6B&;yvPUH z5^T=Esng9R* delta 2031 zcmZuydr(x@8UOahE-tWZ1Vkh3;b9i!DPfnDfG$vFBR3`LHi8*-w~cm9GSxA*4Wwm} zxRE%quybRECUtsc_9FYhxFy8FhLA~Z%4MeQ4N_;Eai%a9YBQwX<)O97?CEzQndu+7 zbI7&+Kfdt*hNv&TB=b%@qWn&Zi#*CHV`-Mw8PmFLLtY zMUMG^3+P5bk!bieDCTs?x59-R&D=d+D<~xO1oBJ-0h!salgo0Oxqx0W{J#*>$jO>e z;4`hHVlp_kDJ4z$-T-?vg+$M$saT!5OnEBIR;f#O2P1ryK&7NU6OpI=+sJg7w9hlM zmtE%^I0^0`lhhN!P0~8wmo1O&^Z570-$foW6p;Jr0Q1re`=+LfJ)^G8e0`p2{gOBX zoFZByDqNg8S|fmzFfKl1PKVh>O=j9qz{Xe37KV7+Y!TY)%VB~M7yF8S7yAdz>&XK% zLXngx5NVkV&9M6taud#-U#kj+*ZA^Wi~-QeakQ7^Q2RqEAb%(?C&w zAu~Bf_RRFiJRC&ZZtE|zW2Q>uOEWZLwOHZXkKLf1Q=SR13SG{I_IX|_-RRd2f>N-H zDh8$n6Ar)WXRCD;-su3T3}01|^#NY{N1dc1zvP)OFQe7Apwjmmjy1mRvSS#9ozAB3 zKfSkhAM?FkKX~?;`i7Re=Nx&>`^}Aea`O+ABo`KMDLu5krWzDVs!~&xMs5jItI<(S zqKazPsHi@PCTmlu!MK(_M%NirX__~EJx$J_8)#bkM*8?BnwdpSgl6aD(&Rk4`3Y)< ze5zVc3t$T^ETWGW(-K-r%ji~G{$x3=uvlp&Ew^o}q8p#0nrfO`_Rppk81{Dz`=KTk z>dDXz?$Yw%dgHB(RN}lts*68`*)Hb-vNX&$xNL^6|5Uek5q3P6KC)v!%-lWR0yi#=nYqrBS*c{H4c=Pnu0Jvf zZvMWR``M2dfnRRkXJ1+bdLX@wcgIL+%jYortCO(@(0Qb(0a$E9KM_vEw%_)enjv=T zza&<%nK6FURKK|bmeZeK1hx&_ZHu%dp1kDtHUc3AcYgolv+BiGWahwEW!F}vf# zwGgwuJPC(xXQgIysoanY4}$JG@08|ZNBC)X8~DjWdD+YM=fT}+HLe^=KAn5Ivj!@_ z`{<_xZJk{nx!edbT2+T|I{9O0| z&d1{Ur4BjNotY3Xj2FkZ#7pCcPH|R0vHy7GZ+CMing5TbGJP(#z;nf(#9^lmfyN7UO;X!F0%)Xxo3uSn-*>wFu|5}ru zX#8avTfgi5e&>5fIGLpQl-c)mo33~2*#l$C6yl->$I#$+F7Wr4i zGcYcte@jSqAh38=sp1zNS14HRvjl@a>#7=4)KXv&0QE#ILR?f%jLS;LQR&Q_m061P zW*o8jEWGs?tVl$?7Q~v}LR@M7~IrH}5vam^Z_$R%6~Rl!yl2fc_~nWH|$K;!1{#{QL?+ zh(QJ{AuMWfew0LJR+eQwe-^5)3cOoNlEp+7`RyReV9##M%HALiA|q3B1$Fi5F1RO* zU-?eBWS@roDb)sl&l)d-nEnkOt1!vDzf8p(4UqX!k{Doaj&iDKjiW1C6Y|L5-#U*z zP06T@G0YM5{M6IbHx$Onctac|OPE=Y&@F2I zZC3lH#>LTKJBDjqR1Y)l^X#)(2lPoCuM>=j%vcD9vswylA#wKJ_-9GtLce|jQ?PDg z)E2_b=;aZUsA3*|%yrFV60n3Y7suwVF=xlf!N42W$v@+6O;#h}W!0N{UYiGOVX diff --git a/bin/kernal_generic.rom b/bin/kernal_generic.rom index bac972c36d1b7049a23a07bb8c28370c7ac00b81..90a888be89e665f69f51562da95bec5f40e56eb1 100644 GIT binary patch delta 5048 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 J@4f#K{|_OhlqdiI delta 4973 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 F`9C&4#<&0g delta 3600 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 diff --git a/bin/kernal_ultimate64.rom b/bin/kernal_ultimate64.rom index 88d88c6c4ca21221bee3f8528a3a019657f2e570..754f75c752d95d25efb9bcc2b24897692affc05d 100644 GIT binary patch delta 5260 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 ar^#CiiFT3@htOk1?AokR*Y`i}cKjcLyciJx delta 5078 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 diff --git a/bin/mega65.rom b/bin/mega65.rom index 7724db1c30d898d9e0c41b1185c5e67b4c405854..6f99bd91e3448d52240dd41c2d2753c9c1bd4157 100644 GIT binary patch delta 2617 zcmYLL4Nw&48Q$9i4*X+{D3?U*2mS;IDq1taG#OB1L*h5pb|#Z(GvlV(cy@3)aV80+ zCQxPZk_P6?M_ZuNc%HX}b&5G;5UC2@AK@twY8bGwV5WS)1;S~ao>(k)49cDYvTE%rt*`{YZ(hS`10kM;=s$g zFd*gQIiIx+$b~+gF7eek^2q(R#|v3u;Ie#P`T$+mFUx1JFUT+qFM85D>0>U0-uz1J zM5-!!klMBCvsKoNXIK7kSMZO8dzcJ4t*c0V`J zqti^3f}l&Ja^V8sVHz&XcA9U!r_eMzr}Ew!MR@2vs0dN-ua)+`3-l*-7o-IZAG6}c zD<85R8+mJNzGbC?onzkR;Ci(;2mC*vJrT5d6yd#v(9sa6Q1cJgHC zmDPcfEC-&g@)E+=b#y4?Fyp0K7M#BoAl86T$I7XVX0PTB}TY}VtyFBnC&I#wq3xMstIr(yNQf;&Hko!`tuCKm#hjX#R;>|H1?ghX0w&a)%z5E~Inz4n>Ga&9}0E9OM(TZ11 z078M5I9pSrr~VR&S`MY9nM@`&Efc}%p5?F;JwyIDv0~Xy3tD2h1Pt~c$z&Mpo?)s1B?6lh6{WENWa3bBc%m7=S08xPgG zn<;1aZeuT;md!Xv>tXPgh`YIG1_+4L#M3R?Sn*8DPFD1`>}4<4H3KHp^GOs``J$nX zs*brboVPaFF^>rpT7)L>;Hl9Li0_P}&xjORx5+;OM>k0(;h5-dm@C)2aq}n-q5zShQAY=HU<8eixd*+s7%tpnr4wKvZX9g$)Z{x)>`EB4SC*IsBK8XB#J;-o zPywX0ntVB#&jv=ih9+}NuT3w7$=6f(W&L^9!k|->n*EUoI;ge{esPO?46TV8-bt;a z`IAtG=r0Ww2>$PWknh_&BbN_H?48#xgT?y%@`KTvWK(p_4=$-tdH1Avk>2QdkM+%# z%g{azElPk##cP63ye{;ok}t^?eFmb>!(QxnZk5x(CnuvXtpO?qgqvWE|GEAy*aC#! zO3}6iTrpK(7L0Z0#W|(023`+@Q*uo2l4Z)~jA_EiyULc$&xAc@l%|TUMmvgPyg_lb z2DxoZOow2yN5o(-T^gsbo>fj(a0kHgU)fh487kF*9#BfHi7buVb>XdE?CH~`Kz{Qq!masQW!IQa!BctjoU09?F)8YP;lkMznpUVs0;VR#G}3^WJPrO zw#Z>9!6h7}A$Zhhiu_qM_9~ICrtkLd4t0H~;Gzk%E!dnzDq{;telVZdV?`uODmlgB^>DAUO%u{SMx5C9b zSu`tXtAL4a^O@vy*Lswvkh$>-P^}{a?WYEyV6f-1$QJP!HKWI3qWcxW?a2UEv1!UU z6odlLw9GfZr^pO*C$$a8ulz1Lh%IT`fo6#g^`rPcYt z1kI&E|8ck94yzaaAb#@d6ax2<_om)9ts|kSBGZ>7C-Hm^GEE?+96ty{L0MekjRq#b zlR&JPI1-z-W;SLIH_iz(W(QoBMtBXYG1uJ2Im52sG|nEz+Y%o$!xGbA8I;ner|=Wg z6L@B70`FPhju$8G+4EK4qj({XYod5~Dd#*$=CGM9LgD_9`uPI6I6 zp5iJ5!o<&wFQO9|F6WKtoDuzr^SesmM{L$1zU0a?m@U?=>r&Ikm^meyNaQqWkvt+T zEaj0kh`)(}LA-leA1`MZA2vrO(x>GN&dOHE`+9Eiz98Nm!poBQr6}Ha4}UL+?@(N< z;xt32_>h8?2%Z(jM=5Tnq(@(zmwT_Wz+72mt}Hg=oiW@!foBAr!!Cy3Q2saNo2hq# M@S%95lQZ%E1xOiDQvd(} delta 2595 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 diff --git a/c64/kernal/banking/4000.interop b/c64/kernal/banking/4000.interop new file mode 100644 index 00000000..7b399af5 --- /dev/null +++ b/c64/kernal/banking/4000.interop @@ -0,0 +1 @@ +This particular address is not for interoperability - we had to choose some fixed location foor the extended ROM jumptable, beginning of the mapped memory block is just sane. diff --git a/doc/Development.md b/doc/Development.md index 8c63db10..f36dd0bc 100644 --- a/doc/Development.md +++ b/doc/Development.md @@ -24,13 +24,58 @@ OpenROMs interrupt handlers do not touch the ROM mapping, range `0x4000-0xBFFF` ### API extensions -TODO - additional keys - bucky -TODO - additional keys - PETSCII +#### PETSCII + +OpenROMs provides support for several additional PETSCII codes (all compatible with C128 and/or C65): + +| PETSCII | description | +|:-------:|:---------------------------------------------------:| +| `$07` | bell (C128 and C65 compatible), not implemented yet | +| `$1B` | `ESC` key (C128 and C65 compatible) | +| `$84` | `HELP` key (C128 and C65 compatible) | +| `$10` | `F9` key (C65 compatible) | +| `$15` | `F10` key (C65 compatible) | +| `$16` | `F11` key (C65 compatible) | +| `$17` | `F12` key (C65 compatible) | +| `$19` | `F13` key (C65 compatible) | +| `$1A` | `F14` key (C65 compatible) | + +There is no official PETSCII code for `TAB` - we can't utilize the ones from C128 or C65 because it conflicts with some C64 codes. + +#### Bucky keys + +`SHFLAG` (`$028D`) variable is extended to support additional bucky keys on C128 and C65 keyboards: + +| bits 7-5 | bit 4 | bit 3 | bit 2 | bit 1 | bit 0 | +|:--------:|:-----------:|:-----:|:-----: |:--------:|:-------:| +| reserved | `CAPS LOCK` | `ALT` | `CTRL` | `VENDOR` | `SHIFT` | + +Bits 3 and 4 are extension to the original variable, compatible with the C128 ROMs API. There is no official way to retrieve `NO_SCRL` status as of yet. The `40/80` key status cannot be retrieved in C64 mode at all (C128 hardware limitation). + ## Tinkering with OpenROMs Make sure to read the main [README](../README.md) first - although any help with the project is always welcome, you need to be aware of the possible legal problems we want to avoid. +### Make targets + +List of the most important make targets: + +| target | meaning | +|:-------------------:|:------------------------------------------------------------------------------:| +| `all` | builds all ROMs, places them in 'build' subdirectory | +| `clean` | removes all the compilation results and intermediate files | +| `updatebin` | upates ROMs in 'bin' subdirectory - with embedded version string, for release | +| `testsimilarity` | launches the similarity tool, see [README](../README.md) | +| `test` | builds the 'custom' configuration, launches it using VICE emulator | +| `test_generic` | builds the default ROMs, for generic C64/C128, launches using VICE | +| `test_generic_x128` | as above, but launches C128 emulator instead | +| `test_mega65` | builds the Mega65 ROM, launches it using XEMU emulator | +| `test_ultimate64` | builds the Ultimate 64 configuration, launches it using VICE emulator | +| `test_hybrid` | builds a hybrid ROM (OpenROMs Kernal + original BASIC), launches it using VICE | +| `test_testing` | builds a rather odd testing configuration, launches it using VICE emulator | + + ### Code segments and ROM layouts Currently there are 2 ROM layouts defined: @@ -42,7 +87,13 @@ To check for current ROM layout or code segment use KickAssembler preprocessor d ### Fixed location vs floating routines -TODO - describe +There are two types of routines (in this chapter routine = single source file): + +- fixed location - they are always placed in the location specified by developer; if it's not possible, an error is produced during the compilation +- floating - their location in the ROM segment is determined during the compilation by our build segment tool; from the developer point of view it is random + +File name of the fixed location routine adheres to the scheme: `addr.name.s`, where `addr` is a 4-digit hexadecimal number. They should be accompanied with `*.interop` file, describing why the location got fixed - see [README](../README.md) for more information. + ### Handling different ROM layouts @@ -121,4 +172,4 @@ TODO ### Labels and VICE debugging -TODO +Make targets which launch the VICE emulator pass al the label to the built-in monitor. Problem can arise if we have multiple labels pointing the same address - in such case VICE monitor displays a warning, and just one of the labels is being recognized. To avoid this problem please select a single main label for the given memory location, and make sure all the others contain `__` - such labels will be filtered out from the symbol file for VICE.