SHARE
TWEET

Video_Game.ASM

a guest Dec 19th, 2012 53 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;---------------------------------------------------;
  2. ; Name:                 Video_Game.ASM                                          ;
  3. ; Use:                  DTI's Video Game On A PIC                       ;
  4. ;---------------------------------------------------;
  5. ; Copyright:    (C)2012 DTI                                                     ;
  6. ;                               Dysfunctional Technologies, Inc.        ;
  7. ;                               All Rights Reserved                                     ;
  8. ;---------------------------------------------------;
  9. ; Author:               Timothy S. Carlson                                      ;
  10. ;                           Dysfunctional Technologies, Inc.    ;
  11. ; Date:                 December 12, 2012                                       ;
  12. ; Version:              V1.00                                                           ;
  13. ;---------------------------------------------------;
  14. ;---------------------------------------------------;
  15. #DEFINE         _VIDEO_GAME.ASM_                                                ;
  16. #DEFINE         _MAIN_MODULE_                                                   ;
  17. ;---------------------------------------------------;
  18.  
  19. ;---------------------------------------------------;
  20. ; Includes                                                                                      ;
  21. ;---------------------------------------------------;
  22. #INCLUDE Common.INC                                                                     ;
  23. ;---------------------------------------------------;
  24.  
  25. ;---------------------------------------------------;
  26. ; Macros                                                                                        ;
  27. ;---------------------------------------------------;
  28. DELAY           MACRO   DTIME                                                   ;
  29.                         MOVLW   DTIME                                                   ;
  30.                         MOVWF   DTemp                                                   ;
  31.                                                                                                         ;
  32.                         NOP                                                                             ;
  33.                         NOP                                                                             ;
  34.                         DECFSZ  DTemp, F                                                ;
  35.                         GOTO    $-3                                                             ;
  36.                         ENDM                                                                    ;
  37.                                                                                                         ;
  38. SET_SIGNAL      MACRO   COLOR                                                   ;
  39.                         MOVFW   PORTA                                                   ;
  40.                         ANDLW   VIDEO_MASK                                              ;
  41.                         IORLW   COLOR                                                   ;
  42.                         MOVWF   PORTA                                                   ;
  43.                         ENDM                                                                    ;
  44. ;---------------------------------------------------;
  45.  
  46. ;---------------------------------------------------;
  47. ; Defines                                                                                       ;
  48. ;---------------------------------------------------;
  49. #DEFINE RBUTT_1         H'01'                                                   ;
  50. #DEFINE RBUTT_1_BIT     0                                                               ; GPIO 0 - PIN 7
  51. #DEFINE RBUTT_2         H'02'                                                   ;
  52. #DEFINE RBUTT_2_BIT     1                                                               ; GPIO 1 - PIN 6
  53. #DEFINE LBUTT_2         H'04'                                                   ;
  54. #DEFINE LBUTT_2_BIT     2                                                               ; GPIO 2 - PIN 5
  55. #DEFINE LBUTT_1         H'08'                                                   ;
  56. #DEFINE LBUTT_1_BIT     3                                                               ; GPIO 3 - PIN 4
  57.                                                                                                         ;
  58. #DEFINE VIDEO_1         H'10'                                                   ; 1K ohm
  59. #DEFINE VIDEO_1_BIT     4                                                               ; GPIO 5 - PIN 2
  60. #DEFINE VIDEO_0         H'20'                                                   ; 470 ohm
  61. #DEFINE VIDEO_0_BIT     5                                                               ; GPIO 4 - PIN 3
  62.                                                                                                         ;
  63. #DEFINE VIDEO_MASK      H'CF'                                                   ;
  64. #DEFINE WHITE_MASK      B'11011111'                                             ;
  65. #DEFINE COLOR_WHITE     (VIDEO_0 + VIDEO_1)                             ;
  66. #DEFINE GRAY_MASK       B'10111111'                                             ;
  67. #DEFINE COLOR_GRAY      VIDEO_0                                                 ;
  68. #DEFINE BLACK_MASK      B'10011111'                                             ;
  69. #DEFINE COLOR_BLACK     VIDEO_1                                                 ;
  70. #DEFINE COLOR_SYNC      0                                                               ;
  71. #DEFINE MAX_LINES       255                                                             ;
  72. ;---------------------------------------------------;
  73.  
  74. ;---------------------------------------------------;
  75. USER_DATA1      UDATA           H'020'                                          ;
  76. ;---------------------------------------------------;
  77. Temp1           res     1                                                                       ; 20
  78. DTemp           res     1                                                                       ; 21
  79. DL_Count        res     1                                                                       ; 22
  80. Line_Data       res     4                                                                       ; 23-26
  81. Bit_Count       res     1                                                                       ; 27
  82. Ball_X          res     1                                                                       ; 28
  83. Ball_Y          res     1                                                                       ; 29
  84. Ball_Dir_X      res     1                                                                       ; 2A
  85. Ball_Dir_Y      res     1                                                                       ; 2B
  86. Paddle_1_Y      res     1                                                                       ; 2C
  87. Paddle_2_Y      res     1                                                                       ; 2D
  88. Score_1         res     1                                                                       ; 2E
  89. Score_2         res     1                                                                       ; 2F
  90. ;---------------------------------------------------;
  91. USER_DATA2      UDATA_SHR       H'070'                                          ;
  92. ;---------------------------------------------------;
  93. Buffer          res     16                                                                      ; 70-7F
  94. ;---------------------------------------------------;
  95.  
  96. ;---------------------------------------------------;
  97. RESET_VECT      CODE    H'000'                                                  ;
  98. ;---------------------------------------------------;
  99.         CALL    _Initialize_System                                              ;
  100.         NOP                                                                                             ;
  101.         NOP                                                                                             ;
  102.         GOTO    _MAIN                                                                   ;
  103. ;---------------------------------------------------;
  104.  
  105. ;---------------------------------------------------;
  106. USER_CODE       CODE                                                                    ;
  107. ;---------------------------------------------------;
  108. _MAIN:                                                                                          ;
  109. ;---------------------------------------------------;
  110.         GOTO    _Next_Frame                                                             ;
  111. ;---------------------------------------------------;
  112.  
  113. ;---------------------------------------------------;
  114. _Next_Frame:                                                                            ;
  115. ;---------------------------------------------------;
  116.         CALL    _Update_Ball                                                    ;
  117.         CALL    _Update_Paddles                                                 ;
  118.         CALL    _Blank_Half_Line                                                ;
  119.         CALL    _Update_Score_1                                                 ;
  120.         CALL    _Update_Score_2                                                 ;
  121.         CALL    _Inverted_Half_Line                                             ;
  122.         CALL    _Inverted_Half_Line                                             ;
  123.         CALL    _Inverted_Half_Line                                             ;
  124.         NOP                                                                                             ;
  125.         NOP                                                                                             ;
  126.         CALL    _Inverted_Sync_2us                                              ;
  127.         DELAY   41                                                                              ;
  128.         BANKSEL TRISA                                                                   ;
  129.         BCF             TRISA, 2                                                                ;
  130.         BANKSEL PORTA                                                                   ;
  131.         BCF             PORTA, 2                                                                ;
  132.         NOP                                                                                             ;
  133.         BSF             PORTA, 2                                                                ;
  134.         BANKSEL TRISA                                                                   ;
  135.         BSF             TRISA, 2                                                                ;
  136.         BANKSEL MEMORY                                                                  ;
  137.         NOP                                                                                             ;
  138.         NOP                                                                                             ;
  139.         NOP                                                                                             ;
  140.         NOP                                                                                             ;
  141.         NOP                                                                                             ;
  142.         NOP                                                                                             ;
  143.         NOP                                                                                             ;
  144.         NOP                                                                                             ;
  145.         NOP                                                                                             ;
  146.         NOP                                                                                             ;
  147.         NOP                                                                                             ;
  148.         NOP                                                                                             ;
  149.         NOP                                                                                             ;
  150.         NOP                                                                                             ;
  151.         NOP                                                                                             ;
  152.         NOP                                                                                             ;
  153.         NOP                                                                                             ;
  154.         NOP                                                                                             ;
  155.         NOP                                                                                             ;
  156.         NOP                                                                                             ;
  157.         SET_SIGNAL COLOR_BLACK                                                  ;
  158.         NOP                                                                                             ;
  159.         NOP                                                                                             ;
  160.         NOP                                                                                             ;
  161.         NOP                                                                                             ;
  162.         NOP                                                                                             ;
  163.         NOP                                                                                             ;
  164.         NOP                                                                                             ;
  165.         NOP                                                                                             ;
  166.         CALL    _Blank_Half_Line                                                ;
  167.         CALL    _Blank_Half_Line                                                ;
  168.         CALL    _Blank_Half_Line                                                ;
  169.         CALL    _Blank_Half_Line                                                ;
  170.         CALL    _Blank_Half_Line                                                ;
  171.                                                                                                         ;
  172.         CALL    _Blank_Line                                                             ;
  173.         CALL    _Blank_Line                                                             ;
  174.         CALL    _Blank_Line                                                             ;
  175.         CALL    _Blank_Line                                                             ;
  176.         CALL    _Blank_Line                                                             ;
  177.         CALL    _Blank_Line                                                             ;
  178.         CALL    _Blank_Line                                                             ;
  179.         CALL    _Blank_Line                                                             ;
  180.         CALL    _Blank_Line                                                             ;
  181.         CALL    _Blank_Line                                                             ;
  182.         CALL    _Blank_Line                                                             ;
  183.         CALL    _Blank_Line                                                             ;
  184.         CALL    _Blank_Line                                                             ;
  185.         CALL    _Blank_Line                                                             ;
  186.         CALL    _Blank_Line                                                             ;
  187.         CALL    _Blank_Line                                                             ;
  188.         CALL    _Blank_Line                                                             ;
  189.         CALL    _Blank_Line                                                             ;
  190.         CALL    _Blank_Line                                                             ;
  191.         CALL    _Blank_Line                                                             ;
  192.         CALL    _Blank_Line                                                             ;
  193.         CALL    _Data_Lines                                                             ;
  194.         CALL    _Blank_Line                                                             ;
  195.         CALL    _Blank_Line                                                             ;
  196.         CALL    _Blank_Line                                                             ;
  197.         CALL    _Blank_Line                                                             ;
  198.         CALL    _Blank_Line                                                             ;
  199.         CALL    _Blank_Line                                                             ;
  200.         CALL    _Blank_Line                                                             ;
  201.         CALL    _Blank_Line                                                             ;
  202.                                                                                                         ;
  203.         GOTO    _Next_Frame                                                             ;
  204. ;---------------------------------------------------;
  205.                                                                                                         ;
  206. ;---------------------------------------------------;
  207. _Data_Lines:                                                                            ;
  208. ;---------------------------------------------------;
  209.         NOP                                                                                             ;
  210.         CLRF    DL_Count                                                                ;
  211.                                                                                                         ;
  212. _DL_Next_Line:                                                                          ;
  213.         CALL    _Sync_4us                                                               ;
  214.                                                                                                         ;
  215.         MOVLW   32                                                                              ;
  216.         MOVWF   Bit_Count                                                               ;
  217.                                                                                                         ;
  218.         MOVFW   DL_Count                                                                ;
  219.         ANDLW   H'FC'                                                                   ;
  220.         ADDLW   H'10'                                                                   ;
  221.         MOVWF   FSR1L                                                                   ;
  222.         MOVLW   H'20'                                                                   ;
  223.         MOVWF   FSR1H                                                                   ;
  224.         MOVIW   0[INDF1]                                                                ;
  225.         MOVWF   Line_Data + 0                                                   ;
  226.         MOVIW   1[INDF1]                                                                ;
  227.         MOVWF   Line_Data + 1                                                   ;
  228.         MOVIW   2[INDF1]                                                                ;
  229.         MOVWF   Line_Data + 2                                                   ;
  230.         MOVIW   3[INDF1]                                                                ;
  231.         MOVWF   Line_Data + 3                                                   ;
  232.         DELAY   7                                                                               ;
  233.         NOP                                                                                             ;
  234.         NOP                                                                                             ;
  235.         NOP                                                                                             ;
  236.         NOP                                                                                             ;
  237. ;       NOP                                                                                             ;
  238. ;       NOP                                                                                             ;
  239.                                                                                                         ;
  240. _DL_Next_Bit:                                                                           ;
  241.         BTFSC   Line_Data + 0, MSB                                              ;
  242.         BSF             PORTA, VIDEO_0_BIT                                              ;
  243.         BTFSS   Line_Data + 0, MSB                                              ;
  244.         BCF             PORTA, VIDEO_0_BIT                                              ;
  245.         RLF             Line_Data + 3, F                                                ;
  246.         RLF             Line_Data + 2, F                                                ;
  247.         RLF             Line_Data + 1, F                                                ;
  248.         RLF             Line_Data + 0, F                                                ;
  249.         NOP                                                                                             ;
  250. ;       NOP                                                                                             ;
  251.         DECFSZ  Bit_Count, F                                                    ;
  252.         GOTO    _DL_Next_Bit                                                    ;
  253.         SET_SIGNAL COLOR_BLACK                                                  ;
  254.         DELAY   4                                                                               ;
  255.         NOP                                                                                             ;
  256.         NOP                                                                                             ;
  257.                                                                                                         ;
  258.         INCF    DL_Count, F                                                             ;
  259.         MOVLW   H'E0'                                                                   ;
  260.         XORWF   DL_Count, W                                                             ;
  261.         BTFSS   STATUS, Z                                                               ;
  262.         GOTO    _DL_Next_Line                                                   ;
  263.                                                                                                         ;
  264.         RETURN                                                                                  ;
  265. ;---------------------------------------------------;
  266.  
  267. ;---------------------------------------------------;
  268. _Delay_30us:                                                                            ;
  269. ;---------------------------------------------------;
  270.                         MOVLW   32                                                              ;
  271.                         MOVWF   DTemp                                                   ;
  272.                                                                                                         ;
  273.                         NOP                                                                             ;
  274.                         NOP                                                                             ;
  275.                         NOP                                                                             ;
  276.                         NOP                                                                             ;
  277.                         DECFSZ  DTemp, F                                                ;
  278.                         GOTO    $-5                                                             ;
  279.                                                                                                         ;
  280.                         NOP                                                                             ;
  281. ;                       NOP                                                                             ;
  282. ;                       NOP                                                                             ;
  283. ;                       NOP                                                                             ;
  284. ;                       NOP                                                                             ;
  285.                                                                                                         ;
  286.                         RETURN                                                                  ;
  287. ;---------------------------------------------------;
  288.  
  289. ;---------------------------------------------------;
  290. _Delay_60us:                                                                            ;
  291. ;---------------------------------------------------;
  292.                         MOVLW   66                                                              ;
  293.                         MOVWF   DTemp                                                   ;
  294.                                                                                                         ;
  295.                         NOP                                                                             ;
  296.                         NOP                                                                             ;
  297.                         NOP                                                                             ;
  298.                         NOP                                                                             ;
  299.                         DECFSZ  DTemp, F                                                ;
  300.                         GOTO    $-5                                                             ;
  301.                                                                                                         ;
  302.                         NOP                                                                             ;
  303. ;                       NOP                                                                             ;
  304.                         RETURN                                                                  ;
  305. ;---------------------------------------------------;
  306.  
  307.                                                                                                         ;
  308. ;---------------------------------------------------;
  309. _Sync_2us:                                                                                      ;
  310. ;---------------------------------------------------;
  311.                         SET_SIGNAL COLOR_SYNC                                   ;
  312.                         NOP                                                                             ;
  313.                         NOP                                                                             ;
  314.                         NOP                                                                             ;
  315.                         NOP                                                                             ;
  316.                         NOP                                                                             ;
  317.                         NOP                                                                             ;
  318.                         NOP                                                                             ;
  319.                         NOP                                                                             ;
  320.                         NOP                                                                             ;
  321.                         NOP                                                                             ;
  322.                         NOP                                                                             ;
  323.                         NOP                                                                             ;
  324.                         SET_SIGNAL COLOR_BLACK                                  ;
  325.                         RETURN                                                                  ;
  326. ;---------------------------------------------------;
  327.  
  328. ;---------------------------------------------------;
  329. _Inverted_Sync_2us:                                                                     ;
  330. ;---------------------------------------------------;
  331.                         SET_SIGNAL COLOR_BLACK                                  ;
  332.                         NOP                                                                             ;
  333.                         NOP                                                                             ;
  334.                         NOP                                                                             ;
  335.                         NOP                                                                             ;
  336.                         NOP                                                                             ;
  337.                         NOP                                                                             ;
  338.                         NOP                                                                             ;
  339.                         NOP                                                                             ;
  340.                         NOP                                                                             ;
  341.                         NOP                                                                             ;
  342.                         NOP                                                                             ;
  343.                         NOP                                                                             ;
  344.                         SET_SIGNAL COLOR_SYNC                                   ;
  345.                         RETURN                                                                  ;
  346. ;---------------------------------------------------;
  347.  
  348. ;---------------------------------------------------;
  349. _Sync_4us:                                                                                      ;
  350. ;---------------------------------------------------;
  351.                         SET_SIGNAL COLOR_SYNC                                   ;
  352.                         NOP                                                                             ;
  353.                         NOP                                                                             ;
  354.                         NOP                                                                             ;
  355.                         NOP                                                                             ;
  356.                         NOP                                                                             ;
  357.                         NOP                                                                             ;
  358.                         NOP                                                                             ;
  359.                         NOP                                                                             ;
  360.                         NOP                                                                             ;
  361.                         NOP                                                                             ;
  362.                         NOP                                                                             ;
  363.                         NOP                                                                             ;
  364.                         NOP                                                                             ;
  365.                         NOP                                                                             ;
  366.                         NOP                                                                             ;
  367.                         NOP                                                                             ;
  368.                         NOP                                                                             ;
  369.                         NOP                                                                             ;
  370.                         NOP                                                                             ;
  371.                         NOP                                                                             ;
  372.                         NOP                                                                             ;
  373.                         NOP                                                                             ;
  374.                         NOP                                                                             ;
  375.                         NOP                                                                             ;
  376.                         NOP                                                                             ;
  377.                         NOP                                                                             ;
  378.                         NOP                                                                             ;
  379.                         NOP                                                                             ;
  380.                         SET_SIGNAL COLOR_BLACK                                  ;
  381.                         RETURN                                                                  ;
  382. ;---------------------------------------------------;
  383.  
  384. ;---------------------------------------------------;
  385. _Blank_Line:                                                                            ;
  386. ;---------------------------------------------------;
  387.         CALL    _Sync_4us                                                               ;
  388.         CALL    _Delay_60us                                                             ;
  389.         RETURN                                                                                  ;
  390. ;---------------------------------------------------;
  391.  
  392. ;---------------------------------------------------;
  393. _Inverted_Half_Line:                                                            ;
  394. ;---------------------------------------------------;
  395.         CALL    _Inverted_Sync_2us                                              ;
  396.         CALL    _Delay_30us                                                             ;
  397.         RETURN                                                                                  ;
  398. ;---------------------------------------------------;
  399.  
  400. ;---------------------------------------------------;
  401. _Blank_Half_Line:                                                                       ;
  402. ;---------------------------------------------------;
  403.         CALL    _Sync_2us                                                               ;
  404.         CALL    _Delay_30us                                                             ;
  405.         RETURN                                                                                  ;
  406. ;---------------------------------------------------;
  407.  
  408. ;---------------------------------------------------;
  409. _Update_Score_1:                                                                        ;
  410. ;---------------------------------------------------;
  411.         CALL    _Sync_2us                                                               ;
  412.                                                                                                         ;
  413. _US1_Clear_Score:                                                                       ;
  414.         MOVLW   H'10'                                                                   ;
  415.         MOVWF   FSR1L                                                                   ;
  416.         MOVLW   H'20'                                                                   ;
  417.         MOVWF   FSR1H                                                                   ;
  418.                                                                                                         ;
  419.         CLRW                                                                                    ;
  420.         MOVWI   0[INDF1]                                                                ;
  421.         MOVWI   4[INDF1]                                                                ;
  422.         MOVWI   8[INDF1]                                                                ;
  423.         MOVWI   12[INDF1]                                                               ;
  424.         MOVWI   16[INDF1]                                                               ;
  425.                                                                                                         ;
  426. _US1_Draw_Score:                                                                        ;
  427.         SWAPF   Score_1, W                                                              ;
  428.         ANDLW   H'0F'                                                                   ;
  429.         MOVWF   Temp1                                                                   ;
  430.         ADDWF   Temp1, F                                                                ;
  431.         ADDWF   Temp1, F                                                                ;
  432.         ADDWF   Temp1, F                                                                ;
  433.         ADDWF   Temp1, F                                                                ;
  434.         MOVLP   HIGH CHARACTER_TABLE_L1                                 ;
  435.         MOVFW   Temp1                                                                   ;
  436.         ADDLW   LOW CHARACTER_TABLE_L1                                  ;
  437.         BTFSC   STATUS, C                                                               ;
  438.         INCF    PCLATH, F                                                               ;
  439.         CALLW                                                                                   ;
  440.         MOVWI   0[INDF1]                                                                ;
  441.         MOVLP   HIGH CHARACTER_TABLE_L1                                 ;
  442.         MOVFW   Temp1                                                                   ;
  443.         ADDLW   1                                                                               ;
  444.         ADDLW   LOW CHARACTER_TABLE_L1                                  ;
  445.         BTFSC   STATUS, C                                                               ;
  446.         INCF    PCLATH, F                                                               ;
  447.         CALLW                                                                                   ;
  448.         MOVWI   4[INDF1]                                                                ;
  449.         MOVLP   HIGH CHARACTER_TABLE_L1                                 ;
  450.         MOVFW   Temp1                                                                   ;
  451.         ADDLW   2                                                                               ;
  452.         ADDLW   LOW CHARACTER_TABLE_L1                                  ;
  453.         BTFSC   STATUS, C                                                               ;
  454.         INCF    PCLATH, F                                                               ;
  455.         CALLW                                                                                   ;
  456.         MOVWI   8[INDF1]                                                                ;
  457.         MOVLP   HIGH CHARACTER_TABLE_L1                                 ;
  458.         MOVFW   Temp1                                                                   ;
  459.         ADDLW   3                                                                               ;
  460.         ADDLW   LOW CHARACTER_TABLE_L1                                  ;
  461.         BTFSC   STATUS, C                                                               ;
  462.         INCF    PCLATH, F                                                               ;
  463.         CALLW                                                                                   ;
  464.         MOVWI   12[INDF1]                                                               ;
  465.         MOVLP   HIGH CHARACTER_TABLE_L1                                 ;
  466.         MOVFW   Temp1                                                                   ;
  467.         ADDLW   4                                                                               ;
  468.         ADDLW   LOW CHARACTER_TABLE_L1                                  ;
  469.         BTFSC   STATUS, C                                                               ;
  470.         INCF    PCLATH, F                                                               ;
  471.         CALLW                                                                                   ;
  472.         MOVWI   16[INDF1]                                                               ;
  473.                                                                                                         ;
  474.         MOVFW   Score_1                                                                 ;
  475.         ANDLW   H'0F'                                                                   ;
  476.         MOVWF   Temp1                                                                   ;
  477.         ADDWF   Temp1, F                                                                ;
  478.         ADDWF   Temp1, F                                                                ;
  479.         ADDWF   Temp1, F                                                                ;
  480.         ADDWF   Temp1, F                                                                ;
  481.         MOVLP   HIGH CHARACTER_TABLE_L2                                 ;
  482.         MOVFW   Temp1                                                                   ;
  483.         ADDLW   LOW CHARACTER_TABLE_L2                                  ;
  484.         BTFSC   STATUS, C                                                               ;
  485.         INCF    PCLATH, F                                                               ;
  486.         CALLW                                                                                   ;
  487.         MOVWF   DTemp                                                                   ;
  488.         MOVIW   0[INDF1]                                                                ;
  489.         IORWF   DTemp, W                                                                ;
  490.         MOVWI   0[INDF1]                                                                ;
  491.         MOVLP   HIGH CHARACTER_TABLE_L2                                 ;
  492.         MOVFW   Temp1                                                                   ;
  493.         ADDLW   1                                                                               ;
  494.         ADDLW   LOW CHARACTER_TABLE_L2                                  ;
  495.         BTFSC   STATUS, C                                                               ;
  496.         INCF    PCLATH, F                                                               ;
  497.         CALLW                                                                                   ;
  498.         MOVWF   DTemp                                                                   ;
  499.         MOVIW   4[INDF1]                                                                ;
  500.         IORWF   DTemp, W                                                                ;
  501.         MOVWI   4[INDF1]                                                                ;
  502.         MOVLP   HIGH CHARACTER_TABLE_L2                                 ;
  503.         MOVFW   Temp1                                                                   ;
  504.         ADDLW   2                                                                               ;
  505.         ADDLW   LOW CHARACTER_TABLE_L2                                  ;
  506.         BTFSC   STATUS, C                                                               ;
  507.         INCF    PCLATH, F                                                               ;
  508.         CALLW                                                                                   ;
  509.         MOVWF   DTemp                                                                   ;
  510.         MOVIW   8[INDF1]                                                                ;
  511.         IORWF   DTemp, W                                                                ;
  512.         MOVWI   8[INDF1]                                                                ;
  513.         MOVLP   HIGH CHARACTER_TABLE_L2                                 ;
  514.         MOVFW   Temp1                                                                   ;
  515.         ADDLW   3                                                                               ;
  516.         ADDLW   LOW CHARACTER_TABLE_L2                                  ;
  517.         BTFSC   STATUS, C                                                               ;
  518.         INCF    PCLATH, F                                                               ;
  519.         CALLW                                                                                   ;
  520.         MOVWF   DTemp                                                                   ;
  521.         MOVIW   12[INDF1]                                                               ;
  522.         IORWF   DTemp, W                                                                ;
  523.         MOVWI   12[INDF1]                                                               ;
  524.         MOVLP   HIGH CHARACTER_TABLE_L2                                 ;
  525.         MOVFW   Temp1                                                                   ;
  526.         ADDLW   4                                                                               ;
  527.         ADDLW   LOW CHARACTER_TABLE_L2                                  ;
  528.         BTFSC   STATUS, C                                                               ;
  529.         INCF    PCLATH, F                                                               ;
  530.         CALLW                                                                                   ;
  531.         MOVWF   DTemp                                                                   ;
  532.         MOVIW   16[INDF1]                                                               ;
  533.         IORWF   DTemp, W                                                                ;
  534.         MOVWI   16[INDF1]                                                               ;
  535.                                                                                                         ;
  536.         DELAY   16                                                                              ;
  537.         NOP                                                                                             ;
  538.         NOP                                                                                             ;
  539. ;       NOP                                                                                             ;
  540. ;       NOP                                                                                             ;
  541. ;       NOP                                                                                             ;
  542. ;       NOP                                                                                             ;
  543.         RETURN                                                                                  ;
  544. ;---------------------------------------------------;
  545.  
  546. ;---------------------------------------------------;
  547. _Update_Score_2:                                                                        ;
  548. ;---------------------------------------------------;
  549.         CALL    _Sync_2us                                                               ;
  550.                                                                                                         ;
  551. _US2_Clear_Score:                                                                       ;
  552.         MOVLW   H'13'                                                                   ;
  553.         MOVWF   FSR1L                                                                   ;
  554.         MOVLW   H'20'                                                                   ;
  555.         MOVWF   FSR1H                                                                   ;
  556.                                                                                                         ;
  557.         CLRW                                                                                    ;
  558.         MOVWI   0[INDF1]                                                                ;
  559.         MOVWI   4[INDF1]                                                                ;
  560.         MOVWI   8[INDF1]                                                                ;
  561.         MOVWI   12[INDF1]                                                               ;
  562.         MOVWI   16[INDF1]                                                               ;
  563.                                                                                                         ;
  564. _US2_Draw_Score:                                                                        ;
  565.         SWAPF   Score_2, W                                                              ;
  566.         ANDLW   H'0F'                                                                   ;
  567.         MOVWF   Temp1                                                                   ;
  568.         ADDWF   Temp1, F                                                                ;
  569.         ADDWF   Temp1, F                                                                ;
  570.         ADDWF   Temp1, F                                                                ;
  571.         ADDWF   Temp1, F                                                                ;
  572.         MOVLP   HIGH CHARACTER_TABLE_R1                                 ;
  573.         MOVFW   Temp1                                                                   ;
  574.         ADDLW   LOW CHARACTER_TABLE_R1                                  ;
  575.         BTFSC   STATUS, C                                                               ;
  576.         INCF    PCLATH, F                                                               ;
  577.         CALLW                                                                                   ;
  578.         MOVWI   0[INDF1]                                                                ;
  579.         MOVLP   HIGH CHARACTER_TABLE_R1                                 ;
  580.         MOVFW   Temp1                                                                   ;
  581.         ADDLW   1                                                                               ;
  582.         ADDLW   LOW CHARACTER_TABLE_R1                                  ;
  583.         BTFSC   STATUS, C                                                               ;
  584.         INCF    PCLATH, F                                                               ;
  585.         CALLW                                                                                   ;
  586.         MOVWI   4[INDF1]                                                                ;
  587.         MOVLP   HIGH CHARACTER_TABLE_R1                                 ;
  588.         MOVFW   Temp1                                                                   ;
  589.         ADDLW   2                                                                               ;
  590.         ADDLW   LOW CHARACTER_TABLE_R1                                  ;
  591.         BTFSC   STATUS, C                                                               ;
  592.         INCF    PCLATH, F                                                               ;
  593.         CALLW                                                                                   ;
  594.         MOVWI   8[INDF1]                                                                ;
  595.         MOVLP   HIGH CHARACTER_TABLE_R1                                 ;
  596.         MOVFW   Temp1                                                                   ;
  597.         ADDLW   3                                                                               ;
  598.         ADDLW   LOW CHARACTER_TABLE_R1                                  ;
  599.         BTFSC   STATUS, C                                                               ;
  600.         INCF    PCLATH, F                                                               ;
  601.         CALLW                                                                                   ;
  602.         MOVWI   12[INDF1]                                                               ;
  603.         MOVLP   HIGH CHARACTER_TABLE_R1                                 ;
  604.         MOVFW   Temp1                                                                   ;
  605.         ADDLW   4                                                                               ;
  606.         ADDLW   LOW CHARACTER_TABLE_R1                                  ;
  607.         BTFSC   STATUS, C                                                               ;
  608.         INCF    PCLATH, F                                                               ;
  609.         CALLW                                                                                   ;
  610.         MOVWI   16[INDF1]                                                               ;
  611.                                                                                                         ;
  612.         MOVFW   Score_2                                                                 ;
  613.         ANDLW   H'0F'                                                                   ;
  614.         MOVWF   Temp1                                                                   ;
  615.         ADDWF   Temp1, F                                                                ;
  616.         ADDWF   Temp1, F                                                                ;
  617.         ADDWF   Temp1, F                                                                ;
  618.         ADDWF   Temp1, F                                                                ;
  619.         MOVLP   HIGH CHARACTER_TABLE_R2                                 ;
  620.         MOVFW   Temp1                                                                   ;
  621.         ADDLW   LOW CHARACTER_TABLE_R2                                  ;
  622.         BTFSC   STATUS, C                                                               ;
  623.         INCF    PCLATH, F                                                               ;
  624.         CALLW                                                                                   ;
  625.         MOVWF   DTemp                                                                   ;
  626.         MOVIW   0[INDF1]                                                                ;
  627.         IORWF   DTemp, W                                                                ;
  628.         MOVWI   0[INDF1]                                                                ;
  629.         MOVLP   HIGH CHARACTER_TABLE_R2                                 ;
  630.         MOVFW   Temp1                                                                   ;
  631.         ADDLW   1                                                                               ;
  632.         ADDLW   LOW CHARACTER_TABLE_R2                                  ;
  633.         BTFSC   STATUS, C                                                               ;
  634.         INCF    PCLATH, F                                                               ;
  635.         CALLW                                                                                   ;
  636.         MOVWF   DTemp                                                                   ;
  637.         MOVIW   4[INDF1]                                                                ;
  638.         IORWF   DTemp, W                                                                ;
  639.         MOVWI   4[INDF1]                                                                ;
  640.         MOVLP   HIGH CHARACTER_TABLE_R2                                 ;
  641.         MOVFW   Temp1                                                                   ;
  642.         ADDLW   2                                                                               ;
  643.         ADDLW   LOW CHARACTER_TABLE_R2                                  ;
  644.         BTFSC   STATUS, C                                                               ;
  645.         INCF    PCLATH, F                                                               ;
  646.         CALLW                                                                                   ;
  647.         MOVWF   DTemp                                                                   ;
  648.         MOVIW   8[INDF1]                                                                ;
  649.         IORWF   DTemp, W                                                                ;
  650.         MOVWI   8[INDF1]                                                                ;
  651.         MOVLP   HIGH CHARACTER_TABLE_R2                                 ;
  652.         MOVFW   Temp1                                                                   ;
  653.         ADDLW   3                                                                               ;
  654.         ADDLW   LOW CHARACTER_TABLE_R2                                  ;
  655.         BTFSC   STATUS, C                                                               ;
  656.         INCF    PCLATH, F                                                               ;
  657.         CALLW                                                                                   ;
  658.         MOVWF   DTemp                                                                   ;
  659.         MOVIW   12[INDF1]                                                               ;
  660.         IORWF   DTemp, W                                                                ;
  661.         MOVWI   12[INDF1]                                                               ;
  662.         MOVLP   HIGH CHARACTER_TABLE_R2                                 ;
  663.         MOVFW   Temp1                                                                   ;
  664.         ADDLW   4                                                                               ;
  665.         ADDLW   LOW CHARACTER_TABLE_R2                                  ;
  666.         BTFSC   STATUS, C                                                               ;
  667.         INCF    PCLATH, F                                                               ;
  668.         CALLW                                                                                   ;
  669.         MOVWF   DTemp                                                                   ;
  670.         MOVIW   16[INDF1]                                                               ;
  671.         IORWF   DTemp, W                                                                ;
  672.         MOVWI   16[INDF1]                                                               ;
  673.                                                                                                         ;
  674.         DELAY   13                                                                              ;
  675. ;       NOP                                                                                             ;
  676. ;       NOP                                                                                             ;
  677. ;       NOP                                                                                             ;
  678. ;       NOP                                                                                             ;
  679. ;       NOP                                                                                             ;
  680.         RETURN                                                                                  ;
  681. ;---------------------------------------------------;
  682.  
  683. ;---------------------------------------------------;
  684. _Update_Ball:                                                                           ;
  685. ;---------------------------------------------------;
  686.         CALL    _Sync_2us                                                               ;
  687. _UB_Check_Stationary:                                                           ;
  688. ;       BTFSC   Ball_X, MSB                                                             ;
  689. ;       GOTO    _UB_Clear_Ball                                                  ;
  690. ;       BSF             Ball_X, MSB                                                             ;
  691. ;       DELAY   22                                                                              ;
  692. ;       GOTO    _UB_Draw_Ball                                                   ;
  693.                                                                                                         ;
  694. ;       CLRW                                                                                    ;
  695. ;       XORWF   Ball_Dir_X, W                                                   ;
  696. ;       BTFSS   STATUS, Z                                                               ;
  697. ;       GOTO    _UB_Clear_Ball                                                  ;
  698. ;       CLRW                                                                                    ;
  699. ;       XORWF   Ball_Dir_Y, W                                                   ;
  700. ;       BTFSS   STATUS, Z                                                               ;
  701. ;       GOTO    _UB_Clear_Ball                                                  ;
  702. ;       DELAY   23                                                                              ;
  703. ;       GOTO    _UB_Draw_Ball                                                   ;
  704.                                                                                                         ;
  705. _UB_Clear_Ball:                                                                         ;
  706. ;       BCF             Ball_X, MSB                                                             ;
  707.         MOVFW   Ball_Y                                                                  ;
  708.         ADDWF   Ball_Y, W                                                               ;
  709.         ADDWF   Ball_Y, W                                                               ;
  710.         ADDWF   Ball_Y, W                                                               ;
  711.         ADDLW   H'2C'                                                                   ;
  712.         MOVWF   FSR1L                                                                   ;
  713.         RRF             Ball_X, W                                                               ;
  714.         MOVWF   Temp1                                                                   ;
  715.         RRF             Temp1, F                                                                ;
  716.         RRF             Temp1, W                                                                ;
  717.         ANDLW   H'1F'                                                                   ;
  718.         ADDWF   FSR1L, F                                                                ;
  719.         MOVLW   H'20'                                                                   ;
  720.         MOVWF   FSR1H                                                                   ;
  721.         CLRF    INDF1                                                                   ;
  722. ;       MOVFW   Ball_X                                                                  ;
  723. ;       ANDLW   H'07'                                                                   ;
  724. ;       MOVWF   Temp1                                                                   ;
  725. ;       MOVLW   H'00'                                                                   ;
  726. ;       XORWF   Temp1, W                                                                ;
  727. ;       BTFSC   STATUS, Z                                                               ;
  728. ;       BCF             INDF1, 7                                                                ;
  729. ;       MOVLW   H'01'                                                                   ;
  730. ;       XORWF   Temp1, W                                                                ;
  731. ;       BTFSC   STATUS, Z                                                               ;
  732. ;       BCF             INDF1, 6                                                                ;
  733. ;       MOVLW   H'02'                                                                   ;
  734. ;       XORWF   Temp1, W                                                                ;
  735. ;       BTFSC   STATUS, Z                                                               ;
  736. ;       BCF             INDF1, 5                                                                ;
  737. ;       MOVLW   H'03'                                                                   ;
  738. ;       XORWF   Temp1, W                                                                ;
  739. ;       BTFSC   STATUS, Z                                                               ;
  740. ;       BCF             INDF1, 4                                                                ;
  741. ;       MOVLW   H'04'                                                                   ;
  742. ;       XORWF   Temp1, W                                                                ;
  743. ;       BTFSC   STATUS, Z                                                               ;
  744. ;       BCF             INDF1, 3                                                                ;
  745. ;       MOVLW   H'05'                                                                   ;
  746. ;       XORWF   Temp1, W                                                                ;
  747. ;       BTFSC   STATUS, Z                                                               ;
  748. ;       BCF             INDF1, 2                                                                ;
  749. ;       MOVLW   H'06'                                                                   ;
  750. ;       XORWF   Temp1, W                                                                ;
  751. ;       BTFSC   STATUS, Z                                                               ;
  752. ;       BCF             INDF1, 1                                                                ;
  753. ;       MOVLW   H'07'                                                                   ;
  754. ;       XORWF   Temp1, W                                                                ;
  755. ;       BTFSC   STATUS, Z                                                               ;
  756. ;       BCF             INDF1, 0                                                                ;
  757.                                                                                                         ;
  758. _UB_Update_Ball_X:                                                                      ;
  759. ;       MOVLW   0                                                                               ;
  760. ;       XORWF   Ball_Dir_X, W                                                   ;
  761. ;       BTFSC   STATUS, Z                                                               ;
  762. ;       GOTO    _UB_Update_Ball_Y                                               ;
  763.                                                                                                         ;
  764.         MOVFW   Ball_Dir_X                                                              ; Update Ball X Position
  765.         ADDWF   Ball_X, F                                                               ;
  766.                                                                                                         ;
  767. _UB_Update_Ball_X_Min:                                                          ;
  768.         MOVLW   0                                                                               ;
  769.         XORWF   Ball_X, W                                                               ;
  770.         BTFSS   STATUS, Z                                                               ;
  771.         GOTO    _UB_Update_Ball_X_Max                                   ;
  772.         MOVLW   1                                                                               ;
  773.         MOVWF   Ball_Dir_X                                                              ;
  774.                                                                                                         ;
  775.         INCF    Score_2, F                                                              ;
  776.         MOVFW   Score_2                                                                 ;
  777.         ANDLW   H'0F'                                                                   ;
  778.         XORLW   H'0A'                                                                   ;
  779.         BTFSS   STATUS, Z                                                               ;
  780.         GOTO    _UB_Update_Ball_X_Max                                   ;
  781.         MOVFW   Score_2                                                                 ;
  782.         ANDLW   H'F0'                                                                   ;
  783.         ADDLW   H'10'                                                                   ;
  784.         MOVWF   Score_2                                                                 ;
  785.         MOVLW   H'A0'                                                                   ;
  786.         XORWF   Score_2, W                                                              ;
  787.         BTFSC   STATUS, Z                                                               ;
  788.         CLRF    Score_2                                                                 ;
  789.                                                                                                         ;
  790. _UB_Update_Ball_X_Max:                                                          ;
  791.         MOVLW   31                                                                              ;
  792.         XORWF   Ball_X, W                                                               ;
  793.         BTFSS   STATUS, Z                                                               ;
  794.         GOTO    _UB_Update_Ball_Y                                               ;
  795.         MOVLW   -1                                                                              ;
  796.         MOVWF   Ball_Dir_X                                                              ;
  797.                                                                                                         ;
  798.         INCF    Score_1, F                                                              ;
  799.         MOVFW   Score_1                                                                 ;
  800.         ANDLW   H'0F'                                                                   ;
  801.         XORLW   H'0A'                                                                   ;
  802.         BTFSS   STATUS, Z                                                               ;
  803.         GOTO    _UB_Update_Ball_Y                                               ;
  804.         MOVFW   Score_1                                                                 ;
  805.         ANDLW   H'F0'                                                                   ;
  806.         ADDLW   H'10'                                                                   ;
  807.         MOVWF   Score_1                                                                 ;
  808.         MOVLW   H'A0'                                                                   ;
  809.         XORWF   Score_1, W                                                              ;
  810.         BTFSC   STATUS, Z                                                               ;
  811.         CLRF    Score_1                                                                 ;
  812.                                                                                                         ;
  813. _UB_Update_Ball_Y:                                                                      ;
  814. ;       MOVLW   0                                                                               ;
  815. ;       XORWF   Ball_Dir_Y, W                                                   ;
  816. ;       BTFSC   STATUS, Z                                                               ;
  817. ;       GOTO    _UB_Paddle_Detect                                               ;
  818.                                                                                                         ;
  819.         MOVFW   Ball_Dir_Y                                                              ; Update Ball Y Position
  820.         ADDWF   Ball_Y, F                                                               ;
  821.                                                                                                         ;
  822. _UB_Update_Ball_Y_Min:                                                          ;
  823.         MOVLW   0                                                                               ;
  824.         XORWF   Ball_Y, W                                                               ;
  825.         BTFSS   STATUS, Z                                                               ;
  826.         GOTO    _UB_Update_Ball_Y_Max                                   ;
  827.         MOVLW   1                                                                               ;
  828.         MOVWF   Ball_Dir_Y                                                              ;
  829.                                                                                                         ;
  830. _UB_Update_Ball_Y_Max:                                                          ;
  831.         MOVLW   47                                                                              ;
  832.         XORWF   Ball_Y, W                                                               ;
  833.         BTFSS   STATUS, Z                                                               ;
  834.         GOTO    _UB_Paddle_Detect                                               ;
  835.         MOVLW   -1                                                                              ;
  836.         MOVWF   Ball_Dir_Y                                                              ;
  837.                                                                                                         ;
  838. _UB_Paddle_Detect:                                                                      ;
  839. _UB_Paddle_Detect_Left:                                                         ;
  840.         MOVLW   -1                                                                              ;
  841.         XORWF   Ball_Dir_X, W                                                   ;
  842.         BTFSS   STATUS, Z                                                               ;
  843.         GOTO    _UB_Paddle_Detect_Right                                 ;
  844.                                                                                                         ;
  845.         MOVLW   2                                                                               ;
  846.         XORWF   Ball_X, W                                                               ;
  847.         BTFSS   STATUS, Z                                                               ;
  848.         GOTO    _UB_Draw_Ball                                                   ;
  849.                                                                                                         ;
  850.         MOVFW   Paddle_1_Y                                                              ;
  851.         SUBWF   Ball_Y, W                                                               ;
  852.         BTFSS   STATUS, C                                                               ;
  853.         GOTO    _UB_Draw_Ball                                                   ;
  854.         MOVFW   Paddle_1_Y                                                              ;
  855.         ADDLW   8                                                                               ;
  856.         SUBWF   Ball_Y, W                                                               ;
  857.         BTFSC   STATUS, C                                                               ;
  858.         GOTO    _UB_Draw_Ball                                                   ;
  859.         MOVLW   1                                                                               ;
  860.         MOVWF   Ball_Dir_X                                                              ;
  861.         GOTO    _UB_Draw_Ball                                                   ;
  862.                                                                                                         ;
  863. _UB_Paddle_Detect_Right:                                                        ;
  864.         MOVLW   1                                                                               ;
  865.         XORWF   Ball_Dir_X, W                                                   ;
  866.         BTFSS   STATUS, Z                                                               ;
  867.         GOTO    _UB_Draw_Ball                                                   ;
  868.                                                                                                         ;
  869.         MOVLW   29                                                                              ;
  870.         XORWF   Ball_X, W                                                               ;
  871.         BTFSS   STATUS, Z                                                               ;
  872.         GOTO    _UB_Draw_Ball                                                   ;
  873.                                                                                                         ;
  874.         MOVFW   Paddle_2_Y                                                              ;
  875.         SUBWF   Ball_Y, W                                                               ;
  876.         BTFSS   STATUS, C                                                               ;
  877.         GOTO    _UB_Draw_Ball                                                   ;
  878.         MOVFW   Paddle_2_Y                                                              ;
  879.         ADDLW   8                                                                               ;
  880.         SUBWF   Ball_Y, W                                                               ;
  881.         BTFSC   STATUS, C                                                               ;
  882.         GOTO    _UB_Draw_Ball                                                   ;
  883.         MOVLW   -1                                                                              ;
  884.         MOVWF   Ball_Dir_X                                                              ;
  885.                                                                                                         ;
  886. _UB_Draw_Ball:                                                                          ;
  887.         MOVFW   Ball_Y                                                                  ;
  888.         ADDWF   Ball_Y, W                                                               ;
  889.         ADDWF   Ball_Y, W                                                               ;
  890.         ADDWF   Ball_Y, W                                                               ;
  891.         ADDLW   H'2C'                                                                   ;
  892.         MOVWF   FSR1L                                                                   ;
  893.         RRF             Ball_X, W                                                               ;
  894.         MOVWF   Temp1                                                                   ;
  895.         RRF             Temp1, F                                                                ;
  896.         RRF             Temp1, W                                                                ;
  897.         ANDLW   H'1F'                                                                   ;
  898.         ADDWF   FSR1L, F                                                                ;
  899.         MOVLW   H'20'                                                                   ;
  900.         MOVWF   FSR1H                                                                   ;
  901.         MOVFW   Ball_X                                                                  ;
  902.         ANDLW   H'07'                                                                   ;
  903.         MOVWF   Temp1                                                                   ;
  904.         MOVLW   H'00'                                                                   ;
  905.         XORWF   Temp1, W                                                                ;
  906.         BTFSC   STATUS, Z                                                               ;
  907.         BSF             INDF1, 7                                                                ;
  908.         MOVLW   H'01'                                                                   ;
  909.         XORWF   Temp1, W                                                                ;
  910.         BTFSC   STATUS, Z                                                               ;
  911.         BSF             INDF1, 6                                                                ;
  912.         MOVLW   H'02'                                                                   ;
  913.         XORWF   Temp1, W                                                                ;
  914.         BTFSC   STATUS, Z                                                               ;
  915.         BSF             INDF1, 5                                                                ;
  916.         MOVLW   H'03'                                                                   ;
  917.         XORWF   Temp1, W                                                                ;
  918.         BTFSC   STATUS, Z                                                               ;
  919.         BSF             INDF1, 4                                                                ;
  920.         MOVLW   H'04'                                                                   ;
  921.         XORWF   Temp1, W                                                                ;
  922.         BTFSC   STATUS, Z                                                               ;
  923.         BSF             INDF1, 3                                                                ;
  924.         MOVLW   H'05'                                                                   ;
  925.         XORWF   Temp1, W                                                                ;
  926.         BTFSC   STATUS, Z                                                               ;
  927.         BSF             INDF1, 2                                                                ;
  928.         MOVLW   H'06'                                                                   ;
  929.         XORWF   Temp1, W                                                                ;
  930.         BTFSC   STATUS, Z                                                               ;
  931.         BSF             INDF1, 1                                                                ;
  932.         MOVLW   H'07'                                                                   ;
  933.         XORWF   Temp1, W                                                                ;
  934.         BTFSC   STATUS, Z                                                               ;
  935.         BSF             INDF1, 0                                                                ;
  936.                                                                                                         ;
  937.         DELAY   18                                                                              ;
  938.         NOP                                                                                             ;
  939.         NOP                                                                                             ;
  940.         NOP                                                                                             ;
  941.         NOP                                                                                             ;
  942.         RETURN                                                                                  ;
  943. ;---------------------------------------------------;
  944.  
  945. ;---------------------------------------------------;
  946. _Update_Paddles:                                                                        ;
  947. ;---------------------------------------------------;
  948.         CALL    _Sync_2us                                                               ;
  949.                                                                                                         ;
  950. _UP_Clear_Paddles:                                                                      ;
  951.         MOVFW   Paddle_1_Y                                                              ;
  952.         ADDWF   Paddle_1_Y, W                                                   ;
  953.         ADDWF   Paddle_1_Y, W                                                   ;
  954.         ADDWF   Paddle_1_Y, W                                                   ;
  955.         ADDLW   H'2C'                                                                   ;
  956.         MOVWF   FSR1L                                                                   ;
  957.         MOVLW   H'20'                                                                   ;
  958.         MOVWF   FSR1H                                                                   ;
  959.         CLRW                                                                                    ;
  960.         MOVWI   0[INDF1]                                                                ;
  961.         MOVWI   4[INDF1]                                                                ;
  962.         MOVWI   8[INDF1]                                                                ;
  963.         MOVWI   12[INDF1]                                                               ;
  964.         MOVWI   16[INDF1]                                                               ;
  965.         MOVWI   20[INDF1]                                                               ;
  966.         MOVWI   24[INDF1]                                                               ;
  967.         MOVWI   28[INDF1]                                                               ;
  968.                                                                                                         ;
  969.         MOVFW   Paddle_2_Y                                                              ;
  970.         ADDWF   Paddle_2_Y, W                                                   ;
  971.         ADDWF   Paddle_2_Y, W                                                   ;
  972.         ADDWF   Paddle_2_Y, W                                                   ;
  973.         ADDLW   H'2F'                                                                   ;
  974.         MOVWF   FSR1L                                                                   ;
  975.         MOVLW   H'20'                                                                   ;
  976.         CLRW                                                                                    ;
  977.         MOVWI   0[INDF1]                                                                ;
  978.         MOVWI   4[INDF1]                                                                ;
  979.         MOVWI   8[INDF1]                                                                ;
  980.         MOVWI   12[INDF1]                                                               ;
  981.         MOVWI   16[INDF1]                                                               ;
  982.         MOVWI   20[INDF1]                                                               ;
  983.         MOVWI   24[INDF1]                                                               ;
  984.         MOVWI   28[INDF1]                                                               ;
  985.                                                                                                         ;
  986. ;_UP_P1_Fire:                                                                           ;
  987. ;       CLRW                                                                                    ;
  988. ;       XORWF   Ball_Dir_X, W                                                   ;
  989. ;       BTFSS   STATUS, Z                                                               ;
  990. ;       GOTO    _UP_P1_Up                                                               ;
  991. ;       CLRW                                                                                    ;
  992. ;       XORWF   Ball_Dir_Y, W                                                   ;
  993. ;       BTFSS   STATUS, Z                                                               ;
  994. ;       GOTO    _UP_P1_Up                                                               ;
  995. ;       BTFSS   PORTA, LBUTT_1_BIT                                              ;
  996. ;       GOTO    _UP_P1_Up                                                               ;
  997. ;       BTFSS   PORTA, LBUTT_2_BIT                                              ;
  998. ;       GOTO    _UP_P1_Up                                                               ;
  999. ;       BANKSEL TRISA                                                                   ;
  1000. ;       BCF             TRISA, LBUTT_2_BIT                                              ; Set as OUTPUT
  1001. ;       BANKSEL PORTA                                                                   ;
  1002. ;       BSF             PORTA, LBUTT_2_BIT                                              ; Set HIGH
  1003. ;       BTFSS   PORTA, LBUTT_1_BIT                                              ;
  1004. ;       GOTO    _UP_P1_Up                                                               ;
  1005. ;       BCF             PORTA, LBUTT_2_BIT                                              ; Set LOW
  1006. ;       BTFSC   PORTA, LBUTT_1_BIT                                              ;
  1007. ;       GOTO    _UP_P1_Up                                                               ;
  1008. ;       MOVLW   1                                                                               ;
  1009. ;       MOVWF   Ball_Dir_X                                                              ;
  1010. ;;      MOVWF   Ball_Dir_Y                                                              ;
  1011. ;                                                                                                       ;
  1012. _UP_P1_Up:                                                                                      ;
  1013. ;       BANKSEL PORTA                                                                   ;
  1014. ;       BSF             PORTA, LBUTT_1_BIT                                              ;
  1015. ;       BSF             PORTA, LBUTT_2_BIT                                              ;
  1016. ;       BANKSEL TRISA                                                                   ;
  1017. ;       BSF             TRISA, LBUTT_1_BIT                                              ;
  1018. ;       BSF             TRISA, LBUTT_2_BIT                                              ;
  1019. ;       BANKSEL MEMORY                                                                  ;
  1020.         CLRW                                                                                    ;
  1021.         XORWF   Paddle_1_Y, W                                                   ;
  1022.         BTFSC   STATUS, Z                                                               ;
  1023.         GOTO    _UP_P1_Down                                                             ;
  1024.         BTFSS   PORTA, LBUTT_1_BIT                                              ;
  1025.         DECF    Paddle_1_Y, F                                                   ;
  1026. _UP_P1_Down:                                                                            ;
  1027.         MOVLW   40                                                                              ;
  1028.         XORWF   Paddle_1_Y, W                                                   ;
  1029.         BTFSC   STATUS, Z                                                               ;
  1030.         GOTO    _UP_P2_Up                                                               ;
  1031.         BTFSS   PORTA, LBUTT_2_BIT                                              ;
  1032.         INCF    Paddle_1_Y, F                                                   ;
  1033. _UP_P2_Up:                                                                                      ;
  1034.         MOVLW   0                                                                               ;
  1035.         XORWF   Paddle_2_Y, W                                                   ;
  1036.         BTFSC   STATUS, Z                                                               ;
  1037.         GOTO    _UP_P2_Down                                                             ;
  1038.         BTFSS   PORTA, RBUTT_1_BIT                                              ;
  1039.         DECF    Paddle_2_Y, F                                                   ;
  1040. _UP_P2_Down:                                                                            ;
  1041.         MOVLW   40                                                                              ;
  1042.         XORWF   Paddle_2_Y, W                                                   ;
  1043.         BTFSC   STATUS, Z                                                               ;
  1044.         GOTO    _UP_Draw_Paddles                                                ;
  1045.         BTFSS   PORTA, RBUTT_2_BIT                                              ;
  1046.         INCF    Paddle_2_Y, F                                                   ;
  1047.                                                                                                         ;
  1048. _UP_Draw_Paddles:                                                                       ;
  1049.         MOVFW   Paddle_1_Y                                                              ;
  1050.         ADDWF   Paddle_1_Y, W                                                   ;
  1051.         ADDWF   Paddle_1_Y, W                                                   ;
  1052.         ADDWF   Paddle_1_Y, W                                                   ;
  1053.         ADDLW   H'2C'                                                                   ;
  1054.         MOVWF   FSR1L                                                                   ;
  1055.         MOVLW   H'20'                                                                   ;
  1056.         MOVWF   FSR1H                                                                   ;
  1057.         MOVLW   H'40'                                                                   ;
  1058.         MOVWI   0[INDF1]                                                                ;
  1059.         MOVWI   4[INDF1]                                                                ;
  1060.         MOVWI   8[INDF1]                                                                ;
  1061.         MOVWI   12[INDF1]                                                               ;
  1062.         MOVWI   16[INDF1]                                                               ;
  1063.         MOVWI   20[INDF1]                                                               ;
  1064.         MOVWI   24[INDF1]                                                               ;
  1065.         MOVWI   28[INDF1]                                                               ;
  1066.                                                                                                         ;
  1067.         MOVFW   Paddle_2_Y                                                              ;
  1068.         ADDWF   Paddle_2_Y, W                                                   ;
  1069.         ADDWF   Paddle_2_Y, W                                                   ;
  1070.         ADDWF   Paddle_2_Y, W                                                   ;
  1071.         ADDLW   H'2F'                                                                   ;
  1072.         MOVWF   FSR1L                                                                   ;
  1073.         MOVLW   H'20'                                                                   ;
  1074.         MOVWF   FSR1H                                                                   ;
  1075.         MOVLW   H'02'                                                                   ;
  1076.         MOVWI   0[INDF1]                                                                ;
  1077.         MOVWI   4[INDF1]                                                                ;
  1078.         MOVWI   8[INDF1]                                                                ;
  1079.         MOVWI   12[INDF1]                                                               ;
  1080.         MOVWI   16[INDF1]                                                               ;
  1081.         MOVWI   20[INDF1]                                                               ;
  1082.         MOVWI   24[INDF1]                                                               ;
  1083.         MOVWI   28[INDF1]                                                               ;
  1084.                                                                                                         ;
  1085.         DELAY   27                                                                              ;
  1086. ;       NOP                                                                                             ;
  1087. ;       NOP                                                                                             ;
  1088. ;       NOP                                                                                             ;
  1089. ;       NOP                                                                                             ;
  1090. ;       NOP                                                                                             ;
  1091.         RETURN                                                                                  ;
  1092. ;---------------------------------------------------;
  1093.  
  1094. ;---------------------------------------------------;
  1095. _Initialize_System:                                                                     ;
  1096. ;---;-----------------------------------------------;
  1097.         ; Initialize Hardware                                                   ;
  1098.         ;-----------------------------------------------;
  1099.         BANKSEL OSCCON                                                                  ;
  1100.         MOVLW   B'11110000'                                                             ; 32Mhz
  1101.         MOVWF   OSCCON                                                                  ;
  1102.                                                                                                         ;
  1103.         BANKSEL OSCSTAT                                                                 ; Wait for
  1104. IS1:MOVFW       OSCSTAT                                                                 ; high speed
  1105.         ANDLW   H'79'                                                                   ; oscillator
  1106.         XORLW   H'59'                                                                   ; to be
  1107.         BTFSS   STATUS, Z                                                               ; stable and
  1108.         GOTO    IS1                                                                             ; locked
  1109.                                                                                                         ;
  1110.         BANKSEL ANSELA                                                                  ;
  1111.         CLRF    ANSELA                                                                  ; ALL I/O as digital
  1112.                                                                                                         ;
  1113.         BANKSEL LATA                                                                    ;
  1114.         CLRF    LATA                                                                    ;
  1115.                                                                                                         ;
  1116.         BANKSEL TRISA                                                                   ;
  1117.         CLRF    TRISA                                                                   ;
  1118.         BCF             TRISA, VIDEO_0_BIT                                              ; Set as OUTPUT
  1119.         BCF             TRISA, VIDEO_1_BIT                                              ; Set As OUTPUT
  1120.         BSF             TRISA, LBUTT_1_BIT                                              ; Set as INPUT
  1121.         BSF             TRISA, LBUTT_2_BIT                                              ; Set as INPUT
  1122.         BSF             TRISA, RBUTT_1_BIT                                              ; Set as INPUT
  1123.         BSF             TRISA, RBUTT_2_BIT                                              ; Set as INPUT
  1124.                                                                                                         ;
  1125.         BANKSEL PORTA                                                                   ;
  1126.         CLRF    PORTA                                                                   ;
  1127.         BCF             PORTA, VIDEO_0_BIT                                              ; Set LOW
  1128.         BCF             PORTA, VIDEO_1_BIT                                              ; Set LOW
  1129.         BSF             PORTA, LBUTT_1_BIT                                              ; Set HIGH
  1130.         BSF             PORTA, LBUTT_2_BIT                                              ; Set HIGH
  1131.         BSF             PORTA, RBUTT_1_BIT                                              ; Set HIGH
  1132.         BSF             PORTA, RBUTT_2_BIT                                              ; Set HIGH
  1133.                                                                                                         ;
  1134.         BANKSEL INTCON                                                                  ;
  1135.         CLRF    INTCON                                                                  ;
  1136.                                                                                                         ;
  1137.         BANKSEL OPTION_REG                                                              ;
  1138.         CLRF    OPTION_REG                                                              ;
  1139.                                                                                                         ;
  1140.         ;-----------------------------------------------;
  1141.         ; Initialize Video Buffer                                               ;
  1142.         ; Copy image from EEPROM into buffer memory             ;
  1143.         ;-----------------------------------------------;
  1144.         BANKSEL MEMORY                                                                  ;
  1145.         MOVLW   H'10'                                                                   ;
  1146.         MOVWF   FSR1L                                                                   ;
  1147.         MOVLW   H'20'                                                                   ;
  1148.         MOVWF   FSR1H                                                                   ;
  1149.         MOVLW   H'E0'                                                                   ;
  1150.         MOVWF   Temp1                                                                   ; 224 bytes
  1151.         BANKSEL EEADR                                                                   ;
  1152.         CLRF    EEADR                                                                   ;
  1153. _IS_IVB:                                                                                        ;
  1154.         BANKSEL EECON1                                                                  ;
  1155.         BSF             EECON1, RD                                                              ;
  1156.         MOVFW   EEDAT                                                                   ;
  1157.         INCF    EEADR, F                                                                ;
  1158.         BANKSEL MEMORY                                                                  ;
  1159.         MOVWF   INDF1                                                                   ;
  1160.         INCF    FSR1L, F                                                                ;
  1161.         DECFSZ  Temp1, F                                                                ;
  1162.         GOTO    _IS_IVB                                                                 ;
  1163.                                                                                                         ;
  1164.         ;-----------------------------------------------;
  1165.         ; Initialize Memory                                                             ;
  1166.         ;-----------------------------------------------;
  1167.         BANKSEL MEMORY                                                                  ;
  1168.         MOVLW   0                                                                               ;
  1169.         MOVWF   Score_1                                                                 ;
  1170.         MOVLW   0                                                                               ;
  1171.         MOVWF   Score_2                                                                 ;
  1172.         MOVLW   20                                                                              ;
  1173.         MOVWF   Paddle_1_Y                                                              ;
  1174.         MOVLW   20                                                                              ;
  1175.         MOVWF   Paddle_2_Y                                                              ;
  1176.         MOVLW   2                                                                               ;
  1177.         MOVWF   Ball_X                                                                  ;
  1178.         MOVLW   23                                                                              ;
  1179.         MOVWF   Ball_Y                                                                  ;
  1180.         MOVLW   1                                                                               ;
  1181.         MOVWF   Ball_Dir_X                                                              ;
  1182.         MOVLW   1                                                                               ;
  1183.         MOVWF   Ball_Dir_Y                                                              ;
  1184.                                                                                                         ;
  1185.         ;-----------------------------------------------;
  1186.         ; Initialize Other Subsystems                                   ;
  1187.         ;-----------------------------------------------;
  1188.                                                                                                         ;
  1189.         RETURN                                                                                  ;
  1190. ;---------------------------------------------------;
  1191.  
  1192. ;---------------------------------------------------;
  1193. ; Numeric Characters (0-9) Scan Line Data                       ;
  1194. ;---------------------------------------------------;
  1195. ;CHARACTER_TABLE_LEFT   CODE    H'600'                          ;
  1196. ;---------------------------------------------------;
  1197. CHARACTER_TABLE_L1:                                                                     ;
  1198. ;---------------------------------------------------;
  1199.         DT      B'01000000', B'10100000', B'10100000', B'10100000', B'01000000'
  1200.         DT  B'01000000', B'11000000', B'01000000', B'01000000', B'11100000'
  1201.         DT      B'11000000', B'00100000', B'01000000', B'10000000', B'11100000'
  1202.         DT      B'11000000', B'00100000', B'01000000', B'00100000', B'11000000'
  1203.         DT      B'10100000', B'10100000', B'11100000', B'00100000', B'00100000'
  1204.         DT      B'11100000', B'10000000', B'11000000', B'00100000', B'11000000'
  1205.         DT      B'01100000', B'10000000', B'11000000', B'10100000', B'01000000'
  1206.         DT      B'11100000', B'00100000', B'01000000', B'10000000', B'10000000'
  1207.         DT      B'01000000', B'10100000', B'01000000', B'10100000', B'01000000'
  1208.         DT      B'01000000', B'10100000', B'01100000', B'00100000', B'11000000'
  1209. ;---------------------------------------------------;
  1210. CHARACTER_TABLE_L2:                                                                     ;
  1211. ;---------------------------------------------------;
  1212.         DT      B'00000100', B'00001010', B'00001010', B'00001010', B'00000100'
  1213.         DT  B'00000100', B'00001100', B'00000100', B'00000100', B'00001110'
  1214.         DT      B'00001100', B'00000010', B'00000100', B'00001000', B'00001110'
  1215.         DT      B'00001100', B'00000010', B'00000100', B'00000010', B'00001100'
  1216.         DT      B'00001010', B'00001010', B'00001110', B'00000010', B'00000010'
  1217.         DT      B'00001110', B'00001000', B'00001100', B'00000010', B'00001100'
  1218.         DT      B'00000110', B'00001000', B'00001100', B'00001010', B'00000100'
  1219.         DT      B'00001110', B'00000010', B'00000100', B'00001000', B'00001000'
  1220.         DT      B'00000100', B'00001010', B'00000100', B'00001010', B'00000100'
  1221.         DT      B'00000100', B'00001010', B'00000110', B'00000010', B'00001100'
  1222. ;---------------------------------------------------;
  1223. ;CHARACTER_TABLE_RIGHT  CODE    H'700'                          ;
  1224. ;---------------------------------------------------;
  1225. CHARACTER_TABLE_R1:                                                                     ;
  1226. ;---------------------------------------------------;
  1227.         DT      B'00100000', B'01010000', B'01010000', B'01010000', B'00100000'
  1228.         DT  B'00100000', B'01100000', B'00100000', B'00100000', B'01110000'
  1229.         DT      B'01100000', B'00010000', B'00100000', B'01000000', B'01110000'
  1230.         DT      B'01100000', B'00010000', B'00100000', B'00010000', B'01100000'
  1231.         DT      B'01010000', B'01010000', B'01110000', B'00010000', B'00010000'
  1232.         DT      B'01110000', B'01000000', B'01100000', B'00010000', B'01100000'
  1233.         DT      B'00110000', B'01000000', B'01100000', B'01010000', B'00100000'
  1234.         DT      B'01110000', B'00010000', B'00100000', B'01000000', B'01000000'
  1235.         DT      B'00100000', B'01010000', B'00100000', B'01010000', B'00100000'
  1236.         DT      B'00100000', B'01010000', B'00110000', B'00010000', B'01100000'
  1237. ;---------------------------------------------------;
  1238. CHARACTER_TABLE_R2:                                                                     ;
  1239. ;---------------------------------------------------;
  1240.         DT      B'00000010', B'00000101', B'00000101', B'00000101', B'00000010'
  1241.         DT  B'00000010', B'00000110', B'00000010', B'00000010', B'00000111'
  1242.         DT      B'00000110', B'00000001', B'00000010', B'00000100', B'00000111'
  1243.         DT      B'00000110', B'00000001', B'00000010', B'00000001', B'00000110'
  1244.         DT      B'00000101', B'00000101', B'00000111', B'00000001', B'00000001'
  1245.         DT      B'00000111', B'00000100', B'00000110', B'00000001', B'00000110'
  1246.         DT      B'00000011', B'00000100', B'00000110', B'00000101', B'00000010'
  1247.         DT      B'00000111', B'00000001', B'00000010', B'00000100', B'00000100'
  1248.         DT      B'00000010', B'00000101', B'00000010', B'00000101', B'00000010'
  1249.         DT      B'00000010', B'00000101', B'00000011', B'00000001', B'00000110'
  1250. ;---------------------------------------------------;
  1251.  
  1252. ;---------------------------------------------------;
  1253. EEPROM_DATA     CODE    H'F000'                                                 ;
  1254. ;---------------------------------------------------;
  1255.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1256.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1257.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1258.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1259.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1260.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1261.         DE      B'11111111', B'11111111', B'11111111', B'11111111'
  1262.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1263.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1264.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1265.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1266.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1267.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1268.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1269.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1270.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1271.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1272.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1273.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1274.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1275.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1276.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1277.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1278.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1279.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1280.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1281.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1282.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1283.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1284.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1285.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1286.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1287.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1288.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1289.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1290.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1291.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1292.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1293.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1294.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1295.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1296.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1297.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1298.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1299.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1300.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1301.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1302.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1303.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1304.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1305.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1306.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1307.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1308.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1309.         DE      B'00000000', B'00000000', B'00000000', B'00000000'
  1310.         DE      B'11111111', B'11111111', B'11111111', B'11111111'
  1311. ;---------------------------------------------------;
  1312.  
  1313. ;---------------------------------------------------;
  1314.         END                                                                                             ;
  1315. ;---------------------------------------------------;
RAW Paste Data
Top