Эмуляция FLEX OS

 

Не помню, писал в предыдущем блоге, или нет, но сейчас вернулся к 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

Комментарии для исходника сделаны через задницу - разделяются пробелом. Или * ? не знаю.

Комментарии