2018-10-01 01:07:45 +00:00
|
|
|
|
2018-09-13 00:54:25 +00:00
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
;; 64K Tigervision bank-switching example
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
|
|
|
TIA_BASE_ADDRESS = $40 ; use TIA mirrors @ $40-$7F
|
|
|
|
|
|
|
|
processor 6502
|
|
|
|
include "vcs.h"
|
|
|
|
include "macro.h"
|
|
|
|
include "xmacro.h"
|
|
|
|
|
|
|
|
seg.u Variables
|
|
|
|
org $80
|
|
|
|
|
|
|
|
Temp .byte
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
; Macro that performs bank switch
|
|
|
|
|
|
|
|
MAC BANK_SWITCH
|
|
|
|
.Bank SET {1}
|
|
|
|
ldx #.Bank
|
|
|
|
stx $3F
|
|
|
|
ENDM
|
|
|
|
|
|
|
|
seg Code
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
;;; BANK 0 ($1000-$17ff)
|
|
|
|
|
|
|
|
org $1000
|
|
|
|
rorg $1000
|
|
|
|
Main_1
|
|
|
|
inc Temp
|
|
|
|
lda Temp
|
|
|
|
sta COLUBK ; make rainbows
|
|
|
|
bit INPT4 ; test button
|
|
|
|
bpl Main_1 ; button is pressed, repeat
|
|
|
|
rts
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
;;; BANK 1 ($1000-$17ff)
|
|
|
|
|
|
|
|
org $1800
|
|
|
|
rorg $1000
|
|
|
|
Main_2
|
|
|
|
lda Temp
|
|
|
|
eor #2
|
|
|
|
sta Temp
|
|
|
|
sta WSYNC
|
|
|
|
sta WSYNC
|
|
|
|
sta COLUBK
|
|
|
|
bit INPT4 ; test button
|
|
|
|
bmi Main_2 ; button not pressed, repeat
|
|
|
|
rts
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
;;; Last 2K bank ($1800-$1fff)
|
|
|
|
|
|
|
|
org $10800
|
|
|
|
rorg $1800
|
|
|
|
Start
|
|
|
|
CLEAN_START
|
|
|
|
BANK_SWITCH 0
|
|
|
|
jsr Main_1
|
|
|
|
BANK_SWITCH 1
|
|
|
|
jsr Main_2
|
|
|
|
jmp Start
|
|
|
|
|
|
|
|
; Epilogue (CPU vectors)
|
|
|
|
org $10FFA
|
|
|
|
rorg $10FFA
|
|
|
|
.word Start ; NMI
|
|
|
|
.word Start ; RESET
|
|
|
|
.word Start ; BRK
|