From 21a38aed6e3bc8b957890668222a39a74849e40d Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Wed, 26 Jan 2022 18:10:18 -0800 Subject: [PATCH] CPU Speed Change API - Moved the CPU speed changing mechanism into the HBIOS as an API call. - Added support for CPU speed changing on Z180 platforms. --- Doc/ROM Applications.pdf | Bin 193895 -> 193895 bytes Doc/RomWBW Applications.pdf | Bin 229563 -> 229563 bytes Doc/RomWBW Architecture.pdf | Bin 447508 -> 451133 bytes Doc/RomWBW Disk Catalog.pdf | Bin 134793 -> 134793 bytes Doc/RomWBW Getting Started.pdf | Bin 277975 -> 272619 bytes ReadMe.md | 50 +++++----- ReadMe.txt | 36 +++---- Source/Apps/Test/cpuspd/cpuspd.asm | 152 +++++++++++++---------------- Source/Doc/Architecture.md | 37 +++++++ Source/HBIOS/API.txt | 16 ++- Source/HBIOS/cfg_dyno.asm | 2 + Source/HBIOS/cfg_ezz80.asm | 2 + Source/HBIOS/cfg_master.asm | 2 + Source/HBIOS/cfg_mbc.asm | 2 + Source/HBIOS/cfg_mk4.asm | 2 + Source/HBIOS/cfg_n8.asm | 2 + Source/HBIOS/cfg_rcz180.asm | 2 + Source/HBIOS/cfg_rcz280.asm | 2 + Source/HBIOS/cfg_rcz80.asm | 2 + Source/HBIOS/cfg_sbc.asm | 2 + Source/HBIOS/cfg_scz180.asm | 2 + Source/HBIOS/cfg_una.asm | 4 +- Source/HBIOS/cfg_zeta.asm | 2 + Source/HBIOS/cfg_zeta2.asm | 2 + Source/HBIOS/hbios.asm | 120 +++++++++++++++++++++++ Source/HBIOS/hbios.inc | 18 ++++ Source/HBIOS/std.asm | 30 +----- Source/ver.inc | 2 +- Source/ver.lib | 2 +- 29 files changed, 336 insertions(+), 157 deletions(-) diff --git a/Doc/ROM Applications.pdf b/Doc/ROM Applications.pdf index b1533de561942db48a49ad84e44d78774af6fa38..62badcd653f20aefc5e0f14e0be67b3f3ffe85de 100644 GIT binary patch delta 139 zcmaFuhLXXkcV%WM=MS;9_CnEdkR}IE6LrBSV Iudht90IN;M1& diff --git a/Doc/RomWBW Applications.pdf b/Doc/RomWBW Applications.pdf index 26ec75ca18037af31c9b8c10f376338dd04ee71f..e1e22c70906cba88cce9e2243cae46b525d5280f 100644 GIT binary patch delta 287 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 diff --git a/Doc/RomWBW Disk Catalog.pdf b/Doc/RomWBW Disk Catalog.pdf index b9cc152b188cd2efe025292aa6ab4e2ae4659c02..5853df285d8d123146dd46b31f3eb6a7a7b2c1de 100644 GIT binary patch delta 137 zcmeC2%h5TPV?#M3)6vw)m5dcE4EpoArW@Ka3O92wZRcQOob!dl$js2x#M01Y`kHTy z(s17P^WPYw#GRd7oeZ2z&7BQQj7?lDEQ|~c%p6V4OpRQe3|vesEKTebYzQftp2No^ F3jlkABiH}{ delta 137 zcmeC2%h5TPV?#M3lV|$mO2!J7->malryJTb3O92wZRcQOob!dlz}V2t*xb}~`kHTy z(s17P^WPYw#GPGDjLh8JOidikEnO@P9Gwi!EzQl%9UaZhot-R9j1BA*YzQftp2No^ F3jnFCBzgb< diff --git a/Doc/RomWBW Getting Started.pdf b/Doc/RomWBW Getting Started.pdf index 59f3eccdaa52cfb0f581e9920748bea249999c1c..2d296759251cf2fe00017563745629f0623fae9a 100644 GIT binary patch delta 49639 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

W!PGK>P2VYOno4Av5=0;|aXrmh@fy9Gdg( zb9?NK_Q!gAppH#WeWE{4h<5vBh}wu8bByyaPPd$&P~r_>No!dg>=^mP&`v_xDHY!Y zJ(V;`Cw^u)>^+LJX;#u(ruYgwpg2*?#d4|Jwt;;}{`8X_@C|i!H_AfU!Hj zBr$d-azZ4f;AJLKCoa>|W@Tcz!hLW|c1?&K=9!2nW9JVeW4T+T;IkCOV39`R1&fnL zRv!Nyct#@;(lWH8gGS0U5(7w#O4iUwR4n=;Bx{C7_(Ex9Zn8!RQ@ey5=gdtW-u5%p zs@qiK<~a)kww7E}cSUt_Q`yeq4_Z?KKg2G2aanV>#Ink5E_067J#*aMl`Libwjt%n zwKaFXEgP5mVD7`E9S?>)m*rIto&VkP>(z^v&K+N`p2C)X@?3e-;#f7dA-1r+Hp;QH z?!x!a73Iv%{!L7Wl^^CMrDBJM{I7669c}n@w9JOQ@=(79nn<%-uKUtOV+~_jngypW!EI7I}{IQB&F&lN#8D9W)*)I98`H`n3>CmB@9?x7j{`S9FFSa*!c7IIW+~Er=V&6CYIk)9xJm8S?Ghr5^*wIv#d(m~URx!dWrD@%Yr=H;-~&UMiw4iod!1 zi`4lvOU{2?Vljb1J8##8t4#@AboOKMy?b@V3wGXS_0>PNnXtYqCiQ`niS@qTlko+` zXFu9lb#>BCFB{wYaL>t|hZ61_+t>QB`*E>W`9Sh;ZDUbqKRrP&AjsJC=gun%J_pvk zvb;XGQOsD);dW1+y2I`6s&>7fN8{YY%wK4^P#jhaoH@lQbK;yndN-rk+triog0Nk? zut-JIeYe(?oA$4d^j5W5>`@t+Ws;kxoxQKobbofHnskP`{OXx5((~NptD`TP?q6r4 zpgQZ)dI{-_vvKz$v(!v;wAT%NPtrf7aA>cS^s5Jv#ofI{Ppq@LYroh>)-R02o+yr+ zMNYhtF?;oaX$v_lhug&`#yCuCVCUVJ)|Ga+oiX)-TmRdz5LFvpr^%+ldnd%`koV+% z9XDsOs*R%E-HcUIF0S%(#aeY=S!cSBlTqTAT99$UBqn`rmg%(8C(5fHcx4$S_!zp9w|E`uG)|7yKjo}0 zov!G&< zYY8ps)N{o>JqiVq2Yn4`w!XHCu2f}!X&h3S>tUu%o0hIJelq81$uhBuqw8h%s@OI7 zNd>7S-q6jlmb6d<4!R7@Sd$Y<7R`29eL&m2q=rMJxU{aq)!S0zY%6HN zbG+V2PEl(y-KW<8O*o@{uq@8SCGk{4Qd~k=oK!-y;SCc=SzNAJ>^Am%rc|qJcEtT$ zr4`b&s=C{pyRMre*W38M@ePpN>tlFBQoS|w%*lxE=BE{&7i(t~9DJIq^bXm(Y5Voa z2XLjnN5#G&#RF<_k8?{GZI8a2tJH5Jran2rBk7STNO-!(wPDjo@VqDk(k$;Ls868a(<15gs?ga!aJCCaTJaL(pnfS?Fj?!@Wz4a@Iw&eP(`Wwt zE|OkiYQsmTnpd-8$FAv<)Qs=|ppl2z(=9Z;ny0hOC85x5iDWvpDn{3JXXH2=pNe^1 zl%cx4WloYt-}h!I|E}*X3otARtE6n}NT1eSdb*&;%U|7rdYv?d?fg{`jxzJj(P zCV(Z0nOz6asdU5w`*t1KhL9QY&TFP(sRj5onR~tX1`@1DCVECPH?#8R2BHX`d&1qc z0X9Azyff~mEiS@~QOln|{scbbB#B+QiO9g)Pap5Wj+(eqL=2l&0#|J}5h;MqypN2> zKV*fCyM@TZeb9Y)HvJZ|2UEL&NMq%9cvK|hDaP8PJT--Z1>Z;1FzG_X7@;t+oO=lO zqfrv_R6#s8j;D-mEkvvlD(N3yyrb$E?AlF4Gx0WJkM-O{bg=ce5qZq;7Hr{x!&moU zrMDm*1f0e194CQU79kSY5ByolU1-7LyNEiry$G?!XoWm1>_ZWhUR?+nqIZznSm6jf z{_=PUtg#T$O6~yX>q?>SpLc*3$k!d)R}3)Oy8tUF=5efnIo(B!v7f~w z%qHOvwM%#p*JAfeM&NVr0laeru7kzhgEtrEmLikl11FBbLP~+Do_ip!@1-NmiZC&S zyTH%h`^ZXc>s>@A{*T!zwa=gwNRW$h7@PAP{I=R#<5*@*bhl@s(30Eblc^3lDO>!F9?TBvphKA8}j>bFM?GF_CAe zGB))sl8g5|7hB{V+|Wt9o2!io4I6xiY!#tnM^-`k1MiXF2%KunMNRyGy# z02<*@kCfxDL6|k*6zJH;24o0}s0D%k`UvM=q`Za}0l`aH^c#Q$e?m@U)9V0c(uCZ^ z4BkQ;dYce85v&a^F)=aJ3_J1}X~6Q{!IQmTz)E5p-}9cBV$Z%JAF+rJ@Z|nCge-zN z)Wef#5!4hrsDesjmaWKhY;ps@blZ@(SbYOjqxc=#`{5%L8TgJ&5y4J20?@Jpxq-QV zf-C7C$Q4Yb2_9GeK$s%fC%DAaej!De(`Q7bp!FA`Ac6&df#>pFh^Pn_3om_O9x70y zOE+>CyZQ~DnDiis2-e*K_%nMEH4#j<4WI$PVfh*x!Y>p1kQpM_m+w%tr5|~K8FwHm zSlIy5kM(o_>{u;giv1Zx-eb3Z0F9qRI1RC1P*C#^LK4Ahe!+MM`i+GST?(k72&Om&6wO=-{f0S+qpAf{ zlu=C)EL;K#8FwR-@m{-&g-HUAmnzzbHAtb#1+L?88lR*ACv-eIjFpZBYWvi1ru$^z z`E_-aC4xPcg+kC)Q*4R``U86`2k6v^XbpB>9?&&4Q3DaIUIBn52I%C1JzA)$2sS|p zieJ`7B}B0C%D~N29aKvMo2LTMKf0)m2(~~K$}ZJIQ4ws`IJgYdM=eCKmE!@S*Z>`a zuqh)`ecOQ5f!=-rYqS{@ZXhCMZnM@i#3>|jbtr&%TYCSwYX*f>Fl>Yliy#zo!LSM1 zBf{b0@F&%tRH`ZbqUhPx!(m9ll-(Q4szF zCor;;*b`9b^uJ~3a5J*|*ptS98=L@#TZjpFcwoc5VQDjXK^9Jq4L5w+z!-zfrwuhS z$b8yRBZJK62Wn(+!z7#)cm{k?&P!_$!`&~PX>asv%#@Y#lUx!@cz{u8D)htA;h&45}Ne=B0c z4W9)ju)yF~1fTk(11gU;ym&@u@Y!Yp3xGQE1ZoA;ksGL$|Bjj`6Qm8OyeAyk5Kia5 zhK5Uv3AOTeeZvjx-ljA8EWl1}Iuzs;f`kp7zmeP%4y>m`xsfN(aPF>eoEi&Q;O_9| z-T({yE#{sqU;)ZO84ivIEWjsDM<@UbP>^>68+zcNeEtotbo_?1p;l0i5j30}pE)*8 z?JpWmjgLl#{1~0TN63>*0(xu?UqoaQG>XmdCNc@=LmfQ&WJq4o`Kz5!5ZcA&vq*-C z0-eq05r1co&daPp!^kjcfN!z#seo3~*?*Y7qkLL3OWrzDD;AZG}K1~OVUP_3Pc&`_9+nd7esiYks`|Qky#=E zR>3%5v_T1?rd{4(BK5YRxsnu~L@X^aXMI$oU|<`%Y6^D20NnUNZ&bS=>O3lq;B$mF zBUG*6(goB&4WUvosA6(r8Tv&MzR}C81^e*=ypH%}RI6ap12kF$q0$PjJVdQgd?M2M z1T|q(MtbS5m865^;CwUX7z)wYu^2R?k^i-zrpX>*yT6iF$8YlTZy(wr=1?&KNb6A%VHCQt#5=LSX>gs)-zEr|W7L&qXC5;k0i&WZo1 zrG%B#qB3*H?0@vYw{d%8gkhd1g~N-vU|^Wr@i5irnizq4XjoMpsx^^Lmon!ShMI9& zd>(ORtbHr0fr-9D6*T!CW}atgm^Pi?44c4>&?+(m3xAJJQ|4=^Q;5$dz~SluCh`FW zAB~Jzen6MY3u1t-pZ|c)L+Nm#T#s5!6MW2fmWquR`4g%pPUjgrY;7aRhfT)LG@|qI z->ybbwzJKI##W$)vuJEsVbD89E#a~Ss;fjh?enO|o^9gXpLSxY}!zR=U zfw#SN8bNfSP3X)?e=FhP@SP*KN+^NXfekmI(=-KX@qO(G9tE4*%%dFL42|h*Mi+2J zqWu+B*J6*Du@T1k?wrdwe83$0(S)jFL7!1`d44d)T4APNM;HnRhOkSYQStHSBkb^F zIUYL+RNb~qX#Yj^|oP#;9DKrM&6m{@s z=^zmrWyB86)TZ(En{T27#sZD+hk$dexCQ0{Qy~>M%f&BjgAWwtnR#=Z%7_B~Zz_E2 z!D~N{ZR~A6qHZ`sXk>8Xg!qEvSxoqBJXh=1UqsX#`PGh$eZYpOfvfk#YDX#>aiSv< z8JSd!NQ6ScZH7AbbsM^wl^+R#dv`UiKy9Lc{OmB9Mj(D6oi zbOjY^8?9dJ85HId0-vKdhT{&n^^5}2v8wN=k~*1zKjhkve-9xGNn>GazoYsJ6k|b? zOvmcmK;6c+!$eIR+t7|W=(p)jd`(FguK)~BCbiJ9Mzvmhsv#=1)fKXqbkWd0USk)jj{$dA80d6{e zpxP+B7m2z5Kv%eoruvUkDA4uw3^Vif+u#$rH8jk}|NlxG?>GM3ZGophoVdRnX6~p7 z)MWJ&RYgb)Z0S$b!I;VmP)FD28{*>=5*CP8w!v?;Pe3S4B8}a#lP|!k@=0a?M0J3a z$}iMaadcUDLDVPI7_F&0I#G6{9vbL0l|jPl zdr-Ov6^rdbRmRdte@oG^*zY67rqf_ZPbe$uPk9Ba$mQIzHs!(6lALQKrmD5g&l=gBt4R?-Lkcwi>s8X4``Nab|gi z@WiuwH?Z(_7@Z1DTJZ;+hBf^`73F9+wGk`^G+ev~uul9z9YnN`Jr~tHW-DrMI=T+N zaSg%E1=lb_@r}66;wcbz6$l(VB02;9S3A}&Iv!iwi^`BkVshThO`E~XU%@YLCc@yQ zb>N=sf#H|yx->Zdf7X|qUEv!$eoZ6MKQD^VW{gZB7`*%#-18KI!OMz`Zs90zoe&J33 zSE#7YB!2AXxG`*lUjR6&zkwjn*)W(4Y`mzb9~@^?uv=8r9Fc%w4e1^_Ek00u+*k^Q zMCJpq_hUr85hfe65f}Y513rETaRdIR9iT0R|59jlDn1_Zzke_W1)oY0U=YC-_)3VX zBM5_yMM{Z!aqtLiG!lsn4Tj)J00zw9rcn^aVB^UZ0T`9V#1(-6W8oP;0T_)!#is@E z$N9@K3Bq_h=n+I@vGMRr07j=U@Gw~b2B}P3!vtZ#3$ZLnU9b)g6k$Tzib#;jV&W+$ z0fHA7i6o z&`HA5B10reC`*Fe8ye;mHT0FZlDh9E&QXcn;&aDc)v7LjS7$Hp_Bg7m=a2}%&; z56s{h5&|L(w_OAnH|p75Dmr1es(!yb^#>NF*U? zQK%H6vXUrNl2Ah^xYOg&`)9!@RI-o=fuOKAgFYs969r--AqE+2e0fTcX;_03!~^+L zsN9o(2#72^79zkH_#)Y87=^~*rszk*NK~LmWRMCNf)zu(;G^&bJwjnJo(v(vh{lHm zqY2ON3gS_@>wAJQ64*&0JO;i_%EjZ1L?I+9tUD656+V$i5Elt579NT)4J3Lq&@C3x z>)~|}rNALUf?c?EEbbbeU`rSfIS^aIf}tY>W8qm=!LksD5b2-#-&ff=m?A z5|XHF622Zvz=Pfsf>DKrCk^}oU(|d_(_kg=FEboo5C|1>^Xr0@fF&fhm@Nvl9T%ts8X^>X!FsMx91i;d@O53mvUsph zgn@AshH=v+T>1YMKWxen;u>b1LWTxl_|!?TVj2Tq=^PCM>&O(wV=_n233%fVCM~0Z zTq@v-lcpwmK9VA5DZ%Eg4yNgUcR3lf-C zaplhfTTRq-CJTSVS+FG_7a_?23|}!7XfX?nlrW4YL&gu(&bED;3>9z{qcSS+Sc2+3lx@U1z5?EyrBZsT*ck&3QhmmEb`xQ zfbXN&EQr^M46-0(A;Msit}IkBFpcF*fSwU@Uu@_}VRSHLf^=aXO(v=?BrRdyBZx<0 zvslC_F5odoLShKlMj8Y_PyoTg0E1b$FbvL!AMSRse;Nc+KoWGgK!ZW6 z04OxxA%LS1V|>8lzIPx<5Oz!vdK${Y+?v>87&8JD9<40@{8O#E)J!IIINK`bK z<`Q!nK#wUH4B(vr0V&a@;4q?10T>%k91FIN%^(h0NJl^pl86W9m8gnjHjU09>O15z zh&~S_4Ni|hkOFcQk`|jO)SX}liBSX4gNU0)@9*pox|sXDZh_W8REci|6of&}i>M0} zSTQDy3!I*C(iQx29YQZLg%plTgMmU|1_ll> zdjJI4#Ayea3NQZ>B?B;`R5_57VULQ|xxqTXK>oyvX%I*gVUPwPDkjhq5;bh;64DPU zn+Z;l8y)>~B2=cZ!coCh5)=-MuCNE7QK>?D1o?cvrvG(RAeetPWn^|phJ7OV_DTUw z2bhpofQ%o}1AreD$_xWc*yuuJO$^q_96YEej$;~|yMt4Z88FL4#e@lq5J4JSC`AF; zN2-t;rb8Yb>gCG+pJ*T@Mw9~hUmk;$~h* z3IN0R6bncJ0)$b8dCCeqkA=%JA>byKg-Ik)f^-g3*qY&SEOF?-UT0!%1e6fcGQ>*Q zp#DNIh!cr0CYx(haQXigKlm`=7PA>bVug$_F{lUABa}S=e+66zK|~DGp)7ahPN19cWFavagPEm}&fx1iLgIod1bsC40|rd`h@ysRsgUgl z^(9VoA+gHF_wflb$Q+RjwEwU8nGhEd#RV|pq=w9dc?6LlEG+ypD!i-_;BmLU3slUc zFa^38mp`}z;UNZ*u#lT&!sLfIJee?ziCPUa3!(82PL`;wpb0dNun1wELuegjT7)J# zz_idr17O^DCPudyFDumVfH%^`qvAgZkBP0rlT|`q4Dg7lXxyO^Js^~Y(;o=^4tRoI z7UWL`#UyGq6oxMZ5(~q-y+o~M;`vNLJiM$>ya0H@dPJjiOi2u9Ng(|_YX3M|tJ1&@&P5Y}`sqoWK6&H$ACOYq-l!U+ThEhIwgpkkry zFBBFI$-y28D=Vbgg}NA)$@x0-H~xdgKq03C0n%t&JtArfF;`B8MSJ4N0T@gg1tkbf zlZi%(gCh#rekQ)=C{$Qz2?EN(vWp-dz__o%3n(V6pbe+ z<_bv((pZFsKw05j47js@6Cr*y%><<HNh3kYK*hqL8$^9V z^x)++I7En87;^Xo7*s+d7$Te*p;c!J?71Ok?f{SbYN4R`dD%R!HuEhY6b5fE$P5&Q z_6fm8iIBhI1PNAx1feX5fmoJJ8Z{7j(KJ-deS1=nLs$V9>SLIx5nxajrY=I2aCedt z=z-P?;!$WE$V(FJ2EMz3IOzl!$dFi=1-?%ZhNl^Ya!jx|N}LD*)4coxE`PrGVFCbY zI08XPu>POI&RwU07>J^Met?D|P3o}DV{Hjh!5GcZA2w;{6T=1zMFalb4z z679MUN|di%pgTz?=<%fQ&J`p_b&O7iJdMJ3t|&pUc9#CC$S7zI7TIX8TfF~y`4f3X zePFU=EuF!4Z3n%gke^{gY*izF-s&6ckBQ56bbti|8t(6zhfNil?r{|dLKTxz53?(I zl87c-vuP#+5p12g&uYsLQd?g_Fx!$ThDyhn9xIbt-Za=_$BCq~KakU@=N)@%$C#vz zxpPpY-Bn=yD>6A|OaLzPEu%2d1|~*Pgv(%nu2wwGWw5CVnV_Quv4ymR4uWkm?Jq=r zHV90cZV7p+qm?~*)2tPwi|kV&q)<)A8vDS|$Ey8=H;Q^prAUkdn+i>2c^&dp1{Nf~ zd@>Wuy+_@s`K86nCTNEdQ*XLZ4Pswef~l2@HK^#|aq@dUp_HK$6NLA7e7^;fenTTR@1T z4U4$WJ)z5!;I=X zQZ;Yy4O!Yj0*oVP&+?hbtdt%ZCQ}EgE7M~>;-QwBVy@;JblsODG>$J@h|s7ZIvW#= zENe)B?1C6zs z<`=fS`NjVO+%D5-foql)kPGuUe8+seys2ih`D6jpUyttk|2MgQiSN{XZeKUsug%-4 P$J}yV_XdOI<9+WB(D;5{ delta 54299 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 @@ -1100,7 +1100,7 @@ through the normal startup process just like it was started from ROM. However, your ROM has not been updated and the next time you boot your system, it will revert to the system image contained in ROM. -# Upgrading via Flash Utility +## Upgrading via Flash Utility If you do not have easy access to a ROM programmer, it is usually possible to reprogram your system ROM using the FLASH utility from Will @@ -1142,7 +1142,7 @@ To confirm your ROM chip has been successfully updated, restart your system and boot an operating system from ROM. Do not boot from a disk device yet. Review the boot messages to see if any issues have occurred. -# Upgrading via XModem Flash Updater +## Upgrading via XModem Flash Updater Similar to using the Flash utility, the system ROM can be updated or upgraded through the ROM based updater utility. This works by by @@ -1157,7 +1157,7 @@ file. More information can be found in the ROM Applications document. -# Post Update System Image and Application update process +## Post Upgrade System Image and Application Update Process Once you are satisfied that the ROM is working well, you will need to update the system images and RomWBW custom applications on your disk @@ -1226,21 +1226,20 @@ system on your disk. After this is done, you will need to use `SYSCOPY` to place the ZPM3 loader image on the boot tracks of all ZPM3 boot disks/slices. The - loader image is called `CPMLDR.SYS`. You must then copy (at a + loader image is called `ZPMLDR.SYS`. You must then copy (at a minimum) `CPM3.SYS`, `ZCCP.COM`, `ZINSTAL.ZPM`, and `STARTZPM.COM` onto the disk/slice. Assuming you copied the ZPM3 boot files onto your RAM disk at A:, you would use: - A>B:SYSCOPY C:=CPMLDR.SYS + A>B:SYSCOPY C:=ZPMLDR.SYS A>B:COPY CPM3.SYS C: A>B:COPY ZCCP.COM C: A>B:COPY ZINSTAL.ZPM C: A>B:COPY STARTZPM.COM C: - You may be wondering if the references to `CPMLDR.SYS` and - `CPM3.SYS` are typos. They are not. ZPM3 uses the same loader image - as CPM3. The ZPM3 main system code file is called `CPM3.SYS` which - is the same name as CP/M 3 uses, but the file contents are not the + You may be wondering if the reference to `CPM3.SYS` is a typo. It is + not. The ZPM3 main system code file is called `CPM3.SYS` which is + the same name as CP/M 3 uses, but the file contents are not the same. Finally, if you have copies of any of the RomWBW custom applications on @@ -1272,7 +1271,7 @@ images. - FAT.COM - TUNE.COM -# System Update +## System Update If the system running ROMWBW utilizes the SST39SF040 Flash chip then it is possible to do a System Update in place of a System Upgrade in some @@ -1298,9 +1297,9 @@ extension “.rom” and be 512Kb or 1024Kb in size. Transferring and flashing the System Update is accomplished in the same manner as described above in *Upgrading* with the required difference being that the flash application needs to be directed to complete a -partial flash using the /p command line switch. +partial flash using the /P command line switch. -`E>flash write rom.upd /p` +`E>FLASH WRITE ROM.UPD /P` # RomWBW Distribution @@ -1317,12 +1316,12 @@ set of directories. Each of these directories has it’s own ReadMe.txt file describing the contents in detail. In summary, these directories are: -| Application | Description | -|-------------|-----------------------------------------------------------------------------------------------------------------------------------------| -| Binary | The final output files of the build process are placed here. Most importantly, are the ROM images with the file names ending in “.rom”. | -| Doc | Contains various detailed documentation including the operating systems, RomWBW architecture, etc. | -| Source | Contains the source code files used to build the software and ROM images. | -| Tools | Contains the MS Windows programs that are used by the build process or that may be useful in setting up your system. | +| Application | Description | +|-------------|-------------------------------------------------------------------------------------------------------------------------------------| +| Binary | The final output files of the build process are placed here. Most importantly, the ROM images with the file names ending in “.rom”. | +| Doc | Contains various detailed documentation including the operating systems, RomWBW architecture, etc. | +| Source | Contains the source code files used to build the software and ROM images. | +| Tools | Contains the MS Windows programs that are used by the build process or that may be useful in setting up your system. | # Acknowledgments @@ -1343,10 +1342,11 @@ applications are no longer provided. driver. - Ed Brindley contributed some of the code that supports the RC2014 platform. -- Phil Summers contributed Forth and BASIC in ROM, the AY-3-8910 sound - driver as well as a long list of general code enhancements. +- Phil Summers contributed the Forth and BASIC adaptations in ROM, the + AY-3-8910 sound driver as well as a long list of general code + enhancements. - Phillip Stevens contributed support for FreeRTOS. -- Curt Mayer contributed the Linux / MacOS build process. +- Curt Mayer contributed the original Linux / MacOS build process. - UNA BIOS and FDISK80 are the products of John Coffman. - FLASH4 is a product of Will Sowerbutts. - CLRDIR is a product of Max Scane. @@ -1379,8 +1379,8 @@ accordance with the intentions and/or licensing of their creators. If anyone feels their work is being used outside of it’s intended licensing, please notify: - Wayne Warthen - wwarthen@gmail.com +> Wayne Warthen +> wwarthen@gmail.com RomWBW is an aggregate work. It is composed of many individual, standalone programs that are distributed as a whole to function as a diff --git a/ReadMe.txt b/ReadMe.txt index 22459a57..ca05cffe 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -1,6 +1,6 @@ RomWBW Getting Started Wayne Warthen (mailto:wwarthen@gmail.com) -03 Jan 2022 +26 Jan 2022 @@ -17,7 +17,7 @@ RomWBW Z80/Z180 System Software Version 3.1 Pre-release -03 Jan 2022 +26 Jan 2022 Wayne Warthen wwarthen@gmail.com @@ -1154,7 +1154,7 @@ file. More information can be found in the ROM Applications document. -Post Update System Image and Application update process +Post Upgrade System Image and Application Update Process Once you are satisfied that the ROM is working well, you will need to update the system images and RomWBW custom applications on your disk @@ -1222,21 +1222,20 @@ system on your disk. After this is done, you will need to use SYSCOPY to place the ZPM3 loader image on the boot tracks of all ZPM3 boot disks/slices. The - loader image is called CPMLDR.SYS. You must then copy (at a minimum) + loader image is called ZPMLDR.SYS. You must then copy (at a minimum) CPM3.SYS, ZCCP.COM, ZINSTAL.ZPM, and STARTZPM.COM onto the disk/slice. Assuming you copied the ZPM3 boot files onto your RAM disk at A:, you would use: - A>B:SYSCOPY C:=CPMLDR.SYS + A>B:SYSCOPY C:=ZPMLDR.SYS A>B:COPY CPM3.SYS C: A>B:COPY ZCCP.COM C: A>B:COPY ZINSTAL.ZPM C: A>B:COPY STARTZPM.COM C: - You may be wondering if the references to CPMLDR.SYS and CPM3.SYS - are typos. They are not. ZPM3 uses the same loader image as CPM3. - The ZPM3 main system code file is called CPM3.SYS which is the same - name as CP/M 3 uses, but the file contents are not the same. + You may be wondering if the reference to CPM3.SYS is a typo. It is + not. The ZPM3 main system code file is called CPM3.SYS which is the + same name as CP/M 3 uses, but the file contents are not the same. Finally, if you have copies of any of the RomWBW custom applications on your hard disk, you need to update them with the latest copies. The @@ -1292,9 +1291,9 @@ extension “.rom” and be 512Kb or 1024Kb in size. Transferring and flashing the System Update is accomplished in the same manner as described above in Upgrading with the required difference being that the flash application needs to be directed to complete a -partial flash using the /p command line switch. +partial flash using the /P command line switch. -E>flash write rom.upd /p +E>FLASH WRITE ROM.UPD /P RomWBW Distribution @@ -1314,8 +1313,8 @@ are: Application Description ------------- ------------------------------------------------------------ Binary The final output files of the build process are placed here. - Most importantly, are the ROM images with the file names - ending in “.rom”. + Most importantly, the ROM images with the file names ending + in “.rom”. Doc Contains various detailed documentation including the operating systems, RomWBW architecture, etc. @@ -1346,10 +1345,11 @@ applications are no longer provided. driver. - Ed Brindley contributed some of the code that supports the RC2014 platform. -- Phil Summers contributed Forth and BASIC in ROM, the AY-3-8910 sound - driver as well as a long list of general code enhancements. +- Phil Summers contributed the Forth and BASIC adaptations in ROM, the + AY-3-8910 sound driver as well as a long list of general code + enhancements. - Phillip Stevens contributed support for FreeRTOS. -- Curt Mayer contributed the Linux / MacOS build process. +- Curt Mayer contributed the original Linux / MacOS build process. - UNA BIOS and FDISK80 are the products of John Coffman. - FLASH4 is a product of Will Sowerbutts. - CLRDIR is a product of Max Scane. @@ -1382,8 +1382,8 @@ accordance with the intentions and/or licensing of their creators. If anyone feels their work is being used outside of it’s intended licensing, please notify: - Wayne Warthen - wwarthen@gmail.com + Wayne Warthen + wwarthen@gmail.com RomWBW is an aggregate work. It is composed of many individual, standalone programs that are distributed as a whole to function as a diff --git a/Source/Apps/Test/cpuspd/cpuspd.asm b/Source/Apps/Test/cpuspd/cpuspd.asm index 4ce9e457..71a22684 100644 --- a/Source/Apps/Test/cpuspd/cpuspd.asm +++ b/Source/Apps/Test/cpuspd/cpuspd.asm @@ -10,8 +10,6 @@ ; #include "../../../HBIOS/hbios.inc" ; -cpumhz .equ 8 ; for time delay calculations (not critical) -; ; General operational equates (should not requre adjustment) ; stksiz .equ $40 ; Working stack size @@ -20,23 +18,6 @@ rtc_port .equ $70 ; RTC latch port adr ; restart .equ $0000 ; CP/M restart vector bdos .equ $0005 ; BDOS invocation vector -; -; primary hardware platforms -; -plt_sbc .equ 1 ; SBC ECB Z80 SBC -plt_zeta .equ 2 ; ZETA Z80 SBC -plt_zeta2 .equ 3 ; ZETA Z80 V2 SBC -plt_n8 .equ 4 ; N8 (HOME COMPUTER) Z180 SBC -plt_mk4 .equ 5 ; MARK IV -plt_una .equ 6 ; UNA BIOS -plt_rcz80 .equ 7 ; RC2014 W/ Z80 -plt_rcz180 .equ 8 ; RC2014 W/ Z180 -plt_ezz80 .equ 9 ; EASY Z80 -plt_scz180 .equ 10 ; SCZ180 -plt_dyno .equ 11 ; DYNO MICRO-ATX MOTHERBOARD -plt_rcz280 .equ 12 ; RC2014 W/ Z280 -plt_mbc .equ 13 ; MULTI BOARD COMPUTER - ; ;======================================================================= ; @@ -68,63 +49,84 @@ main: ; ; Get HBIOS platform ID ; -; - ; Get platform id from RomWBW HBIOS - ld b,BF_SYSVER ; HBIOS VER function 0xF1 - ld c,0 ; Required reserved value - rst 08 ; Do it, L := Platform ID - ld a,l ; Move to A -; - cp plt_sbc - jr set_spd - cp plt_mbc - jr set_spd - jp err_not_sup ; Platform not supported -; -set_spd: ; Use first char of FCB for speed selection ld a,($5D) cp ' ' jr z,show_spd and $5F ; make upper case - cp 'F' ; fast - jr z,set_fast - cp 'H' ; high - jr z,set_fast - cp 'S' ; slow - jr z,set_slow - cp 'L' ; low - jr z,set_slow + cp 'D' ; double + jr z,set_dbl + cp 'F' ; full + jr z,set_full + cp 'H' ; half + jr z,set_half jr usage ; -set_slow: - ld a,(HB_RTCVAL) - and ~%00001000 +set_half: + ld l,0 jr new_spd ; -set_fast: - ld a,(HB_RTCVAL) - or %00001000 +set_full: + ld l,1 + jr new_spd +; +set_dbl: + ld l,2 jr new_spd ; new_spd: - ld (HB_RTCVAL),a - out (rtc_port),a + ld b,BF_SYSSET + ld c,BF_SYSSET_CPUSPD + rst 08 + jp nz,err_not_sup call show_spd xor a ret ; show_spd: - ld a,(HB_RTCVAL) - and %00001000 + ld b,BF_SYSGET + ld c,BF_SYSGET_CPUSPD + rst 08 + jp nz,err_not_sup + push de + ld a,l + ld de,str_slow + cp 0 + jr z,show_spd1 + ld de,str_full + cp 1 + jr z,show_spd1 + ld de,str_dbl + cp 2 jr z,show_spd1 - ld de,str_fast - jr show_spd2 + jp err_invalid show_spd1: - ld de,str_slow -show_spd2: call crlf2 call prtstr + pop hl +; + ld a,h ; memory wait states + cp $FF + jr z,show_spd2 + call crlf + ld de,str_spacer + call prtstr + call prtdecb + ld de,str_memws + call prtstr +; +show_spd2: + ld a,l + cp $FF + jr z,show_spd3 + call crlf + ld de,str_spacer + call prtstr + call prtdecb + ld de,str_iows + call prtstr +; +show_spd3: ret ; usage: @@ -139,6 +141,9 @@ usage: err_not_sup: ld de,str_err_not_sup jr err_ret +err_invalid: + ld de,str_err_invalid + jr err_ret ; err_ret: call crlf2 @@ -346,36 +351,21 @@ addhla: inc h ret ; -; Delay ~10ms -; -delay: - push af - push de - ld de,625 ; 10000us/16us -delay0: - ld a,(cpuscl) -delay1: - dec a - jr nz,delay1 - dec de - ld a,d - or e - jp nz,delay0 - pop de - pop af - ret -; -; ; ;======================================================================= ; Constants ;======================================================================= ; -str_banner .db "RomWBW CPU Speed Selector v0.1, 25-Jan-2022",0 -str_slow .db " CPU speed is SLOW",0 -str_fast .db " CPU speed is FAST",0 -str_err_not_sup .db " ERROR: Platform not supported!",0 -str_usage .db " Usage: CPUSPD [F|S]",0 +str_banner .db "RomWBW CPU Speed Selector v0.2, 26-Jan-2022",0 +str_spacer .db " ",0 +str_slow .db " CPU speed is HALF",0 +str_full .db " CPU speed is FULL",0 +str_dbl .db " CPU speed is DOUBLE",0 +str_memws .db " Memory Wait State(s)",0 +str_iows .db " I/O Wait State(s)",0 +str_err_not_sup .db " ERROR: Platform or configuration not supported!",0 +str_err_invalid .db " ERROR: Invalid configuration!",0 +str_usage .db " Usage: CPUSPD [Half|Full|Double]",0 ; ;======================================================================= ; Working data @@ -385,8 +375,6 @@ stksav .dw 0 ; stack pointer saved at start .fill stksiz,0 ; stack stack .equ $ ; stack top ; -cpuscl .db cpumhz - 2 -; ;======================================================================= ; .end \ No newline at end of file diff --git a/Source/Doc/Architecture.md b/Source/Doc/Architecture.md index 859c712a..a761c02d 100644 --- a/Source/Doc/Architecture.md +++ b/Source/Doc/Architecture.md @@ -1959,6 +1959,23 @@ lookup. | D: BIOS Bank ID | E: User Bank ID +#### SYSGET Subfunction 0xF3 -- Get CPU Speed (CPUSPD) + +| _Entry Parameters_ +| BC: 0xF8F3 + +| _Returned Values_ +| A: Status (0=OK, else error) +| L: Clock Mult (0:Half, 1:Full, 2: Double) +| D: Memory Wait States +| E: I/O Wait States + +This function will return the running CPU speed attributes of a system. +Note that it is frequently impossible to tell if a system is capable +of dynamic speed changes. This function returns it's best guess. +If either of the wait state settings is unknown, the function will +return 0xFF. + ### Function 0xF9 -- System Set (SYSSET) | _Entry Parameters_ @@ -2002,6 +2019,26 @@ available along with the registers/information used as input. | _Returned Values_ | A: Status (0=OK, else error) +#### SYSSET Subfunction 0xF3 -- Set CPU Speed (CPUSPD) + +| _Entry Parameters_ +| BC: 0xF9F3 +| L: Clock Mult (0:Half, 1:Full, 2: Double) +| D: Memory Wait States +| E: I/O Wait States + +| _Returned Values_ +| A: Status (0=OK, else error) + +This function will modify the running CPU speed attributes of a system. +Note that it is frequently impossible to tell if a system is capable +of dynamic speed changes. This function makes the changes blindly. +You can specify 0xFF for either of the wait state settings to have them +left alone. + +In the case of the Z180, the SIO port buad rate is derived from the CPU +speed. So, when the speed is changed the baud rate will change. + ### Function 0xFA -- System Peek (SYSPEEK) | _Entry Parameters_ diff --git a/Source/HBIOS/API.txt b/Source/HBIOS/API.txt index 013ec895..aeae56e9 100644 --- a/Source/HBIOS/API.txt +++ b/Source/HBIOS/API.txt @@ -102,7 +102,7 @@ GET ($F8): DE=CPU Speed in KHz MEMINFO ($F1): - BC=Function/Subfunction A=Result + BC=FuSnction/Subfunction A=Result D=# ROM Banks E=# RAM Banks @@ -111,6 +111,13 @@ GET ($F8): D=BIOS Bank Id E=User Bank Id + CPUSPD ($F3): + BC=Function/Subfunction A=Result + L=Clock Mult (0:Half, 1:Full, 2: Double) + D=Memory Wait States + E=I/O Wait States + + SET ($F9): BC=Function/Subfunction A=Result @@ -127,6 +134,13 @@ SET ($F9): DE=Boot Volume (Disk Unit/Slice) L=Boot Bank Id + CPUSPD ($F3): + BC=Function/Subfunction A=Result + L=Clock Mult (0:Half, 1:Full, 2: Double) + D=Memory Wait States + E=I/O Wait States + + PEEK ($FA): B=Function A=Result D=Bank E=Byte Value diff --git a/Source/HBIOS/cfg_dyno.asm b/Source/HBIOS/cfg_dyno.asm index 5a4ce268..be14562c 100644 --- a/Source/HBIOS/cfg_dyno.asm +++ b/Source/HBIOS/cfg_dyno.asm @@ -13,6 +13,8 @@ ; #DEFINE PLATFORM_NAME "DYNO" ; +#INCLUDE "hbios.inc" +; PLATFORM .EQU PLT_DYNO ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC] CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] diff --git a/Source/HBIOS/cfg_ezz80.asm b/Source/HBIOS/cfg_ezz80.asm index 24713e83..d18bfb42 100644 --- a/Source/HBIOS/cfg_ezz80.asm +++ b/Source/HBIOS/cfg_ezz80.asm @@ -13,6 +13,8 @@ ; #DEFINE PLATFORM_NAME "EASYZ80" ; +#INCLUDE "hbios.inc" +; PLATFORM .EQU PLT_EZZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] diff --git a/Source/HBIOS/cfg_master.asm b/Source/HBIOS/cfg_master.asm index f527e76f..b666088c 100644 --- a/Source/HBIOS/cfg_master.asm +++ b/Source/HBIOS/cfg_master.asm @@ -10,6 +10,8 @@ ; #DEFINE PLATFORM_NAME "ROMWBW" ; +#INCLUDE "hbios.inc" +; PLATFORM .EQU PLT_SBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] diff --git a/Source/HBIOS/cfg_mbc.asm b/Source/HBIOS/cfg_mbc.asm index 08547480..74b64d92 100644 --- a/Source/HBIOS/cfg_mbc.asm +++ b/Source/HBIOS/cfg_mbc.asm @@ -13,6 +13,8 @@ ; #DEFINE PLATFORM_NAME "Multi Board Computer" ; +#INCLUDE "hbios.inc" +; PLATFORM .EQU PLT_MBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] diff --git a/Source/HBIOS/cfg_mk4.asm b/Source/HBIOS/cfg_mk4.asm index 157e1134..01aa44fb 100644 --- a/Source/HBIOS/cfg_mk4.asm +++ b/Source/HBIOS/cfg_mk4.asm @@ -13,6 +13,8 @@ ; #DEFINE PLATFORM_NAME "MARK IV" ; +#INCLUDE "hbios.inc" +; PLATFORM .EQU PLT_MK4 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC] CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] diff --git a/Source/HBIOS/cfg_n8.asm b/Source/HBIOS/cfg_n8.asm index d9aa64c6..f4bcf1b2 100644 --- a/Source/HBIOS/cfg_n8.asm +++ b/Source/HBIOS/cfg_n8.asm @@ -13,6 +13,8 @@ ; #DEFINE PLATFORM_NAME "N8" ; +#INCLUDE "hbios.inc" +; PLATFORM .EQU PLT_N8 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC] CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] diff --git a/Source/HBIOS/cfg_rcz180.asm b/Source/HBIOS/cfg_rcz180.asm index eaf2141d..2a5a8f25 100644 --- a/Source/HBIOS/cfg_rcz180.asm +++ b/Source/HBIOS/cfg_rcz180.asm @@ -13,6 +13,8 @@ ; #DEFINE PLATFORM_NAME "RC2014" ; +#INCLUDE "hbios.inc" +; PLATFORM .EQU PLT_RCZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC] CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] diff --git a/Source/HBIOS/cfg_rcz280.asm b/Source/HBIOS/cfg_rcz280.asm index 625f5e32..a13b1308 100644 --- a/Source/HBIOS/cfg_rcz280.asm +++ b/Source/HBIOS/cfg_rcz280.asm @@ -13,6 +13,8 @@ ; #DEFINE PLATFORM_NAME "RC2014" ; +#INCLUDE "hbios.inc" +; PLATFORM .EQU PLT_RCZ280 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC] CPUFAM .EQU CPU_Z280 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] diff --git a/Source/HBIOS/cfg_rcz80.asm b/Source/HBIOS/cfg_rcz80.asm index 4fbb3501..a6d411a2 100644 --- a/Source/HBIOS/cfg_rcz80.asm +++ b/Source/HBIOS/cfg_rcz80.asm @@ -13,6 +13,8 @@ ; #DEFINE PLATFORM_NAME "RC2014" ; +#INCLUDE "hbios.inc" +; PLATFORM .EQU PLT_RCZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] diff --git a/Source/HBIOS/cfg_sbc.asm b/Source/HBIOS/cfg_sbc.asm index 1fe35342..f71d5203 100644 --- a/Source/HBIOS/cfg_sbc.asm +++ b/Source/HBIOS/cfg_sbc.asm @@ -13,6 +13,8 @@ ; #DEFINE PLATFORM_NAME "SBC" ; +#INCLUDE "hbios.inc" +; PLATFORM .EQU PLT_SBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] diff --git a/Source/HBIOS/cfg_scz180.asm b/Source/HBIOS/cfg_scz180.asm index 82daba78..1698252b 100644 --- a/Source/HBIOS/cfg_scz180.asm +++ b/Source/HBIOS/cfg_scz180.asm @@ -13,6 +13,8 @@ ; #DEFINE PLATFORM_NAME "SCZ180" ; +#INCLUDE "hbios.inc" +; PLATFORM .EQU PLT_SCZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC] CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] diff --git a/Source/HBIOS/cfg_una.asm b/Source/HBIOS/cfg_una.asm index 33528538..408e0fb6 100644 --- a/Source/HBIOS/cfg_una.asm +++ b/Source/HBIOS/cfg_una.asm @@ -13,7 +13,9 @@ ; #DEFINE PLATFORM_NAME "UNA" ; -PLATFORM .EQU PLT_UNA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC] +#INCLUDE "../UBIOS/ubios.inc" +; +;PLATFORM .EQU PLT_UNA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC] BIOS .EQU BIOS_UNA ; HARDWARE BIOS: BIOS_[WBW|UNA] ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE diff --git a/Source/HBIOS/cfg_zeta.asm b/Source/HBIOS/cfg_zeta.asm index 8a2bb725..bcd7c7f4 100644 --- a/Source/HBIOS/cfg_zeta.asm +++ b/Source/HBIOS/cfg_zeta.asm @@ -13,6 +13,8 @@ ; #DEFINE PLATFORM_NAME "ZETA" ; +#INCLUDE "hbios.inc" +; PLATFORM .EQU PLT_ZETA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; BIOS_[WBW|UNA]: HARDWARE BIOS diff --git a/Source/HBIOS/cfg_zeta2.asm b/Source/HBIOS/cfg_zeta2.asm index 30983347..acff03b4 100644 --- a/Source/HBIOS/cfg_zeta2.asm +++ b/Source/HBIOS/cfg_zeta2.asm @@ -13,6 +13,8 @@ ; #DEFINE PLATFORM_NAME "ZETA V2" ; +#INCLUDE "hbios.inc" +; PLATFORM .EQU PLT_ZETA2 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 198b6fcc..18f9a886 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -3714,6 +3714,8 @@ SYS_GET: JP Z,SYS_GETMEMINFO CP BF_SYSGET_BNKINFO JP Z,SYS_GETBNKINFO + CP BF_SYSGET_CPUSPD + JP Z,SYS_GETCPUSPD CALL SYSCHK LD A,ERR_NOFUNC ; SIGNAL ERROR OR A ; SET FLAGS @@ -3802,6 +3804,61 @@ SYS_GETBNKINFO: XOR A RET ; +; GET SYSTEM CPU SPEED ORMANCE ATTRIBUTES +; RETURNS: +; L: CLOCK MULT (0:HALF, 1:FULL, 2: DOUBLE) +; D: MEMORY WAIT STATES +; E: I/O WAIT STATES +; +SYS_GETCPUSPD: +; +#IF ((PLATFORM == PLT_SBC) | (PLATFORM == PLT_MBC)) + LD A,(HB_RTCVAL) + BIT 3,A + LD L,0 ; ASSUME HALF SPEED + JR Z,SYS_GETCPUSPD1 + LD L,1 +SYS_GETCPUSPD1: + LD DE,$FFFF ; UNKNOWN WAIT STATES + XOR A + RET +#ENDIF +; +#IF (CPUFAM == CPU_Z180) + IN0 A,(Z180_CMR) ; GET CLOCK MULTIPLIER + RLCA ; ROTATE BIT TO BIT 0 + AND %00000001 ; ISOLATE IT + LD H,A ; SAVE IN H + IN0 A,(Z180_CCR) ; GET CLOCK CONTROL + RLCA ; ROTATE BIT TO BIT 0 + AND %00000001 ; ISOLATE IT + LD L,A ; SAVE IN L + XOR A ; CLEAR ACCUM + ADD A,H ; ADD IN CMR BIT + ADD A,L ; ADD IN CCR BIT + LD L,A ; SAVE RESULT IN L +; + ; DCNTL = MMII???? + IN0 A,(Z180_DCNTL) ; GET WAIT STATES + RLCA ; ROTATE MEM WS BITS + RLCA ; ... TO LOW BITS + PUSH AF ; SAVE FOR NOW + AND %00000011 ; ISOLATE BITS + LD D,A ; PUT IN D + POP AF ; RECOVER A + RLCA ; ROTATE I/O WS BITS + RLCA ; ... TO LOW BITS + AND %00000011 ; ISOLATE BITS + INC A ; ADD 1 FOR BUILT-IN WS + LD E,A ; PUT IN E +; + XOR A + RET +#ENDIF +; + OR $FF + RET +; ; GET SERIAL UNIT COUNT ; SYS_GETCIOCNT: @@ -3932,6 +3989,8 @@ SYS_SET: JR Z,SYS_SETSECS CP BF_SYSSET_BOOTINFO JR Z,SYS_SETBOOTINFO + CP BF_SYSSET_CPUSPD + JR Z,SYS_SETCPUSPD CALL SYSCHK LD A,ERR_NOFUNC ; SIGNAL ERROR OR A ; SET FLAGS @@ -3973,6 +4032,67 @@ SYS_SETSECS: XOR A RET ; +; SET SYSTEM CPU SPEED ATTRIBUTES +; ON ENTRY: +; L: CLOCK MULT (0:HALF, 1:FULL, 2: DOUBLE) +; D: MEMORY WAIT STATES +; E: I/O WAIT STATES +; +SYS_SETCPUSPD: +; +#IF ((PLATFORM == PLT_SBC) | (PLATFORM == PLT_MBC)) +; +; WAIT STATE SETTINGS ARE IGNORED FOR Z80 +; + LD A,L ; CLK SPD TO ACCUM + LD C,%00000000 ; HALF SPEED + CP 0 + JR Z,SYS_SETCPUSPD1 + LD C,%00001000 ; FULL SPEED + CP 1 + JR Z,SYS_SETCPUSPD1 + JR SYS_SETCPUSPD_ERR ; SPD NOT SUPPORTED +SYS_SETCPUSPD1: + LD A,(HB_RTCVAL) + AND ~%00001000 ; CLEAR SPEED BIT + OR C ; IMPLEMENT NEW SPEED BIT + LD (HB_RTCVAL),A ; SAVE IN SHADOW REGISTER + OUT (RTCIO),A ; UPDATE HARDWARE REGISTER + XOR A + RET +#ENDIF +; +#IF (CPUFAM == CPU_Z180) + LD A,L ; CLK SPD TO ACCUM + LD B,0 ; B HAS BIT FOR CMR + LD C,0 ; C HAS BIT FOR CCR + CP 2 ; DOUBLE SPEED? + JR C,SYS_SETCPUSPD1 + LD B,%10000000 +SYS_SETCPUSPD1: + CP 1 + JR C,SYS_SETCPUSPD2 + LD C,%10000000 +SYS_SETCPUSPD2: +; + IN0 A,(Z180_CMR) + AND ~%10000000 + OR B + OUT0 (Z180_CMR),A +; + IN0 A,(Z180_CCR) + AND ~%10000000 + OR C + OUT0 (Z180_CCR),A +; + XOR A + RET +#ENDIF +; +SYS_SETCPUSPD_ERR: + OR $FF ; NOT SUPPORTED + RET +; ; RETURN A BYTE OF MEMORY FROM SPECIFIED BANK ; ENTRY: D=BANK ID, HL=ADDRESS ; RETURN: E=BYTE VALUE diff --git a/Source/HBIOS/hbios.inc b/Source/HBIOS/hbios.inc index 498d51c7..cd25559a 100644 --- a/Source/HBIOS/hbios.inc +++ b/Source/HBIOS/hbios.inc @@ -108,10 +108,12 @@ BF_SYSGET_BOOTINFO .EQU $E0 ; GET BOOT INFORMATION BF_SYSGET_CPUINFO .EQU $F0 ; GET CPU INFORMATION BF_SYSGET_MEMINFO .EQU $F1 ; GET MEMORY CAPACTITY INFO BF_SYSGET_BNKINFO .EQU $F2 ; GET BANK ASSIGNMENT INFO +BF_SYSGET_CPUSPD .EQU $F3 ; GET CLOCK SPEED & WAIT STATES ; BF_SYSSET_TIMER .EQU $D0 ; SET TIMER VALUE BF_SYSSET_SECS .EQU $D1 ; SET SECONDS VALUE BF_SYSSET_BOOTINFO .EQU $E0 ; SET BOOT INFORMATION +BF_SYSSET_CPUSPD .EQU $F3 ; SET CLOCK SPEED & WAIT STATES ; BF_SYSINT_INFO .EQU $00 ; GET INTERRUPT SYSTEM INFO BF_SYSINT_GET .EQU $10 ; GET INT VECTOR ADDRESS @@ -119,6 +121,22 @@ BF_SYSINT_SET .EQU $20 ; SET INT VECTOR ADDRESS ; CIO_CONSOLE .EQU $80 ; CIO UNIT NUM FOR CUR CON ; +; PRIMARY HARDWARE PLATFORMS +; +PLT_SBC .EQU 1 ; SBC ECB Z80 SBC +PLT_ZETA .EQU 2 ; ZETA Z80 SBC +PLT_ZETA2 .EQU 3 ; ZETA Z80 V2 SBC +PLT_N8 .EQU 4 ; N8 (HOME COMPUTER) Z180 SBC +PLT_MK4 .EQU 5 ; MARK IV +PLT_UNA .EQU 6 ; UNA BIOS +PLT_RCZ80 .EQU 7 ; RC2014 W/ Z80 +PLT_RCZ180 .EQU 8 ; RC2014 W/ Z180 +PLT_EZZ80 .EQU 9 ; EASY Z80 +PLT_SCZ180 .EQU 10 ; SCZ180 +PLT_DYNO .EQU 11 ; DYNO MICRO-ATX MOTHERBOARD +PLT_RCZ280 .EQU 12 ; RC2014 W/ Z280 +PLT_MBC .EQU 13 ; MULTI BOARD COMPUTER +; ; HBIOS GLOBAL ERROR RETURN VALUES ; ERR_NONE .EQU 0 ; SUCCESS diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index 630d8752..080677e3 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -42,22 +42,6 @@ DL_INFO .EQU 16 ; HBIOS DISPLAYS INFORMATIONAL MESSAGES DL_DETAIL .EQU 20 ; HBIOS DISPLAYS DETAILED DIAGNOSTIC MESSAGES DL_VERBOSE .EQU 24 ; HBIOS DISPLAYS ANYTHING IT KNOWS HOW TO ; -; PRIMARY HARDWARE PLATFORMS -; -PLT_SBC .EQU 1 ; SBC ECB Z80 SBC -PLT_ZETA .EQU 2 ; ZETA Z80 SBC -PLT_ZETA2 .EQU 3 ; ZETA Z80 V2 SBC -PLT_N8 .EQU 4 ; N8 (HOME COMPUTER) Z180 SBC -PLT_MK4 .EQU 5 ; MARK IV -PLT_UNA .EQU 6 ; UNA BIOS -PLT_RCZ80 .EQU 7 ; RC2014 W/ Z80 -PLT_RCZ180 .EQU 8 ; RC2014 W/ Z180 -PLT_EZZ80 .EQU 9 ; EASY Z80 -PLT_SCZ180 .EQU 10 ; SCZ180 -PLT_DYNO .EQU 11 ; DYNO MICRO-ATX MOTHERBOARD -PLT_RCZ280 .EQU 12 ; RC2014 W/ Z280 -PLT_MBC .EQU 13 ; MULTI BOARD COMPUTER -; ; CPU TYPES ; CPU_NONE .EQU 0 ; NO CPU TYPE DEFINED @@ -416,15 +400,6 @@ SPD_LOW .EQU 2 ; PLATFORM CAN CHANGE SPEED, STARTS LOW ; #INCLUDE "build.inc" ; INCLUDE USER CONFIG, ADD VARIANT, TIMESTAMP, & ROMSIZE ; -#IF (BIOS == BIOS_WBW) -#INCLUDE "hbios.inc" -#ENDIF -; -#IF (BIOS == BIOS_UNA) -#INCLUDE "../UBIOS/ubios.inc" -#ENDIF -; -; ; INCLUDE Z180 REGISTER DEFINITIONS ; #IF (BIOS == BIOS_WBW) @@ -713,16 +688,15 @@ INT_PIO1B .EQU 12 ; ZILOG PIO 1, CHANNEL B #DEFINE VEC(INTX) INTX*2 #ENDIF - +; ; SET DEFAULT CSIO SPEED (INTERNAL CLOCK, SLOW AS POSSIBLE) ; DIV 1280, 14KHZ @ 18MHZ CLK - +; #IF (BIOS == BIOS_WBW) #IF (CPUFAM == CPU_Z180) Z180_CNTR_DEF .EQU $06 ; DEFAULT VALUE FOR Z180 CSIO CONFIG #ENDIF #ENDIF - ; ; HELPER MACROS ; diff --git a/Source/ver.inc b/Source/ver.inc index 50edcccd..0f82f97b 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,4 +2,4 @@ #DEFINE RMN 1 #DEFINE RUP 1 #DEFINE RTP 0 -#DEFINE BIOSVER "3.1.1-pre.150" +#DEFINE BIOSVER "3.1.1-pre.151" diff --git a/Source/ver.lib b/Source/ver.lib index 091ba1e6..61894d78 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 1 rup equ 1 rtp equ 0 biosver macro - db "3.1.1-pre.150" + db "3.1.1-pre.151" endm