From 2b375b430fb11565cedf0c2c963ff03976097300 Mon Sep 17 00:00:00 2001 From: antoniovillena Date: Thu, 30 Nov 2017 09:46:35 +0100 Subject: [PATCH] =?UTF-8?q?A=C3=B1ado=20peque=C3=B1o=20manual=20al=20kartu?= =?UTF-8?q?sho?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hardware/kartusho/readme.txt | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 hardware/kartusho/readme.txt diff --git a/hardware/kartusho/readme.txt b/hardware/kartusho/readme.txt new file mode 100644 index 0000000..0bd38d6 --- /dev/null +++ b/hardware/kartusho/readme.txt @@ -0,0 +1,33 @@ +How to program the cartrige? + +Basically you have a 5 bit shift register connected to the high address +bits of the EEPROM IC. So you need to write these 5 bits one by one. +Every time you write a bit the ROM is changed. The ROM is paged +at $0000-$3FFF, so you need place the paging routine in the RAM area. + +There is also a LOCK bit. When you write a 1 in the LOCK bit the paging +is locked. The cartridge has a LED indicating LOCK bit. To unlock paging +you must push the button in the cartridge, or power off the spectrum. +This also reset the page to 00000, where is the game selection menu. + +There are 4 address to change these bits: $3FFC, $3FFD, $3FFE, $3FFF. +Both reads and writes to this address will work and data bus is +discarded. In this example I will use writes with LD (N), A instruction. +The LSB of address (A0) is inserted into the shift register from the right +to the left and the second bit (A1) is the LOCK bit. + +So for example you want to go to the page 13 (pages are between 0 and 31) +by activating the LOCK bit in the last bit. In binary (5 bits) is 01101. +So you need to write 0, then 1, then 1, then 0 and finally 1. With the +last 1 you need also to set LOCK=1. + + LD ($3FFC), A ; Write 0. Now page is 00000 and LOCK=0 + LD ($3FFD), A ; Write 1. Now page is 00001 and LOCK=0 + LD ($3FFD), A ; Write 1. Now page is 00011 and LOCK=0 + LD ($3FFC), A ; Write 0. Now page is 00110 and LOCK=0 + LD ($3FFF), A ; Write 1. Now page is 01101 and LOCK=1 + +The locking mechanism is good for a game selection menu, when you want +to disable future accidental paging once game is selected. But if +you want create your own game (it can be up to 512K) is better avoid +locking.