Skip to content

Commit

Permalink
Create hello-world.md
Browse files Browse the repository at this point in the history
  • Loading branch information
SteveHagins authored Jun 21, 2023
1 parent 0e3b9fc commit 639182b
Showing 1 changed file with 61 additions and 0 deletions.
61 changes: 61 additions & 0 deletions hello-world.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# "Hello, World!" in 6502 assembly language for the Apple II:

```assembly
ORG $0800 ; Start address of the program
LDX #0 ; Initialize X register to zero
LOOP LDA MESSAGE,X ; Load character from the message
BEQ END ; If the character is null, end the program
JSR $FDED ; Print the character to the screen
INX ; Increment X register
JMP LOOP ; Repeat for the next character
END RTS ; Return from the subroutine
MESSAGE TEXT "Hello, World!",0
END ; End of the program
```

#### Explanation:
- The program starts at memory address `$0800`.
- It uses the X register to keep track of the current character index.
- The loop starts at `LOOP` and loads each character from the `MESSAGE` string.
- If the character is null (end of the string), the program branches to `END`.
- Otherwise, it calls the system routine `$FDED` to print the character to the screen.
- The X register is incremented, and the loop continues until the end of the string.
- Finally, the program reaches `END`, performs a return from the subroutine (`RTS`), and ends.

When executed, this program will print "Hello, World!" to the screen on the Apple II.

# Getting Started
To program an Apple II in assembly language, you'll need an Apple II computer or an emulator, an assembler, and some knowledge of assembly language programming. Here are the steps to get started:

1. Set up your development environment:
- Obtain an Apple II computer or use an emulator such as AppleWin or Apple //js.
- Install an assembler, such as Merlin or ORCA/M, on your Apple II or emulator.

2. Learn the Apple II architecture and assembly language:
- Familiarize yourself with the Apple II architecture, including the CPU (6502 or 65C02), memory layout, and input/output mechanisms.
- Study the 6502/65C02 assembly language instruction set and addressing modes. Resources like "Programming the 6502" by Rodnay Zaks can be helpful.

3. Write your assembly code:
- Use a text editor or an integrated development environment (IDE) to write your assembly code. Save the file with a `.s` or `.asm` extension.
- Start with simple programs, such as displaying text on the screen or reading input from the keyboard.
- Use labels to mark specific memory locations or routines for easier navigation and readability.
- Include comments to document your code and explain its functionality.

4. Assemble your code:
- Use the assembler you installed to convert your assembly code into machine code (object code). The specific command and syntax depend on the assembler you're using. For example, with Merlin, you can use the `asm` command to assemble your code.
- Make sure to specify the appropriate target platform, such as Apple II or 6502/65C02, when assembling.

5. Load and run your program:
- Transfer the assembled object code to your Apple II or emulator. You can use various methods like disk images, cassette tapes, or serial transfer.
- On the Apple II, you can use the `BRUN` command to load and execute the program. For example, if your program is saved as `MYPROG`, you can type `BRUN MYPROG` to run it.

6. Debug and refine your code:
- Test your program and identify any errors or unexpected behavior.
- Use debugging tools or techniques specific to your assembler or emulator to track down and fix issues.
- Refine your code, optimize performance, and add new features as needed.

Remember that learning assembly language programming takes time and practice. It's helpful to consult documentation, tutorials, and online communities for support and further guidance.

0 comments on commit 639182b

Please sign in to comment.