Giter Club home page Giter Club logo

retrotype'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

retrotype's People

Contributors

mbuhidar avatar

Stargazers

 avatar

Watchers

 avatar

retrotype's Issues

Add command line flag to turn off open bracket checking

Some program listings don't have equal open vs closed bracket count in all lines. The bracket checking feature prevents checksum determination for these lines. It is not clear if unclosed brackets are a syntax error in Commodore BASIC.

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, making it inconsistent with the form returned when no error exists.

Improve check_line_number_seq function

Function currently prints error messages upon detection and exits. Propose to have it return error text as strings and have the main execution flow handle the program exit. This will provide more flexibility for interfaces besides cli.

Refactor Checksums class to remove duplicate code

At a minimum, the calculation of the checksum letter codes for Ahoy is the same for all three Ahoy versions. Perhaps pull that out into another method in the class.

It may be better to create a class template that each Ahoy version can inherit with method overrides to reflect unique checksum calculation approaches between the versions of Bug Repellent.

Improve test coverage in retrotype_cli.py (see coverage report in description for missing coverage)

Notes (check via command sequence below for now - some day, add to ci):

$ coverage erase
$ coverage run -m pytest
$ coverage report -m

Name                             Stmts   Miss  Cover   Missing
--------------------------------------------------------------
src/retrotype/__init__.py            0      0   100%
src/retrotype/char_maps.py           6      0   100%
src/retrotype/retrotype_cli.py      78     12    85%   132-134, 139-140, 144-150, 156-157, 186-187, 220
src/retrotype/retrotype_lib.py     197      0   100%
tests/retrotype_cli_test.py         38      0   100%
tests/retrotype_lib_test.py         86      0   100%
--------------------------------------------------------------
TOTAL                              405     12    97%

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 *

Tried a fix by using a leading colon character to set the remark flag to True to prevent tokenizing the BASIC token text in the line. This didn't fix the issue.

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.