Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Focul bacterian,basicarea,mucegai...

infectie zona inghinala

Dua Lipa - Training Season

Informatii complete despre servic...
 tema circuite

Voua va merge sa va logati pe git...

Fara curent casetofon Dacia Dokker

Schimbare difuzor Golf 7
 Recomandare aparat de ras electric

Lant clinici dentare vs cabinete ...

Site-uri bune pentru cumparat Sma...

Aurora Store
 Debit centrala pe circuitul de in...

Sticle de bere

Identificare accidentare

Termopane vechi si rulouri noi sa...
 

Cum sa scriu un pixel pe monitor?

- - - - -
  • Please log in to reply
17 replies to this topic

#1
rz535

rz535

    New Member

  • Grup: Members
  • Posts: 18
  • Înscris: 22.06.2008
Buna ziua, as vrea sa stiu daca exista vreun opcode/instructiune x86 care sa aiba 2 sau 3 parametri (X, Y (abscisa si ordonata pixelului pe care vreau sa-l afisez pe ecran) si culoarea). Nu vreau sa depinda de bios pentru ca vreau sa programez propriul bios, dar ma ametesc zecile de pagini cu variante de coduri sursa pentru bios scrise in assembly cu toate rutinele alea, vreau sa incep cu ceva usor, ca si cum as vrea un "Hello World", dar cred ca e mult mai usor sa scriu un pixel decat sa scriu siruri de caractere... Poate o sa-mi ziceti ca practic vreau sa schimb definitia biosului (afisarea unui pixel nu se considera input, deci eu as vrea BOS(basic output system)) dar asta doar pentru inceput, ca sa ating hardware-ul. Nu va speriati, n-am de gand sa-mi fac placa de baza nefolositoare flash-uind biosul real.

#2
XON-XOFF

XON-XOFF

    Big Fat Member

  • Grup: Senior Members
  • Posts: 3,442
  • Înscris: 27.05.2006
nu are cum să nu depindă de bios. procesorul nu are nici o treabă cu placa video, poţi pune un procesor x86 într-un sistem cu orice fel de video, inclusiv fără video de loc.
deci pentru a aprinde pixeli se apelează diferite funcţii specifice din bios, asta aşa, la nivel de bază (parcă era Int 10h dar nu mai ştiu sigur). Programele de nivel înalt discută direct, prin intermediul driverului, cu placa video.

încă ceva: e mai simplu să scrii şiruri de caractere în mod text decît să aprinzi pixeli în mod grafic. O poţi face cu int 21h, subfuncţia nuştiucare (găseşti în documentaţie). Evident, sînt chestii vechi, care nu se mai folosesc. În momentul ăsta totul se face cu biblioteci grafice care comunică prin intermediul sistemului de operare cu driverul plăcii video.

#3
rz535

rz535

    New Member

  • Grup: Members
  • Posts: 18
  • Înscris: 22.06.2008
Ca sa programez un bios nou, nu pot face referinte la interrupturile biosului pentru ca nu exista inca, trebuie sa le programez... trebuie sa existe o metoda...

#4
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,585
  • Înscris: 30.07.2003

View PostXON-XOFF, on 13 august 2014 - 10:22, said:

poţi face cu int 21h
Era o intrerupere MS-DOS, nici atat nu-l ajuta daca nu o vrea nici pe cea din BIOS 10h.

View Postrz535, on 13 august 2014 - 10:33, said:

trebuie sa existe o metoda...
Exista, vezi specificatiile placii video, trage un ochi si prin sursele Unix-like etc. Nu e ceva curent pentru majoritatea, programarea pe care o vrei tu o practica o mana de oameni pentru ca e un sector foarte restrans pe piata.

View Postrz535, on 13 august 2014 - 10:08, said:

Nu vreau sa depinda de bios pentru ca vreau sa programez propriul bios
N-are haz. Inteleg sa nu folosesti intreruperi ale unui OS dar ale BIOS-ului... Si UEFI iti pune la dispozitie un API, nu reinventeaza lumea roata !

Edited by neagu_laurentiu, 17 August 2014 - 21:07.


#5
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,585
  • Înscris: 30.07.2003
http://www.osdever.n...VGA/vga/vga.htm

#6
LittleWho

LittleWho

    Member

  • Grup: Members
  • Posts: 288
  • Înscris: 30.11.2013
scrie si tu un OS, zic eu ca ar fii mai simplu. nu te mai chinui asa de mult cu ASM, poti sa il scrii in C/C++

dar daca totusi tu vrei , have fun.

PS ma batea gandul si pe mn sa scriu un OS , mi-a iesit pe nas, super complicat!!

Edited by LittleWho, 20 August 2014 - 21:23.


#7
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,585
  • Înscris: 30.07.2003
Pai ce vrea initiatorul e o subcomponenta dintr-un OS, nu are cum sa fie mai simplu scriind tot sistemul ! Nu ASM-ul e problema. In C/C++ ce cod scrii ? Ma refer la ce rutine apelezi ? Despre apelurile direct la hardware e discutia (indiferent de limbaj), nu poti folosi bibliotecile existente / pe care le stii (de nivel inalt, ale unui OS) intr-un mediu ce tocmai il concepi ! Dupa ce te intelegi direct cu hardware-ul poti abstractiza cum vrei si oferi altora un API, la care faci tu referire.

Edited by neagu_laurentiu, 21 August 2014 - 18:48.


#8
rz535

rz535

    New Member

  • Grup: Members
  • Posts: 18
  • Înscris: 22.06.2008

View PostXON-XOFF, on 13 august 2014 - 10:22, said:

nu are cum să nu depindă de bios. procesorul nu are nici o treabă cu placa video, poţi pune un procesor x86 într-un sistem cu orice fel de video, inclusiv fără video de loc.
deci pentru a aprinde pixeli se apelează diferite funcţii specifice din bios
Cred ca se poate... am citit pe net ca procesorul ar putea sa acceseze placa video accesand o zona de memorie comuna (daca modific o zona din memoria ram (cred) se modifica si memoria video. Si am mai aflat ca si placa video are biosul ei, vgabios, deci daca tot vreau sa  ma afund atat de tare incat sa reinventez roata trebuie sa pornesc de la biosul vga.
Am instalat kqemu si bochs pt ca aveau biosurile in folderul lor. Am incercat sa le inlocuiesc cu biosul actual de pe placa, dar n-a mers... masina virtuala ramanea neagra, nimic schimbat, nu cred ca e compatibil codul...

View Postneagu_laurentiu, on 17 august 2014 - 20:57, said:

Era o intrerupere MS-DOS, nici atat nu-l ajuta daca nu o vrea nici pe cea din BIOS 10h.
Asa-i.

#9
LL13G

LL13G

    Senior Member

  • Grup: Senior Members
  • Posts: 3,520
  • Înscris: 08.08.2006
Imi aduc aminte ca faceam candva asta in BASIC, dar aveam vreo 8 ani & acum nu mai sti deloc programare.

#10
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,225
  • Înscris: 24.02.2007
Ce faceai in BASIC era sub DOS folosind un API de nivel destul de inalt.
Initiatorul cere altceva.

#11
Mos_Ilie

Mos_Ilie

    Guru Member

  • Grup: Senior Members
  • Posts: 13,522
  • Înscris: 31.12.2006
Salut,

" vreau sa programez propriul bios, dar ma ametesc zecile de pagini cu variante de coduri sursa pentru bios scrise in assembly cu toate rutinele alea, vreau sa incep cu ceva usor, ca si cum as vrea un "Hello World", dar cred ca e mult mai usor sa scriu un pixel decat sa scriu siruri de caractere... "
Da, vrei să scrii poezii, dar nu ştii literele...

Scrierea Bios-ului implică să cunoşti în amănunt limbajul de asamblare cât şi hardware-ul echipamentului respectiv.
Oameni care se ocupă numai de treaba asta de ani de zile dau rateuri şi de aici necesitatea nenumăratelor update-uri.

Fabricanţii de plăci de bază apelează la cele câteva firme ( Award, Phoenix ) specializate în scrierea de Bios-uri.
http://en.wikipedia.org/wiki/BIOS .

În principiu aprinderea sau stingerea unui pixel se rezumă la scrierea unui octet într-o anumită locaţie din memoria Video.
Date concrete nu pot să îţi dau pentru că nu cunosc în amănunt.

Ce ştiu este că la strămoşii pc-ului ( zx 82, de exemplu ) memoria Video era o zonă rezervată din memoria de lucru, de aproximativ un sfert din ea.
Fiecare byte din octet-ul respectiv avea o funcţie referitor la strălucire, blink, culoare etc.

Edited by Mos_Ilie, 07 September 2014 - 15:50.


#12
rz535

rz535

    New Member

  • Grup: Members
  • Posts: 18
  • Înscris: 22.06.2008

View PostMos_Ilie, on 07 septembrie 2014 - 15:48, said:

În principiu aprinderea sau stingerea unui pixel se rezumă la scrierea unui octet într-o anumită locaţie din memoria Video.
Date concrete nu pot să îţi dau pentru că nu cunosc în amănunt.

Ce ştiu este că la strămoşii pc-ului ( zx 82, de exemplu ) memoria Video era o zonă rezervată din memoria de lucru, de aproximativ un sfert din ea.
Asa cred si eu, doar ca nu stim locatia de memorie... care probabil difera in functie de ce placa video avem...

View PostMos_Ilie, on 07 septembrie 2014 - 15:48, said:

Fiecare byte din octet-ul respectiv avea o funcţie referitor la strălucire, blink, culoare etc.
Cred ca ai vrut sa scrii bit, ca octetul acelasi lucru cu byte-ul

#13
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,585
  • Înscris: 30.07.2003

View Postrz535, on 10 septembrie 2014 - 09:01, said:

Asa cred si eu, doar ca nu stim locatia de memorie... care probabil difera in functie de ce placa video avem...
Ia scrie in mod text la A000:0000 (nu cred ca mai gasesti acum placi ce vor de la B800:0000) si vei avea surprize.

Edited by neagu_laurentiu, 10 September 2014 - 09:16.


#14
LittleWho

LittleWho

    Member

  • Grup: Members
  • Posts: 288
  • Înscris: 30.11.2013

View Postneagu_laurentiu, on 10 septembrie 2014 - 09:14, said:

Ia scrie in mod text la A000:0000 (nu cred ca mai gasesti acum placi ce vor de la B800:0000) si vei avea surprize.

eu stiam ca A000:0000 e pentru graphic mode, iar B800:0000 pentru text mode.

#15
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,585
  • Înscris: 30.07.2003
http://en.wikipedia....ressing_details

#16
mythcat

mythcat

    Junior Member

  • Grup: Members
  • Posts: 55
  • Înscris: 08.09.2006
http://www.x86-64.or...n/assembly.html

#17
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,585
  • Înscris: 30.07.2003

View Postmythcat, on 02 martie 2015 - 09:04, said:

Care-i ideea in raport cu cerinta initiatorului ?

#18
rrraaaddduuu

rrraaaddduuu

    New Member

  • Grup: Junior Members
  • Posts: 8
  • Înscris: 15.03.2015
b

Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate