Про разные процы 8080 подцепленные вместе через некоторое подобие сети я ещё в 1997 году своим эмулятором эмулил:

Тексты принимающих и передающих программ (передача идёт побайтно) для операционной системы ShaOS:
Code: Select all
\ ШАБАРШИН А.А. 28.06.97
\ NETWARE FOR HOME CONTROL SYSTEM
\###########################
\# ORG #NNNN #
\# JMP START #
\# +INCLUDE\NET #
\# START: ... #
\###########################
NET_N DB #C0
\ ЗАДЕРЖКА D*32 ТАКТОВ
\ ВХ: D - КОЛ-ВО ЦИКЛОВ
NET_D: NOP
NOP
NOP
MOV_A,A
DCR_D
JNZ NET_D
RET
\ ВЫДАТЬ БАЙТ В СЕТЬ
\ ВХ: A - БАЙТ ДЛЯ ПЕРЕДАЧИ
NET_O: PUSH_B
PUSH_D
PUSH_H
PUSH_PSW
MOV_B,A
LDA NET_N
MOV_E,A
\ ФОРМИРОВАНИЕ СТАРТОВОГО БИТА "1"
MVI_A, 1
OUT 0
MOV_D,E
CALL NET_D
\ ФОРМИРОВАНИЕ СТАРТОВОГО БИТА "0"
XRA_A
OUT 0
MOV_D,E
CALL NET_D
DCR_E
\ ПЕРЕДАТЬ 8 БИТ ИЗ РЕГ.B
MVI_C, 8
NET_O2: MOV_A,B
RLC
MOV_B,A
ANI 1
OUT 0
MOV_D,E
CALL NET_D
DCR_C
JNZ NET_O2
MOV_A,B
\ СФОРМИРОВАТЬ БИТ ЧЁТНОСТИ
ORA_A
JPE NET_OP
XRA_A
JMP NET_O3
NET_OP: MVI_A, 1
NET_O3: OUT 0
MOV_D,E
CALL NET_D
\ ФОРМИРОВАНИЕ СТОПОВОГО БИТА
MVI_A, 1
OUT 0
MOV_D,E
CALL NET_D
MVI_A, 0
OUT 0
NET_OE: POP_PSW
POP_H
POP_D
POP_B
RET
\ ПРИНЯТЬ БАЙТ ИЗ СЕТИ
\ ВЫХ: A - ПРИНЯТЫЙ БАЙТ
\ FLAG-C - СИГНАЛ ОШИБКИ
NET_I: PUSH_B
PUSH_D
PUSH_H
\ ОЖИДАНИЕ СИГНАЛА В СЕТИ
NET_I0: IN 0
ORA_A
JZ NET_I0
\ ПОДСЧЁТ СКОРОСТИ ОБМЕНА
MVI_C, #FF
NET_I1: INR_C
IN 0
CPI 1
JZ NET_I1
MOV_A,C
CPI 3
\ ОШИБКА ЕСЛИ МЕНЬШЕ 3
JC NET_I0
STA NET_N
\ ЗАДЕРЖКА 1.5 Tc
ANI #FE
RRC
ADD_C
MOV_D,A
CALL NET_D
MOV_E,C
DCR_E
\ ПРОЧИТАТЬ 8 БИТ В РЕГ.B
MVI_B, 0
MVI_C, 8
NET_I2: IN 0
ORA_B
RLC
MOV_B,A
MOV_D,E
CALL NET_D
DCR_C
JNZ NET_I2
RRC
MOV_B,A
\ ПРОЧИТАТЬ БИТ ЧЁТНОСТИ
IN 0
MOV_C,A
\ ЗАДЕРЖКА
MOV_D,E
CALL NET_D
\ ПРОЧИТАТЬ СТОПОВЫЙ БИТ
IN 0
ORA_A
JZ NET_IR
\ ЗАДЕРЖКА ДО КОНЦА ПОСЛЕДНЕГО БИТА
MOV_D,E
CALL NET_D
MOV_A,C
ORA_A
JNZ NET_I3
\ ДАННЫЕ ДОЛЖНЫ БЫТЬ НЕЧЁТНЫМИ (PO)
MOV_A,B
ORA_A
JPE NET_IR
JMP NET_IK
\ ДАННЫЕ ДОЛЖНЫ БЫТЬ ЧЁТНЫМИ (PE)
NET_I3: MOV_A,B
ORA_A
JPO NET_IR
JMP NET_IK
\ ОШИБКА
NET_IR: MOV_A,B
STC
JMP NET_IE
\ ВСЁ НОРМАЛЬНО
NET_IK: STC
CMC
NET_IE: POP_H
POP_D
POP_B
RET
Code: Select all
\ ЧТЕНИЕ ИЗ СЕТИ ШАБАРШИН А.А. 29.06.97
+INCLUDE\S004
ORG #E800
MAIN: JMP START
+INCLUDE\NET
START: CALL NET_I
JC NETER
NETR1: CALL @HEX
MVI_A, #20
CALL @WRI
LDA NET_N
CALL @HEX
CALL @NLN
JMP START
NETER: LXI_H, STRER
CALL @WST
JMP NETR1
STRER DB "NET ERROR - ",0
Code: Select all
\ ЗАПИСЬ В СЕТЬ ШАБАРШИН А.А. 28.06.97
+INCLUDE\S004
ORG #E800
MAIN: JMP START
+INCLUDE\NET
START: MVI_A, #80
STA NET_N
MOV_E,A
NETW0: XRA_A
NETW1: CALL @HEX
CALL @NLN
CALL NET_O
MVI_C, 4
NETW2: MOV_D,E
CALL NET_D
DCR_C
JNZ NETW2
INR_A
JZ NETW3
JMP NETW1
NETW3: DCR_E
MOV_A,E
STA NET_N
JMP NETW0