Co dalej z tą wiedzą?
Przebrnęliście przez kurs, może przebrnęliście także przez mini-kursy. Zdobyliście trochę
wiedzy. Raz na jakiś czas przydałoby się z niej skorzystać, by nie zapomnieć, o co w tym
wszystkim chodziło. Ale czasem trudno jest znaleźć pomysł na jakiś ciekawy program, który
można byłoby napisać. Dlatego poniżej przedstawiam Wam kilka propozycji, gdzie wiedza o
programowaniu w asemblerze może się przydać.
UWAGA: część z tych projektów jest dość zaawansowana, nie każdy
będzie mógł wszystko od razu napisać. To normalne. Lista poniżej przedstawia tylko moje
propozycje. Zawsze możecie pisać inne programy. Zachęcam też do przysyłania swoich ciekawych
pomysłów do dopisania do listy. Najlepiej jeśli projekt będzie ciekawy i nowy lub rzadko
spotykany (nie każdy musi mieć swój edytor tekstu).
- kalkulator - 4 podstawowe działania, wpisywanie z klawiatury (wybór działania z góry
lub między podawaniem liczb)
- kalkulator - 4 podstawowe działania, potęgowanie i pierwiastkowanie dowolnych stopni,
silnia, funkcje trygonometryczne, logarytmy, zamiana podstaw systemu liczenia
(także dla ułamków), zamiana stopni na radiany i na odwrót, wczytywanie
parametrów z klawiatury, linii poleceń lub pliku
- program wyświetlający wszystkie dostępne informacje o procesorze (najpierw typ, a
jeśli obsługuje
CPUID
, to także wszystkie informacje stamtąd,
wliczając w to informacje rozszerzone otrzymywane z EAX=8000000xh)
- program wyświetlający wszystkie informacje o znalezionych napędach
FDD,
HDD i
CD/
DVD
(na przykład model, tryb pracy) oraz ilości pamięci
RAM w komputerze
- program wyświetlający numer seryjny płyty głównej lub
BIOSu (jako że zwykle jest w
różnych miejscach, należy znaleźć najdłuższy ciąg znaków
ASCII).
- program wyświetlający wszystkie informacje o znalezionych urządzeniach
PCI
- program wyświetlający wszystkie informacje o znalezionych urządzeniach
USB
- prosty program do wysyłania treści (komend, plików) przez port szeregowy i równoległy
- rozbudowany program do wysyłania treści (komend, plików) przez port szeregowy i równoległy:
obsługa linii poleceń, wszystkich parametrów transmisji, sekwencji sterujących ANSI,
z buforem wejściowym i możliwością obsługi wielu portów na raz (poprzez zmianę
zawartości ekranu), z obsługą sieci itd.
- wszystkie powyższe programy umieścić w bootsektorze dyskietki
- wszystkie powyższe programy umieścić w bootsektorze bootowalnej płyty CD
(system plików w standardzie
ISO-9660)
- program umożliwiający przeglądanie obrazków w różnych formatach (najlepiej dla
DOSa, bo
niewiele tam takich pewnie jest, ale może być pod inny system)
- odtwarzacz plików WAV i MID (lub także innych) - także najlepiej dla
DOSa, ale może być pod
inny system. Jeśli obsługiwane będą pliki MID, dobrze byłoby mieć możliwość wpisania
własnych fontów dźwiękowych (z pliku do karty)
- rozszerzenie możliwości DOSowego
sterownika CON (konsola) o wyświetlanie tekstu w kodowaniu
UTF,
na przykład UTF-8
- biblioteka bezpośredniego dostępu do systemu plików, na przykład FAT12, FAT16, FAT32 (najlepiej
do takiego systemu plików, do którego jeszcze nie ma biblioteki)
- biblioteka graficzna umożliwiająca ustawienie dowolnego trybu graficznego, narysowanie
w nim piksela o danym kolorze i pozycji oraz odcinka i koła lub elipsy. Można dodatkowo
dorobić obsługę przekształceń i trzech wymiarów.
- dorobienie do CuteMouse
obsługi myszy USB w DOSie (najlepiej z obsługą rozgałęziaczy USB)
- sterownik DOSowy (czy to SYS, czy
TSR)
do obsługi klawiatur USB (najlepiej z obsługą rozgałęziaczy USB)
- rozszerzenie możliwości FASMa
o czytanie kodu z obiektów nie będących plikami (potoki, gniazda, standardowe wejście
i cokolwiek jeszcze, co nie obsługuje zmiany pozycji) i zapisywanie pliku wynikowego
do takich obiektów (na przykład standardowe wyjście)
- makra typu in-line w FASMie
- DOSowy program rezydentny wydający jakiś dźwięk z głośniczka przy naciskaniu klawiszy
na klawiaturze/myszy (najlepiej jeden klawisz - jeden dźwięk)
- biblioteka sieciowa dla DOSa
(najlepiej trzymająca się standardów - nazw funkcji, parametrów)
z obsługą jak największej liczby protokołów
(TCP,
UDP,
ICMP)
- program usuwający wszystkie niedrukowalne znaki z pliku (lub zastępujący je spacjami).
Powinien móc operować na standardowym wejściu i wyświetlać na standardowe wyjście.
- program usuwający wszystkie drukowalne znaki z pliku (lub zastępujący je spacjami).
Powinien móc operować na standardowym wejściu i wyświetlać na standardowe wyjście.
- program usuwający wszystkie sekwencje ANSI z pliku.
Powinien móc operować na standardowym wejściu i wyświetlać na standardowe wyjście.
- program usuwający z pliku wszystkie sekwencje UTF o długości 2 lub więcej bajtów.
Powinien móc operować na standardowym wejściu i wyświetlać na standardowe wyjście.
- dodać obsługę dysków USB we FreeDOSie
(najlepiej z obsługą rozgałęziaczy USB)
- dodać obsługę dysków SATA
(jeśli trzeba) we FreeDOSie
- sterownik DOSowy (czy to SYS, czy
TSR) do obsługi konwerterów USB na RS-232 i na odwrót (najlepiej z obsługą rozgałęziaczy USB)
- odtwarzacz CD Audio dla DOSa z opcją
uruchomienia go jako programu rezydentnego
- (Nikow) powłoka systemowa (interpreter poleceń), najlepiej zgodna z
POSIX/
SUS
- (Nikow) program obliczający różnicę dat podanych w różnych formatach (w tym koniecznie
w ISO-8601) i wyrażający ją w podanych jednostkach (od dni do sekund).
- (Nikow) serwer Telnet (zdalne wykonywanie poleceń)
- (Nikow) program do pobierania czasu z Internetu, wykorzystujący protokół
NTP
Sprawą jasną jest, że Wy jesteście autorami swoich kodów i macie do nich pełne prawa. Zachęcam Was
jednak do publikowania swoich programów na zasadach licencji
GPL
lub
LGPL (w przypadku bibliotek).
Dzięki temu Wasze prawa zostaną zachowane, a wiele innych projektów będzie mogło korzystać z
Waszych osiągnięć, dzięki czemu zostaniecie zapamiętani.
Jeśli macie zamiar udostępnić kody źródłowe swoich dzieł, byłoby też dobrze, gdyby były one
w składni jednego z darmowych kompilatorów (jak
NASM,
YASM, czy
FASM), żeby nie zmuszać
nikogo do pobierania czegokolwiek, czego mógłby używać niezgodnie z licencją.