Autor Thema: Zum 100. Mal Grafik oder Text  (Gelesen 12797 mal)

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« am: 29. July 2006, 23:19 »
Also:

Ich fang jetzt auch (bald doer sofort->mal sehehn) mit einfacher grafik an... ich habe den textmodus satt.... jetzt will ich wissen:

1.ob ich im grafikmodus neue routinen für text machen muss oder ob man da einfach text ausgeben kann

2.wie man im textmodus farbige schrift macht

3.wie man im grafikmodus frabige schrift macht

und 4. wie man im text - modus schrift manuell veschieben kann also nich immer zeile für zeile schriebt sondern zb. das mann ert was in ei e zeile schreibt und paar zeilen später wieder was daghinterschreibt

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #1 am: 29. July 2006, 23:27 »
1: Ja man muss eigene Bitmaps oder änliches machen.

2: Ab B8000h kommt ja ein Byte Zeichen und ein Byte Farbe. Einfach das Farbbyte mit Wert setzen.

3: Na ja, durch eigene Routinen.

4: Den Cursor über Ports oder "int 10h" verschieben und dann dort mit dem "int 10h Funktion 0Eh" Text ausgeben. Oder direkt Ab B8000h schreiben.

bitmaster
In the Future everyone will need OS-64!!!

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 30. July 2006, 10:19 »
wie errechnet man den teil im grafikspeicher wo man punkte setzt und wie macht man das mit den fraben?

mein os soll so aussehen:


natürlich andere auflösung. außerdem ne "normale" schrift obn^^ hab falsche in paint gewählt kann man nit mehr ändern^^. so also da muss ich ja adressierung machen. zb. habe ich jetzt die codes für den buchstaben a in abhängigkeit der linken oberern ekce wo a hinsoll. wie komme ich zb. auf den punk 150,100 im grafikspeicher ? ich verwende wahrscheinlich 320*240 oder was bitmaster auch hatte

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 30. July 2006, 10:33 »
das kommt drauf an wie du deine Routinen aufbauen willst,
ich hab eine für das einzelne setzen von Zeichen,
und eine für Fließtext

die Funktion zum einzelnen setzen ist einfach,
man übergibt den Buchstaben als byte, und die x und y angabe in Pixeln

für Fließtext übergibt man einen String, der normal auf 0 endet,
global ist die letzte Zeichenposition gespeichert und er macht an der Stelle dann weiter,
Zeilenumbruch, usw. wird natürlich auch beachtet


wo genau ist da jetzt dein Problem?

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 30. July 2006, 10:36 »
naja also ich hab das gefunden:

mov cx, offset       ;offset in register laden
mov dl, farbwert  ;farbwert in register laden
mov [es:cx], dl     ;farbwert mit hilfe von segmentoverride präfix in dereferenziertes CX schreiben


hab da n fehler gefunden: muss das nicht
mov byte [es:cx], dl heißen??[/color]

das sollte n pixel setzen in farbwerten und initialisiert hoffe ich mal richtig mit

mov ax, 13h  
int 10h
mov ax, 0xA000
mov es, ax


so. dann stand da die formel zur berechnung der einzelnen punkte:

offset = y*320 + x

aber die funktioniert irgendwie nicht oder ich mache was falsch.... und dann will ich noch wissen wie diese farbwerte aussehen

[/code]

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 30. July 2006, 11:39 »
Zitat
hab da n fehler gefunden: muss das nicht
Code:
mov byte [es:cx], dl
heißen??


nein, dl ist sowiso ein Byte, deswegen brauchst du das nicht nochmal davor schreiben


Zitat
aber die funktioniert irgendwie nicht oder ich mache was falsch


genau so berechnet man das, voraussgesetzt 320 ist die breite

MNemo

  • Beiträge: 547
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 30. July 2006, 11:44 »
Also
Zitat
muss das nicht

mov byte [es:cx], dl  

heißen??

die angabe der größe (hier Byte) ist hier nicht notwendig, da DL eine feste größe hat



und die formel
offset = y*320 + x
ist richtig wenn du mit den koordinaten 0|0 (nicht 1|1)anfängst
MOV AX,Y
MOV BX, 320
MUL BX
ADD AX, x
MOV offset, AX
solte deshalb eigentlich klappen

/Edit: :oops: da wa ich woll ein bichsen langsam mim tippen
„Wichtig ist nicht, besser zu sein als alle anderen. Wichtig ist, besser zu sein als du gestern warst!“

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 30. July 2006, 13:57 »
gib uns am besten mal den kompletten Code,
dann können wir dir viel besser helfen

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 30. July 2006, 16:59 »
Zitat von: scales of justice
gib uns am besten mal den kompletten Code,
dann können wir dir viel besser helfen


der ist jetzt so ziemlich unrelevant weil ich erstmal die farbwerte wissen möchte, den poste ich hier später..... bisher werden alle opunkte nur schwarz gefärbt was nichts bringt...

EDIT:

Genauere Erklärung
Ich hab jetzt schon sozusagen die routinen, die die punkte zeichnen die ich brauche ... nur sehen kann ich die punkte nicht weil sie schwarz gezeichnet werden.... da ich keine farbcodes hab... also wenn ich in meinem source jetzt den code für schwarz durch de für die gewünschten farben ersetze sollte etwas wie das bild weiter oben sichtbar sein... aber es kommt ein fehler beim assemblieren... den poste ich später auch noch... aber jetzt wüsst ich gerne wo die farbcodes zu finden sind...

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #9 am: 30. July 2006, 18:02 »
@Coffee: "Deutscher Tastaturtreiber aktiviert, A20 aktiviert" komt mir bekannt vor. ^^ Nee, wieso willst du dafür den Grafikmodus? Das ist dann alles um einiges Komplizierter. Aber gut, das musst du entscheiden. Ich habe ein Tool womit man die Farbwerte herrausfinden kann und schnell welche anlegen kann. Meld dich bei mir per msn, dann zeig ich wie es geht.

bitmaster
In the Future everyone will need OS-64!!!

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 30. July 2006, 18:08 »
also ich versteh das immernoch nicht, schwarz ist doch einfach 0
wenn du eine andere Farbe willst musst du halt an die richtige Adresse einen anderen Byte-Wert schreiben

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 30. July 2006, 18:34 »
ja aber ich muss doch auch die farbwerte haben sonst schreib ich überall schwarze pixel auf den onehin schon schwarzen background

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #12 am: 30. July 2006, 18:51 »
klar musst du wissen welche Farbwerte du da hinhaben willst,
die Farbe gibst du dann ja mit dem Byte an,
das Byte musst du dann doch nur an die bestimmte Adresse irgendwo bei a0000 schreiben

wo genau ist da dein Problem?
wenn du nur 0en schreibst kommt natürlich nur schwarz raus

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« Antwort #13 am: 30. July 2006, 19:06 »
nein du hast mich glaub ich ein bisll viel missverstanden:

ich habe keine ahnung von den farbcodes. bisher habe ich ein programm, das an einige stellen schwarze pixel schrebt. nun brauche ich aber keine schwarzen, sondern farbige pixel, da ja der background schwarz ist. also sollt ihr mir die farbcodes aufzählen, doer halt mir ein text oder prog geben (was bitmaster wollte, er antwortet aber nicht) damit ich dioe 0en bei mir im source verändern kann.

mit anderen worten:

ich male in schwarz, wenn ich jetz im source 0 durch 5 oder was weiß ich ersetze wird rot daraus also die farbcodes bitte^^

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #14 am: 30. July 2006, 19:36 »
da gibts 2 Möglichkeiten:

1. du verwendest die voreingestellten
(mach einfach einen Farbverlauf von 0 - 255 dann siehste alle ;-) )

2. du änderst die Farben in der Farbpalette,
das geht relativ einfach per Ports,
und da kannst du dir dann aussuchen welche Farben du willst
(VGA unterstützt viel mehr wie 256 Farben, aber eben nur 256 gleichzeitig)

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« Antwort #15 am: 30. July 2006, 20:34 »
ja ok das wär ne möglichkeit mit dem farbverlauf aber ich müste alles abschreiben ... h) dzu bin ich zu faul h) werd mal versuchend as prog von bitmaster zu bekommen

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #16 am: 31. July 2006, 07:47 »
die einzige vernünftige Möglichkeit ist sowiso die Palette selbst zu setzen,
wollt ich auch erst nicht machen, aber im Grunde geht das ganz einfach

und dann hat man auch vernünftige, und vorallem sortierte Farben

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« Antwort #17 am: 31. July 2006, 10:00 »
das is jetzt zwar keine richtige abelle sondern nur n paar farben durcheiander  aber geht das so:




 
mov dx,03C8h
xor al,al
out dx,al
inc dx
mov cx,256*3
mov si,Palette
rep outsb


und die tablle:



Palette DB 0,0,0
DB 0,0,0,  0,0,0,  1,1,1,  1,1,1,  1,1,1,  1,1,1,  2,2,2,  2,2,2,  2,2,2,  2,2,2
DB 3,3,3,  3,3,3,  3,3,3,  3,3,3,  4,4,4,  4,4,4,  4,4,4,  4,4,4,  5,5,5,  5,5,5
DB 5,5,5,  5,5,5,  6,6,6,  6,6,6,  6,6,6,  6,6,6,  7,7,7,  7,7,7,  7,7,7,  7,7,7
DB 8,8,8,  8,8,8,  8,8,8,  8,8,8,  9,9,9,  9,9,9,  9,9,9,  9,9,9,  10,10,10,  10,10,10
DB 10,10,10,  10,10,10,  11,11,11,  11,11,11,  11,11,11,  11,11,11,  12,12,12,  12,12,12,  12,12,12,  12,12,12
DB 13,13,13,  13,13,13,  13,13,13,  13,13,13,  14,14,14,  14,14,14,  14,14,14,  14,14,14,  15,15,15,  15,15,15
DB 15,15,15,  15,15,15,  16,16,16,  16,16,16,  16,16,16,  16,16,16,  17,17,17,  17,17,17,  17,17,17,  17,17,17
DB 18,18,18,  18,18,18,  18,18,18,  18,18,18,  19,19,19,  19,19,19,  19,19,19,  19,19,19,  20,20,20,  20,20,20
DB 20,20,20,  20,20,20,  21,21,21,  21,21,21,  21,21,21,  21,21,21,  21,21,21,  22,22,22,  22,22,22,  22,22,22
DB 22,22,22,  23,23,23,  23,23,23,  23,23,23,  23,23,23,  24,24,24,  24,24,24,  24,24,24,  24,24,24,  25,25,25
DB 25,25,25,  25,25,25,  25,25,25,  26,26,26,  26,26,26,  26,26,26,  26,26,26,  27,27,27,  27,27,27,  27,27,27
DB 27,27,27,  28,28,28,  28,28,28,  28,28,28,  28,28,28,  29,29,29,  29,29,29,  29,29,29,  29,29,29,  30,30,30
DB 30,30,30,  30,30,30,  30,30,30,  31,31,31,  31,31,31,  31,31,31,  31,31,31,  32,32,32,  32,32,32,  32,32,32
DB 32,32,32,  33,33,33,  33,33,33,  33,33,33,  33,33,33,  34,34,34,  34,34,34,  34,34,34,  34,34,34,  35,35,35
DB 35,35,35,  35,35,35,  35,35,35,  36,36,36,  36,36,36,  36,36,36,  36,36,36,  37,37,37,  37,37,37,  37,37,37
DB 37,37,37,  38,38,38,  38,38,38,  38,38,38,  38,38,38,  39,39,39,  39,39,39,  39,39,39,  39,39,39,  40,40,40
DB 40,40,40,  40,40,40,  40,40,40,  41,41,41,  41,41,41,  41,41,41,  41,41,41,  42,42,42,  42,42,42,  42,42,42
DB 42,42,42,  42,42,42,  43,43,43,  43,43,43,  43,43,43,  43,43,43,  44,44,44,  44,44,44,  44,44,44,  44,44,44
DB 45,45,45,  45,45,45,  45,45,45,  45,45,45,  46,46,46,  46,46,46,  46,46,46,  46,46,46,  47,47,47,  47,47,47
DB 47,47,47,  47,47,47,  48,48,48,  48,48,48,  48,48,48,  48,48,48,  49,49,49,  49,49,49,  49,49,49,  49,49,49
DB 50,50,50,  50,50,50,  50,50,50,  50,50,50,  51,51,51,  51,51,51,  51,51,51,  51,51,51,  52,52,52,  52,52,52
DB 52,52,52,  52,52,52,  53,53,53,  53,53,53,  53,53,53,  53,53,53,  54,54,54,  54,54,54,  54,54,54,  54,54,54
DB 55,55,55,  55,55,55,  55,55,55,  55,55,55,  56,56,56,  56,56,56,  56,56,56,  56,56,56,  57,57,57,  57,57,57
DB 57,57,57,  57,57,57,  58,58,58,  58,58,58,  58,58,58,  58,58,58,  59,59,59,  59,59,59,  59,59,59,  59,59,59
DB 60,60,60,  60,60,60,  60,60,60,  60,60,60,  61,61,61,  61,61,61,  61,61,61,  61,61,61,  62,62,62,  62,62,62
DB 62,62,62,  62,62,62,  63,63,63,  63,63,63,  63,63,63,  


das sind nur zur info so ziemlich sämtliche grautöne oder die sollten es zumindest sein

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #18 am: 31. July 2006, 13:08 »
Jo, ist genau richtig. Nachdem du die Tabelle geladen hast, hat 0 die Farbe = 0,0,0 = schwarz und 255 die Farbe = 63,63,63 = weiß. Also du kannst jetzt folgendes testen: (ich gehe davon aus du bist im RM):

mov ax,0A000h
mov es,ax
xor di,di
mov al,255 ;weiß
mov cx,320*200 ;ganzen Bildschirm
rep stosb

Das sollte den ganzen Bildschirm weiß verfärben. Viel Glück. ;-)

bitmaster
In the Future everyone will need OS-64!!!

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« Antwort #19 am: 31. July 2006, 13:39 »
ok ich probiers aus

 

Einloggen