From 18114ee5764da58d3b66c7edd223af306bb5540c Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Fri, 22 Jul 2011 21:45:49 +0000 Subject: first version of base32 encoder (not working yet) git-svn-id: https://svn.spreadspace.org/mur.sat@35 7de4ea59-55d0-425e-a1af-a3118ea81d4c --- software/ttx/ttx.asm | 204 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 192 insertions(+), 12 deletions(-) (limited to 'software') 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 -- cgit v1.2.3