summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--binfont.src512
-rw-r--r--kernel/floppy.c14
-rw-r--r--kernel/kernel.c29
-rw-r--r--kernel/vesa.c56
-rw-r--r--makefont.py8
5 files changed, 566 insertions, 53 deletions
diff --git a/binfont.src b/binfont.src
index cd0a076..2a45476 100644
--- a/binfont.src
+++ b/binfont.src
@@ -1,29 +1,495 @@
-// All letters are made from ones and zeros and eight * ten bits
-// do not use zeros and ones in this file!! apart of the patterns of
-// course
+// unknown
+
+XXXXXXXX
+X______X
+X_XXXX_X
+X_X__X_X
+X_X__X_X
+X_X__X_X
+X_X__X_X
+X_XXXX_X
+X______X
+XXXXXXXX
+
// A
-11111111
-11111111
-11000011
-11000011
-11111111
-11111111
-11000011
-11000011
-11000011
-11000011
+XXXXXXXX
+XXXXXXXX
+XX____XX
+XX____XX
+XXXXXXXX
+XXXXXXXX
+XX____XX
+XX____XX
+XX____XX
+XX____XX
// B
-11111000
-11111110
-11000111
-11000011
-11111110
-11111110
-11000011
-11000111
-11111110
-11111000
+XXXXXXX_
+XXXXXXXX
+XX____XX
+XX____XX
+XXXXXXX_
+XXXXXXX_
+XX____XX
+XX____XX
+XXXXXXXX
+XXXXXXX_
+
+// C
+
+XXXXXXXX
+XXXXXXXX
+XX______
+XX______
+XX______
+XX______
+XX______
+XX______
+XXXXXXXX
+XXXXXXXX
+
+// D
+
+XXXXXX__
+XXXXXXX_
+XX___XXX
+XX____XX
+XX____XX
+XX____XX
+XX____XX
+XX___XXX
+XXXXXXX_
+XXXXXX__
+
+// E
+
+XXXXXXXX
+XXXXXXXX
+XX______
+XX______
+XXXXXXX_
+XXXXXXX_
+XX______
+XX______
+XXXXXXXX
+XXXXXXXX
+
+// F
+
+XXXXXXXX
+XXXXXXXX
+XX______
+XX______
+XXXXXXX_
+XXXXXXX_
+XX______
+XX______
+XX______
+XX______
+
+// G
+
+XXXXXXXX
+XXXXXXXX
+XX______
+XX______
+XX__XXXX
+XX__XXXX
+XX____XX
+XX____XX
+XXXXXXXX
+XXXXXXXX
+
+// H
+
+XX____XX
+XX____XX
+XX____XX
+XX____XX
+XXXXXXXX
+XXXXXXXX
+XX____XX
+XX____XX
+XX____XX
+XX____XX
+
+// I
+
+_XXXXXX_
+___XX___
+___XX___
+___XX___
+___XX___
+___XX___
+___XX___
+___XX___
+___XX___
+_XXXXXX_
+
+// J
+
+XXXXXXXX
+XXXXXXXX
+______XX
+______XX
+______XX
+______XX
+XX____XX
+XXX___XX
+_XXXXXXX
+__XXXXXX
+
+// K
+
+XX____XX
+XX__XXX_
+XX__XXX_
+XX_XXX__
+XXXX____
+XXXX____
+XX_XXX__
+XX__XXX_
+XX__XXX_
+XX____XX
+
+// L
+
+XX______
+XX______
+XX______
+XX______
+XX______
+XX______
+XX______
+XX______
+XXXXXXXX
+XXXXXXXX
+
+// M
+
+XX____XX
+XXX__XXX
+XXX_XXXX
+XXXXXXXX
+XXXXXXXX
+XX_XX_XX
+XX_XX_XX
+XX____XX
+XX____XX
+XX____XX
+
+// N
+
+XX____XX
+XXX___XX
+XXX___XX
+XXXX__XX
+XXXXX_XX
+XX_XXXXX
+XX__XXXX
+XX___XXX
+XX___XXX
+XX____XX
+
+// O
+
+_XXXXXX_
+XXXXXXXX
+XX____XX
+XX____XX
+XX____XX
+XX____XX
+XX____XX
+XX____XX
+XXXXXXXX
+_XXXXXX_
+
+// P
+
+XXXXXXX_
+XXXXXXXX
+XX____XX
+XX____XX
+XXXXXXXX
+XXXXXXX_
+XX______
+XX______
+XX______
+XX______
+
+// Q
+
+_XXXXXX_
+XXXXXXXX
+XX____XX
+XX____XX
+XX____XX
+XX_XX_XX
+XX_XXXXX
+XX__XXXX
+XXXXXXXX
+_XXXXXXX
+
+// R
+
+XXXXXXX_
+XXXXXXXX
+XX____XX
+XX____XX
+XXXXXXXX
+XXXXXXX_
+XXXXX___
+XX_XXX__
+XX__XXX_
+XX___XXX
+
+// S
+
+_XXXXXX_
+XXXXXXXX
+XX____XX
+_XX___X_
+__XX____
+___XXX__
+_X__XXX_
+XX___XXX
+XXXXXXXX
+_XXXXXX_
+
+// T
+
+XXXXXXXX
+XXXXXXXX
+___XX___
+___XX___
+___XX___
+___XX___
+___XX___
+___XX___
+___XX___
+___XX___
+
+// U
+
+XX____XX
+XX____XX
+XX____XX
+XX____XX
+XX____XX
+XX____XX
+XX____XX
+XX____XX
+XXXXXXXX
+_XXXXXX_
+
+// V
+
+XX____XX
+XX____XX
+XX____XX
+_XX__XX_
+_XX__XX_
+_XX__XX_
+__XXXX__
+__XXXX__
+___XX___
+___XX___
+
+// W
+
+XX____XX
+XX____XX
+XX_XX_XX
+XX_XX_XX
+XXXXXXXX
+XXXXXXXX
+XXX__XXX
+XXX__XXX
+XX____XX
+XX____XX
+
+// x big
+
+XX____XX
+XX____XX
+_XX__XX_
+_XX__XX_
+__XXXX__
+__XXXX__
+_XX__XX_
+_XX__XX_
+XX____XX
+XX____XX
+
+// Y
+
+XX____XX
+XX____XX
+_XX__XX_
+_XX__XX_
+__XXXX__
+__XXXX__
+___XX___
+___XX___
+___XX___
+___XX___
+
+// Z
+
+XXXXXXXX
+XXXXXXXX
+_____XXX
+_____XXX
+____XXX_
+___XXX__
+_XXX____
+XXX_____
+XXXXXXXX
+XXXXXXXX
+
+// space
+
+________
+________
+________
+________
+________
+________
+________
+________
+________
+________
+
+// zero
+
+_XXXXXX_
+XXXXXXXX
+XX___XXX
+XX__X_XX
+XX__X_XX
+XX_X__XX
+XX_X__XX
+XXX___XX
+XXXXXXXX
+_XXXXXX_
+
+// one
+
+___XX___
+__XXX___
+__XXX___
+_XXXX___
+XX_XX___
+___XX___
+___XX___
+___XX___
+___XX___
+_XXXXXX_
+
+// 2
+
+_XXXXXX_
+XXXXXXXX
+_____XXX
+_____XXX
+____XXX_
+___XXX__
+_XXX____
+XXX_____
+XXXXXXXX
+XXXXXXXX
+
+// 3
+
+XXXXXXXX
+XXXXXXXX
+_____XXX
+____XX__
+___XX___
+__XXX___
+____XXX_
+XX___XXX
+XXXXXXXX
+_XXXXXX_
+
+// 4
+
+___XX___
+__XXX___
+__XXX___
+_XXXX___
+XX_XX___
+XXXXXXXX
+XXXXXXXX
+___XX___
+___XX___
+___XX___
+
+// 5
+
+XXXXXXXX
+XXXXXXXX
+XXX_____
+XXX_____
+XXXXXXX_
+_XXXXXXX
+______XX
+X_____XX
+XXXXXXXX
+_XXXXXX_
+
+// 6
+
+_XXXXXX_
+XXXXXXXX
+XX______
+XX______
+XXXXXXX_
+XXXXXXX_
+XX____XX
+XX____XX
+XXXXXXXX
+_XXXXXX_
+
+// 7
+
+XXXXXXXX
+XXXXXXXX
+_____XXX
+____XXX_
+____XXX_
+___XXX__
+___XXX__
+__XXX___
+__XXX___
+_XXX____
+
+// 8
+
+_XXXXXX_
+XXXXXXXX
+XX____XX
+XX____XX
+_XXXXXX_
+_XXXXXX_
+XX____XX
+XX____XX
+XXXXXXXX
+_XXXXXX_
+
+// 9
+
+_XXXXXX_
+XXXXXXXX
+XX____XX
+XX____XX
+_XXXXXXX
+_XXXXXXX
+______XX
+______XX
+XXXXXXXX
+_XXXXXX_
+
diff --git a/kernel/floppy.c b/kernel/floppy.c
index 8be440f..a373ec7 100644
--- a/kernel/floppy.c
+++ b/kernel/floppy.c
@@ -343,7 +343,7 @@ void flpydsk_write_sector_imp (uint8_t head, uint8_t track, uint8_t sector) {
flpydsk_send_command ( head); // first head should match with above!
flpydsk_send_command ( sector);
flpydsk_send_command ( FLPYDSK_SECTOR_DTL_512 );
- flpydsk_send_command ( 3 ); // number of tracks we want
+ flpydsk_send_command ( 1 ); // number of tracks we want
/*
flpydsk_send_command (
@@ -367,7 +367,7 @@ void flpydsk_write_sector_imp (uint8_t head, uint8_t track, uint8_t sector) {
}
void flpydsk_read_sector_imp (uint8_t head, uint8_t track, uint8_t sector) {
- sector=1;
+ //sector=1;
//! set the DMA for read transfer
flpydsk_dma_read ();
@@ -376,7 +376,6 @@ void flpydsk_read_sector_imp (uint8_t head, uint8_t track, uint8_t sector) {
uint32_t st0, cyl;
-
//! read in a sector
flpydsk_send_command (
FDC_CMD_READ_SECT | FDC_CMD_EXT_MULTITRACK |
@@ -386,12 +385,14 @@ void flpydsk_read_sector_imp (uint8_t head, uint8_t track, uint8_t sector) {
flpydsk_send_command ( head);
flpydsk_send_command ( sector);
flpydsk_send_command ( FLPYDSK_SECTOR_DTL_512 );
- flpydsk_send_command ( 3 ); // number of tracks we want
+ flpydsk_send_command ( 1 ); // number of tracks we want
+
/*
flpydsk_send_command (
( ( sector + 1 ) >= FLPY_SECTORS_PER_TRACK )
? FLPY_SECTORS_PER_TRACK : sector + 1 );
*/
+
flpydsk_send_command ( FLPYDSK_GAP3_LENGTH_3_5 );
flpydsk_send_command ( 0xff );
@@ -543,7 +544,7 @@ void floppy_init()
//
scr_put_string_nl("floppy: test read (sector 0).");
- flpydsk_read_sector(0);
+ flpydsk_read_sector(64); //0x8000 here the data starts!
scr_put_string_nl("floppy: data: ");
uint16_t *dma=0xb000;
int i;
@@ -552,9 +553,10 @@ void floppy_init()
scr_put_string_nl("");
- //
+ /*
scr_put_string_nl("floppy: test write (sector 100).");
flpydsk_write_sector(100);
+ */
}
diff --git a/kernel/kernel.c b/kernel/kernel.c
index 5af172e..05a4f9f 100644
--- a/kernel/kernel.c
+++ b/kernel/kernel.c
@@ -24,13 +24,11 @@ void int_test_handler()
X86_IRQ_END
-
}
void kernel_main()
{
-
// clear console
scr_clear();
@@ -83,7 +81,7 @@ void kernel_main()
vesa_init(0x8300,0x8400);
// floppy
- //floppy_init();
+ floppy_init();
scr_put_string_nl("");
@@ -98,26 +96,17 @@ void kernel_main()
// {
//}
+ //uint8_t rawfont[]={0xff,0xff,0xc3,0xc3,0xff,0xff,0xc3,0xc3};
+ //uint8_t rawfont[]={0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xff,0xff,};
+ uint8_t *rawfont=0xb000; // here the floppy_init puts first sector
+ // after 0x8000 (font data :))
- while(1)
- {
-
- int i;
- int j;
- for(i=0;i<1024;i++)
+ PutString(rawfont,"Welcome to Fool OS 001",10,10,0xff00);
+ PutString(rawfont,"Welcome to Fool OS 001",20,20,0xf00);
+ PutString(rawfont,"Welcome to Fool OS 001",30,30,0xfff00);
- for(j=0;j<768;j++)
- {
- if(o<2)PutPixel(i,j,0xff);
- else if(o<4)PutPixel(i,j,0x5f0);
- else PutPixel(i,j,0xf0000);
-
- }
- t+=125;
- o++;
- if(o>8)o=0;
- }
+ while(1); // never ending loop
}
diff --git a/kernel/vesa.c b/kernel/vesa.c
index 93a42f3..b1a298f 100644
--- a/kernel/vesa.c
+++ b/kernel/vesa.c
@@ -38,6 +38,14 @@ typedef struct ModeInfoBlock {
static vbemodeinfo *VbeModeInfoBlock;
+
+typedef struct foolfont_struct
+{
+ uint8_t line[10]; //every single fool font consists of 10 lines a 8 bit
+
+}foolfont;
+
+
void vesa_init(vbeinfo *info,vbemodeinfo *mode)
{
int i=0;
@@ -109,3 +117,51 @@ void PutPixel(int x,int y, int color){
cTemp[x+y+2] = (uint8_t)((color>>16) & 0xff);
}
+void PutFont(foolfont *font , char c, int x,int y, int color)
+{
+ int fnt=0;
+
+
+ if(c>='A'&&c<='Z')fnt=c-'A'+1;
+ else if(c>='a'&&c<='z')fnt=c-'a'+1;
+ else if(c>='0'&&c<='9')fnt=c-'0'+28;
+ else if(c=' ')fnt=27;
+
+
+ int posx, posy, sizex=8, sizey=10;
+
+ for(posx=x;posx<x+sizex;posx++)
+ for(posy=y;posy<y+sizey;posy++)
+ {
+ if(font[fnt].line[posy-y]&1<<(7-(posx-x)))
+ {
+ PutPixel(posx,posy,color);
+ }
+ else
+ {
+ PutPixel(posx,posy,0);
+ }
+
+ }
+
+
+
+}
+
+void PutString(foolfont *font , char *str, int x,int y, int color)
+{
+
+ int i=x;
+ while((*str)!=0)
+ {
+ PutFont(font ,*str, i,y, color);
+ i+=9; // spacing
+ str++;
+ }
+
+
+
+
+
+
+}
diff --git a/makefont.py b/makefont.py
index 22ee576..be3c072 100644
--- a/makefont.py
+++ b/makefont.py
@@ -15,13 +15,13 @@ while True:
if not c:
break
- if c=="0":
+ if c=="0" or c=='_':
l+=1
- b+=c
+ b+="0"
- if c=="1":
+ if c=="1" or c=='X':
l+=1
- b+=c
+ b+="1"
if l==8:
print b