Ну я убрал пока, оставил только --nologo.
Как-то так сейчас выглядит:
https://i.imgur.com/vveZUjy.png
Ну я убрал пока, оставил только --nologo.
Как-то так сейчас выглядит:
https://i.imgur.com/vveZUjy.png
я не использую столь неведанные ключи.
самая мизерная бестолковая программа:
5 байтКод:org $8011
m1:
add a,c
out ($FE),a
jr m1
4 байта:
https://zxaaa.net/view_demo.php?id=11307
org #4000
loop out (254),a
jr loop-1
Причем, что характерно, эффект выглядит по-разному на разных машинах)
- - - Добавлено - - -
Особенно интересно, по сравнению с остальными, он выглядит на жёлтом Скорпионе)
- - - Добавлено - - -
И кстати, этот эффект ведет себя по-разному на желтом Скорпионе на Спектакуляторе/ZXMAK2/Unreal и в Fuse со включенными прерываниями - в первом случае вертикальные полоски на бордюре едут, во втором - стоят на месте. Интересно было бы выяснить, как он ведет себя на реальном желтом Скорпионе.
- - - Добавлено - - -
Просьба к владельцам желтых Скорпионов - для проверки правильности работы эмулей выполнить следующее:
сбросить Скорпион, перейти в 48 бейсик, и набрать: POKE 16384,211: POKE 16385,254: POKE 16386,24: POKE 16387,251: RANDOMIZE USR 16384 <Enter>, и отписаться здесь о результатах - стоят ли вертикальные полосы на бордюре на экране, или едут.
- - - Добавлено - - -
Похоже, я разобрался. В Fuse делается выравнивание на четный такт цикла М1 для Скорпиона независимо от того, в ОЗУ выполняется код или в ПЗУ, а в остальных эмулях - только если в ОЗУ. Подозреваю, что второй вариант правильный, и полоски должны ехать.
Нашел вроде не плохую IDE для разработки под спектрум. Это надстройка над VSCode - https://github.com/Dotneteer/spectnetvsc
Есть такая же для Visual Studio, но ее я не пробовал, т.к. Linux использую.
Для будущего *****кодера хорошая аналогия, для хорошего программиста - нет. Почему? Потому что программа на асме пишется иначе. Переменные все хранятся в ОЗУ. В регистрах процессора только текущие рабочие переменные, типа циклов, текущих данных и т.д. А если мы учим изначально неправильно что в итоге? Я видел коды, которые писали люди с таким вот уклоном. Это ужасно. Нет. ужасТно.
буквально на днях увидел как R используют в качестве триггера.
сбрасывается/устанавливается 7ой бит
ld a,r
rla
jr c,
он вроде только определял есть прерывание или нет
ld a,r
......
jp po,
ei
а здесь ты сам устанавливаешь/сбрасываешь бит
Ссылку сейчас я не дам, т.к. это я видел разбирая какие-то программы, вспомнить сейчас нереально. Если я сказал, что так это так, значит на то были основания, а не сиюминутная фантазия. Опыт у меня не 2 года, а 28 лет. Как точно сказать, что вот именно в этой вот программе так. Из ужасного кода, что вспоминается это ZYX boot, потом интро одного моего знакомого, которое он писал в 1998г для Artcomp (не то, что потом в итоге было, то что вы найдете - другого автора и совсем иное). Когда он мне его принес (интро) и спросил "посмотри, что может тут не так?", я глянул исходник, и даже первые минуты не мог сказать что. Там всё не так. Было смешно, я реально рассмеялся тогда (кое что у него не работало ещё, ошибки были, вот и принес показать). Т.е. всё нужно писать совсем не так как написал он. Учился он именно по книжкам Инфоркома, по вот этим аналогиям. Позднее не раз подобное видел. Это напоминает то, когда человек изучает иностранный язык и делает первые шаги в нем, пишет текст или пробует говорить. Коряво и убого.
Я не говорю, что можно взять так и сразу писать красиво, хорошо. Многие просто наступают на одни и те же грабли, в т.ч. те, что положил Инфорком. Сначала вводят представление о ПЭВМ как о "бейсик-машине", что бы пользователь вжился в эту парадигму, а потом говорят "а на самом деле всё не совсем так, вернее всё совсем не так, но вы делайте как раньше". Это в корне неверный подход, о чём я писал в самом начале темы. Если человеку объяснить, как примерно устроена ПЭВМ, что такое двоичная система исчисления, что бы он действительно это понял, а не так взял это "на уме", то с шестнадцатеричной записью проблем не будет. И далее, когда субъект знает, как устроена ПЭВМ можно его учить программировать. Основы программирования можно получить ранее, а можно и не получать. Я, к примеру, до Спектрума программировал на МК-61, просто прочитав описание команд, посмотрев примеры программ с комментариями. Понять зачем нужен цикл, условия, переходы, арифметические и логические функции несложно. Не нужно для этого заканчивать университеты и академии. Можно конечно изучать что-то вроде бейсика и паскаля. Но. При переходе на асм, нужно сначала изучить архитектуру ПЭВМ и процессора. Аналогии с бейсиком тут не уместны. Учитель (или автор книги учебника, не важно), должен подсказать, как пишутся программы, какие есть наработки, шаблоны, как в общем выглядит структура будущей программы, какие бывают "хинты", ловкие решения для конкретного CPU и компа и т.д. Например, в руководстве по ОС CP/M приводился скелет программы, автор системы на пальцах объяснял как именно работать с файлами, символьными устройствами и давался для примера листинг простейшей программы.
- - - Добавлено - - -
Хе, сравнение переменных с регистрами? Сколько будет переменных в Бейсике, и как это число свяжется с регистрами?
Изложение основ пригодится в литературе, предназначенной для начинающих, другие главу просто пролистают. В книге по MK-14 (это такой калькулятор от дедушки Клайва) я встретил важный акцент на алгоритмизации и на умении мыслить алгоритмично.
Напишите простые задачи: подсчет суммы чисел 1-20 и выбор максимального из трех чисел.
С этого и нужно начинать, а перейти к необходимости изучить ассемблер легко: привести примеры на Бейсике и на ассемблере. Тогда сразу видно, в чем преимущество ассемблера - скорость и те задачи, с которыми Бейсик не справится.
krt17, Vadim - Дальше по сути и без ругани
вспомнил про R. Кажется, на wos Hikaru предлагал экзотический способ использования R как счетчика цикла.
иногда (в разумных пределах значения) и I используют
Вспомните еще про ксорки которые на R привязаны. Сам такое делал, и у многих такое видел, но все это проходится нормальным отладчиком.
интры от GOLDEN DISK проходятся, как же(:
Все ксорки от Bill Gilbert были такими, это типа защита от пошагового отладчика. Но я их раскрывал, хоть и долго по времени. А когда появилась прошивка Турбо 90, то в 99% случаев можно было или по NMI выйти в отладчик и увидеть загрузчик или по ресет выйти в бейсик и опять же увидеть потом загрузчик в отладчике, получив ключ, загрузчик родной уже не нужен был.
оффтопите граждане
Не знаю, кому как, но мне настоящий экстаз приходит после кодинга процедуры без оглядки на IY=#5C3A
Да, есть такой барьер. Но до его преодоления, писав только на языках высоко уровня (и бейсике в тч), не осознавая как все внутри устроено, разложено по ячейкам, регистрам и полочкам, испытывал какое то уважение к z80 и к компьютерам, - как к непознанной девушке.
А познав, начал его и так, и эдак, и во все регистры. Как обузданную лошадь. Познание - не всегда благо, для психики.
Считаю, что для более быстрого преодоления, ни в коем случае в примерах нельзя пользоваться рестартами и подпрограммами пзу. Начать лучше с вывода точки, прямой, спрайта в видеопамять. Потом прыгающий скрол. Только, опять же, ни в коем случае не по формуле синуса из калькулятора и не по проверке конечных координат и изменением направления, а по набитой в ручную табличке.
Потом конечно можно таблички и бейсиком заполнять - но первая должна быть набита собственноручно.
и кто будет ждать длительный расчет?
Для скролла (и многого другого) никакая таблица синусов вообще не нужна. Там даже не синус, а механизм приращения некоторой константы (ну я называю для себя "гравитация") к вертикальной скорости смещения. Всё это на лету и занимает совсем мало байт и скорости.
Всё это актуально и для прыгающего и бегущего волнами и дочерта всякого...
Воооот , и попались, - я как раз про это и говорю - значит вы не кодер и не преодолели барьер высокоуровневых языков. Прибавление константы к координате - это и есть бейсиковый подход. Кодер сделает таблицу на 256 байт расположенную по align #100 , включающую полный цикл синуса и просто инкриментирует младший байт регистра-указателя ( однобайтовый индекс) без всяких проверок на переполнение - и все само зациклится
- - - Добавлено - - -
надиси депакинг анд декрючинг ни кто не отменял - но если искуственно не торомозить, он мгновенно пролетит.
Может и не преодолел. Но на спеке всего мало - и тактов и памяти, так что хранить табличку - роскошь. Там где можно без неё - лучше без неё. На взгляд ну никто не отличит "настоящий" синус от синусоподобной математики. Ну никак, ибо разрешение на спеке тоже маленькое. все тонкости спрячутся в сетке пикселей...
https://dotneteer.github.io/spectnetide/ - а вот это шо такое и с чем его едят?
Это приблуда под Visual Studio
у кого этот архив сохранился? Ссылка битая, перезалейте куда-нить плиз
- - - Добавлено - - -
тоже аннигилировалась
Хотя можно и не восстанавливать.
Барьер преодолевается с помощью примеров из SJASMPLUS и Notepad++
Если размещать свой файл в папку SJASMPLUS\examples\ZX-Spectrum\xxx и не прописывать путь к расположению sjasmplus.exe, то батник выглядитКод:DEVICE ZXSPECTRUM48
org 8000h
start: ld a, 2 ;
call $1601 ;
ld bc, string_end - string ;
ld de, string ;
call $203c ;
ret ;
string:
db "Hello, zx spectrum!",$0d ;
string_end:
; SAVEBIN "noise.bin",$8000,code_end - $8000
savesna "noise.sna",start
как для других примеров, но с именем вашего файла.
Запускается ( в моем случае) двойным кликом по noise.sna, если установлен Unreal Speccy Portable.