<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=LIB_1</id>
	<title>LIB 1 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=LIB_1"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=LIB_1&amp;action=history"/>
	<updated>2026-05-14T15:34:26Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=LIB_1&amp;diff=83360&amp;oldid=prev</id>
		<title>Maintenance script: Repair MoniWiki formatting after migration</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=LIB_1&amp;diff=83360&amp;oldid=prev"/>
		<updated>2026-03-26T14:01:39Z</updated>

		<summary type="html">&lt;p&gt;Repair MoniWiki formatting after migration&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:01, 26 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l67&quot;&gt;Line 67:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 67:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	LIB_create_task(&amp;quot;StatTask\n&amp;quot;,LIB_IDLE_PRIORITY + 1,LIB_TASK_CPU_STAT,&amp;amp;amp;OSStack[256]); // 상태를 알아보는 태스크를 만든다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	LIB_create_task(&amp;quot;StatTask\n&amp;quot;,LIB_IDLE_PRIORITY + 1,LIB_TASK_CPU_STAT,&amp;amp;amp;OSStack[256]); // 상태를 알아보는 태스크를 만든다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	LIB_create_task(&amp;quot;IdleTask\n&amp;quot;,LIB_IDLE_PRIORITY,idle_task,&amp;amp;amp;TaskStack3[256]);          // 유휴상태일때 돌아가는 idle태스크를 만든다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	LIB_create_task(&amp;quot;IdleTask\n&amp;quot;,LIB_IDLE_PRIORITY,idle_task,&amp;amp;amp;TaskStack3[256]);          // 유휴상태일때 돌아가는 idle태스크를 만든다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;여기까지는 태스크에 대한 정의만 나왔다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;여기까지는 태스크에 대한 정의만 나왔다.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;다음에는 세마포어를 2개 만들고 메세지 큐를 만드는 소스이다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;다음에는 세마포어를 2개 만들고 메세지 큐를 만드는 소스이다.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	// create semaphore and message&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	// create semaphore and message&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l85&quot;&gt;Line 85:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 85:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[REAL_LIBOS]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[REAL_LIBOS]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=LIB_1&amp;diff=34051&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:23, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=LIB_1&amp;diff=34051&amp;oldid=prev"/>
		<updated>2021-02-07T05:23:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;내가 만든 RTOS에서는 우선순위 63이 제일 높다.&lt;br /&gt;
이 태스크는 가장 높은 태스크로서 화면을 계속 갱신해 준다.&lt;br /&gt;
 // Task 0 is Highest Task  :: priority 63&lt;br /&gt;
 void mn_task()&lt;br /&gt;
 {&lt;br /&gt;
 	while(1){&lt;br /&gt;
 		// Print Logo&lt;br /&gt;
 		char *sen =  &amp;quot;::::::::  Little / Simple Real Time Kernel  ::::::: \n&amp;quot;;&lt;br /&gt;
 		char *sen1 = &amp;quot;     LIB_OS Ver 0.27 :: http://www.cse.cau.ac.kr\n&amp;quot;;&lt;br /&gt;
 		char *sen2 = &amp;quot;Check Running Task \n&amp;quot;;&lt;br /&gt;
 		char *sen3 = &amp;quot;Task Name       Priority           StackSize    Running \n&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 		LIB_VRAM_STRING(0,0,sen,0x04);&lt;br /&gt;
 		LIB_VRAM_STRING(0,1,sen1,0x07);&lt;br /&gt;
 		LIB_VRAM_STRING(0,2,sen2,0x07);&lt;br /&gt;
 		LIB_VRAM_STRING(0,4,sen3,0x09);&lt;br /&gt;
 &lt;br /&gt;
 		// Show the task delay , usage and&lt;br /&gt;
 		LIB_TASK_DISPLAY(10); &lt;br /&gt;
 		LIB_VRAM_STRING(0,12,&amp;quot;Total Interrupt Count :\n&amp;quot;,0x09);&lt;br /&gt;
 		LIB_VRAM_NUM(26,12,LIB_INT_COUNT,0x07);&lt;br /&gt;
 		LIB_TIME_DLY(63,5); // 이 태스크에 딜레이를 주는 소스 부분&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
이건 사용자 태스크인 태스크1 이다.&lt;br /&gt;
 // Task 1 :: priority 60&lt;br /&gt;
 void task1()&lt;br /&gt;
 {&lt;br /&gt;
 	char msg1;&lt;br /&gt;
 	msg1 = &amp;#039;A&amp;#039;;&lt;br /&gt;
 	while(1) {&lt;br /&gt;
 		// TASK STATE DISPLAY&lt;br /&gt;
 		LIB_TASK_DISPLAY(5);&lt;br /&gt;
 		// semaphore section&lt;br /&gt;
 		LIB_pend_sem(semaphore , 50); &lt;br /&gt;
 		LIB_post_sem(semaphore);&lt;br /&gt;
 		// send message :: msg1&lt;br /&gt;
 		if ( msg1 == &amp;#039;Z&amp;#039; ) msg1 = &amp;#039;A&amp;#039;;&lt;br /&gt;
 		else msg1++;&lt;br /&gt;
 		LIB_VRAM_CHAR(56,5,msg1,0x16);&lt;br /&gt;
 		LIB_post_msg(message,&amp;amp;amp;msg1);&lt;br /&gt;
 		LIB_TIME_DLY(60,10);&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
다음은 실제적인 메인 펑션이다.&lt;br /&gt;
LIB_create_task (char* string,int,&amp;amp;task_point,task_size) 함수는 &lt;br /&gt;
태스크들을 만들어주는 함수이다.&lt;br /&gt;
&lt;br /&gt;
 void main()&lt;br /&gt;
 {&lt;br /&gt;
 	// clear CRT&lt;br /&gt;
 	LIB_VRAM_CLR(); // 화면을 지워주고&lt;br /&gt;
 &lt;br /&gt;
 	// init Scheduler Queue , TICKS and Parallel Port&lt;br /&gt;
 	LIB_Init_Schedu(); // 스케쥴링을 위한 우선순위 큐를 초기화 하고 &lt;br /&gt;
 	LIB_TIME_RATE();   // 타이머를 정의하고&lt;br /&gt;
 	LIB_init_prl(0);   // 패러럴 포트를 정리한다.&lt;br /&gt;
 &lt;br /&gt;
 	// create The Sample Task 1,2&lt;br /&gt;
 #if !defined(DEBUG)&lt;br /&gt;
 &lt;br /&gt;
 	LIB_create_task(&amp;quot;Management\n&amp;quot;,63,mn_task,&amp;amp;amp;TaskStack0[256]); // 매니져 함수를 만들어준다.&lt;br /&gt;
 	LIB_create_task(&amp;quot;task1\n&amp;quot;,60,task1,&amp;amp;amp;TaskStack1[256]);        // 사용자 태스크 1을 만들어준다.&lt;br /&gt;
 	LIB_create_task(&amp;quot;task2\n&amp;quot;,59,task2,&amp;amp;amp;TaskStack2[256]);        // 사용자 태스크 2를 만들어준다.&lt;br /&gt;
 #endif&lt;br /&gt;
 	LIB_create_task(&amp;quot;StatTask\n&amp;quot;,LIB_IDLE_PRIORITY + 1,LIB_TASK_CPU_STAT,&amp;amp;amp;OSStack[256]); // 상태를 알아보는 태스크를 만든다.&lt;br /&gt;
 	LIB_create_task(&amp;quot;IdleTask\n&amp;quot;,LIB_IDLE_PRIORITY,idle_task,&amp;amp;amp;TaskStack3[256]);          // 유휴상태일때 돌아가는 idle태스크를 만든다.&lt;br /&gt;
여기까지는 태스크에 대한 정의만 나왔다.&lt;br /&gt;
다음에는 세마포어를 2개 만들고 메세지 큐를 만드는 소스이다.&lt;br /&gt;
 &lt;br /&gt;
 	// create semaphore and message&lt;br /&gt;
 	semaphore = LIB_create_sem(2);&lt;br /&gt;
 	message   = LIB_create_msg(NULL);&lt;br /&gt;
이제 이렇게 되면 각각의 코드로 태스크와 세마포어.메세지가 만들어졌다.&lt;br /&gt;
이제 OS를 돌리기 위해 ISR 루틴을 실행시켜준다.&lt;br /&gt;
 	// init ISR&lt;br /&gt;
 	LIB_INIT_ISR();&lt;br /&gt;
 	while(1) {};&lt;br /&gt;
 	LIB_VRAM_STRING(0,0,&amp;quot; :: FATAL ERROR :: \n&amp;quot;,0x07);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
여기서는 대략적인 주된 소스만 나와있다.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[REAL_LIBOS]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>