Просмотр полной версии : Basic прерывания
Bedazzle
05.08.2016, 13:14
Что-то не могу сообразить, по каким словам гуглить, подскажите.
1. Во время работы бейсика (как я понимаю), работают прерывания. Что и чем обрабатывается?
Видимо (как минимум), идёт опрос клавиатуры и увеличивается переменная FRAMES. Что-то ещё?
2. Какое минимальное значение можно задать в Clear, чтобы не порушилась работоспособность куска в машкоде, если работают стандартные прерывания? (скажем, на голом 48м)
SAM style
05.08.2016, 13:57
Что-то не могу сообразить, по каким словам гуглить, подскажите.
1. Во время работы бейсика (как я понимаю), работают прерывания. Что и чем обрабатывается?
Видимо (как минимум), идёт опрос клавиатуры и увеличивается переменная FRAMES. Что-то ещё?Стандартная процедура обработки прерываний в режимах IM0/IM1 находится в ПЗУ по адресу 56. В основном только опрос клавиатуры (остальное зависит от реализации), кроме нескольких системных переменных ничего не меняется.
2. Какое минимальное значение можно задать в Clear, чтобы не порушилась работоспособность куска в машкоде, если работают стандартные прерывания? (скажем, на голом 48м)Адрес начала кода минус 1. А что до самого минимального - зависит от длины бейсик-части и области переменных
null_device
05.08.2016, 14:45
Какое минимальное значение можно задать в Clear, чтобы не порушилась работоспособность куска в машкоде
Как правило, код располагается в адресах "выше" значения переменной CLEAR. Есть, правда одна тонкость: некоторые процедуры "стандартного" ПЗУ приводят к увеличению стека, что может вызвать сообщение об ошибке (или порчу бейсик-программы, ее переменных и самого листинга).
Во время работы бейсика (как я понимаю), работают прерывания. Что и чем обрабатывается?
Режимы работы прерываний, неплохо описаны в книжке "... для пользователей и программистов".
Bedazzle
05.08.2016, 15:15
А что до самого минимального - зависит от длины бейсик-части и области переменных
ну, там минимальное
clear val "xxxxx": load "" code: randomize usr val "yyyyy"
- - - Добавлено - - -
Режимы работы прерываний, неплохо описаны в книжке "... для пользователей и программистов".
о, да, спасибо!
SAM style
05.08.2016, 15:58
ну, там минимальное
clear val "xxxxx": load "" code: randomize usr val "yyyyy"
24000, думаю, хватит, (с натяжкой для TRDOS)
Alex Rider
05.08.2016, 19:50
ну, там минимальное
Зависит от длины загрузчика. Подбирай методом тыка. Но да, где-то в районе 24000 для самого примитивного загрузчика.
Bedazzle
06.08.2016, 00:14
Побаловался. На 48й машине загрузчик вида
10 clear val "23952": load "" code: randomize usr val "23953"
нормально загружается в Spectaculator / EmuZwin и код стартует.
Barmaley_m
22.08.2016, 02:45
Кстати, по моим подсчетам, вместо val "23952" лучше использовать 0 (без кавычек) и соответственно правленое двоичное представление числа. В случае val имеем 8 байт на число, в случае правленого 0 - 7 байт.
OrionExt
22.08.2016, 04:04
С такими умными вопросами (и ответами) ТС. На твои вопросы есть полностью описанный ром-спектрум с 2000г. Тя ждет. Поищи. Я еще это чудо-биос на Ориону запускал. :v2_dizzy_tired2:
- - - Добавлено - - -
Как это давно было. И бордюр. И Круги мне на Орионе рисовал. Эх 20….)
iceoflame
22.08.2016, 10:09
Побаловался. На 48й машине загрузчик вида
10 clear val "23952": load "" code: randomize usr val "23953"
нормально загружается в Spectaculator / EmuZwin и код стартует.
Если это загрузчик или не большая программа, то кто мешает его залепить вообще в бейсик строку.
типа
10 rem ___________________________ и вместо ___ скомпилировать свой код туда.
в хитрых загрузчиках делил строку вида
0 RANDOMIZE USR 0: REM ________________________
И меняли представление числа 0 на нужное :-)
Bedazzle
22.08.2016, 11:22
Если это загрузчик или не большая программа, то кто мешает его залепить вообще в бейсик строку.
Задача загрузить максимально большой кодовый блок на 48й машине, чтобы не порушились переменные (точно используются FRAMES и LAST_K).
В проекте, который ковыряю, грузится начиная с 24100, но уже получилось чутка подвинуть.
в хитрых загрузчиках делил строку вида
0 RANDOMIZE USR 0: REM ________________________
И меняли представление числа 0 на нужное :-)
Вроде как TRDOS не умеет запускать "нулевую" строку автозапуском.
iceoflame
22.08.2016, 17:29
Задача загрузить максимально большой кодовый блок на 48й машине, чтобы не порушились переменные (точно используются FRAMES и LAST_K).
В проекте, который ковыряю, грузится начиная с 24100, но уже получилось чутка подвинуть.
Не поверите, экран тоже память, можно и туда загрузчик лепить и стек. Как загружали игрушки которые были запороты MAGIC, например версия RENEGADE Билла Гилберта, которая перекрывала системные переменные (они только для бэйсика нужны то по сути). Грузили с 24500, под потолок, потом кусок, который ложится на системные переменные, грузили в экран и там ldir перебрасывали на свое место (кусок загрузчика на экране и стек там же).
В проекте, который ковыряю
нашёл у себя мануал к HoM там в-конце какие-то дикие запреты на "modified in any form" кода/графики/текста и.т.д.
хотя одному англичанину это не помешало сделать порт под win.
demo+исходники http://spraydough.co.uk/?p=66
......................
слабонервным лучше это демо не-смотреть.
(просто издевательство над игрой)
Bedazzle
22.08.2016, 21:27
нашёл у себя мануал к HoM там в-конце какие-то дикие запреты на "modified in any form" кода/графики/текста и.т.д.
Оно в оригинальной инструкции первого издания есть, да.
А вот в переизданиях Rebound, или в Magnificent 7 таких ужасов не написано, там же только вкладыш в коробке кассеты, ровно как и в Amstrad action. :)
И в Rebound для CPC небольшая книжечка, и тоже нифига, кроме (c)Gargoyle games 1988
Из-за пугалок и уважения пытался связаться с Отцами. Разрешения получено не было (только отписка, что типа права отданы какой-то софтофирме). Поэтому ковырялок пока не показываю.
хотя одному англичанину это не помешало сделать порт под win.
demo+исходники http://spraydough.co.uk/?p=66
Это не порт, а мини-игрушка "по мотивам", использующая выдранную со спека графику. Он ещё делал ASCII версию игрушки. :) У него всё застопорилось по причине отсутствия художника.
Говорил с ним, если разрешение будет, он заинтересован в создании полноценного порта/продолжения.
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot