Skip to content

Commit

Permalink
#12 Drag and drop .PRG loading
Browse files Browse the repository at this point in the history
  • Loading branch information
hagronnestad committed Oct 14, 2019
1 parent 40c6a79 commit 1c109fb
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 27 deletions.
15 changes: 9 additions & 6 deletions ComputerSystems/Commodore64/FormC64Screen.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

51 changes: 38 additions & 13 deletions ComputerSystems/Commodore64/FormC64Screen.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
using System.Collections.Generic;
using Commodore64.Properties;
using Timer = System.Threading.Timer;
using Debugger;

using Debugger;

namespace ComputerSystem.Commodore64 {
public partial class FormC64Screen : Form {

Expand Down Expand Up @@ -66,6 +66,8 @@ public FormC64Screen(C64 c64) {
}

private void FormC64Screen_Load(object sender, EventArgs e) {
pScreen.AllowDrop = true;

new Thread(InvalidateScreen).Start();
}

Expand Down Expand Up @@ -302,18 +304,20 @@ private async void BtnRestart_Click(object sender, EventArgs e) {
C64.PowerOn();
}

private void LoadPrg(string fileName) {
var file = File.ReadAllBytes(fileName);

var address = BitConverter.ToUInt16(file, 0);
var data = file.Skip(2).ToArray();

for (int i = 0; i < data.Length; i++) {
C64.Memory[address + i] = data[i];
}
}

private void BtnOpen_Click(object sender, EventArgs e) {
if (ofd.ShowDialog() == DialogResult.OK) {

var file = File.ReadAllBytes(ofd.FileName);

var address = BitConverter.ToUInt16(file, 0);
var data = file.Skip(2).ToArray();

for (int i = 0; i < data.Length; i++) {
C64.Memory[address + i] = data[i];
}

LoadPrg(ofd.FileName);
}
}

Expand Down Expand Up @@ -374,6 +378,27 @@ private void FormC64Screen_Deactivate(object sender, EventArgs e) {

private void BtnReset_Click(object sender, EventArgs e) {
C64.Cpu.Reset();
}
}

private void pScreen_DragDropAsync(object sender, DragEventArgs e) {
if (e.Data.GetData(DataFormats.FileDrop) is string[] d && d.Length > 0) {
if (!File.Exists(d.First())) return;

LoadPrg(d.First());
}

// TODO: Fix this hack
this.Focus();
SendKeys.SendWait("r");
SendKeys.SendWait("u");
SendKeys.SendWait("n");
SendKeys.SendWait("{ENTER}");
}

private void pScreen_DragEnter(object sender, DragEventArgs e) {
if (e.Data.GetDataPresent(DataFormats.FileDrop)) {
e.Effect = DragDropEffects.Copy;
}
}
}
}
16 changes: 8 additions & 8 deletions ComputerSystems/Commodore64/FormC64Screen.resx
Original file line number Diff line number Diff line change
Expand Up @@ -138,14 +138,14 @@
<data name="btnReset.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGgSURBVDhPvVLJTgJBFOQDvMIQtrDDMDPsOwHmqom/4N0v
8GAwxosHv8Nool/iEm/eOKjRxIPoQY1RJm1V06goy81KOpmp7lev3uL6VwSDwU31ORt+v38tGo0eqd8J
tFotYRjGjaZphqK+EQ6He5VK5dm2baHr+omiJ1Cv151GoyHK5fL7l4jb7V4qlUqvDByfSCSyIy9/AUFm
Lpd7gBCdXCla2rabzaYzFvB6vbq6+gOKIOGwWq0K9GRbkrC/QYFsNnuHOh1JzkEsFjugQDKZPHd5PB6t
0+mIbrcreAnVdflqDuBwmQIo41H2oN1uSwGKqTdzwXdouCgWiyO36OoLXfh8vlVJLAAdUCCTyQwkYZrm
JV0kEoljSSwAeraPpCIej59KAouzRwHM2AkEApYkZ4Dzz+fzH5iEwNueoqWLW25aoVAYcFSKngCDYfue
wel0uq/oERgEW0OMU6DDDuwdotYVNow10zYyD2kdy/Q2dVeYwbKsa24aT61Wo5g8bBozY837U4N/IhQK
7aZSqQuU9YSMDueNBp+h5i31RMHl+gSNGoogXVS8sgAAAABJRU5ErkJggg==
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGhSURBVDhPvVLJTgJBFJwP8ApD2MIOw8xA2LcAc9XEX/Du
F3gwGOPFg99hNNEvcYk3bxzUaOJB9KDGKJO2qmlUlOVmJR2G6vfqVb/3tH9FKBTaVJ+zEQgE1mKx2JH6
O4FWqyUMw7jRdd1U1DcikUivUqk8O44jMpnMiaInUK/X3UajIcrl8vuXiMfjWSoUCq9MHJ9oNLojL38B
SVY+n3+AkDBN80rR0rbTbDbdsYDP5zPU1R9QBAWH1WpVoCfbkoT9DQrYtn2Hd7qSnIN4PH5AgVQqda55
vV690+mIbrcreAnVdRk1B3C4TAE09FH2oN1uSwGKqZi5YBwaLorF4sgtuvpCF36/f1USC0AHFMC0BpKw
LOuSLpLJ5LEkFgA920dRkUgkTiWBxdmjAGbsBoNBW5IzwPnncrmPUqkkENtTtHRxy03DiAYclaInwGTY
vmcyfvuKHoFJaMoQ4xTosAt7h3jrChvGN9M2Kg9pHcv0NnVXWAG7cM1N46nVahSTh01jZYyuPzX5J8Lh
8G46nb7IZrNPqOhy3mjwGd68pUIUNO0THEmJ2NejSm4AAAAASUVORK5CYII=
</value>
</data>
<data name="btnPause.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
Expand Down

0 comments on commit 1c109fb

Please sign in to comment.