Раздел: Документация
0 ... 36 37 38 39 40 41 42 ... 55 PROG: print "Чтение файла *.tsk с диска: " ; i „ F$="file.tsk" i „ open "b",n,F$ print "Ok." print "Программирование: " print "=================" I „ „ L=lof(1) if Lc=16 then L%=L:C$=space$(0):get$ #1,L%,C$:ADR%=0:goto PROGET N=int(L/16) lostat%=L-N*16 ADR%=0 L%=16 for i=l to N C$=space$(0) get$ #1,L%,C$ gosub FORMSПолучили пакет C$ call RECO(CS)Вывели пакет в ADUC gosub INBYTE Ввод ответа АСК или NAK if BYTE%=6 then print "B";:goto PRODOL if BYTE%=7 then print "Ошибка" goto KON PRODOL: ADR%=ADR%+16 next i C$=space$(0) L%=lostat% Длина остатка getS #1,L%,C$ PROGET: gosub FORMS Получили пакет C$ call REC0(C$) Вывели пакет в ADUC gosub INBYTE "Ввод ответа АСК или NAK if BYTE%=6 then print "";:goto PR0D0L1 if BYTE%=7 then print "Ошибка" goto KON PR0D0L1: close #1 print 11 Ok." goto KON i*************************************** 1Подпрограммы i*************************************** П/программа формированияI пакета посылки. Принимает:I L% - длину строки данных, ADR% - адрес, с которого загружать, С$ - строку загружаемых данных. FORMS: Стартовая строка. START$=mki$(&hue07) Строка количества байт (L%-принимается) NB$=LEFT$((mki$(L% + 4)) ,1) Строка команды записи (WKOfl=57h) + + старший адрес ADR U (код=0). CMDADRU$=mki$(&h0057) 1 Строка адреса (АБЕ%-принимается). I ADR$=RIGHT$((mki$(ADR%)),1)+LEFT$((mki$(ADR%)),1) Строка данных C$. (C$ - принимается). Строка контрольной суммы
1 lb + 2b + 2b +L% = L% + 5 байт - общее к-во байт в к.с. IIII S$=NB$+CMDADRU$+ADR$+C$ 1 - Строка всех байт для вычисления к.с. 1 Вычисление к.с. I S = 0 NS%=L%+5 for j=l to NS% S=S+asc (MID$ (S$, j , 1) )fСумма байт next j KS%=(256*ceil(S/256))-S KS$=LEFT$((mki$(KS%)),1) -Значение к.с. в цифровом виде. -Строка к.с. (1 байт). Формирование пакета посылки C$=START$+NB$+CMDADRU$+ADR$+C$+KS$ return 0 ... 36 37 38 39 40 41 42 ... 55
|