KupiVip - эксклюзивные бренды по клубным картам
реклама
реклама

News

Hi, All!

Векторную гипертекстовую национально и расово верную ОС Пруликс я слегка
подзабросил. Последнее телодвижение было в начале 2006 года, когда я
начал реализовывать поддержку FAT-32 и даже сделал ее чуть больше, чем
наполовину. А с загрузкой с флешек не получилось, так как все мои
рабочие машины аппаратно не поддерживают загрузку с USB и тестировать
оказалось негде. Но файловая система на флешке оказалась тем же старым
добрым FAT'ом

Правда, примерно с неделю назад я экспериментировал со старой машиной
133 МГц - 16 М на предмет извлечь из нее немного фана и лулзов и для
проверки работспособности грузился с bootable Proolix CD (успешно). Но
окончилось все тем, что я поставил на эту машину старую версию FreeBSD,
а именно 4.9. Душе- и байтораздирающие подробности здесь:
http://prool.livejournal.com/1083127.html Кстати, программировать я не
бросил, сейчас делаю онлайновую игру класса MUD:
http://subscribe.ru/archive/inet.thoughts.newsofprool/200807/02232743.html

Это сообщение проклято, первые две попытки отправить его в дискуссионный
лист не прошли, пришлось в качестве теста посылать бут-сектор.

     ответов: 0   2008-07-11 11:31:51 (#762118)

Бут-сектор

Длина бут-сектора 512 байт!

Ура!

     ответов: 0   2008-07-11 11:21:26 (#762116)

boot sector

PAGE ,79
jumps

; FDD Boot sector ver. 0.0.4.0 20-Apr-96 from Proolix operating system
; Copyright (C) Serge Pustovoitoff, 1993-1996
; При отладке бута учитывались многочисленные полезные замечания, которые
; сделал Алекс Семеняка и Юрий Белотицкий (bela@p*****.ua)

; History in stack order
; 0.0.4.0 20-Apr-96 загружаемый файл /boot может быть сжат pklite'ом
; 0.0.3.1 24-Mar-96 replace chr1 '.' -> char1 176
; 0.0.3.1 12-Mar-96 PSPSeg = 3050h
; 0.0.3.0 25-Feb-96 PSPSeg = 1050h
; 0.0.3.0 10-Jan-96 - загружаем не /kernel, а /boot (см. файл history,
; запись 0.0.1.4 10-Jan-96
; 0.0.2.3 16-Sep-95
; 0.0.2.2 15-Sep-95 - разветвление на FDD и HDD бут сектора
; 0.0.2.1 25-Feb-95 - до этого история не велась... (см. также общую историю
; в файле kernel/history.doc

; Смещение, связанное с тем, что во время компиляции
; адресом начала является 100h, а во время
; выполнения 7c00h
off equ 7c00h-100h

Drive equ 0 ; Загрузочный диск A: (FDD 0)

PSPSeg equ 3050h ; Сегментный адрес, куда будет
; загружен /boot (точнее, его PSP)

FATaddr equ Buff

; Макрос. Вывод одного символа через ROM BIOS.
chr1 macro sym
; Not worked in graph mode (registr bl - background color!)
; NO SAVE REGS !!!
mov ax,0e00h+sym
int 10h
endm chr1

sayr macro str
; NO SAVE REGS !!!

; Макрокоманда, аналогичная макрокоманде say. Только say использует
функцию 9h
; ДОС, а sayr - функцию ROM BIOS (функция 0eh прерывания 10h)
; В графических режимах не работает

mov si,offset str
call sayr_proc
endm sayr

locals

.model tiny
.code
org 100h

Begin: jmp short start
; Таблица параметров диска
db 90h ; NOP
; '12345678'
OEM db 'Proolix '
SectSiz dw 512
ClustSiz db 2
ResSecs dw 1
FatCnt db 2
RootSiz dw 112
TotSecs dw 720
Media db 0fdh
FatSize dw 2
TrkSecs dw 9
HeadCnt dw 2
HidnSec dd 0
BigNo dd 0 ; Big total no of sectors
db 0 ; Head No
db 0h ; Physical drive no
db 29h ; Extended boot signature
;dd 1 ; Volume serial no
;FATaddr label word ; !
dw 0 ; ! internal vars
StartClu dw 0 ; !
Lbl db 'BOOT ' ; Volume label
db 'FAT12 ' ; File system ID
RootSize dw ' '; use 2 last bytes of File system id
OldVec dw 2 dup (0)

start:
; push CS
; pop DS
; sayr OEM+off
; Значения регистров после загрузки boot-сектора
; CS:IP = 0:7C00 SS=30 SP=F6 ES=0

; 0:0 - 0:200 - таблица прерываний
; Стек: c 30:F6 (0:3F6) растет к 0 (0:200-0:400 - стек)
; ROM BIOS area 0:400-0:500

; cli
; Модификация diskette param table (взято из бута MSDOS 6.0)

; нужен ли в нижеследующей команде префикс ES: ?
lds si,dword ptr ES:[78h] ; DS:si - vector diskette param table
; diskette param tble
; Bytes:
; 0 - bit 0-3 - SRT (step rate time), 4-7 head unload time
; 1 - bit 0: 1 if DMA, 2-7 head load time
; 2 - motor wait (in 55 ms)
; 3 - sec size (0 - 128, 1 - 256, 2 - 512, 3 - 1024)
; 4 - EOT (finish sector on track)
; 5 - interval length for ReadWrite
; 6 - DTL - Data Transfer Length (maximal)
; 7 - interval length for formatting
; 8 - Filler
; 9 - head settle time (in ms)
; a - motor start time (in 1/8 s)
mov byte ptr [si+9],0Fh ; head settle := f
mov cx,TrkSecs+off ; TrkSecs
mov [si+6],cl ; Data Transfer Length
; sti
mov dl,Drive
xor ax,ax
int 13h ; Disk dl=drive ah=func 00h
; reset disk, al=return status
jc l_err

push CS
pop ES

push CS
pop DS

; Вычисления
mov al,byte ptr FatCnt+off
cbw
mov cx,word ptr FatSize+off
mul cx ; ax*cx -> dx:ax
add ax,word ptr ResSecs+off
; ax - Root Beginning Sector
mov word ptr StartClu+off,ax
PUSH ax

mov ax,word ptr RootSiz+off
mov cx,32
mul cx

mov cx,word ptr SectSiz+off
div cx ; dx:ax / cx -> ax; mod -> dx
or dx,dx ; Если остаток ненулевой, то прибавляем еще один
jz l_ll ; сектор (последний неполный сектор root'а)
inc ax
l_ll:
; ax - Root Size in Sectors
add word ptr StartClu+off,ax
mov cx,ax
mov word ptr RootSize+off,ax
POP ax ; ax - Root Bg Sec
@loop: ; Загрузка корневого каталога посекторно и посекторный поиск в нем
; имени ядра
push cx

push ax
mov bx,offset Buff+off
mov dl,Drive
push ax
call SecRead
jc l_err
pop ax

; push ax
; chr1 'R'
; pop ax

mov cx,16 ; root entryes in 1 sector
@l: push cx

mov cx,11
mov di,bx
mov si,offset Lbl+off
rep cmpsb
je l_found

pop cx
add bx,32
loop @@l

pop ax
inc ax

pop cx
loop @@loop
; end of load root dir
; HЕ HАШЛИ ЯДРА

l_err:
; chr1 'E'
call ohw
xor ah,ah
int 16h
int 19h
;Vis: jmp short Vis

sayr_proc proc ; Ver 0.0.1 9-Dec-93
; Процедура вывода строки при помощи функций BIOS
; Вход: DS:SI - ASCIIZ строка.
; NO REG SAVED !!!
; В графических режимах не работает
; cld
sayr_l1:
lodsb
or al,al
jz sayr_ret
mov ah,0eh
int 10h
jmp short sayr_l1
sayr_ret:
ret
sayr_proc endp

l_found: ; HАШЛИ !
pop cx
; Found kernel
; bx - kernel dir record
; word ptr [bx+1ah] - 1st cluster
mov ax,word ptr [bx+1ah] ; ax - 1st cluster

; Загрузка FAT в ОЗУ
PUSH ax ; save ax with 1st clu no

mov ax,word ptr ResSecs+off
mov bx,offset FATaddr+off
mov cx,word ptr FatSize+off

; Загрузка ядра покластерно (по цепочке из FATа)
; Загрузка FAT
@l: mov dl,Drive
push ax
call SecRead
jc l_err
pop ax
add bx,512
inc ax ; Next sector!

; push ax
; chr1 'F'
; pop ax

loop @@l

mov al,byte ptr ClustSiz+off
cbw
mov dx,word ptr SectSiz+off
mul dx
mov cx,ax ; Cluster Size in Bytes

POP ax ; restore ax (1st clu no)
mov bx,PSPSeg
mov ES,bx
mov bx,100h
l2: mov dl,Drive
call CluRead
push ax
chr1 176
pop ax
add bx,cx
call NextClu ; set ax
jnc l2

; EXEC! Запуск ядра
; mov ax,PSPSeg
; mov DS,ax
; mov ES,ax
; cli
; mov SS,ax
; mov SP,0fffeh
; sti

; sayr OEM+off

; *(int far *)MK_FP(PSP,2)=0x9FFF; /* для LZEXE */
mov ax,PSPSeg
mov DS,ax
cli
mov SS,ax
mov SP,0fffeh
sti
; mov ES,ax
; mov word ptr ES:[2],9FFFh

db 0eah ; JMP PSPSeg:100
dw 100h,PSPSeg

NextClu proc ; Input: ax - cluster no
; Output: ax - next cluster from FAT
; cf=1 if EOF
; Use global var:
; FATaddr dw 0
; REGS SAVED !

push bx
push cx
push dx
push si
push di

mov di,ax
mov bx,3
mul bx ; dx:ax := ax * bx
shr ax,1 ; ax := ax /2
; ax - addr in FAT
mov si,ax
mov bx,offset FATaddr+off
mov ax,word ptr [bx+si]
test di,1
jz @@1
mov cl,4
shr ax,cl
jmp @@2
@1: and ax,0fffh
@2:
; cmp ax,0fffh
; je @@cf
; cmp ax,0ff7h
; je @@cf
cmp ax,word ptr TotSecs+off
ja @@cf

clc
@ret:
pop di
pop si
pop dx
pop cx
pop bx

ret
@cf: stc
jmp @@ret
NextClu endp

SecRead proc ; ver 0.0.1 3-Nov-94 (for FDD boot)

; Read absolute sectors
; Input: ax - abs sec number
; dl - drive (for int 13h Fn=2)
; ES:bx - buffer
; DS - data segment reg

; Use global variables:
; word ptr HeadCnt+off
; word ptr TrkSecs+off

; Output: cf=1 if error
; NO ALL REGS SAVED !!!

; push ax
push bx
push cx
push dx
push si
push di

mov si,bx ; save bx & dx
mov di,dx

PUSH ax

mov ax,word ptr HeadCnt+off
mov cx,word ptr TrkSecs+off
mul cx ; dx:ax := HeadCnt * TrkSecs
mov bx,ax ; bx = HeadCnt * TrkSecs

POP ax
xor dx,dx ; dx:ax - Abs Sec No
div bx ; ax=Track=AbsSec/(HeadCnt*TrkSecs); dx - mod (Sec
on Cyl)

mov bx,ax ; bx - track no

mov ax,dx
xor dx,dx ; dx:ax - module (Sec on Cyl)
div cx ; Head=[dx:ax]/TrkSecs;ax - Head; mod (dx) - Sec on
Head-1
inc dx ; dx - Sec on Head

mov cx,5
l_loop:
push cx

mov cl,dl ; sector
mov ch,bl ; track ; Warning: track < 255 !!!
mov bx,si ; Restore bx - offset for buff
mov dx,di ; Restore dl - drive no
mov dh,al ; head
mov ax,0201h; Fn=02, Read 1 sector
int 13h
jnc l_break

pop cx
loop l_loop
jmp short l_ret
l_break:
pop cx
l_ret:
pop di
pop si
pop dx
pop cx
pop bx
; pop ax

ret
SecRead endp

CluRead proc ; Read cluster
; Input: ax - cluster number
; dl - drive (for int 13h Fn=2)
; ES:bx - buffer
; DS - data segment reg

; Use global variables:
; StartClu dw 0 ; Number sector of 1st
cluster
; ClustSiz db 2
; SectSiz dw

; ALL REGS SAVED !!!

push ax
push bx
push cx

; Sector = StartClu + ((Clu-2) * ClustSiz)
PUSH bx
PUSH dx
dec ax ; ax:=ax-2
dec ax ;
mov bx,ax
mov al,byte ptr ClustSiz+off
cbw
mov cx,ax
mul bx
add ax,word ptr StartClu+off
; ax - sector
POP dx ; Restore dl
POP bx
; cx - ClustSiz
@l:
push ax
call SecRead
jc l_err
pop ax
add bx,word ptr SectSiz+off
inc ax
loop @@l

pop cx
pop bx
pop ax

ret
CluRead endp

ohw proc

; Вывод слова в HEX-виде. Вход: слово в ax.
; Все регистры сохраняются.
; Вызывает подпрограмму ohb

push ax ; Сохр. ради al.
mov al,ah
call ohb
pop ax ; Восст. al.
call ohb
ret
ohw endp
ohb proc

; Procedure output hex byte Ver 0.1.1 6 Dec 93 via BIOS
; Input: AL - byte
; All regs. reserved ;)

; Not worked in graph mode. bl - bg color !!!

push ax
push cx
push dx

mov dl,al
mov cl,4
shr al,cl
call ohb1

mov al,dl
and al,0fh
call ohb1

pop dx
pop cx
pop ax

ret

ohb endp

ohb1 proc ; Regs not saved !!!
push ax

cmp al,9
ja @@_1 ; al > 9
; al <= 9
add al,'0'
jmp @@_out

@_1: add al,'A'-10
@_out: mov ah,0eh
int 10h

pop ax

ret
ohb1 endp

Buff label byte
end Begin

     ответов: 0   2008-07-11 11:21:14 (#762115)

И снова о компьютерной безопасности

Если Вы хотите поработать с важным для себя сайтом (онлайн-банкингом
или важным веб-мейл ящиком), то Ваша машина должна быть чистой,
то есть, запущен должен быть только один браузер и всё, больше никаких
программ (за исключением антивирусного монитора и фаерволла,
естественно, которые должны быть запущены всегда и запускаться
автоматически при включении компьютера).
Лучше всего перед началом важной работы перезагрузиться (и после
окончания работы тоже!)

В браузере должно быть открыто только одно окно - с тем сайтом, который
Вам нужен. На этот сайт надо попадать сразу, например, по закладке.
При старте браузер должен стартовать с пустой страницы (about:blank)
Поработали, обязательно закройте сессию аутентификации (то есть, нажмите
на сайте "Выход" или "Logout"), закройте браузер и перезагрузитесь.
А еще хорошо, чтобы Ваш браузер вообще не хранил куки (cookies), а
удалял их при выходе. Чем могут грозить незакрытые сессии и хранящиеся
куки: случайно открытый в другом окне вредоносный сайт или троянская
программа могут методом кросс-скриптинга (XSS) сделать от Вашего имени
некоторые действия на вашем аккаунте (например, поменять пароль или
снять деньги со счета).

Да и вообще, нажимать на любую ссылку в браузере
надо только в том случае, если Вы уверены, что это действительно Вам надо.

Жизнь вообще очень жестокая штука, и Интернет в этом смысле не исключение.

И убедиться в этом можно, потеряв важные и ценные данные или деньги,
просто зайдя на сайт с эротикой.

Искренне Ваш,

Сергей "Пруль" Пустовойтов, старший глюкмастер.
http://www.prool.kharkov.org

     ответов: 0   2007-09-21 10:18:18 (#692227)

Proolix and USB

Решил опять взяться за свою ОС Proolix, а именно реализовать загрузку ОС
с USB flash drive. Кто может помочь ссылками на материалы по загрузке с
USB, ссылками на API, документацию и т.п.?

Кроме того, для обсуждения проблем этой ОС только что создал
ЖЖ_сообщество proolix:

http://community.livejournal.com/proolix/

     ответов: 0   2006-11-08 12:15:52 (#607768)

Proolix и Google

Google недавно реализовал свой очередной проект: поиск по открытому
исходному коду. Там и код Пруликса тоже есть ;)

     ответов: 0   2006-10-23 13:52:00 (#603148)

Новости

Рассылка близкой тематики (об операционных системах) "ОСознанная
информация" (http://subscribe.ru/member/catalog/comp.soft.othos.osinfo)
закрыта по причине длительного невыхода

     ответов: 0   2006-08-22 14:52:23 (#582857)

Re: Чего нового

Сильно!

-----Original MessageFrom: Serge Pustovoitoff [mailto:pro***@i*****.ua]
Sent: Tuesday, April 04, 2006 12:51 AM
To: Матовых Виктор Дмитриевич
Subject: Чего нового

А ничего ;)

     ответов: 0   2006-04-04 07:18:13 (#533777)

Чего нового

А ничего ;)

     ответов: 0   2006-04-03 17:46:49 (#533645)

Proolix news

Зарелизил на сайте http://prool.kharkov.org/proolix очередную версию
Пруликса, от 14 февраля. Теперь работа с FAT-32 работает еще правильнее
(пока read only)

На очереди: возможность и писать тоже, поддержка длинных имен LFN и
работа Пруликса в Windows XP (если получится). В Windows 98 ядро
Пруликса можно запустить в ДОС-сессии и отлаживать, а в XP система
ругается по поводу прямого доступа к винту. Если обойти защиту не
удастся, нужно будет сделать для отладочного режима простенькую затычку-HAL.

Еще надо подумать о возможности загрузки Пруликса из ASP Loader'а. И по
сети. И с флеш-брелка

Кстати, архитектура Proolix - это "супермонолитное" ядро, в ядро входят
не только все библиотеки, но даже простой командный интерпертатор и
несколько утилит (например, ls и cat, только они называются l и Cat,
чтобы не путаться с внешними ls и cat). А было время, когда в ядре был
свой эмулятор MSDOS, но я его уже вынес во внешнюю утилиту mse

     ответов: 0   2006-02-15 14:45:01 (#515638)

Proolix news: FAT-32

Используя метод тыка и некоторую нагугленную информацию вчерне написал
поддержку FAT-32. По крайней мере ядро Пруликса только что прочитало
корневой каталог моего FAT-32-винта (а корневой каталог в FAT-32 - это
не область диска как в FAT-12/16, а обычный файл, представляющий собой
цепочку кластеров)

Зарелизил ЭТО здесь:

http://prool.kharkov.org/proolix

http://www.users.itl.net.ua/~prool/proolix.html

     ответов: 0   2006-02-06 19:44:17 (#511645)

FAT-32

4 февраля после длительного перерыва опять начал ковырять Пруликс
(Proolix-d). В нем, как известно, уже реализована поддержка файловых
систем FAT-12 и FAT-16, а я решил методом тыка реализовать и FAT-32.
Пока не получилось, ищу в Инете доку, разбираюсь, уже узнал много нового
;) Кроме того, код ядра разросся и уже почти не влазит в модель памяти
small (64К код и 64К данные). Надо выносить из ядра все то, что в нем
нафиг не нужно.

И последнее: Использование операционной системы Proolix на территории
США запрещено (не в смысле запрещено какой-то организацией, а просто не
рекомендуется, так как в Proolix-d использована поддержка FAT).
Proolix-l использовать можно ;)

Prool

  
Prool

Prool     В друзья

В друзьях у 0, его друзья 0

Избранное 0 Подписки 8
Рассылки 0 Группы 0

  ответов: 0   2006-02-05 13:39:59 (#511183)

Re: Патент Microsoft на FAT получил вторую жизнь

Ну и свинство! Выходит, FAT на мыло?

     ответов: 3   2006-01-23 18:08:37 (#503065)


Курсы английского языка   Курсы английского языка
Начните обучение в марте и мы подарим Вам 3 весенних месяца! Бесплатный демо-урок!

 
Добавь красок !   Добавь красок !
Выделись в потоке

 
  "Видеопрокат" on-line!
Смотри кино, не трать время на закачку!

 
Хотите открыть свое дело?   Хотите открыть свое дело?
Подготовка, защита бизнес-плана, основы бухучёта для менеджеров, налоги для малого бизнеса

 
реклама

Популярные авторы

1001smile1001smile

1001smile1001smile     В друзья

В друзьях у 13, его друзья 1

Избранное 0 Подписки 39
Рассылки 1 Группы 1

Автор рассылок:
Веселые и необычные подарки