Difference between revisions of "Programming the Microprocessor"

From media_wiki
Jump to: navigation, search
Line 12: Line 12:
  
 
'''Example code:'''
 
'''Example code:'''
   .org $8000 ; Reset Vector points to the Program address on EEPROM
+
   .org $8000         ; Reset Vector points to the Program address on EEPROM
 
  reset:  ; reset = address $8000 on the EEPROM
 
  reset:  ; reset = address $8000 on the EEPROM
   LDA #$FF ; Set DDRB to output on 65c22  
+
   LDA #$FF         ; Set DDRB to output on 65c22  
 
   STA $6002 ; write to VIA Address for DDRB
 
   STA $6002 ; write to VIA Address for DDRB
 
  loop: ; Main loop starts here
 
  loop: ; Main loop starts here
; Blink every other LED 4 times
 
 
   LDA #$55 ; Load Hex 55 alternating 0101 0101 Turn on evey other LED
 
   LDA #$55 ; Load Hex 55 alternating 0101 0101 Turn on evey other LED
 
   STA $6000 ; Write to VIA $55 binary 01010101
 
   STA $6000 ; Write to VIA $55 binary 01010101
Line 34: Line 33:
 
   LDA #$00 ; Load $00 Binary 00000000 turn off LEDs
 
   LDA #$00 ; Load $00 Binary 00000000 turn off LEDs
 
   STA $6000 ; Write to VIA $00 binary 00000000  
 
   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
 
   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
 
   STA $6000 ; Write to VIA $FF binary 11111111 to on all LED's
Line 47: Line 45:
 
   LDA #$00 ; Load $00 Binary 00000000 turn off LEDs
 
   LDA #$00 ; Load $00 Binary 00000000 turn off LEDs
 
   STA $6000 ; Write to VIA $00 binary 00000000
 
   STA $6000 ; Write to VIA $00 binary 00000000
   LDX #$00     ; LOad the X register with $00 to start counting
+
   LDX #$00             ; Load the X register with $00 to start counting
 
  countup: ; Start counting up from 0  
 
  countup: ; Start counting up from 0  
 
   INX ; increment the X register
 
   INX ; increment the X register
Line 60: Line 58:
 
   TXA ; transfer X register to A register  
 
   TXA ; transfer X register to A register  
 
   STA $6000          ; Write that value to the VIA chip to turn on LEDS  
 
   STA $6000          ; Write that value to the VIA chip to turn on LEDS  
   BNE countdown       ; Branch not equal if not = 0
+
   BNE countdown         ; Branch not equal if not = 0
 
   LDA #$00          ; Load $00 to turn off all LED's  
 
   LDA #$00          ; Load $00 to turn off all LED's  
 
   STA $6000         ; Write $00 to VIA to turn off LED's  
 
   STA $6000         ; Write $00 to VIA to turn off LED's  

Revision as of 02:38, 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
  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
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 
 



65C02 Vintage Computer Build