Difference between revisions of "Programming the Microprocessor"

From media_wiki
Jump to: navigation, search
Line 12: Line 12:
  
 
'''Example code:'''
 
'''Example code:'''
      STX #$6ffc ; capture x reg
+
  .org $8000  ; Reset Vector points to the Program address on EEPROM
      LDX #$55    ; set counter to binary 10101010
+
reset:  ; reset = address $8000 on the EEPROM
count EQU *
+
  LDA #$FF  ; Set DDRB to output on 65c22
      LDA #$0f  ; Turn on half of the LED's 00001111
+
  STA $6002 ; write to VIA Address for DDRB
      STA $6000 ; Write value to VIA chip
+
loop: ; Main loop starts here
      DEX ; Decrease the X register by 1
+
; Blink every other LED 4 times
      LDA #$f0  ; Turn on other half of the LED's 11110000
+
  LDA #$55 ; Load Hex 55 alternating 0101 0101 Turn on evey other LED
      BNE count
+
  STA $6000 ; Write to VIA $55 binary 01010101
      LDX $6ffc ; Restore X reg to orginal value
+
  LDA #$00 ; Load $00 Binary 00000000 turn off LEDs
       LDA #$00   ; turn off all LED's 00000000
+
   STA $6000 ; Write to VIA $00 binary 00000000
      STA $6000 ; Write value to VIA chip
+
  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 
 



65C02 Vintage Computer Build