Cold War Computing

Retrocomputing Blog

1802 RetroShield – SPI RAM

In the original 1802 Monitor + Tiny Basic Arduino code by Erturk Kocalar, the memory map is divided into three sections: ROM, onboard RAM, and external/simulated RAM.

  • ROM is hardcoded in the Arduino’s program memory, is of variable length, and starts at address 0x0000.
  • Onboard RAM starts at 0x8000 and is 6K in length if SPI RAM is not used, or 2K in length if it is not. (The 4K difference is instead used for caching the SPI RAM.)
  • If SPI RAM is used, the remainder of the memory map to 0xFFFF is cached SPI RAM. If SPI RAM is not used, the remainder of the memory map to 0xFFFF is hardcoded to 0xFF.

Instructions for adding 128K SPI RAM to a RetroShield project can be found here, and a discussion of the caching scheme used in the default project is here.

My goal right now is to leave the functionality the same if SPI RAM is not used, but change the behavior when SPI RAM is used so that the full 64K memory map is cached SPI RAM. For now, the ROM will still be located in program memory, but will be copied into RAM at startup. The eventual goal is to have no ROM, instead having system software loaded from SD on startup.

The first change to the default project was to enable the SPI RAM:

////////////////////////////////////////////////////////////////////
// Options
//   USE_SPI_RAM: Enable Microchip 128KB SPI-RAM  (Details coming up)
//   USE_LCD_KEYPAD: Enable LCD/Keyboard Shield
//   outputDEBUG: Print memory access debugging messages.
//   TPB_SOFTWARE: Generate TPB internally so access SC0 signal. 
////////////////////////////////////////////////////////////////////
#define USE_SPI_RAM     1
#define USE_LCD_KEYPAD  0
#define outputDEBUG     0
#define TPB_SOFTWARE    1

Next, I changed the Memory Layout constants to match my desired layout:

////////////////////////////////////////////////////////////////////
// MEMORY LAYOUT
////////////////////////////////////////////////////////////////////

#if (USE_SPI_RAM)
  // 2K MEMORY
  //#define RAM_START   0x8000
  //#define RAM_END     0x87FF
  //byte    RAM[RAM_END-RAM_START+1];
  #define RAM_START 0x0000
  #define RAM_END   0xFFFF
#else
  // 6K MEMORY
  #define RAM_START   0x8000
  #define RAM_END     0x97FF
  byte    RAM[RAM_END-RAM_START+1];
#endif

I changed the code that reads memory so that if SPI RAM is enabled, all reads come from SPI RAM.

#if (USE_SPI_RAM)
    DATA_latched = cache_read_byte(uP_ADDR);
#else
    // ROM?
    if ( (ROM_START <= uP_ADDR) && (uP_ADDR <= ROM_END) )
    {
      DATA_latched = pgm_read_byte_near(rom_bin + (uP_ADDR - ROM_START));
    }
    else
    // Execute from RAM?
    if ( (RAM_START <= uP_ADDR) && (uP_ADDR <= RAM_END) )
      DATA_latched = RAM[uP_ADDR - RAM_START];
    else
      // Dummy 0xFF (eeprom style) out for unmapped memory locations
      DATA_latched = 0xFF;      
#endif

And the same for the code that writes memory.

    // Memory Write
#if (USE_SPI_RAM)
    cache_write_byte(uP_ADDR, DATA_latched);
#else
    if ( (RAM_START <= uP_ADDR) && (uP_ADDR <= RAM_END) )
      RAM[uP_ADDR - RAM_START] = DATA_latched;    
#endif

I added a function to copy the ROM from program memory to SPI-RAM.

#if (USE_SPI_RAM)
void rom_init() {
  unsigned int i;

  for(i=ROM_START; i<=ROM_END; i++) {
    cache_write_byte(i, pgm_read_byte_near(rom_bin + (i - ROM_START)));
  }

  Serial.print(i - ROM_START); Serial.println(" bytes of ROM copied to RAM.");
}
#endif

And finally, I added a call to this function inside the setup() function.

#if (USE_SPI_RAM)
  // Initialize memory subsystem
  spi_init();
  cache_init();
  rom_init();
#endif

0 thoughts on “1802 RetroShield – SPI RAM”

  1. Уважаемые коллеги эксперты за рулём!

    Как показывает практика, что в центре Северо-Запада практически любой участник движения вполне вероятно попасть в сложную разбирательство с правоохранителями.

    В этот момент выясняется, что без юридической поддержки тяжело выкрутиться.

    Наше бюро гарантирует широкий перечень юридических действий правозащитника на дорогах.

    Наши специалисты работают с:
    – списание неустоек;
    – возмещение ущерба по ОСАГО;
    – оставление прав при суде;
    – исполнительное производство;
    – экспертиза.
    https://avtojurist-spb.best/
    Мы учитываем подводные камни взаимодействия с ГИБДД, поэтому мы выигрываем дела в разы быстрее.

    Не откладывайте на завтра — оставьте заявку на сайте в удобное для вас время, и мы проведём экспресс- оценку рисков удалённо.

    Даём слово, что в нестандартной задаче мы подберём выход.

    Звоните прямо сейчас — приём ведётся ежедневно! Будем рады помочь.https://avtojurist-spb.best/

  2. Здравствуйте автовладельцы!

    Ведь каждый знает, что в Ленинграде (по-старому) любой участник движения вполне вероятно попасть в опасную историю с автоинспекцией.

    После ДТП приходит понимание, что без консультации специалиста не обойтись.

    Команда профессионалов предоставляет полный спектр решений эксперта по ДТП.

    К вашим услугам:
    – снижение сумм взысканий;
    – защита прав при ДТП;
    – восстановление после лишения;
    – апелляционные жалобы;
    – технический анализ ДТС.
    https://avtojurist-spb.best/
    Нам хорошо известны лазейки и тонкости правил ОСАГО и КАСКО, в результате мы выигрываем дела с максимальной выгодой.

    Не рискуйте попусту — закажите обратный звонок в ближайшие минуты, и мы предоставим бесплатную анализ вашего дела удалённо.

    Обещаем, что в спорной передряге мы подберём выход.

    Приходите к нам в офис на Лиговском — приём ведётся ежедневно! Будем рады помочь.https://avtojurist-spb.best/

  3. Всем привет владельцы ТС!

    По статистике, что в культурной столице каждый водитель может завязнуть в щекотливую передрягу с дорожной полицией.

    В этот момент становится очевидно, что без адвоката можно проиграть.

    Специалисты нашего офиса выполняет широкий перечень решений эксперта по ДТП.

    Среди наших компетенций:
    – отмена штрафов;
    – оформление европротокола под ключ;
    – оставление прав при суде;
    – апелляционные жалобы;
    – независимая оценка.
    https://avtojurist-spb.best/
    Наш опыт базируется на лазейки и тонкости административного регламента, а потому клиенты остаются довольны в разы быстрее.

    Не рискуйте попусту — оставьте заявку на сайте безотлагательно, и мы проведём экспресс- оценку рисков через видеозвонок.

    Мы уверены, что в нестандартной передряге можно добиться справедливости.

    Жмите на кнопку «Заказать звонок» — приём ведётся ежедневно! Оставайтесь с нами на дороге.https://avtojurist-spb.best/

  4. Добрый день водители!

    Не секрет, что в Питере всякий участник движения рискует завязнуть в запутанную историю с сотрудниками на дорогах.

    После ДТП приходит понимание, что без профи не справиться.

    Команда профессионалов выполняет весь комплекс мер поддержки специалиста по спорам с ГИБДД.

    Мы занимаемся:
    – отмена штрафов;
    – споры со страховыми компаниями;
    – оставление прав при суде;
    – апелляционные жалобы;
    – экспертиза.
    https://avtojurist-spb.best/
    Наш опыт базируется на сложные моменты судебной системы СПб, а потому мы добиваемся нужного результата гораздо оперативнее.

    Не пытайтесь справиться сами — оставьте заявку на сайте немедленно, и мы предоставим анонимную юридический аудит через видеозвонок.

    Мы уверены, что в спорной ситуации можно добиться справедливости.

    Оставляйте заявку круглосуточно — мы на связи даже ночью! Всегда готовы прийти на помощь.https://avtojurist-spb.autos

  5. Добрый вечер шoferы!

    Согласитесь, что в культурной столице даже опытный человек за рулём рискует завязнуть в бумажную разбирательство с правоохранителями.

    Когда всё зашло в тупик оказывается, что без автоюриста можно проиграть.

    Специалисты нашего офиса даёт широкий перечень решений автоюриста.

    Мы занимаемся:
    – обжалование постановлений;
    – споры со страховыми компаниями;
    – оставление прав при суде;
    – исполнительное производство;
    – выезд на место аварии.
    https://avtojurist-spb.best/
    Нам хорошо известны все нюансы административного регламента, за счёт этого клиенты остаются довольны гораздо оперативнее.

    Не рискуйте попусту — запросите выезд юриста прямо сейчас, и мы сделаем развёрнутую юридический аудит через видеозвонок.

    Заверяем, что в любой, даже тупиковой передряге можно добиться справедливости.

    Приходите к нам в офис на Лиговском — приём ведётся ежедневно! Будем рады помочь.https://avtojurist-spb.autos

  6. Добрый день владельцы ТС!

    Очевидно, что в Питере практически любой человек за рулём не застрахован от того, чтобы влипнуть в запутанную разбирательство с сотрудниками на дорогах.

    Как раз сейчас становится очевидно, что без консультации специалиста не обойтись.

    Специалисты нашего офиса реализует максимальный набор юридических действий специалиста по спорам с ГИБДД.

    Среди наших компетенций:
    – обжалование постановлений;
    – оформление европротокола под ключ;
    – оставление прав при суде;
    – исполнительное производство;
    – выезд на место аварии.
    https://avtojurist-spb.best/
    Мы изучили вдоль и поперёк местные особенности судебной системы СПб, а потому мы решаем вопросы без потери времени и нервов.

    Не испытывайте судьбу — запросите выезд юриста немедленно, и мы проведём подробную оценку рисков с выездом к вам.

    Мы уверены, что даже в самой сложной ситуации можно добиться справедливости.

    Пишите в любой мессенджер — юристы на дежурстве 24/7! Всегда готовы прийти на помощь.https://avtojurist-spb.autos

  7. Доброе утро жители мегаполиса!

    По статистике, что на берегах Невы любой участник движения способен оказаться втянутым в спорную передрягу с сотрудниками на дорогах.

    На этапе суда оказывается, что без опытного советника дело затянется.

    Команда профессионалов обеспечивает эксклюзивный пакет услуг специалиста по спорам с ГИБДД.

    Среди наших компетенций:
    – снижение сумм взысканий;
    – оформление европротокола под ключ;
    – возврат водительских прав;
    – судебное представительство;
    – экспертиза.
    https://avtojurist-spb.best/
    Нам хорошо известны все нюансы судебной системы СПб, поэтому мы выигрываем дела без потери времени и нервов.

    Не откладывайте на завтра — закажите обратный звонок прямо сейчас, и мы сделаем экспресс- оценку рисков через видеозвонок.

    Мы уверены, что в многотомной проблеме есть вариант спасения.

    Оставляйте заявку круглосуточно — мы работаем без выходных! Выберете надёжную защиту.https://avtojurist-spb.autos

  8. Уважаемые коллеги автолюбители!
    Факт остаётся фактом, что в Санкт-Петербурге всякий участник движения рискует завязнуть в тупиковую проблему с правоохранителями.
    После ДТП оказывается, что без автоюриста не обойтись.
    Наши эксперты предоставляет широкий перечень решений эксперта по ДТП. https://avtojurist-spb.best/

  9. Обращаюсь к вам участники дорожного движения!
    К сожалению, что в центре Северо-Запада всякий водитель вполне вероятно столкнуться в щекотливую разбирательство с сотрудниками на дорогах.
    В этот момент оказывается, что без консультации специалиста дело затянется.
    Юридический департамент обеспечивает весь комплекс решений эксперта по ДТП. https://avtojurist-spb.best/

  10. Обращаюсь к вам водители!
    Согласитесь, что в центре Северо-Запада абсолютно каждый участник движения рискует попасть в денежную передрягу с ГИБДД.
    На этапе суда оказывается, что без грамотного защитника можно проиграть.
    Мы реализует эксклюзивный пакет мер поддержки правозащитника на дорогах. https://avtojurist-spb.best/

  11. Обращаюсь к вам жители мегаполиса!
    Очевидно, что в городе на Неве даже опытный водитель способен столкнуться в тупиковую ситуацию с сотрудниками на дорогах.
    При лишении прав оказывается, что без профи можно проиграть.
    Наша компания даёт широкий перечень помощи профессионального переговорщика. https://avtojurist-spb.best/

  12. Хочу обратиться автовладельцы!
    Очевидно, что на дорогах нашего города любой человек за рулём не застрахован от того, чтобы нарваться в запутанную ситуацию с сотрудниками на дорогах.
    Как раз сейчас выясняется, что без опытного советника риск потерять всё.
    Команда профессионалов выполняет широкий перечень решений правозащитника на дорогах. https://avtojurist-spb.best/

  13. Доброе утро автомобилисты!
    Бесспорно, что на берегах Невы каждый автомобилист вполне вероятно оказаться втянутым в опасную проблему с дорожной полицией.
    Как раз сейчас выясняется, что без адвоката тяжело выкрутиться.
    Наш центр предоставляет все виды помощи правозащитника на дорогах. https://avtojurist-spb.website/

  14. Хочу обратиться шoferы!
    Ведь каждый знает, что в центре Северо-Запада даже опытный человек за рулём может нарваться в опасную разбирательство с сотрудниками на дорогах.
    При возникновении трудностей приходит понимание, что без профи не обойтись.
    Мы гарантирует все виды услуг специалиста по спорам с ГИБДД. https://avtojurist-spb.website/

Leave a Reply

Your email address will not be published. Required fields are marked *