-
- ? Лёха Башой
- 11.02.2019 02:04
очень разумно.. тоже недавно думал о том что стоит хранить данные в полях команд..
¤
а еще интересны обфускаторы.. такие вещи можно на pdp творить с запутыванием кода...
кто что помнит из интересного?
- ? Лёха Башой
- 08.02.2019 23:03
Значит кто то публиковал "аналог" на ассемблере...
- ? Лёха Башой
- 08.02.2019 14:51
Я про другое.. про код микропрограммы который выполняется при нажатии СТОПа.. и который и вызывает 4 вектор. Где то я такое видел, но сходу не найду.
Причем этот код был в командах ассемблера.
- ? Лёха Башой
- 08.02.2019 11:10
А известно по какому вектору с блоком МСТД печатается ЗВ(зависание)?
В принципе можно попробовать исполнять код у которого вторым словом будет опкод JMP по определенному адресу (массив таких двухсловных команд). И посмотреть перейдет ли он туда.
Интересный тест.
Пультовой код в процессоре как я понимаю известен?
- ? Лёха Башой
- 07.02.2019 22:51
Да, тоже вспоминаю этот шик))
Но вот деталей зачем 2 отнимать из стека, не помню)
- ? Лёха Башой
- 07.02.2019 18:38
Помнится стек нужно было правильно восстанавливать для "неубиваемости по СТОПУ". Обычно многократное нажатие стопа вызывало странные эффекты.
Как то в клубе БК на Тульской когда только только появился редактор под марсианку - мы его умудрились стащить под носом у "клетчатого председателя"))
Прицепили БЛОК-МСТД. Перезапуск. СТОП. Тесты. Запись)
У меня так и была копия редактора со сдвинутым сохраненным курсором мыши)
- ? Лёха Башой
- 06.02.2019 00:26
Скрипт понравился)
- ? Лёха Башой
- 06.02.2019 00:25
Спасибо)))
- ? Лёха Башой
- 06.02.2019 00:15
Спасибо) СТОП гораздо нужнее ШАГа в скрипте) неравнозначный пример)
Ушел тестить)
- ? Лёха Башой
- 05.02.2019 18:19
ну если только кому то ШАГ нужно ввести скриптом...
А СИ к вводу с клавиатуры ну никакого отношения...
Можно любым кодом расширить функционал, тем же ШАГ например.. 0, 0 - ШАГ 0 FF - СТОП. Остальное по мере необходимости.
- ? Лёха Башой
- 04.02.2019 23:08
СТОП можно нулевым символом считать
- ? Лёха Башой
- 04.02.2019 18:21
В интерфейсе скрипты каким образом задаются? Так чтобы что то выполнить... И есть ли в скрипте возможность СТОП нажать.
- ? Лёха Башой
- 03.02.2019 23:59
Кстати есть и другой вариант.. Найти окно эмулятора в структурах Windows и посылать события о "нажатых" клавишах в него. Внешней программой.
Почти хакерский метод. Для меня он проще, где то валялся рабочий пример)
Но решение будет "не для народа".
- ? Лёха Башой
- 03.02.2019 23:23
Если бы я на своей XP мог бы компилить, я бы сделал)
Впрочем еще не вечер...
¤
Обычное текстовое окно как в notepad. С единственной кнопкой TYPE. При нажатии всё содержимое начинает с задержками уходить в эмулятор в виде прерываний по клавиатуре (30, 274).
Учитываются регистры РУС/ЛАТ и прочие. Работы прилично...
- ? Лёха Башой
- 03.02.2019 14:16
Соответственно сиё полезно для любых программ оперирующих с вводом информации с клавиатуры.
- ? Лёха Башой
- 03.02.2019 14:15
Ув.тов.gid :) Идея для улучшения функционала эмулятора.
Видел такое в OpenMsx - возможность "впечатывания" текста через окошко интерфейса. Задаём кусок листинга - например на бейсике в текстовое окно.
Эмулятор сам используя прерывания "генерирует" последовательность кодов для ввода данной информации.
Очень удобная штука для разработки.
Я бы пользовался а не придумывал внешние конверторы )
- ? Лёха Башой
- 30.01.2019 22:29
а говнобарахолка это где? )
- ? Лёха Башой
- 25.01.2019 20:56
А микрокод процессора доступен? ))
- ? Лёха Башой
- 25.01.2019 16:58
ИР13 - 8 разрядный регистр... Значит видеопамять читается побайтно или там всё же два ИР13?
- ? Лёха Башой
- 25.01.2019 16:56
Ну вот собственно этого я и не увидел. )) Паззл не сложился.
Поэтому и писал про точную модель чтения "видеопамяти". Как это мешает(согласуется) с работой процессора. И так далее.
Описал бы кто кому доступна вся картинка в голове. Сколько процентов времени шина занята формированием картинки. И так далее.
Посмотрел в параллельные файлы по 037 на гитхабе - там есть qbus_read/write.
- ? Лёха Башой
- 25.01.2019 11:23
Ниасилил. Не увидел даже где он память вычитывает. Может оно там и есть в завуалированной форме)) Но понять логику работы не зная всей картины целиком...
Проще проанализровать поведение "монитора" при запуске тестов.
- ? Лёха Башой
- 24.01.2019 22:45
THE STORY SO FAR
¤
It is 2501, 100 years after the Great War. The North American continent is
ruled by mighty warlords in constant conflict over forest territory. You
are one of the elite mercenaries, Riders of the Big Bikes. It's a quick
way to get rich - and a quicker way to die. You patrol your forest day and
night, chasing enemy Riders and destroying them with your guided photon
bolts for $1000 a time. You may find helicopters and tanks too - your
masters reward you particularly well if you destroy these.
¤
You can only fire at the other Riders when at top speed and cannot hit
them unless you are close enough - your range indicator will flash when
you are in range and your purse increases as long as your are in such
hot pursuit.
¤
It is said that the greatest reward is kept for the Rider who can
penetrate 8 sectors - you will need every ounce of skill to find out...
- ? Лёха Башой
- 24.01.2019 22:45
В правилах к Deathchase много интересного))
- ? Лёха Башой
- 24.01.2019 22:32
Есть еще одна инструкция без префикса LOCK которая гарантирует эксклюзивный доступ к содержанию ячейки)) XCHG [EAX], EBX
- ? Лёха Башой
- 24.01.2019 22:08
Был кстати какой-то классический алгоритм на 2-3х переменных для организации блокировки выполнения. Без ассемблера.
- ? Лёха Башой
- 24.01.2019 21:53
Думаю что инструкция CMP [EAX], 0 в цикле - будет жрать процессор... Смысл LOCK - сделать INC атомарным, чтобы этот код мог в разных тредах запускаться одновременно.
- ? Лёха Башой
- 24.01.2019 20:31
Кстати подозреваю что память для видео нужно читать почти постоянно, 32 слова. Каждые 4 такта. И в этом есть определенное ускорение.
If(VideoUpdate) Get_Next_Video_Word();
¤
...
VideoCounter++;
If(VideoCounter > 32) VideoUpdate=0;
if(VideoCounter > 32+16) { VideoUpdate=1; VideoCounter=0; }
- ? Лёха Башой
- 24.01.2019 20:15
Если разбить эмуляцию процессора в каждой команде на стадии (чтение памяти / внутренние операции / чтение памяти / внутренние).
И жить этими категориями, то можно сделать эмуляцию всего в одном потоке. Пусть будет не совсем точно.
Но один процесс дойдя до нужной стадии будет снимать 16 бит для видео, состояние системного регистра для звука, чтение или запись памяти для CPU.
А далее мы будем редактировать только таблицу команд.
¤
Для старта я бы разделил всё время пополам. Ввел бы таблицу тиков ближайших событий (чтение видеопамяти / чтение данных с шины).
Как-то так. Готов попробовать написать такой код.
- ? Лёха Башой
- 24.01.2019 20:07
А кто-нибудь может описать точно как ВП1-037 работает?
В схемы и диаграммы не тыкать, я их понимаю только при очень большой нагрузке на примитивном уровне)
192 тика генератора (3Mhz) уйдет на ТВ строку. Из них будет прочитано (необходимость) 32 слова по 16 бит. Это займет 128тиков. 64 тика на отрисовку бордюров и обратный ход луча.
Есть подозрение что машинное слово(16 бит) может быть прочитано не быстрее чем за 4 тика. (2 тика отдано ВП1-037), 2 тика отдано процессору.
Опять же. Диаграмм не знаю - могу чушь пороть. Но близкую к реальности.
- ? Лёха Башой
- 24.01.2019 19:52
Фокал для меня один - в заводской ПЗУ.
У меня есть любимая игрушка на фокале. Занимает память под завязку. OS0010F будет отдыхать. Но за информацию спасибо)
- ? Лёха Башой
- 24.01.2019 15:59
А можно инструкцию? Как перевести диапозон 120-177 в ОЗУ. Не было у меня СМК никогда.
- ? Лёха Башой
- 24.01.2019 15:09
Звук вероятно пакетами отправляется в звуковую карту. Ушел пакет - пошли готовить новый пакет путем запуска эмуляции)
- ? Лёха Башой
- 24.01.2019 14:39
Тогда просьба сделать еще одну конфигурацию. +24кб ОЗУ с 120.000
Конфигурация имеет право на жизнь)
Можно подгрузить свои версии фокала, бейсика или чего угодно. Отпатчить.
Во всяком случае у меня есть железо, было бы неплохо отлаживаться в эмуляторе.
- ? Лёха Башой
- 24.01.2019 13:20
Хотя написано )) доп.ОЗУ ))
- ? Лёха Башой
- 24.01.2019 13:11
Кажется понял.. Никакой доп.памяи)) Только монитор. У меня в моей БКшке на столе в страницах 120,140,160 статика)
Можно прикрутить ОЗУ туда? ))
- ? Лёха Башой
- 24.01.2019 12:41
Конфигурация .01 + 32кб ОЗУ.. попытка записи в 140000+ приводит к классическому СТОПу.. Как доп ОЗУ реализовано? Думал просто память. Пиши да гуляй)
- ? Лёха Башой
- 24.01.2019 11:56
Фикс будет? )) Пусть вместо пупырушка хоть котик.. Лишь бы можно было пользоваться)
- ? Лёха Башой
- 23.01.2019 23:29
Всем известна эта игрушка. А у неё есть прототип на спектруме. Вспомните название?
- ? Лёха Башой
- 23.01.2019 22:55
О времена)) В 2001м году кто бы знал что через 18 лет на XP не будет поддерживаться даже эмулятор БК-0010 )))
- ? Лёха Башой
- 23.01.2019 22:01
И еще Фокал генерирует "случайные" числа как описано выше, а не как придумал Зальцман. Никаких тупо считанных слов из ПЗУ.
- ? Лёха Башой
- 23.01.2019 19:53
Причем тут "хотя бы"? Или Бейсик, или Зальцман.
Я просто описал как работает генератор у фокала. Справился с задачей?
Задача у меня была наоборот "чит" путем предсказывания следующего "случайного числа".
¤
А таймер если он уже занят определенной задачей. Разве что в синхронизации с нажатиями клавиш годен для случайного числа, да и то получить случайный байт.
А не слово. Таймер на максимальной скорости 16 бит пробегает примерно за 2.8 секунды. Маловата скорость для генерации чисел.
- ? Лёха Башой
- 23.01.2019 16:44
Дабы не вводить в заблуждение: -1.0000 (100000) фокал интерпретирует как 0 (-0).
- ? Лёха Башой
- 23.01.2019 16:36
Используется 16 битный сдвиговый регистр с обратной связью (LFSR). Стартовое значение 107654.
12 сдвигов влево, младший бит загружается в 1, если предыдущее значение Bit14 == Bit13.
FRAN() интерпретирует это 16 битное значение как дробное знаковое (/32768)
¤
Первые числа генератора после включения:
¤
(-0.391571)146741 (+0.165863)012473 (-0.561829)134026 (+0.804443)063370 (-0.917053)105236 (-0.155914)166013 (-0.550903)134574
¤
Всего 32767 состояний у генератора (знаковый бит15 не участвует в генерации следующего значения.
-1 (100000) фокал интерпретирует как 0 (-0).
- ? Лёха Башой
- 23.01.2019 15:31
Ни кнопкой "Точка останова" в меню)
- ? Лёха Башой
- 23.01.2019 15:31
Еще раз проверил (3.9 XP Версия). Ни мышкой ни клавишами точка останова не поставилась.
- ? Лёха Башой
- 22.01.2019 17:00
А да.. Еще (ну хочется) чтобы в лог попадали фактические чтения памяти (особенно при косвенных адресациях). PDP-11 бывает крайне сложен в понимании логики программы.
Каждый раз гулять дважды в память за косвенной адресацией тяжко. Видимо придется компилить эмулятор самому))
- ? Лёха Башой
- 22.01.2019 13:23
Мне не суть, врёт или не врёт. Мне как точка привязки. Кстати попробовал точки останова, пошаговое. Сильно поломан отладчик. Точку останова не подсвечивает в листинге. Соответственно непонятно как её снимать. На команде RTI сделал пошаговый - потерял управление. Придется вернуться в 3.0 для текущей задачи.
- ? Лёха Башой
- 22.01.2019 12:41
Вопрос по эмулятору. А можно ли в эмулятор прицепить TRACE.LOG работы процессора. Я часто копаюсь в коде - облегчило бы жизнь. Пусть очень медленно - не принципиально.
Дамп регистров каждую команду + Состояние таймера.
- ? Лёха Башой
- 22.01.2019 01:44
Основательно переработы клавиши в 3.9
Стереть старые версии от греха подальше))
- ? Лёха Башой
- 22.01.2019 01:29
Ура! Проблема с загрузкой файлов фокала была решена)))
-
1 | 2 | »
?