home *** CD-ROM | disk | FTP | other *** search
- ;BS2 Communicator |
- ;-------------------|
- ;Interface your BASIC Stamp2 using your TI82!!!
- ;-----------------------------------------------
- ;Author: Jakob Selbing
- ;E-mail: jakob_selbing@homail.com
- ;-----------------------------------------------
-
- #include "ti82.h"
-
- .org START_ADDR
- .db "BS2 Communicator by JSS",0
-
- link_cs =%11001100 ;white=0 red=0
- link_zp =%11001000 ;white=0 red=1
- link_pr =%11000100 ;white=1 red=0
- link_op =%11000000 ;white=1 red=1
- linkbyte =GRAPH_MEM
- linkdelay =GRAPH_MEM+1
- ;linkdelay =GRAPH_MEM+2
-
- ld a,%11001100
- out (0),a
-
- ld hl,GRAPH_MEM
- ld de,GRAPH_MEM+1
- ld bc,767
- ld (hl),0
- ldir
-
- ld hl,35300
- ld de,35301
- ld bc,11
- ld (hl),$FF
- ldir
-
- ROM_CALL(DISP_GRAPH)
- ld a,0
- ld ($800C),a
- ld a,2
- ld ($800D),a
- ld hl,string_title
- ROM_CALL(D_ZT_STR)
- ld a,1
- ld ($800C),a
- ld a,0
- ld ($800D),a
- ROM_CALL(D_ZT_STR)
- ld a,2
- ld ($800C),a
- ld a,4
- ld ($800D),a
- ROM_CALL(D_ZT_STR)
- ld a,4
- ld ($800C),a
- ld a,0
- ld ($800D),a
- ROM_CALL(D_ZT_STR)
- ld a,5
- ld ($800C),a
- ld a,0
- ld ($800D),a
- ROM_CALL(D_ZT_STR)
-
-
- ld a,0
- ld (linkbyte),a
- call sub_drawlinkbyte
-
- ld a,0
- ld (linkdelay),a
- ld a,200
- ld (linkdelay+1),a
- call sub_dispdelay
-
- wait:
- ld de,10000
- call sub_delay
- ld a,%11111110
- out (1),a
- in a,(1)
- bit 3,a
- jr z,increasebyte
- bit 0,a
- jr z,decreasebyte
- bit 2,a
- jr z,increasedelay
- bit 1,a
- jr z,decreasedelay
- call GET_KEY
- cp $09
- call z,sub_sendlink
- cp $0F
- ret z
- jr wait
-
- increasedelay:
- ld a,(linkdelay)
- ld b,a
- ld a,(linkdelay+1)
- ld c,a
- inc bc
- ld a,b
- ld (linkdelay),a
- ld a,c
- ld (linkdelay+1),a
- call sub_dispdelay
- jr wait
-
- decreasedelay:
- ld a,(linkdelay)
- ld b,a
- ld a,(linkdelay+1)
- ld c,a
- dec bc
- ld a,b
- ld (linkdelay),a
- ld a,c
- ld (linkdelay+1),a
- call sub_dispdelay
- jr wait
-
-
- increasebyte:
- ld a,(linkbyte)
- inc a
- ld (linkbyte),a
- call sub_drawlinkbyte
- jp wait
-
- decreasebyte:
- ld a,(linkbyte)
- dec a
- ld (linkbyte),a
- call sub_drawlinkbyte
- jp wait
-
-
- sub_dispdelay:
- ld a,5
- ld ($800C),a
- ld a,9
- ld ($800D),a
- ld a,(linkdelay)
- ld h,a
- ld a,(linkdelay+1)
- ld l,a
- ROM_CALL(D_HL_DECI)
- ret
-
-
- sub_sendlink:
- ld b,8
- ld a,(linkbyte)
- ld c,a
- link_nextbit:
- sla c
- jr c,link_sendone
- ;link_sendzero
- call sub_linkdelay
- ld a,link_zp
- out (0),a
- call sub_linkdelay
- ld a,link_cs
- out (0),a
- call sub_linkdelay
- djnz link_nextbit
- ret
-
- link_sendone:
- call sub_linkdelay
- ld a,link_op
- out (0),a
- call sub_linkdelay
- ld a,link_pr
- out (0),a
- call sub_linkdelay
- ld a,link_cs
- out (0),a
- call sub_linkdelay
- djnz link_nextbit
- ret
-
- sub_linkdelay:
- ld a,(linkdelay)
- ld d,a
- ld a,(linkdelay+1)
- ld e,a
- sub_delay:
- push af
- delay_loop:
- dec de
- ld a,d
- or e
- jr nz,delay_loop
- pop af
- ret
-
- sub_drawlinkbyte:
- ld a,4
- ld ($800C),a
- ld a,9
- ld ($800D),a
- ld hl,0
- ld a,(linkbyte)
- ld l,a
- ROM_CALL(D_HL_DECI)
- ret
-
-
-
- string_title:
- .db "BASIC Stamp2",0
- .db "Communicator 1.0",0
- .db "JSS 1998",0
- .db "Send:",0
- .db "Delay:",0
- .end
-