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


        LD      B,001h          ; Loop = 1
L4677:  CALL    L2353           ; Wait for Comm Ready
        DJNZ    L4677           ; Loop for 1 Comm
               
        PUSH    HL              ; Save HL Register
        LD      HL,0002Eh       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L4683:  .TEXT   "SERVICE MODE 02: GAME ADJUST"     
        .DB     000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        PUSH    HL              ; Save HL Register
        LD      HL,00079h       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L46A8:  .TEXT   "LIVES PER 1 CREDIT ="     
        .DB     000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        PUSH    HL              ; Save HL Register
        LD      HL,000A2h       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L46C5:  .TEXT   "DIP SWITCH 28,29"
        .DB     000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        LD      B,001h          ; Loop = 1
L46D9:  CALL    L2353           ; Wait for Comm Ready
        DJNZ    L46D9           ; Loop for 1 Comm
        PUSH    HL              ; Save HL Register
        LD      HL,000CAh       ; Cursor Location
        CALL    L2212           ; Set Cursor and Print Text
;---------------------------------------------------- 
L46E5:  .TEXT   "BITS 1, 2 =   "               
        .DB     000h
;----------------------------------------------------
L46F4:  POP     HL              ; Restore HL Register
        LD      A,(0E187h)      ; Get DIP Switches 28-35
L46F8:  AND     003h            ; A = DIP 28 and 29 (# lives)
        ADD     A,003h          ; Add 3 to get total lives (3,4,5,6)
        OR      030h            ; Make number into character
        LD      DE,01603h       ; Location X = 22, Y = 3
        CALL    L2233           ; Print Lives to Text Display
        LD      A,(0E187h)      ; Get DIP Switches 28-35
        RRC     A               ; Shift A Right Circular
        AND     001h            ; Turn on bit 1
        LD      DE,00E05h       ; Location X = 14, Y = 5 
        OR      030h            ; Make number into character
        CALL    L2233           ; Print one Character to Text Display
        LD      A,(0E187h)      ; Get DIP Switches 28-35
        AND     001h            ; Turn on bit 1
        OR      030h            ; Make number into character
        CALL    L2256           ; Print A to Text Display

L471D:  LD      B,001h          ; Loop = 1
L471F:  CALL    L2353           ; Wait for Comm Ready 
        DJNZ    L471F           ; Loop for 1 Comm

        PUSH    HL              ; Save HL Register
        LD      HL,00169h       ; Cursor Location
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L472B:  .TEXT   "DIP SW. 4,5,6,7"     
        .DB     000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        PUSH    HL              ; Save HL Register
        LD      HL,00191h       ; Cursor Location
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L4743:  .TEXT   "BITS 1234 ="
        .DB     000h
;----------------------------------------------------     
        POP     HL              ; Restore HL Register

        LD      B,001h          ; Loop = 1
L4752:  CALL    L2353           ; Wait for Comm Ready
        DJNZ    L4752           ; Loop for 1 Comm       

        PUSH    HL              ; Save HL Register
        LD      HL,00140h       ; Cursor Location
        CALL    L2212           ; Set Cursor and Print Text
;---------------------------------------------------- 
L475E:  .TEXT   "DIFFICULTY =   "               
        .DB     000h
;---------------------------------------------------- 
L476E:  POP     HL              ; Restore HL Register
        LD      A,(0E190h)      ; Get DIP Switches 4-11
        AND     00Fh            ; Get Window Move Time
        CALL    L22AA           ; Convert Window Move Time into decimal
        LD      (HL),A          ; Save Window Move Byte
        LD      DE,00D08h       ; Cursor Position (X=13,Y=8)
        CALL    L225D           ; Print 2-Digit Number

        LD      B,001h          ; Loop = 1
L4780:  CALL    L2353           ; Wait for Comm Ready
L4783:  DJNZ    L4780           ; Loop for 1 Comm       

        LD      A,(0E190h)      ; Get DIP Switches 4-11
        RRC     A               ; Get Switch 7
        RRC     A               ; Get Switch 7
L478C:  RRC     A               ; Get Switch 7
        AND     001h            ; Isolate Switch 7
        OR      030h            ; Make number into character
        LD      DE,00D0Ah       ; Cursor Position (X=13,Y=10)
        CALL    L2233           ; Print one Character to Text Display

        LD      A,(0E190h)      ; Get DIP Switches 4-11
        RRC     A               ; Get Switch 6
        RRC     A               ; Get Switch 6
        AND     001h            ; Isolate Switch 6
        OR      030h            ; Make number into character A
        CALL    L2256           ; Print A to Text Display

        LD      A,(0E190h)      ; Get DIP Switches 4-11
        RRC     A               ; Get Switch 5
        AND     001h            ; Isolate Switch 5
        OR      030h            ; Make number into character A
        CALL    L2256           ; Print A to Text Display

        LD      A,(0E190h)      ; Get DIP Switches 4-11
        AND     001h            ; Get Switch 4
        OR      030h            ; Make number into character A
        CALL    L2256           ; Print A to Text Display

        LD      B,001h          ; Loop = 1
L47BE:  CALL    L2353           ; Wait for Comm Ready
        DJNZ    L47BE           ; Loop for 1 Comm

        PUSH    HL              ; Save HL Register
        LD      HL,0017Ch       ; Cursor Location
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L47CA:  .TEXT   "DIP SW. 8,9,10,11"     
        .DB     000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register

        PUSH    HL              ; Save HL Register
        LD      HL,001A4h       ; Cursor Location
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L47E4:  .TEXT   "BITS 1234 ="
        .DB     000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register

        LD      B,001h          ; Loop = 1
L47F3:  CALL    L2353           ; Wait for Comm Ready
        DJNZ    L47F3           ; Loop for 1 Comm

        PUSH    HL              ; Save HL Register
        LD      HL,00153h       ; Cursor Location
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L47FF:  .TEXT   "HINTS =     "               
        .DB     000h
;----------------------------------------------------
L480C:  POP     HL              ; Restore HL Register
        LD      A,(0E190h)      ; Get DIP Switches 4-11
        RRC     A               ; Get Switches 8-11
        RRC     A               ; Get Switches 8-11
        RRC     A               ; Get Switches 8-11
        RRC     A               ; Get Switches 8-11
        AND     00Fh            ; Isolate Switches 8-11
        CALL    L22AA           ; Convert hex byte into decimal byte
        LD      (HL),A          ; Number = switches
        LD      DE,01B08h       ; Cursor Position (X=27,Y=8) 
        CALL    L225D           ; Print 2-Digit Number

        LD      B,001h          ; Loop = 1
L4826:  CALL    L2353           ; Wait for Comm Ready
        DJNZ    L4826           ; Loop for 1 Comm

        LD      A,(0E190h)      ; Get DIP Switches 4-11
        RRC     A               ;
        RRC     A               ;
        RRC     A               ;
        RRC     A               ;
        RRC     A               ;
        RRC     A               ;
        RRC     A               ;
        AND     001h            ;
        OR      030             ;
        LD      DE,0200Ah       ;
L4843:  CALL    L2233           ; Print one Character to Text Display

        LD      A,(0E190h)      ; Get DIP Switches 4-11
        RRC     A               ;
        RRC     A               ;
        RRC     A               ;
        RRC     A               ;
        RRC     A               ;
        RRC     A               ;
        AND     001h            ;
        OR      030h            ;
        CALL    L2256           ; Print A to Text Display

        LD      A,(0E190h)      ; Get DIP Switches 4-11
        RRC     A               ;
        RRC     A               ;
        RRC     A               ;
        RRC     A               ;
        RRC     A               ;
        AND     001h            ;
        OR      030h            ;
        CALL    L2256           ;
        LD      A,(0E190h)      ; Get DIP Switches 4-11
        RRC     A
        RRC     A
        RRC     A
        RRC     A
        AND     001h
        OR      030h
        CALL    L2256

        LD      B,001h          ; Loop = 1
L4884:  CALL    L2353           ; Wait for Comm Ready
        DJNZ    L4884           ; Loop for 1 Comm

        PUSH    HL              ; Save HL Register
        LD      HL,00209h       ; Cursor Location
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
        LD      D,E
        LD      B,L
        LD      D,D
        LD      D,(HL)
        LD      C,C
        LD      B,E
        LD      B,L
        JR      NZ,L48EC               
        LD      D,A
        LD      C,C
        LD      D,H
        LD      B,E
        LD      C,B
        LD      B,L
        LD      D,E
        .DB     000h     
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        PUSH    HL              ; Save HL Register
        LD      HL,00232h       ; Cursor Location
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
        LD      (HL),E
        LD      H,L
        LD      (HL),D
        HALT   
        LD      L,C
        LD      H,E
        LD      H,L
        JR      NZ,L491B               
        LD      L,(HL)
        LD      H,H
        LD      H,L
        LD      A,B
        JR      NZ,L48F5               
        JR      NZ,L48BA               
        .DB     000h
;----------------------------------------------------
L48BA:  POP     HL              ; Restore HL Register
        PUSH    HL              ; Save HL Register
        LD      HL,0025A        ; Cursor Location
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
        LD      (HL),E
        LD      (HL),A
        LD      L,C
        LD      (HL),H
        LD      H,E
        LD      L,B
        JR      NZ,L493E               
        LD      H,L
        LD      (HL),E
        LD      (HL),H
        JR      NZ,L48EF             
        JR      NZ,L490E               
        JR      NZ,L48D3               
        .DB     000h
;----------------------------------------------------
L48D3:  POP     HL              ; Restore HL Register
        PUSH    HL              ; Save HL Register
        LD      HL,00282        ; Cursor Location
        CALL    L2212           ; Set Cursor and Print Text
        LD      H,(HL)
        LD      (HL),D
        LD      H,L
        LD      H,L
        JR      NZ,L4951               
        LD      L,H
        LD      H,C
        LD      A,C
        JR      NZ,L4906             
        JR      NZ,L4908             
        JR      NZ,L4927               
        JR      NZ,L48EC               
        .DB     000h
;----------------------------------------------------
L48EC:  POP     HL              ; Restore HL Register
        PUSH    HL              ; Save HL Register
        LD      HL,002AAh       ; Cursor Location
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
        LD      L,C

L48F5:  LD      L,L
        LD      L,L
        LD      L,A
        LD      (HL),D
        LD      (HL),H
        LD      H,C
        LD      L,H
        LD      L,C
        LD      (HL),H
        LD      A,C
        JR      NZ,L4921             
        JR      NZ,L4940               
        JR      NZ,L4905               
        .DB     000h
;----------------------------------------------------
L4905:  POP     HL              ; Restore HL Register
L4906:  PUSH    HL              ; Save HL Register
        LD      HL,002D2h       ; Cursor Location
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
        LD      H,H
L490E:  LD      L,C
        LD      (HL),E
        LD      H,E
        JR      NZ,L4987               
        LD      H,L
        LD      (HL),E
        LD      (HL),H
        JR      NZ,L4938             
        JR      NZ,L493A             
        JR      NZ,L4959               
        JR      NZ,L491E               
        .DB     000h
;----------------------------------------------------
L491E:  POP     HL              ; Restore HL Register
        PUSH    HL              ; Save HL Register
        LD      HL,002FAh       ; Cursor Location
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
        LD      H,C

L4927:  LD      (HL),H
        LD      (HL),H
        LD      (HL),D
        LD      H,C
        LD      H,E
        LD      (HL),H
        JR      NZ,L49A2               
        LD      L,A
        LD      (HL),L
        LD      L,(HL)
        LD      H,H
        JR      NZ,L4972               
        JR      NZ,L4937               
        .DB     000h
;----------------------------------------------------
L4937:  POP     HL              ; Restore HL Register
L4938:  PUSH    HL              ; Save HL Register
        LD      HL,00322h       ; Cursor Location
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
        LD      (HL),B

L4940:  LD      L,H
        LD      H,C
        LD      A,C
        JR      NZ,L49B7               
        LD      H,C
        LD      L,(HL)
        LD      H,H
        LD      L,A
        LD      L,L
        JR      NZ,L496C             
        JR      NZ,L498B               
        JR      NZ,L4950               
        .DB     000h
;----------------------------------------------------
L4950:  POP     HL              ; Restore HL Register

L4951:  LD      B,001h          ; Loop = 1
L4953:  CALL    L2353           ; Wait for Comm Ready
        DJNZ    L4953           ; Loop for 1 Comm

        LD      DE,0120Eh
        LD      A,(0E18Dh)      ; Get DIP Switches 12-19
        AND     001h
        CALL    L49A9
        INC     E
        LD      A,(0E18Dh)      ; Get DIP Switches 12-19
        AND     002h
        CALL    L49A9

L496C:  INC     E
        LD      A,(0E18Dh)      ; Get DIP Switches 12-19
        AND     004h

L4972:  CALL    L49A9
        INC     E
        LD      A,(0E18Dh)      ; Get DIP Switches 12-19
        AND     008h
        CALL    L49A9
        INC     E
        LD      A,(0E18Dh)      ; Get DIP Switches 12-19
        AND     010h
        CALL    L49A9

L4987:  INC     E
        LD      A,(0E18Dh)      ; Get DIP Switches 12-19

L498B:  AND     020h
        CALL    L49A9
        INC     E
        LD      A,(0E18Dh)      ; Get DIP Switches 12-19
        AND     040h
        CALL    L49A9

        LD      B,001h          ; Loop =1
L499B:  CALL    L2353           ; Wait for Comm Ready
        DJNZ    L499B           ; Loop for 1 Comm

        CALL    L49C9           ; Print "Player2 = Exit"
        CALL    L42B9           ; Process Service Mode User Input
        JP      L466B           ;



;----------------------------------------------------
;               Printing Subroutine
;----------------------------------------------------
L49A9:  JR      Z,L49BB         ;       
        LD      A,020h          ; A = Character space
        CALL    L2233           ; Print one Character to Text Display
        LD      A,04Fh          ;
        CALL    L2256           ; Print A to Text Display
        LD      A,04Eh          ;
L49B7:  CALL    L2256           ;
        RET                     ; Return






;----------------------------------------------------
;
;----------------------------------------------------
L49BB:  LD      A,04Fh
        CALL    L2233           ; Print one Character to Text Display
        LD      A,046h
        CALL    L2256           ; Print A to Text Display
        CALL    L2256           ; Print A to Text Display
        RET     







;----------------------------------------------------
;            Print "Player2 = Exit"
;----------------------------------------------------
L49C9:  PUSH    HL              ; Save HL Register
        LD      HL,003A4h       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L49D0: .TEXT   "player 2 = exit"
        .DB   000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        RET                     ; Return




 



;----------------------------------------------------
;            Report Bookkeeping Data
;----------------------------------------------------
L49E2:  LD      A,004h          ; A = 4
        LD      (0E1E5h),A      ;

L49E7:  LD      B,001h          ; Loop = 1
L49E9:  CALL    L2353           ; Wait for Comm Ready
        DJNZ    L49E9           ; Loop for 1 Comm

        CALL    L245B           ; Get ALL Input Data

        LD      B,001h          ; Loop = 1
L49F3:  CALL    L2353           ; Wait for Comm Ready
        DJNZ    L49F3           ; Loop for 1 Comm

        PUSH    HL              ; Save HL Register
        LD      HL,0002Eh       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L49FF: .TEXT   "SERVICE MODE 01: BOOKKEEPING"
        .DB   000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        PUSH    HL              ; Save HL Register
        LD      HL,000C9h       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L4A24:  .TEXT   "TOTAL PLAYS"
        .DB   000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        LD      DE,01905h       ; Location X = 25, Y = 5
        LD      HL,0E0A0h       ; Number = Total Plays
        CALL    L2265           ; Print 6-digit number
        PUSH    HL              ; Save HL Register
        LD      HL,00119h       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L4A41:  .TEXT   "LEFT CHUTE"
        .DB   000h
;---------------------------------------------------- 
        POP     HL              ; Restore HL Register
        LD      DE,01B07h       ; Location X = 27, Y = 7
        LD      HL,0E0A3h       ; Number = Left Slot Coin Total
        CALL    L2261           ; Print 4-digit number
        PUSH    HL              ; Save HL Register
        LD      HL,00169h       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L4A5D:  .TEXT   "RIGHT CHUTE"
        .DB   000h
;----------------------------------------------------     
        POP     HL              ; Restore HL Register
        LD      DE,01B09h       ; Location X = 27,Y = 9
        LD      HL,0E0A5h       ; Number = Right Slot Coin Total
        CALL    L2261           ; Print 4-digit number
        LD      B,001h          ; Loop = 1
L4A75:  CALL    L2353           ; Wait for Comm Ready
        DJNZ    L4A75           ; Loop for 1 Comm
        PUSH    HL              ; Save HL Register
L4A7B:  LD      HL,001B9h       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L4A81:  .TEXT   "TOTAL SECONDS PLAYED"
        .DB   000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        LD      DE,0190Bh       ; Location X = 25,Y = 11
        LD      HL,0E0A8h       ; Number = Total Seconds Played
        CALL    L2265           ; Print 6-digit number
        PUSH    HL              ; Save HL Register
        LD      HL,00209h       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L4AA7:  .TEXT   "LONG GAME SECONDS"
        .DB   000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        LD      DE,0190Dh       ; Location X = 25, Y = 13
        LD      HL,0E0ABh       ; Number = Long Game Seconds
        CALL    L2265           ; Print 6-digit number
        PUSH    HL              ; Save HL Register
        LD      HL,00259h       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L4ACA:  .TEXT   "SHORT GAME SECONDS"
        .DB   000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register

        LD      DE,01D0Fh       ; Location X = 29, Y = 15
        LD      HL,0E0AEh       ; Number = Short Game Seconds
        CALL    L225D           ; Print 2-digit number

        LD      B,001h          ; Loop = 1
L4AE9:  CALL    L2353           ; Wait for Comm Ready
        DJNZ    L4AE9           ; Loop for 1 Comm

        PUSH    HL              ; Save HL Register
        LD      HL,002A9h       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L4AF5:  .TEXT   "HIGHEST GAME SCORE"
        .DB   000h
;----------------------------------------------------   
        POP     HL              ; Restore HL Register

        LD      DE,01711h       ; Location X = 23, Y = 17
        LD      HL,0E003h       ; Number = Highest Score 
        CALL    L2269           ; Print 8-digit number

        PUSH    HL              ; Save HL Register
        LD      HL,002F9h       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L4B19:  .TEXT   "HIGHEST SCENE"
        .DB   000h
;---------------------------------------------------- 
        POP     HL              ; Restore HL Register

        LD      DE,01D13h       ; Location X = 29, Y = 19
        LD      HL,0E0AFh       ; Number = Highest Scene
        CALL    L225D           ; Print 2-digit number

        CALL    L4B8A           ; Print Bookkeeping Instructions
        CALL    L42B9           ; Process Service Mode User Input
        LD      HL,0E184h       ; Get ZPU Switches 1 & 2
        BIT     7,(HL)          ; Check switch 2
        JR      Z,L4B4C         ; Not pressed so skip ahead
               
;----------------------------------------------------
;        ZPU Switch 2 pressed so reset data
;----------------------------------------------------
        LD      HL,0E0A7h       ;
        INC     (HL)            ;
        LD      HL,0E0B0h       ;
        INC     (HL)            ;
        CALL    L1627           ; Reset Bookkeeping Data
        CALL    L21FF           ; Clear Text Display

L4B4C:  LD      HL,0E184h       ; Get ZPU Switches 1 & 2
        BIT     6,(HL)          ; Check switch 1
        JR      Z,L4B80         ; Not pressed so skip ahead

;----------------------------------------------------
;     ZPU Switch 1 pressed so erase highest score
;----------------------------------------------------
        LD      BC,00048h       ; 9 High scores to copy (72 bytes)
L4B56:  LD      DE,0E000h       ; Destination = Highest score
        LD      HL,0E008h       ; Source = 2nd High score 
        LDIR                    ; Move all scores up one spot

        EX      DE,HL           ; HL = Lowest Score
        LD      (HL),055h
        INC     HL
        LD      (HL),052h
        INC     HL
        LD      (HL),04Ch
        INC     HL
        LD      (HL),000h
        INC     HL
        LD      (HL),000h
        INC     HL
        LD      (HL),000h
        INC     HL
        LD      (HL),000h
        LD      HL,0E048h       ; Sum bytes
        LD      B,007h          ; 7 bytes to sum
        CALL    L110C           ; Call sum all bytes
        CPL                     ; Reverse all bits
        LD      (HL),A          ; Store sum
        CALL    L21FF           ; Clear Text Display

L4B80:  LD      B,001h          ; Loop = 1
L4B82:  CALL    L2353           ; Wait for Comm Ready
        DJNZ    L4B82           ; Loop for 1 Comm       

        JP      L49E7           ; Loop back to Bookkeeping Data





 
;----------------------------------------------------
;           Print Bookkeeping Instructions
;----------------------------------------------------
L4B8A:  PUSH    HL              ; Save HL Register
        LD      HL,00350h       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L4B91:  .TEXT   "Player 2 = Exit.        "
        .DB   000h
;----------------------------------------------------
L4BAA:  POP     HL              ; Restore HL Register
        PUSH    HL              ; Save HL Register
        LD      HL,00377h       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L4BB2:  .TEXT   "Switch #1 Clears Hiscores"
        .DB   000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        PUSH    HL              ; Save HL Register
        LD      HL,0039Fh       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L4BD4:  .TEXT   "Switch #2 Clears All Else"
        .DB   000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        RET                     ; Return








;----------------------------------------------------
;                 Sound Test
;----------------------------------------------------
L4BF0:  LD      B,001h          ; Loop = 1
L4BF2:  CALL    L2353           ; Wait for Comm Ready
        DJNZ    L4BF2           ; Loop for 1 Comm       
        LD      A,005h          ; Starting Row = 5
        LD      (0E1E6h),A      ; Save Rectangle starting row
        CALL    L4389           ; Draw Rectangle
L4BFF:  LD      A,040h
        LD      (0E1E5h),A

L4C04:  PUSH    HL              ; Save HL Register
        LD      HL,00056h       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L4C0B:  .TEXT   "SERVICE MODE 05: SOUND TESTS"     
        .DB     000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
        PUSH    HL              ; Save HL Register
        LD      HL,000CCh       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L4C30:  .TEXT   "GOOD ACTION SOUND        (beep)"
        .DB     000h
;----------------------------------------------------     
        POP     HL              ; Restore HL Register
        PUSH    HL              ; Save HL Register
        LD      HL,0011Ch       ; Cursor Location
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L4C58:  .TEXT   "ANY or BAD  ACTION SOUND (boop)"
        .DB     000h
;----------------------------------------------------     
        POP     HL              ; Restore HL Register
        LD      B,001h          ; Loop = 1
L4C7B:  CALL    L2353           ; Wait for Comm Ready
        DJNZ    L4C7B           ; Loop for 1 Comm
        PUSH    HL              ; Save HL Register
        LD      HL,0039Bh       ; Cursor Location
L4C84:  CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L4C87:  .TEXT   "Press Player 1 start to make sound"
        .DB     000h
;----------------------------------------------------     
        POP     HL              ; Restore HL Register
        CALL    L42B9           ; Process Service Mode User Input
        CALL    L4CBB           ; Check Button and Sound Correct Beep

        LD      B,00Ah          ; Loop = 10
L4CB3:  CALL    L2353           ; Wait for Comm Ready
        DJNZ    L4CB3           ; Loop for 10 Comm's     
         
        JP      L4C04           ; Continue Sound Test




;----------------------------------------------------
;       Check Button and Sound Correct Beep
;----------------------------------------------------
L4CBB:  LD      A,(0E193h)      ; Get Button Data
        BIT     2,A             ; Is PLAYER1/FEET pressed?
        RET     Z               ; Not pressed so leave
        LD      A,(0E1E6h)      ; Get Rectangle location
        CP      005h            ; Is good beep selected?
L4CC6:  CALL    Z,GoodBeep      ; Yes, so sound Good Beep
        LD      A,(0E1E6h)      ; Get Rectangle location
L4CCC:  CP      007h            ; Is bad beep selected?
        CALL    Z,BadBeep       ; Yes, so sound Bad Beep
        RET                     ; Return








;----------------------------------------------------
;         Service Mode 3:  CREDIT ADJUST
;----------------------------------------------------
L4CD2:  XOR     A               ; A = 0
        LD      (0E1E6h),A      ;
        LD      A,010h          ;
        LD      (0E1E5h),A      ;

L4CDB:  CALL    L245B           ; Get ALL Input Data
L4CDE:  PUSH    HL              ; Save HL Register
        LD      HL,0002Dh       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L4CE5:  .TEXT   "SERVICE MODE 03: CREDIT ADJUST"
        .DB     000h
;----------------------------------------------------     
        POP     HL              ; Restore HL Register
        PUSH    HL              ; Save HL Register
        LD      HL,00169h       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L4D0C:  .TEXT   "LEFT CHUTE"     
        .DB     000h
;----------------------------------------------------
        POP     HL              ; Restore HL Register
L4D18:  PUSH    HL              ; Save HL Register
        LD      HL,001BAh       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L4D1F:  .TEXT   "SWITCH 20, 21"
        .DB     000h
;----------------------------------------------------     
        POP     HL              ; Restore HL Register
        PUSH    HL              ; Save HL Register
        LD      HL,0020Ah       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L4D35:  .TEXT   "COINS:"
        .DB     000h
;----------------------------------------------------     
        POP     HL              ; Restore HL Register
        PUSH    HL              ; Save HL Register
        LD      HL,0025Ah       ; Cursor Position
        CALL    L2212           ; Set Cursor and Print Text
;----------------------------------------------------
L4D44:  .TEXT   "CREDITS:"
        .DB     000h
;----------------------------------------------------     
        POP     HL              ; Restore HL Register
        CALL    L4DD2           ;
        LD      DE,00C0Dh       ;
        OR      030h            ;
        CALL    L2233           ; Print one Character to Text Display
L4D59:  INC     E               ; Move down one row
        INC     E               ; Move down one row
        LD      A,B             ;
        OR      030h            ;
        CALL    L2233           ; Print one Character to Text Display
        PUSH    HL              ; Save HL Register
        LD      HL,0017Dh       ; Cursor Position
        CALL