Nav het topic van JayTaph ben ik bezig met een bootloader te schrijven, ik wil een lijst maken van alle files en dat je dan kan kiezen welke file je wilt laden.
Ik heb de code van JayTaph een beetje gemod en nu laat hij alleen nog de files zien enzo, dat werkt goed, met input heb ik me nog niet echt bezig gehouden, dat is ook niet het probleem.
Aan gezien ik er ook wel een mooi ascii-menuutje in wil maken (soort readme zeg maar) red ik het niet in 512 bytes. Dus heb ik de 'the ultimate boot-strap loader' gebruikt als bootsector om zo mijn second stagebootloader te laden (http://www.ansanest.com/josh/boot.asm).
Maar ik heb echt een vaag probleem. Als ik dmv PrintMsg een string wil printen:
(onderstaande code is allemaal mijn second stage bootloader)
Laat hij het niets zien. Of hij laat de message van de bootsector zien (zie verder in de post), maar daar heb ik volgens mij niks mee te maken aangezien ik iets in SI zet... dus dat snap ik niet helemaal, ben zelf een beetje verder gaan kijken en heb nog wat raars ontdekt:
Dit is zeg maar de code:
Wat heb ik uitgevonden:
De bootsector zegt: "Loading Boot Image".
Als ik int 10 5keer aanroep (in mijn bootloader is dat dus) laat hij niet press
any key to reboot zien maar "Image" dit komt dus uit de bootsector.
Roep ik hem 6 keer aan dan staat er "Ima", bij 7 keer "I", en bij 8 keer helemaal niks.
Bij "> 8 AND < 17" freezed hij helemaal, hij laat keurig de puntjes zien, maar het floppy lampje blijft branden en hij gaat niet verder.
Als ik hem 17 keer aanroep dan laat hij keurig "Press any key to reboot" zien.
Bij 18 keer laat hij de eerste 2 letters niet zien, bij 19 keer eerste 4 niet etc...
Ik snap er helemaal niks meer van.....
Hopelijk snappen jullie het wel
Ik heb de code van JayTaph een beetje gemod en nu laat hij alleen nog de files zien enzo, dat werkt goed, met input heb ik me nog niet echt bezig gehouden, dat is ook niet het probleem.
Aan gezien ik er ook wel een mooi ascii-menuutje in wil maken (soort readme zeg maar) red ik het niet in 512 bytes. Dus heb ik de 'the ultimate boot-strap loader' gebruikt als bootsector om zo mijn second stagebootloader te laden (http://www.ansanest.com/josh/boot.asm).
Maar ik heb echt een vaag probleem. Als ik dmv PrintMsg een string wil printen:
(onderstaande code is allemaal mijn second stage bootloader)
GAS:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| mov si, msgTest call PrintMsg PrintMsg: cld lodsb ; Laad uit DS:SI naar AL cmp al,0 jz End_Of_String ; Is het een 0, dan einde dec cx ; Maximaal aantal karakters geprint? jz End_Of_String ;printchar mov ah,0x0E ; BIOS functie 15 mov bx,0x000 ; Print op page 0 in kleur 7 int 0x10 jmp PrintMsg ; En volgende character End_Of_String: ret |
Laat hij het niets zien. Of hij laat de message van de bootsector zien (zie verder in de post), maar daar heb ik volgens mij niks mee te maken aangezien ik iets in SI zet... dus dat snap ik niet helemaal, ben zelf een beetje verder gaan kijken en heb nog wat raars ontdekt:
Dit is zeg maar de code:
GAS:
1
2
3
4
5
6
7
8
9
10
11
12
| [BITS 16] mov al, '.' ; puntje in het al register, die gaat hij dan printen mov ah,0x0E ; BIOS functie 15 mov bx,0x000 ; Print op page 0 in kleur 7 int 0x10 ; print dat puntje int 0x10 int 0x10 int 0x10 [ect] [lees alle bestanden op het floppy en laat deze zien] [stop een message ("press any key to reboot") in SI en call printMsg, w8 op key, reboot] |
Wat heb ik uitgevonden:
De bootsector zegt: "Loading Boot Image".
Als ik int 10 5keer aanroep (in mijn bootloader is dat dus) laat hij niet press
any key to reboot zien maar "Image" dit komt dus uit de bootsector.
Roep ik hem 6 keer aan dan staat er "Ima", bij 7 keer "I", en bij 8 keer helemaal niks.
Bij "> 8 AND < 17" freezed hij helemaal, hij laat keurig de puntjes zien, maar het floppy lampje blijft branden en hij gaat niet verder.
Als ik hem 17 keer aanroep dan laat hij keurig "Press any key to reboot" zien.
Bij 18 keer laat hij de eerste 2 letters niet zien, bij 19 keer eerste 4 niet etc...
Ik snap er helemaal niks meer van.....