Важная информация
Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 24

Тема: Машкод из Бейсика.

  1. #1
    Member
    Регистрация
    01.03.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    57
    Благодарностей: 19

    По умолчанию Машкод из Бейсика.

    Есть ли хорошая русскоязычная (или хорошо переведённая на русский) книга о работе на низком уровне из Бейсика? Или про машкод и ассемблер вместе, но тоже грамотно написанная или грамотно переведённая.

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

    PS Логан переведён плохо.

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

    Не так вопрос формулирую. Правильно - "какая книга лучшая?".

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    2,662
    Благодарностей: 2030

    По умолчанию

    Цитата Сообщение от Sinner Посмотреть сообщение
    книга о работе на низком уровне из Бейсика?
    Звучит, как - изучаем асемблер на бейсике.

    На моей памяти, было несколько книжек издательства "Питер": "...для пользователей и программистов" и "Как написать игру для zx-spectum...", ну и перевод фирменного мануала: "Микропроцессорный комплект Z80. Книга 1".
    Последний раз редактировалось null_device; 14.09.2016 в 23:07.
    Когда есть, но не знаеш где - это все равно, что нету.

  4. #3
    Member
    Регистрация
    01.03.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    57
    Благодарностей: 19

    По умолчанию

    Цитата Сообщение от null_device Посмотреть сообщение
    Звучит, как - изучаем асемблер на бейсике.
    Я так понимаю, без Ассемблера это через POKE....PEEK делается. Ant Attack так написана вроде. И не только.

  5. #4
    Master Аватар для weiv
    Регистрация
    07.10.2006
    Адрес
    Павлоград, Днепропетровская обл., Украина
    Сообщений
    613
    Благодарностей: 239

    По умолчанию

    По мне, лучшая книга в этом плане - трехтомник Инфоркома по программированию в машинных кодах и на языке Ассемблера. Всё изложено очень доступно.
    Последний раз редактировалось weiv; 15.09.2016 в 16:14.

  6. Этот пользователь поблагодарил weiv за это полезное сообщение:
    Sinner (09.10.2016)

  7. #5
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    2,662
    Благодарностей: 2030

    По умолчанию

    Sinner, на заре жизни платформы, частенько писались программы использующие вызов машинно-кодовых процедур из бесик программы (disasters park - например).

    Цитата Сообщение от Sinner Посмотреть сообщение
    без Ассемблера это через POKE....PEEK делается. Ant Attack так написана вроде
    Что под этим подразумевается? Данные операторы осуществляют обмен данными в памяти. Если, после этого, откуда-то с этого адреса вызвается инструкция USR adr, по сути это то же выполнение машинно-кодовых процедур.
    Когда есть, но не знаеш где - это все равно, что нету.

  8. Этот пользователь поблагодарил null_device за это полезное сообщение:
    Sinner (09.10.2016)

  9. #6
    Super Moderator Аватар для Alex Rider
    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,670
    Благодарностей: 923

    По умолчанию

    Цитата Сообщение от Sinner Посмотреть сообщение
    Есть ли хорошая русскоязычная (или хорошо переведённая на русский) книга о работе на низком уровне из Бейсика?
    Прям вот отдельной книги про взаимодействие BASIC'а ми машколда не припомню. В 100500 разных мест описаны способы вызова машкода из BASIC'а и обмен данными. Вот тут, например, есть про функции пользователя. Есть еще всякоразные способы - каналы и потоки, обмен данными черезз переменные BASIC'а, подвешивание резидента (например, плеера AY-музыки) на прерывания, классический USR само собой. Можно пошукать линки. А какая задача решается?
    ZX Evolution Rev C + ZXM-SoundCard Extrme + NeoGS.

  10. Этот пользователь поблагодарил Alex Rider за это полезное сообщение:
    Sinner (09.10.2016)

  11. #7
    Member
    Регистрация
    01.03.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    57
    Благодарностей: 19

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    А какая задача решается?
    Задача хоть что-то понять.)))))))

    Нет, ну я не только на кнопку джойстика умею жать.

    Я, так-то, представляю, что есть память: ПЗУ и ОЗУ, всему этому дано какие-то цифровое пространство от нуля до скольки-то (в двоичной и шестнадцатеричной системах счисления худо-бедно считать тоже умею), где-то в ОЗУ есть рабочие области под экран и UDG. Есть процессор, в процессоре есть регистры, в которых можно оперировать с числами, загруженными из памяти, и в память их потом помещать, иногда - с каким-то видимым или слышимым результатом. Есть какие-то порты, вот они - вообще понятия не имею, как работают и как адресуются...

    Спектрумисты оперируют командами POKE и PEEK с какими-то числовыми значениями, и каким-то чудом что-то печатается на принтер, устанавливается безлимитная жизнь в играх, исполняется подпрограмма в машинных кодах, издаётся звук и мерцает BORDER и т.п. А что они сделали - мне не прочесть.

    Как они обратились к порту? И как он устроен? Как различить: считали что-то из ОЗУ, ПЗУ, из регистра процессора или порта? Как вообще что-то понимать? И чтобы хорошим языком описано - вот такую книгу хочу.

    Как пример - я не понимаю, например, это:

    Цитата Сообщение от VETER Посмотреть сообщение
    Подскажите - как правильно запускать LB на реальном спеектруме? (Феникс рев-1)
    Пока пробую на эмуле - результат - вывыливается в режим 48
    Пробую набрать - RANDOUMAIZE USR 15616 - пробую запустить "LB DEMO"- вывливается с ошибкой в строке 700
    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Для начала дай ссылку на образ диска, про который идет речь.

    Вот тут рабочий образ. Алгоритм такой:
    1. В TR-DOS: RUN "LASERBAS" - остановится с сообщением OK на строке 70 потому что в нем ошибка - неправильное имя файла.
    2. В BASIC: NEW
    3. В BASIC: RANDOMIZE USR 15616
    4. В TR-DOS: RUN "DEMO LB."
    Оригинал тут:

    http://zx-pk.ru/threads/24541-laser-basic.html

    А как узнали этот адрес для строки RANDOMIZE USR 15616 ? Как это посмотреть? А ведь в наборе программ из пакета Laser BASIC есть не только демо, но и игра, наборы спрайтов, спрайтогенератор. Как я узнаю их адреса?

    Где что вообще находится в Спектрумах?? )))))))))

    Чтобы ответить мне, надо понять, что я на сей момент умею на ZX Spectrum.

    POKE USR применительно к заданию значка для UDG доступно описан в "Диалекты Бейсика для ZX Spectrum" и "Как написать игру для ZX Spectrum" (на языке BASIC) - обе издательства "Питер". И это единственное применение POKE, которое я понимаю. К примеру... могу так (и только так):

    10 POKE USR "A" + 4, 255
    20 PRINT "A"
    (условные обозначения возьму, как в книге "Как написать игру для ZX Spectrum": подчёркнутый символ - пользовательская графика (UDG, User Defined Graphic), "ПППП" - здесь "П" - это пробел).

    Могу понять, как использовать это в распространённом примере с бегущей строкой:

    10 POKE USR "A" + 4, 255
    20 LET B$ = "ПППППППППППППППППППППППППППППППП": REM 32 probela
    30 LET A$ = B$ + "ППППAПППППAППAППППAППППAППAПППAПППAППППППППППППППAППППAППППAo" + B$
    40 FOR N=1 TO LEN A$ - 31
    50 LET B$ = A$(N TO N+31)
    60 PRINT AT 11, 0; B$: PAUSE 10
    70 NEXT N
    (такую странную строку я соорудил для того, чтобы использовать её в следующем, уже моём авторском примере).

    Я действительно могу и сам сделать что-то своё, корявое и не слишком сложное, но работающее. На основе второго примера. Хоть я и тугодум, но пока не законченный дурак:

    10 BORDER 0: PAPER 0: INK 7: CLS
    20 POKE USR "A" + 4, 255
    30 FOR i = 0 TO 7
    40 READ N: READ K: POKE USR "B" + i, N: POKE USR "C" + i, K
    50 NEXT i
    60 DATA 0, 0: DATA 56, 4: DATA 84, 8: DATA 56, 16: DATA 56, 32: DATA 40, 16: DATA 108, 8: DATA 0, 4
    70 CLS: LET B$ = "ПППППППППППППППППППППППППППППППП": REM 32 probela
    80 LET A$ = B$ + "ППППAПППППAППAППППAППППAППAПППAПППAППППППППППППППAППППAППППAo" + B$
    90 LET SC = 0: PRINT AT 0, 0; INK 6; "SCORE: "; SC
    100 PRINT AT 19, 0; INK 6; FLASH 1; "<C<C<C<C<C<C<C<C<C<C<C<C<C<C<C<C"
    110 PLOT 0, 79: DRAW 255, 0
    120 LET Y = 11
    130 LET Ground = 0
    140 FOR N=1 TO LEN A$ - 31
    150 LET B$ = A$(N TO N+31)
    160 IF INKEY$ <> "" AND (Ground = 0 OR Ground <= N) THEN LET Y=Y-1: PRINT AT Y, 15; "B"
    170 IF B$(16) = " " AND Y=11 THEN LET B$(16) = "B"
    180 IF Y=11 AND B$(16)="A" THEN GO TO 240
    190 IF Y=10 AND B$(16)="A" THEN LET SC = SC+1: PRINT AT 0, 7; INK 6; SC
    200 IF Y=11 AND B$(16)="o" THEN LET B$= "B": LET SC= SC+9: GO TO 300
    210 PRINT AT 11, 0; B$: PAUSE 10
    220 IF Y=10 THEN PRINT AT Y, 15; " ": LET Y=11: LET Ground = N+2
    230 NEXT N
    240 PRINT AT 11, 0; B$(1 TO 15); AT 11, 15; INK 2; "X"; AT 11, 16; INK 7; B$(17 TO 32): PAUSE 60: CLS
    250 PRINT AT 11, 11; INK 2; "YOU LOSE"; AT 12, 8; "YOUR SCORE IS "; SC; AT 13, 0; FLASH 1; "DO YOU WANT TO PLAY AGAIN? (Y/N)"
    260 INPUT E$
    270 IF (E$ = "Y" OR E$ = "y") THEN GO TO 70
    280 IF (E$ = "N" OR E$ = "n") THEN GO TO 400
    290 GO TO 250
    300 PRINT AT 11, 0; B$; AT 10, 15; INK 6; "o": PRINT AT 0, 7; INK 6; SC: PAUSE 30
    310 FOR N=1 TO 5
    320 PRINT AT 11, 15; " "; AT 10, 15; " "; AT 9, 15; "B"; AT 7, 15; INK 6; "o": PAUSE 15
    330 PRINT AT 7, 15; " "; AT 9, 15; " "; AT 11, 15; "B"; AT 10, 15; INK 6; "o": PAUSE 15
    340 NEXT N
    350 CLS: PRINT AT 11, 7; INK 4; "CONGRATULATIONS!"; AT 12, 12; "YOU WIN"; AT 13, 8; "YOUR SCORE IS "; SC; AT 14, 0; FLASH 1; "DO YOU WANT TO PLAY AGAIN? (Y/N)"
    360 INPUT E$
    370 IF (E$ = "Y" OR E$ = "y") THEN GO TO 70
    380 IF (E$ = "N" OR E$ = "n") THEN GO TO 400
    390 GO TO 360
    400 CLS: PAUSE 200
    Это пока наибольшее, что я могу сделать на ZX Spectrum. Собственно, благодаря этой ветке родилась моя первая игра для ZX Spectrum.))

    При этом я не до конца понимаю смысл команд PEEK и POKE, машинный код и архитектуру ZX Spectrum. Но вы видите, что я не просто скучающий тролль (хотя иногда и это тоже ). Подскажите доступную книгу.

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

    Вот такая у меня головная боль, словом...

  12. #8
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    2,662
    Благодарностей: 2030

    По умолчанию

    Sinner, выше уже давал ссылку на книгу "... для пользователей и программистов". В ней вполне доступным языком описана архитектура zx-spectrum и мнемоники машинно-кодовых процедур.

    Цитата Сообщение от Sinner Посмотреть сообщение
    как узнали этот адрес для строки RANDOMIZE USR 15616
    Как правило, все точки входа описаны в мануалах программ или "железок".
    Применительно к вышенаписанному адресу - это одна из точек входа tr-dos, наряду с 15619 (в отечественной реализации beta disk interface). В данном случае, это не вызов машкода (с адреса 15616 располагается знакогенератор), а точка аппаратного захвата.
    Когда есть, но не знаеш где - это все равно, что нету.

  13. Этот пользователь поблагодарил null_device за это полезное сообщение:
    Sinner (26.12.2016)

  14. #9

    По умолчанию

    Цитата Сообщение от Sinner Посмотреть сообщение
    Правильно - "какая книга лучшая?".
    ИМХО лучшее - это серия из 4х книг Step-by-Step Programming ZX Spectrum

    Там очень интересный подход к обучению пользователя.

    И сами подпрограммы вызываются не банальным USR ADR - а через DEF FN( c кучей параметров).

    Вот только беда в том, что на русский их не переводили.

    Но написано простым английским, читается легко и просто.

    https://wos.meulie.net/pub/sinclair/...um-BookOne.pdf

    https://wos.meulie.net/pub/sinclair/...um-BookTwo.pdf

    https://wos.meulie.net/pub/sinclair/...-BookThree.pdf

    https://wos.meulie.net/pub/sinclair/...s-BookFour.pdf

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

    Поправка, первая и вторая книги целиком про бейсик. Но пролистать советую.

    Качество сканов хорошее, вполне можно скормить FineReader-у. Ну а следом переводчику.
    Последний раз редактировалось Бука; 26.12.2016 в 14:14.
    «Земля - слишком маленькая и хрупкая корзина, для того чтобы человечество держало в ней все свои яйца…» - Роберт Энсон Хайнлайн.
    Электроника МК-61, Psion series 5mx.

  15. Эти 2 пользователя(ей) поблагодарили Бука за это полезное сообщение:
    creator (26.12.2016), Sinner (26.12.2016)

  16. #10
    Member
    Регистрация
    01.03.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    57
    Благодарностей: 19

    По умолчанию

    Цитата Сообщение от Бука Посмотреть сообщение
    И сами подпрограммы вызываются не банальным USR ADR - а через DEF FN( c кучей параметров).
    А вот это интересно, спасибо.

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

    Цитата Сообщение от null_device Посмотреть сообщение
    Как правило, все точки входа описаны в мануалах программ или "железок".
    Применительно к вышенаписанному адресу - это одна из точек входа tr-dos, наряду с 15619 (в отечественной реализации beta disk interface). В данном случае, это не вызов машкода (с адреса 15616 располагается знакогенератор), а точка аппаратного захвата.
    Спасибо большое.

    Спасибо большое всем, кто откликнулся. Всем-всем респект.

Страница 1 из 3 123 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Порча Бейсика-48 в ОЗУ
    от Максагор в разделе Программирование
    Ответов: 19
    Последнее: 13.01.2016, 00:54
  2. Спрайты из бейсика
    от Руслан в разделе Графика
    Ответов: 15
    Последнее: 26.07.2012, 20:54
  3. 30 часов БЕЙСИКА для начинающих
    от newart в разделе Пресса
    Ответов: 14
    Последнее: 13.05.2011, 13:35
  4. Ответов: 12
    Последнее: 09.01.2011, 18:31
  5. Диалекты Бейсика для ZX Spectrum
    от NUK в разделе Пресса
    Ответов: 6
    Последнее: 04.11.2009, 00:30

Ваши права

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