Я уверен, что тоже бы негодовал, если бы сам программировал на Специалисте как положено, то есть в мнемониках i8080.
Вид для печати
Просто это началось в 1988 году и непрерывно продолжалось практически до 1994. А потом от случая к случаю. Поэтому, это сродни ощущению носителя языка, когда он слышит жёсткий акцент иммигранта.
Ладно, это личное, против кино ничего не имею, снято круто, наполнение годное. Настоятельно рекомендую тебе продолжать свою деятельность.
HardWareMan, я тебя отлично понимаю! Но для меня, к сожалению (или же к счастью), родные мнемоники i8080 ровным счётом ничего не значат. Скорее всего именно поэтому я так бесцеремонно, без угрызений совести, не только сам программирую, но и показываю остальным, как это делать в "неправильных" мнемониках Z80. Скорее всего это произошло из-за того, что когда Специалист был моим первым и единственным компьютером, я не умел программировать на ассемблере. У меня не было знакомых, которые могли бы меня чему-то научить. Единственным источником информации по Специалисту для меня были журналы Моделист-Конструктор. Ну и то, что я сам смог накопать, ковыряясь через Монитор в играх. А ассемблер в моей жизни появился позже, когда я обзавёлся Спектрумом. И мнемоника Z80 - это единственное, что на сегодня я знаю без справочников. Например, сейчас я могу на Python не пописать пару месяцев, а потом даже не вспомнить какой синтаксис у цикла. Я ассемблер ARM трижды с нуля учил, потому что делал перерыв и всё начисто забывал. А с Z80 всё иначе. Это первые знания, которые были получены в молодом возрасте на пике энтузиазма. Полагаю, что у тебя так с i8080, и мои методы, естественно, кажутся тебе кощунственными.
CityAceE, ты, кстати, выводил надпись на спецтрумский манер (что логично, используя мнемоники Z80 - ФЬЮТЬ-ХА!). А ты выводи теперь по-Спецовски, 6х8. Я не советую тебе ковырять монитор, его вывод символа медленный из-за использования стека, но могу подкинуть часть своего BIOS. Если решишь использовать в своём новом кино - я не против.
Ну да, так было бы правильнее. Показать как это делается с помощью вызова процедуры из ПЗУ, а затем продемонстрировать реализацию этого метода с нуля. Однако в твоих же исходниках есть такой комментарий относительно процедуры вывода символа на экран:
Вот именно по этой причине я решил продемонстрировать создание процедуры печати со шрифтом, у которого ширина кратна байту. Но за базовые процедуры спасибо. Я их перевёл в понятную мне мнемонику и скомпилировал с помощью SJAsmPlus:Код:; Вывод символа
; Самая муторная подпрограмма
https://pic.maxiol.com/images2/17049...384.screen.png
Но, видимо, где-то ошибся при конвертировании, так как выше нижней строчки поднять текст никак не получается. Для вывода использую процедуру OutText, а координаты записываю в ячейки CurX и CurY.
Ты пробовал CurY от 9 до 255?
Там 0:0 это левый верхний угол. И ЕМНИП координатная логика полностью повторяет мониторовскую. Всмысле, X это координата с шагом 2 точки, а Y - с шагом в 1 точку, но 0-7 эквивалентны 8. Сами ячейки должны быть в ОЗУ и инициироваться до вывода символа. Либо можно вставить код #0C перед текстом (или даже #1F). Первый просто отправит текст домой (в левый верхний угол), а второй при этом ещё и экран очистит.
- - - Добавлено - - -
PS В комментах может быть путаница, имейте в виду.
Да, конечно. Я же посмотрел логику:
Код:lda CurX ;
ani 0FCh ;
rrc ;
rrc ;
adi 90h ;
mov h,a ;
lda CurY ;
cpi 08h ;
jnc OutSymCrd ;
mvi a,08h ;
sta CurY ;
OutSymCrd: sui 08h ;
mov l,a ; [HL] верх координаты
Код:ld a,(CurX) ;
and a,0FCh ;
rrca ;
rrca ;
add a,90h ;
ld h,a ;
ld a,(CurY) ;
cp a,08h ;
jp nc,OutSymCrd ;
ld a,08h ;
ld (CurY),a ;
OutSymCrd: sub a,08h ;
ld l,a ; [HL] верх координаты