home *** CD-ROM | disk | FTP | other *** search
/ ticalc.org / ticalc_org_rev_b.iso / archives / 82 / asm / source / ash / bs2com.asm < prev    next >
Encoding:
Assembly Source File  |  2001-07-01  |  3.1 KB  |  219 lines

  1. ;BS2 Communicator   |
  2. ;-------------------|
  3. ;Interface your BASIC Stamp2 using your TI82!!!
  4. ;-----------------------------------------------
  5. ;Author: Jakob Selbing
  6. ;E-mail: jakob_selbing@homail.com
  7. ;-----------------------------------------------
  8.  
  9. #include "ti82.h"
  10.  
  11.  .org START_ADDR
  12.  .db "BS2 Communicator by JSS",0
  13.  
  14. link_cs         =%11001100      ;white=0 red=0
  15. link_zp         =%11001000      ;white=0 red=1
  16. link_pr         =%11000100      ;white=1 red=0
  17. link_op         =%11000000      ;white=1 red=1
  18. linkbyte        =GRAPH_MEM
  19. linkdelay       =GRAPH_MEM+1
  20. ;linkdelay       =GRAPH_MEM+2
  21.  
  22.  ld a,%11001100
  23.  out (0),a
  24.  
  25.  ld hl,GRAPH_MEM
  26.  ld de,GRAPH_MEM+1
  27.  ld bc,767
  28.  ld (hl),0
  29.  ldir
  30.  
  31.  ld hl,35300
  32.  ld de,35301
  33.  ld bc,11
  34.  ld (hl),$FF
  35.  ldir
  36.  
  37.  ROM_CALL(DISP_GRAPH)
  38.  ld a,0
  39.  ld ($800C),a
  40.  ld a,2
  41.  ld ($800D),a
  42.  ld hl,string_title
  43.  ROM_CALL(D_ZT_STR)
  44.  ld a,1
  45.  ld ($800C),a
  46.  ld a,0
  47.  ld ($800D),a
  48.  ROM_CALL(D_ZT_STR)
  49.  ld a,2
  50.  ld ($800C),a
  51.  ld a,4
  52.  ld ($800D),a
  53.  ROM_CALL(D_ZT_STR)
  54.  ld a,4
  55.  ld ($800C),a
  56.  ld a,0
  57.  ld ($800D),a
  58.  ROM_CALL(D_ZT_STR)
  59.  ld a,5
  60.  ld ($800C),a
  61.  ld a,0
  62.  ld ($800D),a
  63.  ROM_CALL(D_ZT_STR)
  64.  
  65.  
  66.  ld a,0
  67.  ld (linkbyte),a
  68.  call sub_drawlinkbyte
  69.  
  70.  ld a,0
  71.  ld (linkdelay),a
  72.  ld a,200
  73.  ld (linkdelay+1),a
  74.  call sub_dispdelay
  75.  
  76. wait:
  77.  ld de,10000
  78.  call sub_delay
  79.  ld a,%11111110
  80.  out (1),a
  81.  in a,(1)
  82.  bit 3,a
  83.  jr z,increasebyte
  84.  bit 0,a
  85.  jr z,decreasebyte
  86.  bit 2,a
  87.  jr z,increasedelay
  88.  bit 1,a
  89.  jr z,decreasedelay
  90.  call GET_KEY
  91.  cp $09
  92.  call z,sub_sendlink
  93.  cp $0F
  94.  ret z
  95.  jr wait
  96.  
  97. increasedelay:
  98.  ld a,(linkdelay)
  99.  ld b,a
  100.  ld a,(linkdelay+1)
  101.  ld c,a
  102.  inc bc
  103.  ld a,b
  104.  ld (linkdelay),a
  105.  ld a,c
  106.  ld (linkdelay+1),a
  107.  call sub_dispdelay
  108.  jr wait
  109.  
  110. decreasedelay:
  111.  ld a,(linkdelay)
  112.  ld b,a
  113.  ld a,(linkdelay+1)
  114.  ld c,a
  115.  dec bc
  116.  ld a,b
  117.  ld (linkdelay),a
  118.  ld a,c
  119.  ld (linkdelay+1),a
  120.  call sub_dispdelay
  121.  jr wait
  122.  
  123.  
  124. increasebyte:
  125.  ld a,(linkbyte)
  126.  inc a
  127.  ld (linkbyte),a
  128.  call sub_drawlinkbyte
  129.  jp wait
  130.  
  131. decreasebyte:
  132.  ld a,(linkbyte)
  133.  dec a
  134.  ld (linkbyte),a
  135.  call sub_drawlinkbyte
  136.  jp wait
  137.  
  138.  
  139. sub_dispdelay:
  140.  ld a,5
  141.  ld ($800C),a
  142.  ld a,9
  143.  ld ($800D),a
  144.  ld a,(linkdelay)
  145.  ld h,a
  146.  ld a,(linkdelay+1)
  147.  ld l,a
  148.  ROM_CALL(D_HL_DECI)
  149.  ret
  150.  
  151.  
  152. sub_sendlink:
  153.  ld b,8
  154.  ld a,(linkbyte)
  155.  ld c,a
  156. link_nextbit:
  157.  sla c
  158.  jr c,link_sendone
  159. ;link_sendzero
  160.  call sub_linkdelay
  161.  ld a,link_zp
  162.  out (0),a
  163.  call sub_linkdelay
  164.  ld a,link_cs
  165.  out (0),a
  166.  call sub_linkdelay
  167.  djnz link_nextbit
  168.  ret
  169.  
  170. link_sendone:
  171.  call sub_linkdelay
  172.  ld a,link_op
  173.  out (0),a
  174.  call sub_linkdelay
  175.  ld a,link_pr
  176.  out (0),a
  177.  call sub_linkdelay
  178.  ld a,link_cs
  179.  out (0),a
  180.  call sub_linkdelay
  181.  djnz link_nextbit
  182.  ret
  183.  
  184. sub_linkdelay:
  185.  ld a,(linkdelay)
  186.  ld d,a
  187.  ld a,(linkdelay+1)
  188.  ld e,a
  189. sub_delay:
  190.  push af
  191. delay_loop:
  192.  dec de
  193.  ld a,d
  194.  or e
  195.  jr nz,delay_loop
  196.  pop af
  197.  ret
  198.  
  199. sub_drawlinkbyte:
  200.  ld a,4
  201.  ld ($800C),a
  202.  ld a,9
  203.  ld ($800D),a
  204.  ld hl,0
  205.  ld a,(linkbyte)
  206.  ld l,a
  207.  ROM_CALL(D_HL_DECI)
  208.  ret
  209.  
  210.  
  211.  
  212. string_title:
  213.  .db "BASIC Stamp2",0
  214.  .db "Communicator 1.0",0
  215.  .db "JSS 1998",0
  216.  .db "Send:",0
  217.  .db "Delay:",0
  218.  .end
  219.