;; HL = address of directory entry
 ;; A = rom number
 0070 3f70 32be3f    ld      (3fbeh),a ;; ROM number store to RAM 0073 3f73 e5        push    hl 0074 3f74 dde1      pop     ix 0076 3f76 2afefb    ld      hl,(0fbfeh)  0079 3f79 113400    ld      de,0034h 007c 3f7c 19        add     hl,de 007d 3f7d 118c3f    ld      de,3f8ch ;; address to call to load file from ROM 0080 3f80 73        ld      (hl),e 0081 3f81 23        inc     hl 0082 3f82 72        ld      (hl),d 0083 3f83 2afefb    ld      hl,(0fbfeh)  0086 3f86 111000    ld      de,0010h 0089 3f89 0e3b      ld      c,3bh 008b 3f8b e9        jp      (hl)
 008c ;; load file from ROM into RAM 3f8c dd6e00    ld      l,(ix+00h) ;; load address 008f 3f8f dd6601    ld      h,(ix+01h) 0092 3f92 dd4e02    ld      c,(ix+02h) ;; length 0095 3f95 dd4603    ld      b,(ix+03h) 0098 3f98 110001    ld      de,0100h   ;; load address for .COM file 009b 3f9b cdbf3f    call    3fbfh      ;; read byte from rom 009e 3f9e 12        ld      (de),a     ;; write to memory 009f 3f9f 13        inc     de 00a0 3fa0 23        inc     hl 00a1 3fa1 0b        dec     bc 00a2 3fa2 79        ld      a,c 00a3 3fa3 b0        or      b 00a4 3fa4 20f5      jr      nz,009bh
 00a6 3fa6 1eff      ld      e,0ffh ;; error code in H 00a8 3fa8 0e2d      ld      c,2dh  ;; F_ERRMODE - set action on hardware error 00aa 3faa cd0500    call    0005h ;; call BDOS 00ad 3fad 3aaffb    ld      a,(0fbafh) 00b0 3fb0 5f        ld      e,a 00b1 3fb1 0e0e      ld      c,0eh ;; select disc 00b3 3fb3 cd0500    call    0005h ;; call BDOS 00b6 3fb6 1e00      ld      e,00h 00b8 3fb8 0e2d      ld      c,2dh ;; F_ERRMODE - set action on hardware error 00ba 3fba cd0500    call    0005h;; call BDOS 00bd 3fbd c9        ret     
 
 00be 3fbe 00        nop     ;; storage for ROM number
 ;; read byte from ROM
 00bf 3fbf c5        push    bc 00c0 3fc0 3abe3f    ld      a,(3fbeh) 00c3 3fc3 4f        ld      c,a 00c4 3fc4 cdc93f    call    3fc9h 00c7 3fc7 c1        pop     bc 00c8 3fc8 c9        ret       
 ;; HL = address to read from ROM
 ;; C = rom number
 ;; BC' = 7F80 port number
 00c9 3fc9 f3        di       00ca 3fca c5        push    bc 00cb 3fcb d9        exx      00cc 3fcc cb99      res     3,c   ;; enable upper rom 00ce 3fce ed49      out     (c),c 00d0 3fd0 d9        exx      00d1 3fd1 06df      ld      b,0dfh ;; select ROM 00d3 3fd3 ed49      out     (c),c 00d5 3fd5 7e        ld      a,(hl) ;; read byte from ROM 00d6 3fd6 d9        exx      00d7 3fd7 cbd9      set     3,c    ;; disable upper rom 00d9 3fd9 ed49      out     (c),c 00db 3fdb d9        exx      00dc 3fdc fb        ei       00dd 3fdd c1        pop     bc 00de 3fde c9        ret     
;; used?
;; BC = 7F8x with bit 3 clear. bits 1,0 are mode.
;; HL = address to read from ROM
 00df 3fdf ed49      out     (c),c ;; must enable ROM 00e1 3fe1 d9        exx      00e2 3fe2 06df      ld      b,0dfh ;; select ROM 00e4 3fe4 ed49      out     (c),c 00e6 3fe6 7e        ld      a,(hl) ;; read from rom 00e7 3fe7 d9        exx      00e8 3fe8 cbd9      set     3,c  ;; disable ROM again 00ea 3fea ed49      out     (c),c 00ec 3fec d9        exx      00ed 3fed fb        ei       00ee 3fee c1        pop     bc 00ef 3fef c9        ret   
3. Up to 16 files can be defined. Each file takes 1 entry. Unused entries are filled with &FF.