; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦

BitmapIndexStruct struc ; (sizeof=0X4)
Xpos:           db ?                    ; base 10
Ypos:           db ?                    ; base 10
BitmapAddr:     dw ?                    ; offset (00000000)
BitmapIndexStruct ends

; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦

; enum MB02_HW_PORTS
RTC:             equ 3
DMA:             equ 0Bh
FDC:             equ 0Fh
MOT:             equ 13h
RAMp:            equ 17h
FDT:             equ 2Fh
REZ:             equ 33h
FDS:             equ 4Fh
FDD:             equ 6Fh

; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦

; enum ZX_HW_PORTS
ULA:             equ 0FEh

; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦

; enum BitmapConst
BitmapIdx0:      equ 0
BitmapIdx1:      equ 1
BitmapIdx2:      equ 2
BitmapIdx3:      equ 3
BitmapIdx4:      equ 4
BitmapIdx5:      equ 5
BitmapIdx6:      equ 6
BitmapIdx7:      equ 7
BitmapIdx8:      equ 8

;

; Processor       : z80 []
; Target assembler: Zilog Macro Assembler

; ===========================================================================

; Segment type: Regular
                segment VRAM_DATA
                org 4000h
videoram:       ds 1B00h
; end of 'VRAM_DATA'

; ===========================================================================

; Segment type: Regular
                segment RAM_VAR
                org 8000h
BootSectorBuffer:ds 400h                ; CODE XREF: Startup_after_unpack+83j
                                        ; DATA XREF: Startup_after_unpack+2Aw
                                        ; Startup_after_unpack+65r
                                        ; Startup_after_unpack+89o
; end of 'RAM_VAR'

; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
; ===========================================================================

; Segment type: Regular
                segment RAM_UNPACK
                org 842Bh
                ld      hl, 8BAEh
                ld      de, 8BFDh

loc_8431:                               ; CODE XREF: RAM_UNPACK:8437j
                                        ; RAM_UNPACK:8454j
                dec     hl
                dec     de
                ld      a, (hl)
                ld      (de), a
                sub     2Dh ; '-'
                jr      nz, loc_8431
                dec     hl
                or      (hl)
                jr      z, loc_8451
                dec     hl
                push    hl
                ld      l, (hl)
                ld      c, a
                and     7
                ld      h, a
                inc     hl
                add     hl, de
                xor     c
                rrca
                rrca
                rrca
                add     a, 3
                ld      c, a
                lddr
                inc     de
                pop     hl

loc_8451:                               ; CODE XREF: RAM_UNPACK:843Bj
                sbc     hl, de
                add     hl, de
                jr      nz, loc_8431
                ld      hl, 8BFDh
                ld      de, 980Fh

loc_845C:                               ; CODE XREF: RAM_UNPACK:8462j
                                        ; RAM_UNPACK:847Fj
                dec     hl
                dec     de
                ld      a, (hl)
                ld      (de), a
                sub     1Ah
                jr      nz, loc_845C
                dec     hl
                or      (hl)
                jr      z, loc_847C
                dec     hl
                push    hl
                ld      l, (hl)
                ld      c, a
                and     7
                ld      h, a
                inc     hl
                add     hl, de
                xor     c
                rrca
                rrca
                rrca
                add     a, 3
                ld      c, a
                lddr
                inc     de
                pop     hl

loc_847C:                               ; CODE XREF: RAM_UNPACK:8466j
                sbc     hl, de
                add     hl, de
                jr      nz, loc_845C
                jp      Startup_after_unpack ; IM2 Vector Table
; end of 'RAM_UNPACK'

; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
; File Name   : D:\!Archive\sinclair\mb02_docs\mb02_bootrom\unpacked\b_unp.bin
; Format      : Binary File
; Base Address: 0000h Range: 842Bh - 980Fh Loaded length: 13E4h
; ===========================================================================

; Segment type: Regular
                segment RAM_CODE
                org 8484h

InterruptRoutineEntry:
                jp      InterruptRoutine
; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
Bitmap0:        db 4                    ; DATA XREF: RAM_CODE:96E3o
                db 9
                db  47h, 47h, 47h, 47h, 47h, 47h, 47h, 47h, 47h,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,0FFh,0FFh,0FFh
                db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh, 80h,   0,   0,   0,   0
                db    0,   0,   0,   1, 78h, 78h, 78h, 78h, 78h, 78h, 78h
                db  78h, 78h, 40h,   0,   0,   0,   0,   0,   0,   0,   2
                db  40h,   0,   0,   0,   0,   0,   0,   0,   2, 40h,   0
                db    0,   0,   0,   0,   0,   0,   2, 41h,0FFh,0FFh,0FFh
                db 0FFh,0FFh,0FFh,0FFh, 82h, 41h,0FFh,0FFh,0FFh,0FFh,0FFh
                db 0FFh,0FFh, 82h, 41h,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
                db  82h, 41h,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh, 82h, 41h
                db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh, 82h, 78h, 7Ch, 78h
                db  78h, 78h, 78h, 78h, 78h, 78h, 40h,   0,   0,   0,   0
                db    0,   0,   0,   2, 40h,   0,   0,   0,   0,   0,   0
                db    0,   2, 40h,   0,   0,   0,   0,   0,   1,0FFh, 82h
                db  40h, 1Fh,   0,   0,   0,   0,   1,   0, 82h, 40h, 1Fh
                db    0,   0,   0,   0,   1,   0, 82h, 40h, 1Fh,   0,   0
                db    0,   0,   1,   0, 82h, 40h,   0,   0,   0,   0,   0
                db    1,0FFh, 82h, 40h,   0,   0,   0,   0,   0,   0,   0
                db    2, 47h, 47h, 47h, 47h, 47h, 47h, 47h, 47h, 47h,0BFh
                db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FDh, 80h,   0,   0
                db    0,   0,   0,   0,   0,   1,0FFh,0FFh,0FFh,0FFh,0FFh
                db 0FFh,0FFh,0FFh,0FFh,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0
Bitmap1:        db 7                    ; DATA XREF: RAM_CODE:96E7o
                db 7
                db  48h, 4Dh, 69h, 69h, 69h, 69h, 48h,   0,   3,   0,   0
                db    0,   3, 1Fh,   0,   3,   0,   0,   0,   3, 0Fh,   0
                db    3,   0,   0, 3Fh,   3,   7,   0,   3,   0,   0, 3Fh
                db    3,   3, 18h,   3,   0,   0, 3Fh,   3,   1, 3Ch,   3
                db    0,   0, 3Fh,   3,   0, 18h,   3,   0,   0, 3Fh,   3
                db    0, 18h,   3,   0,   0, 3Fh,   3,   0, 48h, 4Dh, 69h
                db  69h, 69h, 69h, 4Fh, 18h,   3,   0,   0, 3Fh,   3,   0
                db  18h,   3,   0,   0, 3Fh,   3,   0,   0,   3,   0,   0
                db  3Fh,   3,   0,   0,   3,   0,   0, 3Fh,   3,   0,   0
                db    3,   0,   0, 3Fh,   3,   0,   0,   3,   0,   0, 3Fh
                db    3,   0,   0,   3,   0,   0, 3Fh,   3,   0,   0,   3
                db    0,   0, 3Fh,   3,   0, 4Fh, 4Dh, 4Dh, 4Dh, 4Dh, 4Dh
                db  4Fh,   0,   3,0FFh,0FFh,0FFh,0FCh,   0,   0,   3,0FFh
                db 0FFh,0FFh,0FCh,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0, 4Fh, 4Fh, 4Fh, 4Fh, 4Fh, 4Fh, 4Fh,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   1,0FFh,0FFh
                db 0FFh,0FFh,0FFh, 80h,   3,0FFh,0FFh,0FFh,0FFh,0FFh,0C0h
                db    3,0FFh,0FFh,0FFh,0FFh,0FFh,0C0h,   3,0FFh,0FFh,0FFh
                db 0FFh,0FFh,0C0h,   3,0FFh,0FFh,0FFh,0FFh,0FFh,0C0h, 4Fh
                db  78h, 78h, 78h, 78h, 78h, 4Fh,   3,   0,   0,   0,   0
                db    0,0C0h,   3,   0,   0,   0,   0,   0,0C0h,   3,   7
                db  24h,0E7h,0BDh,0B0h,0C0h,   3, 0Ch, 3Dh, 83h, 31h,0F0h
                db 0C0h,   3,   7, 18h,0E3h, 39h,0B0h,0C0h,   3,   1, 98h
                db  33h, 31h,0B0h,0C0h,   3, 0Dh, 99h,0B3h, 31h,0B0h,0C0h
                db    3,   7, 18h,0E3h, 3Dh,0B0h,0C0h, 4Fh, 78h, 78h, 78h
                db  78h, 78h, 4Fh,   3,   0,   0,   0,   0,   0,0C0h,   3
                db    0,   0,   0,   0,   0,0C0h,   3,   0,   0,   0,   0
                db    0,0C0h,   3,   0, 3Ch,0CEh, 6Ch,   0,0C0h,   3,   0
                db  36h,0D8h, 78h,   0,0C0h,   3,   0, 36h,0CEh, 70h,   0
                db 0C0h,   3,   0, 36h,0C3h, 70h,   0,0C0h,   3,   0, 36h
                db 0DBh, 78h,   0,0C0h, 4Fh, 78h, 78h, 78h, 78h, 78h, 4Fh
                db    3,   0, 3Ch,0CEh, 6Ch,   0,0C0h,   3,   0,   0,   0
                db    0,   0,0C0h,   3,   0,   0,   0,   0,   0,0C0h,   3
                db    0,   0,   0,   0,   0,0C0h,   3,   0,   0,   0,   0
                db    0,0C0h,   3,   0,   0,   0,   0,   0,0C0h,   3,   0
                db    0,   0,   0,   0,0C0h,   3,   0,   0,   0,   0,   0
                db 0C0h
Bitmap2:        db 8                    ; DATA XREF: RAM_CODE:96EBo
                db 7
                db  48h, 4Dh, 69h, 69h, 69h, 69h, 48h,   0,   3,   0,   0
                db    0,   3, 1Fh,   0,   3,   0,   0,   0,   3, 0Fh,   0
                db    3,   0,   0, 3Fh,   3,   7, 18h,   3,   0,   0, 3Fh
                db    3,   3, 3Ch,   3,   0,   0, 3Fh,   3,   1, 18h,   3
                db    0,   0, 3Fh,   3,   0, 18h,   3,   0,   0, 3Fh,   3
                db    0, 18h,   3,   0,   0, 3Fh,   3,   0, 48h, 4Dh, 69h
                db  69h, 69h, 69h, 4Fh,   0,   3,   0,   0, 3Fh,   3,   0
                db    0,   3,   0,   0, 3Fh,   3,   0,   0,   3,   0,   0
                db  3Fh,   3,   0,   0,   3,   0,   0, 3Fh,   3,   0,   0
                db    3,   0,   0,   0,   3,   0,   0,   3,   0,   0,   0
                db    3,   0,   0,   0,0FFh,0FFh,0FFh,0FFh,   0,   0,   0
                db 0FFh,0FFh,0FFh,0FFh,   0, 4Fh, 4Fh, 4Fh, 4Fh, 4Fh, 4Fh
                db  4Fh,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0, 4Fh, 78h, 78h, 78h, 78h, 78h, 4Fh,   1,   0
                db    0,   0,   0,   0, 80h,   3,   0,   0,   0,   0,   0
                db 0C0h,   3,   0,   0,   0,   0,   0,0C0h,   3,   0,   0
                db    0,   0,   0,0C0h,   3,   0,   0,   0,   0,   0,0C0h
                db    3,   0,   0,   0,   0,   0,0C0h,   3,   7, 24h,0E7h
                db 0BDh,0B0h,0C0h,   3, 0Ch, 3Dh, 83h, 31h,0F0h,0C0h, 4Fh
                db  78h, 78h, 78h, 78h, 78h, 4Fh,   3,   7, 18h,0E3h, 39h
                db 0B0h,0C0h,   3,   1, 98h, 33h, 31h,0B0h,0C0h,   3, 0Dh
                db  99h,0B3h, 31h,0B0h,0C0h,   3,   7, 18h,0E3h, 3Dh,0B0h
                db 0C0h,   3,   0,   0,   0,   0,   0,0C0h,   3,   0, 3Ch
                db 0CEh, 6Ch,   0,0C0h,   3,   0, 36h,0D8h, 78h,   0,0C0h
                db    3,   0, 36h,0CEh, 70h,   0,0C0h, 4Fh, 78h, 78h, 78h
                db  78h, 78h, 4Fh,   3,   0, 36h,0C3h, 70h,   0,0C0h,   3
                db    0, 36h,0DBh, 78h,   0,0C0h,   3,   0, 3Ch,0CEh, 6Ch
                db    0,0C0h,   3,   0,   0,   0,   0,   0,0C0h,   3,   0
                db    0,   0,   0,   0,0C0h,   3,   0,   0,   0,   0,   0
                db 0C0h,   3,   0,   0,   0,   0,   0,0C0h,   3,   0,   0
                db    0,   0,   0,0C0h,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0
Bitmap3:        db 7                    ; DATA XREF: RAM_CODE:96EFo
                db 7
                db  48h, 4Dh, 4Dh, 4Dh, 4Dh, 4Dh, 48h,   0,   3,0FFh,0FFh
                db 0FFh,0FFh, 1Fh,   0,   3,0FFh,0FFh,0FFh,0FFh, 0Fh,   0
                db    3,0FFh,0FFh,0C0h,0FFh,   7, 18h,   3,0FFh,0FFh,0C0h
                db 0FFh,   3, 3Ch,   3,0FFh,0FFh,0C0h,0FFh,   1, 18h,   3
                db 0FFh,0FFh,0C0h,0FFh,   0, 18h,   3,0FFh,0FFh,0C0h,0FFh
                db    0,   0,   3,0FFh,0FFh,0C0h,0FFh,   0, 4Fh, 4Dh, 4Dh
                db  4Dh, 4Dh, 4Dh, 4Fh,   0,   3,0FFh,0FFh,0C0h,0FFh,   0
                db    0,   3,0FFh,0FFh,0C0h,0FFh,   0,   0,   3,0FFh,0FFh
                db 0C0h,0FFh,   0,   0,   3,0FFh,0FFh,0C0h,0FFh,   0,   0
                db    3,0FFh,0FFh,0FFh,0FFh,   0,   0,   3,0FFh,0FFh,0FFh
                db 0FFh,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0, 4Fh, 4Fh, 4Fh, 4Fh, 4Fh, 4Fh
                db  4Fh,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   1,0FFh,0FFh,0FFh
                db 0FFh,0FFh, 80h,   3,0FFh,0FFh,0FFh,0FFh,0FFh,0C0h,   3
                db 0FFh,0FFh,0FFh,0FFh,0FFh,0C0h,   3,0FFh,0FFh,0FFh,0FFh
                db 0FFh,0C0h, 4Fh, 78h, 78h, 78h, 78h, 78h, 4Fh,   3,   0
                db    0,   0,   0,   0,0C0h,   3,   7, 24h,0E7h,0BDh,0B0h
                db 0C0h,   3, 0Ch, 3Dh, 83h, 31h,0F0h,0C0h,   3,   7, 18h
                db 0E3h, 39h,0B0h,0C0h,   3,   1, 98h, 33h, 31h,0B0h,0C0h
                db    3, 0Fh, 19h,0E3h, 3Dh,0B0h,0C0h,   3,   0,   0,   0
                db    0,   0,0C0h,   3,   0, 3Ch,0CEh, 6Ch,   0,0C0h, 4Fh
                db  78h, 78h, 78h, 78h, 78h, 4Fh,   3,   0, 36h,0D8h, 78h
                db    0,0C0h,   3,   0, 36h,0CEh, 70h,   0,0C0h,   3,   0
                db  36h,0C3h, 78h,   0,0C0h,   3,   0, 3Ch,0DEh, 6Ch,   0
                db 0C0h,   3,   0,   0,   0,   0,   0,0C0h,   3,   0,   0
                db    0,   0,   0,0C0h,   3,   0,   0,   0,   0,   0,0C0h
                db    3,   0,   0,   0,   0,   0,0C0h,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0
Bitmap4:        db 5                    ; DATA XREF: RAM_CODE:96F3o
                db 7
                db  48h, 4Dh, 4Dh, 4Dh, 4Dh, 4Dh, 48h,   0,   3,0FFh,0FFh
                db 0FFh,0FFh, 0Fh, 18h,   3,0FFh,0FFh,0C1h,0FFh,   3, 3Ch
                db    3,0FFh,0FFh,0C1h,0FFh,   0, 18h,   3,0FFh,0FFh,0C1h
                db 0FFh,   0,   0,   3,0FFh,0FFh,0C1h,0FFh,   0,   0,   3
                db 0FFh,0FFh,0C1h,0FFh,   0,   0,   3,0FFh,0FFh,0C1h,0FFh
                db    0,   0,   3,0FFh,0FFh,0FFh,0FFh,   0, 4Fh, 4Fh, 4Fh
                db  4Fh, 4Fh, 4Fh, 4Fh,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1
                db 0FFh,0FFh,0FFh,0FFh,0FFh, 80h,   3,0FFh,0FFh,0FFh,0FFh
                db 0FFh,0C0h,   3,0FFh,0FFh,0FFh,0FFh,0FFh,0C0h,   3,0FFh
                db 0FFh,0FFh,0FFh,0FFh,0C0h, 4Fh, 78h, 78h, 78h, 78h, 78h
                db  4Fh,   3,   7, 3Ch,0E3h, 39h,0B0h,0C0h,   3,   5, 98h
                db 0B3h, 31h,0B0h,0C0h,   3,   0,   0,   0,   0,   0,0C0h
                db    3,   0, 1Bh, 67h, 3Ch,   0,0C0h,   3,   0, 1Bh, 65h
                db 0BCh,   0,0C0h,   3,   0,   0,   0,   0,   0,0C0h,   3
                db    0,   0,   0,   0,   0,0C0h,   3,   0,   0,   0,   0
                db    0,0C0h,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0
Bitmap5:        db 5                    ; DATA XREF: RAM_CODE:96F7o
                db 9
                db  47h, 47h, 47h, 47h, 47h, 47h, 47h, 47h, 47h,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,0FFh,0FFh,0FFh
                db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh, 80h,   0,   0,   0,   0
                db    0,   0,   0,   1, 78h, 79h, 78h, 78h, 78h, 78h, 78h
                db  79h, 78h, 40h,   0,   0,   0,   0,   0,   0,   0,   2
                db  40h,   0,   0,   0,   0,   0,   0,   0,   2, 40h,   0
                db    0,   0,   0,   0,   0,   0,   2, 41h,0FFh,0FFh,0FFh
                db 0FFh,0FFh,0FFh,0FFh, 82h, 41h,0FFh, 80h,   0,   0,   0
                db    0,0FFh, 82h, 41h,0FFh, 80h,   0,   0,   0,   0,0FFh
                db  82h, 41h,0FFh, 80h,   0,   0,   0,   0,0FFh, 82h, 41h
                db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh, 82h, 78h, 7Ch, 78h
                db  78h, 78h, 78h, 78h, 78h, 78h, 40h,   0,   0,   0,   0
                db    0,   0,   0,   2, 40h,   0,   0,   0,   0,   0,   0
                db    0,   2, 40h,   0,   0,   0,   0,   0,   1,0FFh, 82h
                db  40h, 1Fh,   0,   0,   0,   0,   1,   0, 82h, 40h, 1Fh
                db    0,   0,   0,   0,   1,   0, 82h, 40h, 1Fh,   0,   0
                db    0,   0,   1,   0, 82h, 40h,   0,   0,   0,   0,   0
                db    1,0FFh, 82h, 40h,   0,   0,   0,   0,   0,   0,   0
                db    2, 47h, 47h, 47h, 47h, 47h, 47h, 47h, 47h, 47h,0BFh
                db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FDh, 80h,   0,   0
                db    0,   0,   0,   0,   0,   1,0FFh,0FFh,0FFh,0FFh,0FFh
                db 0FFh,0FFh,0FFh,0FFh,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0
Bitmap6:        db 5                    ; DATA XREF: RAM_CODE:96FBo
                db 21
                db  47h, 47h, 47h, 47h, 47h, 47h, 47h, 47h, 47h, 47h, 47h
                db  47h, 47h, 47h, 47h, 47h, 47h, 47h, 47h, 47h, 47h,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0, 7Fh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
                db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
                db 0FFh,0FEh, 45h, 45h, 45h, 45h, 45h, 45h, 45h, 45h, 45h
                db  45h, 45h, 45h, 45h, 45h, 45h, 45h, 45h, 45h, 45h, 45h
                db  45h,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   7, 77h, 80h,0BCh, 78h, 18h,   0
                db    8, 18h,   0,   6,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   2, 22h, 41h, 12h, 24h,   8,   0,   8
                db    8,   0,   4,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   2, 22h, 21h, 11h, 22h, 0Eh, 31h, 9Ch,   8
                db 0C6h, 1Ch, 65h, 80h,   0,   0,   0,   0,   0,   0,   0
                db    0,   3,0E2h, 22h, 11h, 22h,   9, 4Ah, 48h,   9, 21h
                db  24h, 92h, 40h,   0,   0,   0,   0,   0,   0,   0,   0
                db    2, 22h, 22h, 11h, 22h,   9, 4Ah, 48h,   9, 27h, 24h
                db 0F2h,   0,   0,   0,   0,   0,   0,   0,   0,   0,   2
                db  22h, 24h, 11h, 22h,   9, 4Ah, 4Ah,   9, 29h, 24h, 82h
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   2, 22h
                db  44h, 12h, 24h,   9, 4Ah, 4Ah,   9, 29h, 24h, 92h,   0
                db    0,   0,   0,   0, 45h, 45h, 45h, 45h, 45h, 45h, 45h
                db  45h, 45h, 45h, 45h, 45h, 45h, 45h, 45h, 45h, 45h, 45h
                db  45h, 45h, 45h,   0,   0,   0,   0,   7, 77h, 88h, 3Ch
                db  78h, 16h, 31h, 84h, 1Ch,0C6h, 9Ah, 67h,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   8,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 34h
                db    0,   0,   0, 40h, 30h, 20h, 10h,0C1h, 83h,0C3h, 80h
                db    0, 80h, 82h,   0,   0, 20h,   0,   0,   0, 4Ch,   0
                db    0,   0,   0, 10h, 20h, 31h, 22h, 42h, 41h,   0,   0
                db  80h, 82h,   0,   0, 20h,   0,   0,   0, 84h,0CBh, 3Bh
                db 0ACh,0CBh, 1Ch, 70h, 52h, 14h, 27h,   1,   6, 19h,0C0h
                db 0C6h, 65h, 86h, 71h, 96h,   0, 45h, 45h, 45h, 45h, 45h
                db  45h, 45h, 45h, 45h, 45h, 45h, 45h, 45h, 45h, 45h, 45h
                db  45h, 45h, 45h, 45h, 45h,   0, 81h, 24h, 91h, 12h, 44h
                db  92h, 20h, 12h, 14h, 24h, 81h,   1, 20h, 80h,0C6h, 92h
                db  48h, 22h, 49h,   0,   0, 81h, 24h, 89h, 10h, 44h, 92h
                db  20h, 11h, 32h, 60h, 41h,   7, 18h, 80h,0AAh, 92h, 46h
                db  23h,0C8h,   0,   0, 85h, 24h, 8Ah, 10h, 43h, 12h, 28h
                db  10h,0D1h,0A8h, 41h,   9,   4,0A0h,0AAh, 92h, 41h, 2Ah
                db    8,   0,   0, 49h, 24h, 86h, 10h, 44h, 12h, 28h, 12h
                db  24h, 44h, 81h, 29h, 24h,0A0h, 92h, 92h, 49h, 2Ah, 48h
                db    0,   0, 30h,0C7h,   4, 38h,0E7h, 3Bh, 10h, 79h,0C3h
                db  83h,   3,0E6h, 98h, 41h,0D6h, 67h, 66h, 11h, 9Ch,   0
                db    0,   0,   4, 14h,   0,   8, 80h,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0, 0Eh,   8,   0,   7,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0, 47h, 47h, 47h
                db  47h, 47h, 47h, 47h, 47h, 47h, 47h, 47h, 47h, 47h, 47h
                db  47h, 47h, 47h, 47h, 47h, 47h, 47h, 7Fh,0FFh,0FFh,0FFh
                db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
                db 0FFh,0FFh,0FFh,0FFh,0FFh,0FEh,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0
Bitmap7:        db 3                    ; DATA XREF: RAM_CODE:96FFo
                db 19
                db    7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7
                db    7,   7,   7,   7,   7,   7,   7,   7,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0, 3Dh, 99h,0F7h,0EFh
                db  9Fh, 83h, 33h,0CCh,0DFh,   1,0F6h, 67h,0DFh,0BFh, 41h
                db    7,0CFh, 3Eh,0CCh, 3Dh, 9Bh,0F7h,0EFh,0DFh, 83h, 37h
                db 0ECh,0DFh, 83h,0F6h, 6Fh,0DFh,0BFh, 63h,   7,0EFh, 7Eh
                db 0DCh, 19h,0DBh,   6, 0Ch,0C6h,   3, 36h, 6Ch,0D9h, 83h
                db    6, 6Ch,   6, 30h, 77h,   6, 66h, 60h,0F8h, 19h,0DBh
                db 0E7h, 8Fh,0C6h,   3,0F6h, 6Ch,0DFh, 83h,0E7h,0EFh, 86h
                db  3Ch, 7Fh,   6, 66h, 7Ch,0F0h,   7,   7,   7,   7,   7
                db    7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7
                db    7,   7,   7, 19h,0B9h,0F7h, 8Fh, 86h,   1,0E6h, 6Ch
                db 0DFh,   1,0F3h,0C7h,0C6h, 3Ch, 6Bh,   6, 66h, 3Eh,0F0h
                db  19h,0B8h, 36h, 0Fh, 86h,   0,0C6h, 6Ch,0DFh,   0, 31h
                db  80h,0C6h, 30h, 6Bh,   6, 66h,   6,0F8h, 3Dh, 9Bh,0F7h
                db 0EDh,0C6h,   0,0C7h,0EFh,0DBh, 83h,0F1h, 8Fh,0C6h, 3Fh
                db  63h,   7,0EFh, 7Eh,0DCh, 3Dh, 9Bh,0E7h,0ECh,0C6h,   0
                db 0C3h,0C7h, 99h, 83h,0E1h, 8Fh, 86h, 3Fh, 63h,   7,0CFh
                db  7Ch,0CCh,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7
                db    7,   7,   7,   7,   7,   7,   7,   7,   6,   0,   0
                db    0,   0,   1,0ECh,0C1h,0F3h,0E7h,0B3h, 7Eh,   7, 99h
                db 0BFh,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1
                db 0ECh,0C1h,0FBh,0F7h,0B3h, 7Eh, 0Fh,0D9h,0BFh,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,0CEh,0C1h, 9Bh
                db  33h, 33h, 60h, 0Ch,0DDh,0B0h,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,0CEh,0C1h, 9Bh,0F3h, 33h, 78h
                db  0Ch,0DDh,0BCh,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,0CDh,0C1h, 9Bh,0E3h, 33h, 78h, 0Ch,0DBh,0BCh
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,0CDh
                db 0C1h, 9Bh,0E3h, 1Eh, 60h, 0Ch,0DBh,0B0h,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   1,0ECh,0C1h,0FBh, 77h
                db  9Eh, 7Eh, 0Fh,0D9h,0BFh,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   1,0ECh,0C1h,0F3h, 37h, 8Ch, 7Eh,   7
                db  99h,0BFh,   0,   0,   0,   0,   0
Bitmap8:        db 3                    ; DATA XREF: RAM_CODE:9703o
                db 13h
                db    7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7
                db    7,   7,   7,   7,   7,   7,   7,   7,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,0F9h, 83h,0F3h,0C7h,0DFh, 83h, 19h,0E7h,0BFh,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,0FDh, 83h
                db 0F7h,0EFh,0DFh, 83h, 1Bh,0F7h,0BFh,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,0CDh, 83h,   6, 6Ch, 18h
                db    3, 1Bh, 33h, 0Ch,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,0FDh, 83h,0C6h, 6Fh, 9Eh,   3, 5Bh, 33h
                db  0Ch,   0,   0,   0,   0,   0,   7,   7,   7,   7,   7
                db    7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7
                db    7,   7,   7,   0,   0,   0,   0,   0,0F9h, 83h,0C7h
                db 0E7h,0DEh,   3, 5Bh,0F3h, 0Ch,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,0C1h, 83h,   7,0E0h,0D8h,   3
                db 0FBh,0F3h, 0Ch,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,0C1h,0FBh,0F6h, 6Fh,0DFh, 83h,0BBh, 37h, 8Ch
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,0C1h
                db 0FBh,0F6h, 6Fh, 9Fh, 83h, 1Bh, 37h, 8Ch,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
                db    0,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7
                db    7,   7,   7,   7,   7,   7,   7,   7,   7,   0,   0
                db    0,   1,0F6h, 67h,0DFh,0BFh, 41h, 1Fh, 1Eh, 3Ch,0FDh
                db 0ECh,0CFh,   0,   0,   0,   0,   0,   0,   0,   3,0F6h
                db  6Fh,0DFh,0BFh, 63h, 1Fh,0BFh, 7Eh,0FDh,0ECh,0DFh, 80h
                db    0,   0,   0,   0,   0,   0,   3,   6, 6Ch,   6, 30h
                db  77h, 19h,0B3h, 66h, 30h,0CEh,0D9h, 80h,   0,   0,   0
                db    0,   0,   0,   3,0E7h,0EFh, 86h, 3Ch, 7Fh, 1Fh, 33h
                db  66h, 30h,0CEh,0D8h,   0,   0,   0,   0,   0,   0,   0
                db    1,0F3h,0C7h,0C6h, 3Ch, 6Bh, 1Fh,0B3h, 66h, 30h,0CDh
                db 0DBh, 80h,   0,   0,   0,   0,   0,   0,   0, 31h, 80h
                db 0C6h, 30h, 6Bh, 19h,0B3h, 66h, 30h,0CDh,0D9h, 80h,   0
                db    0,   0,   0,   0,   0,   3,0F1h, 8Fh,0C6h, 3Fh, 63h
                db  1Fh,0BFh, 7Eh, 31h,0ECh,0DFh, 80h,   0,   0,   0,   0
                db    0,   0,   3,0E1h, 8Fh, 86h, 3Fh, 63h, 1Fh, 1Eh, 3Ch
                db  31h,0ECh,0CFh, 80h,   0,   0,   0

; --------------- S U B R O U T I N E ---------------------------------------


InterruptRoutine:                       ; CODE XREF: RAM_CODE:8484j
                di
                push    af
                push    bc
                push    de
                push    hl
                call    InterruptAnimation
                ld      bc, 0B03h       ; 11th regs of the RTC (10th years) + RTC Port address
                in      a, (c)
                inc     a
                ld      d, a
                out     (c), a
                in      a, (c)
                xor     d               ; Check if was read that was written
                jr      nz, NoTimePrint
                dec     d
                out     (c), d          ; Return correct value to the RTC register
                ld      de, 70Fh        ; Prepare mask values
                ld      b, a            ; b=a=0
                in      a, (c)
                and     e
                push    af              ; Push 0-9 seconds value
                inc     b
                in      a, (c)
                and     d
                push    af              ; Push 10th seconds value
                ld      a, 0Ah
                push    af              ; Push ':' delimiter
                inc     b
                in      a, (c)
                and     e
                push    af              ; Push 0-9 minutes value
                inc     b
                in      a, (c)
                and     d
                push    af              ; Push 10th minutes value
                ld      a, 0Ah
                push    af              ; Push ':' delimiter
                inc     b
                in      a, (c)
                and     e
                push    af              ; Push 0-9 hours value
                inc     b
                in      a, (c)
                and     3
                push    af              ; Push 10th hours value
                ld      b, 8
                ld      e, 6            ; Print position in the X axis (x=6,y=7)

TimeStringPrintLoop:                    ; CODE XREF: InterruptRoutine+4Aj
                pop     af
                call    Putchar_A_to_ED_pos ; Print char
                inc     e
                djnz    TimeStringPrintLoop

NoTimePrint:                            ; CODE XREF: InterruptRoutine+14j
                ld      a, 7Fh
                in      a, (ULA)
                rrca
                jr      c, InterruptRoutineEnd
                ld      a, 0FEh
                in      a, (ULA)
                rrca
                jr      c, InterruptRoutineEnd ; Check SS + Space (BREAK)
                                        ;
                xor     a
                out     (RAMp), a       ; Disable MB02 Memory mapping
                ld      (jump_addr+2), a ; Set Jump address to 0
                jp      BootEnd
; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦

InterruptRoutineEnd:                    ; CODE XREF: InterruptRoutine+51j
                                        ; InterruptRoutine+58j
                pop     hl
                pop     de
                pop     bc
                pop     af
                ei
                ret
; End of function InterruptRoutine


; --------------- S U B R O U T I N E ---------------------------------------


InterruptAnimation:                     ; CODE XREF: InterruptRoutine+5p
                                        ; DATA XREF: InterruptAnimation+7w
                ld      a, 1
                dec     a
                jr      nz, noinit_attr_index
                ld      a, 17

noinit_attr_index:                      ; CODE XREF: InterruptAnimation+3j
                ld      (InterruptAnimation+1), a
                ld      hl, 96CBh       ; AttributeTable - 1
                ld      d, 0
                ld      e, a
                add     hl, de
                ld      a, (hl)
                ld      hl, (videoram+1921h) ; Attribute VRAM addr for text flashing
                ld      e, 13           ; DX = 32-Xsize
                ld      c, 3            ; Attribute flashing window Ysize

textflash_loop1:                        ; CODE XREF: InterruptAnimation+21j
                ld      b, 19           ; Attribute flashing window Xsize

textflash_loop2:                        ; CODE XREF: InterruptAnimation+1Dj
                ld      (hl), a         ; INSERT YOUR SYSTEM DISK
                                        ;       IN DRIVE ONE
                inc     hl
                djnz    textflash_loop2
                add     hl, de
                dec     c
                jr      nz, textflash_loop1

AnimationTimer1:                        ; DATA XREF: InterruptAnimation+26w
                                        ; InterruptAnimation+3Cw
                ld      a, 1
                dec     a
                ld      (AnimationTimer1+1), a
                ret     nz

AnimationBitmapCnt:                     ; DATA XREF: InterruptAnimation+32w
                ld      a, 5
                inc     a
                cp      6
                jr      c, noinit
                xor     a

noinit:                                 ; CODE XREF: InterruptAnimation+2Fj
                ld      (AnimationBitmapCnt+1), a
                push    af
                ld      hl, AnimationDelayTable
                ld      e, a
                add     hl, de
                ld      a, (hl)
                ld      (AnimationTimer1+1), a ; Set new animation timer value
                pop     af
; End of function InterruptAnimation


; --------------- S U B R O U T I N E ---------------------------------------


BlitBitmapByIndex:                      ; CODE XREF: Startup_after_unpack+1Bp
                                        ; Startup_after_unpack+20p
                                        ; Startup_after_unpack+6Fp
                add     a, a
                add     a, a
                ld      hl, BitmapIndexTable
                ld      d, 0
                ld      e, a
                add     hl, de
                ld      e, (hl)         ; X position
                inc     hl
                ld      d, (hl)         ; Y Position
                inc     hl
                ld      a, (hl)         ; Low byte of address
                inc     hl
                ld      h, (hl)         ; High byte of address
                ld      l, a
                ld      b, (hl)
                inc     hl
                ld      c, (hl)
                inc     hl
                call    GetVRAMaddrDE

BlitMainLoop:                           ; CODE XREF: BlitBitmapByIndex+47j
                push    de
                push    bc
                ld      a, d
                rrca
                rrca
                rrca
                and     3
                or      58h
                ld      d, a

BlitAttrLoop:                           ; CODE XREF: BlitBitmapByIndex+28j
                ld      a, (hl)
                inc     hl
                ld      (de), a
                inc     e
                dec     c
                jr      nz, BlitAttrLoop
                pop     bc
                pop     de

BlitPixelLoop1:                         ; CODE XREF: BlitBitmapByIndex+3Bj
                push    de
                push    bc

BlitPixelLoop2:                         ; CODE XREF: BlitBitmapByIndex+33j
                ld      a, (hl)
                inc     hl
                ld      (de), a
                inc     e
                dec     c
                jr      nz, BlitPixelLoop2
                pop     bc
                pop     de
                inc     d
                ld      a, d
                and     7
                jr      nz, BlitPixelLoop1
                ld      a, 20h
                add     a, e
                ld      e, a
                ccf
                sbc     a, a
                and     0F8h
                add     a, d
                ld      d, a
                djnz    BlitMainLoop
                ret
; End of function BlitBitmapByIndex


; --------------- S U B R O U T I N E ---------------------------------------


GetVRAMaddrDE:                          ; CODE XREF: BlitBitmapByIndex+15p
                                        ; Putchar_A_to_ED_pos+Cp
                ld      a, d            ; y=D(0-23), x=E(0-31)
                rrca
                rrca
                rrca
                and     0E0h
                add     a, e
                ld      e, a
                ld      a, d
                and     18h
                or      40h
                ld      d, a
                ret
; End of function GetVRAMaddrDE

; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
AttributeTable: db    1,   2,   3,   4,   5,   6, 46h, 47h, 47h, 46h,   6
                db    5,   4,   3,   2,   1,   0
AnimationDelayTable:db  10, 25,  6,  6,  6, 10 ; DATA XREF: InterruptAnimation+36o
BitmapIndexTable:db 22                   ; Xpos ; DATA XREF: BlitBitmapByIndex+2o
                db 6                    ; Ypos
                dw Bitmap0              ; BitmapAddr
                db 23                   ; Xpos
                db 10                   ; Ypos
                dw Bitmap1              ; BitmapAddr
                db 23                   ; Xpos
                db 9                    ; Ypos
                dw Bitmap2              ; BitmapAddr
                db 23                   ; Xpos
                db 8                    ; Ypos
                dw Bitmap3              ; BitmapAddr
                db 23                   ; Xpos
                db 8                    ; Ypos
                dw Bitmap4              ; BitmapAddr
                db 22                   ; Xpos
                db 6                    ; Ypos
                dw Bitmap5              ; BitmapAddr
                db 0                    ; Xpos
                db 13                   ; Ypos
                dw Bitmap6              ; BitmapAddr
                db 1                    ; Xpos
                db 9                    ; Ypos
                dw Bitmap7              ; BitmapAddr
                db 1                    ; Xpos
                db 9                    ; Ypos
                dw Bitmap8              ; BitmapAddr

; --------------- S U B R O U T I N E ---------------------------------------


Putchar_A_to_ED_pos:                    ; CODE XREF: InterruptRoutine+46p
                push    de
                push    bc
                add     a, a
                add     a, a
                add     a, a
                ld      h, 0
                ld      l, a
                ld      bc, ClockFont
                add     hl, bc
                call    GetVRAMaddrDE
                ld      b, 8

putchar_loop:                           ; CODE XREF: Putchar_A_to_ED_pos+15j
                ld      a, (hl)
                ld      (de), a
                inc     hl
                inc     d
                djnz    putchar_loop
                pop     bc
                pop     de
                ret
; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
ClockFont:                              ; DATA XREF: Putchar_A_to_ED_pos+8o
                db 0FEh,0FEh,0C6h,0C6h,0C6h,0C6h,0FEh,0FEh ; '0'
                db    6,   6,   6,   6,   6,   6,   6,   6 ; '1'
                db 0FEh,0FEh,   6,0FEh,0FEh,0C0h,0FEh,0FEh ; '2'
                db 0FEh,0FEh,   6,0FEh,0FEh,   6,0FEh,0FEh ; '3'
                db 0C6h,0C6h,0C6h,0FEh,0FEh,   6,   6,   6 ; '4'
                db 0FEh,0FEh,0C0h,0FEh,0FEh,   6,0FEh,0FEh ; '5'
                db 0FEh,0FEh,0C0h,0FEh,0FEh,0C6h,0FEh,0FEh ; '6'
                db 0FEh,0FEh,   6,   6,   6,   6,   6,   6 ; '7'
                db 0FEh,0FEh,0C6h,0FEh,0FEh,0C6h,0FEh,0FEh ; '8'
                db 0FEh,0FEh,0C6h,0FEh,0FEh,   6,   6,   6 ; '9'
                db    0, 38h, 38h,   0,   0, 38h, 38h,   0 ; ':'
; End of function Putchar_A_to_ED_pos


; --------------- S U B R O U T I N E ---------------------------------------

; IM2 Vector Table

Startup_after_unpack:                   ; CODE XREF: RAM_UNPACK:8481j
                ld      hl, InterruptVectorTable
                ld      de, (InterruptVectorTable+1)
                ld      b, e
                ld      c, l
                ld      (hl), 84h       ; Vector value
                ld      a, h
                ld      i, a
                im      2
                ldir                    ; Build IM2 Vector table (257 bytes)
                                        ;
                ld      h, 58h          ; 22528 (0x5800)
                ld      d, h
                dec     c
                ld      (hl), 46h       ; BRIGHT 1: PAPER 0: INK 6
                ldir                    ; Fill upper 1/3 of attributes VRAM (256 bytes)
                                        ;
                ld      a, BitmapIdx6
                call    BlitBitmapByIndex
                ld      a, BitmapIdx7
                call    BlitBitmapByIndex
                ei

BootInit:                               ; CODE XREF: Startup_after_unpack+48j
                                        ; Startup_after_unpack+63j
                                        ; Startup_after_unpack+6Aj
                ld      e, 4
                ld      a, 0D0h         ; WD2797 command: ForceInterrupt(Terminate without interrupt)
                out     (FDC), a
                ld      (BootSectorBuffer), a ; Clear BSDOS boot sector ID byte
                ld      a, 0C3h         ; Z80DMA command: WR6: Reset
                out     (DMA), a

HD_DD:                                  ; DATA XREF: Startup_after_unpack+35w
                ld      a, 0            ; Default if HD clocking
                xor     1               ; Toggle HDD/DD clocking
                ld      (HD_DD+1), a
                out     (REZ), a        ; Set HD or DD floppy controller clocking
                ld      a, 3            ; Select FloppyDrive 0 and start FloppyMotorDrive0
                out     (MOT), a
                out     (FDC), a        ; WD2797 command: Restore to Track0 with fastest stepping rate

IsFloppyReadyLoop1:                     ; CODE XREF: Startup_after_unpack+43j
                in      a, (MOT)
                and     e
                jr      z, IsFloppyReadyLoop1
                in      a, (FDC)        ; WDC2797 read status: (command type 1) byte
                and     e
                jr      z, BootInit     ; If FloppyDrive head isn't positioned to Track0 try again
                                        ;
                ld      a, 1
                out     (FDS), a        ; WD2797 set sector reg to 1
                                        ;
                ld      bc, 100Bh       ; DMA sequence length (16 bytes) + DMA port address
                ld      hl, DMA_Sequence
                otir                    ; Initialise Z80DMA
                                        ;
                ld      a, 88h
                out     (FDC), a        ; WD2797 command: Read sector with standard sector length flag

IsFloppyReadyLoop2:                     ; CODE XREF: Startup_after_unpack+5Dj
                in      a, (MOT)
                and     e
                jr      z, IsFloppyReadyLoop2
                in      a, (FDC)        ; WDC2797 read status: (command type 2) byte
                and     1Ch
                jr      nz, BootInit    ; If some read error (Record not found, CRC error, Data lost) occured, try again
                ld      a, (BootSectorBuffer)
                cp      18h             ; Check BSDOS boot sector ID identifier
                jr      nz, BootInit
                di
                ld      a, BitmapIdx8
                call    BlitBitmapByIndex

BootEnd:                                ; CODE XREF: InterruptRoutine+60j
                ld      a, 0C3h         ; Z80DMA command: WR6: Reset
                out     (DMA), a
                ld      a, 0D0h         ; WD2797 command: ForceInterrupt(Terminate without interrupt)
                out     (FDC), a
                xor     a
                out     (MOT), a        ; Stop all floppy motors and disable selection of the any floppy drive
                ld      a, 3Fh
                ld      i, a
                im      1

jump_addr:                              ; DATA XREF: InterruptRoutine+5Dw
                jp      BootSectorBuffer ; Jump to the boot sector
; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
DMA_Sequence:                           ; DATA XREF: Startup_after_unpack+51o
                db 0C7h                 ; WR6: Reset Port A Timing
                db 0CBh                 ; WR6: Reset Port B Timing
                db 79h                  ; WR0: DMA Transfer PortB->PortA
                dw BootSectorBuffer     ;  Destination address
                dw 3FFh                 ;  Length of data buffer
                db 14h                  ; WR1: PortA is memory, PortA is incremented, default timming
                db 28h                  ; WR2: PortB is I/O, PortB is fixed, default timming
                db 0C0h                 ; WR3: Enable DMA (There is BUG. DMA cannot be enabled before full initializing!!!)
                db 8Dh                  ; WR4:Byte DMA mode, no interrupt, no pulse control
                dw FDD                  ;  FDD port address
                db 10010010b            ; WR5: Ready active LOW, CE/WAIT, Stop on End-of-Block
                db 0CFh                 ; WR6: Load
                db 87h                  ; WR6: Enable DMA
; End of function Startup_after_unpack

; end of 'RAM_CODE'

; ===========================================================================

; Segment type: Regular
                segment RAM_ITABLE
                org 0BE00h
InterruptVectorTable:ds 101h            ; DATA XREF: Startup_after_unpacko
                                        ; Startup_after_unpack+3o
; end of 'RAM_ITABLE'

; ===========================================================================

; Segment type: Regular
                segment RAM_STACK
                org 0BF01h
StackBottom:    ds 0FFh
; end of 'RAM_STACK'


                end