SHARE
TWEET

NTSC_Interface.INC V1.00

a guest Dec 30th, 2012 125 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;---------------------------------------------------;
  2. ; Name:                 NTSC_Interface.INC                                      ;
  3. ; Use:                  NTSC Interface Include File                     ;
  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 30, 2012                                       ;
  12. ; Version:              V1.00                                                           ;
  13. ;---------------------------------------------------;
  14. ; Description:  Equates, Defines, Global / External     ;
  15. ;                               Support for NTSC_Interface.ASM          ;
  16. ;---------------------------------------------------;
  17. ; Code is specific to the PIC12F1840!                           ;
  18. ;---------------------------------------------------;
  19. #DEFINE         _DEBUG_VSYNC_   TRUE                                    ;
  20. #DEFINE         _AUDIO_ENABLED_ TRUE                                    ;
  21. ;---------------------------------------------------;
  22.  
  23. ;---------------------------------------------------;
  24. ; Macros                                                                                        ;
  25. ;---------------------------------------------------;
  26. VDELAY MACRO DTIME                                                                      ;
  27.         ;-----------------------------------------------;
  28.         ; The time munger used EVERYWHERE                               ;
  29.         ;-----------------------------------------------;
  30.         MOVLW   DTIME                                                                   ;
  31.         MOVWF   VTemp                                                                   ;
  32.         DECFSZ  VTemp, F                                                                ;
  33.         GOTO    $-1                                                                             ;
  34.         ;-----------------------------------------------;
  35.         ENDM                                                                                    ;
  36.                                                                                                         ;
  37.         ;-----------------------------------------------;
  38. DO_BIT MACRO THISBIT, NOPS                                                      ;
  39.         ;-----------------------------------------------;
  40.         ; Sets the DAC either WHITE or BLACK                    ;
  41.         ; Does a specified delay in NOPs                                ;
  42.         ;-----------------------------------------------;
  43.         MOVFW   PORTA                                                                   ;
  44.         ANDLW   ~VIDEO_0                                                                ;
  45.         BTFSC   INDF1, THISBIT                                                  ;
  46.         IORLW   VIDEO_0                                                                 ;
  47.         MOVWF   PORTA                                                                   ;
  48. #IF (THISBIT == 0)                                                                      ;
  49.         ADDFSR  FSR1, 1                                                                 ;
  50. #ENDIF                                                                                          ;
  51. #IF NOPS > 0                                                                            ;
  52.         NOP                                                                                             ;
  53. #ENDIF                                                                                          ;
  54. #IF NOPS > 1                                                                            ;
  55.         NOP                                                                                             ;
  56. #ENDIF                                                                                          ;
  57. #IF NOPS > 2                                                                            ;
  58.         NOP                                                                                             ;
  59. #ENDIF                                                                                          ;
  60. #IF NOPS > 3                                                                            ;
  61.         NOP                                                                                             ;
  62. #ENDIF                                                                                          ;
  63. #IF NOPS > 4                                                                            ;
  64.         NOP                                                                                             ;
  65. #ENDIF                                                                                          ;
  66. #IF NOPS > 5                                                                            ;
  67.         NOP                                                                                             ;
  68. #ENDIF                                                                                          ;
  69. #IF NOPS > 6                                                                            ;
  70.         NOP                                                                                             ;
  71. #ENDIF                                                                                          ;
  72. #IF NOPS > 7                                                                            ;
  73.         NOP                                                                                             ;
  74. #ENDIF                                                                                          ;
  75. #IF NOPS > 8                                                                            ;
  76.         NOP                                                                                             ;
  77. #ENDIF                                                                                          ;
  78. #IF NOPS > 9                                                                            ;
  79.         NOP                                                                                             ;
  80. #ENDIF                                                                                          ;
  81.         ;-----------------------------------------------;
  82.         ENDM                                                                                    ;
  83.                                                                                                         ;
  84.         ;-----------------------------------------------;
  85. SET_DAC2BIT     MACRO   COLOR                                                   ;
  86.         ;-----------------------------------------------;
  87.         ; Sets the 2bit DAC to the desired color                ;
  88.         ; Both bits are done at once, or else some weird;
  89.         ; transitions on the DAC can be seen. Okay if   ;
  90.         ; just colors (WHITE, GRAY, BLACK), but if a    ;
  91.         ; sync pulse shows up out context, it can really;
  92.         ; mess up the video timings                                             ;
  93.         ;-----------------------------------------------;
  94.         MOVFW   PORTA                                                                   ;
  95.         ANDLW   ~(VIDEO_0 | VIDEO_1)                                    ;
  96.         IORLW   COLOR                                                                   ;
  97.         MOVWF   PORTA                                                                   ;
  98.         ;-----------------------------------------------;
  99.         ENDM                                                                                    ;
  100.                                                                                                         ;
  101.         ;-----------------------------------------------;
  102. #DEFINE SIG_2US         2                                                               ;
  103. #DEFINE SIG_4US         4                                                               ;
  104. #DEFINE SIG_30US        30                                                              ;
  105. #DEFINE SIG_60US        60                                                              ;
  106.         ;-----------------------------------------------;
  107.                                                                                                         ;
  108.         ;-----------------------------------------------;
  109. START_TIMING MACRO SIG_LEN, VID_STATE                           ;
  110.         ;-----------------------------------------------;
  111. #IF (SIG_LEN == SIG_2US)                                                        ;
  112.         MOVLW   ~((SIG_LEN * 2) + 2)                                    ;
  113. #ENDIF                                                                                          ;
  114. #IF (SIG_LEN == SIG_4US)                                                        ;
  115.         MOVLW   ~((SIG_LEN * 4) - 3)                                    ;
  116. #ENDIF                                                                                          ;
  117. #IF (SIG_LEN == SIG_30US)                                                       ;
  118.         MOVLW   ~((SIG_LEN * 4) - 11)                                   ;
  119. #ENDIF                                                                                          ;
  120. #IF (SIG_LEN == SIG_60US)                                                       ;
  121.         MOVLW   ~((SIG_LEN * 4) - 9)                                    ;
  122. #ENDIF                                                                                          ;
  123.         MOVWF   Vid_Timing                                                              ;
  124.                                                                                                         ;
  125. #IF (VID_STATE == 0)                                                            ;
  126.         BTFSC   PORTA, VIDEO_1_BIT                                              ;
  127. #ELSE                                                                                           ;
  128.         BTFSS   PORTA, VIDEO_1_BIT                                              ;
  129. #ENDIF                                                                                          ;
  130.         GOTO    $-1                                                                             ;
  131. #IF (SIG_LEN == SIG_60US)                                                       ;
  132.         AUDIO_PROC                                                                              ;
  133. #ENDIF                                                                                          ;
  134.         ;-----------------------------------------------;
  135.         ENDM                                                                                    ;
  136.                                                                                                         ;
  137.         ;-----------------------------------------------;
  138. DEBUG_VSYNC_PULSE MACRO                                                         ;
  139.         ;-----------------------------------------------;
  140.         ; If _DEBUG_VSYNC_ is enabled, it will produce a;
  141.         ; pulse on the GPIO2 pin for debugging purposes.;
  142.         ; This pulse is mainly to measure the time (in  ;
  143.         ; ms) and frequency of a single video frame.    ;
  144.         ;-----------------------------------------------;
  145. #IF     _DEBUG_VSYNC_                                                                   ;
  146.         BANKSEL TRISA                                                                   ;
  147.         BCF             TRISA, 2                                                                ;
  148.         BANKSEL PORTA                                                                   ;
  149.         BCF             PORTA, 2                                                                ;
  150.         NOP                                                                                             ;
  151.         BSF             PORTA, 2                                                                ;
  152.         BANKSEL TRISA                                                                   ;
  153.         BSF             TRISA, 2                                                                ;
  154.         BANKSEL MEMORY                                                                  ;
  155. #ENDIF  ; _DEBUG_VSYNC_                                                         ;
  156.         ;-----------------------------------------------;
  157.         ENDM                                                                                    ;
  158.                                                                                                         ;
  159.         ;-----------------------------------------------;
  160. AUDIO_PROC MACRO                                                                        ;
  161.         ;-----------------------------------------------;
  162.         ; This handles the sound generation. Sounds are ;
  163.         ; produced by toggling GPIO1 at the BEGINNING of;
  164.         ; each 60us line during the     BACK PORCH/BLANKING     ;
  165.         ; time. If it is toggled during ALL 60us lines, ;
  166.         ; you get a high frequency (around 7800hz). If  ;
  167.         ; every other 60us line, the frequency is lower.;
  168.         ; This procedure is NOT run during VERTICAL SYNC;
  169.         ; time to keep AUDIO from altering the timings  ;
  170.         ; of the video, causing distortions of the image;
  171.         ; on the screen. In order to keep the video     ;
  172.         ; timings the same, no matter what path is taken;
  173.         ; in the audio code, NOPs are padded so that    ;
  174.         ; each path takes the same number of cycles.    ;
  175.         ;-----------------------------------------------;
  176. #IF     (_AUDIO_ENABLED_ == TRUE)                                               ;
  177.         BTFSC   Video_Status, VERTICAL_SYNC_BIT                 ;
  178.         GOTO    $+16                                                                    ;
  179.         BTFSS   Video_Status, AUDIO_ENABLED_BIT                 ;
  180.         GOTO    $+16                                                                    ;
  181.         DECFSZ  Audio_Count, F                                                  ;
  182.         GOTO    $+16                                                                    ;
  183.         MOVFW   Audio_Reload                                                    ;
  184.         MOVWF   Audio_Count                                                             ;
  185.         MOVLW   AUDIO                                                                   ;
  186.         XORWF   PORTA, F                                                                ;
  187.         DECFSZ  Audio_Dur_LO, F                                                 ;
  188.         GOTO    $+16                                                                    ;
  189.         DECFSZ  Audio_Dur_HI, F                                                 ;
  190.         GOTO    $+16                                                                    ;
  191.         BCF             Video_Status, AUDIO_ENABLED_BIT                 ;
  192.         BSF             PORTA, AUDIO_BIT                                                ;
  193.         GOTO    $+16                                                                    ;
  194.         NOP                                                                                             ;
  195.         NOP                                                                                             ;
  196.         NOP                                                                                             ;
  197.         NOP                                                                                             ;
  198.         NOP                                                                                             ;
  199.         NOP                                                                                             ;
  200.         NOP                                                                                             ;
  201.         NOP                                                                                             ;
  202.         NOP                                                                                             ;
  203.         NOP                                                                                             ;
  204.         NOP                                                                                             ;
  205.         NOP                                                                                             ;
  206.         NOP                                                                                             ;
  207.         NOP                                                                                             ;
  208.         NOP                                                                                             ;
  209. #ELSE                                                                                           ;
  210.         NOP                                                                                             ;
  211.         NOP                                                                                             ;
  212.         NOP                                                                                             ;
  213.         NOP                                                                                             ;
  214.         NOP                                                                                             ;
  215.         NOP                                                                                             ;
  216.         NOP                                                                                             ;
  217.         NOP                                                                                             ;
  218.         NOP                                                                                             ;
  219.         NOP                                                                                             ;
  220.         NOP                                                                                             ;
  221.         NOP                                                                                             ;
  222.         NOP                                                                                             ;
  223.         NOP                                                                                             ;
  224.         NOP                                                                                             ;
  225.         NOP                                                                                             ;
  226.         NOP                                                                                             ;
  227. #ENDIF ; (_AUDIO_ENABLED_ == TRUE)                                      ;
  228.         ;-----------------------------------------------;
  229.         ENDM                                                                                    ;
  230.                                                                                                         ;
  231.         ;-----------------------------------------------;
  232. PLAY_SOUND      MACRO FREQUENCY, DURATION                               ;
  233.         ;-----------------------------------------------;
  234.         ; This will play a sound of a specified                 ;
  235.         ; frequency for a specified duration                    ;
  236.         ; The lower the frequency number, the higher    ;
  237.         ; the frequency. Duration is also a function    ;
  238.         ; of the frequency number, so if frequency goes ;
  239.         ; up, adjust the duration down.                                 ;
  240.         ;-----------------------------------------------;
  241.         ; NOTE that a FREQUENCY of 0 is treated as a    ;
  242.         ; frequency of 256. 0<=Freq<=255. The count is  ;
  243.         ; decremented BEFORE it is checked to be 0, so  ;
  244.         ; starting with 0 will dec, see 255, continue   ;
  245.         ; loop. Just so you are warned.                                 ;
  246.         ;-----------------------------------------------;
  247. #IF     (_AUDIO_ENABLED_ == TRUE)                                               ;
  248.         MOVLW   FREQUENCY                                                               ;
  249.         MOVWF   Audio_Count                                                             ;
  250.         MOVWF   Audio_Reload                                                    ;
  251.         MOVLW   LOW DURATION                                                    ;
  252.         MOVWF   Audio_Dur_LO                                                    ;
  253.         MOVLW   HIGH DURATION                                                   ;
  254.         MOVWF   Audio_Dur_HI                                                    ;
  255.         BSF             Video_Status, AUDIO_ENABLED_BIT                 ;      
  256.         ;-----------------------------------------------;
  257. #ENDIF  ; (_AUDIO_ENABLED_ == TRUE)                                     ;
  258.         ENDM                                                                                    ;
  259. ;---------------------------------------------------;
  260.  
  261. ;---------------------------------------------------;
  262. ; Defines                                                                                       ;
  263. ;---------------------------------------------------;
  264.         ; 2bit DAC definitions. The 2bit DAC is just a  ;
  265.         ; pair of resistors on two GPIOs, which feeds   ;
  266.         ; the VIDEO out.                                                                ;
  267.         ;-----------------------------------------------;
  268. #IF     (_AUDIO_ENABLED_ == TRUE)                                               ;
  269. #DEFINE AUDIO                           H'02'                                   ;
  270. #DEFINE AUDIO_BIT                          1                                    ; GPIO 1 - PIN 6
  271. #ENDIF ; (_AUDIO_ENABLED_ == TRUE)                                      ;
  272.                                                                                                         ;
  273. #DEFINE VIDEO_1                         H'10'                                   ; 1K ohm
  274. #DEFINE VIDEO_1_BIT                        4                                    ; GPIO 4 - PIN 3
  275. #DEFINE VIDEO_0                         H'20'                                   ; 470 ohm
  276. #DEFINE VIDEO_0_BIT                        5                                    ; GPIO 5 - PIN 2
  277.                                                                                                         ;
  278. #DEFINE COLOR_WHITE                     (VIDEO_0 + VIDEO_1)             ;
  279. #DEFINE COLOR_BLACK                     VIDEO_1                                 ;
  280. #DEFINE COLOR_GRAY                      VIDEO_0                                 ;
  281. #DEFINE COLOR_SYNC                      0                                               ;
  282. ;---------------------------------------------------;
  283. ; Bit definitions for Video_Status                                      ;
  284. ;---------------------------------------------------;
  285. #DEFINE VERTICAL_SYNC           H'01'                                   ;
  286. #DEFINE VERTICAL_SYNC_BIT          0                                    ;
  287. #DEFINE OE_FIELD                        H'02'                                   ;
  288. #DEFINE OE_FIELD_BIT               1                                    ;
  289. #IF     (_AUDIO_ENABLED_ == TRUE)                                               ;
  290. #DEFINE AUDIO_ENABLED           H'80'                                   ;
  291. #DEFINE AUDIO_ENABLED_BIT          7                                    ;
  292. #ENDIF ; (_AUDIO_ENABLED_ == TRUE)                                      ;
  293.         ;-----------------------------------------------;
  294.                                                                                                         ;
  295.         ;-----------------------------------------------;
  296.         ; There are 192 lines created during _Data_Lines;
  297.         ; However, because of memory limitations, I             ;
  298.         ; cannot allocate enough memory for the video   ;
  299.         ; buffer. So - I do have enough memory for 48   ;
  300.         ; lines - 1/4 of 192 - so we display each line  ;
  301.         ; of data 4 times.                                                              ;
  302.         ;-----------------------------------------------;
  303. #DEFINE MAX_LINES                       48                                              ; DON'T EXCEED 48
  304.         ;-----------------------------------------------;
  305.         ; Make certain NUM_LINES is an even number so   ;
  306.         ; all of the math works out properly. Make sure ;
  307.         ; NOT to exceed the MAX_LINES value. And don't  ;
  308.         ; change NUM_LINES for less than 9 - that's the ;
  309.         ; paddle height, so that will probably break it.;
  310.         ; But then - the paddle height is adjustable    ;
  311.         ; with just changing a define (below), so - who ;
  312.         ; knows!                                                                                ;
  313.         ;-----------------------------------------------;
  314. #DEFINE NUM_LINES                       48                                              ; DON'T EXCEED 48
  315.         ;-----------------------------------------------;
  316.                                                                                                         ;
  317.         ;-----------------------------------------------;
  318.         ; Just a bunch of hardcoded starting points,    ;
  319.         ; sizes, and bit-munching stuff for the various ;
  320.         ; graphics.                                                                             ;
  321.         ;-----------------------------------------------;
  322.         ; I use the PIC's LINEAR MEMORY scheme to create;
  323.         ; a contiguous video buffer. Grab the MicroChip ;
  324.         ; documentation and read up. Then go search on  ;
  325.         ; the web for some docs that will really explain;
  326.         ; it for you.                                                                   ;
  327.         ;-----------------------------------------------;
  328. #DEFINE VIDEO_BUFFER_START      H'2030'                                 ;
  329. #DEFINE SCREEN_HEIGHT           NUM_LINES                               ;
  330. #DEFINE SCREEN_WIDTH            32      ; 4 bytes * 8 bits      ;
  331. ;---------------------------------------------------;
  332.  
  333. ;---------------------------------------------------;
  334.         IFDEF   _NTSC_INTERFACE.ASM_                                    ;
  335. ;---------------------------------------------------;
  336.         ; Global Data (in NTSC_Interface.ASM)                   ;
  337.         GLOBAL  VSync_Count                                                             ;
  338.         GLOBAL  Vid_Timing                                                              ;
  339.         GLOBAL  Video_Status                                                    ;
  340. #IF     (_AUDIO_ENABLED_ == TRUE)                                               ;
  341.         GLOBAL  Audio_Count                                                             ;
  342.         GLOBAL  Audio_Reload                                                    ;
  343.         GLOBAL  Audio_Dur_LO                                                    ;
  344.         GLOBAL  Audio_Dur_HI                                                    ;
  345. #ENDIF ; (_AUDIO_ENABLED_ == TRUE)                                      ;
  346.         ; Global Routines (in NTSC_Interface.ASM)               ;
  347.         GLOBAL  _NTSC_Initialize_Subsystem                              ;
  348.         GLOBAL  _NTSC_Video                                                             ;
  349.         GLOBAL  _BLACK_2us_SYNC_30us_LINE                               ;
  350.         GLOBAL  _BLACK_4us_SYNC_30us_LINE                               ;
  351.         GLOBAL  _INVERTED_30us_SYNC_4us_LINE                    ;
  352.         GLOBAL  _BLACK_2us_SYNC_60us_LINE                               ;
  353.         GLOBAL  _BLACK_4us_SYNC_60us_LINE                               ;
  354.         GLOBAL  _BLACK_4us_SYNC_60us_LINE_BPorch                ;
  355.         GLOBAL  _WHITE_4us_SYNC_60us_LINE                               ;
  356.         GLOBAL  _NTSC_Clear_Screen                                              ;
  357.         ; External Routines (in the user code)                  ;
  358.         EXTERN  _NTSC_Blank_Line_10                                             ;
  359.         EXTERN  _NTSC_Blank_Line_11                                             ;
  360.         EXTERN  _NTSC_Blank_Line_12                                             ;
  361.         EXTERN  _NTSC_Blank_Line_13                                             ;
  362.         EXTERN  _NTSC_Blank_Line_14                                             ;
  363.         EXTERN  _NTSC_Blank_Line_15                                             ;
  364.         EXTERN  _NTSC_Blank_Line_16                                             ;
  365.         EXTERN  _NTSC_Blank_Line_17                                             ;
  366.         EXTERN  _NTSC_Blank_Line_18                                             ;
  367.         EXTERN  _NTSC_Blank_Line_19                                             ;
  368.         EXTERN  _NTSC_Blank_Line_20                                             ;
  369.         EXTERN  _NTSC_Blank_Line_21                                             ;
  370.         EXTERN  _NTSC_Blank_Line_22                                             ;
  371.         EXTERN  _NTSC_Blank_Line_23                                             ;
  372.         EXTERN  _NTSC_Blank_Line_24                                             ;
  373.         EXTERN  _NTSC_Blank_Line_25                                             ;
  374.         EXTERN  _NTSC_Blank_Line_26                                             ;
  375.         EXTERN  _NTSC_Blank_Line_27                                             ;
  376.         EXTERN  _NTSC_Blank_Line_28                                             ;
  377.         EXTERN  _NTSC_Blank_Line_29                                             ;
  378.         EXTERN  _NTSC_Blank_Line_30                                             ;
  379.         EXTERN  _NTSC_Blank_Line_31                                             ;
  380.         EXTERN  _NTSC_Blank_Line_32                                             ;
  381.         EXTERN  _NTSC_Blank_Line_33                                             ;
  382.         EXTERN  _NTSC_Blank_Line_34                                             ;
  383.         EXTERN  _NTSC_Blank_Line_35                                             ;
  384.         EXTERN  _NTSC_Blank_Line_36                                             ;
  385.         EXTERN  _NTSC_Blank_Line_37                                             ;
  386.         EXTERN  _NTSC_Blank_Line_38                                             ;
  387.         EXTERN  _NTSC_Blank_Line_39                                             ;
  388.         EXTERN  _NTSC_Blank_Line_40                                             ;
  389.         EXTERN  _NTSC_Blank_Line_41                                             ;
  390.         EXTERN  _NTSC_Blank_Line_42                                             ;
  391.         EXTERN  _NTSC_Blank_Line_43                                             ;
  392.         EXTERN  _NTSC_Blank_Line_44                                             ;
  393.         EXTERN  _NTSC_Blank_Line_237                                    ;
  394.         EXTERN  _NTSC_Blank_Line_238                                    ;
  395.         EXTERN  _NTSC_Blank_Line_239                                    ;
  396.         EXTERN  _NTSC_Blank_Line_240                                    ;
  397.         EXTERN  _NTSC_Blank_Line_241                                    ;
  398.         EXTERN  _NTSC_Blank_Line_242                                    ;
  399.         EXTERN  _NTSC_Blank_Line_243                                    ;
  400.         EXTERN  _NTSC_Blank_Line_244                                    ;
  401.         EXTERN  _NTSC_Blank_Line_245                                    ;
  402.         EXTERN  _NTSC_Blank_Line_246                                    ;
  403.         EXTERN  _NTSC_Blank_Line_247                                    ;
  404.         EXTERN  _NTSC_Blank_Line_248                                    ;
  405.         EXTERN  _NTSC_Blank_Line_249                                    ;
  406.         EXTERN  _NTSC_Blank_Line_250                                    ;
  407.         EXTERN  _NTSC_Blank_Line_251                                    ;
  408.         EXTERN  _NTSC_Blank_Line_252                                    ;
  409.         EXTERN  _NTSC_Blank_Line_253                                    ;
  410.         EXTERN  _NTSC_Blank_Line_254                                    ;
  411.         EXTERN  _NTSC_Blank_Line_255                                    ;
  412.         EXTERN  _NTSC_Blank_Line_256                                    ;
  413.         EXTERN  _NTSC_Blank_Line_257                                    ;
  414.         EXTERN  _NTSC_Blank_Line_258                                    ;
  415.         EXTERN  _NTSC_Blank_Line_259                                    ;
  416.         EXTERN  _NTSC_Blank_Line_260                                    ;
  417.         EXTERN  _NTSC_Blank_Line_261                                    ;
  418.         EXTERN  _NTSC_Blank_Line_262                                    ;
  419. ;---------------------------------------------------;
  420.         ELSE                                                                                    ;
  421. ;---------------------------------------------------;
  422.         ; External Data (in NTSC_Interface.ASM)                 ;
  423.         EXTERN  VSync_Count                                                             ;
  424.         EXTERN  Vid_Timing                                                              ;
  425.         EXTERN  Video_Status                                                    ;
  426. #IF     (_AUDIO_ENABLED_ == TRUE)                                               ;
  427.         EXTERN  Audio_Count                                                             ;
  428.         EXTERN  Audio_Reload                                                    ;
  429.         EXTERN  Audio_Dur_LO                                                    ;
  430.         EXTERN  Audio_Dur_HI                                                    ;
  431. #ENDIF ; (_AUDIO_ENABLED_ == TRUE)                                      ;
  432.         ; External Routines (in NTSC_Interface.ASM)             ;
  433.         EXTERN  _NTSC_Initialize_Subsystem                              ;
  434.         EXTERN  _NTSC_Video                                                             ;
  435.         EXTERN  _NTSC_Clear_Screen                                              ;
  436.         EXTERN  _BLACK_2us_SYNC_30us_LINE                               ;
  437.         EXTERN  _BLACK_4us_SYNC_30us_LINE                               ;
  438.         EXTERN  _INVERTED_30us_SYNC_4us_LINE                    ;
  439.         EXTERN  _BLACK_2us_SYNC_60us_LINE                               ;
  440.         EXTERN  _BLACK_4us_SYNC_60us_LINE                               ;
  441.         EXTERN  _BLACK_4us_SYNC_60us_LINE_BPorch                ;
  442.         EXTERN  _WHITE_4us_SYNC_60us_LINE                               ;
  443.         ; Global Routines (in the user code)                    ;
  444.         GLOBAL  _NTSC_Blank_Line_10                                             ;
  445.         GLOBAL  _NTSC_Blank_Line_11                                             ;
  446.         GLOBAL  _NTSC_Blank_Line_12                                             ;
  447.         GLOBAL  _NTSC_Blank_Line_13                                             ;
  448.         GLOBAL  _NTSC_Blank_Line_14                                             ;
  449.         GLOBAL  _NTSC_Blank_Line_15                                             ;
  450.         GLOBAL  _NTSC_Blank_Line_16                                             ;
  451.         GLOBAL  _NTSC_Blank_Line_17                                             ;
  452.         GLOBAL  _NTSC_Blank_Line_18                                             ;
  453.         GLOBAL  _NTSC_Blank_Line_19                                             ;
  454.         GLOBAL  _NTSC_Blank_Line_20                                             ;
  455.         GLOBAL  _NTSC_Blank_Line_21                                             ;
  456.         GLOBAL  _NTSC_Blank_Line_22                                             ;
  457.         GLOBAL  _NTSC_Blank_Line_23                                             ;
  458.         GLOBAL  _NTSC_Blank_Line_24                                             ;
  459.         GLOBAL  _NTSC_Blank_Line_25                                             ;
  460.         GLOBAL  _NTSC_Blank_Line_26                                             ;
  461.         GLOBAL  _NTSC_Blank_Line_27                                             ;
  462.         GLOBAL  _NTSC_Blank_Line_28                                             ;
  463.         GLOBAL  _NTSC_Blank_Line_29                                             ;
  464.         GLOBAL  _NTSC_Blank_Line_30                                             ;
  465.         GLOBAL  _NTSC_Blank_Line_31                                             ;
  466.         GLOBAL  _NTSC_Blank_Line_32                                             ;
  467.         GLOBAL  _NTSC_Blank_Line_33                                             ;
  468.         GLOBAL  _NTSC_Blank_Line_34                                             ;
  469.         GLOBAL  _NTSC_Blank_Line_35                                             ;
  470.         GLOBAL  _NTSC_Blank_Line_36                                             ;
  471.         GLOBAL  _NTSC_Blank_Line_37                                             ;
  472.         GLOBAL  _NTSC_Blank_Line_38                                             ;
  473.         GLOBAL  _NTSC_Blank_Line_39                                             ;
  474.         GLOBAL  _NTSC_Blank_Line_40                                             ;
  475.         GLOBAL  _NTSC_Blank_Line_41                                             ;
  476.         GLOBAL  _NTSC_Blank_Line_42                                             ;
  477.         GLOBAL  _NTSC_Blank_Line_43                                             ;
  478.         GLOBAL  _NTSC_Blank_Line_44                                             ;
  479.         GLOBAL  _NTSC_Blank_Line_237                                    ;
  480.         GLOBAL  _NTSC_Blank_Line_238                                    ;
  481.         GLOBAL  _NTSC_Blank_Line_239                                    ;
  482.         GLOBAL  _NTSC_Blank_Line_240                                    ;
  483.         GLOBAL  _NTSC_Blank_Line_241                                    ;
  484.         GLOBAL  _NTSC_Blank_Line_242                                    ;
  485.         GLOBAL  _NTSC_Blank_Line_243                                    ;
  486.         GLOBAL  _NTSC_Blank_Line_244                                    ;
  487.         GLOBAL  _NTSC_Blank_Line_245                                    ;
  488.         GLOBAL  _NTSC_Blank_Line_246                                    ;
  489.         GLOBAL  _NTSC_Blank_Line_247                                    ;
  490.         GLOBAL  _NTSC_Blank_Line_248                                    ;
  491.         GLOBAL  _NTSC_Blank_Line_249                                    ;
  492.         GLOBAL  _NTSC_Blank_Line_250                                    ;
  493.         GLOBAL  _NTSC_Blank_Line_251                                    ;
  494.         GLOBAL  _NTSC_Blank_Line_252                                    ;
  495.         GLOBAL  _NTSC_Blank_Line_253                                    ;
  496.         GLOBAL  _NTSC_Blank_Line_254                                    ;
  497.         GLOBAL  _NTSC_Blank_Line_255                                    ;
  498.         GLOBAL  _NTSC_Blank_Line_256                                    ;
  499.         GLOBAL  _NTSC_Blank_Line_257                                    ;
  500.         GLOBAL  _NTSC_Blank_Line_258                                    ;
  501.         GLOBAL  _NTSC_Blank_Line_259                                    ;
  502.         GLOBAL  _NTSC_Blank_Line_260                                    ;
  503.         GLOBAL  _NTSC_Blank_Line_261                                    ;
  504.         GLOBAL  _NTSC_Blank_Line_262                                    ;
  505. ;---------------------------------------------------;
  506.         ENDIF                                                                                   ;
  507. ;---------------------------------------------------;
RAW Paste Data
Top