Я скорее не правильно выразился, имел в виду именно задействование двух процессов под обсчет задач, наверное многопоточность, или скорее многоядерность. )
- - - Добавлено - - -
Я предполагал что их таки куда то закидывает подпрограмма, на которую указывает вектор в ячейке 340 (2 канал использую).
Я пытаюсь дизасембдлировать программу virus-4, и даже дизассемблировать у меня ее получилось, она компилится, а вот понять как работает пока не получается, все таки в случае с УКНЦ нужно строить в голове сразу две независимые машины, чтобы понять как работает программа под сразу два МП. Пока с этим туго, и даже отладчик пока что не сильно прояснил некоторые моменты.
В целом вот код программы:
Скрытый текст
.LIST ME
.TITLE V6
START: MOV #D1, R1
CALL T2
CMP D2, #65
BNE T0
MOV D3, R1
MOV R1, D5
MOV #D4, R1
CALL T2
MOVB #30, D6
MOV #D1, R1
CALL T2
MOV #D7, R0
BR T1
T0: MOV #D0, R0
T1: EMT 351
EMT 350
;------------------------------------------
T2: TSTB @#176674
BPL T2
MOVB R1, @#176676
SWAB R1
COM #0
BNE T2
COM R1
COM #0
BNE T2
T3: TSTB @#176674
BPL T3
RETURN
;------------------------------------------
; Далее - Массив Параметров для общения с ПП, текстовые сообщения для режима когда не хватает памяти ПП и сообщение для нормального запуска, и переносимые в память ПП (массив байт) и текст программы, который переносится в память ПП, запускается там, настраиает вектор прерывания так, чтобы от системного таймера запускался этот код, а потом передавал управление обработчику прерывания системного таймера, и этот код работает с таблицей строк и экранной памятью...
D1: .BYTE 00 ;\
; } 400 (WORD)
D6: .BYTE 01 ;/
T4: .WORD 32
D3: .WORD 0
D2: .WORD 65
D4: .WORD 10000
.WORD 32
D5: .WORD 0
.BYTE 252
.BYTE 02
.WORD 65
D0: .BYTE 16
.BYTE 156 ;n ;1162
.BYTE 105 ;E ;1163
.BYTE 124 ;T ;1164
.BYTE 40 ;_ ;1165
.BYTE 123 ;S ;1166
.BYTE 127 ;W ;1167
.BYTE 117 ;O ;1170
.BYTE 102 ;B ;1171
.BYTE 117 ;O ;1172
.BYTE 104 ;D ;1173
.BYTE 116 ;N ;1174
.BYTE 117 ;O ;1175
.BYTE 112 ;J ;1176
.BYTE 40 ;_ ;1177
.BYTE 120 ;P ;1200
.BYTE 101 ;A ;1201
.BYTE 115 ;M ;1202
.BYTE 121 ;Q ;1203
.BYTE 124 ;T ;1204
.BYTE 111 ;I ;1205
.BYTE 40 ;_ ;1206
.BYTE 127 ;W ;1207
.BYTE 40 ;_ ;1210
.BYTE 160 ;p ;1211
.BYTE 160 ;p ;1212
.BYTE 17 ; ;1213
.BYTE 0 ; ;1214
D7: .BYTE 11 ; ;1215
.BYTE 50 ; ( ;1216
.BYTE 103 ; C ;1217
.BYTE 51 ; ( ;1220
.BYTE 40 ;_ ;1221
.BYTE 105 ;E ;1222
.BYTE 154 ;l ;1223
.BYTE 151 ;i ;1224
.BYTE 164 ;t ;1225
.BYTE 145 ;e ;1226
.BYTE 40 ;_ ;1227
.BYTE 117 ;O ;1231
.BYTE 103 ;C ;1232
.BYTE 124 ;T ;1233
.BYTE 55 ;- ;1234
.BYTE 71 ;9 ;1235
.BYTE 64 ;4 ;1236
.BYTE 54 ;, ;1237
.BYTE 11 ; ;1240
.BYTE 16 ; ;1241
.BYTE 167 ; w ;1242
.BYTE 111 ; I ;1243
.BYTE 122 ; R ;1244
.BYTE 125 ; U ;1245
.BYTE 123 ; S ;1246
.BYTE 55 ;- ;1247
.BYTE 64 ;4 ;1250
.BYTE 17 ; 0F ;1251
.WORD 0
D8: MOV @#100, 1422 ;1252,1254, 1256
MOV PC, -(SP) ;1260
ADD #12, @SP ;1262,1264
MOV (SP)+, @#100
RETURN
DEC #144
BPL T5
MOV R0, -(SP)
MOV R2, -(SP)
CMP #10534, @#7214
BNE T6
MOV #1750, 1276
BR T7
T6: MOV #0, 1276
MOV #2500, R0
CMP @R0, #100117
BGE T7
T8: INC (R0)+
TST (R0)+
DEC (R0)+
TST (R0)+
CMP R0, #4664
BLE T8
BR T9
T7: MOV #2500, R0
MOV #100000, R2
T10: MOV R2, (R0)+
ADD #120, R2
TST (R0)+
CMP R0, #4664
BLE T10
T9: MOV (SP)+, R2
MOV (SP)+, R0
T5: JMP @#174612
.END 1000
[свернуть]
Код до RETERN - работает в ЦП, по большому счету он должен скопировать все что нудно в ПП, выдать сообщение, или о программе, ии о нехватке памяти ПП - в случае неудачной передачи, и завершить программу. Далее работает кусок в ПП, по идее. Программа завершается, и ее место занимает код файлового менеджера PC который я использую. Далее - работает походу нижний кусок кода, но как и главное куда он попадает в ПП - я понять не могу. Прокручивал всю программу несколько раз в отладчике, передается несколько байт в ПП,... Возможно конечно, это я думаю что несколько байт, а ПП - просто по каким то алгоритмам сам переносит весь код независимо от ЦП,.. Или что то еще. В общем, пока этот момент не понятен. Программа меняет "строчность" таблицы строк видеоадаптера,....
Может кто то уже разбирался с этим кодом, и подскажет как это работает..
- - - Добавлено - - -
В последней строчке нижней части кода ссыль на подпрограмму обработки прерываний от сетевого таймера в ПЗУ....
- - - Добавлено - - -
В обшем, вопросов пока три:
1.как нижняя часть кода попадает в ПП,.
2.По каким адресам она туда попадает, и кто ответственный за ее попадание по определенным адресам,.
3. Кто и как передает управление этому куску кода на стороне ПП...
- - - Добавлено - - -
Кстати, да будут благословленны создатели UKNCBTL !!! И да прибудет с ними сила !!! Низкие поклоны им и плюсы к карме !!!





Ответить с цитированием