Uczę się asemblera dzięki drukarce, a potem odpaliłem DOOMa na komputerze przemysłowym

youtube.com 1 rok temu


Nigdy nie umiałem zabrać się za naukę asemblera. Coś tam pisałem...ale było to dla mnie zupełnie niezrozumiałe. Wszystko się zmieniło w dniu, kiedy dzięki rozebraniu potężnej drukarki Konica Minolta, odkryłem nośnik danych - kartę CF, na której był zainstalowany system operacyjny pod nią. Innym czynnikiem, który miał duży wkład do tego, był zakup po bardzo okazyjnej cenie, komputerka SBC, który był wykorzystywany w przemyśle.
Dałbym sobie palca odkroić, iż mój znajomy Fisiek, postawił by na nim Linuxa i fajrancik. Ja bym pewnie postawił WinXP....ale nie tym razem!

Zabrałem się za napisanie tak zwanego programu rozruchowego. Jest to maleńki program wielkości równo 512 bajtów, który znajduje się "na samym początku" dysków z systemami. Pozwala on na automatyczne załadowanie systemu operacyjnego do pamięci...i nie tylko! Jakiś czas temu, powstawały maleńkie gry, które startowały bez systemu operacyjnego, zaraz po procedurze POST (tych białych literkach startującego komputera).
Niektóre złośliwe aplikacje też atakowały to miejsce na dysku z systemem.
Nam dziś wystarczy tylko, by nasz mały program wyświetlił dwie linijki tekstu. jeżeli nie masz takiego komputerka (a jest to bardzo prawdopodobne), to możesz obraz IMG zainstalować w wirtualnej maszynie (virtualbox) jako dyskietkę. Nie potrzeba do tego choćby instalowania jakiegoś konkretnego systemu.

;-----------KOD--------------------
mov ax, 9ch
mov ss, ax
mov sp, 4096d
mov ax, 7c0h
mov ds, ax
;----------------------------------------------
mov si, msg1 ;Teskst pierwszej linijki
call print ;wydrukuj to
call newLine ;przeskocz do nowej linijki
mov si, msg2 ;Tekst drugiej linijki
call print ;wydrukuj
jmp $
print:
mov ah, 0eh
lodsb
cmp al, 24h
je print_EOF
int 10h
jmp print
print_EOF:
ret

newLine:
mov ah, 0eh
mov al, 0Ah ;znak nowej linii
int 10h
mov al, 0Dh ;powrót karetki
int 10h
ret
;----------------------------------------------
msg1 db 'ELEKTRON BOTLOADER v1.0$'
msg2 db 'Copyright by Adam Kazior 2023$'
;----------------------------------------------
times 510-($-$$) db 0
dw 0xAA55
;------------koniec kodu------------------

Przydatne linki:
https://flatassembler.net/download.php
https://pl.wikipedia.org/wiki/Asembler_x86
https://komputery.spryciarze.pl/zobacz/jak-stworzyc-okno-w-pliku-wsadowym
https://pl.wikipedia.org/wiki/Program_rozruchowy
https://pl.wikipedia.org/wiki/EOF
https://en.wikipedia.org/wiki/INT_10H
https://pl.wikibooks.org/wiki/Asembler_x86/Instrukcje/Skokowe
(tutaj będzie link do dysku z materiałami źródłowymi)

Szczególne podziękowania po raz kolejny, dla Łukasza, z którym pracowałem, a skomponował podkład, który słyszycie w filmie.
Jak będziesz miał kiedyś chwilę, to wpadnij do nas na małą rundkę DOOMa.

Spis treści:

00:00 Wstęp
00:45 Komputerek z drukarki 2
01:32 MIKROKOMPUTER
02:57 Piszemy nietypowy program (rozruchowy)
06:55 DOOM i DOS