Giter Club home page Giter Club logo

c64-io_monitor's Introduction

C64 IO_Monitor

Author: David R. Van Wagner

6502 Assembly project to monitor C64 Kernal I/O entry points usage.

Hooks entry points and increments counts as Kernal calls are made, with max count of 255 each. Works by copying C64 ROMs to RAM, patching RAM, and running from RAM (no, it doesn't patch lower memory indirect jumps). Optionally logs a trace of all individual calls with arguments and return values if memory is reserved (upper BASIC memory limit lowered prior to initializing).

Common use is to perform operations in BASIC, then display counts/trace to see what Kernal calls were made. Interestingly, see what Kernal I/O calls are made when you make a syntax error.

Usage:

LOAD "0:*",8,1
POKE 56,128 : REM RESERVE 8K FOR LOG
NEW
SYS 49152 : REM INITIALIZE HOOKS
SYS 49155 : DISPLAY COUNTS
SYS 49158 : DISPLAY LOG
REM STOP + RESTORE TO STOP

Example: Example screenshot

Produced with ACME and https://github.com/Esshahn/acme-assembly-vscode-template

Built C64 disk image is here and PRG file is here.

More details at blog.davevw.com article

c64-io_monitor's People

Contributors

davervw avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

c64-io_monitor's Issues

Supermon64 doesn't use Kernal jump table

For instance, S"TTT",08,0800,08FF

calls SAVE via the vector instead of the jump table
.C:99f2 6C 32 03 JMP ($0332)

May need to hook the vectors instead of the ROM table

Durexforth compatibility.

I've studied your code- very cool! I think it is simple to make this work well with Durexforth.

If we not copy BASIC to RAM, and restrain logging to between HERE and LATEST, and keep BASIC banked out, I think it will be both compatible and useful in this context also.

I am capable of this but I thought I would bring it to your attention while the code is fresh in your mind.
Thank you for your efforts!

low level IEC routines

There is much going on down there not being logged.
Possibly more interesting/relevant than the high level stuff.
TALK, UNTALK, LISTEN, UNLISTEN, ACPTR, CIOUT.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.