Важная информация

User Tag List

Страница 61 из 112 ПерваяПервая ... 575859606162636465 ... ПоследняяПоследняя
Показано с 601 по 610 из 1114

Тема: Эмулятор УКНЦ - UKNCBTL

  1. #601
    Veteran
    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Именно безумный стиль
    "Си — инструмент, острый, как бритва: с его помощью можно создать и элегантную программу, и кровавое месиво"
    (С) я думаю всё знают чей =)

  2. #601
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #602
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    можно писать преобразование типов, скажем, не k = (long)i, а k = long(i).
    Насколько я понимаю - в первом случае к объекту i применяется копирование типа long, а во втором случае сначала создаётся новый объект типа long - т.е. вызывается его конструктор, получающий значение объекта i в качестве начального значения, а потом копируется уже вновь созданный объект. Если включена оптимизация - код может получиться одинаковым, а если нет - первый вариант будет короче.

  4. #603
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,597
    Спасибо Благодарностей отдано 
    1,240
    Спасибо Благодарностей получено 
    1,804
    Поблагодарили
    694 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Насколько я понимаю - в первом случае к объекту i применяется копирование типа long, а во втором случае сначала создаётся новый объект типа long - т.е. вызывается его конструктор, получающий значение объекта i в качестве начального значения, а потом копируется уже вновь созданный объект. Если включена оптимизация - код может получиться одинаковым, а если нет - первый вариант будет короче.
    Не знаю, какие там обьекты, в инструкции про это ничего не сказано) Сказано, что синтаксис может быть и таким, и таким)

  5. #604
    R.I.P. Аватар для hobot
    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    370
    Поблагодарили
    309 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Про ООП (но не про Си!)

    Скрытый текст


    Я не проф. и Си вообще всегда бежал, но вот Паскаль от УК-НЦ потом турбо-паскаль в ДОС - для удовольствия и наконец Delphi под Win. ООП - конструкторы\диструкторы я понял только из объяснений Patrona - слишком заумные мне попадались видимо толкователи до этого.

    Но я вот что хотел сказать то - читал учебник (автора не помню), по Delphi, где автор полностью отказался от термина ООП и вообще не использовал его ни разу ни на одной странице (единственный учебник в котором автор на одном со мной языке говорил про ООП паскаль и Delphi), он вводит там такой термин Событийно Ориентированное Программирование.

    Мне например "методы" ? Ну то есть переменные объекта, которые через
    точку пишутся очень обрадовали! Но потребовалось время что-бы привыкнуть воспринимать и код и результат по новому, если раньше программа была строго линейная (или я такой как рельсы прямой!), то есть автоматом вылетала в монитор
    когда доходила до END., то под Win созданное окно так и будет висеть и получать сообщения. В целом это я так - впечатлениями делюсь, но мне например
    нелегко было отказаться от циклов и некоторых других вещей которые "не рекомендуются" при СОП, просто потому-что не нужны или не желательны или требуют дополнительного обслуживания (я имею в виду ProcessMessages).

    И странное дело, вот объяснения Patrona я понимаю, а код из примеров (сам синтаксис Си для меня всегда был страшен - может потому что я
    начинал с Бейсика на БК0010? Но все эти фигурные скобочки - у меня
    ассоциация с комментами из паскаля ))) Паскаль - просто больше похож
    (Delphi сюда же). на язык человека и наглядней (для меня) для простых
    вычислений. Но я не профи.
    [свернуть]


    Вот кстати говоря вопрос такой - если Си родился из макро-11 (а судя
    по данным многие профессионалы сразу начинали с той самой версии,
    минуя ассемблер, где Паскаль впервые в виде транслятора появился,
    так же на PDP? (наверное это легко нагуглить, но всё же).

    ---------- Post added at 20:35 ---------- Previous post was at 20:34 ----------

    Цитата Сообщение от Titus Посмотреть сообщение
    Если включена оптимизация - код может получиться одинаковым, а если нет - первый вариант будет короче.
    Главное - какой будет быстрее работать?
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

  6. #605
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от hobot Посмотреть сообщение
    Главное - какой будет быстрее работать?
    Сейчас оптимизаторы достигли такой крутизны, что при включённой глобальной оптимизации - вызов целого вороха вложенных функций может скомпилироваться в одну-две ассемблерных команды вообще без всяких вызовов подпрограмм.

    Когда я впервые в жизни включил глобальную оптимизацию и посмотрел ассемблерный листинг компиляции - то очень удивился. Из функций исчезли прологи и эпилоги, а аргументы стали передаваться в регистрах вместо стека. Если функция не числится глобальной (а значит не должна быть доступна в OBJ-файле в виде глобального имени) - оптимизатор может иногда вообще не компилировать её, а подставлять в точках вызовов как макрос.
    Последний раз редактировалось Patron; 30.01.2013 в 20:49.

  7. #606
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    1,999
    Спасибо Благодарностей отдано 
    1,066
    Спасибо Благодарностей получено 
    1,236
    Поблагодарили
    479 сообщений
    Mentioned
    15 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Patron, Vamos -- спасибо за критику и вклад в проект.
    Сейчас станции уже начинают пытаться переговариваться, но сбиваются.



    При этом на принимающей станции выпадает в СТОП.

    Загрузчик из сети в ПЗУ (спасибо Alex_K):
    Код:
    ; Загрузчик из сети
    164160$:MTPS	#340		; Запретить прерывания
    	MOVB	@#176561,R5	; Выделение в R5 номера сетевой станции
    	MOV	R5,R0
    	BIC	#177760,R5
    	ASR	R0
    	BIC	#177717,R0
    	BIS	R0,R5
    	MOVB	R5,164556$	; Сохранение номера сетевой станции
    	MOVB	164572$,R0	; R0 = 173(8)
    	XOR	R5,R0		; R0 = 173(8) XOR номер_сетевой_станции
    	MOVB	R0,164572$
    	MOV	#30,R0		; R0 = 30 (адрес вектора команды EMT)
    	MOV	#164500$-164160$+1000,(R0)+ ; Установка вектора прерывания EMT
    	CLR	(R0)+		; Установка ССП при вызове EMT
    	MOV	#164512$-164160$+1000,(R0)+ ; Установка вектора прерывания TRAP
    	CLR	(R0)+		; Установка ССП при вызове TRAP
    164244$:MOV	#10000,SP	; Установка указателя стека
    	MOV	#164526$-164160$+1000,@#100 ; Устан. вект. прер. сет. таймера
    	CLR	@#102
    	MTPS	#0		; Разрешить прерывания
    	CLR	164534$		; Очистка счетчика ожидания
    164272$:TRAP	0		; Чтение пришедшего байта
    	CMP	164534$,#5	; Счетчик ожидания больше пяти
    	BLO	164272$		; Нет
    164304$:EMT	0		; Посылка и чтение очередного байта
    	CMPB	#376,R0		; Пришедший байт равен 376(8)
    	BNE	164304$		; Нет
    	MOV	#164554$-164160$+1000,R1 ; R1 = адрес блока передачи
    164320$:MOVB	(R1)+,R0	; R0 = очередной байт из блока передачи
    	CMPB	#376,R0		; Он равен 376(8) ?
    	BEQ	164334$		; Да
    	EMT	0		; Посылка и чтение очередного байта
    	BR	164320$
    164334$:EMT	0		; Посылка и чтение очередного байта
    	CMPB	#377,R0		; Прочитанный байт равен 377(8) ?
    	BNE	164334$		; Нет
    	EMT	0		; Посылка и чтение очередного байта
    	CMPB	R5,R0		; Полученный байт равен номеру станции ?
    	BNE	164334$		; Нет
    	MOV	#377,R4		; R4 = 377(8) (контрольная сумма)
    	XOR	R0,R4		; R4 = 377(8) XOR номер_сетевой_станции
    	MOV	#50000,R1	; R1 = адрес расположения загрузчика
    	EMT	0		; Посылка и чтение очередного байта
    	MOV	R0,R3		; R3 = считанный байт
    	XOR	R0,R4		; Подсчет контрольной суммы
    164372$:EMT	0		; Посылка и чтение очередного байта
    	CMPB	#373,R0		; Считанный байт равен 373(8) ?
    	BLOS	164410$		; Выше или равен 373(8)
    	XOR	R0,R4		; Подсчет контрольной суммы
    	MOVB	R0,(R1)+	; Передача принятого байта в память
    	BR	164372$
    164410$:BNE	164426$		; Принятый байт равен не равен 373(8)
    	EMT	0		; Посылка и чтение очередного байта
    	COM	R0		; Инверсия принятого байта
    	XOR	R0,R4		; Подсчет контрольной суммы
    	MOVB	R0,(R1)+	; Передача принятого байта в память
    	COM	R0		; Инверсия для передачи
    	BR	164372$
    164426$:CMPB	#374,R0		; Принятый байт равен 374(8)
    	BNE	164244$		; Нет
    	EMT	0		; Посылка и передача байта
    	CMPB	R0,R4		; Он равен контрольной сумме ?
    	BNE	164244$		; Нет
    	EMT	0		; Посылка и передача байта
    	BISB	#10,R0		; R0 = R0 OR 10(8)
    	EMT	0		; Посылка и передача байта
    	CMPB	#377,R0		; Принятый байт равен 377(8)
    	BNE	164244$		; Нет
    	EMT	0		; Посылка и передача байта
    	MOV	#4,@#176560	; Включение кольцевой сети
    	MTPS	#340		; Запретить прерывания
    	JMP	@#50000		; Переход на исполнение загрузчика
    ; Подпрограмма передачи байта в локальную сеть (исполнение команды EMT)
    164500$:TSTB	@#176564	; Передатчик СА готов ?
    	BPL	164500$		; Нет
    	MOVB	R0,@#176566	; Передача байта в сеть
    ; Подпрограмма чтения байта, пришедшего по сети (исполнение команды TRAP)
    164512$:TSTB	@#176560	; Приемник СА готов ?
    	BPL	164512$		; Нет
    	MOVB	@#176562,R0	; Прием байта из сети
    	RTI
    ; Подпрограмма исполнения прерываний таймера
    164526$:CLR	@#176560	; Включение режима загрузки
    	INC	(PC)+		; Инкремент счетчика ожидания
    164534$:.WORD	0
    	CMP	164534$,#1000	; Счетчик ожидания превысил лимит времени ?
    	BHI	164550$		; Да
    	RTI
    164550$:JMP	164244$
    ; Блок передачи в сеть
    164554$:.BYTE	377,0,0,204,0,0,0,0,0,0,0,0,0,374,173,60,377,376,0,0

  8. #607
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Сейчас станции уже начинают пытаться переговариваться, но сбиваются.
    Это происходит из-за того, что в эмулируемом порту (почему-то) эмулируется overrun.
    Можно вставить в эмулятор слежение за битом 012 в регистре состояния приёмника и убедиться.

  9. #608
    Master
    Регистрация
    05.03.2010
    Адрес
    Санкт-Петербург
    Сообщений
    781
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Так вот он какой 1801ВП-065, там оказывается есть бит 0 и бит 2 в регистре состояния приемника.
    Бит 2 это вывод ST, программное управление вкл./выкл. станции из кольцевой сети.
    Бит 0 ??? , разрыв линии

    Получается это те самые DTR/DSR которые и должны были быть 107, 108 на стыке С2

  10. #609
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    607
    Поблагодарили
    399 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vamos Посмотреть сообщение
    Так вот он какой 1801ВП-065, там оказывается есть бит 0 и бит 2 в регистре состояния приемника.
    Бит 2 это вывод ST, программное управление вкл./выкл. станции из кольцевой сети.
    Бит 0 ??? , разрыв линии

    Получается это те самые DTR/DSR которые и должны были быть 107, 108 на стыке С2
    Уже писалось, что линии квитирования ни на какие биты не выводятся, квитирование делается полностью аппаратно самим 1801ВП1-065.
    Бит 0 - разрыв линии - это посылка BREAK.
    А вывод ST - это не бит 2, а сигнал "свой адрес". Благодаря этому можно на неиспользуемые биты 1801ВП1-065 вешать свою обвязку без необходимости дешифрации адреса. В этом случае достаточно запомнить только младшие биты (различать приемник, передатчик, регистры данных) и реагировать на сигналы DIN, DOUT. Сигнал RPLY выставит сама 1801ВП1-065. Вот в этой обвязке есть номер станции и управление электронным коммутатором сети.

  11. #610
    Master
    Регистрация
    05.03.2010
    Адрес
    Санкт-Петербург
    Сообщений
    781
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Это происходит из-за того, что в эмулируемом порту (почему-то) эмулируется overrun.
    А подскажите пожалуйста как в НХ сервере сделана работа с СОМ портом, что переполнения не происходит.

Страница 61 из 112 ПерваяПервая ... 575859606162636465 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Эмулятор УКНЦ - EmuStudio
    от Titus в разделе Эмуляторы отечественных компьютеров
    Ответов: 1191
    Последнее: 15.02.2024, 13:32
  2. Ответов: 231
    Последнее: 21.03.2022, 07:54
  3. Эмулятор УКНЦ на JavaScript
    от nzeemin в разделе Эмуляторы отечественных компьютеров
    Ответов: 4
    Последнее: 27.04.2021, 14:26
  4. УКНЦ и Gotec Flash Floppy эмулятор
    от Ynicky в разделе ДВК, УКНЦ
    Ответов: 10
    Последнее: 10.09.2019, 04:34
  5. Продам МС5310 блок дисководов к УКНЦ+КМД УКНЦ
    от Mad Killer/PG в разделе Барахолка (архив)
    Ответов: 7
    Последнее: 19.03.2012, 11:27

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •