use .res for ram variables
This commit is contained in:
parent
bc6093a881
commit
039ed9a16b
12
main.s65
12
main.s65
@ -1,5 +1,5 @@
|
||||
.segment "CODE"
|
||||
.include "system/system.h65"
|
||||
.include "system/system.s65"
|
||||
.code
|
||||
|
||||
.macro DEBUG_LED_OFF nr
|
||||
lda IO1 + IO::RA
|
||||
@ -44,6 +44,7 @@ SPI_IO = IO2
|
||||
;********************************************************************************
|
||||
; Interrupts
|
||||
;********************************************************************************
|
||||
.code
|
||||
nmi:
|
||||
lda #'%'
|
||||
jsr lcd_char
|
||||
@ -145,11 +146,11 @@ print_2:
|
||||
PrintSlow message_2,10
|
||||
jmp home
|
||||
|
||||
.segment "RODATA"
|
||||
.rodata
|
||||
message_1: .asciiz " Powered by ......6502...... **** www.quintern.xyz"
|
||||
message_2:
|
||||
.byte " Hallo "
|
||||
.byte " Clara "
|
||||
.byte " Hello "
|
||||
.byte " there "
|
||||
.byte " <3 "
|
||||
.asciiz "================"
|
||||
message_menu:
|
||||
@ -163,7 +164,6 @@ str_irq:
|
||||
str_irq_unknown:
|
||||
.asciiz "Unknown IRQ src!"
|
||||
|
||||
.segment "CODE"
|
||||
;********************************************************************************
|
||||
; reset vector
|
||||
;********************************************************************************
|
||||
|
@ -3,7 +3,7 @@
|
||||
;********************************************************************************
|
||||
.ifndef INCLUDE_PRINTER
|
||||
INCLUDE_PRINTER = 1
|
||||
|
||||
.code
|
||||
printer:
|
||||
jsr lcd_clear
|
||||
@printer_loop:
|
||||
|
@ -1,5 +1,6 @@
|
||||
.ifndef INCLUDE_SLEEP
|
||||
INCLUDE_SLEEP = 1
|
||||
.code
|
||||
;********************************************************************************
|
||||
; @macro Sleep
|
||||
; @param time_cs: Time to sleep in centiseconds (10^-2s = 10ms)
|
||||
@ -19,15 +20,16 @@ INCLUDE_SLEEP = 1
|
||||
; @details
|
||||
; Interrupts might change the actual time to finish
|
||||
; To be exact, time_cs is in units of 0.010244s
|
||||
; @modifies: ARG2
|
||||
;********************************************************************************
|
||||
.proc sleep
|
||||
VAR_1 = 0
|
||||
stz VAR_1
|
||||
_VAR_1 = ARG2
|
||||
stz _VAR_1
|
||||
@loop:
|
||||
.repeat 17
|
||||
nop ; 2 - i
|
||||
.endrepeat
|
||||
inc VAR_1 ; 3 - zp
|
||||
inc _VAR_1 ; 3 - zp
|
||||
bne @loop ; 2/3 - r (2 if not taken, but here most of the time its 3)
|
||||
; reaching this takes 256 * (X * 2(nop) + 3(inc) + 3(bne)) - 1(last bne) cycles
|
||||
; with X = 17: T1 = (256×(17×2 + 3 +3) − 1) × (1/1MHz) = 0,010 239 s
|
||||
|
@ -7,10 +7,11 @@
|
||||
; The RBUF_NAME variable must be defined, the functions will then be exported
|
||||
; as rb_<RBUF_NAME>_<function> where <function> = init, read or write
|
||||
; @requires
|
||||
; RBUF_MEM_START: Start address of ringbuffer memory space
|
||||
; RBUF_MEM_END: End address of ringbuffer memory space
|
||||
; RBUF_MEM_START: First address of ringbuffer memory space
|
||||
; RBUF_MEM_END: Last address of ringbuffer memory space
|
||||
; RBUF_NAME: Name of the ringbuffer
|
||||
;********************************************************************************
|
||||
.code
|
||||
|
||||
.ifndef RBUF_MEM_START
|
||||
.fatal "RBUF_MEM_START not defined"
|
||||
|
@ -16,14 +16,17 @@ INCLUDE_KEYPAD = 1
|
||||
.fatal "KP_IO is not defined: set it to the base address of the IO chip of the Keypad"
|
||||
.endif
|
||||
|
||||
.zeropage
|
||||
_KP_COLUMN: .res 1 ; for storing stuff
|
||||
|
||||
RBUF_MEM_START = $200
|
||||
RBUF_MEM_END = $208
|
||||
.bss ; reserve space or ringbuffer
|
||||
KP_BUF_SIZE = 10
|
||||
RBUF_MEM_START: .res KP_BUF_SIZE
|
||||
RBUF_MEM_END = RBUF_MEM_START + KP_BUF_SIZE - 1
|
||||
.define RBUF_NAME "keypad"
|
||||
.include "buffer.s65"
|
||||
|
||||
KB_VAR = $05 ; any free zp address
|
||||
|
||||
.code
|
||||
.proc kp_init
|
||||
; todo remove later and test
|
||||
lda #$ff
|
||||
@ -74,23 +77,23 @@ KB_VAR = $05 ; any free zp address
|
||||
@kp_read_column:
|
||||
sta KP_IO+IO::RB
|
||||
lda KP_IO+IO::RB
|
||||
sta KB_VAR ; store result in zeropage so that bbr can be used
|
||||
bbr4 KB_VAR,@kp_write
|
||||
sta _KP_COLUMN ; store result in zeropage so that bbr can be used
|
||||
bbr4 _KP_COLUMN,@kp_write
|
||||
inx
|
||||
bbr5 KB_VAR,@kp_write
|
||||
bbr5 _KP_COLUMN,@kp_write
|
||||
inx
|
||||
bbr6 KB_VAR,@kp_write
|
||||
bbr6 _KP_COLUMN,@kp_write
|
||||
inx
|
||||
bbr7 KB_VAR,@kp_write
|
||||
bbr7 _KP_COLUMN,@kp_write
|
||||
rts
|
||||
@kp_write:
|
||||
lda kp_VALUES,x
|
||||
lda _KP_VALUES,x
|
||||
jsr rb_keypad_write
|
||||
rts
|
||||
.endproc
|
||||
|
||||
.segment "RODATA"
|
||||
kp_VALUES:
|
||||
.rodata
|
||||
_KP_VALUES:
|
||||
; TODO change to literal
|
||||
.byte "123A", "456B", "789C", "*0#D"
|
||||
.endif
|
||||
|
@ -5,17 +5,18 @@
|
||||
; @depends IO-W65C22N
|
||||
;********************************************************************************
|
||||
|
||||
.include "system/system.h65"
|
||||
.include "system/system.s65"
|
||||
|
||||
.ifndef INCLUDE_SPI
|
||||
INCLUDE_SPI = 1
|
||||
.segment "CODE"
|
||||
|
||||
SPI_CODE_START = $3000
|
||||
SPI_PAGES_WRITTEN = $2fff
|
||||
SPI_BYTES_WRITTEN = $2ffe
|
||||
|
||||
|
||||
.bss
|
||||
SPI_PAGES_WRITTEN: .res 1
|
||||
SPI_BYTES_WRITTEN: .res 1
|
||||
SPI_CODE_START: .res $1000
|
||||
|
||||
.code
|
||||
.struct SPI_P_Pins
|
||||
; VIA addresses
|
||||
DDR_a .word ; address of the data direction register
|
||||
|
Loading…
Reference in New Issue
Block a user