Вывод картинки в Pascal
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
У тебя в паскале отключен математический сопроцессор 80287. Включать его в Options-Compiler-Numeric Processor-8087/80287
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Этого делать никак нельзя, Хыиуду уже сказал как делать." писал(а):"shr" на "mov" заменить
JPEG - пакованный формат, тогда как я и пасал, надо достать декодер для JPEG для Pascal. С учетом ограниченной памяти в ДОС думаю что модуля такого нет, а если и есть, то он должен использовать EMS или XMS - соответственно работать с ним будет тяжело. ТОЛЬКО непакованные форматы - например BMP. В моей программе данные рисунка загружаются из заголовка. Можно это опустить, если задать собственные значения BMPWidth и BMPHeight." писал(а):Если же повторить это же, для файла формата JPG
Разноцветные полоски как раз и есть пакованные данные.
Есть такая утила как PV для ДОСа - так она по-моему может преобразовывать JPEG в BMP, записывая его в файл. Параметры ему надо кидать через коммандную строку.
Хочу немного поправить - математический процессор здесь не причем, 80286 Instructions надо включать, там же, в опйиях компилера" писал(а):У тебя в паскале отключен математический сопроцессор 80287. Включать его в Options-Compiler-Numeric Processor-8087/80287
- Колядин Максим
- Сообщения: 297
- Зарегистрирован: 16 ноя 2006, 19:09
- Откуда: Seattle, WA
- Контактная информация:
Ура! Картинка отображается! Спасибо вам огромное!
Но всё равно у меня ещё есть несколько вопросов:
1. Где менять глубину цвета и все остальные параметры рисунка?
2. Рисунок всё равно редко делён чёрными полосками на части, как это исправить?
====================
И ещё мне бы из-за любопытства хотелось вас спросить, - а вы долго уже програмированием занимаитесь? Вы самоучки или занимались с преподавателем?
Ответьте, если не секрет, конечно.
(Под словом ВЫ я подразумеваю somewhere и Хыиуду.)
СПАСИБО!!!
Но всё равно у меня ещё есть несколько вопросов:
1. Где менять глубину цвета и все остальные параметры рисунка?
2. Рисунок всё равно редко делён чёрными полосками на части, как это исправить?
====================
И ещё мне бы из-за любопытства хотелось вас спросить, - а вы долго уже програмированием занимаитесь? Вы самоучки или занимались с преподавателем?
Ответьте, если не секрет, конечно.
(Под словом ВЫ я подразумеваю somewhere и Хыиуду.)
СПАСИБО!!!
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Если речь идет о параметрах экрана, то здесь SetVideoMode(param) задает номер видеорежима, $12 или 18 - это кажеться 640х400х16М цветов, сейчас не могу найти список с номерами видеорежимов, поэтому лучше по-порядку потыркать и найти на глаз :-)" писал(а):1. Где менять глубину цвета и все остальные параметры рисунка?
Проблема в размере банка, постараюсь исправить..." писал(а):2. Рисунок всё равно редко делён чёрными полосками на части, как это исправить?
13 лет, с января 1993 года, начинал с программирования в машинном коде на ZX Spectrum 48K. Самоучка. :-)" писал(а):И ещё мне бы из-за любопытства хотелось вас спросить, - а вы долго уже програмированием занимаитесь? Вы самоучки или занимались с преподавателем?
Неправильное определение перехода между банками видеопамяти - исправлено.
Вот новый код:
+ еще вариант:
Вот новый код:
Код: Выделить всё
Procedure VESA_PutScanLine(x,y,len,dataofs:Word);
label l1, l2, l3;
begin
asm
mov ax, y
mul Bytes_per_line
mov bx, ax
mov di, dx
mov ax, x
mov cl, Bytes_per_pixel
mov ch, 0
mul cx
add ax, bx
adc dx, di
push ax
cmp dx,curbank
jz l1
mov curbank,dx
mov ax,4f05h
xor bx,bx
int 10h
l1:
mov ax, len
mov cl, Bytes_per_pixel
mov ch, 0
mul cx
mov cx, ax
pop di
mov ax, VideoSeg
mov es, ax
mov si, dataofs
l2:
mov al, [si]
mov es:[di],al
inc si
add di, 1
jnc l3
inc curbank
mov ax,4f05h
mov dx,curbank
xor bx,bx
int 10h
l3:
loop l2
end;end;
Код: Выделить всё
l2:
movsb
or di, di
jnz l3
У меня стаж на Паскале, если вдуматься - уже 10 лет, самому аж страшно. Правда, то, что мне упорно вдалбливали в школе четыре года, я потом прочел в учебнике за час. До тех пор как зашоренный был, сложнее массивов ничего не знал, о модулях вообще понятия не имел.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
- Колядин Максим
- Сообщения: 297
- Зарегистрирован: 16 ноя 2006, 19:09
- Откуда: Seattle, WA
- Контактная информация:
Ого, как долго! Я меньше чем пол года, - только начал. Очень интересно! Вы оба очень умные уже! Somwere, большое спасибо, что уделял мне время на создание этой программы, всё теперь отлично работает! Ты очень-очень умный. Я ни одного значения слова непойму в той программе, что ты писал. Как ты всё это запомнил?
Ты мне очень помог!
Хыиуду, - тоже мне очень помог когда-то, но там вопрос был попроще. Я просил написать программу-конвертер из .jpg в .bmp, чтобы открывала JPG, а создавала BMP. Ты мне тогда ответил:
repeat
blockread(f,b,1);
blockwrite(f2,b,1);
until eof(f);
где b - переменная типа byte.
======================
Тоже мне очень помог, спасибо вам обоим!
Ты мне очень помог!
Хыиуду, - тоже мне очень помог когда-то, но там вопрос был попроще. Я просил написать программу-конвертер из .jpg в .bmp, чтобы открывала JPG, а создавала BMP. Ты мне тогда ответил:
repeat
blockread(f,b,1);
blockwrite(f2,b,1);
until eof(f);
где b - переменная типа byte.
======================
Тоже мне очень помог, спасибо вам обоим!
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Хм, логично, учитывая, что единственная паскаль-команда в этой программе - asm, обозначает начало ассемблерной вставки. Вся остальная программа написана на чистом ассемблере. Так что не вешай нос, я тоже в этой программе ни слова ни понимаюКолядин Максим писал(а): Я ни одного значения слова непойму в той программе, что ты писал. Как ты всё это запомнил?
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
- Колядин Максим
- Сообщения: 297
- Зарегистрирован: 16 ноя 2006, 19:09
- Откуда: Seattle, WA
- Контактная информация:
Молодцы, что разделили мне тему. Просто я забыл позаботиться об этом.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...