ZXNet эхоконференция «code.zx»


тема: PC <-> ZX link sourse (ZX)



от: Aleksandr Majorov
кому: Dmitriy Dobretsov
дата: 07 Jan 1999
Пpиветствую тебя, о дpажайший(ая/ое) Dmitriy! Once in morning 07-01-98 04:18:53 somebody Dmitriy Dobretsov has written to Aleksandr Majorov about 'Гальваническая развязка'. [ ] AM>> если интересно могу сорцы кинуть в .code, покажешь AM>> где можно оптимизнуть.. DD> кинь,если не влом... Вот кидаю... Сразу говорю - для ZX я более-менее все оптимизнул, а для ПЦ - нет... Тама я вообще все задержки ожидания подбирал эксперементально, чтоб оно нормально принимало... Ессно все константы выставились под мой ПЦ (166) 2_FK0: сразу говорю - если сможешь что сказать по существу, омпимизнуть код и т.п. то нет проблем. Если-же будешь только кричать что все глюки и МД, то лучше и не пиши... Если не можешь предложить альтернативу так хоть не мешай! ================================================= ;СКАHИРОВАHИЕ PC-ЛИHИИ ;эта п/п вызывается ММД-хой весьма часто... ;если CY=1 нет данных, ;CY=0 - данные приняты, BC - длина SCAN_PC IN A,(#1F): AND 3: JR Z,PCL_PAS CP 2: SCF: RET NZ PCL_ACT LD A,2: LD (PCLINK),A OUT (#DD),A: SCF: RET PCL_PAS LD A,(PCLINK): OR A: SCF: RET Z XOR A: LD (PCLINK),A: OUT (#DD),A ;ПОЙМАЛИ СИHХРОИМПУЛЬС LD A,3: LD (BAUD),A ;запомнили скорость ;вначале блока идут байты #AA и #55 для контроля CALL PC_IN: CP #AA: SCF: RET NZ CALL PC_IN: CP #55: SCF: RET NZ ;затем идет длина блока CALL PC_IN: LD E,A CALL PC_IN: LD D,A LD (BLEN),DE ;длина блока LD HL,(ABUF) ;адрес буфера ;а теперь пошли данные PC_IND CALL PC_IN: LD (HL),A INC HL: DEC DE LD A,D: OR E: JP NZ,PC_IND ;выставляем регистры и флаги - приняли блок LD BC,(BLEN) ;длина LD D,3 ;это номер скорости LD A,1 ;CY=1, A=1 приняли блок RET ;************************************ ;передача блока длиной BC ;ждем готовности ПЦ PC_TRANS CALL PCWAIT_0 RET C ;не отвечает LD A,2: OUT (#DD),A CALL PCWAIT_1 LD A,0: OUT (#DD),A RET C ;не отвечает ;передаем синхро LD A,#AA: CALL PC_OUT LD A,#55: CALL PC_OUT ;передаем длину блока LD A,C: CALL PC_OUT LD A,B: CALL PC_OUT LD HL,(ABUF) LD E,C: LD D,B ;полетели данные PC_OUTD LD A,(HL): CALL PC_OUT INC HL: DEC DE LD A,D: OR E: JR NZ,PC_OUTD OR A: RET ;---------------------------------- ;передать байт PC_OUT EXX: LD B,8: LD C,A PC_OUT1 LD DE,1000 ;ожидание ответа PCW0OUT IN A,(#1F): AND 2: JP Z,PCW0OUT1 DEC DE:LD A,D:OR E:JP NZ,PCW0OUT JR PC_ERR ;ПЦ повис.... PCW0OUT1 LD A,1: RL C: RLA: OUT (#DD),A LD DE,1000 ;ожидание ответа PCW1OUT IN A,(#1F):AND 2: JP NZ,PCW1OUT1 DEC DE:LD A,D:OR E:JP NZ,PCW1OUT ;ошибка... снимаем адрес возврата и сразу ;прыгаем наверх с флагом "нет данных" PC_ERR OUT (#DD),A: POP HL: SCF: RET PCW1OUT1 XOR A: OUT (#DD),A DJNZ PC_OUT1 EXX: OR A: RET ;------------------------------- ;прием байта PC_IN EXX: LD B,8 PC_IN1 LD DE,1000 ;ожидание ответа PCW1IN IN A,(#1F): AND 2: JP NZ,PCW1IN1 DEC DE:LD A,D:OR E:JP NZ,PCW1IN JR PC_ERR ;ПЦ повис.... PCW1IN1 IN A,(#1F): RRA: RL C LD A,2: OUT (#DD),A LD DE,1000 ;ожидание ответа PCW0IN IN A,(#1F): AND 2: JP Z,PCW0IN1 DEC DE:LD A,D:OR E:JP NZ,PCW0IN JR PC_ERR PCW0IN1 XOR A: OUT (#DD),A DJNZ PC_IN1 LD A,C: EXX: OR A: RET ;----------------------- ;долгие ожидания ответа ПЦ - вызываются ;перед передачей. ;ждут долго, а то вдруг ПЦ чем-то занят ;-) ;ожидаем пока ПЦ не выставит "0" PCWAIT_0 LD DE,2000 PCWAIT0 IN A,(#1F): AND 2: RET Z DEC DE LD A,D: OR E: JP NZ,PCWAIT0 SCF: RET ;ожидаем пока ПЦ не выставит "1" PCWAIT_1 LD DE,2000 PCWAIT1 IN A,(#1F): AND 2: RET NZ DEC DE LD A,D: OR E: JP NZ,PCWAIT1 SCF: RET ;******************************** ================================================= Hу вот и все *MAS* с кувалдой




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Перлы - рубрика, рассказывающая о высказываниях известных людей.
С чег мы начнём - Вжнейшие жизненные интересы России.
Новости - О новинках ПО: A Last Hero of the Light, Gambit, Пыль звездных дорог, Dimond Mail Editor, ZX-Power 3, Oberon 5, Voyager 2.
Послесловие - Как делался этот номер.
Тема - Тусовка: CSP'99 - интервью с одним из участников Рыбинской группы Cav/Auryn.

В этот день...   8 мая