Сообщение от
Дмитрий
Лас, сейчас поправлю, хотя думаю уж лучше бы ld a,8: out (c),a... Кроме того... в глюке есть хоткеи по сбросу CS - выход в SOS128 ....
На что менять будем или уберем нафиг??? А то получим вечный цикл, пока на угад куда-нить вывалимся при отпускании CS.
Нет, не лучше бы out (1ffd),8.
Попробую аргументировать детально и занудно:
Я же писал, что программы, которые могут вызывать программно сервис-ром, сами устанавливают бит D3 порта 1ffd, поэтому просто в процедуре ИНИЦИАЛИЗАЦИИ программы в пзу не нужно менять состояние этого порта.
А по поводу опроса Caps Shift при старте сервис-прошивки и в зависимости от состояния "нажато/не нажато" устанавливать порт 1ffd, как я предлагал выше - это тоже неверный ход, так как, действительно, в неглюке задействована эта клавиша.
Поэтому повторюсь: просто не меняй состояние порта 1ffd ПРИ СТАРТЕ прошивки.
Не посылай туда ни ноль, ни 8, ни что либо еще.
Когда программа неглюка распакуется в ОЗУ и начнет работать там, тогда нам не важно состояние порта 1ffd, и можно засылать туда необходимые значения, что, кстати, и делается.
Вот, смотри:
1. Если мы приходим в сервис-пзу по ресету (PC=0): состояние порта 1ffd уже определено (ресетом), =0, и тем не менее мы в сервис-пзу (перемычка на плате) => не обязательно задавать состояние #1ffd
2. Если мы приходим в сервис-пзу из какой-либо программы, вызвавшей его, то состояние бита D3 порта 1ffd тоже определено - он УЖЕ установлен в 1 вызвавшей программой => не обязательно задавать состояние #1ffd
3. По привязке к капсу. Если мы приходим в сервис-ром из подпространства и не знаем состояние бита D3 1ffd, и думаем, что лучше нам в программе сервис-пзу задать определенное состояние порта, привязавшись к Caps Shift, например. Не имеет смысл этого делать, так как мы уже в сервис-пзу и уже там работаем, а установив состояние порта #1ffd=0 по клавише, после этого можем внезапно оказаться не в сервис-пзу, если перемычка на плате в обычном положении. К тому же, насколько я понял, Caps уже используется в неглюке при ресете, для быстрого выхода в 128 sos.
Неужели этих доводов мало,чтобы убедиться, что при старте прошивки не нужно вообще писать что-либо в порт 1ffd?
Код:
000b xor a
000c out (#fe),a
000e ld bc,#1ffd
0011 out (c),a ;<--- just kill this