;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