от:NantoБыла версия "Балтик", популярная в Минске, там можно было это пространство задействовать.
Оно и на Спектруме имело человеческое строение. Через ассемблер и побитовый доступ - к любой ячейке памяти!.. Только нафига? Для оптимизации?
Там в ПЗУ нельзя было залезть - интепретатор Spectrum-Basic-a записан был...Подробнее
Про человека, изменившего мир. Не джоппц
Всего 24 сообщ.
|
Показаны 21 - 24
Re[Nanto]:
Re[Голубков Александр ]:
от:Голубков Александр
и при ошибке в коде (и перехваченном векторов прерывания по адресу 4 ) помогал только тумблер Reset и если не дать запустить фокал, то всё ОЗУ оставалось целым - можно было войти в ассемблер или в отладчик и доделать свой код.Подробнее
так и на роботроне фсё юзерское пространство после цп-м (тоечне перед цп-м... ну вобщем понятно) оставалось целым можно было тыкать ресет скоко угоддно
Re[L4m3r]:
Когда есть флопик, то уже не так актуально. Хотя я не особо был знаком с CP-M, но по моему что-то там запускать переходом на нужный адрес было бы не совсем разумно.
А тут диспеччер памяти БК-0010 был в моей памяти :) куда загрузил, туда и перадаю управление. Не шибко хорошо знаком с ассемблером Z80, но там методы адрессации располагали к написанию программ с привязкой к адресу загрузки, может CP-M линки создавало при загрузке (как МС-ДОС).
А на Бэкашке например безусловный переход с адр.20000 на 30000 выглядел чаще так 20000: jmp 30000 = т.е. jmp 10000(r7) переход по адресу в регистре R7 (счётчик команд) + фиксированное смещение (ЗЫ: могу ошибаться на +2, цифры считать было дело ассемблера, учитывать R7 или R7+2, а я использовал метки). т.е. переход на 10000 вперёд. И куда не перенеси этот кусок, вся программа в целом работала как надо. На БК это был стиль программирования, писать перемещаемые программы, на Z80 это было бы трудоёмко с его методами адресации.
А если нужна запись числа в порт (чтобы сохранить переместимоость ) типа Mov #2002, @#177676 - фактически там тоже было mov 2(R7)+, @2(r7)+ взять число из адреса регистра счётчика команд и автоинкримет на слово r7, потом взять число из адреса регистра счётчика команд и использовать его уже как адрес и автоинкримет r7 (два автоинкримента перепрыгивали два слова за кодом команды - там всё было 16 бит). Вариант записи использовали более читаемый - R7 никто не писал.
У БК оба операнда могли использовать любой регистр и любой из 8 методов адресации (с R7 эти методы давали ещё 4 вариации + с R6 работа со стеком типа mov R1,-(r6) = push "Регистр". JMP (r6)+ = ret ). После БК ограничения на 8086 немного напрягали, c памятью было удобнее работать stosw(b)/lodsw(b) адресуя от базовых регистров SI/DI и ax(al), а не от каких захочу и тем боле в какой захочу. mov память-память не было. Или цикл по любому регистру, а не только по cx (что требовалао делать PUSH CX ... POP CX ) - но потом привык и в принципе такая свобода увеличивала количество машинных циклов на БК, поэтому 8086(со своей педантичностью) при той же частоте мог более продуктивно работать.
А тут диспеччер памяти БК-0010 был в моей памяти :) куда загрузил, туда и перадаю управление. Не шибко хорошо знаком с ассемблером Z80, но там методы адрессации располагали к написанию программ с привязкой к адресу загрузки, может CP-M линки создавало при загрузке (как МС-ДОС).
А на Бэкашке например безусловный переход с адр.20000 на 30000 выглядел чаще так 20000: jmp 30000 = т.е. jmp 10000(r7) переход по адресу в регистре R7 (счётчик команд) + фиксированное смещение (ЗЫ: могу ошибаться на +2, цифры считать было дело ассемблера, учитывать R7 или R7+2, а я использовал метки). т.е. переход на 10000 вперёд. И куда не перенеси этот кусок, вся программа в целом работала как надо. На БК это был стиль программирования, писать перемещаемые программы, на Z80 это было бы трудоёмко с его методами адресации.
А если нужна запись числа в порт (чтобы сохранить переместимоость ) типа Mov #2002, @#177676 - фактически там тоже было mov 2(R7)+, @2(r7)+ взять число из адреса регистра счётчика команд и автоинкримет на слово r7, потом взять число из адреса регистра счётчика команд и использовать его уже как адрес и автоинкримет r7 (два автоинкримента перепрыгивали два слова за кодом команды - там всё было 16 бит). Вариант записи использовали более читаемый - R7 никто не писал.
У БК оба операнда могли использовать любой регистр и любой из 8 методов адресации (с R7 эти методы давали ещё 4 вариации + с R6 работа со стеком типа mov R1,-(r6) = push "Регистр". JMP (r6)+ = ret ). После БК ограничения на 8086 немного напрягали, c памятью было удобнее работать stosw(b)/lodsw(b) адресуя от базовых регистров SI/DI и ax(al), а не от каких захочу и тем боле в какой захочу. mov память-память не было. Или цикл по любому регистру, а не только по cx (что требовалао делать PUSH CX ... POP CX ) - но потом привык и в принципе такая свобода увеличивала количество машинных циклов на БК, поэтому 8086(со своей педантичностью) при той же частоте мог более продуктивно работать.
Re[Голубков Александр ]:
фиксап появился только в EXE формате. в COM унаследованом от цп-м его небыло. если надо было закинуть куда-то резидента то програмы сами себя фиксапили.
к стати об языках програмирования. был такой щыдевр фсех времён и народов INTERPROGRAM. обращаэ вниманиэ на системные требования хДДДДДД
а ц это езык шыворот на выворот. они сначала придумали езык а потом компилятор кагда фсе нармальные пацаны делают ровно на оборот.
в результате тупой 4х этажный блоат , 40 минут копмиляется 100 строк и вероятность 1% что вместо написаного выполниться нечто_странное.
но как извесно в юниксе, хороший програм это не тот который без ошыбок а который работает при любом колличестве ошыбок хДДДДДДДДДД
к стати об языках програмирования. был такой щыдевр фсех времён и народов INTERPROGRAM. обращаэ вниманиэ на системные требования хДДДДДД
а ц это езык шыворот на выворот. они сначала придумали езык а потом компилятор кагда фсе нармальные пацаны делают ровно на оборот.
в результате тупой 4х этажный блоат , 40 минут копмиляется 100 строк и вероятность 1% что вместо написаного выполниться нечто_странное.
но как извесно в юниксе, хороший програм это не тот который без ошыбок а который работает при любом колличестве ошыбок хДДДДДДДДДД
