[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(toppers-users 40) $B%9%/%m!<%k=hM}$rDI2C$7$F$_$^$7$?(B(Re: Re: i386(PC/AT) $B$X0\?"$7$F$_$^$7$?(B)
- To: toppers-users at ertl ics tut ac jp
- From: "Ryuichi NAITOH" <liu1 at at sakura ne jp>
- Date: Tue, 28 Nov 2000 12:26:01 +0900
$BFbF#$G$9!#(B
From: ACKyugo <ackyugo at geocities co jp>
Subject: (toppers-users 32) Re: i386(PC/AT) $B$X0\?"$7$F$_$^$7$?(B
Date: Thu, 23 Nov 2000 21:06:51 +0900
Message-ID: <3A1D085B1EA 4AADACKYUGO at mail geocities co jp>
> $B$3$s$K$A$O!#(B
>
> > $B$&!<$s!"@h$r1[$5$l$F$7$^$C$?(B($B>P$$(B)$B!#(B
>
> $B%R%^$O3X@8$N:GBg$K$7$FM#0l$NIp4o$G$9$+$i(B($B>P(B)
>
> > $BAGAa$$$G$9$M!<(B($Be$2$^$7$?!#(B
> $B=q$/$H$3$m$H$$$C$?$i%G%#%9%Q%C%A%c$H3d$j9~$_$N=PF~$j8}$0$i$$$7$+$"$j$^$;(B
> $B$s$+$i:n6HNL$O>/$J$+$C$?$G$9!#(B
>
$BGR8+$7$^$7$?!#(B
$B2hLL$KI=<($9$k=hM}$G!"2hLL$N:G2<9T$r1[$($k$H2hLL$N0lHV>e$KI=<(0LCV$rJQ(B
$B99$7$F$$$k$_$?$$$G$9$M!#(B
$B$3$l$@$H!"$A$g$C$H8+$K$/$$$H;W$&$N$G!"%9%/%m!<%k=hM}$rDI2C$7$F$_$^$7$?!#(B
$B$=$l$[$IBg$-$J$b$N$G$O$J$$$N$G!"JQ99$7$?%U%!%$%k$r$=$N$^$^E:IU$7$^$9!#(B
$BE:IU%U%!%$%k$r(B config/i386/pcat/sys_config.c $B$KCV$-49$($F%3%s%Q%$%k$7(B
$B$F$/$@$5$$!#(B
-----
$BFbF#(B (rnaitoh at st rim or jp)
/*
* TOPPERS/JSP Kernel
* Toyohashi Open Platform for Embedded Real-Time Systems/
* Just Standard Profile Kernel
*
* Copyright (C) 2000 by ????
*
* $B>e5-Cx:n8"r7o$rK~$?$9>l9g$K8B$j!$K\%=%U%H%&%'%"!JK\%=(B
* $B%U%H%&%'%"$r2~JQ$7$?$b$N$r4^$`!%0J2l9g$K$O!$>e5-$NCx:n(B
* $B8"I=<(!$$3$NMxMQ>r7o$*$h$S2<5-$NL5J]>Z5,Dj$,!$$=$N$^$^$N7A$G%=!<(B
* $B%9%3!<%ICf$K4^$^$l$F$$$k$3$H!%(B
* (2) $BK\%=%U%H%&%'%"$r%P%$%J%j%3!<%I$N7A$^$?$O5!4o$KAH$_9~$s$@7A$GMx(B
* $BMQ$9$k>l9g$K$O!$r7o$rK~$?$9$3$H!%(B
* (a) $BMxMQ$KH<$&%I%-%e%a%s%H!JMxMQe5-$NCx:n(B
* $B8"I=<(!$$3$NMxMQ>r7o$*$h$S2<5-$NL5J]>Z5,Dj$r7G:\$9$k$3$H!%(B
* (b) $BMxMQ$N7ABV$r!$JL$KDj$a$kJ}K!$K$h$C$F!$>e5-Cx:n8"@\E*$^$?$O4V@\E*$K@8$8$k$$$+$J$kB;(B
* $B32$+$i$b!$>e5-Cx:n8"Z$GDs6!$5$l$F$$$k$b$N$G$"$k!%>e5-Cx:n8"Z$b9T$o(B
* $B$J$$!%$^$?!$K\%=%U%H%&%'%"$NMxMQ$K$h$jD>@\E*$^$?$O4V@\E*$K@8$8$?$$(B
* $B$+$J$kB;32$K4X$7$F$b!$$=$N@UG$$rIi$o$J$$!%(B
*/
/* modified by R.Naitoh (2000/11/28)
* $B2hLL$N:G2<9T$r1[$($?$i%9%/%m!<%k$9$k=hM}$rDI2C!#(B
* $B%+!<%=%k$r0\F0$9$k=hM}$rDI2C!#(B
*/
/*
* $B%?!<%2%C%H%7%9%F%`0MB8%b%8%e!<%k!J(BPC/AT$BMQ!K(B
*/
#include "jsp_kernel.h"
#include "sys_insn.h"
#define DISPLAY_IO 0x03d4
#define COLUMNS 80
#define LINES 24
#define ATTRIBUTE 7
static int xpos;
static int ypos;
static volatile UB *video;
static void scroll_up();
static void move_cursor();
/*
* $B%?!<%2%C%H%7%9%F%`0MB8$N=i4|2=(B
*/
void
sys_initialize()
{
W i;
video = (UB *)0xB8000;
xpos = 0;
ypos = 0;
for(i = 0; i < COLUMNS * LINES * 2; i++)
{
*(video + i) = 0;
}
/* $B$F$-$H!<(B(^^; */
outb(0x20, 0x11);
outb(0x21, 0x20);
outb(0x21, 0x04);
outb(0x21, 0x01);
outb(0xA0, 0x11);
outb(0xA1, 0x28);
outb(0xA1, 0x02);
outb(0xA1, 0x01);
outb(0x21, ~(0x04));
outb(0xA1, ~(0x00));
}
/*
* $B%?!<%2%C%H%7%9%F%`$N=*N;(B
*/
void
sys_exit(void)
{
while(1);
}
/*
* $B%?!<%2%C%H%7%9%F%`$NJ8;z=PNO(B
*/
void
sys_putc(char c)
{
if(c == '\n' || c == '\r')
{
newline:
xpos = 0;
ypos++;
if(ypos >= LINES)
{
scroll_up();
ypos = LINES - 1;
}
move_cursor(xpos, ypos);
return;
}
*(video + (xpos + ypos * COLUMNS) * 2) = c & 0xFF;
*(video + (xpos + ypos * COLUMNS) * 2 + 1) = ATTRIBUTE;
xpos++;
if(xpos >= COLUMNS)
goto newline;
move_cursor(xpos, ypos);
}
/* $B%+!<%=%k$r;XDj$7$?0LCV$K0\F0$9$k(B
*/
static void
move_cursor()
{
int addr;
addr = xpos + ypos * 80;
outb(DISPLAY_IO, 0x0e );
outb(DISPLAY_IO + 1, addr >> 8 );
outb(DISPLAY_IO, 0x0f );
outb(DISPLAY_IO + 1, addr & 0xFF );
}
/* 1 $B9T$@$1%9%/%m!<%k$9$k(B
* $B%+!<%=%k$O0\F0$7$J$$(B
* ($B%+!<%=%k$K$D$$$F$N=hM}$O8F$S=P$7B&$G9T$&I,MW$,$"$k(B)$B!#(B
*/
static void
scroll_up()
{
int x, y;
short *p;
/* $B9T$r%3%T!<(B */
for (y = 0; y < LINES - 1; y++) {
for (x = 0; x < COLUMNS; x++) {
video[x + y * COLUMNS] = video[x + (y + 1) * COLUMNS];
}
}
/* $B:G2<9T$r%/%j%"(B */
for (x = 0; x < COLUMNS; x++) {
video[x + (LINES - 1) * COLUMNS] = ' ' | ATTRIBUTE;
}
}