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).

  1. kalkulator - 4 podstawowe działania, wpisywanie z klawiatury (wybór działania z góry lub między podawaniem liczb)
  2. 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
  3. 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)
  4. 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
  5. 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).
  6. program wyświetlający wszystkie informacje o znalezionych urządzeniach PCI
  7. program wyświetlający wszystkie informacje o znalezionych urządzeniach USB
  8. prosty program do wysyłania treści (komend, plików) przez port szeregowy i równoległy
  9. 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.
  10. wszystkie powyższe programy umieścić w bootsektorze dyskietki
  11. wszystkie powyższe programy umieścić w bootsektorze bootowalnej płyty CD (system plików w standardzie ISO-9660)
  12. 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)
  13. 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)
  14. rozszerzenie możliwości DOSowego sterownika CON (konsola) o wyświetlanie tekstu w kodowaniu UTF, na przykład UTF-8
  15. 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)
  16. 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.
  17. dorobienie do CuteMouse obsługi myszy USB w DOSie (najlepiej z obsługą rozgałęziaczy USB)
  18. sterownik DOSowy (czy to SYS, czy TSR) do obsługi klawiatur USB (najlepiej z obsługą rozgałęziaczy USB)
  19. 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)
  20. makra typu in-line w FASMie
  21. 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)
  22. 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)
  23. 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.
  24. 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.
  25. program usuwający wszystkie sekwencje ANSI z pliku. Powinien móc operować na standardowym wejściu i wyświetlać na standardowe wyjście.
  26. 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.
  27. dodać obsługę dysków USB we FreeDOSie (najlepiej z obsługą rozgałęziaczy USB)
  28. dodać obsługę dysków SATA (jeśli trzeba) we FreeDOSie
  29. 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)
  30. odtwarzacz CD Audio dla DOSa z opcją uruchomienia go jako programu rezydentnego
  31. (Nikow) powłoka systemowa (interpreter poleceń), najlepiej zgodna z POSIX/ SUS
  32. (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).
  33. (Nikow) serwer Telnet (zdalne wykonywanie poleceń)
  34. (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ą.



Spis treści off-line (klawisz dostępu 1)
Spis treści on-line (klawisz dostępu 2)
Ułatwienia dla niepełnosprawnych (klawisz dostępu 0)