обосрался - обтекай, не умеешь - впитывай
обосрался - обтекай, не умеешь - впитывай
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
итог холивара, даже если код переключает страницы, но сохранён в сна 48, забудь о страницах, обращайся напрямик к разрабам, тут тебя обосрут, а они возможно и нет
- - - Добавлено - - -
Давай проще
Мне компиль выдал sna48
я его запускаю, он запускакется, но
в коде этого сна есть переключение страниц, которые эмуль уже не делает, ну 48 же было
- - - Добавлено - - -
уже заглушка
посмотри на свою проблему с логики автора эмуля.
зачем ему сохранять sna48 если комп находится в 128ом режиме ?
более того некоторые эмули ещё и сохраняют тип 128ой машины (фирма/пентагон)
Ну я понял. проще писать костыль
чтоб всегда было 128, я думал проблема решаема и я где-то накосячил, но в итоге гудбой не сцыунул и повёл себя как мужик)
Странный вопрос. Ты когда в меню 128 спектрума выбираешь BASIC48 у тебя же физически комп не превращается в спектрум 48к? Эмулятор эмулит конкретную модель машины. Тебе же выше минимум два раза объясняли, что когда эмулятор видит на входе sna, снятый с машины 48к, он не порт конфигурации блочит и не байты в системные переменные выставляет. Он просто считает, что для работы поднимаем эмуляцию машины 48к, где памяти выше 48к и порта конфигурации просто нет!
приветствую,
какая сейчас примерно технология работы с современными Z80 ассмеблерами и запуском бинарника на эмуляторе?
т.е например sjasmplus собирает мою helloworld программу но никакого бинарного файла не создает.
В примерах sjasmplus в файле frost10.z80 стоит макрокоманда
SAVESNA "frost10.sna",STARTF
я так понимаю что это команда для формирования полного образа памяти snapshot.
С загрузчиком? Помнится на BASIC загручик еще нужен был .
Вообщем я совершенно запутался тут , в элементарнейшем вопросе как раз для этой темы.
Я нашел несколько гайдов по настройке окружения в современных условиях, но там как то этот не расммотрен.
Буду благодарен за подсказку!
Эмуляторы вроде советуют для разработки CSpect и ZEsarUX
Я пишу на С++ и на asm писал бывало для x86 , но спектрум последний раз запускал 25 лет назад и никогда на асме не писал под него.
эмуляторы
unreal
xpeccy (иногда нужен там где не удобно отлаживать в unreal)
за CSpect не знаю
ZEsarUX - редкостное гафно
самый последний и навороченный sjasm брать тут
https://github.com/z00m128/sjasmplus/releases/
не забывать RTFM
http://z00m128.github.io/sjasmplus/documentation.html
оно формирует снапшот для эмулятора
такой вариант подходит для отладки и тестирования
загружать sna на реале не всегда возможно...
да и не принято в таком формате что то выпускать
вот те например сохранялка в tap образа ленты
с загрузчиком лежащим в rem
и который грузит кодовый блок без заголовка и запускает
может с ходу не работать
тк у меня более сложная обвязка на lua вокруг
которая будет не читаема для новичков
и пришлось много чего выкинуть
Код:emptytap "test.tap" org $0 basic_start defb $00,00 ; defw end_basic_line_0 - basic_line_0 basic_line_0 defb $EA ;REM ;загрузчик в REM di ld ix,$C000 ;грузим по адресу $C000 ld de,$2000 ;$2000 байт ld a,$FF scf call 1366 ;процедура загрузки в ПЗУ di jp start ;и запускаем defb $0D end_basic_line_0 defb $00,10 defw end_basic_line_10 - basic_line_10 basic_line_10 defb $FD,$B0 ;CLEAR VAL defb $22,"24575",$22 defb $3A ; : defb $F9,$C0 ;RANDOMIZE USR defb $28 ;( defb "5" ;5 defb $0E,$00,$00,$05,$00,$00 defb $2B ;+ defb "256" ;256 defb $0E,$00,$00,$00,$01,$00 defb $2A ;* defb $BE,$B0 ;PEEK VAL defb $22,"23636",$22 ;"23636" defb $2B ;+ defb $BE,$B0 ;PEEK VAL defb $22,"23635",$22 ;"23635" defb $29 ;) defb $0D end_basic_line_10 defb $80 ;autorun defb $AA,10,0 ;не уверен нужны ли эти строки basic_end ;сохраняем бейсик savetap "test.tap",BASIC,"prog_name",$0,basic_end-basic_start,0 ;0 autorun line ;сохраняем кодовый блок без заголовка savetap "test.tap",HEADLESS,$C000,$2000
тоже самое для создания образа диска trd
тоже может с ходу не работать
Код:tr_dos_var_current_track_sector = $5CF4 emptytrd "test,trd" org $0 basic_start defb $00,00 ; defw end_basic_line_0 - basic_line_0 basic_line_0 defb $EA ;REM ;загрузчик в REM di ld bc,$2005 ;грузим $20 секторов = $2000 байт ;05 режим загрузки ld de,(tr_dos_var_current_track_sector) ;d номер трека e номер сектора ;в данном случае берем последнее положение ld hl,$C000 ;куда грузим im 1 call $3D13 ;стандартная точка входа в ПЗУ tr-dos di jp start ;запускаем то что загрузили defb $0D end_basic_line_0 defb $00,10 defw end_basic_line_10 - basic_line_10 basic_line_10 defb $FD,$B0 ;CLEAR VAL defb $22,"24575",$22 defb $3A ; : defb $F9,$C0 ;RANDOMIZE USR defb $28 ;( defb "5" ;5 defb $0E,$00,$00,$05,$00,$00 defb $2B ;+ defb "256" ;256 defb $0E,$00,$00,$00,$01,$00 defb $2A ;* defb $BE,$B0 ;PEEK VAL defb $22,"23636",$22 ;"23636" defb $2B ;+ defb $BE,$B0 ;PEEK VAL defb $22,"23635",$22 ;"23635" defb $29 ;) defb $0D end_basic_line_10 defb $80 ;autorun defb $AA,10,0 basic_end ;сохраняем бейсик загрузчик savetrd "test","boot.B",$0,basic_end-basic_start ;если хотим автозапуск по run ;savetrd "test","prog.B",$0,basic_end-basic_start ;если не хотим автозапуск ;и лучше писать мелкими буквами ;тк некоторым придется вводить run "prog" ручками ;сохраняем кодовый блок savetrd "test.trd","data.C",$C000,$2000 ;сохраняем $2000 байт начиная с адреса $C000
в принципе для начала можно сохранять и в sna
это проще всего
в начале сорца нужно указать тип машины
(да и в общем его нужно указывать для доступа ко многим полезным функциям)
в концеКод:DEVICE ZXSPECTRUM128
где start собственно стартовый адрес программы...Код:SAVESNA "test.sna",start
ну и в sna по идеи можно сохранить только
ZXSPECTRUM48
ZXSPECTRUM128
если нужно больше
нужно уже извращаться
снапшотов для больше 128К так и не изобрели до сих пор...
ну писать на C для спектрума не лучшее решение
есть у нас тут конечно писатели
но результат в конечно итоге всегда посредственный...
так что
только асм только хардкор
вот хорошая таблица по z80 асму
http://www.z80.info/zip/z80-documented.pdf
начиная с 26 страницы
все лаконично и понятно
Последний раз редактировалось NEO SPECTRUMAN; 26.08.2020 в 03:29.
Vladius(27.08.2020)
Это конечно понятно, но если уже есть поддержка 128(и более), зачем при загрузке 48 снимка памяти и систему сразу делать 48ой? Ведь я, например имея 128к, выгружу часть памяти, соответствующую 48, в которой имеется код работы со страницами, загружу в другой 128, всё ведь нормально будет работать. Просто мне кажется, что рассматривать 48sna лучше было бы как минимальную часть памяти(поддерживаемую и теми и другими моделями), а не признак конкретно модели. Ну это такое, у разрабов эмулей своё видение, и менять никто ничего всё равно не будет.
- - - Добавлено - - -
Но там я выбираю сам, а тут мне выбора не дают.
Причём только что ещё раз посмотрел, и в эмузвине есть настройка
Ignore soft lock 48k by setting bit 5 in port 7FFD (always 128k in 128k mode),
но в данном случае она не помогает, так как эмулятор, видя 48к памяти в снапшоте, и машину делает 48. Но таки при загрузке 128 в режиме 48, он сначала спрашивает, переключить ли модель?
Последний раз редактировалось Dwa83; 26.08.2020 в 10:03.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)