6502Android/app/src/main/kotlin/android/emu6502/app/MainActivity.kt

95 lines
3.3 KiB
Kotlin
Raw Normal View History

2015-06-09 17:21:49 +00:00
package android.emu6502.app
2015-06-22 07:25:33 +00:00
import android.emu6502.Display
import android.emu6502.Emulator
2015-06-09 17:21:49 +00:00
import android.emu6502.R
import android.os.Bundle
2015-06-30 06:15:43 +00:00
import android.support.design.widget.CoordinatorLayout
2015-06-09 17:21:49 +00:00
import android.support.design.widget.FloatingActionButton
import android.support.design.widget.Snackbar
2015-06-09 17:21:49 +00:00
import android.support.v7.app.ActionBar
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.Toolbar
import android.view.Menu
import android.view.MenuItem
2015-06-22 07:25:33 +00:00
import android.view.View
import android.widget.Button
2015-06-30 06:15:43 +00:00
import android.widget.FrameLayout
2015-06-09 17:21:49 +00:00
import android.widget.TextView
import butterknife.bindView
2017-03-08 05:30:12 +00:00
class MainActivity : AppCompatActivity() {
2015-06-09 17:21:49 +00:00
val toolbar: Toolbar by bindView(R.id.toolbar)
val txtA: TextView by bindView(R.id.A)
val txtX: TextView by bindView(R.id.X)
val txtY: TextView by bindView(R.id.Y)
val txtSP: TextView by bindView(R.id.SP)
val txtPC: TextView by bindView(R.id.PC)
val txtFlags: TextView by bindView(R.id.PC)
2015-06-30 06:15:43 +00:00
val displayWrapper: FrameLayout by bindView(R.id.display_wrapper)
2015-06-22 07:25:33 +00:00
val display: Display by bindView(R.id.display)
val txtInstructions: TextView by bindView(R.id.txtInstructions)
val fabRun: FloatingActionButton by bindView(R.id.fabRun)
2015-06-30 06:15:43 +00:00
val layoutContent: CoordinatorLayout by bindView(R.id.layout_content)
val btnLeft: Button by bindView(R.id.arrowLeft)
val btnRight: Button by bindView(R.id.arrowRight)
val btnUp: Button by bindView(R.id.arrowUp)
val btnDown: Button by bindView(R.id.arrowDown)
2015-06-30 06:15:43 +00:00
val btnReset: Button by bindView(R.id.btnReset)
private var emulator: Emulator? = null
2015-06-09 17:21:49 +00:00
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
2017-03-08 05:30:12 +00:00
val ab: ActionBar = supportActionBar!!
2015-06-09 17:21:49 +00:00
ab.setDisplayHomeAsUpEnabled(true)
fabRun.setOnClickListener {
2017-03-08 05:30:12 +00:00
displayWrapper.visibility = View.VISIBLE
emulator = Emulator(display)
val emu: Emulator = emulator as Emulator
2017-03-08 05:30:12 +00:00
emu.assembler.assembleCode(txtInstructions.text.toString().split("\n"))
Snackbar.make(layoutContent,
"Code assembled successfully, ${emu.assembler.codeLen} bytes.",
Snackbar.LENGTH_SHORT).show()
emu.cpu.run()
}
2015-06-30 06:15:43 +00:00
btnReset.setOnClickListener {
val emu: Emulator = emulator as Emulator
emu.reset()
}
val onClickButton = { code: Int ->
if (emulator != null) {
val emu = emulator as Emulator
emu.cpu.memory.storeKeypress(code)
}
}
btnLeft.setOnClickListener { onClickButton(0x61) }
btnRight.setOnClickListener { onClickButton(0x64) }
btnUp.setOnClickListener { onClickButton(0x77) }
btnDown.setOnClickListener { onClickButton(0x73) }
2015-06-09 17:21:49 +00:00
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
// Inflate the menu; this adds items to the action bar if it is present.
2017-03-08 05:30:12 +00:00
menuInflater.inflate(R.menu.menu_main, menu)
2015-06-09 17:21:49 +00:00
return true
}
override fun onOptionsItemSelected(item: MenuItem?): Boolean {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
2017-03-08 05:30:12 +00:00
val id = item!!.itemId
2015-06-09 17:21:49 +00:00
if (id == R.id.action_settings) {
return true
2017-03-08 05:30:12 +00:00
} else {
return super.onOptionsItemSelected(item)
2015-06-09 17:21:49 +00:00
}
}
}