;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; http://CPCrulez.fr
;;
;;
;; VUMETRE HORIZONTAL by EPSILON for MUSICPACK 5
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


color_border equ &54



            nolist

            org &9000



            di

            ld      bc, &0BC07
            out     (c), c

            ld      a, &15
            inc     b
            out     (c), a

            ei
            halt
            di


            ld      b, &0F5

loc_0010:   in      a, (c)
            rra
            jr      nc, loc_0010


            ld      hl,&173

loc_0018:   dec     hl
            ld      a, h
            or      l
            jr      nz, loc_0018

            nop

            ld      bc,&7F10
            out     (c), c


            ld      de, byte_01AE

loc_0026:   ld      a, (de)
            or      a
            jr      z, loc_007B
            out     (c), a

loc_002C:   ld      hl, byte_0034
            jp      (hl)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

            db   &0,&0,&0,&0
byte_0034:  db   &0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0
            db   &0,&0,&0,&0,&0,&0

loc_004C:   ld   a, color_border
            out  (c), a

            db   &21
off_0051:   dw   Byte_006C
            jp   (hl)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

byte_0054:  db   &0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0
            db   &0,&0,&0,&0,&0,&0
byte_006C:  db   &0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0

            inc  de
            jr   loc_0026

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

loc_007B:   ld      b,&1D

loc_007D:   djnz    loc_007D
            ld      b,&7F
            ld      de, byte_01AE

loc_0084:   ld      a, (de)
            or      a
            jr      z, loc_00D9
            out     (c), a

loc_008A:   ld      hl, byte_0096
            jp      (hl)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

            db   &0,&0,&0,&0,&0,&0,&0,&0
byte_0096:  db   &0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0
            db   &0,&0

loc_00AA:   ld   a, color_border
            out  (c), a

            db   &21
off_00AF:   dw   Byte_00C6
            jp   (hl)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

byte_00B2:  db   &0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0
            db   &0,&0
byte_00C6:  db   &0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0

            inc  de
            jr   loc_0084

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

loc_00D9:   ld      b,&1D

loc_00DB:   djnz    loc_00DB
            ld      b,&7F
            ld      de, byte_01AE

loc_00E2:   ld      a, (de)
            or      a
            jr      z, loc_0137
            out      (c), a

loc_00E8:   ld      hl, byte_00F8
            jp      (hl)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

            db   &0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0
byte_00F8:  db   &0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0

loc_0108:   ld   a, color_border
            out  (c), a
            db   &21
off_010D:   dw   Byte_0120
            jp   (hl)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

byte_0110:  db   &0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0
byte_0120:  db   &0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0
            db   &0,&0
            inc  de
            jr   loc_00E2

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

loc_0137:   ld      a,&8
            call    sub_017F
            ld      c, a
            ld      b,&0
            ld      hl, loc_004C
            sbc     hl, bc
            ld      (loc_002C+&1), hl
            ld      hl, byte_0054
            add     hl, bc
            ld      (off_0051), hl
            ld      a,&9
            call    sub_017F
            ld      c, a
            ld      b,&0
            ld      hl, loc_00AA
            sbc     hl, bc
            ld      (loc_008A+&1), hl
            ld      hl, byte_00B2
            add     hl, bc
            ld      (off_00AF), hl
            ld      a,&0A
            call    sub_017F
            ld      c, a
            ld      b,&0
            ld      hl, loc_0108
            sbc     hl, bc
            ld      (loc_00E8+&1), hl
            ld      hl, byte_0110
            add     hl, bc
            ld      (off_010D), hl
            ei
            reti

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

sub_017F:   ld      b,&0F4
            out     (c), a
            ld      b,&0F6
            in      a, (c)
            or      &0C0
            out     (c), a
            and     &3F
            out     (c), a
            ld      b,&0F7
            ld      d,&92
            out     (c), d
            ld      b,&0F6
            ld      c, a
            or      &40
            out     (c), a
            ld      b,&0F4
            in      a, (c)
            ld      b,&0F7
            ld      d,&82
            out     (c), d
            ld      b,&0F6
            out      (c), c
            and      &0E
            rla
            ret

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; DATAS RASTERS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

byte_01AE:  db   &55,&55,&57,&55,&57,&57,&5B,&57,&5B,&5B,&4B
            db   &5B,&4B,&4B,&4B,&4B,&4B,&4B,&4B,&4B,&43,&4B
            db   &43,&43,&4E,&43,&4E,&4E,&4C,&4E,&4C,&4C
            db   &0

