por pablo_oso » Lun Mar 30, 2009 0:54 am
; export symbols
XDEF Entry ; export 'Entry' symbol
ABSENTRY Entry ; for absolute assembly: mark this as application entry point
; include derivative specific macros
RAMStart EQU $0400
ROMStart EQU $4000 ; absolute address to place my code/constant data
PTT EQU $0240
DDRT EQU $0242
STACK EQU $1FFF
ADlo EQU $0271
DDRADldo EQU $0275
PERADlo EQU $0279
ATDAIlen EQU $008D
TSCR2 EQU $004D
TOF EQU $004F
TSCR1 EQU $0046
; variable/data section
ORG RAMStart
matriz dc.b $80, $40, $20, $10, $08, $04, $02, $01, $80, $40, $20, $10, $08, $04, $02, $01
ai dc.b 0, 7, 1, 14, 10, 5, 3, 4
ticksacontar dc.b 2
tickscontados dc.b 0
flag dc.b 0
; code section
ORG ROMStart
Entry:
LDAA #0
STAA DDRADldo
LDAA #$FF
STAA PERADlo
LDAA #$FF
STAA ATDAIlen
LDS #STACK
LDAB #$FF
STAB DDRT
LDY #matriz
LDX #ai
LDAB #0
DEFECTO: LDAA #1
STAA PTT
BRCLR ADlo,%00010000,COLUMNAS
BRCLR ADlo,%00100000, JSRFILAS
JMP DEFECTO
JSRFILAS: JSR Filas
COLUMNAS: LDAA #2
STAA PTT
BRCLR ADlo,%00010000,INDEXADO
BRCLR ADlo,%00100000, JSRCOLUM
JMP COLUMNAS
JSRCOLUM: LDAB #0
JSR Colum
INDEXADO: LDAA #4
STAA PTT
BRCLR ADlo,%00010000,DEFECTO
BRCLR ADlo,%00100000, JSRIND
JMP INDEXADO
JSRIND: JSR Indexado
JMP DEFECTO
Indexado:
BSET TOF, %10000000
BSET TSCR2, %10000101; prescaler y TOI
BSET TSCR1, %10000000; TEN
CLI
I1: LDAA flag ; miramos el flag para ver si
CMPA #1 ; ha pasado el tiempo que queremos esperar
BNE I1 ;
LDAA #0 ;
STAA flag ;
LDAB 0,X
LDAA B,Y
STAA PTT
INX
CPX #$418
BNE Indexado
LDY #matriz
LDX #ai
LDAB #0
JMP Indexado
Filas:
BSET TOF, #%10000000
BSET TSCR2, #%10000101; prescaler y TOI
BSET TSCR1, #%10000000; TEN
CLI
F1: LDAA flag ; miramos el flag para ver si
CMPA #1 ; ha pasado el tiempo que queremos esperar
BNE F1 ;
LDAA #0 ;
STAA flag ;
LDAA 0,Y
INY
INCB
STAA PTT
CMPB #16
BNE Filas
LDY #matriz
LDX #ai
LDAB #0
JMP Filas
Colum:
BSET TOF, %10000000
BSET TSCR2, %10000101; prescaler y toi
BSET TSCR1, %10000000; TEN
CLI
C1: LDAA flag ; miramos el flag para ver si
CMPA #1 ; ha pasado el tiempo que queremos esperar
BNE C1 ;
LDAA #0 ;
STAA flag ;
LDAA B,Y
STAA PTT
ADDB #4
CMPB #16
BNE Colum
INY
LDAB #0
CPY #$404
BNE Colum
LDY #matriz
LDX #ai
LDAB #0
JMP Colum
RSI_timer:
BSET TOF, %10000000;
PSHA
PSHB
LDAA tickscontados
INCA
STAA tickscontados
LDAB ticksacontar
CMPB tickscontados
BNE no
LDAA #1
STAA flag
LDAA #0
STAA tickscontados
no: PULA
PULB
RTI
;**************************************************************
;* Interrupt Vectors *
;**************************************************************
ORG $FFFE
DC.W Entry ; Reset Vector
ORG $FFDE
fdb RSI_timer;