dschmenk / PLASMA

Proto Language AsSeMbler for All (formerly Apple)
MIT License
191 stars 26 forks source link

Makefile and directory structure to support ports to alternative 6502 platforms #35

Closed BrianHoldsworth closed 6 years ago

BrianHoldsworth commented 6 years ago

Congrats on 1.0!

This fixes #34 .

My hope is ports for BBC-B, Master 128, C64, and C128 that are feature compatible with the Apple ][ PLASMA I.e. you could program in the Sandbox.

This branch has just the Makefile and directory changes to support that. I think having this change in the upstream master solves two issues in the medium to long term.

  1. Merging upstream changes should be trivial, since upstream changes will be happening in the 'apple/' sub-directories.
  2. Keeping ports segregated can be done easily and for as long as desired, since they will be segregated by both a git branch, and their own directories for ported code: 'bbc/', 'cbm/'.

That should allow both maintenance branches for apple code and porting branches for others to work together fairly harmoniously.

dschmenk commented 6 years ago

Brian- The thing with completely separating the code bases and tools into directories is that it feels like multiple projects. If there isn't anything to share between the different ports, then they would best be served as separate projects, with pulls to bring in them in synch. Otherwise it would be too much effort to try and keep everything up-to-date.

BrianHoldsworth commented 6 years ago

You're right.

toolsrc and inc interfaces that can be shared are currently shared.

It will make sense when there are multiple ports for a lot of samplesrc to be shared too. It would be a repository of portable sample apps in the spirit of "Write Once" VM's.

vmsrc is not shared, but the core VM for 6502 should be shared. Only problem is that has not been the pattern - there are 5 different VM's (including bbc), mostly not sharing the core code. I think a good question is whether the VM can/should be re-factored so that it has a core piece that is shareable for 6502 platforms.

If the VM was suitably re-factored (open question), then the only thing not shared is libsrc. This makes sense because most of the import modules you've created are naturally, intrinsically, platform-specific.

dschmenk commented 6 years ago

Brian- I'm closing out this request after refactoring to support multiple platforms. I'm trying to share as much as possible while still allowing each platform to have unique configurations.