erangell / a2noslotmidi Goto Github PK
View Code? Open in Web Editor NEWApple 2 series No Slot MIDI interface using Annunciators on internal Game I/O socket
License: MIT License
Apple 2 series No Slot MIDI interface using Annunciators on internal Game I/O socket
License: MIT License
Add a JMP entry point to a new subroutine that updates the C058, C059 references to the user's desired annunciator. Determine best way for user to pass the annunciator number: zero page, poke a location after the JMP table, or pass in a register.
0 = C058, C059
1 = C05A, C05B
2 = C05C, C05D
3 = C05E, C05F
I have found that I need to do the following:
I then compare the binary output of XCODE to the original binary built with EDASM using the monitor V (verify) command.
You can see the EDASM source code in the LEGACY directory.
2 octaves can be played on the 4 rows of keys. The apple keys can be used to determine which voices the notes should be played on, and used to toggle note on/note off - experiment to find the best mechanism to play 3 part harmony: ex: oa-Z, sa-C, oa-sa-B for a C major chord, space to turn all notes off, or any of the above keystrokes to turn individual notes off - the logic should keep track of which notes are on, and if the keystroke for that note is pressed, it turns that note off.
If you want to save some inverters, the user should be able to configure the interface to work with only one inverter. The C058 references would change to C059, and the C059's would change to C058.
It is possible to replace JMPs with CLV, BVC if jumps can be made to fit within +/- 127 bytes. Or, booster code statements can be inserted to get to code farther away. This should probably be driven by a conditional assembly parameter. The advantage is that the driver can be relocated based on memory requirements (ex: Dos/Prodos buffers). Or if someone wants to compile it in Plasma as a Relocatable module, be my guest.
The COUT routine used to display the Karaoke text behaves weirdly - it looks like it just populates the even columns, and when it reaches the end of the line, some of the remaining text gets printed on lines above (where the music notes are being displayed). Find a way of replacing that routine with one that works on both the unenhanced and enhanced //e.
For future use with applications that use interrupts for timing, this code should PHP and SEI before the critical section (when the MIDI data bytes are being sent over the wire), and re-enable them with a PLP at the end of that section.
The QUIET routine entry point is above the TEST routines.
Add it to the comment header and adjust the addresses of the 2 test routines.
For special purpose applications, the unnecessary parts of the driver can be excluded from assembly, and variables in the makefile can control what gets assembled. I would like the following:
ANNUNCIATOR= <0 to 3> - assemble just the addresses for the selected annunciator
NEGATIVELOGIC = 0 or 1 - set to 1 to include the code that handles negative logic, and enable it by default.
If either of the above parameters are undefined, assemble the current source code without modifications.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.