StarePro OS

Offtop Heretic 01-01-1970 9173 44
29-11-2006 22:12
Napisałem w Assemblerze StarePro OS v.0.1a.
Sprawdźcie ;)

UWAGA: Niektóre antywirusy z analizą heurystyczną widzą go jako wirus. Po prostu widzą nieznany OS, więc myślą, że to wirus bootsectorowy. Nie przejmujcie się tym. Miałem nawet problemy ze skompilowaniem, bo mi NOD32 zabraniał, za każdym razem kasując skompilowany os :p

Tu jest obraz dyskietki.

PS. Jaki jest kod Any Key w Assemblerze? :)
30-11-2006 10:18
Jaki wymaga procesor " bo na virual PC nie mogę odpalić, wywala CPU na 100 %"
Był pisany pod jakąś konkretną architekturę ?
30-11-2006 14:19
Winimage nie chce czytać tego obrazu, a w ogóle archiwum zajmuje tylko 1,5 KB.:uhoh:
30-11-2006 14:23
może z błędem stworzyłeś obraz
30-11-2006 14:32
Paweł, a u Ciebie działa?
30-11-2006 14:42
Ja myślę, że archiwum ma tylko 1,5 KB ponieważ tyle zajmuje system. A że obraz zajmuje 1,44MB nie ma nic do rzeczy. Przecież większość tej dyskietki jest pusta.

Haker, wrzuć screeny
30-11-2006 14:52
Tak, tylko, że Winimage w ogóle nie chce odczytać tego obrazu i wywala błąd następującej treści:
30-11-2006 16:06
System zajmuje 813 bajtów ;)
Mi wsyzstko działa na VirtualPC, a WinImagem nie otworzysz, bo to system plików RAW :)
30-11-2006 16:09
Hmmm... dlaczego gdy wcisnę którykolwiek z klawiszy ESC, to system nic dalej nie robi? :D
30-11-2006 16:11
Bo to WERSJA ALFA :D
30-11-2006 16:13
A ile będzie kosztował system w pełnej wersji? Zamierzasz udostępnić pomoc online? Wsparcie techniczne? Jak często będą wychodziły łatki? Czy zamierzasz wydać system na arenie międzynarodowaej? :D:D:D
30-11-2006 16:16
Darmowe dla użytkowników StarePro ;)
30-11-2006 16:16
:bigrazz: A ja to chciałem winimagiem na dyskietkę nagrywać :D
Świetny ten OS, a ile funkcji :lol::lol::lol:
30-11-2006 16:19
Daję obraz dla Rawrite:

Kod bootsectora:
org 7C00h

start:
  mov ah, 2
  mov al, 10
  mov ch, 0
  mov cl, 2
  mov dh, 0
  mov bx, 0800h
  mov es, bx
  xor bx, bx
  int 13h

  jmp 0800h:0000h

times 510 - ($ - start) db 0

db 55h
db 0AAh


Kod kernela:
org 0000h

;ustawiamy stos
mov ax, 07C0h
mov ss, ax    ;segment stosu
mov sp, 03FEh ;wierzchołek stosu

;wybieramy tryb ekranu
xor ah, ah  ;funkcja 0
mov al, 3   ;standardowy tryb tekstowy
int 10h     ;jedziemy

;wyświetlamy komunikat
mov ax, info  ;wskaźnik do tekstu
mov bl, 2        ;na zielono
call write       ;wykonujemy procedurze

mov ax, copyright     ;wskaźnik do tekstu
mov bl, 5        ;na fioletowo
call write       ;wykonujemy procedurę

mov ax, komunikat     ;wskaźnik do tekstu
mov bl, 2        ;na zielono
call write       ;wykonujemy procedurę

;główna petla
start:
  xor ah, ah   ;takie xorowanie jest szybsze od mov ah, 0
  int 16h      ;i w AH mamy scancode, w AL kod ASCII klawisza
  cmp al, 0Bh  ;porownaj al z 1Bh (kod ASCII klawisza ESC)
  je reset     ;jeśli równe, skocz do procedury resetowania
  jmp start    ;powracamy na początek

char:
  ;procedura wyświetla znak i przesuwa kursor
  ;wejście: al: znak, bl: atrybut

  push bx     ;kładziemy BX na stos, aby na końcu procedury go przywrócić

  mov ah, 9   ;numer funkcji wyświetlającej znak w miejscu kursora
  xor bh, bh  ;numer strony ustawiamy na 0
  mov cx, 1   ;znak wyświetlimy 1 raz
  int 10h     ;do dzieła!

  ;pobierz pozycje
  mov ah, 3   ;funkcja pobierania pozycji kursora
  xor bh, bh  ;numer strony (0)
  int 10h     ;odczytaj pozycje

  ;dodaj i zapisz pozycje
  add dl, 1   ;dodajemy 1 kolumnie
  mov ah, 2   ;funkcja zapisywania
  int 10h     ;zapisz pozycje

  pop bx      ;przywróć poprzedni stan BX
ret           ;wyjdź z podprogramu

write:
  ;procedura wyświetla tekst na ekranie
  ;wejście: ax: wskaźnik do tekstu, bl: atrybut

  mov si, ax        ;musimy użyć rejestru segmentowego aby zaadresować wskaźnik
  .next:            ;początek pętli
    mov al, [cs:si] ;zapisz do al wartość aktualnego znaku
    cmp al, 0       ;porównaj aktualny znak z NULL
    je end          ;jeśli są rożne, skocz do wyjścia
    call char       ;jeśli nie, wyświetl znak
    add si, 1       ;przesuń się w prawo do następnego znaku
  jmp .next         ;skocz do początku pętli
  end:              ;tutaj skoczymy, jeśli wystąpi NULL
ret                 ;wyjdź z podprogramu

reset:
  mov bx, 40h               ;używamy BX do zapisania wartości w rejestrze segmentowym
  mov ds, bx                ;BX ładuje w DS
  mov word [ds:72h], 1234h  ;ustawiamy gorący reset
  jmp 0FFFFh:0000h          ;skaczemy do FFFF:0000

;zmienne
info: db 'StarePro OS v.0.1a',0,10,13,7
copyright:    db '(c)2006 HakerSoft, http://starepro.info/. All rights reserved.',0,10,13
komunikat:    db ', Nacisnij lewy gorny ESC, aby zrestartowac komputer, lub dowolny inny klawisz ESC, aby kontynuowac...',0
30-11-2006 16:28
Gdzieś już widziałem ten kod...
Albo jakiś podobny. Ale działał tak samo
30-11-2006 16:31
Bo każdy program w Assemblerze na pierwszy rzut oka wygląda tak samo :)
30-11-2006 16:33
Ale te komentarze.. i koniec też wyglądał tak samo - 3 zmienne. Czy to nie przypadkiem kod czegoś takiego jak Krzesło OS? Oczywiście nie mówię że sam tego nie zrobiłeś.:)
30-11-2006 16:35
Grrrr... Jesteś ZBYT BYSTRY :)
Oparty o Open Source GNU GPL "Krzesło OS" :D
Jeśli znasz Assemblera, to pomóż :)
30-11-2006 17:46
Niestety, ASMa ni w ząb. Ale za to znam trochę Delphi :D

Luk

30-11-2006 18:48
Haker, tak nie ładnie...
Znasz chociaż trochę asm?

A BASIC/Pascal?
Może byśmy coś napisali ciekawego... może ktoś inny programuje w BASICu albo Pascalu?
Ewentualnie może być C/C++, szybki kurs i do dzieła.

Sam nie mogę się jakoś zmotywować do napisania czegoś ciekawego.
Oczywiście na starusieńki komputer ;).

Ten wątek został zamknięty. Aby rozpocząć nową dyskusję, zaloguj się.