home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / control / homecon / x10.bas < prev    next >
BASIC Source File  |  1988-04-12  |  6KB  |  149 lines

  1. 19999 CLS:PRINT"ERROR RUNNING INTO UTILITIES......":END
  2. 20000 '*************** SETUP ROUTINE ************************
  3. 20001 '
  4. 20002 ' (C) 1986 X10 (USA) inc          GD - 07/05/86
  5. 20003 '
  6. 20005 DIM CODCONV(16) , TIM( 7,128)
  7. 20008 DIM GRAPH(2,256)
  8. 20015 OPEN "COM1:600,N,8,1,CS,DS" AS #1
  9. 20020 DAYCONV(1)=64:DAYCONV(2)=1:DAYCONV(3)=2
  10. 20030 DAYCONV(4)=4:DAYCONV(5)=8:DAYCONV(6)=16:DAYCONV(7)=32
  11. 20040 HOURS=0:MINS=0
  12. 20050 CODCONV(1)=96:CODCONV(2)=224:CODCONV(3)=32:CODCONV(4)=160:CODCONV(5)=16
  13. 20060 CODCONV(6)=144:CODCONV(7)=80:CODCONV(8)=208:CODCONV(9)=112
  14. 20070 CODCONV(10)=240:CODCONV(11)=48:CODCONV(12)=176:CODCONV(13)=0
  15. 20080 CODCONV(14)=128:CODCONV(15)=64:CODCONV(16)=192
  16. 20099 RETURN
  17. 20100 '************ SET TIME IN INTERFACE *******************
  18. 20101 '
  19. 20110 GOSUB 30300
  20. 20125 A=2:GOSUB 30000
  21. 20130 A=MINS:GOSUB 30000
  22. 20140 A=HOURS:GOSUB 30100
  23. 20150 A=DAYCONV(DAY):GOSUB 30100
  24. 20160 CHKSUM=(CHKSUM AND 255):A=CHKSUM:GOSUB 30600
  25. 20170 GOTO 30200
  26. 20200 '************ SET BASE HOUSECODE **********************
  27. 20201 '
  28. 20210 GOSUB 30300
  29. 20220 A=0:GOSUB 30000
  30. 20230 A=CODCONV(BASECODE):GOSUB 30000
  31. 20240 GOTO 30200
  32. 20300 '**************** READ THE TIME ***********************
  33. 20301 '
  34. 20310 GOSUB 30300
  35. 20320 A=4:GOSUB 30000
  36. 20370 GOSUB 30500:IF STATUS = -1 THEN RETURN
  37. 20375 STATUS=A
  38. 20380 GOSUB 30400:IF STATUS=-1 THEN RETURN
  39. 20385 MINS=A:GOSUB 30400:IF STATUS=-1 THEN RETURN
  40. 20390 HOURS=A:GOSUB 30400:IF STATUS=-1 THEN RETURN
  41. 20395 BTEMP=A:GOSUB 30400:IF STATUS=-1 THEN RETURN
  42. 20396 C=A:GOSUB 30400:IF STATUS=-1 THEN RETURN
  43. 20400 FOR BASECODE=1 TO 16:IF HTEMP=CODCONV(BASECODE) THEN 20420
  44. 20410 NEXT BASECODE
  45. 20420 FOR DAY=1 TO 7:IF BTEMP=DAYCONV(DAY) THEN RETURN
  46. 20430 NEXT DAY
  47. 20440 RETURN
  48. 20500 '****************** X10 DIRECT ************************
  49. 20501 '
  50. 20510 IF FUNCTION=2 THEN FTEMP=3:GOTO 20540
  51. 20520 IF FUNCTION=3 THEN FTEMP=5+(240 AND (LEVEL*16)):GOTO 20540
  52. 20530 FTEMP=2
  53. 20540 HTEMP=CODCONV(HOUSECODE)
  54. 20560 GOSUB 30300
  55. 20570 A=1:GOSUB 30000:A=FTEMP:GOSUB 30000:A=HTEMP:GOSUB 30100:A=HIUNIT:GOSUB 30100
  56. 20580 A=LOUNIT:GOSUB 30100:A=(CHKSUM AND 255):GOSUB 30000
  57. 20590 GOSUB 30200:IF STATUS=-1 THEN RETURN
  58. 20600 GOSUB 30500:IF STATUS=-1 THEN RETURN
  59. 20610 STATUS =A
  60. 20660 GOSUB 30400:IF STATUS=-1 THEN RETURN
  61. 20670 FTEMP=A:GOSUB 30400:IF STATUS=-1 THEN RETURN
  62. 20680 HIUNIT=A:GOSUB 30400:IF STATUS=-1 THEN RETURN
  63. 20685 LOUNIT=A:GOSUB 30400:IF STATUS=-1 THEN RETURN
  64. 20690 BTEMP=A:A=(FTEMP AND 240)
  65. 20695 FOR HOUSECODE=1 TO 16
  66. 20700 IF A<>CODCONV(HOUSECODE) THEN NEXT HOUSECODE
  67. 20710 FOR BASECODE=1 TO 16
  68. 20720 IF BTEMP<>CODCONV(BASECODE) THEN NEXT BASECODE
  69. 20740 A=(FTEMP AND 15):FUNCTION=1:IF A=4 THEN FUNCTION=3
  70. 20750 IF A=3 THEN FUNCTION =2
  71. 20760 RETURN
  72. 20800 '************** DOWNLOAD TIMER EVENT ******************
  73. 20801 '
  74. 20810 ADDR1=((ADDRESS) AND 31)*8:ADDR2=((ADDRESS) AND 96)/32
  75. 20820 GOSUB 30300:A=3:GOSUB 30000
  76. 20830 A=ADDR1:GOSUB 30000:A=ADDR2:GOSUB 30000
  77. 20840 A=TIM(0,ADDRESS):GOSUB 30000
  78. 20845 FOR XTEMP=1 TO 7
  79. 20847 A=TIM(XTEMP,ADDRESS):GOSUB 30100
  80. 20848 NEXT XTEMP
  81. 20850 A=CHKSUM AND 255 :GOSUB 30000
  82. 20860 GOTO 30200
  83. 20900 '*************** UPLOAD TIMER EVENTS ******************
  84. 20901 '
  85. 20910 GOSUB 30300:A=5:GOSUB 30000
  86. 20920 GOSUB 30500:IF STATUS=-1 THEN RETURN
  87. 20925 EVENT =0
  88. 20930 GOSUB 30400:IF STATUS=-1 THEN RETURN
  89. 20935 IF A=255 THEN 20970
  90. 20940 FOR XTEMP=0 TO 6
  91. 20945 TIM(XTEMP,EVENT)=A:GOSUB 30400:IF STATUS=-1 THEN RETURN
  92. 20947 NEXT XTEMP:TIM(7,EVENT)=A
  93. 20948 EVENT=EVENT+1:IF EVENT < 128 THEN 20930
  94. 20950 GOTO 30400:IF STATUS=-1 THEN RETURN
  95. 20970 FOR XTEMP=0 TO 7:TIM(XTEMP,EVENT)=0
  96. 20980 NEXT XTEMP:GOTO 20948
  97. 21000 '************** DOWNLOAD GRAPHICS DATA ****************
  98. 21001 '
  99. 21010 ADDR1=((ADDRESS) AND 127)*2:ADDR2=4+(((ADDRESS) AND 128)/128)
  100. 21020 GOSUB 30300:A=3:GOSUB 30000
  101. 21030 A=ADDR1:GOSUB 30000:A=ADDR2:GOSUB 30000
  102. 21040 A=GRAPH(0,ADDRESS):GOSUB 30000
  103. 21050 A=GRAPH(1,ADDRESS):GOSUB 30100
  104. 21060 A=CHKSUM AND 255 :GOSUB 30000
  105. 21070 GOTO 30200
  106. 21100 '**************** UPLOAD GRAPHICS DATA ****************
  107. 21101 '
  108. 21110 GOSUB 30300:A=6:GOSUB 30000
  109. 21120 GOSUB 30500:IF STATUS=-1 THEN RETURN
  110. 21125 EVENT=0
  111. 21130 GOSUB 30400::IF STATUS=-1 THEN RETURN
  112. 21135 IF A=255 THEN GRAPH(1,EVENT)=0:GRAPH(2,EVENT)=0:GOTO 21150
  113. 21140 GRAPH(0,EVENT)=A:GOSUB 30400:IF STATUS=-1 THEN RETURN
  114. 21141 GRAPH(1,EVENT)=A
  115. 21150 EVENT=EVENT+1:IF EVENT < 256 THEN 21130
  116. 21160 GOTO 30400
  117. 30000 CHKSUM=0
  118. 30100 A1=LOF(1):CHKSUM=CHKSUM+A:GOSUB 30600
  119. 30110 IF LOF(1)<>A1 THEN 30110
  120. 30120 RETURN
  121. 30200 '***************** GET ACKN ***************************
  122. 30201 '
  123. 30220 GOSUB 30500:IF STATUS=-1 THEN RETURN
  124. 30250 STATUS=A
  125. 30270 RETURN
  126. 30300 '***************** START CODE *************************
  127. 30301 '
  128. 30310 FOR XTEMP=1 TO 16
  129. 30320 A=255:GOSUB 30600: NEXT XTEMP
  130. 30330 RETURN
  131. 30400 '***************** GET RS 232 DATA ********************
  132. 30405 COUNT=0
  133. 30410 IF COUNT> 1500 THEN STATUS=-1:RETURN
  134. 30420 IF LOF(1) = 256  THEN COUNT=COUNT+1:GOTO 30410
  135. 30430 GOSUB 30700:A=ASC(A$):RETURN
  136. 30500 '***************** GET IN SYNC ************************
  137. 30501 '
  138. 30510 STATUS=0:COUNT=0 :XTEMP =LOF(1)
  139. 30520 IF COUNT> 1500 THEN STATUS=-1:RETURN
  140. 30530 IF LOF(1) =XTEMP    THEN COUNT=COUNT+1:GOTO 30520
  141. 30540 GOSUB 30700 : A=ASC(A$) : IF A=255 THEN XTEMP=XTEMP+1 : GOTO 30520
  142. 30550 RETURN
  143. 30600 ' **************** O/P TO PORT ***************
  144. 30601 '
  145. 30610 PRINT # 1,CHR$(A);:RETURN
  146. 30700 ' **************** I/P TO PORT ***************
  147. 30701 '
  148. 30710 A$=INPUT$(1,#1):RETURN
  149.