; =============================================================================
; Type 21h helpers: dir 11EE, load 1231/1272, config 12B1/12FB, handoff 13A9
; Source: VECTOR 4/8086 - V2_AC_Interleaved_XHE_XHO.bin
; CPU: Z80  |  base: 0000h  |  size: 8192
; Generated linear disassembly with fixed relative branch targets
; =============================================================================

; --- System error printer 11C0 ---
11C0  b7                OR A  ; SYS ERROR: table @099B
11C1  c8                RET Z
11C2  219b09            LD HL, 099Bh
11C5  3d                DEC A
11C6  87                ADD A, A
11C7  85                ADD A, L
11C8  6f                LD L, A
11C9  3001              JR NC, 11CCh
11CB  24                INC H
11CC  5e                LD E, (HL)
11CD  23                INC HL
11CE  56                LD D, (HL)
11CF  eb                EX DE, HL
11D0  e5                PUSH HL
11D1  217b09            LD HL, 097Bh
11D4  cde403            CALL 03E4h
11D7  e1                POP HL
11D8  cde403            CALL 03E4h
11DB  3e20              LD A, 20h
11DD  cd4304            CALL 0443h
11E0  218809            LD HL, 0988h
11E3  cde403            CALL 03E4h
11E6  cddd03            CALL 03DDh
11E9  3eff              LD A, FFh
11EB  b7                OR A
11EC  37                SCF
11ED  c9                RET

; --- Next directory entry 11EE ---
11EE  2a1124            LD HL, (2411h)  ; NEXT DIRENT
11F1  7d                LD A, L
11F2  b4                OR H
11F3  37                SCF
11F4  c8                RET Z
11F5  2b                DEC HL
11F6  221124            LD (2411h), HL
11F9  3a1c20            LD A, (201Ch)
11FC  b7                OR A
11FD  2019              JR NZ, 1218h
11FF  210022            LD HL, 2200h
1202  221a20            LD (201Ah), HL
1205  ed5b0c20          LD DE, (200Ch)
1209  13                INC DE
120A  ed530c20          LD (200Ch), DE
120E  1b                DEC DE
120F  010000            LD BC, 0000h
1212  3e01              LD A, 01h
1214  cda814            CALL 14A8h  ; read dir sector -> 2200
1217  c0                RET NZ
1218  211c20            LD HL, 201Ch
121B  34                INC (HL)
121C  7e                LD A, (HL)
121D  fe10              CP 10h
121F  2002              JR NZ, 1223h
1221  3600              LD (HL), 00h
1223  2a1a20            LD HL, (201Ah)
1226  112000            LD DE, 0020h
1229  e5                PUSH HL
122A  19                ADD HL, DE
122B  221a20            LD (201Ah), HL
122E  e1                POP HL
122F  af                XOR A
1230  c9                RET

; --- Load next file sector 1231 / decode map 1272 ---
1231  e5                PUSH HL  ; READ NEXT FILE SECTOR to HL
1232  3a1520            LD A, (2015h)
1235  b7                OR A
1236  2018              JR NZ, 1250h
1238  cd7212            CALL 1272h
123B  e1                POP HL
123C  d8                RET C
123D  e5                PUSH HL
123E  3a0d24            LD A, (240Dh)
1241  47                LD B, A
1242  210000            LD HL, 0000h
1245  19                ADD HL, DE
1246  10fd              DJNZ 1245h
1248  ed5b0a20          LD DE, (200Ah)
124C  19                ADD HL, DE
124D  220f20            LD (200Fh), HL
1250  211520            LD HL, 2015h
1253  34                INC (HL)
1254  3a0d24            LD A, (240Dh)
1257  be                CP (HL)
1258  2002              JR NZ, 125Ch
125A  3600              LD (HL), 00h
125C  e1                POP HL
125D  ed5b0f20          LD DE, (200Fh)
1261  010000            LD BC, 0000h
1264  13                INC DE
1265  ed530f20          LD (200Fh), DE
1269  1b                DEC DE
126A  3e01              LD A, 01h
126C  cda814            CALL 14A8h  ; 14A8 read one sector
126F  c35d15            JP 155Dh
1272  2a1d20            LD HL, (201Dh)  ; DECODE 12-bit alloc map entry @2600
1275  5d                LD E, L
1276  54                LD D, H
1277  29                ADD HL, HL
1278  19                ADD HL, DE
1279  cb1c              RR H
127B  cb1d              RR L
127D  010026            LD BC, 2600h
1280  f5                PUSH AF
1281  09                ADD HL, BC
1282  f1                POP AF
1283  4e                LD C, (HL)
1284  23                INC HL
1285  46                LD B, (HL)
1286  3009              JR NC, 1291h
1288  3e04              LD A, 04h
128A  cb18              RR B
128C  cb19              RR C
128E  3d                DEC A
128F  20f9              JR NZ, 128Ah
1291  78                LD A, B
1292  e60f              AND 0Fh
1294  47                LD B, A
1295  ed431d20          LD (201Dh), BC
1299  7a                LD A, D
129A  b3                OR E
129B  37                SCF
129C  c8                RET Z
129D  7a                LD A, D
129E  e60f              AND 0Fh
12A0  fe0f              CP 0Fh
12A2  2009              JR NZ, 12ADh
12A4  7b                LD A, E
12A5  e6f0              AND F0h
12A7  fef0              CP F0h
12A9  2002              JR NZ, 12ADh
12AB  37                SCF
12AC  c9                RET
12AD  1b                DEC DE
12AE  1b                DEC DE
12AF  b7                OR A
12B0  c9                RET

; --- Config tables 12B1 / 12FB ---
12B1  016000            LD BC, 0060h  ; BUILD drive config @6600
12B4  210066            LD HL, 6600h
12B7  3600              LD (HL), 00h
12B9  23                INC HL
12BA  0b                DEC BC
12BB  78                LD A, B
12BC  b1                OR C
12BD  20f8              JR NZ, 12B7h
12BF  110066            LD DE, 6600h
12C2  dd21aa09          LD IX, 09AAh
12C6  0608              LD B, 08h
12C8  c5                PUSH BC
12C9  dd7e00            LD A, (IX+0)
12CC  cde612            CALL 12E6h
12CF  010c00            LD BC, 000Ch
12D2  dad912            JP C, 12D9h
12D5  edb0              LDIR
12D7  1807              JR 12E0h
12D9  eb                EX DE, HL
12DA  09                ADD HL, BC
12DB  eb                EX DE, HL
12DC  dd360000          LD (IX+0), 00h
12E0  c1                POP BC
12E1  dd23              INC IX
12E3  10e3              DJNZ 12C8h
12E5  c9                RET
12E6  c5                PUSH BC
12E7  d5                PUSH DE
12E8  110c00            LD DE, 000Ch
12EB  214c24            LD HL, 244Ch
12EE  47                LD B, A
12EF  7e                LD A, (HL)
12F0  b8                CP B
12F1  2805              JR Z, 12F8h
12F3  19                ADD HL, DE
12F4  b7                OR A
12F5  20f8              JR NZ, 12EFh
12F7  37                SCF
12F8  d1                POP DE
12F9  c1                POP BC
12FA  c9                RET
12FB  01d000            LD BC, 00D0h  ; BUILD media config @6660
12FE  216066            LD HL, 6660h
1301  3600              LD (HL), 00h
1303  23                INC HL
1304  0b                DEC BC
1305  78                LD A, B
1306  b1                OR C
1307  20f8              JR NZ, 1301h
1309  116066            LD DE, 6660h
130C  0604              LD B, 04h
130E  3a4224            LD A, (2442h)
1311  e630              AND 30h
1313  21c609            LD HL, 09C6h
1316  fe10              CP 10h
1318  2803              JR Z, 131Dh
131A  21b909            LD HL, 09B9h
131D  dd21ad09          LD IX, 09ADh
1321  0e03              LD C, 03h
1323  dd7e00            LD A, (IX+0)
1326  fe07              CP 07h
1328  200e              JR NZ, 1338h
132A  7e                LD A, (HL)
132B  81                ADD A, C
132C  12                LD (DE), A
132D  c5                PUSH BC
132E  e5                PUSH HL
132F  13                INC DE
1330  23                INC HL
1331  010c00            LD BC, 000Ch
1334  edb0              LDIR
1336  e1                POP HL
1337  c1                POP BC
1338  0c                INC C
1339  dd23              INC IX
133B  10e6              DJNZ 1323h
133D  3aaa09            LD A, (09AAh)
1340  b7                OR A
1341  c8                RET Z
1342  cde612            CALL 12E6h
1345  d8                RET C
1346  3e00              LD A, 00h
1348  cd3414            CALL 1434h
134B  c0                RET NZ
134C  210022            LD HL, 2200h
134F  010000            LD BC, 0000h
1352  110000            LD DE, 0000h
1355  3e01              LD A, 01h
1357  cda814            CALL 14A8h
135A  c0                RET NZ
135B  3a0222            LD A, (2202h)
135E  fe02              CP 02h
1360  c0                RET NZ
1361  210b22            LD HL, 220Bh
1364  dd21aa09          LD IX, 09AAh
1368  110c00            LD DE, 000Ch
136B  0608              LD B, 08h
136D  dd7e00            LD A, (IX+0)
1370  be                CP (HL)
1371  c0                RET NZ
1372  19                ADD HL, DE
1373  dd23              INC IX
1375  10f6              DJNZ 136Dh
1377  060a              LD B, 0Ah
1379  113600            LD DE, 0036h
137C  d5                PUSH DE
137D  c5                PUSH BC
137E  010000            LD BC, 0000h
1381  210022            LD HL, 2200h
1384  3e01              LD A, 01h
1386  cda814            CALL 14A8h
1389  c1                POP BC
138A  d1                POP DE
138B  2009              JR NZ, 1396h
138D  3a0022            LD A, (2200h)
1390  214224            LD HL, 2442h
1393  be                CP (HL)
1394  2805              JR Z, 139Bh
1396  05                DEC B
1397  c8                RET Z
1398  13                INC DE
1399  18e1              JR 137Ch
139B  212b22            LD HL, 222Bh
139E  112367            LD DE, 6723h
13A1  010d00            LD BC, 000Dh
13A4  cbbe              RES 7, (HL)
13A6  edb0              LDIR
13A8  c9                RET

; --- Final handoff 13A9 -> JP FF4C ---
13A9  2160fe            LD HL, FE60h  ; HANDOFF setup 67xx
13AC  22e467            LD (67E4h), HL
13AF  2100fe            LD HL, FE00h
13B2  22e067            LD (67E0h), HL
13B5  2afb0f            LD HL, (0FFBh)
13B8  22e867            LD (67E8h), HL
13BB  210002            LD HL, 0200h
13BE  22ea67            LD (67EAh), HL
13C1  3e48              LD A, 48h
13C3  32ec67            LD (67ECh), A
13C6  217305            LD HL, 0573h  ; copy stub 0573->674C
13C9  114c67            LD DE, 674Ch
13CC  011200            LD BC, 0012h
13CF  edb0              LDIR
13D1  210ce4            LD HL, E40Ch
13D4  22ee67            LD (67EEh), HL
13D7  3eea              LD A, EAh
13D9  32f067            LD (67F0h), A
13DC  3add5f            LD A, (5FDDh)
13DF  32f567            LD (67F5h), A
13E2  b7                OR A
13E3  210010            LD HL, 1000h
13E6  2803              JR Z, 13EBh
13E8  210030            LD HL, 3000h
13EB  22e267            LD (67E2h), HL
13EE  22e667            LD (67E6h), HL
13F1  2818              JR Z, 140Bh
13F3  163f              LD D, 3Fh
13F5  cd3604            CALL 0436h  ; optional high-RAM swap
13F8  0608              LD B, 08h
13FA  21f067            LD HL, 67F0h
13FD  11f077            LD DE, 77F0h
1400  1a                LD A, (DE)
1401  4e                LD C, (HL)
1402  77                LD (HL), A
1403  79                LD A, C
1404  12                LD (DE), A
1405  23                INC HL
1406  13                INC DE
1407  10f7              DJNZ 1400h
1409  3e01              LD A, 01h
140B  08                EX AF, AF'
140C  0e16              LD C, 16h  ; program mapper port 16h
140E  1600              LD D, 00h
1410  0600              LD B, 00h
1412  7a                LD A, D
1413  2f                CPL
1414  ed79              OUT (C), A
1416  78                LD A, B
1417  c608              ADD A, 08h
1419  47                LD B, A
141A  ca4cff            JP Z, FF4Ch  ; JP FF4C when banks done
141D  14                INC D
141E  fef0              CP F0h
1420  2004              JR NZ, 1426h
1422  16ce              LD D, CEh
1424  18ec              JR 1412h
1426  fef8              CP F8h
1428  20e8              JR NZ, 1412h
142A  08                EX AF, AF'
142B  b7                OR A
142C  163f              LD D, 3Fh
142E  28e2              JR Z, 1412h
1430  167f              LD D, 7Fh
1432  18de              JR 1412h

