
REM modositva 2008.05.22.
CLS

 SCREEN 12


foprg:
REM ***************************** F0PROGRAM *******************
CLOSE #1
LOCATE 1, 5
PRINT "                            "
PRINT "                                "
LOCATE 1, 5
INPUT "Modul cime "; madr
INPUT "Regiszter Sz ma"; cim
GOSUB crc16
FOR ism = 1 TO 5
GOSUB kw
NEXT

GOTO foprg


REM ************************  F”program vége **************

kw:

LOCATE 8, 1: PRINT "kikuld "; jj; " ", c$
      CLOSE #1
      ON ERROR GOTO h0
      OPEN "COM1:9600,N,8,1,rs,cs,ds,cd" FOR RANDOM AS #1
      PRINT #1, c$
      ido = TIMER: t$ = "": r$ = "": jx = 1
v:    IF TIMER > ido + 1 THEN RETURN
	IF LOC(1) > 0 THEN t$ = INPUT$(1, 1) ELSE GOTO v
 REM       PRINT jx, ASC(t$): jx = jx + 1
	r$ = r$ + t$
	IF LEN(r$) < 9 THEN GOTO v
	GOSUB szamol
h2:      
CLOSE #1
RETURN
h0:
 RESUME h2
 RETURN


szamol:
be1 = ASC(MID$(r$, 4, 1)): be2 = ASC(MID$(r$, 5, 1))
be3 = ASC(MID$(r$, 6, 1)): be4 = ASC(MID$(r$, 7, 1))
ertek = be4 + 256 * be3 + 65536 * be2 + 65536 * 256 * be1
LOCATE 20, 2
PRINT be1, be2, be3, be4
PRINT
PRINT "Az"; madr; ".modul "; cim; ".regiszter‚nek ‚rt‚ke="; ertek; "   "
RETURN

crc16:
REM ************ CRC16.BAS
c$ = "12345678"
cimh = INT(cim / 256)
ciml = cim - 256 * cimh
MID$(c$, 1, 1) = CHR$(madr)
MID$(c$, 2, 1) = CHR$(3)
MID$(c$, 3, 1) = CHR$(cimh)
MID$(c$, 4, 1) = CHR$(ciml)
MID$(c$, 5, 1) = CHR$(0)
MID$(c$, 6, 1) = CHR$(2)
msg$ = ""
FOR tx = 1 TO 6
mx = 1
xx = ASC(MID$(c$, tx, 1))
hf$ = HEX$(xx)
IF LEN(hf$) = 1 THEN msg$ = msg$ + "0"
msg$ = msg$ + hf$
mx = mx + 2
NEXT
crc = &HFFFF&
polynomial = &HA001&
ptr = 1
DO WHILE ptr < LEN(msg$)
num$ = "&h" + (MID$(msg$, ptr, 2))
num = VAL(num$)
ptr = ptr + 2
cnt = 8
DO WHILE cnt > 0
temp = num XOR crc
crc = INT(crc / 2)
IF (temp AND 1) THEN crc = crc XOR polynomial
num = INT(num / 2)
cnt = cnt - 1
LOOP
LOOP
crh = INT(crc / 256)
crl = crc - 256 * crh
MID$(c$, 7, 1) = CHR$(crl)
MID$(c$, 8, 1) = CHR$(crh)
REM PRINT c$, crl, crh
RETURN

