home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / LAN / LANTEST.M < prev    next >
Encoding:
Text File  |  1991-08-18  |  11.8 KB  |  3 lines

  1. ⓪ MODULE LANMonitor; (*$H+,Z+,R-*)
  2. ⓪ 
  3. ⓪ (*
  4. ⓪ NOTES
  5. ⓪ -----
  6. ⓪ - Testen auch ohne Interrupts - nur Polling!
  7. ⓪ - Die CRC-Prüfung scheint nicht zu klappen. Zumindest wird kein Fehler angezeigt,
  8. ⓪"wenn beim empf. Dataframe das 1.Byte fehlt.
  9. ⓪"-> Evtl. wird overrun gelmeldet und nicht erkannt?
  10. ⓪ - Wenn 'excessCollsns' gemeldet wird, kann das auch heißen, daß
  11. ⓪"der Partner überhaupt nicht geantwortet hat (also kein CTS auf's RTS
  12. ⓪"gesandt hat).
  13. ⓪ - oft passiert es, daß das CTS zu spät kommt. Dann wird in 'GetFrame'
  14. ⓪"'fAdrInUse' gesetzt, weil man annimmt, daß jemand anderes auf ein RTS
  15. ⓪"geantwortet hat (denn 'fCTSexpected ist schon FALSE).
  16. ⓪"Das ist eigentlich OK, nur daß das *erwartete* CTS offenbar dann zu spät kam.
  17. ⓪ - seltsamerweise klappt beim TransmitPacket immer der erste RTS nicht.
  18. ⓪"Es kommt dann kein CTS? Bei weiteren RTS klappt's dafür immer.
  19. ⓪ *)
  20. ⓪ 
  21. ⓪ (*
  22. ⓪ IMPORT TOSDebug;
  23. ⓪ *)
  24. ⓪ 
  25. ⓪ IMPORT TOSIO; (*$E MOS *)
  26. ⓪ 
  27. ⓪ IMPORT SYSTEM;
  28. ⓪ FROM SYSTEM IMPORT ASSEMBLER, ADR, BYTE;
  29. ⓪ 
  30. ⓪ IMPORT ALAP;
  31. ⓪ 
  32. ⓪ IMPORT MOSGlobals, PrgCtrl;
  33. ⓪ 
  34. ⓪ FROM InOut IMPORT WriteLn, Write, WriteCard, ReadCard, ReadLCard, Read,
  35. ⓪0GotoXY, WritePg, WriteString, WriteHex, WriteLHex,
  36. ⓪0KeyPressed, Done, WriteNum, WriteLNum;
  37. ⓪ 
  38. ⓪ FROM GEMDOS IMPORT Super;
  39. ⓪ IMPORT VT52; FROM VT52 IMPORT Codes;
  40. ⓪ 
  41. ⓪ 
  42. ⓪ CONST NMI_Mask = $0700; (* !!! $0700 *)
  43. ⓪ 
  44. ⓪ 
  45. ⓪ (*****************************************************************************)
  46. ⓪ 
  47. ⓪ 
  48. ⓪ MODULE SCC;
  49. ⓪ (*$L-*)
  50. ⓪ 
  51. ⓪ FROM SYSTEM IMPORT WORD, ADDRESS, ASSEMBLER;
  52. ⓪ 
  53. ⓪ IMPORT Super;
  54. ⓪ FROM PrgCtrl IMPORT TermCarrier, CatchProcessTerm;
  55. ⓪ FROM MOSGlobals IMPORT MemArea;
  56. ⓪ 
  57. ⓪ EXPORT QUALIFIED Reg, SetReg, CTLA;
  58. ⓪ 
  59. ⓪ CONST CTLA = $FFFF8C81;
  60. ⓪ 
  61. ⓪ PROCEDURE Reg (n: CARDINAL): CARDINAL;
  62. ⓪"BEGIN
  63. ⓪$ASSEMBLER
  64. ⓪(MOVE    SR,-(A7)
  65. ⓪(MOVE    #$2500,SR
  66. ⓪(MOVEA.W #CTLA,A1
  67. ⓪(MOVE.W  -(A3),D0
  68. ⓪(BEQ     read0
  69. ⓪(MOVE.B  D0,(A1)          ; SCC A control
  70. ⓪&read0:
  71. ⓪(MOVE.B  (A1),D0
  72. ⓪(MOVE    (A7)+,SR
  73. ⓪$END;
  74. ⓪"END Reg;
  75. ⓪ 
  76. ⓪ PROCEDURE SetReg (no, value: CARDINAL);
  77. ⓪"BEGIN
  78. ⓪$ASSEMBLER
  79. ⓪(MOVE    SR,-(A7)
  80. ⓪(MOVE    #$2500,SR
  81. ⓪(MOVEA.W #CTLA,A1
  82. ⓪(MOVE.W  -(A3),D1        ; value
  83. ⓪(MOVE.W  -(A3),D0        ; no
  84. ⓪(BEQ     write0
  85. ⓪(MOVE.B  D0,(A1)         ; SCC A control
  86. ⓪&write0:
  87. ⓪(MOVE.B  D1,(A1)
  88. ⓪(MOVE    (A7)+,SR
  89. ⓪$END;
  90. ⓪"END SetReg;
  91. ⓪ 
  92. ⓪ (*$L=*)
  93. ⓪ 
  94. ⓪ (****** Vorsicht: ab hier $L+ ******)
  95. ⓪ 
  96. ⓪ PROCEDURE term;
  97. ⓪"VAR ssp: LONGCARD;
  98. ⓪"BEGIN
  99. ⓪$ssp:= Super (0);
  100. ⓪$SetReg (9, $C0);
  101. ⓪$ssp:= Super (ssp)
  102. ⓪"END term;
  103. ⓪ 
  104. ⓪ VAR carrier: TermCarrier;
  105. ⓪ 
  106. ⓪ BEGIN
  107. ⓪"CatchProcessTerm (carrier, term, MemArea{NIL,0});
  108. ⓪ END (* MODULE *) SCC;
  109. ⓪ 
  110. ⓪ 
  111. ⓪ TYPE BS = SET OF [0..7];
  112. ⓪%RegSet = SET OF [0..15];
  113. ⓪ 
  114. ⓪ CONST ReadRegs  = RegSet {0,1,2,3,8,10,12,13,15};
  115. ⓪&WriteRegs = RegSet {0..15};
  116. ⓪&
  117. ⓪&RegsToDisplay = RegSet {0,1,2,3,8,10,12,13,15};
  118. ⓪&
  119. ⓪ 
  120. ⓪ PROCEDURE WriteReg (n: CARDINAL);
  121. ⓪"VAR reg: CARDINAL;
  122. ⓪"BEGIN
  123. ⓪$reg:= SCC.Reg (n);
  124. ⓪$WriteNum (reg, 16, 2, '0');
  125. ⓪$WriteString ('  ');
  126. ⓪$WriteNum (reg, 2, 8, '0');
  127. ⓪"END WriteReg;
  128. ⓪ 
  129. ⓪ 
  130. ⓪ VAR ch: CHAR;
  131. ⓪$rxIdx, n, c: CARDINAL;
  132. ⓪$lc: LONGCARD;
  133. ⓪$i: INTEGER;
  134. ⓪$ssp, li: LONGINT;
  135. ⓪$redraw, quit, ok, b: BOOLEAN;
  136. ⓪$by: BS;
  137. ⓪$myaddr, outaddr: CARDINAL;
  138. ⓪$sentDatas,sendTrials,rcvdDatas: LONGCARD;
  139. ⓪$
  140. ⓪$txFrame: ALAP.aTxFrame;
  141. ⓪$packet: ALAP.ptrPacket;
  142. ⓪$dstParam, srcParam: ALAP.anAddress;
  143. ⓪$typeParam: ALAP.aLAPtype;
  144. ⓪$dataParam: ALAP.aDataField;
  145. ⓪$txStatus: ALAP.TransmitStatus;
  146. ⓪$frameStatus: ALAP.FrameStatus;
  147. ⓪$dataLength: INTEGER;
  148. ⓪ 
  149. ⓪ BEGIN
  150. ⓪"WritePg;
  151. ⓪"ssp:= Super (0);
  152. ⓪"
  153. ⓪"(*
  154. ⓪"WriteLn;
  155. ⓪"WriteString ('Start...');
  156. ⓪"FOR c:= 1 TO 5 DO
  157. ⓪$FOR n:= 1 TO 5*1000 DO
  158. ⓪&ASSEMBLER
  159. ⓪(MOVEA.W #$FA00,A2
  160. ⓪(MOVEQ   #50,D0
  161. ⓪(MOVE.B  #$DF,$0B(A2)    ; IPRA: Clear Timer-A Pending Bit
  162. ⓪(MOVE.B  D0,$1F(A2)      ; TADR: Set Timer Count
  163. ⓪(MOVE.B  #2,$19(A2)      ; TACR: Timer Start (Teiler: 1/10)
  164. ⓪$l0: BTST    #5,$0B(A2)      ; time over?
  165. ⓪(BEQ     l0
  166. ⓪(MOVE.B  #$00,$19(A2)    ; TACR: Timer Stop
  167. ⓪&END;
  168. ⓪$END;
  169. ⓪"END;
  170. ⓪"WriteString ('Stop!');
  171. ⓪"WriteLn;
  172. ⓪"*)
  173. ⓪"
  174. ⓪"WriteLn;
  175. ⓪"WriteString ('Init...');
  176. ⓪"WriteLn;
  177. ⓪"
  178. ⓪"ASSEMBLER
  179. ⓪(MOVEQ   #0,D0
  180. ⓪(JSR     ALAP.Init;
  181. ⓪"END;
  182. ⓪"
  183. ⓪"ALAP.NewPacketBuffer;
  184. ⓪"ALAP.NewPacketBuffer;
  185. ⓪"ALAP.NewPacketBuffer;
  186. ⓪"ALAP.NewPacketBuffer;
  187. ⓪"
  188. ⓪"WriteString ('OK');
  189. ⓪"WriteLn;
  190. ⓪"
  191. ⓪"rxIdx:= 0;
  192. ⓪"redraw:= TRUE;
  193. ⓪"quit:= FALSE;
  194. ⓪"REPEAT
  195. ⓪$IF redraw THEN
  196. ⓪&GotoXY (4,0);
  197. ⓪&WriteString (' interrupts');
  198. ⓪&GotoXY (4,1);
  199. ⓪&WriteString (' frames received');
  200. ⓪&GotoXY (0,2);
  201. ⓪&FOR n:= 0 TO 15 DO
  202. ⓪(IF n IN ReadRegs THEN
  203. ⓪*WriteString ('Reg '); WriteNum (n, 16, 1, '0'); WriteString (': '); WriteLn;
  204. ⓪(END
  205. ⓪&END;
  206. ⓪&WriteString (VT52.Seq[clearEOS]);
  207. ⓪&
  208. ⓪&c:= 2;
  209. ⓪&FOR n:= 0 TO 15 DO
  210. ⓪(IF n IN ReadRegs THEN
  211. ⓪*IF n IN RegsToDisplay THEN GotoXY (7,c); WriteReg (n) END;
  212. ⓪*INC (c);
  213. ⓪(END;
  214. ⓪&END;
  215. ⓪&
  216. ⓪&GotoXY (0, 11);
  217. ⓪&WriteString ('myAddress: '); WriteHex (LONG (ALAP.myAddress), 3);
  218. ⓪&WriteString (', dest-Addr: '); WriteHex (outaddr, 3);
  219. ⓪&GotoXY (0, 12);
  220. ⓪&WriteString ('collsns:   , defers:');
  221. ⓪&GotoXY (0, 13);
  222. ⓪&WriteString ('RTS:   , CTS:   , Data:');
  223. ⓪&redraw:= FALSE
  224. ⓪$END;
  225. ⓪$GotoXY (0,0);
  226. ⓪$WriteCard (ALAP.Interrupts, 4);
  227. ⓪$GotoXY (0,1);
  228. ⓪$WriteCard (ALAP.FramesReceived, 4);
  229. ⓪$GotoXY (8,12);
  230. ⓪$WriteCard (ALAP.collsnCount,3);
  231. ⓪$GotoXY (20,12);
  232. ⓪$WriteCard (ALAP.deferCount,3);
  233. ⓪$GotoXY (4,13);
  234. ⓪$WriteCard (ALAP.RTSFramesOut,3);
  235. ⓪$GotoXY (13,13);
  236. ⓪$WriteCard (ALAP.CTSFramesOut,3);
  237. ⓪$GotoXY (23,13);
  238. ⓪$WriteCard (ALAP.DataFramesOut,3);
  239. ⓪$
  240. ⓪$ASSEMBLER MOVE SR,-(A7) ORI.W #$0700,SR END;
  241. ⓪$IF ALAP.headPacket # ALAP.tailPacket THEN
  242. ⓪&frameStatus:= ALAP.ReceiveFrame (packet);
  243. ⓪&GotoXY (40, rxIdx);
  244. ⓪&WriteCard (rxIdx, 2);
  245. ⓪&INC (rxIdx);
  246. ⓪&WriteString (': ');
  247. ⓪&ALAP.WriteFrame (packet^, 5);
  248. ⓪&WriteCard (packet^.no, 1); Write (' ');
  249. ⓪&ALAP.WriteStatus (packet^.status);
  250. ⓪$END;
  251. ⓪$ASSEMBLER MOVE.W (A7)+,SR END;
  252. ⓪$
  253. ⓪$IF KeyPressed() THEN
  254. ⓪&GotoXY (0,14);
  255. ⓪&WriteString (VT52.Seq[clearEOS]);
  256. ⓪&WriteLn;
  257. ⓪&Read (ch); ch:= CAP (ch);
  258. ⓪&IF ch = 'Q' THEN
  259. ⓪(quit:= TRUE;
  260. ⓪&ELSIF ch = 'T' THEN
  261. ⓪(WriteLn;
  262. ⓪(WriteString ('Transmitting...');
  263. ⓪(WriteLn;
  264. ⓪(
  265. ⓪((*txStatus:= ALAP.TransmitPacket (outaddr, BYTE($10), dataParam, 0);*)
  266. ⓪(WITH txFrame DO
  267. ⓪*ctrl.srcAddr:= ALAP.myAddress;
  268. ⓪*ctrl.dstAddr:= SHORT (outaddr);
  269. ⓪*ctrl.lapType:= BYTE ($10);
  270. ⓪*dataCnt1:= 2;
  271. ⓪*dataPtr1:= ADR (dataParam);
  272. ⓪*dataCnt2:= 0;
  273. ⓪*dataParam[1]:= BYTE ($12);
  274. ⓪*dataParam[2]:= BYTE ($34);
  275. ⓪(END;
  276. ⓪(ASSEMBLER
  277. ⓪*LEA   txFrame,A0
  278. ⓪*JSR   ALAP.TransmitPacket
  279. ⓪*MOVE  D0,txStatus
  280. ⓪(END;
  281. ⓪(
  282. ⓪(ALAP.fAdrInUse:= FALSE;
  283. ⓪(WriteString ('Status: ');
  284. ⓪(CASE txStatus OF
  285. ⓪(| ALAP.transmitOK: WriteString ('transmitOK')
  286. ⓪(| ALAP.excessDefers: WriteString ('excessDefers')
  287. ⓪(| ALAP.excessCollsns: WriteString ('excessCollsns')
  288. ⓪(| ALAP.dupAddress: WriteString ('dupAddress')
  289. ⓪(END;
  290. ⓪(WriteLn;
  291. ⓪&ELSIF ch = 'R' THEN
  292. ⓪(WriteLn;
  293. ⓪(WriteString ('Receiving...');
  294. ⓪(WriteLn;
  295. ⓪(ALAP.ReceivePacket (dstParam, srcParam, typeParam, dataParam, dataLength);
  296. ⓪(IF KeyPressed () THEN
  297. ⓪*WriteString ('Aborted');
  298. ⓪*Read (ch)
  299. ⓪(ELSE
  300. ⓪*WriteString ('OK');
  301. ⓪(END
  302. ⓪&ELSIF ch = 'G' THEN
  303. ⓪(WriteLn;
  304. ⓪(WriteString ('Getting Addresses on Bus...');
  305. ⓪(WriteLn;
  306. ⓪(FOR n:= $01 TO $7F DO
  307. ⓪*
  308. ⓪*(*txStatus:= ALAP.TransmitPacket (SHORT(n), BYTE($81), dataParam, 0);*)
  309. ⓪*WITH txFrame DO
  310. ⓪,ctrl.srcAddr:= ALAP.myAddress;
  311. ⓪,ctrl.dstAddr:= SHORT (n);
  312. ⓪,ctrl.lapType:= ALAP.lapENQ;
  313. ⓪,dataCnt1:= 0;
  314. ⓪,dataCnt2:= 0;
  315. ⓪*END;
  316. ⓪*ASSEMBLER
  317. ⓪,LEA   txFrame,A0
  318. ⓪,JSR   ALAP.TransmitPacket
  319. ⓪,MOVE  D0,txStatus
  320. ⓪*END;
  321. ⓪*
  322. ⓪*IF txStatus = ALAP.dupAddress THEN
  323. ⓪,Write ('>'); WriteHex (n, 3); Write ('<'); WriteLn;
  324. ⓪*END;
  325. ⓪*ALAP.fAdrInUse:= FALSE;
  326. ⓪(END;
  327. ⓪(WriteLn;
  328. ⓪(WriteString ('OK.');
  329. ⓪(WriteLn;
  330. ⓪&ELSIF ch = ' ' THEN
  331. ⓪(WritePg;
  332. ⓪(rxIdx:= 0;
  333. ⓪(redraw:= TRUE
  334. ⓪&ELSIF ch = 'I' THEN
  335. ⓪(WriteString ('Address? ');
  336. ⓪(ReadCard (myaddr);
  337. ⓪(IF Done THEN
  338. ⓪*ASSEMBLER
  339. ⓪,MOVE  myaddr,D0
  340. ⓪,JSR   ALAP.Init
  341. ⓪*END
  342. ⓪(END
  343. ⓪&ELSIF ch = 'A' THEN
  344. ⓪(WriteString ('Dest-Address? ');
  345. ⓪(ReadCard (outaddr);
  346. ⓪&ELSIF ch = '0' THEN
  347. ⓪((*
  348. ⓪*Test-Modus.
  349. ⓪*sieht NUR mit Polling nach, ob Daten angekommen sind.
  350. ⓪(*)
  351. ⓪(rcvdDatas:= 0;
  352. ⓪(ASSEMBLER MOVE SR,-(A7) ORI.W #$0500,SR END;
  353. ⓪(LOOP
  354. ⓪*frameStatus:= ALAP.ReceiveFrame (packet);
  355. ⓪*IF frameStatus = ALAP.lapDATAframe THEN
  356. ⓪,(*
  357. ⓪.WriteHex (LONG(packet^.frame.srcAddr),3);
  358. ⓪,*)
  359. ⓪,IF packet^.frame.lapType = BYTE ($11) THEN EXIT END;
  360. ⓪,INC (rcvdDatas);
  361. ⓪*END;
  362. ⓪(END;
  363. ⓪(ASSEMBLER MOVE.W (A7)+,SR END;
  364. ⓪(WriteLn;
  365. ⓪(WriteCard (rcvdDatas,0); WriteString (' frames received');
  366. ⓪(Read (ch);
  367. ⓪&ELSIF ch = '1' THEN
  368. ⓪((*
  369. ⓪*Test-Modus.
  370. ⓪*sieht mit Polling nach, ob Daten angekommen sind.
  371. ⓪(*)
  372. ⓪(rcvdDatas:= 0;
  373. ⓪(LOOP
  374. ⓪*frameStatus:= ALAP.ReceiveFrame (packet);
  375. ⓪*IF frameStatus = ALAP.lapDATAframe THEN
  376. ⓪,IF packet^.frame.lapType = BYTE ($11) THEN EXIT END;
  377. ⓪,INC (rcvdDatas);
  378. ⓪,WriteHex (LONG(packet^.frame.srcAddr),3);
  379. ⓪*END;
  380. ⓪*IF KeyPressed() THEN EXIT END;
  381. ⓪(END;
  382. ⓪(WriteLn;
  383. ⓪(WriteCard (rcvdDatas,0); WriteString (' frames received');
  384. ⓪(Read (ch);
  385. ⓪&ELSIF ch = '2' THEN
  386. ⓪((*
  387. ⓪*Test-Modus.
  388. ⓪*sieht NUR im Interrupt nach, ob Daten angekommen sind.
  389. ⓪(*)
  390. ⓪(rcvdDatas:= 0;
  391. ⓪(LOOP
  392. ⓪*ASSEMBLER MOVE SR,-(A7) ORI.W #$0500,SR END;
  393. ⓪*WHILE ALAP.headPacket # ALAP.tailPacket DO
  394. ⓪,frameStatus:= ALAP.ReceiveFrame (packet);
  395. ⓪,IF frameStatus = ALAP.lapDATAframe THEN
  396. ⓪.IF packet^.frame.lapType = BYTE ($11) THEN
  397. ⓪0ASSEMBLER MOVE.W (A7)+,SR END;
  398. ⓪0EXIT
  399. ⓪.END;
  400. ⓪.INC (rcvdDatas);
  401. ⓪.WriteHex (LONG(packet^.frame.srcAddr),3);
  402. ⓪,END;
  403. ⓪*END;
  404. ⓪*ASSEMBLER MOVE.W (A7)+,SR END;
  405. ⓪*IF KeyPressed() THEN EXIT END;
  406. ⓪(END;
  407. ⓪(WriteLn;
  408. ⓪(WriteCard (rcvdDatas,0); WriteString (' frames received');
  409. ⓪(Read (ch);
  410. ⓪&ELSIF ch = '3' THEN
  411. ⓪((*
  412. ⓪*Test-Modus.
  413. ⓪*Jede Station sendet ununterbrochen;
  414. ⓪*sieht jedesmal nach, ob Daten angekommen sind.
  415. ⓪(*)
  416. ⓪(rcvdDatas:= 0;
  417. ⓪(sentDatas:= 0;
  418. ⓪(sendTrials:= 0;
  419. ⓪(WITH txFrame DO
  420. ⓪*ctrl.srcAddr:= ALAP.myAddress;
  421. ⓪*ctrl.dstAddr:= SHORT (outaddr);
  422. ⓪*ctrl.lapType:= BYTE ($10);
  423. ⓪*dataCnt1:= 1024;
  424. ⓪*dataPtr1:= ADR (dataParam);
  425. ⓪*dataCnt2:= 0;
  426. ⓪*dataParam[1]:= BYTE ($12);
  427. ⓪*dataParam[2]:= BYTE ($34);
  428. ⓪*dataParam[3]:= BYTE ($56);
  429. ⓪(END;
  430. ⓪(LOOP
  431. ⓪*ASSEMBLER LEA txFrame,A0 JSR ALAP.TransmitPacket MOVE D0,txStatus END;
  432. ⓪*INC (sendTrials);
  433. ⓪*IF ALAP.fAdrInUse THEN Write ('#'); ALAP.fAdrInUse:= FALSE; END;
  434. ⓪*CASE txStatus OF
  435. ⓪*| ALAP.transmitOK: Write ('.'); INC (sentDatas)
  436. ⓪*| ALAP.excessDefers: Write ('+')
  437. ⓪*| ALAP.excessCollsns: Write ('-')
  438. ⓪*| ALAP.dupAddress:
  439. ⓪*END;
  440. ⓪*ASSEMBLER MOVE SR,-(A7) ORI.W #$0500,SR END;
  441. ⓪*WHILE ALAP.headPacket # ALAP.tailPacket DO
  442. ⓪,frameStatus:= ALAP.ReceiveFrame (packet);
  443. ⓪,IF frameStatus = ALAP.lapDATAframe THEN
  444. ⓪.INC (rcvdDatas);
  445. ⓪.WriteHex (LONG(packet^.frame.srcAddr),3);
  446. ⓪.IF packet^.frame.lapType = BYTE ($11) THEN EXIT END;
  447. ⓪,END;
  448. ⓪*END;
  449. ⓪*ASSEMBLER MOVE.W (A7)+,SR END;
  450. ⓪*IF KeyPressed() THEN EXIT END;
  451. ⓪(END;
  452. ⓪(WriteLn;
  453. ⓪(WriteCard (sendTrials,0); WriteString (' frames tried to sent, ');
  454. ⓪(WriteCard (sentDatas,0); WriteString (' frames sent, ');
  455. ⓪(WriteCard (rcvdDatas,0); WriteString (' frames received');
  456. ⓪(Read (ch);
  457. ⓪&ELSIF ch = '4' THEN
  458. ⓪((*
  459. ⓪*Send Abort to all (Broadcast)
  460. ⓪(*)
  461. ⓪(WITH txFrame DO
  462. ⓪*ctrl.srcAddr:= ALAP.myAddress;
  463. ⓪*ctrl.dstAddr:= BYTE ($FF);
  464. ⓪*ctrl.lapType:= BYTE ($11);
  465. ⓪*dataCnt1:= 0;
  466. ⓪*dataCnt2:= 0;
  467. ⓪(END;
  468. ⓪(ASSEMBLER LEA txFrame,A0 JSR ALAP.TransmitPacket MOVE D0,txStatus END;
  469. ⓪&(*
  470. ⓪&ELSIF (ch >= '0') & (ch <= '9') OR (ch >= 'A') & (ch <= 'F') THEN
  471. ⓪(Write (10C); (* BS *)
  472. ⓪(n:= ORD (ch) - ORD ('0'); IF n > 9 THEN DEC (n, 7) END;
  473. ⓪(IF n IN WriteRegs THEN
  474. ⓪*WriteString ('Write Reg '); WriteNum (n, 16, 1, '0');
  475. ⓪*WriteString ('? ');
  476. ⓪*ReadCard (c);
  477. ⓪*IF Done & (c <= 255) THEN
  478. ⓪,SCC.SetReg (n, c);
  479. ⓪*ELSE
  480. ⓪,WriteString ('No write!'); WriteLn
  481. ⓪*END
  482. ⓪(END
  483. ⓪&*)
  484. ⓪&END;
  485. ⓪$END;
  486. ⓪"UNTIL quit;
  487. ⓪"ssp:= Super (ssp)
  488. ⓪ END LANMonitor.
  489. ⓪ ə
  490. (* $FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$00000FA1$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0Ç$000023E8T.......T.......T.......T.......T.......T.......T.......T.......T.......T.......$00002159$000023A9$000023E8$000023A9$000020DF$00001815$00001C1C$00001C09$00002600$00002ACE$FFF006F0$00000417$000003A2$00001F4E$00001FCE$00002198öüé*)
  491.