Difference between revisions of "Programming the Microprocessor"
(15 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | ''' | + | '''Write your source code.''' |
Download and Install '''Notepad++''' from https://notepad-plus-plus.org/ | 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) | Open '''Notepad++''' and select '''File''' and then select '''New'''. (Opens a new window) | ||
Select '''Language''' and then select the Letter '''A''' then select '''Assembly.''' | Select '''Language''' and then select the Letter '''A''' then select '''Assembly.''' | ||
− | Select '''File''' again and then '''Save AS''' [enter a file name | + | Assembly Language file uses the .s extension or .asm |
− | Make sure it has the '''.asm''' extension | + | Select '''File''' again and then '''Save AS''' to the folder VASM6502 [enter a file name '''updownblink.asm'''] |
+ | Make sure it has the '''.asm''' extension then click '''Save'''. | ||
Make sure you have line numbering turned '''On'''. Found under '''Settings/Preferences/Editing/Display line number'''. | 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 | Cut and paste the example code below into Notepad++ at line #1 | ||
Line 10: | 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 | |
− | + | 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 | ||
+ | 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 | ||
+ | Move the file '''updownblink.asm''' you created with Notepad++ to the Win10 folder. | ||
+ | '''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 updownblink.asm file is in the folder. | ||
+ | Type the following command: '''vasm6502_oldstyle.exe -Fbin -dotdir updownblink.asm''' | ||
+ | Output creates the following lines and a file called '''a.out''' | ||
+ | ''vasm 1.8g (c) in 2002-2019 Volker Barthelmann | ||
+ | vasm 6502 cpu backend 0.8 (c) 2002,2006,2008-2012,2014-2018 Frank Wille | ||
+ | vasm oldstyle syntax module 0.13f (c) 2002-2018 Frank Wille | ||
+ | vasm binary output module 1.8a (c) 2002-2009,2013,2015,2017 Volker Barthelmann | ||
+ | seg8000(acrwx1): 106 bytes | ||
+ | segfffc(acrwx1): 4 bytes'' | ||
+ | |||
+ | Rename the a.out file so that when you create a new program you do not lose this one. | ||
+ | rename a.out updownblink.out | ||
+ | '''Next Step:''' | ||
+ | Write the updownblink.out to the EEPROM | ||
+ | == [[ Programming the EEPROM ]]== | ||
+ | ---- | ||
+ | == [[ 65C02 Vintage Computer Build ]] == | ||
---- | ---- | ||
− | + | ==[[ Main Page ]]== | |
− | == [[ |
Latest revision as of 17:02, 7 June 2022
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 updownblink.asm] Make sure it has the .asm extension 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 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 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 Move the file updownblink.asm you created with Notepad++ to the Win10 folder.
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 updownblink.asm file is in the folder. Type the following command: vasm6502_oldstyle.exe -Fbin -dotdir updownblink.asm
Output creates the following lines and a file called a.out
vasm 1.8g (c) in 2002-2019 Volker Barthelmann vasm 6502 cpu backend 0.8 (c) 2002,2006,2008-2012,2014-2018 Frank Wille vasm oldstyle syntax module 0.13f (c) 2002-2018 Frank Wille vasm binary output module 1.8a (c) 2002-2009,2013,2015,2017 Volker Barthelmann seg8000(acrwx1): 106 bytes segfffc(acrwx1): 4 bytes
Rename the a.out file so that when you create a new program you do not lose this one.
rename a.out updownblink.out
Next Step:
Write the updownblink.out to the EEPROM