Подключение через MAX232 к COM порту компьютера.
тыц.
Просто хочу поковырять прерывания.
Вид для печати
Подключение через MAX232 к COM порту компьютера.
тыц.
Просто хочу поковырять прерывания.
Ну вот, долго ли коротко ли, запилил новый вариант с прерываниями и новыми непонятками. Подключил RxRDY от ВВ51 к INT процессора и прошил EEPROM.
FASMG я для себя открыл только сегодня :) , поэтому еще не разобрался как обработчик прерываний штатно прикрутить к 38H, просто напихал нужное количество RST 7. Прошил, заработало. Прием данных идет по прерываниям. Только не понимаю, откуда взялась "очередь" из двух байтов? Вот пример: ввожу последовательно "ASDFG "(3 пробела в конце), а железка отвечает такой последовательностью (в шестнадцатеричном виде) "4B 40 4B 40 41 40 53 40 44 40 46 40 47 40 20 40". Откуда взялись первые два байта? Я не догоняю.Код:include "8085.inc"
;| ПРОГРАММА НАСТРОЙКИ И ПРОВЕРКИ УСАПП ВВ51А
;
INIT: DI
LXI SP,RAMTOP
MVI A,01H; УСТАНОВКА_УСАПП_В_ИСХ._СОСТОЯНИЕ
OUT CW51
OUT CW51
MVI A,IR
OUT CW51
MVI A,4FH; ЗАПИСЫВАЕМ_ИНСТРУКЦИЮ_РЕЖИМА
OUT CW51
MVI A,TXEN+DTR+RXE+RTS;27H; ЗАПИСЫВАЕМ ИНСТРУКЦИЮ КОМАНДЫ
OUT CW51
EI
HLT
;____ПОДПРОГРАММА ПЕРЕДАЧИ БАЙТА ИЗ РЕГИСТРА С_
;
TXD: PUSH PSW
;_______ЖДЕМ_ГОТОВНОСТИ_________________________
TX1: IN CW51
ANI TXRDY+DSR
CPI TXRDY+DSR
JNZ TX1
;_______ПЕРЕДАЕМ_БАЙТ___________________________
MOV A,C
OUT DAT51
POP PSW
RET
RST 7
RST 7
RST 7
RST 7
RST 7
RST 7
RST 7
RST 7
RST 7
RST 7
RST 7
RST 7
RST 7
RST 7
RST 7
RST 7
RST 7
;__________ПОДПРОГРАММА ОБРАБОТКИ ПРЕРЫВАНИЙ____
INT: DI
IN DAT51; ЧИТАЕМ БАЙТ ИЗ ПОРТА
MOV C,A
CALL TXD; ВОЗВРАЩАЕМ ПРОЧИТАННЫЙ БАЙТ В ПОРТ
MVI C,40H
CALL TXD; ОТПРАВЛЯЕМ ПРИЗНАК ОТВЕТА (@)
EI
RET
;
;_____________ВНЕШНИЕ МЕТКИ И КОНСТАНТЫ_______
RAMTOP=87FFH ;
;
;___АДРЕСА_РЕГИСТРОВ_УСАПП______________________
DAT51=00H ; РЕГИСТР ДАННЫХ
CW51=01H ; РЕГИСТР КОМАНД
;
;___КОМАНДЫ ВВ51________________________________
TXEN=01H ; ПЕРЕДАТЧИК ВКЛЮЧЕН
DTR=02H ; УСТРОЙСТВО ГОТОВО
RXE=04H ; ПРИЕМНИК ВКЛЮЧЕН
SBRK=08H ; ПРЕРЫВАНИЕ ПЕРЕДАЧИ
ER=10H ; СБРОС ОШИБОК ПРИЕМА
RTS=20H ; ПЕРЕДАЧА РАЗРЕШЕНА
IR=40H ; ПРОГР. СБРОС УСАПП
EH=80H ; РАЗРЕШЕНИЕ ПОИСКА СИНХРОСИМВОЛА
;
;__РЕГИСТР СОСТОЯНИЯ ВВ51_______________________
TXRDY=01H ; ПЕРЕДАТЧИК ГОТОВ
RXRDY=02H ; ПРИЕМНИК ГОТОВ
TXE=04H ; ПЕРЕДАЧА ЗАКОНЧЕНА
PE=08H ; ОШИБКА ЧЕТНОСТИ
OE=10H ; ПЕРЕПОЛНЕНИЕ ПРИЕМНИКА
FE=20H ; ОШИБКА ФОРМАТА
SYNDET=40H ; СИНХРОСИМВОЛ НАЙДЕН
DSR=80H ; ПЕРЕДАТЧИК ДАННЫХ ГОТОВ
;
Что-то никто не ответил на мой прошлый пост, повторю с вариациями...
Ткните носом в стандарт СР/М по организации страниц в ОЗУ. В каких адресах это должно делаться, размер страниц, порт для переключалки/маппера... Если это делалось в отечественных компах (тот же Орион), то насколько совместимо с большинством зарубежных программ получилось (чтот я сомневаюсь, что было что-то отечественное, заслуживающее внимания, если вообще что-то было),.. ну и какой может быть вменяемый оптимум памяти, чтобы можно было работать с базами данных.
Насколько я понимаю, страницы должны располагаться между адресами 100Н и С400Н, но как и где... Просто не хочу ваять заранее нерабочую отсебятину.
Всем пасиб и печенек.
А не было никакого стандарта. Если кто и делал под себя на уровне ОС, то это было сугубо индивидуальное. И программ стандартных для СР/М работающих со страничной организацией тоже не встречал. СР/М 3 позволяла свой код хранить выше 64КБайт на этом и все.
Если не прав поправьте.
- - - Добавлено - - -
Для менеджмента памяти на уровне ОС, нужны хотя бы наличие соответствующих функций в ней. В СР/М 3 я такого не припомню.
Да о каком стандарте может идти речь, когда каждый компьютер содержащий более 64 Кб имел сугубо свою организацию памяти.
На вскидку в Орионе есть такая допиленная СР/М - Альтаир ДОС v3.x. MSX тоже такой системой обзавелся - MSX-DOS 2.2. Но опять софта для этих ОС с гулькин нос. Померло так и не успев родиться.
Хм... т.е. смысла делать машинку с памятью свыше 64К нет? Выше версии 2.2 не хочу лезть...
Может и есть смысл делать свыше 64Кбайт. В то время вся эта расширенная память уходила под рам-диск, что значительно ускоряло работу в ОС.
Вам не ответили, потому что никто не знает ответа. В СССР и СНГ никто не имел CP/M 3.0, тем более в банковом варианте. И всё-же раз CP/M 3.0 поддерживает многобанковость, то значит какой-то механизм управления памятью там был. ЕМНИП помню, что читал, что там был какой-то RSX (возможно расшифровывается, как Resident System eXtension).Цитата:
Сообщение от rw6hrm
Чтобы разобраться, Вам придётся самому читать документацию по CP/M 3.0 вот здесь. И по-прежнему остаётся вопросом, есть ли компиляторы хоть каких-то ЯВУ, позволяющие писать программы использующие многобанковость (неважно, управляя ей стандартно, т.е функциями ДОС или по железу конкретной машины). Если ни компиляторов, ни программ для многобанковости нет, то зачем она?
Существует HI-TECH Z80 C Compiler 7.80PL2 c поддержкой менеджера памяти Z180 (и не только) и еще были. Только какой в них прок для ОС которая не видит больше 64 Кбайт. Другое дело применять эти компиляторы для различных специализированных систем, но это уже другая история.
rw6hrm, если и подключать дополнительно банки, то страницами по 64к. Только таким образом можно хоть как-то адаптировать систему под расширение памяти. Можно хотя бы выделить системе и приложению(ям) разные страницы. Этот принцип и с z180 должен быть совместим.