Не помню, писал в предыдущем блоге, или нет, но сейчас вернулся к 6809. Скачал эмулятор, установил и стал читать свалку доков. Ось работает с тремя дисководами, для удобства нумеруются 0-3. Обращение к любому файлу возможно как D.FILENAME.EXT или FILENAME.EXT.D, здесь D-номер дисковода. Для удобства можно использовать ASN,W=1 - переключение на дисковод 1, можно работать с ним. Описанный ассемблер ASMB искал долго, в конце концов нарыл в архивах дисков. На системном диске нашелся приличный редактор E.CMD - аллилуйя, не каличная версия! Описание мало что подсказало, методом тыка нашел выход - нажать ctrl+X, ввести #E,>Enter> - в описании сказано, что эта команда сохраняет файл и выходит из программы.
Теперь ассемблер, компиляция описана в доке. В руководстве погромиста нашел список процедур, поэтому сделать свою первую программу легко:
org $1000
ldx #string
jsr $CD1E
RTS
string FCC "HOLA",4
Поначалу упустил, что строка должна ограничиться байтом 4.
Забыл сказать, что для удобства я создал отдельный диск и скопировал на него файлы - редактор и ассемблер. Космпилируется как 1.ASMB,1.TT,1.T,+LSY. Получается на выходе файл T.BIN, но вот незадача - не удаается создать программу с расширением .CMD и запускать побыстрее. И набирать команду долго. Выбор проще:
E,CO - запустить редактор и создать Co.TXT. Вписать команду, сохранить и выйти. Просмотр файла - LIST,CO (.TXT по умолчанию)
EXEC,CO - запустить CO.TXT, ассемблер выполнится сам
GET,T - загрузить в память T,BIN
JUMP,1000 - выполнение по адресу, который записан в щестнадцатиричном формате.
Готово! Осталась графика. В комплекте эмулятора приложен FLEXplorer, который позволяет выполнять часть операций с образами дисков, но нет извлечения файлов.
Зато есть утилита dsktool.exe, которая умеет извлекать файлы.
dsktool.exe -X test.dsk
На счастье на образе test.dsk нашелся FILL_VID.ASM, который что-то рисует.Набрал программу, скомпилировал
org $8000
lds #$F000
ldd #$0C0C
std $FFE0
std $FFE2
lda #0
ldx #0
L sta ,X
inca
leax 64,x
cmpx #$3FC0
bne L
m bra m
И на этом исследования закончились, напишу дальше.
Дополнение. добрые люди подсказали, как получить .CMD: в ассемблере есть директива END, исходник выглядит так
STARTUP
код
END STARTUP пробел в начале облизателен.
Вчерашний вечер - вечер попыток кодить в связке с доками и ассемблером онлайн. Написал построение точек, но есть косяк: если внизу набрать команду, то скролл экрана похерит все. С доками мало что понятно.
org $8000
lds #$F000
ldd #$0C0C
std $FFE0
std $FFE2
ldx #0
ldy #0
kk jsr plot X=0..511,Y=0..255
leax 1,x
leay 1,y
cmpx #255
bne kk
m bra m
bw FCB 128,64,32,16,8,4,2,1
plot
psh y
psh x
tfr y,d D=Y
exg a,b A<>B,y*256
lsrd
lsrd y*64
std tt
tfr x,d D=X
psh d
andb #7
clra
tfr d,x
pul d
andcc #$FE
rora
rorb
andcc #$FE
rora
rorb
andcc #$FE
rora
rorb
addd tt
tfr d,y Y=D
lda ,Y
ora bw,X
sta ,Y
pul x
pul y
rts
tt FDB 0
Комментарии для исходника сделаны через задницу - разделяются пробелом. Или * ? не знаю.
Комментарии
Отправить комментарий