ADCPU

ADCPU


Android implementation of Notch's DCPU-16 (v1.1 and v1.7) (http://0x10c.com)
Version 0.33
By Andrew "Stick" Boothroyd (@sticksoft)
Latest stable version: https://play.google.com/store/apps/details?id=uk.co.sticksoft.adce
Don't forget you can post issues / feature requests on GitHub :)


LICENSE
=======
You may do whatever you want with this software, at your own risk. (http://en.wikipedia.org/wiki/WTFPL)
If you use it in a project, letting me know and putting a link to https://github.com/sticksoft/ADCPU-16Emu in would be appreciated.
If I ever meet you in person, a beer would be even more appreciated!

README
======

Overview
--------
This version assembles and runs DCPU 1.1 and 1.7 programs.
Supported features include emulator, assembler, RAM viewer, minimal debugger, some hardware, and virtual ship (2D).
Hardware includes LEM1802, Generic Keyboard, Generic Timer, and M35FD.

Usage
-----
The first tab shown on app startup is the Control tab, containing the RAM viewer (box at the top) and controls for starting / resetting the emulator.
This won't do much until you assemble a program!

The ASM tab is the Assembly view. Here, you can load / save an assembly file from disk (press the Menu key for options) and assemble a program.
Pressing "Assemble" will reset the emulator, assemble your program, output the assembled binary and an assembly -> binary view for debugging, and load the binary data into the emulator's memory.
Return to the first tab to start it and view changes to the memory.

The Console tab displays the text console. With the app in its default (DCPU 1.7) mode, this is the LEM1802.
In this screen, phone-keyboard input is routed to the Generic Keyboard device.

The Ship tab displays a virtual ship! Control it by writing to 0xAD00 (throttle) and 0xAD02 (yaw starboard / port); sample code is included that does this (move.dasm).
Values for these registers are interpreted as signed 2's complement integers; e.g. 0x7FFF = all ahead full, 0x8000 = full reverse, 0x0000 = all stop.
For current rotation speed, read from 0xAD05 - positive (< 0x8000) values are clockwise (starboard) and negative values are anticlockwise.

Harcoded memory addresses
-------------------------
These will be replaced with a hardware device soon.
0xAD00 - Throttle control
0xAD01 - (reserved for pitch)
0xAD02 - Yaw
0xAD03 - (reserved for roll)
0xAD04 - (reserved for pitch gyro)
0xAD05 - Yaw gyro
0xAD06 - (reserved for roll gyro)

0xAD10 - Radar control. Set to 0xFFFF to get count, set to index number (starting at 1) for that contact's info.
0xAD11 - Radar contact count
0xAD12 - Current contact X
0xAD13 - (reserved for contact Y)
0xAD14 - Current contact Z
0xAD15 - (reserved for contact type)
0xAD16 - (reserved for contact size)
0xAD17 - (reserved for contact IFF code)


Upcoming features
-----------------
Resuming previous CPU state
Visual editor supporting comments
Debugging from the visual editor

Recent changes:
v0.33
Fixed a bug with PC arithmetic
Improved visual editor UI
Fixed divide-by-zero bug (thanks notabotanist!)


v0.32
Changed to fixed-width, pinch-to-scale fonts for assembly editor
Fixed [SP], [SP+n] and PICK n (thanks thedarkfreak!)
Added some new examples


v0.31
Added fix for EX being set too early (thanks thedarkfreak!)
Added support for M35FD (disk drive)


v0.30
Major upgrade to DCPU v1.7
Added LEM1802, Generic Clock and Generic Keyboard


v0.24
Fixed a bug with JSR (thanks Alexei!)
Add to list
Free
95
4.8
User ratings
47
Installs
1,000+
Concerns
0
File size
153 kb
Screenshots
Screenshot of ADCPU Screenshot of ADCPU Screenshot of ADCPU Screenshot of ADCPU Screenshot of ADCPU Screenshot of ADCPU

About ADCPU
Android implementation of Notch's DCPU-16 (v1.1 and v1.7) (http://0x10c.com)
Version 0.33
By Andrew "Stick" Boothroyd (@sticksoft)
Latest stable version: https://play.google.com/store/apps/details?id=uk.co.sticksoft.adce
Don't forget you can post issues / feature requests on GitHub :)


LICENSE
=======
You may do whatever you want with this software, at your own risk. (http://en.wikipedia.org/wiki/WTFPL)
If you use it in a project, letting me know and putting a link to https://github.com/sticksoft/ADCPU-16Emu in would be appreciated.
If I ever meet you in person, a beer would be even more appreciated!

README
======

Overview
--------
This version assembles and runs DCPU 1.1 and 1.7 programs.
Supported features include emulator, assembler, RAM viewer, minimal debugger, some hardware, and virtual ship (2D).
Hardware includes LEM1802, Generic Keyboard, Generic Timer, and M35FD.

Usage
-----
The first tab shown on app startup is the Control tab, containing the RAM viewer (box at the top) and controls for starting / resetting the emulator.
This won't do much until you assemble a program!

The ASM tab is the Assembly view. Here, you can load / save an assembly file from disk (press the Menu key for options) and assemble a program.
Pressing "Assemble" will reset the emulator, assemble your program, output the assembled binary and an assembly -> binary view for debugging, and load the binary data into the emulator's memory.
Return to the first tab to start it and view changes to the memory.

The Console tab displays the text console. With the app in its default (DCPU 1.7) mode, this is the LEM1802.
In this screen, phone-keyboard input is routed to the Generic Keyboard device.

The Ship tab displays a virtual ship! Control it by writing to 0xAD00 (throttle) and 0xAD02 (yaw starboard / port); sample code is included that does this (move.dasm).
Values for these registers are interpreted as signed 2's complement integers; e.g. 0x7FFF = all ahead full, 0x8000 = full reverse, 0x0000 = all stop.
For current rotation speed, read from 0xAD05 - positive (< 0x8000) values are clockwise (starboard) and negative values are anticlockwise.

Harcoded memory addresses
-------------------------
These will be replaced with a hardware device soon.
0xAD00 - Throttle control
0xAD01 - (reserved for pitch)
0xAD02 - Yaw
0xAD03 - (reserved for roll)
0xAD04 - (reserved for pitch gyro)
0xAD05 - Yaw gyro
0xAD06 - (reserved for roll gyro)

0xAD10 - Radar control. Set to 0xFFFF to get count, set to index number (starting at 1) for that contact's info.
0xAD11 - Radar contact count
0xAD12 - Current contact X
0xAD13 - (reserved for contact Y)
0xAD14 - Current contact Z
0xAD15 - (reserved for contact type)
0xAD16 - (reserved for contact size)
0xAD17 - (reserved for contact IFF code)


Upcoming features
-----------------
Resuming previous CPU state
Visual editor supporting comments
Debugging from the visual editor

Recent changes:
v0.33
Fixed a bug with PC arithmetic
Improved visual editor UI
Fixed divide-by-zero bug (thanks notabotanist!)


v0.32
Changed to fixed-width, pinch-to-scale fonts for assembly editor
Fixed [SP], [SP+n] and PICK n (thanks thedarkfreak!)
Added some new examples


v0.31
Added fix for EX being set too early (thanks thedarkfreak!)
Added support for M35FD (disk drive)


v0.30
Major upgrade to DCPU v1.7
Added LEM1802, Generic Clock and Generic Keyboard


v0.24
Fixed a bug with JSR (thanks Alexei!)

Visit Website
User reviews of ADCPU
Write the first review for this app!
Android Market Comments
A Google User
Aug 11, 2013
I love this app bugsss! •occasional crash when switching orientation modes •soft keyboard won't add to the buffer (0x9000-0x900f) [these are known to happen for the nexus 7 and Samsung SCH-I500 (galaxy s)]
A Google User
Apr 24, 2013
Works but.. UI is ugly as..
A Google User
Apr 24, 2013
Works but.. UI is ugly as..
A Google User
Nov 29, 2012
helps lower ram Do asemble and restart your device... AWSOME!!!!
A Google User
Nov 27, 2012
Great! Nice to see there is still love for asm. Visual editor is quite interesting concept. Suggestion: use fixed width fonts