Poste uma foto ? Legal sua iniciativa de fazer um sistema operacional, vai que fica famoso *-*.
- Fórum
- OTServ
- Suporte
- Resolvidos
- Dros (meupropio Sistema Operacional)
info
Grupo: Barão
Registrado: 09/01/09
Posts: 236
Reputação: +46
Char no Tibia: Stron Kolosso

info
Grupo: Lenda
Registrado: 10/10/05
Posts: 2.2k
Reputação: +63
Char no Tibia: Master Chequer

Muito bacana seu projeto...
Espero que tudo dê certo e que vocês possam avançar sempre e sempre... :]
Boa sorte Gofaia linda :***
info
Grupo: Banidos
Registrado: 31/07/07
Posts: 533
Reputação: +3
Char no Tibia: Kninght'Danilo

Nossa, esse projeto é muito interessante...
Boa sorte, vai precisar.
Se puder postar fotos...
info
Grupo: Cavaleiro
Registrado: 03/08/05
Posts: 184
Reputação: +5

boa sorte o caralho!
que pegue fogo nesse hd que tá o projeto e perca tudo!
Editado Janeiro 22 por RaFaX
info
Grupo: Lenda
Registrado: 03/10/06
Posts: 2.6k
Reputação: +309
Gênero: Masculino
Char no Tibia: Knight Orion

Ooo muito bom (Y)
Tomara que tenha bastante sucesso
Um SO brasileiro vai ser bom, melhor que os Windows em português porém pirateados ![]()
Boa sorte Gofaia linda :***
/\ euri
Editado Janeiro 22 por Lordfire
Isso é ridículo o Windows 4 bate isso.
Na verdade antigamente os sistemas operacionais eram assim, por isso o windows ganhou fama, não precisa ficar usando o cmd.
info
Grupo: Conde
Registrado: 07/10/06
Posts: 919
Reputação: +25
Gênero: Masculino

@up rlx eh a primeira versão futuramente fica melhor, ainda por cima eh um sistema operacional caseiro D8
@tpc
boa ideia, vc tem futuro
se precisar eu ajudo na interface grafica (da pa fazer pelo paint como sprites com sombreamento parecido soh que em maior escala)
info
Grupo: Artesão
Registrado: 17/01/09
Posts: 130
Reputação: 0

eu lembro que tinha um cara que fez uns comando tipo:
@echo off = cala boca
boa sorte, mas não é open-source pq é tipo um DOS modificado ou vc nao quis fazer?
info
Grupo: Visconde
Registrado: 15/03/08
Posts: 295
Reputação: +1

Hahahaha
Agradecemos pelos elogios(a equipe toda)
E a quem nao criticou(apenas chingou)
Eu duvido fazer um programa que rode a nivel de maquina, afinal voce tem que fazer um boot em assembly, e ele precisa ter exatamente 512 kbytes. Algo parecido com este:
END_BIOS_DATA EQU 0500h
BUFFER_SEGMENT EQU 07E0h
; erros possiveis
No386 EQU '3'
ErrorLoadingRootDir EQU 'R'
OSFILENotFound EQU 'O'
ErrorLoadingFATs EQU 'F'
ErrorLoadingCluster EQU 'C'
InternalFATError EQU 'I'
bits 16 ; modo real 16 bits
org 7C00h ; estamos em 0000h:7C00h
; Cebecalho para compatibilidade com MS-DOS FAT12
; para mais informacoes, consulte o arquivo
jmp short Inicio
nop
db 'dros ' ; 8-bytes para o nome
dw 512 ; tamanho do setor em bytes
db 1 ; setores por cluster
dw 1 ; clusters reservados
db 2 ; numero de FATs
dw 224 ; entrada do diretorio principal
dw 2880 ; total de setores
db 0F0h ; formato
dw 9 ; setores por FAT
dw 18 ; setores por trilha
dw 2 ; lados
dd 0 ; setores ocultos
dd 0 ; mais setores
db 0 ; Id do driver
db 0 ; reservado
db 4 ; assinatura de boot
db 435101793 ; numero do volume serial
db 'NO NAME ' ; nome do label (11 bytes)
db 'FAT12 ' ; sistema de arquivo (8 bytes)
Inicio:
mov ax, 0x0003
int 0x10 ; Limpa a tela e assegura que estamos
; no modo 80x25
mov ah, 0x01
mov cx, 0x2000
int 0x10 ; Desabilita o cursor
xor ax,ax ; seta pilha para 0000h:7C00h
cli ; nada de interrupcoes
mov ss,ax ; mudamos o endereco da pilha para evitar
; que percamos dados no endereco 0000:0500h
mov sp,LOADED
sti ; pilha agora tem 30646 bytes disponiveis
push cs ; registrador de dados para o local correto
pop ds
mov bp,dx ; armazena o numero do driver(i.e.0=disquete,80=Hd) em BP
; O numero do driver sera passado para o
; OSFILE
; verifica se o processador eh 386+
mov ah,01110000b ; Tentando setar o IOPL & NT flags.
push ax ; (IOPL no bits 12-13 & NT no bit 14)
popf ; Se nao estao setados, nao eh um 386
pushf
pop ax
and ah,01110000b ; Verifica se IOPL & NT ainda estao setados
jz ShowError286 ; Nao pode pular sobre mais de 128 bytes usando
; um jump no 286. Entao, dois jumps
push cs ; modifica o segmento Extra
pop es
; carrega o diretorio principal - INT 13h/02h - READ SECTORS
mov byte [ErrorCode],ErrorLoadingRootDir ; Codigo de Erro
mov ax,020Eh ; 0Eh = 224 entradas * 32 bytes por entrada / 512
mov bx,END_BIOS_DATA ; ES:BX local do buffer
mov cx,0002h ; Trilha 0, Setor 2
mov dh,01h ; Lado 1, DL aindo contem o numero do driver
int 13h ; 0Eh+02h=16, entao nao teremos "track boundary"(limite de trilha)
jc ShowError286 ; Pula para a rotina se algum erro ocorreu
; procura pelo OSFILE no diretorio princpal
mov di,END_BIOS_DATA
mov dx,224 ; Numero de entradas no diretorio principal
mov byte [ErrorCode],OSFILENotFound ; Codigo de Erro
Search:
mov cx,11 ; 8 + 3 nome do arquivo + extensao
mov si,FileName ; DS:SI ponteiro para o OSFILE
rep cmpsb ; verifica se o arquivo existe
jz Found ; achou ? pula codigo
dec dx ; Nao ? ainda tem entradas validas ?
jz ShowError286 ; Nao ? Entao a ultima entrada foi checada
add di,21 ; Sim ? verifica na proxima entrada
add di,cx ; adiciona o resto dos bytes que nao condizem
jmp Search ; procura novamente
ShowError286: ; Nos temos que colocar um segundo jump aqui porque o
JMP ShowError ; 286 nao pode dar um pulo sobre 128 bytes
Found: ; Ok! arquivo encontrado
; DI eh o ponteiro para os atributos do arquivo
mov eax,[di+17] ; Pega o tamanho do arquivo em bytes (dword)
mov [KrnSize], eax ; Salva o tamanho em bytes para passar ao OSFILE
add eax,512-1 ; Calcula o numero de setores usados
shr eax,9 ; EAX <- EAX / 512
push ax ; Salva o numero de setores a serem lidos
mov ax,[di+15] ; Primeiro Cluster do OSFILE
push ax ; Salva o primeiro cluster
; Carrega a primeira FAT na memoria - usando a INT 13h/02h
mov ax,0209h ; ler 9 setores
mov bx,END_BIOS_DATA; ES:BX local do buffer
mov cx,0002h ; Trilha 0, Setor 2
mov dx,bp ; Numero do driver
xor dh,dh ; tamanho 0
int 13h
jnc FATloaded ; Se CF, tentar ler a segunda FAT
mov byte [ErrorCode],ErrorLoadingFATs ; Codigo de Erro
; Carreaga a segunda FAT na memoria - usando INT 13h/02h
; Devido a um "track boundary" vai ocorrer na segunda FAT
; nos temos que usar duas leituras.
mov ax,0208h ; Ler os 8 primeiros setores
mov cl,0Bh ; Trilha ainda eh 0, Setor 0Bh = 2 + 9
int 13h ; DL & DH ainda estao corretos
jc ShowError286 ; Nao pode ser a segunda FAT ?Erro...
mov ax,0201h ; Ultimo setor a ser lido
mov bx,END_BIOS_DATA + 512*8 ; 512 * 8 = primeiros 8 setores
mov cl,01h ; Trilha ainda eh 0, Setor 1
mov dh,01h ; Lado 1, DL ainda esta correto
int 13h
jc ShowError ; Nao pode ser a segunda FAT ?Erro...
FATloaded:
; Carrega o OSFILE usando FAT12
pop ax ; AX = Primeiro Cluster
pop cx ; CX = Numero de clusters a serem lidos
mov bx,BUFFER_SEGMENT ; ES ponteiro para o final do setor de boot ((07E0h)
mov es,bx
NextCluster:
mov byte [ErrorCode], ErrorLoadingCluster
; AX = Corrente cluster a ser lido
; ES = Segmento do buffer
; CX = Numero de clusters a serem lidos
pusha ; Talvez nao altere AX,ES,CX (so 1 byte)
add ax,31 ; Converte o Cluster para setores logicos
; 31 = SetoresReservados + SetoresOcultos
; + FATS * SetoresPorFAT + Dir - 2
xor dx,dx ; Converte setores logicos para CHS
mov bx,18 ; CL := ((AX-1) MOD 18)+1
div bx ; CH := (AX-1) DIV 36
mov ch,al ; DH := ((AX-1) DIV 18) AND 1
inc dx
mov cl,dl
and AL,1 ; DH = Lado
mov dx,bp ; Carrega numero do drive
mov dh,al ; CH = Trilha
shr ch,1 ; CL = Setor
mov ax,0201h ; Ler 1 setor usando INT 13h/02h
xor bx,bx ; ES:0000h local do buffer
int 13h
jc ShowError ; Falha na leitura do cluster
popa ; Restaura AX, ES, CX
; Pega o proximo Cluster usando FAT12
mov byte [ErrorCode], InternalFATError
mov bx,ax
shl bx,1
add bx,ax
shr bx,1 ; BX = AX * 3 / 2;
and ax,1
mov ax,[END_BIOS_DATA + BX]
jz EvenCluster ; um MOV nao altera o flag Z
shr ax,4
EvenCluster:
and ax,0000111111111111b ; Entrada da FAT so leva 12 bits
cmp ax,0000h ; Se Cluster livre
je ShowError
cmp ax,0FF7h ; Se Cluster ruim
je ShowError
mov bx,es ; Incrementa ES para o proximo
add bx,512/16 ; bloco de memoria que sera preenchido
mov es,bx
loop NextCluster ; Ate CX=0, ultimo setor lido
mov dx,bp ; Passa o numero do drive par o OSFILE
; O numero do drive sera guardado em bp
mov ax,BUFFER_SEGMENT ; Segmento
mov ds,ax
mov es,ax
mov fs,ax ; so para completar...nem precisava
mov gs,ax ; idem..
mov eax,[KrnSize] ; eax sera passado para o OSFILE com o seu
; tamanho em bytes
push eax
; os seguinte parametros estarao disponiveis ao OSFILE
; DL = numero do drive
; EAX = tamanho em bytes do OSFILE
jmp BUFFER_SEGMENT:0000h ; Bye..bye...boot
; procedure locais
ShowError:
mov cx,MessageSize
mov si,Message
.ShowNextChar
lodsb
mov ah,0Eh ; apresenta caracter usando INT 10h/0Eh
mov bx,0007h ; Pagina 0, Cor normal
int 10h
loop .ShowNextChar ; ate apresentar toda a mensagem
xor ah,ah ; espera pressionar uma tecla
int 16h
xor dx,dx ; primeiro disquete
int 19h ; forca BIOS a executar todo novamente
; dados locais
Message db 13,"Sem o dros ou falha no disquete. Codigo '"
ErrorCode db No386,"'.",10,13 ; No386 eh o primeiro erro
db 'Troque o disquete e pressione ENTER...',10,10,13
MessageSize equ $ - Message
FileName db 'dros SYS' ; deve ser 11 bytes
KrnSize dd 0
TIMES 510-($-$$) DB 0 ; posicionamento da assinatura
DW 0xAA55 ; assinatura de boot
E depois voce tem que desenvolver um kernel, algo que interplete os comandos entre o sistema operacional e o processador, e depois de tudo, voce tem que usar milhões de ponteiros e endereços, pois nao é possivel usar variaveis.
Então, voce que achou o meu sistema operacional uma porcaria, ou que desejaram que me hd pegasse fogo, eu desafio voces a fazenrem um SO.
#Gofaia
Você deve respeitar as opiniões dos outros e não crítica-los.
info
Grupo: Visconde
Registrado: 15/03/08
Posts: 295
Reputação: +1

#LeoneFM
Desejar que o hd outro pegue fogo é respeitar?
info
Grupo: Cavaleiro
Registrado: 03/08/05
Posts: 184
Reputação: +5

Não não, o hd apenas não...
Pegue fogo você também
'
info
Grupo: Artesão
Registrado: 17/01/09
Posts: 130
Reputação: 0

ashuasuhsauhas hd pega fogo.......... eu curti a idéia de DROS
mas afinal, pq nao é open-source? '.'








info
Grupo: Visconde
Registrado: 15/03/08
Posts: 295
Reputação: +1
D.R.O.S.zip Olá,
Venho aqui informar que lançamos(eu e meu primo[Canguru]) a versão 0.01 do meu sistema operacional que se chama DROS.
A ideia é fazer um sistema operacional leve e completo, com uma interface de programação amigavel , simples e completa. O sistema operacional lembra muito o MS-DOS 6.22, pois nao tem interface grafica ainda. E nem suporte a rede.
Ele é freeware, mas nao é open source.
O projeto esta meio devagar devido a problemas no meu teclado(nao fica mais de um minuto ligado) e a falta de comunicação entre membros da equipe[canguru sem internet]
O boot ainda esta em desenvolvimento, assim como o kernel. E nenhum dos dois estao prontos, ambos em desenvolvimento e com muitos erros, nada que nao se resolva... Por enquanto ele roda dentro do propio windows, como se fosse um aplicativo
Os comandos diponiveis por enquanto são:
No menu principal:
ajuda: Exibe o menu ajuda
cor: muda a cor da fonte
sair ou exit: sai do DROS
navegador: Inicia o navegador(gerenciador de pastas) do DROS
Comando do navegador:
abrir: abre uma pasta
mover: move um arquivo
renomear: muda o nome de um arquivo
jogos: atalho para a pasta jogos
ultilitarios: atalho para a pasta de ultilidades
execute: executa um arquivo
excluir: remove um arquivo ou diretorio
copiar: faz uma copia de um arquivo
exit: volta ao menu princiapal do dros
Qualquer duvida, surgestão o opinião postem aqui. E comentem, é importante para a DROS Team.
Eu retirei o link porque ele ta dando um erro critico :S
Faz o pc ficar reiniciando.... rsrsrs
E em alguns sistemas acusa ter trojan ;(
Qndo arrumar eu posto aqui
Até a proxima
Editado Janeiro 22 por Gofaia