Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
cartridges [2016/05/27 10:08]
ex_writer [Cartridge Types]
— (current)
Line 1: Line 1:
-====== Cartridges ====== 
- 
-In the Astrocade'​s [[memory map]], 8KB ($2000–$3FFF) is allotted to interchangeable cartridges. 
- 
-===== Cartridge Types ===== 
-Two types of cartridges may be used with the Bally Professional Arcade. The first type, called an //autostart cartridge//,​ is entered immediately after reset. The only initialization that is performed before entry is the setup of the stack pointer to point just below system RAM and the establishment of "​consumer mode" in the [[custom chips]]. RAM is not altered in this mode. 
- 
-An autostart cartridge is indicated by a jump instruction (opcode $C3) at location $2000. This jump instruction should branch to the starting address of the cartridge. 
- 
-The second type, called a //standard cartridge//,​ is entered after a game selection process is completed. The system does considerably more initialization before control transfer: 
- 
-  - System RAM is cleared to 0 
-  - The [[interrupt scheduler#​actint|ACTINT]] interrupt routine is enabled 
-  - The [[human interface#​menu|MENU]] colors are set in the left color map 
-  - Vertical blank is set at line 96, horizontal boundary at 41, and interrupt mode at 8 
-  - The screen displays the menu frame 
-  - The shifter is cleared 
- 
-A standard cartridge is indicated by a sentinel byte of $55 (or ASCII "​U"​ for User Mode) at location $2000. Following this byte is the first node of the cartridge'​s menu data structure. This data structure gives the name and starting address of each program in the cartridge. 
- 
-When the user selects a cartridge game, control transfers to the starting address with the address of the program name string in the registers. The cartridge program will use the [[human interface#​getpar|GETPAR]] system routine to prompt for game parameters (e.g., score to play to, game time limit, number of players). 
- 
-The cartridge has access to the six unused restart instructions. See the following cartridge memory diagram for the transfer vectors. 
- 
- 
-===== Cartridge Memory Diagram ===== 
- 
-{{cartridge_layout.png}} 
- 
-[NM:74] 
- 
-===== Cartridge Memory Structure ===== 
- 
-^ Location ^ Contents ^^ 
-| 2000 | 55 | C3 | 
-| 2001,2 | *Address of next menu table | RST0 or RESET jumps to 2000\\ immediately after DI and outputs 00 to port 08. | 
-| 2003,4 | Address of this menu string literal | ::: | 
-| 2005,6 | Address to jump to if selected | ::: | 
- 
- 
-| 2007 | RST 8 jumps here. || 
-| 200A | RST 10H jumps here. || 
-| 200D | RST 18H jumps here. || 
-| 2010 | RST 20H jumps here. || 
-| 2013 | RST 28H jumps here. || 
-| 2016 | RST 30H jumps here. || 
-| 2019 | Player input routine (SR66) jumps here if location 4FFA contains 0AAH. || 
- 
-*0218 = First onboard menu, 0000 = last menu. 
- 
- 
----- 
- 
-**Reference:​** [[http://​www.ballyalley.com/​basic/​bally_on-board_rom_subroutines.pdf|Bally On-Board ROM Subroutines]] [PDF]