- endif\r
-\r
-; Init bank manager\r
-\r
- ld hl,banktabsys ;020f\r
- ld (hl),c ; Common area\r
- inc hl ;0213\r
- ld (hl),c ; System work area\r
- inc hl ;0215 Point to bank 0 entry\r
- ld b,BANKS ;0216\r
-l0218h:\r
- ld (hl),0ffh ;0218 Mark all banks as unassigned\r
- inc hl ;021a\r
- djnz l0218h ;021b\r
-\r
- ld hl,memalv ;\r
- ld b,8 ; 8*4k ie. first 32k\r
-??a_0:\r
- ld (hl),0e0h ; mark as sys ("rom"/monitor)\r
- inc hl\r
- djnz ??a_0\r
-\r
- rr d ; shift out bit for block 0\r
- rr e ;\r
- ld c,15 ;022c 15*32k remaining blocks\r
-l022eh:\r
- ld a,0feh ; 0xfe == block with error(s)\r
- rr d ;\r
- rr e\r
- adc a,0 ; ==> 0xff : block ok\r
- ld b,32/4 ; 32k == 8 * 4k\r
-l0236h:\r
- ld (hl),a ;\r
- inc hl ;\r
- djnz l0236h ;\r
- dec c ;\r
- jr nz,l022eh ;next 32k block\r
-\r
- ld hl,memalv+0ch ;memalv+0ch\r
- ld a,(banktabsys) ;\r
- call add_hl_a\r
- ld b,3 ;\r
-l024ah:\r
- ld (hl),0ech ;alloc system ram\r
- inc hl ;\r
- djnz l024ah ;\r
- ld (hl),0efh ;alloc common\r
- call gencrc_alv\r
-\r
- ld hl,0000h ;bank #\r
- ld bc,0f0fh ; size (?) (4k blocks)\r
- xor a ;\r
- call sub_0420h ;alloc mem for bank 0\r
- ld c,l ;\r
- or a ;\r
- call z,sub_04b5h ;\r
-\r
- ld hl,0101h ;\r
- ld bc,0f0fh ;\r
- xor a ;\r
- call sub_0420h ;\r
- ld c,l ;\r
- or a ;\r
- call z,sub_04b5h ;\r
- endif\r