Giter Club home page Giter Club logo

retro_typein_tools's Introduction

Hello, I'm Michael Buhidar

Github Badge Twitter Badge LinkedIn Badge Website Badge

By profession, I'm a product development engineer working to develop construction machines, but I'm also working to learn software development using modern tools and languages. Currently focused on learning Python along with its surrounding ecosystem.

My primary projects relate to modernizing the experience of typing in Commodore 64 games from magazines popular in the 80's (throwback to my coding interests when I was in middle/high school). Using those projects mostly to learn by creating something to hone not only Python skills, but also learning/knowledge for C64 BASIC, Assembly, Pytest, Git, Github, releasing projects on PyPi, etc.

Michael's GitHub Stats

retro_typein_tools's People

Contributors

mbuhidar avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

commodore-bench

retro_typein_tools's Issues

Add support for outputting the checksum lists as text files.

Currently, the checksums generated are displayed only in the terminal. Would be beneficial to have a text file for the output also to make it easier to compare side to side with magazine image. Perhaps leading to automated comparison in the future.

Run pytest outside tests directory

pytest currently runs properly only from the tests directory. The issue is with the path to the 'test_infile.txt' file used for testing the read_file() function. Find a way to add a generalized path for 'test_infile.txt' or find a better way to test the read_file() function.

Fix the ahoy_checksum() function so it returns the correct values

In the add_ahoy_checksum branch, the function ahoy_checksum() is functionally working but is yielding incorrect checksum values. The algorithm was reverse engineered from disassembled code from the original C64 repellent checksum program. See assembly code walkthrough at the following location:

https://github.com/mbuhidar/C64_Bug_Repellent/blob/master/disassemblers/white-flame_disassembler_good/walkthru_10_quotes_H.asm

Seems to be an 'off by one' type of issue, but I haven't been able to isolate the issue.

Remove support for petcat file output

Simplify interface by eliminating support for petcat-ready file output and removing internal conversion of type-in codes to petcat codes. Functionality is no longer required since the debug_tokenize tool converts directly to C64 executable format.

Rename CLI source flag 'ahoy4' to 'ahoy3' since implementation is the same for both.

Source flag 'ahoy4' was added previously when it was thought that Ahoy entries starting with the May 1987 issue would need different special character handling than issues from Nov 1984-Apr 1987. The implementation for 'ahoy4' is a superset of functionality that will also cover the Nov 1984-Apr 1987 issues (planned ahoy3), so support for the two sets of issues will be combined into the 'ahoy3' source flag.

Improve how loose brace errors are handled

Currently, loose brace errors are detected in the ahoy_lines_list function. The way the error is handled is via return of None by the function making it inconsistent with the form returned when no error exists.

Add support for [brackets] that replaced {braces} in the November 1984 issue of Ahoy magazine

In November 1984, Ahoy introduced a new method of representing special type-in characters in their code listings moving from using braces to brackets to indicate how to type them in. For this issue, the means of handling special characters represented in this way need to be added. The November change also introduced a notation for duplicating special (and regular) characters multiple times, e.g. [5 "[LEFT]"] indicates entry of the cursor left key five times.

Issue #30 will outline other advancements that change the API formerly used for entering certain special characters.

Not yielding a matching checksum value for certain unique lines

For Ahoy November 1985 issue, the game Slither has a few unusual remark lines starting with a colon that are not in the program flow.
For lines that contain text corresponding to BASIC tokens, the checksum values produced by the app do not match those printed in the magazine. Examples below:

999 : * ML DATA *
1099 : * CHARACTER DATA *
3099 : * COORDINATE DATA *

Add support for 3rd version of Ahoy Bug Repellent

Add support for 3rd and final version of Ahoy's Bug Repellent. Need to add CLI options and doc. Will need to disassemble and reverse engineer the 6502 Assembly similar to the first two versions.

Add support for changing the way characters preceded by shift or commodore keys are represented

The November 1984 issue of Ahoy introduced a different way to represent characters entered with shift or commodore keys being held during entry. This issue will update the prior way these characters were represented in typed-in code for consistency. In addition, other characters like English Pound were formalized in a different way than defined in prior releases of debug_tokenize - these should be adjusted for consistency across all versions of Ahoy Bug Repellent. This will break the prior API and require revision to any prior listings entered with the former definition.

Issue 31 will address the other extension that Ahoy introduced related to handling multiple entries of the same character (special or not).

Need provisions for handling unique type-in characters for C64

For Commodore 64 type-in programs, a common special character entry method was to precede certain letters with either the shift key or the Commodore key to access special control or graphics characters. Ahoy magazine indicated these entry methods in the program listings with an underscore on characters that should be entered while holding SHIFT and an overlined on characters that should be entered while holding the Commodore key. We need another method for entering these characters in a modern code editor.

List is here for reference: https://sta.c64.org/cbm64petkey.html

Action is to add another reference dictionary to the char_maps.py file to cover these cases.

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.