Esempio n. 1
0
void kernel_main()
{

	int i = 0xa0000;
	for( ; i <= 0xaffff; ++i ){
		asm_write_mem( i, 1 );
	}

	// Delete boot sector and temporary data.
	for( i = 0x1000; i <= 0x9fc00; ++i ){
		asm_write_mem( i, 0 );
	}
	
	init_palette();
	i = 0xa0000;
	for( ; i <= 0xaffff; ++i ){
		asm_write_mem( i, 0 );
	}
	
	asm_disable_intr();
	InitGDT();
	InitIDT();
	InitPIC();
	asm_enable_intr();


	set_task( 1, task_a, stack[ 0 ] + 2048 );
	set_task( 2, task_b, stack[ 1 ] + 2048 );


	switch_task_2( TASK_INFO_ADDR, TASK_INFO_ADDR + sizeof( TaskInfo ) );

	for(;;){
		print_str( 0, 20, "fin" );
		asm_halt();
	}

	asm_halt();
}
Esempio n. 2
0
// this function displays a diagnostic code on a LED.
void
led_hex(int hex)
{
    int i;
    int j;
    int n;
    int inv;
    
    if (debugger_attached) {
        asm_halt();
    } else {
        splx(7);
        
        n = 0;
        inv = 0;
        for (;;) {
            if (n++ >= 10) {
#if PICTOCRYPT
                sleep_delay(0);
                sleep_poll();
#endif
            }
            
            for (i = 0x10000000; i > 0; i /= 16) {
                if (hex < i) {
                    continue;
                }
                j = (hex/i)%16;
                if (! j) {
                    j = 16;
                }
                while (j--) {
                    led_set(led_red, 1^inv);
                    delay(200);
                    led_set(led_red, 0^inv);
                    delay(200);
                }
                delay(1000);
            }
            delay(3000);
            inv = ! inv;
            led_set(led_red, 0^inv);
            delay(3000);
        }
    }
}