SkillAgentSearch skills...

Oricutron

Portable Oric-1/Atmos/Telestrat and Pravetz 8D emulator

Install / Use

/learn @pete-gordon/Oricutron
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Oricutron 1.2

(c)2009-2014 Peter Gordon (pete@gordon.plus)

This is a work in progress.

Current status

6502: 100% done (apart from any unknown bugs :) VIA: 95% done. AY: 99% done. Video: 100% done Tape: 99% done (.TAP, .ORT and .WAV supported) Disk: 90% done (single-density mode not supported)

Credits

Programming

Peter Gordon

Additional Programming

Francois Revol Alexandre Devert Stefan Haubenthal Ibisum Kamel Biskri Iss Christian from defence-force forum Cedric Paille

Amiga & Windows ports

Peter Gordon

BeOS/Haiku port

Francois Revol

macOS port

Francois Revol Kamel Biskri Patrice Torguet

MorphOS & AROS ports

Stefan Haubenthal

Linux port

Francois Revol Ibisum Alexandre Devert

Pandora port

Ibisum

ACIA & Pravetz disk support

Iss

CH376 support

Offset (cpc) & Jede

Thanks

Thanks to DBug and Twilighte for letting me distribute their demos and games with Oricutron.

Thanks to DBug, Twilighte, Chema, kamelito, Yicker, JamesD, Algarbi, ibisum, jede, thrust26 and everyone else for their help and feedback!

AVI export notes

The AVI export uses the MRLE codec. Your favourite player might not support it, but MPlayer plays it, ffmpeg converts it and you can upload it directly to youtube.

Note that the MRLE codec shows up some endian-issues on the Amiga OS4 port of MPlayer, so it will sound crappy and have wrong colours until those bugs are fixed :-(

Command line

You can specify certain options on the command line. All options have both short and long versions. For example:

-mblah

or

--machine blah

Is the same thing. Note that the short version doesn't have a space, but the long version does.

Here are all the options:

-m / --machine = Specify machine type. Valid types are:

                   "atmos" or "a" for Oric atmos
                   "oric1" or "1" for Oric-1
                   "o16k" for Oric-1 16k
                   "telestrat" or "t" for Telestrat
                   "pravetz", "pravetz8d" or "p" for Pravetz 8D

-d / --disk = Specify a disk image to use in drive 0 -t / --tape = Specify a tape image to use -k / --drive = Specify a disk drive controller. Valid types are:

                   "microdisc" or "m" for Microdisc
                   "jasmin" or "j" for Jasmin
                   "bd500" or "b" for ByteDrive BD-500
                   "pravetz" or "p" for Pravetz-8D FDC

-s / --symbols = Load symbols from a file -f / --fullscreen = Run oricutron fullscreen -w / --window = Run oricutron in a window -R / --rendermode = Render mode. Valid modes are:

                   "soft" for software rendering
                   "opengl" for OpenGL

-b / --debug = Start oricutron in the debugger -r / --breakpoint = Set a breakpoint (See NOTE2) -h / --help = Print command line help and quit

--turbotape on|off = Enable or disable turbotape --lightpen on|off = Enable or disable lightpen --vsynchack on|off = Enable or disable VSync hack --scanlines on|off = Enable or disable scanline simulation

--serial_address N = Set serial card base address to N (default is $31C) where N is decimal or hexadecimal within the range of $31c..$3fc (i.e. 796, 0x31c, $31C represent the same value)

--serial <type> = Set serial card back-end emulation: 'none' - no serial 'loopback' - for testing - all TX data is returned to RX 'modem[:port]' - emulates com port with attached modem, only minimal AT command set is supported and data is redirected to TCP. Default port is 23 (telnet)

                    'com:115200,8,N,1,<device>' - use real or virtual <device> on host as emulated ACIA.
                                     Baudrate, data bits, parity and stop bits can be set as needed
                               ex.:  Windows: 'com:115200,8,N,1,COM1'
                                     Linux:   'com:19200,8,N,1,/dev/ttyS0'
                                              'com:115200,8,N,1,/dev/ttyUSB0'

NOTE: If you are not sure what machine or drive type is required for a disk or tape image, just pass the filename without any options and Oricutron will try and autodetect for you.

NOTE2: List with many breakpoints can be loaded from command line. Use default switches -r or --breakpoint, but instead of an address, specify filename prefixed with ':'. The file is plain text file, which contains desired breakpoint-addresses - one per line using the same syntax as in the monitor. Breakpoints can be set with absolute addresses or with symbols (loaded with command line switches -s or --symbols).

Examples:

oricutron tapes/tape_image.tap oricutron disks/disk_image.dsk oricutron --machine atmos --tape "tape files/foo.tap" --symbols "my files/symbols" oricutron -m1 -tBUILD/foo.tap -sBUILD/symbols -b oricutron --drive microdisc --disk demos/barbitoric.dsk --fullscreen oricutron -ddemos/barbitoric.dsk -f oricutron --turbotape off tapes/hobbit.tap oricutron -s myproject.sym -r :myprojectbp.txt

Keys

In emulator

F1 - Bring up the menu F2 - Go to debugger/monitor F3 - Reset button (NMI) F4 - Hard reset Shift+F4 - Jasmin reset F5 - Toggle FPS F6 - Toggle warp speed F7 - Save all modified disks Shift+F7 - Save all modified disks to new disk images F8 - Toggle fullscreen F9 - Save tape output F10 - Start/Stop AVI capture F11 - Copy text screen to clipboard (BeOS, Linux & Windows) F12 - Paste (BeOS, Linux & Windows) Help - Show guide (Amiga, MorphOS and AROS) AltGr - Additional modifier PrtSc - Save screen as BMP

In menus

Cursors - Navigate Enter - Perform option Backspace - Go back Escape - Exit menus (or use the mouse)

In Debugger/Monitor

F1 - Go to the menu F2 - Return to the emulator F3 - Toggle console/debug output/memwatch F4 - Toggle VIA/AY/disk information/Twilighte board registers F9 - Reset cycle count F10 - Step over code F11 - Step over code without tracing into subroutines. F12 - Skip instruction

In the console:

Up/Down - Command history

In memwatch:

Up/Down - Scroll (+shift for page up/down) Page Up/Page Down - Page up/down Hex digits - Enter address S - Toggle split mode Tab - Switch windows in split mode

Monitor instructions

In the monitor, number arguments are decimal by default, or prefixed with $ for hex or % for binary. Pretty much everything is output in hex.

In most places where you can enter a number or address, you can pass a CPU or VIA register. (VIA registers are prefixed with V, e.g. VDDRA). Anywhere you can pass an address, you can also use a symbol.

Commands:

? - Help a <addr> - Assemble bc <bp id> - Clear breakpoint bcm <bp id> - Clear mem breakpoint bl - List breakpoints blm - List mem breakpoints bs <addr> [zct] - Set breakpoint bsm <addr> [rwc] - Set mem breakpoint bz - Zap breakpoints bzm - Zap mem breakpoints d <addr> - Disassemble fd <addr> <end> <file>- Disassemble to file fw <addr> <len> <file>- Write mem to BIN file fr <addr> <file> - Read BIN file to mem m <addr> - Dump memory mm <addr> <value> - Modify memory mw <addr> - Memory watch at addr ms <value> - Search value in RAM memory mr <value> - Refine search with new value mp - Print memory search addresses nl <file> - Load snapshot ns <file> - Save snapshot r <reg> <val> - Set <reg> to <val> q, x or qm - Quit monitor qe - Quit emulator sa <name> <addr> - Add or move user symbol sk <name> - Kill user symbol sc - Symbols not case-sensitive sC - Symbols case-sensitive sl <file> - Load user symbols sx <file> - Export user symbols sz - Zap user symbols

Breakpoints

There are two types of breakpoint. "Normal" breakpoints trigger when the CPU is about to execute an instruction at the breakpoint address. "Memory" breakpoints trigger when the breakpoint address is accessed or modified.

Normal breakpoints can use 'z','c' and 't' modifiers. bs $0c00 <-- Break when the CPU is about to execute code at $0c00 bs $0c00 z <-- Break when the CPU is about to execute code at $0c00 and set cycles counter to 0 bs $0c00 zc <-- Set cycles counter to 0 and continues bs $0c00 c <-- Continues execution (i.e. disabled breakpoint) bs $0c00 zct <-- Prints in console current counter, set cycles counter to 0 and continues

The main purpose of these modifiers is to make cycle counting easier. If symbols are loaded, they can be used instead of absolute addresses.

There are three ways a memory breakpoint can be triggered; when the CPU is about to read the address (r), and the CPU is about to write the address (w), or after the value at t

Related Skills

View on GitHub
GitHub Stars83
CategoryDevelopment
Updated27d ago
Forks32

Languages

C

Security Score

95/100

Audited on Mar 8, 2026

No findings