1 Отредактировано Voldemar0 (02-04-2025 18:58)

Тема: Нейронки и агатовская тема

Привет!

Почему бы не запрячь нейросеть в какую нибудь не очень точную или, во всяком случае, верифицируемую задачку?
Код какой нибудь неясной проги расковырять или написать что нибудь забавное или даже полезное ?
Ну пусть простенькое для начала.
Deepseek сегодня не работает, полезем в другую:
https://chat.qwen.ai

- Ты можешь написать клевую графическую прогу, которая бы выводила что нибудь динамическое на ассмеблере mos6502 ?

- Потри лампу и я тут же выполню все твои желания. Я прошла три класса и корридор начальной школы и пишу проги на 6502 как школьник-отличник! Уточни, для какой архитектуры будем писать и какой эффект ты хочешь ? Могу очистить экран или нарисовать какой нибудь узор ? А хочешь - запустим волну ? Смотри, какую клёвую прогу для сложения двух чисел я уже тут придумала ? Хочешь объясню подробно ? Вот смотри........ <и ещё несколько экранов текста>.

- Поменьше подробностей.

- А, отлично, давай напишу компактную программу .... <и ещё экран текста>.

- Хорошо! Давай я расскажу тебе сначала, как мы будем использовать видеоозу. Шестнадцатеричные числа я буду писать с префиксом '$'.
<описываю агатовский MGR>. А теперь напиши мне программу для эффекта волна.

- Отличный выбор! <вываливает вполне синтаксически приличную программу, которая что-то делает в видеопамяти, строк на 40>.

Начинаю разбираться: адресация к видеопамяти через индексную команду. И не очень ясно, зачем используются некоторые ячейки.

- Расскажи мне, зачем ты используешь ячейку $FC ?

- О, это древний клёвый способ сохранять регистры в памяти. Чтобы не сломались. Вот смотри: мы используем команду STX чтобы сохранить регистр X и LDX чтобы восстановить значение из ячейки. Это же так клёво и просто. Вот пример......

- Тогда покажи, где в нашей программе ты читаешь эту ячейку ?

- А, сейчас расскажу, конечно ! .... Ой, блин, сорри, реально, запуталась. Нету чтения из неё. Сейчас перепишем программу и будет чтение !  <выкатывает новую версию>.

- Хорошо. Теперь проверь, как ты работаешь с видеопамятью.

- Давай объясню. Я вычисляю адрес.... тут вычисляю... тут формула такая-то, например при значении координат таком-то будет такой-то адрес.... Ой, блин, точно, ошибка. Мы же не можем индексным методом все 8 кб обслуживать. Надо косвенно-индексный ! Сейчас всё перепишем. <прога пухнет ещё строк на 15>.

- А ты можешь её скомпилировать с адреса $3000 и выкатить мне bin-файл ?

- Не, ты чё !!! Я же не компилятор ассемблера ?! Ну ты чё ! Возьми что нибудь, cc65, например, вот ссылка и компилируй, вот команды. Давай я тебе перепишу прогу под этот компилятор <выкатывает ещё вариант>.

Компилятор ругается на то, что после меток нет ":". Исправляю, собираю, пробую в эмуле. Экран заполнен статическими синими полосками. Смотрю работу кода: по всем адресам расписывается в бесконечном цикле $E0. Т.е. что-то она считает, но получается константа.

- Я запустил программу, весь экран в синих полосках. Никакого движения нет.

- Давай проверим. .... О, точно, ошибки. Сейчас исправлю....

- И сразу расставь двоеточия после меток. А может ты знаешь опцию компилятора, которая разрешает метки без точек ?

- Да, не вопрос, есть такая опция, давай я ей поставлю в нашу классную программу.

Пробую ещё раз. Компилятор ругается на неизвестную опцию. Расставляю двоеточия сам. Собираю, пробую.
Теперь весь экран в синих полосках, кроме точки в координатах 0, 0 - она чёрная.
Смотрю работу  кода - теперь проге лень даже адреса перебирать. Она пишет 0 в нулевое смещение, указатель не меняется.

Я час просидел. Кажется, если бы знал алгоритм, то свою версию бы уже закончил :)

Но интересно, конечно :)
Ощущение, что учишь школьника, который очень настроен на победу, но предмет сильно не осваивал.
Уверенность в себе на 100 процентов, ошибки готов признавать, но точно знает, что очередная ошибка будет последней и потом всё получится.