BR93L46 programming problem

You can Skip this if you want:

Hello, I’m making an Hexadecimal screen for a Z80 based computer so I want to show in six 16-segment displays the content in Adress bus (2 bytes) and Data bus (1 byte), so I thought that is a good idea to pick the Data and Address buses and split them in six groups of 4 bits corresponding on an Hex caracter, but the thing is that the Binary-to-16-segment display IC are hard to find, expensive and big, so, I decided to do it with an EEPROM to decode the 4 bit groups, is very easy to find, inexpensive and small, the only problem is that its data is shifted in in series, I know I need to multiplex the Address and data and use a shift register, but my problem is how I program it with Arduino

THE PROBLEM:
Since I have the BR93L46 I have 64 blocks of 16 bits each, so my address is 6 bits long and the data is 16 bits long, and how I explained before I’m gonna use only 4 bits for the address so the other 2 bits im gonna fill them with 0s, the problem is that this IC uses a Starting bit then a 2-bit OP code, then the Address and then the Data, that make a total of 25 bits I have to send to the EEPROM, Arduino already has a function called ShiftOut() but only allows me to shift entire bytes, so I cant get exactly to the 25 I need so What can I do to program it?

FAQ that people make to me:

1- Q: Why you don’t use an Arduino to do the job?
A: I’m trying to make a retro computer, so Im not using microcontrollers at all in the final PCB, Only RAM, ROMs and Standard logic ICs

2- Q: Why don’t use an I2C based EEPROM?
A: Because the EEPROM is going to be on a PCB with standard electronics so I wont have I2C to control it

3- Q: Why you don’t use a 7-segment display? You can make it display Hex too
A: I don’t like the look of the Hex in a 7-segment display, instead I’m using the 16-segment ones

br93lxx.pdf (1.21 MB)