July 22nd, 2010

MICRO magazine added to Apple Archives site

MICRO Magazine library viewable on the Apple Archives

A.P.P.L.E., the Apple Vault and 6502.org are pleased to announce that an unprecedented cooperation has brought forth a re-release of MICRO magazine to the general public. The new site at http://micro.applearchives.com is the result of many hours of hard work by a number of people within the 6502.org community and A.P.P.L.E..

The completion of the collection has been facilitated greatly by Kevin Greene of the Apple Vault and will be occurring within two weeks. The last 4 issues are being scanned and will be released on the website when completed. There are also plans to re-scan some items in the collection at the same time, making them more visually appealling.

Our thanks go to the publisher Robert M. Tripp for kindly granting us permission to release these magazines and for officially releasing the magazines into the public domain.

For more information, contact the webmaster at callapple.org or contact Mike at 6502.org or Kevin at applevault.com.

July 22nd, 2010

KansasFest 2010 – Tuesday/Wednesday

Tuesday

KansasFest started early for me this year. James Littlejohn drove up Saturday and spent the entire weekend helping me sort and organize my Apple II collection in the sweltering Kansas heat. This is an ongoing project that I sometimes fear will never get done — I’ve simply hoarded collected too much stuff over the years, and some of it is hard to let go of. We rummaged through most of what I had and what I didn’t want to keep was loaded up on Littlejohn’s bus, bound for KFest. At last count, there were several boxes and at least 12 large plastic tubs for attendees to rummage through. I hope someone finds something useful. Next year, there will probably be more as I continue to downsize.

Tuesday arrived and it was finally off to Rockhurst. We arrived around noon, checked in and began unpacking. Although it’s not an “official” KFest day (no sessions), nearly everyone chooses to arrive early to move-in and get settled. It’s great to see old friends, and meet new folks as well. All down the dorm hallway, you can hear the beeps and disk clatter of Apple II computers booting up. I’m pleased to see that a lot of people brought real Apple II computers with them this year — the IIGS and //c are probably the most well represented but there are a few //e computers and at least one II Plus as well. Of course there are a lot of laptops (Macs, PCs), and even an Acorn PPC has been spotted (huh?).

This year, I was tempted to bring my IIGS but instead brought a nicely equipped ROM 04 //c. I wanted to spend part of KFest testing a Mockingboard D that I didn’t know if it worked or not (it does!), a serial to ethernet adapter (not tested yet) and the Guimauve 2000 (works superbly).

Many of the attendees made the trip out to a local restaurant, and afterwards spent the evening roaming up and down the hall, catching up with old friends and checking out each other’s gear and programming projects.

Wednesday

There were a lot of people sleeping in after staying up the night before. Some elected to pass up breakfast and just wait for the KFest Kookout, which again was prepared by chef Kirk Mitchell (thanks Kirk!). During the meal, Tony Diaz performed an impromptu demonstration on how to quickly (and correctly) “pop” open an Apple //c and covered basic troubleshooting and maintenance tips.

The highlight of Wednesday’s activities is the keynote. This year, Mark Simonsen joined us and spoke about his years with Beagle Bros, and how he got involved with computing and the Apple II. Mark’s keynote was easily one of the best I’ve ever seen, right up there with Woz and Jason Scott’s memorable keynotes. Ken Gagne shot the entire keynote, and it should be available online soon. When it is, we’ll post a separate story and link to it.

Later in the afternoon, Rob Walch brought everyone up to date on the latest developments on iPhone 4.0 and the iPad. Rob has his own podcast, Today In iPhone. Check it out.

Juiced.GS brought in massive quantities of Pizza and fed everyone, and that was soon followed by a revived tradition, Bite the Bag. We haven’t seen a BtB competition since our days at Avila so a lot of people were curious to see the ensuing shenanigans. The game is played with participants being able to only have one part of their body on the ground, usually a foot or knee, whilst trying to “bite” and pick up a bag from the floor with only their teeth — no hands allowed. Contestants are eliminated as pieces are torn off the bag, making it lower and harder to bite. The occasional face plant ensues but anyone with the balance, strength and flexibility can win a very nice prize. Ken Gagne won this years contest, defeating the prior reigning BtB champion Geoff Weiss.

Today also marked the beginning of HackFest, the extreme coding event where participants try to code something unique and interesting within the time constraints of the conference. I’m on the judging panel again this year and I’m looking forward to seeing the entries. We have several talented programmers attending this year, so the competition should be impressive.

I sat around watching people play old ColecoVision games on the big screen TV before heading back to the room to work on my projects. It’s going to be another late night of tinkering with the //c with occasional breaks to walk the hall and visit with other attendees.

Thursday’s KFest coverage will be provided by Andy Molloy.

July 21st, 2010

Early Apple mouse prototype

Antoine Vignau scored an early Apple II mouse prototype dated November 12, 1980. Visit his site for pictures of the heavy 3-button device.

July 18th, 2010

Sweet16 Apple IIgs emulator version 2.2 released

Sweet16 2.2 for Mac OS X has been released; this is the latest version of Eric Shepherd and F.E. Systems’ Apple IIgs emulator for Mac OS X.

One of the key changes is that by default, Sweet16 now limits the emulated IIgs speed to 40 MHz. Previously, the default was to go as fast as possible. This resulted in using 100% of at least one CPU core, which would cause battery drain and temperature issues, especially on laptops. Although users always had the option to turn on speed control and throttle the speed, this wasn’t obvious, so to help out new users, the default was changed.

If you’re already using Sweet16, your current setting won’t change when you update to version 2.2. If you’re a current user and are having this problem, you can enable speed control by opening the preferences, going to the CPU tab, and turning on the “Speed control” option. Then select a speed to throttle your emulated IIgs to.

Since modern Macs can typically blaze along at over 100 MHz emulated IIgs speed if unthrottled, even setting it to 40 MHz should improve the situation dramatically.

The full change list:

1. Sweet16 now defaults to having speed control enabled, with the GS set to a 40 MHz emulated speed. This prevents laptops from getting hot while running Sweet16. You can easily turn off speed control to let your GS fly, using the preferences’ CPU options panel.

2. You can now mount ProDOS-order (.po) disk images that are not floppy disk sizes.

3. When paused, Sweet16 no longer continues to use lots of your Mac’s processor capacity.

4. Creating 1.4 MB disks using the Create Disk Image feature now creates disk images that are actually 1.4 MB, rather than 1.6 MB.

July 14th, 2010

KansasFest prize patrol

[This is a re-post of a message from the official KansasFest Mailing List sent out by KansasFest attendee and Organizing Committee member Peter Neubauer. It contains the list of prizes announced on the KFest blog.]

The prize collection for KFest is looking pretty impressive thanks to generous vendors and mysterious “anonymous benefactors.” Check out the KFest blog or the copy below for the prizes available and how to win them.

I look forward to seeing all of you soon!
-Peter

Each KansasFest attendee goes home with more than they brought. The memories and friendships made at KansasFest last a lifetime, and the lessons and experiences learned from fellow Apple II enthusiasts, both within and without the structured sessions, lead to even more enjoyment of our favorite platform.

But what about more tangible mementos? How about some fantastic swag?

When you pack for KansasFest, leave room in your luggage, as every person at KansasFest has the opportunity to go home with prizes that will make you a true Apple II power user. Among this year’s selection are hardware, software, and magazines that you won’t find at any other computer convention:

How does one win such fabulous prizes? There are several ways:

  • Enter the HackFest. This programming contest challenges you to create a cool Apple II program in a limited amount of time. Your entry doesn’t need to be practical or even complete to win!
  • In honor of Roger Wagner, attendees (men and women!) are invited to “Tie One On” and wear outrageous or ugly ties to the Friday night formal banquet. The person with the best (or worst!) tie will be decided by a member of the planning committee.
  • Attendees staying on-site in Rockhurst University dorm rooms may decorate the door to their room. Posters, signs, knick-knacks, and other accessories are all fair play, as long as they can be safely removed at the end of the conference. The best door sign may prove worthy of a prize!
  • Show up! Just for being at KansasFest, we guarantee you’ll go home with more than you expected.

Other potential prize venues include playing games such as GShisen or Bite the Bag. These prizes are in addition to whatever gear you haul from Sean’s garage or buy at the vendor fair. Our thanks to all community members and vendors who have contributed to this year’s offerings. So come enjoy the people, activities, and prizes of KansasFest!

July 14th, 2010

Pre-KansasFest crunch and countdown

Next week, we begin our on-site coverage of KansasFest. I know a lot of our readers wish they could be there in person but couldn’t make it. So, A2Central will try to keep you vicariously involved with daily write-ups and information on new developments. This year, we’ve borrowed Mike Maginnis and Andy Molloy from Juiced.GS to help us cover the event and keep the posts timely (unlike last year). Thanks, guys — I very much appreciate the assistance!

kansasfest-2010-logo

For breaking news and info, you’ll want to follow the KansasFest blog via RSS or email. You can also read Kirk Mitchell’s updates on Twitter and follow the #kfest hashtag on Twitter to get the news as it’s happening. Kirk will also be posting his own daily reports via newsgroup comp.sys.apple2 on Usenet. Don’t have Usenet access? Try Google Groups.

Join the discussion on the official KansasFest mailing list!

We’ll also be chatting on A2Central’s IRC channel at: irc.a2central.com #a2c.chat on port 6667 — join us!

-=THANKS=- to Ken Gagne for his assistance in corralling the links for this post. Check out his Apple II blog, it’s one of our recommended reads.

July 1st, 2010

Some Assembly Required: Introducing the Registers

Unlike most modern processors, the 6502 series of processors has only three primary registers that you can use for manipulating data. A register is, basically, a slot within the processor that can contain a numeric value. On the 6502 and 65C02, these are each able to hold an 8-bit value. On the 65816, they can hold either 8-bit or 16-bit values, depending on whether or not the processor is switched to use 16-bit values for the register in question.

The accumulator — also known as the “A” register — is used for performing computations. Addition, subtraction, binary operations, and so forth are all performed on the accumulator.

The other two registers, X and Y, are called index registers. These registers are primarily used to index into a block of data while performing operations.

Addressing Modes: An Introduction

When you think about it, there are several ways to reference information. You can load or store a value directly into a specific memory address. You can set a register’s value to a specific number. You can use the address stored in a memory location as the address from which to load a value. These, among others, are called addressing modes. We’ll be introducing these gradually as we proceed through this series of articles.

Immediate Addressing

The first, and simplest, addressing mode is immediate mode. Immediate addressing is when you load a specific numeric value into a register. For example, here’s how you can set the value of the accumulator to zero:

            lda      #0

This is pretty straightforward. The LDA instruction (“LoaD Accumulator”) is used to load a value into the accumulator. When you want to represent an immediate numeric constant value in assembly language, you put a pound sign (“#”) in front of it.

Similarly, you can load immediate values into the X and Y registers like this:

            ldx      #$55
            ldy      #32

The LDX (“LoaD X register”) and LDY (“LoaD Y register”) instructions work exactly like LDA. Note, however, the presence of the dollar sign (“$”) in the LDX instruction above. That indicates that the value is hexadecimal.

Absolute Addressing

Absolute addressing is the mode by which you load and store values to a specific address in memory. For example:

            lda      #$ED
            sta      $0300

This code snippet loads the hexadecimal number $ED into the accumulator, then stores it in memory at the address $0300 using the STA instruction (“STore Accumulator”). You can similarly use STX (“STore X register”) and STY (“STore Y register”) to save the values of the X and Y registers into specific memory locations.

You’ll note that these instruction names get recycled. This is the first key lesson of assembly language programming. The 6502 has only about 50 different instructions, but most of them are available in multiple addressing modes. This lets each instruction take on a variety of uses; we’ll learn more about these over time.

Calling Subroutines

Before we get to our sample program for the week, let’s quickly look at how you call subroutines in assembly language. A subroutine is a (usually short) subprogram that handles specific tasks.

To call a subroutine, you use the JSR (Jump to SubRoutine) instruction. For now, we’ll only look at how to use its absolute addressing mode version.

Subroutines return to the calling code using the RTS (ReTurn from Subroutine) instruction. This instruction accepts no arguments. This is, for future reference, the implied addressing mode.

Let’s put together a little sample that uses what we’ve learned this week (note that this is using ORCA/M 8-bit syntax):

         keep  Registers                ;Name to compile to

PRBYTE   gequ  $FDDA                    ;Prints a hex byte
CROUT    gequ  $FD8E                    ;Prints a CR

         org   $2000

main     start
         lda   #$AB                     ;Set A to the number $AB
         jsr   PRBYTE                   ;Print A
         jsr   CROUT                    ;And a carriage return
         rts                            ;Exit program
         end

This is actually a simpler program than last week’s, but we’re going to look at it in more detail.

The KEEP directive on the first line is a bit of ORCA detail; it tells the assembler to save the assembled binary code in a file named “Registers”. This is not a 6502 operation, but a directive — or special instruction — for the assembler itself.

The next two lines use the GEQU (Global EQUate) directive define the constants PRBYTE and CROUT to point to two memory locations; these constants let us refer to these locations by name instead of number, which makes our code easier to read. These locations, in the Apple II ROM, represent a routine that prints the value of the accumulator as a hexadecimal number and a routine that simply prints out a carriage return character, respectively.

The ORG (ORiGin) directive tells the assembler the address in memory at which the program should load. In this case, we’re specifying $2000 (which happens to be the location in memory at which the high resolution graphics screen starts, but since our program doesn’t use that memory, it’s a nice place to run our code).

Next comes the body of our program. In ORCA, blocks of code are surrounded by the START and END directives. These allow us some capabilities we’ll explore later; for now, it suffices to know that you need to include them in ORCA but not in Merlin.

The main program uses the LDA instruction to set the accumulator’s value to the immediate value $AB, then calls the PRBYTE routine to print it to the screen. The CROUT routine is called next, to send a carriage return to the screen — this moves the printing cursor to the beginning of the next line.

Finally, our program ends with an RTS instruction. Simple 8-bit programs are called using a JSR instruction, so we return to the calling program (such as the ORCA shell or the BASIC interpreter) with an RTS.

Note for Merlin users: The GEQU directive in ORCA doesn’t work in Merlin; instead, you should use simply EQU. Likewise, you don’t need the KEEP, START, and END directives in Merlin. Instead, to specify the filename with which to save the assembled file, add “SAV REGISTERS” to the end of the source code file.

Save this code and assemble it, following the same instructions as last time. In ORCA, once you’ve saved the file, you can assemble and run it using the command “RUN REGISTERS.ASM” (assuming you saved the source code with the name “REGISTERS.ASM”).

Final Notes

You’ll notice we’ve skipped over any details on how the JSR and RTS instructions actually function together. This is a whole interesting set of information that we’re going to ignore for now, but we’ll get to it in a couple of installments.

Next time, we’ll expand on what we learned in this installment by doing some basic manipulation of the contents of registers.

July 1st, 2010

June 2010 Call-A.P.P.L.E. available for download

The June 2010 issue of Call-A.P.P.L.E. Magazine is now available for all users to download. You will need the latest version of the Adobe PDF viewer to read the magazine. See the A.P.P.L.E. website at http://www.callapple.org and follow the Current Issue link to open the magazine.

« Previous Page | Next Entries »