From ca903022c911b6ef253d2b94abf06805c56508d1 Mon Sep 17 00:00:00 2001 From: Eggert Jung Date: Tue, 15 Apr 2025 13:47:48 +0200 Subject: [PATCH] aufg0 + more --- cga.cc | 34 ++++++++++++++++++++++++++++++++++ cga.h | 5 +++++ 2 files changed, 39 insertions(+) create mode 100644 cga.cc create mode 100644 cga.h diff --git a/cga.cc b/cga.cc new file mode 100644 index 0000000..b2bc00c --- /dev/null +++ b/cga.cc @@ -0,0 +1,34 @@ +unsigned char* buffer = (unsigned char*) 0xb8000; + + +char make_attribute ( char foreground , + char background , char blink ) { + foreground &= 0 xf ; // ffff ffff -> 0000 ffff + background &= 0 x7 ; // bbbb bbbb -> 0000 0 bbb + blink &= 1; // BBBB BBBB -> 0000 000 B + background <<= 4; // 0000 0 bbb -> 0 bbb 0000 + blink <<= 7; // 0000 000 B -> B000 0000 + return foreground | background | blink ; // Bbbb ffff +} + +int puts(const char *s){ + for(int i=0; *(s+i) != 0; i++){ + buffer[2*i] = *(s+i); + buffer[(2*i)+1] = 0x14; + } + return 0; +} + +void clear_display(void){ + for(int i=0; i<(80*25); i++){ + buffer[i] = 0; + } +} + +void iterate(void){ + for(int i=0; i<(80*25); i++){ + buffer[2*i] = i%256; + buffer[1+(2*i)] = i%256; + } +} + diff --git a/cga.h b/cga.h new file mode 100644 index 0000000..8b72d32 --- /dev/null +++ b/cga.h @@ -0,0 +1,5 @@ + +extern unsigned char* buffer; +int puts(const char *s); +void clear_display(void); +void iterate(void);