Hoeveel sectoren kan je inladen met 13h?

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
In assembly probeer ik na het opstarten van mijn pc 515 sectors van een diskette in te lezen mbv de 13h interupt.

Kan dit? staan de eerste 515 gewoon naast één? ik heb mijn programma getest met 5 sectoren en dan werkt het wel.
Probleem is dat het enorm traag gaat en ik mijn computer gewoon terug af zet voor dat die het einde bereikt heeft, dit ook omdat ik niet weet dat hij er gewoon doorkomt.
Waarom gaat een 13h interupt trager dan een echt geschreven driver, laadde men vroeger in het dos tijdperk ook niet op deze manier programma's in?

Groeten.

Acties:
  • 0 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 19:07

Reptile209

- gers -

Als ik naar de Wiki van int 13h kijk (Wikipedia: INT 13) dan moet je in theorie op deze manier 8 GB in kunnen lezen.

Weet je zeker dat de disk goed is (kan me eindeloze leesacties herinneren als een disk kapot begon te gaan)? Zorg dat je iets van een voortgangsindicator hebt (bijvoorbeeld een punt op het scherm afdrukken bij iedere gelezen sector, of per 10), dan weet je tenminste waar je bent. Post anders eens wat relevante (!) code. En kijk eens in [tutorial] how to write your own OS naar voorbeelden van anderen.

[ Voor 16% gewijzigd door Reptile209 op 11-08-2009 12:41 ]

Zo scherp als een voetbal!


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Reptile209 schreef op dinsdag 11 augustus 2009 @ 12:40:
Als ik naar de Wiki van int 13h kijk (Wikipedia: INT 13) dan moet je in theorie op deze manier 8 GB in kunnen lezen.
Je kunt max 8GB aan data adresseren ja. Maar niet in 1 read call. Je kunt maximaal 255 sectoren inlezen, en bovendien moet je met bepaalde biosen binnen hetzelfde segment blijven, dus dat betekent max 64k = 128 sectoren.

@Bert F: ik zou een emulator gebruiken zoals Bochs, zodat je kunt debuggen.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor de reacties.

Ik gebruik JPC de emulator en probeer nu een stukje code te maken voor een punt die de vooruitgang aan geeft echter dit lukt me niet zo goed, probleem is dat ik de cursor moet kunnen verplaatsen en dat wil maar niet lukken.
zet mij in tekstmode:
code:
1
2
mov ah, 01h
int 10h

verplaats cusor naar opgegeven positie:
code:
1
2
3
4
5
6
mov ah,02h ;              AH = 02h
mov bh,1h;                BH = Page,
mov dh,100   ;             DH = Row,
 ; mov dl,cl  ;              DL = Column
mov dl,10
int 10h


print daar nu een karakter:

code:
1
2
3
4
5
6
mov ah,0ah
mov al,"."
mov bh,0h
mov bl,0x11
mov cx,0x01
int 10h



Ik haalde mijn informatie over de interupts in wikipedia. probleem is dat ik mijn cursor ergens krijg en dat die daar altijd staat ook al verander ik de coördinaten in de code en herprobeer ik.

Aan wat kan dat liggen? Groeten.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Je kunt beter de beroemde Ralph Brown's interrupt list gebruiken, die is veel uitgebreider.

Om de cursorpositie in te stellen moet je beginnen te tellen bij 0 (voor zowel pagina, rij als kolom). Jij zet nu de cursor op pagina 1, rij 100. Het standaard tekstscherm heeft sowieso maar 25 rijen (en 80 kolommen)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt dat werkt wel.
Pagina: 1