⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 console.c

📁 linux0.11 version(301k)
💻 C
📖 第 1 页 / 共 5 页
字号:
<a name=L192 href="source/kernel/chr_drv/console.c#L192">192</a>                         <i>"addl $2,%%edi\n\t"</i>     <b><i>/* %edi has been decremented by 4 */</i></b><a name=L193 href="source/kernel/chr_drv/console.c#L193">193</a>                         <i>"movl _video_num_columns,%%ecx\n\t"</i><a name=L194 href="source/kernel/chr_drv/console.c#L194">194</a>                         <i>"rep\n\t"</i><a name=L195 href="source/kernel/chr_drv/console.c#L195">195</a>                         <i>"stosw"</i><a name=L196 href="source/kernel/chr_drv/console.c#L196">196</a>                         ::<i>"a"</i> (<a href="ident?i=video_erase_char">video_erase_char</a>),<a name=L197 href="source/kernel/chr_drv/console.c#L197">197</a>                         <i>"c"</i> ((<a href="ident?i=bottom">bottom</a>-<a href="ident?i=top">top</a>-1)*<a href="ident?i=video_num_columns">video_num_columns</a>&gt;&gt;1),<a name=L198 href="source/kernel/chr_drv/console.c#L198">198</a>                         <i>"D"</i> (<a href="ident?i=origin">origin</a>+<a href="ident?i=video_size_row">video_size_row</a>*<a href="ident?i=bottom">bottom</a>-4),<a name=L199 href="source/kernel/chr_drv/console.c#L199">199</a>                         <i>"S"</i> (<a href="ident?i=origin">origin</a>+<a href="ident?i=video_size_row">video_size_row</a>*(<a href="ident?i=bottom">bottom</a>-1)-4)<a name=L200 href="source/kernel/chr_drv/console.c#L200">200</a>                         :<i>"ax"</i>,<i>"cx"</i>,<i>"di"</i>,<i>"si"</i>);<a name=L201 href="source/kernel/chr_drv/console.c#L201">201</a>         }<a name=L202 href="source/kernel/chr_drv/console.c#L202">202</a> }<a name=L203 href="source/kernel/chr_drv/console.c#L203">203</a> <a name=L204 href="source/kernel/chr_drv/console.c#L204">204</a> static void <a href="ident?i=lf">lf</a>(void)<a name=L205 href="source/kernel/chr_drv/console.c#L205">205</a> {<a name=L206 href="source/kernel/chr_drv/console.c#L206">206</a>         if (<a href="ident?i=y">y</a>+1&lt;<a href="ident?i=bottom">bottom</a>) {<a name=L207 href="source/kernel/chr_drv/console.c#L207">207</a>                 <a href="ident?i=y">y</a>++;<a name=L208 href="source/kernel/chr_drv/console.c#L208">208</a>                 <a href="ident?i=pos">pos</a> += <a href="ident?i=video_size_row">video_size_row</a>;<a name=L209 href="source/kernel/chr_drv/console.c#L209">209</a>                 return;<a name=L210 href="source/kernel/chr_drv/console.c#L210">210</a>         }<a name=L211 href="source/kernel/chr_drv/console.c#L211">211</a>         <a href="ident?i=scrup">scrup</a>();<a name=L212 href="source/kernel/chr_drv/console.c#L212">212</a> }<a name=L213 href="source/kernel/chr_drv/console.c#L213">213</a> <a name=L214 href="source/kernel/chr_drv/console.c#L214">214</a> static void <a href="ident?i=ri">ri</a>(void)<a name=L215 href="source/kernel/chr_drv/console.c#L215">215</a> {<a name=L216 href="source/kernel/chr_drv/console.c#L216">216</a>         if (<a href="ident?i=y">y</a>&gt;<a href="ident?i=top">top</a>) {<a name=L217 href="source/kernel/chr_drv/console.c#L217">217</a>                 <a href="ident?i=y">y</a>--;<a name=L218 href="source/kernel/chr_drv/console.c#L218">218</a>                 <a href="ident?i=pos">pos</a> -= <a href="ident?i=video_size_row">video_size_row</a>;<a name=L219 href="source/kernel/chr_drv/console.c#L219">219</a>                 return;<a name=L220 href="source/kernel/chr_drv/console.c#L220">220</a>         }<a name=L221 href="source/kernel/chr_drv/console.c#L221">221</a>         <a href="ident?i=scrdown">scrdown</a>();<a name=L222 href="source/kernel/chr_drv/console.c#L222">222</a> }<a name=L223 href="source/kernel/chr_drv/console.c#L223">223</a> <a name=L224 href="source/kernel/chr_drv/console.c#L224">224</a> static void <a href="ident?i=cr">cr</a>(void)<a name=L225 href="source/kernel/chr_drv/console.c#L225">225</a> {<a name=L226 href="source/kernel/chr_drv/console.c#L226">226</a>         <a href="ident?i=pos">pos</a> -= <a href="ident?i=x">x</a>&lt;&lt;1;<a name=L227 href="source/kernel/chr_drv/console.c#L227">227</a>         <a href="ident?i=x">x</a>=0;<a name=L228 href="source/kernel/chr_drv/console.c#L228">228</a> }<a name=L229 href="source/kernel/chr_drv/console.c#L229">229</a> <a name=L230 href="source/kernel/chr_drv/console.c#L230">230</a> static void <a href="ident?i=del">del</a>(void)<a name=L231 href="source/kernel/chr_drv/console.c#L231">231</a> {<a name=L232 href="source/kernel/chr_drv/console.c#L232">232</a>         if (<a href="ident?i=x">x</a>) {<a name=L233 href="source/kernel/chr_drv/console.c#L233">233</a>                 <a href="ident?i=pos">pos</a> -= 2;<a name=L234 href="source/kernel/chr_drv/console.c#L234">234</a>                 <a href="ident?i=x">x</a>--;<a name=L235 href="source/kernel/chr_drv/console.c#L235">235</a>                 *(unsigned short *)<a href="ident?i=pos">pos</a> = <a href="ident?i=video_erase_char">video_erase_char</a>;<a name=L236 href="source/kernel/chr_drv/console.c#L236">236</a>         }<a name=L237 href="source/kernel/chr_drv/console.c#L237">237</a> }<a name=L238 href="source/kernel/chr_drv/console.c#L238">238</a> <a name=L239 href="source/kernel/chr_drv/console.c#L239">239</a> static void <a href="ident?i=csi_J">csi_J</a>(int <a href="ident?i=par">par</a>)<a name=L240 href="source/kernel/chr_drv/console.c#L240">240</a> {<a name=L241 href="source/kernel/chr_drv/console.c#L241">241</a>         long <a href="ident?i=count">count</a> __asm__(<i>"cx"</i>);<a name=L242 href="source/kernel/chr_drv/console.c#L242">242</a>         long start __asm__(<i>"di"</i>);<a name=L243 href="source/kernel/chr_drv/console.c#L243">243</a> <a name=L244 href="source/kernel/chr_drv/console.c#L244">244</a>         switch (<a href="ident?i=par">par</a>) {<a name=L245 href="source/kernel/chr_drv/console.c#L245">245</a>                 case 0: <b><i>/* erase from cursor to end of display */</i></b><a name=L246 href="source/kernel/chr_drv/console.c#L246">246</a>                         <a href="ident?i=count">count</a> = (<a href="ident?i=scr_end">scr_end</a>-<a href="ident?i=pos">pos</a>)&gt;&gt;1;<a name=L247 href="source/kernel/chr_drv/console.c#L247">247</a>                         start = <a href="ident?i=pos">pos</a>;<a name=L248 href="source/kernel/chr_drv/console.c#L248">248</a>                         break;<a name=L249 href="source/kernel/chr_drv/console.c#L249">249</a>                 case 1: <b><i>/* erase from start to cursor */</i></b><a name=L250 href="source/kernel/chr_drv/console.c#L250">250</a>                         <a href="ident?i=count">count</a> = (<a href="ident?i=pos">pos</a>-<a href="ident?i=origin">origin</a>)&gt;&gt;1;<a name=L251 href="source/kernel/chr_drv/console.c#L251">251</a>                         start = <a href="ident?i=origin">origin</a>;<a name=L252 href="source/kernel/chr_drv/console.c#L252">252</a>                         break;<a name=L253 href="source/kernel/chr_drv/console.c#L253">253</a>                 case 2: <b><i>/* erase whole display */</i></b><a name=L254 href="source/kernel/chr_drv/console.c#L254">254</a>                         <a href="ident?i=count">count</a> = <a href="ident?i=video_num_columns">video_num_columns</a> * <a href="ident?i=video_num_lines">video_num_lines</a>;<a name=L255 href="source/kernel/chr_drv/console.c#L255">255</a>                         start = <a href="ident?i=origin">origin</a>;<a name=L256 href="source/kernel/chr_drv/console.c#L256">256</a>                         break;<a name=L257 href="source/kernel/chr_drv/console.c#L257">257</a>                 default:<a name=L258 href="source/kernel/chr_drv/console.c#L258">258</a>                         return;<a name=L259 href="source/kernel/chr_drv/console.c#L259">259</a>         }<a name=L260 href="source/kernel/chr_drv/console.c#L260">260</a>         __asm__(<i>"cld\n\t"</i><a name=L261 href="source/kernel/chr_drv/console.c#L261">261</a>                 <i>"rep\n\t"</i><a name=L262 href="source/kernel/chr_drv/console.c#L262">262</a>                 <i>"stosw\n\t"</i><a name=L263 href="source/kernel/chr_drv/console.c#L263">263</a>                 ::<i>"c"</i> (<a href="ident?i=count">count</a>),<a name=L264 href="source/kernel/chr_drv/console.c#L264">264</a>                 <i>"D"</i> (start),<i>"a"</i> (<a href="ident?i=video_erase_char">video_erase_char</a>)<a name=L265 href="source/kernel/chr_drv/console.c#L265">265</a>                 :<i>"cx"</i>,<i>"di"</i>);<a name=L266 href="source/kernel/chr_drv/console.c#L266">266</a> }<a name=L267 href="source/kernel/chr_drv/console.c#L267">267</a> <a name=L268 href="source/kernel/chr_drv/console.c#L268">268</a> static void <a href="ident?i=csi_K">csi_K</a>(int <a href="ident?i=par">par</a>)<a name=L269 href="source/kernel/chr_drv/console.c#L269">269</a> {<a name=L270 href="source/kernel/chr_drv/console.c#L270">270</a>         long <a href="ident?i=count">count</a> __asm__(<i>"cx"</i>);<a name=L271 href="source/kernel/chr_drv/console.c#L271">271</a>         long start __asm__(<i>"di"</i>);<a name=L272 href="source/kernel/chr_drv/console.c#L272">272</a> <a name=L273 href="source/kernel/chr_drv/console.c#L273">273</a>         switch (<a href="ident?i=par">par</a>) {<a name=L274 href="source/kernel/chr_drv/console.c#L274">274</a>                 case 0: <b><i>/* erase from cursor to end of line */</i></b><a name=L275 href="source/kernel/chr_drv/console.c#L275">275</a>                         if (<a href="ident?i=x">x</a>&gt;=<a href="ident?i=video_num_columns">video_num_columns</a>)<a name=L276 href="source/kernel/chr_drv/console.c#L276">276</a>                                 return;<a name=L277 href="source/kernel/chr_drv/console.c#L277">277</a>                         <a href="ident?i=count">count</a> = <a href="ident?i=video_num_columns">video_num_columns</a>-<a href="ident?i=x">x</a>;<a name=L278 href="source/kernel/chr_drv/console.c#L278">278</a>                         start = <a href="ident?i=pos">pos</a>;<a name=L279 href="source/kernel/chr_drv/console.c#L279">279</a>                         break;<a name=L280 href="source/kernel/chr_drv/console.c#L280">280</a>                 case 1: <b><i>/* erase from start of line to cursor */</i></b><a name=L281 href="source/kernel/chr_drv/console.c#L281">281</a>                         start = <a href="ident?i=pos">pos</a> - (<a href="ident?i=x">x</a>&lt;&lt;1);<a name=L282 href="source/kernel/chr_drv/console.c#L282">282</a>                         <a href="ident?i=count">count</a> = (<a href="ident?i=x">x</a>&lt;<a href="ident?i=video_num_columns">video_num_columns</a>)?<a href="ident?i=x">x</a>:<a href="ident?i=video_num_columns">video_num_columns</a>;<a name=L283 href="source/kernel/chr_drv/console.c#L283">283</a>                         break;<a name=L284 href="source/kernel/chr_drv/console.c#L284">284</a>                 case 2: <b><i>/* erase whole line */</i></b><a name=L285 href="source/kernel/chr_drv/console.c#L285">285</a>                         start = <a href="ident?i=pos">pos</a> - (<a href="ident?i=x">x</a>&lt;&lt;1);<a name=L286 href="source/kernel/chr_drv/console.c#L286">286</a>                         <a href="ident?i=count">count</a> = <a href="ident?i=video_num_columns">video_num_columns</a>;<a name=L287 href="source/kernel/chr_drv/console.c#L287">287</a>                         break;<a name=L288 href="source/kernel/chr_drv/console.c#L288">288</a>                 default:<a name=L289 href="source/kernel/chr_drv/console.c#L289">289</a>                         return;<a name=L290 href="source/kernel/chr_drv/console.c#L290">290</a>         }<a name=L291 href="source/kernel/chr_drv/console.c#L291">291</a>         __asm__(<i>"cld\n\t"</i><a name=L292 href="source/kernel/chr_drv/console.c#L292">292</a>                 <i>"rep\n\t"</i><a name=L293 href="source/kernel/chr_drv/console.c#L293">293</a>                 <i>"stosw\n\t"</i><a name=L294 href="source/kernel/chr_drv/console.c#L294">294</a>                 ::<i>"c"</i> (<a href="ident?i=count">count</a>),<a name=L295 href="source/kernel/chr_drv/console.c#L295">295</a>                 <i>"D"</i> (start),<i>"a"</i> (<a href="ident?i=video_erase_char">video_erase_char</a>)<a name=L296 href="source/kernel/chr_drv/console.c#L296">296</a>                 :<i>"cx"</i>,<i>"di"</i>);<a name=L297 href="source/kernel/chr_drv/console.c#L297">297</a> }<a name=L298 href="source/kernel/chr_drv/console.c#L298">298</a> <a name=L299 href="source/kernel/chr_drv/console.c#L299">299</a> void <a href="ident?i=csi_m">csi_m</a>(void)<a name=L300 href="source/kernel/chr_drv/console.c#L300">300</a> {<a name=L301 href="source/kernel/chr_drv/console.c#L301">301</a>         int i;<a name=L302 href="source/kernel/chr_drv/console.c#L302">302</a> 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -