С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
возможно это поможет
https://www.playermissile.com/scroll...ial/index.html
![]()
Да я уже этих статей кучу перешерстил. И эту тоже видел. Автор тоже хитрожёлтый, показывает пример примитивный что мол вот скроллится. Я честно даже не обратил внимания, что гифка не цикличная, думал просто обрезали. А вот панарамный скролл (который и надо было по сути показать) никто так и не сделал.
breeze, держись! Спектрумята идут на помощь(:
Примерно так. только меня на асм хватило.
breeze(06.11.2024)
Решил пока отвлечься от скроллов и заняться не менее интересной штукой, как чтение файлов с диска.
Чисто теоретически опять «ничего сложного», но блин! как же геморно искать по крупицам информацию, её вроде как и вагон в каждой книжке, но где-то одно не дописано, где-то воды много итд.
Досов на атари как известно много, все они разные и в меру навороченные. Остановится решил на XDOS, как наследнике классической Atari DOS 2.x. Минималистичненько, без всяких меню, чисто командная строка, минимальный размер загрузчика.
Для сборки готовой дискеты использовал тулзу «dir2atr» из пакета «Atari Tools for Win32»
Если говорить вкратце, то принцип работы с файлами такой же как и «везде» открываем файл, читаем, закрываем.
На атари, при открытии нужно указать номер потока*16.
Для примера сделал что бы с диска читалась картинка в формате ATASCII и выводилась на экран. Экран в DOS обрезан слева на 2 колонки, пришлось картинку подрезать тоже.
пример простой как 5 копеек
Выделяем место под буфер
Читаем, если ошибка (файл не найден), выводим код ошибки
Если всё успешно выводим посимвольно.
Имя файла «прибито», было бы не плохо разобраться с аргументами командной строки, вроде XDOS это позволяет, если я правильно понял.Код:import stdio import xdos const byte channelID = 16*2 array fileName = ["D:DINO.ATA",0x9b] const word fileSize = 950 array fileData[fileSize] void main() { word i byte status status = openFile(fileName, XDOS_R, channelID) if (status == XDOS_OK) { readFile(fileData, fileSize, channelID) closeFile(channelID) new_line() for i,0,to,fileSize-1 { putchar(fileData[i]) } } else { putstrz("Open error:"z) putword(status) } }
Есть ещё нюанс с размером файла. Чисто гипотетически, если задать размер, например 255, а размер файла будет 24 байта, то система прочитает ровно 24 байта, даже если указать 255 в параметрах. Но остаётся вопрос с тем же выводом, как реально понять сколько же фактически было прочитано с диска. Нужно ещё разбираться.
Но начало уже положено, можно подгружать «уровни» и другую информацию с дискеты на ура![]()
Последний раз редактировалось breeze; 06.11.2024 в 12:54.
тут один камрад подсказал насчет конца строки на Атари:"priwet,vestokij WORLD!{x9b}"
breeze(06.11.2024)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)