feat: add load prg files
This commit is contained in:
parent
127e77b190
commit
d03b2372cb
2 changed files with 40 additions and 2 deletions
11
README.MD
11
README.MD
|
@ -46,6 +46,17 @@ pressing shift + 2. Erase by using the left arrow.
|
||||||
|
|
||||||
It *should* be cross-platform.
|
It *should* be cross-platform.
|
||||||
|
|
||||||
|
Loading `.prg` files
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
Run emulator with:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./orao.py [path/to/file.prg]
|
||||||
|
```
|
||||||
|
Then press F8 to load and start program.
|
||||||
|
|
||||||
|
|
||||||
Known bugs
|
Known bugs
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
|
31
orao.py
31
orao.py
|
@ -5,9 +5,17 @@ import pygame, numpy, sys, datetime, wave, time
|
||||||
from orao.cpu import CPU
|
from orao.cpu import CPU
|
||||||
from orao.keyboard import listener as orao_kbd_listener
|
from orao.keyboard import listener as orao_kbd_listener
|
||||||
|
|
||||||
|
MEM_LOAD_PRG = None
|
||||||
|
|
||||||
|
if len(sys.argv) == 2:
|
||||||
|
MEM_LOAD_PRG = sys.argv[1]
|
||||||
|
|
||||||
|
|
||||||
|
# pygame init
|
||||||
|
ratio, running = 0, True
|
||||||
|
|
||||||
pygame.mixer.pre_init(44100, 8, 1, buffer=2048)
|
pygame.mixer.pre_init(44100, 8, 1, buffer=2048)
|
||||||
pygame.init()
|
pygame.init()
|
||||||
ratio, running = 0, True
|
|
||||||
pygame.time.set_timer(pygame.USEREVENT + 1, 40)
|
pygame.time.set_timer(pygame.USEREVENT + 1, 40)
|
||||||
|
|
||||||
# setup surfaces
|
# setup surfaces
|
||||||
|
@ -40,9 +48,28 @@ while running:
|
||||||
orao_kbd_listener(event, cpu)
|
orao_kbd_listener(event, cpu)
|
||||||
|
|
||||||
if event.type in [pygame.KEYDOWN, pygame.KEYUP]:
|
if event.type in [pygame.KEYDOWN, pygame.KEYUP]:
|
||||||
if pygame.key.get_pressed()[pygame.K_ESCAPE]:
|
pkeys = pygame.key.get_pressed()
|
||||||
|
if pkeys[pygame.K_ESCAPE]:
|
||||||
running = False
|
running = False
|
||||||
|
|
||||||
|
if pkeys[pygame.K_F8]:
|
||||||
|
print("LOADING: %s" % MEM_LOAD_PRG)
|
||||||
|
ba = bytearray(open(MEM_LOAD_PRG, "rb").read())
|
||||||
|
|
||||||
|
# read load address
|
||||||
|
addr = ba[1] * 256 + ba[0]
|
||||||
|
ba = ba[2:]
|
||||||
|
print('Loadaddr: %04x' % addr)
|
||||||
|
|
||||||
|
# load file to memory
|
||||||
|
for i in range(0, len(ba)):
|
||||||
|
cpu.memory[addr + i] = ba[i]
|
||||||
|
|
||||||
|
# run
|
||||||
|
cpu.pc = addr
|
||||||
|
# HACK: reset stack pointer
|
||||||
|
cpu.sp = 241
|
||||||
|
|
||||||
if event.type == pygame.USEREVENT + 1:
|
if event.type == pygame.USEREVENT + 1:
|
||||||
screen.blit(background, [0, 0])
|
screen.blit(background, [0, 0])
|
||||||
screen.blit(pygame.transform.smoothscale(terminal, (512, 512)), [150, 140])
|
screen.blit(pygame.transform.smoothscale(terminal, (512, 512)), [150, 140])
|
||||||
|
|
Loading…
Reference in a new issue