BoxIdee

Hello old programmers !

...for those who loved the 6502 CPU inside the mytical Apple ][ & Commodore
...for those who wrote in the easy and productive 6502 Assembly
...for those who want to learn programming in a visual way
...here is my answer.

My name is Giacomo.
I started programming the 6502 assembly in the far 1980, with my fantastic Apple ][ (not 'e', not '+' and not 'C' !).
I did not know anything about programming and my only source of information (no Internet at that time!) was the Apple Monitor booklet, where a guy called Steve Wozniak (maybe someone remembers him!), collegue and friend of the other Steve (Jobs), wrote few essential guides on the CPU, the language and the D.O.S. monitor. It was a masterpiece!
Later on I understood how clever was his programming and how many tricks he inserted into the code.
I spent nights in studying and testing, until the my very first program decided to complete its job without errors...great time!

With months and then years, the knowledge grow-up and a lot of floppy diskettes (the real floppy ones), with their enormeous content of 140KB accumulated on my desk: few completed programs, a quantity of investigation tests and some useful tools.
There was an Assembler/DisAssembler, a Monitor Tool, a Disk Access Tool, and so on.

When I was conviced to migrate to other platforms - from the MAC Classic to, lately, the Intel [:-(] - I kept the Apple ][ to remember my past, until...it went broken!
No way to recover it with my limited expenses capability...sigh

I still had some diskettes, even if a lot of them disappeared during an home change.
One day, in 2002, those diskettes came to my eyes and I thought how nice it was programming in assembly... why not write something to exercise my mind with that old mindgame?
From that thought, this program was born.

Most of implementation was done with the 'real' Apple ][ in mind - terms & architecture mostly - but it can be used to emulate any other 6502 based PC, or even a different CPU wishing to change the core 'Instruction Execute' routine.


What is it?

The basic initial idea was to have a sort of didactical tools to present the beauty of assembly to someone.
Originally, it should have been just something able to execute the assembly code and, maybe, interact in some way with me (some switches and some leds)...but the requirements increased and, at the end, the current projects includes:

  • A very rudimental Editor to write source codes
  • An Assembler, to compile sources into executable files
  • A Symulator which executes and traces the program
  • An Input/Output panel, including a 'poor man' video monitor
  • Other Auxiliary tools and windows
  • An Options panel to customize the appearance

To understand how everything is tied, this is the General Architecture of the Emulator.

Download

The complete package, including sources, are available HERE to download
To run the executable you need to heve the MS Visual Basic Runtime on your PC.br>



Licensing

The program is completely FREEWARE or, better, it is PostcardWare. I mean: I would really be pleased to receive a postacard from users - I do not recieve them since years (someone still uses them?).
Should you decide to send the postcard, please send me an email and I will replay with my home address (sorry, but it can not be public, you know why...).
As always, everything is released without any warranty; I really think it will never create any PC malfunction, but should it happen, I can not be responsible.



Known bugs

A lot...too many to remember ! I might try to fix some, hopefully, if someone reports them.
As any programmers knows, I like to introduce new features and enhance them; this always leads to new bugs...



Limitations (and wish list)


* Video graphics:

Originally I implemented a 256x256 graphic display, but it was so slow to be useless.
I might think to use VB6 APIs to read/modify/write pixels using Copymemory and Safearray.


* Monitor (characters display)

Updated in version 1.07 now the resolution is 16x12; a totally new way of displaying characters allows to change fonts and sizes (these not implemented yet); furthermore, using Blitting, it is now faster.


* Unimplemented instructions:

The only instruction not implemented is [RTI] since it would not have any sense; the associated [SEI] does only set the flag bit into Status.
The decimal operation mode is not implemented since I do now how to do it! Again the flags [SED] and [CLD] are supported.


* Multi Origins

It would be nice (and useful) to have multiple origin addresses (ORGs); I tried but no way to have them working.
Possibly the way I thought addressing and branches does not permit it. I will think again.


Click su qualsiasi immagine per ingrandire


In memory of Steven Jobs





Jobs and Wozniak in the garage




ì