Mercurial > public > hwos_code
comparison src/tft_outputs.asm @ 251:3fec179a6220
some cleanup, temporaly disable dive_warning.inc
| author | heinrichsweikamp |
|---|---|
| date | Wed, 18 Mar 2015 17:39:27 +0100 |
| parents | 20e3bad0b0f2 |
| children | d912fb71d606 |
comparison
equal
deleted
inserted
replaced
| 250:20e3bad0b0f2 | 251:3fec179a6220 |
|---|---|
| 581 global TFT_divemode_warning | 581 global TFT_divemode_warning |
| 582 TFT_divemode_warning: | 582 TFT_divemode_warning: |
| 583 bsf dive_warning_displayed ; =1: The warning sign is shown | 583 bsf dive_warning_displayed ; =1: The warning sign is shown |
| 584 WIN_TOP warning_icon_row | 584 WIN_TOP warning_icon_row |
| 585 WIN_LEFT warning_icon_column | 585 WIN_LEFT warning_icon_column |
| 586 TFT_WRITE_PROM_IMAGE dive_warning_block ; Show Warning icon | 586 ; TFT_WRITE_PROM_IMAGE dive_warning_block ; Show Warning icon |
| 587 ; movlw .3 | 587 ; movlw .3 |
| 588 ; cpfslt warning_counter ; More then two warnings? | 588 ; cpfslt warning_counter ; More then two warnings? |
| 589 ; rcall TFT_divemode_warning_counter ; Yes, show the number | 589 ; rcall TFT_divemode_warning_counter ; Yes, show the number |
| 590 return | 590 return |
| 591 | 591 |
| 1542 ; don't do a clear if we are at 0 (zero) otherwise it will blink | 1542 ; don't do a clear if we are at 0 (zero) otherwise it will blink |
| 1543 ; because of the width underflow | 1543 ; because of the width underflow |
| 1544 movlw d'0' | 1544 movlw d'0' |
| 1545 cpfsgt lo,1 | 1545 cpfsgt lo,1 |
| 1546 bra TFT_dive_compass_ruler_loop_zz | 1546 bra TFT_dive_compass_ruler_loop_zz |
| 1547 call TFT_dive_compass_clr_ruler | 1547 rcall TFT_dive_compass_clr_ruler |
| 1548 TFT_dive_compass_ruler_loop_zz: | 1548 TFT_dive_compass_ruler_loop_zz: |
| 1549 ; 3. Draw the markers @ RM | 1549 ; 3. Draw the markers @ RM |
| 1550 call TFT_dive_compass_ruler_print | 1550 rcall TFT_dive_compass_ruler_print |
| 1551 ; 4. If D<82 and RM>79: means we put something over the center line | 1551 ; 4. If D<82 and RM>79: means we put something over the center line |
| 1552 ; redraw the center line | 1552 ; redraw the center line |
| 1553 movlw d'82' | 1553 movlw d'82' |
| 1554 cpfslt hi,1 | 1554 cpfslt hi,1 |
| 1555 bra TFT_dive_compass_ruler_loop_zz2 | 1555 bra TFT_dive_compass_ruler_loop_zz2 |
| 1556 movlw d'79' | 1556 movlw d'79' |
| 1557 cpfsgt lo,1 | 1557 cpfsgt lo,1 |
| 1558 bra TFT_dive_compass_ruler_loop_zz2 | 1558 bra TFT_dive_compass_ruler_loop_zz2 |
| 1559 call TFT_dive_compass_c_mk | 1559 rcall TFT_dive_compass_c_mk |
| 1560 TFT_dive_compass_ruler_loop_zz2: | 1560 TFT_dive_compass_ruler_loop_zz2: |
| 1561 ; 5. set D = RM + 2 : position after the 2px tick | 1561 ; 5. set D = RM + 2 : position after the 2px tick |
| 1562 movff lo,hi | 1562 movff lo,hi |
| 1563 movlw d'2' | 1563 movlw d'2' |
| 1564 addwf hi,1 | 1564 addwf hi,1 |
| 1575 bra TFT_dive_compass_ruler_lend2 ; D >= W | 1575 bra TFT_dive_compass_ruler_lend2 ; D >= W |
| 1576 ; 9. position left to end of display to clear the remaining area | 1576 ; 9. position left to end of display to clear the remaining area |
| 1577 movlw d'160' | 1577 movlw d'160' |
| 1578 movwf lo | 1578 movwf lo |
| 1579 ; 10. clear it | 1579 ; 10. clear it |
| 1580 call TFT_dive_compass_clr_ruler | 1580 rcall TFT_dive_compass_clr_ruler |
| 1581 | 1581 |
| 1582 TFT_dive_compass_ruler_lend2: | 1582 TFT_dive_compass_ruler_lend2: |
| 1583 ; done with the compass ruler, put the labels on the screen | 1583 ; done with the compass ruler, put the labels on the screen |
| 1584 ; get the RD abck to sub_b | 1584 ; get the RD abck to sub_b |
| 1585 movff xRD+0,sub_b+0 | 1585 movff xRD+0,sub_b+0 |
| 1596 movwf up ; up stores the width of hte label | 1596 movwf up ; up stores the width of hte label |
| 1597 movlw low( d'309' ) ; position of the label | 1597 movlw low( d'309' ) ; position of the label |
| 1598 movwf sub_a+0 | 1598 movwf sub_a+0 |
| 1599 movlw high( d'309' ) | 1599 movlw high( d'309' ) |
| 1600 movwf sub_a+1 | 1600 movwf sub_a+1 |
| 1601 call TFT_dive_compass_label_proc ; check if the label should be on screen | 1601 rcall TFT_dive_compass_label_proc ; check if the label should be on screen |
| 1602 btfsc print_compass_label ; Yes? | 1602 btfss print_compass_label ; Yes? |
| 1603 STRCPY_PRINT "NW" ; yes - print it | 1603 bra dcr_1 |
| 1604 call TFT_dive_compass_c_mk ; check if label is on the center line or the marker | 1604 STRCPY_TEXT_PRINT tNW ; yes - print it |
| 1605 dcr_1: | |
| 1606 rcall TFT_dive_compass_c_mk ; check if label is on the center line or the marker | |
| 1605 | 1607 |
| 1606 movlw d'6' | 1608 movlw d'6' |
| 1607 movwf up ; up stores the width of hte label | 1609 movwf up ; up stores the width of hte label |
| 1608 movlw low( d'358' ) ; position of the label | 1610 movlw low( d'358' ) ; position of the label |
| 1609 movwf sub_a+0 | 1611 movwf sub_a+0 |
| 1610 movlw high( d'358' ) | 1612 movlw high( d'358' ) |
| 1611 movwf sub_a+1 | 1613 movwf sub_a+1 |
| 1612 call TFT_dive_compass_label_proc ; check if the label should be on screen | 1614 rcall TFT_dive_compass_label_proc ; check if the label should be on screen |
| 1613 btfsc print_compass_label ; Yes? | 1615 btfss print_compass_label ; Yes? |
| 1614 STRCPY_PRINT "N" ; yes - print it | 1616 bra dcr_2 |
| 1615 call TFT_dive_compass_c_mk ; check if label is on the center line or the marker | 1617 STRCPY_TEXT_PRINT tN ; yes - print it |
| 1618 dcr_2: | |
| 1619 rcall TFT_dive_compass_c_mk ; check if label is on the center line or the marker | |
| 1616 | 1620 |
| 1617 movlw d'13' | 1621 movlw d'13' |
| 1618 movwf up ; up stores the width of hte label | 1622 movwf up ; up stores the width of hte label |
| 1619 movlw low( d'399' ) ; position of the label | 1623 movlw low( d'399' ) ; position of the label |
| 1620 movwf sub_a+0 | 1624 movwf sub_a+0 |
| 1621 movlw high( d'399' ) | 1625 movlw high( d'399' ) |
| 1622 movwf sub_a+1 | 1626 movwf sub_a+1 |
| 1623 call TFT_dive_compass_label_proc ; check if the label should be on screen | 1627 rcall TFT_dive_compass_label_proc ; check if the label should be on screen |
| 1624 btfsc print_compass_label ; Yes? | 1628 btfss print_compass_label ; Yes? |
| 1625 STRCPY_PRINT "NE" ; yes - print it | 1629 bra dcr_3 |
| 1626 call TFT_dive_compass_c_mk ; check if label is on the center line or the marker | 1630 STRCPY_TEXT_PRINT tNE ; yes - print it |
| 1631 dcr_3: | |
| 1632 rcall TFT_dive_compass_c_mk ; check if label is on the center line or the marker | |
| 1627 | 1633 |
| 1628 movlw d'6' | 1634 movlw d'6' |
| 1629 movwf up ; up stores the width of hte label | 1635 movwf up ; up stores the width of hte label |
| 1630 movlw low( d'448' ) ; position of the label | 1636 movlw low( d'448' ) ; position of the label |
| 1631 movwf sub_a+0 | 1637 movwf sub_a+0 |
| 1632 movlw high( d'448' ) | 1638 movlw high( d'448' ) |
| 1633 movwf sub_a+1 | 1639 movwf sub_a+1 |
| 1634 call TFT_dive_compass_label_proc ; check if the label should be on screen | 1640 rcall TFT_dive_compass_label_proc ; check if the label should be on screen |
| 1635 btfsc print_compass_label ; Yes? | 1641 btfss print_compass_label ; Yes? |
| 1636 STRCPY_PRINT "E" ; yes - print it | 1642 bra dcr_4 |
| 1637 call TFT_dive_compass_c_mk ; check if label is on the center line or the marker | 1643 STRCPY_TEXT_PRINT tE ; yes - print it |
| 1644 dcr_4: | |
| 1645 rcall TFT_dive_compass_c_mk ; check if label is on the center line or the marker | |
| 1638 | 1646 |
| 1639 movlw d'13' | 1647 movlw d'13' |
| 1640 movwf up ; up stores the width of hte label | 1648 movwf up ; up stores the width of hte label |
| 1641 movlw low( d'489' ) ; position of the label | 1649 movlw low( d'489' ) ; position of the label |
| 1642 movwf sub_a+0 | 1650 movwf sub_a+0 |
| 1643 movlw high( d'489' ) | 1651 movlw high( d'489' ) |
| 1644 movwf sub_a+1 | 1652 movwf sub_a+1 |
| 1645 call TFT_dive_compass_label_proc ; check if the label should be on screen | 1653 rcall TFT_dive_compass_label_proc ; check if the label should be on screen |
| 1646 btfsc print_compass_label ; Yes? | 1654 btfss print_compass_label ; Yes? |
| 1647 STRCPY_PRINT "SE" ; yes - print it | 1655 bra dcr_5 |
| 1648 call TFT_dive_compass_c_mk ; check if label is on the center line or the marker | 1656 STRCPY_TEXT_PRINT tSE ; yes - print it |
| 1657 dcr_5: | |
| 1658 rcall TFT_dive_compass_c_mk ; check if label is on the center line or the marker | |
| 1649 | 1659 |
| 1650 movlw d'6' | 1660 movlw d'6' |
| 1651 movwf up ; up stores the width of hte label | 1661 movwf up ; up stores the width of hte label |
| 1652 movlw low( d'538' ) ; position of the label | 1662 movlw low( d'538' ) ; position of the label |
| 1653 movwf sub_a+0 | 1663 movwf sub_a+0 |
| 1654 movlw high( d'538' ) | 1664 movlw high( d'538' ) |
| 1655 movwf sub_a+1 | 1665 movwf sub_a+1 |
| 1656 call TFT_dive_compass_label_proc ; check if the label should be on screen | 1666 rcall TFT_dive_compass_label_proc ; check if the label should be on screen |
| 1657 btfsc print_compass_label ; Yes? | 1667 btfss print_compass_label ; Yes? |
| 1658 STRCPY_PRINT "S" ; yes - print it | 1668 bra dcr_6 |
| 1659 call TFT_dive_compass_c_mk ; check if label is on the center line or the marker | 1669 STRCPY_TEXT_PRINT tS ; yes - print it |
| 1670 dcr_6: | |
| 1671 rcall TFT_dive_compass_c_mk ; check if label is on the center line or the marker | |
| 1660 | 1672 |
| 1661 movlw d'14' | 1673 movlw d'14' |
| 1662 movwf up ; up stores the width of hte label | 1674 movwf up ; up stores the width of hte label |
| 1663 movlw low( d'579' ) ; position of the label | 1675 movlw low( d'579' ) ; position of the label |
| 1664 movwf sub_a+0 | 1676 movwf sub_a+0 |
| 1665 movlw high( d'579' ) | 1677 movlw high( d'579' ) |
| 1666 movwf sub_a+1 | 1678 movwf sub_a+1 |
| 1667 call TFT_dive_compass_label_proc ; check if the label should be on screen | 1679 rcall TFT_dive_compass_label_proc ; check if the label should be on screen |
| 1668 btfsc print_compass_label ; Yes? | 1680 btfss print_compass_label ; Yes? |
| 1669 STRCPY_PRINT "SW" ; yes - print it | 1681 bra dcr_7 |
| 1670 call TFT_dive_compass_c_mk ; check if label is on the center line or the marker | 1682 STRCPY_TEXT_PRINT tSW ; yes - print it |
| 1683 dcr_7: | |
| 1684 rcall TFT_dive_compass_c_mk ; check if label is on the center line or the marker | |
| 1671 | 1685 |
| 1672 movlw d'7' | 1686 movlw d'7' |
| 1673 movwf up ; up stores the width of hte label | 1687 movwf up ; up stores the width of hte label |
| 1674 movlw low( d'627' ) ; position of the label | 1688 movlw low( d'627' ) ; position of the label |
| 1675 movwf sub_a+0 | 1689 movwf sub_a+0 |
| 1676 movlw high( d'627' ) | 1690 movlw high( d'627' ) |
| 1677 movwf sub_a+1 | 1691 movwf sub_a+1 |
| 1678 call TFT_dive_compass_label_proc ; check if the label should be on screen | 1692 rcall TFT_dive_compass_label_proc ; check if the label should be on screen |
| 1679 btfsc print_compass_label ; Yes? | 1693 btfss print_compass_label ; Yes? |
| 1680 STRCPY_PRINT "W" ; yes - print it | 1694 bra dcr_8 |
| 1681 call TFT_dive_compass_c_mk ; check if label is on the center line or the marker | 1695 STRCPY_TEXT_PRINT tW ; yes - print it |
| 1696 dcr_8: | |
| 1697 rcall TFT_dive_compass_c_mk ; check if label is on the center line or the marker | |
| 1682 | 1698 |
| 1683 movlw d'14' | 1699 movlw d'14' |
| 1684 movwf up ; up stores the width of hte label | 1700 movwf up ; up stores the width of hte label |
| 1685 movlw low( d'669' ) ; position of the label | 1701 movlw low( d'669' ) ; position of the label |
| 1686 movwf sub_a+0 | 1702 movwf sub_a+0 |
| 1687 movlw high( d'669' ) | 1703 movlw high( d'669' ) |
| 1688 movwf sub_a+1 | 1704 movwf sub_a+1 |
| 1689 call TFT_dive_compass_label_proc ; check if the label should be on screen | 1705 rcall TFT_dive_compass_label_proc ; check if the label should be on screen |
| 1690 btfsc print_compass_label ; Yes? | 1706 btfss print_compass_label ; Yes? |
| 1691 STRCPY_PRINT "NW" ; yes - print it | 1707 bra dcr_9 |
| 1692 call TFT_dive_compass_c_mk ; check if label is on the center line or the marker | 1708 STRCPY_TEXT_PRINT tNW ; yes - print it |
| 1709 dcr_9: | |
| 1710 rcall TFT_dive_compass_c_mk ; check if label is on the center line or the marker | |
| 1693 | 1711 |
| 1694 movlw d'6' | 1712 movlw d'6' |
| 1695 movwf up ; up stores the width of hte label | 1713 movwf up ; up stores the width of hte label |
| 1696 movlw low( d'718' ) ; position of the label | 1714 movlw low( d'718' ) ; position of the label |
| 1697 movwf sub_a+0 | 1715 movwf sub_a+0 |
| 1698 movlw high( d'718' ) | 1716 movlw high( d'718' ) |
| 1699 movwf sub_a+1 | 1717 movwf sub_a+1 |
| 1700 call TFT_dive_compass_label_proc ; check if the label should be on screen | 1718 rcall TFT_dive_compass_label_proc ; check if the label should be on screen |
| 1701 btfsc print_compass_label ; Yes? | 1719 btfss print_compass_label ; Yes? |
| 1702 STRCPY_PRINT "N" ; yes - print it | 1720 bra dcr_10 |
| 1703 call TFT_dive_compass_c_mk ; check if label is on the center line or the marker | 1721 STRCPY_TEXT_PRINT tN ; yes - print it |
| 1722 dcr_10: | |
| 1723 rcall TFT_dive_compass_c_mk ; check if label is on the center line or the marker | |
| 1704 | 1724 |
| 1705 movlw d'13' | 1725 movlw d'13' |
| 1706 movwf up ; up stores the width of hte label | 1726 movwf up ; up stores the width of hte label |
| 1707 movlw low( d'759' ) ; position of the label | 1727 movlw low( d'759' ) ; position of the label |
| 1708 movwf sub_a+0 | 1728 movwf sub_a+0 |
| 1709 movlw high( d'759' ) | 1729 movlw high( d'759' ) |
| 1710 movwf sub_a+1 | 1730 movwf sub_a+1 |
| 1711 call TFT_dive_compass_label_proc ; check if the label should be on screen | 1731 rcall TFT_dive_compass_label_proc ; check if the label should be on screen |
| 1712 btfsc print_compass_label ; Yes? | 1732 btfss print_compass_label ; Yes? |
| 1713 STRCPY_PRINT "NE" ; yes - print it | 1733 bra dcr_11 |
| 1714 call TFT_dive_compass_c_mk ; check if label is on the center line or the marker | 1734 STRCPY_TEXT_PRINT tNE ; yes - print it |
| 1735 dcr_11: | |
| 1736 rcall TFT_dive_compass_c_mk ; check if label is on the center line or the marker | |
| 1715 | 1737 |
| 1716 TFT_dive_compass_label_end: | 1738 TFT_dive_compass_label_end: |
| 1717 ; restore lo and hi for the final cleanup | 1739 ; restore lo and hi for the final cleanup |
| 1718 movff xLO,lo | 1740 movff xLO,lo |
| 1719 movff xHI,hi | 1741 movff xHI,hi |
| 1723 bra TFT_dive_compass_label_end2 ; D >= 160, no more space | 1745 bra TFT_dive_compass_label_end2 ; D >= 160, no more space |
| 1724 ; position left to end of display to clear the remaining area | 1746 ; position left to end of display to clear the remaining area |
| 1725 movlw d'160' | 1747 movlw d'160' |
| 1726 movff WREG,lo | 1748 movff WREG,lo |
| 1727 ; clear it | 1749 ; clear it |
| 1728 call TFT_dive_compass_clr_label | 1750 rcall TFT_dive_compass_clr_label |
| 1729 call TFT_dive_compass_c_mk ; this is not required until marker implemented... | 1751 rcall TFT_dive_compass_c_mk ; this is not required until marker implemented... |
| 1730 TFT_dive_compass_label_end2: | 1752 TFT_dive_compass_label_end2: |
| 1731 clrf WREG | 1753 clrf WREG |
| 1732 ;TFT_dive_compass_text: | 1754 ;TFT_dive_compass_text: |
| 1733 ; Text output | 1755 ; Text output |
| 1734 WIN_SMALL dive_compass_head_column,dive_compass_head_row | 1756 WIN_SMALL dive_compass_head_column,dive_compass_head_row |
| 1780 ; don't do a clear if we are at 0 (zero) otherwise it will blink | 1802 ; don't do a clear if we are at 0 (zero) otherwise it will blink |
| 1781 ; ?because of the width underflow? | 1803 ; ?because of the width underflow? |
| 1782 movlw d'0' | 1804 movlw d'0' |
| 1783 cpfsgt lo | 1805 cpfsgt lo |
| 1784 bra TFT_dive_compass_label_proc_p | 1806 bra TFT_dive_compass_label_proc_p |
| 1785 call TFT_dive_compass_clr_label | 1807 rcall TFT_dive_compass_clr_label |
| 1786 TFT_dive_compass_label_proc_p: | 1808 TFT_dive_compass_label_proc_p: |
| 1787 ; 4. print the SQ on the screen | 1809 ; 4. print the SQ on the screen |
| 1788 call TFT_standard_color | 1810 call TFT_standard_color |
| 1789 bsf print_compass_label | 1811 bsf print_compass_label |
| 1790 call TFT_dive_compass_label_print | 1812 rcall TFT_dive_compass_label_print |
| 1791 ; 6. retain the new display positions | 1813 ; 6. retain the new display positions |
| 1792 movff hi,divB ; old-hi will be used by the c_mk : clear+marker printing | 1814 movff hi,divB ; old-hi will be used by the c_mk : clear+marker printing |
| 1793 movff lo,hi | 1815 movff lo,hi |
| 1794 movff up,WREG | 1816 movff up,WREG |
| 1795 addwf hi,1 | 1817 addwf hi,1 |
| 1806 return | 1828 return |
| 1807 | 1829 |
| 1808 TFT_dive_compass_c_mk: | 1830 TFT_dive_compass_c_mk: |
| 1809 ; Common task to draw center line and marker | 1831 ; Common task to draw center line and marker |
| 1810 ; until a proper implementation make it simple: | 1832 ; until a proper implementation make it simple: |
| 1811 call TFT_dive_compass_cline | 1833 rcall TFT_dive_compass_cline |
| 1812 return | 1834 return |
| 1813 | 1835 |
| 1814 TFT_dive_compass_clr_label: | 1836 TFT_dive_compass_clr_label: |
| 1815 movlw dive_compass_label_row-.2 ; set top & height | 1837 movlw dive_compass_label_row-.2 ; set top & height |
| 1816 movff WREG,win_top | 1838 movff WREG,win_top |
| 1823 ; top tick | 1845 ; top tick |
| 1824 movlw dive_compass_tick_top_top ; set top & height | 1846 movlw dive_compass_tick_top_top ; set top & height |
| 1825 movff WREG,win_top | 1847 movff WREG,win_top |
| 1826 movlw dive_compass_tick_height | 1848 movlw dive_compass_tick_height |
| 1827 movff WREG,win_height | 1849 movff WREG,win_height |
| 1828 call TFT_dive_compass_clear | 1850 rcall TFT_dive_compass_clear |
| 1829 ;bottom tick | 1851 ;bottom tick |
| 1830 movlw dive_compass_tick_bot_top ; set top & height | 1852 movlw dive_compass_tick_bot_top ; set top & height |
| 1831 movff WREG,win_top | 1853 movff WREG,win_top |
| 1832 movlw dive_compass_tick_height | 1854 movlw dive_compass_tick_height |
| 1833 movff WREG,win_height | 1855 movff WREG,win_height |
| 1834 call TFT_dive_compass_clear | 1856 rcall TFT_dive_compass_clear |
| 1835 return | 1857 return |
| 1836 | 1858 |
| 1837 TFT_dive_compass_clear: | 1859 TFT_dive_compass_clear: |
| 1838 ; we receive RM in lo and DD in hi | 1860 ; we receive RM in lo and DD in hi |
| 1839 ; calculate width = RM-D | 1861 ; calculate width = RM-D |
