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


тема: modem driver



от: 500:812/03.00
кому: All
дата: 25 Feb 1998

Hi All !

Вот вам драйверок модема который
я сделал для xreversy. к сожалению
драйвер я восстанавливал по этому
возможны мелкие ошибки.


;блок приема передачи данных с контролем
;на ошибки ( по средствам контрольной
;суммы)
;(C)CREATOR product 1997
;блок взаимодействует с драйвером модема
;совместимым по командам и адресам с
;MMD_2.20 driers.
;HА МОМЕHТ ВЫЗОВА ТОЙ ИЛИ ИHОЙ ПРОЦЕДУРЫ
;ДРАЙВЕР ДОЛЖЕH БЫТЬ. ИHИЦИАЛИЗИРОВАH,то
;есть полностью готовым к работе.


LEN EQU 16; длинна передаваемого блока

;(передается на 2 байта больше из за
;контрольной суммы)
;SPEED - ячейка содержащая текущую скорость

LOAD_B; прием блока
;блок будет приниматься до "опосинения"
;то есть пока мы его не примем или
;кто нибудь не нажмет caps shift

;в регистре A по возвращению находится
;код возврата.
;A=0 BCE OK , A=1 аварийный выход
;A=2 в линиии короткие гудки
;A=3 обнаружен вызов

LOAD_P
LOAD_0 CALL CL_BUF
CALL CAPS; принимаем блок
CALL NC,ER_BL
LD A,BORDER
CALL #C00C
JR C,LOAD_0
AND A
JR Z,LOAD_0
CP 1
RET NZ

; проверка контрольной суммы принятого
; блока

LD HL,BUFFER
XOR A
LD B,LEN
ADD_C ADD A,(HL)
INC HL
DJNZ ADD_C
CP (HL)
JR NZ,LOAD_0
LD HL,BUFFER
XOR A
LD B,LEN
SUB_C SUB (HL)
INC HL
DJNZ SUB_C
INC HL
CP (HL)
JR NZ,LOAD_0

LD B,15
TRANS_M PUSH BC; передаем что все
LD BC,1; нормально принято
LD A,"C"
LD (BUFFER),A
LD A,(SPEED)
CALL #C012
EI
LD B,5
PAUSE HALT
DJNZ PAUSE
DI
POP BC
DJNZ TRANS_M
XOR A
RET

ER_BL; аварийный выход
;запрашиваем подтверждение на выход
;надо вести Yes или No
LD A,223
IN A,254
BIT 4,A
JR Z,TO_EX; выходим
LD A,127
IN A,254
BIT 3,A
RET Z
JR ER_BL
TO_EX POP HL
LD A,1
RET

CAPS LD A,254; проверка на прину-
IN A,254; дительный выход
RRCA
RET

SAVE_B
SAVE_BC CALL CL_BUF; передача блока
LD HL,BUFFER
LD B,LEN
XOR A
ADD_CR ADD A,(HL)
INC HL
DJNZ ADD_CR
LD (HL),A
LD HL,BUFFER
LD B,LEN
XOR A
SUB_CR SUB (HL)
INC HL
DJNZ SUB_CR
INC HL
LD (HL),A

LD BC,LEN+2
LD A,(SPEED)
CALL #C012
CALL CAPS; ловим все ли OK?
CALL NC,ER_BL
XOR A
LD (BUFFER),A
LD (SDS0+1),A
SDS0 LD A,0
DEC A
LD (SDS0+1),A
JR Z,SAVE_BC
LD A,BORDER
CALL #C00C
JR C,SDS0
AND A
JR Z,SDS0
CP 1
RET NZ
LD A,(BUFFER)
CP "C"
JR NZ,SDS0
XOR A
RET

SPEED DEFB 0; скорость

CL_BUF LD HL,BUFFER
LD DE,BUFFER+1
LD BC,LEN+2
LD (HL),0
LDIR
RET

DEFS 64
BUFF
DEFS 300

BUFFER EQU BUFF; адрес буффера для
;приема



▌▌║▌█▐│▌▌▐▐ WiTh The BeST wIsheS fROM
▌▌║▌█▐│▌▌▐▐ *C*R*E*A*T*O*R*
▌812/03.00▐


-+- zxasm+ плюсовой




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

Похожие статьи:
заключение - авторы и т.д.
Садоводцы и морозовки - Синильная кослота приятно пощипывала желудок.
Игры - прохождение игры SEYМOUR:TAКE ONE.
Обратная связь - контакты редакции.
Технодром 2 - схема расширение видеоредима для 512 x 192 (Scorpion Trubo).

В этот день...   19 апреля