1 #!/usr/bin/env python 2 3 """ 4 Acorn Electron ULA simulation controller. 5 """ 6 7 from ula import * 8 import pygame 9 10 def update_surface(surface_array, screen_array): 11 surface_array[:] = screen_array 12 13 def mainloop(): 14 while 1: 15 pygame.display.flip() 16 event = pygame.event.wait() 17 if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: 18 break 19 20 if __name__ == "__main__": 21 pygame.init() 22 screen = pygame.display.set_mode((WIDTH, HEIGHT), 0) 23 a = pygame.surfarray.pixels3d(screen) 24 25 memory = get_memory() 26 ula = ULA(memory) 27 ula_screen = get_screen() 28 29 # Test MODE 2. 30 31 ula.set_mode(2) 32 33 fill(memory, 0x3000, 0x5800 - 320, encode((1, 6), 4)) 34 fill(memory, 0x5800 - 320, 0x8000, encode((2, 7), 4)) 35 update(ula_screen, ula) 36 update_surface(a, ula_screen) 37 mainloop() 38 39 ula.screen_start = 0x3000 + 2 40 update(ula_screen, ula) 41 update_surface(a, ula_screen) 42 mainloop() 43 44 # Test MODE 6. 45 46 ula.set_mode(6) 47 48 fill(memory, 0x6000, 0x6f00 + 160, encode((1, 0, 1, 1, 0, 0, 1, 1), 1)) 49 fill(memory, 0x6f00 + 160, 0x7f40, encode((1, 0, 1, 0, 1, 0, 1, 0), 1)) 50 update(ula_screen, ula) 51 update_surface(a, ula_screen) 52 mainloop() 53 54 ula.screen_start = 0x6f00 + 160 55 update(ula_screen, ula) 56 update_surface(a, ula_screen) 57 mainloop() 58 59 # vim: tabstop=4 expandtab shiftwidth=4