User Tag List

Страница 3 из 8 ПерваяПервая 1234567 ... ПоследняяПоследняя
Показано с 21 по 30 из 77

Тема: Хочу написать кассетный загрузчик похожий на Alkatraz но не совсем!!! Прикольнее!!

  1. #21

    Регистрация
    19.04.2019
    Адрес
    г. Сан-Хосе, США
    Сообщений
    44
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    5 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от alex8418 Посмотреть сообщение
    Как убрать эту мигающую фигню рядом с счётчиком не знаю
    > LD (#5AFE),A
    > LD (#5AFF),A

    Эти две команды загружают значение из аккумулятора в область атрибутов на месте мигающей фигни. Насколько я понимаю, если этот код убрать, может понадобиться менять искусственные задержки в других местах, чтобы общее количество тактов осталось неизменным.

    Цитата Сообщение от alex8418 Посмотреть сообщение
    Счётчик универсальный между прочим, работает даже с загрузкой основной части игры (сам проверял), как поменять область загрузки для запуска игры пока не знаю (какие картинки можно грузить с помощью загрузчика тоже?)?
    Это такой же универсальный загрузчик, как и стандартный LD_BYTES. Интерфейс вроде бы тот же.

  2. #22

    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,691
    Спасибо Благодарностей отдано 
    302
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    159 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от morozov Посмотреть сообщение
    Насколько я понимаю, если этот код убрать, может понадобиться менять искусственные задержки в других местах, чтобы общее количество тактов осталось неизменным.
    ...или заменить адрес, и писать в пзу

  3. #23

    Регистрация
    15.05.2010
    Адрес
    Москва
    Сообщений
    64
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bedazzle Посмотреть сообщение
    Ассемблер - pasmo.
    Тапок собирается в bas2tap.
    Есть получилось, сам создал counter.tap из counter.asm, только пользователь morozov забыл указать ещё одну программу:
    Вот как я сделал:
    1. Вводим pasmo --bin counter.asm counter.bin
    получается: counter.bin
    2. Вводим bin2tap -c counter.bin counter.tap counter 64531
    получается: counter.tap - аналогичный из архива counter.zip (пользователя morozov)!

    - - - Добавлено - - -

    Цитата Сообщение от morozov Посмотреть сообщение
    > LD (#5AFE),A
    > LD (#5AFF),A

    Эти две команды загружают значение из аккумулятора в область атрибутов на месте мигающей фигни. Насколько я понимаю, если этот код убрать, может понадобиться менять искусственные задержки в других местах, чтобы общее количество тактов осталось неизменным.
    Пока не разбирался с мигающим квадратом, вопрос к morozov-у другой - откуда взялся полный текст программы в том числе с изменениями в конце её, ведь в журнале ZX Review 1995 №1 она написана не полностью? (возможно хитрость состоит в том, что нужно прочитать весь номер сначала до конца?)

    - - - Добавлено - - -

    Я конечно понимаю, что автоматизация сестра прогресса, но всё же, допустим:

    Купил Я плату к примеру Пентагона 128 Kb на zx-pk.com у одного из пользователей, спаял её, наладил, запускаю, передо мной табличка:
    1. Tape Loader
    2. 128 BASIC
    3. Calculator
    4. 48 BASIC
    5. TR-DOS

    Лежит передо мной распечатанный журнал ZX REVU 1995 №1, есть аудио-вход (дисководом не обзавёлся), спаян шнурок от аудио к разъёму mp3 плеера (с помощью программы tap2mp3 или как её там не помню перевёл tap и tzx в mp3)!

    Так вот вопрос - какую программу мне использовать, что набрать программу из файла counter.asm на реальном спектруме без эмуляции?

  4. #24

    Регистрация
    19.04.2019
    Адрес
    г. Сан-Хосе, США
    Сообщений
    44
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    5 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от alex8418 Посмотреть сообщение
    откуда взялся полный текст программы в том числе с изменениями в конце её, ведь в журнале ZX Review 1995 №1 она написана не полностью?
    В этом же номере журнала, в конце статьи есть двоичный дамп. Я его набрал, а потом с помощью SkoolKit сконвертировал в исходный код. Из изменений — помню, что где-то исправлял одну опечатку, но не более. Дальше вроде бы хотел избавиться от захардкоженных адресов, чтобы сделать процедуру более переносимой, но до конца не доделал. К сожалению, в истории изменений этого нет, но если есть вопросы по конкретным элементам, можно обсуждать в гит-репозитории (специально опубликовал).

    Цитата Сообщение от alex8418 Посмотреть сообщение
    Есть получилось, сам создал counter.tap из counter.asm, только пользователь morozov забыл указать ещё одну программу:
    Вот как я сделал:
    1. Вводим pasmo --bin counter.asm counter.bin
    получается: counter.bin
    2. Вводим bin2tap -c counter.bin counter.tap counter 64531
    получается: counter.tap - аналогичный из архива counter.zip (пользователя morozov)!
    Там то же самое в мейк-файле. Ничего вручную запускать не обязательно, он как раз и нужен, чтобы автоматизировать процесс сборки (правда этот подход рассчитан на Linux/OSX, а не на Windows).

    Цитата Сообщение от alex8418 Посмотреть сообщение
    Так вот вопрос - какую программу мне использовать, что набрать программу из файла counter.asm на реальном спектруме без эмуляции?
    Тут не помогу. Я в своё время код писал на бумажке, переводил в машинные коды и вводил чем-то типа FOR/DATA/POKE. По идее, должен подойти любой ассемблер, т.к. никаких наворотов в этой программе нет. Правильно ли я понимаю, что задача состоит именно в том, чтобы написать загрузчик на настоящем компьютере? Почему нельзя написать его в эмуляторе, а потом загрузить в компьютер? Я так понимаю, что до написания, что до компьютера пока далеко.

    - - - Добавлено - - -

    Цитата Сообщение от Bedazzle Посмотреть сообщение
    ...или заменить адрес, и писать в пзу
    Конечно, это проще, но не спортивно. Топик-стартер-то хочет написать свой загрузчик (читай, разобраться по ходу, что к чему).

  5. #25

    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,691
    Спасибо Благодарностей отдано 
    302
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    159 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от morozov Посмотреть сообщение
    Конечно, это проще, но не спортивно. Топик-стартер-то хочет написать свой загрузчик (читай, разобраться по ходу, что к чему).
    Разобраться - дело похвальное. Но судя по вопросам, человеку совсем с азов начинать требуется.
    И видимо, лучше пробовать что-то проще, чем кастомный загрузчик. Например, смена цвета бордюра, тушение экрана, и т.п.
    Heavy on the disasm
    Eric and the disasm
    Mask 3: Venom strikes disasm
    Bard's disasm

    Этот пользователь поблагодарил Bedazzle за это полезное сообщение:

    morozov(29.10.2019)

  6. #26

    Регистрация
    15.05.2010
    Адрес
    Москва
    Сообщений
    64
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от morozov Посмотреть сообщение
    > LD (#5AFE),A
    > LD (#5AFF),A

    Эти две команды загружают значение из аккумулятора в область атрибутов на месте мигающей фигни. Насколько я понимаю, если этот код убрать, может понадобиться менять искусственные задержки в других местах, чтобы общее количество тактов осталось неизменным.



    Это такой же универсальный загрузчик, как и стандартный LD_BYTES. Интерфейс вроде бы тот же.
    Убрал строки LD (#5AFE),A и LD (#5AFF),A из программы counter.asm, результат на картинке в прикреплении (пытался убрать LD A,C CPL LD C,A LD (#5AFE),A LD (#5AFF),A, но программа виснет)! Вообщем появляется козябрик вместо первой цифры счётчика, мигающая фигня исчезла, но и счётчик считает неправильно начиная с 999! Сразу появилось ещё два вопроса: что определяет положение счётчика на картинке и почему бордюр красный, если в журнале написано, что он должен быть чёрным?

    - - - Добавлено - - -

    Цитата Сообщение от morozov Посмотреть сообщение
    В этом же номере журнала, в конце статьи есть двоичный дамп. Я его набрал, а потом с помощью SkoolKit сконвертировал в исходный код. Из изменений — помню, что где-то исправлял одну опечатку, но не более. Дальше вроде бы хотел избавиться от захардкоженных адресов, чтобы сделать процедуру более переносимой, но до конца не доделал. К сожалению, в истории изменений этого нет, но если есть вопросы по конкретным элементам, можно обсуждать в гит-репозитории (специально опубликовал).
    Зашёл по ссылке SkoolKit, скачал компилятор Python 3.4.3 с сайта Python.org, установил на компьютер - не разобрался в нём, пытался скопировать текст программы skool2bin.py с помощью клавиш Ctrl + Ins или Ctrl + C и вставить с помощью Shift + Ins или Shift +V - не получается! Объясните пожалуйста morozov как работать с комплектом программ, по указанной Вами ссылке?

    - - - Добавлено - - -

    Цитата Сообщение от morozov Посмотреть сообщение
    Тут не помогу. Я в своё время код писал на бумажке, переводил в машинные коды и вводил чем-то типа FOR/DATA/POKE. По идее, должен подойти любой ассемблер, т.к. никаких наворотов в этой программе нет. Правильно ли я понимаю, что задача состоит именно в том, чтобы написать загрузчик на настоящем компьютере? Почему нельзя написать его в эмуляторе, а потом загрузить в компьютер? Я так понимаю, что до написания, что до компьютера пока далеко.
    Мне интересен процесс написания этой программы первопроходцами, а именно Newson-ом, у них же не было эмуляторов, я загрузчики защищенные при этом они писали! Как?

    Я так понимаю через операторы READ и DATA в бэйсике программа будет иметь такой вид, как приведённая мною ниже (приблизительно):

    10 DIM a(22)
    20 FOR i=1 TO 22
    30 READ a(i)
    40 POKE (25999+i),a(i)
    50 NEXT i
    60 DATA 17,255,63,33
    70 DATA 0,0,126,230
    80 DATA 7,211,254,126
    90 DATA 71,16,254,35
    100 DATA 27,122,179,32
    110 DATA 241,201
    120 RANDOMIZE USR 26000

    Только как через оператор DATA будет выглядеть строка из дампа блоков - FC13: C3 69 FE 48 48 48 48 00 :59 ???

    - - - Добавлено - - -

    Цитата Сообщение от Bedazzle Посмотреть сообщение
    Разобраться - дело похвальное. Но судя по вопросам, человеку совсем с азов начинать требуется.
    И видимо, лучше пробовать что-то проще, чем кастомный загрузчик. Например, смена цвета бордюра, тушение экрана, и т.п.
    Извиняйте за моё малознание, честно говоря идея написать этот загрузчик, запала ещё в далеких 90-х, когда я его только увидел, я долго тогда мучался с бэйсиком - думал, что получиться набрать эту программу, пока не пришло разочарование, но книги и журналы было тогда достать трудновато и стоили денег (да и лишних тогда не было), про интернет вообще тогда можно было и не мечтать - это было запредельно дорогое удовольствие, да и скорость по нашим сейчас меркам отвратительная!

    Поэтому извиняйте, но вопрос Я задам ещё один (пускаю он и не в рамках данного топика), то что ещё не освоилось в мозгах, а именно:

    Чем отличается программа набранная в GENS-4:
    10 ORG 40000
    20 ENT
    30 CALL BEGIN
    40 EI
    50 RET
    60 BEGIN DI
    70 LD A,#0F
    80 OUT (#FE),A
    90 IN A,(#FE)
    100 RRA
    110 AND #20
    120 OR #02
    130 LD C,A
    140 CP A
    150 BREAK RET NZ
    ..........................

    от программы данного счётчика???:

    org #FC13

    JP START

    ; #FC16-#FC19 - STR$ значений
    ; счетчика (единицы...тысячи).

    DEFB #48,#48,#48,#48

    ; флаг запрета/разрешения включения счетчика.

    ENABLED: DEFB #00

    ; #FC1B-#FC1C - адрес счетчика в
    ; таблице.
    DEFW #0000

    ; #FC1D-#FC20 - адрес счетчика в
    ; дисплейном файле.

    DEFW #0000
    DEFW #0000

    ; Хэдер.

    HEADER: DEFS #11
    ...........................

    Вроде и та и другая - это программа набранная в ассемблере, но одну Я набираю в GENS-4, а другую надо загонять в спектрум через двоичный дамп в конце статьи журнала ZX REVU непонятным способом!

    Так в чём в всё-таки отличия этих программ???
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	counter-mod.jpg 
Просмотров:	128 
Размер:	25.7 Кб 
ID:	70552  
    Последний раз редактировалось alex8418; 03.11.2019 в 12:37.

  7. #27

    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,691
    Спасибо Благодарностей отдано 
    302
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    159 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от alex8418 Посмотреть сообщение
    Зашёл по ссылке SkoolKit, скачал компилятор Python 3.4.3 с сайта Python.org, установил на компьютер - не разобрался в нём
    Python и SkoolKit для задачи написания своего загрузчика вам не нужны.
    Набор SkoolKit используется для исследования бинарных файлов и преобразования их в ассемблерный текст.
    Волшебства не происходит, и большую часть работы по определению что за что отвечает приходится делать глазками и ручками.

    Цитата Сообщение от alex8418 Посмотреть сообщение
    Мне интересен процесс написания этой программы первопроходцами, а именно Newson-ом, у них же не было эмуляторов, я загрузчики защищенные при этом они писали! Как?
    Коммерческий софт часто писался на более мощных машинах, там же компилировался, и заливался на zx для тестирования.

    Цитата Сообщение от alex8418 Посмотреть сообщение
    Я так понимаю через операторы READ и DATA в бэйсике программа
    А зачем вам бейсик? Пишите на ассемблере, можно прямо в эмуляторе пробовать собирать.
    Если же хочется с самых истоков, то есть к примеру, книги "Как написать игру на бейсике" и "Как написать игру на ассемблере".
    В них много чего интересного можно узнать. Можно также журналы ZX-ревю, огромный кладезь информации, но разрозненными кусочками.

    Цитата Сообщение от alex8418 Посмотреть сообщение
    Извиняйте за моё малознание, честно говоря идея написать этот загрузчик, запала ещё в далеких 90-х, когда я его только увидел, я долго тогда мучался с бэйсиком - думал, что получиться набрать эту программу, пока не пришло разочарование, но книги и журналы было тогда достать трудновато и стоили денег (да и лишних тогда не было), про интернет вообще тогда можно было и не мечтать - это было запредельно дорогое удовольствие, да и скорость по нашим сейчас меркам отвратительная!
    Зачем извиняться человеку, который ищет знаний? Это же здорово. А про 90е... у большинства наверное не было возможности добыть полезную и полную информацию.

    Цитата Сообщение от alex8418 Посмотреть сообщение
    Чем отличается программа набранная в GENS-4:
    Программа, набранная как ассемблерный текст (Gens, Tasm, Alasm, SjASM, или ещё какой, неважно) предназначена для перевода с человеком понятных текстовых команд в машинный код (набор числовых инструкций в виде файла байт).
    Далее этот файл загружается в память компьютера и запускается к примеру, через RANDOMIZE USR...

    Цитата Сообщение от alex8418 Посмотреть сообщение
    а другую надо загонять в спектрум через двоичный дамп в конце статьи журнала ZX REVU непонятным способом!
    Загонять через двоичный дамп или числами через массив DATA могли пользователи, не сильно искушённые в работе компа, не имеющие нужных навыков и/или необходимого софта (например, ассемблера).
    Тогда к примеру, настучав бейсиковую программу (а бейсик-то был доступен сразу), и запустив её, человек получал в памяти компьютера последовательность чисел. Эта последовательность (кусок оперативной памяти) сохранялась в виде файла (на ленту или диск).

    Цитата Сообщение от alex8418 Посмотреть сообщение
    Так в чём в всё-таки отличия этих программ???
    Т.е. в конечном результате разницы нет - будет получен какой-то файлик, содержащий программу (или графику, или другие данные).
    Вопрос только в удобстве средств и затраченного времени на получение этого файлика.

    Как это делалось "тогда", первопроходцами, и как это можно сделать сейчас - две большие разницы.
    Ну, и как уже предлагал - если есть время и интерес, лучше маленькими шажками, и всё-таки не с загрузчика. А, например:

    Код:
    ld hl, #4000   ; 16384
    ld de, #4001   ; 16385
    ld bc, #1AFF   ; 6911
    xor a          ; A = 0
    ld (hl), a     ; зануляем первый байт экрана
    ldir           ; очищаем экран
    ret
    Heavy on the disasm
    Eric and the disasm
    Mask 3: Venom strikes disasm
    Bard's disasm

    Этот пользователь поблагодарил Bedazzle за это полезное сообщение:

    morozov(04.11.2019)

  8. #28

    Регистрация
    19.04.2019
    Адрес
    г. Сан-Хосе, США
    Сообщений
    44
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    5 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от alex8418 Посмотреть сообщение
    Объясните пожалуйста morozov как работать с комплектом программ, по указанной Вами ссылке?
    Смотрите в Makefile. Он определяет процесс сборки:


    # Компилируем код счётчика в tap-файл
    pasmo --tap counter.asm counter.tap

    # Компилируем код бейсик-загрузчика в другой tap-файл
    bas2tap -sboot -a10 boot.bas boot.tap

    # Объединяем загрузчик, счётчик и картинку вместе
    cat counter.tap EXOLON\$$.tap >> boot.tap

    Если вы пользуетесь macOS или Linux, и при условии, то что все нужные программы у вас установлены, просто набрав make в терминале, вы получите готовый tap-файл. Из зависимостей — tap2bas для компиляции бейсик-файла в tap-образ (не знаю, чем/как собрать под Windows, но должно быть возможно) и Pasmo — кросс-компилятор ассемблера (должен работать на чём угодно).

    GNU Make устроен таким образом, что при каждом запуске он проверяет, какие из исходных файлов изменились и выполняем необходимый минимум команд, чтобы пересобрать итоговый файл. Таким образом, каждый раз после того, как я что-то поменял в исходных текстах, я набираю make и получаю готовый tap-образ.

    - - - Добавлено - - -

    Цитата Сообщение от Bedazzle Посмотреть сообщение
    Ну, и как уже предлагал - если есть время и интерес, лучше маленькими шажками, и всё-таки не с загрузчика. А, например:

    Код:
    ld hl, #4000   ; 16384
    ld de, #4001   ; 16385
    ld bc, #1AFF   ; 6911
    xor a          ; A = 0
    ld (hl), a     ; зануляем первый байт экрана
    ldir           ; очищаем экран
    ret
    Я в своё время разобрался с ассемблером и Pasmo с помощью нескольких видеоуроков. Как раз подойдёт для примера выше.
    Последний раз редактировалось morozov; 04.11.2019 в 18:16.

  9. #29

    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,691
    Спасибо Благодарностей отдано 
    302
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    159 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от morozov Посмотреть сообщение
    Я в своё время разобрался с ассемблером и Pasmo
    Как инфа топикстартеру - если я правильно понял, в европах в основном используют Pasmo, в русскоговорящей же тусовке больше распространён SjASM.

    Но по большому счёту, большинство исходных текстов программ с небольшими изменениями можно собирать в любом ассемблере.
    Heavy on the disasm
    Eric and the disasm
    Mask 3: Venom strikes disasm
    Bard's disasm

    Этот пользователь поблагодарил Bedazzle за это полезное сообщение:

    morozov(04.11.2019)

  10. #30

    Регистрация
    11.01.2008
    Адрес
    Ладошкино
    Сообщений
    1,811
    Записей в дневнике
    4
    Спасибо Благодарностей отдано 
    386
    Спасибо Благодарностей получено 
    339
    Поблагодарили
    244 сообщений
    Mentioned
    14 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну да, в УжаСме как то привычнее собирается.
    Бейсик собирал BasinC-ом, вернее Builder-ом в нем, в отладчике что-то неправильно этот пример работает.
    Интересно было бы (для меня во время задержки в 358 тактов бордюр прорисовывать, но тактов точно не хватит.
    А в целом - прикольно конечно, но не актуально
    Profi v3.2 -=- Speccy2010,r2

Страница 3 из 8 ПерваяПервая 1234567 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Хочу написать AY плеер для демо
    от gl237man в разделе Программирование
    Ответов: 11
    Последнее: 21.01.2015, 10:35
  2. Дайте инфу по защите Alkatraz
    от bakanovse в разделе Софт
    Ответов: 8
    Последнее: 13.08.2012, 11:09
  3. Ответов: 2
    Последнее: 31.05.2012, 11:43
  4. Ищу помощи в установке загрузчика-с-кассет Alkatraz
    от aeon в разделе Программирование
    Ответов: 2
    Последнее: 19.04.2011, 01:46
  5. хочу написать эмулятор
    от Виктор в разделе Разный софт
    Ответов: 25
    Последнее: 22.04.2008, 23:50

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •