Site Map | Contact Info | Home  
  
 Home
 Products
 ROMHACK Toolbox
 Ordering Info
 Code Disassembly
  Bega's Battle
  Cliffhanger
  Thayer's Quest
 My Gameroom
 Links

 

 

Page1

Page2

Page3

Page4

Page5

Page6

;----------------------------------------------------
;                      Return
;----------------------------------------------------
        RET                     ; Return


;----------------------------------------------------
;                      Return
;----------------------------------------------------
        RET                     ; Return




;----------------------------------------------------
;        Compact High Score Tables and Reset Data
;----------------------------------------------------
L0FF9:  CALL    L1003           ; Compact All-Time High Score Table
        CALL    L1074           ; Compact Today's High Score Table
        CALL    L1627           ; Reset Bookkeeping Data
        RET                     ; Return





;----------------------------------------------------
;  Remove empty slots from All-Time High Score Table 
;----------------------------------------------------
L1003:  LD      HL,0E000h       ; HL = Start of All-Time High Scores
        LD      IY,0E000h       ; IY = Start of All-Time High Scores
        LD      DE,00008h       ; Number of bytes in High Score
        LD      C,00Ah          ; Loop = 10 scores
L100F:  LD      B,008h          ; 8 bytes to sum
        CALL    L110C           ; Calculate Sum of bytes
        CP      0FFh            ; Check if slot is blank
        JR      NZ,L101E        ; Blank slot found so remove it       
        ADD     IY,DE           ; Point to next score
        DEC     C               ; Decrement Loop
        JR      NZ,L100F        ; Loop until all scores checked
        RET                     ; Return
;----------------------------------------------------
;                 Remove empty slot 
;----------------------------------------------------
L101E:  CALL    L1023           ; Erase empty slot
        JR      L1003           ; Recheck all slots       








;----------------------------------------------------
;                 Initials
;----------------------------------------------------
;         IY  Pointer within High Score
;----------------------------------------------------
L1023:  PUSH    BC              ; Save BC Register
        PUSH    DE              ; Save DE Register
        PUSH    HL              ; Save HL Register
        PUSH    IY              ; Save IY Register
        PUSH    IY              ; Copy IY
        POP     DE              ; DE = High Score pointer
        LD      HL,0E050h       ; HL = Start of Initials
        AND     A               ; Clear carry
        SBC     HL,DE           
        LD      DE,00008h       ;
        SBC     HL,DE           ;
        INC     HL              ;
        LD      B,H             ;
        LD      C,L             ;
        PUSH    IY              ;
        POP     HL              ; Restore HL Register
        ADD     HL,DE           ;
        PUSH    IY              ;
        POP     DE              ;
        LDIR                    ;
        LD      IY,0E048h       ; 10th High Score
        LD      A,055h          ; "U"
        LD      (IY+000h),A     ;
        LD      A,052h          ; "R"
        LD      (IY+001h),A     ;
        LD      A,04Ch          ; "L"
        LD      (IY+002h),A     ;
        XOR     A               ; A = 00
        LD      (IY+003h),A     ;
        LD      (IY+004h),A     ;
        LD      (IY+005h),A     ;
        LD      (IY+006h),A     ;
        LD      B,007h          ; 7 bytes to sum
        LD      HL,0E048h       ; Sum 10th High Score
        CALL    L110C           ; Calculate Sum of bytes
        CPL                     ;
        LD      (IY+007h),A     ;
        POP     IY              ; Restore IY Register
        POP     HL              ; Restore HL Register
        POP     DE              ; Restore DE Register
        POP     BC              ; Restore BC Register
        RET                     ; Return







;----------------------------------------------------
;  Remove empty slots from Today's High Score Table
;----------------------------------------------------
L1074:  LD      HL,0E050h       ; HL = Start of Today's High Scores
        LD      IY,0E050h       ; IY = Start of Today's High Scores;
        LD      DE,00008        ; Number of bytes in High Score
        LD      C,00Ah          ; 10 slots to check
L1080:  LD      B,008h          ; 8 bytes in each slot to sum
        CALL    L110C           ; Calculate Sum of bytes
        CP      0FFh            ; Check if slot is blank
        JR      NZ,L108F        ; Blank slot found so remove it
        ADD     IY,DE           ; Point to next score
        DEC     C               ; Decrement Loop
        JR      NZ,L1080        ; Loop until all scores checked       
        RET                     ; Return
;----------------------------------------------------
;                 Remove empty slot 
;----------------------------------------------------
L108F:  CALL    L1094           ; Remove empty slot
        JR      L1074           ; Continue checking scores





;----------------------------------------------------
;          Move all High Scores up one notch
;----------------------------------------------------
;       IY = High Score to change (E050,E058,...)
;----------------------------------------------------
L1094:  PUSH    BC              ; Save BC Register
        PUSH    DE              ; Save DE Register
        PUSH    HL              ; Save HL Register
        PUSH    IY              ; Save IY Register

        PUSH    IY              ; Move IY...
        POP     DE              ; ...into DE
        LD      HL,0E0A0h       ; Point to last high score
        AND     A               ; Clear carry
        SBC     HL,DE           ; Subtract back from last score
        LD      DE,00008h       ;
        SBC     HL,DE
        INC     HL
        LD      B,H
        LD      C,L
        PUSH    IY
        POP     HL              ; Restore HL Register
        ADD     HL,DE
        PUSH    IY
        POP     DE
        LDIR   
;----------------------------------------------------
;   Save "URL 00000" into last high score position
;----------------------------------------------------
        LD      IY,0E098h       ; Point to last position
        LD      A,055h          ; "U"
        LD      (IY+000h),A
        LD      A,052h          ; "R"
        LD      (IY+001h),A
        LD      A,04Ch          ; "L"
        LD      (IY+002h),A
        XOR     A               ; A = 00
        LD      (IY+003h),A
        LD      (IY+004h),A
        LD      (IY+005h),A
        LD      (IY+006h),A
        LD      B,007h          ; 7 bytes to sum
        LD      HL,0E098h
        CALL    L110C           ; Calculate Sum of bytes
        CPL     
        LD      (IY+007h),A

        POP     IY              ; Restore IY Register
        POP     HL              ; Restore HL Register
        POP     DE              ; Restore DE Register
        POP     BC              ; Restore BC Register
        RET                     ; Return







;----------------------------------------------------
;            Calculate Sum of Plays:
;----------------------------------------------------
;   E0A0 - E0A2   Total Plays
;   E0A3 - E0A4   Left Coin Slot Total
;   E0A5 - E0A6   Right Coin Slot Total
;----------------------------------------------------
L10E5:  LD      B,007h          ; 7 bytes to sum
        LD      HL,0E0A0h       ; Sum bytes E0A0 - E0A6
        JR      L1106           ; Calculate sum of bytes






;----------------------------------------------------
;       Calculate Sum of Play Times:
;----------------------------------------------------
;   E0A8 - E0AA   Total Play Time Seconds
;   E0AB - E0AD   Longest Game Seconds
;   E0AE          Shortest Game Seconds
;   E0AF          Highest Scene
;----------------------------------------------------
L10EC:  LD      B,008h          ; 8 bytes to sum
        LD      HL,0E0A8h       ; Sum bytes E0A8 thru E0AF
        JR      L1106           ; Calculate sum of bytes






;----------------------------------------------------
;          Calculate Sum of ----
;----------------------------------------------------
L10F3:  LD      B,01Eh          ; Sum 30 values
        LD      HL,0E0B1h       
        JR      L1106           ;       

L10FA:  LD      B,01Eh          ; Sum 30 values
        LD      HL,0E0D0h       ;
        JR      L1106           ;       




L1101:  LD      B,01Eh
        LD      HL,0E0EFh
;----------------------------------------------------
;      Calculate Sum of HL + (HL+1) + ... + (HL+B)
;----------------------------------------------------
;         B = Number of bytes to sum
;        HL = Starting Location of byte
;----------------------------------------------------
L1106:  CALL    L110C           ; Call Calculate sum
        CPL                     ; Reverse all bits
        LD      (HL),A          ; Store sum (HL+B)
        RET                     ; Return





;----------------------------------------------------
;             Calculate Sum of Data Series
;----------------------------------------------------     
;       B = Number of bytes to sum
;      HL = Starting Location of byte
;       A = Return Total
;----------------------------------------------------
L110C:  XOR     A               ; Clear total
L110D:  ADD     A,(HL)          ; Add contents of HL
        INC     HL              ; Point to next location
        DJNZ    L110D           ; Loop until all bytes summed
        RET                     ; Return





;----------------------------------------------------
;     Top Ten High Scores and Initials at startup
;----------------------------------------------------   
L1112:  .TEXT  "JMH"
        .DB    0,1,0,0,0
L111A:  .TEXT  "PMR"
        .DB    0,0,9,0,0
L1122:  .TEXT  "EJM"
        .DB    0,0,8,0,0
L112A:  .TEXT  "APH"
        .DB    0,0,7,0,0
L1132:  .TEXT  "VAV"
        .DB    0,0,6,0,0
L113A:  .TEXT  "MAS"
        .DB    0,0,5,0,0
L1142:  .TEXT  "JON"
        .DB    0,0,4,0,0
L114A:  .TEXT  "WHO"
        .DB    0,0,3,0,0   
L1152:  .TEXT  "HP?"
        .DB    0,0,2,0,0
L115A:  .TEXT  "JIM"
        .DB    0,0,1,0,0



       




;----------------------------------------------------
;               Check Coin Slots
;----------------------------------------------------
L1162:  LD      HL,(0E127h)     ; Get temp Add/Subtract location
        PUSH    HL              ; Save it before entering this routine
        LD      DE,(0E129h)     ; Get temp Add/Subtract location
        PUSH    DE              ; Save it before entering this routine
        LD      DE,L0000        ; DE = 00000h
        LD      (0E127h),DE     ; Erase Temp Add/Subtract location
        LD      (0E129h),DE     ; Erase Temp Add/Subtract location
        LD      HL,0E1A1h       ; HL = Coins Inserted Left
        LD      A,(0E192h)      ; Get Button Data
;----------------------------------------------------
;           Check Left Coin Slot 
;----------------------------------------------------
        BIT     0,A             ; Test Left Coin Slot
        JR      Z,L1193         ; No Coins so skip ahead       
;----------------------------------------------------
;         Coin Inserted in Left Slot
;----------------------------------------------------
        RES     0,A             ; Clear Left Coin Slot
        EX      AF,AF'          ; Save Button Data
        INC     (HL)            ; Increment Coins Inserted Left
        LD      DE,0E0A4h       ; Get Left Coin Count (Ones)
        LD      A,001h          ; A = 1
        LD      (0E12Ah),A      ; Put 1 Coin
        CALL    L0FB0           ; Call 2-digit BCD Addition
        RET                     ; Return

        CALL    L10E5           ; Sum Total Coins
        EX      AF,AF'          ; Recall Button Data
L1193:  LD      HL,0E1A2h       ; HL = Get Coins Inserted Right
;----------------------------------------------------
;            Check Right Coin Slot 
;----------------------------------------------------
        BIT     1,A             ; Test Right Coin Slot
        JR      Z,L11AD         ; No Coins so skip ahead       
;----------------------------------------------------
;         Coin Inserted in Right Slot
;----------------------------------------------------
        RES     1,A             ; Clear Right Coin Slot
        EX      AF,AF'          ; Save Button Data
        INC     (HL)            ; Increment Coins Inserted Right
        LD      DE,0E0A6h       ; Get Right Coin Count (Ones)
        LD      A,001h          ; A = 1
        LD      (0E12Ah),A      ; Put 1 Coin
        CALL    L0FB0           ; Call 2-digit BCD Addition 
        CALL    L10E5           ; Sum Total Coins
        EX      AF,AF'          ; Recall Button Data

L11AD:  LD      (0E192h),A      ; Save Button Data
        CALL    L11C0           ; Award Credits for Coins
        CALL    L1254           ;
        POP     DE              ; Get temp Add/Subtract location
        LD      (0E129h),DE     ; Restore Add/Subtract location
        POP     HL              ; Get temp Add/Subtract location
        LD      (0E127h),HL     ; Restore Add/Subtract location
        RET                     ; Return







;----------------------------------------------------
;   Check DIP Settings and Award Credits for Coins
;----------------------------------------------------
;                 24   25   Right
;                 20   21   Left
;                 -------------------
;                 OFF  OFF    2 Coins
;                 ON   OFF    2 Coins
;                 OFF  ON     3 Coins
;                 ON   ON     4 Coins
;----------------------------------------------------
L11C0:  LD      DE,0E1A1h       ; DE = Coins Inserted Left
        LD      A,(0E1A3h)      ; Get x
        LD      C,A             ; C = x
        LD      A,(0E189h)      ; Get DIP Switches 20-27
        RRCA                    ; Get Coin Settings
        RRCA                    ; Get Coin Settings
        RRCA                    ; Get Coin Settings
        RRCA                    ; Get Coin Settings
        AND     003h            ; Isolate Right Coin/Credit Setting 24-25
        LD      B,A             ; B = Right Coins/Credit Setting
        LD      A,(0E189h)      ; Get DIP Switches 20-27
        AND     003h            ; Isolate Left Coin/Credit Settings 20-21
        CP      B               ; Compare Left settings to Right Settings
        JR      NZ,L11E6        ; Coin/Credit settings differ so jump ahead       
;----------------------------------------------------
;         Total both Coins into Left Coin 
;----------------------------------------------------
;  IF BOTH COIN CHUTES ARE ADJUSTED THE SAME FOR MULTIPLE
;  COINS, CREDITS WILL INCREASE AS IF DROPPED IN SAME CHUTE
;----------------------------------------------------
        EX      AF,AF'          ; Save Coin/Credit Setting
        EX      DE,HL           ; HL = Coins Inserted Left
        LD      A,(0E1A2h)      ; A = Coins Inserted Right
        ADD     A,(HL)          ; Add Right Coins to Left Coins
        LD      (HL),A          ; Store Total into Left Coins Inserted
        EX      DE,HL           ; Restore HL Register
        XOR     A               ; A = 0
        LD      (0E1A2h),A      ; Zero Coins Inserted Right
        EX      AF,AF'          ; Recall Coin/Credit Settings

L11E6:  CALL    L1205           ; ??
        LD      A,C             ; A = x
        LD      (0E1A3h),A      ; Save x
        LD      DE,0E1A2h       ; DE = Coins Inserted Right
        LD      A,(0E1A4h)      ;
        LD      C,A             ;
        LD      A,(0E189h)      ; Get DIP Switches 20-27
        RRCA                    ;
        RRCA                    ;
        RRCA                    ;
        RRCA                    ;
        AND     003h            ;
        CALL    L1205           ;
        LD      A,C             ;
        LD      (0E1A4h),A      ;
        RET                     ; Return







;----------------------------------------------------
;           Coins per Credit
;----------------------------------------------------
;        A = Coins/Settings (0,1,2,3)
;       DE = Coins Inserted Left
;----------------------------------------------------
L1205:  LD      HL,0129Dh       ; HL = Pointer to Bank12 table
        LD      B,A             ; B = Coin Setting (0,1,2,3)
        OR      A               ; Is Coin Setting 0?
        JR      Z,L1214         ; Yes, so use Award Cycle 1     
        PUSH    DE              ; Save DE Register
        LD      DE,0000Ch       ; DE = 12 Bytes per Award Cycle
L1210:  ADD     HL,DE           ; HL = Correct Award Cycle
        DJNZ    L1210           ; Loop until correct Award Cycle       
        POP     DE              ; Restore DE Register
L1214:  LD      A,(DE)          ; A = Coins Inserted Left
        OR      A               ; Are there any coins?
        RET     Z               ; No coins so return
        ADD     HL,BC           ; Add BC index into Award Cycle
        XOR     A               ; A = 0

;----------------------------------------------------
;    Award Credits while there are Coins in Left Slot
;----------------------------------------------------
L1219:  ADD     A,(HL)          ; Add Number of Coins in Table
        EX      AF,AF'          ; Save table total
        LD      A,C             ; A = x
        CP      00Bh            ; Is x = 11?
        JR      NZ,L122A        ; No, so skip ahead       
        PUSH    DE              ; Save DE Register
        LD      DE,0000Ch       ; BE = 12 bytes per Award Cycle
        XOR     A               ; Clear Carry
        SBC     HL,DE           ; Go to previous bank
        LD      C,0FFh          ; C = 255
        POP     DE              ; Recall DE Register
L122A:  INC     C
        INC     HL              ; Point to next spot in table
        PUSH    HL              ; Save table Pointer
        LD      HL,0E1A5h       ;
        INC     (HL)
        POP     HL              ; Recall table Pointer
        EX      AF,AF'
        EX      DE,HL           ; Get Coins Inserted Left
        DEC     (HL)            ; Subtract 1 coin
        EX      DE,HL           ; Restore Registers
        JR      NZ,L1219        ; More coins left so keep looping

        CALL    L123C           ; Award Credits and Beep
        RET                     ; Return     








;----------------------------------------------------
;             Award Credits and Beep
;----------------------------------------------------
;          A = Number of credits to award
;----------------------------------------------------
L123C:  LD      B,A             ; B = Number of Credits to award
        OR      A               ; Is it zero?
        RET     Z               ; Yes, no credits to award so return
        LD      A,(0E1A8h)      ; A = Number of Credits
        CP      099h            ; Are there 99 credits?
        RET     Z               ; Yes, so just return
        ADD     A,B             ; Add to Number of Credits
        DAA                     ; Make BCD
        JR      NC,L124B        ; Still less than 99 so skip ahead         
        LD      A,099h          ; Set Number of Credits = 99
L124B:  LD      (0E1A8h),A      ; Store Number of Credits
        LD      A,002h          ; ?
        CALL    GoodBeep        ; Sound GoodBeep
        RET                     ; Return





;----------------------------------------------------
;               Unknown
;----------------------------------------------------
L1254:  LD      A,(0E1A6h)
        BIT     0,A
        JR      Z,L1282                 
        LD      A,(0E1A7h)
        OR      A
        JR      Z,L1266                 
        DEC     A
        LD      (0E1A7h),A
        RET     


L1266:  LD      A,(0E1A6h)
        BIT     1,A
        JR      Z,L127C                 
        RES     1,A
        LD      (0E1A6h),A
        RES     6,A
        OUT     (068h),A
        LD      A,00Ch
        LD      (0E1A7h),A
        RET     


L127C:  RES     0,A
        LD      (0E1A6h),A
        RET     


L1282:  LD      A,(0E1A5h)
        OR      A
        RET     Z
        DEC     A
        LD      (0E1A5h),A
        XOR     A
        SET     0,A
        SET     1,A
        LD      (0E1A6h),A
        SET     6,A
        OUT     (068h),A
        LD      A,004h
        LD      (0E1A7h),A
        RET     


;----------------------------------------------------
;               Award Cycles 
;----------------------------------------------------
;            1 Coin per Credit
;----------------------------------------------------
L129D:  .DB   001h
        .DB   001h
        .DB   001h
        .DB   001h
        .DB   001h
        .DB   001h
        .DB   001h
        .DB   001h
        .DB   001h
        .DB   001h
        .DB   001h
        .DB   001h
;----------------------------------------------------
;            2 Coins per Credit
;----------------------------------------------------
        .DB   000h001h
        .DB   000h001h
        .DB   000h001h
        .DB   000h001h
        .DB   000h001h
        .DB   000h001h
;----------------------------------------------------
;            3 Coins per Credit
;----------------------------------------------------
        .DB   000h000h001h
        .DB   000h000h001h
        .DB   000h000h001h
        .DB   000h000h001h
;----------------------------------------------------
;            4 Coins per Credit
;----------------------------------------------------
        .DB   000h000h000h001h
        .DB   000h000h000h001h
        .DB   000h000h000h001h








;----------------------------------------------------
;                ROM0 Copyright 
;----------------------------------------------------
L12CD:   .DB   010h 
L12CE:   .TEXT "COPYRIGHT STERN ELECTRONICS, INC."






;----------------------------------------------------
;              Check Buy-In Feature
;----------------------------------------------------
L12F0:  LD      A,(0E18Ch)      ; Get DIP Switches 12-19
        BIT     7,A             ; Check BUY-IN feature
        RET     Z               ; No BUY-IN so just return
L12F6:  LD      A,(0E126h)      ; Get Control Register      ;
        BIT     1,A             ;
        JR      NZ,L12F6        ;       
        LD      A,(0E126h)      ; Get Control Register
        BIT     4,A             ;
        JR      NZ,L1311        ;       
;----------------------------------------------------
;             Send PAUSE Command
;----------------------------------------------------
        LD      A,00Ah          ; Command = PAUSE (0Ah)
        CALL    L207F           ; Send Message to LDPlayer DI
        LD      A,(0E126h)      ; Get Control Register
        SET     4,A             ; Set PAUSE Bit
        LD      (0E126h),A      ; Save Control Register
L1311:  PUSH    IY              ;
        PUSH    DE              ;
        PUSH    BC              ;
        CALL    L2392           ;
        CALL    L22F5           ; Program Graphics Chip
        LD      A,0FDh          ; Text = WHITE, Bkgnd = PURPLE
        CALL    L20CA           ; Setup Graphics Chip for Text
        CALL    L21FF           ; Clear Text Display

        LD      C,000h          ; Loop = 0
L1325:  LD      A,C             ; A = Rectangle #
        CALL    L575D           ; Draw programmed rectangle

        LD      B,005h          ; Loop = 5
L132B:  CALL    L2353           ; Wait for Comm Ready
        DJNZ    L132B           ; Loop for 5 Comm's

        INC     C               ; Increment loop
        LD      A,C             ; Check loop
        CP      005h            ; Is loop at 5 yet?
        JR      C,L1325         ; No, continue with loop
                         
L1336:  PUSH    HL              ; Save HL Register
        LD      HL,00127h       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L133D:  .TEXT   "PLAYER #  "
        .DB   000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        LD      A,(0E1A9h)      ; Get Player Number
        AND     003h            ; Decode number
        OR      030h            ; Create printable character A
        CALL    L2256           ; Print A to Text Display 
        PUSH    HL              ; Save HL Register
        LD      HL,00170h       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L135A:  .TEXT   "If you wish to continue"
        .DB   000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        PUSH    HL              ; Save HL Register
        LD      HL,0019Bh       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L137A:  .TEXT   "playing this level"
        .DB   000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        LD      A,(0E1A8h)      ; Get Number of Credits
        OR      A               ; Check if any credits left
        JR      NZ,L13B6        ; Credits left so skip ahead       
        PUSH    HL              ; Save HL Register
        LD      HL,001E7h       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L139B:  .TEXT   "Insert required coins and"
        .DB     000h
;----------------------------------------------------       
        POP     HL              ; Restore HL Register
L13B6:  PUSH    HL              ; Save HL Register
        LD      HL,00239h       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L13BD:  .TEXT   "Press Player 1 button"
        .DB     000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        PUSH    HL              ; Save HL Register
        LD      HL,002B0h       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L13DB:  .TEXT   "Time left to buy-in :  9"
        .DB     000h
;----------------------------------------------------
L13F4:  POP     HL              ; Restore HL Register
        CALL    Delay100000     ; Call Delay 100,000
        CALL    L1538           ;
        PUSH    HL              ; Save HL Register
L13FC:  LD      HL,002B0h       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L1402:  .TEXT   "Time left to buy-in :  8"
        .DB     000h
;----------------------------------------------------           
L141B:  POP     HL              ; Restore HL Register
        CALL    Delay100000     ; Call Delay 100,000
        CALL    L1538           ;
        PUSH    HL              ; Save HL Register
        LD      HL,002B0h       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L1429:  .TEXT   "Time left to buy-in :  7"
        .DB     000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        CALL    Delay100000     ; Call Delay 100,000
        CALL    L1538           ;
        PUSH    HL              ; Save HL Register
        LD      HL,002B0h       ; Cursor Position
L144D:  CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L1450:  .TEXT   "Time left to buy-in :  6"
        .DB     000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        CALL    Delay100000     ; Call Delay 100,000
        CALL    L1538           ;
        PUSH    HL              ; Save HL Register
        LD      HL,002B0h       ; Cursor Position
L1474:  CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L1476:  .TEXT   "Time left to buy-in :  5"
        .DB     000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        CALL    Delay100000     ; Call Delay 100,000
        CALL    L1538
        PUSH    HL              ; Save HL Register
        LD      HL,002B0h       ; Cursor Position
L149B:  CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L149E:  .TEXT   "Time left to buy-in :  4"
        .DB     000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        CALL    Delay100000     ; Call Delay 100,000
        CALL    L1538
        PUSH    HL              ; Save HL Register
        LD      HL,002B0h       ; Cursor Position
L14C2:  CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L14C5:  .TEXT   "Time left to buy-in :  3"
        .DB     000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        CALL    Delay100000     ; Call Delay 100,000
        CALL    L1538           ;
        PUSH    HL              ; Save HL Register
        LD      HL,002B0h       ; Cursor Position
L14E9:  CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L14EC:  .TEXT   "Time left to buy-in :  2"
        .DB     000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        CALL    Delay100000     ; Call Delay 100,000
        CALL    L1538           ;
        PUSH    HL              ; Save HL Register
        LD      HL,002B0h       ; Cursor Position
L1510:  CALL    L2212           ; Set Cursor and Print Text 
;----------------------------------------------------
L1513:  .TEXT   "Time left to buy-in :  1"
        .DB     000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        CALL    Delay100000     ; Call Delay 100,000
        CALL    L1538           ;
L1533:  POP     BC              ; Restore BC Register
        POP     DE              ; Restore DE Register
L1535:  POP     IY              ; Restore IY Register
L1537:  RET                     ; Return






;----------------------------------------------------
;                Buy-In Timer
;----------------------------------------------------
L1538:  LD      A,(0E18Ch)      ; Get DIP Switches 12-19
L153B:  BIT     2,A             ; Check FREE PLAY (sw 14)
        JR      NZ,L1544        ; FREE PLAY set so skip credit check
;----------------------------------------------------
;            Check if there are any credits   
;----------------------------------------------------         
        LD      A,(0E1A8h)      ; Get Number of Credits
        OR      A               ; Check Number of Credits
        RET     Z               ; No credits so return
L1544:  LD      A,(0E192h)      ; Get Button Data
;----------------------------------------------------
;              Check for Player1 Button
;----------------------------------------------------
        BIT     2,A             ; Check PLAYER1 Button pressed
        RET     Z               ; Not pressed so return
L154A:  RES     2,A             ; Clear PLAYER1 Button press
        LD      (0E192h),A      ; Save modified Button Data

        LD      DE,00000h       ;
        LD      (0E127h),DE     ;
        LD      DE,0E0A2h       ;
        LD      A,001h          ;
        LD      (0E12Ah),A      ;
L155E:  CALL    L0FA1           ; Call 3-Digit Addition
        CALL    L10E5           ; Sum Total Coins
        CALL    L1F55           ;
        CALL    L1F70           ; Add Number of Lives per Credit
        INC     SP              ;
L156B:  INC     SP              ;
        JP      L1533           ;








;----------------------------------------------------
;             Update Bookkeeping Data 
;----------------------------------------------------
;         Add Game Timer to Total Play Time 
;----------------------------------------------------
L156F:  XOR     A               ; A = 0
        LD      (0E127h),A      ; Store zero in thousands
        LD      HL,(0E1C4h)     ; Get Game Play Timer
        LD      (0E128h),HL     ; Store in temp add location
        LD      A,(0E1C6h)      ; Get Game Play Timer
        LD      (0E12Ah),A      ; Store in temp add location
        LD      DE,0E0AAh       ; DE = Bookkeeping Total Play Time (ones)
        CALL    L0FA1           ; Call 3-Digit Addition
;----------------------------------------------------
;         Check for Longest Game Play Time 
;----------------------------------------------------
L1585:  LD      B,003h          ; 3 digits to check
        LD      DE,0E1C4h       ; DE = Game Play Time
        LD      HL,0E0ABh       ; HL = Longest Time
L158D:  LD      A,(DE)          ; Get Game Play Time digit
        CP      (HL)            ; Compare it to Longest
        JR      C,L15A7         ; Less than longest, so check shortest       
        JR      Z,L1596         ; Digits equal check next digit       
        JP      NC,L159C