summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Pointner <equinox@mur.at>2011-07-22 21:45:49 +0000
committerChristian Pointner <equinox@mur.at>2011-07-22 21:45:49 +0000
commit18114ee5764da58d3b66c7edd223af306bb5540c (patch)
tree7eeece34fba6b5eb3f6134a900d893894ed5508b
parentsplit up send_beacon on sperate functions (diff)
first version of base32 encoder (not working yet)
git-svn-id: https://svn.spreadspace.org/mur.sat@35 7de4ea59-55d0-425e-a1af-a3118ea81d4c
-rw-r--r--software/ttx/ttx.asm204
1 files changed, 192 insertions, 12 deletions
diff --git a/software/ttx/ttx.asm b/software/ttx/ttx.asm
index 4c2a703..ee94de7 100644
--- a/software/ttx/ttx.asm
+++ b/software/ttx/ttx.asm
@@ -36,27 +36,37 @@
;; -------------------------------------
;; DEFINES
-BEACON_INT EQU .5 ; *2 = Beacon Interval in seconds
-SECCNT EQU H'007D'
+ ;; constants
-CHAR EQU H'0041'
-CHARCNT EQU H'0042'
-ELEMENT EQU H'0043'
-ELECNT EQU H'0044'
-
DOT EQU .256 - .29
DASH EQU .256 - .87
ESPACE EQU .256 - .29
CSPACE EQU .256 - .87
WSPACE EQU .256 - .203
-
ENABLE_TIME EQU .256 - .10
+BEACON_INT EQU .5 ; *2 = Beacon Interval in seconds
+ ;; I/O Pins
CWENABLE EQU GP0
CWOUT EQU GP1
SCLK EQU GP2
SDAT EQU GP4
+ ;; variables
+ ;; page 0 only
+ELEMENT EQU H'0040'
+ELECNT EQU H'0041'
+CHAR EQU H'0042'
+PARITY EQU H'0043'
+CHARCNT EQU H'0044'
+PENTLE0 EQU H'0045'
+PENTLE1 EQU H'0046'
+PENTLECNT EQU H'0047'
+
+BUF EQU H'0050'
+
+ ;; all pages
+SECCNT EQU H'007D'
W_TEMP EQU H'007E'
STATUS_TEMP EQU H'007F'
@@ -263,6 +273,7 @@ getcwlen
retlw .4 ; Y
retlw .4 ; Z
+ ;; Base32 Code
base32
addwf PCL,f
nop
@@ -331,7 +342,9 @@ send_char
movf ELECNT,f
btfsc STATUS,Z
return
-
+ movf CHAR,w
+ xorwf PARITY,f
+
char_next_element
bsf GPIO,CWOUT
btfss ELEMENT,7
@@ -372,20 +385,187 @@ callsign_cspace
;; -------------------------------------
send_base32
- return ; TODO
+ movwf PENTLECNT
+
+case0
+ movf INDF,w
+ movwf PENTLE0
+ andlw b'00011111'
+ call base32
+ call send_char
+ decfsz PENTLECNT,f
+ goto case1
+ return
+
+case1
+ movlw CSPACE
+ call dottime
+ swapf PENTLE0,f
+ rrf PENTLE0,w
+ andlw b'00000111'
+ movwf PENTLE0
+ incf FSR,f
+ movf INDF,w
+ movwf PENTLE1
+ rlf PENTLE1,f
+ rlf PENTLE1,f
+ rlf PENTLE1,w
+ andlw b'00011000'
+ iorwf PENTLE0,w
+ call base32
+ call send_char
+ decfsz PENTLECNT,f
+ goto case2
+ return
+
+case2
+ movlw CSPACE
+ call dottime
+ movf INDF,w
+ movwf PENTLE0
+ rrf PENTLE0,f
+ rrf PENTLE0,w
+ andlw b'00011111'
+ call base32
+ call send_char
+ decfsz PENTLECNT,f
+ goto case3
+ return
+
+case3
+ movlw CSPACE
+ call dottime
+ rrf PENTLE0,f
+ rrf PENTLE0,f
+ swapf PENTLE0,w
+ andlw b'00000001'
+ movwf PENTLE0
+ incf FSR,f
+ movf INDF,w
+ movwf PENTLE1
+ rlf PENTLE1,w
+ andlw b'00011110'
+ iorwf PENTLE0,w
+ call base32
+ call send_char
+ decfsz PENTLECNT,f
+ goto case4
+ return
+
+case4
+ movlw CSPACE
+ call dottime
+ swapf INDF,w
+ andlw b'00001111'
+ movwf PENTLE0
+ incf FSR,f
+ btfsc INDF,0
+ bsf PENTLE0,4
+ movf PENTLE0,w
+ call base32
+ call send_char
+ decfsz PENTLECNT,f
+ goto case5
+ return
+
+case5
+ movlw CSPACE
+ call dottime
+ movf INDF,w
+ movwf PENTLE0
+ rrf PENTLE0,w
+ andlw b'00011111'
+ call base32
+ call send_char
+ decfsz PENTLECNT,f
+ goto case6
+ return
+
+case6
+ movlw CSPACE
+ call dottime
+ swapf INDF,w
+ movwf PENTLE0
+ rrf PENTLE0,f
+ rrf PENTLE0,w
+ andlw b'00000011'
+ movwf PENTLE0
+ incf FSR,f
+ movf INDF,w
+ movwf PENTLE1
+ rlf PENTLE1,f
+ rlf PENTLE1,f
+ andlw b'00011100'
+ iorwf PENTLE0,w
+ call base32
+ call send_char
+ decfsz PENTLECNT,f
+ goto case7
+ return
+
+case7
+ movlw CSPACE
+ call dottime
+ movf INDF,w
+ movwf PENTLE0
+ rrf PENTLE0,f
+ rrf PENTLE0,f
+ rrf PENTLE0,w
+ andlw b'00011111'
+ call base32
+ call send_char
+ decfsz PENTLECNT,f
+ goto caseend
+ return
+
+caseend
+ movlw CSPACE
+ call dottime
+ incf FSR,f
+ goto case0
;; -------------------------------------
+send_parity
+ return ; TODO
+
+ ;; -------------------------------------
send_beacon
bsf GPIO,CWENABLE
movlw ENABLE_TIME
call dottime
-
+ clrf PARITY
+
call send_callsign
+ movlw WSPACE
+ call dottime
+
+ movlw b'01010101'
+ movwf BUF
+ movlw b'10101010'
+ movwf BUF + 1
+ movlw b'11110000'
+ movwf BUF + 2
+ movlw b'00001111'
+ movwf BUF + 3
+ movlw b'00111100'
+ movwf BUF + 4
+ movlw b'11000011'
+ movwf BUF + 5
+ movlw b'10101010'
+ movwf BUF + 6
+
+ movlw BUF
+ movwf FSR
+ movlw .10
+ call send_base32
+
+ ;; movlw WSPACE
+ ;; call dottime
+ ;; call send_parity
bcf GPIO,CWENABLE
return
-
;; -------------------------------------
;; MAINLOOP
main