|
@@ -1,59 +1,63 @@
|
|
package main
|
|
package main
|
|
|
|
|
|
-// c64 player dependencies
|
|
|
|
-//import "io"
|
|
|
|
-//import "os"
|
|
|
|
-//import "bytes"
|
|
|
|
-//import "mime/multipart"
|
|
|
|
-import "fmt"
|
|
|
|
-//import "net/http"
|
|
|
|
-import "net/url"
|
|
|
|
-import "strconv"
|
|
|
|
|
|
+import (
|
|
|
|
+ "fmt"
|
|
|
|
+ "log"
|
|
|
|
+ "net/url"
|
|
|
|
+ "strconv"
|
|
|
|
|
|
-import "log"
|
|
|
|
-import "github.com/hypebeast/go-osc/osc"
|
|
|
|
-
|
|
|
|
-// C64 object
|
|
|
|
|
|
+ "github.com/hypebeast/go-osc/osc"
|
|
|
|
+)
|
|
|
|
|
|
|
|
+// Your C64 controller structure
|
|
type C64 struct {
|
|
type C64 struct {
|
|
u1541_host string
|
|
u1541_host string
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// Reset (warm start) your C64 via U1541
|
|
func (c64 *C64) reset(msg *osc.Message) {
|
|
func (c64 *C64) reset(msg *osc.Message) {
|
|
- if _, err := put(c64.u1541_host+"/v1/machine:reset"); err != nil {
|
|
|
|
|
|
+ if _, err := put(c64.u1541_host + "/v1/machine:reset"); err != nil {
|
|
log.Print(err)
|
|
log.Print(err)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// Reboot a C64 and U1541 cartridge
|
|
func (c64 *C64) reboot(msg *osc.Message) {
|
|
func (c64 *C64) reboot(msg *osc.Message) {
|
|
- if _, err := put(c64.u1541_host+"/v1/machine:reboot"); err != nil {
|
|
|
|
|
|
+ if _, err := put(c64.u1541_host + "/v1/machine:reboot"); err != nil {
|
|
log.Print(err)
|
|
log.Print(err)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// Run PRG from U1541
|
|
|
|
+// String in OSC message is your PRG file path on Ultimate cart
|
|
func (c64 *C64) runPRG(msg *osc.Message) {
|
|
func (c64 *C64) runPRG(msg *osc.Message) {
|
|
params := url.Values{}
|
|
params := url.Values{}
|
|
params.Add("file", getOSC[string](msg))
|
|
params.Add("file", getOSC[string](msg))
|
|
- if _, err := put(c64.u1541_host+"/v1/runners:run_prg?" + params.Encode()); err != nil {
|
|
|
|
|
|
+ if _, err := put(c64.u1541_host + "/v1/runners:run_prg?" + params.Encode()); err != nil {
|
|
log.Print(err)
|
|
log.Print(err)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// Mount disk image on an U1541 emulating disk insertion to 1541 floppy drive
|
|
|
|
+// String in OSC message is your disk image file
|
|
func (c64 *C64) insertDisk(msg *osc.Message) {
|
|
func (c64 *C64) insertDisk(msg *osc.Message) {
|
|
params := url.Values{}
|
|
params := url.Values{}
|
|
params.Add("image", getOSC[string](msg))
|
|
params.Add("image", getOSC[string](msg))
|
|
- if _, err := put(c64.u1541_host+"/v1/drives/a:mount?" + params.Encode()); err != nil {
|
|
|
|
|
|
+ if _, err := put(c64.u1541_host + "/v1/drives/a:mount?" + params.Encode()); err != nil {
|
|
log.Print(err)
|
|
log.Print(err)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// Play SID file
|
|
|
|
+// String in OSC message is a path
|
|
|
|
+// If there is int in a OSC message use it as song number
|
|
func (c64 *C64) sidplay(msg *osc.Message) {
|
|
func (c64 *C64) sidplay(msg *osc.Message) {
|
|
params := url.Values{}
|
|
params := url.Values{}
|
|
params.Add("file", getOSC[string](msg))
|
|
params.Add("file", getOSC[string](msg))
|
|
if songnr := getOSC[int](msg); songnr != 0 {
|
|
if songnr := getOSC[int](msg); songnr != 0 {
|
|
params.Add("songnr", strconv.Itoa(songnr))
|
|
params.Add("songnr", strconv.Itoa(songnr))
|
|
}
|
|
}
|
|
- if _, err := put(c64.u1541_host+"/v1/runners:sidplay?" + params.Encode()); err != nil {
|
|
|
|
|
|
+ if _, err := put(c64.u1541_host + "/v1/runners:sidplay?" + params.Encode()); err != nil {
|
|
log.Print(err)
|
|
log.Print(err)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -66,7 +70,7 @@ func (c64 *C64) sendKeys(msg *osc.Message) {
|
|
params.Add("address", "277")
|
|
params.Add("address", "277")
|
|
params.Add("data", fmt.Sprintf("%02x", char))
|
|
params.Add("data", fmt.Sprintf("%02x", char))
|
|
log.Printf("sent %02x", char)
|
|
log.Printf("sent %02x", char)
|
|
- if _, err := put(c64.u1541_host+"/v1/machine:writemem?" + params.Encode()); err != nil {
|
|
|
|
|
|
+ if _, err := put(c64.u1541_host + "/v1/machine:writemem?" + params.Encode()); err != nil {
|
|
log.Print(err)
|
|
log.Print(err)
|
|
return
|
|
return
|
|
}
|
|
}
|
|
@@ -74,7 +78,7 @@ func (c64 *C64) sendKeys(msg *osc.Message) {
|
|
params = url.Values{}
|
|
params = url.Values{}
|
|
params.Add("address", "c6")
|
|
params.Add("address", "c6")
|
|
params.Add("data", "01")
|
|
params.Add("data", "01")
|
|
- if _, err := put(c64.u1541_host+"/v1/machine:writemem?" + params.Encode()); err != nil {
|
|
|
|
|
|
+ if _, err := put(c64.u1541_host + "/v1/machine:writemem?" + params.Encode()); err != nil {
|
|
log.Print(err)
|
|
log.Print(err)
|
|
return
|
|
return
|
|
}
|
|
}
|