Space Invaders 2001 - The Classic Arcade Game

Vid första testet fungerade inte systemklockan tillfredställande. Vid närmare granskning av kontruktionen visade det sig att en kondensator hade ett spräckt hölje. Komponenten ersattes.

Oväntade problem uppstod vid programmering av PAL kretsarna. Kompilatorn för den logisk beskrivningen hängde sig utan att generera vare sig kod eller felutskrift. Det visade sig efter en diskussion med Bertil Lindvall att textfilen måste innehålla ett avslutande CR tecken.

Ett allvarligt fel som upptäcktes var att PAL logiken genererade DTACK vid skrivning till displayen, vilken arbetar med synkrona busscykler. Det bör påpekas att om DTACK generaras i samband med en synkron busscykel, hamnar processorn i ett obestämt tillstånd.

Displayen var en av de första komponenter som testades. När en byte med alla bitar satta (0xff) skrevs till displayen påverkade det i vissa fall även nästa byte som skrevs (en typ av "läckage"). Eftersom det fanns möjlighet att kontrollera displayens 'busy state' (vilket inte gjordes), kontrollerades koden som hanterade skrivning till displayen. Tydligen krävde displayen ytterligare några busscykler för att lämna 'busy state'. Istället för att först skicka över all data till segment 1, och först därefter skicka över resterande data till segment 2, ändrades således mönstret för skrivning så att segmenten skrevs växelvis (byte för byte). "Läckaget" reducerades nu betydligt. Då tyngre tester (läs: intensivt spelande) genomfördes började även byte med färre än 8 bitar satta att "läcka". Av en slump upptäcktes att då displayens skyddskretsar avskärmades försvann problemen. Då skyddskretsarna inte behövs i en färdig produkt lämnades detta problem utan åtgärd.

Emulatorns inställningar orsakade en del huvudbry. Dokumentation finns dock att tillgå. En kort sammanfattning följer:
  • För att konstruktionens systemklocka ska användas flyttas bygeln 'INT EXT' till 'EXT'.
  • Minnemappningen ändras med kommandot 'map'.
  • Externa avbrott aktiveras med kommandot 'ei'.
  • Inställningar sparas med 'save <namn>'.
  • Inställningar laddas med 'set <namn>'.