2003-07-19  higepon  <higepon@users.sourceforge.jp>

        * kernel.cpp: 

        * disp.cpp: $B%f!<%6!<%b!<%I$N<BAu(I%$B%F%9%H@.8y(B

2003-07-17  higepon  <higepon@users.sourceforge.jp>

        * GDTUtil.cpp: user$B%b!<%I$N(Bcs, ds, ss$B$rDj5A(B

        * core.asm (_arch_switch_process): ds$B$r(Bprocess switch$B$NA08e$GJ];}$9$k$h$&$KJQ99(B
                   (_arch_switch_process_dpl_low): ss$B$bJ];}(B
                   (_arch_switch_process_dpl_low): dpl$B$,2<$,$k$H$-$h$&$N(Btask_switc

        * Scheduler.cpp: dpl$B$,2<$,$C$?$+$I$&$+$rH=CG$9$k%a%=%C%I$rDI2C(B

        * GDTUtil.cpp (setupTSS): $B%f!<%6!<%b!<%IBP1~$N=`Hw$H$7$F(BTSS#esp0, ss0$B$r=`Hw(B

2003-07-16  higepon  <higepon@users.sourceforge.jp>

        * disp.cpp: Semaphore, semaphore$B$N=$@5(B

2003-07-10  higepon  <higepon@users.sourceforge.jp>

        * kernel.cpp: $B%W%m%;%9%9%$%C%A%F%9%HCf(B $B$^$"$&$^$/$$$C$F$$$k$+$b(B

2003-07-09  higepon  <higepon@users.sourceforge.jp>

        * kernel.cpp: make$B$O$G$-$k$,%W%m%;%9%9%$%C%A$GMn$A$F$$$kLOMM!#(B

2003-07-08  higepon  <higepon@users.sourceforge.jp>

        * include/global.h: $B$^$?(Bmake$B=PMh$J$/$J$j$^$7$?!#%X%C%@$N@0M}$r$;$M$P(B

        * kernel.cpp: make$B$G$-$k$h$&$K$J$j$^$7$?!#(B

2003-07-06  higepon  <higepon@users.sourceforge.jp>

        * kernel.cpp: make$B$G$-$J$$>uBV$@$,$3$N%=!<%9$r<:$&$N$OHs>o$K$^$:$$$N$G$d$`$J$/(Bcommit

        * Process$B<~$j$r2~NICf(B

2003-06-29  higepon  <higepon@users.sourceforge.jp>

        * Scheduler.cpp: $B%9%1%8%e!<%iDI2C(B

2003-06-28  higepon  <higepon@users.sourceforge.jp>

        * kernel.cpp: Process$B$rDI2C!#(B

2003-06-24  higepon  <higepon@users.sourceforge.jp>

        * include/PagingUtil.h: page$BA`:n7O4X?tDI2C(B

2003-06-22  higepon  <higepon@users.sourceforge.jp>

        * ihandlers.cpp: pagefaulthandler$B$r2~NI!#(Binfo$B$,8z$+$J$$$N$O2?8N!)(B

        * include/PagingUtil.h: $B$A$g$C$H2~NICf(B

2003-06-15  higepon  <higepon@users.sourceforge.jp>

        * ihandlers.cpp: $B%Z!<%8%s%0@.8y(B $B0U?^E*$K%Z!<%8%U%)%k%H$r5/$3$7$F$=$N%j%K%"%"%I%l%9$rD4$Y$k!#(B

        * PagingUtil.cpp: $B%Z!<%8%s%0<B83Cf!#$&$^$/F0$+$J$$$G(Bkernel.cpp$B$N(BPagingUtil::setup()$B$r%3%a%s%H%"%&%H$7$F2<$5$$!#(B

2003-06-10  higepon  <higepon@users.sourceforge.jp>

        * PagingUtil.cpp:$BDI2C(B

2003-06-08  higepon  <higepon@users.sourceforge.jp>

        * IA32MemoryManager.cpp: cmos$B$G$b%a%b%jAmNL$rF@$k(B

        * IDTUtil.cpp,IDTUtil.h$BDI2C(B

        * idt.cpp, idt.h$B$NGQ;_(B

        * IA32MemoryManager.cpp: $B%a%b%j;HMQNL$rJV$94X?t$rDI2C(B

2003-06-07  higepon  <higepon@users.sourceforge.jp>

        * IA32MemoryManager.cpp: GDT$B4XO"$N%3!<%I$r(BGDTUtil$B$K0\F0(B

        * GDTUtil.cpp: $B%a%b%j<~$j$N@0M}$N$?$a(BGDT$B4XO"$N%/%i%9(B

2003-05-31  higepon  <higepon@users.sourceforge.jp>

        FAT12$B%V!<%HBP1~(B

        * firstboot.asm : FAT12$B%V!<%HBP1~(B $B$0$j$]$s;aDs6!$N%3!<%I$K(BBPB$B$J$I$rDI2C!#(B
                          $B%G%P%C%0%k!<%A%s$r:o=|(B

        * fat_write.cpp : $B?75,:n@.(B FAT12.cpp$B$r6n;H$7$FG[I[MQ%G%#%9%/%$%a!<%8$r:n@.$9$k!#(B

        * Makefile : FAT12$B%$%a!<%8$r:n@.$9$k$?$a$$$m$$$m$HJQ99(B

        * secondboot.asm : a20enable$B$H(Bgraphicalmode$B$r(Bfirstboot.asm$B$+$i(Bsecondboot.asm$B$K0\F0!#(B

2003-05-25  higepon  <higepon@users.sourceforge.jp>

        * test_higepon.cpp (FDCTester): g_cosole->printf$B$r3F%l%Y%k$K$"$o$;$F(Binfo()$B$KCV$-49$((B

        * info.cpp (info): info$B4X?tDI2C(B:$B>pJs%l%Y%k$O(Bg_info_level$B$GJQ992DG=!#(B

        * include/global.h (g_process_name): info$B$+$i;2>H$9$k!#%W%m%;%9L>>N(B($B2>(B)$B$r:n@.(B.

        * FAT12.cpp: releaseCluster()$B=q$-9~$_$N:]$K%U%!%$%k%5%$%:$,>.$5$/$J$C$?$i%/%i%9%?$r3+J|$9$k!#(B

        * FDCDriver.cpp: DMA$BE>Aw%5%$%:$OI,$:%^%$%J%9$9$k$3$H(B!Thanks Sakky@meg-os.org

2003-05-24  higepon  <higepon@users.sourceforge.jp>

        * FDCDriver.cpp:motor(ON)$B2~A1(B

2003-05-24  .mjt

        * $B:rF|$N#2$D$N5-=R$O%&%=(B
        * PIC$B$N@_Dj%k!<%A%s$N%^%9%?$H%9%l!<%V$,5U$K$J$C$F$k$H$3$m$,$"$C$?!D(B
        * PCIC$B$N=i4|2=$OIT==J,$J$N$G!"5/F0;~$K%+!<%I$,;I$5$C$F$$$J$$$HG'<1$7$J$$!#(B

2003-05-23  .mjt

        * $B3d$j9~$_%O%s%I%i$O(BIRQ 0-7$B$K4X$7$F$O@5>o$K5!G=$7$F$$$k!#(B
        * PCIC$B$OA4A3%@%a!#(BID$B%P%$%H$NFI$_=P$7$N$_@5>o!#(B

2003-05-22  .mjt

        * CPU fault$B$N<oN`$rI=<($9$k(B
        * $B%^%&%9%I%i%$%P=q$-$+$1(B
        BUG : $B3d$j9~$_$,H/@8$9$k$H3N<B$KMn$A$k(B
                -> IRQHandler$B$O%/%i%9$G$O$J$/!"4X?t$X$N%]%$%s%?$KJQ99M=Dj(B -> $B40N;!#(B
        TODO: $B%*%V%8%'%/%H5!9=$N<BAu!#L>A0$GB0@-CM$r<hF@$G$-$k$h$&$K!#(B

2003-05-22  higepon  <higepon@users.sourceforge.jp>

        * FDCDriver.cpp: write/read$B<:GT;~$N%j%H%i%$5!G=DI2C(B

2003-05-21 .mjt

        * IRQ$B$N3d$j9~$_%O%s%I%i$r(BIRQ 0-7$B$O(BINT 0x60 - 0x67$B$K0\F0!#(B

        * $B%I%i%$%P<~$j$O$A$g$C$HE`7k%b!<%I!#(B
        * IDEDriver.cpp: CHS$B%j!<%I<BAu!#(BLBA$B%G%P%$%9$KBP$7$F(BCHS$B%b!<%I$H(BLBA$B%b!<%I$G%j!<%I%F%9%H!#(B
        * IDEDriver.h: $B%$%s%?!<%U%'!<%9$NDI2C!#(B
        BUG : $B0lIt$N%^%7%s$GMn$A$kLdBj$O%^%7%sB&LdBj$HH=CG!#!#!#(B
        BUG : driver$B$N@_7W$O%^%:$=$&!#(B

        CHS$BFI$_9~$_$OLdBj$J$5$2!#%^%&%9%I%i%$%P$O@_7W$,%^%:$$$N$G(BPS2Driver$B$H$7$F%^%&%9$H%-!<%\!<%I0l=o$K@)8f$NJ}8~$G!#(B

2003-05-21  higepon  <higepon@users.sourceforge.jp>

        * FDCDriver.cpp: $B$$$^$@<B5!$G0BDj$7$?FI$_=q$-$,$G$-$J$$!#3d$j9~$_$r$-$A$s$H%-%c%C%A$9$k$3$H$,I,MW!#(B
                         readResults$B$G3d$j9~$_$,F~$k$N$,Ff(B

2003-05-20  higepon  <higepon@users.sourceforge.jp>

        * FAT12.cpp: FDCDriver#read$B$,(Blba=0$B$G$&$^$/F0:n$;$:!#(B0$B3d$r%3%s%H%m!<%k$;$M$P(B


2003-05-20 .mjt
        * driver/ISADevice/Mouse/*: $B?75,!#%^%&%9%I%i%$%P(B($B=q$-$+$1(B
        * IRQ$B%$%s%?%U%'!<%9$N@0Hw!#%I%i%$%P$O4{$K=q$1$J$/$b$J$$!#L$%F%9%H(B
        BUG: $B%^%&%9%I%i%$%P$,%^%&%9$r%$%M!<%V%k$K$7$F$J$$!#(B

2003-05-19 .mjt

        * $BF0E*(BIRQ$B%O%s%I%iJQ99$N$?$a$N<B83%3!<%I4v$D$+$KEO$C$FDI2C!#(B
        * $B$^$?!"(Bihandlers.cpp$B$H$+$b$+$J$j1x$/$J$j$^$7$?(B($BN^(B
        * Makefile:($B<+J,@lMQ$N(B)$B%S%k%I%?!<%2%C%H(B write$BDI2C!#(Ball$B$r%S%k%I8e!"(B/dev/fd0$B$X$N=q$-9~$_$r9T$&(B($B3NG'$J$7(B)$B!#(B
        * Makefile: $B99?7!#(Bcygwin$B4D6-$G$N%S%k%I;~!"(Bmake$B$N$_$G@5>o(Bmake$B2DG=(B(env.local)$B!#(B
        * sysresource.cpp: $B?75,!#(B
        * sysresource.h: $B?75,!#(BIRQ$B$N2>$N%/%i%9!#(B
        * ISADriver.*: $B?75,!#(BISA$B%P%9$N%*%V%8%'%/%H!#(B
        * include/driver: $B?75,!#%I%i%$%P%$%s%?!<%U%'!<%9!#B>%W%i%C%H%U%)!<%`$H$N6&M-$b;kLn$KF~$l$FJ,N%!#(B
        * HowToBuild: $B99?7!#(B
        * env.local: $B?75,!#2?$i$+$N@_Dj%9%/%j%W%H$N=PNO$9$Y$-(Bmakefile$B%X%C%@It!#8=:_$O8GDj!#(B
        * mjt_test.cpp: CMOS$BFI$_=P$7$N%F%9%H!#3HD%%a%b%j%5%$%:$N<hF@!#(B
        * IDEDriver.cpp: $B5/F0;~$K(Bdiag$B%3%^%s%I$r<B9T$7$J$$$h$&$K$7$?(B(Bochs$BBP:v(B) $B$=$NB>:Y$+$$=$@5!#(B
        BUG : $B0lIt$N%^%7%s$G5/F0$7$J$$(B(IPL$BD>8e$K%j%V!<%H(B)
        BUG : IRQ$B$N3d$j9~$_%O%s%I%i$H(BCPU$B$N3d$j9~$_%O%s%I%i$,$1$C$3$&Ho$C$F$$$k!#(B
        BUG : env.local$B$,(BCVS$B$N99?7BP>]$K$J$C$F$$$k(B(env.local$B$,B8:_$7$J$$$H(Bmake$B=PMh$J$$$?$a!#(B

2003-05-18  higepon  <higepon@users.sourceforge.jp>

        * test_higepon.cpp:Write$BO"B3$,2DG=$K(B

        * MakeFile$B2~NI(B $B4D6-JQ?t(BMONA_DEVELOPER$B$r;2>H$7$^$9!#(B

        * FDCDriver.cpp: DiskDriver$B$N(Blba$B$r(Bint$B"M(Bdword

        * kernel.cpp: $B<B5!$N(Bread/write$B%F%9%HCf(Brecalibrate$B$,=EMW(B

        * FDCDriver.cpp: lbaToTHS$B=$@5!#$3$$$D$,4V0c$C$F$$$?$*$+$2$G$$$m$$$m:$$C$?!#(B

2003-05-18  .mjt

        * IDEDriver.*:IDE$B%I%i%$%P:n@.3+;O!#(B
        * IDEDriver.cpp: LBA$B%b!<%I$N%5%]!<%H$H(BRead$B$N2><BAu(B
        * kernel.cpp: IDE Driver$B$N%F%9%H(B
        * $B%9%l%C%I4IM}5!9=$rBgJ,%3%a%s%H%"%&%H$7$?!#(B
        * ToDo:BlockDevice$B%/%i%9$N@_7W(B/auqireIRQ$BB>3d$j9~$_7O%$%s%?!<%U%'!<%9$N%^!<%8(B

2003-05-17  higepon  <higepon@users.sourceforge.jp>

        * FAT12.cpp: read$B%3%^%s%I$N(BEOT$B$O(B0x12$B$G$h$$$N$+$J!#(B

2003-05-10  higepon  <higepon@users.sourceforge.jp>

        * operator.cpp: free()$B$r<BAu!#(B

        * FAT12.cpp: write(),close()$B$N%j%U%!%/%?%j%s%0(B

        * FAT12.cpp: createFile()$B$N%j%U%!%/%?%j%s%0(B

2003-05-05  higepon  <higepon@users.sourceforge.jp>

        * FAT12.cpp: write(buf, size)$B40@.(B

2003-05-04  higepon  <higepon@users.sourceforge.jp>

        * FAT12.cpp: createFile()$B@.8y(B

2003-05-02  higepon  <higepon@users.sourceforge.jp>

        * FAT12.cpp: FAT$B$N%5%$%:$O(Bbpb$B$K;}$C$F$$$k$N$G(Bfat$BMQ%P%C%U%!$O%a%b%j$rF0E*$K5a$a$k$h$&$K$7$?!#(B
        * FAT12.cpp: $B%/%i%9%?$N>uBV$r(BBitMap$B$K$b$D$h$&$K$7$?!#(B

2003-04-29  higepon  <higepon@users.sourceforge.jp>

        * FAT12.cpp  open(),read()$B$N<BAu(B

        * FAT12.cpp  changeDirectory$B40@.(B

        * string.cpp strtok$B2~NI(B

2003-04-27  higepon  <higepon@users.sourceforge.jp>

        * FAT12.cpp: changeDirectoryRelative$B$N%k!<%H%(%s%H%j!<HG$r$J$s$H$J$/<BAu(B

2003-04-21  higepon  <higepon@users.sourceforge.jp>

        * FAT12.cpp: $B:G6a99?7DdBZ5$L#$G$9$M!#%G%#%l%/%H%j!"%U%!%$%kFI$_<h$j$N(B
                     $BJ}K!$OJ,$+$C$?$N$G<BAuCf!#(B

2003-04-13  higepon  <higepon@users.sourceforge.jp>

        * FAT12.cpp: $B%k!<%H%(%s%H%j$N<hF@$K@.8y(B

        * include/FAT12.h: fat12$B<BAuCf(B

2003-03-29  higepon  <higepon@users.sourceforge.jp>

        * Semaphore.cpp: Semaphore$B$r%/%i%9$K$7$?!#(B

2003-03-22  higepon  <higepon@users.sourceforge.jp>

        * disp.cpp: semaphore$B$K$h$k!"IA2h%j%=!<%9%m%C%/<B83@.8y(B

        * syscalls.cpp: $B%7%9%F%`%3!<%k(B

        * kthread.cpp: $B%+!<%M%k%9%l%C%I<BAu(B

2003-03-09  higepon  <higepon@users.sourceforge.jp>

        * kthread.cpp: 4$B$D$N%9%l%C%I$rF0$+$9$3$H$K@.8y(B

2003-03-08  higepon  <higepon@users.sourceforge.jp>

        * pic.cpp: PIC$B=i4|2==hM}$r$$$^$5$i:n@.(B

2003-03-07  higepon  <higepon@users.sourceforge.jp>

        * mode12h.asm (_write_font): font$BJQ99(B(by Guripon)

2003-03-02  higepon  <higepon@users.sourceforge.jp>

        * kthread.cpp: thread_idle$BDI2C(B

2003-03-01  higepon  <higepon@users.sourceforge.jp>

        * ihandler.asm (_arch_timerhandler): $B%?%$%^3d$j9~$_;~$K%l%8%9%?$r%;!<%V(B

        * include/kthread.h: kthread $BFC8"%l%Y%k%9%l%C%I:n@.(B

2003-02-28  higepon  <higepon@users.sourceforge.jp>

        * boot.mac$B:o=|(B

        * FDCDriver.cpp:$B:o=|(B

        * MFDCDriver.cpp: FD read $B<B5!@.8y%P!<%8%g%s(B

        * Guripon$B;a$N%9%/%m!<%k2~A1(B

        * MFDCDriver.cpp: FD write $B<B5!@.8y%P!<%8%g%s(B

2003-02-25  higepon  <higepon@users.sourceforge.jp>

        * ihandler.asm (_arch_timerhandler): $BDI2C(B

        * ihandler.asm (_arch_dummyhandler): $BDI2C(B


2003-02-24  higepon  <higepon@users.sourceforge.jp>

        * ihandler.asm (_arch_fdchandler): $B3d$j9~$_%O%s%I%i$r>/$7$:$D%"%;%s%V%i$K0\9T(B

2003-02-23  higepon  <higepon@users.sourceforge.jp>

        * GraphicalConsole.cpp: $B%+!<%=%k4XO"$N%P%0%U%#%C%/%9(B

        * IA32MemoryManager.cpp:$B%+!<%M%k%a%b%j%^%C%W$NJQ99(B

2003-02-22  higepon  <higepon@users.sourceforge.jp>

        * GraphicalConsole.cpp:write_font$B$N%i%C%Q!<$G$9!#(B

2003-02-21  guripon  <guripon@users.sourceforge.jp>

        * mode12h.asm$B$rDI2C(B $B$3$l$K$h$j$$$m$$$m$*$$$7$/$J$j$^$9!#(B

2003-02-20  higepon  <higepon@users.sourceforge.jp>

        * MFDCDriver.cpp: read$B@.8y(B.$B<B5!$G2x$7$$F0:n$,!&!&!&(B

2003-02-16  higepon  <higepon@users.sourceforge.jp>

        * Makefile (SOURCES): cygwin.env$BJQ99(B nasmw->nasm

2003-02-15  higepon  <higepon@users.sourceforge.jp>

        * IA32MemoryManager.cpp: allocateMemory()$B$N:GBg%"%I%l%9$r(B0x150000

2003-02-14  higepon  <higepon@users.sourceforge.jp>

        * MFDCDriver.cpp: seek$B$^$G<BAu40N;(B

2003-02-10  higepon  <higepon@users.sourceforge.jp>

        * MFDCDriver.cpp: motor(on/off)

2003-02-09  higepon  <higepon@users.sourceforge.jp>

        * MFDCDriver.cpp: FDCDriver$B$r0l$+$i=q$-D>$7;O$a$k!#(B

2003-02-03  higepon  <higepon@users.sourceforge.jp>

        * include/ProcessManager.h: Process$B$r9=B$BN$+$i%/%i%9$KJQ99(B

2003-02-02  higepon  <higepon@users.sourceforge.jp>

        * ProcessManager.cpp (initProcess): 3$B$D$N%?%9%/$r<B9T$9$k$h$&JQ99!#(B

        * $B%?%9%/@Z$jBX$($N;~$K%l%8%9%?$r9=B$BN$KB`Hr$9$k$h$&$KJQ99!#(B

2003-02-01  higepon  <higepon@users.sourceforge.jp>

        * include/ProcessManager.h (_saveRegisters): $B%l%8%9%?%;!<%VMQ$N%^%/%m$rDI2C(B

2003-01-31  higepon  <higepon@users.sourceforge.jp>

        * include/ProcessManager.h struct Process$B$K%a%s%PDI2C!#(B

        * _sysUnlock,_sysLock()$B$rL>A0JQ99(B

        * Semaphore.cpp: $B%;%^%U%)%/%i%9$N%9%1%k%H%sDI2C(B

2003-01-28  higepon  <higepon@users.sourceforge.jp>

        * include/ProcessManager.h (_switchProcess): pop %%eax$B=$@5(B

2003-01-27  higepon  <higepon@users.sourceforge.jp>

        * IA32MemoryManager.cpp: enableA20()$BGQ;_(B secondboot.asm$B$K0\9T(B
2003-01-26  higepon  <higepon@users.sourceforge.jp>

        * KeyBoardManager.cpp:getCharacter();

        * monaKernel.cpp: printOK$BDI2C(B
                          printBanner$BDI2C(B

2003-01-25  higepon  <higepon@users.sourceforge.jp>

        * Mona develop beta 0.02b$B%j%j!<%9(B

        * monaKernel.cpp: $BGX7J?'!&J8;z?'$rJQ99(B

        * monaIhandler.cpp: $B%9%?%C%/@Z$jBX$(%F%9%H$K@.8y(B

2003-01-24  higepon  <higepon@users.sourceforge.jp>

        * monaIhandler.cpp: $B%9%?%C%/<B83Cf$^$H$b$KF0$-$^$;$s!#(B

2003-01-19  higepon  <higepon@users.sourceforge.jp>

        * ProcessManager.cpp: $B%?%9%/%9%$%C%A<B83Cf$K$D$-$"$^$jF0$-$^$;$s!#(B

2003-01-16  higepon  <higepon@users.sourceforge.jp>

        * ProcessManager.cpp: TSS$B$r;H$o$J$$%?%9%/%9%$%C%A<B83$K@.8y(B

2003-01-14  higepon  <higepon@users.sourceforge.jp>

        * monaVga.cpp:_sys_printf() %x$B$r2~A1(B

        * _sysdump()$B%^%/%mDI2C(B: $B8F$S=P$5$l$?;~E@$G$N%l%8%9%?$rI=<($7$^$9!#(B

2003-01-13  higepon  <higepon@users.sourceforge.jp>

        * ProcessManager.cpp

        * $B%a%b!'4X?t8F$S=P$7(B
          $B8F$S=P$5$l$?4X?t$O(BEBP$B$+$i$NAjBP0LCV$G%Q%i%a!<%?$K%"%/%;%9$9$k!#(B
          dword[EBP]  :EBP$B$,J];}$7$F$$$?A0$NCM(B
          dword[EBP+4]:$B8F$S=P$785$G(Bpush$B$5$l$F$$$?%j%?!<%s%"%I%l%9(B
          dwodd[EBP+8]:$BBh0l%Q%i%a!<%?(B

2003-01-12  higepon  <higepon@users.sourceforge.jp>

        * monaIdt.cpp: enableTimer(),disableTimer()$B$rDI2C!#(B
          thanks OSASK$B@n9g$5$s(B

2003-01-12 Guripon  <>

        * firstboot.asm: VirtualPC$B$G(BFD$B5/F0$9$k$h$&$K$J$C$?!#(B
          $B860x$O(BTEMPSEG$B$r(B0x9fe0$B$,$^$:$+$C$?$_$?$$!#(B

2003-01-10  higepon  <higepon@users.sourceforge.jp>

        * firstboot.asm: VirtualPC$B$G(BFD$B5/F0$7$J$$%(%i!<$,2~A1$7$J$$$N$G(B
          $B0JA0$N%P!<%8%g%s$K4,$-La$7!#(B

2003-01-08  higepon  <higepon@users.sourceforge.jp>

        * Tino$B;aDs6!$N%Q%C%A$K$h$j(BSTLport$B$,;HMQ$G$-$k$h$&$K$J$j$^$7$?!#(B
          $B$^$?$3$l$KH<$$(Bgcc2.95$B"*(B3.2$B$K0\9T$7$^$7$?!#(B

2003-01-04  Guripon  <>

        * firstboot.asm:A20$B$rM-8z$K$9$k%3!<%I$rDI2C(B

2003-01-03  higepon  <higepon@users.sourceforge.jp>

        * IA32MemoryManager.cpp: $B%+!<%M%kMQ%a%b%jNN0h$r3HD%(B
        (resetGDT): type$B$r%-%A%s$H<BAu$9$k$h$&$K$7$?!#(B

        * monaIdt.cpp: IDT_BASE$B$r(B0$B$KJQ99!#(B

2003-01-01  higepon  <higepon@users.sourceforge.jp>

        * SystemInfo.cpp: vendorID$B<hF@(B

2002-12-31  higepon  <higepon@users.sourceforge.jp>

        * SystemInfo:cpuid$BL?Na$r;HMQ$7$F!"%7%9%F%`>pJs$r<hF@$9$k%/%i%9$rDI2C(B

        * IA32MemoryManager.h: secondboot.asm$B$G$N(BGDT$B$N@_Dj$r0l;~E*$J$b$N$H$7$F(B
                               C++$B0\9T8e(BGDT$B$r@_Dj$7$J$*$9$h$&$KJQ99!#(B

2002-12-29  higepon  <higepon@users.sourceforge.jp>

        * monaKernel.cpp: Intel$B$N%^%K%e%"%k$K(BTSS$B$N%5%$%:$K4X$7$F5-=R$,$"$C$?$N$G(B
                          $B$"$o$;$F=$@5!#(B

2002-12-28  higepon  <higepon@users.sourceforge.jp>

        * monaIhandler.cpp: fault0d()$B$rJQ99(B

2002-12-27  higepon  <higepon@users.sourceforge.jp>

        * monaIhandler.cpp (handlers): $B3d$j9~$_%O%s%I%i$K(Bpusha(),popa();$BDI2C(B

2002-12-26  higepon  <higepon@users.sourceforge.jp>

        * IA32MemoryManager.cpp (flushTLB): flushTLB()$BDI2C!#(B

2002-12-25  higepon  <higepon@users.sourceforge.jp>

        * IA32MemoryManager.cpp: $B0lIt(Bstatic$B4X?t$r(B.h$B$+$i(B.cpp$B$K0\F0(B

        * include/IA32MemoryManager.h: startPaging(),stopPaging()$BDI2C(B

        * IA32MemoryManager.cpp: setCR3()$B$rDI2C(B

2002-12-24  higepon  <higepon@users.sourceforge.jp>

        * IA32MemoryManager.cpp: X86MemoryManager$B$r%j%M!<%`$7$^$7$?!#(B

        * X86MemoryManager:enableA20()$B$rBgI}$K2~NI(B
        * monaKernel.cpp: KeyBoardManager$B$r%?%9%/%9%$%C%A$NA0$K(B
                          $B%$%s%9%?%s%92=$7$F$*$/(B

2002-12-23  higepon  <higepon@users.sourceforge.jp>

        * secondboot.asm (gdtr): CS,DS base=0,limit=4GB$B$H$7$^$7$?!#(B

2002-12-22  higepon  <higepon@users.sourceforge.jp>

        * ProcessManager.cpp: $B%?%$%^3d$j9~$_$K$h$k%?%9%/@Z$jBX$($K@.8y(B

2002-12-16  higepon  <higepon@users.sourceforge.jp>

        * monaOperator.cpp: new[],delete[]$B$rDI2C(B gcc3.2$BBP1~(B

2002-12-15  higepon  <higepon@users.sourceforge.jp>

        * doxygen:dot.exe$B$H$$$&%/%i%9?^@8@.%D!<%k$rF3F~!#(B

        * Makefile : lib$B%G%#%l%/%H%jBP1~(B

2002-12-09  higepon  <higepon@users.sourceforge.jp>

        * include/ProcessManager.h: $B%7%s%0%k%H%s%Q%?!<%sE,MQ(B

        * monaIhandler.cpp : iret()$B:n@.(B $B%^%/%m!#(B

        * H_SIZE_T,H_BYTE$B$NGQ;_(B

        * monaTester.cpp: multi task ok!! but some error.

2002-12-06  Guripon  <>

        * firstboot.asm: add retry on errror

2002-12-03  higepon  <higepon@users.sourceforge.jp>

        * ProcessManager.cpp: add ltr()
        * ProcessManager.cpp: add setTSS()
        * ProcessManager.cpp: add setGDT()

2002-12-02  higepon  <higepon@users.sourceforge.jp>

        * ProcessManager.cpp: add sgdt()

        * monaKernel.cpp: panic()$BDI2C(B

2002-12-01  higepon  <higepon@users.sourceforge.jp>

        * secondboot.asm:TSS$B%G%#%9%/%j%W%?DI2C(B

2002-11-23  higepon  <higepon@users.sourceforge.jp>

        * firstboot.asm: Guripon$B$5$s$K$h$k2~NI(B

2002-11-22  higepon  <higepon@users.sourceforge.jp>

        * monaIhandler.cpp (handlers): add timerHandler

        * include/ProcessManager.h: add

        * ProcessManager.cpp: add

        * monaTester.cpp: processTester()$BDI2C(B $B=hM}$O$^$@2?$b$J$7(B

2002-11-20  higepon  <higepon@users.sourceforge.jp>

        * monaTester.cpp: typeTester()$BDI2C(B

        * include/monaTypes.h: byte,word,dword$BDI2C(B

2002-11-17  higepon  <higepon@users.sourceforge.jp>

        * MakeFile$B$NE}9g(B:HowToBuild$B;2>H(B

2002-11-16  higepon  <higepon@users.sourceforge.jp>

        * higeKernel.cpp (startKernel): enableA20()$B%3%a%s%H%"%&%H(B
          $B<B5!$@$H%-!<%\!<%IF~NO$,$H$l$J$$!*!*!*(B

        * higeVga.cpp (scrollUp): $BJ8;z?'(I%$BGX7J?'BP1~(B

2002-11-15  higepon  <higepon@users.sourceforge.jp>

        * higeVga.cpp:$BJ8;z?'!&GX7J?'$N@_DjDI2C(B

2002-11-14  syn <syn@users.sourceforge.jp>

        * higeKernel.cpp, higeTester.cpp: FDCDriver$B$N%F%9%H%3!<%I$r(B higeTester.cpp$B$X0\9T(B
        * FDCDrive.cpp, FDCDrive.h: 2002/11/02$B$K4,$-La$7$?JQ99$rI|3h(B

2002-11-11  higepon  <higepon@users.sourceforge.jp>

        * X86MemoryManager.cpp: enableA20$BDI2C(B
        * higeTester.cpp: add
        * higeTester.h: add
        * $B%F%9%H%3!<%I$r=y!9$K(BhigeTester.cpp$B$K0\9T$7$^$9!#(B
        * firstboot.asm:$B%^%k%A%;%/%?FI$_9~$_BP1~(B powered by Guripon,syn
        * higeIdt.h:$B>e5-BP1~$KH<$$(Bidtr$B%"%I%l%9$r(B0x6800$B"*(B0x0500$B$XJQ99(B

2002-11-04  higepon  <higepon@users.sourceforge.jp>

        * KeyBoardManager.cpp:$B0lIt>iD9$J%3!<%I$N8+D>$7(B

2002-11-02  syn <syn@users.sourceforge.jp>

        * boot$BITG=$N$?$a!"A09`L\$N4,$-La$7(B

2002-11-02  syn <syn@users.sourceforge.jp>

        * FDCDriver.cpp, FDCDriver.h writeSector$B$N<BAu(B
          FDCDriver::write_dma $BDI2C(B
        * FDCDriver.cpp $BJ#?t%;%/%?FI$_9~$_$N<BAu(B
        * FDCDriver::motor motor-off$B$N<BAu(B($BK:$l$F$?(B:-P)
        * FDCDriver::sector_to_hcr $BDI2C(B
        * FDCDriver.cpp $B3F<o%(%i!<=hM}DI2C(B

2002-10-31  syn <syn@users.sourceforge.jp>

        * FDCDriver.cpp readSector$B$N<BAu(B

2002-10-26  higepon  <higepon@users.sourceforge.jp>

        * higeVga.cpp: _sys_printf() %x$BBP1~(B

2002-10-23  higepon  <higepon@users.sourceforge.jp>

        * firstboot.asm: number of sector to read $B$r(B18$B"*(B32$B$KJQ99(B

2002-10-23  syn <syn@users.sourceforge.jp>

        * FDCDriver.cpp $BDI2C(B
        * include/FDCDriver.h $BDI2C(B
        * higeKernel.cpp: FDCDriver$BMQ$N%F%9%H%3!<%IDI2C(B($B%3%a%s%H%"%&%H>uBV(B)
        * higeIhandler.cpp: fdcHandler add
        * higeIo.cpp: _sysInitIo: $B3d$j9~$_%^%9%/$rJQ99$7!"(BFDC$B$K$h$k3d$j9~$_$r5v2D(B
        * Makefile*: FDCDriver$B$N5-=RDI2C(B


2002-10-23  higepon  <higepon@users.sourceforge.jp>

        * higeKernel.cpp:test for HVector$B5-=RDI2C(B
        * MakeFile.cygwin:HVector.h$B$N5-=RDI2C(B
        * HVector$BDI2C(B
        * higeOperator.cpp: __builtin_vec_delete add

2002-10-22  higepon  <higepon@users.sourceforge.jp>

        * KeyBoardManager.cpp:const$B%-!<%o!<%IEyDI2C(B
        * KeyBoardManager.h:const$B%-!<%o!<%IEyDI2C(B
        * MemoryManager.cpp:$BITMW$J%G%P%C%0%a%C%;!<%8$r(BHIGEPOS_DEBUG_MM$B$GM^@)(B

        syn$B$5$s(Bcommit$B8e(BMakeFile$B$K<jD>$7$rF~$l$k!#(B

2002-10-20  higepon  <higepon@users.sourceforge.jp>

        * $B3+H/4D6-$r(Bhigepos_v1.1$B$K0\9T$7$^$7$?!#(B

2002-10-19  higepon  <higepon@users.sourceforge.jp>

        * vga.cpp: _sys_printf$B$K(B%c $B5!G=DI2C(B

        * KeyBoardManager.cpp:$BDL>o$N%-!<<hF@$r<B83Cf(B

        * firstboot.asm : Guripon rawwrite

2002-10-12  higepon  <higepon@users.sourceforge.jp>

        KeyBoardManager$BDI2C(B $BCf?H$O$^$@6u$G$9!#(B

        * Makefile.linux: KeyBoardManager$BDI2CBP1~(B
        * Makefile: KeyBoardManager$BDI2CBP1~(B
        * KeyBoardManager.cpp: $B?75,DI2C%-!<%\!<%IF~NO4IM}%/%i%9(B
        * KeyBoardManager.h: $B?75,DI2C%-!<%\!<%IF~NO4IM}%/%i%9(B
2002-10-06  higepon  <higepon@users.sourceforge.jp>

        linux$BBP1~(B

        * higeOperator.cpp: operator new$B$N0z?t$r(Bsize_t$B$KJQ99!#(B
          higepostypes.h$B$r(Binclude$B$9$k$h$&$KJQ99(B

        * higepostypes.h:size_t$B$rDj5A!#(B

2002-10-06  syn <syn@users.sourceforge.jp>

        * higeOperator.cpp: operator new $B$H(Boperator delete$B$r%3%a%s%H%"%&%H(B
          (gcc$B$,(B __builtin_new(delete)$B$H$V$D$+$k$H%(%i!<$r=P$9$?$a(B)
        * higeOperator.cpp: operetor new $B$N0z?t$r(B unsigned int$B$XJQ99(B
          (gcc$B$,(B $B7?$,0c$&$H%(%i!<$r=P$9$?$a(B)
        * higeOperator.h: operetor new $B$N0z?t$r(B unsigned int$B$XJQ99(B
          (gcc$B$,(B $B7?$,0c$&$H%(%i!<$r=P$9$?$a(B)

2002-10-06  higepon  <higepon@users.sourceforge.jp>

        * vga.cpp: add scrollUp()function, but it seems bad.

2002-09-08  higepon  <higepon@users.sourceforge.jp>

        * vga.cpp: create _sys_printf().

        * higeOperator.cpp: modify return value of allocateMemory, param value of freeMemory

2002-09-07  higepon  <higepon@users.sourceforge.jp>

        * X86MemoryManager.cpp: modify constructor

2002-09-07  higepon  <higepon@users.sourceforge.jp>

        * include/X86MemoryManager.h: add higepostypes.h
          and define H_SIZE_T
                     H_BYTE

2002-09-06  higepon  <higepon@users.sourceforge.jp>

        * $B%a%b%j4IM}(B $B%a%b%j3d$jEv$F<:GT;~$K(Bfault0Handler$B$,8F$P$l$k$h$&$K$7$?!#(B

        * add fault0Handler

----------------------$B2]Bj(B----------------------
* $B%W%m%;%94IM}<BAu(B
* allocateMemory$B$,(BNULL$B$rJV$7$?;~$K3d$j9~$_=hM}$r5/F0(B
* $B2hLL%9%/%m!<%k$N%G%P%C%0(B
* $B3d$j9~$_%3%s%H%m!<%i!<$N@_Dj(B

$B0J2<(Bhttp://www.bekkoame.ne.jp/~bero/docj/gas.txt$B$h$j0zMQ(B
$B3+H/<TMQ%a%b(B
        3. $B%$%s%i%$%s(I%$B%"%;%s%V%i(B
~~~~~~~~~~~~~~~~~~~~~~~~
  $B%$%s%i%$%s(I%$B%"%;%s%V%i$O(B, C $B8@8l$NJ8$G$9$+$i(B, $BK\Mh$O(B C $B8@8l$NJ}$G2r@b$9$Y$-(B
$B$G$9$,!$$3$3$G$O(B($B2?8N$+(B) gas$B$N$H$3$m$G2r@b$7$^$9!#(B

  $B%$%s%i%$%s(I%$B%"%;%s%V%i$N=q$-J}$O!$(B

    asm("$B%"%;%s%V%i(B" :$B=PNO%Q%i%a%?(B :$BF~NO%Q%i%a%?(B :$BJQ99%Q%i%a%?(B );
  $BKt$O(B,
    asm volatile("$B%"%;%s%V%i(B" :$B=PNO%Q%i%a%?(B :$BF~NO%Q%i%a%?(B :$BJQ99%Q%i%a%?(B);

$B$G$9!#(B $B$3$3$G(B,

    (1) $B%"%;%s%V%i$N=j$O(B, $B>e5-$N%"%;%s%V%i$r$=$N$^$^=q$-$^$9!#(B
    ( asm("movw  %ax, %ds");$B$G(B AX$B$+$i(B DS$B$X$NE>Aw$G$9(I!(B)

    (2) $BC"$7(B, $B%Q%i%a%?$,$"$k;~$O!$%l%8%9%?L>$K$O$b$&0l$DB?$/(B %$B$rIU$1$^$9(I!(B
    ( asm("movl  %0, %%eax" : /* no output */ : "g" (var) : "ax");
     $B%Q%i%a%?(B %0$B$,$"$k$N$G(B, %%eax $B$N$h$&$K$J$j$^$9!#(B)

    (3) $B%Q%i%a%?$O!$(BC $B$NItJ,$H!$%"%;%s%V%i$r7R$0$b$N$G$9!#(B
    $BF~NO%Q%i%a%?$O(B, C $B$+$i%"%;%s%V%i$KCM$r0z$-EO$7(B, $B=PNO%Q%i%a%?$O(B,
    $B%"%;%s%V%i$N=hM}7k2L$r(B C $B$KEO$9$N$K;H$$$^$9!#(B
    ( asm("movl  %%eax, %0" : "=g" (var));
    $B$O(B, EAX$B$NCM$r(B C $B$NJQ?t(B var$B$K3JG<$7$^$9!#(B)

    (4) C $B%3%s%Q%$%i$O(B, " $B%"%;%s%V%i(B "$B$NCf?H$OM}2r$7$^$;$s!#(B
    $B=>$C$F(B, $BJQ99$r<u$1$k%l%8%9%?L>$rJQ99%Q%i%a%?$G=q$$$F$*$-$^$9!#(B
    $B2?8N$+!$(B $B$3$3$O(B "AX", "BX"$B$N$h$&$K(B 16$B%S%C%H%l%8%9%?$NL>>N$G$9(I!(B
    $B$7$+$7!$$3$3$K=q$$$F$*$/$H!$$=$N%l%8%9%?$OJQ99$5$l$k$b$N$H2r<a$7$F(B,
    $BI,MW$J$i(B, $B$=$N%l%8%9%?$NFbMF$r%;!<%V(B,$B%j%9%H%"$9$k%3!<%I$r<+F0E*$K(B
    $B@8@.$7$F$/$l$^$9!#(B

    (5) asm volatile$B$O(B, $B$3$NJ8$O%3%s%Q%$%i$NCN$i$J$$I{:nMQ$,$"$kJ8$G$"$k(B
    $B$3$H$r;XDj$7$^$9!#$=$&$9$k$H%3%s%Q%$%i$O(B, $B$3$NJ8$r:GE,2==hM}$NBP>](B
    $B$K$7$^$;$s!#$D$^$j!$$3$NJ8$O(B, $B:o=|$5$l$?$j$;$:$KI,$:<B9T$5$l$^$9!#(B

 3.1 $BF~=PNO%Q%i%a%?(B
 ~~~~~~~~~~~~~~~~~~
  $BF~NO%Q%i%a%?$O(B,

    "$B%?%$%W(B" ( C$B$N<0(B)

$B$N7A$G;XDj$7$^$9!#(B ( )$B$NCf$O!$(B C $B$N<0$G$9$+$i(B, $BA0$NNc$N$h$&$KC1$J$kJQ?tL>(B
$B$@$1$G$J$/!$(B

    "g" (var1 * 16 + var2)

$B$J$I$H$b=q$1$^$9$7!$(B

    "g" ( func(a, b, c))

$B$N$h$&$K4X?t$r8F$S=P$7$F$bNI$$$o$1$G$9!#$3$NJU$,(B,$BB>$N%$%s%i%$%s(I%$B%"%;%s%V%i$H(B
$B0c$C$F(B, $BHs>o$KJXMx$G$9!#(B

  $B=PNO%Q%i%a%?$O(B, $B%?%$%W$N$H$3$m$,(B, "=g"$B$N$h$&$K(B = $B$,IU$-$^$9(I!$B$^$?!$(B( )$BFb$O(B
C $B$N<0$G$9$,!$(B $BCM$,3JG<$G$-$k$b$N$H8@$&@)8B$,IU$-$^$9!#(B

 3.2 $B%?%$%W$N;XDj(B
 ~~~~~~~~~~~~~~~~
  $B%?%$%W$H$7$F$O(B, $B0J2<$N$b$N$,$"$j$^$9!#(B($B$b$C$H$"$k$,(B, $BNI$/;H$&$b$N$@$1!K(B

    (1) r    $BHFMQ%l%8%9%?(B
    (2) f    $BIbF0>.?tE@%l%8%9%?(B
    (3) m    $B%a%b%j(B
    (4) i,n  $BB(CM@0?t(B
    (5) F    $BB(CMIbF0>.?tE@?t(B
    (6) g    $BHFMQ%l%8%9%?(B/$BB(CM@0?t(B/$B%a%b%j(B $B$I$l$G$b2D(B

  $B%?%$%W$O(B, $BK\Ev$O!$(Bconstraint$B$H8@$&L>A0$G(B, $B%"%;%s%V%i$N9=J8$H$7$FF~=PNO$K5vMF(B
$B$5$l$k%?%$%W$r=q$-$^$9!#Nc$($P(B,

    asm( "movl %0, %%eax" : : "g"(var) : "ax");

$B$N%1!<%9$G$O!$(Bi386$B$N(B mov$BL?Na$G$O(B, $B%G%#%9%F%#%M!<%7%g%s$,(B EAX$B$N>l9g$O!$%=!<%9$O(B
$BHFMQ%l%8%9%?(B, $BB(CM(B, $B%a%b%j$N2?$l$N7A<0$b2DG=$J$N$G(B "g"$B$H=q$-$^$9!#(B $B$7$+$7!$(B

    asm( "movl %0, %%dr0" : : "r"(var));

$B$N>l9g$O!$F1$8(B movl$B$G$b(B, DR0$B$OFC<l%l%8%9%?$J$N$G!$(Bi386$B$G$OHFMQ%l%8%9%?$,%=!<%9(B
$B$H8@$&7A<0$NL?Na$7$+$"$j$^$;$s!#$3$N0Y(B, "r"$B$H;XDj$9$kI,MW$,$"$j$^$9!#$3$&;XDj(B
$B$9$k$H(B, gcc$B$O(B, var$B$NCM$r0lC6HFMQ%l%8%9%?$K3JG<$7!$<!$K(B DR0$B$K%3%T!<$9$kL?Na$r(B
$B@8@.$7$F$/$l$^$9!#$3$3$,JXMx$J$H$3$m$G$9$,!$$3$N0Y$K$I$N%l%8%9%?;H$C$F$$$k$+(B
$B$rCN$kI,MW$,$"$j!$JQ99%Q%i%a%?$N;XDj$,I,MW$JLu$G$9!#(B

  $B$^$?!$(B"g"$B$r;XDj$7$?A0$N%1!<%9$G$O!$(Bvar$B$NCM$,4{$K2?=h$+$N%l%8%9%?$KF~$C$F(B
$B$$$l$P!$$=$N%l%8%9%?$+$i%`!<%V$9$kL?Na$r=P$7(B, $B$=$&$GL5$$>l9g$O%a%b%j$+$i%`!<%V(B
$B$9$kL?Na$r@8@.$9$k$H8@$C$?:GE,2=$r$d$j$^$9!#(B

  $B$3$NJU$,6/NO$GJXMx$J$N$G$9$,!$;XDj$r<:GT$9$k$HM-8z$J:nMQ$r$7$F$$$J$$$HH=Dj(B
$B$5$l$F(B, $BNc$($P(B, $BJ8$,:o=|$5$l$?$j(B, $B%k!<%W$N30$K=P$5$l$?$j$H8@$C$?;W$o$L:GE,2=(B
$B$r$5$l$F$7$^$&>l9g$,$"$j$^$9!#$*$+$7$$$H;W$C$?$i(B, cc1$B$N=PNO$N%"%;%s%V%i$r8+$F(B
$B3NG'$9$kJ}$,0BA4$G$9!#(B

  $B$^$?$O!$(Basm volatile$BJ8$r;H$C$F(B, $B:GE,2=$G:o=|$d0\F0$5$l$J$$$h$&$K$7$^$9!#(B

 3.3 $BF~=PNO%Q%i%a%?$H%*%Z%i%s%I$NBP1~(B
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  $B>e5-$N%Q%i%a%?$H%*%Z%i%s%I$NBP1~$r(B, $B0J2<$NNc$G8+$F8+$^$7$g$&(I!(B $B$3$N%W%m%0%i%`(B
$B$O(B, DOS$B$N%7%9%F%`%3!<%k$r;H$C$F(B, $B%U%!%$%k$r%*!<%W%s$7(B, $B$=$N7k2L$rI=<($9$k$b$N(B
$B$G$9!#(B
=============================================================================
#include <stdio.h>
main(int argc, char **argv)
{
    int result;
    volatile int     error = 0;
asm("
    movl    %2, %%edx
    movw    $0x3d00, %%ax
    int $0x21
    jae noerror
    movl    %3, %1
noerror:
    andl    $0x0000ffff, %%eax
    movl    %%eax, %0
"   : "=g"(result), "=g"(error)
    : "g"(*++argv), "n"(-1)
    : "ax", "dx");

    printf("error=%d, result= 0x%x\n", error, result);
}
=============================================================================

  $B%"%;%s%V%iJ8$N$H$3$m$O(B, $BA4It$r0lJ8$K$^$H$a$F$"$j$^$9!#$3$3$G$OF~=PNO%Q%i%a%?(B
$B$O(B, %0, %1, %2, %3 $B$N(B4$B8D$,;H$o$l$F$$$^$9!#$3$l$i$,(B, $BHV9f=g$K(B $B=PNO(B, $BF~NO$N(B
$B%Q%i%a%?$KBP1~$7$^$9!#(B $B$D$^$j!$(B %0$B$,(B "=g"(result)$B$K!$(B%1$B$,(B "=g(error)$B$K(B, %2$B$,(B
"g"(*++argv)$B$K!$(B%3$B$,(B "n"(-1)$B$KBP1~$9$kLu$G$9!#(B

  %3$B$O(B, $BF~NO%Q%i%a%?$H$7$J$$$GD>@\(B $-1$B$H=q$/$3$H$b=PMh$^$9!#(B

  $B$3$NNc$G$O(B, $BA4$F$N%"%;%s%V%i$,0lJ8$K$J$C$F$$$^$9$+$i(B, noerror$B$N<!$N9T$N(B
$B$h$&$K(B,$B$=$N9T$K$O%Q%i%a%?$N;2>H$,L5$/$F$b(B, $BF1$8J8$NCf$K;2>H$,$"$k$N$G!$(B
$B%l%8%9%?L>$O(B %%eax$B$N$h$&$K(B %$B$,0l$DB?$/I,MW$G$9!#(B

  $B%"%;%s%V%iJ8$N=q$-J}$O(B, $B0lJ8$K$^$H$a$:!$(B

    asm("movl  %0, %%edx":: "g"(*++argv): "dx");
    asm("movw  $0x3d00, %ax"::: "ax");

$B$N$h$&$K(B,$B%"%;%s%V%iL?Na$4$H$K(Basm$BJ8$r=q$/$3$H$b=PMh$^$9!#(B $B$^$?!$(B

    asm("movl %0, %%edx; movw $0x3d00, %%ax":: "g"(*++argv): "ax", "dx");

$B$N$h$&$K(B, $BJ#?t$N%"%;%s%V%iL?Na$r(B ; $B$G6h@Z$C$F(B, $B0l9T$K=q$/$3$H$b$G$-$^$9!#(B

 3.4 $B%l%8%9%?$NJQ?t$X$N3d$jIU$1(B
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  $B%"%;%s%V%i$r;HMQ$9$k>l9g(B, $BL?Na$K$h$C$F$O(B, $B%*%Z%i%s%I$,FCDj$N%l%8%9%?$K$"$k(B
$B$3$H$,I,MW$G$"$C$?$j!$7k2L$,FCDj$N%l%8%9%?$KF~$k$b$N$,$"$j$^$9!#$3$N$h$&$J(B
$B>l9g(B, $B>e5-$N$h$&$KFCDj$N%l%8%9%?$X$N(B mov$BL?Na$r=q$/$3$H$b=PMh$^$9$,(B, $BJL$NJ}K!(B
$B$H$7$F(B, $BFCDj$NJQ?t$K%l%8%9%?$r8GDjE*$K3d$jIU$1$kJ}K!$,$"$j$^$9!#(B

  register unsigned char val asm("dx");

$B$N$h$&$KDj5A$9$k$H(B, $BJQ?t(B val$B$O(B, edx$B%l%8%9%?$N:G2<0L$N%P%$%H$K8GDjE*$K3d$jIU$1(B
$B$5$l$^$9!#$3$l$r;H$C$F(B, $BFCDj$N%l%8%9%?$r;H$&L?Na$r<!$N$h$&$K$7$F;H$&$3$H$,(B
$B$G$-$^$9!#(B

  unsigned char inp(int port)
  {
    register unsigned short p asm("dx");
    register unsinged char  c asm("ax");

    asm("inb  %1, %0" : "=r"(c) : "r"(p = port) : "ax", "dx");
    return c;
}

  $B$3$N$h$&$K(B, $BJQ?t$K%l%8%9%?$r8GDjE*$K3d$jEv$F$kJ}$,(B, $BA0$N$h$&$KFCDj$N%l%8%9%?(B
$B$X$N(B mov$BL?Na$r=q$/$h$j$b0BA4$J$h$&$G$9!#$^$?!$%3!<%I$N8zN($b0lHLE*$K$ONI$$$h$&(B
$B$G$9!#(B

  $BC"$7(B, $BFCDj$N%l%8%9%?$r8GDjE*$K;HMQ$7$F$7$^$$$^$9$+$i(B, $BB>$N=hM}$K;H$($k(B
$B%l%8%9%?$,8:>/$9$k$N$G(B, $B$=$A$i$N8zN($,0-$/$J$j$^$9!#=>$C$F(B, $B>e5-$N>.$5$J4X?t(B
$B$N$h$&$J%9%3!<%W$N>.$5$JHO0O$K8BDj$7$F;HMQ$7$?J}$,NI$$$H;W$$$^$9!#(B

 3.5 $B%i%Y%k$N;HMQ(B
~~~~~~~~~~~~~~~~
  $B$^$?!$A0$NNc$G$O(B, $B%i%Y%k$r;H$C$F$$$^$9!#(Basm$BJ8$N(B " $B%"%;%s%V%i(B "$B$NItJ,$O(B,
$B%i%Y%k$b$=$N$^$^%"%;%s%V%i$K$J$j$^$9!#=>$C$F(B, $BIaDL$K%i%Y%k$r;H$C$?J,4t$b(B
$B=PMh$^$9!#(B

  $BA0$NNc$G$O(B, $B%"%;%s%V%i$r$^$H$a$F0lJ8$K$7$^$7$?$,!$JL!9$NJ8$K$7$F$bF1MM$K(B
$B%i%Y%k$r=q$/$3$H$,=PMh$^$9!#(B

  $B%i%Y%k$NL>A0$G$9$,!$%3%s%Q%$%i$,H/@8$9$k%i%Y%k$O(B, $B%0%m!<%P%k$JL>A0$O(B _ $B$G(B
$B;O$^$j!$J,4t@h$N%i%Y%k$O(B L , $BJ8;zNsDj?t$O(B LC$B$G;O$^$j$^$9$+$i(B, $B$=$l0J30$N1Q;z(B
$B$G;O$^$kL>A0$N%i%Y%k$J$i$V$D$+$k$3$H$OL5$$$H;W$$$^$9!#(B( C$B$NCf$G(B, goto$B$N@h$N(B
$B%i%Y%k$H$7$F;XDj$7$?$b$N$b(B Lxxxx$B$KJQ99$5$l$k$N$G(B, $B%$%s%i%$%s(I%$B%"%;%s%V%i$+$i(B
C $B$N%i%Y%k$X$NJ,4t$O$G$-$^$;$s!#(B)

 3.6 $BCm0U(B
 ~~~~~~~~
  $B5$$,$D$$$?$+$bCN$l$^$;$s$,(B, 3.3$B$NNc$G$O(B error$B$r(B volatile int $B$H@k8@$7$F(B
$B$$$^$9!#$3$N@k8@$O(B, error$B$H8@$&JQ?t$O(B, $B%3%s%Q%$%i$NCN$i$J$$I{:nMQ$,$"$k(B
($B30It$+$i$N3d$j9~$_$GJQ99$5$l$?$j(B, $B=q$-9~$_$K$h$j30It=PNO$,$*$3$C$?$j!K$H8@$&(B
$B0UL#$G$9!#(B

  volatile int$B$r;XDj$7$J$$$H(B, gcc$B$O(B "$B%"%;%s%V%i(B"$B$NItJ,$rM}2r$7$J$$$G!$A4$F$NJ8(B
$B$,=g$K<B9T$5$l$k$H2>Dj$7$F:GE,2=$r9T$&$N$G!$(Bjae$B$rG'<1$;$:(B, error$B$K(B $B>o$KBeF~$,(B
$B5/$3$k$H;W$C$F$7$^$$$^$9!#$3$N0Y(B, error = 0$B$H8@$&=i4|2=$,>JN,$5$l$F$7$^$$$^$9!#(B

  $BJ,4t$,$"$k>l9g$OMWCm0U$G$9!#(B

  $B$3$NNc$K$D$$$F(B, (IA08](B(PED00647)$B$+$i(B, $B<!$N$h$&$K=q$/$Y$-$H$N$465<x$rD:$-$^$7$?!#(B
$BF~NO%Q%i%a%?$N$H$3$m$r(B, $B0J2<$N$h$&$K=q$-49$($k$N$G$9!#(B

    : "g"(*++argv), "n"(-1), "1"(error)

  $B$3$&$9$k$H(B, 1$BHV$N%Q%i%a%?(B error$B$O(B, $BF~NO$K$b$J$C$F$$$k$HG'<1$7$F(Bvolatile int
$B$H@k8@$7$J$/$F$b(B, $B@5$7$$%"%;%s%V%i$,=PNO$5$l$^$9!#(B

  $B$&!A!A$s(B, $B?'!9$"$C$FFq$7$$(I!(B asm$BJ8$N=q$-J}$O!$(Bgcc1.37.1$B$N%=!<%9$N$H$3$m$K$"$k(B
gcc.tex$B$H8@$&(B TeX$B$G=q$+$l$?%3%s%Q%$%iA4BN$N%^%K%e%"%k$NCf$K>\$7$/=q$+$l$F$$$^$9(B
$B$+$i!$$=$A$i$r;2>H$7$F2<$5$$(I!(B ($BL^O@(B, $B1QJ8$G$9!#!K(B

                                        $B0J>e(B
