aboutsummaryrefslogtreecommitdiff
path: root/initrd
blob: 55eda055df22767988141144afea8286f2e493d5 (plain)
ofshex dumpascii
0000 6d 61 69 6e 2e 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 main.c..........................
0020 ce 1b 00 00 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6e 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 ....#include.<stdint.h>.#include
0040 20 3c 73 74 64 69 6f 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 0a 23 .<stdio.h>.#include.<stdlib.h>.#
0060 69 6e 63 6c 75 64 65 20 22 66 70 75 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 67 64 74 2e 68 22 include."fpu.h".#include."gdt.h"
0080 0a 23 69 6e 63 6c 75 64 65 20 22 67 66 78 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 67 66 78 5f .#include."gfx.h".#include."gfx_
00a0 66 6f 6e 74 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 69 64 74 2e 68 22 0a 23 69 6e 63 6c 75 64 font.h".#include."idt.h".#includ
00c0 65 20 22 69 6e 69 74 72 64 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 69 73 72 2e 68 22 0a 23 69 e."initrd.h".#include."isr.h".#i
00e0 6e 63 6c 75 64 65 20 22 69 72 71 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 6c 6f 67 2e 68 22 0a nclude."irq.h".#include."log.h".
0100 23 69 6e 63 6c 75 64 65 20 22 6d 75 6c 74 69 62 6f 6f 74 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 #include."multiboot.h".#include.
0120 22 70 61 67 69 6e 67 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 70 61 6e 69 63 2e 68 22 0a 23 69 "paging.h".#include."panic.h".#i
0140 6e 63 6c 75 64 65 20 22 70 63 73 70 6b 72 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 70 73 32 6b nclude."pcspkr.h".#include."ps2k
0160 62 64 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 66 70 75 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 bd.h".#include."fpu.h".#include.
0180 22 74 69 6d 65 72 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 76 65 72 73 69 6f 6e 2e 68 22 0a 23 "timer.h".#include."version.h".#
01a0 69 6e 63 6c 75 64 65 20 22 76 67 61 74 65 78 74 2e 68 22 0a 0a 76 6f 69 64 20 67 70 66 28 73 74 include."vgatext.h"..void.gpf(st
01c0 72 75 63 74 20 72 65 67 73 5f 74 20 2a 72 65 67 73 29 0a 7b 0a 20 20 20 20 67 66 78 5f 72 65 73 ruct.regs_t.*regs).{.....gfx_res
01e0 65 74 28 29 3b 0a 20 20 20 20 70 72 69 6e 74 66 28 22 47 65 6e 65 72 61 6c 20 70 72 6f 74 65 63 et();.....printf("General.protec
0200 74 69 6f 6e 20 66 61 75 6c 74 21 5c 6e 22 29 3b 0a 20 20 20 20 70 72 69 6e 74 66 28 22 45 49 50 tion.fault!\n");.....printf("EIP
0220 20 62 65 66 6f 72 65 20 66 61 75 6c 74 3a 20 30 78 25 78 5c 6e 22 2c 20 72 65 67 73 2d 3e 65 69 .before.fault:.0x%x\n",.regs->ei
0240 70 29 3b 0a 20 20 20 20 70 72 69 6e 74 66 28 22 45 72 72 6f 72 20 63 6f 64 65 3a 20 30 78 25 78 p);.....printf("Error.code:.0x%x
0260 5c 6e 22 2c 20 72 65 67 73 2d 3e 65 72 72 5f 63 6f 64 65 29 3b 0a 20 20 20 20 70 61 6e 69 63 28 \n",.regs->err_code);.....panic(
0280 22 47 50 46 21 22 29 3b 0a 7d 0a 0a 76 6f 69 64 20 69 6e 74 38 30 28 73 74 72 75 63 74 20 72 65 "GPF!");.}..void.int80(struct.re
02a0 67 73 5f 74 20 2a 72 65 67 73 29 0a 7b 0a 20 20 20 20 73 77 69 74 63 68 28 72 65 67 73 2d 3e 65 gs_t.*regs).{.....switch(regs->e
02c0 61 78 29 0a 20 20 20 20 7b 0a 20 20 20 20 63 61 73 65 20 30 3a 0a 20 20 20 20 20 20 20 20 70 61 ax).....{.....case.0:.........pa
02e0 6e 69 63 28 28 63 6f 6e 73 74 20 63 68 61 72 2a 29 72 65 67 73 2d 3e 65 62 78 29 3b 0a 20 20 20 nic((const.char*)regs->ebx);....
0300 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 63 61 73 65 20 31 3a 0a 20 20 20 20 20 20 20 20 .....break;.....case.1:.........
0320 70 75 74 73 28 28 63 6f 6e 73 74 20 63 68 61 72 2a 29 72 65 67 73 2d 3e 65 62 78 29 3b 0a 20 20 puts((const.char*)regs->ebx);...
0340 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 7d 0a 7d 0a 0a 76 6f 69 64 20 64 69 76 30 28 ......break;.....}.}..void.div0(
0360 73 74 72 75 63 74 20 72 65 67 73 5f 74 20 2a 72 65 67 73 29 0a 7b 0a 20 20 20 20 28 76 6f 69 64 struct.regs_t.*regs).{.....(void
0380 29 20 72 65 67 73 3b 0a 20 20 20 20 70 61 6e 69 63 28 22 44 69 76 69 64 65 20 62 79 20 7a 65 72 ).regs;.....panic("Divide.by.zer
03a0 6f 21 5c 6e 22 29 3b 0a 7d 0a 0a 76 6f 69 64 20 6e 6f 74 68 69 6e 28 73 74 72 75 63 74 20 72 65 o!\n");.}..void.nothin(struct.re
03c0 67 73 5f 74 2a 20 72 65 67 73 29 0a 7b 0a 20 20 20 20 28 76 6f 69 64 29 20 72 65 67 73 3b 0a 7d gs_t*.regs).{.....(void).regs;.}
03e0 0a 0a 76 6f 69 64 20 66 6c 61 73 68 5f 6c 65 64 73 28 76 6f 69 64 29 0a 7b 0a 20 20 20 20 70 72 ..void.flash_leds(void).{.....pr
0400 69 6e 74 66 28 22 54 65 73 74 69 6e 67 20 6b 65 79 62 6f 61 72 64 20 4c 45 44 27 73 22 29 3b 0a intf("Testing.keyboard.LED's");.
0420 0a 20 20 20 20 69 6e 74 20 6e 20 3d 20 30 3b 0a 20 20 20 20 69 6e 74 20 73 20 3d 20 31 3b 0a 0a .....int.n.=.0;.....int.s.=.1;..
0440 20 20 20 20 77 68 69 6c 65 28 31 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 70 73 32 6b 62 ....while(1).....{.........ps2kb
0460 64 5f 73 65 74 5f 6c 65 64 73 28 50 53 32 5f 4e 55 4d 5f 4c 4f 43 4b 29 3b 0a 20 20 20 20 20 20 d_set_leds(PS2_NUM_LOCK);.......
0480 20 20 74 69 6d 65 72 5f 64 65 6c 61 79 28 48 5a 2f 34 29 3b 0a 20 20 20 20 20 20 20 20 69 66 28 ..timer_delay(HZ/4);.........if(
04a0 73 20 3c 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 74 63 68 61 72 28 27 5c 62 27 29 s.<.0).............putchar('\b')
04c0 3b 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 74 63 68 ;.........else.............putch
04e0 61 72 28 27 2e 27 29 3b 0a 20 20 20 20 20 20 20 20 6e 2b 3d 73 3b 0a 20 20 20 20 20 20 20 20 69 ar('.');.........n+=s;.........i
0500 66 28 6e 3c 3d 30 20 7c 7c 20 6e 3e 3d 33 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 3d 2d 73 f(n<=0.||.n>=3).............s=-s
0520 3b 0a 20 20 20 20 20 20 20 20 70 73 32 6b 62 64 5f 73 65 74 5f 6c 65 64 73 28 50 53 32 5f 43 41 ;.........ps2kbd_set_leds(PS2_CA
0540 50 53 5f 4c 4f 43 4b 29 3b 0a 20 20 20 20 20 20 20 20 74 69 6d 65 72 5f 64 65 6c 61 79 28 48 5a PS_LOCK);.........timer_delay(HZ
0560 2f 34 29 3b 0a 20 20 20 20 20 20 20 20 69 66 28 73 20 3c 20 30 29 0a 20 20 20 20 20 20 20 20 20 /4);.........if(s.<.0)..........
0580 20 20 20 70 75 74 63 68 61 72 28 27 5c 62 27 29 3b 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 ...putchar('\b');.........else..
05a0 20 20 20 20 20 20 20 20 20 20 20 70 75 74 63 68 61 72 28 27 2e 27 29 3b 0a 20 20 20 20 20 20 20 ...........putchar('.');........
05c0 20 6e 2b 3d 73 3b 0a 20 20 20 20 20 20 20 20 69 66 28 6e 3c 3d 30 20 7c 7c 20 6e 3e 3d 33 29 0a .n+=s;.........if(n<=0.||.n>=3).
05e0 20 20 20 20 20 20 20 20 20 20 20 20 73 3d 2d 73 3b 0a 20 20 20 20 20 20 20 20 70 73 32 6b 62 64 ............s=-s;.........ps2kbd
0600 5f 73 65 74 5f 6c 65 64 73 28 50 53 32 5f 53 43 52 4f 4c 4c 5f 4c 4f 43 4b 29 3b 0a 20 20 20 20 _set_leds(PS2_SCROLL_LOCK);.....
0620 20 20 20 20 74 69 6d 65 72 5f 64 65 6c 61 79 28 48 5a 2f 34 29 3b 0a 20 20 20 20 20 20 20 20 69 ....timer_delay(HZ/4);.........i
0640 66 28 73 20 3c 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 74 63 68 61 72 28 27 5c 62 f(s.<.0).............putchar('\b
0660 27 29 3b 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 74 ');.........else.............put
0680 63 68 61 72 28 27 2e 27 29 3b 0a 20 20 20 20 20 20 20 20 6e 2b 3d 73 3b 0a 20 20 20 20 20 20 20 char('.');.........n+=s;........
06a0 20 69 66 28 6e 3c 3d 30 20 7c 7c 20 6e 3e 3d 33 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 3d .if(n<=0.||.n>=3).............s=
06c0 2d 73 3b 0a 20 20 20 20 20 20 20 20 70 73 32 6b 62 64 5f 73 65 74 5f 6c 65 64 73 28 50 53 32 5f -s;.........ps2kbd_set_leds(PS2_
06e0 43 41 50 53 5f 4c 4f 43 4b 29 3b 0a 20 20 20 20 20 20 20 20 74 69 6d 65 72 5f 64 65 6c 61 79 28 CAPS_LOCK);.........timer_delay(
0700 48 5a 2f 34 29 3b 0a 20 20 20 20 20 20 20 20 69 66 28 73 20 3c 20 30 29 0a 20 20 20 20 20 20 20 HZ/4);.........if(s.<.0)........
0720 20 20 20 20 20 70 75 74 63 68 61 72 28 27 5c 62 27 29 3b 0a 20 20 20 20 20 20 20 20 65 6c 73 65 .....putchar('\b');.........else
0740 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 74 63 68 61 72 28 27 2e 27 29 3b 0a 20 20 20 20 20 .............putchar('.');......
0760 20 20 20 6e 2b 3d 73 3b 0a 20 20 20 20 20 20 20 20 69 66 28 6e 3c 3d 30 20 7c 7c 20 6e 3e 3d 33 ...n+=s;.........if(n<=0.||.n>=3
0780 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 3d 2d 73 3b 0a 20 20 20 20 7d 0a 7d 0a 0a 62 6f 6f ).............s=-s;.....}.}..boo
07a0 6c 20 62 6f 6f 74 28 73 74 72 75 63 74 20 6d 75 6c 74 69 62 6f 6f 74 5f 69 6e 66 6f 5f 74 20 2a l.boot(struct.multiboot_info_t.*
07c0 68 64 72 2c 20 75 69 6e 74 33 32 5f 74 20 6d 61 67 69 63 29 0a 7b 0a 20 20 20 20 66 70 75 5f 65 hdr,.uint32_t.magic).{.....fpu_e
07e0 6e 61 62 6c 65 28 29 3b 0a 0a 20 20 20 20 2f 2a 20 6c 6f 61 64 20 69 6e 69 74 72 64 20 69 66 20 nable();....../*.load.initrd.if.
0800 61 6e 79 2c 20 74 68 69 73 20 77 69 6c 6c 20 61 6c 73 6f 20 70 72 65 76 65 6e 74 20 6d 6f 64 75 any,.this.will.also.prevent.modu
0820 6c 65 73 20 66 72 6f 6d 20 62 65 69 6e 67 20 63 6c 6f 62 62 65 72 65 64 20 62 79 20 6b 6d 61 6c les.from.being.clobbered.by.kmal
0840 6c 6f 63 20 2a 2f 0a 20 20 20 20 69 6e 69 74 72 64 5f 69 6e 69 74 28 68 64 72 29 3b 0a 0a 20 20 loc.*/.....initrd_init(hdr);....
0860 20 20 2f 2a 20 74 68 69 73 20 73 68 6f 75 6c 64 20 67 6f 20 74 6f 20 70 6f 72 74 20 65 39 2c 20 ../*.this.should.go.to.port.e9,.
0880 77 68 69 63 68 20 69 73 20 74 68 65 20 42 6f 63 68 73 20 64 65 62 75 67 20 70 6f 72 74 20 2a 2f which.is.the.Bochs.debug.port.*/
08a0 0a 20 20 20 20 70 72 69 6e 74 66 28 22 54 65 73 74 69 6e 67 20 65 61 72 6c 79 20 49 2f 4f 5c 6e .....printf("Testing.early.I/O\n
08c0 22 29 3b 0a 0a 20 20 20 20 70 72 69 6e 74 66 28 22 47 46 58 20 69 6e 69 74 5c 6e 22 29 3b 0a 20 ");......printf("GFX.init\n");..
08e0 20 20 20 62 6f 6f 6c 20 67 66 78 5f 73 74 61 74 75 73 20 3d 20 67 66 78 5f 69 6e 69 74 28 28 73 ...bool.gfx_status.=.gfx_init((s
0900 74 72 75 63 74 20 76 62 65 5f 69 6e 66 6f 5f 74 2a 29 68 64 72 2d 3e 76 62 65 5f 6d 6f 64 65 5f truct.vbe_info_t*)hdr->vbe_mode_
0920 69 6e 66 6f 29 3b 0a 20 20 20 20 2f 2f 62 6f 6f 6c 20 67 66 78 5f 73 74 61 74 75 73 20 3d 20 66 info);.....//bool.gfx_status.=.f
0940 61 6c 73 65 3b 0a 20 20 20 20 70 72 69 6e 74 66 28 22 47 46 58 20 69 6e 69 74 20 64 6f 6e 65 2e alse;.....printf("GFX.init.done.
0960 5c 6e 22 29 3b 0a 0a 20 20 20 20 2f 2a 20 69 66 20 67 72 61 70 68 69 63 61 6c 20 69 6e 69 74 69 \n");....../*.if.graphical.initi
0980 61 6c 69 7a 61 74 69 6f 6e 20 66 61 69 6c 73 2c 20 66 61 6c 6c 20 62 61 63 6b 20 74 6f 20 74 65 alization.fails,.fall.back.to.te
09a0 78 74 20 6d 6f 64 65 20 2a 2f 0a 20 20 20 20 69 66 28 21 67 66 78 5f 73 74 61 74 75 73 29 0a 20 xt.mode.*/.....if(!gfx_status)..
09c0 20 20 20 7b 0a 20 20 20 20 20 20 20 20 76 67 61 74 65 78 74 5f 69 6e 69 74 28 29 3b 0a 20 20 20 ...{.........vgatext_init();....
09e0 20 20 20 20 20 70 72 69 6e 74 66 28 22 47 72 61 70 68 69 63 73 20 69 6e 69 74 20 66 61 69 6c 65 .....printf("Graphics.init.faile
0a00 64 2c 20 66 65 6c 6c 20 62 61 63 6b 20 74 6f 20 56 47 41 20 74 65 78 74 20 6d 6f 64 65 2e 5c 6e d,.fell.back.to.VGA.text.mode.\n
0a20 22 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 28 6d 61 67 69 63 20 21 3d 20 30 78 32 42 41 ");.....}......if(magic.!=.0x2BA
0a40 44 42 30 30 32 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 70 61 6e 69 63 28 22 4d 75 6c 74 DB002).....{.........panic("Mult
0a60 69 62 6f 6f 74 20 6d 61 67 69 63 20 69 6e 76 61 6c 69 64 22 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 iboot.magic.invalid");.....}....
0a80 20 20 2f 2a 20 74 68 65 6e 20 74 68 65 20 64 65 73 63 72 69 70 74 6f 72 20 74 61 62 6c 65 73 20 ../*.then.the.descriptor.tables.
0aa0 73 6f 20 77 65 20 63 61 6e 20 64 6f 20 6d 6f 72 65 20 75 73 65 66 75 6c 20 73 74 75 66 66 20 2a so.we.can.do.more.useful.stuff.*
0ac0 2f 0a 20 20 20 20 67 64 74 5f 69 6e 69 74 28 29 3b 0a 20 20 20 20 69 64 74 5f 69 6e 69 74 28 29 /.....gdt_init();.....idt_init()
0ae0 3b 0a 0a 20 20 20 20 2f 2a 20 69 6e 73 74 61 6c 6c 20 61 6c 6c 20 74 68 65 20 69 6e 74 65 72 72 ;....../*.install.all.the.interr
0b00 75 70 74 20 73 74 75 62 73 20 2a 2f 0a 20 20 20 20 69 73 72 5f 69 6e 69 74 28 29 3b 0a 20 20 20 upt.stubs.*/.....isr_init();....
0b20 20 69 72 71 5f 69 6e 69 74 28 29 3b 0a 0a 20 20 20 20 2f 2a 20 69 6e 69 74 69 61 6c 69 7a 65 20 .irq_init();....../*.initialize.
0b40 6f 74 68 65 72 20 64 72 69 76 65 72 73 20 2a 2f 0a 20 20 20 20 74 69 6d 65 72 5f 69 6e 69 74 28 other.drivers.*/.....timer_init(
0b60 48 5a 29 3b 0a 20 20 20 20 70 73 32 6b 62 64 5f 69 6e 69 74 28 29 3b 0a 0a 20 20 20 20 73 65 74 HZ);.....ps2kbd_init();......set
0b80 5f 69 6e 74 65 72 72 75 70 74 5f 68 61 6e 64 6c 65 72 28 30 2c 20 64 69 76 30 29 3b 0a 20 20 20 _interrupt_handler(0,.div0);....
0ba0 20 73 65 74 5f 69 6e 74 65 72 72 75 70 74 5f 68 61 6e 64 6c 65 72 28 30 78 64 2c 20 67 70 66 29 .set_interrupt_handler(0xd,.gpf)
0bc0 3b 0a 20 20 20 20 73 65 74 5f 69 6e 74 65 72 72 75 70 74 5f 68 61 6e 64 6c 65 72 28 30 78 38 30 ;.....set_interrupt_handler(0x80
0be0 2c 20 69 6e 74 38 30 29 3b 0a 20 20 20 20 73 65 74 5f 69 6e 74 65 72 72 75 70 74 5f 68 61 6e 64 ,.int80);.....set_interrupt_hand
0c00 6c 65 72 28 36 2c 20 6e 6f 74 68 69 6e 29 3b 0a 0a 20 20 20 20 70 61 67 69 6e 67 5f 69 6e 69 74 ler(6,.nothin);......paging_init
0c20 28 29 3b 0a 0a 20 20 20 20 70 72 69 6e 74 66 28 22 50 61 67 69 6e 67 20 65 6e 61 62 6c 65 64 2e ();......printf("Paging.enabled.
0c40 5c 6e 22 29 3b 0a 0a 20 20 20 20 61 73 6d 28 22 73 74 69 22 29 3b 0a 0a 20 20 20 20 70 72 69 6e \n");......asm("sti");......prin
0c60 74 66 28 22 42 6f 6f 74 20 66 69 6e 69 73 68 65 64 2e 5c 6e 22 29 3b 0a 0a 20 20 20 20 70 72 69 tf("Boot.finished.\n");......pri
0c80 6e 74 66 28 22 4b 65 72 6e 65 6c 20 76 65 72 73 69 6f 6e 20 25 73 3a 20 5c 22 25 73 5c 22 5c 6e ntf("Kernel.version.%s:.\"%s\"\n
0ca0 22 2c 20 4b 41 50 50 41 5f 4b 45 52 4e 45 4c 5f 56 45 52 53 49 4f 4e 2c 20 4b 41 50 50 41 5f 4b ",.KAPPA_KERNEL_VERSION,.KAPPA_K
0cc0 45 52 4e 45 4c 5f 43 4f 44 45 4e 41 4d 45 29 3b 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 67 66 78 ERNEL_CODENAME);......return.gfx
0ce0 5f 73 74 61 74 75 73 3b 0a 7d 0a 0a 76 6f 69 64 20 72 75 6e 5f 67 66 78 5f 62 65 6e 63 68 6d 61 _status;.}..void.run_gfx_benchma
0d00 72 6b 28 76 6f 69 64 29 0a 7b 0a 20 20 20 20 63 6f 6e 73 74 20 69 6e 74 20 77 69 64 74 68 20 3d rk(void).{.....const.int.width.=
0d20 20 2a 67 66 78 5f 77 69 64 74 68 3b 0a 20 20 20 20 63 6f 6e 73 74 20 69 6e 74 20 68 65 69 67 68 .*gfx_width;.....const.int.heigh
0d40 74 20 3d 20 2a 67 66 78 5f 68 65 69 67 68 74 3b 0a 0a 20 20 20 20 67 66 78 5f 72 65 73 65 74 28 t.=.*gfx_height;......gfx_reset(
0d60 29 3b 0a 0a 20 20 20 20 69 6e 74 20 73 74 61 72 74 70 69 78 20 3d 20 2a 63 75 72 72 65 6e 74 5f );......int.startpix.=.*current_
0d80 74 69 63 6b 3b 0a 20 20 20 20 66 6f 72 28 69 6e 74 20 69 3d 30 3b 69 3c 31 30 30 30 30 30 30 3b tick;.....for(int.i=0;i<1000000;
0da0 2b 2b 69 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 69 6e 74 20 72 78 20 3d 20 72 61 6e 64 ++i).....{.........int.rx.=.rand
0dc0 28 29 20 25 20 77 69 64 74 68 3b 0a 20 20 20 20 20 20 20 20 69 6e 74 20 72 79 20 3d 20 72 61 6e ().%.width;.........int.ry.=.ran
0de0 64 28 29 20 25 20 68 65 69 67 68 74 3b 0a 0a 20 20 20 20 20 20 20 20 67 66 78 5f 73 65 74 5f 66 d().%.height;..........gfx_set_f
0e00 6f 72 65 67 72 6f 75 6e 64 28 72 61 6e 64 28 29 20 25 20 30 78 31 30 30 30 30 30 30 29 3b 0a 20 oreground(rand().%.0x1000000);..
0e20 20 20 20 20 20 20 20 67 66 78 5f 64 72 61 77 70 69 78 65 6c 28 72 78 2c 20 72 79 29 3b 0a 20 20 .......gfx_drawpixel(rx,.ry);...
0e40 20 20 7d 0a 20 20 20 20 69 6e 74 20 65 6e 64 70 69 78 20 3d 20 2a 63 75 72 72 65 6e 74 5f 74 69 ..}.....int.endpix.=.*current_ti
0e60 63 6b 3b 0a 0a 20 20 20 20 67 66 78 5f 72 65 73 65 74 28 29 3b 0a 0a 20 20 20 20 69 6e 74 20 73 ck;......gfx_reset();......int.s
0e80 74 61 72 74 66 69 6c 6c 20 3d 20 2a 63 75 72 72 65 6e 74 5f 74 69 63 6b 3b 0a 20 20 20 20 66 6f tartfill.=.*current_tick;.....fo
0ea0 72 28 69 6e 74 20 69 3d 30 3b 69 3c 31 30 30 30 3b 2b 2b 69 29 0a 20 20 20 20 7b 0a 20 20 20 20 r(int.i=0;i<1000;++i).....{.....
0ec0 20 20 20 20 67 66 78 5f 73 65 74 5f 62 61 63 6b 67 72 6f 75 6e 64 28 72 61 6e 64 28 29 20 25 20 ....gfx_set_background(rand().%.
0ee0 30 78 31 30 30 30 30 30 30 29 3b 0a 20 20 20 20 20 20 20 20 67 66 78 5f 63 6c 65 61 72 28 29 3b 0x1000000);.........gfx_clear();
0f00 0a 20 20 20 20 7d 0a 20 20 20 20 69 6e 74 20 65 6e 64 66 69 6c 6c 20 3d 20 2a 63 75 72 72 65 6e .....}.....int.endfill.=.*curren
0f20 74 5f 74 69 63 6b 3b 0a 0a 20 20 20 20 67 66 78 5f 72 65 73 65 74 28 29 3b 0a 0a 20 20 20 20 69 t_tick;......gfx_reset();......i
0f40 6e 74 20 73 74 61 72 74 74 65 78 74 20 3d 20 2a 63 75 72 72 65 6e 74 5f 74 69 63 6b 3b 0a 20 20 nt.starttext.=.*current_tick;...
0f60 20 20 66 6f 72 28 69 6e 74 20 69 3d 30 3b 69 3c 31 30 30 30 30 30 30 3b 2b 2b 69 29 0a 20 20 20 ..for(int.i=0;i<1000000;++i)....
0f80 20 7b 0a 20 20 20 20 20 20 20 20 69 6e 74 20 72 78 20 3d 20 72 61 6e 64 28 29 20 25 20 77 69 64 .{.........int.rx.=.rand().%.wid
0fa0 74 68 3b 0a 20 20 20 20 20 20 20 20 69 6e 74 20 72 79 20 3d 20 72 61 6e 64 28 29 20 25 20 68 65 th;.........int.ry.=.rand().%.he
0fc0 69 67 68 74 3b 0a 20 20 20 20 20 20 20 20 67 66 78 5f 73 65 74 5f 66 6f 72 65 67 72 6f 75 6e 64 ight;.........gfx_set_foreground
0fe0 28 72 61 6e 64 28 29 20 25 20 30 78 31 30 30 30 30 30 30 29 3b 0a 20 20 20 20 20 20 20 20 67 66 (rand().%.0x1000000);.........gf
1000 78 5f 64 72 61 77 63 68 61 72 28 72 78 2c 20 72 79 2c 20 72 61 6e 64 28 29 25 31 32 37 2b 31 29 x_drawchar(rx,.ry,.rand()%127+1)
1020 3b 0a 20 20 20 20 7d 0a 20 20 20 20 69 6e 74 20 65 6e 64 74 65 78 74 20 3d 20 2a 63 75 72 72 65 ;.....}.....int.endtext.=.*curre
1040 6e 74 5f 74 69 63 6b 3b 0a 0a 20 20 20 20 67 66 78 5f 72 65 73 65 74 28 29 3b 0a 0a 20 20 20 20 nt_tick;......gfx_reset();......
1060 69 6e 74 20 73 74 61 72 74 68 6c 69 6e 65 20 3d 20 2a 63 75 72 72 65 6e 74 5f 74 69 63 6b 3b 0a int.starthline.=.*current_tick;.
1080 20 20 20 20 66 6f 72 28 69 6e 74 20 69 3d 30 3b 69 3c 31 30 30 30 30 30 30 3b 2b 2b 69 29 0a 20 ....for(int.i=0;i<1000000;++i)..
10a0 20 20 20 7b 0a 20 20 20 20 20 20 20 20 67 66 78 5f 73 65 74 5f 66 6f 72 65 67 72 6f 75 6e 64 28 ...{.........gfx_set_foreground(
10c0 72 61 6e 64 28 29 20 25 20 30 78 31 30 30 30 30 30 30 29 3b 0a 20 20 20 20 20 20 20 20 67 66 78 rand().%.0x1000000);.........gfx
10e0 5f 68 6c 69 6e 65 28 72 61 6e 64 28 29 20 25 20 77 69 64 74 68 2c 20 72 61 6e 64 28 29 20 25 20 _hline(rand().%.width,.rand().%.
1100 77 69 64 74 68 2c 20 72 61 6e 64 28 29 20 25 20 68 65 69 67 68 74 29 3b 0a 20 20 20 20 7d 0a 20 width,.rand().%.height);.....}..
1120 20 20 20 69 6e 74 20 65 6e 64 68 6c 69 6e 65 20 3d 20 2a 63 75 72 72 65 6e 74 5f 74 69 63 6b 3b ...int.endhline.=.*current_tick;
1140 0a 0a 20 20 20 20 67 66 78 5f 72 65 73 65 74 28 29 3b 0a 0a 20 20 20 20 69 6e 74 20 73 74 61 72 ......gfx_reset();......int.star
1160 74 76 6c 69 6e 65 20 3d 20 2a 63 75 72 72 65 6e 74 5f 74 69 63 6b 3b 0a 20 20 20 20 66 6f 72 28 tvline.=.*current_tick;.....for(
1180 69 6e 74 20 69 3d 30 3b 69 3c 31 30 30 30 30 30 30 3b 2b 2b 69 29 0a 20 20 20 20 7b 0a 20 20 20 int.i=0;i<1000000;++i).....{....
11a0 20 20 20 20 20 67 66 78 5f 73 65 74 5f 66 6f 72 65 67 72 6f 75 6e 64 28 72 61 6e 64 28 29 20 25 .....gfx_set_foreground(rand().%
11c0 20 30 78 31 30 30 30 30 30 30 29 3b 0a 20 20 20 20 20 20 20 20 67 66 78 5f 76 6c 69 6e 65 28 72 .0x1000000);.........gfx_vline(r
11e0 61 6e 64 28 29 20 25 20 68 65 69 67 68 74 2c 20 72 61 6e 64 28 29 20 25 20 68 65 69 67 68 74 2c and().%.height,.rand().%.height,
1200 20 72 61 6e 64 28 29 20 25 20 77 69 64 74 68 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 69 6e 74 20 .rand().%.width);.....}.....int.
1220 65 6e 64 76 6c 69 6e 65 20 3d 20 2a 63 75 72 72 65 6e 74 5f 74 69 63 6b 3b 0a 0a 20 20 20 20 67 endvline.=.*current_tick;......g
1240 66 78 5f 72 65 73 65 74 28 29 3b 0a 0a 20 20 20 20 69 6e 74 20 73 74 61 72 74 72 65 63 74 20 3d fx_reset();......int.startrect.=
1260 20 2a 63 75 72 72 65 6e 74 5f 74 69 63 6b 3b 0a 20 20 20 20 66 6f 72 28 69 6e 74 20 69 3d 30 3b .*current_tick;.....for(int.i=0;
1280 69 3c 31 30 30 30 30 3b 2b 2b 69 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 69 6e 74 20 78 i<10000;++i).....{.........int.x
12a0 20 3d 20 72 61 6e 64 28 29 20 25 20 77 69 64 74 68 3b 0a 20 20 20 20 20 20 20 20 69 6e 74 20 79 .=.rand().%.width;.........int.y
12c0 20 3d 20 72 61 6e 64 28 29 20 25 20 68 65 69 67 68 74 3b 0a 20 20 20 20 20 20 20 20 69 6e 74 20 .=.rand().%.height;.........int.
12e0 77 20 3d 20 72 61 6e 64 28 29 20 25 20 28 77 69 64 74 68 20 2d 20 78 29 3b 0a 20 20 20 20 20 20 w.=.rand().%.(width.-.x);.......
1300 20 20 69 6e 74 20 68 20 3d 20 72 61 6e 64 28 29 20 25 20 28 68 65 69 67 68 74 20 2d 20 79 29 3b ..int.h.=.rand().%.(height.-.y);
1320 0a 20 20 20 20 20 20 20 20 67 66 78 5f 73 65 74 5f 66 6f 72 65 67 72 6f 75 6e 64 28 72 61 6e 64 .........gfx_set_foreground(rand
1340 28 29 20 25 20 30 78 31 30 30 30 30 30 30 29 3b 0a 20 20 20 20 20 20 20 20 67 66 78 5f 66 69 6c ().%.0x1000000);.........gfx_fil
1360 6c 72 65 63 74 28 78 2c 20 79 2c 20 77 2c 20 68 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 69 6e 74 lrect(x,.y,.w,.h);.....}.....int
1380 20 65 6e 64 72 65 63 74 20 3d 20 2a 63 75 72 72 65 6e 74 5f 74 69 63 6b 3b 0a 0a 20 20 20 20 67 .endrect.=.*current_tick;......g
13a0 66 78 5f 72 65 73 65 74 28 29 3b 0a 0a 20 20 20 20 69 6e 74 20 73 74 61 72 74 6c 69 6e 65 20 3d fx_reset();......int.startline.=
13c0 20 2a 63 75 72 72 65 6e 74 5f 74 69 63 6b 3b 0a 20 20 20 20 66 6f 72 28 69 6e 74 20 69 3d 30 3b .*current_tick;.....for(int.i=0;
13e0 69 3c 31 30 30 30 30 30 30 3b 2b 2b 69 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 69 6e 74 i<1000000;++i).....{.........int
1400 20 78 31 3d 20 72 61 6e 64 28 29 20 25 20 77 69 64 74 68 3b 0a 20 20 20 20 20 20 20 20 69 6e 74 .x1=.rand().%.width;.........int
1420 20 78 32 3d 20 72 61 6e 64 28 29 20 25 20 77 69 64 74 68 3b 0a 20 20 20 20 20 20 20 20 69 6e 74 .x2=.rand().%.width;.........int
1440 20 79 31 3d 20 72 61 6e 64 28 29 20 25 20 68 65 69 67 68 74 3b 0a 20 20 20 20 20 20 20 20 69 6e .y1=.rand().%.height;.........in
1460 74 20 79 32 3d 20 72 61 6e 64 28 29 20 25 20 68 65 69 67 68 74 3b 0a 20 20 20 20 20 20 20 20 67 t.y2=.rand().%.height;.........g
1480 66 78 5f 73 65 74 5f 66 6f 72 65 67 72 6f 75 6e 64 28 72 61 6e 64 28 29 20 25 20 30 78 31 30 30 fx_set_foreground(rand().%.0x100
14a0 30 30 30 30 29 3b 0a 20 20 20 20 20 20 20 20 67 66 78 5f 64 72 61 77 6c 69 6e 65 28 78 31 2c 20 0000);.........gfx_drawline(x1,.
14c0 79 31 2c 20 78 32 2c 20 79 32 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 69 6e 74 20 65 6e 64 6c 69 y1,.x2,.y2);.....}.....int.endli
14e0 6e 65 20 3d 20 2a 63 75 72 72 65 6e 74 5f 74 69 63 6b 3b 0a 0a 20 20 20 20 67 66 78 5f 72 65 73 ne.=.*current_tick;......gfx_res
1500 65 74 28 29 3b 0a 0a 20 20 20 20 70 72 69 6e 74 66 28 22 2d 2d 2d 20 47 72 61 70 68 69 63 73 20 et();......printf("---.Graphics.
1520 62 65 6e 63 68 6d 61 72 6b 20 72 65 73 75 6c 74 73 20 2d 2d 2d 5c 6e 22 29 3b 0a 20 20 20 20 70 benchmark.results.---\n");.....p
1540 72 69 6e 74 66 28 22 54 69 63 6b 73 20 66 6f 72 20 31 2c 30 30 30 2c 30 30 30 20 72 61 6e 64 6f rintf("Ticks.for.1,000,000.rando
1560 6d 20 70 69 78 65 6c 73 3a 20 25 64 5c 6e 22 2c 20 65 6e 64 70 69 78 2d 73 74 61 72 74 70 69 78 m.pixels:.%d\n",.endpix-startpix
1580 29 3b 0a 20 20 20 20 70 72 69 6e 74 66 28 22 54 69 63 6b 73 20 66 6f 72 20 31 2c 30 30 30 20 72 );.....printf("Ticks.for.1,000.r
15a0 61 6e 64 6f 6d 20 66 69 6c 6c 73 3a 20 20 20 20 20 20 25 64 5c 6e 22 2c 20 65 6e 64 66 69 6c 6c andom.fills:......%d\n",.endfill
15c0 2d 73 74 61 72 74 66 69 6c 6c 29 3b 0a 20 20 20 20 70 72 69 6e 74 66 28 22 54 69 63 6b 73 20 66 -startfill);.....printf("Ticks.f
15e0 6f 72 20 31 2c 30 30 30 2c 30 30 30 20 72 61 6e 64 6f 6d 20 63 68 61 72 73 3a 20 20 25 64 5c 6e or.1,000,000.random.chars:..%d\n
1600 22 2c 20 65 6e 64 74 65 78 74 2d 73 74 61 72 74 74 65 78 74 29 3b 0a 20 20 20 20 70 72 69 6e 74 ",.endtext-starttext);.....print
1620 66 28 22 54 69 63 6b 73 20 66 6f 72 20 31 2c 30 30 30 2c 30 30 30 20 72 61 6e 64 6f 6d 20 68 6c f("Ticks.for.1,000,000.random.hl
1640 69 6e 65 73 3a 20 25 64 5c 6e 22 2c 20 65 6e 64 68 6c 69 6e 65 2d 73 74 61 72 74 68 6c 69 6e 65 ines:.%d\n",.endhline-starthline
1660 29 3b 0a 20 20 20 20 70 72 69 6e 74 66 28 22 54 69 63 6b 73 20 66 6f 72 20 31 2c 30 30 30 2c 30 );.....printf("Ticks.for.1,000,0
1680 30 30 20 72 61 6e 64 6f 6d 20 76 6c 69 6e 65 73 3a 20 25 64 5c 6e 22 2c 20 65 6e 64 76 6c 69 6e 00.random.vlines:.%d\n",.endvlin
16a0 65 2d 73 74 61 72 74 76 6c 69 6e 65 29 3b 0a 20 20 20 20 70 72 69 6e 74 66 28 22 54 69 63 6b 73 e-startvline);.....printf("Ticks
16c0 20 66 6f 72 20 31 30 2c 30 30 30 20 72 61 6e 64 6f 6d 20 72 65 63 74 73 3a 20 20 20 20 20 25 64 .for.10,000.random.rects:.....%d
16e0 5c 6e 22 2c 20 65 6e 64 72 65 63 74 2d 73 74 61 72 74 72 65 63 74 29 3b 0a 20 20 20 20 70 72 69 \n",.endrect-startrect);.....pri
1700 6e 74 66 28 22 54 69 63 6b 73 20 66 6f 72 20 31 2c 30 30 30 2c 30 30 30 20 72 61 6e 64 6f 6d 20 ntf("Ticks.for.1,000,000.random.
1720 6c 69 6e 65 73 3a 20 20 25 64 5c 6e 22 2c 20 65 6e 64 6c 69 6e 65 2d 73 74 61 72 74 6c 69 6e 65 lines:..%d\n",.endline-startline
1740 29 3b 0a 20 20 20 20 70 72 69 6e 74 66 28 22 54 69 63 6b 73 20 70 65 72 20 73 65 63 6f 6e 64 3a );.....printf("Ticks.per.second:
1760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 25 64 5c 6e 22 2c 20 48 5a 29 3b 0a 20 20 ..................%d\n",.HZ);...
1780 20 20 70 72 69 6e 74 66 28 22 52 65 73 6f 6c 75 74 69 6f 6e 3a 20 25 64 78 25 64 78 25 64 5c 6e ..printf("Resolution:.%dx%dx%d\n
17a0 22 2c 20 2a 67 66 78 5f 77 69 64 74 68 2c 20 2a 67 66 78 5f 68 65 69 67 68 74 2c 20 2a 67 66 78 ",.*gfx_width,.*gfx_height,.*gfx
17c0 5f 62 70 70 20 2a 20 38 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 68 61 6e _bpp.*.8);.}..static.void.keyhan
17e0 64 6c 65 72 28 63 6f 6e 73 74 20 73 74 72 75 63 74 20 70 73 32 5f 6b 65 79 65 76 65 6e 74 20 2a dler(const.struct.ps2_keyevent.*
1800 65 76 29 0a 7b 0a 20 20 20 20 69 66 28 65 76 2d 3e 61 73 63 69 69 29 0a 20 20 20 20 7b 0a 20 20 ev).{.....if(ev->ascii).....{...
1820 20 20 20 20 20 20 69 66 28 65 76 2d 3e 73 70 65 63 69 61 6c 5f 6b 65 79 73 2d 3e 63 74 72 6c 29 ......if(ev->special_keys->ctrl)
1840 0a 20 20 20 20 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 74 63 68 61 72 28 27 .........{.............putchar('
1860 5e 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 74 63 68 61 72 28 74 6f 75 70 70 65 72 ^');.............putchar(toupper
1880 28 65 76 2d 3e 61 73 63 69 69 29 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 (ev->ascii));.........}.........
18a0 65 6c 73 65 0a 20 20 20 20 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 74 63 68 else.........{.............putch
18c0 61 72 28 65 76 2d 3e 61 73 63 69 69 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 7d ar(ev->ascii);.........}.....}.}
18e0 0a 0a 76 6f 69 64 20 6d 61 69 6e 28 73 74 72 75 63 74 20 6d 75 6c 74 69 62 6f 6f 74 5f 69 6e 66 ..void.main(struct.multiboot_inf
1900 6f 5f 74 20 2a 68 64 72 2c 20 75 69 6e 74 33 32 5f 74 20 6d 61 67 69 63 29 0a 7b 0a 20 20 20 20 o_t.*hdr,.uint32_t.magic).{.....
1920 62 6f 6f 6c 20 67 66 78 5f 73 74 61 74 75 73 20 3d 20 62 6f 6f 74 28 68 64 72 2c 20 6d 61 67 69 bool.gfx_status.=.boot(hdr,.magi
1940 63 29 3b 0a 20 20 20 20 69 6e 69 74 72 64 5f 72 65 61 64 28 29 3b 0a 20 20 20 20 67 66 78 5f 73 c);.....initrd_read();.....gfx_s
1960 65 74 5f 66 6f 72 65 67 72 6f 75 6e 64 28 30 78 38 30 46 46 38 30 29 3b 0a 20 20 20 20 70 72 69 et_foreground(0x80FF80);.....pri
1980 6e 74 66 28 22 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 5c 6e 22 29 3b 0a 20 20 20 20 67 66 78 5f ntf("Hello,.world!\n");.....gfx_
19a0 73 65 74 5f 66 6f 72 65 67 72 6f 75 6e 64 28 47 46 58 5f 57 48 49 54 45 29 3b 0a 0a 20 20 20 20 set_foreground(GFX_WHITE);......
19c0 70 73 32 6b 62 64 5f 73 65 74 5f 68 61 6e 64 6c 65 72 28 6b 65 79 68 61 6e 64 6c 65 72 29 3b 0a ps2kbd_set_handler(keyhandler);.
19e0 0a 20 20 20 20 77 68 69 6c 65 28 31 29 61 73 6d 28 22 68 6c 74 22 29 3b 0a 0a 20 20 20 20 2f 2f .....while(1)asm("hlt");......//
1a00 63 68 61 72 20 2a 70 74 72 20 3d 20 30 78 41 30 30 30 30 30 3b 0a 20 20 20 20 2f 2f 70 75 74 63 char.*ptr.=.0xA00000;.....//putc
1a20 68 61 72 28 2a 70 74 72 29 3b 0a 0a 20 20 20 20 70 72 69 6e 74 66 28 22 53 74 61 72 74 69 6e 67 har(*ptr);......printf("Starting
1a40 20 6c 69 6e 6b 65 64 2d 69 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 58 52 61 63 65 72 2e 2e 2e .linked-in.application.XRacer...
1a60 5c 6e 22 29 3b 0a 20 20 20 20 2f 2f 70 72 69 6e 74 66 28 22 52 75 6e 6e 69 6e 67 20 67 72 61 70 \n");.....//printf("Running.grap
1a80 68 69 63 73 20 62 65 6e 63 68 6d 61 72 6b 2e 2e 2e 5c 6e 22 29 3b 0a 20 20 20 20 73 72 61 6e 64 hics.benchmark...\n");.....srand
1aa0 28 34 32 29 3b 0a 0a 20 20 20 20 67 66 78 5f 72 65 73 65 74 28 29 3b 0a 0a 20 20 20 20 65 6e 75 (42);......gfx_reset();......enu
1ac0 6d 20 70 6c 75 67 69 6e 5f 73 74 61 74 75 73 3b 0a 20 20 20 20 73 74 72 75 63 74 20 70 6c 75 67 m.plugin_status;.....struct.plug
1ae0 69 6e 5f 61 70 69 3b 0a 20 20 20 20 65 78 74 65 72 6e 20 65 6e 75 6d 20 70 6c 75 67 69 6e 5f 73 in_api;.....extern.enum.plugin_s
1b00 74 61 74 75 73 20 78 72 61 63 65 72 5f 6d 61 69 6e 28 63 6f 6e 73 74 20 73 74 72 75 63 74 20 70 tatus.xracer_main(const.struct.p
1b20 6c 75 67 69 6e 5f 61 70 69 2a 29 3b 0a 20 20 20 20 65 78 74 65 72 6e 20 76 6f 69 64 20 70 6c 75 lugin_api*);.....extern.void.plu
1b40 67 69 6e 5f 6c 6f 61 64 28 65 6e 75 6d 20 70 6c 75 67 69 6e 5f 73 74 61 74 75 73 20 28 2a 66 75 gin_load(enum.plugin_status.(*fu
1b60 6e 63 29 28 63 6f 6e 73 74 20 73 74 72 75 63 74 20 70 6c 75 67 69 6e 5f 61 70 69 2a 29 29 3b 0a nc)(const.struct.plugin_api*));.
1b80 0a 20 20 20 20 2f 2f 70 6c 75 67 69 6e 5f 6c 6f 61 64 28 78 72 61 63 65 72 5f 6d 61 69 6e 29 3b .....//plugin_load(xracer_main);
1ba0 0a 0a 20 20 20 20 69 66 28 67 66 78 5f 73 74 61 74 75 73 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 ......if(gfx_status).....{......
1bc0 20 20 20 72 75 6e 5f 67 66 78 5f 62 65 6e 63 68 6d 61 72 6b 28 29 3b 0a 20 20 20 20 7d 0a 20 20 ...run_gfx_benchmark();.....}...
1be0 20 20 66 6c 61 73 68 5f 6c 65 64 73 28 29 3b 0a 7d 0a ..flash_leds();.}.