Difference between revisions of "Programming the Microprocessor"
Line 12: | Line 12: | ||
'''Example code:''' | '''Example code:''' | ||
− | + | .org $8000 ; Reset Vector points to the Program address on EEPROM | |
− | + | reset: ; reset = address $8000 on the EEPROM | |
− | + | LDA #$FF ; Set DDRB to output on 65c22 | |
− | + | STA $6002 ; write to VIA Address for DDRB | |
− | + | loop: ; Main loop starts here | |
− | + | ; Blink every other LED 4 times | |
− | + | LDA #$55 ; Load Hex 55 alternating 0101 0101 Turn on evey other LED | |
− | + | STA $6000 ; Write to VIA $55 binary 01010101 | |
− | + | LDA #$00 ; Load $00 Binary 00000000 turn off LEDs | |
− | LDA #$00 | + | STA $6000 ; Write to VIA $00 binary 00000000 |
− | + | LDA #$AA ; Load Hex AA alternating 1010 1010 Turn on evey other LED | |
+ | STA $6000 ; Write to VIA $AA binary 10101010 | ||
+ | LDA #$00 ; Load $00 Binary 00000000 turn off LEDs | ||
+ | STA $6000 ; Write to VIA $00 binary 00000000 | ||
+ | LDA #$55 ; Load Hex 55 alternating 0101 0101 Turn on evey other LED | ||
+ | STA $6000 ; Write to VIA $55 binary 01010101 | ||
+ | LDA #$00 ; Load $00 Binary 00000000 turn off LEDs | ||
+ | STA $6000 ; Write to VIA $00 binary 00000000 | ||
+ | LDA #$AA ; Load Hex AA alternating 1010 1010 Turn on evey other LED | ||
+ | STA $6000 ; Write to VIA $AA binary 10101010 | ||
+ | LDA #$00 ; Load $00 Binary 00000000 turn off LEDs | ||
+ | STA $6000 ; Write to VIA $00 binary 00000000 | ||
+ | ; Blink all LED's on and off 3 times | ||
+ | LDA #$FF ; Load Hex FF all 1111 1111 to the A Register | ||
+ | STA $6000 ; Write to VIA $FF binary 11111111 to on all LED's | ||
+ | LDA #$00 ; Load $00 Binary 00000000 turn off LEDs | ||
+ | STA $6000 ; Write to VIA $00 binary 00000000 | ||
+ | LDA #$FF ; Load Hex FF all 1111 1111 to the A Register | ||
+ | STA $6000 ; Write to VIA $FF binary 11111111 to on all LED's | ||
+ | LDA #$00 ; Load $00 Binary 00000000 turn off LEDs | ||
+ | STA $6000 ; Write to VIA $00 binary 00000000 | ||
+ | LDA #$FF ; Load Hex FF all 1111 1111 to the A Register | ||
+ | STA $6000 ; Write to VIA $FF binary 11111111 to on all LED's | ||
+ | LDA #$00 ; Load $00 Binary 00000000 turn off LEDs | ||
+ | STA $6000 ; Write to VIA $00 binary 00000000 | ||
+ | LDX #$00 ; LOad the X register with $00 to start counting | ||
+ | countup: ; Start counting up from 0 | ||
+ | INX ; increment the X register | ||
+ | TXA ; transfer X register to A register | ||
+ | STA $6000 ; Write that value to the VIA chip to turn on LEDS | ||
+ | BNE countup ; Branch not equal if less than 256 | ||
+ | LDA #$00 ; Load $00 to turn off all LED's | ||
+ | STA $6000 ; Write $00 to VIA to turn off LED's | ||
+ | LDX #$ff ; Load X register with valus $FF to make sure in counts down correctly | ||
+ | countdown: ; Start loop for count down | ||
+ | DEX ; decrement the X register | ||
+ | TXA ; transfer X register to A register | ||
+ | STA $6000 ; Write that value to the VIA chip to turn on LEDS | ||
+ | BNE countdown ; Branch not equal if not = 0 | ||
+ | LDA #$00 ; Load $00 to turn off all LED's | ||
+ | STA $6000 ; Write $00 to VIA to turn off LED's | ||
+ | JMP loop ; Jump back to the start of the program | ||
+ | .org $fffc ; Address of where to load or start the program | ||
+ | .word reset ; reset = address $8000 | ||
+ | .word $0000 ; write a word $0000 to fill in the the whole EEPROM | ||
'''Compile your source code Windows 10.''' | '''Compile your source code Windows 10.''' | ||
Line 31: | Line 75: | ||
Open '''WIN''' folder then '''Win10''' folder and copy the relative path. | Open '''WIN''' folder then '''Win10''' folder and copy the relative path. | ||
C:\Users\this-PC\Documents\VASM-6502\vasm6502_oldstyle\win\win10 | C:\Users\this-PC\Documents\VASM-6502\vasm6502_oldstyle\win\win10 | ||
− | '''VASM6502 compiler''' is a command line program (CMD) so you need to use the CMD prompt terminal. | + | '''VASM6502 compiler''' is a command line program (CMD) so you need to use the CMD prompt terminal in Windows10. |
− | Open CMD terminal and change directory to the VASM6502 directory. | + | Open CMD prompt terminal and change directory to the '''VASM6502''' directory. |
− | CD Users\this-PC\Documents\VASM-6502\vasm6502_oldstyle\win\win10 | + | Example: CD Users\this-PC\Documents\VASM-6502\vasm6502_oldstyle\win\win10 |
+ | Do a list command to make sure your .asm file is in the folder | ||
Revision as of 02:32, 27 September 2020
Write your source code.
Download and Install Notepad++ from https://notepad-plus-plus.org/ Create a new folder (direcotry) Called VASM6502 Open Notepad++ and select File and then select New. (Opens a new window) Select Language and then select the Letter A then select Assembly. Assembly Language file uses the .s extension or .asm Select File again and then Save AS to the folder VASM6502 [enter a file name for your program] Make sure it has the .asm extension (yourfilename.asm) then click Save. Make sure you have line numbering turned On. Found under Settings/Preferences/Editing/Display line number. Cut and paste the example code below into Notepad++ at line #1 Select File again and then Save
Example code:
.org $8000 ; Reset Vector points to the Program address on EEPROM reset: ; reset = address $8000 on the EEPROM LDA #$FF ; Set DDRB to output on 65c22 STA $6002 ; write to VIA Address for DDRB loop: ; Main loop starts here
; Blink every other LED 4 times
LDA #$55 ; Load Hex 55 alternating 0101 0101 Turn on evey other LED STA $6000 ; Write to VIA $55 binary 01010101 LDA #$00 ; Load $00 Binary 00000000 turn off LEDs STA $6000 ; Write to VIA $00 binary 00000000 LDA #$AA ; Load Hex AA alternating 1010 1010 Turn on evey other LED STA $6000 ; Write to VIA $AA binary 10101010 LDA #$00 ; Load $00 Binary 00000000 turn off LEDs STA $6000 ; Write to VIA $00 binary 00000000 LDA #$55 ; Load Hex 55 alternating 0101 0101 Turn on evey other LED STA $6000 ; Write to VIA $55 binary 01010101 LDA #$00 ; Load $00 Binary 00000000 turn off LEDs STA $6000 ; Write to VIA $00 binary 00000000 LDA #$AA ; Load Hex AA alternating 1010 1010 Turn on evey other LED STA $6000 ; Write to VIA $AA binary 10101010 LDA #$00 ; Load $00 Binary 00000000 turn off LEDs STA $6000 ; Write to VIA $00 binary 00000000
; Blink all LED's on and off 3 times
LDA #$FF ; Load Hex FF all 1111 1111 to the A Register STA $6000 ; Write to VIA $FF binary 11111111 to on all LED's LDA #$00 ; Load $00 Binary 00000000 turn off LEDs STA $6000 ; Write to VIA $00 binary 00000000 LDA #$FF ; Load Hex FF all 1111 1111 to the A Register STA $6000 ; Write to VIA $FF binary 11111111 to on all LED's LDA #$00 ; Load $00 Binary 00000000 turn off LEDs STA $6000 ; Write to VIA $00 binary 00000000 LDA #$FF ; Load Hex FF all 1111 1111 to the A Register STA $6000 ; Write to VIA $FF binary 11111111 to on all LED's LDA #$00 ; Load $00 Binary 00000000 turn off LEDs STA $6000 ; Write to VIA $00 binary 00000000 LDX #$00 ; LOad the X register with $00 to start counting countup: ; Start counting up from 0 INX ; increment the X register TXA ; transfer X register to A register STA $6000 ; Write that value to the VIA chip to turn on LEDS BNE countup ; Branch not equal if less than 256 LDA #$00 ; Load $00 to turn off all LED's STA $6000 ; Write $00 to VIA to turn off LED's LDX #$ff ; Load X register with valus $FF to make sure in counts down correctly countdown: ; Start loop for count down DEX ; decrement the X register TXA ; transfer X register to A register STA $6000 ; Write that value to the VIA chip to turn on LEDS BNE countdown ; Branch not equal if not = 0 LDA #$00 ; Load $00 to turn off all LED's STA $6000 ; Write $00 to VIA to turn off LED's JMP loop ; Jump back to the start of the program .org $fffc ; Address of where to load or start the program .word reset ; reset = address $8000 .word $0000 ; write a word $0000 to fill in the the whole EEPROM
Compile your source code Windows 10.
Download the application VASM from Dr. Volker Barthelmann´s Compiler Page: http://www.compilers.de/vasm.html Select Binaries of vasm for 6502 for x86-64 (Mac, Windows and Linux): http://www.ibaug.de/vasm/vasm6502.zip Move vasm6502.zip to your new folder VASM6502 and extract the zip file in that folder. Open the new folder called vasm6502_oldstyle and select your operating system. I will be using Windows folder. (Win\Win10) Open WIN folder then Win10 folder and copy the relative path. C:\Users\this-PC\Documents\VASM-6502\vasm6502_oldstyle\win\win10 VASM6502 compiler is a command line program (CMD) so you need to use the CMD prompt terminal in Windows10. Open CMD prompt terminal and change directory to the VASM6502 directory. Example: CD Users\this-PC\Documents\VASM-6502\vasm6502_oldstyle\win\win10 Do a list command to make sure your .asm file is in the folder