Не идёт пинг.
Хочу пропинговать знакомого, а пакеты 100% теряются. Фарволл он отключал, всё равно не идёт. В чём дело?
Хочу пропинговать знакомого, а пакеты 100% теряются. Фарволл он отключал, всё равно не идёт. В чём дело?
У меня всегда происходит что-нибудь непонятно почему. У меня была и остаётся до сих пор проблемы с видео, но эта проблема особенно бесит. Началось всё недавно. Когда я хочу послушать музыку, то сначала песня идёт нормально, а через некоторое время начинает трещать всё больше и больше! Когда фильмы смотрю, со звуком всё нормально (слава богу, а то я бы себе системник в окно на х.р выбросил :)).
сабж.
WINE 20040213. Пришлось включить 16-битный цвет :(. Блин, с ботами играть в CS - отстой, а сервак кидает без античита :(, Собака сутулая! Всё играется, только звук иногда хрипит. Сто лет не играл в CS!
Решил поиграть в старый добрый CS :). Поставил под WINE (самый последний, 20040213), всё вроде установил (пока 1.1), но когда загружаю hl.exe, то комп наглухо виснет. Что делать?
Значение указателей - адрес переменной. Но что это за адрес? Смещение от начала памяти или смещение в текущем сегменте?
проблема с int 13h. Хочу прочитать с флопа 2-й сектор и загрузить всё в 0000h:09000h, а потом прыгнуть туда.
Вот bootsect.asm:
org 07C00h
main:
cli
mov ax,cs
mov ds,ax
mov ss,ax
mov sp,main
sti
mov si,msg
L:
lodsb
test al,al
jz exit
mov ah,0Eh
int 10h
jmp L
mov ax,00h
mov es,ax
mov ch,00h
mov ah,02h
mov bx,09000h
mov al,01h
mov cl,02h
mov dl,00h
mov dh,00h
int 13h
mov si,msg_sl
L1:
lodsb
test al,al
jz exit
mov ah,0Eh
int 10h
jmp L1
jmp 09000h
exit:
ret
msg: db "Starting bootsect",0Dh,0Ah,0Dh,00h
msg_sl: db "Jumping",0Dh,0Ah,0Dh,00h
times 510-($-$$) db 0
db 055h, 0AAh
А вот code.asm:
code:
mov sp,code
mov si,msg_c
S:
lodsb
test al,al
jz halt
mov ah,0Eh
int 10h
jmp S
halt:
cli
hlt
msg_c: db "code loaded", 0Dh, 00h
По тому же принципу хочу из code загрузить чистый бинарник после code. Но проблема в том, что загружается bootsect, а jumping уже не пишется.
Имеется структура:
struct {
unsigned char s:10;
unsigned char ss:6;
} sss;
и два int - числа (да или short, short'a хватит, без разницы):
int a,b;
a=800;
b=10;
как приравнять sss.s к a и sss.ss к b? Имеется в виду, что нужно просто скопировать старшие биты, даже если, например, a переваливает за 1024.
Заранее спасибо.
Была тема, но я спрашивал другое. Тут такая проблема: Предположим, я хочу создать самый первый primary раздел, скажем, 124 цилиндра начиная с нуля. Нужно заметить, что это < 1024. Как посчитать begin CHS 3 байта и end 3 байта? Если больше 1024 начало и конец раздела, то тут понятно: и в том, и в другом просто будет 254/255/255, и только LBA используется. Но ведь старенькие ОСи и программы (например, загрузчик ведь использует INT13h BIOS драйвер) смотрят на эти значения. То есть как мне посчитать begin CHS 3 байта и end CHS 3 байта? Мне кто-то ответил, что на винтах > 1024 цилиндра вообще пишут 254/255/255 всегда, даже на маленьких первых разделах. Это неправда! Дык как тогда тот же fdisk считает? Я именно для СОЗДАНИЯ раздела спрашиваю, а не для получения инфы, с этим больше проблем нет.
Заранее спасибо.
Ну играет. знакомое чего-то. Кто-нибудь знает, как называется?
1.). Как fdisk определяет 1-й цилиндр раздела? Ведь в структуре partition tabel 2-м, 3-м, 4-м байтами идут begin CHS. но если стартовый цилиндр 3000, скажем, то ведь нельзя уместить такое число в одном байте!
2.). При создении раздела: C понятно, а HS откуда брать? Я уже спрашивал в development первое, так что извините, что повторяюсь.
int __current_primary_partition_table_position = 1;
int __current_extended_partition_table_position = 1;
long EBR_off[100]; // 100 ;)
long __current___known_EBRs_variable_position = 0;
int active,begin_C,begin_H,begin_S,type_of_the_partition,end_C,end_H,end_S;
int start,length;
void fo() {
if (active == 0x80) printf("yes "); else printf("no ");
printf("%d/%d/%d ",begin_C,begin_H,begin_S);
print_partition_type(type_of_the_partition);
printf("(0x%X) ",type_of_the_partition);
printf("%d/%d/%d ",end_C,end_H,end_S);
printf("%d %d\n", start, length);
}
void nfo() {
read(d,&active,1);
read(d,&begin_C,1);
read(d,&begin_H,1);
read(d,&begin_S,1);
read(d,&type_of_the_partition,1);
read(d,&end_C,1);
read(d,&end_H,1);
read(d,&end_S,1);
read(d,&start,4);
read(d,&length,4);
}
void info(long BR_offset)
{
d = open(disk, O_RDONLY);
int iiiii;
for (iiiii = 0;iiiii<512;iiiii++)
lseek(d,BR_offset,1);
if (__current___known_EBRs_variable_position == 0) {
switch (__current_primary_partition_table_position) {
case 1:
lseek(d,0x01BE,1);
nfo();
fo();
__current_primary_partition_table_position++;
break;
case 2:
lseek(d,0x01CE,1);
nfo();
fo();
if (type_of_the_partition == 0xF || type_of_the_partition == 0x5) {
__current___known_EBRs_variable_position ++;
EBR_off [__current___known_EBRs_variable_position] = start;
break;
}
__current_primary_partition_table_position++;
break;
case 3:
lseek(d,0x01DE,1);
nfo();
fo();
if (type_of_the_partition == 0xF || type_of_the_partition == 0x5) {
__current___known_EBRs_variable_position ++;
EBR_off [__current___known_EBRs_variable_position] = start;
break;
}
__current_primary_partition_table_position++;
break;
case 4:
lseek(d,0x01EE,1);
nfo();
fo();
if (type_of_the_partition == 0xF || type_of_the_partition == 0x5) {
__current___known_EBRs_variable_position ++;
EBR_off [__current___known_EBRs_variable_position] = start;
break;
}
__current_primary_partition_table_position++;
break;
}
} else {
switch (__current_extended_partition_table_position) {
case 1:
lseek(d,0x01BE,1);
nfo();
printf("\t");
fo();
__current_extended_partition_table_position++;
break;
case 2:
lseek(d,0x01CE,1);
nfo();
printf("\t");
fo();
if (type_of_the_partition == 0xF || type_of_the_partition == 0x5) {
__current___known_EBRs_variable_position ++;
EBR_off [__current___known_EBRs_variable_position] = start;
break;
} else __current___known_EBRs_variable_position --;
__current_extended_partition_table_position++;
__current_primary_partition_table_position++;
break;
}
}
close(d);
if (__current_primary_partition_table_position < 5) info(EBR_off[__current___known_EBRs_variable_position]);
}
Вопрос: почему почти на всех разделах пишутся в begin_C и end_C 254?
/dev/hda geometry: 4865/255/63
Total sectors: 78165360
active begin_CHS type end_CHS start length
yes 1/1/0 Linux(0x83) 254/63/12 63 208782
no 0/1/13 Linux(0x83) 254/255/255 208845 54894105
no 254/255/255 Linux(0x83) 254/255/255 55102950 20964825
no 254/255/255 extended DOS(0xF) 254/255/255 76067775 2088450
no 254/255/255 Linux SWAP(0x82) 254/255/255 63 2088387
no 0/0/0 empty(0x0) 0/0/0 0 0
ЗЫ: С такими переменными мне удобнее ;)
сабж :)
Пытался монтировать FAT32 раздел (logical) на /dev/hdb, но не монтируется (вообще не видит раздел, даже после cat /dev/hdb3 ;-) ничего нет). Пробовал на /dev/hda logical раздел сделать, всё нормально. ЗЫ: Тип раздела /dev/hdb2 - 0xF.
Сколько статей прочитал, даже книга есть везде всё разное!!! Помогите, кто знает всё уяснить.
1). Сигнатура в смещении 0x01FE
Где-то 0x55AA, где-то 0xAA55. Посмотрел у себя: 0x55AA (с этим теперь вроде уяснилось)
2).
struct partition {
char active; //ну тут понятно
char begin[3]; //CHS или HCS?
char type; //понятно
char end[3]; //тоже, что и begin
int start; //что значит младший
int length; //байт - первый?
};
сабж, я часть написал, но теперь мне надо почитать про структуру файловых систем. Подскажите, пожалуйста, сайты где есть описание инфа об этом (в гугле искал, но нужного мало нашел, в основном про тот же PM под дос или fdisk под DOS и Linux)
сабж
сабж.
Раньше под форточки я с glaux кодил, а в линухе его нет :-(.
Думаю переходить на атлончик; могут ли возникнуть какие - нибудь проблемы с ядром или софтВарей? Ведь многочисленные тесты подтверждают, что у атлона производительность побаще.
| ← назад | следующие → |