-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmain.lua
More file actions
110 lines (84 loc) · 2.78 KB
/
main.lua
File metadata and controls
110 lines (84 loc) · 2.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
-- This code is licensed under the MIT Open Source License.
-- Copyright (c) 2017 Ruairidh Carmichael - ruairidhcarmichael@live.co.uk
-- Permission is hereby granted, free of charge, to any person obtaining a copy
-- of this software and associated documentation files (the "Software"), to deal
-- in the Software without restriction, including without limitation the rights
-- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-- copies of the Software, and to permit persons to whom the Software is
-- furnished to do so, subject to the following conditions:
-- The above copyright notice and this permission notice shall be included in
-- all copies or substantial portions of the Software.
-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-- THE SOFTWARE.
math.randomseed(os.time())
local cpu = require('luaeight.cpu')
local dbg = require('debugger')
cpu:initialize()
cpu:loadROM('roms/IBM')
local paused = false
function love.update(dt)
if dbg then paused = dbg.paused end
for i=1, 1 do
if not paused then cpu:cycle() end
end
end
function love.draw()
for i = 1, 64 * 32 do
local x = ((i - 1) % 64)
local y = (math.floor((i - 1) / 64))
local b = cpu.display_buffer[i - 1]
local color = b == 1 and { 255, 255, 255 } or { 0, 0, 0 }
love.graphics.setColor(unpack(color))
love.graphics.rectangle("fill", x * 16, y * 16, 16, 16)
end
love.graphics.setColor(255, 255, 255)
if dbg then dbg.draw(cpu) end
end
if not dbg then return end
function love.textinput(t)
dbg.textinput(t)
if not dbg.getWantCaptureKeyboard() then
-- Pass event to the game
end
end
function love.keypressed(key)
dbg.keypressed(key)
if not dbg.getWantCaptureKeyboard() then
-- Pass event to the game
end
end
function love.keyreleased(key)
dbg.keyreleased(key)
if not dbg.getWantCaptureKeyboard() then
-- Pass event to the game
end
end
function love.mousemoved(x, y)
dbg.mousemoved(x, y)
if not dbg.getWantCaptureMouse() then
-- Pass event to the game
end
end
function love.mousepressed(x, y, button)
dbg.mousepressed(button)
if not dbg.getWantCaptureMouse() then
-- Pass event to the game
end
end
function love.mousereleased(x, y, button)
dbg.mousereleased(button)
if not dbg.getWantCaptureMouse() then
-- Pass event to the game
end
end
function love.wheelmoved(x, y)
dbg.wheelmoved(y)
if not dbg.getWantCaptureMouse() then
-- Pass event to the game
end
end