Еще один раритет, которым я занялся - меня потянуло на изучение 8088. Первый день был потрачен на настройку эмулятора PCem. Стянул с github сборку образов ROM, настраивается модель с полпинка, но получается, что у меня есть комп с двумя дисководами, но без HDD. С этим и началось безудержное веселье. Заморочка в том, что в настройках HDD просто нет.
после нескольких запросов к Google и чтения топиков разных форумов нашел, что заморочка в образе ROM, бросил в корень папки roms файл ide_xt.bin. Только вот HDD не виден.
Перекинул на образ диска файлы xtidecfg.com и ide_xt.bin и настроил BIOS, параметры HDD можно найти на скриншоте.
А потом часть времени ушла на поиски рабочего FDISK. Нашел на msdos 3.3. Создал раздел диска, отформатировал, теперь загрузка работает.
Жаль, выбрал маленький размер HDD - 2Mb, остановился на двух программах - Volkov Commander и Tasm 2.0. Все это время я подумывал переключиться на DOS Box 0.74.3 с отладчиком, но позже выяснилось, что он не всегда поможет.
Заодно обзавелся массой документации и софта, стал читать. Первая программа:
DOSSEG
.MODEL SMALL
.STACK 100h
.CODE
start:
;video TGA 320x20x16c
mov ax,9
int 10h
mov ax,0b800h
mov es,ax
xor di,di
lp:
mov ax,di
xor al,ah
stosb
or di,di
jne lp
xor ah,ah
int 16h
mov ax,3
int 10h
mov ah,4ch
int 21h
END start
компиляция
c:\tasm\tasm.exe work.asm
c:\tasm\tlink.exe work
А потом ничего не получилось, даже рисование вертикальных линий не работает. Стал читать найденный файл Graphics Mode - Tandy 1000 Technical Reference Manual.pdf:
А экран организован не так просто. несколько проб, и я получаю нужный узор:
DOSSEG
.MODEL SMALL
.STACK 100h
.CODE
start:
;video TGA 320x200x16c
mov ax,9
int 10h
mov ax,0b800h
mov es,ax
xor di,di
mov cx,159
lp:
mov al,022h
mov es:[di+02000h],al;1 row even
mov al,044h
mov es:[di+04000h],al;2 row
mov al,055h
mov es:[di+06000h],al;4
mov al,033h
mov es:[di+160],al
mov al,0ffh
stosb;0 row
loop lp
xor ah,ah
int 16h
mov ax,3
int 10h
mov ah,4ch
int 21h
END start
От радости взялся за код построения точки, вышло неоптимизированное:
DOSSEG
.MODEL SMALL
.STACK 100h
.CODE
start:
;video TGA 320x200x16c
mov ax,9
int 10h
mov ax,0b800h
mov es,ax
xor cx,cx
lp:
;plot
;Y
mov ax,cx
and al,3
mov ah,al
xor al,al
add ax,ax;1
add ax,ax;2
add ax,ax;3
add ax,ax;4
add ax,ax;5
mov di,ax
;X
mov ax,cx
mov bl,0f0h
shr ax,1
jnc nobi
mov bl,0fh
nobi:
add di,ax
mov ax,cx
shr ax,1
shr ax,1
mov si,160
mul si
add di,ax
mov al,bl
stosb
inc cx
cmp cx,200
jne lp
xor ah,ah
int 16h
mov ax,3
int 10h
mov ah,4ch
int 21h
END start
День закончился, оставил исследования но следующий. Утро началось с компиляции кода в .COM-файл:
.MODEL TINY
.CODE
ORG 100h
start:
здесь код
END start
Компиляция:
c:\tasm\tasm.exe /m work.asm
c:\tasm\tlink.exe /t/3/x work.obj
del work.obj
Вечером в голову пришла мысль об старом эффекте, позже я решил использовать другой графический режим. Понимая, что интро пойдет не как задумал, я решил вернуться к DOS Box
продолжение следует
Продолжение. Установил DOSBox, настроил конфигурацию:
machine=tandy Тип компьютера
cycles=240 Поначалу упустил эту настройку, поэтому допустил ошибку - интро работает очень быстро.
cputype=80186 Тип процессора
Дописал в конце
[autoexec]
mount c: .\diskc
c:
А для запуска использовал пакетный файл
START /B dosbox-74-3-debug.exe -conf tandy.conf -noconsole
Так стало веселее работать, быстро написал код, интро работает неверно. Изменил алгоритм, стало веселее. Дописал код опроса клавиатуры - перестало работать. оказалось, что не установлено прерывание 21h. Нашел другую альтернативу.
Все даже прекрасно работает. Планирую отправить интро на Демодуляцию, должна быть объявлена скоро.
Комментарии
Отправить комментарий