nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 27 Apr 2024 05:30



Reply to topic  [ 84 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next
Текстовый редактор ПОБЕДИТ 
Author Message
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22599
Location: Silicon Valley
Reply with quote
Shaos wrote:
> Флаг (байт) 7F в адрес 762D нужно записать (выполните D0,0 и сразу U).

Есть описание всех флагов какие можно устанавливать в 762D? Я чего-то с ходу не нашёл...

И всё-таки, где флаги посмотреть можно? Почему именно 7F (0111 1111) это включение нумерации?

_________________
:dj: https://mastodon.social/@Shaos


06 Feb 2024 22:33
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 319
Location: Tashkent
Reply with quote
Shaos wrote:
Shaos wrote:
> Флаг (байт) 7F в адрес 762D нужно записать (выполните D0,0 и сразу U).

Есть описание всех флагов какие можно устанавливать в 762D? Я чего-то с ходу не нашёл...

И всё-таки, где флаги посмотреть можно? Почему именно 7F (0111 1111) это включение нумерации?
Можно и FF - разницы нет. В строке #618 это происходит.
Т.е. «GF000,» (с запятой), думаю, разрешит нумерацию строк (надо проверить)… :idea:


07 Feb 2024 03:08
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22599
Location: Silicon Valley
Reply with quote
А поконкретенее? Какие ещё флаги могут быть и т.д.

_________________
:dj: https://mastodon.social/@Shaos


07 Feb 2024 07:19
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 319
Location: Tashkent
Reply with quote
Shaos wrote:
А поконкретенее? Какие ещё флаги могут быть и т.д.
Условно - это флаг, который Монитором обнуляется при чтении параметров директивы и при обнаружении Запятой «,» выставляет FF, чтобы сигнализировать директиве I о наличии второго параметра для изменения константы скорости ввода с магнитофона.

«Победит» этим кодом маскирует все десятичные символы при отображении нумерации строк. Значит:
  • При 00/A0/60/20 вся нумерация отображается как символ 00h/20h
  • При F0/70/30 вся нумерация строк отобразится символом 30h
  • При FF (а также 7F/3F) нумерация строк отображается кодами 30h-39h
  • При EF/6F/2F нумерация строк отобразится кодами 20h-29h
  • При DF/5F/1F нумерация строк отобразится кодами 10h-19h
  • При FE/7E/3E нумерация строк исказится с маскировкой до чётных цифр
То есть, это - просто маска для ASCII и больше нигде в редакторе не используется.

В Emu80 в отладчике можно поиграться значениями и увидеть результат (но только при обновлении столбца строк).


07 Feb 2024 07:47
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22599
Location: Silicon Valley
Reply with quote
А зачем? :)
Нумерация она ведь либо есть, либо её нет - зачем остальные вариации? ;)

_________________
:dj: https://mastodon.social/@Shaos


07 Feb 2024 08:49
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 319
Location: Tashkent
Reply with quote
Shaos wrote:
А зачем? :)
Нумерация она ведь либо есть, либо её нет - зачем остальные вариации? ;)
Ну, дык, я и говорю, что всё происходит в строке #618:
Code:
;;;;;;;;;;;;;;;;;;;;;;;;;
;       BC - SCREEN POINTER
;;;;;;;;;;;;;;;;;;;;;;;;;
PUTHEX: CALL   PUTNBL   ; Печать ниббла (дважды)
PUTNBL: RRC
        RRC
        RRC             ; Прокручиваем для вывода каждого ниббла
        RRC
        PUSH    PSW
        ANI     00FH    ; Маскируем, для печати младшего ниббла
        CPI     00AH
        SBI     02FH
        DAA             ; Приводим к стандартному 0-9 и A-F в Aккумуляторе
        PUSH    H       ; Сохраняем HL, так как
        LHLD    DIGITS  ; нужно загрузить "маску" из служебной области
        ANA     L       ; и "замаскировать" аккумулятор
        POP     H       ; Восстанавливаем HL
        STAX    B       ; Выводим символ на экран
        INX     B       ; и переходим к следующей позиции
        POP     PSW
        RET
Если использовать именно один единственный бит, код станет таким:
Code:
;;;;;;;;;;;;;;;;;;;;;;;;;
;       BC - SCREEN POINTER
;;;;;;;;;;;;;;;;;;;;;;;;;
PUTHEX: CALL   PUTNBL   ; Печать ниббла (дважды)
PUTNBL: RRC
        RRC
        RRC             ; Прокручиваем для вывода каждого ниббла
        RRC
        PUSH    PSW
        ANI     00FH    ; Маскируем, для печати младшего ниббла
        CPI     00AH
        SBI     02FH
        DAA             ; Приводим к стандартному 0-9 и A-F в Aккумуляторе
        PUSH    PSW     ; Сохраняем HL, так как
        LDA     DIGITS  ; нужно загрузить "флаги" из служебной области
        ANI     040H    ; и используем лишь один некий бит
        CPI     040H    ; Только он оказывает влияние
        CMC             ; Корректируем флаги
        SBB     A       ; Формируем маску
        XTHL            ; Читаем предыдущее значение Aккумулятора
        ANA     L       ; и маскируем цифры
        POP     H       ; Восстанавливаем HL
        STAX    B       ; Выводим символ на экран
        INX     B       ; и переходим к следующей позиции
        POP     PSW
        RET
Что было бы универсальнее, но слишком громоздко (на целых 7 байтов) для ПЗУ в 2 Кб. :wink:
К тому же, в редакторе не так уж много флагов и упаковывать их в один байт не имеет смысла.
(Так же, как подпрограмма опроса клавиатуры Монитора F812 использует флаг 00 или FF в ячейке 7605, но реагирует лишь на 00 либо 01-FF в самом деле.)


07 Feb 2024 09:33
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22599
Location: Silicon Valley
Reply with quote
А какие ещё есть флаги и как они используются?

_________________
:dj: https://mastodon.social/@Shaos


07 Feb 2024 12:47
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 319
Location: Tashkent
Reply with quote
Shaos wrote:
А какие ещё есть флаги и как они используются?
Ну, тут уже всё описывалось и ничего нового я не скажу.
Кроме того, что он сам передаёт флаги в PSW при вызове пользовательского кода.
Редактор в этом плане работает как некая замкнутая среда, с вызовом пользовательского кода при нажатии управляющих комбинаций клавиш:
  • F1…F5 или УС+A…D (коды 00…04)
  • УС+E…G (коды 05…07)
  • УС+K (код 0B)
  • УС+Т…W (коды 0E…17)
  • АР2 или УС+[ (код 1B)
  • УС+\]^ (коды 1С…1E)
То есть, при редактировании текста Музыкальных Партитур или Quick Basic управляющих комбинаций более, чем достаточно, для организации поиска по шаблону, компиляции, сохранения, копирования и т.д…
Всё - под ответственность пользовательского кода.

В качестве примера, именно пользовательский код по нажатию F1 переключает буферы текста (можно и страницы памяти просто переключать), скрывает/отображает нумерацию строк и боковые границы, а по УС+E удаляет целую строку.


07 Feb 2024 13:13
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22599
Location: Silicon Valley
Reply with quote
А какие флаги то? :)

_________________
:dj: https://mastodon.social/@Shaos


07 Feb 2024 14:10
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 319
Location: Tashkent
Reply with quote
Shaos wrote:
А какие флаги то? :)
Quote:
Если указан адрес вызова пользовательской вспомогательной подпрограммы, обращение к ней происходит при нажатиях любой клавиши или клике "световым пером".
При этом через регистры общего назначения передаётся следующая информация:
  • BC - Шестнадцатеричный индекс (редактируемой) текущей строки
  • DE - Адрес на начало самой верхней отображаемой строки
  • HL - Адрес на начало текущей (редактируемой) строки
  • A - Номер столбца по позиции курсора (начало - 01) с учётом панорамы (логическая позиция)
  • CF флаг - Экран готовится к полной перерисовке (при клике "световым пером" или перемещением стрелками)
  • PF флаг - Двойной (повторный) клик "светового пера" по знакоместу с курсором
  • ZF флаг - Клавиши F1-F4, АР2 или УС+A-Z (код читается через вызов F803 обязательно, иначе возникнет зацикливание редактора/!\)
  • SF флаг - Буферная строка (редактирование в активном состоянии)
Всего этого вполне достаточно, чтобы реализовать все необходимые операции работы с текстом.


07 Feb 2024 14:42
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22599
Location: Silicon Valley
Reply with quote
И с какой стороны тут присовокупляется нумерация строк?…

_________________
:dj: https://mastodon.social/@Shaos


07 Feb 2024 16:25
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 319
Location: Tashkent
Reply with quote
Shaos wrote:
И с какой стороны тут присовокупляется нумерация строк?…
Нумерация строк - это «LDA 762D | CMA | STA 762D» в область служебных ячеек Монитора напрямую…
И на обработке (компиляции) текста никак не сказывается - чисто декоративный элемент.

Вы страницы памяти как-то переключаете?
Применительно к 128 Кб, если служебная область 7600…76CF будет попадать под страничное переключение, нужно быть осторожным и дублировать все важные для редактора ячейки.


08 Feb 2024 02:44
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22599
Location: Silicon Valley
Reply with quote
в других страницах монитором пользоваться будет нельзя

_________________
:dj: https://mastodon.social/@Shaos


08 Feb 2024 02:47
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 319
Location: Tashkent
Reply with quote
Shaos wrote:
в других страницах монитором пользоваться будет нельзя
Т.е. регион F000-F7FF можно тоже переключать и, соответственно, выбирать нужное ПЗУ?
Типа:
  • Страница #0 - под КНГМД
  • Страница #1 - под ПобЭдит
  • Страница #2 - под Yozh
  • Страница #3 - под Паскаль или Форт (запускается из-под ПобЭдита, например)


08 Feb 2024 06:13
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22599
Location: Silicon Valley
Reply with quote
Надо подумать - может быть в будущем надо сделать область переменных монитора (и экрана) опционально непереключаемой…

_________________
:dj: https://mastodon.social/@Shaos


08 Feb 2024 09:50
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 84 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next

Who is online

Users browsing this forum: No registered users and 67 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.