Difference between revisions of "Programming the Microprocessor"
(8 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
Select '''Language''' and then select the Letter '''A''' then select '''Assembly.''' | Select '''Language''' and then select the Letter '''A''' then select '''Assembly.''' | ||
Assembly Language file uses the .s extension or .asm | Assembly Language file uses the .s extension or .asm | ||
− | Select '''File''' again and then '''Save AS''' to the folder VASM6502 [enter a file name | + | Select '''File''' again and then '''Save AS''' to the folder VASM6502 [enter a file name '''updownblink.asm'''] |
− | Make sure it has the '''.asm''' extension | + | 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 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 | |
− | + | 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.''' | '''Compile your source code Windows 10.''' | ||
Line 31: | Line 73: | ||
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. | + | Move the file '''updownblink.asm''' you created with Notepad++ to the Win10 folder. |
− | Open CMD terminal and change directory to the VASM6502 directory. | + | |
− | CD 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 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