;; ;; mur.sat ;; ;; Somewhen in the year 20xx, mur.at will have a nano satellite launched ;; into a low earth orbit (310 km above the surface of our planet). The ;; satellite itself is a TubeSat personal satellite kit, developed and ;; launched by interorbital systems. mur.sat is a joint venture of mur.at, ;; ESC im Labor and realraum. ;; ;; Please visit the project hompage at sat.mur.at for further information. ;; ;; ;; Copyright (C) 2011-2015 Christian Pointner ;; ;; This file is part of mur.sat. ;; ;; mur.sat is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; any later version. ;; ;; mur.sat is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with mur.sat. If not, see . ;; ;; ------------------------------------- dottime movwf TMR0 bcf INTCON,T0IF dot_inner btfss INTCON,T0IF goto dot_inner clrwdt return ;; ------------------------------------- send_char movwf CHAR movlw 'Z' + 1 subwf CHAR,w btfsc STATUS,C return movlw ' ' subwf CHAR,f btfss STATUS,C return btfsc STATUS,Z return movf CHAR,w call getcw movwf ELEMENT movf CHAR,w call getcwlen movwf ELECNT movf ELECNT,f btfsc STATUS,Z return movf CHAR,w xorwf PARITY,f char_next_element bsf CW_OUT btfss ELEMENT,7 movf DOT,w btfsc ELEMENT,7 movf DASH,w call dottime bcf CW_OUT rlf ELEMENT,f decfsz ELECNT,f goto char_espace return char_espace movf ESPACE,w call dottime goto char_next_element ;; ------------------------------------- send_callsign movlw .6 movwf CHARCNT callsign_next_char call callsign call send_char decfsz CHARCNT,f goto callsign_cspace return callsign_cspace movf CSPACE,w call dottime movf CHARCNT,w goto callsign_next_char ;; ------------------------------------- send_base32 movwf PENTLECNT case0 rrf INDF0,w movwf PENTLE0 rrf PENTLE0,f rrf PENTLE0,w andlw b'00011111' call base32 call send_char decfsz PENTLECNT,f goto case1 return case1 movf CSPACE,w call dottime rlf INDF0,w movwf PENTLE0 rlf PENTLE0,w andlw b'00011100' movwf PENTLE0 incf FSR0L,f swapf INDF0,w movwf PENTLE1 rrf PENTLE1,f rrf PENTLE1,w andlw b'00000011' iorwf PENTLE0,w call base32 call send_char decfsz PENTLECNT,f goto case2 return case2 movf CSPACE,w call dottime rrf INDF0,w andlw b'00011111' call base32 call send_char decfsz PENTLECNT,f goto case3 return case3 movf CSPACE,w call dottime swapf INDF0,w andlw b'00010000' movwf PENTLE0 incf FSR0L,f swapf INDF0,w andlw b'00001111' iorwf PENTLE0,w call base32 call send_char decfsz PENTLECNT,f goto case4 return case4 movf CSPACE,w call dottime rlf INDF0,w andlw b'00011110' movwf PENTLE0 incf FSR0L,f btfsc INDF0,7 bsf PENTLE0,0 movf PENTLE0,w call base32 call send_char decfsz PENTLECNT,f goto case5 return case5 movf CSPACE,w call dottime rrf INDF0,w movwf PENTLE0 rrf PENTLE0,w andlw b'00011111' call base32 call send_char decfsz PENTLECNT,f goto case6 return case6 movf CSPACE,w call dottime swapf INDF0,w movwf PENTLE0 rrf PENTLE0,w andlw b'00011000' movwf PENTLE0 incf FSR0L,f swapf INDF0,w movwf PENTLE1 rrf PENTLE1,w andlw b'00000111' iorwf PENTLE0,w call base32 call send_char decfsz PENTLECNT,f goto case7 return case7 movf CSPACE,w call dottime movf INDF0,w andlw b'00011111' call base32 call send_char decfsz PENTLECNT,f goto caseend return caseend movf CSPACE,w call dottime incf FSR0L,f goto case0 ;; ------------------------------------- send_cnt rlf BEACONCNTL,w movwf TMP2 rlf BEACONCNTH,w movwf TMP1 movlw TMP1 movwf FSR0L clrf FSR0H movlw .3 call send_base32 return ;; ------------------------------------- send_parity movf PARITY,w btfsc PARITY,5 xorlw b'00000001' andlw b'00011111' call base32 call send_char movf WSPACE,w call dottime return ;; ------------------------------------- send_beacon bsf CW_ENABLE movf TUNE,w call dottime clrf PARITY movlw START_CHAR call send_char movf WSPACE,w call dottime call send_callsign movf WSPACE,w call dottime call send_cnt movf WSPACE,w call dottime call send_parity incfsz BEACONCNTL,f goto beacon_end incf BEACONCNTH,f ;; TODO write new cnt value to EEPROM beacon_end bcf CW_ENABLE return ;; -------------------------------------