;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Copyright (c) 2002 TIMEX Corporation.
; 
; This document is the property of, and contains information proprietary to
; TIMEX Corporation.  It is to be returned upon request.  Reproduction by any
; means, disclosure, or use of its contents for other than the expressed
; purpose for which it is loaned, without the written consent of TIMEX
; Corporation, is strictly prohibited.
;
; File Name    : demodisp.asm
; Purpose      : demo application display routines
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        IF @DEF('SUBROUTINE')
            UNDEF SUBROUTINE
        ENDIF
        DEFINE  SUBROUTINE      "'demo_generic_display'"


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Module Name : demoDisplayScreen
; Description : 
; Assumptions : None
; Input(s)    : None
; Output(s)   : None
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GLOBAL  demoDisplayScreen

demoDisplayScreen:

                ld      A, [DEMOScreenIndex]
                ld      L, #2
                mlt
                add     HL, #demoScreensFunctionsListTable
                ld      HL, [HL]
                jp      HL

demoScreensFunctionsListTable:

                dw  demoDisplayIronman                      ;ironman
                dw  demoDisplayNothing                      ;do nothing (blank)
                dw  demoLCDDriveOn							;ironman (no screen repaint, just display)
                dw  demoDisplayNothing                      ;do nothing (blank)
                dw  demoDisplayMessage_USBDATALINK          ;usb datalink
                dw  demoDisplayNothing                      ;blank
                dw  demoLCDDriveOn							;usb datalink (no screen repaint, just display)
                dw  demoDisplayNothing                      ;do nothing (blank)
                dw  demoDisplayMessage_SENDDATA             ;send data
                dw  demoDisplayMessage_GETDATA              ;get data
                dw  demoDisplayMessage_TIMEDATE             ;time date
                dw  demoDisplayTODData_1                    ;tod data main screen
                dw  demoDisplayTODData_2                    ;tod update seconds to 37
                dw  demoDisplayTODData_3                    ;tod update seconds to 38
                dw  demoDisplayTODData_4                    ;tod update seconds to 39
                dw  demoDisplayMessage_3TIMEZONES           ;3 timezones
                dw  demoDisplayMessage_CHRONO               ;chrono
                dw  demoDisplayMessage_MEMORY200LAPS        ;memory 200 laps
                dw  demoDisplayMessage_WORKOUTSTORAGE       ;workout storage
                dw  demoDisplayMessage_COUNTDOWNTIMER       ;countdown timer
                dw  demoDisplayMessage_INTERVALTIMER        ;interval timer
                dw  demoDisplayMessage_ALARMAPPTS           ;alarms appts
                dw  demoDisplayMessage_CONTACTSNOTES        ;contacts notes
                dw  demoDisplayMessage_SCROLLINGMESSAGES    ;scrolling messages
                dw  demoDisplayScrollData_1                 ;appointment
                dw  demoDisplayScrollData_2                 ;appt scroll 1 pixel
                dw  demoDisplayScrollData_3                 ;appt scroll 1 pixel
                dw  demoDisplayMessage_CUSTOMFEATURES       ;custom features
                dw  demoDisplayClear                        ;blank


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Module Name : demoDisplayClear
; Description : 
; Assumptions : None
; Input(s)    : None
; Output(s)   : None
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GLOBAL  demoDisplayClear

demoDisplayClear:

                ;LCD_CLR_DISPLAY
				LCD_CLEAR_MAIN_DM

				;!!! FALL THROUGH TO demoDisplayNothing for RET instruction !!!

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Module Name : demoDisplayNothing
; Description : 
; Assumptions : None
; Input(s)    : None
; Output(s)   : None
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GLOBAL  demoDisplayNothing

demoDisplayNothing:

                ret


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Module Name : demoDisplayIronman
; Description : 
; Assumptions : None
; Input(s)    : None
; Output(s)   : None
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GLOBAL  demoDisplayIronman

demoDisplayIronman:

                ; init number of columns to display
                ld      B,  #(demoIronmanPatternEnd - demoIronmanPattern)    ; /2 ;display from both sidez

                ; init the starting pixel column to display
                ld      L,  #1
                ; init the base address of the pixel pattern
                ld      IY, #demoIronmanPattern

				; setup other side of bitmap pattern
				;ld		IX, #demoIronmanPatternEnd-1
				;ld		H,  #(demoIronmanPatternEnd-demoIronmanPattern)

demoDisplayNextPattern:

                ; load 8-bit pattern to display
                ld      A, [IY]

                ; display the pattern
                car     demoDisplayColumn

				; display from both sides
				;push	L
				;ld		A, [IX]
				;ld		L, H
                ;car     demoDisplayColumn
				;pop		L
				;dec		H
				;dec		IX

                ; point to the next column position and next pattern
                inc     L
                inc     IY
                djr     NZ, demoDisplayNextPattern
				jr		demoLCDDriveOn



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Module Name : demoDisplayTODData_1
; Description : 
; Assumptions : None
; Input(s)    : None
; Output(s)   : None
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GLOBAL  demoDisplayTODData_1

demoDisplayTODData_1:


                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                ; display month and date
                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

                ; Display dash between month and date.
                LCD_UPD_DASH2_FLAG  ON

                ; Display date at segment 56.
                ld      A, #DEMOTODDATE
                ld      IX, #LCDSEGDIGIT5
                LCD_DISP_2DIG_SEG_DATA_NO_ZERO_SUP

                ; Display month at segment 34.
                ld      A, #DEMOTODMONTH
                ld      IX, #LCDSEGDIGIT3
                LCD_DISP_2DIG_SEG_DATA_SUP_ZERO_MSD


                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                ; display day of week 
                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

                ; display DOW
                ld      A, #DEMOTODDOW
                UTL_DISPLAY_DAY_OF_WEEK


                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                ; display hour
                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

                ; Display hour using large fonts.
                ld      A, #DEMOTODHOUR
                ld      IX, #TODLDMPOSITIONHOUR
                LCD_DISP_BIG_2DIGIT_DM_DATA_SUP_ZERO_MSD

                ; Display colon.
                ld      L, #DM8_COLON
                ld      IX, #TODLDMPOSITIONCOLON
                LCD_DISP_BIG_DM_CHAR

                ; Display PM
                LCD_DISP_MAIN_DM_PM_FOR_TOD


                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                ; display minute
                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

                ; Display minute using large font.
                ld      A, #DEMOTODMINUTE
                ld      IX, #TODLDMPOSITIONMINUTE
                LCD_DISP_BIG_2DIGIT_DM_DATA_NO_ZERO_SUP


                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                ; display seconds
                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

                ; Display second using small font.
                ld      A, #DEMOTODSECOND
                ld      [demoTODSecond], A
                ld      IX, #TODLDMPOSITIONSECOND
                LCD_DISP_SMALL_PROP_WIDTH_2DIG_DM_DATA_NO_ZERO_SUP


                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                ; display icons stopwatch and alarm clock
                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

                LCD_UPD_ACLK_FLAG ON
                LCD_UPD_CHR_FLAG ON

				jr		demoLCDDriveOn


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Module Name : demoDisplayTODData_2
; Module Name : demoDisplayTODData_3
; Module Name : demoDisplayTODData_4
; Description : 
; Assumptions : None
; Input(s)    : None
; Output(s)   : None
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GLOBAL  demoDisplayTODData_2
        GLOBAL  demoDisplayTODData_3
        GLOBAL  demoDisplayTODData_4

demoDisplayTODData_2:
demoDisplayTODData_3:
demoDisplayTODData_4:

				LCD_NORM_DISPLAY

                ; Display second using small font.
				ld		HL, #demoTODSecond
				inc		[HL]
				ld		A, [HL]
                ld      IX, #TODLDMPOSITIONSECOND
                LCD_DISP_SMALL_PROP_WIDTH_2DIG_DM_DATA_NO_ZERO_SUP
				jr		demoLCDDriveOn



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Module Name : demoDisplayScrollData_1
; Description : 
; Assumptions : None
; Input(s)    : None
; Output(s)   : None
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GLOBAL  demoDisplayScrollData_1

demoDisplayScrollData_1:

                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                ; display the first day of occurrence 
                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

                ld      IY,     #demoAPPTDataStructure_Date
                UTL_DISPLAY_DATE_COMPLETE_AND_DOW

                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                ; Display Time
                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

                ld      HL,     #demoAPPTDataStructure_Minute
                UTL_DISPLAY_HR_MIN_DATA_L1

                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                ; Display the Icon
                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

                LCD_UPD_ACLK_FLAG ON

                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                ; Display scrolling character and pause
                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

                ld      IY,     #demoAPPTMessage
                LCD_SCROLL_RAM_OR_ROM_MSG_MAIN_DM_LINE2   EVENT_OFF
                LCD_PAUSE_SCROLLING

				jr		demoLCDDriveOn


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Module Name : demoDisplayScrollData_2
; Module Name : demoDisplayScrollData_3
; Description : 
; Assumptions : None
; Input(s)    : None
; Output(s)   : None
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GLOBAL  demoDisplayScrollData_2
        GLOBAL  demoDisplayScrollData_3

demoDisplayScrollData_2:
demoDisplayScrollData_3:

				LCD_NORM_DISPLAY

                ; scroll forward by 1 pixel columns for each pulse
                ld      A, #1
                LCD_SCROLL_MSG_LEFT
				jr		demoLCDDriveOn


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Module Name : demoDisplayMessage_USBDATALINK
; Description : 
; Assumptions : None
; Input(s)    : None
; Output(s)   : None
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GLOBAL  demoDisplayMessage_USBDATALINK

demoDisplayMessage_USBDATALINK:

                ld      IY, #demoBannerMsg_USBDATALINK

demoDisplayMessage:

                LCD_DISP_BANNER_MSG
				jr		demoLCDDriveOn


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Module Name : demoDisplayMessage_SENDDATA
; Description : 
; Assumptions : None
; Input(s)    : None
; Output(s)   : None
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GLOBAL  demoDisplayMessage_SENDDATA

demoDisplayMessage_SENDDATA:

                ld      IY, #demoBannerMsg_SENDDATA
                jr      demoDisplayMessage



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Module Name : demoDisplayMessage_GETDATA
; Description : 
; Assumptions : None
; Input(s)    : None
; Output(s)   : None
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GLOBAL  demoDisplayMessage_GETDATA

demoDisplayMessage_GETDATA:

                ld      IY, #demoBannerMsg_GETDATA
                jr      demoDisplayMessage



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Module Name : demoDisplayMessage_TIMEDATE
; Description : 
; Assumptions : None
; Input(s)    : None
; Output(s)   : None
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GLOBAL  demoDisplayMessage_TIMEDATE

demoDisplayMessage_TIMEDATE:

                ld      IY, #demoBannerMsg_TIMEDATE
                jr      demoDisplayMessage




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Module Name : demoDisplayMessage_3TIMEZONES
; Description : 
; Assumptions : None
; Input(s)    : None
; Output(s)   : None
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GLOBAL  demoDisplayMessage_3TIMEZONES

demoDisplayMessage_3TIMEZONES:

                ld      IY, #demoBannerMsg_3TIMEZONES
                jr      demoDisplayMessage



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Module Name : demoDisplayMessage_CHRONO
; Description : 
; Assumptions : None
; Input(s)    : None
; Output(s)   : None
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GLOBAL  demoDisplayMessage_CHRONO

demoDisplayMessage_CHRONO:

                ld      IY, #lcdBannerMsg_CHRONO
                jr      demoDisplayMessage



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Module Name : demoDisplayMessage_MEMORY200LAPS
; Description : 
; Assumptions : None
; Input(s)    : None
; Output(s)   : None
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GLOBAL  demoDisplayMessage_MEMORY200LAPS

demoDisplayMessage_MEMORY200LAPS:

                ld      IY, #demoBannerMsg_MEMORY200LAPS
                jr      demoDisplayMessage



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Module Name : demoDisplayMessage_WORKOUTSTORAGE
; Description : 
; Assumptions : None
; Input(s)    : None
; Output(s)   : None
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GLOBAL  demoDisplayMessage_WORKOUTSTORAGE

demoDisplayMessage_WORKOUTSTORAGE:

                ld      IY, #demoBannerMsg_WORKOUTSTORAGE
                jr      demoDisplayMessage



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Module Name : demoDisplayMessage_COUNTDOWNTIMER
; Description : 
; Assumptions : None
; Input(s)    : None
; Output(s)   : None
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GLOBAL  demoDisplayMessage_COUNTDOWNTIMER

demoDisplayMessage_COUNTDOWNTIMER:

                ld      IY, #lcdBannerMsg_COUNTDN_TIMER
                jr      demoDisplayMessage



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Module Name : demoDisplayMessage_INTERVALTIMER
; Description : 
; Assumptions : None
; Input(s)    : None
; Output(s)   : None
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GLOBAL  demoDisplayMessage_INTERVALTIMER

demoDisplayMessage_INTERVALTIMER:

                ld      IY, #lcdBannerMsg_INTERVAL_TIMER
                jr      demoDisplayMessage



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Module Name : demoDisplayMessage_ALARMAPPTS
; Description : 
; Assumptions : None
; Input(s)    : None
; Output(s)   : None
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GLOBAL  demoDisplayMessage_ALARMAPPTS

demoDisplayMessage_ALARMAPPTS:

                ld      IY, #demoBannerMsg_ALARMSAPPTS
                jr      demoDisplayMessage



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Module Name : demoDisplayMessage_CONTACTSNOTES
; Description : 
; Assumptions : None
; Input(s)    : None
; Output(s)   : None
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GLOBAL  demoDisplayMessage_CONTACTSNOTES

demoDisplayMessage_CONTACTSNOTES:

                ld      IY, #demoBannerMsg_CONTACTSNOTES
                jr      demoDisplayMessage



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Module Name : demoDisplayMessage_SCROLLINGMESSAGES
; Description : 
; Assumptions : None
; Input(s)    : None
; Output(s)   : None
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GLOBAL  demoDisplayMessage_SCROLLINGMESSAGES

demoDisplayMessage_SCROLLINGMESSAGES:

                ld      IY, #demoBannerMsg_SCROLLINGMESSAGES
                jr      demoDisplayMessage



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Module Name : demoDisplayMessage_CUSTOMFEATURES
; Description : 
; Assumptions : None
; Input(s)    : None
; Output(s)   : None
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GLOBAL  demoDisplayMessage_CUSTOMFEATURES

demoDisplayMessage_CUSTOMFEATURES:

                ld      IY, #demoBannerMsg_CUSTOMFEATURES
                jr      demoDisplayMessage


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Module Name : demoDisplayColumn
; Description : 
; Assumptions : None
; Input(s)    : None
; Output(s)   : None
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GLOBAL  demoDisplayColumn

demoDisplayColumn:

                ;L = column to display
                ;A = 8-bit pattern

                push    ALL

                ld      [TempColumn], L
                ld      [TempPattern], A

				; special code here
                ; display the head of the ironman pattern
				cp		L, #23
				jr		Z, demoSpecialPixel
				cp		L, #24
				jr		NZ, demoDispColumnContinue

demoSpecialPixel:
                ld      B, #IRONMANPOSITION0-1
				ld		A, L
                LCD_DISPLAY_MAIN_DM_PIXEL

demoDispColumnContinue:

                ; display pixel at row 4
                ld      B, #IRONMANPOSITION0+0
                car     tskDisplayPixel

                ; display pixel at row 5
                ld      B, #IRONMANPOSITION0+1
                car     tskDisplayPixel

                ; display pixel at row 6
                ld      B, #IRONMANPOSITION0+2
                car     tskDisplayPixel

                ; display pixel at row 7
                ld      B, #IRONMANPOSITION0+3
                car     tskDisplayPixel

                ; display pixel at row 8
                ld      B, #IRONMANPOSITION0+4
                car     tskDisplayPixel

                ; display pixel at row 9
                ld      B, #IRONMANPOSITION0+5
                car     tskDisplayPixel

                ; display pixel at row 10
                ld      B, #IRONMANPOSITION0+6
                car     tskDisplayPixel

                ; display pixel at row 11
                ld      B, #IRONMANPOSITION0+7
                car     tskDisplayPixel

                pop     ALL
                ret


tskDisplayPixel:
                ld      A, [TempColumn]
                ld      HL, #TempPattern
				srl		[HL]
                jr      NC, tskPixelOff

tskPixelOn:     
                LCD_DISPLAY_MAIN_DM_PIXEL
                ret

tskPixelOff:    
                LCD_CLEAR_MAIN_DM_PIXEL
                ret




		GLOBAL demoLCDDriveOn
demoLCDDriveOn:

                ;and     [BR:@LOW(OutPortR1)], #@LOW(~bR14)
				LCD_SET_NORMAL_CONTRAST
				LCD_NORM_DISPLAY
				ret