; =============================================================================
; Cold boot entry path 0036h through menu / key dispatch / test entry
; Source: VECTOR 4/8086 - V2_AC_Interleaved_XHE_XHO.bin
; CPU: Z80  |  base: 0000h  |  size: 8192
; Generated linear disassembly with fixed relative branch targets
; =============================================================================

; --- Cold boot -> menu -> key dispatch -> T handler start ---
0036  f3                DI  ; COLD BOOT: DI
0037  21fd07            LD HL, 07FDh  ; I/O init table @07FD, 14 pairs
003A  060e              LD B, 0Eh
003C  4e                LD C, (HL)
003D  23                INC HL
003E  7e                LD A, (HL)
003F  ed79              OUT (C), A
0041  00                NOP
0042  00                NOP
0043  23                INC HL
0044  10f6              DJNZ 003Ch
0046  1e00              LD E, 00h  ; mapper probe start
0048  0e16              LD C, 16h
004A  0620              LD B, 20h
004C  1680              LD D, 80h
004E  ed51              OUT (C), D
0050  210020            LD HL, 2000h
0053  7e                LD A, (HL)
0054  2f                CPL
0055  77                LD (HL), A
0056  be                CP (HL)
0057  2ec8              LD L, C8h
0059  2004              JR NZ, 005Fh
005B  1e01              LD E, 01h
005D  2e88              LD L, 88h
005F  1609              LD D, 09h
0061  0620              LD B, 20h
0063  0e16              LD C, 16h
0065  ed69              OUT (C), L
0067  78                LD A, B
0068  c608              ADD A, 08h
006A  47                LD B, A
006B  2d                DEC L
006C  15                DEC D
006D  20f6              JR NZ, 0065h
006F  2e31              LD L, 31h
0071  78                LD A, B
0072  d610              SUB 10h
0074  47                LD B, A
0075  ed69              OUT (C), L
0077  7b                LD A, E
0078  32dd5f            LD (5FDDh), A
007B  310060            LD SP, 6000h  ; SP=6000h
007E  212708            LD HL, 0827h  ; video OUTI to port 04
0081  011804            LD BC, 0418h
0084  eda3              OUTI
0086  dde3              EX (SP), IX
0088  dde3              EX (SP), IX
008A  20f8              JR NZ, 0084h
008C  212608            LD HL, 0826h  ; CRTC program ports 0E/0F
008F  060e              LD B, 0Eh
0091  0e0f              LD C, 0Fh
0093  78                LD A, B
0094  3d                DEC A
0095  d30e              OUT (0Eh), A
0097  7e                LD A, (HL)
0098  d30f              OUT (0Fh), A
009A  2b                DEC HL
009B  10f6              DJNZ 0093h
009D  cd2105            CALL 0521h  ; clear console 0521
00A0  16d0              LD D, D0h  ; fill attr banks D0-DE @7000
00A2  cd3604            CALL 0436h
00A5  d5                PUSH DE
00A6  210070            LD HL, 7000h
00A9  110170            LD DE, 7001h
00AC  01ff07            LD BC, 07FFh
00AF  360f              LD (HL), 0Fh
00B1  edb0              LDIR
00B3  d1                POP DE
00B4  7a                LD A, D
00B5  14                INC D
00B6  fedf              CP DFh
00B8  20e8              JR NZ, 00A2h
00BA  0e01              LD C, 01h
00BC  212b08            LD HL, 082Bh
00BF  0606              LD B, 06h
00C1  eda3              OUTI
00C3  dde3              EX (SP), IX
00C5  dde3              EX (SP), IX
00C7  20f8              JR NZ, 00C1h
00C9  3e08              LD A, 08h
00CB  d300              OUT (00h), A
00CD  218505            LD HL, 0585h  ; print title @0585
00D0  cde403            CALL 03E4h
00D3  0e21              LD C, 21h
00D5  0612              LD B, 12h
00D7  3e05              LD A, 05h
00D9  cd4304            CALL 0443h
00DC  0d                DEC C
00DD  20f6              JR NZ, 00D5h
00DF  21a805            LD HL, 05A8h  ; print revision @05A8
00E2  cde403            CALL 03E4h
00E5  21205b            LD HL, 5B20h
00E8  22d45f            LD (5FD4h), HL
00EB  210022            LD HL, 2200h  ; main RAM test @2200
00EE  b7                OR A
00EF  77                LD (HL), A
00F0  3eff              LD A, FFh
00F2  be                CP (HL)
00F3  200a              JR NZ, 00FFh
00F5  217e06            LD HL, 067Eh  ; MAIN MEMORY NOT INSTALLED
00F8  cde403            CALL 03E4h
00FB  cddd03            CALL 03DDh
00FE  76                HALT  ; HALT if no RAM
00FF  ed5bd85f          LD DE, (5FD8h)  ; phase word (5FD8)
0103  213130            LD HL, 3031h
0106  b7                OR A
0107  ed52              SBC HL, DE
0109  2844              JR Z, 014Fh
010B  213230            LD HL, 3032h
010E  b7                OR A
010F  ed52              SBC HL, DE
0111  2818              JR Z, 012Bh
0113  213130            LD HL, 3031h
0116  22d85f            LD (5FD8h), HL
0119  21cf06            LD HL, 06CFh  ; PERFORMING SYSTEM TEST
011C  cde403            CALL 03E4h
011F  cdd201            CALL 01D2h
0122  da4f01            JP C, 014Fh
0125  213230            LD HL, 3032h
0128  22d85f            LD (5FD8h), HL
012B  310022            LD SP, 2200h  ; AUTO-BOOT entry
012E  3aaa09            LD A, (09AAh)
0131  b7                OR A
0132  281b              JR Z, 014Fh
0134  21e706            LD HL, 06E7h  ; LOADING - PLEASE WAIT
0137  cde403            CALL 03E4h
013A  cdaa15            CALL 15AAh
013D  b7                OR A
013E  200f              JR NZ, 014Fh
0140  cd7210            CALL 1072h
0143  380a              JR C, 014Fh
0145  2008              JR NZ, 014Fh
0147  3e18              LD A, 18h
0149  cd4304            CALL 0443h
014C  cd0024            CALL 2400h  ; CALL 2400 loaded system
014F  310022            LD SP, 2200h  ; MAIN MENU
0152  cdaa15            CALL 15AAh
0155  3e18              LD A, 18h
0157  cd4304            CALL 0443h
015A  217c06            LD HL, 067Ch
015D  cde403            CALL 03E4h
0160  3aaa09            LD A, (09AAh)
0163  b7                OR A
0164  2806              JR Z, 016Ch
0166  21d205            LD HL, 05D2h  ; print [W] if (09AA)
0169  cde403            CALL 03E4h
016C  3aad09            LD A, (09ADh)
016F  b7                OR A
0170  2806              JR Z, 0178h
0172  21fa05            LD HL, 05FAh  ; print [F] if (09AD)
0175  cde403            CALL 03E4h
0178  216706            LD HL, 0667h  ; print [T]
017B  cde403            CALL 03E4h
017E  21ce05            LD HL, 05CEh
0181  cde403            CALL 03E4h
0184  cdd503            CALL 03D5h  ; wait key loop
0187  28fb              JR Z, 0184h
0189  cdda03            CALL 03DAh  ; read key
018C  fe61              CP 61h
018E  3802              JR C, 0192h
0190  e65f              AND 5Fh
0192  21f407            LD HL, 07F4h  ; scan key table @07F4
0195  0603              LD B, 03h
0197  be                CP (HL)
0198  23                INC HL
0199  2806              JR Z, 01A1h
019B  23                INC HL
019C  23                INC HL
019D  10f8              DJNZ 0197h
019F  18e3              JR 0184h
01A1  5e                LD E, (HL)
01A2  23                INC HL
01A3  56                LD D, (HL)
01A4  eb                EX DE, HL
01A5  fe20              CP 20h
01A7  d44304            CALL NC, 0443h
01AA  cddd03            CALL 03DDh
01AD  114f01            LD DE, 014Fh  ; PUSH 014F / JP (HL) handler
01B0  d5                PUSH DE
01B1  e9                JP (HL)
01B2  af                XOR A  ; key T: continuous test
01B3  32dc5f            LD (5FDCh), A
01B6  21a406            LD HL, 06A4h
01B9  cde403            CALL 03E4h
01BC  3adc5f            LD A, (5FDCh)
01BF  cd0604            CALL 0406h
01C2  3e0e              LD A, 0Eh
01C4  cd4304            CALL 0443h
01C7  cdd201            CALL 01D2h
01CA  d8                RET C
01CB  c0                RET NZ
01CC  21dc5f            LD HL, 5FDCh
01CF  34                INC (HL)
01D0  18e4              JR 01B6h

