@@ -5,14 +5,18 @@ void clear(char *buffer, int length);
55void printLogo ();
66void lineLogo (char * string , int y );
77
8- #define VIDMEM 0xB000
9- #define OFFSET 0x8000
8+ #define VIDMEM 0xA000
9+ #define SCREEN_WIDTH 320
10+ #define BLUE 0x9
11+ #define YELLOW 0xE
12+ #define WHITE 0xF
1013
1114int main () {
1215 char tes [16 ];
13- interrupt (0x10 , 0x0003 , 0 , 0 , 0 );
16+ interrupt (0x10 , 0x0013 , 0 , 0 , 0 );
1417 printLogo ();
15- interrupt (0x10 , 0x0200 , 0 , 0 , 0x0C00 );
18+ interrupt (0x15 , 0x8600 , 0 , 5 , 0 );
19+ interrupt (0x10 , 0x0003 , 0 , 0 , 0x0C00 );
1620 printString ("Masukkan input : " );
1721 readString (tes );
1822 printString (tes );
@@ -35,7 +39,7 @@ void handleInterrupt21 (int AX, int BX, int CX, int DX){
3539
3640void printString (char * string ) {
3741 while (* string != '\0' ) {
38- interrupt (0x10 , 0xe * 256 + * string , 0 , 0 , 0 );
42+ interrupt (0x10 , 0xE * 256 + * string , 0 , 0 , 0 );
3943 string ++ ;
4044 }
4145}
@@ -63,33 +67,48 @@ void clear(char *buffer, int length) {
6367}
6468
6569void printLogo () {
66- lineLogo (" `...........` `...` ...` `.....`` `..` `..`" ,0 );
67- lineLogo (" `...........` `...` ...` `.....`` `..` `..`" ,1 );
68- lineLogo (" ..............` `.... `.... `.........` .... `...." ,2 );
69- lineLogo (" .....`````..... `.... `.... ....` ``` .... `...." ,3 );
70- lineLogo (" ..--` `.... `.... ..... .....`` ....``` `...." ,4 );
71- lineLogo (" //ooo+:-...-:////. -:-.. :o/:. `../+oo/. ..-/+oo+:-" ,5 );
72- lineLogo (" +ooo+//:-:::.` /oo+: /ooo/ `-/oooo+``+ooooooooo+//" ,6 );
73- lineLogo (" +ooo: ``````. -ooo+` `/ooo: .+ooo:`oooo.```-ooo+" ,7 );
74- lineLogo (" +ooo: -------. /ooo+:-:+ooo/``/+/:-:+ooo.`ooo+` -ooo+" ,8 );
75- lineLogo (" /ooo- +++++:.-. `-+ooooooo+-` `+ooooooo+- `ooo+` .ooo/" ,9 );
76- lineLogo (" `-:. .++++++:--.` ``.-:-.`` `` ``.-::-.` ` `--` `. .--`" ,10 );
70+ lineLogo (" " ,0 );
71+ lineLogo (" " ,1 );
72+ lineLogo (" `...........` `...` ...` `.....`` `..` `..` " ,2 );
73+ lineLogo (" `...........` `...` ...` `.....`` `..` `..` " ,3 );
74+ lineLogo (" `...........` `...` ...` `.....`` `..` `..` " ,4 );
75+ lineLogo (" `...........` `...` ...` `.....`` `..` `..` " ,5 );
76+ lineLogo (" ..............` `.... `.... `.........` .... `.... " ,6 );
77+ lineLogo (" ..............` `.... `.... `.........` .... `.... " ,7 );
78+ lineLogo (" .....`````..... `.... `.... ....` ``` .... `.... " ,8 );
79+ lineLogo (" .....`````..... `.... `.... ....` ``` .... `.... " ,9 );
80+ lineLogo (" ..--` `.... `.... ..... .....`` ....``` `.... " ,10 );
81+ lineLogo (" ..--` `.... `.... ..... .....`` ....``` `.... " ,11 );
82+ lineLogo (" //ooo+:-...-:////. -:-.. :o/:. `../+oo/. ..-/+oo+:- " ,12 );
83+ lineLogo (" //ooo+:-...-:////. -:-.. :o/:. `../+oo/. ..-/+oo+:- " ,13 );
84+ lineLogo (" +ooo+//:-:::.` /oo+: /ooo/ `-/oooo+``+ooooooooo+// " ,14 );
85+ lineLogo (" +ooo+//:-:::.` /oo+: /ooo/ `-/oooo+``+ooooooooo+// " ,15 );
86+ lineLogo (" +ooo: ``````. -ooo+` `/ooo: .+ooo:`oooo.```-ooo+ " ,16 );
87+ lineLogo (" +ooo: ``````. -ooo+` `/ooo: .+ooo:`oooo.```-ooo+ " ,17 );
88+ lineLogo (" +ooo: -------. /ooo+:-:+ooo/``/+/:-:+ooo.`ooo+` -ooo+ " ,18 );
89+ lineLogo (" +ooo: -------. /ooo+:-:+ooo/``/+/:-:+ooo.`ooo+` -ooo+ " ,19 );
90+ lineLogo (" /ooo- +++++:.-. `-+ooooooo+-` `+ooooooo+- `ooo+` .ooo/ " ,20 );
91+ lineLogo (" /ooo- +++++:.-. `-+ooooooo+-` `+ooooooo+- `ooo+` .ooo/ " ,21 );
92+ lineLogo (" `-:. .++++++:--.` ``.-:-.`` `` ``.-::-.` ` `--` `. .--` " ,22 );
93+ lineLogo (" `-:. .++++++:--.` ``.-:-.`` `` ``.-::-.` ` `--` `. .--` " ,23 );
94+ lineLogo (" " ,24 );
95+ lineLogo (" " ,25 );
7796}
7897
7998void lineLogo (char * string , int y ) {
8099 int j = 0 ;
81100 while (string [j ] != '\0' ) {
82- putInMemory (VIDMEM , OFFSET + (80 * y + j ) * 2 , string [j ]);
101+ // putInMemory(VIDMEM, (80 * y + j) * 2, string[j]);
83102 j ++ ;
84103 switch (string [j ]) {
85104 case 'o' :
86- putInMemory (VIDMEM , OFFSET + ( 80 * y + j ) * 2 + 1 , 0xE );
105+ putInMemory (VIDMEM , ( SCREEN_WIDTH * y + j ), YELLOW );
87106 break ;
88107 case '.' :
89- putInMemory (VIDMEM , OFFSET + ( 80 * y + j ) * 2 + 1 , 0x9 );
108+ putInMemory (VIDMEM , ( SCREEN_WIDTH * y + j ), BLUE );
90109 break ;
91110 default :
92- putInMemory (VIDMEM , OFFSET + ( 80 * y + j ) * 2 + 1 , 0xF );
111+ putInMemory (VIDMEM , ( SCREEN_WIDTH * y + j ), WHITE );
93112 }
94113 }
95114}
0 commit comments