; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
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